diff --git a/README.md b/README.md index 5476f5dc3..1b075b397 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ -## Team Fortress 2 Gamemode -The Gamemode that allows you to play TF2 in Gmod! +## Team Fortress 2 for Garry's Mod (formerly known as the Civilian 2 Fork, Team Fortress 2 Gamemode) +Despite my endless efforts to archive and private my TF2 related repositories, This is still supported and won't be affected as it's still an ongoing community project that is attempting to correctly remake Live TF2 in Garry's Mod. Despite it being worked on alone by myself, I'm still hiring and looking for anyone who could help with this project. + +The Gamemode that allows you to play TF2 in Gmod! Now frequently updated! +# Warning +This gamemode is **unstable** and needs a lot of fixes. Community fixes are welcome. ## Installation Drop the addon folder into the addons folder. @@ -7,14 +11,13 @@ Drop the addon folder into the addons folder. ## Bot AI The Bot AI is based on [LeadBot](https://github.com/LeadKiller/leadbot), depending on the time from commits and the latest leadbot version, it may be out of date. The progress on the AI can be seen [here](https://github.com/LeadKiller/leadbot/projects/1#card-21958419). -## Credits -### Coders +## Credit +### Former Developers - [LeadKiller](https://steamcommunity.com/id/leadkiller) - [Agent Agrimar](https://steamcommunity.com/id/Agrimar/) - [wango911](https://forum.facepunch.com/u/fstw/wango911/) - [Kilburn](https://steamcommunity.com/id/underscorekilburn) -### Additional +### Developers + - [siobhan-saoirse](https://steamcommunity.com/id/touhouinsanity/) +### Additional Info If you're wondering why _Kilburn ended the development was because he had a hard drive failure and lost all his data. I was in talks with some other dude in regards to bringing back the gamemode, but I have not talked to the guy in months, so I'm guessing his branch is dead. - [N?] SmileyFace (A.K.A wango911) -## Civilian 2 -A new fork for Team Fortress 2 Gamemode has been made with MvM support and much more. -https://steamcommunity.com/sharedfiles/filedetails/?id=1932936017 diff --git a/addon.json b/addon.json new file mode 100644 index 000000000..0649af420 --- /dev/null +++ b/addon.json @@ -0,0 +1,6 @@ +{ +"title" : "Civilian 2 Beta", +"type" : "gamemode", +"tags" : ["cartoon","fun"], +"ignore" : ["*.psd", "*.vcproj", "*.svn*"] +} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/backgrounds/gm_deniskaso.jpg b/addon/gamemodes/teamfortress/backgrounds/gm_deniskaso.jpg deleted file mode 100644 index 8f530af32..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/gm_deniskaso.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/gm_takeoff.jpg b/addon/gamemodes/teamfortress/backgrounds/gm_takeoff.jpg deleted file mode 100644 index dfb30d1f8..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/gm_takeoff.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_admincandy.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_admincandy.jpg deleted file mode 100644 index 64e9f5e7a..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_admincandy.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_birdcage.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_birdcage.jpg deleted file mode 100644 index ca84357e8..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_birdcage.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_cartrace.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_cartrace.jpg deleted file mode 100644 index 82f903a3e..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_cartrace.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_christmas.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_christmas.jpg deleted file mode 100644 index 03ca3c885..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_christmas.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_hatgame.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_hatgame.jpg deleted file mode 100644 index b1b24025b..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_hatgame.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_loghouse_alpine.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_loghouse_alpine.jpg deleted file mode 100644 index cf50edcab..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_loghouse_alpine.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_pipeline.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_pipeline.jpg deleted file mode 100644 index 486e2f526..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_pipeline.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_sawmill.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_sawmill.jpg deleted file mode 100644 index aa5a1170a..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_sawmill.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/backgrounds/tf_worm.jpg b/addon/gamemodes/teamfortress/backgrounds/tf_worm.jpg deleted file mode 100644 index 1848586c4..000000000 Binary files a/addon/gamemodes/teamfortress/backgrounds/tf_worm.jpg and /dev/null differ diff --git a/addon/gamemodes/teamfortress/content/scripts/decals/tfdecals.txt b/addon/gamemodes/teamfortress/content/scripts/decals/tfdecals.txt deleted file mode 100644 index 8937a3bd8..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/decals/tfdecals.txt +++ /dev/null @@ -1,223 +0,0 @@ -// Decal definitions, format is -// decalname weight -// where weight is used to randomly selected a decal to apply from within the group - -"Impact.Concrete" -{ - "decals/concrete/shot1_subrect" "1" - "decals/concrete/shot2_subrect" "1" - "decals/concrete/shot3_subrect" "1" - "decals/concrete/shot4_subrect" "1" - "decals/concrete/shot5_subrect" "1" -} - -"Impact.Metal" -{ - "decals/metal/shot1_subrect" "1" - "decals/metal/shot2_subrect" "1" - "decals/metal/shot3_subrect" "1" - "decals/metal/shot4_subrect" "1" - "decals/metal/shot5_subrect" "1" -} - -"Impact.Wood" -{ - "decals/wood/shot1_subrect" "1" - "decals/wood/shot2_subrect" "1" - "decals/wood/shot3_subrect" "1" - "decals/wood/shot4_subrect" "1" - "decals/wood/shot5_subrect" "1" -} - -"Impact.Glass" -{ - "decals/glass/shot1_subrect" "1" - "decals/glass/shot2_subrect" "1" - "decals/glass/shot3_subrect" "1" - "decals/glass/shot4_subrect" "1" - "decals/glass/shot5_subrect" "1" -} - - -"Impact.Flesh" -{ - "decals/flesh/blood1_subrect" "1" - "decals/flesh/blood2_subrect" "1" - "decals/flesh/blood3_subrect" "1" - "decals/flesh/blood4_subrect" "1" - "decals/flesh/blood5_subrect" "1" -} - - -"Impact.BloodyFlesh" -{ - "decals/bloodyflesh/blood1_subrect" "1" - "decals/bloodyflesh/blood2_subrect" "1" - "decals/bloodyflesh/blood3_subrect" "1" - "decals/bloodyflesh/blood4_subrect" "1" - "decals/bloodyflesh/blood5_subrect" "1" -} - - -"Impact.Dirt" -{ - "decals/dirt/dirtshot1_subrect" "1" - "decals/dirt/dirtshot2_subrect" "1" - "decals/dirt/dirtshot3_subrect" "1" - "decals/dirt/dirtshot4_subrect" "1" -} - - -// Sand does not have model versions of the decals. -"Impact.Sand" -{ - "decals/sand/shot1_subrect" "1" - "decals/sand/shot2_subrect" "1" - "decals/sand/shot3_subrect" "1" - "decals/sand/shot4_subrect" "1" -} - -"Scorch" -{ - "decals/scorch1_subrect" "1" - "decals/scorch2_subrect" "1" -} - -"footprintL_snow" -{ - "decals/footprintL_snow_subrect" "1" -} - -"footprintR_snow" -{ - "decals/footprintR_snow_subrect" "1" -} - -"Blood" -{ - "decals/blood1_subrect" "1" - "decals/blood2_subrect" "1" - "decals/blood3_subrect" "1" - "decals/blood4_subrect" "1" - "decals/blood5_subrect" "1" - "decals/blood6_subrect" "1" -} - - -"GlassBreak" -{ - "decals/break1_subrect" "1" - "decals/break2_subrect" "1" - "decals/break3_subrect" "1" -} - -"BigShot" -{ - "decals/bigshot1_subrect" "1" - "decals/bigshot2_subrect" "1" - "decals/bigshot3_subrect" "1" - "decals/bigshot4_subrect" "1" - "decals/bigshot5_subrect" "1" -} - -"BulletProof" -{ - "decals/bproof1_subrect" "1" -} - -"SmallScorch" -{ - "decals/smscorch1_subrect" "1" - "decals/smscorch2_subrect" "1" - "decals/smscorch3_subrect" "1" -} - -"FadingScorch" -{ - "decals/scorchfade_subrect" "1" -} - -"ExplosiveGunshot" -{ - "decals/concrete/shot1_subrect" "1" -} - -"Models" -{ - // World Model specific decal precache. - "decals/concrete/shot1" "1" - "decals/concrete/shot2" "1" - "decals/concrete/shot3" "1" - "decals/concrete/shot4" "1" - "decals/concrete/shot5" "1" - "decals/metal/shot1" "1" - "decals/metal/shot2" "1" - "decals/metal/shot3" "1" - "decals/metal/shot4" "1" - "decals/metal/shot5" "1" - "decals/wood/shot1" "1" - "decals/wood/shot2" "1" - "decals/wood/shot3" "1" - "decals/wood/shot4" "1" - "decals/wood/shot5" "1" - "decals/glass/shot1" "1" - "decals/glass/shot2" "1" - "decals/glass/shot3" "1" - "decals/glass/shot4" "1" - "decals/glass/shot5" "1" - "decals/flesh/blood1" "1" - "decals/flesh/blood2" "1" - "decals/flesh/blood3" "1" - "decals/flesh/blood4" "1" - "decals/flesh/blood5" "1" - "decals/bloodyflesh/blood1" "1" - "decals/bloodyflesh/blood2" "1" - "decals/bloodyflesh/blood3" "1" - "decals/bloodyflesh/blood4" "1" - "decals/bloodyflesh/blood5" "1" - "decals/scorch1" "1" - "decals/scorch2" "1" - "decals/blood1" "1" - "decals/blood2" "1" - "decals/blood3" "1" - "decals/blood4" "1" - "decals/blood5" "1" - "decals/blood6" "1" - "decals/blood7" "1" - "decals/blood8" "1" - "decals/break1" "1" - "decals/break2" "1" - "decals/break3" "1" - "decals/bigshot1" "1" - "decals/bigshot2" "1" - "decals/bigshot3" "1" - "decals/bigshot4" "1" - "decals/bigshot5" "1" - "decals/bproof1" "1" - "decals/smscorch1" "1" - "decals/smscorch2" "1" - "decals/smscorch3" "1" - "decals/scorchfade" "1" - "decals/dirtshot1" "1" - "decals/dirtshot2" "1" - "decals/dirtshot3" "1" - "decals/dirtshot4" "1" - - // Model specific decal precache. - "decals/bigshot1model" "1" - "decals/bigshot2model" "1" - "decals/bigshot3model" "1" - "decals/bigshot4model" "1" - "decals/bigshot5model" "1" - "decals/bproof1model" "1" - "decals/break1model" "1" - "decals/break2model" "1" - "decals/break3model" "1" - - "decals/scorch1model" "1" - "decals/scorch2model" "1" - "decals/scorchfademodel" "1" - "decals/smscorch1model" "1" - "decals/smscorch2model" "1" - "decals/smscorch3model" "1" -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds.txt b/addon/gamemodes/teamfortress/content/scripts/game_sounds.txt deleted file mode 100644 index adfdfb10a..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/game_sounds.txt +++ /dev/null @@ -1,913 +0,0 @@ -// Channels -// CHAN_AUTO = 0, -// CHAN_WEAPON = 1, -// CHAN_VOICE = 2, -// CHAN_ITEM = 3, -// CHAN_BODY = 4, -// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area -// CHAN_STATIC = 6, // allocate channel from the static area -// these can be set with "channel" "2" or "channel" "chan_voice" - -//----------------------------------------------------------------------------- -// common attenuation values -//----------------------------------------------------------------------------- - -// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f -// ATTN_IDLE 2.0f -// ATTN_STATIC 1.25f -// ATTN_RICOCHET 1.5f -// ATTN_GUNFIRE 0.27f - -// SNDLVL_NONE = 0, -// SNDLVL_25dB = 25, -// SNDLVL_30dB = 30, -// SNDLVL_35dB = 35, -// SNDLVL_40dB = 40, -// SNDLVL_45dB = 45, -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"vox/null" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "vo/null.wav" -} - -// ------------------------------------------------------------------------------------ // -// HEALTH KIT -// ------------------------------------------------------------------------------------ // -"HealthKit.Touch" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "items/smallmedkit1.wav" -} - -// ------------------------------------------------------------------------------------ // -// AMMO PACK -// ------------------------------------------------------------------------------------ // -"AmmoPack.Touch" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "items/gunpickup2.wav" -} - -// ------------------------------------------------------------------------------------ // -// GRENADE PACK -// ------------------------------------------------------------------------------------ // -"GrenadePack.Touch" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "items/gunpickup2.wav" -} - -// ------------------------------------------------------------------------------------ // -// REGENERATE -// ------------------------------------------------------------------------------------ // -"Regenerate.Touch" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "items/regenerate.wav" -} - -// ------------------------------------------------------------------------------------ // -// CHANGE CLASS -// ------------------------------------------------------------------------------------ // -"ChangeClass.Touch" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "items/r_item1.wav" -} - -"BaseCombatCharacter.CorpseGib" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "rndwave" - { - "wave" "physics/flesh/flesh_squishy_impact_hard2.wav" - } -} - -"BaseCombatCharacter.StopWeaponSounds" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - - "wave" "common/null.wav" -} - -"BaseCombatCharacter.AmmoPickup" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - - "wave" "items/ammo_pickup.wav" -} - -"General.BurningFlesh" -{ - "channel" "CHAN_WEAPON" - "volume" "0.45" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "wave" "npc/headcrab/headcrab_burning_loop2.wav" -} - -"General.BurningObject" -{ - "channel" "CHAN_WEAPON" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "wave" "ambient/fire/fire_small_loop2.wav" -} - -"General.StopBurning" -{ - "channel" "CHAN_WEAPON" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "wave" "common/null.wav" -} - -"BaseCombatWeapon.WeaponDrop" -{ - "channel" "CHAN_ITEM" - "volume" "0.8" - "soundlevel" "SNDLVL_75dB" - "pitch" "95,110" - "rndwave" - { - "wave" "physics/metal/weapon_impact_hard1.wav" - "wave" "physics/metal/weapon_impact_hard2.wav" - "wave" "physics/metal/weapon_impact_hard3.wav" - } -} - -"BaseCombatWeapon.WeaponMaterialize" -{ - "channel" "CHAN_STATIC" - "volume" ".25" - "soundlevel" "SNDLVL_75dB" - "pitch" "150" - - "wave" "items/suitchargeok1.wav" -} - -"HudChat.Message" -{ - "channel" "CHAN_STREAM" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "vo/null.wav" -} - -"Hud.Hint" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "ui/hint.wav" -} - -"Hud.ProjectorScreenUp" -{ - "channel" "CHAN_STATIC" - "volume" ".65" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "ui/projector_screen_up.wav" -} - -"Hud.ProjectorScreenUpLong" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "ui/projector_screen_up_long.wav" -} - -"Hud.ProjectorScreenDown" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "ui/projector_screen_down.wav" -} - -"Hud.ProjectorMovie" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "ui/projector_movie.wav" -} - -"Hud.EndRoundScored" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "ui/scored.wav" -} - -"Hud.Warning" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "misc/hud_warning.wav" -} - -"SprayCan.Paint" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_NORM" - "wave" "player/sprayer.wav" -} - - - -"DoorSound.Null" -{ - "channel" "CHAN_BODY" - "volume" "1.0" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "common/null.wav" -} - -"DoorSound.DefaultMove" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "doors/door_metal_rusty_move1.wav" -} - -"DoorSound.DefaultArrive" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "doors/metal_stop1.wav" -} - -"DoorSound.DefaultLocked" -{ - "channel" "CHAN_BODY" - "volume" "0.2" - "soundlevel" "SNDLVL_75dB" - "wave" "doors/default_locked.wav" -} - -"RotDoorSound.DefaultMove" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "doors/door_metal_rusty_move1.wav" -} - -"RotDoorSound.DefaultArrive" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "doors/metal_stop1.wav" -} - -"RotDoorSound.DefaultLocked" -{ - "channel" "CHAN_BODY" - "volume" "0.2" - "soundlevel" "SNDLVL_75dB" - "wave" "doors/default_locked.wav" -} - -"Item.Materialize" -{ - "channel" "CHAN_ITEM" - "volume" ".25" - "soundlevel" "SNDLVL_75dB" - "wave" "items/spawn_item.wav" -} - -"PropaneTank.Burst" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "pitch" "95,105" - "soundlevel" "SNDLVL_90db" - "wave" "ambient/fire/gascan_ignite1.wav" -} - -"NPC_CombineS.ElectrocuteScream" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "common/null.wav" -} - - -"npc_citizen.die" -{ - "channel" "CHAN_VOICE" - "volume" "0.8" - "soundlevel" "SNDLVL_75dB" - - "rndwave" - { - "wave" "player/pl_pain5.wav" - "wave" "player/pl_pain6.wav" - "wave" "player/pl_pain7.wav" - } -} - - -// ------------------------------------------------------------------------------------ // -// AMBIENT -// ------------------------------------------------------------------------------------ // - -"Sawmill.Waterfall" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_84dB" - "wave" "ambient/waterfall.wav" -} - -"Ambient.MachineHum" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/machine_hum.wav" -} - -"Ambient.MachineHum2" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/machine_hum2.wav" -} - -"Ambient.MachineWorking" -{ - "channel" "CHAN_STATIC" - "volume" ".50" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/train_engine_idle.wav" -} - - - -"Ambient.ComputerWorking" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/computer_working.wav" -} - -"Ambient.MachineHum2" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/machine_hum2.wav" -} - -"Ambient.ComputerTape" -{ - "channel" "CHAN_STATIC" - "volume" ".5" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/computer_tape.wav" -} - -"Ambient.Factory" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/factory_outdoor.wav" -} - - -"Ambient.CommandCenter" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/command_center.wav" -} - -"Ambient.TrainApproachAndPass" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_95dB" - "wave" ")ambient/train_approach_and_pass.wav" -} - - -"Ambient.Train" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_95dB" - "wave" ")ambient/train.wav" -} - - -"Ambient.RailroadBells" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_95dB" - "wave" ")ambient/railroad_bells.wav" -} - -"Ambient.LightHum" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_75dB" - "wave" "ambient/lighthum.wav" -} - -"Ambient.LightHum" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_65dB" - "wave" "ambient/lighthum.wav" -} - -"Ambient.Siren" -{ - "channel" "CHAN_AUTO" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "ambient/siren.wav" -} - -"Ambient.Cliff" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_87dB" - "pitch" "PITCH_NORM" - "wave" "ambient/forest_cliff.wav" -} - -"Game.SuddenDeath" -{ - "channel" "CHAN_AUTO" - "volume" "1" - "soundlevel" "SNDLVL_140dB" - "pitch" "PITCH_NORM" - - "wave" "#misc/your_team_suddendeath.mp3" [$WIN32] - "wave" "#misc/your_team_suddendeath.wav" [$X360] -} - -"Game.Stalemate" -{ - "channel" "CHAN_AUTO" - "volume" "1" - "soundlevel" "SNDLVL_140dB" - "pitch" "PITCH_NORM" - - "wave" "#misc/your_team_stalemate.mp3" [$WIN32] - "wave" "#misc/your_team_stalemate.wav" [$X360] -} - -"Game.Overtime" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "soundlevel" "SNDLVL_140dB" - "pitch" "PITCH_NORM" - "rndwave" - { - "wave" "vo/announcer_overtime.wav" - "wave" "vo/announcer_overtime2.wav" - "wave" "vo/announcer_overtime3.wav" - "wave" "vo/announcer_overtime4.wav" - } -} - -"Game.YourTeamLost" -{ - "channel" "CHAN_AUTO" - "volume" "1" - "soundlevel" "SNDLVL_140dB" - "pitch" "PITCH_NORM" - - "wave" "#misc/your_team_lost.mp3" [$WIN32] - "wave" "#misc/your_team_lost.wav" [$X360] -} - -"Game.YourTeamWon" -{ - "channel" "CHAN_AUTO" - "volume" "1" - "soundlevel" "SNDLVL_140dB" - "pitch" "PITCH_NORM" - - "wave" "#misc/your_team_won.mp3" [$WIN32] - "wave" "#misc/your_team_won.wav" [$X360] -} - - -"Game.Revenge" -{ - "channel" "CHAN_STATIC" - "volume" ".65" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "#misc/tf_revenge.wav" -} - -"Game.Domination" -{ - "channel" "CHAN_STATIC" - "volume" ".65" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "#misc/tf_domination.wav" -} - -"Game.Nemesis" -{ - "channel" "CHAN_STATIC" - "volume" ".65" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "#misc/tf_nemesis.wav" -} - -"Game.HappyBirthday" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_87dB" - "wave" "misc/happy_birthday.wav" -} - - - -// ------------------------------------------------------------------------------------ // -// MISC -// ------------------------------------------------------------------------------------ // - -"Door.Open" -{ - "channel" "CHAN_STATIC" - "volume" ".65" - "pitch" "100" - "soundlevel" "SNDLVL_NONE" - "wave" "doors/generic_door_open.wav" -} - -"Door.Close" -{ - "channel" "CHAN_STATIC" - "volume" ".65" - "pitch" "100" - "soundlevel" "SNDLVL_NONE" - "wave" "doors/generic_door_close.wav" -} - -"TV.Static" -{ - "channel" "CHAN_ITEM" - "volume" ".15" - "pitch" "100" - "soundlevel" "SNDLVL_NONE" - "wave" "misc/null.wav" -} - -"TV.Tune" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_NONE" - "rndwave" [$WIN32] - { - "wave" "ui/tv_tune.mp3" - "wave" "ui/tv_tune2.mp3" - "wave" "ui/tv_tune3.mp3" - } - - "rndwave" [$X360] - { - "wave" "ui/tv_tune.wav" - "wave" "ui/tv_tune2.wav" - "wave" "ui/tv_tune3.wav" - } -} - -"Hologram.Start" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_73dB" - "wave" "misc/hologram_start.wav" -} - -"Hologram.Move" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_73dB" - "wave" "misc/hologram_move.wav" -} - -"Hologram.Stop" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_73dB" - "wave" "misc/hologram_stop.wav" -} - -"Hologram.Interrupted" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_73dB" - "wave" "misc/hologram_malfunction.wav" -} - - -"Fire.Engulf" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "misc/flame_engulf.wav" -} - -"Camera.SnapShot" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_NORM" - "wave" "misc/freeze_cam_snapshot.wav" -} - -"Achievement.Earned" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_94dB" - "wave" ")misc/achievement_earned.wav" -} - - -"Cart.Roll" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_84dB" - "wave" ")items/cart_rolling.wav" -} - -"Cart.Grind" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_84dB" - "rndwave" - { - "wave" "items/cart_rolling_back_grind1.wav" - "wave" "items/cart_rolling_back_grind2.wav" - "wave" "items/cart_rolling_back_grind3.wav" - "wave" "items/cart_rolling_back_grind4.wav" - } -} - -"Cart.RollStart" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_84dB" - "wave" ")items/cart_rolling_start.wav" -} - -"Cart.RollStop" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_84dB" - "wave" ")items/cart_rolling_stop.wav" -} - -"Cart.Explode" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_NONE" - "wave" ")items/cart_explode.wav" -} - -"Cart.Trigger" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_150dB" - "wave" ")items/cart_explode_trigger.wav" -} - -"Cart.Falling" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_110dB" - "wave" "items/cart_explode_falling.wav" -} - -"Cart.Warning" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_104dB" - "wave" ")items/cart_warning.wav" -} - -"Cart.WarningSingle" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "pitch" "100" - "soundlevel" "SNDLVL_104dB" - "wave" ")items/cart_warning_single.wav" -} - -"Hud.AchievementIncremented" -{ - "channel" "CHAN_STATIC" - "volume" "0.5" - "soundlevel" "SNDLVL_NONE" - "pitch" "160" - - "wave" "ui/scored.wav" -} - - -"SawMill.BladeImpact" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_105dB" - "pitch" "95,105" - "rndwave" - { - "wave" ")ambient/sawblade_impact1.wav" - "wave" ")ambient/sawblade_impact2.wav" - } -} - -"SawMill.Blade" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_85dB" - "pitch" "PITCH_NORM" - - "wave" ")ambient/sawblade.wav" -} - -"Ambient.NucleusElectricity" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_105dB" - "pitch" "PITCH_NORM" - - "wave" ")ambient/nucleus_electricity.wav" -} - -"Nucleus.WalkWayMove" -{ - "channel" "CHAN_STATIC" - "volume" ".25" - "soundlevel" "SNDLVL_150dB" - "pitch" "PITCH_NORM" - - "wave" ")ambient/walkway_move.wav" -} - -"Nucleus.ChamberOpen" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_150dB" - "pitch" "PITCH_NORM" - - "wave" ")ambient/chamber_open.wav" -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_player.txt b/addon/gamemodes/teamfortress/content/scripts/game_sounds_player.txt deleted file mode 100644 index b627adf6c..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/game_sounds_player.txt +++ /dev/null @@ -1,1370 +0,0 @@ -// Channels -// CHAN_AUTO = 0, -// CHAN_WEAPON = 1, -// CHAN_VOICE = 2, -// CHAN_ITEM = 3, -// CHAN_BODY = 4, -// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area -// CHAN_STATIC = 6, // allocate channel from the static area -// these can be set with "channel" "2" or "channel" "chan_voice" - -//----------------------------------------------------------------------------- -// common attenuation values -//----------------------------------------------------------------------------- - -// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f -// ATTN_IDLE 2.0f -// ATTN_STATIC 1.25f -// ATTN_RICOCHET 1.5f -// ATTN_GUNFIRE 0.27f - -// SNDLVL_NONE = 0, -// SNDLVL_25dB = 25, -// SNDLVL_30dB = 30, -// SNDLVL_35dB = 35, -// SNDLVL_40dB = 40, -// SNDLVL_45dB = 45, -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"Scout.DodgeCanOpen" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "soundlevel" "SNDLVL_84dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_scout_dodge_can_open.wav" -} - -"Scout.DodgeCanDrinkFast" -{ - "channel" "CHAN_WEAPON" - "volume" ".25" - "soundlevel" "SNDLVL_84dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_scout_dodge_can_drink_fast.wav" -} - -"Scout.DodgeCanDrink" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "soundlevel" "SNDLVL_84dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_scout_dodge_can_drink.wav" -} - -"Scout.DodgeCanCrush" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "soundlevel" "SNDLVL_84dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_scout_dodge_can_crush.wav" -} - -"Scout.DodgeCanPitch" -{ - "channel" "CHAN_WEAPON" - "volume" "1" - "soundlevel" "SNDLVL_84dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_scout_dodge_can_pitch.wav" -} - - -"Scout.DodgeTired" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "soundlevel" "SNDLVL_74dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_scout_dodge_tired.wav" -} - -"Player.Spawn" -{ - "channel" "CHAN_BODY" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - "wave" "misc/null.wav" -} - -"Player.UseDeny" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NORM" - - "wave" "common/wpn_denyselect.wav" -} - -"Player.WeaponSelected" -{ - "channel" "CHAN_BODY" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "common/wpn_select.wav" -} - -"Player.DenyWeaponSelection" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NORM" - - "wave" "common/wpn_denyselect.wav" -} - -"Player.WeaponSelectionOpen" -{ - "channel" "CHAN_BODY" - "volume" "0.32" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "common/null.wav" -} - -"Player.WeaponSelectionClose" -{ - "channel" "CHAN_BODY" - "volume" "VOL_NORM" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "common/null.wav" -} - -"Player.WeaponSelectionMoveSlot" -{ - "channel" "CHAN_BODY" - "volume" "0.5" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "wave" "common/wpn_moveselect.wav" -} - -"Player.FallGib" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "pitch" "92,96" - "soundlevel" "SNDLVL_NORM" - "wave" "player/pl_fleshbreak.wav" -} - -"Player.FallDamage" -{ - "channel" "CHAN_ITEM" - "volume" "0.75" - "pitch" "92,96" - "soundlevel" "SNDLVL_NORM" - "wave" "player/pl_fallpain.wav" -} - -"Player.PlasmaDamage" -{ - "channel" "CHAN_BODY" - "volume" "0.5" - "soundlevel" "SNDLVL_75dB" - - "wave" "player/general/flesh_burn.wav" -} - -"Player.SonicDamage" -{ - "channel" "CHAN_BODY" - "volume" "0.7" - "soundlevel" "SNDLVL_75dB" - "wave" "player/pain.wav" -} - -"Player.DrownStart" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_75dB" - "pitch" "90,110" - - "wave" "player/pl_drown1.wav" -} - -"Player.DrownContinue" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_75dB" - "pitch" "95,105" - - "rndwave" - { - "wave" "player/pl_drown1.wav" - "wave" "player/pl_drown2.wav" - "wave" "player/pl_drown3.wav" - } -} - -"Player.AmbientUnderWater" -{ - "channel" "CHAN_STATIC" - "volume" "0.22" - "soundlevel" "SNDLVL_75dB" - - "wave" "ambient/water/underwater.wav" -} - -"Player.PickupWeapon" -{ - "channel" "CHAN_BODY" - "volume" "0.8" - "soundlevel" "SNDLVL_75dB" - "pitch" "95,105" - "wave" "items/ammo_pickup.wav" -} - - -"Geiger.BeepLow" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NONE" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "player/geiger1.wav" - "wave" "player/geiger2.wav" - } -} - -"Player.OnFire" -{ - "channel" "CHAN_BODY" - "volume" "0.8" - "soundlevel" "SNDLVL_75dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "ambient/fire/fire_small_loop1.wav" - "wave" "ambient/fire/fire_small_loop2.wav" - } -} - -//========================================================================= - - -"TFPlayer.StunImpact" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_85dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_impact_stun.wav" -} - -"TFPlayer.StunImpactRange" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_105dB" - "pitch" "PITCH_NORM" - "wave" "player/pl_impact_stun_range.wav" -} - -"TFPlayer.AirBlastImpact" -{ - "soundlevel" "SNDLVL_75dB" - "volume" "1" - "pitch" "PITCH_NORM" - "rndwave" - { - "wave" "player/pl_impact_airblast1.wav" - "wave" "player/pl_impact_airblast2.wav" - "wave" "player/pl_impact_airblast3.wav" - "wave" "player/pl_impact_airblast4.wav" - } -} - -"TFPlayer.FlareImpact" -{ - "soundlevel" "SNDLVL_75dB" - "volume" "0.7" - "pitch" "PITCH_NORM" - "rndwave" - { - "wave" "player/pl_impact_flare1.wav" - "wave" "player/pl_impact_flare2.wav" - "wave" "player/pl_impact_flare3.wav" - } -} - -"TFPlayer.Drown" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "95,105" - - "rndwave" - { - "wave" "player/drown1.wav" - "wave" "player/drown2.wav" - "wave" "player/drown3.wav" - } -} - -"TFPlayer.Pain" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "92,96" - "wave" "player/pain.wav" -} - -"TFPlayer.FlameOut" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCh_NORM" - "wave" ")player/flame_out.wav" -} - - -"TFPlayer.AttackerPain" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - "pitch" "92,96" - "wave" "player/death.wav" -} - -"TFPlayer.FirePain" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - "pitch" "92,96" - "wave" "player/fire.wav" -} - -"TFPlayer.CritPain" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "95,105" - - "rndwave" - { - "wave" "player/crit_received1.wav" - "wave" "player/crit_received2.wav" - "wave" "player/crit_received3.wav" - - } -} - -"TFPlayer.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - "pitch" "PITCH_NORM" - "wave" "player/death.wav" -} - -"TFPlayer.MedicChargedDeath" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - "pitch" "PITCH_NORM" - "wave" "player/medic_charged_death.wav" -} - -"Player.Death" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "92,96" - "wave" "player/pain.wav" -} - -"Player.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "92,96" - "wave" "player/death.wav" - -} - -"Player.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "92,96" - "wave" "player/pain.wav" -} - -"TFPlayer.GrenadeTimer" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/timer.wav" -} - -"Player.Spy_Disguise" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_65dB" - "wave" "player/spy_disguise.wav" -} - -"Player.Spy_Shield_Break" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/spy_shield_break.wav" -} - -"Player.Spy_Cloak" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_85dB" - "wave" "player/spy_cloak.wav" -} - -"Player.Spy_UnCloak" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_85dB" - "wave" "player/spy_uncloak.wav" -} - -"Player.Spy_UnCloakFeignDeath" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_85dB" - "wave" "player/spy_uncloak_feigndeath.wav" -} - -"TFPlayer.SaveMe" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_86dBM" - - "rndwave" - { - "wave" "vo/medic1.wav" - "wave" "vo/medic2.wav" - } -} - -"TFPlayer.InvulnerableOn" -{ - "channel" "CHAN_STATIC" - "volume" ".5" - "soundlevel" "SNDLVL_86dB" - "wave" "player/invulnerable_on.wav" -} - -"TFPlayer.InvulnerableOff" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_86dB" - "wave" "player/invulnerable_off.wav" -} - -"TFPlayer.CritHit" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_85dB" - "rndwave" - { - "wave" "player/crit_hit.wav" - "wave" "player/crit_hit2.wav" - "wave" "player/crit_hit3.wav" - "wave" "player/crit_hit4.wav" - "wave" "player/crit_hit5.wav" - } -} - -"TFPlayer.CritHitMini" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_85dB" - "rndwave" - { - "wave" "player/crit_hit_mini.wav" - "wave" "player/crit_hit_mini2.wav" - "wave" "player/crit_hit_mini3.wav" - "wave" "player/crit_hit_mini4.wav" - "wave" "player/crit_hit_mini5.wav" - } -} - -"TFPlayer.FreezeCam" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "misc/freeze_cam.wav" -} - -//----------------------------------------------------------------------------- -//Taunts and Selection Menu -//----------------------------------------------------------------------------- -"Taunt.Engineer01HandClap" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap.wav" -} - -"Taunt.Engineer01HandClap2" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap2.wav" -} - -"Taunt.Engineer01FootStomp" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Engineer01FootStompLight" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp_light.wav" -} - -"Taunt.Engineer02PistolTwirl" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_pistol_twirl.wav" -} - -"Selection.EngineerWrenchShoulder" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_shotgun_shoulder.wav" -} - -"Selection.EngineerFootStomp" -{ - "channel" "CHAN_STATIC" - "volume" ".5" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_foot_stomp.wav" -} - -"Selection.EngineerClothesRustle" -{ - "channel" "CHAN_STATIC" - "volume" ".5" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Demo01FootStompLight" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp_light.wav" -} - -"Taunt.Demo01FootSpin" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_spin.wav" -} - -"Taunt.Demo01HandClap" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap.wav" -} - -"Taunt.Demo01HandClap2" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap2.wav" -} - -"Taunt.Demo02EquipmentJingle" -{ - "channel" "CHAN_STATIC" - "volume" ".45" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle.wav" -} - -"Taunt.Demo02EquipmentJingle2" -{ - "channel" "CHAN_STATIC" - "volume" ".45" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle2.wav" -} - -"Taunt.Demo02EquipmentJingle3" -{ - "channel" "CHAN_STATIC" - "volume" ".45" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Taunt.Demo02EquipmentJingle4" -{ - "channel" "CHAN_STATIC" - "volume" ".45" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle4.wav" -} - -"Taunt.Demo03BottleCatch" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap.wav" -} - -"Taunt.Demo03BottleSlosh" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_bottle_slosh.wav" -} - -"Taunt.Demo03BottleAh" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_bottle_ah.wav" -} - -"Selection.DemoEquipment1" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_gun2.wav" -} - -"Selection.DemoEquipment2" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_gun1.wav" -} - -"Selection.DemoClipSpin" -{ - "channel" "CHAN_BODY" - "volume" ".5" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clip_spin.wav" -} - - - -"Taunt.MedicGloveStretch" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - - "wave" "player/taunt_rubberglove_stretch.wav" -} - -"Taunt.MedicGloveSnap" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - - "wave" "player/taunt_rubberglove_snap.wav" -} - -"Taunt.MedicViolin" -{ - "channel" "CHAN_STATIC" - "volume" ".35" - "soundlevel" "SNDLVL_75dB" - - "rndwave" - { - "wave" "player/taunt_v01.wav" - "wave" "player/taunt_v02.wav" - "wave" "player/taunt_v03.wav" - "wave" "player/taunt_v04.wav" - "wave" "player/taunt_v05.wav" - "wave" "player/taunt_v06.wav" - "wave" "player/taunt_v07.wav" - } -} -"Taunt.MedicViolinUber" -{ - "channel" "CHAN_STATIC" - "volume" ".35" - "soundlevel" "SNDLVL_75dB" - - "rndwave" - { - "wave" "player/uberTaunt_v01.wav" - "wave" "player/uberTaunt_v02.wav" - "wave" "player/uberTaunt_v03.wav" - "wave" "player/uberTaunt_v04.wav" - "wave" "player/uberTaunt_v05.wav" - "wave" "player/uberTaunt_v06.wav" - "wave" "player/uberTaunt_v07.wav" - } -} - -"Selection.MedicHeelClick" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - - "wave" "player/taunt_heel_click.wav" -} - -"Selection.MedicFootStomp" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - - "wave" "player/taunt_foot_stomp.wav" -} - -"Selection.MedicFootSlide" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - - "wave" "player/taunt_foot_spin.wav" -} - -"Taunt.Scout01Run" -{ - "channel" "CHAN_STATIC" - "volume" ".25" - "soundlevel" "SNDLVL_75dB" - - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Scout01HandSmack" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - - "wave" "player/taunt_hand_clap.wav" -} - -"Taunt.Scout02Run" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Scout03Run" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Selection.ScoutShotgunShoulder" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_shotgun_shoulder.wav" -} - -"Selection.ScoutShotgunTwirl" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_shotgun_twirl.wav" -} - -"Taunt.Sniper02HealClick" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Sniper02FootStomp" -{ - "channel" "CHAN_STATIC" - "volume" ".50" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Sniper02FootSlide" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_spin.wav" -} - -"Taunt.Sniper03MacheteUnsheath" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_machete_draw.wav" -} - -"Taunt.Sniper03MacheteCatch" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_machete_catch.wav" -} - -"Selection.SniperHatTip" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_swipe.wav" -} - -"Taunt.Spy01TieFix" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_tie_fix.wav" -} - -"Taunt.Spy03FootStomp" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Spy03KnifeCatch" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_grenade_catch.wav" -} - -"Taunt.Spy04CigFlick" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_cig_flick.wav" -} - -"Taunt.SpyCigCaseClose" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_cig_case_close.wav" -} - -"Selection.SpyClothesRustle1" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_swipe.wav" -} - -"Selection.SpyClothesRustle2" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_swipe2.wav" -} - -"Selection.SpyPuff" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_puff.wav" -} - -"Selection.SpyPuffAh" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_puff_ah.wav" -} - -"Taunt.Soldier01HeelClick" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Soldier01ClothesSwipe" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_swipe.wav" -} - -"Taunt.Soldier01ClothesRustle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Soldier01HelmetJostle" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Taunt.Soldier02GrenadeCatch" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_grenade_catch.wav" -} - -"Taunt.Soldier02ClothesRustle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Soldier02ShovelCatch" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap.wav" -} - -"Taunt.Soldier03FootStomp" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Soldier03HelmetHit" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_helmet_hit.wav" -} - -"Taunt.Soldier03ClothesSwipe" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_swipe.wav" -} - -"Taunt.Soldier03ClothesRustle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Soldier03HelmetJostle" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Selection.SoldierLauncherGrab" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_grenade_catch.wav" -} - -"Selection.SoldierClothesRustle" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Selection.SoldierEquipment" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Selection.SoldierLauncherSetStart" -{ - "channel" "CHAN_STATIC" - "volume" ".55" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_gun2.wav" -} - -"Selection.SoldierLauncherHitGround" -{ - "channel" "CHAN_BODY" - "volume" ".25" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_launcher_hit.wav" -} - -"Selection.SoldierLauncherSetStop" -{ - "channel" "CHAN_STATIC" - "volume" ".55" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_gun1.wav" -} - -"Taunt.HeavyUpperCut" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_heavy_upper_cut.wav" -} - -"Taunt.HeavyBell" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_bell.wav" -} - -"Taunt.Heavy01HoldGun" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_grenade_catch.wav" -} - -"Taunt.Heavy01HoldGunLight" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap2.wav" -} - -"Taunt.Heavy01ClothesRustle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Heavy01EquipmentGun" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_gun1.wav" -} - -"Taunt.Heavy01EquipmentGun2" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_gun2.wav" -} - -"Taunt.Heavy01EquipmentRustleHeavy" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle2.wav" -} - -"Taunt.Heavy02ShotgunSpin" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_shotgun_spin.wav" -} - - -"Taunt.Heavy02ShotgunGrab" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_hand_clap.wav" -} - -"Taunt.Heavy02EquipmentJingle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Taunt.Heavy03ClothesRustle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Heavy03ClothesSwipe" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_clothes_swipe.wav" -} - -"Taunt.Heavy03EquipmentJingle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Taunt.Heavy03EquipmentJingleShort" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_jingle3short.wav" -} - -"Selection.HeavyFootStomp" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_foot_stomp.wav" -} - -"Selection.HeavyEquipment1" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_gun2.wav" -} - -"Selection.HeavyEquipment2" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_gun1.wav" -} - -"Selection.HeavyClothesRustle" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Taunt.Pyro01FootStomp" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_foot_stomp.wav" -} - -"Taunt.Pyro01Equipment1" -{ - "channel" "CHAN_STATIC" - "volume" ".20" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_gun2.wav" -} - -"Taunt.Pyro01Equipment2" -{ - "channel" "CHAN_STATIC" - "volume" ".35" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_equipment_gun1.wav" -} - -"Taunt.Pyro02Fire" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_fire.wav" -} - -"Taunt.Pyro03RockStar" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_rockstar.wav" -} - -"Taunt.Pyro03RockStarEnd" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_75dB" - "wave" "player/taunt_rockstar_end.wav" -} - -"Selection.PyroClothesRustle" -{ - "channel" "CHAN_BODY" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_clothes_rustle.wav" -} - -"Selection.PyroEquipment1" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_jingle3.wav" -} - -"Selection.PyroEquipment2" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_equipment_jingle2.wav" -} - - -"Selection.PyroFootStomp" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_NONE" - "wave" "player/taunt_foot_stomp.wav" -} - - -//----------------------------------------------------------------------------- -//End Taunts -//----------------------------------------------------------------------------- diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_vo.txt b/addon/gamemodes/teamfortress/content/scripts/game_sounds_vo.txt deleted file mode 100644 index 7c76c66a9..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/game_sounds_vo.txt +++ /dev/null @@ -1,24347 +0,0 @@ -// -// -// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! -// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! -// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! -// -// VOL_NORM 1.0f -// -//----------------------------------------------------------------------------- -// common attenuation values -//----------------------------------------------------------------------------- -// -// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f -// ATTN_IDLE 2.0f -// ATTN_STATIC 1.25f -// ATTN_RICOCHET 1.5f -// ATTN_GUNFIRE 0.27f -// -// SNDLVL_NONE = 0, -// SNDLVL_25dB = 25, -// SNDLVL_30dB = 30, -// SNDLVL_35dB = 35, -// SNDLVL_40dB = 40, -// SNDLVL_45dB = 45, -// SNDLVL_50dB = 50, = 3.9 -// SNDLVL_55dB = 55, = 3.0 -// SNDLVL_IDLE = 60, = 2.0 -// SNDLVL_TALKING = 60, = 2.0 -// SNDLVL_60dB = 60, = 2.0 -// SNDLVL_65dB = 65, = 1.5 -// SNDLVL_STATIC = 66, = 1.25 -// SNDLVL_70dB = 70, = 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, = 0.8 -// SNDLVL_80dB = 80, = 0.7 -// SNDLVL_85dB = 85, = 0.6 -// SNDLVL_90dB = 90, = 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, = 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, = 0.27 -// SNDLVL_140dB = 140, = 0.2 -// SNDLVL_150dB = 150, = 0.2 -// - -//----------------------------------------------------------------------------- -// Player Deaths -//----------------------------------------------------------------------------- - -"Demoman.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainSevere01.wav" - "wave" "vo/demoman_PainSevere02.wav" - "wave" "vo/demoman_PainSevere03.wav" - "wave" "vo/demoman_PainSevere04.wav" - } -} - -"Demoman.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainCrticialDeath01.wav" - "wave" "vo/demoman_PainCrticialDeath02.wav" - "wave" "vo/demoman_PainCrticialDeath03.wav" - "wave" "vo/demoman_PainCrticialDeath04.wav" - "wave" "vo/demoman_PainCrticialDeath05.wav" - } -} - -"Demoman.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainCrticialDeath01.wav" - "wave" "vo/demoman_PainCrticialDeath02.wav" - "wave" "vo/demoman_PainCrticialDeath03.wav" - "wave" "vo/demoman_PainCrticialDeath04.wav" - "wave" "vo/demoman_PainCrticialDeath05.wav" - } -} - -"Demoman.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainSharp01.wav" - "wave" "vo/demoman_PainSharp02.wav" - "wave" "vo/demoman_PainSharp03.wav" - "wave" "vo/demoman_PainSharp04.wav" - "wave" "vo/demoman_PainSharp05.wav" - "wave" "vo/demoman_PainSharp06.wav" - "wave" "vo/demoman_PainSharp07.wav" - } -} - -"Engineer.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainSevere01.wav" - "wave" "vo/engineer_PainSevere02.wav" - "wave" "vo/engineer_PainSevere03.wav" - "wave" "vo/engineer_PainSevere04.wav" - "wave" "vo/engineer_PainSevere05.wav" - "wave" "vo/engineer_PainSevere06.wav" - "wave" "vo/engineer_PainSevere07.wav" - } -} - -"Engineer.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainCrticialDeath01.wav" - "wave" "vo/engineer_PainCrticialDeath02.wav" - "wave" "vo/engineer_PainCrticialDeath03.wav" - "wave" "vo/engineer_PainCrticialDeath04.wav" - "wave" "vo/engineer_PainCrticialDeath05.wav" - "wave" "vo/engineer_PainCrticialDeath06.wav" - } -} - -"Engineer.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainCrticialDeath01.wav" - "wave" "vo/engineer_PainCrticialDeath02.wav" - "wave" "vo/engineer_PainCrticialDeath03.wav" - "wave" "vo/engineer_PainCrticialDeath04.wav" - "wave" "vo/engineer_PainCrticialDeath05.wav" - "wave" "vo/engineer_PainCrticialDeath06.wav" - } -} - -"Engineer.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainSharp01.wav" - "wave" "vo/engineer_PainSharp02.wav" - "wave" "vo/engineer_PainSharp03.wav" - "wave" "vo/engineer_PainSharp04.wav" - "wave" "vo/engineer_PainSharp05.wav" - "wave" "vo/engineer_PainSharp06.wav" - "wave" "vo/engineer_PainSharp07.wav" - "wave" "vo/engineer_PainSharp08.wav" - } -} - - - -"Heavy.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainSevere01.wav" - "wave" "vo/heavy_PainSevere02.wav" - "wave" "vo/heavy_PainSevere03.wav" - } -} - -"Heavy.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainCrticialDeath01.wav" - "wave" "vo/heavy_PainCrticialDeath02.wav" - "wave" "vo/heavy_PainCrticialDeath03.wav" - } -} - -"Heavy.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainCrticialDeath01.wav" - "wave" "vo/heavy_PainCrticialDeath02.wav" - "wave" "vo/heavy_PainCrticialDeath03.wav" - } -} - -"Heavy.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainSharp01.wav" - "wave" "vo/heavy_PainSharp02.wav" - "wave" "vo/heavy_PainSharp03.wav" - "wave" "vo/heavy_PainSharp04.wav" - "wave" "vo/heavy_PainSharp05.wav" - } -} - - - -"Medic.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainSevere01.wav" - "wave" "vo/medic_PainSevere02.wav" - "wave" "vo/medic_PainSevere03.wav" - "wave" "vo/medic_PainSevere04.wav" - } -} - -"Medic.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainCrticialDeath01.wav" - "wave" "vo/medic_PainCrticialDeath02.wav" - "wave" "vo/medic_PainCrticialDeath03.wav" - "wave" "vo/medic_PainCrticialDeath04.wav" - } -} - -"Medic.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainCrticialDeath01.wav" - "wave" "vo/medic_PainCrticialDeath02.wav" - "wave" "vo/medic_PainCrticialDeath03.wav" - "wave" "vo/medic_PainCrticialDeath04.wav" - } -} - -"Medic.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainSharp01.wav" - "wave" "vo/medic_PainSharp02.wav" - "wave" "vo/medic_PainSharp03.wav" - "wave" "vo/medic_PainSharp04.wav" - "wave" "vo/medic_PainSharp05.wav" - "wave" "vo/medic_PainSharp06.wav" - "wave" "vo/medic_PainSharp07.wav" - "wave" "vo/medic_PainSharp08.wav" - } -} - - - -"Pyro.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainSevere01.wav" - "wave" "vo/pyro_PainSevere02.wav" - "wave" "vo/pyro_PainSevere03.wav" - "wave" "vo/pyro_PainSevere04.wav" - "wave" "vo/pyro_PainSevere05.wav" - "wave" "vo/pyro_PainSevere06.wav" - } -} - -"Pyro.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainCrticialDeath01.wav" - "wave" "vo/pyro_PainCrticialDeath02.wav" - "wave" "vo/pyro_PainCrticialDeath03.wav" - } -} - -"Pyro.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainCrticialDeath01.wav" - "wave" "vo/pyro_PainCrticialDeath02.wav" - "wave" "vo/pyro_PainCrticialDeath03.wav" - } -} - -"Pyro.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainSharp01.wav" - "wave" "vo/pyro_PainSharp02.wav" - "wave" "vo/pyro_PainSharp03.wav" - "wave" "vo/pyro_PainSharp04.wav" - "wave" "vo/pyro_PainSharp05.wav" - "wave" "vo/pyro_PainSharp06.wav" - "wave" "vo/pyro_PainSharp07.wav" - } -} - - -"Scout.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSevere01.wav" - "wave" "vo/scout_PainSevere02.wav" - "wave" "vo/scout_PainSevere03.wav" - "wave" "vo/scout_PainSevere04.wav" - "wave" "vo/scout_PainSevere05.wav" - "wave" "vo/scout_PainSevere06.wav" - } -} - -"Scout.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Scout.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Scout.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSharp01.wav" - "wave" "vo/scout_PainSharp02.wav" - "wave" "vo/scout_PainSharp03.wav" - "wave" "vo/scout_PainSharp04.wav" - "wave" "vo/scout_PainSharp05.wav" - "wave" "vo/scout_PainSharp06.wav" - "wave" "vo/scout_PainSharp07.wav" - "wave" "vo/scout_PainSharp08.wav" - } -} - - -"Sniper.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainSevere01.wav" - "wave" "vo/sniper_PainSevere02.wav" - "wave" "vo/sniper_PainSevere03.wav" - "wave" "vo/sniper_PainSevere04.wav" - } -} - -"Sniper.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainCrticialDeath01.wav" - "wave" "vo/sniper_PainCrticialDeath02.wav" - "wave" "vo/sniper_PainCrticialDeath03.wav" - "wave" "vo/sniper_PainCrticialDeath04.wav" - } -} - -"Sniper.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainCrticialDeath01.wav" - "wave" "vo/sniper_PainCrticialDeath02.wav" - "wave" "vo/sniper_PainCrticialDeath03.wav" - "wave" "vo/sniper_PainCrticialDeath04.wav" - } -} - -"Sniper.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainSharp01.wav" - "wave" "vo/sniper_PainSharp02.wav" - "wave" "vo/sniper_PainSharp03.wav" - "wave" "vo/sniper_PainSharp04.wav" - } -} - - -"Spy.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/spy_PainSevere01.wav" - "wave" "vo/Spy_PainSevere02.wav" - "wave" "vo/Spy_PainSevere03.wav" - "wave" "vo/Spy_PainSevere04.wav" - "wave" "vo/Spy_PainSevere05.wav" - } -} - -"Spy.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/Spy_PainCrticialDeath01.wav" - "wave" "vo/Spy_PainCrticialDeath02.wav" - "wave" "vo/Spy_PainCrticialDeath03.wav" - } -} - -"Spy.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/Spy_PainCrticialDeath01.wav" - "wave" "vo/Spy_PainCrticialDeath02.wav" - "wave" "vo/Spy_PainCrticialDeath03.wav" - } -} - -"Spy.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/spy_PainSharp01.wav" - "wave" "vo/spy_PainSharp02.wav" - "wave" "vo/spy_PainSharp03.wav" - "wave" "vo/spy_PainSharp04.wav" - } -} - - -"Soldier.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainSevere01.wav" - "wave" "vo/soldier_PainSevere02.wav" - "wave" "vo/soldier_PainSevere03.wav" - "wave" "vo/soldier_PainSevere04.wav" - "wave" "vo/soldier_PainSevere05.wav" - "wave" "vo/soldier_PainSevere06.wav" - } -} - -"Soldier.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainCrticialDeath01.wav" - "wave" "vo/soldier_PainCrticialDeath02.wav" - "wave" "vo/soldier_PainCrticialDeath03.wav" - "wave" "vo/soldier_PainCrticialDeath04.wav" - } -} - -"Soldier.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainCrticialDeath01.wav" - "wave" "vo/soldier_PainCrticialDeath02.wav" - "wave" "vo/soldier_PainCrticialDeath03.wav" - "wave" "vo/soldier_PainCrticialDeath04.wav" - } -} - -"Soldier.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainSharp01.wav" - "wave" "vo/soldier_PainSharp02.wav" - "wave" "vo/soldier_PainSharp03.wav" - "wave" "vo/soldier_PainSharp04.wav" - "wave" "vo/soldier_PainSharp05.wav" - "wave" "vo/soldier_PainSharp06.wav" - "wave" "vo/soldier_PainSharp07.wav" - "wave" "vo/soldier_PainSharp08.wav" - } -} - -"Civilian.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSevere01.wav" - "wave" "vo/scout_PainSevere02.wav" - "wave" "vo/scout_PainSevere03.wav" - "wave" "vo/scout_PainSevere04.wav" - "wave" "vo/scout_PainSevere05.wav" - "wave" "vo/scout_PainSevere06.wav" - } -} - -"Civilian.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Civilian.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Civilian.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSharp01.wav" - "wave" "vo/scout_PainSharp02.wav" - "wave" "vo/scout_PainSharp03.wav" - "wave" "vo/scout_PainSharp04.wav" - "wave" "vo/scout_PainSharp05.wav" - "wave" "vo/scout_PainSharp06.wav" - "wave" "vo/scout_PainSharp07.wav" - "wave" "vo/scout_PainSharp08.wav" - } -} - - -//----------------------------------------------------------------------------- -// End Player Deaths -//----------------------------------------------------------------------------- - -"Announcer.Cart.Warning" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_cart_attacker_warning1.wav" - "wave" "vo/announcer_cart_attacker_warning2.wav" - "wave" "vo/announcer_cart_attacker_warning3.wav" - "wave" "vo/announcer_cart_attacker_warning4.wav" - "wave" "vo/announcer_cart_defender_warning1.wav" - "wave" "vo/announcer_cart_defender_warning2.wav" - "wave" "vo/announcer_cart_defender_warning3.wav" - "wave" "vo/announcer_cart_defender_warning4.wav" - "wave" "vo/announcer_cart_defender_warning5.wav" - "wave" "vo/announcer_cart_defender_warning6.wav" - } -} - -"Announcer.Cart.FinalWarning" - -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_cart_attacker_finalwarning1.wav" - "wave" "vo/announcer_cart_attacker_finalwarning2.wav" - "wave" "vo/announcer_cart_attacker_finalwarning3.wav" - "wave" "vo/announcer_cart_attacker_finalwarning4.wav" - "wave" "vo/announcer_cart_attacker_finalwarning5.wav" - "wave" "vo/announcer_cart_defender_finalwarning1.wav" - "wave" "vo/announcer_cart_defender_finalwarning2.wav" - "wave" "vo/announcer_cart_defender_finalwarning3.wav" - "wave" "vo/announcer_cart_defender_finalwarning4.wav" - "wave" "vo/announcer_cart_defender_finalwarning5.wav" - } -} - -"Announcer.TournamentModeStart" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_tournament_started1.wav" - "wave" "vo/announcer_tournament_started2.wav" - "wave" "vo/announcer_tournament_started3.wav" - "wave" "vo/announcer_tournament_started4.wav" - } -} - -"Announcer.Success" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_we_secured_control.wav" - "wave" "vo/announcer_we_captured_control.wav" - } -} - -"Announcer.Failure" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "wave" "vo/announcer_we_lost_control.wav" -} - -"Announcer.AttackControlPoints" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_attack_controlpoints.wav" -} - -"Announcer.CaptureControlPoints" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_capture_controlpoints.wav" -} - -"Announcer.CaptureIntel" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_capture_intel.wav" -} - -"Announcer.ControlPointContested" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_control_point_warning.wav" - "wave" "vo/announcer_control_point_warning2.wav" - "wave" "vo/announcer_control_point_warning3.wav" - } -} - -"Announcer.DefendControlPoints" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_defend_controlpoints.wav" -} - -"Announcer.DefendIntel" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_defend_intel.wav" -} - -"Announcer.RoundBegins10Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_10sec.wav" -} - -"Announcer.RoundBegins1Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_1sec.wav" -} - -"Announcer.RoundBegins20Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_20sec.wav" -} - -"Announcer.RoundBegins2Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_2sec.wav" -} - -"Announcer.RoundBegins30Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_30sec.wav" -} - -"Announcer.RoundBegins3Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_3sec.wav" -} - -"Announcer.RoundBegins4Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_4sec.wav" -} - -"Announcer.RoundBegins5Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_5sec.wav" -} - -"Announcer.RoundBegins60Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_60sec.wav" -} - -"Announcer.RoundEnds10seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_10sec.wav" -} - -"Announcer.RoundEnds1seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_1sec.wav" -} - -"Announcer.RoundEnds20seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_20sec.wav" -} - -"Announcer.RoundEnds2minutes" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_2min.wav" -} - -"Announcer.RoundEnds2seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_2sec.wav" -} - -"Announcer.RoundEnds30seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_30sec.wav" -} - -"Announcer.RoundEnds3seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_3sec.wav" -} - -"Announcer.RoundEnds4seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_4sec.wav" -} - -"Announcer.RoundEnds5minutes" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_5min.wav" -} - -"Announcer.RoundEnds5seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_5sec.wav" -} - -"Announcer.RoundEnds60seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_60sec.wav" -} - -"Announcer.RoundEnds6seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_6sec.wav" -} - -"Announcer.RoundEnds7seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_7sec.wav" -} - -"Announcer.RoundEnds8seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_8sec.wav" -} - -"Announcer.RoundEnds9seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_9sec.wav" -} - -"Announcer.TimeAdded" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_added.wav" -} - -"Announcer.TimeAddedForEnemy" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_added_enemy.wav" -} - -"Announcer.TimeAwarded" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_awarded.wav" -} - -"Announcer.TimeAwardedCongrats" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_awarded_congrats.wav" -} - -"Announcer.TimeAwardedForTeam" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_time_awarded.wav" - "wave" "vo/announcer_time_awarded_success.wav" - "wave" "vo/announcer_time_awarded_congrats.wav" - } -} - -"Announcer.TimeAwardedSuccess" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_awarded_success.wav" -} - -"AttackDefend.Captured" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "ambience/goal_1.wav" -} - -"AttackDefend.Captured.vo" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/doop.wav" -} - -"AttackDefend.EnemyCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemycaptured.wav" -} - -"AttackDefend.EnemyDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemydropped.wav" -} - -"AttackDefend.EnemyReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemyreturned.wav" -} - -"AttackDefend.EnemyStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemystolen.wav" -} - -"AttackDefend.TeamCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamcaptured.wav" -} - -"AttackDefend.TeamDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamdropped.wav" -} - -"AttackDefend.TeamReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamreturned.wav" -} - -"AttackDefend.TeamStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamstolen.wav" -} - -"CaptureFlag.EnemyCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemycaptured.wav" - "wave" "vo/intel_enemycaptured.wav" - "wave" "vo/intel_enemycaptured2.wav" - } -} - -"CaptureFlag.EnemyDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemydropped.wav" - "wave" "vo/intel_enemydropped2.wav" - "wave" "vo/intel_enemydropped3.wav" - } -} - -"CaptureFlag.EnemyReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemyreturned.wav" - "wave" "vo/intel_enemyreturned2.wav" - "wave" "vo/intel_enemyreturned3.wav" - } -} - -"CaptureFlag.EnemyStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemystolen.wav" - "wave" "vo/intel_enemystolen2.wav" - "wave" "vo/intel_enemystolen3.wav" - "wave" "vo/intel_enemystolen4.wav" - } -} - -"CaptureFlag.FlagSpawn" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "items/itembk2.wav" -} - -"CaptureFlag.TeamCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/intel_teamcaptured.wav" -} - -"CaptureFlag.TeamDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_teamdropped.wav" - "wave" "vo/intel_teamdropped2.wav" - } -} - -"CaptureFlag.TeamReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/intel_teamreturned.wav" -} - -"CaptureFlag.TeamStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/intel_teamstolen.wav" -} - -"ControlPoint.CaptureWarn" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_last_flag.wav" - "wave" "vo/announcer_last_flag2.wav" - } -} - -"Demoman.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ActivateCharge01.wav" -} - -"Demoman.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ActivateCharge02.wav" -} - -"Demoman.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ActivateCharge03.wav" -} - -"Demoman.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedControlPoint01.wav" -} - -"Demoman.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedControlPoint02.wav" -} - -"Demoman.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedControlPoint03.wav" -} - -"Demoman.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedIntelligence01.wav" -} - -"Demoman.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedIntelligence02.wav" -} - -"Demoman.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedIntelligence03.wav" -} - -"Demoman.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie01.wav" -} - -"Demoman.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie02.wav" -} - -"Demoman.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie03.wav" -} - -"Demoman.AutoDejectedTie04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie04.wav" -} - -"Demoman.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoOnFire01.wav" -} - -"Demoman.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoOnFire02.wav" -} - -"Demoman.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoOnFire03.wav" -} - -"Demoman.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry01.wav" -} - -"Demoman.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry02.wav" -} - -"Demoman.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry03.wav" -} - -"Demoman.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry04.wav" -} - -"Demoman.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry05.wav" -} - -"Demoman.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry06.wav" -} - -"Demoman.BattleCry07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry07.wav" -} - -"Demoman.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers01.wav" -} - -"Demoman.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers02.wav" -} - -"Demoman.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers03.wav" -} - -"Demoman.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers04.wav" -} - -"Demoman.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers05.wav" -} - -"Demoman.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers06.wav" -} - -"Demoman.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers07.wav" -} - -"Demoman.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers08.wav" -} - -"Demoman.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpy01.wav" -} - -"Demoman.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpy02.wav" -} - -"Demoman.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpy03.wav" -} - -"Demoman.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify01.wav" -} - -"Demoman.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify02.wav" -} - -"Demoman.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify03.wav" -} - -"Demoman.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify04.wav" -} - -"Demoman.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify05.wav" -} - -"Demoman.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify06.wav" -} - -"Demoman.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify07.wav" -} - -"Demoman.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify08.wav" -} - -"Demoman.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify09.wav" -} - -"Demoman.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Go01.wav" -} - -"Demoman.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Go02.wav" -} - -"Demoman.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Go03.wav" -} - -"Demoman.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_GoodJob01.wav" -} - -"Demoman.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_GoodJob02.wav" -} - -"Demoman.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadLeft01.wav" -} - -"Demoman.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadLeft02.wav" -} - -"Demoman.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadLeft03.wav" -} - -"Demoman.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadRight01.wav" -} - -"Demoman.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadRight02.wav" -} - -"Demoman.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadRight03.wav" -} - -"Demoman.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMe01.wav" -} - -"Demoman.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMe02.wav" -} - -"Demoman.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMe03.wav" -} - -"Demoman.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeCapture01.wav" -} - -"Demoman.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeCapture02.wav" -} - -"Demoman.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeCapture03.wav" -} - -"Demoman.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeDefend01.wav" -} - -"Demoman.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeDefend02.wav" -} - -"Demoman.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeDefend03.wav" -} - -"Demoman.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Incoming01.wav" -} - -"Demoman.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Incoming02.wav" -} - -"Demoman.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Incoming03.wav" -} - -"Demoman.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers01.wav" -} - -"Demoman.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers02.wav" -} - -"Demoman.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers03.wav" -} - -"Demoman.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers04.wav" -} - -"Demoman.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers05.wav" -} - -"Demoman.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers06.wav" -} - -"Demoman.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers07.wav" -} - -"Demoman.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers08.wav" -} - -"Demoman.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers09.wav" -} - -"Demoman.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers10.wav" -} - -"Demoman.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers11.wav" -} - -"Demoman.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil01.wav" -} - -"Demoman.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil02.wav" -} - -"Demoman.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil03.wav" -} - -"Demoman.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil04.wav" -} - -"Demoman.LaughEvil05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil05.wav" -} - -"Demoman.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughHappy01.wav" -} - -"Demoman.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughHappy02.wav" -} - -"Demoman.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughLong01.wav" -} - -"Demoman.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughLong02.wav" -} - -"Demoman.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort01.wav" -} - -"Demoman.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort02.wav" -} - -"Demoman.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort03.wav" -} - -"Demoman.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort04.wav" -} - -"Demoman.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort05.wav" -} - -"Demoman.LaughShort06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort06.wav" -} - -"Demoman.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Medic01.wav" -} - -"Demoman.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Medic02.wav" -} - -"Demoman.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Medic03.wav" -} - -"Demoman.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_MoveUp01.wav" -} - -"Demoman.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_MoveUp02.wav" -} - -"Demoman.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_MoveUp03.wav" -} - -"Demoman.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NeedDispenser01.wav" -} - -"Demoman.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NeedSentry01.wav" -} - -"Demoman.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NeedTeleporter01.wav" -} - -"Demoman.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization01.wav" -} - -"Demoman.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization02.wav" -} - -"Demoman.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization03.wav" -} - -"Demoman.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization04.wav" -} - -"Demoman.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization05.wav" -} - -"Demoman.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization06.wav" -} - -"Demoman.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NiceShot01.wav" -} - -"Demoman.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NiceShot02.wav" -} - -"Demoman.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NiceShot03.wav" -} - -"Demoman.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_No01.wav" -} - -"Demoman.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_No02.wav" -} - -"Demoman.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_No03.wav" -} - -"Demoman.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath01.wav" -} - -"Demoman.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath02.wav" -} - -"Demoman.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath03.wav" -} - -"Demoman.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath04.wav" -} - -"Demoman.PainCrticialDeath05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath05.wav" -} - -"Demoman.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere01.wav" -} - -"Demoman.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere02.wav" -} - -"Demoman.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere03.wav" -} - -"Demoman.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere04.wav" -} - -"Demoman.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp01.wav" -} - -"Demoman.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp02.wav" -} - -"Demoman.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp03.wav" -} - -"Demoman.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp04.wav" -} - -"Demoman.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp05.wav" -} - -"Demoman.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp06.wav" -} - -"Demoman.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp07.wav" -} - -"Demoman.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization01.wav" -} - -"Demoman.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization02.wav" -} - -"Demoman.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization03.wav" -} - -"Demoman.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization04.wav" -} - -"Demoman.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization05.wav" -} - -"Demoman.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SentryAhead01.wav" -} - -"Demoman.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SentryAhead02.wav" -} - -"Demoman.SentryAhead03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SentryAhead03.wav" -} - -"Demoman.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted-AssistedKill01.wav" -} - -"Demoman.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted-AssistedKill02.wav" -} - -"Demoman.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted01.wav" -} - -"Demoman.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted02.wav" -} - -"Demoman.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted03.wav" -} - -"Demoman.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted04.wav" -} - -"Demoman.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted05.wav" -} - -"Demoman.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted06.wav" -} - -"Demoman.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted07.wav" -} - -"Demoman.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted08.wav" -} - -"Demoman.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted09.wav" -} - -"Demoman.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted10.wav" -} - -"Demoman.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted11.wav" -} - -"Demoman.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted12.wav" -} - -"Demoman.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_StandOnThePoint01.wav" -} - -"Demoman.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_StandOnThePoint02.wav" -} - -"Demoman.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts01.wav" -} - -"Demoman.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts02.wav" -} - -"Demoman.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts03.wav" -} - -"Demoman.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts04.wav" -} - -"Demoman.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts05.wav" -} - -"Demoman.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts06.wav" -} - -"Demoman.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts07.wav" -} - -"Demoman.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts08.wav" -} - -"Demoman.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts09.wav" -} - -"Demoman.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts10.wav" -} - -"Demoman.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts11.wav" -} - -"Demoman.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts12.wav" -} - -"Demoman.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts13.wav" -} - -"Demoman.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts14.wav" -} - -"Demoman.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts15.wav" -} - -"Demoman.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts16.wav" -} - -"Demoman.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Thanks01.wav" -} - -"Demoman.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Thanks02.wav" -} - -"Demoman.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheHeal01.wav" -} - -"Demoman.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheHeal02.wav" -} - -"Demoman.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheHeal03.wav" -} - -"Demoman.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheTeleporter01.wav" -} - -"Demoman.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheTeleporter02.wav" -} - -"Demoman.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Yes01.wav" -} - -"Demoman.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Yes02.wav" -} - -"Demoman.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Yes03.wav" -} - -"Engineer.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ActivateCharge01.wav" -} - -"Engineer.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ActivateCharge02.wav" -} - -"Engineer.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ActivateCharge03.wav" -} - -"Engineer.AutoAttackedBySpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoAttackedBySpy01.wav" -} - -"Engineer.AutoAttackedBySpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoAttackedBySpy02.wav" -} - -"Engineer.AutoAttackedBySpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoAttackedBySpy03.wav" -} - -"Engineer.AutoBuildingDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingDispenser01.wav" -} - -"Engineer.AutoBuildingDispenser02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingDispenser02.wav" -} - -"Engineer.AutoBuildingSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingSentry01.wav" -} - -"Engineer.AutoBuildingSentry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingSentry02.wav" -} - -"Engineer.AutoBuildingTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingTeleporter01.wav" -} - -"Engineer.AutoBuildingTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingTeleporter02.wav" -} - -"Engineer.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedControlPoint01.wav" -} - -"Engineer.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedControlPoint02.wav" -} - -"Engineer.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedControlPoint03.wav" -} - -"Engineer.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedIntelligence01.wav" -} - -"Engineer.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedIntelligence02.wav" -} - -"Engineer.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedIntelligence03.wav" -} - -"Engineer.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDejectedTie01.wav" -} - -"Engineer.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDejectedTie02.wav" -} - -"Engineer.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDejectedTie03.wav" -} - -"Engineer.AutoDestroyedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDestroyedDispenser01.wav" -} - -"Engineer.AutoDestroyedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDestroyedSentry01.wav" -} - -"Engineer.AutoDestroyedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDestroyedTeleporter01.wav" -} - -"Engineer.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoOnFire01.wav" -} - -"Engineer.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoOnFire02.wav" -} - -"Engineer.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoOnFire03.wav" -} - -"Engineer.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry01.wav" -} - -"Engineer.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry02.wav" -} - -"Engineer.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry03.wav" -} - -"Engineer.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry04.wav" -} - -"Engineer.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry05.wav" -} - -"Engineer.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry06.wav" -} - -"Engineer.BattleCry07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry07.wav" -} - -"Engineer.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers01.wav" -} - -"Engineer.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers02.wav" -} - -"Engineer.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers03.wav" -} - -"Engineer.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers04.wav" -} - -"Engineer.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers05.wav" -} - -"Engineer.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers06.wav" -} - -"Engineer.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers07.wav" -} - -"Engineer.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpy01.wav" -} - -"Engineer.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpy02.wav" -} - -"Engineer.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpy03.wav" -} - -"Engineer.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify01.wav" -} - -"Engineer.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify02.wav" -} - -"Engineer.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify03.wav" -} - -"Engineer.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify04.wav" -} - -"Engineer.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify05.wav" -} - -"Engineer.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify06.wav" -} - -"Engineer.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify07.wav" -} - -"Engineer.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify08.wav" -} - -"Engineer.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify09.wav" -} - -"Engineer.CloakedSpyIdentify10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify10.wav" -} - -"Engineer.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Go01.wav" -} - -"Engineer.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Go02.wav" -} - -"Engineer.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Go03.wav" -} - -"Engineer.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_GoodJob01.wav" -} - -"Engineer.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_GoodJob02.wav" -} - -"Engineer.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_GoodJob03.wav" -} - -"Engineer.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadLeft01.wav" -} - -"Engineer.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadLeft02.wav" -} - -"Engineer.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadRight01.wav" -} - -"Engineer.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadRight02.wav" -} - -"Engineer.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadRight03.wav" -} - -"Engineer.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMe01.wav" -} - -"Engineer.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMe02.wav" -} - -"Engineer.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMe03.wav" -} - -"Engineer.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeCapture01.wav" -} - -"Engineer.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeCapture02.wav" -} - -"Engineer.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeCapture03.wav" -} - -"Engineer.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeDefend01.wav" -} - -"Engineer.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeDefend02.wav" -} - -"Engineer.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeDefend03.wav" -} - -"Engineer.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Incoming01.wav" -} - -"Engineer.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Incoming02.wav" -} - -"Engineer.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Incoming03.wav" -} - -"Engineer.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers01.wav" -} - -"Engineer.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers02.wav" -} - -"Engineer.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers03.wav" -} - -"Engineer.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers04.wav" -} - -"Engineer.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil01.wav" -} - -"Engineer.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil02.wav" -} - -"Engineer.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil03.wav" -} - -"Engineer.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil04.wav" -} - -"Engineer.LaughEvil05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil05.wav" -} - -"Engineer.LaughEvil06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil06.wav" -} - -"Engineer.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughHappy01.wav" -} - -"Engineer.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughHappy02.wav" -} - -"Engineer.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughHappy03.wav" -} - -"Engineer.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughLong01.wav" -} - -"Engineer.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort01.wav" -} - -"Engineer.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort02.wav" -} - -"Engineer.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort03.wav" -} - -"Engineer.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort04.wav" -} - -"Engineer.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Medic01.wav" -} - -"Engineer.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Medic02.wav" -} - -"Engineer.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Medic03.wav" -} - -"Engineer.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_MoveUp01.wav" -} - -"Engineer.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedDispenser01.wav" -} - -"Engineer.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedSentry01.wav" -} - -"Engineer.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedTeleporter01.wav" -} - -"Engineer.NeedTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedTeleporter02.wav" -} - -"Engineer.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization01.wav" -} - -"Engineer.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization02.wav" -} - -"Engineer.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization03.wav" -} - -"Engineer.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization04.wav" -} - -"Engineer.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization05.wav" -} - -"Engineer.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization06.wav" -} - -"Engineer.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization07.wav" -} - -"Engineer.NegativeVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization08.wav" -} - -"Engineer.NegativeVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization09.wav" -} - -"Engineer.NegativeVocalization10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization10.wav" -} - -"Engineer.NegativeVocalization11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization11.wav" -} - -"Engineer.NegativeVocalization12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization12.wav" -} - -"Engineer.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NiceShot01.wav" -} - -"Engineer.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NiceShot02.wav" -} - -"Engineer.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NiceShot03.wav" -} - -"Engineer.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_No01.wav" -} - -"Engineer.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_No02.wav" -} - -"Engineer.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_No03.wav" -} - -"Engineer.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath01.wav" -} - -"Engineer.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath02.wav" -} - -"Engineer.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath03.wav" -} - -"Engineer.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath04.wav" -} - -"Engineer.PainCrticialDeath05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath05.wav" -} - -"Engineer.PainCrticialDeath06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath06.wav" -} - -"Engineer.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere01.wav" -} - -"Engineer.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere02.wav" -} - -"Engineer.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere03.wav" -} - -"Engineer.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere04.wav" -} - -"Engineer.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere05.wav" -} - -"Engineer.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere06.wav" -} - -"Engineer.PainSevere07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere07.wav" -} - -"Engineer.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp01.wav" -} - -"Engineer.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp02.wav" -} - -"Engineer.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp03.wav" -} - -"Engineer.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp04.wav" -} - -"Engineer.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp05.wav" -} - -"Engineer.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp06.wav" -} - -"Engineer.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp07.wav" -} - -"Engineer.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp08.wav" -} - -"Engineer.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PositiveVocalization01.wav" -} - -"Engineer.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SentryAhead01.wav" -} - -"Engineer.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SentryAhead02.wav" -} - -"Engineer.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted-AssistedKill01.wav" -} - -"Engineer.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted-AssistedKill02.wav" -} - -"Engineer.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted01.wav" -} - -"Engineer.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted02.wav" -} - -"Engineer.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted03.wav" -} - -"Engineer.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted04.wav" -} - -"Engineer.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted05.wav" -} - -"Engineer.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted06.wav" -} - -"Engineer.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted07.wav" -} - -"Engineer.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted08.wav" -} - -"Engineer.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted09.wav" -} - -"Engineer.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted10.wav" -} - -"Engineer.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted11.wav" -} - -"Engineer.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_StandOnThePoint01.wav" -} - -"Engineer.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_StandOnThePoint02.wav" -} - -"Engineer.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts01.wav" -} - -"Engineer.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts02.wav" -} - -"Engineer.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts03.wav" -} - -"Engineer.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts04.wav" -} - -"Engineer.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts05.wav" -} - -"Engineer.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts06.wav" -} - -"Engineer.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts07.wav" -} - -"Engineer.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts08.wav" -} - -"Engineer.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts09.wav" -} - -"Engineer.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts10.wav" -} - -"Engineer.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts11.wav" -} - -"Engineer.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts12.wav" -} - -"Engineer.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Thanks01.wav" -} - -"Engineer.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheHeal01.wav" -} - -"Engineer.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheHeal02.wav" -} - -"Engineer.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheTeleporter01.wav" -} - -"Engineer.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheTeleporter02.wav" -} - -"Engineer.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Yes01.wav" -} - -"Engineer.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Yes02.wav" -} - -"Engineer.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Yes03.wav" -} - -"Heavy.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge01.wav" -} - -"Heavy.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge02.wav" -} - -"Heavy.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge03.wav" -} - -"Heavy.ActivateCharge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge04.wav" -} - -"Heavy.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedControlPoint01.wav" -} - -"Heavy.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedControlPoint02.wav" -} - -"Heavy.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedControlPoint03.wav" -} - -"Heavy.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedIntelligence01.wav" -} - -"Heavy.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedIntelligence02.wav" -} - -"Heavy.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedIntelligence03.wav" -} - -"Heavy.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoDejectedTie01.wav" -} - -"Heavy.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoDejectedTie02.wav" -} - -"Heavy.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoDejectedTie03.wav" -} - -"Heavy.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire01.wav" -} - -"Heavy.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire02.wav" -} - -"Heavy.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire03.wav" -} - -"Heavy.AutoOnFire04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire04.wav" -} - -"Heavy.AutoOnFire05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire05.wav" -} - -"Heavy.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry01.wav" -} - -"Heavy.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry02.wav" -} - -"Heavy.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry03.wav" -} - -"Heavy.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry04.wav" -} - -"Heavy.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry05.wav" -} - -"Heavy.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry06.wav" -} - -"Heavy.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers01.wav" -} - -"Heavy.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers02.wav" -} - -"Heavy.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers03.wav" -} - -"Heavy.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers04.wav" -} - -"Heavy.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers05.wav" -} - -"Heavy.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers06.wav" -} - -"Heavy.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers07.wav" -} - -"Heavy.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers08.wav" -} - -"Heavy.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy01.wav" -} - -"Heavy.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy02.wav" -} - -"Heavy.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy03.wav" -} - -"Heavy.CloakedSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy04.wav" -} - -"Heavy.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify01.wav" -} - -"Heavy.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify02.wav" -} - -"Heavy.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify03.wav" -} - -"Heavy.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify04.wav" -} - -"Heavy.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify05.wav" -} - -"Heavy.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify06.wav" -} - -"Heavy.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify07.wav" -} - -"Heavy.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify08.wav" -} - -"Heavy.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify09.wav" -} - -"Heavy.Generic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Generic01.wav" -} - -"Heavy.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Go01.wav" -} - -"Heavy.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Go02.wav" -} - -"Heavy.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Go03.wav" -} - -"Heavy.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob01.wav" -} - -"Heavy.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob02.wav" -} - -"Heavy.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob03.wav" -} - -"Heavy.GoodJob04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob04.wav" -} - -"Heavy.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadLeft01.wav" -} - -"Heavy.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadLeft02.wav" -} - -"Heavy.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadLeft03.wav" -} - -"Heavy.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadRight01.wav" -} - -"Heavy.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadRight02.wav" -} - -"Heavy.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadRight03.wav" -} - -"Heavy.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMe01.wav" -} - -"Heavy.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMe02.wav" -} - -"Heavy.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMe03.wav" -} - -"Heavy.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeCapture01.wav" -} - -"Heavy.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeCapture02.wav" -} - -"Heavy.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeCapture03.wav" -} - -"Heavy.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeDefend01.wav" -} - -"Heavy.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeDefend02.wav" -} - -"Heavy.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeDefend03.wav" -} - -"Heavy.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Incoming01.wav" -} - -"Heavy.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Incoming02.wav" -} - -"Heavy.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Incoming03.wav" -} - -"Heavy.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers01.wav" -} - -"Heavy.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers02.wav" -} - -"Heavy.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers03.wav" -} - -"Heavy.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers04.wav" -} - -"Heavy.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers05.wav" -} - -"Heavy.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers06.wav" -} - -"Heavy.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers07.wav" -} - -"Heavy.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers08.wav" -} - -"Heavy.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers09.wav" -} - -"Heavy.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil01.wav" -} - -"Heavy.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil02.wav" -} - -"Heavy.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil03.wav" -} - -"Heavy.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil04.wav" -} - -"Heavy.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy01.wav" -} - -"Heavy.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy02.wav" -} - -"Heavy.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy03.wav" -} - -"Heavy.LaughHappy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy04.wav" -} - -"Heavy.LaughHappy05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy05.wav" -} - -"Heavy.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughLong01.wav" -} - -"Heavy.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughLong02.wav" -} - -"Heavy.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughShort01.wav" -} - -"Heavy.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughShort02.wav" -} - -"Heavy.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughShort03.wav" -} - -"Heavy.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Medic01.wav" -} - -"Heavy.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Medic02.wav" -} - -"Heavy.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Medic03.wav" -} - -"Heavy.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_MoveUp01.wav" -} - -"Heavy.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_MoveUp02.wav" -} - -"Heavy.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_MoveUp03.wav" -} - -"Heavy.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NeedDispenser01.wav" -} - -"Heavy.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NeedSentry01.wav" -} - -"Heavy.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NeedTeleporter01.wav" -} - -"Heavy.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization01.wav" -} - -"Heavy.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization02.wav" -} - -"Heavy.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization03.wav" -} - -"Heavy.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization04.wav" -} - -"Heavy.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization05.wav" -} - -"Heavy.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization06.wav" -} - -"Heavy.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NiceShot01.wav" -} - -"Heavy.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NiceShot02.wav" -} - -"Heavy.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NiceShot03.wav" -} - -"Heavy.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_No01.wav" -} - -"Heavy.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_No02.wav" -} - -"Heavy.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_No03.wav" -} - -"Heavy.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainCrticialDeath01.wav" -} - -"Heavy.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainCrticialDeath02.wav" -} - -"Heavy.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainCrticialDeath03.wav" -} - -"Heavy.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSevere01.wav" -} - -"Heavy.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSevere02.wav" -} - -"Heavy.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSevere03.wav" -} - -"Heavy.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp01.wav" -} - -"Heavy.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp02.wav" -} - -"Heavy.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp03.wav" -} - -"Heavy.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp04.wav" -} - -"Heavy.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp05.wav" -} - -"Heavy.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization01.wav" -} - -"Heavy.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization02.wav" -} - -"Heavy.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization03.wav" -} - -"Heavy.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization04.wav" -} - -"Heavy.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization05.wav" -} - -"Heavy.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SentryAhead01.wav" -} - -"Heavy.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SentryAhead02.wav" -} - -"Heavy.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted-AssistedKill01.wav" -} - -"Heavy.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted01.wav" -} - -"Heavy.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted02.wav" -} - -"Heavy.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted03.wav" -} - -"Heavy.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted04.wav" -} - -"Heavy.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted05.wav" -} - -"Heavy.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted06.wav" -} - -"Heavy.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted07.wav" -} - -"Heavy.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted08.wav" -} - -"Heavy.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted09.wav" -} - -"Heavy.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted10.wav" -} - -"Heavy.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted11.wav" -} - -"Heavy.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint01.wav" -} - -"Heavy.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint02.wav" -} - -"Heavy.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint03.wav" -} - -"Heavy.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint04.wav" -} - -"Heavy.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts01.wav" -} - -"Heavy.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts02.wav" -} - -"Heavy.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts03.wav" -} - -"Heavy.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts04.wav" -} - -"Heavy.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts05.wav" -} - -"Heavy.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts06.wav" -} - -"Heavy.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts07.wav" -} - -"Heavy.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts08.wav" -} - -"Heavy.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts09.wav" -} - -"Heavy.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts10.wav" -} - -"Heavy.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts11.wav" -} - -"Heavy.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts12.wav" -} - -"Heavy.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts13.wav" -} - -"Heavy.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts14.wav" -} - -"Heavy.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts15.wav" -} - -"Heavy.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts16.wav" -} - -"Heavy.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts17.wav" -} - -"Heavy.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts18.wav" -} - -"Heavy.Taunts19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts19.wav" -} - -"Heavy.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Thanks01.wav" -} - -"Heavy.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Thanks02.wav" -} - -"Heavy.Thanks03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Thanks03.wav" -} - -"Heavy.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheHeal01.wav" -} - -"Heavy.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheHeal02.wav" -} - -"Heavy.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheHeal03.wav" -} - -"Heavy.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheTeleporter01.wav" -} - -"Heavy.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheTeleporter02.wav" -} - -"Heavy.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheTeleporter03.wav" -} - -"Heavy.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Yes01.wav" -} - -"Heavy.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Yes02.wav" -} - -"Heavy.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Yes03.wav" -} - -"Invade.EnemyCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_enemycaptured.wav" -} - -"Invade.EnemyDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_enemydropped.wav" -} - -"Invade.EnemyStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_enemystolen.wav" -} - -"Invade.FlagReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamreturned.wav" -} - -"Invade.TeamCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamcaptured.wav" -} - -"Invade.TeamDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamdropped.wav" -} - -"Invade.TeamStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamstolen.wav" -} - -"Medic.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ActivateCharge01.wav" -} - -"Medic.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ActivateCharge02.wav" -} - -"Medic.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ActivateCharge03.wav" -} - -"Medic.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedControlPoint01.wav" -} - -"Medic.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedControlPoint02.wav" -} - -"Medic.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedControlPoint03.wav" -} - -"Medic.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedIntelligence01.wav" -} - -"Medic.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedIntelligence02.wav" -} - -"Medic.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedIntelligence03.wav" -} - -"Medic.AutoChargeReady01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoChargeReady01.wav" -} - -"Medic.AutoChargeReady02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoChargeReady02.wav" -} - -"Medic.AutoChargeReady03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoChargeReady03.wav" -} - -"Medic.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie01.wav" -} - -"Medic.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie02.wav" -} - -"Medic.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie03.wav" -} - -"Medic.AutoDejectedTie04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie04.wav" -} - -"Medic.AutoDejectedTie05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie05.wav" -} - -"Medic.AutoDejectedTie06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie06.wav" -} - -"Medic.AutoDejectedTie07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie07.wav" -} - -"Medic.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire01.wav" -} - -"Medic.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire02.wav" -} - -"Medic.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire03.wav" -} - -"Medic.AutoOnFire04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire04.wav" -} - -"Medic.AutoOnFire05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire05.wav" -} - -"Medic.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry01.wav" -} - -"Medic.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry02.wav" -} - -"Medic.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry03.wav" -} - -"Medic.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry04.wav" -} - -"Medic.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry05.wav" -} - -"Medic.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry06.wav" -} - -"Medic.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers01.wav" -} - -"Medic.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers02.wav" -} - -"Medic.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers03.wav" -} - -"Medic.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers04.wav" -} - -"Medic.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers05.wav" -} - -"Medic.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers06.wav" -} - -"Medic.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpy01.wav" -} - -"Medic.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpy02.wav" -} - -"Medic.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify01.wav" -} - -"Medic.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify02.wav" -} - -"Medic.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify03.wav" -} - -"Medic.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify04.wav" -} - -"Medic.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify05.wav" -} - -"Medic.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify06.wav" -} - -"Medic.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify07.wav" -} - -"Medic.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify08.wav" -} - -"Medic.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify09.wav" -} - -"Medic.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go01.wav" -} - -"Medic.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go02.wav" -} - -"Medic.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go03.wav" -} - -"Medic.Go04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go04.wav" -} - -"Medic.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_GoodJob01.wav" -} - -"Medic.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_GoodJob02.wav" -} - -"Medic.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_GoodJob03.wav" -} - -"Medic.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadLeft01.wav" -} - -"Medic.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadLeft02.wav" -} - -"Medic.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadLeft03.wav" -} - -"Medic.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadRight01.wav" -} - -"Medic.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadRight02.wav" -} - -"Medic.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadRight03.wav" -} - -"Medic.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMe01.wav" -} - -"Medic.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMe02.wav" -} - -"Medic.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMe03.wav" -} - -"Medic.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeCapture01.wav" -} - -"Medic.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeCapture02.wav" -} - -"Medic.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeDefend01.wav" -} - -"Medic.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeDefend02.wav" -} - -"Medic.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeDefend03.wav" -} - -"Medic.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Incoming01.wav" -} - -"Medic.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Incoming02.wav" -} - -"Medic.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Incoming03.wav" -} - -"Medic.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers01.wav" -} - -"Medic.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers02.wav" -} - -"Medic.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers03.wav" -} - -"Medic.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers04.wav" -} - -"Medic.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers05.wav" -} - -"Medic.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers06.wav" -} - -"Medic.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers07.wav" -} - -"Medic.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers08.wav" -} - -"Medic.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers09.wav" -} - -"Medic.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers10.wav" -} - -"Medic.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers11.wav" -} - -"Medic.Jeers12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers12.wav" -} - -"Medic.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil01.wav" -} - -"Medic.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil02.wav" -} - -"Medic.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil03.wav" -} - -"Medic.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil04.wav" -} - -"Medic.LaughEvil05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil05.wav" -} - -"Medic.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughHappy01.wav" -} - -"Medic.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughHappy02.wav" -} - -"Medic.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughHappy03.wav" -} - -"Medic.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughLong01.wav" -} - -"Medic.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughLong02.wav" -} - -"Medic.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughShort01.wav" -} - -"Medic.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughShort02.wav" -} - -"Medic.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughShort03.wav" -} - -"Medic.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Medic01.wav" -} - -"Medic.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Medic02.wav" -} - -"Medic.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Medic03.wav" -} - -"Medic.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_MoveUp01.wav" -} - -"Medic.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_MoveUp02.wav" -} - -"Medic.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NeedDispenser01.wav" -} - -"Medic.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NeedSentry01.wav" -} - -"Medic.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NeedTeleporter01.wav" -} - -"Medic.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization01.wav" -} - -"Medic.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization02.wav" -} - -"Medic.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization03.wav" -} - -"Medic.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization04.wav" -} - -"Medic.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization05.wav" -} - -"Medic.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization06.wav" -} - -"Medic.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization07.wav" -} - -"Medic.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NiceShot01.wav" -} - -"Medic.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NiceShot02.wav" -} - -"Medic.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_No01.wav" -} - -"Medic.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_No02.wav" -} - -"Medic.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_No03.wav" -} - -"Medic.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath01.wav" -} - -"Medic.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath02.wav" -} - -"Medic.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath03.wav" -} - -"Medic.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath04.wav" -} - -"Medic.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere01.wav" -} - -"Medic.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere02.wav" -} - -"Medic.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere03.wav" -} - -"Medic.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere04.wav" -} - -"Medic.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp01.wav" -} - -"Medic.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp02.wav" -} - -"Medic.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp03.wav" -} - -"Medic.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp04.wav" -} - -"Medic.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp05.wav" -} - -"Medic.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp06.wav" -} - -"Medic.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp07.wav" -} - -"Medic.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp08.wav" -} - -"Medic.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization01.wav" -} - -"Medic.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization02.wav" -} - -"Medic.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization03.wav" -} - -"Medic.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization04.wav" -} - -"Medic.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization05.wav" -} - -"Medic.PositiveVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization06.wav" -} - -"Medic.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SentryAhead01.wav" -} - -"Medic.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SentryAhead02.wav" -} - -"Medic.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted-AssistedKill01.wav" -} - -"Medic.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted-AssistedKill02.wav" -} - -"Medic.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted01.wav" -} - -"Medic.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted02.wav" -} - -"Medic.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted03.wav" -} - -"Medic.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted04.wav" -} - -"Medic.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted05.wav" -} - -"Medic.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted06.wav" -} - -"Medic.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted07.wav" -} - -"Medic.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted08.wav" -} - -"Medic.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted09.wav" -} - -"Medic.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted10.wav" -} - -"Medic.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted11.wav" -} - -"Medic.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted12.wav" -} - -"Medic.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint01.wav" -} - -"Medic.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint02.wav" -} - -"Medic.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint03.wav" -} - -"Medic.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint04.wav" -} - -"Medic.StandOnThePoint05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint05.wav" -} - -"Medic.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/taunts/medic_Taunts01.wav" -} - -"Medic.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts02.wav" -} - -"Medic.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts03.wav" -} - -"Medic.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts04.wav" -} - -"Medic.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts05.wav" -} - -"Medic.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts06.wav" -} - -"Medic.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts07.wav" -} - -"Medic.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts08.wav" -} - -"Medic.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts09.wav" -} - -"Medic.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts10.wav" -} - -"Medic.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts11.wav" -} - -"Medic.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts12.wav" -} - -"Medic.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts13.wav" -} - -"Medic.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts14.wav" -} - -"Medic.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts15.wav" -} - -"Medic.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Thanks01.wav" -} - -"Medic.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Thanks02.wav" -} - -"Medic.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheHeal01.wav" -} - -"Medic.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheHeal02.wav" -} - -"Medic.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheTeleporter01.wav" -} - -"Medic.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheTeleporter02.wav" -} - -"Medic.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheTeleporter03.wav" -} - -"Medic.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Yes01.wav" -} - -"Medic.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Yes02.wav" -} - -"Medic.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Yes03.wav" -} - -"Player.Burp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp02.wav" -} - -"Player.Burp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp03.wav" -} - -"Player.Burp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp04.wav" -} - -"Player.Burp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp05.wav" -} - -"Player.Burp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp06.wav" -} - -"Player.Burp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp07.wav" -} - -"Player.Puff" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/puff.wav" -} - -"Pyro.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_ActivateCharge01.wav" -} - -"Pyro.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoCappedControlPoint01.wav" -} - -"Pyro.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoCappedIntelligence01.wav" -} - -"Pyro.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoDejectedTie01.wav" -} - -"Pyro.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoOnFire01.wav" -} - -"Pyro.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoOnFire02.wav" -} - -"Pyro.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_BattleCry01.wav" -} - -"Pyro.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_BattleCry02.wav" -} - -"Pyro.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Cheers01.wav" -} - -"Pyro.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_CloakedSpy01.wav" -} - -"Pyro.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_CloakedSpyIdentify01.wav" -} - -"Pyro.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Go01.wav" -} - -"Pyro.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_GoodJob01.wav" -} - -"Pyro.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HeadLeft01.wav" -} - -"Pyro.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HeadRight01.wav" -} - -"Pyro.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HelpMe01.wav" -} - -"Pyro.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HelpMeCapture01.wav" -} - -"Pyro.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HelpMeDefend01.wav" -} - -"Pyro.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Incoming01.wav" -} - -"Pyro.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Jeers01.wav" -} - -"Pyro.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Jeers02.wav" -} - -"Pyro.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil01.wav" -} - -"Pyro.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil02.wav" -} - -"Pyro.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil03.wav" -} - -"Pyro.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil04.wav" -} - -"Pyro.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughHappy01.wav" -} - -"Pyro.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughLong01.wav" -} - -"Pyro.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughShort01.wav" -} - -"Pyro.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Medic01.wav" -} - -"Pyro.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_MoveUp01.wav" -} - -"Pyro.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NeedDispenser01.wav" -} - -"Pyro.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NeedSentry01.wav" -} - -"Pyro.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NeedTeleporter01.wav" -} - -"Pyro.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NegativeVocalization01.wav" -} - -"Pyro.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NiceShot01.wav" -} - -"Pyro.No01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_No01.wav" -} - -"Pyro.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainCrticialDeath01.wav" -} - -"Pyro.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainCrticialDeath02.wav" -} - -"Pyro.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainCrticialDeath03.wav" -} - -"Pyro.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere01.wav" -} - -"Pyro.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere02.wav" -} - -"Pyro.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere03.wav" -} - -"Pyro.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere04.wav" -} - -"Pyro.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere05.wav" -} - -"Pyro.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere06.wav" -} - -"Pyro.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp01.wav" -} - -"Pyro.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp02.wav" -} - -"Pyro.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp03.wav" -} - -"Pyro.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp04.wav" -} - -"Pyro.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp05.wav" -} - -"Pyro.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp06.wav" -} - -"Pyro.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp07.wav" -} - -"Pyro.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PositiveVocalization01.wav" -} - -"Pyro.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_SentryAhead01.wav" -} - -"Pyro.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_SpecialCompleted-AssistedKill01.wav" -} - -"Pyro.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_SpecialCompleted01.wav" -} - -"Pyro.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_StandOnThePoint01.wav" -} - -"Pyro.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts01.wav" -} - -"Pyro.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts02.wav" -} - -"Pyro.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts03.wav" -} - -"Pyro.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts04.wav" -} - -"Pyro.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Thanks01.wav" -} - -"Pyro.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_ThanksForTheHeal01.wav" -} - -"Pyro.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_ThanksForTheTeleporter01.wav" -} - -"Pyro.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Yes01.wav" -} - -"Scout.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ActivateCharge01.wav" -} - -"Scout.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ActivateCharge02.wav" -} - -"Scout.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ActivateCharge03.wav" -} - -"Scout.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint01.wav" -} - -"Scout.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint02.wav" -} - -"Scout.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint03.wav" -} - -"Scout.AutoCappedControlPoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint04.wav" -} - -"Scout.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedIntelligence01.wav" -} - -"Scout.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedIntelligence02.wav" -} - -"Scout.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedIntelligence03.wav" -} - -"Scout.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie01.wav" -} - -"Scout.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie02.wav" -} - -"Scout.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie03.wav" -} - -"Scout.AutoDejectedTie04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie04.wav" -} - -"Scout.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoOnFire01.wav" -} - -"Scout.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoOnFire02.wav" -} - -"Scout.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry01.wav" -} - -"Scout.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry02.wav" -} - -"Scout.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry03.wav" -} - -"Scout.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry04.wav" -} - -"Scout.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry05.wav" -} - -"Scout.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers01.wav" -} - -"Scout.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers02.wav" -} - -"Scout.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers03.wav" -} - -"Scout.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers04.wav" -} - -"Scout.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers05.wav" -} - -"Scout.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers06.wav" -} - -"Scout.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy01.wav" -} - -"Scout.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy02.wav" -} - -"Scout.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy03.wav" -} - -"Scout.CloakedSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy04.wav" -} - -"Scout.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify01.wav" -} - -"Scout.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify02.wav" -} - -"Scout.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify03.wav" -} - -"Scout.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify04.wav" -} - -"Scout.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify05.wav" -} - -"Scout.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify06.wav" -} - -"Scout.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify07.wav" -} - -"Scout.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify08.wav" -} - -"Scout.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify09.wav" -} - -"Scout.Generic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Generic01.wav" -} - -"Scout.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go01.wav" -} - -"Scout.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go02.wav" -} - -"Scout.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go03.wav" -} - -"Scout.Go04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go04.wav" -} - -"Scout.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob01.wav" -} - -"Scout.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob02.wav" -} - -"Scout.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob03.wav" -} - -"Scout.GoodJob04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob04.wav" -} - -"Scout.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadLeft01.wav" -} - -"Scout.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadLeft02.wav" -} - -"Scout.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadLeft03.wav" -} - -"Scout.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadRight01.wav" -} - -"Scout.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadRight02.wav" -} - -"Scout.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadRight03.wav" -} - -"Scout.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe01.wav" -} - -"Scout.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe02.wav" -} - -"Scout.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe03.wav" -} - -"Scout.HelpMe04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe04.wav" -} - -"Scout.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeCapture01.wav" -} - -"Scout.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeCapture02.wav" -} - -"Scout.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeCapture03.wav" -} - -"Scout.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeDefend01.wav" -} - -"Scout.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeDefend02.wav" -} - -"Scout.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeDefend03.wav" -} - -"Scout.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Incoming01.wav" -} - -"Scout.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Incoming02.wav" -} - -"Scout.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Incoming03.wav" -} - -"Scout.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers02.wav" -} - -"Scout.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers03.wav" -} - -"Scout.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers04.wav" -} - -"Scout.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers05.wav" -} - -"Scout.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers06.wav" -} - -"Scout.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers07.wav" -} - -"Scout.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers08.wav" -} - -"Scout.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers09.wav" -} - -"Scout.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers10.wav" -} - -"Scout.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers11.wav" -} - -"Scout.Jeers12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers12.wav" -} - -"Scout.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughEvil01.wav" -} - -"Scout.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughEvil02.wav" -} - -"Scout.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughEvil03.wav" -} - -"Scout.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy01.wav" -} - -"Scout.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy02.wav" -} - -"Scout.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy03.wav" -} - -"Scout.LaughHappy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy04.wav" -} - -"Scout.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughLong01.wav" -} - -"Scout.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughLong02.wav" -} - -"Scout.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort01.wav" -} - -"Scout.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort02.wav" -} - -"Scout.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort03.wav" -} - -"Scout.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort04.wav" -} - -"Scout.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort05.wav" -} - -"Scout.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Medic01.wav" -} - -"Scout.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Medic02.wav" -} - -"Scout.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Medic03.wav" -} - -"Scout.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_MoveUp01.wav" -} - -"Scout.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_MoveUp02.wav" -} - -"Scout.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_MoveUp03.wav" -} - -"Scout.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NeedDispenser01.wav" -} - -"Scout.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NeedSentry01.wav" -} - -"Scout.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NeedTeleporter01.wav" -} - -"Scout.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization01.wav" -} - -"Scout.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization02.wav" -} - -"Scout.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization03.wav" -} - -"Scout.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "620.000" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization04.wav" -} - -"Scout.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization05.wav" -} - -"Scout.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NiceShot01.wav" -} - -"Scout.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NiceShot02.wav" -} - -"Scout.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NiceShot03.wav" -} - -"Scout.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_No01.wav" -} - -"Scout.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_No02.wav" -} - -"Scout.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_No03.wav" -} - -"Scout.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainCrticialDeath01.wav" -} - -"Scout.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainCrticialDeath02.wav" -} - -"Scout.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainCrticialDeath03.wav" -} - -"Scout.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere01.wav" -} - -"Scout.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere02.wav" -} - -"Scout.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere03.wav" -} - -"Scout.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere04.wav" -} - -"Scout.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere05.wav" -} - -"Scout.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere06.wav" -} - -"Scout.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp01.wav" -} - -"Scout.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp02.wav" -} - -"Scout.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp03.wav" -} - -"Scout.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp04.wav" -} - -"Scout.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp05.wav" -} - -"Scout.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp06.wav" -} - -"Scout.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp07.wav" -} - -"Scout.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp08.wav" -} - -"Scout.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization01.wav" -} - -"Scout.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization02.wav" -} - -"Scout.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization03.wav" -} - -"Scout.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization04.wav" -} - -"Scout.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization05.wav" -} - -"Scout.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SentryAhead01.wav" -} - -"Scout.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SentryAhead02.wav" -} - -"Scout.SentryAhead03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SentryAhead03.wav" -} - -"Scout.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted-AssistedKill01.wav" -} - -"Scout.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted-AssistedKill02.wav" -} - -"Scout.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted01.wav" -} - -"Scout.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted02.wav" -} - -"Scout.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted03.wav" -} - -"Scout.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted04.wav" -} - -"Scout.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted05.wav" -} - -"Scout.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted06.wav" -} - -"Scout.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted07.wav" -} - -"Scout.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted09.wav" -} - -"Scout.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted10.wav" -} - -"Scout.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted11.wav" -} - -"Scout.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted12.wav" -} - -"Scout.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint01.wav" -} - -"Scout.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint02.wav" -} - -"Scout.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint03.wav" -} - -"Scout.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint04.wav" -} - -"Scout.StandOnThePoint05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint05.wav" -} - -"Scout.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts01.wav" -} - -"Scout.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts02.wav" -} - -"Scout.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts03.wav" -} - -"Scout.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts04.wav" -} - -"Scout.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts05.wav" -} - -"Scout.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts06.wav" -} - -"Scout.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts07.wav" -} - -"Scout.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts08.wav" -} - -"Scout.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts09.wav" -} - -"Scout.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts10.wav" -} - -"Scout.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts11.wav" -} - -"Scout.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts12.wav" -} - -"Scout.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts13.wav" -} - -"Scout.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts14.wav" -} - -"Scout.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts15.wav" -} - -"Scout.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts16.wav" -} - -"Scout.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts17.wav" -} - -"Scout.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts18.wav" -} - -"Scout.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Thanks01.wav" -} - -"Scout.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Thanks02.wav" -} - -"Scout.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheHeal01.wav" -} - -"Scout.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheHeal02.wav" -} - -"Scout.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheHeal03.wav" -} - -"Scout.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheTeleporter01.wav" -} - -"Scout.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheTeleporter02.wav" -} - -"Scout.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheTeleporter03.wav" -} - -"Scout.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Yes01.wav" -} - -"Scout.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Yes02.wav" -} - -"Scout.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Yes03.wav" -} - -"Sniper.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge01.wav" -} - -"Sniper.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge02.wav" -} - -"Sniper.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge03.wav" -} - -"Sniper.ActivateCharge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge04.wav" -} - -"Sniper.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedControlPoint01.wav" -} - -"Sniper.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedControlPoint02.wav" -} - -"Sniper.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedControlPoint03.wav" -} - -"Sniper.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence01.wav" -} - -"Sniper.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence02.wav" -} - -"Sniper.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence03.wav" -} - -"Sniper.AutoCappedIntelligence04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence04.wav" -} - -"Sniper.AutoCappedIntelligence05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence05.wav" -} - -"Sniper.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoDejectedTie01.wav" -} - -"Sniper.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoDejectedTie02.wav" -} - -"Sniper.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoDejectedTie03.wav" -} - -"Sniper.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoOnFire01.wav" -} - -"Sniper.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoOnFire02.wav" -} - -"Sniper.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoOnFire03.wav" -} - -"Sniper.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry01.wav" -} - -"Sniper.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry02.wav" -} - -"Sniper.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry03.wav" -} - -"Sniper.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry04.wav" -} - -"Sniper.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry05.wav" -} - -"Sniper.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry06.wav" -} - -"Sniper.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers01.wav" -} - -"Sniper.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers02.wav" -} - -"Sniper.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers03.wav" -} - -"Sniper.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers04.wav" -} - -"Sniper.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers05.wav" -} - -"Sniper.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers06.wav" -} - -"Sniper.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers07.wav" -} - -"Sniper.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers08.wav" -} - -"Sniper.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpy01.wav" -} - -"Sniper.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpy02.wav" -} - -"Sniper.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpy03.wav" -} - -"Sniper.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify01.wav" -} - -"Sniper.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify02.wav" -} - -"Sniper.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify03.wav" -} - -"Sniper.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify04.wav" -} - -"Sniper.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify05.wav" -} - -"Sniper.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify06.wav" -} - -"Sniper.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify07.wav" -} - -"Sniper.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify08.wav" -} - -"Sniper.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify09.wav" -} - -"Sniper.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Go01.wav" -} - -"Sniper.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Go02.wav" -} - -"Sniper.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Go03.wav" -} - -"Sniper.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_GoodJob01.wav" -} - -"Sniper.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_GoodJob02.wav" -} - -"Sniper.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_GoodJob03.wav" -} - -"Sniper.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadLeft01.wav" -} - -"Sniper.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadLeft02.wav" -} - -"Sniper.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadLeft03.wav" -} - -"Sniper.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadRight01.wav" -} - -"Sniper.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadRight02.wav" -} - -"Sniper.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadRight03.wav" -} - -"Sniper.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMe01.wav" -} - -"Sniper.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMe02.wav" -} - -"Sniper.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMe03.wav" -} - -"Sniper.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeCapture01.wav" -} - -"Sniper.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeCapture02.wav" -} - -"Sniper.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeCapture03.wav" -} - -"Sniper.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeDefend01.wav" -} - -"Sniper.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeDefend02.wav" -} - -"Sniper.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeDefend03.wav" -} - -"Sniper.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming01.wav" -} - -"Sniper.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming02.wav" -} - -"Sniper.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming03.wav" -} - -"Sniper.Incoming04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming04.wav" -} - -"Sniper.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers01.wav" -} - -"Sniper.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers02.wav" -} - -"Sniper.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers03.wav" -} - -"Sniper.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers04.wav" -} - -"Sniper.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers05.wav" -} - -"Sniper.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers06.wav" -} - -"Sniper.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers07.wav" -} - -"Sniper.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers08.wav" -} - -"Sniper.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughEvil01.wav" -} - -"Sniper.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughEvil02.wav" -} - -"Sniper.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughEvil03.wav" -} - -"Sniper.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughHappy01.wav" -} - -"Sniper.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughHappy02.wav" -} - -"Sniper.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughLong01.wav" -} - -"Sniper.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughLong02.wav" -} - -"Sniper.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort01.wav" -} - -"Sniper.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort02.wav" -} - -"Sniper.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort03.wav" -} - -"Sniper.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort04.wav" -} - -"Sniper.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort05.wav" -} - -"Sniper.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Medic01.wav" -} - -"Sniper.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Medic02.wav" -} - -"Sniper.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_MoveUp01.wav" -} - -"Sniper.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_MoveUp02.wav" -} - -"Sniper.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NeedDispenser01.wav" -} - -"Sniper.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NeedSentry01.wav" -} - -"Sniper.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NeedTeleporter01.wav" -} - -"Sniper.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization01.wav" -} - -"Sniper.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization02.wav" -} - -"Sniper.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization03.wav" -} - -"Sniper.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization04.wav" -} - -"Sniper.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization05.wav" -} - -"Sniper.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization06.wav" -} - -"Sniper.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization07.wav" -} - -"Sniper.NegativeVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization08.wav" -} - -"Sniper.NegativeVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization09.wav" -} - -"Sniper.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NiceShot01.wav" -} - -"Sniper.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NiceShot02.wav" -} - -"Sniper.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NiceShot03.wav" -} - -"Sniper.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No01.wav" -} - -"Sniper.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No02.wav" -} - -"Sniper.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No03.wav" -} - -"Sniper.No04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No04.wav" -} - -"Sniper.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath01.wav" -} - -"Sniper.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath02.wav" -} - -"Sniper.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath03.wav" -} - -"Sniper.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath04.wav" -} - -"Sniper.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere01.wav" -} - -"Sniper.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere02.wav" -} - -"Sniper.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere03.wav" -} - -"Sniper.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere04.wav" -} - -"Sniper.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp01.wav" -} - -"Sniper.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp02.wav" -} - -"Sniper.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp03.wav" -} - -"Sniper.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp04.wav" -} - -"Sniper.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization01.wav" -} - -"Sniper.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization02.wav" -} - -"Sniper.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization03.wav" -} - -"Sniper.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization04.wav" -} - -"Sniper.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization05.wav" -} - -"Sniper.PositiveVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization06.wav" -} - -"Sniper.PositiveVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization07.wav" -} - -"Sniper.PositiveVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization08.wav" -} - -"Sniper.PositiveVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization09.wav" -} - -"Sniper.PositiveVocalization10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization10.wav" -} - -"Sniper.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SentryAhead01.wav" -} - -"Sniper.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted-AssistedKill01.wav" -} - -"Sniper.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted-AssistedKill02.wav" -} - -"Sniper.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted01.wav" -} - -"Sniper.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted02.wav" -} - -"Sniper.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted03.wav" -} - -"Sniper.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted04.wav" -} - -"Sniper.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted05.wav" -} - -"Sniper.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted06.wav" -} - -"Sniper.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted07.wav" -} - -"Sniper.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted08.wav" -} - -"Sniper.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted09.wav" -} - -"Sniper.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted10.wav" -} - -"Sniper.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted11.wav" -} - -"Sniper.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted12.wav" -} - -"Sniper.SpecialCompleted13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted13.wav" -} - -"Sniper.SpecialCompleted14" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted14.wav" -} - -"Sniper.SpecialCompleted15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted15.wav" -} - -"Sniper.SpecialCompleted16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted16.wav" -} - -"Sniper.SpecialCompleted17" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted17.wav" -} - -"Sniper.SpecialCompleted18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted18.wav" -} - -"Sniper.SpecialCompleted19" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted19.wav" -} - -"Sniper.SpecialCompleted20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted20.wav" -} - -"Sniper.SpecialCompleted21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted21.wav" -} - -"Sniper.SpecialCompleted22" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted22.wav" -} - -"Sniper.SpecialCompleted23" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted23.wav" -} - -"Sniper.SpecialCompleted24" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted24.wav" -} - -"Sniper.SpecialCompleted25" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted25.wav" -} - -"Sniper.SpecialCompleted26" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted26.wav" -} - -"Sniper.SpecialCompleted27" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted27.wav" -} - -"Sniper.SpecialCompleted28" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted28.wav" -} - -"Sniper.SpecialCompleted29" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted29.wav" -} - -"Sniper.SpecialCompleted30" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted30.wav" -} - -"Sniper.SpecialCompleted31" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted31.wav" -} - -"Sniper.SpecialCompleted32" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted32.wav" -} - -"Sniper.SpecialCompleted33" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted33.wav" -} - -"Sniper.SpecialCompleted34" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted34.wav" -} - -"Sniper.SpecialCompleted35" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted35.wav" -} - -"Sniper.SpecialCompleted36" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted36.wav" -} - -"Sniper.SpecialCompleted37" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted37.wav" -} - -"Sniper.SpecialCompleted38" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted38.wav" -} - -"Sniper.SpecialCompleted39" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted39.wav" -} - -"Sniper.SpecialCompleted40" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted40.wav" -} - -"Sniper.SpecialCompleted41" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted41.wav" -} - -"Sniper.SpecialCompleted42" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted42.wav" -} - -"Sniper.SpecialCompleted43" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted43.wav" -} - -"Sniper.SpecialCompleted44" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted44.wav" -} - -"Sniper.SpecialCompleted45" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted45.wav" -} - -"Sniper.SpecialCompleted46" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted46.wav" -} - -"Sniper.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_StandOnThePoint01.wav" -} - -"Sniper.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_StandOnThePoint02.wav" -} - -"Sniper.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts01.wav" -} - -"Sniper.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts02.wav" -} - -"Sniper.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts03.wav" -} - -"Sniper.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts04.wav" -} - -"Sniper.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts05.wav" -} - -"Sniper.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts06.wav" -} - -"Sniper.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts07.wav" -} - -"Sniper.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts08.wav" -} - -"Sniper.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts09.wav" -} - -"Sniper.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts10.wav" -} - -"Sniper.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts11.wav" -} - -"Sniper.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts12.wav" -} - -"Sniper.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts13.wav" -} - -"Sniper.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts14.wav" -} - -"Sniper.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts15.wav" -} - -"Sniper.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts16.wav" -} - -"Sniper.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts17.wav" -} - -"Sniper.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts18.wav" -} - -"Sniper.Taunts19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts19.wav" -} - -"Sniper.Taunts20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts20.wav" -} - -"Sniper.Taunts21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts21.wav" -} - -"Sniper.Taunts22" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts22.wav" -} - -"Sniper.Taunts23" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts23.wav" -} - -"Sniper.Taunts24" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts24.wav" -} - -"Sniper.Taunts25" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts25.wav" -} - -"Sniper.Taunts26" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts26.wav" -} - -"Sniper.Taunts27" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts27.wav" -} - -"Sniper.Taunts28" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts28.wav" -} - -"Sniper.Taunts29" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts29.wav" -} - -"Sniper.Taunts30" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts30.wav" -} - -"Sniper.Taunts31" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts31.wav" -} - -"Sniper.Taunts32" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts32.wav" -} - -"Sniper.Taunts33" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts33.wav" -} - -"Sniper.Taunts34" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts34.wav" -} - -"Sniper.Taunts35" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts35.wav" -} - -"Sniper.Taunts36" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts36.wav" -} - -"Sniper.Taunts37" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts37.wav" -} - -"Sniper.Taunts38" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts38.wav" -} - -"Sniper.Taunts39" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts39.wav" -} - -"Sniper.Taunts40" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts40.wav" -} - -"Sniper.Taunts41" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts41.wav" -} - -"Sniper.Taunts42" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts42.wav" -} - -"Sniper.Taunts43" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts43.wav" -} - -"Sniper.Taunts44" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts44.wav" -} - -"Sniper.Taunts45" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts45.wav" -} - -"Sniper.Taunts46" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts46.wav" -} - -"Sniper.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Thanks01.wav" -} - -"Sniper.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Thanks02.wav" -} - -"Sniper.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheHeal01.wav" -} - -"Sniper.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheHeal02.wav" -} - -"Sniper.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheHeal03.wav" -} - -"Sniper.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheTeleporter01.wav" -} - -"Sniper.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheTeleporter02.wav" -} - -"Sniper.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheTeleporter03.wav" -} - -"Sniper.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Yes01.wav" -} - -"Sniper.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Yes02.wav" -} - -"Sniper.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Yes03.wav" -} - -"Soldier.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ActivateCharge01.wav" -} - -"Soldier.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ActivateCharge02.wav" -} - -"Soldier.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ActivateCharge03.wav" -} - -"Soldier.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedControlPoint01.wav" -} - -"Soldier.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedControlPoint02.wav" -} - -"Soldier.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedControlPoint03.wav" -} - -"Soldier.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedIntelligence01.wav" -} - -"Soldier.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedIntelligence02.wav" -} - -"Soldier.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedIntelligence03.wav" -} - -"Soldier.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoDejectedTie01.wav" -} - -"Soldier.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoDejectedTie02.wav" -} - -"Soldier.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoDejectedTie03.wav" -} - -"Soldier.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoOnFire01.wav" -} - -"Soldier.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoOnFire02.wav" -} - -"Soldier.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoOnFire03.wav" -} - -"Soldier.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry01.wav" -} - -"Soldier.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry02.wav" -} - -"Soldier.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry03.wav" -} - -"Soldier.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry04.wav" -} - -"Soldier.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry05.wav" -} - -"Soldier.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry06.wav" -} - -"Soldier.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers01.wav" -} - -"Soldier.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers02.wav" -} - -"Soldier.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers03.wav" -} - -"Soldier.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers04.wav" -} - -"Soldier.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers05.wav" -} - -"Soldier.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers06.wav" -} - -"Soldier.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpy01.wav" -} - -"Soldier.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpy02.wav" -} - -"Soldier.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpy03.wav" -} - -"Soldier.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify01.wav" -} - -"Soldier.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify02.wav" -} - -"Soldier.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify03.wav" -} - -"Soldier.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify04.wav" -} - -"Soldier.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify05.wav" -} - -"Soldier.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify06.wav" -} - -"Soldier.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify07.wav" -} - -"Soldier.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify08.wav" -} - -"Soldier.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify09.wav" -} - -"Soldier.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Go01.wav" -} - -"Soldier.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Go02.wav" -} - -"Soldier.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Go03.wav" -} - -"Soldier.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_GoodJob01.wav" -} - -"Soldier.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_GoodJob02.wav" -} - -"Soldier.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_GoodJob03.wav" -} - -"Soldier.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadLeft01.wav" -} - -"Soldier.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadLeft02.wav" -} - -"Soldier.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadLeft03.wav" -} - -"Soldier.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadRight01.wav" -} - -"Soldier.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadRight02.wav" -} - -"Soldier.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadRight03.wav" -} - -"Soldier.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMe01.wav" -} - -"Soldier.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMe02.wav" -} - -"Soldier.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMe03.wav" -} - -"Soldier.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeCapture01.wav" -} - -"Soldier.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeCapture02.wav" -} - -"Soldier.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeCapture03.wav" -} - -"Soldier.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend01.wav" -} - -"Soldier.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend02.wav" -} - -"Soldier.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend03.wav" -} - -"Soldier.HelpMeDefend04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend04.wav" -} - -"Soldier.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Incoming01.wav" -} - -"Soldier.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers01.wav" -} - -"Soldier.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers02.wav" -} - -"Soldier.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers03.wav" -} - -"Soldier.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers04.wav" -} - -"Soldier.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers05.wav" -} - -"Soldier.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers06.wav" -} - -"Soldier.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers07.wav" -} - -"Soldier.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers08.wav" -} - -"Soldier.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers09.wav" -} - -"Soldier.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers10.wav" -} - -"Soldier.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers11.wav" -} - -"Soldier.Jeers12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers12.wav" -} - -"Soldier.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughEvil01.wav" -} - -"Soldier.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughEvil02.wav" -} - -"Soldier.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughEvil03.wav" -} - -"Soldier.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughHappy01.wav" -} - -"Soldier.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughHappy02.wav" -} - -"Soldier.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughHappy03.wav" -} - -"Soldier.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughLong01.wav" -} - -"Soldier.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughLong02.wav" -} - -"Soldier.LaughLong03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughLong03.wav" -} - -"Soldier.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort01.wav" -} - -"Soldier.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort02.wav" -} - -"Soldier.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort03.wav" -} - -"Soldier.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort04.wav" -} - -"Soldier.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Medic01.wav" -} - -"Soldier.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Medic02.wav" -} - -"Soldier.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Medic03.wav" -} - -"Soldier.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_MoveUp01.wav" -} - -"Soldier.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_MoveUp02.wav" -} - -"Soldier.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_MoveUp03.wav" -} - -"Soldier.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NeedDispenser01.wav" -} - -"Soldier.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NeedSentry01.wav" -} - -"Soldier.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NeedTeleporter01.wav" -} - -"Soldier.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization01.wav" -} - -"Soldier.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization02.wav" -} - -"Soldier.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization03.wav" -} - -"Soldier.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization04.wav" -} - -"Soldier.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization05.wav" -} - -"Soldier.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization06.wav" -} - -"Soldier.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NiceShot01.wav" -} - -"Soldier.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NiceShot02.wav" -} - -"Soldier.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NiceShot03.wav" -} - -"Soldier.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_No01.wav" -} - -"Soldier.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_No02.wav" -} - -"Soldier.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_No03.wav" -} - -"Soldier.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath01.wav" -} - -"Soldier.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath02.wav" -} - -"Soldier.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath03.wav" -} - -"Soldier.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath04.wav" -} - -"Soldier.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere01.wav" -} - -"Soldier.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere02.wav" -} - -"Soldier.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere03.wav" -} - -"Soldier.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere04.wav" -} - -"Soldier.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere05.wav" -} - -"Soldier.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere06.wav" -} - -"Soldier.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp01.wav" -} - -"Soldier.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp02.wav" -} - -"Soldier.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp03.wav" -} - -"Soldier.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp04.wav" -} - -"Soldier.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp05.wav" -} - -"Soldier.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp06.wav" -} - -"Soldier.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp07.wav" -} - -"Soldier.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp08.wav" -} - -"Soldier.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization01.wav" -} - -"Soldier.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization02.wav" -} - -"Soldier.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization03.wav" -} - -"Soldier.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization04.wav" -} - -"Soldier.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization05.wav" -} - -"Soldier.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SentryAhead01.wav" -} - -"Soldier.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SentryAhead02.wav" -} - -"Soldier.SentryAhead03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SentryAhead03.wav" -} - -"Soldier.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted-AssistedKill01.wav" -} - -"Soldier.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted01.wav" -} - -"Soldier.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted02.wav" -} - -"Soldier.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted03.wav" -} - -"Soldier.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted04.wav" -} - -"Soldier.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted05.wav" -} - -"Soldier.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_StandOnThePoint01.wav" -} - -"Soldier.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_StandOnThePoint02.wav" -} - -"Soldier.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_StandOnThePoint03.wav" -} - -"Soldier.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts01.wav" -} - -"Soldier.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts02.wav" -} - -"Soldier.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts03.wav" -} - -"Soldier.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts04.wav" -} - -"Soldier.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts05.wav" -} - -"Soldier.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts06.wav" -} - -"Soldier.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts07.wav" -} - -"Soldier.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts08.wav" -} - -"Soldier.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts09.wav" -} - -"Soldier.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts10.wav" -} - -"Soldier.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts11.wav" -} - -"Soldier.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts12.wav" -} - -"Soldier.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts13.wav" -} - -"Soldier.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts14.wav" -} - -"Soldier.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts15.wav" -} - -"Soldier.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts16.wav" -} - -"Soldier.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts17.wav" -} - -"Soldier.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts18.wav" -} - -"Soldier.Taunts19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts19.wav" -} - -"Soldier.Taunts20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts20.wav" -} - -"Soldier.Taunts21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts21.wav" -} - -"Soldier.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Thanks01.wav" -} - -"Soldier.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Thanks02.wav" -} - -"Soldier.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheHeal01.wav" -} - -"Soldier.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheHeal02.wav" -} - -"Soldier.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheHeal03.wav" -} - -"Soldier.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheTeleporter01.wav" -} - -"Soldier.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheTeleporter02.wav" -} - -"Soldier.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheTeleporter03.wav" -} - -"Soldier.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes01.wav" -} - -"Soldier.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes02.wav" -} - -"Soldier.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes03.wav" -} - -"Soldier.Yes04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes04.wav" -} - -"Spy.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ActivateCharge01.wav" -} - -"Spy.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ActivateCharge02.wav" -} - -"Spy.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ActivateCharge03.wav" -} - -"Spy.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedControlPoint01.wav" -} - -"Spy.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedControlPoint02.wav" -} - -"Spy.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedControlPoint03.wav" -} - -"Spy.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedIntelligence01.wav" -} - -"Spy.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedIntelligence02.wav" -} - -"Spy.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedIntelligence03.wav" -} - -"Spy.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoDejectedTie01.wav" -} - -"Spy.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoDejectedTie02.wav" -} - -"Spy.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoDejectedTie03.wav" -} - -"Spy.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoOnFire01.wav" -} - -"Spy.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoOnFire02.wav" -} - -"Spy.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoOnFire03.wav" -} - -"Spy.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry01.wav" -} - -"Spy.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry02.wav" -} - -"Spy.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry03.wav" -} - -"Spy.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry04.wav" -} - -"Spy.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers01.wav" -} - -"Spy.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers02.wav" -} - -"Spy.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers03.wav" -} - -"Spy.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers04.wav" -} - -"Spy.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers05.wav" -} - -"Spy.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers06.wav" -} - -"Spy.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers07.wav" -} - -"Spy.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers08.wav" -} - -"Spy.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy01.wav" -} - -"Spy.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy02.wav" -} - -"Spy.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy03.wav" -} - -"Spy.CloakedSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy04.wav" -} - -"Spy.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify01.wav" -} - -"Spy.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify02.wav" -} - -"Spy.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify03.wav" -} - -"Spy.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify04.wav" -} - -"Spy.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify05.wav" -} - -"Spy.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify06.wav" -} - -"Spy.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify07.wav" -} - -"Spy.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify08.wav" -} - -"Spy.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify09.wav" -} - -"Spy.CloakedSpyIdentify10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify10.wav" -} - -"Spy.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Go01.wav" -} - -"Spy.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Go02.wav" -} - -"Spy.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Go03.wav" -} - -"Spy.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_GoodJob01.wav" -} - -"Spy.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_GoodJob02.wav" -} - -"Spy.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_GoodJob03.wav" -} - -"Spy.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadLeft01.wav" -} - -"Spy.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadLeft02.wav" -} - -"Spy.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadLeft03.wav" -} - -"Spy.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadRight01.wav" -} - -"Spy.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadRight02.wav" -} - -"Spy.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadRight03.wav" -} - -"Spy.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMe01.wav" -} - -"Spy.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMe02.wav" -} - -"Spy.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMe03.wav" -} - -"Spy.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeCapture01.wav" -} - -"Spy.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeCapture02.wav" -} - -"Spy.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeCapture03.wav" -} - -"Spy.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeDefend01.wav" -} - -"Spy.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeDefend02.wav" -} - -"Spy.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeDefend03.wav" -} - -"Spy.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Incoming01.wav" -} - -"Spy.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Incoming02.wav" -} - -"Spy.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Incoming03.wav" -} - -"Spy.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers01.wav" -} - -"Spy.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers02.wav" -} - -"Spy.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers03.wav" -} - -"Spy.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers04.wav" -} - -"Spy.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers05.wav" -} - -"Spy.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers06.wav" -} - -"Spy.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughEvil01.wav" -} - -"Spy.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughEvil02.wav" -} - -"Spy.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughHappy01.wav" -} - -"Spy.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughHappy02.wav" -} - -"Spy.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughHappy03.wav" -} - -"Spy.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughLong01.wav" -} - -"Spy.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort01.wav" -} - -"Spy.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort02.wav" -} - -"Spy.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort03.wav" -} - -"Spy.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort04.wav" -} - -"Spy.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort05.wav" -} - -"Spy.LaughShort06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort06.wav" -} - -"Spy.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Medic01.wav" -} - -"Spy.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Medic02.wav" -} - -"Spy.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Medic03.wav" -} - -"Spy.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_MoveUp01.wav" -} - -"Spy.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_MoveUp02.wav" -} - -"Spy.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NeedDispenser01.wav" -} - -"Spy.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NeedSentry01.wav" -} - -"Spy.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NeedTeleporter01.wav" -} - -"Spy.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization01.wav" -} - -"Spy.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization02.wav" -} - -"Spy.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization03.wav" -} - -"Spy.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization04.wav" -} - -"Spy.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization05.wav" -} - -"Spy.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization06.wav" -} - -"Spy.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization07.wav" -} - -"Spy.NegativeVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization08.wav" -} - -"Spy.NegativeVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization09.wav" -} - -"Spy.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NiceShot01.wav" -} - -"Spy.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NiceShot02.wav" -} - -"Spy.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NiceShot03.wav" -} - -"Spy.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_No01.wav" -} - -"Spy.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_No02.wav" -} - -"Spy.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_No03.wav" -} - -"Spy.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainCrticialDeath01.wav" -} - -"Spy.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainCrticialDeath02.wav" -} - -"Spy.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainCrticialDeath03.wav" -} - -"Spy.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere01.wav" -} - -"Spy.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere02.wav" -} - -"Spy.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere03.wav" -} - -"Spy.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere04.wav" -} - -"Spy.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere05.wav" -} - -"Spy.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp01.wav" -} - -"Spy.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp02.wav" -} - -"Spy.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp03.wav" -} - -"Spy.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp04.wav" -} - -"Spy.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization01.wav" -} - -"Spy.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization02.wav" -} - -"Spy.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization03.wav" -} - -"Spy.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization04.wav" -} - -"Spy.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization05.wav" -} - -"Spy.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SentryAhead01.wav" -} - -"Spy.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SentryAhead02.wav" -} - -"Spy.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted-AssistedKill01.wav" -} - -"Spy.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted-AssistedKill02.wav" -} - -"Spy.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted01.wav" -} - -"Spy.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted02.wav" -} - -"Spy.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted03.wav" -} - -"Spy.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted04.wav" -} - -"Spy.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted05.wav" -} - -"Spy.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted06.wav" -} - -"Spy.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted07.wav" -} - -"Spy.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted08.wav" -} - -"Spy.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted09.wav" -} - -"Spy.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted10.wav" -} - -"Spy.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted11.wav" -} - -"Spy.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted12.wav" -} - -"Spy.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint01.wav" -} - -"Spy.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint02.wav" -} - -"Spy.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint03.wav" -} - -"Spy.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint04.wav" -} - -"Spy.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts01.wav" -} - -"Spy.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts02.wav" -} - -"Spy.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts03.wav" -} - -"Spy.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts04.wav" -} - -"Spy.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts05.wav" -} - -"Spy.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts06.wav" -} - -"Spy.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts07.wav" -} - -"Spy.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts08.wav" -} - -"Spy.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts09.wav" -} - -"Spy.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts10.wav" -} - -"Spy.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts11.wav" -} - -"Spy.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts12.wav" -} - -"Spy.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts13.wav" -} - -"Spy.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts14.wav" -} - -"Spy.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts15.wav" -} - -"Spy.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts16.wav" -} - -"Spy.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Thanks01.wav" -} - -"Spy.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Thanks02.wav" -} - -"Spy.Thanks03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Thanks03.wav" -} - -"Spy.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheHeal01.wav" -} - -"Spy.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheHeal02.wav" -} - -"Spy.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheHeal03.wav" -} - -"Spy.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheTeleporter01.wav" -} - -"Spy.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheTeleporter02.wav" -} - -"Spy.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheTeleporter03.wav" -} - -"Spy.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Yes01.wav" -} - -"Spy.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Yes02.wav" -} - -"Spy.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Yes03.wav" -} - -//----------------------------------------------------------------------------- -//Heavy -//----------------------------------------------------------------------------- -"Heavy.Award01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award01.wav" -} - -"Heavy.Award02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award02.wav" -} - -"Heavy.Award03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award03.wav" -} - -"Heavy.Award04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award04.wav" -} - -"Heavy.Award05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award05.wav" -} - -"Heavy.Award07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award07.wav" -} - -"Heavy.Award08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award08.wav" -} - -"Heavy.Award09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award09.wav" -} - -"Heavy.Award10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award10.wav" -} - -"Heavy.Award11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award11.wav" -} - -"Heavy.Award12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award12.wav" -} - -"Heavy.Award13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award13.wav" -} - -"Heavy.Award16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award16.wav" -} - -"Heavy.Award14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award14.wav" -} - -"Heavy.Award15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award15.wav" -} - -"Heavy.Award06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award06.wav" -} - -"Heavy.CartGoingBackDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense01.wav" -} - -"Heavy.CartGoingBackDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense02.wav" -} - -"Heavy.CartGoingBackDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense03.wav" -} - -"Heavy.CartGoingBackDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense04.wav" -} - -"Heavy.CartGoingBackDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense05.wav" -} - -"Heavy.CartGoingBackDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense06.wav" -} - -"Heavy.CartGoingBackDefense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense07.wav" -} - -"Heavy.CartGoingBackDefense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense08.wav" -} - -"Heavy.CartGoingBackOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense01.wav" -} - -"Heavy.CartGoingBackOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense02.wav" -} - -"Heavy.CartGoingBackOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense03.wav" -} - -"Heavy.CartGoingBackOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense04.wav" -} - -"Heavy.CartGoingBackOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense05.wav" -} - -"Heavy.CartGoingBackOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense06.wav" -} - -"Heavy.CartGoingBackOffense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense07.wav" -} - -"Heavy.CartMovingForwardDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense01.wav" -} - -"Heavy.CartMovingForwardDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense02.wav" -} - -"Heavy.CartMovingForwardDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense04.wav" -} - -"Heavy.CartMovingForwardDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense05.wav" -} - -"Heavy.CartMovingForwardDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense03.wav" -} - -"Heavy.CartMovingForwardDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense06.wav" -} - -"Heavy.CartMovingForwardOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense01.wav" -} - -"Heavy.CartMovingForwardOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense02.wav" -} - -"Heavy.CartMovingForwardOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense03.wav" -} - -"Heavy.CartMovingForwardOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense04.wav" -} - -"Heavy.CartMovingForwardOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense05.wav" -} - -"Heavy.CartMovingForwardOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense06.wav" -} - -"Heavy.CartMovingForwardOffense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense07.wav" -} - -"Heavy.CartMovingForwardOffense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense08.wav" -} - -"Heavy.CartMovingForwardOffense09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense09.wav" -} - -"Heavy.CartMovingForwardOffense11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense11.wav" -} - -"Heavy.CartMovingForwardOffense12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense12.wav" -} - -"Heavy.CartMovingForwardOffense13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense13.wav" -} - -"Heavy.CartMovingForwardOffense14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense14.wav" -} - -"Heavy.CartMovingForwardOffense15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense15.wav" -} - -"Heavy.CartMovingForwardOffense16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense16.wav" -} - -"Heavy.CartMovingForwardOffense17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense17.wav" -} - -"Heavy.CartMovingForwardOffense10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense10.wav" -} - -"Heavy.CartStayCloseOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense01.wav" -} - -"Heavy.CartStayCloseOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense02.wav" -} - -"Heavy.CartStayCloseOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense03.wav" -} - -"Heavy.CartStayCloseOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense06.wav" -} - -"Heavy.CartStayCloseOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense05.wav" -} - -"Heavy.CartStayCloseOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense04.wav" -} - -"Heavy.CartStopItDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense01.wav" -} - -"Heavy.CartStopItDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense02.wav" -} - -"Heavy.CartStopItDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense03.wav" -} - -"Heavy.CartStopItDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense04.wav" -} - -"Heavy.CartStoppedOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense01.wav" -} - -"Heavy.CartStoppedOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense02.wav" -} - -"Heavy.CartStoppedOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense04.wav" -} - -"Heavy.CartStoppedOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense03.wav" -} - -"Heavy.Domination01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination01.wav" -} - -"Heavy.Domination02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination02.wav" -} - -"Heavy.Domination03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination03.wav" -} - -"Heavy.Domination04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination04.wav" -} - -"Heavy.Domination05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination05.wav" -} - -"Heavy.Domination06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination06.wav" -} - -"Heavy.Domination07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination07.wav" -} - -"Heavy.Domination08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination08.wav" -} - -"Heavy.Domination09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination09.wav" -} - -"Heavy.Domination10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination10.wav" -} - -"Heavy.Domination11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination11.wav" -} - -"Heavy.Domination12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination12.wav" -} - -"Heavy.Domination13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination13.wav" -} - -"Heavy.Domination14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination14.wav" -} - -"Heavy.Domination15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination15.wav" -} - -"Heavy.Domination16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination16.wav" -} - -"Heavy.Domination17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination17.wav" -} - -"Heavy.Domination18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination18.wav" -} - -"Heavy.FightOnCap04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap04.wav" -} - -"Heavy.FightOnCap01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap01.wav" -} - -"Heavy.FightOnCap02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap02.wav" -} - -"Heavy.FightOnCap03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap03.wav" -} - -"Heavy.LaughterBig02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig02.wav" -} - -"Heavy.LaughterBig01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig01.wav" -} - -"Heavy.LaughterBig03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig03.wav" -} - -"Heavy.LaughterBig04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig04.wav" -} - -"Heavy.MedicFollow01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow01.wav" -} - -"Heavy.MedicFollow02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow02.wav" -} - -"Heavy.MedicFollow03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow03.wav" -} - -"Heavy.MedicFollow04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow04.wav" -} - -"Heavy.MedicFollow05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow05.wav" -} - -"Heavy.MedicFollow06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow06.wav" -} - -"Heavy.MedicFollow07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow07.wav" -} - -"Heavy.MeleeDare01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare01.wav" -} - -"Heavy.MeleeDare02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare02.wav" -} - -"Heavy.MeleeDare03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare03.wav" -} - -"Heavy.MeleeDare04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare04.wav" -} - -"Heavy.MeleeDare05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare05.wav" -} - -"Heavy.MeleeDare06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare06.wav" -} - -"Heavy.MeleeDare07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare07.wav" -} - -"Heavy.MeleeDare08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare08.wav" -} - -"Heavy.MeleeDare09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare09.wav" -} - -"Heavy.MeleeDare10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare10.wav" -} - -"Heavy.MeleeDare11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare11.wav" -} - -"Heavy.MeleeDare12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare12.wav" -} - -"Heavy.MeleeDare13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare13.wav" -} - -"Heavy.Meleeing01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing01.wav" -} - -"Heavy.Meleeing02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing02.wav" -} - -"Heavy.Meleeing03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing03.wav" -} - -"Heavy.Meleeing04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing04.wav" -} - -"Heavy.Meleeing05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing05.wav" -} - -"Heavy.Meleeing06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing06.wav" -} - -"Heavy.Meleeing07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing07.wav" -} - -"Heavy.Meleeing08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing08.wav" -} - -"Heavy.Revenge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge01.wav" -} - -"Heavy.Revenge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge02.wav" -} - -"Heavy.Revenge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge03.wav" -} - -"Heavy.Revenge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge04.wav" -} - -"Heavy.Revenge05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge05.wav" -} - -"Heavy.Revenge06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge06.wav" -} - -"Heavy.Revenge07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge07.wav" -} - -"Heavy.Revenge08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge08.wav" -} - -"Heavy.Revenge09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge09.wav" -} - -"Heavy.Revenge10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge10.wav" -} - -"Heavy.Revenge11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge11.wav" -} - -"Heavy.Revenge12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge12.wav" -} - -"Heavy.Revenge13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge13.wav" -} - -"Heavy.Revenge14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge14.wav" -} - -"Heavy.Revenge15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge15.wav" -} - -"Heavy.Singing01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing01.wav" -} - -"Heavy.Singing02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing02.wav" -} - -"Heavy.Singing03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing03.wav" -} - -"Heavy.Singing04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing04.wav" -} - -"Heavy.Singing05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing05.wav" -} - -"Heavy.Specials01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials01.wav" -} - -"Heavy.Specials02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials02.wav" -} - -"Heavy.Specials03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials03.wav" -} - -"Heavy.Specials04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials04.wav" -} - -"Heavy.Specials05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials05.wav" -} - -"Heavy.SpecialWeapon04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon04.wav" -} - -"Heavy.SpecialWeapon01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon01.wav" -} - -"Heavy.SpecialWeapon02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon02.wav" -} - -"Heavy.SpecialWeapon03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon03.wav" -} - -"Heavy.SpecialWeapon05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon05.wav" -} - -"Heavy.SpecialWeapon06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon06.wav" -} - -"Heavy.SpecialWeapon07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon07.wav" -} - -"Heavy.SpecialWeapon08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon08.wav" -} - -"Heavy.SpecialWeapon09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon09.wav" -} - -"Heavy.SandwichEat" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/SandwichEat09.wav" -} - -"Heavy.SandwichTaunt01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt01.wav" -} - -"Heavy.SandwichTaunt02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt02.wav" -} - -"Heavy.SandwichTaunt03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt03.wav" -} - -"Heavy.SandwichTaunt04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt04.wav" -} - -"Heavy.SandwichTaunt05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt05.wav" -} - -"Heavy.SandwichTaunt06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt06.wav" -} - -"Heavy.SandwichTaunt07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt07.wav" -} - -"Heavy.SandwichTaunt08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt08.wav" -} - -"Heavy.SandwichTaunt09" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt09.wav" -} - -"Heavy.SandwichTaunt10" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt10.wav" -} - -"Heavy.SandwichTaunt11" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt11.wav" -} - -"Heavy.SandwichTaunt12" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt12.wav" -} - -"Heavy.SandwichTaunt13" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt13.wav" -} - -"Heavy.SandwichTaunt14" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt14.wav" -} - -"Heavy.SandwichTaunt15" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt15.wav" -} - -"Heavy.SandwichTaunt16" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt16.wav" -} - -"Heavy.SandwichTaunt17" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt17.wav" -} - - - -//----------------------------------------------------------------------------- -//End of Heavy -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -//Scout Batch 4 -//----------------------------------------------------------------------------- -"Scout.ApexofJump01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump01.wav" -} - -"Scout.ApexofJump05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump05.wav" -} - -"Scout.ApexofJump02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump02.wav" -} - -"Scout.ApexofJump03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump03.wav" -} - -"Scout.ApexofJump04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump04.wav" -} - -"Scout.Award01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award01.wav" -} - -"Scout.Award02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award02.wav" -} - -"Scout.Award04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award04.wav" -} - -"Scout.Award03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award03.wav" -} - -"Scout.Award05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award05.wav" -} - -"Scout.Award06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award06.wav" -} - -"Scout.Award07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award07.wav" -} - -"Scout.Award08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award08.wav" -} - -"Scout.Award09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award09.wav" -} - -"Scout.Award11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award11.wav" -} - -"Scout.Award12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award12.wav" -} - -"Scout.Award10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award10.wav" -} - -"Scout.BeingShotInvincible04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible04.wav" -} - -"Scout.BeingShotInvincible07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible07.wav" -} - -"Scout.BeingShotInvincible02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible02.wav" -} - -"Scout.BeingShotInvincible01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible01.wav" -} - -"Scout.BeingShotInvincible08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible08.wav" -} - -"Scout.BeingShotInvincible09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible09.wav" -} - -"Scout.BeingShotInvincible03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible03.wav" -} - -"Scout.BeingShotInvincible10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible10.wav" -} - -"Scout.BeingShotInvincible06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible06.wav" -} - -"Scout.BeingShotInvincible05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible05.wav" -} - -"Scout.BeingShotInvincible11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible11.wav" -} - -"Scout.BeingShotInvincible12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible12.wav" -} - -"Scout.BeingShotInvincible13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible13.wav" -} - -"Scout.BeingShotInvincible14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible14.wav" -} - -"Scout.BeingShotInvincible15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible15.wav" -} - -"Scout.BeingShotInvincible16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible16.wav" -} - -"Scout.BeingShotInvincible17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible17.wav" -} - -"Scout.BeingShotInvincible18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible18.wav" -} - -"Scout.BeingShotInvincible19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible19.wav" -} - -"Scout.BeingShotInvincible20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible20.wav" -} - -"Scout.BeingShotInvincible21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible21.wav" -} - -"Scout.BeingShotInvincible22" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible22.wav" -} - -"Scout.BeingShotInvincible23" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible23.wav" -} - -"Scout.BeingShotInvincible24" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible24.wav" -} - -"Scout.BeingShotInvincible25" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible25.wav" -} - -"Scout.BeingShotInvincible26" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible26.wav" -} - -"Scout.BeingShotInvincible27" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible27.wav" -} - -"Scout.BeingShotInvincible28" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible28.wav" -} - -"Scout.BeingShotInvincible29" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible29.wav" -} - -"Scout.BeingShotInvincible30" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible30.wav" -} - -"Scout.BeingShotInvincible31" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible31.wav" -} - -"Scout.BeingShotInvincible32" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible32.wav" -} - -"Scout.BeingShotInvincible33" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible33.wav" -} - -"Scout.BeingShotInvincible34" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible34.wav" -} - -"Scout.BeingShotInvincible35" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible35.wav" -} - -"Scout.BeingShotInvincible36" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible36.wav" -} - -"Scout.CartGoingBackDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense03.wav" -} - -"Scout.CartGoingBackDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense01.wav" -} - -"Scout.CartGoingBackDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense02.wav" -} - -"Scout.CartGoingBackDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense04.wav" -} - -"Scout.CartGoingBackDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense05.wav" -} - -"Scout.CartGoingBackDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense06.wav" -} - -"Scout.CartGoingBackOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense01.wav" -} - -"Scout.CartGoingBackOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense02.wav" -} - -"Scout.CartGoingBackOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense03.wav" -} - -"Scout.CartGoingBackOffense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense07.wav" -} - -"Scout.CartGoingBackOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense04.wav" -} - -"Scout.CartGoingBackOffense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense08.wav" -} - -"Scout.CartGoingBackOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense05.wav" -} - -"Scout.CartGoingBackOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense06.wav" -} - -"Scout.CartMovingForwardDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense01.wav" -} - -"Scout.CartMovingForwardDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense02.wav" -} - -"Scout.CartMovingForwardDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense03.wav" -} - -"Scout.CartMovingForwardDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense04.wav" -} - -"Scout.CartMovingForwardDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense05.wav" -} - -"Scout.CartMovingForwardDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense06.wav" -} - -"Scout.CartMovingForwardOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense01.wav" -} - -"Scout.CartMovingForwardOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense02.wav" -} - -"Scout.CartMovingForwardOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense03.wav" -} - -"Scout.CartMovingForwardOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense04.wav" -} - -"Scout.CartMovingForwardOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense06.wav" -} - -"Scout.CartMovingForwardOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense05.wav" -} - -"Scout.CartStayCloseOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense01.wav" -} - -"Scout.CartStayCloseOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense04.wav" -} - -"Scout.CartStayCloseOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense02.wav" -} - -"Scout.CartStayCloseOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense03.wav" -} - -"Scout.CartStayCloseOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense05.wav" -} - -"Scout.CartStayCloseOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense06.wav" -} - -"Scout.CartStopItDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStopItDefense01.wav" -} - -"Scout.CartStopItDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStopItDefense02.wav" -} - -"Scout.CartStopItDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStopItDefense03.wav" -} - -"Scout.CartStoppedOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStoppedOffense01.wav" -} - -"Scout.CartStoppedOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStoppedOffense02.wav" -} - -"Scout.CartStoppedOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStoppedOffense03.wav" -} - -"Scout.Domination02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination02.wav" -} - -"Scout.Domination03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination03.wav" -} - -"Scout.Domination04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination04.wav" -} - -"Scout.Domination19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination19.wav" -} - -"Scout.Domination05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination05.wav" -} - -"Scout.Domination18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination18.wav" -} - -"Scout.Domination06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination06.wav" -} - -"Scout.Domination07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination07.wav" -} - -"Scout.Domination08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination08.wav" -} - -"Scout.Domination09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination09.wav" -} - -"Scout.Domination10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination10.wav" -} - -"Scout.Domination11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination11.wav" -} - -"Scout.Domination20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination20.wav" -} - -"Scout.Domination12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination12.wav" -} - -"Scout.Domination13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination13.wav" -} - -"Scout.Domination14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination14.wav" -} - -"Scout.Domination01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination01.wav" -} - -"Scout.Domination15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination15.wav" -} - -"Scout.Domination16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination16.wav" -} - -"Scout.Domination17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination17.wav" -} - -"Scout.Domination21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination21.wav" -} - -"Scout.DominationDem01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem01.wav" -} - -"Scout.DominationDem02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem02.wav" -} - -"Scout.DominationDem05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem05.wav" -} - -"Scout.DominationDem03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem03.wav" -} - -"Scout.DominationDem04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem04.wav" -} - -"Scout.DominationEng01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng01.wav" -} - -"Scout.DominationEng02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng02.wav" -} - -"Scout.DominationEng03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng03.wav" -} - -"Scout.DominationEng04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng04.wav" -} - -"Scout.DominationEng05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng05.wav" -} - -"Scout.DominationEng06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng06.wav" -} - -"Scout.DominationHvy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy01.wav" -} - -"Scout.DominationHvy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy02.wav" -} - -"Scout.DominationHvy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy03.wav" -} - -"Scout.DominationHvy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy04.wav" -} - -"Scout.DominationHvy05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy05.wav" -} - -"Scout.DominationHvy06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy06.wav" -} - -"Scout.DominationHvy07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy07.wav" -} - -"Scout.DominationHvy08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy08.wav" -} - -"Scout.DominationHvy09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy09.wav" -} - -"Scout.DominationHvy10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy10.wav" -} - -"Scout.DominationMed06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed06.wav" -} - -"Scout.DominationMed05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed05.wav" -} - -"Scout.DominationMed01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed01.wav" -} - -"Scout.DominationMed02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed02.wav" -} - -"Scout.DominationMed03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed03.wav" -} - -"Scout.DominationMed04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed04.wav" -} - -"Scout.DominationPyr01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr01.wav" -} - -"Scout.DominationPyr02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr02.wav" -} - -"Scout.DominationPyr03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr03.wav" -} - -"Scout.DominationPyr06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr06.wav" -} - -"Scout.DominationPyr04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr04.wav" -} - -"Scout.DominationPyr05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr05.wav" -} - -"Scout.DominationSct01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSct01.wav" -} - -"Scout.DominationSct02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSct02.wav" -} - -"Scout.DominationSct03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSct03.wav" -} - -"Scout.DominationSnp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp01.wav" -} - -"Scout.DominationSnp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp02.wav" -} - -"Scout.DominationSnp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp03.wav" -} - -"Scout.DominationSnp04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp04.wav" -} - -"Scout.DominationSnp05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp05.wav" -} - -"Scout.DominationSol01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol01.wav" -} - -"Scout.DominationSol02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol02.wav" -} - -"Scout.DominationSol03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol03.wav" -} - -"Scout.DominationSol04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol04.wav" -} - -"Scout.DominationSol05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol05.wav" -} - -"Scout.DominationSol06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol06.wav" -} - -"Scout.DominationSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy01.wav" -} - -"Scout.DominationSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy02.wav" -} - -"Scout.DominationSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy03.wav" -} - -"Scout.DominationSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy04.wav" -} - -"Scout.FightOnCap01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap01.wav" -} - -"Scout.FightOnCap02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap02.wav" -} - -"Scout.FightOnCap03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap03.wav" -} - -"Scout.FightOnCap04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap04.wav" -} - -"Scout.Invincible01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible01.wav" -} - -"Scout.Invincible02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible02.wav" -} - -"Scout.Invincible04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible04.wav" -} - -"Scout.Invincible03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible03.wav" -} - -"Scout.InvincibleChgUnderFire01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire01.wav" -} - -"Scout.InvincibleChgUnderFire02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire02.wav" -} - -"Scout.InvincibleChgUnderFire04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire04.wav" -} - -"Scout.InvincibleChgUnderFire03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire03.wav" -} - -"Scout.InvincibleNotReady01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady01.wav" -} - -"Scout.InvincibleNotReady02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady02.wav" -} - -"Scout.InvincibleNotReady03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady03.wav" -} - -"Scout.InvincibleNotReady04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady04.wav" -} - -"Scout.InvincibleNotReady05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady05.wav" -} - -"Scout.InvincibleNotReady06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady06.wav" -} - -"Scout.InvincibleNotReady07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady07.wav" -} - -"Scout.MedicFollow01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow01.wav" -} - -"Scout.MedicFollow02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow02.wav" -} - -"Scout.MedicFollow03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow03.wav" -} - -"Scout.MedicFollow04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow04.wav" -} - -"Scout.MeleeDare01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare01.wav" -} - -"Scout.MeleeDare02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare02.wav" -} - -"Scout.MeleeDare06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare06.wav" -} - -"Scout.MeleeDare03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare03.wav" -} - -"Scout.MeleeDare04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare04.wav" -} - -"Scout.MeleeDare05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare05.wav" -} - -"Scout.Misc01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc01.wav" -} - -"Scout.Misc02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc02.wav" -} - -"Scout.Misc03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc03.wav" -} - -"Scout.Misc04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc04.wav" -} - -"Scout.Misc05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc05.wav" -} - -"Scout.Misc06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc06.wav" -} - -"Scout.Misc07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc07.wav" -} - -"Scout.Misc08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc08.wav" -} - -"Scout.Misc09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc09.wav" -} - -"Scout.Revenge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge01.wav" -} - -"Scout.Revenge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge02.wav" -} - -"Scout.Revenge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge03.wav" -} - -"Scout.Revenge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge04.wav" -} - -"Scout.Revenge05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge05.wav" -} - -"Scout.Revenge06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge06.wav" -} - -"Scout.Revenge07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge07.wav" -} - -"Scout.Revenge08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge08.wav" -} - -"Scout.Revenge09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge09.wav" -} - -"Scout.StunBallHit02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit02.wav" -} - -"Scout.StunBallHit03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit03.wav" -} - -"Scout.StunBallHit04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit04.wav" -} - -"Scout.StunBallHit05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit05.wav" -} - -"Scout.StunBallHit06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit06.wav" -} - -"Scout.StunBallHit07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit07.wav" -} - -"Scout.StunBallHit08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit08.wav" -} - -"Scout.StunBallHit09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit09.wav" -} - -"Scout.StunBallHit10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit10.wav" -} - -"Scout.StunBallHit15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit15.wav" -} - -"Scout.StunBallHit11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit11.wav" -} - -"Scout.StunBallHit16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit16.wav" -} - -"Scout.StunBallHit12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit12.wav" -} - -"Scout.StunBallHit13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit13.wav" -} - -"Scout.StunBallHit14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit14.wav" -} - -"Scout.StunBallHit01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit01.wav" -} - -"Scout.StunBallHittingIt02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt02.wav" -} - -"Scout.StunBallHittingIt01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt01.wav" -} - -"Scout.StunBallHittingIt04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt04.wav" -} - -"Scout.StunBallHittingIt03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt03.wav" -} - -"Scout.StunBallHittingIt05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt05.wav" -} - -"Scout.StunBallPickUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp01.wav" -} - -"Scout.StunBallPickUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp02.wav" -} - -"Scout.StunBallPickUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp03.wav" -} - -"Scout.StunBallPickUp04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp04.wav" -} - -"Scout.StunBallPickUp05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp05.wav" -} - -"Scout.TripleJump01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump01.wav" -} - -"Scout.TripleJump03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump03.wav" -} - -"Scout.TripleJump02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump02.wav" -} - -"Scout.TripleJump04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump04.wav" -} - -//----------------------------------------------------------------------------- -//End of Scout Batch 4 -//----------------------------------------------------------------------------- - - -//----------------------------------------------------------------------------- -//Announcer batch 5 -//----------------------------------------------------------------------------- -"Announcer.AM_CapEnabledRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - - "rndwave" - { - "wave" "vo/announcer_AM_CapEnabled01.wav" - "wave" "vo/announcer_AM_CapEnabled02.wav" - "wave" "vo/announcer_AM_CapEnabled03.wav" - "wave" "vo/announcer_AM_CapEnabled04.wav" - } -} - -"Announcer.AM_CapEnabled01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled01.wav" -} - -"Announcer.AM_CapEnabled02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled02.wav" -} - -"Announcer.AM_CapEnabled03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled03.wav" -} - -"Announcer.AM_CapEnabled04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled04.wav" -} - -"Announcer.AM_CapIncite01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite01.wav" -} - -"Announcer.AM_CapIncite02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite02.wav" -} - -"Announcer.AM_CapIncite03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite03.wav" -} - -"Announcer.AM_CapIncite04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite04.wav" -} - -"Announcer.AM_CapIncite05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite05.wav" -} - -"Announcer.AM_CapIncite06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite06.wav" -} - -"Announcer.AM_FirstBloodRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_FirstBlood01.wav" - "wave" "vo/announcer_AM_FirstBlood02.wav" - "wave" "vo/announcer_AM_FirstBlood04.wav" - "wave" "vo/announcer_AM_FirstBlood05.wav" - } -} - -"Announcer.AM_FirstBloodFinally" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood03.wav" -} - -"Announcer.AM_FirstBloodFast" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood06.wav" -} - - -"Announcer.AM_FirstBlood01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood01.wav" -} - -"Announcer.AM_FirstBlood03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood03.wav" -} - -"Announcer.AM_FirstBlood05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood05.wav" -} - -"Announcer.AM_FirstBlood02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood02.wav" -} - -"Announcer.AM_FirstBlood04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood04.wav" -} - -"Announcer.AM_FirstBlood06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood06.wav" -} - -"Announcer.AM_FlawlessDefeatRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_FlawlessDefeat01.wav" - "wave" "vo/announcer_AM_FlawlessDefeat02.wav" - "wave" "vo/announcer_AM_FlawlessDefeat03.wav" - "wave" "vo/announcer_AM_FlawlessDefeat04.wav" - } -} - -"Announcer.AM_FlawlessVictoryRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_FlawlessVictory01.wav" - "wave" "vo/announcer_AM_FlawlessVictory02.wav" - "wave" "vo/announcer_AM_FlawlessVictory03.wav" - } -} - -"Announcer.AM_FlawlessDefeat02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat02.wav" -} - -"Announcer.AM_FlawlessDefeat01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat01.wav" -} - -"Announcer.AM_FlawlessDefeat03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat03.wav" -} - -"Announcer.AM_FlawlessDefeat04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat04.wav" -} - -"Announcer.AM_FlawlessVictory01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessVictory01.wav" -} - -"Announcer.AM_FlawlessVictory02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessVictory02.wav" -} - -"Announcer.AM_FlawlessVictory03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessVictory03.wav" -} - -"Announcer.AM_GameStarting01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting01.wav" -} - -"Announcer.AM_GameStarting02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting02.wav" -} - -"Announcer.AM_GameStarting03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting03.wav" -} - -"Announcer.AM_GameStarting04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting04.wav" -} - -"Announcer.AM_GameStarting05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting05.wav" -} - -"Announcer.AM_KillStreak01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak01.wav" -} - -"Announcer.AM_KillStreak02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak02.wav" -} - -"Announcer.AM_KillStreak03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak03.wav" -} - -"Announcer.AM_KillStreak04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak04.wav" -} - -"Announcer.AM_KillStreak05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak05.wav" -} - -"Announcer.AM_KillStreak06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak06.wav" -} - -"Announcer.AM_KillStreak07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak07.wav" -} - -"Announcer.AM_KillStreak08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak08.wav" -} - -"Announcer.AM_KillStreak09" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak09.wav" -} - -"Announcer.AM_KillStreak10" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak10.wav" -} - -"Announcer.AM_KillStreak11" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak11.wav" -} - -"Announcer.AM_LastManAlive02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive02.wav" -} - -"Announcer.AM_LastManAlive03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive03.wav" -} - -"Announcer.AM_LastManAlive01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive01.wav" -} - -"Announcer.AM_LastManAlive04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive04.wav" -} - -"Announcer.AM_LastManForfeit01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit01.wav" -} - -"Announcer.AM_LastManForfeit02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit02.wav" -} - -"Announcer.AM_LastManForfeit03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit03.wav" -} - -"Announcer.AM_LastManForfeit04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit04.wav" -} - -"Announcer.AM_RoundStartRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_RoundStart01.wav" - "wave" "vo/announcer_AM_RoundStart03.wav" - "wave" "vo/announcer_AM_RoundStart04.wav" - } -} - -"Announcer.AM_RoundStart01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart01.wav" -} - -"Announcer.AM_RoundStart02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart02.wav" -} - -"Announcer.AM_RoundStart03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart03.wav" -} - -"Announcer.AM_RoundStart04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart04.wav" -} - -"Announcer.AM_TeamScrambleRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_TeamScramble01.wav" - "wave" "vo/announcer_AM_TeamScramble02.wav" - "wave" "vo/announcer_AM_TeamScramble03.wav" - } -} - -"Announcer.AM_TeamScramble03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_TeamScramble03.wav" -} - -"Announcer.AM_TeamScramble02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_TeamScramble02.wav" -} - -"Announcer.AM_TeamScramble01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_TeamScramble01.wav" -} - -//----------------------------------------------------------------------------- -//End of Announcer -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -//Spy batch 6 -//----------------------------------------------------------------------------- -"Spy.DominationDemoMan01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan01.wav" -} - -"Spy.DominationDemoMan02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan02.wav" -} - -"Spy.DominationDemoMan03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan03.wav" -} - -"Spy.DominationDemoMan04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan04.wav" -} - -"Spy.DominationDemoMan05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan05.wav" -} - -"Spy.DominationDemoMan06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan06.wav" -} - -"Spy.DominationDemoMan07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan07.wav" -} - -"Spy.DominationEngineer01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer01.wav" -} - -"Spy.DominationEngineer02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer02.wav" -} - -"Spy.DominationEngineer03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer03.wav" -} - -"Spy.DominationEngineer04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer04.wav" -} - -"Spy.DominationEngineer05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer05.wav" -} - -"Spy.DominationEngineer06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer06.wav" -} - -"Spy.DominationHeavy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy01.wav" -} - -"Spy.DominationHeavy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy02.wav" -} - -"Spy.DominationHeavy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy03.wav" -} - -"Spy.DominationHeavy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy04.wav" -} - -"Spy.DominationHeavy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy05.wav" -} - -"Spy.DominationHeavy06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy06.wav" -} - -"Spy.DominationHeavy07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy07.wav" -} - -"Spy.DominationHeavy08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy08.wav" -} - -"Spy.DominationMedic01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic01.wav" -} - -"Spy.DominationMedic02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic02.wav" -} - -"Spy.DominationMedic03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic03.wav" -} - -"Spy.DominationMedic04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic04.wav" -} - -"Spy.DominationMedic05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic05.wav" -} - -"Spy.DominationMedic06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic06.wav" -} - -"Spy.DominationPyro01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro01.wav" -} - -"Spy.DominationPyro02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro02.wav" -} - -"Spy.DominationPyro03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro03.wav" -} - -"Spy.DominationPyro04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro04.wav" -} - -"Spy.DominationPyro05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro05.wav" -} - -"Spy.DominationScout01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout01.wav" -} - -"Spy.DominationScout02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout02.wav" -} - -"Spy.DominationScout03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout03.wav" -} - -"Spy.DominationScout04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout04.wav" -} - -"Spy.DominationScout05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout05.wav" -} - -"Spy.DominationScout06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout06.wav" -} - -"Spy.DominationScout07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout07.wav" -} - -"Spy.DominationScout08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout08.wav" -} - -"Spy.DominationSniper01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper01.wav" -} - -"Spy.DominationSniper02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper02.wav" -} - -"Spy.DominationSniper03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper03.wav" -} - -"Spy.DominationSniper04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper04.wav" -} - -"Spy.DominationSniper05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper05.wav" -} - -"Spy.DominationSniper06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper06.wav" -} - -"Spy.DominationSniper07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper07.wav" -} - -"Spy.DominationSoldier01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier01.wav" -} - -"Spy.DominationSoldier02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier02.wav" -} - -"Spy.DominationSoldier03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier03.wav" -} - -"Spy.DominationSoldier04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier04.wav" -} - -"Spy.DominationSoldier05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier05.wav" -} - -"Spy.DominationSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy01.wav" -} - -"Spy.DominationSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy02.wav" -} - -"Spy.DominationSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy03.wav" -} - -"Spy.DominationSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy04.wav" -} - -"Spy.DominationSpy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy05.wav" -} - -"Spy.JarateHit01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit01.wav" -} - -"Spy.JarateHit02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit02.wav" -} - -"Spy.JarateHit03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit03.wav" -} - -"Spy.JarateHit04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit04.wav" -} - -"Spy.JarateHit05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit05.wav" -} - -"Spy.JarateHit06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit06.wav" -} - -"Spy.MedicFollow01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MedicFollow01.wav" -} - -"Spy.MedicFollow02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MedicFollow02.wav" -} - -"Spy.MeleeDare01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MeleeDare01.wav" -} - -"Spy.MeleeDare02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MeleeDare02.wav" -} - -"Spy.Revenge01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_Revenge01.wav" -} - -"Spy.Revenge02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_Revenge02.wav" -} - -"Spy.Revenge03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_Revenge03.wav" -} - -//----------------------------------------------------------------------------- -//End of Spy batch 6 -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -//Sniper BATCH 7 -//----------------------------------------------------------------------------- -"Sniper.DominationDemoMan01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan01.wav" -} - -"Sniper.DominationDemoMan02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan02.wav" -} - -"Sniper.DominationDemoMan03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan03.wav" -} - -"Sniper.DominationDemoMan04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan04.wav" -} - -"Sniper.DominationDemoMan05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan05.wav" -} - -"Sniper.DominationEngineer01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer01.wav" -} - -"Sniper.DominationEngineer02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer02.wav" -} - -"Sniper.DominationEngineer03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer03.wav" -} - -"Sniper.DominationEngineer04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer04.wav" -} - -"Sniper.DominationEngineer05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer05.wav" -} - -"Sniper.DominationEngineer06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer06.wav" -} - -"Sniper.DominationHeavy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy01.wav" -} - -"Sniper.DominationHeavy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy02.wav" -} - -"Sniper.DominationHeavy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy03.wav" -} - -"Sniper.DominationHeavy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy04.wav" -} - -"Sniper.DominationHeavy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy05.wav" -} - -"Sniper.DominationHeavy06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy06.wav" -} - -"Sniper.DominationHeavy07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy07.wav" -} - -"Sniper.DominationMedic01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic01.wav" -} - -"Sniper.DominationMedic02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic02.wav" -} - -"Sniper.DominationMedic03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic03.wav" -} - -"Sniper.DominationMedic04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic04.wav" -} - -"Sniper.DominationMedic05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic05.wav" -} - -"Sniper.DominationPyro01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro01.wav" -} - -"Sniper.DominationPyro02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro02.wav" -} - -"Sniper.DominationPyro03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro03.wav" -} - -"Sniper.DominationPyro04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro04.wav" -} - -"Sniper.DominationPyro05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro05.wav" -} - -"Sniper.DominationScout01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout01.wav" -} - -"Sniper.DominationScout02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout02.wav" -} - -"Sniper.DominationScout03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout03.wav" -} - -"Sniper.DominationScout04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout04.wav" -} - -"Sniper.DominationScout05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout05.wav" -} - -"Sniper.DominationSniper18" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper18.wav" -} - -"Sniper.DominationSniper19" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper19.wav" -} - -"Sniper.DominationSniper20" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper20.wav" -} - -"Sniper.DominationSniper21" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper21.wav" -} - -"Sniper.DominationSniper22" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper22.wav" -} - -"Sniper.DominationSoldier01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier01.wav" -} - -"Sniper.DominationSoldier02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier02.wav" -} - -"Sniper.DominationSoldier03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier03.wav" -} - -"Sniper.DominationSoldier04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier04.wav" -} - -"Sniper.DominationSoldier05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier05.wav" -} - -"Sniper.DominationSoldier06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier06.wav" -} - -"Sniper.DominationSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy01.wav" -} - -"Sniper.DominationSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy02.wav" -} - -"Sniper.DominationSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy03.wav" -} - -"Sniper.DominationSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy04.wav" -} - -"Sniper.DominationSpy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy05.wav" -} - -"Sniper.DominationSpy06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy06.wav" -} - -"Sniper.DominationSpy07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy07.wav" -} - -"Sniper.JarateToss01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_JarateToss01.wav" -} - -"Sniper.JarateToss02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_JarateToss02.wav" -} - -"Sniper.JarateToss03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_JarateToss03.wav" -} - -//----------------------------------------------------------------------------- -//End of Sniper BATCH 7 -//----------------------------------------------------------------------------- diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_vo_handmade.txt b/addon/gamemodes/teamfortress/content/scripts/game_sounds_vo_handmade.txt deleted file mode 100644 index eea2de985..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/game_sounds_vo_handmade.txt +++ /dev/null @@ -1,118 +0,0 @@ -"Medic.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts16.wav" -} - -"sniper.CartGoingBackDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense01.wav" -} - -"sniper.CartGoingBackDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense02.wav" -} - -"sniper.CartGoingBackDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense03.wav" -} - -"sniper.CartGoingBackDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense04.wav" -} - -"sniper.CartGoingBackDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense05.wav" -} - -"sniper.CartGoingBackDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense06.wav" -} - -"sniper.CartGoingBackDefense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense07.wav" -} - -"sniper.CartGoingBackDefense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense08.wav" -} - -"sniper.Domination12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination12.wav" -} - -"sniper.Domination15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination15.wav" -} - -"sniper.Domination16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination16.wav" -} - -"sniper.Domination17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination17.wav" -} diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_weapons.txt b/addon/gamemodes/teamfortress/content/scripts/game_sounds_weapons.txt deleted file mode 100644 index 238a3c0ac..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/game_sounds_weapons.txt +++ /dev/null @@ -1,3759 +0,0 @@ -// Channels -// CHAN_AUTO = 0, -// CHAN_WEAPON = 1, -// CHAN_VOICE = 2, -// CHAN_ITEM = 3, -// CHAN_BODY = 4, -// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area -// CHAN_STATIC = 6, // allocate channel from the static area -// these can be set with "channel" "2" or "channel" "chan_voice" - -//----------------------------------------------------------------------------- -// common attenuation values -//----------------------------------------------------------------------------- - -// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f -// ATTN_IDLE 2.0f -// ATTN_STATIC 1.25f -// ATTN_RICOCHET 1.5f -// ATTN_GUNFIRE 0.27f - -// SNDLVL_NONE = 0, -// SNDLVL_25dB = 25, -// SNDLVL_30dB = 30, -// SNDLVL_35dB = 35, -// SNDLVL_40dB = 40, -// SNDLVL_45dB = 45, -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -// ------------------------------------------------------------------------------------ // -// RICOCHET -// ------------------------------------------------------------------------------------ // -"FX_RicochetSound.Ricochet" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_96dB" - "pitch" "90, 110" - - "rndwave" - { - "wave" "weapons/fx/rics/ric1.wav" - "wave" "weapons/fx/rics/ric2.wav" - "wave" "weapons/fx/rics/ric3.wav" - "wave" "weapons/fx/rics/ric4.wav" - "wave" "weapons/fx/rics/ric5.wav" - } -} - - -// ------------------------------------------------------------------------------------ // -// NEARMISS -// ------------------------------------------------------------------------------------ // - -"Bullets.DefaultNearmiss" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_80dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" ">weapons/fx/nearmiss/bulletLtoR08.wav" - "wave" ">weapons/fx/nearmiss/bulletLtoR09.wav" - "wave" ">weapons/fx/nearmiss/bulletLtoR10.wav" - "wave" ">weapons/fx/nearmiss/bulletLtoR11.wav" - "wave" ">weapons/fx/nearmiss/bulletLtoR13.wav" - "wave" ">weapons/fx/nearmiss/bulletLtoR14.wav" - } -} - -// ------------------------------------------------------------------------------------ // -//BUILDER -// ------------------------------------------------------------------------------------ // -"Weapon_Builder.SwitchEngineer" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" ".74" - "wave" "weapons/draw_sapper_switch.wav" -} - -// ------------------------------------------------------------------------------------ // -//WEAPON CHARGED -// ------------------------------------------------------------------------------------ // -"TFPlayer.CritBoostOn" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/weapon_crit_charged_on.wav" -} - -"TFPlayer.CritBoostOff" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/weapon_crit_charged_off.wav" -} - -// ------------------------------------------------------------------------------------ // -//PDA -// ------------------------------------------------------------------------------------ // - -"Weapon_PDA.DrawSpy" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".25" - "wave" "weapons/draw_pda_spy.wav" -} - - -"Weapon_PDA.DrawEngineer" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".25" - "wave" "weapons/draw_pda_engineer.wav" -} - -"Weapon_PDA.AntennaeEngineer" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" ".25" - "wave" "weapons/draw_pda_antennae.wav" -} - -// ------------------------------------------------------------------------------------ // -// BASEBALL BAT -// ------------------------------------------------------------------------------------ // - -"Weapon_BaseballBat.HitBall" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bat_baseball_hit1.wav" - "wave" "weapons/bat_baseball_hit2.wav" - } - -} - -"Weapon_BaseballBat.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/bat_baseball_hit_flesh.wav" - -} - -"Weapon_BaseballBat.HitWorld" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bat_baseball_hit_world1.wav" - "wave" "weapons/bat_baseball_hit_world2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// BASEBALL -// ------------------------------------------------------------------------------------ // -"Weapon_Baseball.HitWorld" -{ - "channel" "CHAN_STATIC" - "volume" "1" - "soundlevel" "SNDLVL_74dB" - "rndwave" - { - "wave" "weapons/baseball_hitworld1.wav" - "wave" "weapons/baseball_hitworld2.wav" - "wave" "weapons/baseball_hitworld3.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// BAT -// ------------------------------------------------------------------------------------ // - -"Weapon_Bat.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_NORM" - "volume" ".5" - "wave" "weapons/bat_draw.wav" -} - -"Weapon_Bat.DrawSwoosh1" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".45" - "wave" "weapons/bat_draw_swoosh1.wav" -} - -"Weapon_Bat.DrawSwoosh2" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" ".45" - "wave" "weapons/bat_draw_swoosh2.wav" -} - - -"Weapon_Bat.DrawCatch" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/metal_hit_hand1.wav" -} - -"Weapon_Ball.DrawCatch" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" ".25" - "wave" "weapons/metal_hit_hand1.wav" -} - -"Weapon_Bat.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_Bat.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1_crit.wav" -} - -"Weapon_Bat.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/bat_hit.wav" - -} - -"Weapon_Bat.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// BOTTLE -// ------------------------------------------------------------------------------------ // - -"Weapon_Bottle.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_Bottle.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_NORM" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -"Weapon_Bottle.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1_crit.wav" -} - -"Weapon_Bottle.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_hit_flesh1.wav" - "wave" "weapons/bottle_hit_flesh2.wav" - "wave" "weapons/bottle_hit_flesh3.wav" - } -} - -"Weapon_Bottle.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_hit1.wav" - "wave" "weapons/bottle_hit2.wav" - "wave" "weapons/bottle_hit3.wav" - } -} - -"Weapon_Bottle.IntactHitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_intact_hit_world1.wav" - "wave" "weapons/bottle_intact_hit_world2.wav" - } -} - -"Weapon_Bottle.BrokenHitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_broken_hit_world1.wav" - "wave" "weapons/bottle_broken_hit_world2.wav" - "wave" "weapons/bottle_broken_hit_world3.wav" - } -} - -"Weapon_Bottle.IntactHitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_intact_hit_flesh1.wav" - "wave" "weapons/bottle_intact_hit_flesh2.wav" - "wave" "weapons/bottle_intact_hit_flesh3.wav" - } -} - -"Weapon_Bottle.BrokenHitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_broken_hit_flesh1.wav" - "wave" "weapons/bottle_broken_hit_flesh2.wav" - "wave" "weapons/bottle_broken_hit_flesh3.wav" - } -} - -"Weapon_Bottle.Break" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/bottle_break.wav" -} - - -// ------------------------------------------------------------------------------------ // -// Machete -// ------------------------------------------------------------------------------------ // - -"Weapon_Machete.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/machete_swing.wav" -} - -"Weapon_Machete.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/machete_swing_crit.wav" -} - -"Weapon_Machete.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Machete.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -"Weapon_Machete.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/draw_machete_sniper.wav" -} - -// ------------------------------------------------------------------------------------ // -// Fist -// ------------------------------------------------------------------------------------ // - -"Weapon_Fist.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bat_draw_swoosh1.wav" - "wave" "weapons/bat_draw_swoosh2.wav" - } -} - -"Weapon_Fist.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/fist_swing_crit.wav" -} - -"Weapon_Fist.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Fist.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/fist_hit_world1.wav" - "wave" "weapons/fist_hit_world2.wav" - } -} - - -"Weapon_Fist.HitHand" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "rndwave" - { - "wave" "weapons/metal_hit_hand1.wav" - "wave" "weapons/metal_hit_hand2.wav" - "wave" "weapons/metal_hit_hand3.wav" - } -} - -"Weapon_Fist.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_melee.wav" -} - -// ------------------------------------------------------------------------------------ // -// Boxing Gloves -// ------------------------------------------------------------------------------------ // - -"Weapon_BoxingGloves.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/boxing_gloves_swing1.wav" - "wave" "weapons/boxing_gloves_swing2.wav" - "wave" "weapons/boxing_gloves_swing4.wav" - "wave" "weapons/boxing_gloves_swing5.wav" - } -} - -"Weapon_BoxingGloves.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/fist_swing_crit.wav" -} - -"Weapon_BoxingGloves.CritHit" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/boxing_gloves_hit_crit1.wav" - "wave" "weapons/boxing_gloves_hit_crit2.wav" - "wave" "weapons/boxing_gloves_hit_crit3.wav" - } -} - -"Weapon_BoxingGloves.CritEnabled" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/boxing_gloves_crit_enabled.wav" -} - -"Weapon_BoxingGloves.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/boxing_gloves_hit1.wav" - "wave" "weapons/boxing_gloves_hit2.wav" - "wave" "weapons/boxing_gloves_hit3.wav" - "wave" "weapons/boxing_gloves_hit4.wav" - } -} - -"Weapon_BoxingGloves.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/fist_hit_world1.wav" - "wave" "weapons/fist_hit_world2.wav" - } -} - - -"Weapon_BoxingGloves.HitGlove" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/boxing_gloves_hit.wav" - -} - -"Weapon_BoxingGloves.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_melee.wav" -} - -// ------------------------------------------------------------------------------------ // -// BRANDING IRON -// ------------------------------------------------------------------------------------ // - -"Weapon_FireAxe.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_FireAxe.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1_crit.wav" -} - -"Weapon_FireAxe.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/axe_hit_flesh1.wav" - "wave" "weapons/axe_hit_flesh2.wav" - "wave" "weapons/axe_hit_flesh3.wav" - } -} - -"Weapon_FireAxe.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -"Weapon_FireAxe.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_melee.wav" -} - -// called from model? -"Weapon_BrandingIron.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_melee.wav" -} - -// ------------------------------------------------------------------------------------ // -// UBERSAW -// ------------------------------------------------------------------------------------ // - -"Weapon_BoneSaw.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_BoneSaw.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1_crit.wav" -} - -"Weapon_UberSaw.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/ubersaw_hit1.wav" - "wave" "weapons/ubersaw_hit2.wav" - "wave" "weapons/ubersaw_hit3.wav" - "wave" "weapons/ubersaw_hit4.wav" - } -} - -"Weapon_BoneSaw.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// BONESAW -// ------------------------------------------------------------------------------------ // - -"Weapon_BoneSaw.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_BoneSaw.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1_crit.wav" -} - -"Weapon_BoneSaw.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_BoneSaw.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// CLUB -// ------------------------------------------------------------------------------------ // - -"Weapon_Club.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_Club.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1_crit.wav" -} - -"Weapon_Club.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Club.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// CROWBAR -// ------------------------------------------------------------------------------------ // - -"Weapon_Crowbar.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_Crowbar.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Crowbar.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -"Weapon_Crowbar.Melee_HitWorld" -{ - "channel" "CHAN_ITEM" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - "pitch" "90,120" - - "rndwave" - { - "wave" "weapons/crowbar/crowbar_impact1.wav" - "wave" "weapons/crowbar/crowbar_impact2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// FLAG -// ------------------------------------------------------------------------------------ // - -"Weapon_Flag.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_Flag.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Flag.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/bottle_hit1.wav" - "wave" "weapons/bottle_hit2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// FLAME THROWER -// ------------------------------------------------------------------------------------ // - -"Weapon_FlameThrower.FireStart" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_start.wav" -} - -"Weapon_FlameThrower.FireLoop" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_loop.wav" -} - -"Weapon_FlameThrower.FireLoopCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_loop_crit.wav" -} - -"Weapon_FlameThrower.FireEnd" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_end.wav" -} - -"Weapon_FlameThrower.FireHit" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_fire_hit.wav" -} - -"Weapon_FlameThrower.PilotLoop" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" ".25" - "wave" "weapons/flame_thrower_pilot.wav" -} - -"Weapon_FlameThrower.FireRocket" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "misc/null.wav" -} - -"Weapon_FlameThrower.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -"Weapon_FlameThrower.Fire" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_start.wav" -} - -"Weapon_FlameThrower.WindDown" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_end.wav" -} - -"Weapon_FlameThrower.AirBurstAttack" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "pitch" "95,105" - "soundlevel" "SNDLVL_90db" - "wave" "weapons/flame_thrower_airblast.wav" -} - -"Weapon_FlameThrower.AirBurstAttackDeflect" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "pitch" "95,105" - "soundlevel" "SNDLVL_84db" - "wave" "weapons/flame_thrower_airblast_rocket_redirect.wav" -} - -// ------------------------------------------------------------------------------------ // -// BACK BURNER -// ------------------------------------------------------------------------------------ // - -"Weapon_BackBurner.FireStart" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_bb_start.wav" -} - -"Weapon_BackBurner.FireLoop" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_bb_loop.wav" -} - -"Weapon_BackBurner.FireLoopCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_bb_loop_crit.wav" -} - -"Weapon_BackBurner.FireEnd" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_bb_end.wav" -} - -"Weapon_BackBurner.FireHit" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_fire_hit.wav" -} - -"Weapon_BackBurner.PilotLoop" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" ".25" - "wave" "weapons/flame_thrower_pilot.wav" -} - -"Weapon_BackBurner.FireRocket" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "misc/null.wav" -} - -"Weapon_BackBurner.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -"Weapon_BackBurner.Fire" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_bb_start.wav" -} - -"Weapon_BackBurner.WindDown" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flame_thrower_bb_end.wav" -} - -// ------------------------------------------------------------------------------------ // -// Flare Gun -// ------------------------------------------------------------------------------------ // -"Weapon_FlareGun.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flaregun_shoot.wav" -} - -"Weapon_FlareGun.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/flaregun_shoot_crit.wav" - "wave" "weapons/flaregun_shoot_crit.wav" -} - -"Weapon_FlareGun.ModeSwitch" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/stickybomblauncher_det.wav" -} - -"Weapon_FlareGun.BoltBack" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" ".65" - "wave" "weapons/flaregun_boltback.wav" -} - -"Weapon_FlareGun.BoltForward" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" ".65" - "wave" "weapons/flaregun_boltforward.wav" -} - -"Weapon_FlareGun.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".45" - "wave" "weapons/flaregun_worldreload.wav" -} - -"Weapon_FlareGun.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_FlareGun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -"Weapon_FlareGun.Grab" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_NORM" - "volume" ".74" - "rndwave" - { - "wave" "weapons/metal_hit_hand1.wav" - "wave" "weapons/metal_hit_hand2.wav" - "wave" "weapons/metal_hit_hand3.wav" - } -} - -"Weapon_FlareGun.TubeOpen" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/grenade_launcher_drum_open.wav" -} - -"Weapon_FlareGun.Reload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/grenade_launcher_drum_load.wav" -} - -"Weapon_FlareGun.TubeCloseStart" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/flaregun_tube_closestart.wav" -} - -"Weapon_FlareGun.TubeCloseFinish" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/flaregun_tube_closefinish.wav" -} - -// ------------------------------------------------------------------------------------ // -// STICKY BOMB LAUNCHER -// ------------------------------------------------------------------------------------ // -"Weapon_StickyBombLauncher.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/stickybomblauncher_shoot.wav" -} - -"Weapon_StickyBombLauncher.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/stickybomblauncher_shoot_crit.wav" -} - -"Weapon_StickyBombLauncher.ModeSwitch" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/stickybomblauncher_det.wav" -} - -"Weapon_StickyBombLauncher.BoltBack" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" ".45" - "wave" "weapons/stickybomblauncher_boltback.wav" -} - -"Weapon_StickyBombLauncher.BoltForward" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_94dB" - "volume" ".45" - "wave" "weapons/stickybomblauncher_boltforward.wav" -} - -"Weapon_StickyBombLauncher.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".35" - "wave" "weapons/stickybomblauncher_worldreload.wav" -} - -"Weapon_StickyBombLauncher.ChargeUp" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" ".45" - "wave" "weapons/stickybomblauncher_charge_up.wav" -} - -// ------------------------------------------------------------------------------------ // -// GRENADE LAUNCHER -// ------------------------------------------------------------------------------------ // -"Weapon_GrenadeLauncher.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/grenade_launcher_shoot.wav" -} - -"Weapon_GrenadeLauncher.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/grenade_launcher_shoot_crit.wav" -} - -"Weapon_GrenadeLauncher.DrumStart" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".4" - "wave" "weapons/grenade_launcher_drum_start.wav" -} - -"Weapon_GrenadeLauncher.DrumStop" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".4" - "wave" "weapons/grenade_launcher_drum_stop.wav" -} - -"Weapon_GrenadeLauncher.DrumOpen" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/grenade_launcher_drum_open.wav" -} - -"Weapon_GrenadeLauncher.DrumLoad" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/grenade_launcher_drum_load.wav" -} - -"Weapon_GrenadeLauncher.DrumClose" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1" - "wave" "weapons/grenade_launcher_drum_close.wav" -} - -"Weapon_GrenadeLauncher.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/grenade_launcher_worldreload.wav" -} - -"Weapon_GrenadeLauncher.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -"Weapon_GrenadeLauncher.ModeSwitch" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/stickybomblauncher_det.wav" -} - -"Weapon_GrenadeLauncher.ChargeUp" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" ".45" - "wave" "weapons/stickybomblauncher_charge_up.wav" -} - -// ------------------------------------------------------------------------------------ // -// KNIFE -// ------------------------------------------------------------------------------------ // - -"Weapon_Knife.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/knife_swing.wav" -} - -"Weapon_Knife.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/knife_swing_crit.wav" -} - -"Weapon_Knife.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/blade_hit1.wav" - "wave" "weapons/blade_hit2.wav" - "wave" "weapons/blade_hit3.wav" - } -} - -"Weapon_Knife.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/blade_hitworld.wav" - -} - -"Weapon_Knife.Open1" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open1.wav" -} - -"Weapon_Knife.Open2" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open2.wav" -} - -"Weapon_Knife.Open3" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open3.wav" -} - -"Weapon_Knife.Open4" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open4.wav" -} - -"Weapon_Knife.Open5" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open5.wav" -} - -"Weapon_Knife.Open6" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open6.wav" -} - - -"Weapon_Knife.Open7" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open7.wav" -} - -"Weapon_Knife.Open8" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_NORM" - "pitch" "PITCH_NORM" - "wave" "weapons/knife_open8.wav" -} - -"Weapon_Knife.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_melee.wav" -} - -// ------------------------------------------------------------------------------------ // -// MEDIGUN -// ------------------------------------------------------------------------------------ // -"WeaponMedigun.Healing" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/medigun_heal.wav" -} - -"WeaponMedigun.Charged" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/medigun_charged.wav" -} - -"WeaponMedigun.NoTarget" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74Db" - "volume" "1.0" - "wave" "weapons/medigun_no_target.wav" -} - -"Weapon_Medikit.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Medikit.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -"Weapon_Medigun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - - - -// ------------------------------------------------------------------------------------ // -// SYRINGEGUN -// ------------------------------------------------------------------------------------ // -"Weapon_SyringeGun.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1" - "wave" "weapons/syringegun_shoot.wav" -} - -"Weapon_SyringeGun.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1" - "wave" "weapons/syringegun_shoot_crit.wav" -} - -"Weapon_SyringeGun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -"Weapon_SyringeGun.Reload1" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" ".75" - "wave" "weapons/syringegun_reload_air1.wav" -} - -"Weapon_SyringeGun.Reload2" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/syringegun_reload_glass2.wav" -} - - -"Weapon_SyringeGun.Reload3" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_74dB" - "volume" ".75" - "wave" "weapons/syringegun_reload_air2.wav" -} - -"Weapon_SyringeGun.WorldReload" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_74dB" - "volume" ".75" - "wave" "weapons/syringegun_worldreload.wav" -} - -"Weapon_SyringeGun.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - - - -// ------------------------------------------------------------------------------------ // -// MINIGUN -// ------------------------------------------------------------------------------------ // -"Weapon_Minigun.Reload" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/default_reload.wav" -} - -"Weapon_Minigun.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/minigun_empty.wav" -} - -"Weapon_Minigun.Spin" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/minigun_spin.wav" -} - -"Weapon_Minigun.WindUp" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minigun_wind_up.wav" -} - - -"Weapon_Minigun.Fire" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minigun_shoot.wav" -} - -"Weapon_Minigun.FireCrit" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minigun_shoot_crit.wav" -} - -"Weapon_Minigun.WindDown" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minigun_wind_down.wav" -} - -"Weapon_Minigun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_minigun_heavy.wav" -} - -// ------------------------------------------------------------------------------------ // -// MINIfun -// ------------------------------------------------------------------------------------ // -"Weapon_Minifun.Reload" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/default_reload.wav" -} - -"Weapon_Minifun.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/minifun_empty.wav" -} - -"Weapon_Minifun.Spin" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/minifun_spin.wav" -} - -"Weapon_Minifun.WindUp" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minifun_wind_up.wav" -} - - -"Weapon_Minifun.Fire" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minifun_shoot.wav" -} - -"Weapon_Minifun.FireCrit" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minifun_shoot_crit.wav" -} - -"Weapon_Minifun.WindDown" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/minifun_wind_down.wav" -} - -"Weapon_Minifun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_minigun_heavy.wav" -} - -// ------------------------------------------------------------------------------------ // -// PIPE -// ------------------------------------------------------------------------------------ // - -"Weapon_Pipe.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/cbar_miss1.wav" -} - -"Weapon_Pipe.HitFlesh" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Pipe.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -// ------------------------------------------------------------------------------------ // -// PISTOL -// ------------------------------------------------------------------------------------ // -"Weapon_Pistol.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/pistol_shoot.wav" -} - -"Weapon_Pistol.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/pistol_shoot_crit.wav" -} - -"Weapon_Pistol.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_Pistol.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -"Weapon_Pistol.Draw2" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/draw_pistol_engineer.wav" -} - -"Weapon_Pistol.ClipIn" -{ - "channel" "CHAN_STATIC" - "volume" "0.35" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol_clipin.wav" -} - -"Weapon_Pistol.ReloadScout" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/pistol_reload_scout.wav" -} - -"Weapon_Pistol.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/pistol_worldreload.wav" -} - -"Weapon_Pistol.WorldReloadEngineer" -{ - "channel" "CHAN_STATIC" - "volume" "0.35" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol_clipin.wav" -} - -// ------------------------------------------------------------------------------------ // -// REVOLVER -// ------------------------------------------------------------------------------------ // - -"Weapon_Revolver.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/revolver_shoot.wav" -} - -"Weapon_Revolver.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/revolver_shoot_crit.wav" -} - -"Weapon_Revolver.Reload1" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/revolver_reload_cylinder_open.wav" -} - -"Weapon_Revolver.Reload2" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/revolver_reload_cylinder_arm.wav" -} - -"Weapon_Revolver.Reload3" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/revolver_reload_cylinder_close.wav" -} - -"Weapon_Revolver.WorldReload" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg1/smg1_reload.wav" -} - -"Weapon_Revolver.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_Revolver.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -// ------------------------------------------------------------------------------------ // -// AMBASSADOR -// ------------------------------------------------------------------------------------ // - -"Weapon_Ambassador.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/ambassador_shoot.wav" -} - -"Weapon_Ambassador.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/ambassador_shoot_crit.wav" -} - - -// ------------------------------------------------------------------------------------ // -// SCATTER GUN DOUBLE -// ------------------------------------------------------------------------------------ // - -"Weapon_Scatter_Gun_Double.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/scatter_gun_double_shoot.wav" -} - -"Weapon_Scatter_Gun_Double.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/scatter_gun_double_shoot_crit.wav" -} - -"Weapon_DoubleBarrel.TubeOpen" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/scatter_gun_double_tube_open.wav" -} - -"Weapon_DoubleBarrel.ShellsOut" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/scatter_gun_double_shells_out.wav" -} - -"Weapon_DoubleBarrel.ShellsIn" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/scatter_gun_double_shells_in.wav" -} - -"Weapon_DoubleBarrel.TubeClose" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/scatter_gun_double_tube_close.wav" -} - - -// ------------------------------------------------------------------------------------ // -// SCATTER GUN -// ------------------------------------------------------------------------------------ // - -"Weapon_Scatter_Gun.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/scatter_gun_shoot.wav" -} - -"Weapon_Scatter_Gun.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/scatter_gun_shoot_crit.wav" -} - -"Weapon_Scatter_Gun.Empty" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/shotgun_empty.wav" -} - -"Weapon_Scatter_Gun.Reload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/scatter_gun_reload.wav" -} - -"Weapon_Scatter_Gun.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/scatter_gun_worldreload.wav" -} - -"Weapon_Scatter_Gun.Pump" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/scatter_gun_worldreload.wav" -} - -"Weapon_Scatter_Gun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -// ------------------------------------------------------------------------------------ // -// SHOTGUN -// ------------------------------------------------------------------------------------ // -"Weapon_Shotgun.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/shotgun_shoot.wav" -} - -"Weapon_Shotgun.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/shotgun_shoot_crit.wav" -} - -"Weapon_Shotgun.Empty" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/shotgun_empty.wav" -} - -"Weapon_Shotgun.Reload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/shotgun_reload.wav" -} - -"Weapon_Shotgun.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/shotgun_worldreload.wav" -} - -"Weapon_Shotgun.Pump" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "wave" "weapons/shotgun_cock.wav" -} - -"Weapon_Shotgun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -"Weapon_ShotgunPyro.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_shotgun_pyro.wav" -} - -"Weapon_ShotgunEngineer.Cock_Back" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/shotgun_cock_back.wav" -} - -"Weapon_ShotgunEngineer.Cock_Forward" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/shotgun_cock_forward.wav" -} - -"Weapon_ShotgunEngineer.Cock_Back" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/shotgun_cock_back.wav" -} - -"Weapon_ShotgunEngineer.Cock_Forward" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/shotgun_cock_forward.wav" -} - -// ------------------------------------------------------------------------------------ // -// SHOVEL -// ------------------------------------------------------------------------------------ // - -"Weapon_Shovel.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/shovel_swing.wav" -} - -"Weapon_Shovel.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/shovel_swing_crit.wav" -} - -"Weapon_Shovel.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/axe_hit_flesh1.wav" - "wave" "weapons/axe_hit_flesh2.wav" - "wave" "weapons/axe_hit_flesh3.wav" - } -} - -"Weapon_Shovel.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hit1.wav" - "wave" "weapons/cbar_hit2.wav" - } -} - -"Weapon_Shovel.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/draw_shovel_soldier.wav" -} - -// ------------------------------------------------------------------------------------ // -// Nail Gun -// ------------------------------------------------------------------------------------ // -"Weapon_NailGun.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/nail_gun_shoot.wav" -} - -"Weapon_NailGun.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/nail_gun_shoot_crit.wav" -} - -"Weapon_NailGun.Reload" -{ - "channel" "CHAN_ITEM" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg1/smg1_reload.wav" -} - -"Weapon_NailGun.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_NailGun.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -// ------------------------------------------------------------------------------------ // -// SMG -// ------------------------------------------------------------------------------------ // -"Weapon_SMG.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/smg_shoot.wav" -} - -"Weapon_SMG.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/smg_shoot_crit.wav" -} - -"Weapon_SMG.WorldReload" -{ - "channel" "CHAN_ITEM" - "volume" "0.35" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg_worldreload.wav" -} - -"Weapon_SMG.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_SMG.ClipOut" -{ - "channel" "CHAN_ITEM" - "volume" "0.35" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg_clip_out.wav" -} - -"Weapon_SMG.ClipIn" -{ - "channel" "CHAN_ITEM" - "volume" "0.35" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg_clip_in.wav" -} - - -"Weapon_SMG.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -// ------------------------------------------------------------------------------------ // -// SUPER SMG -// ------------------------------------------------------------------------------------ // -"Weapon_SuperSMG.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/smg_shoot.wav" -} - -"Weapon_SuperSMG.Reload" -{ - "channel" "CHAN_ITEM" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg1/smg1_reload.wav" -} - -"Weapon_SuperSMG.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -// ------------------------------------------------------------------------------------ // -// SNIPER RIFLE -// ------------------------------------------------------------------------------------ // -"Weapon_SniperRifle.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/sniper_shoot.wav" -} - -"Weapon_SniperRifle.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/sniper_shoot_crit.wav" -} - -"Weapon_SniperRifle.WorldReload" -{ - "channel" "CHAN_ITEM" - "volume" "0.35" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/sniper_worldreload.wav" -} - -"Weapon_SniperRifle.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_SniperRifle.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -"Weapon_SniperRifle.BoltForward" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".45" - "wave" "weapons/sniper_bolt_back.wav" -} - -"Weapon_SniperRifle.BoltBack" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".45" - "wave" "weapons/sniper_bolt_forward.wav" -} - -// ------------------------------------------------------------------------------------ // -// TRANQUILIZER GUN -// ------------------------------------------------------------------------------------ // -"Weapon_Tranq.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "misc/null.wav" -} - -"Weapon_Tranq.Reload" -{ - "channel" "CHAN_ITEM" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/smg1/smg1_reload.wav" -} - -"Weapon_Tranq.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - -"Weapon_Tranq.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -// ------------------------------------------------------------------------------------ // -// WRENCH -// ------------------------------------------------------------------------------------ // - -"Weapon_Wrench.Miss" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/wrench_swing.wav" -} - -"Weapon_Wrench.MissCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" ".6" - "wave" "weapons/wrench_swing_crit.wav" -} - -"Weapon_Wrench.HitFlesh" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" "1.0" - "rndwave" - { - "wave" "weapons/cbar_hitbod1.wav" - "wave" "weapons/cbar_hitbod2.wav" - "wave" "weapons/cbar_hitbod3.wav" - } -} - -"Weapon_Wrench.HitWorld" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".5" - "pitch" "100, 110" - "wave" "weapons/wrench_hit_world.wav" - -} - -"Weapon_Wrench.HitBuilding_Success" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".5" - "rndwave" - { - "wave" "weapons/wrench_hit_build_success1.wav" - "wave" "weapons/wrench_hit_build_success2.wav" - } -} - -"Weapon_Wrench.HitBuilding_Failure" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_NORM" - "volume" ".5" - "wave" "weapons/wrench_hit_build_fail.wav" -} - -"Weapon_Wrench.HitHand" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_NORM" - "volume" ".1" - "rndwave" - { - "wave" "weapons/metal_hit_hand1.wav" - "wave" "weapons/metal_hit_hand2.wav" - "wave" "weapons/metal_hit_hand3.wav" - } -} - -"Weapon_Wrench.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - - -"Weapon_Wrench.Draw2" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/draw_wrench_engineer.wav" -} - -// ------------------------------------------------------------------------------------ // -// RPG -// ------------------------------------------------------------------------------------ // -"Weapon_RPG.Single" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_94dB" - "wave" "weapons/rocket_shoot.wav" -} - -"Weapon_RPG.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_94dB" - "wave" "weapons/rocket_shoot_crit.wav" -} - -"Weapon_RPG.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -"Weapon_RPG.Reload" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/rocket_reload.wav" -} - -"Weapon_RPG.WorldReload" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/rocket_reload.wav" -} - -// ------------------------------------------------------------------------------------ // -// JARATE -// ------------------------------------------------------------------------------------ // -"Jar.Explode" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - - "wave" "weapons/jar_explode.wav" -} - -"Weapon_Jarate.Draw" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_75dB" - - "wave" "weapons/draw_jarate.wav" -} - -// -// ------------------------------------------------------------------------------------ // -// Grenades -// -// Grenade Sounds -// -// ------------------------------------------------------------------------------------ // - -// ------------------------------------------------------------------------------------ // -// BASE GRENADE -// ------------------------------------------------------------------------------------ // -"BaseGrenade.Explode" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_76dB" - - "rndwave" - { - "wave" "weapons/debris1.wav" - "wave" "weapons/debris2.wav" - } -} - -"BaseGrenade.BounceSound" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_74dB" - "rndwave" - { - "wave" "weapons/grenade_impact.wav" - "wave" "weapons/grenade_impact2.wav" - "wave" "weapons/grenade_impact3.wav" - } -} - -"BaseExplosionEffect.Sound" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "weapons/explode2.wav" - "wave" "weapons/explode3.wav" - "wave" "weapons/explode1.wav" - } -} - -"Weapon_Grenade_Normal.Single" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_95dB" - "wave" "weapons/grenade_throw.wav" -} - -// ------------------------------------------------------------------------------------ // -// PIPEBOMB GRENADE -// ------------------------------------------------------------------------------------ // -"Weapon_Grenade_Pipebomb.Explode" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_95dB" - "volume" "1.0" - "pitch" "PITCH_NORM" - "rndwave" - { - "wave" "weapons/pipe_bomb1.wav" - "wave" "weapons/pipe_bomb2.wav" - "wave" "weapons/pipe_bomb3.wav" - } -} - -"Weapon_Grenade_Pipebomb.Bounce" -{ - "channel" "CHAN_ITEM" - "volume" ".5" - "pitch" "96,100" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/grenade_impact.wav" -} - -"Weapon_Grenade_Pipebomb.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_primary.wav" -} - -// ------------------------------------------------------------------------------------ // -// DET PACK GRENADE -// ------------------------------------------------------------------------------------ // -"Weapon_Grenade_Det_Pack.Plant" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/det_pack_plant.wav" -} - -"Weapon_Grenade_Det_Pack.Explode" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_95dB" - "pitch" "PITCH_NORM" - "volume" "1.0" - "wave" "weapons/det_pack_explode.wav" -} - -"Weapon_Grenade_Det_Pack.Timer" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/det_pack_timer.wav" -} - -// ------------------------------------------------------------------------------------ // -// SAPPER -// ------------------------------------------------------------------------------------ // -"Weapon_Sapper.Plant" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sapper_plant.wav" -} - -"Weapon_Sapper.Timer" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sapper_timer.wav" -} - -"Weapon_Sapper.Draw" -{ - "channel" "CHAN_AUTO" - "volume" ".5" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/draw_primary.wav" -} - -"Weapon_Sapper.DrawSwitch" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/draw_sapper_switch.wav" -} - -"Weapon_Sapper.Removed" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_84dB" - "wave" "weapons/sapper_removed.wav" -} - - -// ------------------------------------------------------------------------------------ // -// ToolBox -// ------------------------------------------------------------------------------------ // - - -"Weapon_ToolBox.Draw" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_secondary.wav" -} - -"Weapon_ToolBox.Draw2" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/draw_toolbox_engineer.wav" -} - -// ------------------------------------------------------------------------------------ // -// Dispenser -// ------------------------------------------------------------------------------------ // - -"Building_Dispenser.Build1" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading5.wav" -} - -"Building_Dispenser.Build1a" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam3.wav" -} - -"Building_Dispenser.Build1b" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading1.wav" -} - -"Building_Dispenser.Build2" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short1.wav" -} - -"Building_Dispenser.Build3" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short2.wav" -} - -"Building_Dispenser.Build4" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam4.wav" -} - -"Building_Dispenser.Build5" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short1.wav" -} - -"Building_Dispenser.Build6" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short2.wav" -} - -"Building_Dispenser.Build7" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam1.wav" -} - -"Building_Dispenser.Build8" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short2.wav" -} - -"Building_Dispenser.Build9" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam2.wav" -} - -"Building_Dispenser.Build10" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short1.wav" -} - -"Building_Dispenser.Build11" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading5.wav" -} - -"Building_Dispenser.Build12" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam1.wav" -} - -"Building_Dispenser.Build13" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam1.wav" -} - -"Building_Dispenser.Build14" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam2.wav" -} - -"Building_Dispenser.Build15" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_medium3.wav" -} - -"Building_Dispenser.Build16" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading4.wav" -} - -"Building_Dispenser.Build17" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_medium2.wav" -} - -"Building_Dispenser.Build18" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/dispenser_bullet_chain.wav" -} - -"Building_Dispenser.Build18a" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading1.wav" -} - -"Building_Dispenser.Build19" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam4.wav" -} - -"Building_Dispenser.Build20" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/dispenser_bullet_chain2.wav" -} - -"Building_Dispenser.Build21" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_empty.wav" -} - -"Building_Dispenser.Build22" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - -"Building_Dispenser.Build23" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - -"Building_Dispenser.Build24" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - -"Building_Dispenser.Build24a" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading2.wav" -} - -"Building_Dispenser.Build24b" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - -"Building_Dispenser.Build24c" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - -"Building_Dispenser.Build24d" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - - -"Building_Dispenser.Build25" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading2.wav" -} - -"Building_Dispenser.Explode" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/dispenser_explode.wav" -} - -"Building_Dispenser.Idle" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/dispenser_idle.wav" -} - -"Building_Dispenser.GenerateMetal" -{ - "channel" "CHAN_VOICE" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/dispenser_generate_metal.wav" -} - -"Building_Dispenser.Heal" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/dispenser_heal.wav" -} - -// ------------------------------------------------------------------------------------ // -// Sentry Gun -// ------------------------------------------------------------------------------------ // - -// Played when the gun acquired a new target -"Building_Sentrygun.Alert" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_88dB" - "wave" "weapons/sentry_spot.wav" -} - -"Building_Sentrygun.AlertTarget" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_88dB" - "wave" "weapons/sentry_spot_client.wav" -} - - -// random played while the sentry it turning, without a target -"Building_Sentrygun.Idle" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_84dB" - "wave" "weapons/sentry_scan.wav" -} - -"Building_Sentrygun.Idle2" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_84dB" - "wave" "weapons/sentry_scan2.wav" -} - -"Building_Sentrygun.Idle3" -{ - "channel" "CHAN_ITEM" - "volume" ".75" - "soundlevel" "SNDLVL_84dB" - "wave" "weapons/sentry_scan3.wav" -} - -//played while the sentry is reloading rockets -"Building_SentryGun.RocketSteam1" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1.0" - "wave" "weapons/sentry_upgrading_steam4.wav" -} - -"Building_SentryGun.RocketSteam2" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1.0" - "wave" "weapons/sentry_upgrading_steam1.wav" -} - -"Building_SentryGun.RocketMove1" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1.0" - "wave" "weapons/sentry_move_short2.wav" -} - -"Building_SentryGun.RocketMove2" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1.0" - "wave" "weapons/sentry_move_short1.wav" -} - -"Building_SentryGun.RocketClunk1" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/sentry_upgrading4.wav" -} - -"Building_SentryGun.RocketClunk2" -{ - "channel" "CHAN_AUTO" - "soundlevel" "SNDLVL_74dB" - "volume" "1" - "wave" "weapons/sentry_upgrading5.wav" -} - -// played when the sentry completes building, or is upgrade -"Building_Sentrygun.Built" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_finish.wav" -} - -"Building_Sentrygun.Fire" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/sentry_shoot.wav" -} - -"Building_Sentrygun.Fire2" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/sentry_shoot2.wav" -} - -"Building_Sentrygun.Fire3" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/sentry_shoot3.wav" -} - -"Building_Sentrygun.Empty" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_94dB" - "volume" "1.0" - "wave" "weapons/sentry_empty.wav" -} - -"Building_Sentrygun.FireRocket" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_94dB" - - "wave" "weapons/sentry_rocket.wav" -} - -"Building_Sentrygun.Build1" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading1.wav" -} - -"Building_Sentrygun.BuildSteam1" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam1.wav" -} - -"Building_Sentrygun.Build1A" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading4.wav" -} - -"Building_Sentrygun.Build1B" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading7.wav" -} - - -"Building_Sentrygun.Build2" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short2.wav" -} - -"Building_Sentrygun.BuildSteam2" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam2.wav" -} - -"Building_Sentrygun.Build3" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading2.wav" -} - -"Building_Sentrygun.BuildSteam3" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam3.wav" -} - - -"Building_Sentrygun.Build4" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading4.wav" -} - -"Building_Sentrygun.Build5" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_medium3.wav" -} - -"Building_Sentrygun.Build6" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading5.wav" -} - -"Building_Sentrygun.BuildSteam4" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam4.wav" -} - -"Building_Sentrygun.Build7" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_long2.wav" -} - -"Building_Sentrygun.Build7A" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading7.wav" -} - -"Building_Sentrygun.BuildSteam5" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - -"Building_Sentrygun.Build8" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading3.wav" -} - -"Building_Sentrygun.Build9" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading6.wav" -} - -"Building_Sentrygun.Build10" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short2.wav" -} - -"Building_Sentrygun.Build11" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading8.wav" -} - -"Building_Sentrygun.Build12" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_long1.wav" -} - -"Building_Sentrygun.Build13" -{ - "channel" "CHAN_BODY" - "volume" "1" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_wire_connect.wav" -} - -"Building_Sentry.Explode" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_explode.wav" -} - -"Building_Sentry.Damage" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_94dB" - "rndwave" - { - "wave" "weapons/sentry_damage1.wav" - "wave" "weapons/sentry_damage2.wav" - "wave" "weapons/sentry_damage3.wav" - "wave" "weapons/sentry_damage4.wav" - } -} - - -// ------------------------------------------------------------------------------------ // -// TELEPORTER -// ------------------------------------------------------------------------------------ // -"Building_Teleporter.Ready" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/teleporter_ready.wav" -} - -"Building_Teleporter.Send" -{ - "channel" "CHAN_STATIC" - "soundlevel" "SNDLVL_74dB" - "pitch" "PITCH_NORM" - "volume" "1.0" - "wave" "weapons/teleporter_send.wav" -} - -"Building_Teleporter.Receive" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/teleporter_receive.wav" -} - -"Building_Teleporter.Build1" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading2.wav" -} - -"Building_Teleporter.Build1a" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading1.wav" -} - -"Building_Teleporter.Build2" -{ - "channel" "CHAN_ITEM" - "volume" ".25" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam2.wav" -} - -"Building_Teleporter.Build2a" -{ - "channel" "CHAN_STATIC" - "volume" ".25" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam5.wav" -} - - -"Building_Teleporter.Build2b" -{ - "channel" "CHAN_WEAPON" - "volume" ".25" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_medium2.wav" -} - - -"Building_Teleporter.Build2c" -{ - "channel" "CHAN_ITEM" - "volume" "1" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_medium3.wav" -} - -"Building_Teleporter.Build3" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam1.wav" -} - - -"Building_Teleporter.Build3a" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam2.wav" -} - -"Building_Teleporter.Build3b" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam3.wav" -} - -"Building_Teleporter.Build4" -{ - "channel" "CHAN_WEAPON" - "volume" ".25" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/teleporter_build_open2.wav" -} - -"Building_Teleporter.Build4a" -{ - "channel" "CHAN_WEAPON" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_upgrading_steam2.wav" -} - -"Building_Teleporter.Build5" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/sentry_move_short2.wav" -} - - -"Building_Teleporter.SpinLevel1" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "pitch" "PITCH_NORM" - "volume" "1.0" - "wave" "weapons/teleporter_spin.wav" -} - -"Building_Teleporter.SpinLevel2" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "pitch" "PITCH_NORM" - "volume" "1.0" - "wave" "weapons/teleporter_spin2.wav" -} - - -"Building_Teleporter.SpinLevel3" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "pitch" "PITCH_NORM" - "volume" "1.0" - "wave" "weapons/teleporter_spin3.wav" -} - -"Building_Teleporter.Explode" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_74dB" - "wave" "weapons/teleporter_explode.wav" -} - -// ------------------------------------------------------------------------------------ // -// BOW -// ------------------------------------------------------------------------------------ // -"Weapon_CompoundBow.Single" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" "1.0" - "wave" "weapons/bow_shoot.wav" -} - -"Weapon_CompoundBow.SinglePull" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_64dB" - "volume" "1.0" - "wave" "weapons/bow_shoot_pull.wav" -} - -"Weapon_CompoundBow.SingleCrit" -{ - "channel" "CHAN_WEAPON" - "soundlevel" "SNDLVL_74dB" - "volume" "1.0" - "wave" "weapons/bow_shoot_crit.wav" -} - -"Weapon_CompoundBow.ClipEmpty" -{ - "channel" "CHAN_STATIC" - "volume" "0.7" - "soundlevel" "SNDLVL_NORM" - - "wave" "weapons/pistol/pistol_empty.wav" -} - - - -"Weapon_CompoundBow.WorldReload" -{ - "channel" "CHAN_ITEM" - "soundlevel" "SNDLVL_74dB" - "volume" ".5" - "wave" "weapons/pistol_worldreload.wav" -} - -"Weapon_Bow.Draw" -{ - "channel" "CHAN_STATIC" - "volume" ".5" - "soundlevel" "SNDLVL_75dB" - - "wave" "weapons/draw_bow.wav" -} - -"Weapon_Bow.PullShort" -{ - "channel" "CHAN_ITEM" - "volume" "1.0" - "soundlevel" "SNDLVL_75dB" - - "wave" "weapons/bow_shoot_pull_short.wav" -} - -"Weapon_Bow.PullReverse" -{ - "channel" "CHAN_ITEM" - "volume" ".5" - "soundlevel" "SNDLVL_75dB" - - "wave" "weapons/bow_shoot_pull_reverse.wav" -} - -"Weapon_Bow.ArrowSlide" -{ - "channel" "CHAN_STATIC" - "volume" ".5" - "soundlevel" "SNDLVL_75dB" - - "wave" "weapons/bow_arrow_slide.wav" -} - -// ------------------------------------------------------------------------------------ // -// ARROW EFFECTS -// ------------------------------------------------------------------------------------ // - -"Weapon_Arrow.ImpactFlesh" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "weapons/fx/rics/arrow_impact_flesh.wav" - "wave" "weapons/fx/rics/arrow_impact_flesh2.wav" - "wave" "weapons/fx/rics/arrow_impact_flesh3.wav" - "wave" "weapons/fx/rics/arrow_impact_flesh4.wav" - } -} - -"Weapon_Arrow.ImpactConcrete" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_81dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "weapons/fx/rics/arrow_impact_concrete.wav" - "wave" "weapons/fx/rics/arrow_impact_concrete2.wav" - "wave" "weapons/fx/rics/arrow_impact_concrete4.wav" - } -} - - -"Weapon_Arrow.ImpactMetal" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_81dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "weapons/fx/rics/arrow_impact_metal.wav" - "wave" "weapons/fx/rics/arrow_impact_metal2.wav" - "wave" "weapons/fx/rics/arrow_impact_metal4.wav" - } -} - - -"Weapon_Arrow.ImpactWood" -{ - "channel" "CHAN_STATIC" - "volume" ".75" - "soundlevel" "SNDLVL_81dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "weapons/fx/rics/arrow_impact_wood.wav" - "wave" "weapons/fx/rics/arrow_impact_wood2.wav" - "wave" "weapons/fx/rics/arrow_impact_wood4.wav" - } -} - -"Weapon_Arrow.Nearmiss" -{ - "channel" "CHAN_STATIC" - "volume" "1.0" - "soundlevel" "SNDLVL_106dB" - "pitch" "PITCH_NORM" - - "rndwave" - { - "wave" "weapons/fx/nearmiss/arrow_nearmiss.wav" - "wave" "weapons/fx/nearmiss/arrow_nearmiss2.wav" - "wave" "weapons/fx/nearmiss/arrow_nearmiss3.wav" - "wave" "weapons/fx/nearmiss/arrow_nearmiss4.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/items_game.txt b/addon/gamemodes/teamfortress/content/scripts/items_game.txt deleted file mode 100644 index e8ac4cc06..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/items_game.txt +++ /dev/null @@ -1,18342 +0,0 @@ -"items_game" -{ - "qualities" - { - "normal" - { - "value" "0" - } - "unique" - { - "value" "6" - } - "rarity1" - { - "value" "1" - } - "rarity2" - { - "value" "2" - } - "rarity3" - { - "value" "4" - } - "rarity4" - { - "value" "5" - } - "community" - { - "value" "7" - } - "developer" - { - "value" "8" - } - "selfmade" - { - "value" "9" - } - "customized" - { - "value" "10" - } - "vintage" - { - "value" "3" - } - } - "items" - { - "0" - { - "name" "TF_WEAPON_BAT" - "item_class" "tf_weapon_bat" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Bat" - "item_name" "#TF_Weapon_Bat" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_bat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_bat.mdl" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "1" - { - "name" "TF_WEAPON_BOTTLE" - "item_class" "tf_weapon_bottle" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Bottle" - "item_name" "#TF_Weapon_Bottle" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_bottle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_bottle.mdl" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_bottle_pickup.wav" - "drop_sound" "ui/item_bottle_drop.wav" - } - "2" - { - "name" "TF_WEAPON_FIREAXE" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_FireAxe" - "item_name" "#TF_Weapon_FireAxe" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_fireaxe.mdl" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "3" - { - "name" "TF_WEAPON_CLUB" - "item_class" "tf_weapon_club" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Club" - "item_name" "#TF_Weapon_Club" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_machete" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_machete/c_machete.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "4" - { - "name" "TF_WEAPON_KNIFE" - "item_class" "tf_weapon_knife" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Knife" - "item_name" "#TF_Weapon_Knife" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_knife" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_knife.mdl" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "5" - { - "name" "TF_WEAPON_FISTS" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Fists" - "item_name" "#TF_Weapon_Fists" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/v_models/v_fist_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_FISTS_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_HITLEFT" - "replacement" "ACT_FISTS_VM_HITLEFT" - } - "animation" - { - "activity" "ACT_VM_HITRIGHT" - "replacement" "ACT_FISTS_VM_HITRIGHT" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_FISTS_VM_SWINGHARD" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_FISTS_VM_DRAW" - } - } - } - "6" - { - "name" "TF_WEAPON_SHOVEL" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Shovel" - "item_name" "#TF_Weapon_Shovel" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_shovel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_shovel.mdl" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_shovel_pickup.wav" - "drop_sound" "ui/item_shovel_drop.wav" - } - "7" - { - "name" "TF_WEAPON_WRENCH" - "item_class" "tf_weapon_wrench" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Weapon_Wrench" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_wrench" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_wrench.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "8" - { - "name" "TF_WEAPON_BONESAW" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Weapon_Bonesaw" - "item_slot" "melee" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_bonesaw/c_bonesaw" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_bonesaw.mdl" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "9" - { - "name" "TF_WEAPON_SHOTGUN_PRIMARY" - "item_class" "tf_weapon_shotgun_primary" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Weapon_Shotgun" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/w_models/w_shotgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shotgun/c_shotgun.mdl" - "model_world" "models/weapons/w_models/w_shotgun.mdl" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "10" - { - "name" "TF_WEAPON_SHOTGUN_SOLDIER" - "item_class" "tf_weapon_shotgun_soldier" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Weapon_Shotgun" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/w_models/w_shotgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shotgun/c_shotgun.mdl" - "model_world" "models/weapons/w_models/w_shotgun.mdl" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "11" - { - "name" "TF_WEAPON_SHOTGUN_HWG" - "item_class" "tf_weapon_shotgun_hwg" - "craft_class" "weapon" - "tool_class" "weapon" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Weapon_Shotgun" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/w_models/w_shotgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shotgun/c_shotgun.mdl" - "model_world" "models/weapons/w_models/w_shotgun.mdl" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "12" - { - "name" "TF_WEAPON_SHOTGUN_PYRO" - "item_class" "tf_weapon_shotgun_pyro" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Weapon_Shotgun" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/w_models/w_shotgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shotgun/c_shotgun.mdl" - "model_world" "models/weapons/w_models/w_shotgun.mdl" - "used_by_classes" - { - "pyro" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "13" - { - "name" "TF_WEAPON_SCATTERGUN" - "item_class" "tf_weapon_scattergun" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Scattergun" - "item_name" "#TF_Weapon_Scattergun" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_scattergun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_scattergun.mdl" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_scattergun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "14" - { - "name" "TF_WEAPON_SNIPERRIFLE" - "item_class" "tf_weapon_sniperrifle" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_SniperRifle" - "item_name" "#TF_Weapon_SniperRifle" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_sniperrifle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_sniperrifle.mdl" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_sniperrifle" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "15" - { - "name" "TF_WEAPON_MINIGUN" - "item_class" "tf_weapon_minigun" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Weapon_Minigun" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_minigun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_minigun.mdl" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_minigun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "16" - { - "name" "TF_WEAPON_SMG" - "item_class" "tf_weapon_smg" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_SMG" - "item_name" "#TF_Weapon_SMG" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_smg" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_smg.mdl" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "17" - { - "name" "TF_WEAPON_SYRINGEGUN_MEDIC" - "item_class" "tf_weapon_syringegun_medic" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_SyringeGun" - "item_name" "#TF_Weapon_SyringeGun" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_syringegun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_syringegun.mdl" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "18" - { - "name" "TF_WEAPON_ROCKETLAUNCHER" - "item_class" "tf_weapon_rocketlauncher" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Weapon_RocketLauncher" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_rocketlauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_rocketlauncher.mdl" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "19" - { - "name" "TF_WEAPON_GRENADELAUNCHER" - "item_class" "tf_weapon_grenadelauncher" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_GrenadeLauncher" - "item_name" "#TF_Weapon_GrenadeLauncher" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_grenadelauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "20" - { - "name" "TF_WEAPON_PIPEBOMBLAUNCHER" - "item_class" "tf_weapon_pipebomblauncher" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_PipebombLauncher" - "item_name" "#TF_Weapon_PipebombLauncher" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_stickybomb_launcher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_stickybomb_launcher.mdl" - "attach_to_hands" "0" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "skin" "0" - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "21" - { - "name" "TF_WEAPON_FLAMETHROWER" - "item_class" "tf_weapon_flamethrower" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_FlameThrower" - "item_name" "#TF_Weapon_FlameThrower" - "item_slot" "primary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_flamethrower/c_flamethrower" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "22" - { - "name" "TF_WEAPON_PISTOL" - "item_class" "tf_weapon_pistol" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_Weapon_Pistol" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_pistol" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_pistol/c_pistol.mdl" - "model_world" "models/weapons/w_models/w_pistol.mdl" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "23" - { - "name" "TF_WEAPON_PISTOL_SCOUT" - "item_class" "tf_weapon_pistol_scout" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_Weapon_Pistol" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_pistol" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_pistol/c_pistol.mdl" - "model_world" "models/weapons/w_models/w_pistol.mdl" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "24" - { - "name" "TF_WEAPON_REVOLVER" - "item_class" "tf_weapon_revolver" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_Weapon_Revolver" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_revolver" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_revolver.mdl" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "25" - { - "name" "TF_WEAPON_PDA_ENGINEER_BUILD" - "item_class" "tf_weapon_pda_engineer_build" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_PDA_Engineer" - "item_name" "#TF_Weapon_PDA_Engineer" - "item_slot" "pda" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_builder" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_builder.mdl" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "visuals" - { - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_ENGINEER_PDA2_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_ENGINEER_PDA2_VM_DRAW" - } - } - } - "26" - { - "name" "TF_WEAPON_PDA_ENGINEER_DESTROY" - "item_class" "tf_weapon_pda_engineer_destroy" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_PDA_Engineer" - "item_name" "#TF_Weapon_PDA_Engineer" - "item_slot" "pda2" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_pda_engineer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_builder.mdl" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "visuals" - { - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_ENGINEER_PDA1_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_ENGINEER_PDA1_VM_DRAW" - } - } - } - "27" - { - "name" "TF_WEAPON_PDA_SPY" - "item_class" "tf_weapon_pda_spy" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_PDA_Engineer" - "item_name" "#TF_Weapon_PDA_Engineer" - "item_slot" "pda" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_cigarette_case" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_cigarette_case.mdl" - "used_by_classes" - { - "spy" "1" - } - } - "28" - { - "name" "TF_WEAPON_BUILDER" - "item_class" "tf_weapon_builder" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_PDA_Engineer" - "item_name" "#TF_Weapon_PDA_Engineer" - "item_slot" "building" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_pda_engineer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_toolbox.mdl" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "visuals" - { - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_ENGINEER_BLD_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_ENGINEER_BLD_VM_DRAW" - } - } - } - "29" - { - "name" "TF_WEAPON_MEDIGUN" - "item_class" "tf_weapon_medigun" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Medigun" - "item_name" "#TF_Weapon_Medigun" - "item_slot" "secondary" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_medigun/c_medigun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_medigun.mdl" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "30" - { - "name" "TF_WEAPON_INVIS" - "item_class" "tf_weapon_invis" - "craft_class" "weapon" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_Weapon_Watch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "normal" - "baseitem" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_spy_watch/parts/c_spy_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_watch_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - } - "35" - { - "name" "The Kritzkrieg" - "item_class" "tf_weapon_medigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Medigun" - "item_name" "#TF_Unique_Achievement_Medigun1" - "item_slot" "secondary" - "image_inventory" "backpack/weapons/c_models/c_overhealer/c_overhealer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_medigun/c_medigun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "8" - "max_ilevel" "8" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "medigun charge is crit boost" - { - "attribute_class" "set_charge_type" - "value" "1" - } - "ubercharge rate bonus" - { - "attribute_class" "mult_medigun_uberchargerate" - "value" "1.25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_heal" "1" - "attrib_uber" "1" - } - "visuals_red" - { - "attached_model" - { - "model" "models/weapons/c_models/c_overhealer/c_overhealer.mdl" - } - "custom_particlesystem" - { - "system" "medicgun_beam_attrib_overheal_red" - } - } - "visuals_blu" - { - "attached_model" - { - "model" "models/weapons/c_models/c_overhealer/c_overhealer.mdl" - } - "custom_particlesystem" - { - "system" "medicgun_beam_attrib_overheal_blue" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "36" - { - "name" "The Blutsauger" - "item_class" "tf_weapon_syringegun_medic" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "blutsauger" - "item_iconname" "blutsauger" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SyringeGun" - "item_name" "#TF_Unique_Achievement_Syringegun1" - "item_slot" "primary" - "image_inventory" "backpack/weapons/c_models/c_leechgun/c_leechgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_leechgun/c_leechgun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "heal on hit for rapidfire" - { - "attribute_class" "add_onhit_addhealth" - "value" "3" - } - "health drain" - { - "attribute_class" "add_health_regen" - "value" "-2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "37" - { - "name" "The Ubersaw" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "ubersaw" - "item_iconname" "ubersaw" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Unique_Achievement_Bonesaw1" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_ubersaw/c_ubersaw" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ubersaw/c_ubersaw.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "add uber charge on hit" - { - "attribute_class" "add_onhit_ubercharge" - "value" "0.25" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "visuals" - { - "custom_sound1" "Weapon_UberSaw.HitFlesh" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "38" - { - "name" "The Axtinguisher" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "axtinguisher" - "item_iconname" "axtinguisher" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_FireAxe" - "item_name" "#TF_Unique_Achievement_FireAxe1" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "crit vs burning players" - { - "attribute_class" "or_crit_vs_playercond" - "value" "1" - } - "dmg penalty vs nonburning" - { - "attribute_class" "mult_dmg_vs_nonburning" - "value" "0.5" - } - "no crit vs nonburning" - { - "attribute_class" "set_nocrit_vs_nonburning" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "39" - { - "name" "The Flare Gun" - "item_class" "tf_weapon_flaregun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Flaregun" - "item_name" "#TF_Unique_Achievement_Flaregun" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "hidden secondary max ammo penalty" - { - "attribute_class" "mult_maxammo_secondary" - "value" "0.5" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_firerate" "1" - "wpn_ignites" "1" - "ammo_secondary" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "40" - { - "name" "The Backburner" - "item_class" "tf_weapon_flamethrower" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "backburner" - "item_iconname" "backburner" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Flamethrower" - "item_name" "#TF_Unique_Achievement_Flamethrower" - "item_slot" "primary" - "image_inventory" "backpack/weapons/c_models/c_backburner/c_backburner" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "mod flamethrower push" - { - "attribute_class" "set_flamethrower_push_disabled" - "value" "1" - } - "mod flamethrower back crit" - { - "attribute_class" "set_flamethrower_back_crit" - "value" "1" - } - "crit mod disabled hidden" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.15" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "wpn_ignites" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_BackBurner.FireStart" - "sound_special1" "Weapon_BackBurner.FireLoop" - "sound_burst" "Weapon_BackBurner.FireLoopCrit" - "attached_model" - { - "model" "models/weapons/c_models/c_backburner/c_backburner.mdl" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "41" - { - "name" "Natascha" - "item_class" "tf_weapon_minigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Unique_Achievement_Minigun" - "item_slot" "primary" - "item_logname" "natascha" - "item_iconname" "natascha" - "image_inventory" "backpack/weapons/c_models/c_w_ludmila/c_w_ludmila" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_minigun.mdl" - "attach_to_hands" "0" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "slow enemy on hit" - { - "attribute_class" "mult_onhit_enemyspeed" - "value" "1.0" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.75" - } - "minigun spinup time increased" - { - "attribute_class" "mult_minigun_spinup_time" - "value" "1.3" - } - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "wpn_uses_aimmode" "1" - "only_on_minigun" "1" - } - "visuals" - { - "sound_reload" "Weapon_Minifun.Reload" - "sound_empty" "Weapon_Minifun.ClipEmpty" - "sound_double_shot" "Weapon_Minifun.Fire" - "sound_special1" "Weapon_Minifun.WindUp" - "sound_special2" "Weapon_Minifun.WindDown" - "sound_special3" "Weapon_Minifun.Spin" - "sound_burst" "Weapon_Minifun.FireCrit" - "skin" "2" - "attached_model" - { - "world_model" "1" - "model" "models/weapons/c_models/c_w_ludmila/c_w_ludmila.mdl" - } - "attached_model" - { - "view_model" "1" - "model" "models/weapons/c_models/c_v_ludmila/c_v_ludmila.mdl" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "42" - { - "name" "The Sandvich" - "item_class" "tf_weapon_lunchbox" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_Achievement_LunchBox" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_sandwich/c_sandwich" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_sandwich/c_sandwich.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "heavy" "1" - } - "allowed_attributes" - { - "all_items" "1" - } - "mouse_pressed_sound" "ui/item_sandwich_drop.wav" - "drop_sound" "ui/item_sandwich_pickup.wav" - } - "43" - { - "name" "The Killing Gloves of Boxing" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_Unique_Achievement_Fists" - "item_slot" "melee" - "item_logname" "gloves" - "item_iconname" "gloves" - "image_inventory" "backpack/weapons/c_models/c_boxing_gloves/c_boxing_gloves" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "7" - "max_ilevel" "7" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "critboost on kill" - { - "attribute_class" "add_onkill_critboost_time" - "value" "5" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "hide_bodygroups_deployed_only" "1" - "visuals" - { - "hide_player_bodygroup_name" "hands" - "sound_melee_miss" "Weapon_BoxingGloves.Miss" - "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" - "sound_burst" "Weapon_BoxingGloves.MissCrit" - } - "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" - "drop_sound" "ui/item_boxing_gloves_drop.wav" - } - "44" - { - "name" "The Nailgun" - "item_class" "tf_weapon_nailgun" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_Weapon_Nailgun" - "item_description" "" - "item_slot" "primary" - "item_logname" "nailgun" - "item_iconname" "nailgun" - "image_inventory" "sprites/bucket_nailgun" - "image_inventory_size_w" "200" - "image_inventory_size_h" "128" - "model_player" "models/advancedweaponiser/nailgun/c_nailgun.mdl" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "45" - { - "name" "The Force-a-Nature" - "item_class" "tf_weapon_scattergun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Scattergun" - "item_name" "#TF_Unique_Achievement_Scattergun_Double" - "item_logname" "force_a_nature" - "item_iconname" "force_a_nature" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "anim_slot" "ITEM2" - "image_inventory" "backpack/weapons/c_models/c_double_barrel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_double_barrel.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "scout" "1" - } - "attributes" - { - "scattergun has knockback" - { - "attribute_class" "set_scattergun_has_knockback" - "value" "1" - } - "fire rate bonus" - { - "attribute_class" "mult_postfiredelay" - "value" "0.5" - } - "bullets per shot bonus" - { - "attribute_class" "mult_bullets_per_shot" - "value" "1.2" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.9" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.4" - } - "scattergun no reload single" - { - "attribute_class" "set_scattergun_no_reload_single" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Scatter_Gun_Double.Single" - "sound_burst" "Weapon_Scatter_Gun_Double.SingleCrit" - "muzzle_flash" "muzzle_bignasty" - "tracer_effect" "bullet_bignasty_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "46" - { - "name" "Bonk! Atomic Punch" - "item_class" "tf_weapon_lunchbox_drink" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_Achievement_EnergyDrink" - "anim_slot" "ITEM1" - "item_slot" "secondary" - "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_energy_drink" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "sound_deploy" "Scout.DodgeCanOpen" - } - "allowed_attributes" - { - "all_items" "1" - } - "mouse_pressed_sound" "ui/item_soda_can_pickup.wav" - "drop_sound" "ui/item_soda_can_drop.wav" - } - "47" - { - "name" "Demoman's Fro" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Demo_Hat_1" - "item_description" "#TF_Demo_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_afro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_afro.mdl" - "drop_type" "none" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "48" - { - "name" "Mining Light" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Engineer_Hat_1" - "item_description" "#TF_Engineer_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/mining_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/mining_hat.mdl" - "drop_type" "none" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "49" - { - "name" "Football Helmet" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Heavy_Hat_1" - "item_description" "#TF_Heavy_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/football_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/football_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "50" - { - "name" "Prussian Pickelhaube" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Medic_Hat_1" - "item_description" "#TF_Medic_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "51" - { - "name" "Pyro's Beanie" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Pyro_Hat_1" - "item_description" "#TF_Pyro_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "52" - { - "name" "Batter's Helmet" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Scout_Hat_1" - "item_description" "#TF_Scout_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/batter_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/batter_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_pickup.wav" - } - "53" - { - "name" "Trophy Belt" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Sniper_Hat_1" - "item_description" "#TF_Sniper_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/tooth_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/tooth_hat.mdl" - "drop_type" "none" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "54" - { - "name" "Soldier's Stash" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Soldier_Hat_1" - "item_description" "#TF_Soldier_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_hat.mdl" - "drop_type" "none" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "55" - { - "name" "Fancy Fedora" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Spy_Hat_1" - "item_description" "#TF_Spy_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "56" - { - "name" "The Huntsman" - "item_class" "tf_weapon_compound_bow" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_CompoundBow" - "item_name" "#TF_Unique_Achievement_CompoundBow" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "item_iconname" "huntsman" - "min_ilevel" "10" - "max_ilevel" "10" - "anim_slot" "item2" - "image_inventory" "backpack/weapons/c_models/c_bow/c_bow" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bow/c_bow.mdl" - "attach_to_hands" "1" - "flip_viewmodel" "1" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "hidden primary max ammo bonus" - { - "attribute_class" "mult_maxammo_primary" - "value" "0.5" - } - } - "visuals" - { - "show_player_bodygroup_name" "arrows" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "57" - { - "name" "The Razorback" - "item_class" "tf_wearable_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Shield" - "item_name" "#TF_Unique_Backstab_Shield" - "item_slot" "secondary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/sniper/knife_shield" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/knife_shield.mdl" - "extra_wearable" "models/player/items/sniper/knife_shield.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "backstab shield" - { - "attribute_class" "set_blockbackstab_once" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "58" - { - "name" "Jarate" - "item_class" "tf_weapon_jar" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Jar" - "item_name" "#TF_Unique_Achievement_Jar" - "item_slot" "secondary" - "item_quality" "unique" - "anim_slot" "item1" - "min_ilevel" "5" - "max_ilevel" "5" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/urinejar" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/urinejar.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "jarate description" - { - "attribute_class" "desc_jarate_description" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_bottle_pickup.wav" - "drop_sound" "ui/item_bottle_drop.wav" - } - "59" - { - "name" "The Dead Ringer" - "item_class" "tf_weapon_invis" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_Unique_Achievement_FeignWatch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_pocket_watch/parts/c_pocket_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_watch_pocket_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "attributes" - { - "set cloak is feign death" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "mult cloak meter consume rate" - { - "attribute_class" "mult_cloak_meter_consume_rate" - "value" "1.6" - } - "mult cloak meter regen rate" - { - "attribute_class" "mult_cloak_meter_regen_rate" - "value" "1.8" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_cloak" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - } - "60" - { - "name" "The Cloak and Dagger" - "item_class" "tf_weapon_invis" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_Unique_Achievement_CloakWatch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_leather_watch/parts/c_leather_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_watch_leather_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "attributes" - { - "set cloak is movement based" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - "mult cloak meter regen rate" - { - "attribute_class" "mult_cloak_meter_regen_rate" - "value" "2.0" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_cloak" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - } - "61" - { - "name" "The Ambassador" - "item_class" "tf_weapon_revolver" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_Unique_Achievement_Revolver" - "item_slot" "secondary" - "item_quality" "unique" - "propername" "0" - "item_logname" "ambassador" - "item_iconname" "ambassador" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_ambassador/parts/c_ambassador_opt" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ambassador/c_ambassador.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "spy" "1" - } - "attributes" - { - "revolver use hit locations" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.85" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Ambassador.Single" - "sound_burst" "Weapon_Ambassador.SingleCrit" - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "94" - { - "name" "Texas Ten Gallon" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Engineer_Cowboy_Hat" - "item_description" "#TF_Engineer_Cowboy_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_cowboy_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_cowboy_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "95" - { - "name" "Engineer's Cap" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Engineer_Train_Hat" - "item_description" "#TF_Engineer_Train_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_train_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_train_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "96" - { - "name" "Officer's Ushanka" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Heavy_Ushanka_Hat" - "item_description" "#TF_Heavy_Ushanka_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_ushanka" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_ushanka.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "97" - { - "name" "Tough Guy's Toque" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Heavy_Stocking_cap" - "item_description" "#TF_Heavy_Stocking_cap_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_stocking_cap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_stocking_cap.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "98" - { - "name" "Stainless Pot" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Soldier_Pot_Hat" - "item_description" "#TF_Soldier_Pot_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_pot" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_pot.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" - "drop_sound" "ui/item_metal_pot_drop.wav" - } - "99" - { - "name" "Tyrant's Helm" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Soldier_Viking_Hat" - "item_description" "#TF_Soldier_Viking_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_viking" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_viking.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "100" - { - "name" "Glengarry Bonnet" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Demo_Scott_Hat" - "item_description" "#TF_Demo_Scott_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_scott" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_scott.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "101" - { - "name" "Vintage Tyrolean" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Medic_Tyrolean_Hat" - "item_description" "#TF_Medic_Tyrolean_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_tyrolean" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_tyrolean.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "102" - { - "name" "Respectless Rubber Glove" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Pyro_Chicken_Hat" - "item_description" "#TF_Pyro_Chicken_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_chicken" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_chicken.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_rubber_pickup.wav" - "drop_sound" "ui/item_rubber_pickup.wav" - } - "103" - { - "name" "Camera Beard" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Spy_Camera_Beard" - "item_description" "#TF_Spy_Camera_Beard_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_camera_beard" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_camera_beard.mdl" - "drop_type" "none" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "104" - { - "name" "Otolaryngologist's Mirror" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Medic_Mirror_Hat" - "item_description" "#TF_Medic_Mirror_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_mirror" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_mirror.mdl" - "drop_type" "none" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "105" - { - "name" "Brigade Helm" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Pyro_Fireman_Helmet" - "item_description" "#TF_Pyro_Fireman_Helmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/fireman_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/fireman_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "106" - { - "name" "Bonk Helm" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Scout_Bonk_Helmet" - "item_description" "#TF_Scout_Bonk_Helmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/bonk_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/bonk_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "107" - { - "name" "Ye Olde Baker Boy" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Scout_Newsboy_Cap" - "item_description" "#TF_Scout_Newsboy_Cap_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/newsboy_cap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/newsboy_cap.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "108" - { - "name" "Backbiter's Billycock" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Spy_Derby_Hat" - "item_description" "#TF_Spy_Derby_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/derby_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/derby_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "109" - { - "name" "Professional's Panama" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Sniper_Straw_Hat" - "item_description" "#TF_Sniper_Straw_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/straw_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/straw_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "110" - { - "name" "Master's Yellow Belt" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Sniper_Jarate_Headband" - "item_description" "#TF_Sniper_Jarate_Headband_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/jarate_headband" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/jarate_headband.mdl" - "drop_type" "none" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "111" - { - "name" "Baseball Bill's Sports Shine" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Hatless_Scout" - "item_description" "#TF_Hatless_Scout_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/scout_nohat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "115" - { - "name" "Mildly Disturbing Halloween Mask" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Holiday_Hat" - "item_name" "#TF_Halloween_Hat" - "item_description" "#TF_Halloween_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_halloween" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_halloween.mdl" - "sniper" "models/player/items/sniper/sniper_halloween.mdl" - "soldier" "models/player/items/soldier/soldier_halloween.mdl" - "demoman" "models/player/items/demo/demo_halloween.mdl" - "medic" "models/player/items/medic/medic_halloween.mdl" - "heavy" "models/player/items/heavy/heavy_halloween.mdl" - "spy" "models/player/items/spy/spy_halloween.mdl" - "engineer" "models/player/items/engineer/engineer_halloween.mdl" - "pyro" "models/player/items/pyro/pyro_halloween.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "116" - { - "name" "Ghastly Gibus" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Domination_Hat" - "item_description" "#TF_Domination_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_domination_2009" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/all_domination_2009.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2009" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "117" - { - "name" "Ritzy Rick's Hair Fixative" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Hatless_Sniper" - "item_description" "#TF_Hatless_Sniper_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/sniper_nohat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "none" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "118" - { - "name" "Texas Slim's Dome Shine" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Hatless_Engineer" - "item_description" "#TF_Hatless_Engineer_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_nohat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "none" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_bald_head_pickup.wav" - "drop_sound" "ui/item_bald_head_pickup.wav" - } - "120" - { - "name" "Scotsman's Stove Pipe" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Demo_Top_Hat" - "item_description" "#TF_Demo_Top_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/top_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/top_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "121" - { - "name" "Web Easteregg Medal" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Medal" - "item_name" "#TF_Soldier_Medal_Web_Sleuth" - "item_description" "#TF_Soldier_Medal_Web_Sleuth_Desc" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "backpack/player/items/soldier/medal" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "medal" - } - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "122" - { - "name" "CheatDetectedMinor" - "hidden" "1" - "item_class" "tf_wearable_item" - "item_type_name" "CheatDetector" - "item_name" "#TF_CheatDetectedMinor" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "123" - { - "name" "CheatDetectedMajor" - "hidden" "1" - "item_class" "tf_wearable_item" - "item_type_name" "CheatDetector" - "item_name" "#TF_CheatDetectedMajor" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "124" - { - "name" "CheatDetectedHonesty" - "hidden" "1" - "item_class" "tf_wearable_item" - "item_type_name" "CheatDetector" - "item_name" "#TF_HonestyReward" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "125" - { - "name" "Honest Halo" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_HonestyHalo" - "item_name" "#TF_HonestyHalo" - "item_description" "#TF_HonestyHalo_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/player/items/all_class/all_halo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/all_halo.mdl" - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "attributes" - { - "attach particle effect" - { - "attribute_class" "set_attached_particle" - "value" "5" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "126" - { - "name" "L4D Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_L4DHat" - "item_name" "#TF_L4DHat" - "item_description" "#TF_L4DHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/demo/demo_bill" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_bill.mdl" - "sniper" "models/player/items/sniper/sniper_bill.mdl" - "soldier" "models/player/items/soldier/soldier_bill.mdl" - "demoman" "models/player/items/demo/demo_bill.mdl" - "medic" "models/player/items/medic/medic_bill.mdl" - "heavy" "models/player/items/heavy/heavy_bill.mdl" - "spy" "models/player/items/spy/spy_bill.mdl" - "engineer" "models/player/items/engineer/engineer_bill.mdl" - "pyro" "models/player/items/pyro/pyro_bill.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "127" - { - "name" "The Direct Hit" - "item_class" "tf_weapon_rocketlauncher_directhit" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Unique_Achievement_RocketLauncher" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_directhit/c_directhit" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_directhit/c_directhit.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "Blast radius decreased" - { - "attribute_class" "mult_explosion_radius" - "value" "0.3" - } - "Projectile speed increased" - { - "attribute_class" "mult_projectile_speed" - "value" "1.8" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.25" - } - "mod mini-crit airborne" - { - "attribute_class" "mini_crit_airborne" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "128" - { - "name" "The Equalizer" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Pickaxe" - "item_name" "#TF_Unique_Achievement_Pickaxe" - "item_logname" "unique_pickaxe" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_pickaxe/c_pickaxe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_pickaxe/c_pickaxe.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "mod shovel damage boost" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_PickAxe.Swing" - "sound_melee_hit" "Weapon_PickAxe.HitFlesh" - "sound_melee_burst" "Weapon_PickAxe.SwingCrit" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "129" - { - "name" "The Buff Banner" - "item_class" "tf_weapon_buff_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Battle_Banner" - "item_name" "#TF_Unique_Achievement_SoldierBuff" - "item_description" "#TF_Unique_Achievement_SoldierBuff_Desc" - "item_slot" "secondary" - "anim_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_buffpack/c_buffpack" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bugle/c_bugle.mdl" - "attach_to_hands" "1" - "extra_wearable" "models/weapons/c_models/c_buffpack/c_buffpack.mdl" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "attributes" - { - "mod soldier buff type" - { - "attribute_class" "set_buff_type" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_pack_pickup.wav" - "drop_sound" "ui/item_pack_drop.wav" - } - "130" - { - "name" "The Scottish Resistance" - "item_class" "tf_weapon_pipebomblauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_PipebombLauncher" - "item_name" "#TF_Unique_Achievement_StickyLauncher" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "item_logname" "stickybomb_defender" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/w_models/w_stickybomb_defender" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_scottish_resistance.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "fire rate bonus" - { - "attribute_class" "mult_postfiredelay" - "value" "0.75" - } - "sticky detonate mode" - { - "attribute_class" "set_detonate_mode" - "value" "1" - } - "stickies detonate stickies" - { - "attribute_class" "stickies_detonate_stickies" - "value" "1" - } - "maxammo secondary increased" - { - "attribute_class" "mult_maxammo_secondary" - "value" "1.5" - } - "max pipebombs increased" - { - "attribute_class" "add_max_pipebombs" - "value" "6" - } - "sticky arm time penalty" - { - "attribute_class" "sticky_arm_time" - "value" "0.8" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_secondary" "1" - "only_on_pipebombs" "1" - "wpn_lobs_projectiles" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "131" - { - "name" "The Chargin' Targe" - "item_class" "tf_wearable_item_demoshield" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Shield" - "item_name" "#TF_Unique_Achievement_Shield" - "item_description" "#TF_Unique_Achievement_Shield_Desc" - "item_slot" "primary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_targe/c_targe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_targe/c_targe.mdl" - "act_as_wearable" "1" - "attach_to_hands" "0" - "attach_to_hands_vm_only" "1" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "dmg taken from fire reduced" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "0.5" - } - "dmg taken from blast reduced" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "0.6" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "132" - { - "name" "The Eyelander" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Sword" - "item_name" "#TF_Unique_Achievement_Sword" - "item_description" "#TF_Unique_Achievement_Sword_Desc" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_claymore/c_claymore" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_claymore/c_claymore.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "133" - { - "name" "The Gunboats" - "item_class" "tf_wearable_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Boots" - "item_name" "#TF_Unique_Blast_Boots" - "item_slot" "secondary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_rocketboots_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rocketboots_soldier.mdl" - "act_as_wearable" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "rocket jump damage reduction" - { - "attribute_class" "rocket_jump_dmg_reduction" - "value" "0.4" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "134" - { - "name" "Propaganda Contest First Place" - "hidden" "0" - "item_class" "tf_wearable_item" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PropagandaContest_FirstPlace" - "item_description" "#TF_PropagandaContest_FirstPlace_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_first" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_first.mdl" - "sniper" "models/player/items/sniper/hat_first.mdl" - "soldier" "models/player/items/soldier/hat_first.mdl" - "demoman" "models/player/items/demo/hat_first.mdl" - "medic" "models/player/items/medic/hat_first.mdl" - "heavy" "models/player/items/heavy/hat_first.mdl" - "spy" "models/player/items/spy/hat_first.mdl" - "engineer" "models/player/items/engineer/hat_first.mdl" - "pyro" "models/player/items/pyro/hat_first.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "135" - { - "name" "Towering Pillar of Hats" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ToweringPillar_Hat" - "item_description" "#TF_ToweringPillar_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_first_nr" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_first_nr.mdl" - "sniper" "models/player/items/sniper/hat_first_nr.mdl" - "soldier" "models/player/items/soldier/hat_first_nr.mdl" - "demoman" "models/player/items/demo/hat_first_nr.mdl" - "medic" "models/player/items/medic/hat_first_nr.mdl" - "heavy" "models/player/items/heavy/hat_first_nr.mdl" - "spy" "models/player/items/spy/hat_first_nr.mdl" - "engineer" "models/player/items/engineer/hat_first_nr.mdl" - "pyro" "models/player/items/pyro/hat_first_nr.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "136" - { - "name" "Propaganda Contest Second Place" - "hidden" "0" - "item_class" "tf_wearable_item" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PropagandaContest_SecondPlace" - "item_description" "#TF_PropagandaContest_SecondPlace_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_second" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_second.mdl" - "sniper" "models/player/items/sniper/hat_second.mdl" - "soldier" "models/player/items/soldier/hat_second.mdl" - "demoman" "models/player/items/demo/hat_second.mdl" - "medic" "models/player/items/medic/hat_second.mdl" - "heavy" "models/player/items/heavy/hat_second.mdl" - "spy" "models/player/items/spy/hat_second.mdl" - "engineer" "models/player/items/engineer/hat_second.mdl" - "pyro" "models/player/items/pyro/hat_second.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "137" - { - "name" "Noble Amassment of Hats" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_NobleAmassment_Hat" - "item_description" "#TF_NobleAmassment_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_second_nr" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_second_nr.mdl" - "sniper" "models/player/items/sniper/hat_second_nr.mdl" - "soldier" "models/player/items/soldier/hat_second_nr.mdl" - "demoman" "models/player/items/demo/hat_second_nr.mdl" - "medic" "models/player/items/medic/hat_second_nr.mdl" - "heavy" "models/player/items/heavy/hat_second_nr.mdl" - "spy" "models/player/items/spy/hat_second_nr.mdl" - "engineer" "models/player/items/engineer/hat_second_nr.mdl" - "pyro" "models/player/items/pyro/hat_second_nr.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "138" - { - "name" "Propaganda Contest Third Place" - "hidden" "0" - "item_class" "tf_wearable_item" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PropagandaContest_ThirdPlace" - "item_description" "#TF_PropagandaContest_ThirdPlace_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_third" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_third.mdl" - "sniper" "models/player/items/sniper/hat_third.mdl" - "soldier" "models/player/items/soldier/hat_third.mdl" - "demoman" "models/player/items/demo/hat_third.mdl" - "medic" "models/player/items/medic/hat_third.mdl" - "heavy" "models/player/items/heavy/hat_third.mdl" - "spy" "models/player/items/spy/hat_third.mdl" - "engineer" "models/player/items/engineer/hat_third.mdl" - "pyro" "models/player/items/pyro/hat_third.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "139" - { - "name" "Modest Pile of Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ModestPile_Hat" - "item_description" "#TF_ModestPile_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_third_nr" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_third_nr.mdl" - "sniper" "models/player/items/sniper/hat_third_nr.mdl" - "soldier" "models/player/items/soldier/hat_third_nr.mdl" - "demoman" "models/player/items/demo/hat_third_nr.mdl" - "medic" "models/player/items/medic/hat_third_nr.mdl" - "heavy" "models/player/items/heavy/hat_third_nr.mdl" - "spy" "models/player/items/spy/hat_third_nr.mdl" - "engineer" "models/player/items/engineer/hat_third_nr.mdl" - "pyro" "models/player/items/pyro/hat_third_nr.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "140" - { - "name" "The Reserve Shooter" - "first_sale_date" "2011/03/23" - "item_class" "tf_weapon_shotgun_soldier" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "can_craft_count" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - "can_deal_mvm_penetration_damage" "1" - "can_deal_long_distance_damage" "1" - "can_deal_taunt_damage" "1" - } - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_ReserveShooter" - "item_slot" "secondary" - "item_logname" "reserve_shooter" - "item_iconname" "reserve_kill" - "show_in_armory" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_reserve_shooter/c_reserve_shooter" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_reserve_shooter/c_reserve_shooter.mdl" - "used_by_classes" - { - "soldier" "1" - "pyro" "1" - } - "visuals" - { - "sound_single_shot" "weapons/reserve_shooter_02.wav" - "sound_burst" "weapons/reserve_shooter_02_crit.wav" - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "attributes" - { - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.5" - } - "mod mini-crit airborne deploy" - { - "attribute_class" "mini_crit_airborne_deploy" - "value" "3" - } - "deploy time decreased" - { - "attribute_class" "mult_deploy_time" - "value" "0.85" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "141" - { - "name" "The Frontier Justice" - "item_class" "tf_weapon_sentry_revenge" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Unique_Sentry_Shotgun" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "item_logname" "frontier_justice" - "item_iconname" "frontier_kill" - "image_inventory" "backpack/weapons/c_models/c_frontierjustice/c_frontierjustice" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_frontierjustice/c_frontierjustice.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "mod sentry killed revenge" - { - "attribute_class" "sentry_killed_revenge" - "value" "1" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.5" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "142" - { - "name" "The Gunslinger" - "item_class" "tf_weapon_robot_arm" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Robot_Arm" - "item_name" "#TF_Unique_Robot_Arm" - "item_slot" "melee" - "item_quality" "unique" - "anim_slot" "item2" - "min_ilevel" "15" - "max_ilevel" "15" - "propername" "0" - "item_logname" "robot_arm" - "item_iconname" "robot_arm_kill" - "image_inventory" "backpack/weapons/gunslinger" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "mod wrench builds minisentry" - { - "attribute_class" "wrench_builds_minisentry" - "value" "1" - } - "max health additive bonus" - { - "attribute_class" "add_maxhealth" - "value" "25" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "rightarm" - } - "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" - "drop_sound" "ui/item_robot_arm_drop.wav" - } - "143" - { - "name" "OSX Item" - "hidden" "0" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_OSXItem" - "item_description" "#TF_OSXItem_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/all_class/earbuds" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_earbuds.mdl" - "sniper" "models/player/items/sniper/sniper_earbuds.mdl" - "soldier" "models/player/items/soldier/soldier_earbuds.mdl" - "demoman" "models/player/items/demo/demo_earbuds.mdl" - "medic" "models/player/items/medic/medic_earbuds.mdl" - "heavy" "models/player/items/heavy/heavy_earbuds.mdl" - "spy" "models/player/items/spy/spy_earbuds.mdl" - "engineer" "models/player/items/engineer/engineer_earbuds.mdl" - "pyro" "models/player/items/pyro/pyro_earbuds.mdl" - } - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "attached_particlesystem" - { - "system" "headphone_notes" - "attachment" "ear_R" - } - "attached_particlesystem" - { - "system" "headphone_notes" - "attachment" "ear_L" - } - } - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - } - "144" - { - "name" "Medic Mask" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MedicMask" - "item_description" "#TF_MedicMask_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_mask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_mask.mdl" - "drop_type" "none" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "145" - { - "name" "Heavy Hair" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyHair" - "item_description" "#TF_HeavyHair_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/hounddog" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/hounddog.mdl" - "drop_type" "none" - "propername" "1" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "146" - { - "name" "Demoman Hallmark" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemomanHallmark" - "item_description" "#TF_DemomanHallmark_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hallmark" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/hallmark.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "147" - { - "name" "Spy Noble Hair" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SpyNobleHair" - "item_description" "#TF_SpyNobleHair_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/noblehair" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/noblehair.mdl" - "drop_type" "none" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "148" - { - "name" "Engineer Welding Mask" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_EngineerWeldingMask" - "item_description" "#TF_EngineerWeldingMask_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/weldingmask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/weldingmask.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "animation" - { - "activity" "ACT_IDLE" - "playback" "on_spawn" - } - "animation" - { - "activity" "ACT_RUN" - "playback" "start_building" - } - "animation" - { - "activity" "ACT_IDLE" - "playback" "stop_building" - } - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "150" - { - "name" "Scout Beanie" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScoutBeanie" - "item_description" "#TF_ScoutBeanie_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/beanie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/beanie.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "151" - { - "name" "Pyro Brain Sucker" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroBrainSucker" - "item_description" "#TF_PyroBrainSucker_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_brainsucker" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_brainsucker.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_rubber_pickup.wav" - "drop_sound" "ui/item_rubber_pickup.wav" - } - "152" - { - "name" "Soldier Samurai Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierSamurai" - "item_description" "#TF_SoldierSamurai_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_samurai" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_samurai.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "153" - { - "name" "The Homewrecker" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "sledgehammer" - "item_iconname" "sledgehammer" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SledgeHammer" - "item_name" "#TF_Unique_SledgeHammer" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_sledgehammer/c_sledgehammer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_sledgehammer/c_sledgehammer.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "dmg bonus vs buildings" - { - "attribute_class" "mult_dmg_vs_buildings" - "value" "2.0" - } - "dmg penalty vs players" - { - "attribute_class" "mult_dmg_vs_players" - "value" "0.75" - } - "damage applies to sappers" - { - "attribute_class" "set_dmg_apply_to_sapper" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "154" - { - "name" "The Pain Train" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "paintrain" - "item_iconname" "paintrain" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_MakeshiftClub" - "item_name" "#TF_Unique_Makeshiftclub" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_paintrain/c_paintrain" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_paintrain/c_paintrain.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "demoman" "1" - "soldier" "1" - } - "attributes" - { - "increase player capture value" - { - "attribute_class" "add_player_capturevalue" - "value" "1" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "1.1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "155" - { - "name" "The Southern Hospitality" - "item_class" "tf_weapon_wrench" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Unique_Combat_Wrench" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "propername" "0" - "item_logname" "southern_hospitality" - "item_iconname" "southern_comfort_kill" - "image_inventory" "backpack/weapons/c_models/c_spikewrench/c_spikewrench" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_spikewrench/c_spikewrench.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "bleeding duration" - { - "attribute_class" "bleeding_duration" - "value" "5" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "1.20" - } - } - "visuals" - { - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_ITEM3_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_ITEM3_VM_DRAW" - } - "animation" - { - "activity" "ACT_VM_HITCENTER" - "replacement" "ACT_ITEM3_VM_HITCENTER" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_ITEM3_VM_SWINGHARD" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "158" - { - "name" "Sniper Pith Helmet" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SniperPithHelmet" - "item_description" "#TF_SniperPithHelmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/pith_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/pith_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "159" - { - "name" "The Dalokohs Bar" - "item_class" "tf_weapon_lunchbox" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_Lunchbox_Chocolate" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_chocolate/c_chocolate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_chocolate/c_chocolate.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "heavy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_sandwich_drop.wav" - "drop_sound" "ui/item_sandwich_pickup.wav" - "attributes" - { - "lunchbox adds maxhealth bonus" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - } - } - "160" - { - "name" "TTG Max Pistol" - "item_class" "tf_weapon_pistol" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_TTG_MaxGun" - "item_description" "#TF_TTG_MaxGun_Desc" - "item_slot" "secondary" - "item_logname" "maxgun" - "item_iconname" "maxgun" - "image_inventory" "backpack/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun.mdl" - "model_world" "models/weapons/w_models/w_ttg_max_gun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "engineer" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "161" - { - "name" "TTG Sam Revolver" - "item_class" "tf_weapon_revolver" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_TTG_SamRevolver" - "item_description" "#TF_TTG_SamRevolver_Desc" - "item_slot" "secondary" - "item_quality" "unique" - "item_logname" "samrevolver" - "item_iconname" "samrevolver" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_ttg_sam_gun/c_ttg_sam_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ttg_sam_gun/c_ttg_sam_gun.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "spy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "162" - { - "name" "TTG Max Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TTG_MaxsHat" - "item_description" "#TF_TTG_MaxsHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_ttg_max" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_ttg_max.mdl" - "sniper" "models/player/items/sniper/sniper_ttg_max.mdl" - "soldier" "models/player/items/soldier/soldier_ttg_max.mdl" - "demoman" "models/player/items/demo/demo_ttg_max.mdl" - "medic" "models/player/items/medic/medic_ttg_max.mdl" - "heavy" "models/player/items/heavy/heavy_ttg_max.mdl" - "spy" "models/player/items/spy/spy_ttg_max.mdl" - "engineer" "models/player/items/engineer/engineer_ttg_max.mdl" - "pyro" "models/player/items/pyro/pyro_ttg_max.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - } - "163" - { - "name" "Crit-a-Cola" - "item_class" "tf_weapon_lunchbox_drink" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_EnergyDrink_CritCola" - "item_description" "#TF_Unique_EnergyDrink_CritCola_Desc" - "anim_slot" "ITEM1" - "item_slot" "secondary" - "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_critcola" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "skin" "2" - "custom_particlesystem" - { - "system" "energydrink_cola_splash" - } - "sound_deploy" "Scout.DodgeCanOpen" - } - "attributes" - { - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_soda_can_pickup.wav" - "drop_sound" "ui/item_soda_can_drop.wav" - } - "164" - { - "name" "Employee Badge A" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_A" - "item_description" "#TF_Employee_Badge_A_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_gold" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "15" - "max_ilevel" "15" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "0" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "165" - { - "name" "Employee Badge B" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_B" - "item_description" "#TF_Employee_Badge_B_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_silver" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "1" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "166" - { - "name" "Employee Badge C" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_C" - "item_description" "#TF_Employee_Badge_C_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_bronze" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "2" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "169" - { - "name" "Golden Wrench" - "item_class" "tf_weapon_wrench" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Unique_Golden_Wrench" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "25" - "max_ilevel" "25" - "propername" "0" - "attach_to_hands" "1" - "item_logname" "wrench_golden" - "item_iconname" "wrench_golden" - "image_inventory" "backpack/weapons/c_models/c_wrench/gold_wrench" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_wrench/c_wrench.mdl" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "material_override" "models/weapons/c_items/gold_wrench.vmt" - } - "attributes" - { - "turn to gold" - { - "attribute_class" "set_turn_to_gold" - "value" "1" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "170" - { - "name" "Employee Badge Plat" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_Plat" - "item_description" "#TF_Employee_Badge_Plat_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_platinum" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "20" - "max_ilevel" "20" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "3" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "171" - { - "name" "The Tribalman's Shiv" - "item_class" "tf_weapon_club" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "tribalkukri" - "item_iconname" "tribalkukri" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Club" - "item_name" "#TF_Unique_TribalmanKukri" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_wood_machete/c_wood_machete" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_wood_machete/c_wood_machete.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "bleeding duration" - { - "attribute_class" "bleeding_duration" - "value" "6" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.5" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "172" - { - "name" "The Scotsman's Skullcutter" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "battleaxe" - "item_iconname" "battleaxe" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Axe" - "item_name" "#TF_Unique_BattleAxe" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_battleaxe/c_battleaxe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "model_player" "models/weapons/c_models/c_battleaxe/c_battleaxe.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.2" - } - "move speed penalty" - { - "attribute_class" "mult_player_movespeed" - "value" "0.85" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "173" - { - "name" "The Vita-Saw" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "battleneedle" - "item_iconname" "battleneedle" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Unique_BattleSaw" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_uberneedle/c_uberneedle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_uberneedle/c_uberneedle.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "medic" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "attributes" - { - "preserve ubercharge" - { - "attribute_class" "preserve_ubercharge" - "value" "20" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-10" - } - } - "visuals" - { - "sound_taunt" "Taunt.MedicViolinUber" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "174" - { - "name" "Scout Whoopee Cap" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScoutWhoopee" - "item_description" "#TF_ScoutWhoopee_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/scout_whoopee" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/scout_whoopee.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "175" - { - "name" "Pyro Monocle" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroMonocle" - "item_description" "#TF_PyroMonocle_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_monocle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_monocle.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "177" - { - "name" "Medic Goggles" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MedicGoggles" - "item_description" "#TF_MedicGoggles_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_goggles" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_goggles.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_nvg_pickup.wav" - } - "178" - { - "name" "Engineer Earmuffs" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_EngineerEarmuffs" - "item_description" "#TF_EngineerEarmuffs_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engy_earphones" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engy_earphones.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - } - "179" - { - "name" "Demoman Tricorne" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemomanTricorne" - "item_description" "#TF_DemomanTricorne_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_tricorne" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_tricorne.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "180" - { - "name" "Spy Beret" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SpyBeret" - "item_description" "#TF_SpyBeret_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_beret" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_beret.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "181" - { - "name" "Sniper Fishing Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SniperFishingHat" - "item_description" "#TF_SniperFishingHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/sniper_fishinghat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/sniper_fishinghat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "182" - { - "name" "Pyro Helm" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroHelm" - "item_description" "#TF_PyroHelm_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_pyrolean" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_pyrolean.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "183" - { - "name" "Soldier Drill Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierDrillHat" - "item_description" "#TF_SoldierDrillHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_sargehat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_sargehat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "184" - { - "name" "Medic Gatsby" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MedicGatsby" - "item_description" "#TF_MedicGatsby_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_gatsby" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_gatsby.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "185" - { - "name" "Heavy Do-rag" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyDorag" - "item_description" "#TF_HeavyDorag_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_bandana" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_bandana.mdl" - "drop_type" "none" - "propername" "1" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "189" - { - "name" "Parasite Hat" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Parasite_Hat" - "item_description" "#TF_Parasite_Hat_Desc" - "item_slot" "head" - "image_inventory" "backpack/player/items/all_class/parasite_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/parasite_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_as_parasite_pickup.wav" - "drop_sound" "ui/item_as_parasite_drop.wav" - } - "190" - { - "name" "Upgradeable TF_WEAPON_BAT" - "item_class" "tf_weapon_bat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Bat" - "item_name" "#TF_Weapon_Bat" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_bat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_bat.mdl" - "used_by_classes" - { - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "191" - { - "name" "Upgradeable TF_WEAPON_BOTTLE" - "item_class" "tf_weapon_bottle" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Bottle" - "item_name" "#TF_Weapon_Bottle" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_bottle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_bottle.mdl" - "used_by_classes" - { - "demoman" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_bottle_pickup.wav" - "drop_sound" "ui/item_bottle_drop.wav" - } - "192" - { - "name" "Upgradeable TF_WEAPON_FIREAXE" - "item_class" "tf_weapon_fireaxe" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_FireAxe" - "item_name" "#TF_Weapon_FireAxe" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_fireaxe.mdl" - "used_by_classes" - { - "pyro" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "193" - { - "name" "Upgradeable TF_WEAPON_CLUB" - "item_class" "tf_weapon_club" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Club" - "item_name" "#TF_Weapon_Club" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_machete" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_machete/c_machete.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "sniper" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "194" - { - "name" "Upgradeable TF_WEAPON_KNIFE" - "item_class" "tf_weapon_knife" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Knife" - "item_name" "#TF_Weapon_Knife" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_knife" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_knife.mdl" - "used_by_classes" - { - "spy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "195" - { - "name" "Upgradeable TF_WEAPON_FISTS" - "item_class" "tf_weapon_fists" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Fists" - "item_name" "#TF_Weapon_Fists" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/v_models/v_fist_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - "heavy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - } - "196" - { - "name" "Upgradeable TF_WEAPON_SHOVEL" - "item_class" "tf_weapon_shovel" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Shovel" - "item_name" "#TF_Weapon_Shovel" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_shovel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_shovel.mdl" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_shovel_pickup.wav" - "drop_sound" "ui/item_shovel_drop.wav" - } - "197" - { - "name" "Upgradeable TF_WEAPON_WRENCH" - "item_class" "tf_weapon_wrench" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Weapon_Wrench" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_wrench" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_wrench.mdl" - "used_by_classes" - { - "engineer" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "198" - { - "name" "Upgradeable TF_WEAPON_BONESAW" - "item_class" "tf_weapon_bonesaw" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Weapon_Bonesaw" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_bonesaw/c_bonesaw" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_bonesaw.mdl" - "used_by_classes" - { - "medic" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "199" - { - "name" "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" - "item_class" "tf_weapon_shotgun_primary" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Weapon_Shotgun" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_shotgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_shotgun.mdl" - "used_by_classes" - { - "engineer" "primary" - "pyro" "secondary" - "soldier" "secondary" - "heavy" "secondary" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "200" - { - "name" "Upgradeable TF_WEAPON_SCATTERGUN" - "item_class" "tf_weapon_scattergun" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Scattergun" - "item_name" "#TF_Weapon_Scattergun" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_scattergun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_scattergun.mdl" - "used_by_classes" - { - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "201" - { - "name" "Upgradeable TF_WEAPON_SNIPERRIFLE" - "item_class" "tf_weapon_sniperrifle" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_SniperRifle" - "item_name" "#TF_Weapon_SniperRifle" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_sniperrifle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_sniperrifle.mdl" - "used_by_classes" - { - "sniper" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "wpn_uses_aimmode" "1" - "only_on_srifle" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "202" - { - "name" "Upgradeable TF_WEAPON_MINIGUN" - "item_class" "tf_weapon_minigun" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Weapon_Minigun" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_minigun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_minigun.mdl" - "used_by_classes" - { - "heavy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "wpn_uses_aimmode" "1" - "only_on_minigun" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "203" - { - "name" "Upgradeable TF_WEAPON_SMG" - "item_class" "tf_weapon_smg" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_SMG" - "item_name" "#TF_Weapon_SMG" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_smg" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_smg.mdl" - "used_by_classes" - { - "sniper" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "204" - { - "name" "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" - "item_class" "tf_weapon_syringegun_medic" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_SyringeGun" - "item_name" "#TF_Weapon_SyringeGun" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_syringegun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_syringegun.mdl" - "used_by_classes" - { - "medic" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "205" - { - "name" "Upgradeable TF_WEAPON_ROCKETLAUNCHER" - "item_class" "tf_weapon_rocketlauncher" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Weapon_RocketLauncher" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_rocketlauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_rocketlauncher.mdl" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "206" - { - "name" "Upgradeable TF_WEAPON_GRENADELAUNCHER" - "item_class" "tf_weapon_grenadelauncher" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_GrenadeLauncher" - "item_name" "#TF_Weapon_GrenadeLauncher" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_grenadelauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_grenadelauncher.mdl" - "used_by_classes" - { - "demoman" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_lobs_projectiles" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "207" - { - "name" "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" - "item_class" "tf_weapon_pipebomblauncher" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_PipebombLauncher" - "item_name" "#TF_Weapon_PipebombLauncher" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_stickybomb_launcher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_stickybomb_launcher.mdl" - "used_by_classes" - { - "demoman" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_secondary" "1" - "only_on_pipebombs" "1" - "wpn_lobs_projectiles" "1" - } - "visuals" - { - "skin" "0" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "208" - { - "name" "Upgradeable TF_WEAPON_FLAMETHROWER" - "item_class" "tf_weapon_flamethrower" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_FlameThrower" - "item_name" "#TF_Weapon_FlameThrower" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_flamethrower/c_flamethrower" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "pyro" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "wpn_ignites" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "209" - { - "name" "Upgradeable TF_WEAPON_PISTOL" - "item_class" "tf_weapon_pistol" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_Weapon_Pistol" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_pistol" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_pistol.mdl" - "used_by_classes" - { - "engineer" "1" - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "210" - { - "name" "Upgradeable TF_WEAPON_REVOLVER" - "item_class" "tf_weapon_revolver" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_Weapon_Revolver" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_revolver" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_revolver.mdl" - "used_by_classes" - { - "spy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "211" - { - "name" "Upgradeable TF_WEAPON_MEDIGUN" - "item_class" "tf_weapon_medigun" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Medigun" - "item_name" "#TF_Weapon_Medigun" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_medigun/c_medigun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_medigun.mdl" - "used_by_classes" - { - "medic" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_heal" "1" - "attrib_uber" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "212" - { - "name" "Upgradeable TF_WEAPON_INVIS" - "item_class" "tf_weapon_invis" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_Weapon_Watch" - "item_slot" "pda2" - "item_quality" "unique" - "anim_slot" "FORCE_NOT_USED" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_spy_watch/parts/c_spy_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_watch_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_cloak" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - } - "213" - { - "name" "The Attendant" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "craft_class" "hat" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheAttendant" - "item_description" "#TF_TheAttendant_Desc" - "item_slot" "head" - "item_quality" "unique" - "propername" "1" - "image_inventory" "backpack/player/items/pyro/attendant" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/attendant.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "item_set" "polycount_pyro" - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "214" - { - "name" "The Powerjack" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "powerjack" - "item_iconname" "powerjack" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SledgeHammer" - "item_name" "#TF_ThePowerjack" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_powerjack/c_powerjack" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_powerjack/c_powerjack.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "heal on kill" - { - "attribute_class" "heal_on_kill" - "value" "75" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.25" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "item_set" "polycount_pyro" - } - "215" - { - "name" "The Degreaser" - "item_class" "tf_weapon_flamethrower" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "degreaser" - "item_iconname" "degreaser" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Flamethrower" - "item_name" "#TF_TheDegreaser" - "item_slot" "primary" - "image_inventory" "backpack/weapons/c_models/c_degreaser/c_degreaser" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_degreaser/c_degreaser.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "deploy time decreased" - { - "attribute_class" "mult_deploy_time" - "value" "0.35" - } - "weapon burn dmg reduced" - { - "attribute_class" "mult_wpn_burndmg" - "value" "0.75" - } - } - "visuals" - { - "sound_single_shot" "Weapon_Degreaser.FireStart" - "sound_special1" "Weapon_Degreaser.FireLoop" - "sound_burst" "Weapon_Degreaser.FireLoopCrit" - "sound_special3" "Weapon_Degreaser.FireEnd" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "item_set" "polycount_pyro" - } - "216" - { - "name" "Rimmed Raincatcher" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemomanPirate" - "item_description" "#TF_DemomanPirate_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/drinking_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/drinking_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "219" - { - "name" "The Milkman" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheMilkman" - "item_description" "#TF_TheMilkman_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/milkhat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/milkhat.mdl" - "drop_type" "drop" - "propername" "1" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "item_set" "polycount_scout" - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "220" - { - "name" "The Shortstop" - "item_class" "tf_weapon_handgun_scout_primary" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Peppergun" - "item_description" "#TF_TheShortstop_Desc" - "item_name" "#TF_TheShortstop" - "item_slot" "primary" - "anim_slot" "secondary" - "item_quality" "unique" - "item_logname" "short_stop" - "item_iconname" "short_stop" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_shortstop/c_shortstop" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shortstop/c_shortstop.mdl" - "attach_to_hands" "1" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - } - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Short_Stop.Single" - "sound_burst" "Weapon_Short_Stop.Single" - "muzzle_flash" "muzzle_bignasty" - "tracer_effect" "bullet_bignasty_tracer01" - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_SECONDARY_VM_IDLE_2" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_SECONDARY_VM_DRAW_2" - } - "animation" - { - "activity" "ACT_VM_PRIMARYATTACK" - "replacement" "ACT_SECONDARY_VM_PRIMARYATTACK_2" - } - "animation" - { - "activity" "ACT_VM_RELOAD" - "replacement" "ACT_SECONDARY_VM_RELOAD_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND" - "replacement" "ACT_MP_RELOAD_STAND_SECONDARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH" - "replacement" "ACT_MP_RELOAD_CROUCH_SECONDARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_SWIM" - "replacement" "ACT_MP_RELOAD_SWIM_SECONDARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK" - "replacement" "ACT_MP_RELOAD_AIRWALK_SECONDARY_2" - } - "animation_replacement" - { - "ACT_VM_IDLE" "ACT_SECONDARY_VM_IDLE_2" - "ACT_VM_DRAW" "ACT_SECONDARY_VM_DRAW_2" - "ACT_VM_PRIMARYATTACK" "ACT_SECONDARY_VM_PRIMARYATTACK_2" - "ACT_VM_RELOAD" "ACT_SECONDARY_VM_RELOAD_2" - "ACT_MP_RELOAD_STAND" "ACT_MP_RELOAD_STAND_SECONDARY_2" - "ACT_MP_RELOAD_CROUCH" "ACT_MP_RELOAD_CROUCH_SECONDARY_2" - "ACT_MP_RELOAD_SWIM" "ACT_MP_RELOAD_SWIM_SECONDARY_2" - "ACT_MP_RELOAD_AIRWALK" "ACT_MP_RELOAD_AIRWALK_SECONDARY_2" - } - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - "item_set" "polycount_scout" - } - "221" - { - "name" "The Holy Mackerel" - "item_class" "tf_weapon_bat_fish" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Fish" - "item_name" "#TF_TheHolyMackerel" - "item_description" "#TF_TheHolyMackerel_Desc" - "item_logname" "holy_mackerel" - "item_slot" "melee" - "item_quality" "unique" - "item_logname" "holy_mackerel" - "item_iconname" "holy_mackerel" - "propername" "0" - "min_ilevel" "42" - "max_ilevel" "42" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_holymackerel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_holymackerel.mdl" - "used_by_classes" - { - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" - "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" - } - "mouse_pressed_sound" "ui/item_gooey_pickup.wav" - "drop_sound" "ui/item_gooey_pickup.wav" - "item_set" "polycount_scout" - } - "222" - { - "name" "Mad Milk" - "item_class" "tf_weapon_jar_milk" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Jar_Milk" - "item_description" "#TF_MadMilk_Desc" - "item_name" "#TF_MadMilk" - "item_slot" "secondary" - "item_quality" "unique" - "anim_slot" "item1" - "min_ilevel" "5" - "max_ilevel" "5" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_madmilk/c_madmilk" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_madmilk/c_madmilk.mdl" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "skin" "2" - "custom_particlesystem" - { - "system" "energydrink_milk_splash" - } - "sound_deploy" "Weapon_MadMilk.Draw" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_bottle_pickup.wav" - "drop_sound" "ui/item_bottle_drop.wav" - "item_set" "polycount_scout" - } - "223" - { - "name" "The Familiar Fez" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheFamiliarFez" - "item_description" "#TF_TheFamiliarFez_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/fez" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/fez.mdl" - "drop_type" "drop" - "item_set" "polycount_spy" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "224" - { - "name" "L'Etranger" - "item_class" "tf_weapon_revolver" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_LEtranger" - "item_slot" "secondary" - "item_quality" "unique" - "propername" "0" - "item_logname" "letranger" - "item_iconname" "letranger" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_letranger/c_letranger" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_letranger/c_letranger.mdl" - "attach_to_hands" "1" - "item_set" "polycount_spy" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - "attributes" - { - "add cloak on hit" - { - "attribute_class" "add_cloak_on_hit" - "value" "15" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.8" - } - } - "visuals" - { - "sound_single_shot" "Weapon_Letranger.Single" - "sound_burst" "Weapon_Letranger.SingleCrit" - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - } - "225" - { - "name" "Your Eternal Reward" - "item_class" "tf_weapon_knife" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Knife" - "item_name" "#TF_EternalReward" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "item_logname" "eternal_reward" - "item_iconname" "eternal_reward" - "image_inventory" "backpack/weapons/c_models/c_eternal_reward/c_eternal_reward" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "attach_to_hands" "1" - "model_player" "models/weapons/c_models/c_eternal_reward/c_eternal_reward.mdl" - "item_set" "polycount_spy" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "animation" - { - "activity" "ACT_VM_HITCENTER" - "replacement" "ACT_MELEE_VM_HITCENTER" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_MELEE_VM_SWINGHARD" - } - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "226" - { - "name" "The Battalion's Backup" - "item_class" "tf_weapon_buff_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Battle_Banner" - "item_name" "#TF_TheBattalionsBackup" - "item_description" "#TF_TheBattalionsBackup_Desc" - "item_slot" "secondary" - "anim_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_battalion_buffpack/c_batt_buffpack" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_battalion_bugle/c_battalion_bugle.mdl" - "attach_to_hands" "1" - "extra_wearable" "models/weapons/c_models/c_battalion_buffpack/c_batt_buffpack.mdl" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "item_set" "polycount_soldier" - "mouse_pressed_sound" "ui/item_pack_pickup.wav" - "drop_sound" "ui/item_pack_drop.wav" - "attributes" - { - "mod soldier buff type" - { - "attribute_class" "set_buff_type" - "value" "2" - } - } - } - "227" - { - "name" "The Grenadier's Softcap" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheGrenadiersSoftcap" - "item_description" "#TF_TheGrenadiersSoftcap_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/grenadier_softcap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/grenadier_softcap.mdl" - "drop_type" "drop" - "item_set" "polycount_soldier" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "228" - { - "name" "The Black Box" - "item_class" "tf_weapon_rocketlauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "blackbox" - "item_iconname" "blackbox" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_TheBlackBox" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_blackbox/c_blackbox" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_blackbox/c_blackbox.mdl" - "attach_to_hands" "1" - "item_set" "polycount_soldier" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "heal on hit for rapidfire" - { - "attribute_class" "add_onhit_addhealth" - "value" "15" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.75" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_RPG_BlackBox.Single" - "sound_burst" "Weapon_RPG_BlackBox.SingleCrit" - "animation" - { - "activity" "ACT_VM_RELOAD" - "replacement" "ACT_PRIMARY_VM_RELOAD_2" - } - "animation" - { - "activity" "ACT_RELOAD_START" - "replacement" "ACT_PRIMARY_RELOAD_START_2" - } - "animation" - { - "activity" "ACT_RELOAD_FINISH" - "replacement" "ACT_PRIMARY_RELOAD_FINISH_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND_LOOP" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND_END" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_END_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND_LOOP" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_LOOP_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH" - "replacement" "ACT_MP_RELOAD_CROUCH_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH_END" - "replacement" "ACT_MP_RELOAD_CROUCH_PRIMARY_END_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH_LOOP" - "replacement" "ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK" - "replacement" "ACT_MP_RELOAD_AIRWALK_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK_END" - "replacement" "ACT_MP_RELOAD_AIRWALK_PRIMARY_END_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK_LOOP" - "replacement" "ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP_2" - } - "muzzle_flash" "" - "tracer_effect" "" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "229" - { - "name" "Ol' Snaggletooth" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_OlSnaggletooth" - "item_description" "#TF_OlSnaggletooth_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/snaggletooth" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/snaggletooth.mdl" - "drop_type" "drop" - "item_set" "polycount_sniper" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_leather_pickup.wav" - "drop_sound" "ui/item_leather_pickup.wav" - } - "230" - { - "name" "The Sydney Sleeper" - "item_class" "tf_weapon_sniperrifle" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "sydney_sleeper" - "item_iconname" "sydney_sleeper" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SniperRifle" - "item_name" "#TF_SydneySleeper" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_dartgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_dartgun.mdl" - "attach_to_hands" "1" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - } - "visuals" - { - "show_player_bodygroup_name" "bullets" - "sound_single_shot" "Weapon_SydneySleeper.Single" - "sound_burst" "Weapon_SydneySleeper.SingleCrit" - "muzzle_flash" "muzzle_sniperrifle" - "tracer_effect" "bullet_tracer01" - } - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "item_set" "polycount_sniper" - "brass_eject_model" "" // Disabled - "attributes" - { - "sniper no headshots" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "jarate duration" - { - "attribute_class" "jarate_duration" - "value" "8" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - } - "231" - { - "name" "Darwin's Danger Shield" - "item_class" "tf_wearable_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Shield" - "item_name" "#TF_DarwinsDangerShield" - "item_slot" "secondary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/sniper/croc_shield" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/croc_shield.mdl" - "extra_wearable" "models/player/items/sniper/croc_shield.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "max health additive bonus" - { - "attribute_class" "add_maxhealth" - "value" "25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_leather_pickup.wav" - "drop_sound" "ui/item_leather_pickup.wav" - "item_set" "polycount_sniper" - } - "232" - { - "name" "The Bushwacka" - "item_class" "tf_weapon_club" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "bushwacka" - "item_iconname" "bushwacka" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Club" - "item_name" "#TF_TheBushwacka" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_croc_knife/c_croc_knife" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_croc_knife/c_croc_knife.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "minicrits become crits" - { - "attribute_class" "minicrits_become_crits" - "value" "1" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "item_set" "polycount_sniper" - } - "233" - { - "name" "Gift - 1 Player" - "item_class" "tf_wearable_item" - "tool" - { - "type" "gift" - "usage" - { - "loot_list" "gift_standard_1_loot_list" - "num_items" "1" - "max_recipients" "1" - } - } - "capabilities" - { - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action gift_1" - "item_type_name" "#TF_Gift" - "item_name" "#TF_Gift_RandomPerson" - "item_description" "#TF_Gift_RandomPerson_Desc" - "item_slot" "action" - "image_inventory" "backpack/crafting/gift_single" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "234" - { - "name" "Gift - 24 Players" - "item_class" "tf_wearable_item" - "tool" - { - "type" "gift" - "usage" - { - // give out up to 23 gifts (we want to encourage servers of 24 people and the player giving the gift will not get a gift from themselves) - "loot_list" "gift_standard_24_loot_list" - "num_items" "1" - "max_recipients" "23" - } - } - "capabilities" - { - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action gift_24" - "item_type_name" "#TF_Gift" - "item_name" "#TF_Gift_EntireServer" - "item_description" "#TF_Gift_EntireServer_Desc" - "item_slot" "action" - "image_inventory" "backpack/crafting/gift_multiple" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "" - "min_ilevel" "23" - "max_ilevel" "23" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "237" - { - "name" "Rocket Jumper" - "item_class" "tf_weapon_rocketlauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Weapon_RocketLauncher_Jump" - "item_description" "#TF_Weapon_RocketLauncher_Jump_Desc" - "item_slot" "primary" - "item_quality" "unique" - "baseitem" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "propername" "0" - "image_inventory" "backpack/weapons/c_models/c_rocketjumper/c_rocketjumper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rocketjumper/c_rocketjumper.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0" - } - "no self blast dmg" - { - "attribute_class" "no_self_blast_dmg" - "value" "1" - } - "maxammo primary increased" - { - "attribute_class" "mult_maxammo_primary" - "value" "3.0" - } - "dmg taken from blast increased" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "2" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "2" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "2" - } - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - } - "239" - { - "name" "Gloves of Running Urgently" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_Unique_Gloves_of_Running_Urgently" - "item_slot" "melee" - "item_logname" "gloves_running_urgently" - "item_iconname" "gloves_running_urgently" - "image_inventory" "backpack/weapons/c_models/c_boxing_gloves_urgency/c_boxing_gloves_urgency" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "move speed bonus" - { - "attribute_class" "mult_player_movespeed" - "value" "1.3" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.5" - } - "provide on active" - { - "attribute_class" "provide_on_active" - "value" "1" - } - "active health degen" - { - "attribute_class" "active_item_health_regen" - "value" "-6" - } - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - } - "hide_bodygroups_deployed_only" "1" - "visuals" - { - "hide_player_bodygroup_name" "hands" - "sound_melee_miss" "Weapon_BoxingGloves.Miss" - "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" - "sound_burst" "Weapon_BoxingGloves.MissCrit" - } - "visuals_red" - { - "skin" "2" - } - "visuals_blu" - { - "skin" "3" - } - "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" - "drop_sound" "ui/item_boxing_gloves_drop.wav" - } - "240" - { - "name" "Worms Gear" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Worms_Gear" - "item_description" "#TF_Worms_Gear_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/worms_gear" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/worms_gear.mdl" - "drop_type" "none" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "grenades" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "241" - { - "name" "Duel MiniGame" - "item_class" "tf_wearable_item" - "tool" - { - "type" "duel_minigame" - } - "capabilities" - { - "usable_gc" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_UsableItem" - "item_name" "#TF_Usable_Duel" - "item_description" "#TF_Usable_Duel_Desc" - "item_slot" "action" - "image_inventory" "backpack/player/items/crafting/icon_dueling" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "model_player" "" - "min_ilevel" "5" - "max_ilevel" "5" - "armory_desc" "action duel" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_dueling_pistols_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - - // dueling badges - "242" - { - "name" "Duel Medal Bronze" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Bronze" - "item_description" "#TF_Duel_Medal_Bronze_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_bronze" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "1" - "max_ilevel" "1" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "2" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "243" - { - "name" "Duel Medal Silver" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Silver" - "item_description" "#TF_Duel_Medal_Silver_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_silver" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "25" - "max_ilevel" "25" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "1" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "244" - { - "name" "Duel Medal Gold" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Gold" - "item_description" "#TF_Duel_Medal_Gold_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_gold" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "50" - "max_ilevel" "50" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "0" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "245" - { - "name" "Duel Medal Plat" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Plat" - "item_description" "#TF_Duel_Medal_Plat_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_platinum" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "75" - "max_ilevel" "75" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "3" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - - // HAT STORM - - "246" - { - "name" "Pugilist's Protector" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyPugilistProtector" - "item_description" "#TF_HeavyPugilistProtector_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/pugilist_protector" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/pugilist_protector.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "247" - { - "name" "Old Guadalajara" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroFiestaSombrero" - "item_description" "#TF_PyroFiestaSombrero_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/fiesta_sombrero" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/fiesta_sombrero.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "248" - { - "name" "Napper's Respite" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroBeanie" - "item_description" "#TF_PyroBeanie_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_beanie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_beanie.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "249" - { - "name" "Bombing Run" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScoutBombingRun" - "item_description" "#TF_ScoutBombingRun_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/pilot_protector" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/pilot_protector.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "250" - { - "name" "Chieftain's Challenge" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierChiefRocketeer" - "item_description" "#TF_SoldierChiefRocketeer_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/chief_rocketeer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/chief_rocketeer.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "251" - { - "name" "Stout Shako" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierShako" - "item_description" "#TF_SoldierShako_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_shako" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_shako.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "252" - { - "name" "Dr's Dapper Topper" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Seuss" - "item_description" "#TF_Seuss_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/dappertopper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/dappertopper.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "253" - { - "name" "Handyman's Handle" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroPlunger" - "item_description" "#TF_PyroPlunger_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_plunger" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_plunger.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "254" - { - "name" "Hard Counter" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyUmbrella" - "item_description" "#TF_HeavyUmbrella_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_umbrella" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_umbrella.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_umbrella_pickup.wav" - "drop_sound" "ui/item_umbrella_pickup.wav" - } - "255" - { - "name" "Sober Stuntman" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemoStuntHelmet" - "item_description" "#TF_DemoStuntHelmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/stunt_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/stunt_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "259" - { - "name" "Carouser's Capotain" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemoInquisitor" - "item_description" "#TF_DemoInquisitor_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/inquisitor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/inquisitor.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - - "260" - { - "name" "Wiki Cap" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_WikiCap" - "item_description" "#TF_WikiCap_Desc" - "item_slot" "head" - "image_inventory" "backpack/player/items/all_class/wikicap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/wikicap.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "261" - { - "name" "Mann Co. Cap" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "paintable" "1" - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_MannCoCap" - "item_description" "#TF_MannCoCap_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_manncap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_cap.mdl" - "sniper" "models/player/items/sniper/sniper_cap.mdl" - "soldier" "models/player/items/soldier/soldier_cap.mdl" - "demoman" "models/player/items/demo/demo_cap.mdl" - "medic" "models/player/items/medic/medic_cap.mdl" - "heavy" "models/player/items/heavy/heavy_cap.mdl" - "spy" "models/player/items/spy/spy_cap.mdl" - "engineer" "models/player/items/engineer/engineer_cap.mdl" - "pyro" "models/player/items/pyro/pyro_cap.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "262" - { - "name" "Polycount Pin" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Polycount_Pin" - "item_description" "#TF_Polycount_Pin_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/polypack_badge" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/polypack_badge.mdl" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - - "263" - { - "name" "Ellis Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_EllisHat" - "item_description" "#TF_EllisHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_ellis" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_ellis.mdl" - "sniper" "models/player/items/sniper/sniper_ellis.mdl" - "soldier" "models/player/items/soldier/soldier_ellis.mdl" - "demoman" "models/player/items/demo/demo_ellis.mdl" - "medic" "models/player/items/medic/medic_ellis.mdl" - "heavy" "models/player/items/heavy/heavy_ellis.mdl" - "spy" "models/player/items/spy/spy_ellis.mdl" - "engineer" "models/player/items/engineer/engineer_ellis.mdl" - "pyro" "models/player/items/pyro/pyro_ellis.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - - "264" - { - "name" "Frying Pan" - "item_class" "tf_weapon_shovel" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "fryingpan" - "item_iconname" "fryingpan" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_FryingPan" - "item_name" "#TF_Unique_FryingPan" - "item_slot" "melee" - "image_inventory" "backpack/player/items/all_class/all_pan" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_frying_pan/c_frying_pan.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "soldier" "1" - "demoman" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_hit" "FryingPan.HitFlesh" - "sound_melee_hit_world" "FryingPan.HitWorld" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "265" - { - "name" "Stickybomb Jumper" - "item_class" "tf_weapon_pipebomblauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#Tf_Weapon_Pipebomblauncher" - "item_name" "#TF_Weapon_StickyBomb_Jump" - "item_description" "#TF_Weapon_StickyBomb_Jump_Desc" - "item_slot" "primary" - "item_quality" "unique" - "baseitem" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "propername" "0" - "image_inventory" "backpack/weapons/w_models/w_stickybomb_launcher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_stickybomb_launcher.mdl" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0" - } - "no self blast dmg" - { - "attribute_class" "no_self_blast_dmg" - "value" "1" - } - "maxammo secondary increased" - { - "attribute_class" "mult_maxammo_secondary" - "value" "3.0" - } - "dmg taken from blast increased" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "2" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "2" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "2" - } - - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - } - "266" - { - "name" "The Horseless Headless Horseman's Headtaker" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Axe" - "item_name" "#TF_HalloweenBoss_Axe" - "item_description" "#TF_HalloweenBoss_Axe_Desc" - "item_slot" "melee" - "item_quality" "rarity4" - "item_logname" "headtaker" - "item_iconname" "headtaker" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_headtaker/c_headtaker" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_headtaker/c_headtaker.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - - "267" - { - "name" "Haunted Metal Scrap" - "item_class" "craft_item" - "craft_class" "craft_bar" - "capabilities" - { - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#TF_Haunted_Metal" - "item_description" "#TF_Haunted_Metal_Desc" - "image_inventory" "backpack/crafting/haunted_metal" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "rarity4" - "min_ilevel" "4" - "max_ilevel" "4" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - - "268" - { - "name" "Halloween Mask - Scout" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Scout" - "item_description" "#TF_Halloween_Mask_Scout_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_scout.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_scout" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "269" - { - "name" "Halloween Mask - Sniper" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Sniper" - "item_description" "#TF_Halloween_Mask_Sniper_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_sniper.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_sniper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "270" - { - "name" "Halloween Mask - Soldier" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Soldier" - "item_description" "#TF_Halloween_Mask_Soldier_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_soldier.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "271" - { - "name" "Halloween Mask - Demoman" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Demoman" - "item_description" "#TF_Halloween_Mask_Demoman_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_demo.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_demo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "272" - { - "name" "Halloween Mask - Medic" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Medic" - "item_description" "#TF_Halloween_Mask_Medic_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_medic.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_medic" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "273" - { - "name" "Halloween Mask - Heavy" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Heavy" - "item_description" "#TF_Halloween_Mask_Heavy_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_heavy.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "274" - { - "name" "Halloween Mask - Spy" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Spy" - "item_description" "#TF_Halloween_Mask_Spy_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_spy.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_spy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "275" - { - "name" "Halloween Mask - Engineer" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Engineer" - "item_description" "#TF_Halloween_Mask_Engineer_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_engineer.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_engineer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "276" - { - "name" "Halloween Mask - Pyro" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Pyro" - "item_description" "#TF_Halloween_Mask_Pyro_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_pyro.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "277" - { - "name" "Halloween Mask - Saxton Hale" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_SaxtonHale" - "item_description" "#TF_Halloween_Mask_SaxtonHale_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_saxton.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_saxton" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - - "278" - { - "name" "Horseless Headless Horseman's Head" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Head" - "item_description" "#TF_Halloween_Head_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/pumkin_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/pumkin_hat.mdl" - "drop_type" "none" - "holiday_restriction" "halloween" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_default_pickup.wav" - "drop_sound" "ui/item_default_drop.wav" - } - "279" - { - "name" "Ghastly Gibus 2010" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "paintable" "1" - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Domination_Hat_2010" - "item_description" "#TF_Domination_Hat_2010_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_domination" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/all_domination.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2010" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "280" - { - "name" "Halloween Noise Maker - Black Cat" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_BlackCat" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_cat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.BlackCat" - } - "mouse_pressed_sound" "Halloween.BlackCat" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "281" - { - "name" "Halloween Noise Maker - Gremlin" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Gremlin" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_gremlin" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Gremlin" - } - "mouse_pressed_sound" "Halloween.Gremlin" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "282" - { - "name" "Halloween Noise Maker - Werewolf" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Werewolf" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_wolf" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Werewolf" - } - "mouse_pressed_sound" "Halloween.Werewolf" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "283" - { - "name" "Halloween Noise Maker - Witch" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Witch" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_witch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Witch" - } - "mouse_pressed_sound" "Halloween.Witch" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "284" - { - "name" "Halloween Noise Maker - Banshee" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Banshee" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_banshee" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Banshee" - } - "mouse_pressed_sound" "Halloween.Banshee" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "286" - { - "name" "Halloween Noise Maker - Crazy Laugh" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_CrazyLaugh" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_laugh" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.CrazyLaugh" - } - "mouse_pressed_sound" "Halloween.CrazyLaugh" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "287" - { - "name" "Spine-Chilling Skull" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "haunted_hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Skullcap" - "item_description" "#TF_Halloween_Skullcap_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/skull" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/skull.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "attributes" - { - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2010" - } - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "288" - { - "name" "Halloween Noise Maker - Stabby" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Stabby" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_stabby" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Stabby" - } - "mouse_pressed_sound" "Halloween.Stabby" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "289" - { - "name" "Voodoo Juju" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "haunted_hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Voodoo" - "item_description" "#TF_Halloween_Voodoo_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/voodoojuju_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/voodoojuju_hat.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "attributes" - { - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2010" - } - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "290" - { - "name" "Cadaver's Cranium" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Cadavers_Cranium" - "item_description" "#TF_Cadavers_Cranium_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/heavy/cadavers_cranium" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/cadavers_cranium.mdl" - "drop_type" "none" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "291" - { - "name" "Horrific Headsplitter" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Horrific_Headsplitter" - "item_description" "#TF_Horrific_Headsplitter_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/headsplitter" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/headsplitter.mdl" - "drop_type" "none" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "292" - { - "name" "Poker Visor" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_TTG_PokerVisor" - "item_description" "#TF_TTG_PokerVisor_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "image_inventory" "backpack/player/items/heavy/ttg_visor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/ttg_visor.mdl" - "drop_type" "none" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - - "294" - { - "name" "TTG Max Pistol - Poker Night" - "item_class" "tf_weapon_pistol" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "0" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_TTG_MaxGun" - "item_description" "#TF_TTG_MaxGun_Desc" - "item_slot" "secondary" - "item_logname" "maxgun" - "item_iconname" "maxgun" - "image_inventory" "backpack/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun.mdl" - "model_world" "models/weapons/w_models/w_ttg_max_gun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "engineer" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "295" - { - "name" "TTG Glasses" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Glasses" - "item_name" "#TF_TTG_Glasses" - "item_description" "#TF_TTG_Glasses_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/demo/ttg_glasses" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "model_player" "models/player/items/demo/ttg_glasses.mdl" - "drop_type" "none" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "296" - { - "name" "TTG Badge" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_TTG_Badge" - "item_description" "#TF_TTG_Badge_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/ttg_badge" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "model_player" "models/player/items/all_class/ttg_badge.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "297" - { - "name" "TTG Watch" - "item_class" "tf_weapon_invis" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_TTG_Watch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_ttg_watch/c_ttg_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_ttg_watch_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "298" - { - "name" "Iron Curtain" - "item_class" "tf_weapon_minigun" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Iron_Curtain" - "item_slot" "primary" - "item_logname" "iron_curtain" - "item_iconname" "iron_curtain" - "image_inventory" "backpack/weapons/c_models/c_iron_curtain/c_iron_curtain" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_iron_curtain/c_iron_curtain.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "299" - { - "name" "Portal 2 Pin" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Portal2_Pin" - "item_description" "#TF_Portal2_Pin_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/p2_pin" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "model_player" "models/player/items/all_class/p2_pin.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - } - "303" - { - "name" "Berliner's Bucket Helm" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BerlinersBucketHelm" - "item_description" "#TF_BerlinersBucketHelm_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/berliners_bucket_helm" - "image_inventory_size_w""128" - "image_inventory_size_h""82" - "model_player" "models/player/items/medic/berliners_bucket_helm.mdl" - "drop_type" "drop" - "propername" "0" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "304" - { - "name" "The Amputator" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "amputator" - "item_iconname" "amputator" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Amputator" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_amputator/c_amputator" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_amputator/c_amputator.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "15" - "max_ilevel" "15" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "enables aoe heal" - { - "attribute_class" "enables_aoe_heal" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "visuals" - { - "custom_sound1" "Weapon_UberSaw.HitFlesh" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "item_set" "medieval_medic" - } - "305" - { - "name" "The Crusader's Crossbow" - "item_class" "tf_weapon_crossbow" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_type_name" "#TF_Weapon_Crossbow" - "item_name" "#TF_CrusadersCrossbow" - "item_logname" "crusaders_crossbow" - "item_iconname" "crusaders_crossbow" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "15" - "max_ilevel" "15" - "image_inventory" "backpack/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "fires healing bolts" - { - "attribute_class" "fires_healing_bolts" - "value" "1" - } - "sniper no headshots" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "maxammo primary reduced" - { - "attribute_class" "mult_maxammo_primary" - "value" "0.25" - } - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - "item_set" "medieval_medic" - } - "306" - { - "name" "Scotch Bonnet" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScotchBonnet" - "item_description" "#TF_ScotchBonnet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_scotchbonnet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_scotchbonnet.mdl" - "drop_type" "drop" - "propername" "0" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "307" - { - "name" "The Ullapool Caber" - "item_class" "tf_weapon_stickbomb" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_StickBomb" - "item_name" "#TF_UllapoolCaber" - "item_description" "#TF_UllapoolCaber_Desc" - "item_logname" "ullapool_caber" - "item_iconname" "ullapool_caber" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_caber/c_caber" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_caber/c_caber.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "item_set" "experts_ordnance" - } - "308" - { - "name" "The Loch-n-Load" - "item_class" "tf_weapon_grenadelauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "loch_n_load" - "item_iconname" "loch_n_load" - "item_type_name" "#TF_Weapon_GrenadeLauncher" - "item_name" "#TF_LochNLoad" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_lochnload/c_lochnload" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_lochnload/c_lochnload.mdl" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.4" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.1" - } - "Projectile speed increased" - { - "attribute_class" "mult_projectile_speed" - "value" "1.25" - } - "blast dmg to self increased" - { - "attribute_class" "blast_dmg_to_self" - "value" "1.25" - } - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "item_set" "experts_ordnance" - } - "309" - { - "name" "Big Chief" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BigChief" - "item_description" "#TF_BigChief_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_big_chief" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_big_chief.mdl" - "drop_type" "none" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "310" - { - "name" "Warrior's Spirit" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_WarriorsSpirit" - "item_slot" "melee" - "item_logname" "warrior_spirit" - "item_iconname" "warrior_spirit" - "image_inventory" "backpack/weapons/c_models/c_bear_claw/c_bear_claw" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bear_claw/c_bear_claw.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.3" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-20" - } - } - "visuals" - { - "sound_melee_miss" "Weapon_BoxingGloves.Miss" - "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" - "sound_burst" "Weapon_BoxingGloves.MissCrit" - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_FISTS_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_HITLEFT" - "replacement" "ACT_FISTS_VM_HITLEFT" - } - "animation" - { - "activity" "ACT_VM_HITRIGHT" - "replacement" "ACT_FISTS_VM_HITRIGHT" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_FISTS_VM_SWINGHARD" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_FISTS_VM_DRAW" - } - } - "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" - "drop_sound" "ui/item_boxing_gloves_drop.wav" - "item_set" "hibernating_bear" - } - "311" - { - "name" "The Buffalo Steak Sandvich" - "item_class" "tf_weapon_lunchbox" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_BuffaloSteak" - "item_description" "#TF_BuffaloSteak_Desc" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_buffalo_steak/c_buffalo_steak" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_buffalo_steak/c_buffalo_steak.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - } - "mouse_pressed_sound" "ui/item_sandwich_drop.wav" - "drop_sound" "ui/item_sandwich_pickup.wav" - "item_set" "hibernating_bear" - } - "312" - { - "name" "The Brass Beast" - "item_class" "tf_weapon_minigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_GatlingGun" - "item_slot" "primary" - "item_logname" "brass_beast" - "item_iconname" "brass_beast" - "image_inventory" "backpack/weapons/c_models/c_gatling_gun/c_gatling_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_gatling_gun/c_gatling_gun.mdl" - "attach_to_hands" "1" - "propername" "0" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "sound_deploy" "Weapon_Gatling.Draw" - "sound_reload" "Weapon_Gatling.Reload" - "sound_empty" "Weapon_Gatling.ClipEmpty" - "sound_double_shot" "Weapon_Gatling.Fire" - "sound_special1" "Weapon_Gatling.WindUp" - "sound_special2" "Weapon_Gatling.WindDown" - "sound_special3" "Weapon_Gatling.Spin" - "sound_burst" "Weapon_Gatling.FireCrit" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.20" - } - "minigun spinup time increased" - { - "attribute_class" "mult_minigun_spinup_time" - "value" "1.5" - } - "aiming movespeed decreased" - { - "attribute_class" "mult_player_aiming_movespeed" - "value" "0.4" - } - } - "item_set" "hibernating_bear" - } - "313" - { - "name" "Magnificent Mongolian" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MagnificentMongolian" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_magnificent_mongolian" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_magnificent_mongolian.mdl" - "drop_type" "drop" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "314" - { - "name" "Larrikin Robin" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_LarrikinRobin" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/larrikin_robin" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/larrikin_robin.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "315" - { - "name" "Blighted Beak" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BlightedBeak" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/blighted_beak" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_blighted_beak.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "316" - { - "name" "Pyromancer's Mask" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyromancersMask" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_pyromancers_mask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_pyromancers_mask.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "317" - { - "name" "The Candy Cane" - "item_class" "tf_weapon_bat" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bat" - "item_name" "#TF_CandyCane" - "item_logname" "candy_cane" - "item_iconname" "candy_cane" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "25" - "max_ilevel" "25" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_candy_cane/c_candy_cane" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_candy_cane/c_candy_cane.mdl" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - "visuals_red" - { - "skin" "0" - } - "visuals_blu" - { - "skin" "1" - } - "attributes" - { - "drop health pack on kill" - { - "attribute_class" "drop_health_pack_on_kill" - "value" "1" - } - "dmg taken from blast increased" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "1.25" - } - } - } - "318" - { - "name" "Prancer's Pride" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PrancersPride" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/prancers_pride" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/Prancers_Pride.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "319" - { - "name" "Detective Noir" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DetectiveNoir" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_detective_noir" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_detective_noir.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "321" - { - "name" "Madame Dixie" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MadameDixie" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_madame_dixie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_madame_dixie.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "322" - { - "name" "Buckaroos Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BuckaroosHat" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_buckaroos_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_buckaroos_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "323" - { - "name" "German Gonzila" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_GermanGonzila" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_german_gonzila" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_german_gonzila.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "324" - { - "name" "Flipped Trilby" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_FlippedTrilby" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/scout_flipped_trilby" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/scout_flipped_trilby.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "325" - { - "name" "The Boston Basher" - "item_class" "tf_weapon_bat" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bat" - "item_name" "#TF_BostonBasher" - "item_logname" "boston_basher" - "item_iconname" "boston_basher" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "25" - "max_ilevel" "25" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_boston_basher/c_boston_basher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_boston_basher/c_boston_basher.mdl" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - "attributes" - { - "bleeding duration" - { - "attribute_class" "bleeding_duration" - "value" "5" - } - "hit self on miss" - { - "attribute_class" "hit_self_on_miss" - "value" "1" - } - } - } - "326" - { - "name" "The Back Scratcher" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "back_scratcher" - "item_iconname" "back_scratcher" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_GardenRake" - "item_name" "#TF_BackScratcher" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_back_scratcher/c_back_scratcher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_back_scratcher/c_back_scratcher.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.25" - } - "health from healers reduced" - { - "attribute_class" "mult_health_fromhealers" - "value" "0.25" - } - "health from packs increased" - { - "attribute_class" "mult_health_frompacks" - "value" "1.5" - } - } - } - "327" - { - "name" "The Claidheamohmor" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "claidheamohmor" - "item_iconname" "claidheamohmor" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Sword" - "item_name" "#TF_Claidheamohmor" - "item_description" "#TF_Claidheamohmor_Desc" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_claidheamohmor/c_claidheamohmor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_claidheamohmor/c_claidheamohmor.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "charge time increased" - { - "attribute_class" "mod_charge_time" - "value" "0.5" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-15" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "329" - { - "name" "The Jag" - "item_class" "tf_weapon_wrench" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Jag" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "15" - "max_ilevel" "15" - "propername" "0" - "attach_to_hands" "1" - "item_logname" "wrench_jag" - "item_iconname" "wrench_jag" - "image_inventory" "backpack/weapons/c_models/c_jag/c_jag" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_jag/c_jag.mdl" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - "attributes" - { - "Construction rate increased" - { - "attribute_class" "mult_construction_value" - "value" "1.3" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.75" - } - } - } - "330" - { - "name" "Coupe D'isaster" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_CoupeDisaster" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/coupe_disaster" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/coupe_disaster.mdl" - "drop_type" "none" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "331" - { - "name" "Fists of Steel" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_FistsOfSteel" - "item_slot" "melee" - "item_logname" "steel_fists" - "item_iconname" "steel_fists" - "image_inventory" "backpack/weapons/c_models/c_fists_of_steel/c_fists_of_steel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_fists_of_steel/c_fists_of_steel.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "hide_bodygroups_deployed_only" "1" - "visuals" - { - "hide_player_bodygroup_name" "hands" - "sound_deploy" "Weapon_MetalGloves.Draw" - "sound_melee_miss" "Weapon_MetalGloves.Miss" - "sound_melee_hit" "Weapon_MetalGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_MetalGloves.HitWorld" - "sound_burst" "Weapon_MetalGloves.MissCrit" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "dmg from ranged reduced" - { - "attribute_class" "dmg_from_ranged" - "value" "0.4" - } - - "dmg from melee increased" - { - "attribute_class" "dmg_from_melee" - "value" "2.0" - } - } - } - - "332" - { - "name" "Treasure Hat 1" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TreasureHat_1" - "item_description" "#TF_TreasureHat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/player/items/all_class/treasure_hat_01" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/treasure_hat_01.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "333" - { - "name" "Treasure Hat 2" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TreasureHat_2" - "item_description" "#TF_TreasureHat_2_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "15" - "max_ilevel" "15" - "image_inventory" "backpack/player/items/all_class/treasure_hat_02" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/treasure_hat_02.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "attached_particlesystem" - { - "system" "coin_spin" - "attachment" "root" - } - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "334" - { - "name" "Treasure Hat 3" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TreasureHat_3" - "item_description" "#TF_TreasureHat_3_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "28" - "max_ilevel" "28" - "image_inventory" "backpack/player/items/all_class/treasure_hat_oct" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/treasure_hat_oct.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "335" - { - "name" "KF Pyro Mask" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_KF_Pyro_Mask" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_tripwire_mask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_tripwire_mask.mdl" - "used_by_classes" - { - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "head" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "336" - { - "name" "KF Pyro Tie" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_KF_Pyro_Tie" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_tripwire_tie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_tripwire_tie.mdl" - "used_by_classes" - { - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "grenades" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "337" - { - "name" "Le Party Phantom" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PartyPhantom" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_party_phantom" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_party_phantom.mdl" - "drop_type" "none" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "338" - { - "name" "Industrial Festivizer" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ColoredLights" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_colored_lights" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_colored_lights.mdl" - "drop_type" "none" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "339" - { - "name" "Exquisite Rack" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ExquisiteRack" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_holiday_antlers" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_holiday_antlers.mdl" - "drop_type" "none" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "340" - { - "name" "Defiant Spartan" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DefiantSpartan" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_spartan" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_spartan.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "341" - { - "name" "A Rather Festive Tree" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_FestiveTree" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/all_class/oh_xmas_tree" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/oh_xmas_tree.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "spy" "1" - "soldier" "1" - "heavy" "1" - "demoman" "1" - "pyro" "1" - "scout" "1" - "medic" "1" - "sniper" "1" - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "342" - { - "name" "Prince Tavish's Crown" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TavishCrown" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/crown" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/crown.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "345" - { - "name" "MNC Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MNC_Hat" - "item_description" "#TF_MNC_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/mnc_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_mnc.mdl" - "sniper" "models/player/items/sniper/sniper_mnc.mdl" - "soldier" "models/player/items/soldier/soldier_mnc.mdl" - "demoman" "models/player/items/demo/demo_mnc.mdl" - "medic" "models/player/items/medic/medic_mnc.mdl" - "heavy" "models/player/items/heavy/heavy_mnc.mdl" - "spy" "models/player/items/spy/spy_mnc.mdl" - "engineer" "models/player/items/engineer/engineer_mnc.mdl" - "pyro" "models/player/items/pyro/pyro_mnc.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "346" - { - "name" "MNC Mascot Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MNC_Mascot_Hat" - "item_description" "#TF_MNC_Mascot_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/scout/mnc_mascot_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/mnc_mascot_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "347" - { - "name" "MNC Mascot Outfit" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Apparel" - "item_name" "#TF_MNC_Mascot_Outfit" - "item_description" "#TF_MNC_Mascot_Outfit_Desc" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/scout/mnc_mascot_outfit" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/mnc_mascot_outfit.mdl" - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "shoes_socks" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "348" - { - "name" "Sharpened Volcano Fragment" - "item_class" "tf_weapon_fireaxe" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RiftFireAxe" - "item_name" "#TF_Unique_RiftFireAxe" - "item_description" "#TF_RiftFireAxe_Desc" - "item_slot" "melee" - "item_logname" "lava_axe" - "item_iconname" "lava_axe" - "item_quality" "unique" - "image_inventory" "backpack/weapons/c_models/c_rift_fire_axe/c_rift_fire_axe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rift_fire_axe/c_rift_fire_axe.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "Set DamageType Ignite" - { - "attribute_class" "set_dmgtype_ignite" - "value" "1" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.8" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - } - "349" - { - "name" "The Market Gardener" - "first_sale_date" "2011/03/23" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "can_craft_count" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Shovel" - "item_name" "#TF_MarketGardener" - "item_logname" "market_gardener" - "item_iconname" "market_gardener" - "item_slot" "melee" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_market_gardener/c_market_gardener" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_market_gardener/c_market_gardener.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "mod crit while airborne" - { - "attribute_class" "crit_while_airborne" - "value" "1" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "350" - { - "name" "Sun-on-a-Stick" - "item_class" "tf_weapon_bat" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RiftFireMace" - "item_name" "#TF_Unique_RiftFireMace" - "item_description" "#TF_RiftFireMace_Desc" - "item_slot" "melee" - "item_logname" "lava_bat" - "item_iconname" "lava_bat" - "item_quality" "unique" - "image_inventory" "backpack/weapons/c_models/c_rift_fire_mace/c_rift_fire_mace" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rift_fire_mace/c_rift_fire_mace.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "minicrit vs burning player" - { - "attribute_class" "or_minicrit_vs_playercond_burning" - "value" "1" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.85" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "350" - { - "name" "The Market Gardener" - "first_sale_date" "2011/03/23" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "can_craft_count" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Shovel" - "item_name" "#TF_MarketGardener" - "item_logname" "market_gardener" - "item_iconname" "market_gardener" - "item_slot" "melee" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_market_gardener/c_market_gardener" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_market_gardener/c_market_gardener.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "mod crit while airborne" - { - "attribute_class" "crit_while_airborne" - "value" "1" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - } - - // world traveler hat and tokens - "1899" - { - "name" "World Traveler" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_WorldTraveler" - "item_description" "#TF_WorldTraveler_Desc" - "item_slot" "head" - "image_inventory" "backpack/player/items/all_class/world_traveller" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/world_traveller.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "attach particle effect" - { - "attribute_class" "set_attached_particle" - "value" "20" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "code_controlled_bodygroup" - { - "function" "map_contributor" - "bodygroup" "medal" - } - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "1900" - { - "name" "Map Token Egypt" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Egypt" - "item_description" "#TF_MapToken_Egypt_Desc" - "map_name" "#TF_Egypt" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_egypt" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1901" - { - "name" "Map Token Coldfront" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Coldfront" - "item_description" "#TF_MapToken_Coldfront_Desc" - "map_name" "#TF_Coldfront" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_coldfront" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1902" - { - "name" "Map Token Fastlane" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Fastlane" - "item_description" "#TF_MapToken_Fastlane_Desc" - "map_name" "#TF_Fastlane" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_fastlane" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1903" - { - "name" "Map Token Turbine" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Turbine" - "item_description" "#TF_MapToken_Turbine_Desc" - "map_name" "#TF_Turbine" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_turbine" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1904" - { - "name" "Map Token Steel" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Steel" - "item_description" "#TF_MapToken_Steel_Desc" - "map_name" "#TF_Steel" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_steel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1905" - { - "name" "Map Token Junction" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Junction" - "item_description" "#TF_MapToken_Junction_Desc" - "map_name" "#TF_Junction" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_junction" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1906" - { - "name" "Map Token Watchtower" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Watchtower" - "item_description" "#TF_MapToken_Watchtower_Desc" - "map_name" "#TF_Watchtower" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_watchtower" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1907" - { - "name" "Map Token Hoodoo" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Hoodoo" - "item_description" "#TF_MapToken_Hoodoo_Desc" - "map_name" "#TF_Hoodoo" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_hoodoo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1908" - { - "name" "Map Token Offblast" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Offblast" - "item_description" "#TF_MapToken_Offblast_Desc" - "map_name" "#TF_Offblast" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_offblast" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1909" - { - "name" "Map Token Yukon" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Yukon" - "item_description" "#TF_MapToken_Yukon_Desc" - "map_name" "#TF_Yukon" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_yukon" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1910" - { - "name" "Map Token Harvest" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Harvest" - "item_description" "#TF_MapToken_Harvest_Desc" - "map_name" "#TF_Harvest" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_harvest" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1911" - { - "name" "Map Token Freight" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Freight" - "item_description" "#TF_MapToken_Freight_Desc" - "map_name" "#TF_Freight" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_freight" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1912" - { - "name" "Map Token Mountain Lab" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_MountainLab" - "item_description" "#TF_MapToken_MountainLab_Desc" - "map_name" "#TF_MountainLab" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_mountainlab" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1913" - { - "name" "Map Token Manor Event" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_ManorEvent" - "item_description" "#TF_MapToken_ManorEvent_Desc" - "map_name" "#TF_ManorEvent" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_manor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - - // store bundle items - "2000" - { - "name" "Polycount Pyro Bundle" - "item_class" "bundle" - "bundle" - { - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountPyro" - "item_description" "#TF_Bundle_PolycountPyro_Desc" - "image_inventory" "backpack/player/items/crafting/kit_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2001" - { - "name" "Polycount Spy Bundle" - "item_class" "bundle" - "bundle" - { - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountSpy" - "item_description" "#TF_Bundle_PolycountSpy_Desc" - "image_inventory" "backpack/player/items/crafting/kit_spy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2002" - { - "name" "Polycount Soldier Bundle" - "item_class" "bundle" - "bundle" - { - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountSoldier" - "item_description" "#TF_Bundle_PolycountSoldier_Desc" - "image_inventory" "backpack/player/items/crafting/kit_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2003" - { - "name" "Polycount Sniper Bundle" - "item_class" "bundle" - "bundle" - { - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountSniper" - "item_description" "#TF_Bundle_PolycountSniper_Desc" - "image_inventory" "backpack/player/items/crafting/kit_sniper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2004" - { - "name" "Polycount Scout Bundle" - "item_class" "bundle" - "bundle" - { - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountScout" - "item_description" "#TF_Bundle_PolycountScout_Desc" - "image_inventory" "backpack/player/items/crafting/kit_scout" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2005" - { - "name" "Polycount Bundle" - "item_class" "bundle" - "bundle" - { - // pyro polycount - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - - // spy polycount - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - - // soldier polycount - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - - // sniper polycount - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - - // scout polycount - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_Polycount" - "item_description" "#TF_Bundle_Polycount_Desc" - "image_inventory" "backpack/player/items/crafting/kit_polycount" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "pyro" "1" - "spy" "1" - "soldier" "1" - "sniper" "1" - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2006" - { - "name" "Halloween Noise Maker Bundle" - "item_class" "bundle" - "bundle" - { - "Halloween Noise Maker - Black Cat" "1" - "Halloween Noise Maker - Gremlin" "1" - "Halloween Noise Maker - Werewolf" "1" - "Halloween Noise Maker - Witch" "1" - "Halloween Noise Maker - Banshee" "1" - "Halloween Noise Maker - Crazy Laugh" "1" - "Halloween Noise Maker - Stabby" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_HalloweenNoiseMaker" - "item_description" "#TF_Bundle_HalloweenNoiseMaker_Desc" - "image_inventory" "backpack/crafting/noisemaker_bundle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2007" - { - "name" "Map Token Bundle" - "item_class" "bundle" - "bundle" - { - "Map Token Egypt" "1" - "Map Token Coldfront" "1" - "Map Token Fastlane" "1" - "Map Token Turbine" "1" - "Map Token Steel" "1" - "Map Token Junction" "1" - "Map Token Watchtower" "1" - "Map Token Hoodoo" "1" - "Map Token Offblast" "1" - "Map Token Yukon" "1" - "Map Token Harvest" "1" - "Map Token Freight" "1" - "Map Token Mountain Lab" "1" - "Map Token Manor Event" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_MapTokens" - "item_description" "#TF_Bundle_MapTokens_Desc" - "image_inventory" "backpack/player/items/all_class/stamp_collection" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "2008" - { - "name" "Medieval Medic Bundle" - "item_class" "bundle" - "bundle" - { - "The Amputator" "1" - "The Crusader's Crossbow" "1" - "Berliner's Bucket Helm" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_MedievalMedic" - "item_description" "#TF_Bundle_MedievalMedic_Desc" - "image_inventory" "backpack/player/items/crafting/kit_medieval_medic" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2009" - { - "name" "Hibernating Bear Bundle" - "item_class" "bundle" - "bundle" - { - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - "Big Chief" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_HibernatingBear" - "item_description" "#TF_Bundle_HibernatingBear_Desc" - "image_inventory" "backpack/player/items/crafting/kit_hibernating_bear" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2010" - { - "name" "Expert's Ordnance Bundle" - "item_class" "bundle" - "bundle" - { - "The Loch-N-Load" "1" - "The Ullapool Caber" "1" - "Scotch Bonnet" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_ExpertsOrdnance" - "item_description" "#TF_Bundle_ExpertsOrdnance_Desc" - "image_inventory" "backpack/player/items/crafting/kit_experts_ordnance" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2011" - { - "name" "Winter Update Bundle" - "item_class" "bundle" - "bundle" - { - // medieval medic - "The Amputator" "1" - "The Crusader's Crossbow" "1" - "Berliner's Bucket Helm" "1" - - // hibernating bear - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - "Big Chief" "1" - - // expert's ordnance - "The Loch-N-Load" "1" - "The Ullapool Caber" "1" - "Scotch Bonnet" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_WinterUpdate" - "item_description" "#TF_Bundle_WinterUpdate_Desc" - "image_inventory" "backpack/player/items/crafting/kit_winterupdate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "medic" "1" - "heavy" "1" - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2012" - { - "name" "Fancy Hat Bundle" - "item_class" "bundle" - "bundle" - { - "Coupe D'isaster" "1" - "Flipped Trilby" "1" - "German Gonzila" "1" - "Buckaroos Hat" "1" - "Madame Dixie" "1" - "Detective Noir" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_FancyHats" - "item_description" "#TF_Bundle_FancyHats_Desc" - "image_inventory" "backpack/player/items/crafting/kit_fancyhats" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "heavy" "1" - "medic" "1" - "scout" "1" - "engineer" "1" - "pyro" "1" - "demoman" "1" - "spy" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2013" - { - "name" "Excessive Bundle of Bundles" - "item_class" "bundle" - "bundle" - { - // pyro polycount - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - - // spy polycount - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - - // soldier polycount - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - - // sniper polycount - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - - // scout polycount - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - - // medieval medic - "The Amputator" "1" - "The Crusader's Crossbow" "1" - "Berliner's Bucket Helm" "1" - - // hibernating bear - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - "Big Chief" "1" - - // expert's ordnance - "The Loch-N-Load" "1" - "The Ullapool Caber" "1" - "Scotch Bonnet" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_ExcessiveBundle" - "item_description" "#TF_Bundle_ExcessiveBundle_Desc" - "image_inventory" "backpack/player/items/crafting/kit_polycount_winterupdate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "75" - "max_ilevel" "75" - "used_by_classes" - { - "medic" "1" - "heavy" "1" - "demoman" "1" - "pyro" "1" - "spy" "1" - "soldier" "1" - "sniper" "1" - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2014" - { - "name" "Nasty Weapon Bundle" - "item_class" "bundle" - "bundle" - { - "The Boston Basher" "1" - "The Back Scratcher" "1" - "The Claidheamohmor" "1" - "Fists of Steel" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_NastyWeapons" - "item_description" "#TF_Bundle_NastyWeapons_Desc" - "image_inventory" "backpack/crafting/kit_nastyweapons" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "heavy" "1" - "pyro" "1" - "demoman" "1" - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - - - "5000" - { - "name" "Craft Bar Level 1" - "item_class" "craft_item" - "craft_class" "craft_bar" - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_Bar_A" - "image_inventory" "backpack/crafting/pile_of_junk" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "5001" - { - "name" "Craft Bar Level 2" - "item_class" "craft_item" - "craft_class" "craft_bar" - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_Bar_B" - "image_inventory" "backpack/crafting/pile_of_junk2" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "2" - "max_ilevel" "2" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "5002" - { - "name" "Craft Bar Level 3" - "item_class" "craft_item" - "craft_class" "craft_bar" - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_Bar_C" - "image_inventory" "backpack/crafting/pile_of_junk3" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "3" - "max_ilevel" "3" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "5003" - { - "name" "Scout Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_1" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_scout" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "scout" - "used_by_classes" - { - "scout" "1" - } - } - "5004" - { - "name" "Sniper Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_2" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_sniper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "sniper" - "used_by_classes" - { - "sniper" "1" - } - } - "5005" - { - "name" "Soldier Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_3" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "soldier" - "used_by_classes" - { - "soldier" "1" - } - } - "5006" - { - "name" "Demoman Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_4" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_demo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "demoman" - "used_by_classes" - { - "demoman" "1" - } - } - "5007" - { - "name" "Heavy Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_5" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "heavy" - "used_by_classes" - { - "heavy" "1" - } - } - "5008" - { - "name" "Medic Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_6" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_medic" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "medic" - "used_by_classes" - { - "medic" "1" - } - } - "5009" - { - "name" "Pyro Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_7" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "pyro" - "used_by_classes" - { - "pyro" "1" - } - } - "5010" - { - "name" "Spy Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_8" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_spy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "spy" - "used_by_classes" - { - "spy" "1" - } - } - "5011" - { - "name" "Engineer Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_9" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_engineer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "engineer" - "used_by_classes" - { - "engineer" "1" - } - } - "5012" - { - "name" "Slot Token - Primary" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "primary" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_1" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_primary" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "primary" - } - "5013" - { - "name" "Slot Token - Secondary" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "secondary" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_2" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_secondary" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "secondary" - } - "5014" - { - "name" "Slot Token - Melee" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "melee" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_3" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_melee" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "melee" - } - "5018" - { - "name" "Slot Token - PDA2" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "pda2" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_7" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_pda" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "pda2" - } - "5020" - { - "name" "Name Tag" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "name" - "usage_capabilities" - { - "nameable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "nametag" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_T_Nt" - "item_description" "#TF_Tool_Nametag_Desc" - "image_inventory" "backpack/crafting/tag" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "5021" - { - "name" "Decoder Ring" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "decoder_ring" - "usage_capabilities" - { - "decodable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "key" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_DecoderRing" - "item_description" "#TF_Tool_DecoderRing_Desc" - "image_inventory" "backpack/player/items/crafting/key" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "5022" - { - "name" "Supply Crate" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "tool" - { - "type" "" - "usage" - { - } - } - "capabilities" - { - "decodable" "1" - } - "armory_desc" "supply_crate" - "show_in_armory" "1" - "show_in_armory" "1" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_SupplyCrate" - "item_description" "#TF_SupplyCrate_Desc" - "image_inventory" "backpack/player/items/crafting/crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "7" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5023" - { - "name" "Paint Can" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "store_remap" "Paint Can 5" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "force_gc_to_generate" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5027" - { - "name" "Paint Can 1" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_1" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "7511618" // 114 158 66 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5028" - { - "name" "Paint Can 2" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_2" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "4345659" // 66 79 59 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5029" - { - "name" "Paint Can 3" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_3" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "5322826" // 81 56 74 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5030" - { - "name" "Paint Can 4" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_4" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "14204632" // 216 190 216 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5031" - { - "name" "Paint Can 5" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_5" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8208497" // 233 194 139 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5032" - { - "name" "Paint Can 6" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_6" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "13595446" // 207 115 54 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5033" - { - "name" "Paint Can 7" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_7" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "10843461" // 165 117 69 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5034" - { - "name" "Paint Can 8" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_8" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "12955537" // 197 175 145 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5035" - { - "name" "Paint Can 9" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_9" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "6901050" // 105 77 58 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5036" - { - "name" "Paint Can 10" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_10" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8154199" // 124 108 87 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5037" - { - "name" "Paint Can 11" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_11" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15185211" // 231 181 59 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5038" - { - "name" "Paint Can 12" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_12" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8289918" // 126 126 126 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5039" - { - "name" "Paint Can 13" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_13" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15132390" // 230 230 230 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5040" - { - "name" "Paint Can 14" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_14" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "1315860" // 20 20 20 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5041" - { - "name" "Supply Crate 2" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "tool" - { - "type" "" - "usage" - { - } - } - "capabilities" - { - "can_gift_wrap" "1" - "decodable" "1" - } - "armory_desc" "supply_crate" - "show_in_armory" "0" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_SupplyCrate" - "item_description" "#TF_SupplyCrate_Desc" - "image_inventory" "backpack/player/items/crafting/crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "8" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5042" - { - "name" "Gift Wrap" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "gift_wrap" - "use_string" "#WrapGift" - "usage_capabilities" - { - "can_gift_wrap" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "gift_wrap" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_GiftWrap" - "item_description" "#TF_Tool_GiftWrap_Desc" - "image_inventory" "backpack/crafting/gift_custom_supplies" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "5043" - { - "name" "Wrapped Gift" - "item_class" "tool" - "tool" - { - "type" "wrapped_gift" - "use_string" "#UnwrapGift" - } - "capabilities" - { - "nameable" "1" - "usable_gc" "1" - "usable_out_of_game" "1" - } - "armory_desc" "gift" - "show_in_armory" "1" - "item_type_name" "#TF_GIFT" - "item_name" "#TF_Tool_Gift" - "item_description" "#TF_Tool_Gift_Desc" - "image_inventory" "backpack/crafting/gift_custom" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "5044" - { - "name" "Description Tag" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "desc" - "usage_capabilities" - { - "nameable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "desctag" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_T_Dt" - "item_description" "#TF_Tool_Desctag_Desc" - "image_inventory" "backpack/crafting/desc_tag" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "5045" - { - "name" "Supply Crate 3" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "tool" - { - "type" "" - "usage" - { - } - } - "capabilities" - { - "can_gift_wrap" "1" - "decodable" "1" - } - "armory_desc" "supply_crate" - "show_in_armory" "0" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_SupplyCrate" - "item_description" "#TF_SupplyCrate_Desc" - "image_inventory" "backpack/player/items/crafting/crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "9" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5046" - { - "name" "Paint Can Team Color" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_TeamColor" - "item_description" "#TF_Tool_PaintCan_TeamColor_Desc" - "image_inventory" "backpack/player/items/crafting/teampaint" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5048" // Winter Crate - This id can never be re-used!!! - { - "name" "Winter Crate" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "expiration_date" "2010-12-31 23:00:00" - "tool" - { - "type" "" - "usage" - { - } - "restriction" "winter" - } - "capabilities" - { - "decodable" "1" - } - "armory_desc" "winter_crate" - "show_in_armory" "1" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_WinterCrate" - "item_description" "#TF_WinterCrate_Desc" - "image_inventory" "backpack/player/items/crafting/festive_crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "6" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5049" - { - "name" "Winter Key" // Now a 'normal key' - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "decoder_ring" - "usage_capabilities" - { - "decodable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "key" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_DecoderRing" - "item_description" "#TF_Tool_DecoderRing_Desc" - "image_inventory" "backpack/player/items/crafting/key" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "5050" - { - "name" "Backpack Expander" - "item_class" "tool" - "tool" - { - "type" "backpack_expander" - "usage" - { - "backpack_slots" "100" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "capabilities" - { - "usable_gc" "1" - "usable_out_of_game" "1" - } - "armory_desc" "backpack_expander" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_BackpackExpander" - "item_description" "#TF_Tool_BackpackExpander_Desc" - "image_inventory" "backpack/player/items/all_class/backpack_expander" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "59" - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "5051" - { - "name" "Paint Can 15" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_15" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "16738740" // 255 105 180 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5052" - { - "name" "Paint Can 16" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_16" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "3100495" // 47 79 79 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5053" - { - "name" "Paint Can 17" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_17" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8421376" // 128 128 0 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5054" - { - "name" "Paint Can 18" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_18" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "3329330" // 50 205 50 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5055" - { - "name" "Paint Can 19" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_19" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15787660" // 240 230 140 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5056" - { - "name" "Paint Can 20" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_20" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15308410" // 233 150 122 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5057" - { - "name" "Christmas Key 2010" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "decoder_ring" - "usage_capabilities" - { - "decodable" "1" - } - "restriction" "any" - } - "armory_desc" "key" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_ChristmasKey2010" - "item_description" "#TF_Tool_ChristmasKey2010_Desc" - "image_inventory" "backpack/player/items/crafting/key_winter" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - - "5500" - { - "name" "RIFT Spider Hat Code" - "item_class" "tool" - "tool" - { - "type" "claimcode" - "usage" - { - "claim_type" "#TF_RIFT_SpiderHat_ClaimType" - } - } - "capabilities" - { - "usable_gc" "1" - "usable_out_of_game" "1" - } - "armory_desc" "claimcode" - "show_in_armory" "1" - "item_type_name" "#TF_ClaimCode" - "item_name" "#TF_RIFT_SpiderHat_ClaimCode" - "item_description" "#TF_RIFT_SpiderHat_ClaimCode_Desc" - "image_inventory" "backpack/crafting/ticket" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - - } - "attributes" - { - "1" - { - "name" "damage penalty" - "attribute_class" "mult_dmg" - "attribute_name" "Minor damage penalty" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DamageDone_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "2" - { - "name" "damage bonus" - "attribute_class" "mult_dmg" - "attribute_name" "Minor damage bonus" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_DamageDone_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "3" - { - "name" "clip size penalty" - "attribute_class" "mult_clipsize" - "attribute_name" "Minor clip penalty" - "min_value" "0.9" - "max_value" "0.75" - "group" "only_on_unique" - "description_string" "#Attrib_ClipSize_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "4" - { - "name" "clip size bonus" - "attribute_class" "mult_clipsize" - "attribute_name" "Minor clip size bonus" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_ClipSize_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "5" - { - "name" "fire rate penalty" - "attribute_class" "mult_postfiredelay" - "attribute_name" "Minor fire rate penalty" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_FireRate_Negative" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "6" - { - "name" "fire rate bonus" - "attribute_class" "mult_postfiredelay" - "attribute_name" "Minor firerate bonus" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_FireRate_Positive" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "7" - { - "name" "heal rate penalty" - "attribute_class" "mult_medigun_healrate" - "attribute_name" "Minor heal rate penalty" - "min_value" "0.95" - "max_value" "0.8" - "group" "only_on_unique" - "description_string" "#Attrib_HealRate_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "8" - { - "name" "heal rate bonus" - "attribute_class" "mult_medigun_healrate" - "attribute_name" "Minor heal rate bonus" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_HealRate_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "9" - { - "name" "ubercharge rate penalty" - "attribute_class" "mult_medigun_uberchargerate" - "attribute_name" "Minor uber charge rate penalty" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_UberchargeRate_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "10" - { - "name" "ubercharge rate bonus" - "attribute_class" "mult_medigun_uberchargerate" - "attribute_name" "Minor uber charge rate bonus" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_UberchargeRate_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "11" - { - "name" "overheal bonus" - "attribute_class" "mult_medigun_overheal_amount" - "attribute_name" "Minor overheal bonus" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_OverhealAmount_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "12" - { - "name" "overheal decay penalty" - "attribute_class" "mult_medigun_overheal_decay" - "attribute_name" "Minor overheal decay penalty" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_OverhealDecay_Negative" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "13" - { - "name" "overheal decay bonus" - "attribute_class" "mult_medigun_overheal_decay" - "attribute_name" "Minor overheal decay bonus" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_OverhealDecay_Positive" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "14" - { - "name" "overheal decay disabled" - "attribute_class" "mult_medigun_overheal_decay" - "attribute_name" "Overheal decay disabled" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_OverhealDecay_Disabled" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "15" - { - "name" "crit mod disabled" - "attribute_class" "mult_crit_chance" - "attribute_name" "Crit chance disabled" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_CritChance_Disabled" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "no_crits" - "stored_as_integer" "0" - } - "16" - { - "name" "heal on hit for rapidfire" - "attribute_class" "add_onhit_addhealth" - "attribute_name" "Minor heal on hit" - "min_value" "1" - "max_value" "5" - "group" "only_on_unique" - "description_string" "#Attrib_HealOnHit_Positive" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "17" - { - "name" "add uber charge on hit" - "attribute_class" "add_onhit_ubercharge" - "attribute_name" "Minor add uber charge on hit" - "min_value" "0.01" - "max_value" "0.05" - "group" "only_on_unique" - "description_string" "#Attrib_AddUber_OnHit_Positive" - "description_format" "value_is_additive_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "18" - { - "name" "medigun charge is crit boost" - "attribute_class" "set_charge_type" - "attribute_name" "Medigun charge boosts crit chance" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Medigun_CritBoost" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "19" - { - "name" "tmp dmgbuff on hit" - "attribute_class" "addperc_ondmgdone_tmpbuff" - "attribute_name" "Add Tmp Dmg Buff on hit" - "min_value" "0.15" - "max_value" "0.2" - "group" "only_on_unique" - "description_string" "#Attrib_DamageDoneBonus_Positive" - "description_format" "value_is_additive_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "20" - { - "name" "crit vs burning players" - "attribute_class" "or_crit_vs_playercond" - "attribute_name" "Critical Hit vs Burning Players" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_CritVsBurning" - "description_format" "value_is_or" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "21" - { - "name" "dmg penalty vs nonburning" - "attribute_class" "mult_dmg_vs_nonburning" - "attribute_name" "Damage penalty vs non burning players" - "min_value" "0.99" - "max_value" "0.95" - "group" "only_on_unique" - "description_string" "#Attrib_DmgPenaltyVsNonBurning" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "22" - { - "name" "no crit vs nonburning" - "attribute_class" "set_nocrit_vs_nonburning" - "attribute_name" "Crits Disabled vs Non-burning players" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_NoCritVsNonBurning" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "23" - { - "name" "mod flamethrower push" - "attribute_class" "set_flamethrower_push_disabled" - "attribute_name" "Disables flamethrower push" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_ModFlamethrowerPush" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "24" - { - "name" "mod flamethrower back crit" - "attribute_class" "set_flamethrower_back_crit" - "attribute_name" "Turns on back crits for the flamethrower" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_ModFlamethrower_BackCrits" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "25" - { - "name" "hidden secondary max ammo penalty" - "attribute_class" "mult_maxammo_secondary" - "attribute_name" "Minor secondary max ammo penalty" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "unused" - "description_format" "value_is_percentage" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "26" - { - "name" "max health additive bonus" - "attribute_class" "add_maxhealth" - "attribute_name" "Minor max health bonus" - "min_value" "5" - "max_value" "15" - "group" "only_on_unique" - "description_string" "#Attrib_MaxHealth_Positive" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "27" - { - "name" "alt-fire disabled" - "attribute_class" "unimplemented_altfire_disabled" - "attribute_name" "Alt-fire Disabled" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_AltFire_Disabled" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "28" - { - "name" "crit mod disabled hidden" - "attribute_class" "mult_crit_chance" - "attribute_name" "Crit Chance disabled" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_CritChance_Disabled" - "description_format" "value_is_percentage" - "hidden" "1" - "effect_type" "negative" - "stored_as_integer" "0" - } - "29" - { - "name" "alt-fire is vampire" - "attribute_class" "set_altfire_mode" - "attribute_name" "Alt-fire Is Vampire" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_AltFire_Is_Vampire" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "30" - { - "name" "fists have radial buff" - "attribute_class" "set_weapon_mode" - "attribute_name" "Fists Have Radial Buff" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_FistsHaveRadialBuff" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "31" - { - "name" "critboost on kill" - "attribute_class" "add_onkill_critboost_time" - "attribute_name" "Add CritBoost effect on kill" - "min_value" "2" - "max_value" "3" - "group" "only_on_unique" - "description_string" "#Attrib_CritBoost_OnKill" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_kill" - "stored_as_integer" "0" - } - "32" - { - "name" "slow enemy on hit" - "attribute_class" "mult_onhit_enemyspeed" - "attribute_name" "Minor slow enemy on hit" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_Slow_Enemy_OnHit" - "description_format" "value_is_additive_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "33" - { - "name" "set cloak is feign death" - "attribute_class" "set_weapon_mode" - "attribute_name" "Replaces cloak power with feign death." - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_CloakIsFeignDeath" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "armory_desc" "cloak_type" - "stored_as_integer" "0" - } - "34" - { - "name" "mult cloak meter consume rate" - "attribute_class" "mult_cloak_meter_consume_rate" - "attribute_name" "Rate cloak energy is consumed." - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_CloakMeterConsumeRate" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "35" - { - "name" "mult cloak meter regen rate" - "attribute_class" "mult_cloak_meter_regen_rate" - "attribute_name" "Rate cloak energy is regenerated." - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_CloakMeterRegenRate" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "36" - { - "name" "spread penalty" - "attribute_class" "mult_spread_scale" - "attribute_name" "Shot spread penalty" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_Spread_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "37" - { - "name" "hidden primary max ammo bonus" - "attribute_class" "mult_maxammo_primary" - "attribute_name" "Primary max ammo bonus" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "unused" - "description_format" "value_is_percentage" - "hidden" "1" - "effect_type" "positive" - "stored_as_integer" "0" - } - "38" - { - "name" "mod bat launches balls" - "attribute_class" "set_weapon_mode" - "attribute_name" "Bat can fire several grenades before melee mode." - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_BatLaunchesBalls" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "39" - { - "name" "dmg penalty vs nonstunned" - "attribute_class" "unimplemented_mod_dmg_vs_nonstunned" - "attribute_name" "Damage penalty vs non stunned players" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_DmgPenaltyVsNonStunned" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "40" - { - "name" "zoom speed mod disabled" - "attribute_class" "unimplemented_mod_zoom_speed_disabled" - "attribute_name" "Zoom Speed Mod Disabled" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_ZoomSpeedMod_Disabled" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "41" - { - "name" "sniper charge per sec" - "attribute_class" "mult_sniper_charge_per_sec" - "attribute_name" "sniper charge per sec" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_SniperCharge_Per_Sec" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "42" - { - "name" "sniper no headshots" - "attribute_class" "set_weapon_mode" - "attribute_name" "Sniper no headshots" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SniperNoHeadshots" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "43" - { - "name" "scattergun no reload single" - "attribute_class" "set_scattergun_no_reload_single" - "attribute_name" "Scattergun No Reload Single" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Scattergun_NoReloadSingle" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "44" - { - "name" "scattergun has knockback" - "attribute_class" "set_scattergun_has_knockback" - "attribute_name" "Scattergun Has Knockback" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Scattergun_HasKnockback" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "45" - { - "name" "bullets per shot bonus" - "attribute_class" "mult_bullets_per_shot" - "attribute_name" "Minor bullets per shot bonus" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_BulletsPerShot_Bonus" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "46" - { - "name" "sniper zoom penalty" - "attribute_class" "mult_zoom_fov" - "attribute_name" "Sniper zoom penalty" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_SniperZoom_Penalty" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "47" - { - "name" "sniper no charge" - "attribute_class" "unimplemented_mod_sniper_no_charge" - "attribute_name" "Sniper no charge" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SniperNoCharge" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "48" - { - "name" "set cloak is movement based" - "attribute_class" "set_weapon_mode" - "attribute_name" "Replaces default cloak with a motion based cloak." - "min_value" "2" - "max_value" "2" - "group" "only_on_unique" - "description_string" "#Attrib_CloakIsMovementBased" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "armory_desc" "cloak_type" - "stored_as_integer" "0" - } - "49" - { - "name" "no double jump" - "attribute_class" "set_scout_doublejump_disabled" - "attribute_name" "Disables double jump" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_NoDoubleJump" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "50" - { - "name" "absorb damage while cloaked" - "attribute_class" "unimplemented_absorb_dmg_while_cloaked" - "attribute_name" "Absorbs damage when cloaked." - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_AbsorbDmgWhileCloaked" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "51" - { - "name" "revolver use hit locations" - "attribute_class" "set_weapon_mode" - "attribute_name" "Revolver uses hit locations" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_RevolverUseHitLocations" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "52" - { - "name" "backstab shield" - "attribute_class" "set_blockbackstab_once" - "attribute_name" "Stops one backstab." - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_BackstabShield" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "53" - { - "name" "fire retardant" - "attribute_class" "set_fire_retardant" - "attribute_name" "Player cannot be set on fire." - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_FireRetardant" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "54" - { - "name" "move speed penalty" - "attribute_class" "mult_player_movespeed" - "attribute_name" "Minor move speed penalty" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_MoveSpeed_Penalty" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "55" - { - "name" "obsolete ammo penalty" - "attribute_class" "obsolete" - "attribute_name" "Minor primary max ammo penalty" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "unused" - "description_format" "value_is_percentage" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "56" - { - "name" "jarate description" - "attribute_class" "desc_jarate_description" - "attribute_name" "Text description of jarate" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_Jarate_Description" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "57" - { - "name" "health regen" - "attribute_class" "add_health_regen" - "attribute_name" "Minor health regeneration" - "min_value" "0.3" - "max_value" "0.5" - "group" "only_on_unique" - "description_string" "#Attrib_HealthRegen" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "58" - { - "name" "self dmg push force increased" - "attribute_class" "mult_dmgself_push_force" - "attribute_name" "Minor increased self dmg push force" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_SelfDmgPush_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "59" - { - "name" "self dmg push force decreased" - "attribute_class" "mult_dmgself_push_force" - "attribute_name" "Minor decreased self dmg push force" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_SelfDmgPush_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "60" - { - "name" "dmg taken from fire reduced" - "attribute_class" "mult_dmgtaken_from_fire" - "attribute_name" "Minor fire damage reduction" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Fire_Reduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "61" - { - "name" "dmg taken from fire increased" - "attribute_class" "mult_dmgtaken_from_fire" - "attribute_name" "Minor fire damage increased" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Fire_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "62" - { - "name" "dmg taken from crit reduced" - "attribute_class" "mult_dmgtaken_from_crit" - "attribute_name" "Minor crit damage reduction" - "min_value" "0.9" - "max_value" "0.75" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Crit_Reduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "63" - { - "name" "dmg taken from crit increased" - "attribute_class" "mult_dmgtaken_from_crit" - "attribute_name" "Minor crit damage increased" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Crit_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "64" - { - "name" "dmg taken from blast reduced" - "attribute_class" "mult_dmgtaken_from_explosions" - "attribute_name" "Minor blast damage reduced" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Blast_Reduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "65" - { - "name" "dmg taken from blast increased" - "attribute_class" "mult_dmgtaken_from_explosions" - "attribute_name" "Minor blast damage increased" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Blast_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "66" - { - "name" "dmg taken from bullets reduced" - "attribute_class" "mult_dmgtaken_from_bullets" - "attribute_name" "Minor bullet damage reduced" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Bullets_Reduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "67" - { - "name" "dmg taken from bullets increased" - "attribute_class" "mult_dmgtaken_from_bullets" - "attribute_name" "Minor bullet damage increased" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Bullets_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "68" - { - "name" "increase player capture value" - "attribute_class" "add_player_capturevalue" - "attribute_name" "Minor capture value increase" - "min_value" "1" - "max_value" "2" - "group" "only_on_unique" - "description_string" "#Attrib_CaptureValue_Increased" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "69" - { - "name" "health from healers reduced" - "attribute_class" "mult_health_fromhealers" - "attribute_name" "Minor penalty to health from healers" - "min_value" "0.95" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_HealthFromHealers_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "70" - { - "name" "health from healers increased" - "attribute_class" "mult_health_fromhealers" - "attribute_name" "Minor increase to health from healers" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_HealthFromHealers_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "71" - { - "name" "weapon burn dmg increased" - "attribute_class" "mult_wpn_burndmg" - "attribute_name" "Minor increase to burn dmg" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_WpnBurnDmg_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "72" - { - "name" "weapon burn dmg reduced" - "attribute_class" "mult_wpn_burndmg" - "attribute_name" "Minor reduction to burn dmg" - "min_value" "0.95" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_WpnBurnDmg_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "73" - { - "name" "weapon burn time increased" - "attribute_class" "mult_wpn_burntime" - "attribute_name" "Minor increase to burn time" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_WpnBurnTime_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "74" - { - "name" "weapon burn time reduced" - "attribute_class" "mult_wpn_burntime" - "attribute_name" "Minor reduction to burn time" - "min_value" "0.95" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_WpnBurnTime_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "75" - { - "name" "aiming movespeed increased" - "attribute_class" "mult_player_aiming_movespeed" - "attribute_name" "Minor aiming movespeed increase" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_AimingMoveSpeed_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "76" - { - "name" "maxammo primary increased" - "attribute_class" "mult_maxammo_primary" - "attribute_name" "Minor primary maxammo increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_MaxammoPrimary_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "77" - { - "name" "maxammo primary reduced" - "attribute_class" "mult_maxammo_primary" - "attribute_name" "Minor primary maxammo reduction" - "min_value" "0.9" - "max_value" "0.6" - "group" "only_on_unique" - "description_string" "#Attrib_MaxammoPrimary_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "78" - { - "name" "maxammo secondary increased" - "attribute_class" "mult_maxammo_secondary" - "attribute_name" "Minor secondary maxammo increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_MaxammoSecondary_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "79" - { - "name" "maxammo secondary reduced" - "attribute_class" "mult_maxammo_secondary" - "attribute_name" "Minor secondary maxammo reduction" - "min_value" "0.9" - "max_value" "0.6" - "group" "only_on_unique" - "description_string" "#Attrib_MaxammoSecondary_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "80" - { - "name" "maxammo metal increased" - "attribute_class" "mult_maxammo_metal" - "attribute_name" "Minor metal maxammo increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_MaxammoMetal_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "81" - { - "name" "maxammo metal reduced" - "attribute_class" "mult_maxammo_metal" - "attribute_name" "Minor metal maxammo reduction" - "min_value" "0.95" - "max_value" "0.65" - "group" "only_on_unique" - "description_string" "#Attrib_MaxammoMetal_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "82" - { - "name" "cloak consume rate increased" - "attribute_class" "mult_cloak_meter_consume_rate" - "attribute_name" "Minor cloak consume rate increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_CloakConsumeRate_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "83" - { - "name" "cloak consume rate decreased" - "attribute_class" "mult_cloak_meter_consume_rate" - "attribute_name" "Minor cloak consume rate decrease" - "min_value" "0.95" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_CloakConsumeRate_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "84" - { - "name" "cloak regen rate increased" - "attribute_class" "mult_cloak_meter_regen_rate" - "attribute_name" "Minor cloak regen rate increase" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_CloakRegenRate_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "85" - { - "name" "cloak regen rate decreased" - "attribute_class" "mult_cloak_meter_regen_rate" - "attribute_name" "Minor cloak regen rate decrease" - "min_value" "0.95" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_CloakRegenRate_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "86" - { - "name" "minigun spinup time increased" - "attribute_class" "mult_minigun_spinup_time" - "attribute_name" "Minor minigun spinup time increase" - "min_value" "1.05" - "max_value" "1.2" - "group" "only_on_unique" - "description_string" "#Attrib_MinigunSpinup_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "87" - { - "name" "minigun spinup time decreased" - "attribute_class" "mult_minigun_spinup_time" - "attribute_name" "Minor minigun spinup time decrease" - "min_value" "0.95" - "max_value" "0.8" - "group" "only_on_unique" - "description_string" "#Attrib_MinigunSpinup_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "88" - { - "name" "max pipebombs increased" - "attribute_class" "add_max_pipebombs" - "attribute_name" "Minor max pipebomb increase" - "min_value" "2" - "max_value" "3" - "group" "only_on_unique" - "description_string" "#Attrib_MaxPipebombs_Increased" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "89" - { - "name" "max pipebombs decreased" - "attribute_class" "add_max_pipebombs" - "attribute_name" "Minor max pipebomb decrease" - "min_value" "-2" - "max_value" "-4" - "group" "only_on_unique" - "description_string" "#Attrib_MaxPipebombs_Decreased" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "90" - { - "name" "SRifle Charge rate increased" - "attribute_class" "mult_sniper_charge_per_sec" - "attribute_name" "Minor charge rate increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_SRifleChargeRate_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "91" - { - "name" "SRifle Charge rate decreased" - "attribute_class" "mult_sniper_charge_per_sec" - "attribute_name" "Minor charge rate decrease" - "min_value" "0.95" - "max_value" "0.8" - "group" "only_on_unique" - "description_string" "#Attrib_SRifleChargeRate_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "92" - { - "name" "Construction rate increased" - "attribute_class" "mult_construction_value" - "attribute_name" "Minor construction rate increase" - "min_value" "1.1" - "max_value" "1.3" - "group" "only_on_unique" - "description_string" "#Attrib_ConstructionRate_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "93" - { - "name" "Construction rate decreased" - "attribute_class" "mult_construction_value" - "attribute_name" "Minor construction rate decrease" - "min_value" "0.9" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_ConstructionRate_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "94" - { - "name" "Repair rate increased" - "attribute_class" "mult_repair_value" - "attribute_name" "Minor repair rate increase" - "min_value" "1.05" - "max_value" "1.2" - "group" "only_on_unique" - "description_string" "#Attrib_RepairRate_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "95" - { - "name" "Repair rate decreased" - "attribute_class" "mult_repair_value" - "attribute_name" "Minor repair rate decrease" - "min_value" "0.9" - "max_value" "0.75" - "group" "only_on_unique" - "description_string" "#Attrib_RepairRate_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "96" - { - "name" "Reload time increased" - "attribute_class" "mult_reload_time" - "attribute_name" "Minor reload time increase" - "min_value" "1.1" - "max_value" "1.4" - "group" "only_on_unique" - "description_string" "#Attrib_ReloadTime_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "97" - { - "name" "Reload time decreased" - "attribute_class" "mult_reload_time" - "attribute_name" "Minor reload time decrease" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_ReloadTime_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "98" - { - "name" "selfdmg on hit for rapidfire" - "attribute_class" "add_onhit_addhealth" - "attribute_name" "Minor self dmg on hit" - "min_value" "-1" - "max_value" "-3" - "group" "only_on_unique" - "description_string" "#Attrib_HealOnHit_Negative" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "99" - { - "name" "Blast radius increased" - "attribute_class" "mult_explosion_radius" - "attribute_name" "Minor explosion radius increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_BlastRadius_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "100" - { - "name" "Blast radius decreased" - "attribute_class" "mult_explosion_radius" - "attribute_name" "Minor explosion radius decrease" - "min_value" "0.95" - "max_value" "0.75" - "group" "only_on_unique" - "description_string" "#Attrib_BlastRadius_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "101" - { - "name" "Projectile range increased" - "attribute_class" "mult_projectile_range" - "attribute_name" "Minor projectile range increase" - "min_value" "1.1" - "max_value" "1.3" - "group" "only_on_unique" - "description_string" "#Attrib_ProjectileRange_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "102" - { - "name" "Projectile range decreased" - "attribute_class" "mult_projectile_range" - "attribute_name" "Minor projectile range decrease" - "min_value" "0.9" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_ProjectileRange_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "103" - { - "name" "Projectile speed increased" - "attribute_class" "mult_projectile_speed" - "attribute_name" "Minor projectile speed increase" - "min_value" "1.05" - "max_value" "1.15" - "group" "only_on_unique" - "description_string" "#Attrib_ProjectileSpeed_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "104" - { - "name" "Projectile speed decreased" - "attribute_class" "mult_projectile_speed" - "attribute_name" "Minor projectile speed decrease" - "min_value" "0.9" - "max_value" "0.75" - "group" "only_on_unique" - "description_string" "#Attrib_ProjectileSpeed_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "105" - { - "name" "overheal penalty" - "attribute_class" "mult_medigun_overheal_amount" - "attribute_name" "Minor overheal penalty" - "min_value" "0.9" - "max_value" "0.7" - "group" "only_on_unique" - "description_string" "#Attrib_OverhealAmount_Negative" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "106" - { - "name" "weapon spread bonus" - "attribute_class" "mult_spread_scale" - "attribute_name" "Shot spread bonus" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_Spread_Positive" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "107" - { - "name" "move speed bonus" - "attribute_class" "mult_player_movespeed" - "attribute_name" "Minor move speed bonus" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_MoveSpeed_Bonus" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "108" - { - "name" "health from packs increased" - "attribute_class" "mult_health_frompacks" - "attribute_name" "Minor bonus to health from packs" - "min_value" "1.1" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_HealthFromPacks_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "109" - { - "name" "health from packs decreased" - "attribute_class" "mult_health_frompacks" - "attribute_name" "Minor penalty to health from packs" - "min_value" "0.95" - "max_value" "0.6" - "group" "only_on_unique" - "description_string" "#Attrib_HealthFromPacks_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "110" - { - "name" "heal on hit for slowfire" - "attribute_class" "add_onhit_addhealth" - "attribute_name" "Minor heal on hit" - "min_value" "10" - "max_value" "15" - "group" "only_on_unique" - "description_string" "#Attrib_HealOnHit_Positive" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "111" - { - "name" "selfdmg on hit for slowfire" - "attribute_class" "add_onhit_addhealth" - "attribute_name" "Minor self dmg on hit" - "min_value" "-3" - "max_value" "-8" - "group" "only_on_unique" - "description_string" "#Attrib_HealOnHit_Negative" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "112" - { - "name" "ammo regen" - "attribute_class" "addperc_ammo_regen" - "attribute_name" "Minor ammo regeneration" - "min_value" "0.03" - "max_value" "0.08" - "group" "only_on_unique" - "description_string" "#Attrib_AmmoRegen" - "description_format" "value_is_additive_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "113" - { - "name" "metal regen" - "attribute_class" "add_metal_regen" - "attribute_name" "Minor health regeneration" - "min_value" "1" - "max_value" "8" - "group" "only_on_unique" - "description_string" "#Attrib_MetalRegen" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "114" - { - "name" "mod mini-crit airborne" - "attribute_class" "mini_crit_airborne" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_MiniCritAirborneEnemies" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "115" - { - "name" "mod shovel damage boost" - "attribute_class" "set_weapon_mode" - "attribute_name" "Shovel deals more damage." - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_ShovelDamageBoost" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "116" - { - "name" "mod soldier buff type" - "attribute_class" "set_buff_type" - "attribute_name" "indicates soldier activated buff type" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SoldierBuffType" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "positive" - "stored_as_integer" "0" - } - "117" - { - "name" "dmg falloff increased" - "attribute_class" "mult_dmg_falloff" - "attribute_name" "Damage falloff" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_Dmg_Falloff_Increased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "118" - { - "name" "dmg falloff decreased" - "attribute_class" "mult_dmg_falloff" - "attribute_name" "Damage falloff" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_Dmg_Falloff_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "119" - { - "name" "sticky detonate mode" - "attribute_class" "set_detonate_mode" - "attribute_name" "indicates method of detonating stickies" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_StickyDetonateMode" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "120" - { - "name" "sticky arm time penalty" - "attribute_class" "sticky_arm_time" - "attribute_name" "makes stickies take longer to arm" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_StickyArmTimePenalty" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "121" - { - "name" "stickies detonate stickies" - "attribute_class" "stickies_detonate_stickies" - "attribute_name" "indicates these stickies can destroy enemy stickies" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_StickiesDetonateStickies" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "122" - { - "name" "mod demo buff type" - "attribute_class" "set_buff_type" - "attribute_name" "indicates demo activated buff type" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DemoBuffType" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "positive" - "stored_as_integer" "0" - } - "123" - { - "name" "speed boost when active" - "attribute_class" "mult_move_speed_when_active" - "attribute_name" "move speed buff when item is active" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SpeedBoostWhenActive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_active" - "stored_as_integer" "0" - } - "124" - { - "name" "mod wrench builds minisentry" - "attribute_class" "wrench_builds_minisentry" - "attribute_name" "Wrench builds minisentry" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_WrenchBuildsMiniSentry" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "125" - { - "name" "max health additive penalty" - "attribute_class" "add_maxhealth" - "attribute_name" "Minor max health penalty" - "min_value" "-5" - "max_value" "-15" - "group" "only_on_unique" - "description_string" "#Attrib_MaxHealth_Negative" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "126" - { - "name" "sticky arm time bonus" - "attribute_class" "sticky_arm_time" - "attribute_name" "makes stickies arm more quickly" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_StickyArmTimeBonus" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "127" - { - "name" "sticky air burst mode" - "attribute_class" "set_detonate_mode" - "attribute_name" "set mode to 2" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_StickyAirBurstMode" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "128" - { - "name" "provide on active" - "attribute_class" "provide_on_active" - "attribute_name" "the item will only provide its attributes when it is the active weapon" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_ProvideOnActive" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "armory_desc" "on_active" - "stored_as_integer" "0" - } - "129" - { - "name" "health drain" - "attribute_class" "add_health_regen" - "attribute_name" "Minor health drain" - "min_value" "0.3" - "max_value" "0.5" - "group" "only_on_unique" - "description_string" "#Attrib_HealthDrain" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "130" - { - "name" "medic regen bonus" - "attribute_class" "medic_regen" - "attribute_name" "medic regen bonus" - "min_value" "0.3" - "max_value" "0.5" - "group" "only_on_unique" - "description_string" "#Attrib_MedicRegenBonus" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "131" - { - "name" "medic regen penalty" - "attribute_class" "medic_regen" - "attribute_name" "medic regen penalty" - "min_value" "0.3" - "max_value" "0.5" - "group" "only_on_unique" - "description_string" "#Attrib_MedicRegenPenalty" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "132" - { - "name" "community description" - "attribute_class" "desc_community_description" - "attribute_name" "Text description of community" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_Community_Description" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "133" - { - "name" "soldier model index" - "attribute_class" "desc_soldiermedal_index" - "attribute_name" "Text description of soldier medal" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_MedalIndex_Description" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "1" - } - "134" - { - "name" "attach particle effect" - "attribute_class" "set_attached_particle" - "attribute_name" "Attach Custom Particle" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_AttachedParticle" - "description_format" "value_is_particle_index" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "135" - { - "name" "rocket jump damage reduction" - "attribute_class" "rocket_jump_dmg_reduction" - "attribute_name" "Reduces damage from rocket jumping" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_RocketJumpDmgReduction" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "136" - { - "name" "mod sentry killed revenge" - "attribute_class" "sentry_killed_revenge" - "attribute_name" "Player receives crits for his sentry's death." - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SentryKilledRevenge" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "137" - { - "name" "dmg bonus vs buildings" - "attribute_class" "mult_dmg_vs_buildings" - "attribute_name" "Minor damage bonus Vs Buildings" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_DmgVsBuilding_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "138" - { - "name" "dmg penalty vs players" - "attribute_class" "mult_dmg_vs_players" - "attribute_name" "Minor damage penalty Vs players" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DmgVsPlayer_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "139" - { - "name" "lunchbox adds maxhealth bonus" - "attribute_class" "set_weapon_mode" - "attribute_name" "Lunchbox adds max health bonus" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_LunchboxAddsMaxHealth" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "140" - { - "name" "hidden maxhealth non buffed" - "attribute_class" "add_maxhealth_nonbuffed" - "attribute_name" "Max health buff that doesn't affect buffed max" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_MaxHealth_Positive" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "positive" - "stored_as_integer" "0" - } - "141" - { - "name" "selfmade description" - "attribute_class" "desc_selfmade_description" - "attribute_name" "Text description of selfmade" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_Selfmade_Description" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "142" - { - "name" "set item tint RGB" - "attribute_class" "set_item_tint_rgb" - "attribute_name" "Sets the RGB on tinted items" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_Selfmade_Description" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "143" - { - "name" "custom employee number" - "attribute_class" "set_employee_number" - "attribute_name" "Set Employee Number" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_EmployeeNumber" - "description_format" "value_is_date" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "1" - } - "144" - { - "name" "lunchbox adds minicrits" - "attribute_class" "set_weapon_mode" - "attribute_name" "Lunchbox adds minicrits" - "min_value" "2" - "max_value" "2" - "group" "only_on_unique" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "146" - { - "name" "damage applies to sappers" - "attribute_class" "set_dmg_apply_to_sapper" - "attribute_name" "Damage applies to sappers" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DmgAppliesToSappers" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "147" - { - "name" "Wrench index" - "attribute_class" "desc_wrench_index" - "attribute_name" "Wrench index" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_WrenchNumber" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "1" - } - "148" - { - "name" "building cost reduction" - "attribute_class" "building_cost_reduction" - "attribute_name" "Building cost reduction" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_BuildingCostReduction" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "149" - { - "name" "bleeding duration" - "attribute_class" "bleeding_duration" - "attribute_name" "Bleeding Duration" - "min_value" "1" - "max_value" "4" - "group" "only_on_unique" - "description_string" "#Attrib_BleedingDuration" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit bleed" - "stored_as_integer" "0" - } - "150" - { - "name" "turn to gold" - "attribute_class" "set_turn_to_gold" - "attribute_name" "turns corpse to gold" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_TurnToGold" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - - "153" - { - "name" "cannot trade" - "attribute_class" "cannot_trade" - "attribute_name" "cannot trade" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_CannotTrade" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "154" - { - "name" "disguise on backstab" - "attribute_class" "set_disguise_on_backstab" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DisguiseOnBackstab" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "155" - { - "name" "cannot disguise" - "attribute_class" "set_cannot_disguise" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_CannotDisguise" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "156" - { - "name" "silent killer" - "attribute_class" "set_silent_killer" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SilentKiller" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "157" - { - "name" "disguise speed penalty" - "attribute_class" "disguise_speed_penalty" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DisguiseSpeedPenalty" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "158" - { - "name" "add cloak on kill" - "attribute_class" "add_cloak_on_kill" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_AddCloakOnKill" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "159" - { - "name" "cloak blink time penalty" - "attribute_class" "cloak_blink_time_penalty" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_CloakBlinkTimePenalty" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "160" - { - "name" "quiet unstealth" - "attribute_class" "set_quiet_unstealth" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_QuietUnstealth" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "161" - { - "name" "flame size penalty" - "attribute_class" "mult_flame_size" - "attribute_name" "flame size penalty" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_FlameSize_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "162" - { - "name" "flame size bonus" - "attribute_class" "mult_flame_size" - "attribute_name" "flame size bonus" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_FlameSize_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "163" - { - "name" "flame life penalty" - "attribute_class" "mult_flame_life" - "attribute_name" "flame life penalty" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_FlameLife_Negative" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "164" - { - "name" "flame life bonus" - "attribute_class" "mult_flame_life" - "attribute_name" "flame life bonus" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_FlameLife_Positive" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "165" - { - "name" "charged airblast" - "attribute_class" "set_charged_airblast" - "attribute_name" "charged airblast" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_ChargedAirblast" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "166" - { - "name" "add cloak on hit" - "attribute_class" "add_cloak_on_hit" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_AddCloakOnHit" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "167" - { - "name" "disguise damage reduction" - "attribute_class" "disguise_damage_reduction" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DisguiseDamageReduction" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "168" - { - "name" "disguise no burn" - "attribute_class" "disguise_no_burn" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DisguiseNoBurn" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "169" - { - "name" "dmg from sentry reduced" - "attribute_class" "dmg_from_sentry_reduced" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DmgFromSentryReduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "170" - { - "name" "airblast cost increased" - "attribute_class" "mult_airblast_cost" - "attribute_name" "airblast cost increased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_AirblastCost_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "171" - { - "name" "airblast cost decreased" - "attribute_class" "mult_airblast_cost" - "attribute_name" "airblast cost decreased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_AirblastCost_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "172" - { - "name" "purchased" - "attribute_class" "purchased" - "attribute_name" "purchased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_Purchased" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "173" - { - "name" "flame ammopersec increased" - "attribute_class" "mult_flame_ammopersec" - "attribute_name" "flame ammopersec increased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_FlameAmmoPerSec_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "174" - { - "name" "flame ammopersec decreased" - "attribute_class" "mult_flame_ammopersec" - "attribute_name" "flame ammopersec decreased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_FlameAmmoPerSec_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "175" - { - "name" "jarate duration" - "attribute_class" "jarate_duration" - "attribute_name" "Jarate Duration" - "min_value" "1" - "max_value" "4" - "group" "only_on_unique" - "description_string" "#Attrib_JarateDuration" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit jarate" - "stored_as_integer" "0" - } - "176" - { - "name" "no death from headshots" - "attribute_class" "no_death_from_headshots" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_NoDeathFromHeadshots" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "177" - { - "name" "deploy time increased" - "attribute_class" "mult_deploy_time" - "attribute_name" "deploy time increased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DeployTime_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "178" - { - "name" "deploy time decreased" - "attribute_class" "mult_deploy_time" - "attribute_name" "deploy time decreased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DeployTime_Decreased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "179" - { - "name" "minicrits become crits" - "attribute_class" "minicrits_become_crits" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_MinicritsBecomeCrits" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "180" - { - "name" "heal on kill" - "attribute_class" "heal_on_kill" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_HealOnKill" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "181" - { - "name" "no self blast dmg" - "attribute_class" "no_self_blast_dmg" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_NoSelfBlastDmg" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "182" - { - "name" "slow enemy on hit major" - "attribute_class" "mult_onhit_enemyspeed_major" - "attribute_name" "Major slow enemy on hit" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_Slow_Enemy_OnHit_Major" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit" - "stored_as_integer" "0" - } - "183" - { - "name" "aiming movespeed decreased" - "attribute_class" "mult_player_aiming_movespeed" - "attribute_name" "Minor aiming movespeed decrease" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_AimingMoveSpeed_Decreased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "184" - { - "name" "duel loser account id" - "attribute_class" "duel_loser_account_id" - "attribute_name" "duel loser account id" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DuelLoserAccountID" - "description_format" "value_is_account_id" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "1" - } - "185" - { - "name" "event date" - "attribute_class" "event_date" - "attribute_name" "event date" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_EventDate" - "description_format" "value_is_date" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "1" - } - "186" - { - "name" "gifter account id" - "attribute_class" "gifter_account_id" - "attribute_name" "gifter account id" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_GifterAccountID" - "description_format" "value_is_account_id" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "1" - } - "187" - { - "name" "set supply crate series" - "attribute_class" "supply_crate_series" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_SupplyCrateSeries" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "188" - { - "name" "preserve ubercharge" - "attribute_class" "preserve_ubercharge" - "attribute_name" "Preserve Ubercharge" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_PreserveUbercharge" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "189" - { - "name" "elevate quality" - "attribute_class" "set_elevated_quality" - "attribute_name" "Elevate Quality" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_ElevateQuality" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "positive" - "stored_as_integer" "0" - } - "190" - { - "name" "active health regen" - "attribute_class" "active_item_health_regen" - "attribute_name" "Minor health regen" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_HealthRegen" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "191" - { - "name" "active health degen" - "attribute_class" "active_item_health_regen" - "attribute_name" "Minor health degen" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_HealthDrain" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "192" - { - "name" "referenced item id low" - "attribute_class" "referenced_item_id_low" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "1" - } - "193" - { - "name" "referenced item id high" - "attribute_class" "referenced_item_id_high" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "1" - } - "194" - { - "name" "referenced item def" - "attribute_class" "referenced_item_def" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_string" "#Attrib_ReferencedItem" - "description_format" "value_is_item_def" - "hidden" "1" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "1" - } - "195" - { - "name" "always tradable" - "attribute_class" "always_tradable" - "attribute_name" "always tradable" - "min_value" "0" - "max_value" "0" - "group" "only_on_unique" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "negative" - "stored_as_integer" "0" - } - "196" - { - "name" "noise maker" - "attribute_class" "enable_misc2_noisemaker" - "attribute_name" "Misc2 slot will be a noise maker" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "197" - { - "name" "halloween item" - "attribute_class" "halloween_item" - "attribute_name" "halloween item" - "min_value" "0" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Halloween_Item" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "199" - { - "name" "fires healing bolts" - "attribute_class" "fires_healing_bolts" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_FiresHealingBolts" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "200" - { - "name" "enables aoe heal" - "attribute_class" "enables_aoe_heal" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_EnablesAOEHeal" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "201" - { - "name" "gesture speed increase" - "attribute_class" "mult_gesture_time" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_GestureSpeed_Increase" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "202" - { - "name" "charge time increased" - "attribute_class" "mod_charge_time" - "min_value" "1.05" - "max_value" "1.1" - "group" "only_on_unique" - "description_string" "#Attrib_ChargeTime_Increase" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "203" - { - "name" "drop health pack on kill" - "attribute_class" "drop_health_pack_on_kill" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_DropHealthPackOnKill" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "204" - { - "name" "hit self on miss" - "attribute_class" "hit_self_on_miss" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_HitSelfOnMiss" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "205" - { - "name" "dmg from ranged reduced" - "attribute_class" "dmg_from_ranged" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DmgFromRanged_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - "armory_desc" "on_active" - } - "206" - { - "name" "dmg from melee increased" - "attribute_class" "dmg_from_melee" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_DmgFromMelee_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - "armory_desc" "on_active" - } - "207" - { - "name" "blast dmg to self increased" - "attribute_class" "blast_dmg_to_self" - "attribute_name" "blast dmg to self increased" - "min_value" "0.95" - "max_value" "0.85" - "group" "only_on_unique" - "description_string" "#Attrib_BlastDamageToSelf_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "208" - { - "name" "Set DamageType Ignite" - "attribute_class" "set_dmgtype_ignite" - "attribute_name" "Set DamageType Ignite" - "min_value" "0" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_SetDamageType_Ignite" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "209" - { - "name" "minicrit vs burning player" - "attribute_class" "or_minicrit_vs_playercond_burning" - "attribute_name" "Minicrit vs Burning Player" - "min_value" "0" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Minicrit_Vs_Burning_Player" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - } - "item_sets" - { - "polycount_pyro" - { - "name" "#TF_Set_Polycount_Pyro" - "items" - { - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - } - "attributes" - { - "move speed bonus" - { - "attribute_class" "mult_player_movespeed" - "value" "1.1" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "1.1" - } - } - "store_bundle" "Polycount Pyro Bundle" - } - "polycount_spy" - { - "name" "#TF_Set_Polycount_Spy" - "items" - { - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - } - "attributes" - { - "quiet unstealth" - { - "attribute_class" "set_quiet_unstealth" - "value" "1" - } - "cloak blink time penalty" - { - "attribute_class" "cloak_blink_time_penalty" - "value" "0.5" - } - } - "store_bundle" "Polycount Spy Bundle" - } - "polycount_soldier" - { - "name" "#TF_Set_Polycount_Soldier" - "items" - { - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - } - "attributes" - { - "dmg from sentry reduced" - { - "attribute_class" "dmg_from_sentry_reduced" - "value" "0.8" - } - } - "store_bundle" "Polycount Soldier Bundle" - } - "polycount_sniper" - { - "name" "#TF_Set_Polycount_Sniper" - "items" - { - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - } - "attributes" - { - "no death from headshots" - { - "attribute_class" "no_death_from_headshots" - "value" "1" - } - } - "store_bundle" "Polycount Sniper Bundle" - } - "polycount_scout" - { - "name" "#TF_Set_Polycount_Scout" - "items" - { - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - } - "attributes" - { - "max health additive bonus" - { - "attribute_class" "add_maxhealth" - "value" "25" - } - } - "store_bundle" "Polycount Scout Bundle" - } - "medieval_medic" - { - "name" "#TF_Set_Medieval_Medic" - "items" - { - "The Amputator" "1" - "The Crusader's Crossbow" "1" - } - "attributes" - { - "health regen" - { - "attribute_class" "add_health_regen" - "value" "1" - } - } - "store_bundle" "Medieval Medic Bundle" - } - "hibernating_bear" - { - "name" "#TF_Set_Hibernating_Bear" - "items" - { - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - } - "attributes" - { - "dmg taken from crit reduced" - { - "attribute_class" "mult_dmgtaken_from_crit" - "value" "0.95" - } - } - "store_bundle" "Hibernating Bear Bundle" - } - "experts_ordnance" - { - "name" "#TF_Set_Experts_Ordnance" - "items" - { - "The Ullapool Caber" "1" - "The Loch-n-Load" "1" - } - "attributes" - { - "dmg taken from fire reduced" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "0.9" - } - } - "store_bundle" "Expert's Ordnance Bundle" - } - } - "achievement_rewards" - { - "TF_MEDIC_ACHIEVE_PROGRESS1" "36" - "TF_MEDIC_ACHIEVE_PROGRESS2" "35" - "TF_MEDIC_ACHIEVE_PROGRESS3" "37" - "TF_PYRO_ACHIEVE_PROGRESS1" "39" - "TF_PYRO_ACHIEVE_PROGRESS2" "40" - "TF_PYRO_ACHIEVE_PROGRESS3" "38" - "TF_HEAVY_ACHIEVE_PROGRESS1" "42" - "TF_HEAVY_ACHIEVE_PROGRESS2" "41" - "TF_HEAVY_ACHIEVE_PROGRESS3" "43" - "TF_SCOUT_ACHIEVE_PROGRESS1" "45" - "TF_SCOUT_ACHIEVE_PROGRESS2" "44" - "TF_SCOUT_ACHIEVE_PROGRESS3" "46" - "TF_SNIPER_ACHIEVE_PROGRESS1" "56" - "TF_SNIPER_ACHIEVE_PROGRESS2" "58" - "TF_SNIPER_ACHIEVE_PROGRESS3" "57" - "TF_SPY_ACHIEVE_PROGRESS1" "61" - "TF_SPY_ACHIEVE_PROGRESS2" "60" - "TF_SPY_ACHIEVE_PROGRESS3" "59" - "TF_SOLDIER_ACHIEVE_PROGRESS1" "128" - "TF_SOLDIER_ACHIEVE_PROGRESS2" "127" - "TF_SOLDIER_ACHIEVE_PROGRESS3" "129" - "TF_DEMOMAN_ACHIEVE_PROGRESS1" "131" - "TF_DEMOMAN_ACHIEVE_PROGRESS2" "132" - "TF_DEMOMAN_ACHIEVE_PROGRESS3" "130" - "TF_ENGINEER_ACHIEVE_PROGRESS1" "141" - "TF_ENGINEER_ACHIEVE_PROGRESS2" "142" - "TF_ENGINEER_ACHIEVE_PROGRESS3" "140" - "TF_HALLOWEEN_DOMINATE_FOR_HAT" "279" - "TF_HALLOWEEN_BOSS_KILL" "278" - "TF_HALLOWEEN_BOSS_KILL_MELEE" "267" - "TF_HALLOWEEN_COLLECT_PUMPKINS" "115" - "TF_GENERAL_KILL_ENEMIES_AFTER_TELEPORTING" "5500" - "ASW_PARA_HAT" - { - "SourceAppID" "630" - "DefIndex" "189" - } - "com.telltalegames.CelebrityPoker.SpecialItem.TheHeavy" - { - "SourceAppID" "31280" - "DefIndex" "298" - } - "com.telltalegames.CelebrityPoker.SpecialItem.Max" - { - "SourceAppID" "31280" - "Items" - { - "294" "1" - "296" "1" - } - } - "com.telltalegames.CelebrityPoker.SpecialItem.Tycho" - { - "SourceAppID" "31280" - "DefIndex" "297" - } - "com.telltalegames.CelebrityPoker.SpecialItem.StrongBad" - { - "SourceAppID" "31280" - "DefIndex" "295" - } - } - "attribute_controlled_attached_particles" - { - "1" - { - "system" "burningplayer_red" - } - "2" - { - "system" "burningplayer_flyingbits" - } - "3" - { - "system" "particle_nemesis_burst_blue" - "attachment" "muzzle1" - } - "4" - { - "system" "community_sparkle" - } - "5" - { - "system" "halopoint" - "attachment" "halopoint1" - } - "6" - { - "system" "superrare_confetti_green" - } - "7" - { - "system" "superrare_confetti_purple" - } - "8" - { - "system" "superrare_ghosts" - "attach_to_rootbone" "1" - "attachment" "muzzle" - } - "9" - { - "system" "superrare_greenenergy" - "attach_to_rootbone" "1" - } - "10" - { - "system" "superrare_purpleenergy" - "attach_to_rootbone" "1" - } - "11" - { - "system" "superrare_circling_tf" - "attach_to_rootbone" "1" - "attachment" "muzzle" - } - "12" - { - "system" "superrare_flies" - "attach_to_rootbone" "1" - } - - "13" - { - "system" "superrare_burning1" - "attach_to_rootbone" "1" - } - "14" - { - "system" "superrare_burning2" - "attach_to_rootbone" "1" - } - - "15" - { - "system" "superrare_plasma1" - "attach_to_rootbone" "1" - "attachment" "muzzle" - } - "16" - { - "system" "superrare_plasma2" - "attach_to_rootbone" "1" - "attachment" "muzzle" - } - "17" - { - "system" "superrare_beams1" - "attach_to_rootbone" "1" - } - "18" - { - "system" "superrare_circling_peacesign" - "attach_to_rootbone" "1" - "attachment" "muzzle" - } - "19" - { - "system" "superrare_circling_heart" - "attach_to_rootbone" "1" - "attachment" "muzzle" - } - "20" - { - "system" "stamp_spin" - "attach_to_rootbone" "1" - } - } - "upgradeable_base_items" - { - "Upgradeable TF_WEAPON_BAT" "1" - "Upgradeable TF_WEAPON_BOTTLE" "1" - "Upgradeable TF_WEAPON_FIREAXE" "1" - "Upgradeable TF_WEAPON_CLUB" "1" - "Upgradeable TF_WEAPON_KNIFE" "1" - "Upgradeable TF_WEAPON_FISTS" "1" - "Upgradeable TF_WEAPON_SHOVEL" "1" - "Upgradeable TF_WEAPON_WRENCH" "1" - "Upgradeable TF_WEAPON_BONESAW" "1" - "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" "1" - "Upgradeable TF_WEAPON_SCATTERGUN" "1" - "Upgradeable TF_WEAPON_SNIPERRIFLE" "1" - "Upgradeable TF_WEAPON_MINIGUN" "1" - "Upgradeable TF_WEAPON_SMG" "1" - "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "1" - "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "1" - "Upgradeable TF_WEAPON_GRENADELAUNCHER" "1" - "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "1" - "Upgradeable TF_WEAPON_FLAMETHROWER" "1" - "Upgradeable TF_WEAPON_PISTOL" "1" - "Upgradeable TF_WEAPON_REVOLVER" "1" - "Upgradeable TF_WEAPON_MEDIGUN" "1" - "Upgradeable TF_WEAPON_INVIS" "1" - } - "armory_data" - { - "armory_item_classes" - { - "class_token" "#TF_Armory_Item_Class_ClassToken" - "slot_token" "#TF_Armory_Item_Class_SlotToken" - "craft_item" "#TF_Armory_Item_Class_CraftItem" - "tool" "#TF_Armory_Item_Class_Tool" - } - "armory_attributes" - { - "on_hit" "#TF_Armory_Item_Attrib_OnHit" - "on_kill" "#TF_Armory_Item_Attrib_OnKill" - "on_wearer" "#TF_Armory_Item_Attrib_OnWearer" - "cloak_type" "#TF_Armory_Item_Attrib_CloakType" - "on_active" "#TF_Armory_Item_Attrib_OnActive" - "no_crits" "#TF_Armory_Item_Attrib_NoCrits" - "bleed" "#TF_Armory_Item_Attrib_Bleed" - } - "armory_items" - { - "duel_medal" "#TF_Armory_Item_Duel_Medal" - "duel" "#TF_Armory_Item_Duel" - "supply_crate" "#TF_Armory_Item_Supply_Crate" - "key" "#TF_Armory_Item_Key" - "nametag" "#TF_Armory_Item_NameTag" - "desctag" "#TF_Armory_Item_DescTag" - "paintcan" "#TF_Armory_Item_PaintCan" - "action" "#TF_Armory_Item_Action" - "tauntenabler" "#TF_Armory_Item_Type_TauntEnabler" - "gift_1" "#TF_Armory_Item_Gift1" - "gift_24" "#TF_Armory_Item_Gift24" - "beachball" "#TF_Armory_Item_BeachBall" - "craftitem" "#TF_Armory_Item_Class_CraftItem" - "stockitem" "#TF_Armory_Item_StockItem" - "gift_wrap" "#TF_Armory_Item_Gift_Wrap" - "gift" "#TF_Armory_Item_Gift" - "noisemaker" "#TF_Armory_Item_Type_NoiseMaker" - "winter_crate" "#TF_Armory_Item_Winter_Crate" - "maptoken" "#TF_Armory_Item_MapToken" - "backpack_expander" "#TF_Armory_Item_BackpackExpander" - } - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes.txt deleted file mode 100644 index 63105184f..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes.txt +++ /dev/null @@ -1,101 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"tf2.respawn_room" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" ".30" - "pitch" "100" - "wave" "ambient/machine_hum2.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "wave" "ambient/machine_hum.wav" - } -} - -"tf2.general_ambient" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".25" - "pitch" "100" - "wave" "ambient/outdoors_well.wav" - } -} diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_2fort.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_2fort.txt deleted file mode 100644 index 5d9c736e6..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_2fort.txt +++ /dev/null @@ -1,339 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"2fort.Underground" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" ".30" - "pitch" "100" - "wave" "ambient/machine_hum2.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "wave" "ambient/machine_hum.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "position" "1" - "attenuation" "0.7" - "wave" "ambient/computer_tape.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "2" - "attenuation" "0.7" - "wave" "ambient/computer_working.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "position" "3" - "attenuation" "0.7" - "wave" "ambient/computer_tape2.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "4" - "attenuation" "0.7" - "wave" "ambient/command_center.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "5" - "attenuation" "0.7" - "wave" "ambient/printer.wav" - } -} - -"2fort.Underground2" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" ".3" - "pitch" "100" - "wave" "ambient/machine_hum2.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "wave" "ambient/machine_hum.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "position" "1" - "attenuation" "0.7" - "wave" "ambient/computer_tape.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "2" - "attenuation" "0.7" - "wave" "ambient/computer_working.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "position" "3" - "attenuation" "0.7" - "wave" "ambient/computer_tape2.wav" - } - - "playlooping" - { - "volume" ".85" - "pitch" "100" - "position" "4" - "attenuation" "0.7" - "wave" "ambient/command_center.wav" - } - - "playlooping" - { - "volume" ".85" - "pitch" "100" - "position" "5" - "attenuation" "0.7" - "wave" "ambient/printer.wav" - } -} - -"2fort.OutdoorPond" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/outdoors_quiet_birds.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/outdoors.wav" - } - - "playlooping" - { - "volume" ".45" - "pitch" "100" - "wave" "ambient/pondlife.wav" - } - - "playlooping" - { - "volume" ".15" - "pitch" "100" - "wave" "ambient/pondwater.wav" - } - - "playrandom" - { - "time" "5,15" - "volume" ".35" - "pitch" "100" - "position" "0" - "attenuation" "0.25" - "rndwave" - { - "wave" "ambient/cow1.wav" - "wave" "ambient/cow2.wav" - "wave" "ambient/cow3.wav" - "wave" "ambient/bird1.wav" - "wave" "ambient/bird2.wav" - "wave" "ambient/bird3.wav" - } - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "position" "1" - "attenuation" "0.7" - "wave" "ambient/train_engine_idle.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "position" "2" - "attenuation" "0.7" - "wave" "ambient/engine_idle.wav" - } - -} - - -"2fort.OutdoorFort" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/outdoors_quiet_birds.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/outdoors.wav" - } - - - "playrandom" - { - "time" "5,15" - "volume" ".35" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "rndwave" - { - "wave" "ambient/cow1.wav" - "wave" "ambient/cow2.wav" - "wave" "ambient/cow3.wav" - "wave" "ambient/bird1.wav" - "wave" "ambient/bird2.wav" - "wave" "ambient/bird3.wav" - } - } - - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "position" "1" - "attenuation" ".07" - "wave" "ambient/factory_outdoor.wav" - } -} - -"2fort.Indoor" -{ - "dsp" "1" - - "playlooping" - { - "volume" "1" - "pitch" "100" - "wave" "ambient/indoors.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_badlands.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_badlands.txt deleted file mode 100644 index 72b149f7c..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_badlands.txt +++ /dev/null @@ -1,185 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Badlands.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".20" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" "1" - "pitch" "100" - "position" "1" - "attenuation" "0.7" - "wave" "ambient/machine_hum2.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "2" - "attenuation" "0.7" - "wave" "ambient/computer_working2.wav" - } - - "playlooping" - { - "volume" "1" - "pitch" "100" - "position" "3" - "attenuation" "0.7" - "wave" "ambient/machine_hum.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "4" - "attenuation" "0.7" - "wave" "ambient/computer_working.wav" - } -} - - -"Badlands.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/desert_rustle.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/desert_wind_high.wav" - } - - - "playrandom" - { - "time" "10,20" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/dog1.wav" - "wave" "ambient/dog2.wav" - "wave" "ambient/dog3.wav" - "wave" "ambient/dog4.wav" - "wave" "ambient/hawk.wav" - "wave" "ambient/owl3.wav" - "wave" "ambient/owl4.wav" - "wave" "ambient/warbler.wav" - "wave" "ambient/crow3.wav" - "wave" "ambient/crow4.wav" - - } - } - -} - -"Badlands.OutsideInterior" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".55" - "pitch" "100" - "wave" "ambient/desert_indoors.wav" - } - - "playlooping" - { - "volume" ".25" - "pitch" "100" - "wave" "ambient/desert_rustle.wav" - } -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_dustbowl.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_dustbowl.txt deleted file mode 100644 index a8eac00f8..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_dustbowl.txt +++ /dev/null @@ -1,112 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Dustbowl.Outdoors" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".15" - "pitch" "100" - "wave" "ambient/desert_life.wav" - } - - "playrandom" - { - "time" "10, 30" - "volume" ".50" - "pitch" "100" - "rndwave" - { - "wave" "ambient/owl1.wav" - "wave" "ambient/owl2.wav" - "wave" "ambient/crow1.wav" - "wave" "ambient/crow2.wav" - } - } - - - "playlooping" - { - "volume" ".25" - "pitch" "100" - "wave" "ambient/desert_wind_low.wav" - } - - "playlooping" - { - "volume" ".15" - "pitch" "100" - "wave" "ambient/desert_wind_high.wav" - } -} - -"Dustbowl.Indoors" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".5" - "pitch" "100" - "wave" "ambient/desert_indoors.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_egypt.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_egypt.txt deleted file mode 100644 index 71da82d2f..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_egypt.txt +++ /dev/null @@ -1,102 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"Egypt.Outdoor" -{ - "dsp" "1" - - "playlooping" - { - "volume" "1" - "pitch" "100" - "wave" "ambient/outdoors.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/desert_wind_low.wav" - } - - - -} - -"Egypt.Indoor" -{ - - "dsp" "1" - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/underground.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_goldrush.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_goldrush.txt deleted file mode 100644 index 6dc6b8f9a..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_goldrush.txt +++ /dev/null @@ -1,141 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Goldrush.DeepInside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".20" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "wave" "ambient/underground.wav" - } -} - - -"Goldrush.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/desert_wind.wav" - } - - - "playrandom" - { - "time" "10,20" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/dog1.wav" - "wave" "ambient/dog2.wav" - "wave" "ambient/dog3.wav" - "wave" "ambient/dog4.wav" - "wave" "ambient/hawk.wav" - "wave" "ambient/hawk.wav" - "wave" "ambient/hawk.wav" - "wave" "ambient/owl3.wav" - "wave" "ambient/owl4.wav" - "wave" "ambient/warbler.wav" - } - } - -} - -"Goldrush.Inside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".50" - "pitch" "100" - "wave" "ambient/desert_indoors.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/desert_rustle.wav" - } -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_granary.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_granary.txt deleted file mode 100644 index edd911f20..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_granary.txt +++ /dev/null @@ -1,146 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"Granary.Outside" -{ - "dsp" "1" - - "playrandom" - { - "time" "5,15" - "volume" "1" - "pitch" "100" - "position" "0" - "attenuation" "1" - "rndwave" - { - "wave" "ambient/cow1.wav" - "wave" "ambient/cow2.wav" - "wave" "ambient/cow3.wav" - "wave" "ambient/bird1.wav" - "wave" "ambient/bird2.wav" - "wave" "ambient/bird3.wav" - } - } - - "playrandom" - { - "time" "5,15" - "volume" "1" - "pitch" "100" - "position" "2" - "attenuation" "1" - "rndwave" - { - "wave" "ambient/cow1.wav" - "wave" "ambient/cow2.wav" - "wave" "ambient/cow3.wav" - "wave" "ambient/bird1.wav" - "wave" "ambient/bird2.wav" - "wave" "ambient/bird3.wav" - } - } - - "playlooping" - { - "volume" ".45" - "pitch" "100" - "position" "1" - "attenuation" "1" - "wave" "ambient/factory_outdoor.wav" - } - - "playlooping" - { - "volume" ".45" - "pitch" "100" - "position" "3" - "attenuation" "1" - "wave" "ambient/factory_outdoor.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors_quiet_birds.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors.wav" - } -} - -"Granary.Inside" -{ - - "dsp" "1" - - "playlooping" - { - "volume" "1" - "pitch" "100" - "wave" "ambient/indoors.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_gravelpit.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_gravelpit.txt deleted file mode 100644 index ede6d9102..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_gravelpit.txt +++ /dev/null @@ -1,108 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"GravelPit.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors_quiet_birds.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors.wav" - } - - - "playrandom" - { - "time" "5,15" - "volume" ".75" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "rndwave" - { - "wave" "ambient/bird1.wav" - "wave" "ambient/bird2.wav" - "wave" "ambient/bird3.wav" - } - } -} - -"GravelPit.Inside" -{ - - "dsp" "1" - - "playlooping" - { - "volume" "1" - "pitch" "100" - "wave" "ambient/indoors.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_hydro.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_hydro.txt deleted file mode 100644 index 0b51254d7..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_hydro.txt +++ /dev/null @@ -1,108 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"Hydro.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors_quiet_birds.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors.wav" - } - - - "playrandom" - { - "time" "5,15" - "volume" ".75" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "rndwave" - { - "wave" "ambient/bird1.wav" - "wave" "ambient/bird2.wav" - "wave" "ambient/bird3.wav" - } - } -} - -"Hydro.Inside" -{ - - "dsp" "1" - - "playlooping" - { - "volume" "1" - "pitch" "100" - "wave" "ambient/indoors.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_lumberyard.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_lumberyard.txt deleted file mode 100644 index e96dc954e..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_lumberyard.txt +++ /dev/null @@ -1,122 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Lumberyard.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } - -} - - -"Lumberyard.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".25" - "pitch" "100" - "wave" "ambient/forest_life.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/forest_high_wind.wav" - } - - "playrandom" - { - "time" "3,5" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/hawk.wav" - "wave" "ambient/warbler.wav" - "wave" "ambient/forest_bird1.wav" - "wave" "ambient/forest_bird2.wav" - "wave" "ambient/forest_bird3.wav" - "wave" "ambient/forest_bird4.wav" - "wave" "ambient/forest_bird5.wav" - "wave" "ambient/forest_bird6.wav" - "wave" "ambient/forest_bird7.wav" - "wave" "ambient/forest_bird8.wav" - "wave" "ambient/forest_bird9.wav" - } - } - -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_manifest.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_manifest.txt deleted file mode 100644 index 0753a3098..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_manifest.txt +++ /dev/null @@ -1,22 +0,0 @@ -soundscapes_manifest -{ - - "file" "scripts/soundscapes.txt" - - // List additional soundscape files here - - "file" "scripts/soundscapes_2fort.txt" - "file" "scripts/soundscapes_dustbowl.txt" - "file" "scripts/soundscapes_well.txt" - "file" "scripts/soundscapes_badlands.txt" - "file" "scripts/soundscapes_gravelpit.txt" - "file" "scripts/soundscapes_hydro.txt" - "file" "scripts/soundscapes_granary.txt" - "file" "scripts/soundscapes_goldrush.txt" - "file" "scripts/soundscapes_ravine.txt" - "file" "scripts/soundscapes_lumberyard.txt" - "file" "scripts/soundscapes_pipeline.txt" - "file" "scripts/soundscapes_sawmill.txt" - "file" "scripts/soundscapes_egypt.txt" - "file" "scripts/soundscapes_nucleus.txt" -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_nucleus.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_nucleus.txt deleted file mode 100644 index 575ef06f5..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_nucleus.txt +++ /dev/null @@ -1,114 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"Nucleus.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" ".5" - "pitch" "100" - "wave" "ambient/indoors.wav" - } -} - -"Nucleus.Outside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".65" - "pitch" "100" - "wave" "ambient/nucleus_electricity.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/outdoors_well.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "wave" "ambient/desert_indoors.wav" - } - - "playlooping" - { - "volume" ".45" - "pitch" "100" - "wave" "ambient/underground.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_pipeline.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_pipeline.txt deleted file mode 100644 index 141d17854..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_pipeline.txt +++ /dev/null @@ -1,126 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Chariots.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".05" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } - - -} - - -"Chariots.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".45" - "pitch" "100" - "wave" "ambient/desert_wind.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/desert_life.wav" - } - - "playlooping" - { - "volume" ".45" - "pitch" "100" - "wave" "ambient/machine_hum.wav" - } - - - "playrandom" - { - "time" "10,20" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/dog1.wav" - "wave" "ambient/dog2.wav" - "wave" "ambient/dog3.wav" - "wave" "ambient/dog4.wav" - "wave" "ambient/owl3.wav" - "wave" "ambient/owl4.wav" - } - } - -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_ravine.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_ravine.txt deleted file mode 100644 index ba6519a8b..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_ravine.txt +++ /dev/null @@ -1,128 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Ravine.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".20" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "wave" "ambient/underground.wav" - } -} - - -"Ravine.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/desert_rustle.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/desert_wind_high.wav" - } - - "playrandom" - { - "time" "10,20" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/dog1.wav" - "wave" "ambient/dog2.wav" - "wave" "ambient/dog3.wav" - "wave" "ambient/dog4.wav" - "wave" "ambient/hawk.wav" - "wave" "ambient/owl3.wav" - "wave" "ambient/owl4.wav" - "wave" "ambient/warbler.wav" - "wave" "ambient/crow3.wav" - "wave" "ambient/crow4.wav" - - } - } - -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_sawmill.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_sawmill.txt deleted file mode 100644 index 9d7323125..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_sawmill.txt +++ /dev/null @@ -1,223 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - -"Sawmill.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/waterfallinside.wav" - } - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/waterfalloutside.wav" - } -} - -"Sawmill.InsideNoLights" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/waterfallinside.wav" - } - - "playlooping" - { - "volume" ".2" - "pitch" "100" - "wave" "ambient/waterfalloutside.wav" - } - - "playrandom" - { - "time" "10,15" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/thunder2.wav" - "wave" "ambient/thunder3.wav" - "wave" "ambient/thunder4.wav" - - } - } - -} - -"Sawmill.InsideWaterfall" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".5" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" ".5" - "pitch" "100" - "wave" "ambient/waterfallinside.wav" - } - - "playrandom" - { - "time" "10,15" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/thunder2.wav" - "wave" "ambient/thunder3.wav" - "wave" "ambient/thunder4.wav" - - } - } -} - -"Sawmill.Outside" -{ - "dsp" "1" - - "playlooping" - { - "volume" ".25" - "pitch" "100" - "wave" "ambient/forest_life.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/forest_high_wind.wav" - } - - "playlooping" - { - "volume" ".35" - "pitch" "100" - "wave" "ambient/waterfalloutside.wav" - } - - "playrandom" - { - "time" "10,15" - "volume" "1" - "pitch" "100" - "rndwave" - { - "wave" "ambient/thunder2.wav" - "wave" "ambient/thunder3.wav" - "wave" "ambient/thunder4.wav" - - } - } - - "playlooping" - { - "volume" "1" - "pitch" "100" - "wave" "ambient/rain.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_well.txt b/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_well.txt deleted file mode 100644 index 3fafdce45..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/soundscapes/soundscapes_well.txt +++ /dev/null @@ -1,186 +0,0 @@ -// DSP Effects -// 0 : "Normal (off)" -// 1 : "Generic" -// 2 : "Metal Small" -// 3 : "Metal Medium" -// 4 : "Metal Large" -// 5 : "Tunnel Small" -// 6 : "Tunnel Medium" -// 7 : "Tunnel Large" -// 8 : "Chamber Small" -// 9 : "Chamber Medium" -// 10: "Chamber Large" -// 11: "Bright Small" -// 12: "Bright Medium" -// 13: "Bright Large" -// 14: "Water 1" -// 15: "Water 2" -// 16: "Water 3" -// 17: "Concrete Small" -// 18: "Concrete Medium" -// 19: "Concrete Large" -// 20: "Big 1" -// 21: "Big 2" -// 22: "Big 3" -// 23: "Cavern Small" -// 24: "Cavern Medium" -// 25: "Cavern Large" -// 26: "Weirdo 1" -// 27: "Weirdo 2" -// 28: "Weirdo 3" - -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f 75dB -// ATTN_IDLE 2.0f 60dB -// ATTN_STATIC 1.25f 66dB -// ATTN_RICOCHET 1.5f 65dB -// ATTN_GUNFIRE 0.27f 140dB - -// SNDLVL_50dB = 50, // 3.9 -// SNDLVL_55dB = 55, // 3.0 -// SNDLVL_IDLE = 60, // 2.0 -// SNDLVL_TALKING = 60, // 2.0 -// SNDLVL_60dB = 60, // 2.0 -// SNDLVL_65dB = 65, // 1.5 -// SNDLVL_STATIC = 66, // 1.25 -// SNDLVL_70dB = 70, // 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, // 0.8 -// SNDLVL_80dB = 80, // 0.7 -// SNDLVL_85dB = 85, // 0.6 -// SNDLVL_90dB = 90, // 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, // 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, // 0.27 -// SNDLVL_140dB = 140, // 0.2 -// SNDLVL_150dB = 150, // 0.2 - - -"Well.DeepInside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/underground.wav" - } - - "playlooping" - { - "volume" ".3" - "pitch" "100" - "wave" "ambient/machine_hum2.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "0" - "attenuation" "0.7" - "wave" "ambient/machine_hum.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "position" "1" - "attenuation" "0.7" - "wave" "ambient/computer_tape.wav" - } - - "playlooping" - { - "volume" ".75" - "pitch" "100" - "position" "2" - "attenuation" "0.7" - "wave" "ambient/computer_working.wav" - } - - "playlooping" - { - "volume" ".4" - "pitch" "100" - "position" "3" - "attenuation" "0.7" - "wave" "ambient/computer_tape2.wav" - } - - "playlooping" - { - "volume" ".85" - "pitch" "100" - "position" "4" - "attenuation" "0.7" - "wave" "ambient/command_center.wav" - } - - "playlooping" - { - "volume" ".85" - "pitch" "100" - "position" "5" - "attenuation" "0.7" - "wave" "ambient/printer.wav" - } -} - -"Well.Inside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".6" - "pitch" "100" - "wave" "ambient/indoors.wav" - } - - "playlooping" - { - "volume" ".1" - "pitch" "100" - "wave" "ambient/lighthum.wav" - } -} - - -"Well.Outside" -{ - "dsp" "1" - - - "playlooping" - { - "volume" ".5" - "pitch" "100" - "wave" "ambient/outdoors_well.wav" - } - - "playlooping" - { - "volume" "1" - "pitch" "100" - "position" "1" - "soundlevel" "SNDLVL_85dB" - "wave" "ambient/factory_outdoor.wav" - } - - "playlooping" - { - "volume" "1" - "pitch" "100" - "position" "0" - "soundlevel" "SNDLVL_90dB" - "wave" "ambient/machine_hum.wav" - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/demoman.txt b/addon/gamemodes/teamfortress/content/scripts/talker/demoman.txt deleted file mode 100644 index a71362136..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/demoman.txt +++ /dev/null @@ -1,941 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Demoman Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "DemomanIsKillSpeechObject" "DemomanKillSpeechObject" "1" "required" weight 0 -Criterion "DemomanIsNotStillonFire" "DemomanOnFire" "!=1" "required" weight 0 -Criterion "DemomanIsStillonFire" "DemomanOnFire" "1" "required" weight 0 -Criterion "DemomanNotKillSpeech" "DemomanKillSpeech" "!=1" "required" weight 0 -Criterion "DemomanNotKillSpeechMelee" "DemomanKillSpeechMelee" "!=1" "required" weight 0 -Criterion "DemomanNotSaidHealThanks" "DemomanSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapDemoman" "DemomanHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanDemoman -{ - scene "scenes/Player/Demoman/low/901.vcd" -} -Rule PlayerCloakedSpyDemomanDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnDemoman - Response PlayerCloakedSpyDemomanDemoman -} - -Response PlayerCloakedSpyEngineerDemoman -{ - scene "scenes/Player/Demoman/low/907.vcd" -} -Rule PlayerCloakedSpyEngineerDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnEngineer - Response PlayerCloakedSpyEngineerDemoman -} - -Response PlayerCloakedSpyHeavyDemoman -{ - scene "scenes/Player/Demoman/low/897.vcd" -} -Rule PlayerCloakedSpyHeavyDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnHeavy - Response PlayerCloakedSpyHeavyDemoman -} - -Response PlayerCloakedSpyMedicDemoman -{ - scene "scenes/Player/Demoman/low/905.vcd" -} -Rule PlayerCloakedSpyMedicDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnMedic - Response PlayerCloakedSpyMedicDemoman -} - -Response PlayerCloakedSpyPyroDemoman -{ - scene "scenes/Player/Demoman/low/899.vcd" -} -Rule PlayerCloakedSpyPyroDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnPyro - Response PlayerCloakedSpyPyroDemoman -} - -Response PlayerCloakedSpyScoutDemoman -{ - scene "scenes/Player/Demoman/low/893.vcd" -} -Rule PlayerCloakedSpyScoutDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnScout - Response PlayerCloakedSpyScoutDemoman -} - -Response PlayerCloakedSpySniperDemoman -{ - scene "scenes/Player/Demoman/low/909.vcd" -} -Rule PlayerCloakedSpySniperDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnSniper - Response PlayerCloakedSpySniperDemoman -} - -Response PlayerCloakedSpySoldierDemoman -{ - scene "scenes/Player/Demoman/low/895.vcd" -} -Rule PlayerCloakedSpySoldierDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnSoldier - Response PlayerCloakedSpySoldierDemoman -} - -Response PlayerCloakedSpySpyDemoman -{ - scene "scenes/Player/Demoman/low/903.vcd" -} -Rule PlayerCloakedSpySpyDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman IsOnSpy - Response PlayerCloakedSpySpyDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksDemoman -{ - scene "scenes/Player/Demoman/low/1032.vcd" - scene "scenes/Player/Demoman/low/1033.vcd" - scene "scenes/Player/Demoman/low/1034.vcd" -} -Rule HealThanksDemoman -{ - criteria ConceptMedicChargeStopped IsDemoman SuperHighHealthContext DemomanNotSaidHealThanks 50PercentChance - ApplyContext "DemomanSaidHealThanks:1:20" - Response HealThanksDemoman -} - -Response PlayerRoundStartDemoman -{ - scene "scenes/Player/Demoman/low/1358.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Demoman/low/876.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Demoman/low/877.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Demoman/low/878.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Demoman/low/880.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartDemoman -{ - criteria ConceptPlayerRoundStart IsDemoman - Response PlayerRoundStartDemoman -} - -Response PlayerCappedIntelligenceDemoman -{ - scene "scenes/Player/Demoman/low/866.vcd" - scene "scenes/Player/Demoman/low/867.vcd" -} -Rule PlayerCappedIntelligenceDemoman -{ - criteria ConceptPlayerCapturedIntelligence IsDemoman - Response PlayerCappedIntelligenceDemoman -} - -Response PlayerCapturedPointDemoman -{ - scene "scenes/Player/Demoman/low/863.vcd" - scene "scenes/Player/Demoman/low/865.vcd" - scene "scenes/Player/Demoman/low/864.vcd" -} -Rule PlayerCapturedPointDemoman -{ - criteria ConceptPlayerCapturedPoint IsDemoman - Response PlayerCapturedPointDemoman -} - -Response PlayerSuddenDeathDemoman -{ - scene "scenes/Player/Demoman/low/938.vcd" - scene "scenes/Player/Demoman/low/939.vcd" - scene "scenes/Player/Demoman/low/940.vcd" - scene "scenes/Player/Demoman/low/941.vcd" - scene "scenes/Player/Demoman/low/942.vcd" - scene "scenes/Player/Demoman/low/944.vcd" - scene "scenes/Player/Demoman/low/945.vcd" - scene "scenes/Player/Demoman/low/947.vcd" - scene "scenes/Player/Demoman/low/948.vcd" - scene "scenes/Player/Demoman/low/949.vcd" - scene "scenes/Player/Demoman/low/946.vcd" -} -Rule PlayerSuddenDeathDemoman -{ - criteria ConceptPlayerSuddenDeathStart IsDemoman - Response PlayerSuddenDeathDemoman -} - -Response PlayerStalemateDemoman -{ - scene "scenes/Player/Demoman/low/869.vcd" - scene "scenes/Player/Demoman/low/870.vcd" - scene "scenes/Player/Demoman/low/871.vcd" - scene "scenes/Player/Demoman/low/1357.vcd" -} -Rule PlayerStalemateDemoman -{ - criteria ConceptPlayerStalemate IsDemoman - Response PlayerStalemateDemoman -} - -Response PlayerTeleporterThanksDemoman -{ - scene "scenes/Player/Demoman/low/1035.vcd" - scene "scenes/Player/Demoman/low/1036.vcd" -} -Rule PlayerTeleporterThanksDemoman -{ - criteria ConceptTeleported IsNotEngineer IsDemoman 30PercentChance - Response PlayerTeleporterThanksDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointDemoman -{ - scene "scenes/Player/Demoman/low/1011.vcd" - scene "scenes/Player/Demoman/low/1389.vcd" -} -Rule DefendOnThePointDemoman -{ - criteria ConceptFireWeapon IsDemoman IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointDemoman -} - -Response KilledPlayerManyDemoman -{ - scene "scenes/Player/Demoman/low/1000.vcd" - scene "scenes/Player/Demoman/low/1014.vcd" - scene "scenes/Player/Demoman/low/1016.vcd" - scene "scenes/Player/Demoman/low/1020.vcd" -} -Rule KilledPlayerManyDemoman -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay DemomanNotKillSpeech IsDemoman - ApplyContext "DemomanKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManyDemoman -} - -Response KilledPlayerMeleeDemoman -{ - scene "scenes/Player/Demoman/low/998.vcd" -} -Rule KilledPlayerMeleeDemoman -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee DemomanNotKillSpeechMelee IsDemoman - ApplyContext "DemomanKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeDemoman -} - -Response KilledPlayerVeryManyDemoman -{ - scene "scenes/Player/Demoman/low/997.vcd" - scene "scenes/Player/Demoman/low/999.vcd" - scene "scenes/Player/Demoman/low/1003.vcd" - scene "scenes/Player/Demoman/low/1004.vcd" - scene "scenes/Player/Demoman/low/1006.vcd" - scene "scenes/Player/Demoman/low/1024.vcd" -} -Rule KilledPlayerVeryManyDemoman -{ - criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay DemomanNotKillSpeech IsDemoman - ApplyContext "DemomanKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerVeryManyDemoman -} - -Response PlayerKilledCapperDemoman -{ - scene "scenes/Player/Demoman/low/867.vcd" - scene "scenes/Player/Demoman/low/884.vcd" - scene "scenes/Player/Demoman/low/887.vcd" - scene "scenes/Player/Demoman/low/952.vcd" - scene "scenes/Player/Demoman/low/955.vcd" - scene "scenes/Player/Demoman/low/989.vcd" - scene "scenes/Player/Demoman/low/991.vcd" - scene "scenes/Player/Demoman/low/992.vcd" - scene "scenes/Player/Demoman/low/993.vcd" - scene "scenes/Player/Demoman/low/1001.vcd" - scene "scenes/Player/Demoman/low/1002.vcd" -} -Rule PlayerKilledCapperDemoman -{ - criteria ConceptCapBlocked IsDemoman - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledCapperDemoman -} - -Response PlayerKilledDominatingDemoman -{ - scene "scenes/Player/Demoman/low/886.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/910.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/950.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/1379.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/1384.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/1385.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/951.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/953.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/954.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/956.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/1383.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingDemoman -} - -Response PlayerKilledDominatingDemomanDemoman -{ - scene "scenes/Player/Demoman/low/3515.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3516.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3517.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3518.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemomanDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimDemoman - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingDemomanDemoman -} - -Response PlayerKilledDominatingEngineerDemoman -{ - scene "scenes/Player/Demoman/low/3519.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3520.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3521.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3522.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3523.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3524.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingEngineerDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimEngineer - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingEngineerDemoman -} - -Response PlayerKilledDominatingHeavyDemoman -{ - scene "scenes/Player/Demoman/low/3525.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3526.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3527.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3528.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3529.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavyDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimHeavy - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingHeavyDemoman -} - -Response PlayerKilledDominatingMedicDemoman -{ - scene "scenes/Player/Demoman/low/3530.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3531.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3532.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3533.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedicDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimMedic - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingMedicDemoman -} - -Response PlayerKilledDominatingPyroDemoman -{ - scene "scenes/Player/Demoman/low/3534.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3535.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3536.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3537.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyroDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimPyro - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingPyroDemoman -} - -Response PlayerKilledDominatingScoutDemoman -{ - scene "scenes/Player/Demoman/low/3538.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3539.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3540.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3541.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3542.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3543.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3544.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3545.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingScoutDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimScout - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingScoutDemoman -} - -Response PlayerKilledDominatingSniperDemoman -{ - scene "scenes/Player/Demoman/low/3546.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3547.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3548.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3549.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSniperDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimSniper - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingSniperDemoman -} - -Response PlayerKilledDominatingSoldierDemoman -{ - scene "scenes/Player/Demoman/low/3550.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3551.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3552.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3553.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3554.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldierDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimSoldier - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingSoldierDemoman -} - -Response PlayerKilledDominatingSpyDemoman -{ - scene "scenes/Player/Demoman/low/3561.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3562.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/3563.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSpyDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimSpy - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledDominatingSpyDemoman -} - -Response PlayerKilledForRevengeDemoman -{ - scene "scenes/Player/Demoman/low/914.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/990.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/1005.vcd" predelay "2.5" - scene "scenes/Player/Demoman/low/1025.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeDemoman -{ - criteria ConceptKilledPlayer IsDemoman IsRevenge - ApplyContext "DemomanKillSpeech:1:10" - Response PlayerKilledForRevengeDemoman -} - -Response PlayerKilledObjectDemoman -{ - scene "scenes/Player/Demoman/low/1007.vcd" - scene "scenes/Player/Demoman/low/1008.vcd" -} -Rule PlayerKilledObjectDemoman -{ - criteria ConceptKilledObject IsDemoman 30PercentChance IsARecentKill - ApplyContext "DemomanKillSpeechObject:1:30" - applycontexttoworld - Response PlayerKilledObjectDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainDemoman -{ - scene "scenes/Player/Demoman/low/983.vcd" - scene "scenes/Player/Demoman/low/984.vcd" - scene "scenes/Player/Demoman/low/985.vcd" - scene "scenes/Player/Demoman/low/1396.vcd" -} -Rule PlayerAttackerPainDemoman -{ - criteria ConceptAttackerPain IsDemoman - Response PlayerAttackerPainDemoman -} - -Response PlayerOnFireDemoman -{ - scene "scenes/Player/Demoman/low/872.vcd" - scene "scenes/Player/Demoman/low/874.vcd" -} -Rule PlayerOnFireDemoman -{ - criteria ConceptFire IsDemoman DemomanIsNotStillonFire - ApplyContext "DemomanOnFire:1:7" - Response PlayerOnFireDemoman -} - -Response PlayerOnFireRareDemoman -{ - scene "scenes/Player/Demoman/low/873.vcd" -} -Rule PlayerOnFireRareDemoman -{ - criteria ConceptFire IsDemoman 10PercentChance DemomanIsNotStillonFire - ApplyContext "DemomanOnFire:1:7" - Response PlayerOnFireRareDemoman -} - -Response PlayerPainDemoman -{ - scene "scenes/Player/Demoman/low/986.vcd" - scene "scenes/Player/Demoman/low/987.vcd" - scene "scenes/Player/Demoman/low/988.vcd" - scene "scenes/Player/Demoman/low/1392.vcd" - scene "scenes/Player/Demoman/low/1393.vcd" - scene "scenes/Player/Demoman/low/1394.vcd" - scene "scenes/Player/Demoman/low/1395.vcd" -} -Rule PlayerPainDemoman -{ - criteria ConceptPain IsDemoman - Response PlayerPainDemoman -} - -Response PlayerStillOnFireDemoman -{ - scene "scenes/Player/Demoman/low/1927.vcd" -} -Rule PlayerStillOnFireDemoman -{ - criteria ConceptFire IsDemoman DemomanIsStillonFire - ApplyContext "DemomanOnFire:1:7" - Response PlayerStillOnFireDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelDemoman -{ - scene "scenes/Player/Demoman/low/1015.vcd" - scene "scenes/Player/Demoman/low/1017.vcd" - scene "scenes/Player/Demoman/low/1038.vcd" -} -Rule AcceptedDuelDemoman -{ - criteria ConceptIAcceptDuel IsDemoman - Response AcceptedDuelDemoman -} - -Response MeleeDareDemoman -{ - scene "scenes/Player/Demoman/low/868.vcd" - scene "scenes/Player/Demoman/low/879.vcd" - scene "scenes/Player/Demoman/low/1369.vcd" - scene "scenes/Player/Demoman/low/1027.vcd" - scene "scenes/Player/Demoman/low/1028.vcd" - scene "scenes/Player/Demoman/low/3566.vcd" - scene "scenes/Player/Demoman/low/3569.vcd" - scene "scenes/Player/Demoman/low/3574.vcd" - scene "scenes/Player/Demoman/low/3576.vcd" - scene "scenes/Player/Demoman/low/3578.vcd" -} -Rule MeleeDareDemoman -{ - criteria ConceptRequestDuel IsDemoman - Response MeleeDareDemoman -} - -Response RejectedDuelDemoman -{ - scene "scenes/Player/Demoman/low/938.vcd" - scene "scenes/Player/Demoman/low/939.vcd" - scene "scenes/Player/Demoman/low/3545.vcd" -} -Rule RejectedDuelDemoman -{ - criteria ConceptDuelRejected IsDemoman - Response RejectedDuelDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoDemoman -{ - scene "scenes/Player/Demoman/low/911.vcd" - scene "scenes/Player/Demoman/low/912.vcd" - scene "scenes/Player/Demoman/low/913.vcd" -} -Rule PlayerGoDemoman -{ - criteria ConceptPlayerGo IsDemoman - Response PlayerGoDemoman -} - -Response PlayerHeadLeftDemoman -{ - scene "scenes/Player/Demoman/low/917.vcd" - scene "scenes/Player/Demoman/low/918.vcd" - scene "scenes/Player/Demoman/low/919.vcd" -} -Rule PlayerHeadLeftDemoman -{ - criteria ConceptPlayerLeft IsDemoman - Response PlayerHeadLeftDemoman -} - -Response PlayerHeadRightDemoman -{ - scene "scenes/Player/Demoman/low/920.vcd" - scene "scenes/Player/Demoman/low/921.vcd" - scene "scenes/Player/Demoman/low/922.vcd" -} -Rule PlayerHeadRightDemoman -{ - criteria ConceptPlayerRight IsDemoman - Response PlayerHeadRightDemoman -} - -Response PlayerHelpDemoman -{ - scene "scenes/Player/Demoman/low/923.vcd" - scene "scenes/Player/Demoman/low/924.vcd" - scene "scenes/Player/Demoman/low/925.vcd" -} -Rule PlayerHelpDemoman -{ - criteria ConceptPlayerHelp IsDemoman - Response PlayerHelpDemoman -} - -Response PlayerHelpCaptureDemoman -{ - scene "scenes/Player/Demoman/low/926.vcd" - scene "scenes/Player/Demoman/low/927.vcd" - scene "scenes/Player/Demoman/low/928.vcd" -} -Rule PlayerHelpCaptureDemoman -{ - criteria ConceptPlayerHelp IsDemoman IsOnCappableControlPoint - ApplyContext "DemomanHelpCap:1:10" - Response PlayerHelpCaptureDemoman -} - -Response PlayerHelpCapture2Demoman -{ - scene "scenes/Player/Demoman/low/1011.vcd" - scene "scenes/Player/Demoman/low/1389.vcd" -} -Rule PlayerHelpCapture2Demoman -{ - criteria ConceptPlayerHelp IsDemoman IsOnCappableControlPoint IsHelpCapDemoman - Response PlayerHelpCapture2Demoman -} - -Response PlayerHelpDefendDemoman -{ - scene "scenes/Player/Demoman/low/929.vcd" - scene "scenes/Player/Demoman/low/930.vcd" - scene "scenes/Player/Demoman/low/931.vcd" -} -Rule PlayerHelpDefendDemoman -{ - criteria ConceptPlayerHelp IsDemoman IsOnFriendlyControlPoint - Response PlayerHelpDefendDemoman -} - -Response PlayerMedicDemoman -{ - scene "scenes/Player/Demoman/low/957.vcd" - scene "scenes/Player/Demoman/low/958.vcd" - scene "scenes/Player/Demoman/low/959.vcd" -} -Rule PlayerMedicDemoman -{ - criteria ConceptPlayerMedic IsDemoman - Response PlayerMedicDemoman -} - -Response PlayerMoveUpDemoman -{ - scene "scenes/Player/Demoman/low/960.vcd" - scene "scenes/Player/Demoman/low/961.vcd" - scene "scenes/Player/Demoman/low/962.vcd" -} -Rule PlayerMoveUpDemoman -{ - criteria ConceptPlayerMoveUp IsDemoman - Response PlayerMoveUpDemoman -} - -Response PlayerNoDemoman -{ - scene "scenes/Player/Demoman/low/977.vcd" - scene "scenes/Player/Demoman/low/978.vcd" - scene "scenes/Player/Demoman/low/979.vcd" -} -Rule PlayerNoDemoman -{ - criteria ConceptPlayerNo IsDemoman - Response PlayerNoDemoman -} - -Response PlayerThanksDemoman -{ - scene "scenes/Player/Demoman/low/1030.vcd" - scene "scenes/Player/Demoman/low/1031.vcd" -} -Rule PlayerThanksDemoman -{ - criteria ConceptPlayerThanks IsDemoman - Response PlayerThanksDemoman -} - -Response PlayerYesDemoman -{ - scene "scenes/Player/Demoman/low/1037.vcd" - scene "scenes/Player/Demoman/low/1038.vcd" - scene "scenes/Player/Demoman/low/1039.vcd" -} -Rule PlayerYesDemoman -{ - criteria ConceptPlayerYes IsDemoman - Response PlayerYesDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeDemoman -{ - scene "scenes/Player/Demoman/low/860.vcd" - scene "scenes/Player/Demoman/low/861.vcd" - scene "scenes/Player/Demoman/low/862.vcd" -} -Rule PlayerActivateChargeDemoman -{ - criteria ConceptPlayerActivateCharge IsDemoman - Response PlayerActivateChargeDemoman -} - -Response PlayerCloakedSpyDemoman -{ - scene "scenes/Player/Demoman/low/889.vcd" - scene "scenes/Player/Demoman/low/890.vcd" - scene "scenes/Player/Demoman/low/891.vcd" -} -Rule PlayerCloakedSpyDemoman -{ - criteria ConceptPlayerCloakedSpy IsDemoman - Response PlayerCloakedSpyDemoman -} - -Response PlayerDispenserHereDemoman -{ - scene "scenes/Player/Demoman/low/964.vcd" -} -Rule PlayerDispenserHereDemoman -{ - criteria ConceptPlayerDispenserHere IsDemoman - Response PlayerDispenserHereDemoman -} - -Response PlayerIncomingDemoman -{ - scene "scenes/Player/Demoman/low/932.vcd" - scene "scenes/Player/Demoman/low/933.vcd" - scene "scenes/Player/Demoman/low/934.vcd" -} -Rule PlayerIncomingDemoman -{ - criteria ConceptPlayerIncoming IsDemoman - Response PlayerIncomingDemoman -} - -Response PlayerSentryAheadDemoman -{ - scene "scenes/Player/Demoman/low/994.vcd" - scene "scenes/Player/Demoman/low/995.vcd" - scene "scenes/Player/Demoman/low/996.vcd" -} -Rule PlayerSentryAheadDemoman -{ - criteria ConceptPlayerSentryAhead IsDemoman - Response PlayerSentryAheadDemoman -} - -Response PlayerSentryHereDemoman -{ - scene "scenes/Player/Demoman/low/966.vcd" -} -Rule PlayerSentryHereDemoman -{ - criteria ConceptPlayerSentryHere IsDemoman - Response PlayerSentryHereDemoman -} - -Response PlayerTeleporterHereDemoman -{ - scene "scenes/Player/Demoman/low/968.vcd" -} -Rule PlayerTeleporterHereDemoman -{ - criteria ConceptPlayerTeleporterHere IsDemoman - Response PlayerTeleporterHereDemoman -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCryDemoman -{ - scene "scenes/Player/Demoman/low/1358.vcd" - scene "scenes/Player/Demoman/low/876.vcd" - scene "scenes/Player/Demoman/low/877.vcd" - scene "scenes/Player/Demoman/low/878.vcd" - scene "scenes/Player/Demoman/low/880.vcd" -} -Rule PlayerBattleCryDemoman -{ - criteria ConceptPlayerBattleCry IsDemoman - Response PlayerBattleCryDemoman -} - -Response PlayerCheersDemoman -{ - scene "scenes/Player/Demoman/low/881.vcd" - scene "scenes/Player/Demoman/low/883.vcd" - scene "scenes/Player/Demoman/low/884.vcd" - scene "scenes/Player/Demoman/low/1359.vcd" - scene "scenes/Player/Demoman/low/886.vcd" - scene "scenes/Player/Demoman/low/887.vcd" - scene "scenes/Player/Demoman/low/882.vcd" - scene "scenes/Player/Demoman/low/885.vcd" -} -Rule PlayerCheersDemoman -{ - criteria ConceptPlayerCheers IsDemoman - Response PlayerCheersDemoman -} - -Response PlayerGoodJobDemoman -{ - scene "scenes/Player/Demoman/low/914.vcd" - scene "scenes/Player/Demoman/low/915.vcd" -} -Rule PlayerGoodJobDemoman -{ - criteria ConceptPlayerGoodJob IsDemoman - Response PlayerGoodJobDemoman -} - -Response PlayerJeersDemoman -{ - scene "scenes/Player/Demoman/low/938.vcd" - scene "scenes/Player/Demoman/low/939.vcd" - scene "scenes/Player/Demoman/low/940.vcd" - scene "scenes/Player/Demoman/low/941.vcd" - scene "scenes/Player/Demoman/low/942.vcd" - scene "scenes/Player/Demoman/low/944.vcd" - scene "scenes/Player/Demoman/low/945.vcd" - scene "scenes/Player/Demoman/low/947.vcd" - scene "scenes/Player/Demoman/low/948.vcd" - scene "scenes/Player/Demoman/low/949.vcd" - scene "scenes/Player/Demoman/low/946.vcd" -} -Rule PlayerJeersDemoman -{ - criteria ConceptPlayerJeers IsDemoman - Response PlayerJeersDemoman -} - -Response PlayerLostPointDemoman -{ - scene "scenes/Player/Demoman/low/973.vcd" - scene "scenes/Player/Demoman/low/1360.vcd" - scene "scenes/Player/Demoman/low/969.vcd" - scene "scenes/Player/Demoman/low/970.vcd" - scene "scenes/Player/Demoman/low/971.vcd" - scene "scenes/Player/Demoman/low/972.vcd" -} -Rule PlayerLostPointDemoman -{ - criteria ConceptPlayerLostPoint IsDemoman - Response PlayerLostPointDemoman -} - -Response PlayerNegativeDemoman -{ - scene "scenes/Player/Demoman/low/973.vcd" - scene "scenes/Player/Demoman/low/1360.vcd" - scene "scenes/Player/Demoman/low/969.vcd" - scene "scenes/Player/Demoman/low/970.vcd" - scene "scenes/Player/Demoman/low/971.vcd" - scene "scenes/Player/Demoman/low/972.vcd" -} -Rule PlayerNegativeDemoman -{ - criteria ConceptPlayerNegative IsDemoman - Response PlayerNegativeDemoman -} - -Response PlayerNiceShotDemoman -{ - scene "scenes/Player/Demoman/low/974.vcd" - scene "scenes/Player/Demoman/low/975.vcd" - scene "scenes/Player/Demoman/low/976.vcd" -} -Rule PlayerNiceShotDemoman -{ - criteria ConceptPlayerNiceShot IsDemoman - Response PlayerNiceShotDemoman -} - -Response PlayerPositiveDemoman -{ - scene "scenes/Player/Demoman/low/989.vcd" - scene "scenes/Player/Demoman/low/990.vcd" - scene "scenes/Player/Demoman/low/991.vcd" - scene "scenes/Player/Demoman/low/992.vcd" - scene "scenes/Player/Demoman/low/993.vcd" -} -Rule PlayerPositiveDemoman -{ - criteria ConceptPlayerPositive IsDemoman - Response PlayerPositiveDemoman -} - -Response PlayerTauntsDemoman -{ - scene "scenes/Player/Demoman/low/1380.vcd" - scene "scenes/Player/Demoman/low/1382.vcd" - scene "scenes/Player/Demoman/low/1386.vcd" -} -Rule PlayerTauntsDemoman -{ - criteria ConceptPlayerTaunts IsDemoman - Response PlayerTauntsDemoman -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/demoman_custom.txt b/addon/gamemodes/teamfortress/content/scripts/talker/demoman_custom.txt deleted file mode 100644 index 1aed733b2..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/demoman_custom.txt +++ /dev/null @@ -1,13 +0,0 @@ - -Response KilledPlayerSpecialMeleeDemoman -{ - scene "scenes/Player/Demoman/low/3564.vcd" - scene "scenes/Player/Demoman/low/3565.vcd" -} -Rule KilledPlayerSpecialMeleeDemoman -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance WeaponIsSword DemomanNotKillSpeechMelee IsDemoman - ApplyContext "DemomanKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerSpecialMeleeDemoman -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/engineer.txt b/addon/gamemodes/teamfortress/content/scripts/talker/engineer.txt deleted file mode 100644 index a4e46f33c..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/engineer.txt +++ /dev/null @@ -1,1141 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Engineer Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "EngineerIsNotStillonFire" "EngineerOnFire" "!=1" "required" weight 0 -Criterion "EngineerIsStillonFire" "EngineerOnFire" "1" "required" weight 0 -Criterion "EngineerNotKillSpeech" "EngineerKillSpeech" "!=1" "required" weight 0 -Criterion "EngineerNotKillSpeechMelee" "EngineerKillSpeechMelee" "!=1" "required" weight 0 -Criterion "EngineerNotSaidHealThanks" "EngineerSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapEngineer" "EngineerHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanEngineer -{ - scene "scenes/Player/Engineer/low/56.vcd" -} -Rule PlayerCloakedSpyDemomanEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnDemoman - Response PlayerCloakedSpyDemomanEngineer -} - -Response PlayerCloakedSpyEngineerEngineer -{ - scene "scenes/Player/Engineer/low/62.vcd" -} -Rule PlayerCloakedSpyEngineerEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnEngineer - Response PlayerCloakedSpyEngineerEngineer -} - -Response PlayerCloakedSpyHeavyEngineer -{ - scene "scenes/Player/Engineer/low/52.vcd" -} -Rule PlayerCloakedSpyHeavyEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnHeavy - Response PlayerCloakedSpyHeavyEngineer -} - -Response PlayerCloakedSpyMedicEngineer -{ - scene "scenes/Player/Engineer/low/60.vcd" -} -Rule PlayerCloakedSpyMedicEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnMedic - Response PlayerCloakedSpyMedicEngineer -} - -Response PlayerCloakedSpyPyroEngineer -{ - scene "scenes/Player/Engineer/low/54.vcd" -} -Rule PlayerCloakedSpyPyroEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnPyro - Response PlayerCloakedSpyPyroEngineer -} - -Response PlayerCloakedSpyScoutEngineer -{ - scene "scenes/Player/Engineer/low/48.vcd" -} -Rule PlayerCloakedSpyScoutEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnScout - Response PlayerCloakedSpyScoutEngineer -} - -Response PlayerCloakedSpySniperEngineer -{ - scene "scenes/Player/Engineer/low/64.vcd" -} -Rule PlayerCloakedSpySniperEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnSniper - Response PlayerCloakedSpySniperEngineer -} - -Response PlayerCloakedSpySoldierEngineer -{ - scene "scenes/Player/Engineer/low/50.vcd" -} -Rule PlayerCloakedSpySoldierEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnSoldier - Response PlayerCloakedSpySoldierEngineer -} - -Response PlayerCloakedSpySpyEngineer -{ - scene "scenes/Player/Engineer/low/58.vcd" - scene "scenes/Player/Engineer/low/59.vcd" -} -Rule PlayerCloakedSpySpyEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer IsOnSpy - Response PlayerCloakedSpySpyEngineer -} - -Response PlayerDispenserDownEngineer -{ - scene "scenes/Player/Engineer/low/25.vcd" -} -Rule PlayerDispenserDownEngineer -{ - criteria ConceptLostObject IsDispenser IsEngineer - Response PlayerDispenserDownEngineer -} - -Response PlayerSentryDownEngineer -{ - scene "scenes/Player/Engineer/low/26.vcd" -} -Rule PlayerSentryDownEngineer -{ - criteria ConceptLostObject IsSentryGun IsEngineer - Response PlayerSentryDownEngineer -} - -Response PlayerTeleporterDownEngineer -{ - scene "scenes/Player/Engineer/low/27.vcd" -} -Rule PlayerTeleporterDownEngineer -{ - criteria ConceptLostObject IsTeleporter IsEngineer - Response PlayerTeleporterDownEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksEngineer -{ - scene "scenes/Player/Engineer/low/181.vcd" - scene "scenes/Player/Engineer/low/183.vcd" -} -Rule HealThanksEngineer -{ - criteria ConceptMedicChargeStopped IsEngineer SuperHighHealthContext EngineerNotSaidHealThanks 50PercentChance - ApplyContext "EngineerSaidHealThanks:1:20" - Response HealThanksEngineer -} - -Response PlayerRoundStartEngineer -{ - scene "scenes/Player/Engineer/low/31.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Engineer/low/33.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Engineer/low/34.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Engineer/low/35.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Engineer/low/36.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Engineer/low/1329.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartEngineer -{ - criteria ConceptPlayerRoundStart IsEngineer - Response PlayerRoundStartEngineer -} - -Response PlayerCappedIntelligenceEngineer -{ - scene "scenes/Player/Engineer/low/19.vcd" - scene "scenes/Player/Engineer/low/21.vcd" - scene "scenes/Player/Engineer/low/20.vcd" -} -Rule PlayerCappedIntelligenceEngineer -{ - criteria ConceptPlayerCapturedIntelligence IsEngineer - Response PlayerCappedIntelligenceEngineer -} - -Response PlayerCapturedPointEngineer -{ - scene "scenes/Player/Engineer/low/16.vcd" - scene "scenes/Player/Engineer/low/18.vcd" - scene "scenes/Player/Engineer/low/17.vcd" -} -Rule PlayerCapturedPointEngineer -{ - criteria ConceptPlayerCapturedPoint IsEngineer - Response PlayerCapturedPointEngineer -} - -Response PlayerSuddenDeathEngineer -{ - scene "scenes/Player/Engineer/low/94.vcd" - scene "scenes/Player/Engineer/low/95.vcd" - scene "scenes/Player/Engineer/low/96.vcd" - scene "scenes/Player/Engineer/low/98.vcd" -} -Rule PlayerSuddenDeathEngineer -{ - criteria ConceptPlayerSuddenDeathStart IsEngineer - Response PlayerSuddenDeathEngineer -} - -Response PlayerStalemateEngineer -{ - scene "scenes/Player/Engineer/low/22.vcd" - scene "scenes/Player/Engineer/low/23.vcd" - scene "scenes/Player/Engineer/low/24.vcd" -} -Rule PlayerStalemateEngineer -{ - criteria ConceptPlayerStalemate IsEngineer - Response PlayerStalemateEngineer -} - -Response PlayerTeleporterThanksEngineer -{ - scene "scenes/Player/Engineer/low/186.vcd" - scene "scenes/Player/Engineer/low/184.vcd" -} -Rule PlayerTeleporterThanksEngineer -{ - criteria ConceptTeleported IsNotEngineer IsEngineer 30PercentChance - Response PlayerTeleporterThanksEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointEngineer -{ - scene "scenes/Player/Engineer/low/1344.vcd" -} -Rule DefendOnThePointEngineer -{ - criteria ConceptFireWeapon IsEngineer IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointEngineer -} - -Response EngineerGoldenWrench -{ - scene "scenes/Player/Engineer/low/3605.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3690.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3691.vcd" predelay ".25" -} -Rule EngineerGoldenWrench -{ - criteria ConceptKilledPlayer IsEngineer ItemIsGoldenWrench WeaponIsWrench WeaponIsNotSentry - ApplyContext "EngineerKillSpeech:1:10" - Response EngineerGoldenWrench -} - -Response EngineerLaserPointer -{ - scene "scenes/Player/Engineer/low/3603.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3604.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3700.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3704.vcd" predelay ".25" -} -Rule EngineerLaserPointer -{ - criteria ConceptKilledPlayer IsEngineer WeaponIsLaserPointer 30PercentChance - ApplyContext "EngineerKillSpeech:1:10" - Response EngineerLaserPointer -} - -Response KillTauntsEngineerMiniSentry -{ - scene "scenes/Player/Engineer/low/3705.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3706.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3707.vcd" predelay ".25" -} -Rule KillTauntsEngineerMiniSentry -{ - criteria ConceptKilledPlayer WeaponIsMiniSentrygun IsEngineer 20PercentChance - ApplyContext "EngineerKillSpeech:1:10" - applycontexttoworld - Response KillTauntsEngineerMiniSentry -} - -Response KillTauntsEngineerSpecial -{ - scene "scenes/Player/Engineer/low/148.vcd" - scene "scenes/Player/Engineer/low/153.vcd" - scene "scenes/Player/Engineer/low/156.vcd" - scene "scenes/Player/Engineer/low/157.vcd" -} -Rule KillTauntsEngineerSpecial -{ - criteria ConceptKilledPlayer IsManyRecentKills WeaponIsSentrygun KilledPlayerDelay EngineerNotKillSpeech IsEngineer 30PercentChance - ApplyContext "EngineerKillSpeech:1:10" - applycontexttoworld - Response KillTauntsEngineerSpecial -} - -Response KilledPlayerManyEngineer -{ - scene "scenes/Player/Engineer/low/151.vcd" - scene "scenes/Player/Engineer/low/158.vcd" - scene "scenes/Player/Engineer/low/154.vcd" -} -Rule KilledPlayerManyEngineer -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay EngineerNotKillSpeech IsEngineer - ApplyContext "EngineerKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManyEngineer -} - -Response KilledPlayerMeleeEngineerEngineer -{ - scene "scenes/Player/Engineer/low/155.vcd" -} -Rule KilledPlayerMeleeEngineerEngineer -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee EngineerNotKillSpeechMelee IsEngineer WeaponIsNotSentrygun - ApplyContext "EngineerKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeEngineerEngineer -} - -Response KilledPlayerVeryManyEngineer -{ - scene "scenes/Player/Engineer/low/147.vcd" -} -Rule KilledPlayerVeryManyEngineer -{ - criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay EngineerNotKillSpeech IsEngineer - ApplyContext "EngineerKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerVeryManyEngineer -} - -Response MedicFollowEngineer -{ - scene "scenes/Player/Engineer/low/3618.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3693.vcd" predelay ".25" - scene "scenes/Player/Engineer/low/3694.vcd" predelay ".25" -} -Rule MedicFollowEngineer -{ - criteria ConceptPlayerMedic IsOnMedic IsEngineer IsNotCrossHairEnemy - ApplyContext "EngineerKillSpeech:1:10" - Response MedicFollowEngineer -} - -Response PlayerKilledCapperEngineer -{ - scene "scenes/Player/Engineer/low/36.vcd" - scene "scenes/Player/Engineer/low/1330.vcd" - scene "scenes/Player/Engineer/low/42.vcd" - scene "scenes/Player/Engineer/low/43.vcd" - scene "scenes/Player/Engineer/low/41.vcd" -} -Rule PlayerKilledCapperEngineer -{ - criteria ConceptCapBlocked IsEngineer - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledCapperEngineer -} - -Response PlayerKilledDominatingDemomanEngineer -{ - scene "scenes/Player/Engineer/low/3581.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3617.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3678.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3679.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3680.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3681.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemomanEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimDemoman - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingDemomanEngineer -} - -Response PlayerKilledDominatingEngineerEngineer -{ - scene "scenes/Player/Engineer/low/3585.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3634.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3635.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3636.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3637.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3638.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3639.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3640.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3641.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingEngineerEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimEngineer - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingEngineerEngineer -} - -Response PlayerKilledDominatingHeavyEngineer -{ - scene "scenes/Player/Engineer/low/3584.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3609.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3610.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3642.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3645.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3643.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3644.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3647.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3648.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3649.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3650.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3682.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3683.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3684.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3702.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavyEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimHeavy - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingHeavyEngineer -} - -Response PlayerKilledDominatingMedicEngineer -{ - scene "scenes/Player/Engineer/low/3582.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3613.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3614.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3669.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3670.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3671.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3672.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3673.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedicEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimMedic - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingMedicEngineer -} - -Response PlayerKilledDominatingPyroEngineer -{ - scene "scenes/Player/Engineer/low/3583.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3612.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3661.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3662.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3664.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3665.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3666.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3668.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3667.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyroEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimPyro - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingPyroEngineer -} - -Response PlayerKilledDominatingScoutEngineer -{ - scene "scenes/Player/Engineer/low/3588.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3606.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3616.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3621.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3622.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3623.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3624.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3625.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3626.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3627.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3628.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3701.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingScoutEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimScout - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingScoutEngineer -} - -Response PlayerKilledDominatingSniperEngineer -{ - scene "scenes/Player/Engineer/low/3587.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3607.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3629.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3630.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3631.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3632.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3633.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3685.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSniperEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimSniper - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingSniperEngineer -} - -Response PlayerKilledDominatingSoldierEngineer -{ - scene "scenes/Player/Engineer/low/3580.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3615.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3674.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3675.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3676.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3686.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3687.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3688.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldierEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimSoldier - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingSoldierEngineer -} - -Response PlayerKilledDominatingSpyEngineer -{ - scene "scenes/Player/Engineer/low/3586.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3611.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3651.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3652.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3653.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3654.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3655.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3656.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3657.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3659.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3658.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3689.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3660.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSpyEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimSpy - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledDominatingSpyEngineer -} - -Response PlayerKilledForRevengeEngineer -{ - scene "scenes/Player/Engineer/low/1329.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/40.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/39.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/44.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/98.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/100.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/1331.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/1335.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/1336.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/101.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/1334.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/102.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/103.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/149.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/164.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/168.vcd" predelay "2.5" - scene "scenes/Player/Engineer/low/3696.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeEngineer -{ - criteria ConceptKilledPlayer IsEngineer IsRevenge - ApplyContext "EngineerKillSpeech:1:10" - Response PlayerKilledForRevengeEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Engineer -//-------------------------------------------------------------------------------------------------------------- -Response CarrySentryEngineer -{ - scene "scenes/Player/Engineer/low/3599.vcd" - scene "scenes/Player/Engineer/low/3600.vcd" -} -Rule CarrySentryEngineer -{ - criteria ConceptEngineerCarryingBuilding IsEngineer 20PercentChance - Response CarrySentryEngineer -} - -Response DeploySentryEngineer -{ - scene "scenes/Player/Engineer/low/3697.vcd" - scene "scenes/Player/Engineer/low/3601.vcd" - scene "scenes/Player/Engineer/low/3699.vcd" - scene "scenes/Player/Engineer/low/3698.vcd" -} -Rule DeploySentryEngineer -{ - criteria ConceptEngineerDeployBuilding IsEngineer - Response DeploySentryEngineer -} - -Response PickupSentryEngineer -{ - scene "scenes/Player/Engineer/low/3595.vcd" - scene "scenes/Player/Engineer/low/3597.vcd" - scene "scenes/Player/Engineer/low/3596.vcd" -} -Rule PickupSentryEngineer -{ - criteria ConceptEngineerPickupBuilding IsEngineer - Response PickupSentryEngineer -} - -Response PlayerBuildingDispenserEngineer -{ - scene "scenes/Player/Engineer/low/8.vcd" - scene "scenes/Player/Engineer/low/9.vcd" -} -Rule PlayerBuildingDispenserEngineer -{ - criteria ConceptPlayerBuildingObject IsDispenser IsEngineer - Response PlayerBuildingDispenserEngineer -} - -Response PlayerBuildingSentryEngineer -{ - scene "scenes/Player/Engineer/low/12.vcd" - scene "scenes/Player/Engineer/low/11.vcd" -} -Rule PlayerBuildingSentryEngineer -{ - criteria ConceptPlayerBuildingObject IsSentryGun IsEngineer - Response PlayerBuildingSentryEngineer -} - -Response PlayerBuildingTeleporterEngineer -{ - scene "scenes/Player/Engineer/low/13.vcd" - scene "scenes/Player/Engineer/low/15.vcd" -} -Rule PlayerBuildingTeleporterEngineer -{ - criteria ConceptPlayerBuildingObject IsTeleporter IsEngineer - Response PlayerBuildingTeleporterEngineer -} - -Response PlayerDispenserSappedEngineer -{ - scene "scenes/Player/Engineer/low/5.vcd" -} -Rule PlayerDispenserSappedEngineer -{ - criteria ConceptSpySapping IsEngineer IsDispenser - Response PlayerDispenserSappedEngineer -} - -Response PlayerSentrySappedEngineer -{ - scene "scenes/Player/Engineer/low/4.vcd" -} -Rule PlayerSentrySappedEngineer -{ - criteria ConceptSpySapping IsEngineer IsSentryGun - Response PlayerSentrySappedEngineer -} - -Response PlayerTeleporterSappedEngineer -{ - scene "scenes/Player/Engineer/low/6.vcd" -} -Rule PlayerTeleporterSappedEngineer -{ - criteria ConceptSpySapping IsEngineer IsTeleporter - Response PlayerTeleporterSappedEngineer -} - - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainEngineer -{ - scene "scenes/Player/Engineer/low/133.vcd" - scene "scenes/Player/Engineer/low/134.vcd" - scene "scenes/Player/Engineer/low/135.vcd" - scene "scenes/Player/Engineer/low/1254.vcd" - scene "scenes/Player/Engineer/low/1255.vcd" - scene "scenes/Player/Engineer/low/1256.vcd" - scene "scenes/Player/Engineer/low/1257.vcd" -} -Rule PlayerAttackerPainEngineer -{ - criteria ConceptAttackerPain IsEngineer - Response PlayerAttackerPainEngineer -} - -Response PlayerOnFireEngineer -{ - scene "scenes/Player/Engineer/low/28.vcd" - scene "scenes/Player/Engineer/low/30.vcd" - scene "scenes/Player/Engineer/low/29.vcd" -} -Rule PlayerOnFireEngineer -{ - criteria ConceptFire IsEngineer EngineerIsNotStillonFire - ApplyContext "EngineerOnFire:1:7" - Response PlayerOnFireEngineer -} - -Response PlayerPainEngineer -{ - scene "scenes/Player/Engineer/low/136.vcd" - scene "scenes/Player/Engineer/low/137.vcd" - scene "scenes/Player/Engineer/low/138.vcd" - scene "scenes/Player/Engineer/low/1249.vcd" - scene "scenes/Player/Engineer/low/1250.vcd" - scene "scenes/Player/Engineer/low/1251.vcd" - scene "scenes/Player/Engineer/low/1252.vcd" - scene "scenes/Player/Engineer/low/1253.vcd" -} -Rule PlayerPainEngineer -{ - criteria ConceptPain IsEngineer - Response PlayerPainEngineer -} - -Response PlayerStillOnFireEngineer -{ - scene "scenes/Player/Engineer/low/1931.vcd" -} -Rule PlayerStillOnFireEngineer -{ - criteria ConceptFire IsEngineer EngineerIsStillonFire - ApplyContext "EngineerOnFire:1:7" - Response PlayerStillOnFireEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelEngineer -{ - scene "scenes/Player/Engineer/low/35.vcd" - scene "scenes/Player/Engineer/low/163.vcd" - scene "scenes/Player/Engineer/low/166.vcd" - scene "scenes/Player/Engineer/low/169.vcd" - scene "scenes/Player/Engineer/low/172.vcd" - scene "scenes/Player/Engineer/low/174.vcd" - scene "scenes/Player/Engineer/low/188.vcd" -} -Rule AcceptedDuelEngineer -{ - criteria ConceptIAcceptDuel IsEngineer - Response AcceptedDuelEngineer -} - -Response MeleeDareEngineer -{ - scene "scenes/Player/Engineer/low/3619.vcd" - scene "scenes/Player/Engineer/low/3620.vcd" - scene "scenes/Player/Engineer/low/3695.vcd" -} -Rule MeleeDareEngineer -{ - criteria ConceptRequestDuel IsEngineer - Response MeleeDareEngineer -} - -Response RejectedDuelEngineer -{ - scene "scenes/Player/Engineer/low/24.vcd" - scene "scenes/Player/Engineer/low/94.vcd" - scene "scenes/Player/Engineer/low/3615.vcd" - scene "scenes/Player/Engineer/low/3658.vcd" -} -Rule RejectedDuelEngineer -{ - criteria ConceptDuelRejected IsEngineer - Response RejectedDuelEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoEngineer -{ - scene "scenes/Player/Engineer/low/69.vcd" - scene "scenes/Player/Engineer/low/68.vcd" - scene "scenes/Player/Engineer/low/67.vcd" -} -Rule PlayerGoEngineer -{ - criteria ConceptPlayerGo IsEngineer - Response PlayerGoEngineer -} - -Response PlayerHeadLeftEngineer -{ - scene "scenes/Player/Engineer/low/73.vcd" - scene "scenes/Player/Engineer/low/75.vcd" -} -Rule PlayerHeadLeftEngineer -{ - criteria ConceptPlayerLeft IsEngineer - Response PlayerHeadLeftEngineer -} - -Response PlayerHeadRightEngineer -{ - scene "scenes/Player/Engineer/low/76.vcd" - scene "scenes/Player/Engineer/low/77.vcd" - scene "scenes/Player/Engineer/low/78.vcd" -} -Rule PlayerHeadRightEngineer -{ - criteria ConceptPlayerRight IsEngineer - Response PlayerHeadRightEngineer -} - -Response PlayerHelpEngineer -{ - scene "scenes/Player/Engineer/low/79.vcd" - scene "scenes/Player/Engineer/low/80.vcd" - scene "scenes/Player/Engineer/low/81.vcd" -} -Rule PlayerHelpEngineer -{ - criteria ConceptPlayerHelp IsEngineer - Response PlayerHelpEngineer -} - -Response PlayerHelpCaptureEngineer -{ - scene "scenes/Player/Engineer/low/82.vcd" - scene "scenes/Player/Engineer/low/84.vcd" - scene "scenes/Player/Engineer/low/83.vcd" -} -Rule PlayerHelpCaptureEngineer -{ - criteria ConceptPlayerHelp IsEngineer IsOnCappableControlPoint - ApplyContext "EngineerHelpCap:1:10" - Response PlayerHelpCaptureEngineer -} - -Response PlayerHelpCapture2Engineer -{ - scene "scenes/Player/Engineer/low/161.vcd" - scene "scenes/Player/Engineer/low/1344.vcd" -} -Rule PlayerHelpCapture2Engineer -{ - criteria ConceptPlayerHelp IsEngineer IsOnCappableControlPoint IsHelpCapEngineer - Response PlayerHelpCapture2Engineer -} - -Response PlayerHelpDefendEngineer -{ - scene "scenes/Player/Engineer/low/85.vcd" - scene "scenes/Player/Engineer/low/86.vcd" - scene "scenes/Player/Engineer/low/87.vcd" -} -Rule PlayerHelpDefendEngineer -{ - criteria ConceptPlayerHelp IsEngineer IsOnFriendlyControlPoint - Response PlayerHelpDefendEngineer -} - -Response PlayerMedicEngineer -{ - scene "scenes/Player/Engineer/low/109.vcd" - scene "scenes/Player/Engineer/low/107.vcd" - scene "scenes/Player/Engineer/low/108.vcd" -} -Rule PlayerMedicEngineer -{ - criteria ConceptPlayerMedic IsEngineer - Response PlayerMedicEngineer -} - -Response PlayerMoveUpEngineer -{ - scene "scenes/Player/Engineer/low/111.vcd" -} -Rule PlayerMoveUpEngineer -{ - criteria ConceptPlayerMoveUp IsEngineer - Response PlayerMoveUpEngineer -} - -Response PlayerNoEngineer -{ - scene "scenes/Player/Engineer/low/127.vcd" - scene "scenes/Player/Engineer/low/128.vcd" - scene "scenes/Player/Engineer/low/129.vcd" -} -Rule PlayerNoEngineer -{ - criteria ConceptPlayerNo IsEngineer - Response PlayerNoEngineer -} - -Response PlayerThanksEngineer -{ - scene "scenes/Player/Engineer/low/180.vcd" -} -Rule PlayerThanksEngineer -{ - criteria ConceptPlayerThanks IsEngineer - Response PlayerThanksEngineer -} - -Response PlayerYesEngineer -{ - scene "scenes/Player/Engineer/low/187.vcd" - scene "scenes/Player/Engineer/low/188.vcd" - scene "scenes/Player/Engineer/low/189.vcd" -} -Rule PlayerYesEngineer -{ - criteria ConceptPlayerYes IsEngineer - Response PlayerYesEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeEngineer -{ - scene "scenes/Player/Engineer/low/1.vcd" - scene "scenes/Player/Engineer/low/2.vcd" - scene "scenes/Player/Engineer/low/3.vcd" -} -Rule PlayerActivateChargeEngineer -{ - criteria ConceptPlayerActivateCharge IsEngineer - Response PlayerActivateChargeEngineer -} - -Response PlayerCloakedSpyEngineer -{ - scene "scenes/Player/Engineer/low/45.vcd" - scene "scenes/Player/Engineer/low/47.vcd" - scene "scenes/Player/Engineer/low/46.vcd" -} -Rule PlayerCloakedSpyEngineer -{ - criteria ConceptPlayerCloakedSpy IsEngineer - Response PlayerCloakedSpyEngineer -} - -Response PlayerDispenserHereEngineer -{ - scene "scenes/Player/Engineer/low/113.vcd" -} -Rule PlayerDispenserHereEngineer -{ - criteria ConceptPlayerDispenserHere IsEngineer - Response PlayerDispenserHereEngineer -} - -Response PlayerIncomingEngineer -{ - scene "scenes/Player/Engineer/low/88.vcd" - scene "scenes/Player/Engineer/low/89.vcd" - scene "scenes/Player/Engineer/low/90.vcd" -} -Rule PlayerIncomingEngineer -{ - criteria ConceptPlayerIncoming IsEngineer - Response PlayerIncomingEngineer -} - -Response PlayerSentryAheadEngineer -{ - scene "scenes/Player/Engineer/low/145.vcd" - scene "scenes/Player/Engineer/low/146.vcd" -} -Rule PlayerSentryAheadEngineer -{ - criteria ConceptPlayerSentryAhead IsEngineer - Response PlayerSentryAheadEngineer -} - -Response PlayerSentryHereEngineer -{ - scene "scenes/Player/Engineer/low/115.vcd" -} -Rule PlayerSentryHereEngineer -{ - criteria ConceptPlayerSentryHere IsEngineer - Response PlayerSentryHereEngineer -} - -Response PlayerTeleporterHereEngineer -{ - scene "scenes/Player/Engineer/low/117.vcd" - scene "scenes/Player/Engineer/low/118.vcd" -} -Rule PlayerTeleporterHereEngineer -{ - criteria ConceptPlayerTeleporterHere IsEngineer - Response PlayerTeleporterHereEngineer -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCryEngineer -{ - scene "scenes/Player/Engineer/low/31.vcd" - scene "scenes/Player/Engineer/low/33.vcd" - scene "scenes/Player/Engineer/low/34.vcd" - scene "scenes/Player/Engineer/low/35.vcd" - scene "scenes/Player/Engineer/low/36.vcd" - scene "scenes/Player/Engineer/low/1329.vcd" -} -Rule PlayerBattleCryEngineer -{ - criteria ConceptPlayerBattleCry IsEngineer - Response PlayerBattleCryEngineer -} - -Response PlayerCheersEngineer -{ - scene "scenes/Player/Engineer/low/40.vcd" - scene "scenes/Player/Engineer/low/1330.vcd" - scene "scenes/Player/Engineer/low/42.vcd" - scene "scenes/Player/Engineer/low/43.vcd" - scene "scenes/Player/Engineer/low/41.vcd" - scene "scenes/Player/Engineer/low/39.vcd" - scene "scenes/Player/Engineer/low/44.vcd" -} -Rule PlayerCheersEngineer -{ - criteria ConceptPlayerCheers IsEngineer - Response PlayerCheersEngineer -} - -Response PlayerGoodJobEngineer -{ - scene "scenes/Player/Engineer/low/70.vcd" - scene "scenes/Player/Engineer/low/72.vcd" - scene "scenes/Player/Engineer/low/71.vcd" -} -Rule PlayerGoodJobEngineer -{ - criteria ConceptPlayerGoodJob IsEngineer - Response PlayerGoodJobEngineer -} - -Response PlayerJeersEngineer -{ - scene "scenes/Player/Engineer/low/94.vcd" - scene "scenes/Player/Engineer/low/95.vcd" - scene "scenes/Player/Engineer/low/96.vcd" - scene "scenes/Player/Engineer/low/98.vcd" -} -Rule PlayerJeersEngineer -{ - criteria ConceptPlayerJeers IsEngineer - Response PlayerJeersEngineer -} - -Response PlayerLostPointEngineer -{ - scene "scenes/Player/Engineer/low/1327.vcd" - scene "scenes/Player/Engineer/low/1328.vcd" - scene "scenes/Player/Engineer/low/119.vcd" - scene "scenes/Player/Engineer/low/120.vcd" - scene "scenes/Player/Engineer/low/122.vcd" - scene "scenes/Player/Engineer/low/121.vcd" - scene "scenes/Player/Engineer/low/123.vcd" - scene "scenes/Player/Engineer/low/1339.vcd" - scene "scenes/Player/Engineer/low/1340.vcd" - scene "scenes/Player/Engineer/low/1341.vcd" - scene "scenes/Player/Engineer/low/1342.vcd" - scene "scenes/Player/Engineer/low/1343.vcd" -} -Rule PlayerLostPointEngineer -{ - criteria ConceptPlayerLostPoint IsEngineer - Response PlayerLostPointEngineer -} - -Response PlayerNegativeEngineer -{ - scene "scenes/Player/Engineer/low/1327.vcd" - scene "scenes/Player/Engineer/low/1328.vcd" - scene "scenes/Player/Engineer/low/119.vcd" - scene "scenes/Player/Engineer/low/120.vcd" - scene "scenes/Player/Engineer/low/122.vcd" - scene "scenes/Player/Engineer/low/121.vcd" - scene "scenes/Player/Engineer/low/123.vcd" - scene "scenes/Player/Engineer/low/1339.vcd" - scene "scenes/Player/Engineer/low/1340.vcd" - scene "scenes/Player/Engineer/low/1341.vcd" - scene "scenes/Player/Engineer/low/1342.vcd" - scene "scenes/Player/Engineer/low/1343.vcd" -} -Rule PlayerNegativeEngineer -{ - criteria ConceptPlayerNegative IsEngineer - Response PlayerNegativeEngineer -} - -Response PlayerNiceShotEngineer -{ - scene "scenes/Player/Engineer/low/125.vcd" - scene "scenes/Player/Engineer/low/126.vcd" - scene "scenes/Player/Engineer/low/124.vcd" -} -Rule PlayerNiceShotEngineer -{ - criteria ConceptPlayerNiceShot IsEngineer - Response PlayerNiceShotEngineer -} - -Response PlayerPositiveEngineer -{ - scene "scenes/Player/Engineer/low/139.vcd" -} -Rule PlayerPositiveEngineer -{ - criteria ConceptPlayerPositive IsEngineer - Response PlayerPositiveEngineer -} - -Response PlayerTauntsEngineer -{ - scene "scenes/Player/Engineer/low/1332.vcd" - scene "scenes/Player/Engineer/low/1333.vcd" - scene "scenes/Player/Engineer/low/105.vcd" - scene "scenes/Player/Engineer/low/106.vcd" - scene "scenes/Player/Engineer/low/1337.vcd" - scene "scenes/Player/Engineer/low/1338.vcd" -} -Rule PlayerTauntsEngineer -{ - criteria ConceptPlayerTaunts IsEngineer - Response PlayerTauntsEngineer -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/heavy.txt b/addon/gamemodes/teamfortress/content/scripts/talker/heavy.txt deleted file mode 100644 index cbef7dc04..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/heavy.txt +++ /dev/null @@ -1,1016 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Heavy Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "HeavyIsKillSpeechObject" "HeavyKillSpeechObject" "1" "required" weight 0 -Criterion "HeavyIsNotStillonFire" "HeavyOnFire" "!=1" "required" weight 0 -Criterion "HeavyIsStillonFire" "HeavyOnFire" "1" "required" weight 0 -Criterion "HeavyNotInvulnerableSpeech" "HeavyInvulnerableSpeech" "!=1" "required" weight 0 -Criterion "HeavyNotKillSpeech" "HeavyKillSpeech" "!=1" "required" weight 0 -Criterion "HeavyNotKillSpeechMelee" "HeavyKillSpeechMelee" "!=1" "required" weight 0 -Criterion "HeavyNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" weight 0 -Criterion "HeavyNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" weight 0 -Criterion "HeavyNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" weight 0 -Criterion "HeavyNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" weight 0 -Criterion "HeavyNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" weight 0 -Criterion "HeavyNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" weight 0 -Criterion "HeavyNotSaidHealThanks" "HeavySaidHealThanks" "!=1" "required" -Criterion "IsHelpCapHeavy" "HeavyHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanHeavy -{ - scene "scenes/Player/Heavy/low/225.vcd" -} -Rule PlayerCloakedSpyDemomanHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnDemoman - Response PlayerCloakedSpyDemomanHeavy -} - -Response PlayerCloakedSpyEngineerHeavy -{ - scene "scenes/Player/Heavy/low/228.vcd" -} -Rule PlayerCloakedSpyEngineerHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnEngineer - Response PlayerCloakedSpyEngineerHeavy -} - -Response PlayerCloakedSpyHeavyHeavy -{ - scene "scenes/Player/Heavy/low/223.vcd" -} -Rule PlayerCloakedSpyHeavyHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnHeavy - Response PlayerCloakedSpyHeavyHeavy -} - -Response PlayerCloakedSpyMedicHeavy -{ - scene "scenes/Player/Heavy/low/227.vcd" -} -Rule PlayerCloakedSpyMedicHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnMedic - Response PlayerCloakedSpyMedicHeavy -} - -Response PlayerCloakedSpyPyroHeavy -{ - scene "scenes/Player/Heavy/low/224.vcd" -} -Rule PlayerCloakedSpyPyroHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnPyro - Response PlayerCloakedSpyPyroHeavy -} - -Response PlayerCloakedSpyScoutHeavy -{ - scene "scenes/Player/Heavy/low/221.vcd" -} -Rule PlayerCloakedSpyScoutHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnScout - Response PlayerCloakedSpyScoutHeavy -} - -Response PlayerCloakedSpySniperHeavy -{ - scene "scenes/Player/Heavy/low/229.vcd" -} -Rule PlayerCloakedSpySniperHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnSniper - Response PlayerCloakedSpySniperHeavy -} - -Response PlayerCloakedSpySoldierHeavy -{ - scene "scenes/Player/Heavy/low/222.vcd" -} -Rule PlayerCloakedSpySoldierHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnSoldier - Response PlayerCloakedSpySoldierHeavy -} - -Response PlayerCloakedSpySpyHeavy -{ - scene "scenes/Player/Heavy/low/226.vcd" -} -Rule PlayerCloakedSpySpyHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy IsOnSpy - Response PlayerCloakedSpySpyHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksHeavy -{ - scene "scenes/Player/Heavy/low/344.vcd" - scene "scenes/Player/Heavy/low/345.vcd" - scene "scenes/Player/Heavy/low/346.vcd" -} -Rule HealThanksHeavy -{ - criteria ConceptMedicChargeStopped IsHeavy SuperHighHealthContext HeavyNotSaidHealThanks 50PercentChance - ApplyContext "HeavySaidHealThanks:1:20" - Response HealThanksHeavy -} - -Response PlayerRoundStartHeavy -{ - scene "scenes/Player/Heavy/low/205.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Heavy/low/206.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Heavy/low/207.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Heavy/low/208.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Heavy/low/209.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Heavy/low/210.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartHeavy -{ - criteria ConceptPlayerRoundStart IsHeavy - Response PlayerRoundStartHeavy -} - -Response PlayerCappedIntelligenceHeavy -{ - scene "scenes/Player/Heavy/low/196.vcd" - scene "scenes/Player/Heavy/low/197.vcd" - scene "scenes/Player/Heavy/low/198.vcd" -} -Rule PlayerCappedIntelligenceHeavy -{ - criteria ConceptPlayerCapturedIntelligence IsHeavy - Response PlayerCappedIntelligenceHeavy -} - -Response PlayerCapturedPointHeavy -{ - scene "scenes/Player/Heavy/low/193.vcd" - scene "scenes/Player/Heavy/low/194.vcd" - scene "scenes/Player/Heavy/low/195.vcd" -} -Rule PlayerCapturedPointHeavy -{ - criteria ConceptPlayerCapturedPoint IsHeavy - Response PlayerCapturedPointHeavy -} - -Response PlayerSuddenDeathHeavy -{ - scene "scenes/Player/Heavy/low/258.vcd" - scene "scenes/Player/Heavy/low/259.vcd" - scene "scenes/Player/Heavy/low/260.vcd" - scene "scenes/Player/Heavy/low/261.vcd" - scene "scenes/Player/Heavy/low/262.vcd" - scene "scenes/Player/Heavy/low/263.vcd" - scene "scenes/Player/Heavy/low/264.vcd" - scene "scenes/Player/Heavy/low/265.vcd" - scene "scenes/Player/Heavy/low/266.vcd" -} -Rule PlayerSuddenDeathHeavy -{ - criteria ConceptPlayerSuddenDeathStart IsHeavy - Response PlayerSuddenDeathHeavy -} - -Response PlayerStalemateHeavy -{ - scene "scenes/Player/Heavy/low/199.vcd" - scene "scenes/Player/Heavy/low/200.vcd" - scene "scenes/Player/Heavy/low/201.vcd" -} -Rule PlayerStalemateHeavy -{ - criteria ConceptPlayerStalemate IsHeavy - Response PlayerStalemateHeavy -} - -Response PlayerTeleporterThanksHeavy -{ - scene "scenes/Player/Heavy/low/347.vcd" - scene "scenes/Player/Heavy/low/348.vcd" - scene "scenes/Player/Heavy/low/349.vcd" -} -Rule PlayerTeleporterThanksHeavy -{ - criteria ConceptTeleported IsNotEngineer IsHeavy 30PercentChance - Response PlayerTeleporterThanksHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Cart -//-------------------------------------------------------------------------------------------------------------- -Response CartMovingBackwardsDefenseHeavy -{ - scene "scenes/Player/Heavy/low/1990.vcd" - scene "scenes/Player/Heavy/low/1991.vcd" - scene "scenes/Player/Heavy/low/1992.vcd" - scene "scenes/Player/Heavy/low/2070.vcd" - scene "scenes/Player/Heavy/low/2208.vcd" - scene "scenes/Player/Heavy/low/2209.vcd" - scene "scenes/Player/Heavy/low/2267.vcd" - scene "scenes/Player/Heavy/low/2268.vcd" -} -Rule CartMovingBackwardsDefenseHeavy -{ - criteria ConceptCartMovingBackward IsOnDefense IsHeavy HeavyNotSaidCartMovingBackwardD - ApplyContext "SaidCartMovingBackwardD:1:20" - Response CartMovingBackwardsDefenseHeavy -} - -Response CartMovingBackwardsOffenseHeavy -{ - scene "scenes/Player/Heavy/low/1987.vcd" - scene "scenes/Player/Heavy/low/1988.vcd" - scene "scenes/Player/Heavy/low/1989.vcd" - scene "scenes/Player/Heavy/low/2071.vcd" - scene "scenes/Player/Heavy/low/2072.vcd" - scene "scenes/Player/Heavy/low/2206.vcd" - scene "scenes/Player/Heavy/low/2207.vcd" -} -Rule CartMovingBackwardsOffenseHeavy -{ - criteria ConceptCartMovingBackward IsOnOffense IsHeavy HeavyNotSaidCartMovingBackwardO - ApplyContext "SaidCartMovingBackwardO:1:20" - Response CartMovingBackwardsOffenseHeavy -} - -Response CartMovingForwardDefenseHeavy -{ - scene "scenes/Player/Heavy/low/1984.vcd" - scene "scenes/Player/Heavy/low/1985.vcd" - scene "scenes/Player/Heavy/low/2269.vcd" - scene "scenes/Player/Heavy/low/1986.vcd" - scene "scenes/Player/Heavy/low/2073.vcd" - scene "scenes/Player/Heavy/low/2270.vcd" -} -Rule CartMovingForwardDefenseHeavy -{ - criteria ConceptCartMovingForward IsOnDefense IsHeavy HeavyNotSaidCartMovingForwardD - ApplyContext "SaidCartMovingForwardD:1:20" - Response CartMovingForwardDefenseHeavy -} - -Response CartMovingForwardOffenseHeavy -{ - scene "scenes/Player/Heavy/low/1963.vcd" - scene "scenes/Player/Heavy/low/1964.vcd" - scene "scenes/Player/Heavy/low/1965.vcd" - scene "scenes/Player/Heavy/low/2179.vcd" - scene "scenes/Player/Heavy/low/2180.vcd" - scene "scenes/Player/Heavy/low/2181.vcd" - scene "scenes/Player/Heavy/low/2182.vcd" - scene "scenes/Player/Heavy/low/2183.vcd" - scene "scenes/Player/Heavy/low/2184.vcd" - scene "scenes/Player/Heavy/low/2271.vcd" - scene "scenes/Player/Heavy/low/2185.vcd" - scene "scenes/Player/Heavy/low/2186.vcd" - scene "scenes/Player/Heavy/low/2187.vcd" - scene "scenes/Player/Heavy/low/2188.vcd" - scene "scenes/Player/Heavy/low/2189.vcd" - scene "scenes/Player/Heavy/low/2190.vcd" - scene "scenes/Player/Heavy/low/2203.vcd" - scene "scenes/Player/Heavy/low/1957.vcd" - scene "scenes/Player/Heavy/low/1958.vcd" - scene "scenes/Player/Heavy/low/1959.vcd" - scene "scenes/Player/Heavy/low/2202.vcd" - scene "scenes/Player/Heavy/low/2201.vcd" - scene "scenes/Player/Heavy/low/2193.vcd" - scene "scenes/Player/Heavy/low/2066.vcd" - scene "scenes/Player/Heavy/low/2261.vcd" - scene "scenes/Player/Heavy/low/2262.vcd" -} -Rule CartMovingForwardOffenseHeavy -{ - criteria ConceptCartMovingForward IsOnOffense IsHeavy HeavyNotSaidCartMovingForwardO - ApplyContext "SaidCartMovingForwardO:1:20" - Response CartMovingForwardOffenseHeavy -} - -Response CartMovingStoppedDefenseHeavy -{ - scene "scenes/Player/Heavy/low/1966.vcd" - scene "scenes/Player/Heavy/low/1967.vcd" - scene "scenes/Player/Heavy/low/1968.vcd" - scene "scenes/Player/Heavy/low/2191.vcd" -} -Rule CartMovingStoppedDefenseHeavy -{ - criteria ConceptCartMovingStopped IsOnDefense IsHeavy HeavyNotSaidCartMovingStoppedD - ApplyContext "SaidCartMovingStoppedD:1:20" - Response CartMovingStoppedDefenseHeavy -} - -Response CartMovingStoppedOffenseHeavy -{ - scene "scenes/Player/Heavy/low/1960.vcd" - scene "scenes/Player/Heavy/low/1961.vcd" - scene "scenes/Player/Heavy/low/2192.vcd" - scene "scenes/Player/Heavy/low/1962.vcd" -} -Rule CartMovingStoppedOffenseHeavy -{ - criteria ConceptCartMovingStopped IsOnOffense IsHeavy HeavyNotSaidCartMovingStoppedO - ApplyContext "SaidCartMovingStoppedO:1:20" - Response CartMovingStoppedOffenseHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointHeavy -{ - scene "scenes/Player/Heavy/low/322.vcd" - scene "scenes/Player/Heavy/low/1277.vcd" -} -Rule DefendOnThePointHeavy -{ - criteria ConceptFireWeapon IsHeavy IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointHeavy -} - -Response InvulnerableSpeechHeavy -{ - scene "scenes/Player/Heavy/low/314.vcd" - scene "scenes/Player/Heavy/low/315.vcd" - scene "scenes/Player/Heavy/low/316.vcd" - scene "scenes/Player/Heavy/low/325.vcd" - scene "scenes/Player/Heavy/low/341.vcd" -} -Rule InvulnerableSpeechHeavy -{ - criteria ConceptFireMinigun IsHeavy WeaponIsMinigun IsInvulnerable HeavyNotInvulnerableSpeech - ApplyContext "HeavyInvulnerableSpeech:1:30" - Response InvulnerableSpeechHeavy -} - -Response KilledPlayerManyHeavy -{ - scene "scenes/Player/Heavy/low/310.vcd" - scene "scenes/Player/Heavy/low/311.vcd" - scene "scenes/Player/Heavy/low/1279.vcd" - scene "scenes/Player/Heavy/low/326.vcd" - scene "scenes/Player/Heavy/low/327.vcd" -} -Rule KilledPlayerManyHeavy -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay HeavyNotKillSpeech IsHeavy - ApplyContext "HeavyKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManyHeavy -} - -Response KilledPlayerMeleeHeavy -{ - scene "scenes/Player/Heavy/low/272.vcd" - scene "scenes/Player/Heavy/low/273.vcd" -} -Rule KilledPlayerMeleeHeavy -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee HeavyNotKillSpeechMelee IsHeavy - ApplyContext "HeavyKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeHeavy -} - -Response KilledPlayerVeryManyHeavy -{ - scene "scenes/Player/Heavy/low/318.vcd" - scene "scenes/Player/Heavy/low/319.vcd" - scene "scenes/Player/Heavy/low/323.vcd" - scene "scenes/Player/Heavy/low/338.vcd" - scene "scenes/Player/Heavy/low/340.vcd" -} -Rule KilledPlayerVeryManyHeavy -{ - criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay HeavyNotKillSpeech IsHeavy - ApplyContext "HeavyKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerVeryManyHeavy -} - -Response MedicFollowHeavy -{ - scene "scenes/Player/Heavy/low/1933.vcd" predelay ".25" - scene "scenes/Player/Heavy/low/1935.vcd" predelay ".25" - scene "scenes/Player/Heavy/low/1936.vcd" predelay ".25" - scene "scenes/Player/Heavy/low/1937.vcd" predelay ".25" - scene "scenes/Player/Heavy/low/1938.vcd" predelay ".25" - scene "scenes/Player/Heavy/low/1939.vcd" predelay ".25" - scene "scenes/Player/Heavy/low/2086.vcd" predelay ".25" -} -Rule MedicFollowHeavy -{ - criteria ConceptPlayerMedic IsOnMedic IsHeavy IsNotCrossHairEnemy - ApplyContext "HeavyKillSpeech:1:10" - Response MedicFollowHeavy -} - -Response PlayerKilledCapperHeavy -{ - scene "scenes/Player/Heavy/low/1265.vcd" - scene "scenes/Player/Heavy/low/289.vcd" - scene "scenes/Player/Heavy/low/306.vcd" - scene "scenes/Player/Heavy/low/330.vcd" - scene "scenes/Player/Heavy/low/334.vcd" - scene "scenes/Player/Heavy/low/339.vcd" - scene "scenes/Player/Heavy/low/331.vcd" -} -Rule PlayerKilledCapperHeavy -{ - criteria ConceptCapBlocked IsHeavy - ApplyContext "HeavyKillSpeech:1:10" - Response PlayerKilledCapperHeavy -} - -Response PlayerKilledDominatingHeavy -{ - scene "scenes/Player/Heavy/low/1948.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1950.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2074.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2075.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2076.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2077.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2078.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2079.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2080.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2083.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2084.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2085.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2103.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2115.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2194.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2256.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/235.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/263.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/267.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/268.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/269.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1268.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1269.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1272.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/270.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/271.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2067.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2265.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2266.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/303.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/304.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/336.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavy -{ - criteria ConceptKilledPlayer IsHeavy IsDominated - ApplyContext "HeavyKillSpeech:1:10" - Response PlayerKilledDominatingHeavy -} - -Response PlayerKilledForRevengeHeavy -{ - scene "scenes/Player/Heavy/low/213.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/216.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/305.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1951.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1952.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/1953.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2100.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2101.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2102.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2104.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2105.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2108.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2109.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2110.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2111.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2112.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2113.vcd" predelay "2.5" - scene "scenes/Player/Heavy/low/2114.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeHeavy -{ - criteria ConceptKilledPlayer IsHeavy IsRevenge - ApplyContext "HeavyKillSpeech:1:10" - Response PlayerKilledForRevengeHeavy -} - -Response PlayerKilledObjectHeavy -{ - scene "scenes/Player/Heavy/low/2264.vcd" - scene "scenes/Player/Heavy/low/1262.vcd" - scene "scenes/Player/Heavy/low/312.vcd" - scene "scenes/Player/Heavy/low/313.vcd" -} -Rule PlayerKilledObjectHeavy -{ - criteria ConceptKilledObject IsHeavy 30PercentChance IsARecentKill - ApplyContext "HeavyKillSpeechObject:1:30" - applycontexttoworld - Response PlayerKilledObjectHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainHeavy -{ - scene "scenes/Player/Heavy/low/297.vcd" - scene "scenes/Player/Heavy/low/298.vcd" - scene "scenes/Player/Heavy/low/299.vcd" -} -Rule PlayerAttackerPainHeavy -{ - criteria ConceptAttackerPain IsHeavy - Response PlayerAttackerPainHeavy -} - -Response PlayerOnFireHeavy -{ - scene "scenes/Player/Heavy/low/202.vcd" - scene "scenes/Player/Heavy/low/203.vcd" - scene "scenes/Player/Heavy/low/1400.vcd" -} -Rule PlayerOnFireHeavy -{ - criteria ConceptFire IsHeavy HeavyIsNotStillonFire - ApplyContext "HeavyOnFire:1:7" - Response PlayerOnFireHeavy -} - -Response PlayerOnFireRareHeavy -{ - scene "scenes/Player/Heavy/low/204.vcd" - scene "scenes/Player/Heavy/low/1399.vcd" -} -Rule PlayerOnFireRareHeavy -{ - criteria ConceptFire IsHeavy 10PercentChance HeavyIsNotStillonFire - ApplyContext "HeavyOnFire:1:7" - Response PlayerOnFireRareHeavy -} - -Response PlayerPainHeavy -{ - scene "scenes/Player/Heavy/low/300.vcd" - scene "scenes/Player/Heavy/low/301.vcd" - scene "scenes/Player/Heavy/low/302.vcd" - scene "scenes/Player/Heavy/low/1390.vcd" - scene "scenes/Player/Heavy/low/1391.vcd" -} -Rule PlayerPainHeavy -{ - criteria ConceptPain IsHeavy - Response PlayerPainHeavy -} - -Response PlayerStillOnFireHeavy -{ - scene "scenes/Player/Heavy/low/1925.vcd" -} -Rule PlayerStillOnFireHeavy -{ - criteria ConceptFire IsHeavy HeavyIsStillonFire - ApplyContext "HeavyOnFire:1:7" - Response PlayerStillOnFireHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelHeavy -{ - scene "scenes/Player/Heavy/low/2058.vcd" - scene "scenes/Player/Heavy/low/2061.vcd" - scene "scenes/Player/Heavy/low/205.vcd" - scene "scenes/Player/Heavy/low/1950.vcd" - scene "scenes/Player/Heavy/low/2084.vcd" - scene "scenes/Player/Heavy/low/324.vcd" - scene "scenes/Player/Heavy/low/326.vcd" - scene "scenes/Player/Heavy/low/330.vcd" - scene "scenes/Player/Heavy/low/350.vcd" - scene "scenes/Player/Heavy/low/351.vcd" -} -Rule AcceptedDuelHeavy -{ - criteria ConceptIAcceptDuel IsHeavy - Response AcceptedDuelHeavy -} - -Response MeleeDareHeavy -{ - scene "scenes/Player/Heavy/low/1975.vcd" - scene "scenes/Player/Heavy/low/1977.vcd" - scene "scenes/Player/Heavy/low/2090.vcd" - scene "scenes/Player/Heavy/low/2091.vcd" - scene "scenes/Player/Heavy/low/2119.vcd" - scene "scenes/Player/Heavy/low/2205.vcd" - scene "scenes/Player/Heavy/low/2258.vcd" -} -Rule MeleeDareHeavy -{ - criteria ConceptRequestDuel IsHeavy - Response MeleeDareHeavy -} - -Response RejectedDuelHeavy -{ - scene "scenes/Player/Heavy/low/201.vcd" - scene "scenes/Player/Heavy/low/2074.vcd" - scene "scenes/Player/Heavy/low/2075.vcd" - scene "scenes/Player/Heavy/low/2076.vcd" - scene "scenes/Player/Heavy/low/2077.vcd" - scene "scenes/Player/Heavy/low/2081.vcd" - scene "scenes/Player/Heavy/low/2082.vcd" - scene "scenes/Player/Heavy/low/2103.vcd" - scene "scenes/Player/Heavy/low/258.vcd" - scene "scenes/Player/Heavy/low/327.vcd" -} -Rule RejectedDuelHeavy -{ - criteria ConceptDuelRejected IsHeavy - Response RejectedDuelHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoHeavy -{ - scene "scenes/Player/Heavy/low/231.vcd" - scene "scenes/Player/Heavy/low/232.vcd" - scene "scenes/Player/Heavy/low/233.vcd" -} -Rule PlayerGoHeavy -{ - criteria ConceptPlayerGo IsHeavy - Response PlayerGoHeavy -} - -Response PlayerHeadLeftHeavy -{ - scene "scenes/Player/Heavy/low/237.vcd" - scene "scenes/Player/Heavy/low/238.vcd" - scene "scenes/Player/Heavy/low/239.vcd" -} -Rule PlayerHeadLeftHeavy -{ - criteria ConceptPlayerLeft IsHeavy - Response PlayerHeadLeftHeavy -} - -Response PlayerHeadRightHeavy -{ - scene "scenes/Player/Heavy/low/240.vcd" - scene "scenes/Player/Heavy/low/241.vcd" - scene "scenes/Player/Heavy/low/242.vcd" -} -Rule PlayerHeadRightHeavy -{ - criteria ConceptPlayerRight IsHeavy - Response PlayerHeadRightHeavy -} - -Response PlayerHelpHeavy -{ - scene "scenes/Player/Heavy/low/243.vcd" - scene "scenes/Player/Heavy/low/244.vcd" - scene "scenes/Player/Heavy/low/245.vcd" -} -Rule PlayerHelpHeavy -{ - criteria ConceptPlayerHelp IsHeavy - Response PlayerHelpHeavy -} - -Response PlayerHelpCaptureHeavy -{ - scene "scenes/Player/Heavy/low/246.vcd" - scene "scenes/Player/Heavy/low/247.vcd" - scene "scenes/Player/Heavy/low/248.vcd" -} -Rule PlayerHelpCaptureHeavy -{ - criteria ConceptPlayerHelp IsHeavy IsOnCappableControlPoint - ApplyContext "HeavyHelpCap:1:10" - Response PlayerHelpCaptureHeavy -} - -Response PlayerHelpCapture2Heavy -{ - scene "scenes/Player/Heavy/low/321.vcd" - scene "scenes/Player/Heavy/low/322.vcd" - scene "scenes/Player/Heavy/low/1276.vcd" - scene "scenes/Player/Heavy/low/1277.vcd" -} -Rule PlayerHelpCapture2Heavy -{ - criteria ConceptPlayerHelp IsHeavy IsOnCappableControlPoint IsHelpCapHeavy - Response PlayerHelpCapture2Heavy -} - -Response PlayerHelpDefendHeavy -{ - scene "scenes/Player/Heavy/low/249.vcd" - scene "scenes/Player/Heavy/low/250.vcd" - scene "scenes/Player/Heavy/low/251.vcd" -} -Rule PlayerHelpDefendHeavy -{ - criteria ConceptPlayerHelp IsHeavy IsOnFriendlyControlPoint - Response PlayerHelpDefendHeavy -} - -Response PlayerMedicHeavy -{ - scene "scenes/Player/Heavy/low/274.vcd" - scene "scenes/Player/Heavy/low/275.vcd" - scene "scenes/Player/Heavy/low/276.vcd" -} -Rule PlayerMedicHeavy -{ - criteria ConceptPlayerMedic IsHeavy - Response PlayerMedicHeavy -} - -Response PlayerMoveUpHeavy -{ - scene "scenes/Player/Heavy/low/277.vcd" - scene "scenes/Player/Heavy/low/278.vcd" - scene "scenes/Player/Heavy/low/279.vcd" -} -Rule PlayerMoveUpHeavy -{ - criteria ConceptPlayerMoveUp IsHeavy - Response PlayerMoveUpHeavy -} - -Response PlayerNoHeavy -{ - scene "scenes/Player/Heavy/low/291.vcd" - scene "scenes/Player/Heavy/low/292.vcd" - scene "scenes/Player/Heavy/low/293.vcd" -} -Rule PlayerNoHeavy -{ - criteria ConceptPlayerNo IsHeavy - Response PlayerNoHeavy -} - -Response PlayerThanksHeavy -{ - scene "scenes/Player/Heavy/low/342.vcd" - scene "scenes/Player/Heavy/low/343.vcd" - scene "scenes/Player/Heavy/low/1278.vcd" -} -Rule PlayerThanksHeavy -{ - criteria ConceptPlayerThanks IsHeavy - Response PlayerThanksHeavy -} - -Response PlayerYesHeavy -{ - scene "scenes/Player/Heavy/low/350.vcd" - scene "scenes/Player/Heavy/low/351.vcd" - scene "scenes/Player/Heavy/low/352.vcd" -} -Rule PlayerYesHeavy -{ - criteria ConceptPlayerYes IsHeavy - Response PlayerYesHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeHeavy -{ - scene "scenes/Player/Heavy/low/190.vcd" - scene "scenes/Player/Heavy/low/191.vcd" - scene "scenes/Player/Heavy/low/192.vcd" - scene "scenes/Player/Heavy/low/1261.vcd" -} -Rule PlayerActivateChargeHeavy -{ - criteria ConceptPlayerActivateCharge IsHeavy - Response PlayerActivateChargeHeavy -} - -Response PlayerCloakedSpyHeavy -{ - scene "scenes/Player/Heavy/low/218.vcd" - scene "scenes/Player/Heavy/low/219.vcd" - scene "scenes/Player/Heavy/low/220.vcd" - scene "scenes/Player/Heavy/low/1264.vcd" -} -Rule PlayerCloakedSpyHeavy -{ - criteria ConceptPlayerCloakedSpy IsHeavy - Response PlayerCloakedSpyHeavy -} - -Response PlayerDispenserHereHeavy -{ - scene "scenes/Player/Heavy/low/280.vcd" -} -Rule PlayerDispenserHereHeavy -{ - criteria ConceptPlayerDispenserHere IsHeavy - Response PlayerDispenserHereHeavy -} - -Response PlayerIncomingHeavy -{ - scene "scenes/Player/Heavy/low/252.vcd" - scene "scenes/Player/Heavy/low/253.vcd" - scene "scenes/Player/Heavy/low/254.vcd" -} -Rule PlayerIncomingHeavy -{ - criteria ConceptPlayerIncoming IsHeavy - Response PlayerIncomingHeavy -} - -Response PlayerSentryAheadHeavy -{ - scene "scenes/Player/Heavy/low/308.vcd" - scene "scenes/Player/Heavy/low/309.vcd" -} -Rule PlayerSentryAheadHeavy -{ - criteria ConceptPlayerSentryAhead IsHeavy - Response PlayerSentryAheadHeavy -} - -Response PlayerSentryHereHeavy -{ - scene "scenes/Player/Heavy/low/281.vcd" -} -Rule PlayerSentryHereHeavy -{ - criteria ConceptPlayerSentryHere IsHeavy - Response PlayerSentryHereHeavy -} - -Response PlayerTeleporterHereHeavy -{ - scene "scenes/Player/Heavy/low/282.vcd" -} -Rule PlayerTeleporterHereHeavy -{ - criteria ConceptPlayerTeleporterHere IsHeavy - Response PlayerTeleporterHereHeavy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCryHeavy -{ - scene "scenes/Player/Heavy/low/205.vcd" - scene "scenes/Player/Heavy/low/206.vcd" - scene "scenes/Player/Heavy/low/207.vcd" - scene "scenes/Player/Heavy/low/208.vcd" - scene "scenes/Player/Heavy/low/209.vcd" - scene "scenes/Player/Heavy/low/210.vcd" -} -Rule PlayerBattleCryHeavy -{ - criteria ConceptPlayerBattleCry IsHeavy - Response PlayerBattleCryHeavy -} - -Response PlayerCheersHeavy -{ - scene "scenes/Player/Heavy/low/211.vcd" - scene "scenes/Player/Heavy/low/212.vcd" - scene "scenes/Player/Heavy/low/213.vcd" - scene "scenes/Player/Heavy/low/214.vcd" - scene "scenes/Player/Heavy/low/215.vcd" - scene "scenes/Player/Heavy/low/216.vcd" - scene "scenes/Player/Heavy/low/217.vcd" - scene "scenes/Player/Heavy/low/1263.vcd" -} -Rule PlayerCheersHeavy -{ - criteria ConceptPlayerCheers IsHeavy - Response PlayerCheersHeavy -} - -Response PlayerGoodJobHeavy -{ - scene "scenes/Player/Heavy/low/234.vcd" - scene "scenes/Player/Heavy/low/235.vcd" - scene "scenes/Player/Heavy/low/236.vcd" - scene "scenes/Player/Heavy/low/1265.vcd" -} -Rule PlayerGoodJobHeavy -{ - criteria ConceptPlayerGoodJob IsHeavy - Response PlayerGoodJobHeavy -} - -Response PlayerJeersHeavy -{ - scene "scenes/Player/Heavy/low/258.vcd" - scene "scenes/Player/Heavy/low/259.vcd" - scene "scenes/Player/Heavy/low/260.vcd" - scene "scenes/Player/Heavy/low/261.vcd" - scene "scenes/Player/Heavy/low/262.vcd" - scene "scenes/Player/Heavy/low/263.vcd" - scene "scenes/Player/Heavy/low/264.vcd" - scene "scenes/Player/Heavy/low/265.vcd" - scene "scenes/Player/Heavy/low/266.vcd" -} -Rule PlayerJeersHeavy -{ - criteria ConceptPlayerJeers IsHeavy - Response PlayerJeersHeavy -} - -Response PlayerLostPointHeavy -{ - scene "scenes/Player/Heavy/low/1267.vcd" - scene "scenes/Player/Heavy/low/283.vcd" - scene "scenes/Player/Heavy/low/284.vcd" - scene "scenes/Player/Heavy/low/285.vcd" - scene "scenes/Player/Heavy/low/286.vcd" - scene "scenes/Player/Heavy/low/287.vcd" -} -Rule PlayerLostPointHeavy -{ - criteria ConceptPlayerLostPoint IsHeavy - Response PlayerLostPointHeavy -} - -Response PlayerNegativeHeavy -{ - scene "scenes/Player/Heavy/low/1267.vcd" - scene "scenes/Player/Heavy/low/283.vcd" - scene "scenes/Player/Heavy/low/284.vcd" - scene "scenes/Player/Heavy/low/285.vcd" - scene "scenes/Player/Heavy/low/286.vcd" - scene "scenes/Player/Heavy/low/287.vcd" -} -Rule PlayerNegativeHeavy -{ - criteria ConceptPlayerNegative IsHeavy - Response PlayerNegativeHeavy -} - -Response PlayerNiceShotHeavy -{ - scene "scenes/Player/Heavy/low/288.vcd" - scene "scenes/Player/Heavy/low/289.vcd" - scene "scenes/Player/Heavy/low/290.vcd" -} -Rule PlayerNiceShotHeavy -{ - criteria ConceptPlayerNiceShot IsHeavy - Response PlayerNiceShotHeavy -} - -Response PlayerPositiveHeavy -{ - scene "scenes/Player/Heavy/low/303.vcd" - scene "scenes/Player/Heavy/low/304.vcd" - scene "scenes/Player/Heavy/low/305.vcd" - scene "scenes/Player/Heavy/low/306.vcd" - scene "scenes/Player/Heavy/low/307.vcd" -} -Rule PlayerPositiveHeavy -{ - criteria ConceptPlayerPositive IsHeavy - Response PlayerPositiveHeavy -} - -Response PlayerTauntsHeavy -{ - scene "scenes/Player/Heavy/low/1270.vcd" - scene "scenes/Player/Heavy/low/1271.vcd" - scene "scenes/Player/Heavy/low/1274.vcd" - scene "scenes/Player/Heavy/low/1273.vcd" -} -Rule PlayerTauntsHeavy -{ - criteria ConceptPlayerTaunts IsHeavy - Response PlayerTauntsHeavy -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/heavy_custom.txt b/addon/gamemodes/teamfortress/content/scripts/talker/heavy_custom.txt deleted file mode 100644 index 5c3f05cd7..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/heavy_custom.txt +++ /dev/null @@ -1,14 +0,0 @@ - -criterion "WeaponIsFistsOfSteel" "item_name" "Fists of Steel" "required" weight 10 - -Response KilledPlayerSpecialMeleeHeavy -{ - scene "scenes/Player/Heavy/low/1941.vcd" -} -Rule KilledPlayerSpecialMeleeHeavy -{ - criteria ConceptKilledPlayer KilledPlayerDelay 10PercentChance WeaponIsFistsOfSteel HeavyNotKillSpeechMelee IsHeavy - ApplyContext "HeavyKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerSpecialMeleeHeavy -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/medic.txt b/addon/gamemodes/teamfortress/content/scripts/talker/medic.txt deleted file mode 100644 index 0e68ee49f..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/medic.txt +++ /dev/null @@ -1,847 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Medic Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "MedicIsKillSpeechObject" "MedicKillSpeechObject" "1" "required" weight 0 -Criterion "MedicIsNotStillonFire" "MedicOnFire" "!=1" "required" weight 0 -Criterion "MedicIsStillonFire" "MedicOnFire" "1" "required" weight 0 -Criterion "MedicNotInvulnerableSpeech" "MedicInvulnerableSpeech" "!=1" "required" weight 0 -Criterion "MedicNotKillSpeech" "MedicKillSpeech" "!=1" "required" weight 0 -Criterion "MedicNotKillSpeechMelee" "MedicKillSpeechMelee" "!=1" "required" weight 0 -Criterion "MedicNotSaidHealThanks" "MedicSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapMedic" "MedicHelpCap" "1" "required" weight 0 - - -Response MedicChargeReady -{ - scene "scenes/Player/Medic/low/529.vcd" - scene "scenes/Player/Medic/low/530.vcd" -} -Rule MedicChargeReady -{ - criteria ConceptMedicChargeReady IsMedic - Response MedicChargeReady -} - -Response PlayerCloakedSpyDemomanMedic -{ - scene "scenes/Player/Medic/low/559.vcd" -} -Rule PlayerCloakedSpyDemomanMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnDemoman - Response PlayerCloakedSpyDemomanMedic -} - -Response PlayerCloakedSpyEngineerMedic -{ - scene "scenes/Player/Medic/low/562.vcd" -} -Rule PlayerCloakedSpyEngineerMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnEngineer - Response PlayerCloakedSpyEngineerMedic -} - -Response PlayerCloakedSpyHeavyMedic -{ - scene "scenes/Player/Medic/low/557.vcd" -} -Rule PlayerCloakedSpyHeavyMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnHeavy - Response PlayerCloakedSpyHeavyMedic -} - -Response PlayerCloakedSpyMedicMedic -{ - scene "scenes/Player/Medic/low/561.vcd" -} -Rule PlayerCloakedSpyMedicMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnMedic - Response PlayerCloakedSpyMedicMedic -} - -Response PlayerCloakedSpyPyroMedic -{ - scene "scenes/Player/Medic/low/558.vcd" -} -Rule PlayerCloakedSpyPyroMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnPyro - Response PlayerCloakedSpyPyroMedic -} - -Response PlayerCloakedSpyScoutMedic -{ - scene "scenes/Player/Medic/low/555.vcd" -} -Rule PlayerCloakedSpyScoutMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnScout - Response PlayerCloakedSpyScoutMedic -} - -Response PlayerCloakedSpySniperMedic -{ - scene "scenes/Player/Medic/low/563.vcd" -} -Rule PlayerCloakedSpySniperMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnSniper - Response PlayerCloakedSpySniperMedic -} - -Response PlayerCloakedSpySoldierMedic -{ - scene "scenes/Player/Medic/low/556.vcd" -} -Rule PlayerCloakedSpySoldierMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnSoldier - Response PlayerCloakedSpySoldierMedic -} - -Response PlayerCloakedSpySpyMedic -{ - scene "scenes/Player/Medic/low/560.vcd" -} -Rule PlayerCloakedSpySpyMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic IsOnSpy - Response PlayerCloakedSpySpyMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksMedic -{ - scene "scenes/Player/Medic/low/683.vcd" - scene "scenes/Player/Medic/low/684.vcd" -} -Rule HealThanksMedic -{ - criteria ConceptMedicChargeStopped IsMedic SuperHighHealthContext MedicNotSaidHealThanks 50PercentChance - ApplyContext "MedicSaidHealThanks:1:20" - Response HealThanksMedic -} - -Response PlayerRoundStartMedic -{ - scene "scenes/Player/Medic/low/537.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Medic/low/539.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Medic/low/540.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Medic/low/541.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Medic/low/542.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Medic/low/543.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartMedic -{ - criteria ConceptPlayerRoundStart IsMedic - Response PlayerRoundStartMedic -} - -Response PlayerCappedIntelligenceMedic -{ - scene "scenes/Player/Medic/low/525.vcd" - scene "scenes/Player/Medic/low/526.vcd" - scene "scenes/Player/Medic/low/527.vcd" -} -Rule PlayerCappedIntelligenceMedic -{ - criteria ConceptPlayerCapturedIntelligence IsMedic - Response PlayerCappedIntelligenceMedic -} - -Response PlayerCapturedPointMedic -{ - scene "scenes/Player/Medic/low/522.vcd" - scene "scenes/Player/Medic/low/523.vcd" - scene "scenes/Player/Medic/low/524.vcd" -} -Rule PlayerCapturedPointMedic -{ - criteria ConceptPlayerCapturedPoint IsMedic - Response PlayerCapturedPointMedic -} - -Response PlayerSuddenDeathMedic -{ - scene "scenes/Player/Medic/low/592.vcd" - scene "scenes/Player/Medic/low/593.vcd" - scene "scenes/Player/Medic/low/594.vcd" - scene "scenes/Player/Medic/low/595.vcd" - scene "scenes/Player/Medic/low/596.vcd" - scene "scenes/Player/Medic/low/597.vcd" - scene "scenes/Player/Medic/low/598.vcd" - scene "scenes/Player/Medic/low/599.vcd" - scene "scenes/Player/Medic/low/600.vcd" - scene "scenes/Player/Medic/low/601.vcd" - scene "scenes/Player/Medic/low/603.vcd" - scene "scenes/Player/Medic/low/602.vcd" -} -Rule PlayerSuddenDeathMedic -{ - criteria ConceptPlayerSuddenDeathStart IsMedic - Response PlayerSuddenDeathMedic -} - -Response PlayerStalemateMedic -{ - scene "scenes/Player/Medic/low/531.vcd" - scene "scenes/Player/Medic/low/532.vcd" - scene "scenes/Player/Medic/low/533.vcd" - scene "scenes/Player/Medic/low/1222.vcd" - scene "scenes/Player/Medic/low/1223.vcd" - scene "scenes/Player/Medic/low/1224.vcd" - scene "scenes/Player/Medic/low/1225.vcd" -} -Rule PlayerStalemateMedic -{ - criteria ConceptPlayerStalemate IsMedic - Response PlayerStalemateMedic -} - -Response PlayerTeleporterThanksMedic -{ - scene "scenes/Player/Medic/low/688.vcd" - scene "scenes/Player/Medic/low/686.vcd" - scene "scenes/Player/Medic/low/687.vcd" -} -Rule PlayerTeleporterThanksMedic -{ - criteria ConceptTeleported IsNotEngineer IsMedic 30PercentChance - Response PlayerTeleporterThanksMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointMedic -{ - scene "scenes/Player/Medic/low/659.vcd" - scene "scenes/Player/Medic/low/660.vcd" - scene "scenes/Player/Medic/low/1237.vcd" - scene "scenes/Player/Medic/low/1238.vcd" - scene "scenes/Player/Medic/low/1239.vcd" -} -Rule DefendOnThePointMedic -{ - criteria ConceptFireWeapon IsMedic IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointMedic -} - -Response InvulnerableSpeechMedic -{ - scene "scenes/Player/Medic/low/648.vcd" - scene "scenes/Player/Medic/low/649.vcd" - scene "scenes/Player/Medic/low/650.vcd" -} -Rule InvulnerableSpeechMedic -{ - criteria ConceptMedicChargeDeployed IsMedic IsInvulnerable MedicNotInvulnerableSpeech - ApplyContext "MedicInvulnerableSpeech:1:30" - Response InvulnerableSpeechMedic -} - -Response KilledPlayerManyMedic -{ - scene "scenes/Player/Medic/low/651.vcd" -} -Rule KilledPlayerManyMedic -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay MedicNotKillSpeech IsMedic - ApplyContext "MedicKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManyMedic -} - -Response KilledPlayerMeleeMedic -{ - scene "scenes/Player/Medic/low/645.vcd" -} -Rule KilledPlayerMeleeMedic -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee MedicNotKillSpeechMelee IsMedic - ApplyContext "MedicKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeMedic -} - -Response KilledPlayerVeryManyMedic -{ - scene "scenes/Player/Medic/low/646.vcd" - scene "scenes/Player/Medic/low/655.vcd" - scene "scenes/Player/Medic/low/656.vcd" - scene "scenes/Player/Medic/low/652.vcd" -} -Rule KilledPlayerVeryManyMedic -{ - criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay MedicNotKillSpeech IsMedic - ApplyContext "MedicKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerVeryManyMedic -} - -Response PlayerKilledCapperMedic -{ - scene "scenes/Player/Medic/low/1222.vcd" - scene "scenes/Player/Medic/low/545.vcd" - scene "scenes/Player/Medic/low/551.vcd" - scene "scenes/Player/Medic/low/552.vcd" - scene "scenes/Player/Medic/low/641.vcd" - scene "scenes/Player/Medic/low/674.vcd" -} -Rule PlayerKilledCapperMedic -{ - criteria ConceptCapBlocked IsMedic - ApplyContext "MedicKillSpeech:1:10" - Response PlayerKilledCapperMedic -} - -Response PlayerKilledDominatingMedic -{ - scene "scenes/Player/Medic/low/1227.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/1232.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/605.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/606.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/1229.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/607.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/608.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/1230.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/679.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/1240.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedic -{ - criteria ConceptKilledPlayer IsMedic IsDominated - ApplyContext "MedicKillSpeech:1:10" - Response PlayerKilledDominatingMedic -} - -Response PlayerKilledForRevengeMedic -{ - scene "scenes/Player/Medic/low/569.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/620.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/1233.vcd" predelay "2.5" - scene "scenes/Player/Medic/low/1234.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeMedic -{ - criteria ConceptKilledPlayer IsMedic IsRevenge - ApplyContext "MedicKillSpeech:1:10" - Response PlayerKilledForRevengeMedic -} - -Response PlayerKilledObjectMedic -{ - scene "scenes/Player/Medic/low/653.vcd" - scene "scenes/Player/Medic/low/654.vcd" -} -Rule PlayerKilledObjectMedic -{ - criteria ConceptKilledObject IsMedic 30PercentChance IsARecentKill - ApplyContext "MedicKillSpeechObject:1:30" - applycontexttoworld - Response PlayerKilledObjectMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainMedic -{ - scene "scenes/Player/Medic/low/633.vcd" - scene "scenes/Player/Medic/low/634.vcd" - scene "scenes/Player/Medic/low/635.vcd" - scene "scenes/Player/Medic/low/1243.vcd" -} -Rule PlayerAttackerPainMedic -{ - criteria ConceptAttackerPain IsMedic - Response PlayerAttackerPainMedic -} - -Response PlayerOnFireMedic -{ - scene "scenes/Player/Medic/low/534.vcd" - scene "scenes/Player/Medic/low/535.vcd" - scene "scenes/Player/Medic/low/536.vcd" -} -Rule PlayerOnFireMedic -{ - criteria ConceptFire IsMedic MedicIsNotStillonFire - ApplyContext "MedicOnFire:1:7" - Response PlayerOnFireMedic -} - -Response PlayerOnFireRareMedic -{ - scene "scenes/Player/Medic/low/1401.vcd" - scene "scenes/Player/Medic/low/1402.vcd" -} -Rule PlayerOnFireRareMedic -{ - criteria ConceptFire IsMedic 10PercentChance MedicIsNotStillonFire - ApplyContext "MedicOnFire:1:7" - Response PlayerOnFireRareMedic -} - -Response PlayerPainMedic -{ - scene "scenes/Player/Medic/low/636.vcd" - scene "scenes/Player/Medic/low/637.vcd" - scene "scenes/Player/Medic/low/638.vcd" - scene "scenes/Player/Medic/low/1244.vcd" - scene "scenes/Player/Medic/low/1245.vcd" - scene "scenes/Player/Medic/low/1246.vcd" - scene "scenes/Player/Medic/low/1247.vcd" - scene "scenes/Player/Medic/low/1248.vcd" -} -Rule PlayerPainMedic -{ - criteria ConceptPain IsMedic - Response PlayerPainMedic -} - -Response PlayerStillOnFireMedic -{ - scene "scenes/Player/Medic/low/1924.vcd" -} -Rule PlayerStillOnFireMedic -{ - criteria ConceptFire IsMedic MedicIsStillonFire - ApplyContext "MedicOnFire:1:7" - Response PlayerStillOnFireMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelMedic -{ - scene "scenes/Player/Medic/low/541.vcd" - scene "scenes/Player/Medic/low/640.vcd" - scene "scenes/Player/Medic/low/689.vcd" - scene "scenes/Player/Medic/low/690.vcd" -} -Rule AcceptedDuelMedic -{ - criteria ConceptIAcceptDuel IsMedic - Response AcceptedDuelMedic -} - -Response MeleeDareMedic -{ - scene "scenes/Player/Medic/low/524.vcd" - scene "scenes/Player/Medic/low/597.vcd" - scene "scenes/Player/Medic/low/672.vcd" - scene "scenes/Player/Medic/low/677.vcd" -} -Rule MeleeDareMedic -{ - criteria ConceptRequestDuel IsMedic - Response MeleeDareMedic -} - -Response RejectedDuelMedic -{ - scene "scenes/Player/Medic/low/531.vcd" - scene "scenes/Player/Medic/low/1222.vcd" - scene "scenes/Player/Medic/low/1225.vcd" - scene "scenes/Player/Medic/low/596.vcd" - scene "scenes/Player/Medic/low/678.vcd" -} -Rule RejectedDuelMedic -{ - criteria ConceptDuelRejected IsMedic - Response RejectedDuelMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoMedic -{ - scene "scenes/Player/Medic/low/565.vcd" - scene "scenes/Player/Medic/low/566.vcd" - scene "scenes/Player/Medic/low/567.vcd" - scene "scenes/Player/Medic/low/1226.vcd" - scene "scenes/Player/Medic/low/1596.vcd" -} -Rule PlayerGoMedic -{ - criteria ConceptPlayerGo IsMedic - Response PlayerGoMedic -} - -Response PlayerHeadLeftMedic -{ - scene "scenes/Player/Medic/low/571.vcd" - scene "scenes/Player/Medic/low/572.vcd" - scene "scenes/Player/Medic/low/573.vcd" -} -Rule PlayerHeadLeftMedic -{ - criteria ConceptPlayerLeft IsMedic - Response PlayerHeadLeftMedic -} - -Response PlayerHeadRightMedic -{ - scene "scenes/Player/Medic/low/574.vcd" - scene "scenes/Player/Medic/low/575.vcd" - scene "scenes/Player/Medic/low/576.vcd" -} -Rule PlayerHeadRightMedic -{ - criteria ConceptPlayerRight IsMedic - Response PlayerHeadRightMedic -} - -Response PlayerHelpMedic -{ - scene "scenes/Player/Medic/low/577.vcd" - scene "scenes/Player/Medic/low/578.vcd" - scene "scenes/Player/Medic/low/579.vcd" -} -Rule PlayerHelpMedic -{ - criteria ConceptPlayerHelp IsMedic - Response PlayerHelpMedic -} - -Response PlayerHelpCaptureMedic -{ - scene "scenes/Player/Medic/low/580.vcd" - scene "scenes/Player/Medic/low/581.vcd" -} -Rule PlayerHelpCaptureMedic -{ - criteria ConceptPlayerHelp IsMedic IsOnCappableControlPoint - ApplyContext "MedicHelpCap:1:10" - Response PlayerHelpCaptureMedic -} - -Response PlayerHelpCapture2Medic -{ - scene "scenes/Player/Medic/low/659.vcd" - scene "scenes/Player/Medic/low/660.vcd" - scene "scenes/Player/Medic/low/1237.vcd" - scene "scenes/Player/Medic/low/1238.vcd" - scene "scenes/Player/Medic/low/1239.vcd" -} -Rule PlayerHelpCapture2Medic -{ - criteria ConceptPlayerHelp IsMedic IsOnCappableControlPoint IsHelpCapMedic - Response PlayerHelpCapture2Medic -} - -Response PlayerHelpDefendMedic -{ - scene "scenes/Player/Medic/low/583.vcd" - scene "scenes/Player/Medic/low/584.vcd" - scene "scenes/Player/Medic/low/585.vcd" -} -Rule PlayerHelpDefendMedic -{ - criteria ConceptPlayerHelp IsMedic IsOnFriendlyControlPoint - Response PlayerHelpDefendMedic -} - -Response PlayerMedicMedic -{ - scene "scenes/Player/Medic/low/611.vcd" - scene "scenes/Player/Medic/low/612.vcd" - scene "scenes/Player/Medic/low/613.vcd" -} -Rule PlayerMedicMedic -{ - criteria ConceptPlayerMedic IsMedic - Response PlayerMedicMedic -} - -Response PlayerMoveUpMedic -{ - scene "scenes/Player/Medic/low/614.vcd" - scene "scenes/Player/Medic/low/615.vcd" -} -Rule PlayerMoveUpMedic -{ - criteria ConceptPlayerMoveUp IsMedic - Response PlayerMoveUpMedic -} - -Response PlayerNoMedic -{ - scene "scenes/Player/Medic/low/627.vcd" - scene "scenes/Player/Medic/low/628.vcd" - scene "scenes/Player/Medic/low/629.vcd" -} -Rule PlayerNoMedic -{ - criteria ConceptPlayerNo IsMedic - Response PlayerNoMedic -} - -Response PlayerThanksMedic -{ - scene "scenes/Player/Medic/low/681.vcd" - scene "scenes/Player/Medic/low/682.vcd" -} -Rule PlayerThanksMedic -{ - criteria ConceptPlayerThanks IsMedic - Response PlayerThanksMedic -} - -Response PlayerYesMedic -{ - scene "scenes/Player/Medic/low/689.vcd" - scene "scenes/Player/Medic/low/690.vcd" - scene "scenes/Player/Medic/low/691.vcd" -} -Rule PlayerYesMedic -{ - criteria ConceptPlayerYes IsMedic - Response PlayerYesMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeMedic -{ - scene "scenes/Player/Medic/low/519.vcd" - scene "scenes/Player/Medic/low/520.vcd" - scene "scenes/Player/Medic/low/521.vcd" -} -Rule PlayerActivateChargeMedic -{ - criteria ConceptPlayerActivateCharge IsMedic - Response PlayerActivateChargeMedic -} - -Response PlayerChargeReadyMedic -{ - scene "scenes/Player/Medic/low/529.vcd" - scene "scenes/Player/Medic/low/530.vcd" -} -Rule PlayerChargeReadyMedic -{ - criteria ConceptPlayerChargeReady IsMedic - Response PlayerChargeReadyMedic -} - -Response PlayerCloakedSpyMedic -{ - scene "scenes/Player/Medic/low/553.vcd" - scene "scenes/Player/Medic/low/554.vcd" -} -Rule PlayerCloakedSpyMedic -{ - criteria ConceptPlayerCloakedSpy IsMedic - Response PlayerCloakedSpyMedic -} - -Response PlayerDispenserHereMedic -{ - scene "scenes/Player/Medic/low/616.vcd" -} -Rule PlayerDispenserHereMedic -{ - criteria ConceptPlayerDispenserHere IsMedic - Response PlayerDispenserHereMedic -} - -Response PlayerIncomingMedic -{ - scene "scenes/Player/Medic/low/586.vcd" - scene "scenes/Player/Medic/low/587.vcd" - scene "scenes/Player/Medic/low/588.vcd" -} -Rule PlayerIncomingMedic -{ - criteria ConceptPlayerIncoming IsMedic - Response PlayerIncomingMedic -} - -Response PlayerSentryAheadMedic -{ - scene "scenes/Player/Medic/low/643.vcd" - scene "scenes/Player/Medic/low/644.vcd" -} -Rule PlayerSentryAheadMedic -{ - criteria ConceptPlayerSentryAhead IsMedic - Response PlayerSentryAheadMedic -} - -Response PlayerSentryHereMedic -{ - scene "scenes/Player/Medic/low/617.vcd" -} -Rule PlayerSentryHereMedic -{ - criteria ConceptPlayerSentryHere IsMedic - Response PlayerSentryHereMedic -} - -Response PlayerTeleporterHereMedic -{ - scene "scenes/Player/Medic/low/618.vcd" -} -Rule PlayerTeleporterHereMedic -{ - criteria ConceptPlayerTeleporterHere IsMedic - Response PlayerTeleporterHereMedic -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCryMedic -{ - scene "scenes/Player/Medic/low/537.vcd" - scene "scenes/Player/Medic/low/539.vcd" - scene "scenes/Player/Medic/low/540.vcd" - scene "scenes/Player/Medic/low/541.vcd" - scene "scenes/Player/Medic/low/542.vcd" - scene "scenes/Player/Medic/low/543.vcd" -} -Rule PlayerBattleCryMedic -{ - criteria ConceptPlayerBattleCry IsMedic - Response PlayerBattleCryMedic -} - -Response PlayerCheersMedic -{ - scene "scenes/Player/Medic/low/544.vcd" - scene "scenes/Player/Medic/low/545.vcd" - scene "scenes/Player/Medic/low/548.vcd" - scene "scenes/Player/Medic/low/550.vcd" - scene "scenes/Player/Medic/low/551.vcd" - scene "scenes/Player/Medic/low/552.vcd" -} -Rule PlayerCheersMedic -{ - criteria ConceptPlayerCheers IsMedic - Response PlayerCheersMedic -} - -Response PlayerGoodJobMedic -{ - scene "scenes/Player/Medic/low/568.vcd" - scene "scenes/Player/Medic/low/569.vcd" - scene "scenes/Player/Medic/low/570.vcd" -} -Rule PlayerGoodJobMedic -{ - criteria ConceptPlayerGoodJob IsMedic - Response PlayerGoodJobMedic -} - -Response PlayerJeersMedic -{ - scene "scenes/Player/Medic/low/592.vcd" - scene "scenes/Player/Medic/low/593.vcd" - scene "scenes/Player/Medic/low/594.vcd" - scene "scenes/Player/Medic/low/595.vcd" - scene "scenes/Player/Medic/low/596.vcd" - scene "scenes/Player/Medic/low/597.vcd" - scene "scenes/Player/Medic/low/598.vcd" - scene "scenes/Player/Medic/low/599.vcd" - scene "scenes/Player/Medic/low/600.vcd" - scene "scenes/Player/Medic/low/601.vcd" - scene "scenes/Player/Medic/low/603.vcd" - scene "scenes/Player/Medic/low/602.vcd" -} -Rule PlayerJeersMedic -{ - criteria ConceptPlayerJeers IsMedic - Response PlayerJeersMedic -} - -Response PlayerLostPointMedic -{ - scene "scenes/Player/Medic/low/619.vcd" - scene "scenes/Player/Medic/low/620.vcd" - scene "scenes/Player/Medic/low/621.vcd" - scene "scenes/Player/Medic/low/622.vcd" - scene "scenes/Player/Medic/low/623.vcd" - scene "scenes/Player/Medic/low/1233.vcd" - scene "scenes/Player/Medic/low/1234.vcd" -} -Rule PlayerLostPointMedic -{ - criteria ConceptPlayerLostPoint IsMedic - Response PlayerLostPointMedic -} - -Response PlayerNegativeMedic -{ - scene "scenes/Player/Medic/low/619.vcd" - scene "scenes/Player/Medic/low/620.vcd" - scene "scenes/Player/Medic/low/621.vcd" - scene "scenes/Player/Medic/low/622.vcd" - scene "scenes/Player/Medic/low/623.vcd" - scene "scenes/Player/Medic/low/1233.vcd" - scene "scenes/Player/Medic/low/1234.vcd" -} -Rule PlayerNegativeMedic -{ - criteria ConceptPlayerNegative IsMedic - Response PlayerNegativeMedic -} - -Response PlayerNiceShotMedic -{ - scene "scenes/Player/Medic/low/624.vcd" - scene "scenes/Player/Medic/low/625.vcd" -} -Rule PlayerNiceShotMedic -{ - criteria ConceptPlayerNiceShot IsMedic - Response PlayerNiceShotMedic -} - -Response PlayerPositiveMedic -{ - scene "scenes/Player/Medic/low/639.vcd" - scene "scenes/Player/Medic/low/640.vcd" - scene "scenes/Player/Medic/low/641.vcd" - scene "scenes/Player/Medic/low/1235.vcd" - scene "scenes/Player/Medic/low/1236.vcd" -} -Rule PlayerPositiveMedic -{ - criteria ConceptPlayerPositive IsMedic - Response PlayerPositiveMedic -} - -Response PlayerTauntsMedic -{ - scene "scenes/Player/Medic/low/604.vcd" - scene "scenes/Player/Medic/low/1228.vcd" - scene "scenes/Player/Medic/low/1231.vcd" - scene "scenes/Player/Medic/low/609.vcd" - scene "scenes/Player/Medic/low/610.vcd" -} -Rule PlayerTauntsMedic -{ - criteria ConceptPlayerTaunts IsMedic - Response PlayerTauntsMedic -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/pyro.txt b/addon/gamemodes/teamfortress/content/scripts/talker/pyro.txt deleted file mode 100644 index 52d1d6af5..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/pyro.txt +++ /dev/null @@ -1,645 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Pyro Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "PyroIsNotStillonFire" "PyroOnFire" "!=1" "required" weight 0 -Criterion "PyroIsStillonFire" "PyroOnFire" "1" "required" weight 0 -Criterion "PyroNotKillSpeech" "PyroKillSpeech" "!=1" "required" weight 0 -Criterion "PyroNotKillSpeechMelee" "PyroKillSpeechMelee" "!=1" "required" weight 0 -Criterion "PyroNotSaidHealThanks" "PyroSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapPyro" "PyroHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanPyro -{ - scene "scenes/Player/Pyro/low/1440.vcd" -} -Rule PlayerCloakedSpyDemomanPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnDemoman - Response PlayerCloakedSpyDemomanPyro -} - -Response PlayerCloakedSpyEngineerPyro -{ - scene "scenes/Player/Pyro/low/1446.vcd" -} -Rule PlayerCloakedSpyEngineerPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnEngineer - Response PlayerCloakedSpyEngineerPyro -} - -Response PlayerCloakedSpyHeavyPyro -{ - scene "scenes/Player/Pyro/low/1436.vcd" -} -Rule PlayerCloakedSpyHeavyPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnHeavy - Response PlayerCloakedSpyHeavyPyro -} - -Response PlayerCloakedSpyMedicPyro -{ - scene "scenes/Player/Pyro/low/1444.vcd" -} -Rule PlayerCloakedSpyMedicPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnMedic - Response PlayerCloakedSpyMedicPyro -} - -Response PlayerCloakedSpyPyroPyro -{ - scene "scenes/Player/Pyro/low/1438.vcd" -} -Rule PlayerCloakedSpyPyroPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnPyro - Response PlayerCloakedSpyPyroPyro -} - -Response PlayerCloakedSpyScoutPyro -{ - scene "scenes/Player/Pyro/low/1432.vcd" -} -Rule PlayerCloakedSpyScoutPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnScout - Response PlayerCloakedSpyScoutPyro -} - -Response PlayerCloakedSpySniperPyro -{ - scene "scenes/Player/Pyro/low/1448.vcd" -} -Rule PlayerCloakedSpySniperPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnSniper - Response PlayerCloakedSpySniperPyro -} - -Response PlayerCloakedSpySpyPyro -{ - scene "scenes/Player/Pyro/low/1442.vcd" -} -Rule PlayerCloakedSpySpyPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro IsOnSpy - Response PlayerCloakedSpySpyPyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksPyro -{ - scene "scenes/Player/Pyro/low/1552.vcd" -} -Rule HealThanksPyro -{ - criteria ConceptMedicChargeStopped IsPyro SuperHighHealthContext PyroNotSaidHealThanks 50PercentChance - ApplyContext "PyroSaidHealThanks:1:20" - Response HealThanksPyro -} - -Response PlayerRoundStartPyro -{ - scene "scenes/Player/Pyro/low/1418.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Pyro/low/1419.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartPyro -{ - criteria ConceptPlayerRoundStart IsPyro - Response PlayerRoundStartPyro -} - -Response PlayerCappedIntelligencePyro -{ - scene "scenes/Player/Pyro/low/1409.vcd" -} -Rule PlayerCappedIntelligencePyro -{ - criteria ConceptPlayerCapturedIntelligence IsPyro - Response PlayerCappedIntelligencePyro -} - -Response PlayerCapturedPointPyro -{ - scene "scenes/Player/Pyro/low/1406.vcd" -} -Rule PlayerCapturedPointPyro -{ - criteria ConceptPlayerCapturedPoint IsPyro - Response PlayerCapturedPointPyro -} - -Response PlayerSuddenDeathPyro -{ - scene "scenes/Player/Pyro/low/1476.vcd" - scene "scenes/Player/Pyro/low/1477.vcd" -} -Rule PlayerSuddenDeathPyro -{ - criteria ConceptPlayerSuddenDeathStart IsPyro - Response PlayerSuddenDeathPyro -} - -Response PlayerStalematePyro -{ - scene "scenes/Player/Pyro/low/1412.vcd" -} -Rule PlayerStalematePyro -{ - criteria ConceptPlayerStalemate IsPyro - Response PlayerStalematePyro -} - -Response PlayerTeleporterThanksPyro -{ - scene "scenes/Player/Pyro/low/1555.vcd" -} -Rule PlayerTeleporterThanksPyro -{ - criteria ConceptTeleported IsNotEngineer IsPyro 30PercentChance - Response PlayerTeleporterThanksPyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointPyro -{ - scene "scenes/Player/Pyro/low/1531.vcd" -} -Rule DefendOnThePointPyro -{ - criteria ConceptFireWeapon IsPyro IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointPyro -} - -Response KilledPlayerManyPyro -{ - scene "scenes/Player/Pyro/low/1534.vcd" -} -Rule KilledPlayerManyPyro -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay PyroNotKillSpeech IsPyro - ApplyContext "PyroKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManyPyro -} - -Response KilledPlayerMeleePyro -{ - scene "scenes/Player/Pyro/low/1594.vcd" -} -Rule KilledPlayerMeleePyro -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee PyroNotKillSpeechMelee IsPyro - ApplyContext "PyroKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleePyro -} - -Response PlayerKilledCapperPyro -{ - scene "scenes/Player/Pyro/low/1421.vcd" -} -Rule PlayerKilledCapperPyro -{ - criteria ConceptCapBlocked IsPyro - ApplyContext "PyroKillSpeech:1:10" - Response PlayerKilledCapperPyro -} - -Response PlayerKilledDominatingPyro -{ - scene "scenes/Player/Pyro/low/1450.vcd" predelay "2.5" - scene "scenes/Player/Pyro/low/1482.vcd" predelay "2.5" - scene "scenes/Player/Pyro/low/1483.vcd" predelay "2.5" - scene "scenes/Player/Pyro/low/1485.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyro -{ - criteria ConceptKilledPlayer IsPyro IsDominated - ApplyContext "PyroKillSpeech:1:10" - Response PlayerKilledDominatingPyro -} - -Response PlayerKilledForRevengePyro -{ - scene "scenes/Player/Pyro/low/1403.vcd" predelay "2.5" - scene "scenes/Player/Pyro/low/1418.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengePyro -{ - criteria ConceptKilledPlayer IsPyro IsRevenge - ApplyContext "PyroKillSpeech:1:10" - Response PlayerKilledForRevengePyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainPyro -{ - scene "scenes/Player/Pyro/low/1581.vcd" - scene "scenes/Player/Pyro/low/1582.vcd" - scene "scenes/Player/Pyro/low/1583.vcd" - scene "scenes/Player/Pyro/low/1591.vcd" - scene "scenes/Player/Pyro/low/1592.vcd" - scene "scenes/Player/Pyro/low/1593.vcd" -} -Rule PlayerAttackerPainPyro -{ - criteria ConceptAttackerPain IsPyro - Response PlayerAttackerPainPyro -} - -Response PlayerOnFirePyro -{ - scene "scenes/Player/Pyro/low/1415.vcd" - scene "scenes/Player/Pyro/low/1416.vcd" -} -Rule PlayerOnFirePyro -{ - criteria ConceptFire IsPyro PyroIsNotStillonFire - ApplyContext "PyroOnFire:1:7" - Response PlayerOnFirePyro -} - -Response PlayerPainPyro -{ - scene "scenes/Player/Pyro/low/1584.vcd" - scene "scenes/Player/Pyro/low/1585.vcd" - scene "scenes/Player/Pyro/low/1586.vcd" - scene "scenes/Player/Pyro/low/1587.vcd" - scene "scenes/Player/Pyro/low/1588.vcd" - scene "scenes/Player/Pyro/low/1589.vcd" - scene "scenes/Player/Pyro/low/1590.vcd" -} -Rule PlayerPainPyro -{ - criteria ConceptPain IsPyro - Response PlayerPainPyro -} - -Response PlayerStillOnFirePyro -{ - scene "scenes/Player/Pyro/low/1930.vcd" -} -Rule PlayerStillOnFirePyro -{ - criteria ConceptFire IsPyro PyroIsStillonFire - ApplyContext "PyroOnFire:1:7" - Response PlayerStillOnFirePyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelPyro -{ - scene "scenes/Player/Pyro/low/1415.vcd" - scene "scenes/Player/Pyro/low/1534.vcd" - scene "scenes/Player/Pyro/low/1550.vcd" -} -Rule AcceptedDuelPyro -{ - criteria ConceptIAcceptDuel IsPyro - Response AcceptedDuelPyro -} - -Response MeleeDarePyro -{ - scene "scenes/Player/Pyro/low/1409.vcd" - scene "scenes/Player/Pyro/low/1499.vcd" - scene "scenes/Player/Pyro/low/1529.vcd" - scene "scenes/Player/Pyro/low/1552.vcd" - scene "scenes/Player/Pyro/low/1555.vcd" -} -Rule MeleeDarePyro -{ - criteria ConceptRequestDuel IsPyro - Response MeleeDarePyro -} - -Response RejectedDuelPyro -{ - scene "scenes/Player/Pyro/low/1412.vcd" - scene "scenes/Player/Pyro/low/1419.vcd" - scene "scenes/Player/Pyro/low/1432.vcd" - scene "scenes/Player/Pyro/low/1466.vcd" - scene "scenes/Player/Pyro/low/1469.vcd" -} -Rule RejectedDuelPyro -{ - criteria ConceptDuelRejected IsPyro - Response RejectedDuelPyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoPyro -{ - scene "scenes/Player/Pyro/low/1451.vcd" -} -Rule PlayerGoPyro -{ - criteria ConceptPlayerGo IsPyro - Response PlayerGoPyro -} - -Response PlayerHeadLeftPyro -{ - scene "scenes/Player/Pyro/low/1457.vcd" -} -Rule PlayerHeadLeftPyro -{ - criteria ConceptPlayerLeft IsPyro - Response PlayerHeadLeftPyro -} - -Response PlayerHeadRightPyro -{ - scene "scenes/Player/Pyro/low/1460.vcd" -} -Rule PlayerHeadRightPyro -{ - criteria ConceptPlayerRight IsPyro - Response PlayerHeadRightPyro -} - -Response PlayerHelpPyro -{ - scene "scenes/Player/Pyro/low/1463.vcd" -} -Rule PlayerHelpPyro -{ - criteria ConceptPlayerHelp IsPyro - Response PlayerHelpPyro -} - -Response PlayerHelpCapturePyro -{ - scene "scenes/Player/Pyro/low/1466.vcd" -} -Rule PlayerHelpCapturePyro -{ - criteria ConceptPlayerHelp IsPyro IsOnCappableControlPoint - ApplyContext "PyroHelpCap:1:10" - Response PlayerHelpCapturePyro -} - -Response PlayerHelpCapture2Pyro -{ - scene "scenes/Player/Pyro/low/1531.vcd" -} -Rule PlayerHelpCapture2Pyro -{ - criteria ConceptPlayerHelp IsPyro IsOnCappableControlPoint IsHelpCapPyro - Response PlayerHelpCapture2Pyro -} - -Response PlayerHelpDefendPyro -{ - scene "scenes/Player/Pyro/low/1469.vcd" -} -Rule PlayerHelpDefendPyro -{ - criteria ConceptPlayerHelp IsPyro IsOnFriendlyControlPoint - Response PlayerHelpDefendPyro -} - -Response PlayerMedicPyro -{ - scene "scenes/Player/Pyro/low/1489.vcd" -} -Rule PlayerMedicPyro -{ - criteria ConceptPlayerMedic IsPyro - Response PlayerMedicPyro -} - -Response PlayerMoveUpPyro -{ - scene "scenes/Player/Pyro/low/1492.vcd" -} -Rule PlayerMoveUpPyro -{ - criteria ConceptPlayerMoveUp IsPyro - Response PlayerMoveUpPyro -} - -Response PlayerNoPyro -{ - scene "scenes/Player/Pyro/low/1507.vcd" -} -Rule PlayerNoPyro -{ - criteria ConceptPlayerNo IsPyro - Response PlayerNoPyro -} - -Response PlayerThanksPyro -{ - scene "scenes/Player/Pyro/low/1550.vcd" -} -Rule PlayerThanksPyro -{ - criteria ConceptPlayerThanks IsPyro - Response PlayerThanksPyro -} - -Response PlayerYesPyro -{ - scene "scenes/Player/Pyro/low/1558.vcd" -} -Rule PlayerYesPyro -{ - criteria ConceptPlayerYes IsPyro - Response PlayerYesPyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargePyro -{ - scene "scenes/Player/Pyro/low/1403.vcd" -} -Rule PlayerActivateChargePyro -{ - criteria ConceptPlayerActivateCharge IsPyro - Response PlayerActivateChargePyro -} - -Response PlayerCloakedSpyPyro -{ - scene "scenes/Player/Pyro/low/1429.vcd" -} -Rule PlayerCloakedSpyPyro -{ - criteria ConceptPlayerCloakedSpy IsPyro - Response PlayerCloakedSpyPyro -} - -Response PlayerDispenserHerePyro -{ - scene "scenes/Player/Pyro/low/1493.vcd" -} -Rule PlayerDispenserHerePyro -{ - criteria ConceptPlayerDispenserHere IsPyro - Response PlayerDispenserHerePyro -} - -Response PlayerIncomingPyro -{ - scene "scenes/Player/Pyro/low/1472.vcd" -} -Rule PlayerIncomingPyro -{ - criteria ConceptPlayerIncoming IsPyro - Response PlayerIncomingPyro -} - -Response PlayerSentryAheadPyro -{ - scene "scenes/Player/Pyro/low/1515.vcd" -} -Rule PlayerSentryAheadPyro -{ - criteria ConceptPlayerSentryAhead IsPyro - Response PlayerSentryAheadPyro -} - -Response PlayerSentryHerePyro -{ - scene "scenes/Player/Pyro/low/1495.vcd" -} -Rule PlayerSentryHerePyro -{ - criteria ConceptPlayerSentryHere IsPyro - Response PlayerSentryHerePyro -} - -Response PlayerTeleporterHerePyro -{ - scene "scenes/Player/Pyro/low/1497.vcd" -} -Rule PlayerTeleporterHerePyro -{ - criteria ConceptPlayerTeleporterHere IsPyro - Response PlayerTeleporterHerePyro -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCryPyro -{ - scene "scenes/Player/Pyro/low/1418.vcd" - scene "scenes/Player/Pyro/low/1419.vcd" -} -Rule PlayerBattleCryPyro -{ - criteria ConceptPlayerBattleCry IsPyro - Response PlayerBattleCryPyro -} - -Response PlayerCheersPyro -{ - scene "scenes/Player/Pyro/low/1421.vcd" -} -Rule PlayerCheersPyro -{ - criteria ConceptPlayerCheers IsPyro - Response PlayerCheersPyro -} - -Response PlayerGoodJobPyro -{ - scene "scenes/Player/Pyro/low/1454.vcd" -} -Rule PlayerGoodJobPyro -{ - criteria ConceptPlayerGoodJob IsPyro - Response PlayerGoodJobPyro -} - -Response PlayerJeersPyro -{ - scene "scenes/Player/Pyro/low/1476.vcd" - scene "scenes/Player/Pyro/low/1477.vcd" -} -Rule PlayerJeersPyro -{ - criteria ConceptPlayerJeers IsPyro - Response PlayerJeersPyro -} - -Response PlayerLostPointPyro -{ - scene "scenes/Player/Pyro/low/1499.vcd" -} -Rule PlayerLostPointPyro -{ - criteria ConceptPlayerLostPoint IsPyro - Response PlayerLostPointPyro -} - -Response PlayerNegativePyro -{ - scene "scenes/Player/Pyro/low/1499.vcd" -} -Rule PlayerNegativePyro -{ - criteria ConceptPlayerNegative IsPyro - Response PlayerNegativePyro -} - -Response PlayerNiceShotPyro -{ - scene "scenes/Player/Pyro/low/1504.vcd" -} -Rule PlayerNiceShotPyro -{ - criteria ConceptPlayerNiceShot IsPyro - Response PlayerNiceShotPyro -} - -Response PlayerPositivePyro -{ - scene "scenes/Player/Pyro/low/1510.vcd" -} -Rule PlayerPositivePyro -{ - criteria ConceptPlayerPositive IsPyro - Response PlayerPositivePyro -} - -Response PlayerTauntsPyro -{ - scene "scenes/Player/Pyro/low/1563.vcd" - scene "scenes/Player/Pyro/low/1595.vcd" - scene "scenes/Player/Pyro/low/1487.vcd" -} -Rule PlayerTauntsPyro -{ - criteria ConceptPlayerTaunts IsPyro - Response PlayerTauntsPyro -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/scout.txt b/addon/gamemodes/teamfortress/content/scripts/talker/scout.txt deleted file mode 100644 index 5d94f3dce..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/scout.txt +++ /dev/null @@ -1,1251 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Scout Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "ScoutIsKillSpeechObject" "ScoutKillSpeechObject" "1" "required" weight 0 -Criterion "ScoutIsNotStillonFire" "ScoutOnFire" "!=1" "required" weight 0 -Criterion "ScoutIsStillonFire" "ScoutOnFire" "1" "required" weight 0 -Criterion "ScoutNotKillSpeech" "ScoutKillSpeech" "!=1" "required" weight 0 -Criterion "ScoutNotKillSpeechMelee" "ScoutKillSpeechMelee" "!=1" "required" weight 0 -Criterion "ScoutNotKillSpeechMeleeFat" "ScoutKillSpeechMeleeFat" "!=1" "required" weight 0 -Criterion "ScoutNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" weight 0 -Criterion "ScoutNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" weight 0 -Criterion "ScoutNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" weight 0 -Criterion "ScoutNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" weight 0 -Criterion "ScoutNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" weight 0 -Criterion "ScoutNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" weight 0 -Criterion "ScoutNotSaidHealThanks" "ScoutSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapScout" "ScoutHelpCap" "1" "required" weight 0 -Criterion "NotSaidScoutHitBallSpeech" "ScoutHitBallSpeech" "!=1" "required" -Criterion "NotScoutGrabbedIntelligence" "ScoutGrabbedIntelligence" "!=1" "required" -Criterion "ScoutIsNotInvuln" "ScoutInvuln" "!=1" "required" - - -Response PlayerCloakedSpyDemomanScout -{ - scene "scenes/Player/Scout/low/386.vcd" -} -Rule PlayerCloakedSpyDemomanScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnDemoman - Response PlayerCloakedSpyDemomanScout -} - -Response PlayerCloakedSpyEngineerScout -{ - scene "scenes/Player/Scout/low/389.vcd" -} -Rule PlayerCloakedSpyEngineerScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnEngineer - Response PlayerCloakedSpyEngineerScout -} - -Response PlayerCloakedSpyHeavyScout -{ - scene "scenes/Player/Scout/low/384.vcd" -} -Rule PlayerCloakedSpyHeavyScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnHeavy - Response PlayerCloakedSpyHeavyScout -} - -Response PlayerCloakedSpyMedicScout -{ - scene "scenes/Player/Scout/low/388.vcd" -} -Rule PlayerCloakedSpyMedicScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnMedic - Response PlayerCloakedSpyMedicScout -} - -Response PlayerCloakedSpyPyroScout -{ - scene "scenes/Player/Scout/low/385.vcd" -} -Rule PlayerCloakedSpyPyroScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnPyro - Response PlayerCloakedSpyPyroScout -} - -Response PlayerCloakedSpyScoutScout -{ - scene "scenes/Player/Scout/low/382.vcd" -} -Rule PlayerCloakedSpyScoutScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnScout - Response PlayerCloakedSpyScoutScout -} - -Response PlayerCloakedSpySniperScout -{ - scene "scenes/Player/Scout/low/390.vcd" -} -Rule PlayerCloakedSpySniperScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnSniper - Response PlayerCloakedSpySniperScout -} - -Response PlayerCloakedSpySoldierScout -{ - scene "scenes/Player/Scout/low/383.vcd" -} -Rule PlayerCloakedSpySoldierScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnSoldier - Response PlayerCloakedSpySoldierScout -} - -Response PlayerCloakedSpySpyScout -{ - scene "scenes/Player/Scout/low/387.vcd" -} -Rule PlayerCloakedSpySpyScout -{ - criteria ConceptPlayerCloakedSpy IsScout IsOnSpy - Response PlayerCloakedSpySpyScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksScout -{ - scene "scenes/Player/Scout/low/510.vcd" - scene "scenes/Player/Scout/low/511.vcd" - scene "scenes/Player/Scout/low/512.vcd" -} -Rule HealThanksScout -{ - criteria ConceptMedicChargeStopped IsScout SuperHighHealthContext ScoutNotSaidHealThanks 50PercentChance - ApplyContext "ScoutSaidHealThanks:1:20" - Response HealThanksScout -} - -Response PlayerRoundStartScout -{ - scene "scenes/Player/Scout/low/367.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Scout/low/369.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Scout/low/370.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Scout/low/371.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Scout/low/368.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartScout -{ - criteria ConceptPlayerRoundStart IsScout - Response PlayerRoundStartScout -} - -Response PlayerCappedIntelligenceScout -{ - scene "scenes/Player/Scout/low/359.vcd" - scene "scenes/Player/Scout/low/360.vcd" - scene "scenes/Player/Scout/low/361.vcd" - scene "scenes/Player/Scout/low/1289.vcd" -} -Rule PlayerCappedIntelligenceScout -{ - criteria ConceptPlayerCapturedIntelligence IsScout - Response PlayerCappedIntelligenceScout -} - -Response PlayerCapturedPointScout -{ - scene "scenes/Player/Scout/low/356.vcd" - scene "scenes/Player/Scout/low/1280.vcd" - scene "scenes/Player/Scout/low/357.vcd" - scene "scenes/Player/Scout/low/358.vcd" -} -Rule PlayerCapturedPointScout -{ - criteria ConceptPlayerCapturedPoint IsScout - Response PlayerCapturedPointScout -} - -Response PlayerGrabbedIntelligenceScout -{ - scene "scenes/Player/Scout/low/480.vcd" -} -Rule PlayerGrabbedIntelligenceScout -{ - criteria ConceptPlayerGrabbedIntelligence IsScout NotScoutGrabbedIntelligence 10PercentChance - ApplyContext "ScoutGrabbedIntelligence:1:30" - Response PlayerGrabbedIntelligenceScout -} - -Response PlayerSuddenDeathScout -{ - scene "scenes/Player/Scout/low/419.vcd" - scene "scenes/Player/Scout/low/420.vcd" - scene "scenes/Player/Scout/low/421.vcd" - scene "scenes/Player/Scout/low/422.vcd" - scene "scenes/Player/Scout/low/423.vcd" - scene "scenes/Player/Scout/low/424.vcd" - scene "scenes/Player/Scout/low/425.vcd" - scene "scenes/Player/Scout/low/426.vcd" - scene "scenes/Player/Scout/low/427.vcd" - scene "scenes/Player/Scout/low/428.vcd" - scene "scenes/Player/Scout/low/430.vcd" -} -Rule PlayerSuddenDeathScout -{ - criteria ConceptPlayerSuddenDeathStart IsScout - Response PlayerSuddenDeathScout -} - -Response PlayerStalemateScout -{ - scene "scenes/Player/Scout/low/362.vcd" - scene "scenes/Player/Scout/low/1281.vcd" - scene "scenes/Player/Scout/low/363.vcd" - scene "scenes/Player/Scout/low/364.vcd" -} -Rule PlayerStalemateScout -{ - criteria ConceptPlayerStalemate IsScout - Response PlayerStalemateScout -} - -Response PlayerTeleporterThanksScout -{ - scene "scenes/Player/Scout/low/513.vcd" - scene "scenes/Player/Scout/low/514.vcd" - scene "scenes/Player/Scout/low/515.vcd" -} -Rule PlayerTeleporterThanksScout -{ - criteria ConceptTeleported IsNotEngineer IsScout 30PercentChance - Response PlayerTeleporterThanksScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Cart -//-------------------------------------------------------------------------------------------------------------- -Response CartMovingBackwardsDefenseScout -{ - scene "scenes/Player/Scout/low/2513.vcd" - scene "scenes/Player/Scout/low/2514.vcd" - scene "scenes/Player/Scout/low/2512.vcd" - scene "scenes/Player/Scout/low/2515.vcd" - scene "scenes/Player/Scout/low/2516.vcd" - scene "scenes/Player/Scout/low/2517.vcd" -} -Rule CartMovingBackwardsDefenseScout -{ - criteria ConceptCartMovingBackward IsOnDefense IsScout ScoutNotSaidCartMovingBackwardD - ApplyContext "SaidCartMovingBackwardD:1:20" - Response CartMovingBackwardsDefenseScout -} - -Response CartMovingBackwardsOffenseScout -{ - scene "scenes/Player/Scout/low/2518.vcd" - scene "scenes/Player/Scout/low/2519.vcd" - scene "scenes/Player/Scout/low/2520.vcd" - scene "scenes/Player/Scout/low/2522.vcd" - scene "scenes/Player/Scout/low/2524.vcd" - scene "scenes/Player/Scout/low/2709.vcd" - scene "scenes/Player/Scout/low/2521.vcd" - scene "scenes/Player/Scout/low/2523.vcd" -} -Rule CartMovingBackwardsOffenseScout -{ - criteria ConceptCartMovingBackward IsOnOffense IsScout ScoutNotSaidCartMovingBackwardO - ApplyContext "SaidCartMovingBackwardO:1:20" - Response CartMovingBackwardsOffenseScout -} - -Response CartMovingForwardDefenseScout -{ - scene "scenes/Player/Scout/low/2525.vcd" - scene "scenes/Player/Scout/low/2526.vcd" - scene "scenes/Player/Scout/low/2527.vcd" - scene "scenes/Player/Scout/low/2528.vcd" - scene "scenes/Player/Scout/low/2529.vcd" - scene "scenes/Player/Scout/low/2530.vcd" -} -Rule CartMovingForwardDefenseScout -{ - criteria ConceptCartMovingForward IsOnDefense IsScout ScoutNotSaidCartMovingForwardD - ApplyContext "SaidCartMovingForwardD:1:20" - Response CartMovingForwardDefenseScout -} - -Response CartMovingForwardOffenseScout -{ - scene "scenes/Player/Scout/low/2532.vcd" - scene "scenes/Player/Scout/low/2533.vcd" - scene "scenes/Player/Scout/low/2534.vcd" - scene "scenes/Player/Scout/low/2535.vcd" - scene "scenes/Player/Scout/low/2537.vcd" - scene "scenes/Player/Scout/low/2536.vcd" - scene "scenes/Player/Scout/low/2538.vcd" - scene "scenes/Player/Scout/low/2540.vcd" - scene "scenes/Player/Scout/low/2541.vcd" - scene "scenes/Player/Scout/low/2539.vcd" - scene "scenes/Player/Scout/low/2542.vcd" - scene "scenes/Player/Scout/low/2543.vcd" -} -Rule CartMovingForwardOffenseScout -{ - criteria ConceptCartMovingForward IsOnOffense IsScout ScoutNotSaidCartMovingForwardO - ApplyContext "SaidCartMovingForwardO:1:20" - Response CartMovingForwardOffenseScout -} - -Response CartMovingStoppedDefenseScout -{ - scene "scenes/Player/Scout/low/2544.vcd" - scene "scenes/Player/Scout/low/2545.vcd" - scene "scenes/Player/Scout/low/2546.vcd" -} -Rule CartMovingStoppedDefenseScout -{ - criteria ConceptCartMovingStopped IsOnDefense IsScout ScoutNotSaidCartMovingStoppedD - ApplyContext "SaidCartMovingStoppedD:1:20" - Response CartMovingStoppedDefenseScout -} - -Response CartMovingStoppedOffenseScout -{ - scene "scenes/Player/Scout/low/2548.vcd" - scene "scenes/Player/Scout/low/2549.vcd" - scene "scenes/Player/Scout/low/2550.vcd" -} -Rule CartMovingStoppedOffenseScout -{ - criteria ConceptCartMovingStopped IsOnOffense IsScout ScoutNotSaidCartMovingStoppedO - ApplyContext "SaidCartMovingStoppedO:1:20" - Response CartMovingStoppedOffenseScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointScout -{ - scene "scenes/Player/Scout/low/489.vcd" - scene "scenes/Player/Scout/low/1305.vcd" -} -Rule DefendOnThePointScout -{ - criteria ConceptFireWeapon IsScout IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointScout -} - -Response KilledPlayerManyScout -{ - scene "scenes/Player/Scout/low/396.vcd" - scene "scenes/Player/Scout/low/1297.vcd" - scene "scenes/Player/Scout/low/432.vcd" - scene "scenes/Player/Scout/low/433.vcd" - scene "scenes/Player/Scout/low/1295.vcd" - scene "scenes/Player/Scout/low/1296.vcd" - scene "scenes/Player/Scout/low/434.vcd" - scene "scenes/Player/Scout/low/435.vcd" - scene "scenes/Player/Scout/low/493.vcd" - scene "scenes/Player/Scout/low/506.vcd" -} -Rule KilledPlayerManyScout -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay ScoutNotKillSpeech IsScout - ApplyContext "ScoutKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManyScout -} - -Response KilledPlayerMeleeScout -{ - scene "scenes/Player/Scout/low/476.vcd" - scene "scenes/Player/Scout/low/477.vcd" - scene "scenes/Player/Scout/low/479.vcd" - scene "scenes/Player/Scout/low/482.vcd" - scene "scenes/Player/Scout/low/481.vcd" - scene "scenes/Player/Scout/low/483.vcd" - scene "scenes/Player/Scout/low/484.vcd" - scene "scenes/Player/Scout/low/498.vcd" - scene "scenes/Player/Scout/low/501.vcd" -} -Rule KilledPlayerMeleeScout -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee ScoutNotKillSpeechMelee IsScout - ApplyContext "ScoutKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeScout -} - -Response KilledPlayerMeleeScoutFatScout -{ - scene "scenes/Player/Scout/low/475.vcd" -} -Rule KilledPlayerMeleeScoutFatScout -{ - criteria ConceptKilledPlayer KilledPlayerDelay 75PercentChance IsWeaponMelee ScoutNotKillSpeechMeleeFat IsScout IsVictimHeavy - ApplyContext "ScoutKillSpeechMeleeFat:1:10" - applycontexttoworld - Response KilledPlayerMeleeScoutFatScout -} - -Response MedicFollowScout -{ - scene "scenes/Player/Scout/low/2574.vcd" predelay ".25" - scene "scenes/Player/Scout/low/2575.vcd" predelay ".25" - scene "scenes/Player/Scout/low/2577.vcd" predelay ".25" - scene "scenes/Player/Scout/low/2578.vcd" predelay ".25" -} -Rule MedicFollowScout -{ - criteria ConceptPlayerMedic IsOnMedic IsScout IsNotCrossHairEnemy - ApplyContext "ScoutKillSpeech:1:10" - Response MedicFollowScout -} - -Response PlayerBeingShotInvincibleScout -{ - scene "scenes/Player/Scout/low/2632.vcd" - scene "scenes/Player/Scout/low/2631.vcd" - scene "scenes/Player/Scout/low/2636.vcd" - scene "scenes/Player/Scout/low/2629.vcd" - scene "scenes/Player/Scout/low/2690.vcd" - scene "scenes/Player/Scout/low/2638.vcd" - scene "scenes/Player/Scout/low/2630.vcd" - scene "scenes/Player/Scout/low/2634.vcd" - scene "scenes/Player/Scout/low/2635.vcd" - scene "scenes/Player/Scout/low/2637.vcd" - scene "scenes/Player/Scout/low/2737.vcd" - scene "scenes/Player/Scout/low/2738.vcd" - scene "scenes/Player/Scout/low/2739.vcd" - scene "scenes/Player/Scout/low/2740.vcd" - scene "scenes/Player/Scout/low/2741.vcd" - scene "scenes/Player/Scout/low/2742.vcd" - scene "scenes/Player/Scout/low/2743.vcd" - scene "scenes/Player/Scout/low/2744.vcd" - scene "scenes/Player/Scout/low/2745.vcd" - scene "scenes/Player/Scout/low/2746.vcd" - scene "scenes/Player/Scout/low/2747.vcd" - scene "scenes/Player/Scout/low/2748.vcd" - scene "scenes/Player/Scout/low/2749.vcd" - scene "scenes/Player/Scout/low/2750.vcd" - scene "scenes/Player/Scout/low/2751.vcd" - scene "scenes/Player/Scout/low/2752.vcd" - scene "scenes/Player/Scout/low/2753.vcd" - scene "scenes/Player/Scout/low/2754.vcd" - scene "scenes/Player/Scout/low/2755.vcd" - scene "scenes/Player/Scout/low/2756.vcd" - scene "scenes/Player/Scout/low/2757.vcd" - scene "scenes/Player/Scout/low/2758.vcd" - scene "scenes/Player/Scout/low/2759.vcd" - scene "scenes/Player/Scout/low/2760.vcd" - scene "scenes/Player/Scout/low/2761.vcd" - scene "scenes/Player/Scout/low/2762.vcd" - scene "scenes/Player/Scout/low/2728.vcd" - scene "scenes/Player/Scout/low/2771.vcd" -} -Rule PlayerBeingShotInvincibleScout -{ - criteria ConceptDodgeShot IsScout - Response PlayerBeingShotInvincibleScout -} - -Response PlayerDodgingScout -{ - scene "scenes/Player/Scout/low/2505.vcd" predelay "2,3" - scene "scenes/Player/Scout/low/2615.vcd" predelay "2,3" - scene "scenes/Player/Scout/low/2616.vcd" predelay "2,3" - scene "scenes/Player/Scout/low/2628.vcd" predelay "2,3" - scene "scenes/Player/Scout/low/2621.vcd" predelay "2,3" -} -Rule PlayerDodgingScout -{ - criteria ConceptDodging IsScout ScoutIsNotInvuln - ApplyContext "ScoutInvuln:1:20" - Response PlayerDodgingScout -} - -Response PlayerDoubleJumpScout -{ - scene "scenes/Player/Scout/low/2608.vcd" - scene "scenes/Player/Scout/low/2610.vcd" - scene "scenes/Player/Scout/low/2609.vcd" - scene "scenes/Player/Scout/low/2611.vcd" -} -Rule PlayerDoubleJumpScout -{ - criteria ConceptFireWeapon IsScout IsDoubleJumping WeaponIsScattergunDouble 20PercentChance - Response PlayerDoubleJumpScout -} - -Response PlayerKilledCapperScout -{ - scene "scenes/Player/Scout/low/359.vcd" - scene "scenes/Player/Scout/low/372.vcd" - scene "scenes/Player/Scout/low/373.vcd" - scene "scenes/Player/Scout/low/454.vcd" - scene "scenes/Player/Scout/low/488.vcd" - scene "scenes/Player/Scout/low/491.vcd" - scene "scenes/Player/Scout/low/499.vcd" - scene "scenes/Player/Scout/low/1308.vcd" -} -Rule PlayerKilledCapperScout -{ - criteria ConceptCapBlocked IsScout - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledCapperScout -} - -Response PlayerKilledDominatingDemomanScout -{ - scene "scenes/Player/Scout/low/2763.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2649.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2564.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2565.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2679.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2680.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2678.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemomanScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimDemoman - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingDemomanScout -} - -Response PlayerKilledDominatingEngineerScout -{ - scene "scenes/Player/Scout/low/2766.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2556.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2675.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2676.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2677.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2710.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2711.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingEngineerScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimEngineer - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingEngineerScout -} - -Response PlayerKilledDominatingHeavyScout -{ - scene "scenes/Player/Scout/low/2553.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2646.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2647.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2557.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2558.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2655.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2656.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2657.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2659.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2660.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2693.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2712.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2713.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2642.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2643.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavyScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimHeavy - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingHeavyScout -} - -Response PlayerKilledDominatingMedicScout -{ - scene "scenes/Player/Scout/low/2764.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2765.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2714.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2715.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2716.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2736.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2665.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2559.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2641.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedicScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimMedic - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingMedicScout -} - -Response PlayerKilledDominatingPyroScout -{ - scene "scenes/Player/Scout/low/2644.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2560.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2673.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2674.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2725.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2726.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2718.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyroScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimPyro - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingPyroScout -} - -Response PlayerKilledDominatingScoutScout -{ - scene "scenes/Player/Scout/low/2555.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2645.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2691.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2719.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2554.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2654.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2768.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2566.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2666.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2667.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingScoutScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimScout - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingScoutScout -} - -Response PlayerKilledDominatingSniperScout -{ - scene "scenes/Player/Scout/low/2686.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2567.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2668.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2672.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2769.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2770.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSniperScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimSniper - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingSniperScout -} - -Response PlayerKilledDominatingSoldierScout -{ - scene "scenes/Player/Scout/low/2562.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2669.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2670.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2671.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2720.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2721.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldierScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimSoldier - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingSoldierScout -} - -Response PlayerKilledDominatingSpyScout -{ - scene "scenes/Player/Scout/low/2682.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2552.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2563.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2661.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2662.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2663.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSpyScout -{ - criteria ConceptKilledPlayer IsScout IsDominated IsVictimSpy - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledDominatingSpyScout -} - -Response PlayerKilledForRevengeScout -{ - scene "scenes/Player/Scout/low/2681.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/374.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2641.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2706.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/453.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2586.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2587.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2588.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2589.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2590.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2591.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2592.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2593.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/2594.vcd" predelay "2.5" - scene "scenes/Player/Scout/low/486.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeScout -{ - criteria ConceptKilledPlayer IsScout IsRevenge - ApplyContext "ScoutKillSpeech:1:10" - Response PlayerKilledForRevengeScout -} - -Response PlayerKilledObjectScout -{ - scene "scenes/Player/Scout/low/485.vcd" -} -Rule PlayerKilledObjectScout -{ - criteria ConceptKilledObject IsScout 30PercentChance IsARecentKill - ApplyContext "ScoutKillSpeechObject:1:30" - applycontexttoworld - Response PlayerKilledObjectScout -} - -Response PlayerStunBallHitScout -{ - scene "scenes/Player/Scout/low/2767.vcd" - scene "scenes/Player/Scout/low/2597.vcd" - scene "scenes/Player/Scout/low/2598.vcd" - scene "scenes/Player/Scout/low/2599.vcd" - scene "scenes/Player/Scout/low/2600.vcd" - scene "scenes/Player/Scout/low/2601.vcd" - scene "scenes/Player/Scout/low/2602.vcd" - scene "scenes/Player/Scout/low/2684.vcd" - scene "scenes/Player/Scout/low/2694.vcd" - scene "scenes/Player/Scout/low/2695.vcd" - scene "scenes/Player/Scout/low/2700.vcd" - scene "scenes/Player/Scout/low/2702.vcd" - scene "scenes/Player/Scout/low/2705.vcd" - scene "scenes/Player/Scout/low/2707.vcd" - scene "scenes/Player/Scout/low/2697.vcd" - scene "scenes/Player/Scout/low/2701.vcd" -} -Rule PlayerStunBallHitScout -{ - criteria ConceptStunnedTarget IsScout NotSaidScoutHitBallSpeech 50PercentChance - Response PlayerStunBallHitScout -} - -Response PlayerStunBallHittingItScout -{ - scene "scenes/Player/Scout/low/2606.vcd" - scene "scenes/Player/Scout/low/2604.vcd" - scene "scenes/Player/Scout/low/2651.vcd" - scene "scenes/Player/Scout/low/2703.vcd" -} -Rule PlayerStunBallHittingItScout -{ - criteria ConceptFireWeapon IsScout WeaponIsWoodBat 10PercentChance - ApplyContext "ScoutHitBallSpeech:1:10" - Response PlayerStunBallHittingItScout -} - -Response PlayerStunBallPickUpScout -{ - scene "scenes/Player/Scout/low/2722.vcd" - scene "scenes/Player/Scout/low/2723.vcd" - scene "scenes/Player/Scout/low/2724.vcd" - scene "scenes/Player/Scout/low/2772.vcd" - scene "scenes/Player/Scout/low/2773.vcd" -} -Rule PlayerStunBallPickUpScout -{ - criteria ConceptScoutBallGrab IsScout IsARecentKill 50PercentChance - Response PlayerStunBallPickUpScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainScout -{ - scene "scenes/Player/Scout/low/461.vcd" - scene "scenes/Player/Scout/low/462.vcd" - scene "scenes/Player/Scout/low/463.vcd" - scene "scenes/Player/Scout/low/1361.vcd" - scene "scenes/Player/Scout/low/1362.vcd" - scene "scenes/Player/Scout/low/1363.vcd" -} -Rule PlayerAttackerPainScout -{ - criteria ConceptAttackerPain IsScout - Response PlayerAttackerPainScout -} - -Response PlayerOnFireScout -{ - scene "scenes/Player/Scout/low/365.vcd" -} -Rule PlayerOnFireScout -{ - criteria ConceptFire IsScout ScoutIsNotStillonFire - ApplyContext "ScoutOnFire:1:7" - Response PlayerOnFireScout -} - -Response PlayerOnFireRareScout -{ - scene "scenes/Player/Scout/low/366.vcd" -} -Rule PlayerOnFireRareScout -{ - criteria ConceptFire IsScout 10PercentChance ScoutIsNotStillonFire - ApplyContext "ScoutOnFire:1:7" - Response PlayerOnFireRareScout -} - -Response PlayerPainScout -{ - scene "scenes/Player/Scout/low/464.vcd" - scene "scenes/Player/Scout/low/465.vcd" - scene "scenes/Player/Scout/low/466.vcd" - scene "scenes/Player/Scout/low/1364.vcd" - scene "scenes/Player/Scout/low/1365.vcd" - scene "scenes/Player/Scout/low/1366.vcd" - scene "scenes/Player/Scout/low/1367.vcd" - scene "scenes/Player/Scout/low/1368.vcd" -} -Rule PlayerPainScout -{ - criteria ConceptPain IsScout - Response PlayerPainScout -} - -Response PlayerStillOnFireScout -{ - scene "scenes/Player/Scout/low/1932.vcd" -} -Rule PlayerStillOnFireScout -{ - criteria ConceptFire IsScout ScoutIsStillonFire - ApplyContext "ScoutOnFire:1:7" - Response PlayerStillOnFireScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelScout -{ - scene "scenes/Player/Scout/low/377.vcd" - scene "scenes/Player/Scout/low/491.vcd" - scene "scenes/Player/Scout/low/494.vcd" - scene "scenes/Player/Scout/low/496.vcd" - scene "scenes/Player/Scout/low/516.vcd" -} -Rule AcceptedDuelScout -{ - criteria ConceptIAcceptDuel IsScout - Response AcceptedDuelScout -} - -Response MeleeDareScout -{ - scene "scenes/Player/Scout/low/2579.vcd" - scene "scenes/Player/Scout/low/2580.vcd" - scene "scenes/Player/Scout/low/2582.vcd" - scene "scenes/Player/Scout/low/2583.vcd" - scene "scenes/Player/Scout/low/2581.vcd" -} -Rule MeleeDareScout -{ - criteria ConceptRequestDuel IsScout - Response MeleeDareScout -} - -Response RejectedDuelScout -{ - scene "scenes/Player/Scout/low/362.vcd" - scene "scenes/Player/Scout/low/1281.vcd" - scene "scenes/Player/Scout/low/363.vcd" - scene "scenes/Player/Scout/low/364.vcd" - scene "scenes/Player/Scout/low/2554.vcd" - scene "scenes/Player/Scout/low/2768.vcd" - scene "scenes/Player/Scout/low/419.vcd" - scene "scenes/Player/Scout/low/421.vcd" - scene "scenes/Player/Scout/low/2706.vcd" -} -Rule RejectedDuelScout -{ - criteria ConceptDuelRejected IsScout - Response RejectedDuelScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoScout -{ - scene "scenes/Player/Scout/low/393.vcd" - scene "scenes/Player/Scout/low/1286.vcd" - scene "scenes/Player/Scout/low/392.vcd" - scene "scenes/Player/Scout/low/394.vcd" -} -Rule PlayerGoScout -{ - criteria ConceptPlayerGo IsScout - Response PlayerGoScout -} - -Response PlayerHeadLeftScout -{ - scene "scenes/Player/Scout/low/398.vcd" - scene "scenes/Player/Scout/low/399.vcd" - scene "scenes/Player/Scout/low/400.vcd" -} -Rule PlayerHeadLeftScout -{ - criteria ConceptPlayerLeft IsScout - Response PlayerHeadLeftScout -} - -Response PlayerHeadRightScout -{ - scene "scenes/Player/Scout/low/401.vcd" - scene "scenes/Player/Scout/low/402.vcd" - scene "scenes/Player/Scout/low/403.vcd" -} -Rule PlayerHeadRightScout -{ - criteria ConceptPlayerRight IsScout - Response PlayerHeadRightScout -} - -Response PlayerHelpScout -{ - scene "scenes/Player/Scout/low/404.vcd" - scene "scenes/Player/Scout/low/1290.vcd" - scene "scenes/Player/Scout/low/405.vcd" - scene "scenes/Player/Scout/low/406.vcd" -} -Rule PlayerHelpScout -{ - criteria ConceptPlayerHelp IsScout - Response PlayerHelpScout -} - -Response PlayerHelpCaptureScout -{ - scene "scenes/Player/Scout/low/407.vcd" - scene "scenes/Player/Scout/low/408.vcd" - scene "scenes/Player/Scout/low/409.vcd" -} -Rule PlayerHelpCaptureScout -{ - criteria ConceptPlayerHelp IsScout IsOnCappableControlPoint - ApplyContext "ScoutHelpCap:1:10" - Response PlayerHelpCaptureScout -} - -Response PlayerHelpCapture2Scout -{ - scene "scenes/Player/Scout/low/2568.vcd" - scene "scenes/Player/Scout/low/2569.vcd" - scene "scenes/Player/Scout/low/2570.vcd" - scene "scenes/Player/Scout/low/2572.vcd" - scene "scenes/Player/Scout/low/489.vcd" - scene "scenes/Player/Scout/low/1304.vcd" - scene "scenes/Player/Scout/low/1305.vcd" - scene "scenes/Player/Scout/low/1306.vcd" - scene "scenes/Player/Scout/low/1307.vcd" -} -Rule PlayerHelpCapture2Scout -{ - criteria ConceptPlayerHelp IsScout IsOnCappableControlPoint IsHelpCapScout - Response PlayerHelpCapture2Scout -} - -Response PlayerHelpDefendScout -{ - scene "scenes/Player/Scout/low/410.vcd" - scene "scenes/Player/Scout/low/411.vcd" - scene "scenes/Player/Scout/low/412.vcd" -} -Rule PlayerHelpDefendScout -{ - criteria ConceptPlayerHelp IsScout IsOnFriendlyControlPoint - Response PlayerHelpDefendScout -} - -Response PlayerMedicScout -{ - scene "scenes/Player/Scout/low/438.vcd" - scene "scenes/Player/Scout/low/439.vcd" - scene "scenes/Player/Scout/low/440.vcd" -} -Rule PlayerMedicScout -{ - criteria ConceptPlayerMedic IsScout - Response PlayerMedicScout -} - -Response PlayerMoveUpScout -{ - scene "scenes/Player/Scout/low/441.vcd" - scene "scenes/Player/Scout/low/442.vcd" - scene "scenes/Player/Scout/low/443.vcd" -} -Rule PlayerMoveUpScout -{ - criteria ConceptPlayerMoveUp IsScout - Response PlayerMoveUpScout -} - -Response PlayerNoScout -{ - scene "scenes/Player/Scout/low/455.vcd" - scene "scenes/Player/Scout/low/456.vcd" - scene "scenes/Player/Scout/low/457.vcd" -} -Rule PlayerNoScout -{ - criteria ConceptPlayerNo IsScout - Response PlayerNoScout -} - -Response PlayerThanksScout -{ - scene "scenes/Player/Scout/low/508.vcd" - scene "scenes/Player/Scout/low/509.vcd" -} -Rule PlayerThanksScout -{ - criteria ConceptPlayerThanks IsScout - Response PlayerThanksScout -} - -Response PlayerYesScout -{ - scene "scenes/Player/Scout/low/516.vcd" - scene "scenes/Player/Scout/low/517.vcd" - scene "scenes/Player/Scout/low/518.vcd" -} -Rule PlayerYesScout -{ - criteria ConceptPlayerYes IsScout - Response PlayerYesScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeScout -{ - scene "scenes/Player/Scout/low/353.vcd" - scene "scenes/Player/Scout/low/354.vcd" - scene "scenes/Player/Scout/low/355.vcd" -} -Rule PlayerActivateChargeScout -{ - criteria ConceptPlayerActivateCharge IsScout - Response PlayerActivateChargeScout -} - -Response PlayerCloakedSpyScout -{ - scene "scenes/Player/Scout/low/380.vcd" - scene "scenes/Player/Scout/low/379.vcd" - scene "scenes/Player/Scout/low/1285.vcd" - scene "scenes/Player/Scout/low/381.vcd" -} -Rule PlayerCloakedSpyScout -{ - criteria ConceptPlayerCloakedSpy IsScout - Response PlayerCloakedSpyScout -} - -Response PlayerDispenserHereScout -{ - scene "scenes/Player/Scout/low/444.vcd" -} -Rule PlayerDispenserHereScout -{ - criteria ConceptPlayerDispenserHere IsScout - Response PlayerDispenserHereScout -} - -Response PlayerIncomingScout -{ - scene "scenes/Player/Scout/low/413.vcd" - scene "scenes/Player/Scout/low/414.vcd" - scene "scenes/Player/Scout/low/415.vcd" -} -Rule PlayerIncomingScout -{ - criteria ConceptPlayerIncoming IsScout - Response PlayerIncomingScout -} - -Response PlayerSentryAheadScout -{ - scene "scenes/Player/Scout/low/472.vcd" - scene "scenes/Player/Scout/low/473.vcd" - scene "scenes/Player/Scout/low/474.vcd" -} -Rule PlayerSentryAheadScout -{ - criteria ConceptPlayerSentryAhead IsScout - Response PlayerSentryAheadScout -} - -Response PlayerSentryHereScout -{ - scene "scenes/Player/Scout/low/445.vcd" -} -Rule PlayerSentryHereScout -{ - criteria ConceptPlayerSentryHere IsScout - Response PlayerSentryHereScout -} - -Response PlayerTeleporterHereScout -{ - scene "scenes/Player/Scout/low/446.vcd" -} -Rule PlayerTeleporterHereScout -{ - criteria ConceptPlayerTeleporterHere IsScout - Response PlayerTeleporterHereScout -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCryScout -{ - scene "scenes/Player/Scout/low/367.vcd" - scene "scenes/Player/Scout/low/369.vcd" - scene "scenes/Player/Scout/low/370.vcd" - scene "scenes/Player/Scout/low/371.vcd" - scene "scenes/Player/Scout/low/368.vcd" -} -Rule PlayerBattleCryScout -{ - criteria ConceptPlayerBattleCry IsScout - Response PlayerBattleCryScout -} - -Response PlayerCheersScout -{ - scene "scenes/Player/Scout/low/372.vcd" - scene "scenes/Player/Scout/low/374.vcd" - scene "scenes/Player/Scout/low/375.vcd" - scene "scenes/Player/Scout/low/377.vcd" - scene "scenes/Player/Scout/low/376.vcd" - scene "scenes/Player/Scout/low/373.vcd" -} -Rule PlayerCheersScout -{ - criteria ConceptPlayerCheers IsScout - Response PlayerCheersScout -} - -Response PlayerGoodJobScout -{ - scene "scenes/Player/Scout/low/395.vcd" - scene "scenes/Player/Scout/low/396.vcd" - scene "scenes/Player/Scout/low/397.vcd" - scene "scenes/Player/Scout/low/1288.vcd" -} -Rule PlayerGoodJobScout -{ - criteria ConceptPlayerGoodJob IsScout - Response PlayerGoodJobScout -} - -Response PlayerJeersScout -{ - scene "scenes/Player/Scout/low/419.vcd" - scene "scenes/Player/Scout/low/420.vcd" - scene "scenes/Player/Scout/low/421.vcd" - scene "scenes/Player/Scout/low/422.vcd" - scene "scenes/Player/Scout/low/423.vcd" - scene "scenes/Player/Scout/low/424.vcd" - scene "scenes/Player/Scout/low/425.vcd" - scene "scenes/Player/Scout/low/426.vcd" - scene "scenes/Player/Scout/low/427.vcd" - scene "scenes/Player/Scout/low/428.vcd" - scene "scenes/Player/Scout/low/430.vcd" -} -Rule PlayerJeersScout -{ - criteria ConceptPlayerJeers IsScout - Response PlayerJeersScout -} - -Response PlayerLostPointScout -{ - scene "scenes/Player/Scout/low/451.vcd" - scene "scenes/Player/Scout/low/447.vcd" - scene "scenes/Player/Scout/low/449.vcd" - scene "scenes/Player/Scout/low/450.vcd" - scene "scenes/Player/Scout/low/448.vcd" -} -Rule PlayerLostPointScout -{ - criteria ConceptPlayerLostPoint IsScout - Response PlayerLostPointScout -} - -Response PlayerNegativeScout -{ - scene "scenes/Player/Scout/low/451.vcd" - scene "scenes/Player/Scout/low/447.vcd" - scene "scenes/Player/Scout/low/449.vcd" - scene "scenes/Player/Scout/low/450.vcd" - scene "scenes/Player/Scout/low/448.vcd" -} -Rule PlayerNegativeScout -{ - criteria ConceptPlayerNegative IsScout - Response PlayerNegativeScout -} - -Response PlayerNiceShotScout -{ - scene "scenes/Player/Scout/low/452.vcd" - scene "scenes/Player/Scout/low/453.vcd" - scene "scenes/Player/Scout/low/454.vcd" -} -Rule PlayerNiceShotScout -{ - criteria ConceptPlayerNiceShot IsScout - Response PlayerNiceShotScout -} - -Response PlayerPositiveScout -{ - scene "scenes/Player/Scout/low/1302.vcd" - scene "scenes/Player/Scout/low/467.vcd" - scene "scenes/Player/Scout/low/469.vcd" - scene "scenes/Player/Scout/low/470.vcd" - scene "scenes/Player/Scout/low/471.vcd" -} -Rule PlayerPositiveScout -{ - criteria ConceptPlayerPositive IsScout - Response PlayerPositiveScout -} - -Response PlayerTauntsScout -{ - scene "scenes/Player/Scout/low/1298.vcd" - scene "scenes/Player/Scout/low/436.vcd" - scene "scenes/Player/Scout/low/437.vcd" - scene "scenes/Player/Scout/low/1299.vcd" - scene "scenes/Player/Scout/low/1300.vcd" - scene "scenes/Player/Scout/low/1301.vcd" -} -Rule PlayerTauntsScout -{ - criteria ConceptPlayerTaunts IsScout - Response PlayerTauntsScout -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/sniper.txt b/addon/gamemodes/teamfortress/content/scripts/talker/sniper.txt deleted file mode 100644 index 4dba5ecc4..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/sniper.txt +++ /dev/null @@ -1,1023 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Sniper Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "SniperIsNotStillonFire" "SniperOnFire" "!=1" "required" weight 0 -Criterion "SniperIsStillonFire" "SniperOnFire" "1" "required" weight 0 -Criterion "SniperNotKillSpeech" "SniperKillSpeech" "!=1" "required" weight 0 -Criterion "SniperNotKillSpeechMelee" "SniperKillSpeechMelee" "!=1" "required" weight 0 -Criterion "SniperNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" weight 0 -Criterion "SniperNotSaidHealThanks" "SniperSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapSniper" "SniperHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanSniper -{ - scene "scenes/Player/Sniper/low/1633.vcd" -} -Rule PlayerCloakedSpyDemomanSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnDemoman - Response PlayerCloakedSpyDemomanSniper -} - -Response PlayerCloakedSpyEngineerSniper -{ - scene "scenes/Player/Sniper/low/1636.vcd" -} -Rule PlayerCloakedSpyEngineerSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnEngineer - Response PlayerCloakedSpyEngineerSniper -} - -Response PlayerCloakedSpyHeavySniper -{ - scene "scenes/Player/Sniper/low/1631.vcd" -} -Rule PlayerCloakedSpyHeavySniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnHeavy - Response PlayerCloakedSpyHeavySniper -} - -Response PlayerCloakedSpyMedicSniper -{ - scene "scenes/Player/Sniper/low/1635.vcd" -} -Rule PlayerCloakedSpyMedicSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnMedic - Response PlayerCloakedSpyMedicSniper -} - -Response PlayerCloakedSpyPyroSniper -{ - scene "scenes/Player/Sniper/low/1632.vcd" -} -Rule PlayerCloakedSpyPyroSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnPyro - Response PlayerCloakedSpyPyroSniper -} - -Response PlayerCloakedSpyScoutSniper -{ - scene "scenes/Player/Sniper/low/1629.vcd" -} -Rule PlayerCloakedSpyScoutSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnScout - Response PlayerCloakedSpyScoutSniper -} - -Response PlayerCloakedSpySniperSniper -{ - scene "scenes/Player/Sniper/low/1637.vcd" -} -Rule PlayerCloakedSpySniperSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnSniper - Response PlayerCloakedSpySniperSniper -} - -Response PlayerCloakedSpySoldierSniper -{ - scene "scenes/Player/Sniper/low/1630.vcd" -} -Rule PlayerCloakedSpySoldierSniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnSoldier - Response PlayerCloakedSpySoldierSniper -} - -Response PlayerCloakedSpySpySniper -{ - scene "scenes/Player/Sniper/low/1634.vcd" -} -Rule PlayerCloakedSpySpySniper -{ - criteria ConceptPlayerCloakedSpy IsSniper IsOnSpy - Response PlayerCloakedSpySpySniper -} - -Response SniperHeadShotKillSoldier -{ - scene "scenes/Player/Sniper/low/1719.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1725.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1727.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1731.vcd" predelay "1.75" -} -Rule SniperHeadShotKillSoldier -{ - criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot 50PercentChance IsVictimSoldier - ApplyContext "SniperKillSpeech:1:10" - Response SniperHeadShotKillSoldier -} - -Response SniperHeadShotKillSpy -{ - scene "scenes/Player/Sniper/low/1712.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1723.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1729.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1732.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1805.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1806.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1808.vcd" predelay "1.75" -} -Rule SniperHeadShotKillSpy -{ - criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot 50PercentChance IsVictimSpy - ApplyContext "SniperKillSpeech:1:10" - Response SniperHeadShotKillSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksSniper -{ - scene "scenes/Player/Sniper/low/1761.vcd" - scene "scenes/Player/Sniper/low/1762.vcd" - scene "scenes/Player/Sniper/low/1763.vcd" -} -Rule HealThanksSniper -{ - criteria ConceptMedicChargeStopped IsSniper SuperHighHealthContext SniperNotSaidHealThanks 50PercentChance - ApplyContext "SniperSaidHealThanks:1:20" - Response HealThanksSniper -} - -Response PlayerRoundStartSniper -{ - scene "scenes/Player/Sniper/low/1612.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Sniper/low/1613.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Sniper/low/1614.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Sniper/low/1615.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Sniper/low/1616.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Sniper/low/1617.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartSniper -{ - criteria ConceptPlayerRoundStart IsSniper - Response PlayerRoundStartSniper -} - -Response PlayerCappedIntelligenceSniper -{ - scene "scenes/Player/Sniper/low/1603.vcd" - scene "scenes/Player/Sniper/low/1604.vcd" - scene "scenes/Player/Sniper/low/1605.vcd" - scene "scenes/Player/Sniper/low/1771.vcd" - scene "scenes/Player/Sniper/low/1772.vcd" -} -Rule PlayerCappedIntelligenceSniper -{ - criteria ConceptPlayerCapturedIntelligence IsSniper - Response PlayerCappedIntelligenceSniper -} - -Response PlayerCapturedPointSniper -{ - scene "scenes/Player/Sniper/low/1600.vcd" - scene "scenes/Player/Sniper/low/1601.vcd" - scene "scenes/Player/Sniper/low/1602.vcd" -} -Rule PlayerCapturedPointSniper -{ - criteria ConceptPlayerCapturedPoint IsSniper - Response PlayerCapturedPointSniper -} - -Response PlayerSuddenDeathSniper -{ - scene "scenes/Player/Sniper/low/1662.vcd" - scene "scenes/Player/Sniper/low/1663.vcd" - scene "scenes/Player/Sniper/low/1664.vcd" - scene "scenes/Player/Sniper/low/1665.vcd" - scene "scenes/Player/Sniper/low/1666.vcd" - scene "scenes/Player/Sniper/low/1667.vcd" - scene "scenes/Player/Sniper/low/1668.vcd" - scene "scenes/Player/Sniper/low/1669.vcd" -} -Rule PlayerSuddenDeathSniper -{ - criteria ConceptPlayerSuddenDeathStart IsSniper - Response PlayerSuddenDeathSniper -} - -Response PlayerStalemateSniper -{ - scene "scenes/Player/Sniper/low/1606.vcd" - scene "scenes/Player/Sniper/low/1607.vcd" - scene "scenes/Player/Sniper/low/1608.vcd" -} -Rule PlayerStalemateSniper -{ - criteria ConceptPlayerStalemate IsSniper - Response PlayerStalemateSniper -} - -Response PlayerTeleporterThanksSniper -{ - scene "scenes/Player/Sniper/low/1764.vcd" - scene "scenes/Player/Sniper/low/1765.vcd" - scene "scenes/Player/Sniper/low/1766.vcd" -} -Rule PlayerTeleporterThanksSniper -{ - criteria ConceptTeleported IsNotEngineer IsSniper 30PercentChance - Response PlayerTeleporterThanksSniper -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Cart -//-------------------------------------------------------------------------------------------------------------- -Response CartMovingBackwardsDefenseSniper -{ - scene "scenes/Player/Sniper/low/2334.vcd" - scene "scenes/Player/Sniper/low/2335.vcd" - scene "scenes/Player/Sniper/low/2336.vcd" - scene "scenes/Player/Sniper/low/2352.vcd" - scene "scenes/Player/Sniper/low/2431.vcd" - scene "scenes/Player/Sniper/low/2432.vcd" - scene "scenes/Player/Sniper/low/2444.vcd" - scene "scenes/Player/Sniper/low/2445.vcd" -} -Rule CartMovingBackwardsDefenseSniper -{ - criteria ConceptCartMovingBackward IsOnDefense IsSniper SniperNotSaidCartMovingBackwardD - ApplyContext "SaidCartMovingBackwardD:1:20" - Response CartMovingBackwardsDefenseSniper -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointSniper -{ - scene "scenes/Player/Sniper/low/1736.vcd" - scene "scenes/Player/Sniper/low/1737.vcd" -} -Rule DefendOnThePointSniper -{ - criteria ConceptFireWeapon IsSniper IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointSniper -} - -Response KilledPlayerManySniper -{ - scene "scenes/Player/Sniper/low/1670.vcd" - scene "scenes/Player/Sniper/low/1671.vcd" - scene "scenes/Player/Sniper/low/1672.vcd" - scene "scenes/Player/Sniper/low/1673.vcd" - scene "scenes/Player/Sniper/low/1674.vcd" - scene "scenes/Player/Sniper/low/1675.vcd" - scene "scenes/Player/Sniper/low/1715.vcd" - scene "scenes/Player/Sniper/low/1726.vcd" - scene "scenes/Player/Sniper/low/1810.vcd" -} -Rule KilledPlayerManySniper -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay SniperNotKillSpeech IsSniper - ApplyContext "SniperKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManySniper -} - -Response KilledPlayerMeleeSniper -{ - scene "scenes/Player/Sniper/low/1717.vcd" - scene "scenes/Player/Sniper/low/1720.vcd" -} -Rule KilledPlayerMeleeSniper -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee SniperNotKillSpeechMelee IsSniper - ApplyContext "SniperKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeSniper -} - -Response KilledPlayerVeryManySniper -{ - scene "scenes/Player/Sniper/low/1714.vcd" - scene "scenes/Player/Sniper/low/1718.vcd" - scene "scenes/Player/Sniper/low/1721.vcd" - scene "scenes/Player/Sniper/low/1742.vcd" - scene "scenes/Player/Sniper/low/1743.vcd" - scene "scenes/Player/Sniper/low/1744.vcd" - scene "scenes/Player/Sniper/low/1748.vcd" - scene "scenes/Player/Sniper/low/1755.vcd" -} -Rule KilledPlayerVeryManySniper -{ - criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay SniperNotKillSpeech IsSniper - ApplyContext "SniperKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerVeryManySniper -} - -Response MedicFollowSniper -{ - scene "scenes/Player/Sniper/low/2277.vcd" predelay ".25" - scene "scenes/Player/Sniper/low/2278.vcd" predelay ".25" - scene "scenes/Player/Sniper/low/2279.vcd" predelay ".25" - scene "scenes/Player/Sniper/low/2280.vcd" predelay ".25" - scene "scenes/Player/Sniper/low/2281.vcd" predelay ".25" -} -Rule MedicFollowSniper -{ - criteria ConceptPlayerMedic IsOnMedic IsSniper IsNotCrossHairEnemy - ApplyContext "SniperKillSpeech:1:10" - Response MedicFollowSniper -} - -Response PlayerJarateToss -{ - scene "scenes/Player/Sniper/low/3131.vcd" - scene "scenes/Player/Sniper/low/3132.vcd" - scene "scenes/Player/Sniper/low/3133.vcd" -} -Rule PlayerJarateToss -{ - criteria ConceptJarateLaunch IsSniper - Response PlayerJarateToss -} - -Response PlayerKilledCapperSniper -{ - scene "scenes/Player/Sniper/low/1614.vcd" - scene "scenes/Player/Sniper/low/1619.vcd" - scene "scenes/Player/Sniper/low/1620.vcd" - scene "scenes/Player/Sniper/low/1710.vcd" - scene "scenes/Player/Sniper/low/1733.vcd" -} -Rule PlayerKilledCapperSniper -{ - criteria ConceptCapBlocked IsSniper - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledCapperSniper -} - -Response PlayerKilledDominatingDemomanSniper -{ - scene "scenes/Player/Sniper/low/3080.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3081.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3082.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3083.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3084.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemomanSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimDemoman - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingDemomanSniper -} - -Response PlayerKilledDominatingEngineerSniper -{ - scene "scenes/Player/Sniper/low/3085.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3086.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3087.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3088.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3089.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3090.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingEngineerSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimEngineer - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingEngineerSniper -} - -Response PlayerKilledDominatingHeavySniper -{ - scene "scenes/Player/Sniper/low/3091.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3092.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3093.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3094.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3095.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3096.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3097.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavySniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimHeavy - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingHeavySniper -} - -Response PlayerKilledDominatingMedicSniper -{ - scene "scenes/Player/Sniper/low/3098.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3099.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3100.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3101.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3102.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedicSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimMedic - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingMedicSniper -} - -Response PlayerKilledDominatingPyroSniper -{ - scene "scenes/Player/Sniper/low/3103.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3104.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3105.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3106.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3107.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyroSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimPyro - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingPyroSniper -} - -Response PlayerKilledDominatingScoutSniper -{ - scene "scenes/Player/Sniper/low/3108.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3109.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3110.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3111.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3112.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingScoutSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimScout - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingScoutSniper -} - -Response PlayerKilledDominatingSniperSniper -{ - scene "scenes/Player/Sniper/low/2366.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/2397.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/2417.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/2434.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3113.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3114.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3115.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3116.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3117.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSniperSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimSniper - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingSniperSniper -} - -Response PlayerKilledDominatingSoldierSniper -{ - scene "scenes/Player/Sniper/low/3118.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3119.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3120.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3121.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3122.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3123.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldierSniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimSoldier - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingSoldierSniper -} - -Response PlayerKilledDominatingSpySniper -{ - scene "scenes/Player/Sniper/low/3124.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3125.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3126.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3127.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3128.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3129.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/3130.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSpySniper -{ - criteria ConceptKilledPlayer IsSniper IsDominated IsVictimSpy - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledDominatingSpySniper -} - -Response PlayerKilledForRevengeSniper -{ - scene "scenes/Player/Sniper/low/1622.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/1641.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/1708.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/1709.vcd" predelay "2.5" - scene "scenes/Player/Sniper/low/1741.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeSniper -{ - criteria ConceptKilledPlayer IsSniper IsRevenge - ApplyContext "SniperKillSpeech:1:10" - Response PlayerKilledForRevengeSniper -} - -Response SniperHeadShotKill -{ - scene "scenes/Player/Sniper/low/1790.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1795.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1801.vcd" predelay "1.75" - scene "scenes/Player/Sniper/low/1802.vcd" predelay "1.75" -} -Rule SniperHeadShotKill -{ - criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot 50PercentChance - ApplyContext "SniperKillSpeech:1:10" - Response SniperHeadShotKill -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainSniper -{ - scene "scenes/Player/Sniper/low/1700.vcd" - scene "scenes/Player/Sniper/low/1701.vcd" - scene "scenes/Player/Sniper/low/1702.vcd" - scene "scenes/Player/Sniper/low/1838.vcd" -} -Rule PlayerAttackerPainSniper -{ - criteria ConceptAttackerPain IsSniper - Response PlayerAttackerPainSniper -} - -Response PlayerOnFireSniper -{ - scene "scenes/Player/Sniper/low/1609.vcd" - scene "scenes/Player/Sniper/low/1610.vcd" - scene "scenes/Player/Sniper/low/1611.vcd" -} -Rule PlayerOnFireSniper -{ - criteria ConceptFire IsSniper SniperIsNotStillonFire - ApplyContext "SniperOnFire:1:7" - Response PlayerOnFireSniper -} - -Response PlayerPainSniper -{ - scene "scenes/Player/Sniper/low/1705.vcd" - scene "scenes/Player/Sniper/low/1704.vcd" - scene "scenes/Player/Sniper/low/1703.vcd" - scene "scenes/Player/Sniper/low/1837.vcd" -} -Rule PlayerPainSniper -{ - criteria ConceptPain IsSniper - Response PlayerPainSniper -} - -Response PlayerStillOnFireSniper -{ - scene "scenes/Player/Sniper/low/1929.vcd" -} -Rule PlayerStillOnFireSniper -{ - criteria ConceptFire IsSniper SniperIsStillonFire - ApplyContext "SniperOnFire:1:7" - Response PlayerStillOnFireSniper -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelSniper -{ - scene "scenes/Player/Sniper/low/2340.vcd" - scene "scenes/Player/Sniper/low/2341.vcd" - scene "scenes/Player/Sniper/low/2351.vcd" - scene "scenes/Player/Sniper/low/1613.vcd" - scene "scenes/Player/Sniper/low/1614.vcd" - scene "scenes/Player/Sniper/low/2321.vcd" - scene "scenes/Player/Sniper/low/2389.vcd" - scene "scenes/Player/Sniper/low/1749.vcd" - scene "scenes/Player/Sniper/low/1768.vcd" - scene "scenes/Player/Sniper/low/1769.vcd" -} -Rule AcceptedDuelSniper -{ - criteria ConceptIAcceptDuel IsSniper - Response AcceptedDuelSniper -} - -Response MeleeDareSniper -{ - scene "scenes/Player/Sniper/low/2320.vcd" - scene "scenes/Player/Sniper/low/2369.vcd" - scene "scenes/Player/Sniper/low/2372.vcd" - scene "scenes/Player/Sniper/low/2373.vcd" -} -Rule MeleeDareSniper -{ - criteria ConceptRequestDuel IsSniper - Response MeleeDareSniper -} - -Response RejectedDuelSniper -{ - scene "scenes/Player/Sniper/low/1606.vcd" - scene "scenes/Player/Sniper/low/1607.vcd" - scene "scenes/Player/Sniper/low/1608.vcd" - scene "scenes/Player/Sniper/low/3100.vcd" - scene "scenes/Player/Sniper/low/1663.vcd" - scene "scenes/Player/Sniper/low/1686.vcd" - scene "scenes/Player/Sniper/low/1687.vcd" - scene "scenes/Player/Sniper/low/1716.vcd" - scene "scenes/Player/Sniper/low/1722.vcd" -} -Rule RejectedDuelSniper -{ - criteria ConceptDuelRejected IsSniper - Response RejectedDuelSniper -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoSniper -{ - scene "scenes/Player/Sniper/low/1640.vcd" - scene "scenes/Player/Sniper/low/1639.vcd" - scene "scenes/Player/Sniper/low/1638.vcd" -} -Rule PlayerGoSniper -{ - criteria ConceptPlayerGo IsSniper - Response PlayerGoSniper -} - -Response PlayerHeadLeftSniper -{ - scene "scenes/Player/Sniper/low/1644.vcd" - scene "scenes/Player/Sniper/low/1645.vcd" - scene "scenes/Player/Sniper/low/1646.vcd" -} -Rule PlayerHeadLeftSniper -{ - criteria ConceptPlayerLeft IsSniper - Response PlayerHeadLeftSniper -} - -Response PlayerHeadRightSniper -{ - scene "scenes/Player/Sniper/low/1647.vcd" - scene "scenes/Player/Sniper/low/1648.vcd" - scene "scenes/Player/Sniper/low/1649.vcd" -} -Rule PlayerHeadRightSniper -{ - criteria ConceptPlayerRight IsSniper - Response PlayerHeadRightSniper -} - -Response PlayerHelpSniper -{ - scene "scenes/Player/Sniper/low/1650.vcd" - scene "scenes/Player/Sniper/low/1651.vcd" - scene "scenes/Player/Sniper/low/1652.vcd" -} -Rule PlayerHelpSniper -{ - criteria ConceptPlayerHelp IsSniper - Response PlayerHelpSniper -} - -Response PlayerHelpCaptureSniper -{ - scene "scenes/Player/Sniper/low/1653.vcd" - scene "scenes/Player/Sniper/low/1654.vcd" - scene "scenes/Player/Sniper/low/1655.vcd" -} -Rule PlayerHelpCaptureSniper -{ - criteria ConceptPlayerHelp IsSniper IsOnCappableControlPoint - ApplyContext "SniperHelpCap:1:10" - Response PlayerHelpCaptureSniper -} - -Response PlayerHelpCapture2Sniper -{ - scene "scenes/Player/Sniper/low/1736.vcd" - scene "scenes/Player/Sniper/low/1737.vcd" -} -Rule PlayerHelpCapture2Sniper -{ - criteria ConceptPlayerHelp IsSniper IsOnCappableControlPoint IsHelpCapSniper - Response PlayerHelpCapture2Sniper -} - -Response PlayerHelpDefendSniper -{ - scene "scenes/Player/Sniper/low/1656.vcd" - scene "scenes/Player/Sniper/low/1657.vcd" - scene "scenes/Player/Sniper/low/1658.vcd" -} -Rule PlayerHelpDefendSniper -{ - criteria ConceptPlayerHelp IsSniper IsOnFriendlyControlPoint - Response PlayerHelpDefendSniper -} - -Response PlayerMedicSniper -{ - scene "scenes/Player/Sniper/low/1678.vcd" - scene "scenes/Player/Sniper/low/1679.vcd" -} -Rule PlayerMedicSniper -{ - criteria ConceptPlayerMedic IsSniper - Response PlayerMedicSniper -} - -Response PlayerMoveUpSniper -{ - scene "scenes/Player/Sniper/low/1681.vcd" - scene "scenes/Player/Sniper/low/1682.vcd" -} -Rule PlayerMoveUpSniper -{ - criteria ConceptPlayerMoveUp IsSniper - Response PlayerMoveUpSniper -} - -Response PlayerNoSniper -{ - scene "scenes/Player/Sniper/low/1694.vcd" - scene "scenes/Player/Sniper/low/1695.vcd" - scene "scenes/Player/Sniper/low/1696.vcd" - scene "scenes/Player/Sniper/low/1782.vcd" -} -Rule PlayerNoSniper -{ - criteria ConceptPlayerNo IsSniper - Response PlayerNoSniper -} - -Response PlayerThanksSniper -{ - scene "scenes/Player/Sniper/low/1760.vcd" - scene "scenes/Player/Sniper/low/1836.vcd" -} -Rule PlayerThanksSniper -{ - criteria ConceptPlayerThanks IsSniper - Response PlayerThanksSniper -} - -Response PlayerYesSniper -{ - scene "scenes/Player/Sniper/low/1767.vcd" - scene "scenes/Player/Sniper/low/1768.vcd" - scene "scenes/Player/Sniper/low/1769.vcd" -} -Rule PlayerYesSniper -{ - criteria ConceptPlayerYes IsSniper - Response PlayerYesSniper -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeSniper -{ - scene "scenes/Player/Sniper/low/1597.vcd" - scene "scenes/Player/Sniper/low/1599.vcd" - scene "scenes/Player/Sniper/low/1598.vcd" - scene "scenes/Player/Sniper/low/1770.vcd" -} -Rule PlayerActivateChargeSniper -{ - criteria ConceptPlayerActivateCharge IsSniper - Response PlayerActivateChargeSniper -} - -Response PlayerCloakedSpySniper -{ - scene "scenes/Player/Sniper/low/1626.vcd" - scene "scenes/Player/Sniper/low/1627.vcd" - scene "scenes/Player/Sniper/low/1628.vcd" -} -Rule PlayerCloakedSpySniper -{ - criteria ConceptPlayerCloakedSpy IsSniper - Response PlayerCloakedSpySniper -} - -Response PlayerDispenserHereSniper -{ - scene "scenes/Player/Sniper/low/1683.vcd" -} -Rule PlayerDispenserHereSniper -{ - criteria ConceptPlayerDispenserHere IsSniper - Response PlayerDispenserHereSniper -} - -Response PlayerIncomingSniper -{ - scene "scenes/Player/Sniper/low/1659.vcd" - scene "scenes/Player/Sniper/low/1660.vcd" - scene "scenes/Player/Sniper/low/1661.vcd" - scene "scenes/Player/Sniper/low/1773.vcd" -} -Rule PlayerIncomingSniper -{ - criteria ConceptPlayerIncoming IsSniper - Response PlayerIncomingSniper -} - -Response PlayerSentryAheadSniper -{ - scene "scenes/Player/Sniper/low/1711.vcd" -} -Rule PlayerSentryAheadSniper -{ - criteria ConceptPlayerSentryAhead IsSniper - Response PlayerSentryAheadSniper -} - -Response PlayerSentryHereSniper -{ - scene "scenes/Player/Sniper/low/1684.vcd" -} -Rule PlayerSentryHereSniper -{ - criteria ConceptPlayerSentryHere IsSniper - Response PlayerSentryHereSniper -} - -Response PlayerTeleporterHereSniper -{ - scene "scenes/Player/Sniper/low/1685.vcd" -} -Rule PlayerTeleporterHereSniper -{ - criteria ConceptPlayerTeleporterHere IsSniper - Response PlayerTeleporterHereSniper -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCrySniper -{ - scene "scenes/Player/Sniper/low/1612.vcd" - scene "scenes/Player/Sniper/low/1613.vcd" - scene "scenes/Player/Sniper/low/1614.vcd" - scene "scenes/Player/Sniper/low/1615.vcd" - scene "scenes/Player/Sniper/low/1616.vcd" - scene "scenes/Player/Sniper/low/1617.vcd" -} -Rule PlayerBattleCrySniper -{ - criteria ConceptPlayerBattleCry IsSniper - Response PlayerBattleCrySniper -} - -Response PlayerCheersSniper -{ - scene "scenes/Player/Sniper/low/1618.vcd" - scene "scenes/Player/Sniper/low/1619.vcd" - scene "scenes/Player/Sniper/low/1620.vcd" - scene "scenes/Player/Sniper/low/1621.vcd" - scene "scenes/Player/Sniper/low/1622.vcd" - scene "scenes/Player/Sniper/low/1623.vcd" - scene "scenes/Player/Sniper/low/1624.vcd" - scene "scenes/Player/Sniper/low/1625.vcd" -} -Rule PlayerCheersSniper -{ - criteria ConceptPlayerCheers IsSniper - Response PlayerCheersSniper -} - -Response PlayerGoodJobSniper -{ - scene "scenes/Player/Sniper/low/1641.vcd" - scene "scenes/Player/Sniper/low/1642.vcd" - scene "scenes/Player/Sniper/low/1643.vcd" -} -Rule PlayerGoodJobSniper -{ - criteria ConceptPlayerGoodJob IsSniper - Response PlayerGoodJobSniper -} - -Response PlayerJeersSniper -{ - scene "scenes/Player/Sniper/low/1662.vcd" - scene "scenes/Player/Sniper/low/1663.vcd" - scene "scenes/Player/Sniper/low/1664.vcd" - scene "scenes/Player/Sniper/low/1665.vcd" - scene "scenes/Player/Sniper/low/1666.vcd" - scene "scenes/Player/Sniper/low/1667.vcd" - scene "scenes/Player/Sniper/low/1668.vcd" - scene "scenes/Player/Sniper/low/1669.vcd" -} -Rule PlayerJeersSniper -{ - criteria ConceptPlayerJeers IsSniper - Response PlayerJeersSniper -} - -Response PlayerLostPointSniper -{ - scene "scenes/Player/Sniper/low/1686.vcd" - scene "scenes/Player/Sniper/low/1687.vcd" - scene "scenes/Player/Sniper/low/1688.vcd" - scene "scenes/Player/Sniper/low/1689.vcd" - scene "scenes/Player/Sniper/low/1690.vcd" - scene "scenes/Player/Sniper/low/1778.vcd" - scene "scenes/Player/Sniper/low/1779.vcd" - scene "scenes/Player/Sniper/low/1780.vcd" - scene "scenes/Player/Sniper/low/1781.vcd" -} -Rule PlayerLostPointSniper -{ - criteria ConceptPlayerLostPoint IsSniper - Response PlayerLostPointSniper -} - -Response PlayerNegativeSniper -{ - scene "scenes/Player/Sniper/low/1686.vcd" - scene "scenes/Player/Sniper/low/1687.vcd" - scene "scenes/Player/Sniper/low/1688.vcd" - scene "scenes/Player/Sniper/low/1689.vcd" - scene "scenes/Player/Sniper/low/1690.vcd" - scene "scenes/Player/Sniper/low/1778.vcd" - scene "scenes/Player/Sniper/low/1779.vcd" - scene "scenes/Player/Sniper/low/1780.vcd" - scene "scenes/Player/Sniper/low/1781.vcd" -} -Rule PlayerNegativeSniper -{ - criteria ConceptPlayerNegative IsSniper - Response PlayerNegativeSniper -} - -Response PlayerNiceShotSniper -{ - scene "scenes/Player/Sniper/low/1691.vcd" - scene "scenes/Player/Sniper/low/1692.vcd" - scene "scenes/Player/Sniper/low/1693.vcd" -} -Rule PlayerNiceShotSniper -{ - criteria ConceptPlayerNiceShot IsSniper - Response PlayerNiceShotSniper -} - -Response PlayerPositiveSniper -{ - scene "scenes/Player/Sniper/low/1706.vcd" - scene "scenes/Player/Sniper/low/1707.vcd" - scene "scenes/Player/Sniper/low/1708.vcd" - scene "scenes/Player/Sniper/low/1709.vcd" - scene "scenes/Player/Sniper/low/1710.vcd" - scene "scenes/Player/Sniper/low/1783.vcd" - scene "scenes/Player/Sniper/low/1784.vcd" - scene "scenes/Player/Sniper/low/1785.vcd" - scene "scenes/Player/Sniper/low/1786.vcd" - scene "scenes/Player/Sniper/low/1787.vcd" -} -Rule PlayerPositiveSniper -{ - criteria ConceptPlayerPositive IsSniper - Response PlayerPositiveSniper -} - -Response PlayerTauntsSniper -{ - scene "scenes/Player/Sniper/low/1774.vcd" - scene "scenes/Player/Sniper/low/1676.vcd" - scene "scenes/Player/Sniper/low/1677.vcd" - scene "scenes/Player/Sniper/low/1775.vcd" - scene "scenes/Player/Sniper/low/1776.vcd" - scene "scenes/Player/Sniper/low/1777.vcd" -} -Rule PlayerTauntsSniper -{ - criteria ConceptPlayerTaunts IsSniper - Response PlayerTauntsSniper -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/soldier.txt b/addon/gamemodes/teamfortress/content/scripts/talker/soldier.txt deleted file mode 100644 index 196d96a6b..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/soldier.txt +++ /dev/null @@ -1,969 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Soldier Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "SoldierIsKillSpeechObject" "SoldierKillSpeechObject" "1" "required" weight 0 -Criterion "SoldierIsNotStillonFire" "SoldierOnFire" "!=1" "required" weight 0 -Criterion "SoldierIsStillonFire" "SoldierOnFire" "1" "required" weight 0 -Criterion "SoldierNotKillSpeech" "SoldierKillSpeech" "!=1" "required" weight 0 -Criterion "SoldierNotKillSpeechMelee" "SoldierKillSpeechMelee" "!=1" "required" weight 0 -Criterion "SoldierNotSaidHealThanks" "SoldierSaidHealThanks" "!=1" "required" -Criterion "IsHelpCapSoldier" "SoldierHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanSoldier -{ - scene "scenes/Player/Soldier/low/1082.vcd" -} -Rule PlayerCloakedSpyDemomanSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnDemoman - Response PlayerCloakedSpyDemomanSoldier -} - -Response PlayerCloakedSpyEngineerSoldier -{ - scene "scenes/Player/Soldier/low/1087.vcd" -} -Rule PlayerCloakedSpyEngineerSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnEngineer - Response PlayerCloakedSpyEngineerSoldier -} - -Response PlayerCloakedSpyHeavySoldier -{ - scene "scenes/Player/Soldier/low/1077.vcd" -} -Rule PlayerCloakedSpyHeavySoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnHeavy - Response PlayerCloakedSpyHeavySoldier -} - -Response PlayerCloakedSpyMedicSoldier -{ - scene "scenes/Player/Soldier/low/1085.vcd" -} -Rule PlayerCloakedSpyMedicSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnMedic - Response PlayerCloakedSpyMedicSoldier -} - -Response PlayerCloakedSpyPyroSoldier -{ - scene "scenes/Player/Soldier/low/1080.vcd" -} -Rule PlayerCloakedSpyPyroSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnPyro - Response PlayerCloakedSpyPyroSoldier -} - -Response PlayerCloakedSpyScoutSoldier -{ - scene "scenes/Player/Soldier/low/1074.vcd" -} -Rule PlayerCloakedSpyScoutSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnScout - Response PlayerCloakedSpyScoutSoldier -} - -Response PlayerCloakedSpySniperSoldier -{ - scene "scenes/Player/Soldier/low/1090.vcd" -} -Rule PlayerCloakedSpySniperSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnSniper - Response PlayerCloakedSpySniperSoldier -} - -Response PlayerCloakedSpySoldierSoldier -{ - scene "scenes/Player/Soldier/low/1075.vcd" -} -Rule PlayerCloakedSpySoldierSoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnSoldier - Response PlayerCloakedSpySoldierSoldier -} - -Response PlayerCloakedSpySpySoldier -{ - scene "scenes/Player/Soldier/low/1083.vcd" -} -Rule PlayerCloakedSpySpySoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier IsOnSpy - Response PlayerCloakedSpySpySoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksSoldier -{ - scene "scenes/Player/Soldier/low/1213.vcd" - scene "scenes/Player/Soldier/low/1214.vcd" - scene "scenes/Player/Soldier/low/1215.vcd" -} -Rule HealThanksSoldier -{ - criteria ConceptMedicChargeStopped IsSoldier SuperHighHealthContext SoldierNotSaidHealThanks 50PercentChance - ApplyContext "SoldierSaidHealThanks:1:20" - Response HealThanksSoldier -} - -Response PlayerRoundStartSoldier -{ - scene "scenes/Player/Soldier/low/1055.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Soldier/low/1057.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Soldier/low/1058.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Soldier/low/1059.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Soldier/low/1056.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Soldier/low/1060.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartSoldier -{ - criteria ConceptPlayerRoundStart IsSoldier - Response PlayerRoundStartSoldier -} - -Response PlayerCappedIntelligenceSoldier -{ - scene "scenes/Player/Soldier/low/1046.vcd" - scene "scenes/Player/Soldier/low/1048.vcd" - scene "scenes/Player/Soldier/low/1047.vcd" -} -Rule PlayerCappedIntelligenceSoldier -{ - criteria ConceptPlayerCapturedIntelligence IsSoldier - Response PlayerCappedIntelligenceSoldier -} - -Response PlayerCapturedPointSoldier -{ - scene "scenes/Player/Soldier/low/1043.vcd" - scene "scenes/Player/Soldier/low/1044.vcd" - scene "scenes/Player/Soldier/low/1045.vcd" -} -Rule PlayerCapturedPointSoldier -{ - criteria ConceptPlayerCapturedPoint IsSoldier - Response PlayerCapturedPointSoldier -} - -Response PlayerSuddenDeathSoldier -{ - scene "scenes/Player/Soldier/low/1120.vcd" - scene "scenes/Player/Soldier/low/1121.vcd" - scene "scenes/Player/Soldier/low/1122.vcd" - scene "scenes/Player/Soldier/low/1123.vcd" - scene "scenes/Player/Soldier/low/1124.vcd" - scene "scenes/Player/Soldier/low/1125.vcd" - scene "scenes/Player/Soldier/low/1126.vcd" - scene "scenes/Player/Soldier/low/1127.vcd" - scene "scenes/Player/Soldier/low/1128.vcd" - scene "scenes/Player/Soldier/low/1129.vcd" - scene "scenes/Player/Soldier/low/1130.vcd" - scene "scenes/Player/Soldier/low/1131.vcd" -} -Rule PlayerSuddenDeathSoldier -{ - criteria ConceptPlayerSuddenDeathStart IsSoldier - Response PlayerSuddenDeathSoldier -} - -Response PlayerStalemateSoldier -{ - scene "scenes/Player/Soldier/low/1049.vcd" - scene "scenes/Player/Soldier/low/1050.vcd" - scene "scenes/Player/Soldier/low/1051.vcd" -} -Rule PlayerStalemateSoldier -{ - criteria ConceptPlayerStalemate IsSoldier - Response PlayerStalemateSoldier -} - -Response PlayerTeleporterThanksSoldier -{ - scene "scenes/Player/Soldier/low/1216.vcd" - scene "scenes/Player/Soldier/low/1217.vcd" - scene "scenes/Player/Soldier/low/1218.vcd" -} -Rule PlayerTeleporterThanksSoldier -{ - criteria ConceptTeleported IsNotEngineer IsSoldier 30PercentChance - Response PlayerTeleporterThanksSoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointSoldier -{ - scene "scenes/Player/Soldier/low/1187.vcd" - scene "scenes/Player/Soldier/low/1354.vcd" - scene "scenes/Player/Soldier/low/1355.vcd" -} -Rule DefendOnThePointSoldier -{ - criteria ConceptFireWeapon IsSoldier IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointSoldier -} - -Response KilledPlayerManySoldier -{ - scene "scenes/Player/Soldier/low/1181.vcd" - scene "scenes/Player/Soldier/low/1356.vcd" - scene "scenes/Player/Soldier/low/1197.vcd" - scene "scenes/Player/Soldier/low/1199.vcd" -} -Rule KilledPlayerManySoldier -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay SoldierNotKillSpeech IsSoldier - ApplyContext "SoldierKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManySoldier -} - -Response KilledPlayerMeleeSoldier -{ - scene "scenes/Player/Soldier/low/1185.vcd" -} -Rule KilledPlayerMeleeSoldier -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee SoldierNotKillSpeechMelee IsSoldier - ApplyContext "SoldierKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeSoldier -} - -Response KilledPlayerVeryManySoldier -{ - scene "scenes/Player/Soldier/low/1206.vcd" -} -Rule KilledPlayerVeryManySoldier -{ - criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay SoldierNotKillSpeech IsSoldier - ApplyContext "SoldierKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerVeryManySoldier -} - -Response PlayerKilledCapperSoldier -{ - scene "scenes/Player/Soldier/low/1064.vcd" - scene "scenes/Player/Soldier/low/1062.vcd" - scene "scenes/Player/Soldier/low/1063.vcd" -} -Rule PlayerKilledCapperSoldier -{ - criteria ConceptCapBlocked IsSoldier - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledCapperSoldier -} - -Response PlayerKilledDominatingSoldier -{ - scene "scenes/Player/Soldier/low/1132.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1346.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1348.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1133.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1134.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1347.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1135.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1349.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1195.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1202.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingSoldier -} - -Response PlayerKilledDominatingDemomanSoldier -{ - scene "scenes/Player/Soldier/low/3407.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3408.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3409.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3410.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3411.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3412.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemomanSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimDemoman - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingDemomanSoldier -} - -Response PlayerKilledDominatingEngineerSoldier -{ - scene "scenes/Player/Soldier/low/3418.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3419.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3420.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3421.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3422.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3423.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingEngineerSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimEngineer - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingEngineerSoldier -} - -Response PlayerKilledDominatingHeavySoldier -{ - scene "scenes/Player/Soldier/low/3424.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3425.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3426.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3427.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3428.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3429.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3430.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavySoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimHeavy - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingHeavySoldier -} - -Response PlayerKilledDominatingMedicSoldier -{ - scene "scenes/Player/Soldier/low/3431.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3432.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3433.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3434.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3435.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3436.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3437.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedicSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimMedic - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingMedicSoldier -} - -Response PlayerKilledDominatingPyroSoldier -{ - scene "scenes/Player/Soldier/low/3438.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3439.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3440.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3441.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3442.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3443.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3444.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3445.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3446.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyroSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimPyro - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingPyroSoldier -} - -Response PlayerKilledDominatingScoutSoldier -{ - scene "scenes/Player/Soldier/low/3447.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3448.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3449.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3450.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3451.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3452.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3453.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3454.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3455.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3456.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3457.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingScoutSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimScout - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingScoutSoldier -} - -Response PlayerKilledDominatingSniperSoldier -{ - scene "scenes/Player/Soldier/low/3458.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3459.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3460.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3461.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3462.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3463.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3464.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3465.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3466.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3467.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3468.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3469.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3470.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3471.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSniperSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimSniper - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingSniperSoldier -} - -Response PlayerKilledDominatingSoldierSoldier -{ - scene "scenes/Player/Soldier/low/3472.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3473.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3474.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3475.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3476.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3477.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldierSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimSoldier - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingSoldierSoldier -} - -Response PlayerKilledDominatingSpySoldier -{ - scene "scenes/Player/Soldier/low/3478.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3479.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3480.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3481.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3482.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3483.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3484.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/3485.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSpySoldier -{ - criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimSpy - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledDominatingSpySoldier -} - -Response PlayerKilledForRevengeSoldier -{ - scene "scenes/Player/Soldier/low/1060.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1065.vcd" predelay "2.5" - scene "scenes/Player/Soldier/low/1096.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeSoldier -{ - criteria ConceptKilledPlayer IsSoldier IsRevenge - ApplyContext "SoldierKillSpeech:1:10" - Response PlayerKilledForRevengeSoldier -} - -Response PlayerKilledObjectSoldier -{ - scene "scenes/Player/Soldier/low/1055.vcd" - scene "scenes/Player/Soldier/low/1345.vcd" - scene "scenes/Player/Soldier/low/1172.vcd" - scene "scenes/Player/Soldier/low/1175.vcd" - scene "scenes/Player/Soldier/low/1182.vcd" -} -Rule PlayerKilledObjectSoldier -{ - criteria ConceptKilledObject IsSoldier 30PercentChance IsARecentKill - ApplyContext "SoldierKillSpeechObject:1:30" - applycontexttoworld - Response PlayerKilledObjectSoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainSoldier -{ - scene "scenes/Player/Soldier/low/1165.vcd" - scene "scenes/Player/Soldier/low/1166.vcd" - scene "scenes/Player/Soldier/low/1167.vcd" - scene "scenes/Player/Soldier/low/1371.vcd" - scene "scenes/Player/Soldier/low/1372.vcd" - scene "scenes/Player/Soldier/low/1373.vcd" -} -Rule PlayerAttackerPainSoldier -{ - criteria ConceptAttackerPain IsSoldier - Response PlayerAttackerPainSoldier -} - -Response PlayerOnFireSoldier -{ - scene "scenes/Player/Soldier/low/1052.vcd" -} -Rule PlayerOnFireSoldier -{ - criteria ConceptFire IsSoldier SoldierIsNotStillonFire - ApplyContext "SoldierOnFire:1:7" - Response PlayerOnFireSoldier -} - -Response PlayerOnFireRareSoldier -{ - scene "scenes/Player/Soldier/low/1053.vcd" - scene "scenes/Player/Soldier/low/1054.vcd" -} -Rule PlayerOnFireRareSoldier -{ - criteria ConceptFire IsSoldier 10PercentChance SoldierIsNotStillonFire - ApplyContext "SoldierOnFire:1:7" - Response PlayerOnFireRareSoldier -} - -Response PlayerPainSoldier -{ - scene "scenes/Player/Soldier/low/1168.vcd" - scene "scenes/Player/Soldier/low/1169.vcd" - scene "scenes/Player/Soldier/low/1170.vcd" - scene "scenes/Player/Soldier/low/1374.vcd" - scene "scenes/Player/Soldier/low/1375.vcd" - scene "scenes/Player/Soldier/low/1376.vcd" - scene "scenes/Player/Soldier/low/1377.vcd" - scene "scenes/Player/Soldier/low/1378.vcd" -} -Rule PlayerPainSoldier -{ - criteria ConceptPain IsSoldier - Response PlayerPainSoldier -} - -Response PlayerStillOnFireSoldier -{ - scene "scenes/Player/Soldier/low/1926.vcd" -} -Rule PlayerStillOnFireSoldier -{ - criteria ConceptFire IsSoldier SoldierIsStillonFire - ApplyContext "SoldierOnFire:1:7" - Response PlayerStillOnFireSoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelSoldier -{ - scene "scenes/Player/Soldier/low/1062.vcd" - scene "scenes/Player/Soldier/low/1172.vcd" - scene "scenes/Player/Soldier/low/1175.vcd" - scene "scenes/Player/Soldier/low/1174.vcd" - scene "scenes/Player/Soldier/low/1190.vcd" - scene "scenes/Player/Soldier/low/1221.vcd" -} -Rule AcceptedDuelSoldier -{ - criteria ConceptIAcceptDuel IsSoldier - Response AcceptedDuelSoldier -} - -Response MeleeDareSoldier -{ - scene "scenes/Player/Soldier/low/1094.vcd" - scene "scenes/Player/Soldier/low/1188.vcd" - scene "scenes/Player/Soldier/low/1195.vcd" - scene "scenes/Player/Soldier/low/1196.vcd" - scene "scenes/Player/Soldier/low/1202.vcd" - scene "scenes/Player/Soldier/low/1210.vcd" -} -Rule MeleeDareSoldier -{ - criteria ConceptRequestDuel IsSoldier - Response MeleeDareSoldier -} - -Response RejectedDuelSoldier -{ - scene "scenes/Player/Soldier/low/3487.vcd" - scene "scenes/Player/Soldier/low/1120.vcd" - scene "scenes/Player/Soldier/low/1207.vcd" -} -Rule RejectedDuelSoldier -{ - criteria ConceptDuelRejected IsSoldier - Response RejectedDuelSoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoSoldier -{ - scene "scenes/Player/Soldier/low/1092.vcd" - scene "scenes/Player/Soldier/low/1093.vcd" -} -Rule PlayerGoSoldier -{ - criteria ConceptPlayerGo IsSoldier - Response PlayerGoSoldier -} - -Response PlayerHeadLeftSoldier -{ - scene "scenes/Player/Soldier/low/1098.vcd" - scene "scenes/Player/Soldier/low/1100.vcd" - scene "scenes/Player/Soldier/low/1099.vcd" -} -Rule PlayerHeadLeftSoldier -{ - criteria ConceptPlayerLeft IsSoldier - Response PlayerHeadLeftSoldier -} - -Response PlayerHeadRightSoldier -{ - scene "scenes/Player/Soldier/low/1103.vcd" - scene "scenes/Player/Soldier/low/1101.vcd" - scene "scenes/Player/Soldier/low/1102.vcd" -} -Rule PlayerHeadRightSoldier -{ - criteria ConceptPlayerRight IsSoldier - Response PlayerHeadRightSoldier -} - -Response PlayerHelpSoldier -{ - scene "scenes/Player/Soldier/low/1104.vcd" - scene "scenes/Player/Soldier/low/1105.vcd" - scene "scenes/Player/Soldier/low/1106.vcd" -} -Rule PlayerHelpSoldier -{ - criteria ConceptPlayerHelp IsSoldier - Response PlayerHelpSoldier -} - -Response PlayerHelpCaptureSoldier -{ - scene "scenes/Player/Soldier/low/1109.vcd" - scene "scenes/Player/Soldier/low/1107.vcd" - scene "scenes/Player/Soldier/low/1108.vcd" -} -Rule PlayerHelpCaptureSoldier -{ - criteria ConceptPlayerHelp IsSoldier IsOnCappableControlPoint - ApplyContext "SoldierHelpCap:1:10" - Response PlayerHelpCaptureSoldier -} - -Response PlayerHelpCapture2Soldier -{ - scene "scenes/Player/Soldier/low/1187.vcd" - scene "scenes/Player/Soldier/low/1354.vcd" - scene "scenes/Player/Soldier/low/1355.vcd" -} -Rule PlayerHelpCapture2Soldier -{ - criteria ConceptPlayerHelp IsSoldier IsOnCappableControlPoint IsHelpCapSoldier - Response PlayerHelpCapture2Soldier -} - -Response PlayerHelpDefendSoldier -{ - scene "scenes/Player/Soldier/low/1110.vcd" - scene "scenes/Player/Soldier/low/1111.vcd" - scene "scenes/Player/Soldier/low/1112.vcd" - scene "scenes/Player/Soldier/low/1113.vcd" -} -Rule PlayerHelpDefendSoldier -{ - criteria ConceptPlayerHelp IsSoldier IsOnFriendlyControlPoint - Response PlayerHelpDefendSoldier -} - -Response PlayerMedicSoldier -{ - scene "scenes/Player/Soldier/low/1139.vcd" - scene "scenes/Player/Soldier/low/1140.vcd" - scene "scenes/Player/Soldier/low/1141.vcd" -} -Rule PlayerMedicSoldier -{ - criteria ConceptPlayerMedic IsSoldier - Response PlayerMedicSoldier -} - -Response PlayerMoveUpSoldier -{ - scene "scenes/Player/Soldier/low/1142.vcd" - scene "scenes/Player/Soldier/low/1143.vcd" - scene "scenes/Player/Soldier/low/1144.vcd" -} -Rule PlayerMoveUpSoldier -{ - criteria ConceptPlayerMoveUp IsSoldier - Response PlayerMoveUpSoldier -} - -Response PlayerNoSoldier -{ - scene "scenes/Player/Soldier/low/1159.vcd" - scene "scenes/Player/Soldier/low/1161.vcd" - scene "scenes/Player/Soldier/low/1160.vcd" -} -Rule PlayerNoSoldier -{ - criteria ConceptPlayerNo IsSoldier - Response PlayerNoSoldier -} - -Response PlayerThanksSoldier -{ - scene "scenes/Player/Soldier/low/1211.vcd" - scene "scenes/Player/Soldier/low/1212.vcd" -} -Rule PlayerThanksSoldier -{ - criteria ConceptPlayerThanks IsSoldier - Response PlayerThanksSoldier -} - -Response PlayerYesSoldier -{ - scene "scenes/Player/Soldier/low/1350.vcd" - scene "scenes/Player/Soldier/low/1220.vcd" - scene "scenes/Player/Soldier/low/1221.vcd" - scene "scenes/Player/Soldier/low/1219.vcd" -} -Rule PlayerYesSoldier -{ - criteria ConceptPlayerYes IsSoldier - Response PlayerYesSoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeSoldier -{ - scene "scenes/Player/Soldier/low/1040.vcd" - scene "scenes/Player/Soldier/low/1041.vcd" - scene "scenes/Player/Soldier/low/1042.vcd" -} -Rule PlayerActivateChargeSoldier -{ - criteria ConceptPlayerActivateCharge IsSoldier - Response PlayerActivateChargeSoldier -} - -Response PlayerCloakedSpySoldier -{ - scene "scenes/Player/Soldier/low/1071.vcd" - scene "scenes/Player/Soldier/low/1072.vcd" - scene "scenes/Player/Soldier/low/1070.vcd" -} -Rule PlayerCloakedSpySoldier -{ - criteria ConceptPlayerCloakedSpy IsSoldier - Response PlayerCloakedSpySoldier -} - -Response PlayerDispenserHereSoldier -{ - scene "scenes/Player/Soldier/low/1146.vcd" -} -Rule PlayerDispenserHereSoldier -{ - criteria ConceptPlayerDispenserHere IsSoldier - Response PlayerDispenserHereSoldier -} - -Response PlayerIncomingSoldier -{ - scene "scenes/Player/Soldier/low/1114.vcd" -} -Rule PlayerIncomingSoldier -{ - criteria ConceptPlayerIncoming IsSoldier - Response PlayerIncomingSoldier -} - -Response PlayerSentryAheadSoldier -{ - scene "scenes/Player/Soldier/low/1177.vcd" - scene "scenes/Player/Soldier/low/1178.vcd" - scene "scenes/Player/Soldier/low/1176.vcd" -} -Rule PlayerSentryAheadSoldier -{ - criteria ConceptPlayerSentryAhead IsSoldier - Response PlayerSentryAheadSoldier -} - -Response PlayerSentryHereSoldier -{ - scene "scenes/Player/Soldier/low/1148.vcd" -} -Rule PlayerSentryHereSoldier -{ - criteria ConceptPlayerSentryHere IsSoldier - Response PlayerSentryHereSoldier -} - -Response PlayerTeleporterHereSoldier -{ - scene "scenes/Player/Soldier/low/1150.vcd" -} -Rule PlayerTeleporterHereSoldier -{ - criteria ConceptPlayerTeleporterHere IsSoldier - Response PlayerTeleporterHereSoldier -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCrySoldier -{ - scene "scenes/Player/Soldier/low/1055.vcd" - scene "scenes/Player/Soldier/low/1057.vcd" - scene "scenes/Player/Soldier/low/1058.vcd" - scene "scenes/Player/Soldier/low/1059.vcd" - scene "scenes/Player/Soldier/low/1056.vcd" - scene "scenes/Player/Soldier/low/1060.vcd" -} -Rule PlayerBattleCrySoldier -{ - criteria ConceptPlayerBattleCry IsSoldier - Response PlayerBattleCrySoldier -} - -Response PlayerCheersSoldier -{ - scene "scenes/Player/Soldier/low/1065.vcd" - scene "scenes/Player/Soldier/low/1068.vcd" - scene "scenes/Player/Soldier/low/1066.vcd" - scene "scenes/Player/Soldier/low/1064.vcd" - scene "scenes/Player/Soldier/low/1062.vcd" - scene "scenes/Player/Soldier/low/1063.vcd" -} -Rule PlayerCheersSoldier -{ - criteria ConceptPlayerCheers IsSoldier - Response PlayerCheersSoldier -} - -Response PlayerGoodJobSoldier -{ - scene "scenes/Player/Soldier/low/1095.vcd" - scene "scenes/Player/Soldier/low/1096.vcd" - scene "scenes/Player/Soldier/low/1097.vcd" -} -Rule PlayerGoodJobSoldier -{ - criteria ConceptPlayerGoodJob IsSoldier - Response PlayerGoodJobSoldier -} - -Response PlayerJeersSoldier -{ - scene "scenes/Player/Soldier/low/1120.vcd" - scene "scenes/Player/Soldier/low/1121.vcd" - scene "scenes/Player/Soldier/low/1122.vcd" - scene "scenes/Player/Soldier/low/1123.vcd" - scene "scenes/Player/Soldier/low/1124.vcd" - scene "scenes/Player/Soldier/low/1125.vcd" - scene "scenes/Player/Soldier/low/1126.vcd" - scene "scenes/Player/Soldier/low/1127.vcd" - scene "scenes/Player/Soldier/low/1128.vcd" - scene "scenes/Player/Soldier/low/1129.vcd" - scene "scenes/Player/Soldier/low/1130.vcd" - scene "scenes/Player/Soldier/low/1131.vcd" -} -Rule PlayerJeersSoldier -{ - criteria ConceptPlayerJeers IsSoldier - Response PlayerJeersSoldier -} - -Response PlayerLostPointSoldier -{ - scene "scenes/Player/Soldier/low/1151.vcd" - scene "scenes/Player/Soldier/low/1152.vcd" - scene "scenes/Player/Soldier/low/1153.vcd" - scene "scenes/Player/Soldier/low/1154.vcd" - scene "scenes/Player/Soldier/low/1155.vcd" - scene "scenes/Player/Soldier/low/1353.vcd" -} -Rule PlayerLostPointSoldier -{ - criteria ConceptPlayerLostPoint IsSoldier - Response PlayerLostPointSoldier -} - -Response PlayerNegativeSoldier -{ - scene "scenes/Player/Soldier/low/1151.vcd" - scene "scenes/Player/Soldier/low/1152.vcd" - scene "scenes/Player/Soldier/low/1153.vcd" - scene "scenes/Player/Soldier/low/1154.vcd" - scene "scenes/Player/Soldier/low/1155.vcd" - scene "scenes/Player/Soldier/low/1353.vcd" -} -Rule PlayerNegativeSoldier -{ - criteria ConceptPlayerNegative IsSoldier - Response PlayerNegativeSoldier -} - -Response PlayerNiceShotSoldier -{ - scene "scenes/Player/Soldier/low/1156.vcd" - scene "scenes/Player/Soldier/low/1157.vcd" - scene "scenes/Player/Soldier/low/1158.vcd" -} -Rule PlayerNiceShotSoldier -{ - criteria ConceptPlayerNiceShot IsSoldier - Response PlayerNiceShotSoldier -} - -Response PlayerPositiveSoldier -{ - scene "scenes/Player/Soldier/low/1345.vcd" - scene "scenes/Player/Soldier/low/1172.vcd" - scene "scenes/Player/Soldier/low/1175.vcd" - scene "scenes/Player/Soldier/low/1174.vcd" - scene "scenes/Player/Soldier/low/1171.vcd" -} -Rule PlayerPositiveSoldier -{ - criteria ConceptPlayerPositive IsSoldier - Response PlayerPositiveSoldier -} - -Response PlayerTauntsSoldier -{ - scene "scenes/Player/Soldier/low/1136.vcd" - scene "scenes/Player/Soldier/low/1137.vcd" - scene "scenes/Player/Soldier/low/1138.vcd" - scene "scenes/Player/Soldier/low/1351.vcd" - scene "scenes/Player/Soldier/low/1352.vcd" -} -Rule PlayerTauntsSoldier -{ - criteria ConceptPlayerTaunts IsSoldier - Response PlayerTauntsSoldier -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/spy.txt b/addon/gamemodes/teamfortress/content/scripts/talker/spy.txt deleted file mode 100644 index 89008445e..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/spy.txt +++ /dev/null @@ -1,942 +0,0 @@ -//-------------------------------------------------------------------------------------------------------------- -// Spy Response Rule File -//-------------------------------------------------------------------------------------------------------------- - -Criterion "SpyIsNotStillonFire" "SpyOnFire" "!=1" "required" weight 0 -Criterion "SpyIsStillonFire" "SpyOnFire" "1" "required" weight 0 -Criterion "SpyNotKillSpeech" "SpyKillSpeech" "!=1" "required" weight 0 -Criterion "SpyNotKillSpeechMelee" "SpyKillSpeechMelee" "!=1" "required" weight 0 -Criterion "SpyNotSaidHealThanks" "SpySaidHealThanks" "!=1" "required" -Criterion "IsHelpCapSpy" "SpyHelpCap" "1" "required" weight 0 - - -Response PlayerCloakedSpyDemomanSpy -{ - scene "scenes/Player/Spy/low/729.vcd" -} -Rule PlayerCloakedSpyDemomanSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnDemoman - Response PlayerCloakedSpyDemomanSpy -} - -Response PlayerCloakedSpyEngineerSpy -{ - scene "scenes/Player/Spy/low/735.vcd" -} -Rule PlayerCloakedSpyEngineerSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnEngineer - Response PlayerCloakedSpyEngineerSpy -} - -Response PlayerCloakedSpyHeavySpy -{ - scene "scenes/Player/Spy/low/725.vcd" -} -Rule PlayerCloakedSpyHeavySpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnHeavy - Response PlayerCloakedSpyHeavySpy -} - -Response PlayerCloakedSpyMedicSpy -{ - scene "scenes/Player/Spy/low/733.vcd" -} -Rule PlayerCloakedSpyMedicSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnMedic - Response PlayerCloakedSpyMedicSpy -} - -Response PlayerCloakedSpyPyroSpy -{ - scene "scenes/Player/Spy/low/727.vcd" -} -Rule PlayerCloakedSpyPyroSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnPyro - Response PlayerCloakedSpyPyroSpy -} - -Response PlayerCloakedSpyScoutSpy -{ - scene "scenes/Player/Spy/low/721.vcd" -} -Rule PlayerCloakedSpyScoutSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnScout - Response PlayerCloakedSpyScoutSpy -} - -Response PlayerCloakedSpySniperSpy -{ - scene "scenes/Player/Spy/low/737.vcd" -} -Rule PlayerCloakedSpySniperSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnSniper - Response PlayerCloakedSpySniperSpy -} - -Response PlayerCloakedSpySoldierSpy -{ - scene "scenes/Player/Spy/low/723.vcd" -} -Rule PlayerCloakedSpySoldierSpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnSoldier - Response PlayerCloakedSpySoldierSpy -} - -Response PlayerCloakedSpySpySpy -{ - scene "scenes/Player/Spy/low/731.vcd" - scene "scenes/Player/Spy/low/732.vcd" -} -Rule PlayerCloakedSpySpySpy -{ - criteria ConceptPlayerCloakedSpy IsSpy IsOnSpy - Response PlayerCloakedSpySpySpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech -//-------------------------------------------------------------------------------------------------------------- -Response HealThanksSpy -{ - scene "scenes/Player/Spy/low/851.vcd" - scene "scenes/Player/Spy/low/852.vcd" - scene "scenes/Player/Spy/low/853.vcd" -} -Rule HealThanksSpy -{ - criteria ConceptMedicChargeStopped IsSpy SuperHighHealthContext SpyNotSaidHealThanks 50PercentChance - ApplyContext "SpySaidHealThanks:1:20" - Response HealThanksSpy -} - -Response PlayerRoundStartSpy -{ - scene "scenes/Player/Spy/low/708.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Spy/low/709.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Spy/low/1309.vcd" predelay "1.0, 5.0" - scene "scenes/Player/Spy/low/707.vcd" predelay "1.0, 5.0" -} -Rule PlayerRoundStartSpy -{ - criteria ConceptPlayerRoundStart IsSpy - Response PlayerRoundStartSpy -} - -Response PlayerCappedIntelligenceSpy -{ - scene "scenes/Player/Spy/low/698.vcd" - scene "scenes/Player/Spy/low/699.vcd" - scene "scenes/Player/Spy/low/700.vcd" -} -Rule PlayerCappedIntelligenceSpy -{ - criteria ConceptPlayerCapturedIntelligence IsSpy - Response PlayerCappedIntelligenceSpy -} - -Response PlayerCapturedPointSpy -{ - scene "scenes/Player/Spy/low/695.vcd" - scene "scenes/Player/Spy/low/696.vcd" - scene "scenes/Player/Spy/low/697.vcd" -} -Rule PlayerCapturedPointSpy -{ - criteria ConceptPlayerCapturedPoint IsSpy - Response PlayerCapturedPointSpy -} - -Response PlayerSuddenDeathSpy -{ - scene "scenes/Player/Spy/low/766.vcd" - scene "scenes/Player/Spy/low/767.vcd" - scene "scenes/Player/Spy/low/768.vcd" - scene "scenes/Player/Spy/low/769.vcd" - scene "scenes/Player/Spy/low/771.vcd" - scene "scenes/Player/Spy/low/770.vcd" -} -Rule PlayerSuddenDeathSpy -{ - criteria ConceptPlayerSuddenDeathStart IsSpy - Response PlayerSuddenDeathSpy -} - -Response PlayerStalemateSpy -{ - scene "scenes/Player/Spy/low/701.vcd" - scene "scenes/Player/Spy/low/702.vcd" - scene "scenes/Player/Spy/low/703.vcd" -} -Rule PlayerStalemateSpy -{ - criteria ConceptPlayerStalemate IsSpy - Response PlayerStalemateSpy -} - -Response PlayerTeleporterThanksSpy -{ - scene "scenes/Player/Spy/low/854.vcd" - scene "scenes/Player/Spy/low/855.vcd" - scene "scenes/Player/Spy/low/856.vcd" -} -Rule PlayerTeleporterThanksSpy -{ - criteria ConceptTeleported IsNotEngineer IsSpy 30PercentChance - Response PlayerTeleporterThanksSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Combat -//-------------------------------------------------------------------------------------------------------------- -Response DefendOnThePointSpy -{ - scene "scenes/Player/Spy/low/830.vcd" - scene "scenes/Player/Spy/low/1323.vcd" - scene "scenes/Player/Spy/low/1324.vcd" - scene "scenes/Player/Spy/low/1325.vcd" -} -Rule DefendOnThePointSpy -{ - criteria ConceptFireWeapon IsSpy IsOnFriendlyControlPoint NotDefendOnThePointSpeech - ApplyContext "DefendOnThePointSpeech:1:30" - applycontexttoworld - Response DefendOnThePointSpy -} - -Response KilledPlayerManySpy -{ - scene "scenes/Player/Spy/low/772.vcd" - scene "scenes/Player/Spy/low/1312.vcd" - scene "scenes/Player/Spy/low/773.vcd" - scene "scenes/Player/Spy/low/774.vcd" - scene "scenes/Player/Spy/low/1313.vcd" - scene "scenes/Player/Spy/low/775.vcd" - scene "scenes/Player/Spy/low/1322.vcd" - scene "scenes/Player/Spy/low/824.vcd" - scene "scenes/Player/Spy/low/825.vcd" -} -Rule KilledPlayerManySpy -{ - criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay SpyNotKillSpeech IsSpy - ApplyContext "SpyKillSpeech:1:10" - applycontexttoworld - Response KilledPlayerManySpy -} - -Response KilledPlayerMeleeSpy -{ - scene "scenes/Player/Spy/low/817.vcd" - scene "scenes/Player/Spy/low/818.vcd" - scene "scenes/Player/Spy/low/826.vcd" -} -Rule KilledPlayerMeleeSpy -{ - criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee SpyNotKillSpeechMelee IsSpy - ApplyContext "SpyKillSpeechMelee:1:10" - applycontexttoworld - Response KilledPlayerMeleeSpy -} - -Response MedicFollowSpy -{ - scene "scenes/Player/Spy/low/3030.vcd" predelay ".25" - scene "scenes/Player/Spy/low/3015.vcd" predelay ".25" -} -Rule MedicFollowSpy -{ - criteria ConceptPlayerMedic IsOnMedic IsSpy IsNotCrossHairEnemy - ApplyContext "SpyKillSpeech:1:10" - Response MedicFollowSpy -} - -Response PlayerJarateHit -{ - scene "scenes/Player/Spy/low/3073.vcd" - scene "scenes/Player/Spy/low/3074.vcd" - scene "scenes/Player/Spy/low/3075.vcd" - scene "scenes/Player/Spy/low/3076.vcd" - scene "scenes/Player/Spy/low/3078.vcd" - scene "scenes/Player/Spy/low/3072.vcd" -} -Rule PlayerJarateHit -{ - criteria ConceptJarateHit IsSpy - Response PlayerJarateHit -} - -Response PlayerKilledCapperSpy -{ - scene "scenes/Player/Spy/low/713.vcd" - scene "scenes/Player/Spy/low/716.vcd" - scene "scenes/Player/Spy/low/809.vcd" - scene "scenes/Player/Spy/low/810.vcd" - scene "scenes/Player/Spy/low/811.vcd" -} -Rule PlayerKilledCapperSpy -{ - criteria ConceptCapBlocked IsSpy - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledCapperSpy -} - -Response PlayerKilledDominatingDemomanSpy -{ - scene "scenes/Player/Spy/low/3008.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3025.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3065.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3066.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3067.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3068.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingDemomanSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimDemoman - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingDemomanSpy -} - -Response PlayerKilledDominatingEngineerSpy -{ - scene "scenes/Player/Spy/low/3009.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3037.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3062.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3063.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3064.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3070.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingEngineerSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimEngineer - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingEngineerSpy -} - -Response PlayerKilledDominatingHeavySpy -{ - scene "scenes/Player/Spy/low/3019.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3024.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3031.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3056.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3057.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3058.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3069.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3055.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingHeavySpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimHeavy - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingHeavySpy -} - -Response PlayerKilledDominatingMedicSpy -{ - scene "scenes/Player/Spy/low/3026.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3027.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3028.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3029.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3040.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3071.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingMedicSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimMedic - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingMedicSpy -} - -Response PlayerKilledDominatingPyroSpy -{ - scene "scenes/Player/Spy/low/3010.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3022.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3041.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3042.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3032.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingPyroSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimPyro - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingPyroSpy -} - -Response PlayerKilledDominatingScoutSpy -{ - scene "scenes/Player/Spy/low/3011.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3043.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3044.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3045.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3046.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3047.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3048.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3049.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingScoutSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimScout - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingScoutSpy -} - -Response PlayerKilledDominatingSniperSpy -{ - scene "scenes/Player/Spy/low/3012.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3020.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3033.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3050.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3036.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3052.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3051.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSniperSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimSniper - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingSniperSpy -} - -Response PlayerKilledDominatingSoldierSpy -{ - scene "scenes/Player/Spy/low/3013.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3034.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3053.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3054.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3061.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSoldierSpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimSoldier - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingSoldierSpy -} - -Response PlayerKilledDominatingSpySpy -{ - scene "scenes/Player/Spy/low/3014.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3021.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3059.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3077.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/3060.vcd" predelay "2.5" -} -Rule PlayerKilledDominatingSpySpy -{ - criteria ConceptKilledPlayer IsSpy IsDominated IsVictimSpy - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledDominatingSpySpy -} - -Response PlayerKilledForRevengeSpy -{ - scene "scenes/Player/Spy/low/710.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/715.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/743.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/812.vcd" predelay "2.5" - scene "scenes/Player/Spy/low/813.vcd" predelay "2.5" -} -Rule PlayerKilledForRevengeSpy -{ - criteria ConceptKilledPlayer IsSpy IsRevenge - ApplyContext "SpyKillSpeech:1:10" - Response PlayerKilledForRevengeSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Auto Speech Pain -//-------------------------------------------------------------------------------------------------------------- -Response PlayerAttackerPainSpy -{ - scene "scenes/Player/Spy/low/803.vcd" - scene "scenes/Player/Spy/low/804.vcd" - scene "scenes/Player/Spy/low/805.vcd" - scene "scenes/Player/Spy/low/1387.vcd" - scene "scenes/Player/Spy/low/1388.vcd" -} -Rule PlayerAttackerPainSpy -{ - criteria ConceptAttackerPain IsSpy - Response PlayerAttackerPainSpy -} - -Response PlayerOnFireSpy -{ - scene "scenes/Player/Spy/low/704.vcd" -} -Rule PlayerOnFireSpy -{ - criteria ConceptFire IsSpy SpyIsNotStillonFire - ApplyContext "SpyOnFire:1:7" - Response PlayerOnFireSpy -} - -Response PlayerOnFireRareSpy -{ - scene "scenes/Player/Spy/low/705.vcd" - scene "scenes/Player/Spy/low/706.vcd" -} -Rule PlayerOnFireRareSpy -{ - criteria ConceptFire IsSpy 10PercentChance SpyIsNotStillonFire - ApplyContext "SpyOnFire:1:7" - Response PlayerOnFireRareSpy -} - -Response PlayerPainSpy -{ - scene "scenes/Player/Spy/low/806.vcd" - scene "scenes/Player/Spy/low/807.vcd" - scene "scenes/Player/Spy/low/808.vcd" - scene "scenes/Player/Spy/low/1381.vcd" -} -Rule PlayerPainSpy -{ - criteria ConceptPain IsSpy - Response PlayerPainSpy -} - -Response PlayerStillOnFireSpy -{ - scene "scenes/Player/Spy/low/1928.vcd" -} -Rule PlayerStillOnFireSpy -{ - criteria ConceptFire IsSpy SpyIsStillonFire - ApplyContext "SpyOnFire:1:7" - Response PlayerStillOnFireSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Duel Speech -//-------------------------------------------------------------------------------------------------------------- -Response AcceptedDuelSpy -{ - scene "scenes/Player/Spy/low/709.vcd" - scene "scenes/Player/Spy/low/834.vcd" - scene "scenes/Player/Spy/low/833.vcd" - scene "scenes/Player/Spy/low/845.vcd" - scene "scenes/Player/Spy/low/847.vcd" - scene "scenes/Player/Spy/low/858.vcd" - scene "scenes/Player/Spy/low/859.vcd" -} -Rule AcceptedDuelSpy -{ - criteria ConceptIAcceptDuel IsSpy - Response AcceptedDuelSpy -} - -Response MeleeDareSpy -{ - scene "scenes/Player/Spy/low/3016.vcd" - scene "scenes/Player/Spy/low/3023.vcd" -} -Rule MeleeDareSpy -{ - criteria ConceptRequestDuel IsSpy - Response MeleeDareSpy -} - -Response RejectedDuelSpy -{ - scene "scenes/Player/Spy/low/703.vcd" - scene "scenes/Player/Spy/low/790.vcd" - scene "scenes/Player/Spy/low/791.vcd" - scene "scenes/Player/Spy/low/824.vcd" - scene "scenes/Player/Spy/low/825.vcd" - scene "scenes/Player/Spy/low/831.vcd" -} -Rule RejectedDuelSpy -{ - criteria ConceptDuelRejected IsSpy - Response RejectedDuelSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 1 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerGoSpy -{ - scene "scenes/Player/Spy/low/740.vcd" - scene "scenes/Player/Spy/low/741.vcd" - scene "scenes/Player/Spy/low/742.vcd" -} -Rule PlayerGoSpy -{ - criteria ConceptPlayerGo IsSpy - Response PlayerGoSpy -} - -Response PlayerHeadLeftSpy -{ - scene "scenes/Player/Spy/low/746.vcd" - scene "scenes/Player/Spy/low/747.vcd" - scene "scenes/Player/Spy/low/748.vcd" -} -Rule PlayerHeadLeftSpy -{ - criteria ConceptPlayerLeft IsSpy - Response PlayerHeadLeftSpy -} - -Response PlayerHeadRightSpy -{ - scene "scenes/Player/Spy/low/749.vcd" - scene "scenes/Player/Spy/low/750.vcd" - scene "scenes/Player/Spy/low/751.vcd" -} -Rule PlayerHeadRightSpy -{ - criteria ConceptPlayerRight IsSpy - Response PlayerHeadRightSpy -} - -Response PlayerHelpSpy -{ - scene "scenes/Player/Spy/low/752.vcd" - scene "scenes/Player/Spy/low/753.vcd" - scene "scenes/Player/Spy/low/754.vcd" -} -Rule PlayerHelpSpy -{ - criteria ConceptPlayerHelp IsSpy - Response PlayerHelpSpy -} - -Response PlayerHelpCaptureSpy -{ - scene "scenes/Player/Spy/low/755.vcd" - scene "scenes/Player/Spy/low/756.vcd" - scene "scenes/Player/Spy/low/757.vcd" -} -Rule PlayerHelpCaptureSpy -{ - criteria ConceptPlayerHelp IsSpy IsOnCappableControlPoint - ApplyContext "SpyHelpCap:1:10" - Response PlayerHelpCaptureSpy -} - -Response PlayerHelpCapture2Spy -{ - scene "scenes/Player/Spy/low/830.vcd" - scene "scenes/Player/Spy/low/1323.vcd" - scene "scenes/Player/Spy/low/1324.vcd" - scene "scenes/Player/Spy/low/1325.vcd" -} -Rule PlayerHelpCapture2Spy -{ - criteria ConceptPlayerHelp IsSpy IsOnCappableControlPoint IsHelpCapSpy - Response PlayerHelpCapture2Spy -} - -Response PlayerHelpDefendSpy -{ - scene "scenes/Player/Spy/low/758.vcd" - scene "scenes/Player/Spy/low/759.vcd" - scene "scenes/Player/Spy/low/760.vcd" -} -Rule PlayerHelpDefendSpy -{ - criteria ConceptPlayerHelp IsSpy IsOnFriendlyControlPoint - Response PlayerHelpDefendSpy -} - -Response PlayerMedicSpy -{ - scene "scenes/Player/Spy/low/779.vcd" - scene "scenes/Player/Spy/low/780.vcd" - scene "scenes/Player/Spy/low/781.vcd" -} -Rule PlayerMedicSpy -{ - criteria ConceptPlayerMedic IsSpy - Response PlayerMedicSpy -} - -Response PlayerMoveUpSpy -{ - scene "scenes/Player/Spy/low/782.vcd" - scene "scenes/Player/Spy/low/1317.vcd" -} -Rule PlayerMoveUpSpy -{ - criteria ConceptPlayerMoveUp IsSpy - Response PlayerMoveUpSpy -} - -Response PlayerNoSpy -{ - scene "scenes/Player/Spy/low/797.vcd" - scene "scenes/Player/Spy/low/798.vcd" - scene "scenes/Player/Spy/low/799.vcd" -} -Rule PlayerNoSpy -{ - criteria ConceptPlayerNo IsSpy - Response PlayerNoSpy -} - -Response PlayerThanksSpy -{ - scene "scenes/Player/Spy/low/849.vcd" - scene "scenes/Player/Spy/low/850.vcd" - scene "scenes/Player/Spy/low/1326.vcd" -} -Rule PlayerThanksSpy -{ - criteria ConceptPlayerThanks IsSpy - Response PlayerThanksSpy -} - -Response PlayerYesSpy -{ - scene "scenes/Player/Spy/low/857.vcd" - scene "scenes/Player/Spy/low/858.vcd" - scene "scenes/Player/Spy/low/859.vcd" -} -Rule PlayerYesSpy -{ - criteria ConceptPlayerYes IsSpy - Response PlayerYesSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 2 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerActivateChargeSpy -{ - scene "scenes/Player/Spy/low/692.vcd" - scene "scenes/Player/Spy/low/693.vcd" - scene "scenes/Player/Spy/low/694.vcd" -} -Rule PlayerActivateChargeSpy -{ - criteria ConceptPlayerActivateCharge IsSpy - Response PlayerActivateChargeSpy -} - -Response PlayerCloakedSpySpy -{ - scene "scenes/Player/Spy/low/718.vcd" - scene "scenes/Player/Spy/low/719.vcd" - scene "scenes/Player/Spy/low/720.vcd" - scene "scenes/Player/Spy/low/1310.vcd" -} -Rule PlayerCloakedSpySpy -{ - criteria ConceptPlayerCloakedSpy IsSpy - Response PlayerCloakedSpySpy -} - -Response PlayerDispenserHereSpy -{ - scene "scenes/Player/Spy/low/783.vcd" -} -Rule PlayerDispenserHereSpy -{ - criteria ConceptPlayerDispenserHere IsSpy - Response PlayerDispenserHereSpy -} - -Response PlayerIncomingSpy -{ - scene "scenes/Player/Spy/low/761.vcd" - scene "scenes/Player/Spy/low/762.vcd" - scene "scenes/Player/Spy/low/763.vcd" -} -Rule PlayerIncomingSpy -{ - criteria ConceptPlayerIncoming IsSpy - Response PlayerIncomingSpy -} - -Response PlayerSentryAheadSpy -{ - scene "scenes/Player/Spy/low/815.vcd" - scene "scenes/Player/Spy/low/814.vcd" -} -Rule PlayerSentryAheadSpy -{ - criteria ConceptPlayerSentryAhead IsSpy - Response PlayerSentryAheadSpy -} - -Response PlayerSentryHereSpy -{ - scene "scenes/Player/Spy/low/786.vcd" -} -Rule PlayerSentryHereSpy -{ - criteria ConceptPlayerSentryHere IsSpy - Response PlayerSentryHereSpy -} - -Response PlayerTeleporterHereSpy -{ - scene "scenes/Player/Spy/low/788.vcd" -} -Rule PlayerTeleporterHereSpy -{ - criteria ConceptPlayerTeleporterHere IsSpy - Response PlayerTeleporterHereSpy -} - - -//-------------------------------------------------------------------------------------------------------------- -// Speech Menu 3 -//-------------------------------------------------------------------------------------------------------------- -Response PlayerBattleCrySpy -{ - scene "scenes/Player/Spy/low/708.vcd" - scene "scenes/Player/Spy/low/709.vcd" - scene "scenes/Player/Spy/low/1309.vcd" - scene "scenes/Player/Spy/low/707.vcd" -} -Rule PlayerBattleCrySpy -{ - criteria ConceptPlayerBattleCry IsSpy - Response PlayerBattleCrySpy -} - -Response PlayerCheersSpy -{ - scene "scenes/Player/Spy/low/710.vcd" - scene "scenes/Player/Spy/low/711.vcd" - scene "scenes/Player/Spy/low/712.vcd" - scene "scenes/Player/Spy/low/713.vcd" - scene "scenes/Player/Spy/low/714.vcd" - scene "scenes/Player/Spy/low/715.vcd" - scene "scenes/Player/Spy/low/716.vcd" - scene "scenes/Player/Spy/low/717.vcd" -} -Rule PlayerCheersSpy -{ - criteria ConceptPlayerCheers IsSpy - Response PlayerCheersSpy -} - -Response PlayerDisguisedTauntsSpy -{ - scene "scenes/Player/Spy/low/840.vcd" - scene "scenes/Player/Spy/low/839.vcd" -} -Rule PlayerDisguisedTauntsSpy -{ - criteria ConceptPlayerTaunts IsDisguised IsSpy - Response PlayerDisguisedTauntsSpy -} - -Response PlayerGoodJobSpy -{ - scene "scenes/Player/Spy/low/743.vcd" - scene "scenes/Player/Spy/low/744.vcd" - scene "scenes/Player/Spy/low/745.vcd" -} -Rule PlayerGoodJobSpy -{ - criteria ConceptPlayerGoodJob IsSpy - Response PlayerGoodJobSpy -} - -Response PlayerJeersSpy -{ - scene "scenes/Player/Spy/low/766.vcd" - scene "scenes/Player/Spy/low/767.vcd" - scene "scenes/Player/Spy/low/768.vcd" - scene "scenes/Player/Spy/low/769.vcd" - scene "scenes/Player/Spy/low/771.vcd" - scene "scenes/Player/Spy/low/770.vcd" -} -Rule PlayerJeersSpy -{ - criteria ConceptPlayerJeers IsSpy - Response PlayerJeersSpy -} - -Response PlayerLostPointSpy -{ - scene "scenes/Player/Spy/low/792.vcd" - scene "scenes/Player/Spy/low/793.vcd" - scene "scenes/Player/Spy/low/790.vcd" - scene "scenes/Player/Spy/low/791.vcd" - scene "scenes/Player/Spy/low/789.vcd" - scene "scenes/Player/Spy/low/1318.vcd" - scene "scenes/Player/Spy/low/1319.vcd" - scene "scenes/Player/Spy/low/1320.vcd" - scene "scenes/Player/Spy/low/1321.vcd" -} -Rule PlayerLostPointSpy -{ - criteria ConceptPlayerLostPoint IsSpy - Response PlayerLostPointSpy -} - -Response PlayerNegativeSpy -{ - scene "scenes/Player/Spy/low/792.vcd" - scene "scenes/Player/Spy/low/793.vcd" - scene "scenes/Player/Spy/low/790.vcd" - scene "scenes/Player/Spy/low/791.vcd" - scene "scenes/Player/Spy/low/789.vcd" - scene "scenes/Player/Spy/low/1318.vcd" - scene "scenes/Player/Spy/low/1319.vcd" - scene "scenes/Player/Spy/low/1320.vcd" - scene "scenes/Player/Spy/low/1321.vcd" -} -Rule PlayerNegativeSpy -{ - criteria ConceptPlayerNegative IsSpy - Response PlayerNegativeSpy -} - -Response PlayerNiceShotSpy -{ - scene "scenes/Player/Spy/low/794.vcd" - scene "scenes/Player/Spy/low/795.vcd" - scene "scenes/Player/Spy/low/796.vcd" -} -Rule PlayerNiceShotSpy -{ - criteria ConceptPlayerNiceShot IsSpy - Response PlayerNiceShotSpy -} - -Response PlayerPositiveSpy -{ - scene "scenes/Player/Spy/low/809.vcd" - scene "scenes/Player/Spy/low/810.vcd" - scene "scenes/Player/Spy/low/811.vcd" - scene "scenes/Player/Spy/low/812.vcd" - scene "scenes/Player/Spy/low/813.vcd" -} -Rule PlayerPositiveSpy -{ - criteria ConceptPlayerPositive IsSpy - Response PlayerPositiveSpy -} - -Response PlayerTauntsSpy -{ - scene "scenes/Player/Spy/low/777.vcd" - scene "scenes/Player/Spy/low/778.vcd" - scene "scenes/Player/Spy/low/1314.vcd" - scene "scenes/Player/Spy/low/1315.vcd" - scene "scenes/Player/Spy/low/1316.vcd" -} -Rule PlayerTauntsSpy -{ - criteria ConceptPlayerTaunts IsSpy - Response PlayerTauntsSpy -} - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/tf.txt b/addon/gamemodes/teamfortress/content/scripts/talker/tf.txt deleted file mode 100644 index 3801cfeb5..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/tf.txt +++ /dev/null @@ -1,988 +0,0 @@ -//============================================================================================================ -// TF criteria - moved to response_rules.txt file. Please keep all definitions there. -//============================================================================================================ - - -//============================================================================================================ -// Taunts, idle expressions, firing expressions (not all chars have idle responses, depends on their 'default' face) -//============================================================================================================ - - -// Pyro -//------------------------------------------------------------------------------------------------------------ - - response "PyroTauntPrimary" - { - scene "scenes/player/pyro/low/taunt01_v1.vcd" - scene "scenes/player/pyro/low/taunt01_v2.vcd" - scene "scenes/player/pyro/low/taunt01_v3.vcd" - } - response "PyroTauntSecondary" - { - scene "scenes/player/pyro/low/taunt02.vcd" - } - response "PyroTauntMelee" - { - scene "scenes/player/pyro/low/taunt03.vcd" - } - response "PyroTauntItem1" - { - scene "scenes/player/pyro/low/taunt02.vcd" - } - response "PyroTauntHalloween" - { - scene "scenes/player/pyro/low/taunt06.vcd" - } - rule PyroTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsPyro WeaponIsFlamethrower - response PyroTauntPrimary - } - rule PyroTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsPyro WeaponIsShotgunPyro - response PyroTauntSecondary - } - rule PyroTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsPyro WeaponIsAxe - response PyroTauntMelee - } - rule PyroTauntPlayerItem1 - { - criteria ConceptPlayerTaunt IsPyro WeaponIsFlaregun - response PyroTauntItem1 - } - rule PyroTauntHalloween - { - criteria ConceptPlayerTaunt IsPyro IsHalloweenTaunt - response PyroTauntHalloween - } - -//============================================================================================================ - - -// Heavy -//------------------------------------------------------------------------------------------------------------ - response "HeavyTauntPrimary" - { - scene "scenes/player/heavy/low/taunt01.vcd" - scene "scenes/player/heavy/low/taunt01_v2.vcd" - scene "scenes/player/heavy/low/taunt01_v3.vcd" - } - response "HeavyTauntSecondary" - { - scene "scenes/player/heavy/low/taunt02.vcd" - scene "scenes/player/heavy/low/taunt02_v1.vcd" - scene "scenes/player/heavy/low/taunt02_v2.vcd" - } - response "HeavyTauntMelee" - { - scene "scenes/player/heavy/low/taunt03_v1.vcd" - } - response "HeavyTauntPlayerItem1" - { - scene "scenes/player/heavy/low/taunt04.vcd" - } - response "HeavyTauntPlayerGloves" - { - scene "scenes/player/heavy/low/taunt05.vcd" - } - response "HeavyTauntHalloween" - { - scene "scenes/player/heavy/low/taunt06.vcd" - } - rule HeavyTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsHeavy WeaponIsMinigun - response HeavyTauntPrimary - } - rule HeavyTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsHeavy WeaponIsShotgunHwg - response HeavyTauntSecondary - } - rule HeavyTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsHeavy WeaponIsFists - response HeavyTauntMelee - } - rule HeavyTauntPlayerGloves - { - criteria ConceptPlayerTaunt IsHeavy WeaponIsGloves - response HeavyTauntPlayerGloves - } - rule HeavyTauntPlayerItem1 - { - criteria ConceptPlayerTaunt IsHeavy WeaponIsLunchbox - response HeavyTauntPlayerItem1 - } - rule HeavyTauntHalloween - { - criteria ConceptPlayerTaunt IsHeavy IsHalloweenTaunt - response HeavyTauntHalloween - } - Response PlayerExpressionIdleHeavy - { - scene "scenes/player/heavy/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleHeavy - { - criteria ConceptPlayerExpression IsHeavy - Response PlayerExpressionIdleHeavy - } - - - Response PlayerExpressionFiringMinigunHeavy - { - scene "scenes/player/heavy/low/attackMinigun02.vcd" - } - Rule PlayerExpressionFiringMinigunHeavy - { - criteria ConceptPlayerExpression IsHeavy IsFiringMinigun - Response PlayerExpressionFiringMinigunHeavy - } - - Response HeavyTimeFiringMinigunShort - { - scene "scenes/player/heavy/low/attackminigun_vocal02.vcd" - scene "scenes/player/heavy/low/attackminigun_vocal03.vcd" - } - Rule HeavyTimeFiringMinigunShort - { - criteria ConceptFireMinigunTalk IsHeavy WeaponIsMinigun TimeFiringMinigunShort 30PercentChance - Response HeavyTimeFiringMinigunShort - } - - Response HeavyTimeFiringMinigunLong - { - scene "scenes/player/heavy/low/specialcompleted11.vcd" - scene "scenes/player/heavy/low/laughShort03.vcd" - } - Rule HeavyTimeFiringMinigunLong - { - criteria ConceptFireMinigunTalk IsHeavy WeaponIsMinigun TimeFiringMinigunLong 50PercentChance - Response HeavyTimeFiringMinigunLong - } - - Response HeavyTimeFiringMinigunReallyLong - { - scene "scenes/player/heavy/low/attackMinigun_vocal05.vcd" - scene "scenes/player/heavy/low/specialcompleted07.vcd" - } - Rule HeavyTimeFiringMinigunReallyLong - { - criteria ConceptFireMinigunTalk IsHeavy WeaponIsMinigun TimeFiringMinigunReallyLong 50PercentChance - Response HeavyTimeFiringMinigunReallyLong - } - - Response PlayerExpressionIdleHurtHeavy - { - scene "scenes/player/heavy/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtHeavy - { - criteria ConceptPlayerExpression IsHeavy LowHealthContext - Response PlayerExpressionIdleHurtHeavy - } - Rule PlayerExpressionRoundLossHeavy - { - criteria ConceptPlayerExpression IsHeavy GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtHeavy - } - - Response HeavyFireMinigun - { - //scene "scenes/player/heavy/low/attackMinigun01.vcd" *bug* - scene "scenes/player/heavy/low/attackMinigun02.vcd" - } - Rule HeavyFireMinigun - { - criteria ConceptFireMinigun IsHeavy WeaponIsMinigun - Response HeavyFireMinigun - } - - Response HeavyWindMinigun - { - scene "scenes/player/heavy/low/attackWindup01.vcd" - } - Rule HeavyWindMinigunHeavy - { - criteria ConceptWindMinigun IsHeavy WeaponIsMinigun - Response HeavyWindMinigun - } - - Response PlayerExpressionAttackHeavy - { - scene "scenes/player/heavy/low/attack01.vcd" - } - Rule PlayerExpressionAttackHeavy - { - criteria ConceptFireWeapon IsHeavy - Response PlayerExpressionAttackHeavy - } - - //-------------------------------------------------------------------------------------------------------------- - // Auto Speech Sandwich - //-------------------------------------------------------------------------------------------------------------- - Response AteSandwichHeavy - { - scene "scenes/Player/Heavy/low/SandwichTaunt01.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt02.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt03.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt04.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt05.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt06.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt07.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt08.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt09.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt10.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt11.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt12.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt13.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt14.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt15.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt16.vcd" - scene "scenes/Player/Heavy/low/SandwichTaunt17.vcd" - } - Rule AteSandwichHeavy - { - criteria ConceptAteFood IsHeavy - Response AteSandwichHeavy - } - -//============================================================================================================ - - -// Engineer -//------------------------------------------------------------------------------------------------------------ - response "EngineerTauntPrimary" - { - scene "scenes/player/engineer/low/taunt01_vocal01.vcd" - scene "scenes/player/engineer/low/taunt01_vocal02.vcd" - scene "scenes/player/engineer/low/taunt01_vocal03.vcd" - scene "scenes/player/engineer/low/taunt01_vocal04.vcd" - } - response "EngineerTauntSecondary" - { - scene "scenes/player/engineer/low/taunt02_vocal01.vcd" - scene "scenes/player/engineer/low/taunt02_vocal02.vcd" - scene "scenes/player/engineer/low/taunt02_vocal03.vcd" - } - response "EngineerTauntMelee" - { - scene "scenes/player/engineer/low/taunt03.vcd" - } - response "EngineerTauntHalloween" - { - scene "scenes/player/engineer/low/taunt06.vcd" - } - response "EngineerTauntGuitar" - { - scene "scenes/player/engineer/low/taunt07.vcd" - } - response "EngineerTauntRobotArm" - { - scene "scenes/player/engineer/low/taunt09.vcd" - } - - rule EngineerTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsEngineer WeaponIsShotgunPrimary - response EngineerTauntPrimary - } - rule EngineerTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsEngineer WeaponIsPistol - response EngineerTauntSecondary - } - rule EngineerTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsEngineer WeaponIsWrench - response EngineerTauntMelee - } - rule EngineerTauntGuitar - { - criteria ConceptPlayerTaunt IsEngineer WeaponIsFrontierJustice - response EngineerTauntGuitar - } - rule EngineerTauntRobotArm - { - criteria ConceptPlayerTaunt IsEngineer WeaponIsRobotArm - response EngineerTauntRobotArm - } - rule EngineerTauntHalloween - { - criteria ConceptPlayerTaunt IsEngineer IsHalloweenTaunt - response EngineerTauntHalloween - } - Response PlayerExpressionIdleEngineer - { - scene "scenes/player/engineer/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleEngineer - { - criteria ConceptPlayerExpression IsEngineer - Response PlayerExpressionIdleEngineer - } - - Response PlayerExpressionIdleHurtEngineer - { - scene "scenes/player/engineer/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtEngineer - { - criteria ConceptPlayerExpression IsEngineer LowHealthContext - Response PlayerExpressionIdleHurtEngineer - } - Rule PlayerExpressionRoundLossEngineer - { - criteria ConceptPlayerExpression IsEngineer GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtEngineer - } - - Response PlayerExpressionAttackEngineer - { - scene "scenes/player/engineer/low/attack01.vcd" - } - Rule PlayerExpressionAttackEngineer - { - criteria ConceptFireWeapon IsEngineer - Response PlayerExpressionAttackEngineer - } - -//============================================================================================================ - - -// Medic -//------------------------------------------------------------------------------------------------------------ - response "MedicTauntPrimary" - { - scene "scenes/player/medic/low/taunt01_vocal01.vcd" - scene "scenes/player/medic/low/taunt01_vocal03.vcd" - scene "scenes/player/medic/low/taunt01_vocal04.vcd" - scene "scenes/player/medic/low/taunt01_vocal05.vcd" - } - response "MedicTauntSecondary" - { - scene "scenes/player/medic/low/taunt02_v1.vcd" - } - response "MedicTauntMelee" - { - scene "scenes/player/medic/low/taunt03.vcd" - } - response "MedicTauntHalloween" - { - scene "scenes/player/medic/low/taunt07.vcd" - } - response "MedicTauntKritzkrieg" - { - scene "scenes/player/medic/low/taunt06.vcd" - } - response "MedicTauntUbersaw" - { - scene "scenes/player/medic/low/taunt08.vcd" - } - - rule MedicTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsMedic WeaponIsSyringe - response MedicTauntPrimary - } - rule MedicTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsMedic WeaponIsHeal - response MedicTauntSecondary - } - rule MedicTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsMedic WeaponIsBonesaw - response MedicTauntMelee - } - rule MedicTauntPlayerKritzkrieg - { - criteria ConceptPlayerTaunt IsMedic WeaponIsKritzkrieg - response MedicTauntKritzkrieg - } - rule MedicTauntHalloween - { - criteria ConceptPlayerTaunt IsMedic IsHalloweenTaunt - response MedicTauntHalloween - } - rule MedicTauntUbersaw - { - criteria ConceptPlayerTaunt IsMedic WeaponIsUbersaw - response MedicTauntUbersaw - } - - Response PlayerExpressionIdleMedic - { - scene "scenes/player/medic/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleMedic - { - criteria ConceptPlayerExpression IsMedic - Response PlayerExpressionIdleMedic - } - - Response PlayerExpressionIdleHurtMedic - { - scene "scenes/player/medic/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtMedic - { - criteria ConceptPlayerExpression IsMedic LowHealthContext - Response PlayerExpressionIdleHurtMedic - } - Rule PlayerExpressionRoundLossMedic - { - criteria ConceptPlayerExpression IsMedic GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtMedic - } - - Response PlayerExpressionAttackMedic - { - scene "scenes/player/medic/low/attack01.vcd" - } - Rule PlayerExpressionAttackMedic - { - criteria ConceptFireWeapon IsMedic - Response PlayerExpressionAttackMedic - } - -//============================================================================================================ - - -// Soldier -//------------------------------------------------------------------------------------------------------------ - response "SoldierTauntPrimary" - { - scene "scenes/player/soldier/low/taunt01_v1.vcd" - scene "scenes/player/soldier/low/taunt01_v2.vcd" - scene "scenes/player/soldier/low/taunt01_v3.vcd" - } - response "SoldierTauntBanner" - { - scene "scenes/player/soldier/low/taunt02_v1.vcd" - scene "scenes/player/soldier/low/taunt02_v2.vcd" - } - response "SoldierTauntSecondary" - { - scene "scenes/player/soldier/low/taunt04.vcd" - } - response "SoldierTauntMelee" - { - scene "scenes/player/soldier/low/taunt03_v1.vcd" - scene "scenes/player/soldier/low/taunt03_v2.vcd" - scene "scenes/player/soldier/low/taunt03_v3.vcd" - scene "scenes/player/soldier/low/taunt03_v4.vcd" - } - response "SoldierTauntHalloween" - { - scene "scenes/player/soldier/low/taunt06.vcd" - } - response "SoldierTauntPickaxe" - { - scene "scenes/player/soldier/low/taunt05.vcd" - } - response "SoldierTauntDirectHit" - { - scene "scenes/player/soldier/low/taunt07.vcd" - } - - rule SoldierTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsSoldier WeaponIsRocket - response SoldierTauntPrimary - } - rule SoldierTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsSoldier WeaponIsShotgunSoldier - response SoldierTauntSecondary - } - rule SoldierTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsSoldier WeaponIsShovel - response SoldierTauntMelee - } - rule SoldierTauntHalloween - { - criteria ConceptPlayerTaunt IsSoldier IsHalloweenTaunt - response SoldierTauntHalloween - } - rule SoldierTauntPickaxe - { - criteria ConceptPlayerTaunt IsSoldier WeaponIsPickaxe - response SoldierTauntPickaxe - } - rule SoldierTauntDirectHit - { - criteria ConceptPlayerTaunt IsSoldier WeaponIsDirectHit - response SoldierTauntDirectHit - } - rule SoldierTauntBanner - { - criteria ConceptPlayerTaunt IsSoldier WeaponIsBanner - response SoldierTauntBanner - } - - Response PlayerExpressionIdleSoldier - { - scene "scenes/player/soldier/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleSoldier - { - criteria ConceptPlayerExpression IsSoldier - Response PlayerExpressionIdleSoldier - } - Response PlayerExpressionIdleHurtSoldier - { - scene "scenes/player/soldier/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtSoldier - { - criteria ConceptPlayerExpression IsSoldier LowHealthContext - Response PlayerExpressionIdleHurtSoldier - } - Rule PlayerExpressionRoundLossSoldier - { - criteria ConceptPlayerExpression IsSoldier GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtSoldier - } - - Response PlayerExpressionAttackSoldier - { - scene "scenes/player/soldier/low/attack01.vcd" - } - Rule PlayerExpressionAttackSoldier - { - criteria ConceptFireWeapon IsSoldier - Response PlayerExpressionAttackSoldier - } - -//============================================================================================================ - - -// Scout -//------------------------------------------------------------------------------------------------------------ - response "ScoutTauntPrimary" - { - scene "scenes/player/scout/low/taunt01_vocal01.vcd" - scene "scenes/player/scout/low/taunt01_vocal02.vcd" - scene "scenes/player/scout/low/taunt01_vocal03.vcd" - } - response "ScoutTauntSecondary" - { - scene "scenes/player/scout/low/taunt02_vocal01.vcd" - scene "scenes/player/scout/low/taunt02_vocal02.vcd" - scene "scenes/player/scout/low/taunt02_vocal03.vcd" - } - response "ScoutTauntMelee" - { - scene "scenes/player/scout/low/taunt03_vocal01.vcd" - scene "scenes/player/scout/low/taunt03_vocal02.vcd" - scene "scenes/player/scout/low/taunt03_vocal03.vcd" - scene "scenes/player/scout/low/taunt03_vocal04.vcd" - scene "scenes/player/scout/low/taunt03_vocal05.vcd" - scene "scenes/player/scout/low/taunt03_vocal06.vcd" - } - response "ScoutTauntGrandSlam" - { - scene "scenes/player/scout/low/taunt05_v1.vcd" - } - response "ScoutTauntPrimaryDouble" - { - scene "scenes/player/scout/low/taunt01_alt_vocal01.vcd" - scene "scenes/player/scout/low/taunt01_alt_vocal02.vcd" - scene "scenes/player/scout/low/taunt01_alt_vocal03.vcd" - } - response "ScoutTauntHalloween" - { - scene "scenes/player/scout/low/taunt06_v1.vcd" - } - response "ScoutTauntPlayerItem1" - { - scene "scenes/player/scout/low/taunt04_v1.vcd" - } - - rule ScoutTauntPlayerItem1 - { - criteria ConceptPlayerTaunt IsScout WeaponIsLunchboxDrink - response ScoutTauntPlayerItem1 - } - rule ScoutTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsScout WeaponIsScattergun - response ScoutTauntPrimary - } - rule ScoutTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsScout WeaponIsPistolScout - response ScoutTauntSecondary - } - rule ScoutTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsScout WeaponIsBat - response ScoutTauntMelee - } - rule ScoutTauntWoodBat - { - criteria ConceptPlayerTaunt IsScout WeaponIsWoodBat - response ScoutTauntGrandSlam - } - rule ScoutTauntScattergunDouble - { - criteria ConceptPlayerTaunt IsScout WeaponIsScattergunDouble - response ScoutTauntPrimaryDouble - } - rule ScoutTauntShortstop - { - criteria ConceptPlayerTaunt IsScout WeaponIsShortstop - response ScoutTauntSecondary - } - rule ScoutTauntMadMilk - { - criteria ConceptPlayerTaunt IsScout WeaponIsMadMilk - response ScoutTauntSecondary - } - rule ScoutTauntHolyMackerel - { - criteria ConceptPlayerTaunt IsScout WeaponIsHolyMackerel - response ScoutTauntMelee - } - rule ScoutTauntHalloween - { - criteria ConceptPlayerTaunt IsScout IsHalloweenTaunt - response ScoutTauntHalloween - } - Response PlayerExpressionIdleScout - { - scene "scenes/player/scout/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleScout - { - criteria ConceptPlayerExpression IsScout - Response PlayerExpressionIdleScout - } - - Response PlayerExpressionIdleHurtScout - { - scene "scenes/player/scout/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtScout - { - criteria ConceptPlayerExpression IsScout LowHealthContext - Response PlayerExpressionIdleHurtScout - } - Rule PlayerExpressionRoundLossScout - { - criteria ConceptPlayerExpression IsScout GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtScout - } - - Response PlayerExpressionAttackScout - { - scene "scenes/player/scout/low/attack01.vcd" - } - Rule PlayerExpressionAttackScout - { - criteria ConceptFireWeapon IsScout - Response PlayerExpressionAttackScout - } - - //-------------------------------------------------------------------------------------------------------------- - // Auto Speech Drink - //-------------------------------------------------------------------------------------------------------------- - Response ScoutPostDrinkTired - { - scene "scenes/player/scout/low/dodgetired.vcd" - - - } - Rule ScoutPostDrinkTired - { - criteria ConceptTired IsScout - Response ScoutPostDrinkTired - } - - -//============================================================================================================ - - -// Sniper -//------------------------------------------------------------------------------------------------------------ - response "SniperTauntPrimary" - { - scene "scenes/player/sniper/low/taunt01_v1.vcd" - scene "scenes/player/sniper/low/taunt01_v2.vcd" - scene "scenes/player/sniper/low/taunt01_v3.vcd" - scene "scenes/player/sniper/low/taunt01_v4.vcd" - scene "scenes/player/sniper/low/taunt01_v5.vcd" - } - response "SniperTauntSecondary" - { - scene "scenes/player/sniper/low/taunt02_v1.vcd" - scene "scenes/player/sniper/low/taunt02_v2.vcd" - } - response "SniperTauntMelee" - { scene "scenes/player/sniper/low/taunt03_v1.vcd" - scene "scenes/player/sniper/low/taunt03_v2.vcd" - scene "scenes/player/sniper/low/taunt03_v3.vcd" - } - response "SniperTauntBow" - { - scene "scenes/player/sniper/low/taunt04.vcd" - } - response "SniperTauntHalloween" - { - scene "scenes/player/sniper/low/taunt06.vcd" - } - rule SniperTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsSniper WeaponIsSniperrifle - response SniperTauntPrimary - } - rule SniperTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsSniper WeaponIsSMG - response SniperTauntSecondary - } - rule SniperTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsSniper WeaponIsClub - response SniperTauntMelee - } - rule SniperTauntPlayerBow - { - criteria ConceptPlayerTaunt IsSniper WeaponIsBow - response SniperTauntBow - } - rule SniperTauntHalloween - { - criteria ConceptPlayerTaunt IsSniper IsHalloweenTaunt - response SniperTauntHalloween - } - Response PlayerExpressionIdleSniper - { - scene "scenes/player/sniper/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleSniper - { - criteria ConceptPlayerExpression IsSniper - Response PlayerExpressionIdleSniper - } - response PlayerExpressionIdleDeployedSniper - { - scene "scenes/player/sniper/low/idleloopDeployed01.vcd" - } - rule PlayerExpressionIdleDeployedSniper - { - criteria ConceptPlayerExpression IsSniper DeployedContext WeaponIsSniperrifle - response PlayerExpressionIdleDeployedSniper - } - Response PlayerExpressionIdleHurtSniper - { - scene "scenes/player/sniper/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtSniper - { - criteria ConceptPlayerExpression IsSniper LowHealthContext - Response PlayerExpressionIdleHurtSniper - } - Rule PlayerExpressionRoundLossSniper - { - criteria ConceptPlayerExpression IsSniper GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtSniper - } - - Response PlayerExpressionAttackSniper - { - scene "scenes/player/sniper/low/attack01.vcd" - } - Rule PlayerExpressionAttackSniper - { - criteria ConceptFireWeapon IsSniper - Response PlayerExpressionAttackSniper - } - - -//============================================================================================================ - - -// Spy -//------------------------------------------------------------------------------------------------------------ - response "SpyTauntPrimary" - { - scene "scenes/player/spy/low/taunt01_v1.vcd" - scene "scenes/player/spy/low/taunt01_v2.vcd" - scene "scenes/player/spy/low/taunt01_v3.vcd" - scene "scenes/player/spy/low/taunt01_v4.vcd" - scene "scenes/player/spy/low/taunt01_v5.vcd" - } - response "SpyTauntSecondary" - { - scene "scenes/player/spy/low/taunt02.vcd" - } - response "SpyTauntMelee" - { - scene "scenes/player/spy/low/taunt03_v1.vcd" - scene "scenes/player/spy/low/taunt03_v2.vcd" - } - response "SpyTauntPDA" - { - scene "scenes/player/spy/low/taunt04_v1.vcd" - scene "scenes/player/spy/low/taunt04_v2.vcd" - scene "scenes/player/spy/low/taunt04_v3.vcd" - scene "scenes/player/spy/low/taunt04_v4.vcd" - scene "scenes/player/spy/low/taunt04_v5.vcd" - scene "scenes/player/spy/low/taunt05.vcd" - } - response "SpyTauntHalloween" - { - scene "scenes/player/spy/low/taunt06.vcd" - } - rule SpyTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsSpy WeaponIsRevolver - response SpyTauntPrimary - } - rule SpyTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsSpy WeaponIsBuild - response SpyTauntSecondary - } - rule SpyTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsSpy WeaponIsKnife - response SpyTauntMelee - } - rule SpyTauntPlayerPDA - { - criteria ConceptPlayerTaunt IsSpy WeaponIsSpyPDA - response SpyTauntPDA - } - rule SpyTauntHalloween - { - criteria ConceptPlayerTaunt IsSpy IsHalloweenTaunt - response SpyTauntHalloween - } - Response PlayerExpressionIdleSpy - { - scene "scenes/player/spy/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleSpy - { - criteria ConceptPlayerExpression IsSpy - Response PlayerExpressionIdleSpy - } - - Response PlayerExpressionAttackSpy - { - scene "scenes/player/spy/low/attack01.vcd" - } - Rule PlayerExpressionAttackSpy - { - criteria ConceptFireWeapon IsSpy - Response PlayerExpressionAttackSpy - } -//============================================================================================================ - - -// Demoman -//------------------------------------------------------------------------------------------------------------ - response "DemomanTauntPrimary" - { - scene "scenes/player/demoman/low/taunt01.vcd" - } - response "DemomanTauntSecondary" - { - scene "scenes/player/demoman/low/taunt02.vcd" - - } - response "DemomanTauntMelee" - { - scene "scenes/player/demoman/low/taunt03_v1.vcd" - scene "scenes/player/demoman/low/taunt03_v2.vcd" - scene "scenes/player/demoman/low/taunt03_v3.vcd" - } - response "DemomanTauntHalloween" - { - scene "scenes/player/demoman/low/taunt06.vcd" - } - response "DemomanTauntDefender" - { - scene "scenes/player/demoman/low/taunt08.vcd" - } - response "DemomanTauntSword" - { - scene "scenes/player/demoman/low/taunt09.vcd" - } - - rule DemomanTauntDefender - { - criteria ConceptPlayerTaunt IsDemoman WeaponIsDefender - response DemomanTauntDefender - } - rule DemomanTauntPlayerPrimary - { - criteria ConceptPlayerTaunt IsDemoman WeaponIsPipebomb - response DemomanTauntPrimary - } - rule DemomanTauntPlayerSecondary - { - criteria ConceptPlayerTaunt IsDemoman WeaponIsGrenade - response DemomanTauntSecondary - } - rule DemomanTauntPlayerMelee - { - criteria ConceptPlayerTaunt IsDemoman WeaponIsBottle - response DemomanTauntMelee - } - rule DemomanTauntHalloween - { - criteria ConceptPlayerTaunt IsDemoman IsHalloweenTaunt - response DemomanTauntHalloween - } - rule DemomanTauntSword - { - criteria ConceptPlayerTaunt IsDemoman WeaponIsSword - response DemomanTauntSword - } - - Response PlayerExpressionIdleDemoman - { - scene "scenes/player/demoman/low/idleloop01.vcd" - } - Rule PlayerExpressionIdleDemoman - { - criteria ConceptPlayerExpression IsDemoman - Response PlayerExpressionIdleDemoman - } - - Response PlayerExpressionIdleHurtDemoman - { - scene "scenes/player/demoman/low/idleloopHurt01.vcd" - } - Rule PlayerExpressionIdleHurtDemoman - { - criteria ConceptPlayerExpression IsDemoman LowHealthContext - Response PlayerExpressionIdleHurtDemoman - } - Rule PlayerExpressionRoundLossDemoman - { - criteria ConceptPlayerExpression IsDemoman GameRulesInWinState PlayerOnLosingTeam - Response PlayerExpressionIdleHurtDemoman - } - - Response PlayerExpressionAttackDemoman - { - scene "scenes/player/demoman/low/attack01.vcd" - } - Rule PlayerExpressionAttackDemoman - { - criteria ConceptFireWeapon IsDemoman - Response PlayerExpressionAttackDemoman - } - -//============================================================================================================ - diff --git a/addon/gamemodes/teamfortress/content/scripts/talker/tf_response_rules.txt b/addon/gamemodes/teamfortress/content/scripts/talker/tf_response_rules.txt deleted file mode 100644 index 623a008f7..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/talker/tf_response_rules.txt +++ /dev/null @@ -1,447 +0,0 @@ -// This is the base rule script file for the AI response system for Expressive AI's who speak based on certain "Concepts" -// You can think of a concept as a high level state that the code is trying to convey, such as say hello, or say you're mad, etc. -// -// The format of this file is that there are five main types of commands: -// 1) #include "filename" // This just causes the included scriptfile to be parsed and added to the database -// 2) enumeration: this declares an enumerated type so that comparisons can be matched against the string versions of the type -// 3) response: this specifies a response to issue. A response consists of a weighted set of options and can recursively reference -// other responses by name -// 4) criterion: This is a match condition -// 5) rule: a rule consists of one or more criteria and a response -// -// In general, the system is presented with a criteria set, which is a set of key value pairs generated by the game code and -// various entity I/O and keyfields. For instance, the following criteria set was created in a map with a train terminal -// "speaker" entity wishing to fire random station announcements -// concept = 'train_speaker' (weight 5.000000) ; the high level concept for the search request -// map = 'terminal_pa' ; the name of the map -// classname = 'speaker' ; the classname and name of the "speaking" entity -// name = 'terminal_pa' -// health = '10' ; the absolute health of the speaking entity -// healthfrac = '0.000' ; the health fraction (health/maxhealth) of the speaking entity -// playerhealth = '100' ; similar data related to the current player: -// playerhealthfrac = '1.000' -// playerweapon = 'none' ; the name of the weapon the player is carrying -// playeractivity = 'ACT_WALK' ; animating activity of the player -// playerspeed = '0.000' ; how fast the player is moving -// -// Based on such a criteria set, the system checks each rule against the set. To do this, each criterion of the rule is -// given a numeric score as follows: -// score = 0 if criteria doesn't match or, criterion weight * keyvaliue weight if it does match -// The final score for a rule is the sum of all of the scores of its criteria. The best rule is the one with the highest -// score. Once a best rule is selected, then a response is looked up based on the response definitions and the engine is -// asked to dispatch that response. -// -// The specific syntax for the various keywords is as follows: -// -// ENUMERATIONS: -// -// enumeration -// { -// "key1" "value1" -// "key2" "value2" -// ...etc. -// } -// The code and criteria refer to enumerations with square brackets and a double colon separator, e.g.: -// [enumerationname::key1] -// -// -// RESPONSES: -// -// Single line: -// response [nodelay | defaultdelay | delay interval ] [speakonce] [noscene] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] responsetype parameters -// Multiple lines -// response -// { -// [permitrepeats] ; optional parameter, by default we visit all responses in group before repeating any -// [sequential] ; optional parameter, by default we randomly choose responses, but with this we walk through the list starting at the first and going to the last -// [norepeat] ; Once we've run through all of the entries, disable the response group -// responsetype1 parameters1 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] weight nnn -// responsetype2 parameters2 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] weight nnn -// etc. -// } -// Where: -// interval = "startnumber,endnumber" or "number" (e.g., "2.8,3.2" or "3.2") -// responsetype =: -// speak ; it's an entry in sounds.txt -// sentence ; it's a sentence name from sentences.txt -// scene ; it's a .vcd file -// response ; it's a reference to another response group by name -// print ; print the text in developer 2 (for placeholder responses) -// nodelay = an additional delay of 0 after speaking -// defaultdelay = an additional delay of 2.8 to 3.2 seconds after speaking -// delay interval = an additional delay based on a random sample from the interval after speaking -// predelay interval = delays the speech for the time interval. NOTE: Only works on scenes (i.e. no sentences/speak/print) -// speakonce = don't use this response more than one time (default off) -// noscene = For an NPC, play the sound immediately using EmitSound, don't play it through the scene system. Good for playing sounds on dying or dead NPCs. -// odds = if this response is selected, if odds < 100, then there is a chance that nothing will be said (default 100) -// respeakdelay = don't use this response again for at least this long (default 0) -// soundlevel = use this soundlevel for the speak/sentence (default SNDLVL_TALKING) -// weight = if there are multiple responses, this is a selection weighting so that certain responses are favored over others in the group (default 1) -// displayfirst/displaylast : this should be the first/last item selected (ignores weight) -// -// CRITERIA: -// -// criterion weight nnn required -// Where: -// matchkey matches one of the criteria in the set as shown above -// matchvalue is a string or number value or a range, the following are all valid: -// "0" ; numeric match to value 0 -// "1" ; numeric match to value 1 -// "weapon_smg1" ; string match to weapon_smg1 string -// "[npcstate::idle]" ; match enumeration by looking up numeric value -// ">0" ; match if greater than zero -// ">10,<=50" ; match if greater than ten and less than or equal to 50 -// ">0,<[npcstate::alert]" ; match if greater than zer and les then value of enumeration for alert -// "!=0" ; match if not equal to zero -// weight = floating point weighting for score assuming criteria match (default value 1.0) -// required: if a rule has one or more criteria with the required flag set, then if any such criteria -// fail, the entire rule receives a score of zero -// -// RULE: -// -// rule -// { -// criteria name1 [name2 name3 etc.] -// response responsegroupname [responsegroupname2 etc.] -// [matchonce] ; optional parameter -// [ weight nnn required ] -// } -// Where: -// criteria just lies one more more criterion names from above and response list one or more of the response -// names from above (usually just one) -// matchonce (off by default): means that the rule is deactivated after the first time it is matched -// Note that additional "unnamed" criteria can be specified inline in the rule using the same syntax -// as for defining a criterion, except for the criterion keyword and the criterion name keys -// -// Interaction with entity I/O system -// CBaseEntity contains an inputfunc called "DispatchResponse" which accepts a string which is a concept name -// Thus, a game entity can fire this input on another entity with a concept string and a criteria set will -// be generated and searched against the entities current response system rule set. -// Right now only the speaker entity and NPC_Talker derived NPCs have any response rules loaded -// In addition, map placed entities have up to three "context" keypairs that can be specified. -// They take the form: "key:value" (key, single colon separator, value) -// When an entity with any such context keypairs is asked to dispatch a response, the keypairs are added to the -// criteria set passed to the rule system. Thus, map placed entities and triggers can specify their -// own context keypairs and these can be hooked up to response rules to do map-specific and appropriate -// responses -// In addition, entity I/O can be used to add, remove and clear any such context keypairs via the -// AddContext, RemoveContext, and ClearContext input functions. -// AddContext takes a keypair of the "key:value" format, while RemoveContext take just the "key" -// ClearContext removes all context keypairs -// The game .dll code can enumerate context keypairs and change them via code based methods -// -// The player and the world have their context added with the string player or world as a prefix, e.g.: -// "playerkey:value" or "worldkey:value" to differentiate world/player context from the context of the -// responding entity. - -// Base script -enumeration "NPCState" -{ - "None" "0" - "Idle" "1" - "Alert" "2" - "Combat" "3" - "Scripted" "4" - "PlayDead" "5" - "Dead" "6" -} - -criterion "ConceptPlayerTaunt" "Concept" "TLK_PLAYER_TAUNT" "required" -criterion "ConceptPlayerThanks" "Concept" "TLK_PLAYER_THANKS" "required" -criterion "ConceptPlayerMedic" "Concept" "TLK_PLAYER_MEDIC" required -criterion "ConceptPlayerHelp" "Concept" "TLK_PLAYER_HELP" required -criterion "ConceptPlayerGo" "Concept" "TLK_PLAYER_GO" required -criterion "ConceptPlayerMoveUp" "Concept" "TLK_PLAYER_MOVEUP" required -criterion "ConceptPlayerLeft" "Concept" "TLK_PLAYER_LEFT" required -criterion "ConceptPlayerRight" "Concept" "TLK_PLAYER_RIGHT" required -criterion "ConceptPlayerYes" "Concept" "TLK_PLAYER_YES" required -criterion "ConceptPlayerNo" "Concept" "TLK_PLAYER_NO" required -criterion "ConceptPlayerIncoming" "Concept" "TLK_PLAYER_INCOMING" required -criterion "ConceptPlayerCloakedSpy" "Concept" "TLK_PLAYER_CLOAKEDSPY" required -criterion "ConceptPlayerSentryAhead" "Concept" "TLK_PLAYER_SENTRYAHEAD" required -criterion "ConceptPlayerTeleporterHere" "Concept" "TLK_PLAYER_TELEPORTERHERE" required -criterion "ConceptPlayerDispenserHere" "Concept" "TLK_PLAYER_DISPENSERHERE" required -criterion "ConceptPlayerSentryHere" "Concept" "TLK_PLAYER_SENTRYHERE" required -criterion "ConceptPlayerActivateCharge" "Concept" "TLK_PLAYER_ACTIVATECHARGE" required -criterion "ConceptPlayerChargeReady" "Concept" "TLK_PLAYER_CHARGEREADY" required -criterion "ConceptPlayerTaunts" "Concept" "TLK_PLAYER_TAUNTS" required -criterion "ConceptPlayerBattleCry" "Concept" "TLK_PLAYER_BATTLECRY" required -criterion "ConceptPlayerCheers" "Concept" "TLK_PLAYER_CHEERS" required -criterion "ConceptPlayerJeers" "Concept" "TLK_PLAYER_JEERS" required -criterion "ConceptPlayerPositive" "Concept" "TLK_PLAYER_POSITIVE" required -criterion "ConceptPlayerNegative" "Concept" "TLK_PLAYER_NEGATIVE" required -criterion "ConceptPlayerNiceShot" "Concept" "TLK_PLAYER_NICESHOT" required -criterion "ConceptPlayerGoodJob" "Concept" "TLK_PLAYER_GOODJOB" required -criterion "ConceptSpySapping" "Concept" "TLK_SPY_SAPPER" required -criterion "ConceptPain" "Concept" "TLK_PLAYER_PAIN" required -criterion "ConceptAttackerPain" "Concept" "TLK_PLAYER_ATTACKER_PAIN" required -criterion "ConceptFire" "Concept" "TLK_ONFIRE" required -criterion "ConceptCapBlocked" "Concept" "TLK_CAPTURE_BLOCKED" required -criterion "ConceptMedicChargeDeployed" "Concept" "TLK_MEDIC_CHARGEDEPLOYED" required -criterion "ConceptMedicChargeStopped" "Concept" "TLK_HEALTARGET_STOPPEDHEALING" required - -criterion "ConceptEngineerPickupBuilding" "Concept" "TLK_PICKUP_BUILDING" required -criterion "ConceptEngineerDeployBuilding" "Concept" "TLK_REDEPLOY_BUILDING" required -criterion "ConceptEngineerCarryingBuilding" "Concept" "TLK_CARRYING_BUILDING" required - - - - -criterion "ConceptScoutBallGrab" "Concept" "TLK_GRAB_BALL" required - - - -//Auto fire concepts -criterion "ConceptPlayerCapturedPoint" "Concept" "TLK_CAPTURED_POINT" required -criterion "ConceptPlayerRoundStart" "Concept" "TLK_ROUND_START" required -criterion "ConceptPlayerSuddenDeathStart" "Concept" "TLK_SUDDENDEATH_START" required -criterion "ConceptPlayerStalemate" "Concept" "TLK_STALEMATE" required -criterion "ConceptPlayerBuildingObject" "Concept" "TLK_BUILDING_OBJECT" required -criterion "ConceptPlayerDetonatedObject" "Concept" "TLK_DETONATED_OBJECT" required -criterion "ConceptLostObject" "Concept" "TLK_LOST_OBJECT" required -criterion "ConceptKilledObject" "Concept" "TLK_KILLED_OBJECT" required -criterion "ConceptMedicChargeReady" "Concept" "TLK_MEDIC_CHARGEREADY" required -criterion "ConceptTeleported" "Concept" "TLK_TELEPORTED" required -criterion "ConceptPlayerDead" "Concept" "TLK_DEAD" required - -criterion "ConceptPlayerGrabbedIntelligence" "Concept" "TLK_FLAGPICKUP" required -criterion "ConceptPlayerCapturedIntelligence" "Concept" "TLK_FLAGCAPTURED" required - -//cart stuff -criterion "ConceptCartMovingForward" "Concept" "TLK_CART_MOVING_FORWARD" required -criterion "ConceptCartMovingStopped" "Concept" "TLK_CART_STOP" required -criterion "ConceptCartMovingBackward" "Concept" "TLK_CART_MOVING_BACKWARD" required - -criterion "ConceptAteFood" "Concept" "TLK_ATE_FOOD" required - -//scout pack -criterion "ConceptDoubleJump" "Concept" "TLK_DOUBLE_JUMP" required -criterion "ConceptDodging" "Concept" "TLK_DODGING" required -criterion "ConceptDodgeShot" "Concept" "TLK_DODGE_SHOT" required -criterion "ConceptGrabBall" "Concept" "TLK_GRAB_BALL" required -criterion "ConceptRegenBall" "Concept" "TLK_REGEN_BALL" required -criterion "ConceptDeflected" "Concept" "TLK_DEFLECTED" required -criterion "ConceptBallMissed" "Concept" "TLK_BALL_MISSED" required -criterion "ConceptStunned" "Concept" "TLK_STUNNED" required -criterion "ConceptStunnedTarget" "Concept" "TLK_STUNNED_TARGET" required -criterion "ConceptTired" "Concept" "TLK_TIRED" required -criterion "ConceptBatBall" "Concept" "TLK_BAT_BALL" required -criterion "IsDoubleJumping" "DoubleJumping" "1" required -criterion "ConceptAchievementAward" "Concept" "TLK_ACHIEVEMENT_AWARD" required - -// spy / sniper pack -criterion "ConceptJarateLaunch" "Concept" "TLK_JARATE_LAUNCH" required -criterion "ConceptJarateHit" "Concept" "TLK_JARATE_HIT" required - -criterion "IsOnOffense" "teamrole" "offense" required -criterion "IsOnDefense" "teamrole" "defense" required - - -// Expressions -criterion "ConceptPlayerExpression" "Concept" "TLK_PLAYER_EXPRESSION" required - - -criterion "ConceptPlayerLostPoint" "Concept" "TLK_LOST_CONTROL_POINT'" required - - -criterion "IsSentryGun" "objtype" "sentrygun" required -criterion "IsTeleporter" "objtype" "teleporter" required -criterion "IsDispenser" "objtype" "dispenser" required -criterion "IsDisguised" "disguised" "1" required -criterion "IsWeaponPrimary" "weaponmode" "primary" required -criterion "IsWeaponSecondary" "weaponmode" "secondary" required -criterion "IsWeaponMelee" "weaponmode" "melee" required -criterion "IsWeaponBuilding" "weaponmode" "building" required -criterion "IsWeaponPda" "weaponmode" "pda" required - - -criterion "IsOnScout" "crosshair_on" "Scout" "required" -criterion "IsOnSniper" "crosshair_on" "Sniper" "required" -criterion "IsOnSoldier" "crosshair_on" "Soldier" "required" -criterion "IsOnDemoman" "crosshair_on" "Demoman" "required" -criterion "IsOnMedic" "crosshair_on" "Medic" "required" -criterion "IsOnHeavy" "crosshair_on" "Heavy" "required" -criterion "IsOnPyro" "crosshair_on" "Pyro" "required" -criterion "IsOnSpy" "crosshair_on" "Spy" "required" -criterion "IsOnEngineer" "crosshair_on" "Engineer" "required" - -criterion "IsDominated" "domination" "dominated" "required" -criterion "IsRevenge" "domination" "revenge" "required" -criterion "IsHeadShot" "customdeath" "headshot" "required" - - -criterion "ConceptKilledPlayer" "Concept" "TLK_KILLED_PLAYER" required -criterion "KilledPlayerDelay" "worldDontKilledPlayer" "!=1" "required" - -criterion "IsScout" "playerclass" "Scout" "required" -criterion "IsSniper" "playerclass" "Sniper" "required" -criterion "IsSoldier" "playerclass" "Soldier" "required" -criterion "IsDemoman" "playerclass" "Demoman" "required" -criterion "IsMedic" "playerclass" "Medic" "required" -criterion "IsHeavy" "playerclass" "Heavy" "required" -criterion "IsPyro" "playerclass" "Pyro" "required" -criterion "IsSpy" "playerclass" "Spy" "required" -criterion "IsEngineer" "playerclass" "Engineer" "required" - -criterion "IsNotScout" "playerclass" "!=Scout" "required" -criterion "IsNotSniper" "playerclass" "!=Sniper" "required" -criterion "IsNotSoldier" "playerclass" "!=Soldier" "required" -criterion "IsNotDemoman" "playerclass" "!=Demoman" "required" -criterion "IsNotMedic" "playerclass" "!=Medic" "required" -criterion "IsNotHeavy" "playerclass" "!=Heavy" "required" -criterion "IsNotPyro" "playerclass" "!=Pyro" "required" -criterion "IsNotSpy" "playerclass" "!=Spy" "required" -criterion "IsNotEngineer" "playerclass" "!=Engineer" "required" - - -criterion "IsVictimScout" "victimclass" "Scout" "required" weight 0 -criterion "IsVictimSniper" "victimclass" "Sniper" "required" weight 0 -criterion "IsVictimSoldier" "victimclass" "Soldier" "required" weight 0 -criterion "IsVictimDemoman" "victimclass" "Demoman" "required" weight 0 -criterion "IsVictimMedic" "victimclass" "Medic" "required" weight 0 -criterion "IsVictimHeavy" "victimclass" "Heavy" "required" weight 0 -criterion "IsVictimPyro" "victimclass" "Pyro" "required" weight 0 -criterion "IsVictimSpy" "victimclass" "Spy" "required" weight 0 -criterion "IsVictimEngineer" "victimclass" "Engineer" "required" weight 0 - -criterion "IsNotVictimScout" "victimclass" "!=Scout" "required" weight 0 -criterion "IsNotVictimSniper" "victimclass" "!=Sniper" "required" weight 0 -criterion "IsNotVictimSoldier" "victimclass" "!=Soldier" "required" weight 0 -criterion "IsNotVictimDemoman" "victimclass" "!=Demoman" "required" weight 0 -criterion "IsNotVictimMedic" "victimclass" "!=Medic" "required" weight 0 -criterion "IsNotVictimHeavy" "victimclass" "!=Heavy" "required" weight 0 -criterion "IsNotVictimPyro" "victimclass" "!=Pyro" "required" weight 0 -criterion "IsNotVictimSpy" "victimclass" "!=Spy" "required" weight 0 -criterion "IsNotVictimEngineer" "victimclass" "!=Engineer" "required" weight 0 - - - -criterion "10PercentChance" "randomnum" ">90" required -criterion "20PercentChance" "randomnum" ">80" required -criterion "30PercentChance" "randomnum" ">70" required -criterion "50PercentChance" "randomnum" ">50" required -criterion "75PercentChance" "randomnum" ">25" required -criterion "IsARecentKill" "recentkills" ">0" required -criterion "IsManyRecentKills" "recentkills" ">1" required -criterion "IsVeryManyRecentKills" "recentkills" ">3" required -criterion "IsInvulnerable" "invulnerable" "1" required weight 10 - -criterion "IsOnFriendlyControlPoint" "OnFriendlyControlPoint" "1" required -criterion "IsOnCappableControlPoint" "OnCappableControlPoint" "1" required - -criterion "WeaponIsLaserPointer" "playerweapon" "tf_weapon_laser_pointer" "required" -criterion "WeaponIsMinigun" "playerweapon" "tf_weapon_minigun" "required" -criterion "WeaponIsShotgun" "playerweapon" "tf_weapon_shotgun_secondary" "required" -criterion "WeaponIsShotgunSoldier" "playerweapon" "tf_weapon_shotgun_soldier" "required" -criterion "WeaponIsShotgunHwg" "playerweapon" "tf_weapon_shotgun_hwg" "required" -criterion "WeaponIsShotgunPyro" "playerweapon" "tf_weapon_shotgun_pyro" "required" -criterion "WeaponIsFists" "playerweapon" "tf_weapon_fists" "required" -criterion "WeaponIsFlamethrower" "playerweapon" "tf_weapon_flamethrower" "required" -criterion "WeaponIsAxe" "playerweapon" "tf_weapon_fireaxe" "required" -criterion "WeaponIsSyringe" "playerweapon" "tf_weapon_syringegun_medic" "required" -criterion "WeaponIsHeal" "playerweapon" "tf_weapon_medigun" "required" -criterion "WeaponIsBonesaw" "playerweapon" "tf_weapon_bonesaw" "required" -criterion "WeaponIsShotgunPrimary" "playerweapon" "tf_weapon_shotgun_primary" "required" -criterion "WeaponIsPistol" "playerweapon" "tf_weapon_pistol" "required" -criterion "WeaponIsBuild" "playerweapon" "tf_weapon_builder" "required" -criterion "WeaponIsWrench" "playerweapon" "tf_weapon_wrench" "required" -criterion "WeaponIsScattergun" "playerweapon" "tf_weapon_scattergun" "required" -criterion "WeaponIsScattergunDouble" "item_name" "Force-a-Nature" "required" weight 10 -criterion "WeaponIsPistolScout" "playerweapon" "tf_weapon_pistol_scout" "required" -criterion "WeaponIsBat" "playerweapon" "tf_weapon_bat" "required" -criterion "WeaponIsWoodBat" "playerweapon" "tf_weapon_bat_wood" "required" -criterion "WeaponIsSniperrifle" "playerweapon" "tf_weapon_sniperrifle" "required" -criterion "WeaponIsSMG" "playerweapon" "tf_weapon_smg" "required" -criterion "WeaponIsSMGScout" "playerweapon" "tf_weapon_smg_scout" "required" -criterion "WeaponIsClub" "playerweapon" "tf_weapon_club" "required" -criterion "WeaponIsRevolver" "playerweapon" "tf_weapon_revolver" "required" -criterion "WeaponIsKnife" "playerweapon" "tf_weapon_knife" "required" -criterion "WeaponIsPipebomb" "playerweapon" "tf_weapon_pipebomblauncher" "required" -criterion "WeaponIsGrenade" "playerweapon" "tf_weapon_grenadelauncher" "required" -criterion "WeaponIsBottle" "playerweapon" "tf_weapon_bottle" "required" -criterion "WeaponIsSpyPDA" "playerweapon" "tf_weapon_pda_spy" "required" -criterion "WeaponIsRocket" "playerweapon" "tf_weapon_rocketlauncher" "required" -criterion "WeaponIsShovel" "playerweapon" "tf_weapon_shovel" "required" -criterion "WeaponIsFlaregun" "playerweapon" "tf_weapon_flaregun" "required" -criterion "WeaponIsLunchbox" "playerweapon" "tf_weapon_lunchbox" "required" -criterion "WeaponIsLunchboxDrink" "playerweapon" "tf_weapon_lunchbox_drink" "required" -criterion "WeaponIsGloves" "item_type_name" "#TF_Weapon_Gloves" "required" weight 10 -criterion "WeaponIsKritzkrieg" "item_name" "The Kritzkrieg" "required" weight 10 -criterion "WeaponIsBow" "item_name" "The Huntsman" "required" weight 10 -criterion "WeaponIsPickaxe" "item_name" "The Equalizer" "required" weight 10 -criterion "WeaponIsDirectHit" "item_name" "The Direct Hit" "required" weight 10 -criterion "WeaponIsBanner" "item_name" "The Buff Banner" "required" weight 10 -criterion "WeaponIsSword" "item_name" "The Eyelander" "required" weight 10 -criterion "WeaponIsDefender" "item_name" "The Scottish Resistance" "required" weight 10 -criterion "WeaponIsUbersaw" "item_name" "The Ubersaw" "required" weight 10 -criterion "WeaponIsFrontierJustice" "item_name" "The Frontier Justice" "required" weight 10 -criterion "WeaponIsRobotArm" "item_name" "The Gunslinger" "required" weight 10 -criterion "ItemIsGoldenWrench" "item_name" "Golden Wrench" "required" weight 10 -criterion "WeaponIsShortstop" "item_name" "The Shortstop" "required" weight 10 -criterion "WeaponIsMadMilk" "item_name" "Mad Milk" "required" weight 10 -criterion "WeaponIsHolyMackerel" "item_name" "The Holy Mackerel" "required" weight 10 - - -criterion "IsCrossHairEnemy" "crosshair_enemy" "Yes" "required" -criterion "IsNotCrossHairEnemy" "crosshair_enemy" "!=Yes" "required" - -criterion "WeaponIsMiniSentrygun" "customdeath" "minisentrygun" "required" -criterion "WeaponIsSentrygun" "customdeath" "sentrygun" "required" -criterion "WeaponIsNotSentrygun" "customdeath" "" "required" -criterion "WeaponIsNotSentry" "customdeath" "none" "required" - - -criterion "DeployedContext" "sniperzoomed" "1" "required" -criterion "ConceptFireWeapon" "Concept" "TLK_FIREWEAPON" required -criterion "ConceptFireMinigun" "Concept" "TLK_FIREMINIGUN" required -criterion "ConceptWindMinigun" "Concept" "TLK_WINDMINIGUN" required -criterion "LowHealthContext" "playerhealthfrac" "<0.25" required -criterion "SuperHighHealthContext" "playerhealthfrac" ">1.400" required -criterion "GameRulesInWinState" "GameRound" "5" required -criterion "PlayerLostPreviousRound" "LostRound" "1" required -criterion "PlayerOnWinningTeam" "OnWinningTeam" "1" required -criterion "PlayerOnLosingTeam" "OnWinningTeam" "0" required - -criterion "IsFiringMinigun" "minigunfiretime" ">0.0" required -criterion "TimeFiringMinigunShort" "minigunfiretime" ">4.0,<=8.0" required -criterion "TimeFiringMinigunLong" "minigunfiretime" ">8.0,<=15.0" required -criterion "TimeFiringMinigunReallyLong" "minigunfiretime" ">15.0" required -criterion "ConceptFireMinigunTalk" "Concept" "TLK_MINIGUN_FIREWEAPON" "required" -Criterion "NotDefendOnThePointSpeech" "worldDefendOnThePointSpeech" "!=1" "required" weight 0 - -criterion "IsHalloweenTaunt" "IsHalloweenTaunt" "1" "required" weight 100 - - -criterion "ConceptRequestDuel" "Concept" "TLK_REQUEST_DUEL" required -criterion "ConceptDuelRejected" "Concept" "TLK_DUEL_WAS_REJECTED" required -criterion "ConceptIAcceptDuel" "Concept" "TLK_ACCEPT_DUEL" required -criterion "ConceptDuelAccepted" "Concept" "TLK_DUEL_WAS_ACCEPTED" required - - - - -criterion "DuelTargetIsScout" "dueltargetclass" "Scout" required -criterion "DuelTargetIsSniper" "dueltargetclass" "Sniper" required -criterion "DuelTargetIsSoldier" "dueltargetclass" "Soldier" required -criterion "DuelTargetIsDemoman" "dueltargetclass" "Demoman" required -criterion "DuelTargetIsMedic" "dueltargetclass" "Medic" required -criterion "DuelTargetIsHeavy" "dueltargetclass" "Heavy" required -criterion "DuelTargetIsPyro" "dueltargetclass" "Pyro" required -criterion "DuelTargetIsSpy" "dueltargetclass" "Spy" required -criterion "DuelTargetIsEngineer" "dueltargetclass" "Engineer" required - - - - - -// Test rules -#include "talker/tf.txt" -#include "talker/Heavy.txt" -#include "talker/Scout.txt" -#include "talker/Engineer.txt" -#include "talker/Sniper.txt" -#include "talker/Soldier.txt" -#include "talker/Demoman.txt" -#include "talker/Medic.txt" -#include "talker/Pyro.txt" -#include "talker/Spy.txt" diff --git a/addon/gamemodes/teamfortress/content/scripts/tf_game_sounds_vo.txt b/addon/gamemodes/teamfortress/content/scripts/tf_game_sounds_vo.txt deleted file mode 100644 index 7c76c66a9..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/tf_game_sounds_vo.txt +++ /dev/null @@ -1,24347 +0,0 @@ -// -// -// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! -// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! -// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! -// -// VOL_NORM 1.0f -// -//----------------------------------------------------------------------------- -// common attenuation values -//----------------------------------------------------------------------------- -// -// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! -// ATTN_NONE 0.0f -// ATTN_NORM 0.8f -// ATTN_IDLE 2.0f -// ATTN_STATIC 1.25f -// ATTN_RICOCHET 1.5f -// ATTN_GUNFIRE 0.27f -// -// SNDLVL_NONE = 0, -// SNDLVL_25dB = 25, -// SNDLVL_30dB = 30, -// SNDLVL_35dB = 35, -// SNDLVL_40dB = 40, -// SNDLVL_45dB = 45, -// SNDLVL_50dB = 50, = 3.9 -// SNDLVL_55dB = 55, = 3.0 -// SNDLVL_IDLE = 60, = 2.0 -// SNDLVL_TALKING = 60, = 2.0 -// SNDLVL_60dB = 60, = 2.0 -// SNDLVL_65dB = 65, = 1.5 -// SNDLVL_STATIC = 66, = 1.25 -// SNDLVL_70dB = 70, = 1.0 -// SNDLVL_NORM = 75, -// SNDLVL_75dB = 75, = 0.8 -// SNDLVL_80dB = 80, = 0.7 -// SNDLVL_85dB = 85, = 0.6 -// SNDLVL_90dB = 90, = 0.5 -// SNDLVL_95dB = 95, -// SNDLVL_100dB = 100, = 0.4 -// SNDLVL_105dB = 105, -// SNDLVL_120dB = 120, -// SNDLVL_130dB = 130, -// SNDLVL_GUNFIRE = 140, = 0.27 -// SNDLVL_140dB = 140, = 0.2 -// SNDLVL_150dB = 150, = 0.2 -// - -//----------------------------------------------------------------------------- -// Player Deaths -//----------------------------------------------------------------------------- - -"Demoman.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainSevere01.wav" - "wave" "vo/demoman_PainSevere02.wav" - "wave" "vo/demoman_PainSevere03.wav" - "wave" "vo/demoman_PainSevere04.wav" - } -} - -"Demoman.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainCrticialDeath01.wav" - "wave" "vo/demoman_PainCrticialDeath02.wav" - "wave" "vo/demoman_PainCrticialDeath03.wav" - "wave" "vo/demoman_PainCrticialDeath04.wav" - "wave" "vo/demoman_PainCrticialDeath05.wav" - } -} - -"Demoman.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainCrticialDeath01.wav" - "wave" "vo/demoman_PainCrticialDeath02.wav" - "wave" "vo/demoman_PainCrticialDeath03.wav" - "wave" "vo/demoman_PainCrticialDeath04.wav" - "wave" "vo/demoman_PainCrticialDeath05.wav" - } -} - -"Demoman.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/demoman_PainSharp01.wav" - "wave" "vo/demoman_PainSharp02.wav" - "wave" "vo/demoman_PainSharp03.wav" - "wave" "vo/demoman_PainSharp04.wav" - "wave" "vo/demoman_PainSharp05.wav" - "wave" "vo/demoman_PainSharp06.wav" - "wave" "vo/demoman_PainSharp07.wav" - } -} - -"Engineer.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainSevere01.wav" - "wave" "vo/engineer_PainSevere02.wav" - "wave" "vo/engineer_PainSevere03.wav" - "wave" "vo/engineer_PainSevere04.wav" - "wave" "vo/engineer_PainSevere05.wav" - "wave" "vo/engineer_PainSevere06.wav" - "wave" "vo/engineer_PainSevere07.wav" - } -} - -"Engineer.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainCrticialDeath01.wav" - "wave" "vo/engineer_PainCrticialDeath02.wav" - "wave" "vo/engineer_PainCrticialDeath03.wav" - "wave" "vo/engineer_PainCrticialDeath04.wav" - "wave" "vo/engineer_PainCrticialDeath05.wav" - "wave" "vo/engineer_PainCrticialDeath06.wav" - } -} - -"Engineer.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainCrticialDeath01.wav" - "wave" "vo/engineer_PainCrticialDeath02.wav" - "wave" "vo/engineer_PainCrticialDeath03.wav" - "wave" "vo/engineer_PainCrticialDeath04.wav" - "wave" "vo/engineer_PainCrticialDeath05.wav" - "wave" "vo/engineer_PainCrticialDeath06.wav" - } -} - -"Engineer.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/engineer_PainSharp01.wav" - "wave" "vo/engineer_PainSharp02.wav" - "wave" "vo/engineer_PainSharp03.wav" - "wave" "vo/engineer_PainSharp04.wav" - "wave" "vo/engineer_PainSharp05.wav" - "wave" "vo/engineer_PainSharp06.wav" - "wave" "vo/engineer_PainSharp07.wav" - "wave" "vo/engineer_PainSharp08.wav" - } -} - - - -"Heavy.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainSevere01.wav" - "wave" "vo/heavy_PainSevere02.wav" - "wave" "vo/heavy_PainSevere03.wav" - } -} - -"Heavy.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainCrticialDeath01.wav" - "wave" "vo/heavy_PainCrticialDeath02.wav" - "wave" "vo/heavy_PainCrticialDeath03.wav" - } -} - -"Heavy.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainCrticialDeath01.wav" - "wave" "vo/heavy_PainCrticialDeath02.wav" - "wave" "vo/heavy_PainCrticialDeath03.wav" - } -} - -"Heavy.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/heavy_PainSharp01.wav" - "wave" "vo/heavy_PainSharp02.wav" - "wave" "vo/heavy_PainSharp03.wav" - "wave" "vo/heavy_PainSharp04.wav" - "wave" "vo/heavy_PainSharp05.wav" - } -} - - - -"Medic.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainSevere01.wav" - "wave" "vo/medic_PainSevere02.wav" - "wave" "vo/medic_PainSevere03.wav" - "wave" "vo/medic_PainSevere04.wav" - } -} - -"Medic.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainCrticialDeath01.wav" - "wave" "vo/medic_PainCrticialDeath02.wav" - "wave" "vo/medic_PainCrticialDeath03.wav" - "wave" "vo/medic_PainCrticialDeath04.wav" - } -} - -"Medic.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainCrticialDeath01.wav" - "wave" "vo/medic_PainCrticialDeath02.wav" - "wave" "vo/medic_PainCrticialDeath03.wav" - "wave" "vo/medic_PainCrticialDeath04.wav" - } -} - -"Medic.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/medic_PainSharp01.wav" - "wave" "vo/medic_PainSharp02.wav" - "wave" "vo/medic_PainSharp03.wav" - "wave" "vo/medic_PainSharp04.wav" - "wave" "vo/medic_PainSharp05.wav" - "wave" "vo/medic_PainSharp06.wav" - "wave" "vo/medic_PainSharp07.wav" - "wave" "vo/medic_PainSharp08.wav" - } -} - - - -"Pyro.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainSevere01.wav" - "wave" "vo/pyro_PainSevere02.wav" - "wave" "vo/pyro_PainSevere03.wav" - "wave" "vo/pyro_PainSevere04.wav" - "wave" "vo/pyro_PainSevere05.wav" - "wave" "vo/pyro_PainSevere06.wav" - } -} - -"Pyro.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainCrticialDeath01.wav" - "wave" "vo/pyro_PainCrticialDeath02.wav" - "wave" "vo/pyro_PainCrticialDeath03.wav" - } -} - -"Pyro.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainCrticialDeath01.wav" - "wave" "vo/pyro_PainCrticialDeath02.wav" - "wave" "vo/pyro_PainCrticialDeath03.wav" - } -} - -"Pyro.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/pyro_PainSharp01.wav" - "wave" "vo/pyro_PainSharp02.wav" - "wave" "vo/pyro_PainSharp03.wav" - "wave" "vo/pyro_PainSharp04.wav" - "wave" "vo/pyro_PainSharp05.wav" - "wave" "vo/pyro_PainSharp06.wav" - "wave" "vo/pyro_PainSharp07.wav" - } -} - - -"Scout.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSevere01.wav" - "wave" "vo/scout_PainSevere02.wav" - "wave" "vo/scout_PainSevere03.wav" - "wave" "vo/scout_PainSevere04.wav" - "wave" "vo/scout_PainSevere05.wav" - "wave" "vo/scout_PainSevere06.wav" - } -} - -"Scout.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Scout.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Scout.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSharp01.wav" - "wave" "vo/scout_PainSharp02.wav" - "wave" "vo/scout_PainSharp03.wav" - "wave" "vo/scout_PainSharp04.wav" - "wave" "vo/scout_PainSharp05.wav" - "wave" "vo/scout_PainSharp06.wav" - "wave" "vo/scout_PainSharp07.wav" - "wave" "vo/scout_PainSharp08.wav" - } -} - - -"Sniper.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainSevere01.wav" - "wave" "vo/sniper_PainSevere02.wav" - "wave" "vo/sniper_PainSevere03.wav" - "wave" "vo/sniper_PainSevere04.wav" - } -} - -"Sniper.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainCrticialDeath01.wav" - "wave" "vo/sniper_PainCrticialDeath02.wav" - "wave" "vo/sniper_PainCrticialDeath03.wav" - "wave" "vo/sniper_PainCrticialDeath04.wav" - } -} - -"Sniper.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainCrticialDeath01.wav" - "wave" "vo/sniper_PainCrticialDeath02.wav" - "wave" "vo/sniper_PainCrticialDeath03.wav" - "wave" "vo/sniper_PainCrticialDeath04.wav" - } -} - -"Sniper.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/sniper_PainSharp01.wav" - "wave" "vo/sniper_PainSharp02.wav" - "wave" "vo/sniper_PainSharp03.wav" - "wave" "vo/sniper_PainSharp04.wav" - } -} - - -"Spy.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/spy_PainSevere01.wav" - "wave" "vo/Spy_PainSevere02.wav" - "wave" "vo/Spy_PainSevere03.wav" - "wave" "vo/Spy_PainSevere04.wav" - "wave" "vo/Spy_PainSevere05.wav" - } -} - -"Spy.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/Spy_PainCrticialDeath01.wav" - "wave" "vo/Spy_PainCrticialDeath02.wav" - "wave" "vo/Spy_PainCrticialDeath03.wav" - } -} - -"Spy.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/Spy_PainCrticialDeath01.wav" - "wave" "vo/Spy_PainCrticialDeath02.wav" - "wave" "vo/Spy_PainCrticialDeath03.wav" - } -} - -"Spy.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/spy_PainSharp01.wav" - "wave" "vo/spy_PainSharp02.wav" - "wave" "vo/spy_PainSharp03.wav" - "wave" "vo/spy_PainSharp04.wav" - } -} - - -"Soldier.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainSevere01.wav" - "wave" "vo/soldier_PainSevere02.wav" - "wave" "vo/soldier_PainSevere03.wav" - "wave" "vo/soldier_PainSevere04.wav" - "wave" "vo/soldier_PainSevere05.wav" - "wave" "vo/soldier_PainSevere06.wav" - } -} - -"Soldier.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainCrticialDeath01.wav" - "wave" "vo/soldier_PainCrticialDeath02.wav" - "wave" "vo/soldier_PainCrticialDeath03.wav" - "wave" "vo/soldier_PainCrticialDeath04.wav" - } -} - -"Soldier.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainCrticialDeath01.wav" - "wave" "vo/soldier_PainCrticialDeath02.wav" - "wave" "vo/soldier_PainCrticialDeath03.wav" - "wave" "vo/soldier_PainCrticialDeath04.wav" - } -} - -"Soldier.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/soldier_PainSharp01.wav" - "wave" "vo/soldier_PainSharp02.wav" - "wave" "vo/soldier_PainSharp03.wav" - "wave" "vo/soldier_PainSharp04.wav" - "wave" "vo/soldier_PainSharp05.wav" - "wave" "vo/soldier_PainSharp06.wav" - "wave" "vo/soldier_PainSharp07.wav" - "wave" "vo/soldier_PainSharp08.wav" - } -} - -"Civilian.Death" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSevere01.wav" - "wave" "vo/scout_PainSevere02.wav" - "wave" "vo/scout_PainSevere03.wav" - "wave" "vo/scout_PainSevere04.wav" - "wave" "vo/scout_PainSevere05.wav" - "wave" "vo/scout_PainSevere06.wav" - } -} - -"Civilian.CritDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Civilian.MeleeDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainCrticialDeath01.wav" - "wave" "vo/scout_PainCrticialDeath02.wav" - "wave" "vo/scout_PainCrticialDeath03.wav" - } -} - -"Civilian.ExplosionDeath" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "rndwave" - { - "wave" "vo/scout_PainSharp01.wav" - "wave" "vo/scout_PainSharp02.wav" - "wave" "vo/scout_PainSharp03.wav" - "wave" "vo/scout_PainSharp04.wav" - "wave" "vo/scout_PainSharp05.wav" - "wave" "vo/scout_PainSharp06.wav" - "wave" "vo/scout_PainSharp07.wav" - "wave" "vo/scout_PainSharp08.wav" - } -} - - -//----------------------------------------------------------------------------- -// End Player Deaths -//----------------------------------------------------------------------------- - -"Announcer.Cart.Warning" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_cart_attacker_warning1.wav" - "wave" "vo/announcer_cart_attacker_warning2.wav" - "wave" "vo/announcer_cart_attacker_warning3.wav" - "wave" "vo/announcer_cart_attacker_warning4.wav" - "wave" "vo/announcer_cart_defender_warning1.wav" - "wave" "vo/announcer_cart_defender_warning2.wav" - "wave" "vo/announcer_cart_defender_warning3.wav" - "wave" "vo/announcer_cart_defender_warning4.wav" - "wave" "vo/announcer_cart_defender_warning5.wav" - "wave" "vo/announcer_cart_defender_warning6.wav" - } -} - -"Announcer.Cart.FinalWarning" - -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_cart_attacker_finalwarning1.wav" - "wave" "vo/announcer_cart_attacker_finalwarning2.wav" - "wave" "vo/announcer_cart_attacker_finalwarning3.wav" - "wave" "vo/announcer_cart_attacker_finalwarning4.wav" - "wave" "vo/announcer_cart_attacker_finalwarning5.wav" - "wave" "vo/announcer_cart_defender_finalwarning1.wav" - "wave" "vo/announcer_cart_defender_finalwarning2.wav" - "wave" "vo/announcer_cart_defender_finalwarning3.wav" - "wave" "vo/announcer_cart_defender_finalwarning4.wav" - "wave" "vo/announcer_cart_defender_finalwarning5.wav" - } -} - -"Announcer.TournamentModeStart" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_tournament_started1.wav" - "wave" "vo/announcer_tournament_started2.wav" - "wave" "vo/announcer_tournament_started3.wav" - "wave" "vo/announcer_tournament_started4.wav" - } -} - -"Announcer.Success" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_we_secured_control.wav" - "wave" "vo/announcer_we_captured_control.wav" - } -} - -"Announcer.Failure" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "wave" "vo/announcer_we_lost_control.wav" -} - -"Announcer.AttackControlPoints" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_attack_controlpoints.wav" -} - -"Announcer.CaptureControlPoints" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_capture_controlpoints.wav" -} - -"Announcer.CaptureIntel" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_capture_intel.wav" -} - -"Announcer.ControlPointContested" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_control_point_warning.wav" - "wave" "vo/announcer_control_point_warning2.wav" - "wave" "vo/announcer_control_point_warning3.wav" - } -} - -"Announcer.DefendControlPoints" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_defend_controlpoints.wav" -} - -"Announcer.DefendIntel" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_65dB" - - "wave" "vo/announcer_defend_intel.wav" -} - -"Announcer.RoundBegins10Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_10sec.wav" -} - -"Announcer.RoundBegins1Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_1sec.wav" -} - -"Announcer.RoundBegins20Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_20sec.wav" -} - -"Announcer.RoundBegins2Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_2sec.wav" -} - -"Announcer.RoundBegins30Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_30sec.wav" -} - -"Announcer.RoundBegins3Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_3sec.wav" -} - -"Announcer.RoundBegins4Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_4sec.wav" -} - -"Announcer.RoundBegins5Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_5sec.wav" -} - -"Announcer.RoundBegins60Seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_begins_60sec.wav" -} - -"Announcer.RoundEnds10seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_10sec.wav" -} - -"Announcer.RoundEnds1seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_1sec.wav" -} - -"Announcer.RoundEnds20seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_20sec.wav" -} - -"Announcer.RoundEnds2minutes" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_2min.wav" -} - -"Announcer.RoundEnds2seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_2sec.wav" -} - -"Announcer.RoundEnds30seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_30sec.wav" -} - -"Announcer.RoundEnds3seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_3sec.wav" -} - -"Announcer.RoundEnds4seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_4sec.wav" -} - -"Announcer.RoundEnds5minutes" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_5min.wav" -} - -"Announcer.RoundEnds5seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_5sec.wav" -} - -"Announcer.RoundEnds60seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_60sec.wav" -} - -"Announcer.RoundEnds6seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_6sec.wav" -} - -"Announcer.RoundEnds7seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_7sec.wav" -} - -"Announcer.RoundEnds8seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_8sec.wav" -} - -"Announcer.RoundEnds9seconds" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_ends_9sec.wav" -} - -"Announcer.TimeAdded" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_added.wav" -} - -"Announcer.TimeAddedForEnemy" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_added_enemy.wav" -} - -"Announcer.TimeAwarded" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_awarded.wav" -} - -"Announcer.TimeAwardedCongrats" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_awarded_congrats.wav" -} - -"Announcer.TimeAwardedForTeam" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_time_awarded.wav" - "wave" "vo/announcer_time_awarded_success.wav" - "wave" "vo/announcer_time_awarded_congrats.wav" - } -} - -"Announcer.TimeAwardedSuccess" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/announcer_time_awarded_success.wav" -} - -"AttackDefend.Captured" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "ambience/goal_1.wav" -} - -"AttackDefend.Captured.vo" -{ - "channel" "CHAN_ITEM" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/doop.wav" -} - -"AttackDefend.EnemyCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemycaptured.wav" -} - -"AttackDefend.EnemyDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemydropped.wav" -} - -"AttackDefend.EnemyReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemyreturned.wav" -} - -"AttackDefend.EnemyStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_enemystolen.wav" -} - -"AttackDefend.TeamCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamcaptured.wav" -} - -"AttackDefend.TeamDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamdropped.wav" -} - -"AttackDefend.TeamReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamreturned.wav" -} - -"AttackDefend.TeamStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/attack_defend_intel_teamstolen.wav" -} - -"CaptureFlag.EnemyCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemycaptured.wav" - "wave" "vo/intel_enemycaptured.wav" - "wave" "vo/intel_enemycaptured2.wav" - } -} - -"CaptureFlag.EnemyDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemydropped.wav" - "wave" "vo/intel_enemydropped2.wav" - "wave" "vo/intel_enemydropped3.wav" - } -} - -"CaptureFlag.EnemyReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemyreturned.wav" - "wave" "vo/intel_enemyreturned2.wav" - "wave" "vo/intel_enemyreturned3.wav" - } -} - -"CaptureFlag.EnemyStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_enemystolen.wav" - "wave" "vo/intel_enemystolen2.wav" - "wave" "vo/intel_enemystolen3.wav" - "wave" "vo/intel_enemystolen4.wav" - } -} - -"CaptureFlag.FlagSpawn" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "items/itembk2.wav" -} - -"CaptureFlag.TeamCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/intel_teamcaptured.wav" -} - -"CaptureFlag.TeamDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/intel_teamdropped.wav" - "wave" "vo/intel_teamdropped2.wav" - } -} - -"CaptureFlag.TeamReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/intel_teamreturned.wav" -} - -"CaptureFlag.TeamStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/intel_teamstolen.wav" -} - -"ControlPoint.CaptureWarn" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "rndwave" - { - "wave" "vo/announcer_last_flag.wav" - "wave" "vo/announcer_last_flag2.wav" - } -} - -"Demoman.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ActivateCharge01.wav" -} - -"Demoman.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ActivateCharge02.wav" -} - -"Demoman.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ActivateCharge03.wav" -} - -"Demoman.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedControlPoint01.wav" -} - -"Demoman.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedControlPoint02.wav" -} - -"Demoman.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedControlPoint03.wav" -} - -"Demoman.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedIntelligence01.wav" -} - -"Demoman.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedIntelligence02.wav" -} - -"Demoman.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoCappedIntelligence03.wav" -} - -"Demoman.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie01.wav" -} - -"Demoman.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie02.wav" -} - -"Demoman.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie03.wav" -} - -"Demoman.AutoDejectedTie04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoDejectedTie04.wav" -} - -"Demoman.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoOnFire01.wav" -} - -"Demoman.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoOnFire02.wav" -} - -"Demoman.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_AutoOnFire03.wav" -} - -"Demoman.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry01.wav" -} - -"Demoman.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry02.wav" -} - -"Demoman.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry03.wav" -} - -"Demoman.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry04.wav" -} - -"Demoman.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry05.wav" -} - -"Demoman.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry06.wav" -} - -"Demoman.BattleCry07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_BattleCry07.wav" -} - -"Demoman.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers01.wav" -} - -"Demoman.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers02.wav" -} - -"Demoman.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers03.wav" -} - -"Demoman.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers04.wav" -} - -"Demoman.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers05.wav" -} - -"Demoman.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers06.wav" -} - -"Demoman.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers07.wav" -} - -"Demoman.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Cheers08.wav" -} - -"Demoman.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpy01.wav" -} - -"Demoman.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpy02.wav" -} - -"Demoman.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpy03.wav" -} - -"Demoman.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify01.wav" -} - -"Demoman.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify02.wav" -} - -"Demoman.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify03.wav" -} - -"Demoman.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify04.wav" -} - -"Demoman.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify05.wav" -} - -"Demoman.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify06.wav" -} - -"Demoman.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify07.wav" -} - -"Demoman.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify08.wav" -} - -"Demoman.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_CloakedSpyIdentify09.wav" -} - -"Demoman.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Go01.wav" -} - -"Demoman.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Go02.wav" -} - -"Demoman.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Go03.wav" -} - -"Demoman.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_GoodJob01.wav" -} - -"Demoman.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_GoodJob02.wav" -} - -"Demoman.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadLeft01.wav" -} - -"Demoman.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadLeft02.wav" -} - -"Demoman.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadLeft03.wav" -} - -"Demoman.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadRight01.wav" -} - -"Demoman.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadRight02.wav" -} - -"Demoman.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HeadRight03.wav" -} - -"Demoman.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMe01.wav" -} - -"Demoman.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMe02.wav" -} - -"Demoman.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMe03.wav" -} - -"Demoman.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeCapture01.wav" -} - -"Demoman.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeCapture02.wav" -} - -"Demoman.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeCapture03.wav" -} - -"Demoman.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeDefend01.wav" -} - -"Demoman.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeDefend02.wav" -} - -"Demoman.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_HelpMeDefend03.wav" -} - -"Demoman.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Incoming01.wav" -} - -"Demoman.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Incoming02.wav" -} - -"Demoman.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Incoming03.wav" -} - -"Demoman.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers01.wav" -} - -"Demoman.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers02.wav" -} - -"Demoman.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers03.wav" -} - -"Demoman.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers04.wav" -} - -"Demoman.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers05.wav" -} - -"Demoman.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers06.wav" -} - -"Demoman.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers07.wav" -} - -"Demoman.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers08.wav" -} - -"Demoman.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers09.wav" -} - -"Demoman.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers10.wav" -} - -"Demoman.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Jeers11.wav" -} - -"Demoman.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil01.wav" -} - -"Demoman.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil02.wav" -} - -"Demoman.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil03.wav" -} - -"Demoman.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil04.wav" -} - -"Demoman.LaughEvil05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughEvil05.wav" -} - -"Demoman.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughHappy01.wav" -} - -"Demoman.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughHappy02.wav" -} - -"Demoman.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughLong01.wav" -} - -"Demoman.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughLong02.wav" -} - -"Demoman.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort01.wav" -} - -"Demoman.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort02.wav" -} - -"Demoman.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort03.wav" -} - -"Demoman.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort04.wav" -} - -"Demoman.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort05.wav" -} - -"Demoman.LaughShort06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_LaughShort06.wav" -} - -"Demoman.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Medic01.wav" -} - -"Demoman.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Medic02.wav" -} - -"Demoman.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Medic03.wav" -} - -"Demoman.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_MoveUp01.wav" -} - -"Demoman.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_MoveUp02.wav" -} - -"Demoman.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_MoveUp03.wav" -} - -"Demoman.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NeedDispenser01.wav" -} - -"Demoman.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NeedSentry01.wav" -} - -"Demoman.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NeedTeleporter01.wav" -} - -"Demoman.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization01.wav" -} - -"Demoman.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization02.wav" -} - -"Demoman.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization03.wav" -} - -"Demoman.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization04.wav" -} - -"Demoman.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization05.wav" -} - -"Demoman.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NegativeVocalization06.wav" -} - -"Demoman.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NiceShot01.wav" -} - -"Demoman.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NiceShot02.wav" -} - -"Demoman.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_NiceShot03.wav" -} - -"Demoman.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_No01.wav" -} - -"Demoman.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_No02.wav" -} - -"Demoman.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_No03.wav" -} - -"Demoman.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath01.wav" -} - -"Demoman.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath02.wav" -} - -"Demoman.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath03.wav" -} - -"Demoman.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath04.wav" -} - -"Demoman.PainCrticialDeath05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainCrticialDeath05.wav" -} - -"Demoman.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere01.wav" -} - -"Demoman.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere02.wav" -} - -"Demoman.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere03.wav" -} - -"Demoman.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSevere04.wav" -} - -"Demoman.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp01.wav" -} - -"Demoman.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp02.wav" -} - -"Demoman.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp03.wav" -} - -"Demoman.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp04.wav" -} - -"Demoman.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp05.wav" -} - -"Demoman.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp06.wav" -} - -"Demoman.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PainSharp07.wav" -} - -"Demoman.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization01.wav" -} - -"Demoman.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization02.wav" -} - -"Demoman.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization03.wav" -} - -"Demoman.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization04.wav" -} - -"Demoman.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_PositiveVocalization05.wav" -} - -"Demoman.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SentryAhead01.wav" -} - -"Demoman.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SentryAhead02.wav" -} - -"Demoman.SentryAhead03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SentryAhead03.wav" -} - -"Demoman.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted-AssistedKill01.wav" -} - -"Demoman.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted-AssistedKill02.wav" -} - -"Demoman.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted01.wav" -} - -"Demoman.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted02.wav" -} - -"Demoman.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted03.wav" -} - -"Demoman.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted04.wav" -} - -"Demoman.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted05.wav" -} - -"Demoman.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted06.wav" -} - -"Demoman.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted07.wav" -} - -"Demoman.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted08.wav" -} - -"Demoman.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted09.wav" -} - -"Demoman.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted10.wav" -} - -"Demoman.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted11.wav" -} - -"Demoman.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_SpecialCompleted12.wav" -} - -"Demoman.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_StandOnThePoint01.wav" -} - -"Demoman.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_StandOnThePoint02.wav" -} - -"Demoman.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts01.wav" -} - -"Demoman.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts02.wav" -} - -"Demoman.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts03.wav" -} - -"Demoman.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts04.wav" -} - -"Demoman.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts05.wav" -} - -"Demoman.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts06.wav" -} - -"Demoman.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts07.wav" -} - -"Demoman.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts08.wav" -} - -"Demoman.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts09.wav" -} - -"Demoman.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts10.wav" -} - -"Demoman.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts11.wav" -} - -"Demoman.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts12.wav" -} - -"Demoman.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts13.wav" -} - -"Demoman.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts14.wav" -} - -"Demoman.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts15.wav" -} - -"Demoman.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/demoman_Taunts16.wav" -} - -"Demoman.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Thanks01.wav" -} - -"Demoman.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Thanks02.wav" -} - -"Demoman.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheHeal01.wav" -} - -"Demoman.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheHeal02.wav" -} - -"Demoman.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheHeal03.wav" -} - -"Demoman.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheTeleporter01.wav" -} - -"Demoman.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_ThanksForTheTeleporter02.wav" -} - -"Demoman.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Yes01.wav" -} - -"Demoman.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Yes02.wav" -} - -"Demoman.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/demoman_Yes03.wav" -} - -"Engineer.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ActivateCharge01.wav" -} - -"Engineer.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ActivateCharge02.wav" -} - -"Engineer.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ActivateCharge03.wav" -} - -"Engineer.AutoAttackedBySpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoAttackedBySpy01.wav" -} - -"Engineer.AutoAttackedBySpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoAttackedBySpy02.wav" -} - -"Engineer.AutoAttackedBySpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoAttackedBySpy03.wav" -} - -"Engineer.AutoBuildingDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingDispenser01.wav" -} - -"Engineer.AutoBuildingDispenser02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingDispenser02.wav" -} - -"Engineer.AutoBuildingSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingSentry01.wav" -} - -"Engineer.AutoBuildingSentry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingSentry02.wav" -} - -"Engineer.AutoBuildingTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingTeleporter01.wav" -} - -"Engineer.AutoBuildingTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoBuildingTeleporter02.wav" -} - -"Engineer.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedControlPoint01.wav" -} - -"Engineer.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedControlPoint02.wav" -} - -"Engineer.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedControlPoint03.wav" -} - -"Engineer.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedIntelligence01.wav" -} - -"Engineer.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedIntelligence02.wav" -} - -"Engineer.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoCappedIntelligence03.wav" -} - -"Engineer.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDejectedTie01.wav" -} - -"Engineer.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDejectedTie02.wav" -} - -"Engineer.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDejectedTie03.wav" -} - -"Engineer.AutoDestroyedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDestroyedDispenser01.wav" -} - -"Engineer.AutoDestroyedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDestroyedSentry01.wav" -} - -"Engineer.AutoDestroyedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoDestroyedTeleporter01.wav" -} - -"Engineer.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoOnFire01.wav" -} - -"Engineer.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoOnFire02.wav" -} - -"Engineer.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_AutoOnFire03.wav" -} - -"Engineer.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry01.wav" -} - -"Engineer.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry02.wav" -} - -"Engineer.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry03.wav" -} - -"Engineer.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry04.wav" -} - -"Engineer.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry05.wav" -} - -"Engineer.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry06.wav" -} - -"Engineer.BattleCry07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_BattleCry07.wav" -} - -"Engineer.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers01.wav" -} - -"Engineer.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers02.wav" -} - -"Engineer.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers03.wav" -} - -"Engineer.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers04.wav" -} - -"Engineer.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers05.wav" -} - -"Engineer.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers06.wav" -} - -"Engineer.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Cheers07.wav" -} - -"Engineer.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpy01.wav" -} - -"Engineer.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpy02.wav" -} - -"Engineer.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpy03.wav" -} - -"Engineer.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify01.wav" -} - -"Engineer.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify02.wav" -} - -"Engineer.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify03.wav" -} - -"Engineer.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify04.wav" -} - -"Engineer.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify05.wav" -} - -"Engineer.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify06.wav" -} - -"Engineer.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify07.wav" -} - -"Engineer.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify08.wav" -} - -"Engineer.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify09.wav" -} - -"Engineer.CloakedSpyIdentify10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_CloakedSpyIdentify10.wav" -} - -"Engineer.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Go01.wav" -} - -"Engineer.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Go02.wav" -} - -"Engineer.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Go03.wav" -} - -"Engineer.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_GoodJob01.wav" -} - -"Engineer.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_GoodJob02.wav" -} - -"Engineer.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_GoodJob03.wav" -} - -"Engineer.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadLeft01.wav" -} - -"Engineer.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadLeft02.wav" -} - -"Engineer.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadRight01.wav" -} - -"Engineer.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadRight02.wav" -} - -"Engineer.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HeadRight03.wav" -} - -"Engineer.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMe01.wav" -} - -"Engineer.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMe02.wav" -} - -"Engineer.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMe03.wav" -} - -"Engineer.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeCapture01.wav" -} - -"Engineer.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeCapture02.wav" -} - -"Engineer.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeCapture03.wav" -} - -"Engineer.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeDefend01.wav" -} - -"Engineer.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeDefend02.wav" -} - -"Engineer.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_HelpMeDefend03.wav" -} - -"Engineer.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Incoming01.wav" -} - -"Engineer.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Incoming02.wav" -} - -"Engineer.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Incoming03.wav" -} - -"Engineer.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers01.wav" -} - -"Engineer.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers02.wav" -} - -"Engineer.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers03.wav" -} - -"Engineer.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Jeers04.wav" -} - -"Engineer.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil01.wav" -} - -"Engineer.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil02.wav" -} - -"Engineer.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil03.wav" -} - -"Engineer.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil04.wav" -} - -"Engineer.LaughEvil05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil05.wav" -} - -"Engineer.LaughEvil06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughEvil06.wav" -} - -"Engineer.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughHappy01.wav" -} - -"Engineer.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughHappy02.wav" -} - -"Engineer.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughHappy03.wav" -} - -"Engineer.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughLong01.wav" -} - -"Engineer.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort01.wav" -} - -"Engineer.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort02.wav" -} - -"Engineer.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort03.wav" -} - -"Engineer.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_LaughShort04.wav" -} - -"Engineer.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Medic01.wav" -} - -"Engineer.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Medic02.wav" -} - -"Engineer.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Medic03.wav" -} - -"Engineer.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_MoveUp01.wav" -} - -"Engineer.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedDispenser01.wav" -} - -"Engineer.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedSentry01.wav" -} - -"Engineer.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedTeleporter01.wav" -} - -"Engineer.NeedTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NeedTeleporter02.wav" -} - -"Engineer.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization01.wav" -} - -"Engineer.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization02.wav" -} - -"Engineer.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization03.wav" -} - -"Engineer.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization04.wav" -} - -"Engineer.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization05.wav" -} - -"Engineer.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization06.wav" -} - -"Engineer.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization07.wav" -} - -"Engineer.NegativeVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization08.wav" -} - -"Engineer.NegativeVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization09.wav" -} - -"Engineer.NegativeVocalization10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization10.wav" -} - -"Engineer.NegativeVocalization11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization11.wav" -} - -"Engineer.NegativeVocalization12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NegativeVocalization12.wav" -} - -"Engineer.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NiceShot01.wav" -} - -"Engineer.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NiceShot02.wav" -} - -"Engineer.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_NiceShot03.wav" -} - -"Engineer.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_No01.wav" -} - -"Engineer.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_No02.wav" -} - -"Engineer.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_No03.wav" -} - -"Engineer.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath01.wav" -} - -"Engineer.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath02.wav" -} - -"Engineer.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath03.wav" -} - -"Engineer.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath04.wav" -} - -"Engineer.PainCrticialDeath05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath05.wav" -} - -"Engineer.PainCrticialDeath06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainCrticialDeath06.wav" -} - -"Engineer.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere01.wav" -} - -"Engineer.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere02.wav" -} - -"Engineer.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere03.wav" -} - -"Engineer.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere04.wav" -} - -"Engineer.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere05.wav" -} - -"Engineer.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere06.wav" -} - -"Engineer.PainSevere07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSevere07.wav" -} - -"Engineer.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp01.wav" -} - -"Engineer.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp02.wav" -} - -"Engineer.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp03.wav" -} - -"Engineer.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp04.wav" -} - -"Engineer.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp05.wav" -} - -"Engineer.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp06.wav" -} - -"Engineer.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp07.wav" -} - -"Engineer.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PainSharp08.wav" -} - -"Engineer.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_PositiveVocalization01.wav" -} - -"Engineer.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SentryAhead01.wav" -} - -"Engineer.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SentryAhead02.wav" -} - -"Engineer.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted-AssistedKill01.wav" -} - -"Engineer.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted-AssistedKill02.wav" -} - -"Engineer.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted01.wav" -} - -"Engineer.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted02.wav" -} - -"Engineer.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted03.wav" -} - -"Engineer.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted04.wav" -} - -"Engineer.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted05.wav" -} - -"Engineer.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted06.wav" -} - -"Engineer.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted07.wav" -} - -"Engineer.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted08.wav" -} - -"Engineer.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted09.wav" -} - -"Engineer.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted10.wav" -} - -"Engineer.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_SpecialCompleted11.wav" -} - -"Engineer.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_StandOnThePoint01.wav" -} - -"Engineer.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_StandOnThePoint02.wav" -} - -"Engineer.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts01.wav" -} - -"Engineer.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts02.wav" -} - -"Engineer.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts03.wav" -} - -"Engineer.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts04.wav" -} - -"Engineer.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts05.wav" -} - -"Engineer.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts06.wav" -} - -"Engineer.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts07.wav" -} - -"Engineer.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts08.wav" -} - -"Engineer.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts09.wav" -} - -"Engineer.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts10.wav" -} - -"Engineer.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts11.wav" -} - -"Engineer.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/engineer_Taunts12.wav" -} - -"Engineer.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Thanks01.wav" -} - -"Engineer.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheHeal01.wav" -} - -"Engineer.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheHeal02.wav" -} - -"Engineer.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheTeleporter01.wav" -} - -"Engineer.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_ThanksForTheTeleporter02.wav" -} - -"Engineer.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Yes01.wav" -} - -"Engineer.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Yes02.wav" -} - -"Engineer.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/engineer_Yes03.wav" -} - -"Heavy.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge01.wav" -} - -"Heavy.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge02.wav" -} - -"Heavy.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge03.wav" -} - -"Heavy.ActivateCharge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ActivateCharge04.wav" -} - -"Heavy.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedControlPoint01.wav" -} - -"Heavy.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedControlPoint02.wav" -} - -"Heavy.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedControlPoint03.wav" -} - -"Heavy.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedIntelligence01.wav" -} - -"Heavy.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedIntelligence02.wav" -} - -"Heavy.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoCappedIntelligence03.wav" -} - -"Heavy.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoDejectedTie01.wav" -} - -"Heavy.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoDejectedTie02.wav" -} - -"Heavy.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoDejectedTie03.wav" -} - -"Heavy.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire01.wav" -} - -"Heavy.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire02.wav" -} - -"Heavy.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire03.wav" -} - -"Heavy.AutoOnFire04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire04.wav" -} - -"Heavy.AutoOnFire05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_AutoOnFire05.wav" -} - -"Heavy.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry01.wav" -} - -"Heavy.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry02.wav" -} - -"Heavy.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry03.wav" -} - -"Heavy.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry04.wav" -} - -"Heavy.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry05.wav" -} - -"Heavy.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_BattleCry06.wav" -} - -"Heavy.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers01.wav" -} - -"Heavy.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers02.wav" -} - -"Heavy.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers03.wav" -} - -"Heavy.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers04.wav" -} - -"Heavy.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers05.wav" -} - -"Heavy.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers06.wav" -} - -"Heavy.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers07.wav" -} - -"Heavy.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Cheers08.wav" -} - -"Heavy.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy01.wav" -} - -"Heavy.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy02.wav" -} - -"Heavy.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy03.wav" -} - -"Heavy.CloakedSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpy04.wav" -} - -"Heavy.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify01.wav" -} - -"Heavy.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify02.wav" -} - -"Heavy.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify03.wav" -} - -"Heavy.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify04.wav" -} - -"Heavy.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify05.wav" -} - -"Heavy.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify06.wav" -} - -"Heavy.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify07.wav" -} - -"Heavy.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify08.wav" -} - -"Heavy.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_CloakedSpyIdentify09.wav" -} - -"Heavy.Generic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Generic01.wav" -} - -"Heavy.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Go01.wav" -} - -"Heavy.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Go02.wav" -} - -"Heavy.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Go03.wav" -} - -"Heavy.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob01.wav" -} - -"Heavy.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob02.wav" -} - -"Heavy.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob03.wav" -} - -"Heavy.GoodJob04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_GoodJob04.wav" -} - -"Heavy.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadLeft01.wav" -} - -"Heavy.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadLeft02.wav" -} - -"Heavy.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadLeft03.wav" -} - -"Heavy.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadRight01.wav" -} - -"Heavy.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadRight02.wav" -} - -"Heavy.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HeadRight03.wav" -} - -"Heavy.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMe01.wav" -} - -"Heavy.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMe02.wav" -} - -"Heavy.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMe03.wav" -} - -"Heavy.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeCapture01.wav" -} - -"Heavy.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeCapture02.wav" -} - -"Heavy.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeCapture03.wav" -} - -"Heavy.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeDefend01.wav" -} - -"Heavy.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeDefend02.wav" -} - -"Heavy.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_HelpMeDefend03.wav" -} - -"Heavy.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Incoming01.wav" -} - -"Heavy.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Incoming02.wav" -} - -"Heavy.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Incoming03.wav" -} - -"Heavy.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers01.wav" -} - -"Heavy.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers02.wav" -} - -"Heavy.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers03.wav" -} - -"Heavy.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers04.wav" -} - -"Heavy.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers05.wav" -} - -"Heavy.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers06.wav" -} - -"Heavy.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers07.wav" -} - -"Heavy.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers08.wav" -} - -"Heavy.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Jeers09.wav" -} - -"Heavy.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil01.wav" -} - -"Heavy.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil02.wav" -} - -"Heavy.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil03.wav" -} - -"Heavy.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughEvil04.wav" -} - -"Heavy.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy01.wav" -} - -"Heavy.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy02.wav" -} - -"Heavy.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy03.wav" -} - -"Heavy.LaughHappy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy04.wav" -} - -"Heavy.LaughHappy05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughHappy05.wav" -} - -"Heavy.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughLong01.wav" -} - -"Heavy.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughLong02.wav" -} - -"Heavy.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughShort01.wav" -} - -"Heavy.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughShort02.wav" -} - -"Heavy.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_LaughShort03.wav" -} - -"Heavy.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Medic01.wav" -} - -"Heavy.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Medic02.wav" -} - -"Heavy.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Medic03.wav" -} - -"Heavy.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_MoveUp01.wav" -} - -"Heavy.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_MoveUp02.wav" -} - -"Heavy.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_MoveUp03.wav" -} - -"Heavy.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NeedDispenser01.wav" -} - -"Heavy.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NeedSentry01.wav" -} - -"Heavy.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NeedTeleporter01.wav" -} - -"Heavy.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization01.wav" -} - -"Heavy.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization02.wav" -} - -"Heavy.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization03.wav" -} - -"Heavy.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization04.wav" -} - -"Heavy.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization05.wav" -} - -"Heavy.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NegativeVocalization06.wav" -} - -"Heavy.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NiceShot01.wav" -} - -"Heavy.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NiceShot02.wav" -} - -"Heavy.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_NiceShot03.wav" -} - -"Heavy.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_No01.wav" -} - -"Heavy.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_No02.wav" -} - -"Heavy.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_No03.wav" -} - -"Heavy.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainCrticialDeath01.wav" -} - -"Heavy.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainCrticialDeath02.wav" -} - -"Heavy.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainCrticialDeath03.wav" -} - -"Heavy.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSevere01.wav" -} - -"Heavy.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSevere02.wav" -} - -"Heavy.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSevere03.wav" -} - -"Heavy.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp01.wav" -} - -"Heavy.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp02.wav" -} - -"Heavy.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp03.wav" -} - -"Heavy.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp04.wav" -} - -"Heavy.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PainSharp05.wav" -} - -"Heavy.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization01.wav" -} - -"Heavy.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization02.wav" -} - -"Heavy.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization03.wav" -} - -"Heavy.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization04.wav" -} - -"Heavy.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_PositiveVocalization05.wav" -} - -"Heavy.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SentryAhead01.wav" -} - -"Heavy.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SentryAhead02.wav" -} - -"Heavy.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted-AssistedKill01.wav" -} - -"Heavy.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted01.wav" -} - -"Heavy.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted02.wav" -} - -"Heavy.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted03.wav" -} - -"Heavy.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted04.wav" -} - -"Heavy.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted05.wav" -} - -"Heavy.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted06.wav" -} - -"Heavy.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted07.wav" -} - -"Heavy.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted08.wav" -} - -"Heavy.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted09.wav" -} - -"Heavy.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted10.wav" -} - -"Heavy.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_SpecialCompleted11.wav" -} - -"Heavy.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint01.wav" -} - -"Heavy.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint02.wav" -} - -"Heavy.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint03.wav" -} - -"Heavy.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_StandOnThePoint04.wav" -} - -"Heavy.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts01.wav" -} - -"Heavy.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts02.wav" -} - -"Heavy.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts03.wav" -} - -"Heavy.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts04.wav" -} - -"Heavy.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts05.wav" -} - -"Heavy.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts06.wav" -} - -"Heavy.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts07.wav" -} - -"Heavy.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts08.wav" -} - -"Heavy.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts09.wav" -} - -"Heavy.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts10.wav" -} - -"Heavy.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts11.wav" -} - -"Heavy.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts12.wav" -} - -"Heavy.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts13.wav" -} - -"Heavy.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts14.wav" -} - -"Heavy.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts15.wav" -} - -"Heavy.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts16.wav" -} - -"Heavy.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts17.wav" -} - -"Heavy.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts18.wav" -} - -"Heavy.Taunts19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/heavy_Taunts19.wav" -} - -"Heavy.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Thanks01.wav" -} - -"Heavy.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Thanks02.wav" -} - -"Heavy.Thanks03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Thanks03.wav" -} - -"Heavy.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheHeal01.wav" -} - -"Heavy.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheHeal02.wav" -} - -"Heavy.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheHeal03.wav" -} - -"Heavy.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheTeleporter01.wav" -} - -"Heavy.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheTeleporter02.wav" -} - -"Heavy.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_ThanksForTheTeleporter03.wav" -} - -"Heavy.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Yes01.wav" -} - -"Heavy.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Yes02.wav" -} - -"Heavy.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/heavy_Yes03.wav" -} - -"Invade.EnemyCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_enemycaptured.wav" -} - -"Invade.EnemyDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_enemydropped.wav" -} - -"Invade.EnemyStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_enemystolen.wav" -} - -"Invade.FlagReturned" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamreturned.wav" -} - -"Invade.TeamCaptured" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamcaptured.wav" -} - -"Invade.TeamDropped" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamdropped.wav" -} - -"Invade.TeamStolen" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NONE" - - "wave" "vo/invade_intel_teamstolen.wav" -} - -"Medic.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ActivateCharge01.wav" -} - -"Medic.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ActivateCharge02.wav" -} - -"Medic.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ActivateCharge03.wav" -} - -"Medic.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedControlPoint01.wav" -} - -"Medic.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedControlPoint02.wav" -} - -"Medic.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedControlPoint03.wav" -} - -"Medic.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedIntelligence01.wav" -} - -"Medic.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedIntelligence02.wav" -} - -"Medic.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoCappedIntelligence03.wav" -} - -"Medic.AutoChargeReady01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoChargeReady01.wav" -} - -"Medic.AutoChargeReady02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoChargeReady02.wav" -} - -"Medic.AutoChargeReady03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoChargeReady03.wav" -} - -"Medic.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie01.wav" -} - -"Medic.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie02.wav" -} - -"Medic.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie03.wav" -} - -"Medic.AutoDejectedTie04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie04.wav" -} - -"Medic.AutoDejectedTie05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie05.wav" -} - -"Medic.AutoDejectedTie06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie06.wav" -} - -"Medic.AutoDejectedTie07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoDejectedTie07.wav" -} - -"Medic.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire01.wav" -} - -"Medic.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire02.wav" -} - -"Medic.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire03.wav" -} - -"Medic.AutoOnFire04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire04.wav" -} - -"Medic.AutoOnFire05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_AutoOnFire05.wav" -} - -"Medic.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry01.wav" -} - -"Medic.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry02.wav" -} - -"Medic.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry03.wav" -} - -"Medic.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry04.wav" -} - -"Medic.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry05.wav" -} - -"Medic.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_BattleCry06.wav" -} - -"Medic.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers01.wav" -} - -"Medic.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers02.wav" -} - -"Medic.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers03.wav" -} - -"Medic.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers04.wav" -} - -"Medic.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers05.wav" -} - -"Medic.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Cheers06.wav" -} - -"Medic.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpy01.wav" -} - -"Medic.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpy02.wav" -} - -"Medic.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify01.wav" -} - -"Medic.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify02.wav" -} - -"Medic.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify03.wav" -} - -"Medic.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify04.wav" -} - -"Medic.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify05.wav" -} - -"Medic.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify06.wav" -} - -"Medic.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify07.wav" -} - -"Medic.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify08.wav" -} - -"Medic.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_CloakedSpyIdentify09.wav" -} - -"Medic.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go01.wav" -} - -"Medic.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go02.wav" -} - -"Medic.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go03.wav" -} - -"Medic.Go04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Go04.wav" -} - -"Medic.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_GoodJob01.wav" -} - -"Medic.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_GoodJob02.wav" -} - -"Medic.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_GoodJob03.wav" -} - -"Medic.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadLeft01.wav" -} - -"Medic.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadLeft02.wav" -} - -"Medic.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadLeft03.wav" -} - -"Medic.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadRight01.wav" -} - -"Medic.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadRight02.wav" -} - -"Medic.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HeadRight03.wav" -} - -"Medic.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMe01.wav" -} - -"Medic.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMe02.wav" -} - -"Medic.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMe03.wav" -} - -"Medic.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeCapture01.wav" -} - -"Medic.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeCapture02.wav" -} - -"Medic.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeDefend01.wav" -} - -"Medic.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeDefend02.wav" -} - -"Medic.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_HelpMeDefend03.wav" -} - -"Medic.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Incoming01.wav" -} - -"Medic.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Incoming02.wav" -} - -"Medic.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Incoming03.wav" -} - -"Medic.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers01.wav" -} - -"Medic.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers02.wav" -} - -"Medic.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers03.wav" -} - -"Medic.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers04.wav" -} - -"Medic.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers05.wav" -} - -"Medic.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers06.wav" -} - -"Medic.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers07.wav" -} - -"Medic.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers08.wav" -} - -"Medic.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers09.wav" -} - -"Medic.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers10.wav" -} - -"Medic.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers11.wav" -} - -"Medic.Jeers12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Jeers12.wav" -} - -"Medic.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil01.wav" -} - -"Medic.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil02.wav" -} - -"Medic.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil03.wav" -} - -"Medic.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil04.wav" -} - -"Medic.LaughEvil05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughEvil05.wav" -} - -"Medic.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughHappy01.wav" -} - -"Medic.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughHappy02.wav" -} - -"Medic.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughHappy03.wav" -} - -"Medic.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughLong01.wav" -} - -"Medic.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughLong02.wav" -} - -"Medic.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughShort01.wav" -} - -"Medic.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughShort02.wav" -} - -"Medic.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_LaughShort03.wav" -} - -"Medic.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Medic01.wav" -} - -"Medic.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Medic02.wav" -} - -"Medic.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Medic03.wav" -} - -"Medic.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_MoveUp01.wav" -} - -"Medic.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_MoveUp02.wav" -} - -"Medic.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NeedDispenser01.wav" -} - -"Medic.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NeedSentry01.wav" -} - -"Medic.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NeedTeleporter01.wav" -} - -"Medic.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization01.wav" -} - -"Medic.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization02.wav" -} - -"Medic.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization03.wav" -} - -"Medic.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization04.wav" -} - -"Medic.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization05.wav" -} - -"Medic.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization06.wav" -} - -"Medic.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NegativeVocalization07.wav" -} - -"Medic.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NiceShot01.wav" -} - -"Medic.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_NiceShot02.wav" -} - -"Medic.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_No01.wav" -} - -"Medic.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_No02.wav" -} - -"Medic.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_No03.wav" -} - -"Medic.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath01.wav" -} - -"Medic.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath02.wav" -} - -"Medic.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath03.wav" -} - -"Medic.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainCrticialDeath04.wav" -} - -"Medic.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere01.wav" -} - -"Medic.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere02.wav" -} - -"Medic.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere03.wav" -} - -"Medic.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSevere04.wav" -} - -"Medic.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp01.wav" -} - -"Medic.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp02.wav" -} - -"Medic.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp03.wav" -} - -"Medic.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp04.wav" -} - -"Medic.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp05.wav" -} - -"Medic.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp06.wav" -} - -"Medic.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp07.wav" -} - -"Medic.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PainSharp08.wav" -} - -"Medic.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization01.wav" -} - -"Medic.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization02.wav" -} - -"Medic.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization03.wav" -} - -"Medic.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization04.wav" -} - -"Medic.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization05.wav" -} - -"Medic.PositiveVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_PositiveVocalization06.wav" -} - -"Medic.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SentryAhead01.wav" -} - -"Medic.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SentryAhead02.wav" -} - -"Medic.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted-AssistedKill01.wav" -} - -"Medic.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted-AssistedKill02.wav" -} - -"Medic.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted01.wav" -} - -"Medic.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted02.wav" -} - -"Medic.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted03.wav" -} - -"Medic.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted04.wav" -} - -"Medic.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted05.wav" -} - -"Medic.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted06.wav" -} - -"Medic.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted07.wav" -} - -"Medic.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted08.wav" -} - -"Medic.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted09.wav" -} - -"Medic.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted10.wav" -} - -"Medic.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted11.wav" -} - -"Medic.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_SpecialCompleted12.wav" -} - -"Medic.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint01.wav" -} - -"Medic.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint02.wav" -} - -"Medic.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint03.wav" -} - -"Medic.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint04.wav" -} - -"Medic.StandOnThePoint05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_StandOnThePoint05.wav" -} - -"Medic.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/taunts/medic_Taunts01.wav" -} - -"Medic.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts02.wav" -} - -"Medic.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts03.wav" -} - -"Medic.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts04.wav" -} - -"Medic.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts05.wav" -} - -"Medic.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts06.wav" -} - -"Medic.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts07.wav" -} - -"Medic.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts08.wav" -} - -"Medic.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts09.wav" -} - -"Medic.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts10.wav" -} - -"Medic.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts11.wav" -} - -"Medic.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts12.wav" -} - -"Medic.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts13.wav" -} - -"Medic.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts14.wav" -} - -"Medic.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts15.wav" -} - -"Medic.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Thanks01.wav" -} - -"Medic.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Thanks02.wav" -} - -"Medic.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheHeal01.wav" -} - -"Medic.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheHeal02.wav" -} - -"Medic.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheTeleporter01.wav" -} - -"Medic.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheTeleporter02.wav" -} - -"Medic.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_ThanksForTheTeleporter03.wav" -} - -"Medic.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Yes01.wav" -} - -"Medic.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Yes02.wav" -} - -"Medic.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/medic_Yes03.wav" -} - -"Player.Burp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp02.wav" -} - -"Player.Burp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp03.wav" -} - -"Player.Burp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp04.wav" -} - -"Player.Burp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp05.wav" -} - -"Player.Burp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp06.wav" -} - -"Player.Burp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/burp07.wav" -} - -"Player.Puff" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/puff.wav" -} - -"Pyro.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_ActivateCharge01.wav" -} - -"Pyro.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoCappedControlPoint01.wav" -} - -"Pyro.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoCappedIntelligence01.wav" -} - -"Pyro.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoDejectedTie01.wav" -} - -"Pyro.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoOnFire01.wav" -} - -"Pyro.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_AutoOnFire02.wav" -} - -"Pyro.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_BattleCry01.wav" -} - -"Pyro.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_BattleCry02.wav" -} - -"Pyro.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Cheers01.wav" -} - -"Pyro.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_CloakedSpy01.wav" -} - -"Pyro.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_CloakedSpyIdentify01.wav" -} - -"Pyro.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Go01.wav" -} - -"Pyro.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_GoodJob01.wav" -} - -"Pyro.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HeadLeft01.wav" -} - -"Pyro.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HeadRight01.wav" -} - -"Pyro.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HelpMe01.wav" -} - -"Pyro.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HelpMeCapture01.wav" -} - -"Pyro.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_HelpMeDefend01.wav" -} - -"Pyro.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Incoming01.wav" -} - -"Pyro.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Jeers01.wav" -} - -"Pyro.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Jeers02.wav" -} - -"Pyro.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil01.wav" -} - -"Pyro.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil02.wav" -} - -"Pyro.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil03.wav" -} - -"Pyro.LaughEvil04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughEvil04.wav" -} - -"Pyro.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughHappy01.wav" -} - -"Pyro.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughLong01.wav" -} - -"Pyro.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_LaughShort01.wav" -} - -"Pyro.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Medic01.wav" -} - -"Pyro.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_MoveUp01.wav" -} - -"Pyro.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NeedDispenser01.wav" -} - -"Pyro.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NeedSentry01.wav" -} - -"Pyro.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NeedTeleporter01.wav" -} - -"Pyro.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NegativeVocalization01.wav" -} - -"Pyro.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_NiceShot01.wav" -} - -"Pyro.No01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_No01.wav" -} - -"Pyro.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainCrticialDeath01.wav" -} - -"Pyro.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainCrticialDeath02.wav" -} - -"Pyro.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainCrticialDeath03.wav" -} - -"Pyro.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere01.wav" -} - -"Pyro.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere02.wav" -} - -"Pyro.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere03.wav" -} - -"Pyro.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere04.wav" -} - -"Pyro.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere05.wav" -} - -"Pyro.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSevere06.wav" -} - -"Pyro.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp01.wav" -} - -"Pyro.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp02.wav" -} - -"Pyro.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp03.wav" -} - -"Pyro.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp04.wav" -} - -"Pyro.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp05.wav" -} - -"Pyro.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp06.wav" -} - -"Pyro.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PainSharp07.wav" -} - -"Pyro.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_PositiveVocalization01.wav" -} - -"Pyro.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_SentryAhead01.wav" -} - -"Pyro.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_SpecialCompleted-AssistedKill01.wav" -} - -"Pyro.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_SpecialCompleted01.wav" -} - -"Pyro.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_StandOnThePoint01.wav" -} - -"Pyro.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts01.wav" -} - -"Pyro.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts02.wav" -} - -"Pyro.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts03.wav" -} - -"Pyro.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/pyro_Taunts04.wav" -} - -"Pyro.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Thanks01.wav" -} - -"Pyro.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_ThanksForTheHeal01.wav" -} - -"Pyro.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_ThanksForTheTeleporter01.wav" -} - -"Pyro.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/pyro_Yes01.wav" -} - -"Scout.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ActivateCharge01.wav" -} - -"Scout.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ActivateCharge02.wav" -} - -"Scout.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ActivateCharge03.wav" -} - -"Scout.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint01.wav" -} - -"Scout.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint02.wav" -} - -"Scout.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint03.wav" -} - -"Scout.AutoCappedControlPoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedControlPoint04.wav" -} - -"Scout.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedIntelligence01.wav" -} - -"Scout.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedIntelligence02.wav" -} - -"Scout.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoCappedIntelligence03.wav" -} - -"Scout.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie01.wav" -} - -"Scout.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie02.wav" -} - -"Scout.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie03.wav" -} - -"Scout.AutoDejectedTie04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoDejectedTie04.wav" -} - -"Scout.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoOnFire01.wav" -} - -"Scout.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_AutoOnFire02.wav" -} - -"Scout.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry01.wav" -} - -"Scout.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry02.wav" -} - -"Scout.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry03.wav" -} - -"Scout.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry04.wav" -} - -"Scout.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_BattleCry05.wav" -} - -"Scout.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers01.wav" -} - -"Scout.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers02.wav" -} - -"Scout.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers03.wav" -} - -"Scout.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers04.wav" -} - -"Scout.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers05.wav" -} - -"Scout.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Cheers06.wav" -} - -"Scout.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy01.wav" -} - -"Scout.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy02.wav" -} - -"Scout.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy03.wav" -} - -"Scout.CloakedSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpy04.wav" -} - -"Scout.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify01.wav" -} - -"Scout.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify02.wav" -} - -"Scout.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify03.wav" -} - -"Scout.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify04.wav" -} - -"Scout.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify05.wav" -} - -"Scout.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify06.wav" -} - -"Scout.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify07.wav" -} - -"Scout.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify08.wav" -} - -"Scout.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_CloakedSpyIdentify09.wav" -} - -"Scout.Generic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Generic01.wav" -} - -"Scout.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go01.wav" -} - -"Scout.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go02.wav" -} - -"Scout.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go03.wav" -} - -"Scout.Go04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Go04.wav" -} - -"Scout.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob01.wav" -} - -"Scout.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob02.wav" -} - -"Scout.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob03.wav" -} - -"Scout.GoodJob04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_GoodJob04.wav" -} - -"Scout.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadLeft01.wav" -} - -"Scout.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadLeft02.wav" -} - -"Scout.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadLeft03.wav" -} - -"Scout.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadRight01.wav" -} - -"Scout.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadRight02.wav" -} - -"Scout.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HeadRight03.wav" -} - -"Scout.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe01.wav" -} - -"Scout.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe02.wav" -} - -"Scout.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe03.wav" -} - -"Scout.HelpMe04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMe04.wav" -} - -"Scout.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeCapture01.wav" -} - -"Scout.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeCapture02.wav" -} - -"Scout.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeCapture03.wav" -} - -"Scout.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeDefend01.wav" -} - -"Scout.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeDefend02.wav" -} - -"Scout.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_HelpMeDefend03.wav" -} - -"Scout.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Incoming01.wav" -} - -"Scout.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Incoming02.wav" -} - -"Scout.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Incoming03.wav" -} - -"Scout.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers02.wav" -} - -"Scout.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers03.wav" -} - -"Scout.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers04.wav" -} - -"Scout.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers05.wav" -} - -"Scout.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers06.wav" -} - -"Scout.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers07.wav" -} - -"Scout.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers08.wav" -} - -"Scout.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers09.wav" -} - -"Scout.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers10.wav" -} - -"Scout.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers11.wav" -} - -"Scout.Jeers12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Jeers12.wav" -} - -"Scout.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughEvil01.wav" -} - -"Scout.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughEvil02.wav" -} - -"Scout.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughEvil03.wav" -} - -"Scout.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy01.wav" -} - -"Scout.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy02.wav" -} - -"Scout.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy03.wav" -} - -"Scout.LaughHappy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughHappy04.wav" -} - -"Scout.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughLong01.wav" -} - -"Scout.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughLong02.wav" -} - -"Scout.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort01.wav" -} - -"Scout.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort02.wav" -} - -"Scout.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort03.wav" -} - -"Scout.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort04.wav" -} - -"Scout.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_LaughShort05.wav" -} - -"Scout.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Medic01.wav" -} - -"Scout.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Medic02.wav" -} - -"Scout.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Medic03.wav" -} - -"Scout.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_MoveUp01.wav" -} - -"Scout.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_MoveUp02.wav" -} - -"Scout.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_MoveUp03.wav" -} - -"Scout.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NeedDispenser01.wav" -} - -"Scout.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NeedSentry01.wav" -} - -"Scout.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NeedTeleporter01.wav" -} - -"Scout.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization01.wav" -} - -"Scout.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization02.wav" -} - -"Scout.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization03.wav" -} - -"Scout.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "620.000" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization04.wav" -} - -"Scout.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NegativeVocalization05.wav" -} - -"Scout.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NiceShot01.wav" -} - -"Scout.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NiceShot02.wav" -} - -"Scout.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_NiceShot03.wav" -} - -"Scout.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_No01.wav" -} - -"Scout.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_No02.wav" -} - -"Scout.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_No03.wav" -} - -"Scout.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainCrticialDeath01.wav" -} - -"Scout.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainCrticialDeath02.wav" -} - -"Scout.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainCrticialDeath03.wav" -} - -"Scout.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere01.wav" -} - -"Scout.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere02.wav" -} - -"Scout.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere03.wav" -} - -"Scout.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere04.wav" -} - -"Scout.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere05.wav" -} - -"Scout.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSevere06.wav" -} - -"Scout.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp01.wav" -} - -"Scout.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp02.wav" -} - -"Scout.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp03.wav" -} - -"Scout.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp04.wav" -} - -"Scout.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp05.wav" -} - -"Scout.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp06.wav" -} - -"Scout.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp07.wav" -} - -"Scout.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PainSharp08.wav" -} - -"Scout.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization01.wav" -} - -"Scout.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization02.wav" -} - -"Scout.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization03.wav" -} - -"Scout.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization04.wav" -} - -"Scout.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_PositiveVocalization05.wav" -} - -"Scout.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SentryAhead01.wav" -} - -"Scout.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SentryAhead02.wav" -} - -"Scout.SentryAhead03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SentryAhead03.wav" -} - -"Scout.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted-AssistedKill01.wav" -} - -"Scout.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted-AssistedKill02.wav" -} - -"Scout.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted01.wav" -} - -"Scout.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted02.wav" -} - -"Scout.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted03.wav" -} - -"Scout.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted04.wav" -} - -"Scout.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted05.wav" -} - -"Scout.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted06.wav" -} - -"Scout.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted07.wav" -} - -"Scout.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted09.wav" -} - -"Scout.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted10.wav" -} - -"Scout.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted11.wav" -} - -"Scout.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_SpecialCompleted12.wav" -} - -"Scout.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint01.wav" -} - -"Scout.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint02.wav" -} - -"Scout.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint03.wav" -} - -"Scout.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint04.wav" -} - -"Scout.StandOnThePoint05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_StandOnThePoint05.wav" -} - -"Scout.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts01.wav" -} - -"Scout.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts02.wav" -} - -"Scout.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts03.wav" -} - -"Scout.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts04.wav" -} - -"Scout.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts05.wav" -} - -"Scout.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts06.wav" -} - -"Scout.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts07.wav" -} - -"Scout.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts08.wav" -} - -"Scout.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts09.wav" -} - -"Scout.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts10.wav" -} - -"Scout.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts11.wav" -} - -"Scout.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts12.wav" -} - -"Scout.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts13.wav" -} - -"Scout.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts14.wav" -} - -"Scout.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts15.wav" -} - -"Scout.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts16.wav" -} - -"Scout.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts17.wav" -} - -"Scout.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/scout_Taunts18.wav" -} - -"Scout.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Thanks01.wav" -} - -"Scout.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Thanks02.wav" -} - -"Scout.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheHeal01.wav" -} - -"Scout.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheHeal02.wav" -} - -"Scout.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheHeal03.wav" -} - -"Scout.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheTeleporter01.wav" -} - -"Scout.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheTeleporter02.wav" -} - -"Scout.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_ThanksForTheTeleporter03.wav" -} - -"Scout.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Yes01.wav" -} - -"Scout.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Yes02.wav" -} - -"Scout.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/scout_Yes03.wav" -} - -"Sniper.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge01.wav" -} - -"Sniper.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge02.wav" -} - -"Sniper.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge03.wav" -} - -"Sniper.ActivateCharge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ActivateCharge04.wav" -} - -"Sniper.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedControlPoint01.wav" -} - -"Sniper.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedControlPoint02.wav" -} - -"Sniper.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedControlPoint03.wav" -} - -"Sniper.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence01.wav" -} - -"Sniper.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence02.wav" -} - -"Sniper.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence03.wav" -} - -"Sniper.AutoCappedIntelligence04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence04.wav" -} - -"Sniper.AutoCappedIntelligence05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoCappedIntelligence05.wav" -} - -"Sniper.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoDejectedTie01.wav" -} - -"Sniper.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoDejectedTie02.wav" -} - -"Sniper.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoDejectedTie03.wav" -} - -"Sniper.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoOnFire01.wav" -} - -"Sniper.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoOnFire02.wav" -} - -"Sniper.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_AutoOnFire03.wav" -} - -"Sniper.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry01.wav" -} - -"Sniper.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry02.wav" -} - -"Sniper.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry03.wav" -} - -"Sniper.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry04.wav" -} - -"Sniper.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry05.wav" -} - -"Sniper.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_BattleCry06.wav" -} - -"Sniper.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers01.wav" -} - -"Sniper.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers02.wav" -} - -"Sniper.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers03.wav" -} - -"Sniper.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers04.wav" -} - -"Sniper.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers05.wav" -} - -"Sniper.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers06.wav" -} - -"Sniper.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers07.wav" -} - -"Sniper.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Cheers08.wav" -} - -"Sniper.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpy01.wav" -} - -"Sniper.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpy02.wav" -} - -"Sniper.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpy03.wav" -} - -"Sniper.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify01.wav" -} - -"Sniper.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify02.wav" -} - -"Sniper.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify03.wav" -} - -"Sniper.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify04.wav" -} - -"Sniper.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify05.wav" -} - -"Sniper.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify06.wav" -} - -"Sniper.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify07.wav" -} - -"Sniper.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify08.wav" -} - -"Sniper.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_CloakedSpyIdentify09.wav" -} - -"Sniper.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Go01.wav" -} - -"Sniper.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Go02.wav" -} - -"Sniper.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Go03.wav" -} - -"Sniper.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_GoodJob01.wav" -} - -"Sniper.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_GoodJob02.wav" -} - -"Sniper.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_GoodJob03.wav" -} - -"Sniper.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadLeft01.wav" -} - -"Sniper.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadLeft02.wav" -} - -"Sniper.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadLeft03.wav" -} - -"Sniper.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadRight01.wav" -} - -"Sniper.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadRight02.wav" -} - -"Sniper.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HeadRight03.wav" -} - -"Sniper.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMe01.wav" -} - -"Sniper.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMe02.wav" -} - -"Sniper.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMe03.wav" -} - -"Sniper.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeCapture01.wav" -} - -"Sniper.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeCapture02.wav" -} - -"Sniper.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeCapture03.wav" -} - -"Sniper.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeDefend01.wav" -} - -"Sniper.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeDefend02.wav" -} - -"Sniper.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_HelpMeDefend03.wav" -} - -"Sniper.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming01.wav" -} - -"Sniper.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming02.wav" -} - -"Sniper.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming03.wav" -} - -"Sniper.Incoming04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Incoming04.wav" -} - -"Sniper.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers01.wav" -} - -"Sniper.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers02.wav" -} - -"Sniper.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers03.wav" -} - -"Sniper.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers04.wav" -} - -"Sniper.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers05.wav" -} - -"Sniper.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers06.wav" -} - -"Sniper.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers07.wav" -} - -"Sniper.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Jeers08.wav" -} - -"Sniper.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughEvil01.wav" -} - -"Sniper.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughEvil02.wav" -} - -"Sniper.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughEvil03.wav" -} - -"Sniper.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughHappy01.wav" -} - -"Sniper.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughHappy02.wav" -} - -"Sniper.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughLong01.wav" -} - -"Sniper.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughLong02.wav" -} - -"Sniper.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort01.wav" -} - -"Sniper.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort02.wav" -} - -"Sniper.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort03.wav" -} - -"Sniper.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort04.wav" -} - -"Sniper.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_LaughShort05.wav" -} - -"Sniper.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Medic01.wav" -} - -"Sniper.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Medic02.wav" -} - -"Sniper.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_MoveUp01.wav" -} - -"Sniper.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_MoveUp02.wav" -} - -"Sniper.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NeedDispenser01.wav" -} - -"Sniper.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NeedSentry01.wav" -} - -"Sniper.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NeedTeleporter01.wav" -} - -"Sniper.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization01.wav" -} - -"Sniper.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization02.wav" -} - -"Sniper.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization03.wav" -} - -"Sniper.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization04.wav" -} - -"Sniper.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization05.wav" -} - -"Sniper.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization06.wav" -} - -"Sniper.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization07.wav" -} - -"Sniper.NegativeVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization08.wav" -} - -"Sniper.NegativeVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NegativeVocalization09.wav" -} - -"Sniper.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NiceShot01.wav" -} - -"Sniper.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NiceShot02.wav" -} - -"Sniper.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_NiceShot03.wav" -} - -"Sniper.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No01.wav" -} - -"Sniper.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No02.wav" -} - -"Sniper.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No03.wav" -} - -"Sniper.No04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_No04.wav" -} - -"Sniper.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath01.wav" -} - -"Sniper.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath02.wav" -} - -"Sniper.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath03.wav" -} - -"Sniper.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainCrticialDeath04.wav" -} - -"Sniper.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere01.wav" -} - -"Sniper.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere02.wav" -} - -"Sniper.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere03.wav" -} - -"Sniper.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSevere04.wav" -} - -"Sniper.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp01.wav" -} - -"Sniper.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp02.wav" -} - -"Sniper.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp03.wav" -} - -"Sniper.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PainSharp04.wav" -} - -"Sniper.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization01.wav" -} - -"Sniper.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization02.wav" -} - -"Sniper.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization03.wav" -} - -"Sniper.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization04.wav" -} - -"Sniper.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization05.wav" -} - -"Sniper.PositiveVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization06.wav" -} - -"Sniper.PositiveVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization07.wav" -} - -"Sniper.PositiveVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization08.wav" -} - -"Sniper.PositiveVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization09.wav" -} - -"Sniper.PositiveVocalization10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_PositiveVocalization10.wav" -} - -"Sniper.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SentryAhead01.wav" -} - -"Sniper.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted-AssistedKill01.wav" -} - -"Sniper.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted-AssistedKill02.wav" -} - -"Sniper.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted01.wav" -} - -"Sniper.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted02.wav" -} - -"Sniper.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted03.wav" -} - -"Sniper.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted04.wav" -} - -"Sniper.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted05.wav" -} - -"Sniper.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted06.wav" -} - -"Sniper.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted07.wav" -} - -"Sniper.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted08.wav" -} - -"Sniper.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted09.wav" -} - -"Sniper.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted10.wav" -} - -"Sniper.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted11.wav" -} - -"Sniper.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted12.wav" -} - -"Sniper.SpecialCompleted13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted13.wav" -} - -"Sniper.SpecialCompleted14" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted14.wav" -} - -"Sniper.SpecialCompleted15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted15.wav" -} - -"Sniper.SpecialCompleted16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted16.wav" -} - -"Sniper.SpecialCompleted17" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted17.wav" -} - -"Sniper.SpecialCompleted18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted18.wav" -} - -"Sniper.SpecialCompleted19" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted19.wav" -} - -"Sniper.SpecialCompleted20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted20.wav" -} - -"Sniper.SpecialCompleted21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted21.wav" -} - -"Sniper.SpecialCompleted22" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted22.wav" -} - -"Sniper.SpecialCompleted23" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted23.wav" -} - -"Sniper.SpecialCompleted24" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted24.wav" -} - -"Sniper.SpecialCompleted25" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted25.wav" -} - -"Sniper.SpecialCompleted26" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted26.wav" -} - -"Sniper.SpecialCompleted27" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted27.wav" -} - -"Sniper.SpecialCompleted28" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted28.wav" -} - -"Sniper.SpecialCompleted29" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted29.wav" -} - -"Sniper.SpecialCompleted30" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted30.wav" -} - -"Sniper.SpecialCompleted31" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted31.wav" -} - -"Sniper.SpecialCompleted32" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted32.wav" -} - -"Sniper.SpecialCompleted33" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted33.wav" -} - -"Sniper.SpecialCompleted34" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted34.wav" -} - -"Sniper.SpecialCompleted35" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted35.wav" -} - -"Sniper.SpecialCompleted36" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted36.wav" -} - -"Sniper.SpecialCompleted37" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted37.wav" -} - -"Sniper.SpecialCompleted38" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted38.wav" -} - -"Sniper.SpecialCompleted39" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted39.wav" -} - -"Sniper.SpecialCompleted40" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted40.wav" -} - -"Sniper.SpecialCompleted41" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted41.wav" -} - -"Sniper.SpecialCompleted42" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted42.wav" -} - -"Sniper.SpecialCompleted43" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted43.wav" -} - -"Sniper.SpecialCompleted44" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted44.wav" -} - -"Sniper.SpecialCompleted45" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted45.wav" -} - -"Sniper.SpecialCompleted46" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_SpecialCompleted46.wav" -} - -"Sniper.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_StandOnThePoint01.wav" -} - -"Sniper.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_StandOnThePoint02.wav" -} - -"Sniper.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts01.wav" -} - -"Sniper.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts02.wav" -} - -"Sniper.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts03.wav" -} - -"Sniper.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts04.wav" -} - -"Sniper.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts05.wav" -} - -"Sniper.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts06.wav" -} - -"Sniper.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts07.wav" -} - -"Sniper.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts08.wav" -} - -"Sniper.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts09.wav" -} - -"Sniper.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts10.wav" -} - -"Sniper.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts11.wav" -} - -"Sniper.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts12.wav" -} - -"Sniper.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts13.wav" -} - -"Sniper.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts14.wav" -} - -"Sniper.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts15.wav" -} - -"Sniper.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts16.wav" -} - -"Sniper.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts17.wav" -} - -"Sniper.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts18.wav" -} - -"Sniper.Taunts19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts19.wav" -} - -"Sniper.Taunts20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts20.wav" -} - -"Sniper.Taunts21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts21.wav" -} - -"Sniper.Taunts22" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts22.wav" -} - -"Sniper.Taunts23" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts23.wav" -} - -"Sniper.Taunts24" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts24.wav" -} - -"Sniper.Taunts25" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts25.wav" -} - -"Sniper.Taunts26" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts26.wav" -} - -"Sniper.Taunts27" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts27.wav" -} - -"Sniper.Taunts28" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts28.wav" -} - -"Sniper.Taunts29" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts29.wav" -} - -"Sniper.Taunts30" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts30.wav" -} - -"Sniper.Taunts31" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts31.wav" -} - -"Sniper.Taunts32" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts32.wav" -} - -"Sniper.Taunts33" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts33.wav" -} - -"Sniper.Taunts34" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts34.wav" -} - -"Sniper.Taunts35" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts35.wav" -} - -"Sniper.Taunts36" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts36.wav" -} - -"Sniper.Taunts37" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts37.wav" -} - -"Sniper.Taunts38" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts38.wav" -} - -"Sniper.Taunts39" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts39.wav" -} - -"Sniper.Taunts40" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts40.wav" -} - -"Sniper.Taunts41" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts41.wav" -} - -"Sniper.Taunts42" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts42.wav" -} - -"Sniper.Taunts43" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts43.wav" -} - -"Sniper.Taunts44" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts44.wav" -} - -"Sniper.Taunts45" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts45.wav" -} - -"Sniper.Taunts46" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/sniper_Taunts46.wav" -} - -"Sniper.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Thanks01.wav" -} - -"Sniper.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Thanks02.wav" -} - -"Sniper.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheHeal01.wav" -} - -"Sniper.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheHeal02.wav" -} - -"Sniper.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheHeal03.wav" -} - -"Sniper.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheTeleporter01.wav" -} - -"Sniper.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheTeleporter02.wav" -} - -"Sniper.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_ThanksForTheTeleporter03.wav" -} - -"Sniper.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Yes01.wav" -} - -"Sniper.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Yes02.wav" -} - -"Sniper.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/sniper_Yes03.wav" -} - -"Soldier.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ActivateCharge01.wav" -} - -"Soldier.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ActivateCharge02.wav" -} - -"Soldier.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ActivateCharge03.wav" -} - -"Soldier.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedControlPoint01.wav" -} - -"Soldier.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedControlPoint02.wav" -} - -"Soldier.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedControlPoint03.wav" -} - -"Soldier.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedIntelligence01.wav" -} - -"Soldier.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedIntelligence02.wav" -} - -"Soldier.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoCappedIntelligence03.wav" -} - -"Soldier.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoDejectedTie01.wav" -} - -"Soldier.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoDejectedTie02.wav" -} - -"Soldier.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoDejectedTie03.wav" -} - -"Soldier.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoOnFire01.wav" -} - -"Soldier.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoOnFire02.wav" -} - -"Soldier.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_AutoOnFire03.wav" -} - -"Soldier.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry01.wav" -} - -"Soldier.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry02.wav" -} - -"Soldier.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry03.wav" -} - -"Soldier.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry04.wav" -} - -"Soldier.BattleCry05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry05.wav" -} - -"Soldier.BattleCry06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_BattleCry06.wav" -} - -"Soldier.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers01.wav" -} - -"Soldier.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers02.wav" -} - -"Soldier.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers03.wav" -} - -"Soldier.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers04.wav" -} - -"Soldier.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers05.wav" -} - -"Soldier.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Cheers06.wav" -} - -"Soldier.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpy01.wav" -} - -"Soldier.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpy02.wav" -} - -"Soldier.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpy03.wav" -} - -"Soldier.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify01.wav" -} - -"Soldier.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify02.wav" -} - -"Soldier.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify03.wav" -} - -"Soldier.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify04.wav" -} - -"Soldier.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify05.wav" -} - -"Soldier.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify06.wav" -} - -"Soldier.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify07.wav" -} - -"Soldier.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify08.wav" -} - -"Soldier.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_CloakedSpyIdentify09.wav" -} - -"Soldier.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Go01.wav" -} - -"Soldier.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Go02.wav" -} - -"Soldier.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Go03.wav" -} - -"Soldier.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_GoodJob01.wav" -} - -"Soldier.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_GoodJob02.wav" -} - -"Soldier.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_GoodJob03.wav" -} - -"Soldier.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadLeft01.wav" -} - -"Soldier.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadLeft02.wav" -} - -"Soldier.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadLeft03.wav" -} - -"Soldier.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadRight01.wav" -} - -"Soldier.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadRight02.wav" -} - -"Soldier.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HeadRight03.wav" -} - -"Soldier.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMe01.wav" -} - -"Soldier.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMe02.wav" -} - -"Soldier.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMe03.wav" -} - -"Soldier.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeCapture01.wav" -} - -"Soldier.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeCapture02.wav" -} - -"Soldier.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeCapture03.wav" -} - -"Soldier.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend01.wav" -} - -"Soldier.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend02.wav" -} - -"Soldier.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend03.wav" -} - -"Soldier.HelpMeDefend04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_HelpMeDefend04.wav" -} - -"Soldier.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Incoming01.wav" -} - -"Soldier.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers01.wav" -} - -"Soldier.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers02.wav" -} - -"Soldier.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers03.wav" -} - -"Soldier.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers04.wav" -} - -"Soldier.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers05.wav" -} - -"Soldier.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers06.wav" -} - -"Soldier.Jeers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers07.wav" -} - -"Soldier.Jeers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers08.wav" -} - -"Soldier.Jeers09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers09.wav" -} - -"Soldier.Jeers10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers10.wav" -} - -"Soldier.Jeers11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers11.wav" -} - -"Soldier.Jeers12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Jeers12.wav" -} - -"Soldier.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughEvil01.wav" -} - -"Soldier.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughEvil02.wav" -} - -"Soldier.LaughEvil03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughEvil03.wav" -} - -"Soldier.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughHappy01.wav" -} - -"Soldier.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughHappy02.wav" -} - -"Soldier.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughHappy03.wav" -} - -"Soldier.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughLong01.wav" -} - -"Soldier.LaughLong02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughLong02.wav" -} - -"Soldier.LaughLong03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughLong03.wav" -} - -"Soldier.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort01.wav" -} - -"Soldier.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort02.wav" -} - -"Soldier.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort03.wav" -} - -"Soldier.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_LaughShort04.wav" -} - -"Soldier.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Medic01.wav" -} - -"Soldier.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Medic02.wav" -} - -"Soldier.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Medic03.wav" -} - -"Soldier.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_MoveUp01.wav" -} - -"Soldier.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_MoveUp02.wav" -} - -"Soldier.MoveUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_MoveUp03.wav" -} - -"Soldier.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NeedDispenser01.wav" -} - -"Soldier.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NeedSentry01.wav" -} - -"Soldier.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NeedTeleporter01.wav" -} - -"Soldier.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization01.wav" -} - -"Soldier.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization02.wav" -} - -"Soldier.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization03.wav" -} - -"Soldier.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization04.wav" -} - -"Soldier.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization05.wav" -} - -"Soldier.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NegativeVocalization06.wav" -} - -"Soldier.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NiceShot01.wav" -} - -"Soldier.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NiceShot02.wav" -} - -"Soldier.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_NiceShot03.wav" -} - -"Soldier.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_No01.wav" -} - -"Soldier.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_No02.wav" -} - -"Soldier.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_No03.wav" -} - -"Soldier.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath01.wav" -} - -"Soldier.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath02.wav" -} - -"Soldier.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath03.wav" -} - -"Soldier.PainCrticialDeath04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainCrticialDeath04.wav" -} - -"Soldier.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere01.wav" -} - -"Soldier.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere02.wav" -} - -"Soldier.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere03.wav" -} - -"Soldier.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere04.wav" -} - -"Soldier.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere05.wav" -} - -"Soldier.PainSevere06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSevere06.wav" -} - -"Soldier.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp01.wav" -} - -"Soldier.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp02.wav" -} - -"Soldier.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp03.wav" -} - -"Soldier.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp04.wav" -} - -"Soldier.PainSharp05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp05.wav" -} - -"Soldier.PainSharp06" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp06.wav" -} - -"Soldier.PainSharp07" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp07.wav" -} - -"Soldier.PainSharp08" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PainSharp08.wav" -} - -"Soldier.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization01.wav" -} - -"Soldier.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization02.wav" -} - -"Soldier.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization03.wav" -} - -"Soldier.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization04.wav" -} - -"Soldier.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_PositiveVocalization05.wav" -} - -"Soldier.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SentryAhead01.wav" -} - -"Soldier.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SentryAhead02.wav" -} - -"Soldier.SentryAhead03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SentryAhead03.wav" -} - -"Soldier.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted-AssistedKill01.wav" -} - -"Soldier.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted01.wav" -} - -"Soldier.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted02.wav" -} - -"Soldier.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted03.wav" -} - -"Soldier.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted04.wav" -} - -"Soldier.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_SpecialCompleted05.wav" -} - -"Soldier.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_StandOnThePoint01.wav" -} - -"Soldier.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_StandOnThePoint02.wav" -} - -"Soldier.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_StandOnThePoint03.wav" -} - -"Soldier.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts01.wav" -} - -"Soldier.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts02.wav" -} - -"Soldier.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts03.wav" -} - -"Soldier.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts04.wav" -} - -"Soldier.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts05.wav" -} - -"Soldier.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts06.wav" -} - -"Soldier.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts07.wav" -} - -"Soldier.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts08.wav" -} - -"Soldier.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts09.wav" -} - -"Soldier.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts10.wav" -} - -"Soldier.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts11.wav" -} - -"Soldier.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts12.wav" -} - -"Soldier.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts13.wav" -} - -"Soldier.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts14.wav" -} - -"Soldier.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts15.wav" -} - -"Soldier.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts16.wav" -} - -"Soldier.Taunts17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts17.wav" -} - -"Soldier.Taunts18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts18.wav" -} - -"Soldier.Taunts19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts19.wav" -} - -"Soldier.Taunts20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts20.wav" -} - -"Soldier.Taunts21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/soldier_Taunts21.wav" -} - -"Soldier.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Thanks01.wav" -} - -"Soldier.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Thanks02.wav" -} - -"Soldier.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheHeal01.wav" -} - -"Soldier.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheHeal02.wav" -} - -"Soldier.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheHeal03.wav" -} - -"Soldier.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheTeleporter01.wav" -} - -"Soldier.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheTeleporter02.wav" -} - -"Soldier.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_ThanksForTheTeleporter03.wav" -} - -"Soldier.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes01.wav" -} - -"Soldier.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes02.wav" -} - -"Soldier.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes03.wav" -} - -"Soldier.Yes04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/soldier_Yes04.wav" -} - -"Spy.ActivateCharge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ActivateCharge01.wav" -} - -"Spy.ActivateCharge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ActivateCharge02.wav" -} - -"Spy.ActivateCharge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ActivateCharge03.wav" -} - -"Spy.AutoCappedControlPoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedControlPoint01.wav" -} - -"Spy.AutoCappedControlPoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedControlPoint02.wav" -} - -"Spy.AutoCappedControlPoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedControlPoint03.wav" -} - -"Spy.AutoCappedIntelligence01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedIntelligence01.wav" -} - -"Spy.AutoCappedIntelligence02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedIntelligence02.wav" -} - -"Spy.AutoCappedIntelligence03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoCappedIntelligence03.wav" -} - -"Spy.AutoDejectedTie01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoDejectedTie01.wav" -} - -"Spy.AutoDejectedTie02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoDejectedTie02.wav" -} - -"Spy.AutoDejectedTie03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoDejectedTie03.wav" -} - -"Spy.AutoOnFire01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoOnFire01.wav" -} - -"Spy.AutoOnFire02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoOnFire02.wav" -} - -"Spy.AutoOnFire03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_AutoOnFire03.wav" -} - -"Spy.BattleCry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry01.wav" -} - -"Spy.BattleCry02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry02.wav" -} - -"Spy.BattleCry03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry03.wav" -} - -"Spy.BattleCry04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_BattleCry04.wav" -} - -"Spy.Cheers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers01.wav" -} - -"Spy.Cheers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers02.wav" -} - -"Spy.Cheers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers03.wav" -} - -"Spy.Cheers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers04.wav" -} - -"Spy.Cheers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers05.wav" -} - -"Spy.Cheers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers06.wav" -} - -"Spy.Cheers07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers07.wav" -} - -"Spy.Cheers08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Cheers08.wav" -} - -"Spy.CloakedSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy01.wav" -} - -"Spy.CloakedSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy02.wav" -} - -"Spy.CloakedSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy03.wav" -} - -"Spy.CloakedSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpy04.wav" -} - -"Spy.CloakedSpyIdentify01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify01.wav" -} - -"Spy.CloakedSpyIdentify02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify02.wav" -} - -"Spy.CloakedSpyIdentify03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify03.wav" -} - -"Spy.CloakedSpyIdentify04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify04.wav" -} - -"Spy.CloakedSpyIdentify05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify05.wav" -} - -"Spy.CloakedSpyIdentify06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify06.wav" -} - -"Spy.CloakedSpyIdentify07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify07.wav" -} - -"Spy.CloakedSpyIdentify08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify08.wav" -} - -"Spy.CloakedSpyIdentify09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify09.wav" -} - -"Spy.CloakedSpyIdentify10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_CloakedSpyIdentify10.wav" -} - -"Spy.Go01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Go01.wav" -} - -"Spy.Go02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Go02.wav" -} - -"Spy.Go03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Go03.wav" -} - -"Spy.GoodJob01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_GoodJob01.wav" -} - -"Spy.GoodJob02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_GoodJob02.wav" -} - -"Spy.GoodJob03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_GoodJob03.wav" -} - -"Spy.HeadLeft01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadLeft01.wav" -} - -"Spy.HeadLeft02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadLeft02.wav" -} - -"Spy.HeadLeft03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadLeft03.wav" -} - -"Spy.HeadRight01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadRight01.wav" -} - -"Spy.HeadRight02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadRight02.wav" -} - -"Spy.HeadRight03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HeadRight03.wav" -} - -"Spy.HelpMe01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMe01.wav" -} - -"Spy.HelpMe02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMe02.wav" -} - -"Spy.HelpMe03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMe03.wav" -} - -"Spy.HelpMeCapture01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeCapture01.wav" -} - -"Spy.HelpMeCapture02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeCapture02.wav" -} - -"Spy.HelpMeCapture03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeCapture03.wav" -} - -"Spy.HelpMeDefend01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeDefend01.wav" -} - -"Spy.HelpMeDefend02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeDefend02.wav" -} - -"Spy.HelpMeDefend03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_HelpMeDefend03.wav" -} - -"Spy.Incoming01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Incoming01.wav" -} - -"Spy.Incoming02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Incoming02.wav" -} - -"Spy.Incoming03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Incoming03.wav" -} - -"Spy.Jeers01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers01.wav" -} - -"Spy.Jeers02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers02.wav" -} - -"Spy.Jeers03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers03.wav" -} - -"Spy.Jeers04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers04.wav" -} - -"Spy.Jeers05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers05.wav" -} - -"Spy.Jeers06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Jeers06.wav" -} - -"Spy.LaughEvil01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughEvil01.wav" -} - -"Spy.LaughEvil02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughEvil02.wav" -} - -"Spy.LaughHappy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughHappy01.wav" -} - -"Spy.LaughHappy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughHappy02.wav" -} - -"Spy.LaughHappy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughHappy03.wav" -} - -"Spy.LaughLong01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughLong01.wav" -} - -"Spy.LaughShort01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort01.wav" -} - -"Spy.LaughShort02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort02.wav" -} - -"Spy.LaughShort03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort03.wav" -} - -"Spy.LaughShort04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort04.wav" -} - -"Spy.LaughShort05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort05.wav" -} - -"Spy.LaughShort06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_LaughShort06.wav" -} - -"Spy.Medic01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Medic01.wav" -} - -"Spy.Medic02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Medic02.wav" -} - -"Spy.Medic03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Medic03.wav" -} - -"Spy.MoveUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_MoveUp01.wav" -} - -"Spy.MoveUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_MoveUp02.wav" -} - -"Spy.NeedDispenser01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NeedDispenser01.wav" -} - -"Spy.NeedSentry01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NeedSentry01.wav" -} - -"Spy.NeedTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NeedTeleporter01.wav" -} - -"Spy.NegativeVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization01.wav" -} - -"Spy.NegativeVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization02.wav" -} - -"Spy.NegativeVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization03.wav" -} - -"Spy.NegativeVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization04.wav" -} - -"Spy.NegativeVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization05.wav" -} - -"Spy.NegativeVocalization06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization06.wav" -} - -"Spy.NegativeVocalization07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization07.wav" -} - -"Spy.NegativeVocalization08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization08.wav" -} - -"Spy.NegativeVocalization09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NegativeVocalization09.wav" -} - -"Spy.NiceShot01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NiceShot01.wav" -} - -"Spy.NiceShot02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NiceShot02.wav" -} - -"Spy.NiceShot03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_NiceShot03.wav" -} - -"Spy.No01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_No01.wav" -} - -"Spy.No02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_No02.wav" -} - -"Spy.No03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_No03.wav" -} - -"Spy.PainCrticialDeath01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainCrticialDeath01.wav" -} - -"Spy.PainCrticialDeath02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainCrticialDeath02.wav" -} - -"Spy.PainCrticialDeath03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainCrticialDeath03.wav" -} - -"Spy.PainSevere01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere01.wav" -} - -"Spy.PainSevere02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere02.wav" -} - -"Spy.PainSevere03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere03.wav" -} - -"Spy.PainSevere04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere04.wav" -} - -"Spy.PainSevere05" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSevere05.wav" -} - -"Spy.PainSharp01" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp01.wav" -} - -"Spy.PainSharp02" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp02.wav" -} - -"Spy.PainSharp03" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp03.wav" -} - -"Spy.PainSharp04" -{ - "channel" "CHAN_VOICE" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PainSharp04.wav" -} - -"Spy.PositiveVocalization01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization01.wav" -} - -"Spy.PositiveVocalization02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization02.wav" -} - -"Spy.PositiveVocalization03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization03.wav" -} - -"Spy.PositiveVocalization04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization04.wav" -} - -"Spy.PositiveVocalization05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_PositiveVocalization05.wav" -} - -"Spy.SentryAhead01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SentryAhead01.wav" -} - -"Spy.SentryAhead02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SentryAhead02.wav" -} - -"Spy.SpecialCompleted-AssistedKill01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted-AssistedKill01.wav" -} - -"Spy.SpecialCompleted-AssistedKill02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted-AssistedKill02.wav" -} - -"Spy.SpecialCompleted01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted01.wav" -} - -"Spy.SpecialCompleted02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted02.wav" -} - -"Spy.SpecialCompleted03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted03.wav" -} - -"Spy.SpecialCompleted04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted04.wav" -} - -"Spy.SpecialCompleted05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted05.wav" -} - -"Spy.SpecialCompleted06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted06.wav" -} - -"Spy.SpecialCompleted07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted07.wav" -} - -"Spy.SpecialCompleted08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted08.wav" -} - -"Spy.SpecialCompleted09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted09.wav" -} - -"Spy.SpecialCompleted10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted10.wav" -} - -"Spy.SpecialCompleted11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted11.wav" -} - -"Spy.SpecialCompleted12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_SpecialCompleted12.wav" -} - -"Spy.StandOnThePoint01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint01.wav" -} - -"Spy.StandOnThePoint02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint02.wav" -} - -"Spy.StandOnThePoint03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint03.wav" -} - -"Spy.StandOnThePoint04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_StandOnThePoint04.wav" -} - -"Spy.Taunts01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts01.wav" -} - -"Spy.Taunts02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts02.wav" -} - -"Spy.Taunts03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts03.wav" -} - -"Spy.Taunts04" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts04.wav" -} - -"Spy.Taunts05" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts05.wav" -} - -"Spy.Taunts06" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts06.wav" -} - -"Spy.Taunts07" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts07.wav" -} - -"Spy.Taunts08" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts08.wav" -} - -"Spy.Taunts09" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts09.wav" -} - -"Spy.Taunts10" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts10.wav" -} - -"Spy.Taunts11" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts11.wav" -} - -"Spy.Taunts12" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts12.wav" -} - -"Spy.Taunts13" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts13.wav" -} - -"Spy.Taunts14" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts14.wav" -} - -"Spy.Taunts15" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts15.wav" -} - -"Spy.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/spy_Taunts16.wav" -} - -"Spy.Thanks01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Thanks01.wav" -} - -"Spy.Thanks02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Thanks02.wav" -} - -"Spy.Thanks03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Thanks03.wav" -} - -"Spy.ThanksForTheHeal01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheHeal01.wav" -} - -"Spy.ThanksForTheHeal02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheHeal02.wav" -} - -"Spy.ThanksForTheHeal03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheHeal03.wav" -} - -"Spy.ThanksForTheTeleporter01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheTeleporter01.wav" -} - -"Spy.ThanksForTheTeleporter02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheTeleporter02.wav" -} - -"Spy.ThanksForTheTeleporter03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_ThanksForTheTeleporter03.wav" -} - -"Spy.Yes01" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Yes01.wav" -} - -"Spy.Yes02" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Yes02.wav" -} - -"Spy.Yes03" -{ - "channel" "CHAN_VOICE" - "volume" "0.620" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/spy_Yes03.wav" -} - -//----------------------------------------------------------------------------- -//Heavy -//----------------------------------------------------------------------------- -"Heavy.Award01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award01.wav" -} - -"Heavy.Award02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award02.wav" -} - -"Heavy.Award03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award03.wav" -} - -"Heavy.Award04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award04.wav" -} - -"Heavy.Award05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award05.wav" -} - -"Heavy.Award07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award07.wav" -} - -"Heavy.Award08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award08.wav" -} - -"Heavy.Award09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award09.wav" -} - -"Heavy.Award10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award10.wav" -} - -"Heavy.Award11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award11.wav" -} - -"Heavy.Award12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award12.wav" -} - -"Heavy.Award13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award13.wav" -} - -"Heavy.Award16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award16.wav" -} - -"Heavy.Award14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award14.wav" -} - -"Heavy.Award15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award15.wav" -} - -"Heavy.Award06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Award06.wav" -} - -"Heavy.CartGoingBackDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense01.wav" -} - -"Heavy.CartGoingBackDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense02.wav" -} - -"Heavy.CartGoingBackDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense03.wav" -} - -"Heavy.CartGoingBackDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense04.wav" -} - -"Heavy.CartGoingBackDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense05.wav" -} - -"Heavy.CartGoingBackDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense06.wav" -} - -"Heavy.CartGoingBackDefense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense07.wav" -} - -"Heavy.CartGoingBackDefense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackDefense08.wav" -} - -"Heavy.CartGoingBackOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense01.wav" -} - -"Heavy.CartGoingBackOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense02.wav" -} - -"Heavy.CartGoingBackOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense03.wav" -} - -"Heavy.CartGoingBackOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense04.wav" -} - -"Heavy.CartGoingBackOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense05.wav" -} - -"Heavy.CartGoingBackOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense06.wav" -} - -"Heavy.CartGoingBackOffense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartGoingBackOffense07.wav" -} - -"Heavy.CartMovingForwardDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense01.wav" -} - -"Heavy.CartMovingForwardDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense02.wav" -} - -"Heavy.CartMovingForwardDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense04.wav" -} - -"Heavy.CartMovingForwardDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense05.wav" -} - -"Heavy.CartMovingForwardDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense03.wav" -} - -"Heavy.CartMovingForwardDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardDefense06.wav" -} - -"Heavy.CartMovingForwardOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense01.wav" -} - -"Heavy.CartMovingForwardOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense02.wav" -} - -"Heavy.CartMovingForwardOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense03.wav" -} - -"Heavy.CartMovingForwardOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense04.wav" -} - -"Heavy.CartMovingForwardOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense05.wav" -} - -"Heavy.CartMovingForwardOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense06.wav" -} - -"Heavy.CartMovingForwardOffense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense07.wav" -} - -"Heavy.CartMovingForwardOffense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense08.wav" -} - -"Heavy.CartMovingForwardOffense09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense09.wav" -} - -"Heavy.CartMovingForwardOffense11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense11.wav" -} - -"Heavy.CartMovingForwardOffense12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense12.wav" -} - -"Heavy.CartMovingForwardOffense13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense13.wav" -} - -"Heavy.CartMovingForwardOffense14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense14.wav" -} - -"Heavy.CartMovingForwardOffense15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense15.wav" -} - -"Heavy.CartMovingForwardOffense16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense16.wav" -} - -"Heavy.CartMovingForwardOffense17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense17.wav" -} - -"Heavy.CartMovingForwardOffense10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartMovingForwardOffense10.wav" -} - -"Heavy.CartStayCloseOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense01.wav" -} - -"Heavy.CartStayCloseOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense02.wav" -} - -"Heavy.CartStayCloseOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense03.wav" -} - -"Heavy.CartStayCloseOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense06.wav" -} - -"Heavy.CartStayCloseOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense05.wav" -} - -"Heavy.CartStayCloseOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStayCloseOffense04.wav" -} - -"Heavy.CartStopItDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense01.wav" -} - -"Heavy.CartStopItDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense02.wav" -} - -"Heavy.CartStopItDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense03.wav" -} - -"Heavy.CartStopItDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStopItDefense04.wav" -} - -"Heavy.CartStoppedOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense01.wav" -} - -"Heavy.CartStoppedOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense02.wav" -} - -"Heavy.CartStoppedOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense04.wav" -} - -"Heavy.CartStoppedOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_CartStoppedOffense03.wav" -} - -"Heavy.Domination01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination01.wav" -} - -"Heavy.Domination02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination02.wav" -} - -"Heavy.Domination03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination03.wav" -} - -"Heavy.Domination04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination04.wav" -} - -"Heavy.Domination05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination05.wav" -} - -"Heavy.Domination06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination06.wav" -} - -"Heavy.Domination07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination07.wav" -} - -"Heavy.Domination08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination08.wav" -} - -"Heavy.Domination09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination09.wav" -} - -"Heavy.Domination10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination10.wav" -} - -"Heavy.Domination11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination11.wav" -} - -"Heavy.Domination12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination12.wav" -} - -"Heavy.Domination13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination13.wav" -} - -"Heavy.Domination14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination14.wav" -} - -"Heavy.Domination15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination15.wav" -} - -"Heavy.Domination16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination16.wav" -} - -"Heavy.Domination17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination17.wav" -} - -"Heavy.Domination18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Domination18.wav" -} - -"Heavy.FightOnCap04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap04.wav" -} - -"Heavy.FightOnCap01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap01.wav" -} - -"Heavy.FightOnCap02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap02.wav" -} - -"Heavy.FightOnCap03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_FightOnCap03.wav" -} - -"Heavy.LaughterBig02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig02.wav" -} - -"Heavy.LaughterBig01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig01.wav" -} - -"Heavy.LaughterBig03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig03.wav" -} - -"Heavy.LaughterBig04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_LaughterBig04.wav" -} - -"Heavy.MedicFollow01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow01.wav" -} - -"Heavy.MedicFollow02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow02.wav" -} - -"Heavy.MedicFollow03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow03.wav" -} - -"Heavy.MedicFollow04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow04.wav" -} - -"Heavy.MedicFollow05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow05.wav" -} - -"Heavy.MedicFollow06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow06.wav" -} - -"Heavy.MedicFollow07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MedicFollow07.wav" -} - -"Heavy.MeleeDare01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare01.wav" -} - -"Heavy.MeleeDare02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare02.wav" -} - -"Heavy.MeleeDare03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare03.wav" -} - -"Heavy.MeleeDare04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare04.wav" -} - -"Heavy.MeleeDare05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare05.wav" -} - -"Heavy.MeleeDare06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare06.wav" -} - -"Heavy.MeleeDare07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare07.wav" -} - -"Heavy.MeleeDare08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare08.wav" -} - -"Heavy.MeleeDare09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare09.wav" -} - -"Heavy.MeleeDare10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare10.wav" -} - -"Heavy.MeleeDare11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare11.wav" -} - -"Heavy.MeleeDare12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare12.wav" -} - -"Heavy.MeleeDare13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_MeleeDare13.wav" -} - -"Heavy.Meleeing01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing01.wav" -} - -"Heavy.Meleeing02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing02.wav" -} - -"Heavy.Meleeing03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing03.wav" -} - -"Heavy.Meleeing04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing04.wav" -} - -"Heavy.Meleeing05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing05.wav" -} - -"Heavy.Meleeing06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing06.wav" -} - -"Heavy.Meleeing07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing07.wav" -} - -"Heavy.Meleeing08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Meleeing08.wav" -} - -"Heavy.Revenge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge01.wav" -} - -"Heavy.Revenge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge02.wav" -} - -"Heavy.Revenge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge03.wav" -} - -"Heavy.Revenge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge04.wav" -} - -"Heavy.Revenge05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge05.wav" -} - -"Heavy.Revenge06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge06.wav" -} - -"Heavy.Revenge07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge07.wav" -} - -"Heavy.Revenge08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge08.wav" -} - -"Heavy.Revenge09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge09.wav" -} - -"Heavy.Revenge10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge10.wav" -} - -"Heavy.Revenge11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge11.wav" -} - -"Heavy.Revenge12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge12.wav" -} - -"Heavy.Revenge13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge13.wav" -} - -"Heavy.Revenge14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge14.wav" -} - -"Heavy.Revenge15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Revenge15.wav" -} - -"Heavy.Singing01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing01.wav" -} - -"Heavy.Singing02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing02.wav" -} - -"Heavy.Singing03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing03.wav" -} - -"Heavy.Singing04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing04.wav" -} - -"Heavy.Singing05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Singing05.wav" -} - -"Heavy.Specials01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials01.wav" -} - -"Heavy.Specials02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials02.wav" -} - -"Heavy.Specials03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials03.wav" -} - -"Heavy.Specials04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials04.wav" -} - -"Heavy.Specials05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_Specials05.wav" -} - -"Heavy.SpecialWeapon04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon04.wav" -} - -"Heavy.SpecialWeapon01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon01.wav" -} - -"Heavy.SpecialWeapon02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon02.wav" -} - -"Heavy.SpecialWeapon03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon03.wav" -} - -"Heavy.SpecialWeapon05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon05.wav" -} - -"Heavy.SpecialWeapon06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon06.wav" -} - -"Heavy.SpecialWeapon07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon07.wav" -} - -"Heavy.SpecialWeapon08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon08.wav" -} - -"Heavy.SpecialWeapon09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SpecialWeapon09.wav" -} - -"Heavy.SandwichEat" -{ - "channel" "CHAN_VOICE" - "volume" "1" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/SandwichEat09.wav" -} - -"Heavy.SandwichTaunt01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt01.wav" -} - -"Heavy.SandwichTaunt02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt02.wav" -} - -"Heavy.SandwichTaunt03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt03.wav" -} - -"Heavy.SandwichTaunt04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt04.wav" -} - -"Heavy.SandwichTaunt05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt05.wav" -} - -"Heavy.SandwichTaunt06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt06.wav" -} - -"Heavy.SandwichTaunt07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt07.wav" -} - -"Heavy.SandwichTaunt08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt08.wav" -} - -"Heavy.SandwichTaunt09" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt09.wav" -} - -"Heavy.SandwichTaunt10" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt10.wav" -} - -"Heavy.SandwichTaunt11" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt11.wav" -} - -"Heavy.SandwichTaunt12" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt12.wav" -} - -"Heavy.SandwichTaunt13" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt13.wav" -} - -"Heavy.SandwichTaunt14" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt14.wav" -} - -"Heavy.SandwichTaunt15" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt15.wav" -} - -"Heavy.SandwichTaunt16" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt16.wav" -} - -"Heavy.SandwichTaunt17" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/heavy_SandwichTaunt17.wav" -} - - - -//----------------------------------------------------------------------------- -//End of Heavy -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -//Scout Batch 4 -//----------------------------------------------------------------------------- -"Scout.ApexofJump01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump01.wav" -} - -"Scout.ApexofJump05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump05.wav" -} - -"Scout.ApexofJump02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump02.wav" -} - -"Scout.ApexofJump03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump03.wav" -} - -"Scout.ApexofJump04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_ApexofJump04.wav" -} - -"Scout.Award01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award01.wav" -} - -"Scout.Award02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award02.wav" -} - -"Scout.Award04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award04.wav" -} - -"Scout.Award03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award03.wav" -} - -"Scout.Award05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award05.wav" -} - -"Scout.Award06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award06.wav" -} - -"Scout.Award07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award07.wav" -} - -"Scout.Award08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award08.wav" -} - -"Scout.Award09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award09.wav" -} - -"Scout.Award11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award11.wav" -} - -"Scout.Award12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award12.wav" -} - -"Scout.Award10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Award10.wav" -} - -"Scout.BeingShotInvincible04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible04.wav" -} - -"Scout.BeingShotInvincible07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible07.wav" -} - -"Scout.BeingShotInvincible02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible02.wav" -} - -"Scout.BeingShotInvincible01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible01.wav" -} - -"Scout.BeingShotInvincible08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible08.wav" -} - -"Scout.BeingShotInvincible09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible09.wav" -} - -"Scout.BeingShotInvincible03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible03.wav" -} - -"Scout.BeingShotInvincible10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible10.wav" -} - -"Scout.BeingShotInvincible06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible06.wav" -} - -"Scout.BeingShotInvincible05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible05.wav" -} - -"Scout.BeingShotInvincible11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible11.wav" -} - -"Scout.BeingShotInvincible12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible12.wav" -} - -"Scout.BeingShotInvincible13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible13.wav" -} - -"Scout.BeingShotInvincible14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible14.wav" -} - -"Scout.BeingShotInvincible15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible15.wav" -} - -"Scout.BeingShotInvincible16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible16.wav" -} - -"Scout.BeingShotInvincible17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible17.wav" -} - -"Scout.BeingShotInvincible18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible18.wav" -} - -"Scout.BeingShotInvincible19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible19.wav" -} - -"Scout.BeingShotInvincible20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible20.wav" -} - -"Scout.BeingShotInvincible21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible21.wav" -} - -"Scout.BeingShotInvincible22" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible22.wav" -} - -"Scout.BeingShotInvincible23" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible23.wav" -} - -"Scout.BeingShotInvincible24" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible24.wav" -} - -"Scout.BeingShotInvincible25" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible25.wav" -} - -"Scout.BeingShotInvincible26" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible26.wav" -} - -"Scout.BeingShotInvincible27" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible27.wav" -} - -"Scout.BeingShotInvincible28" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible28.wav" -} - -"Scout.BeingShotInvincible29" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible29.wav" -} - -"Scout.BeingShotInvincible30" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible30.wav" -} - -"Scout.BeingShotInvincible31" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible31.wav" -} - -"Scout.BeingShotInvincible32" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible32.wav" -} - -"Scout.BeingShotInvincible33" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible33.wav" -} - -"Scout.BeingShotInvincible34" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible34.wav" -} - -"Scout.BeingShotInvincible35" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible35.wav" -} - -"Scout.BeingShotInvincible36" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_BeingShotInvincible36.wav" -} - -"Scout.CartGoingBackDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense03.wav" -} - -"Scout.CartGoingBackDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense01.wav" -} - -"Scout.CartGoingBackDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense02.wav" -} - -"Scout.CartGoingBackDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense04.wav" -} - -"Scout.CartGoingBackDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense05.wav" -} - -"Scout.CartGoingBackDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackDefense06.wav" -} - -"Scout.CartGoingBackOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense01.wav" -} - -"Scout.CartGoingBackOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense02.wav" -} - -"Scout.CartGoingBackOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense03.wav" -} - -"Scout.CartGoingBackOffense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense07.wav" -} - -"Scout.CartGoingBackOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense04.wav" -} - -"Scout.CartGoingBackOffense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense08.wav" -} - -"Scout.CartGoingBackOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense05.wav" -} - -"Scout.CartGoingBackOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartGoingBackOffense06.wav" -} - -"Scout.CartMovingForwardDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense01.wav" -} - -"Scout.CartMovingForwardDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense02.wav" -} - -"Scout.CartMovingForwardDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense03.wav" -} - -"Scout.CartMovingForwardDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense04.wav" -} - -"Scout.CartMovingForwardDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense05.wav" -} - -"Scout.CartMovingForwardDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardDefense06.wav" -} - -"Scout.CartMovingForwardOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense01.wav" -} - -"Scout.CartMovingForwardOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense02.wav" -} - -"Scout.CartMovingForwardOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense03.wav" -} - -"Scout.CartMovingForwardOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense04.wav" -} - -"Scout.CartMovingForwardOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense06.wav" -} - -"Scout.CartMovingForwardOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartMovingForwardOffense05.wav" -} - -"Scout.CartStayCloseOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense01.wav" -} - -"Scout.CartStayCloseOffense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense04.wav" -} - -"Scout.CartStayCloseOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense02.wav" -} - -"Scout.CartStayCloseOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense03.wav" -} - -"Scout.CartStayCloseOffense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense05.wav" -} - -"Scout.CartStayCloseOffense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStayCloseOffense06.wav" -} - -"Scout.CartStopItDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStopItDefense01.wav" -} - -"Scout.CartStopItDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStopItDefense02.wav" -} - -"Scout.CartStopItDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStopItDefense03.wav" -} - -"Scout.CartStoppedOffense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStoppedOffense01.wav" -} - -"Scout.CartStoppedOffense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStoppedOffense02.wav" -} - -"Scout.CartStoppedOffense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_CartStoppedOffense03.wav" -} - -"Scout.Domination02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination02.wav" -} - -"Scout.Domination03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination03.wav" -} - -"Scout.Domination04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination04.wav" -} - -"Scout.Domination19" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination19.wav" -} - -"Scout.Domination05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination05.wav" -} - -"Scout.Domination18" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination18.wav" -} - -"Scout.Domination06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination06.wav" -} - -"Scout.Domination07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination07.wav" -} - -"Scout.Domination08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination08.wav" -} - -"Scout.Domination09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination09.wav" -} - -"Scout.Domination10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination10.wav" -} - -"Scout.Domination11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination11.wav" -} - -"Scout.Domination20" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination20.wav" -} - -"Scout.Domination12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination12.wav" -} - -"Scout.Domination13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination13.wav" -} - -"Scout.Domination14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination14.wav" -} - -"Scout.Domination01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination01.wav" -} - -"Scout.Domination15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination15.wav" -} - -"Scout.Domination16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination16.wav" -} - -"Scout.Domination17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination17.wav" -} - -"Scout.Domination21" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Domination21.wav" -} - -"Scout.DominationDem01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem01.wav" -} - -"Scout.DominationDem02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem02.wav" -} - -"Scout.DominationDem05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem05.wav" -} - -"Scout.DominationDem03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem03.wav" -} - -"Scout.DominationDem04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationDem04.wav" -} - -"Scout.DominationEng01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng01.wav" -} - -"Scout.DominationEng02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng02.wav" -} - -"Scout.DominationEng03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng03.wav" -} - -"Scout.DominationEng04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng04.wav" -} - -"Scout.DominationEng05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng05.wav" -} - -"Scout.DominationEng06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationEng06.wav" -} - -"Scout.DominationHvy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy01.wav" -} - -"Scout.DominationHvy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy02.wav" -} - -"Scout.DominationHvy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy03.wav" -} - -"Scout.DominationHvy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy04.wav" -} - -"Scout.DominationHvy05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy05.wav" -} - -"Scout.DominationHvy06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy06.wav" -} - -"Scout.DominationHvy07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy07.wav" -} - -"Scout.DominationHvy08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy08.wav" -} - -"Scout.DominationHvy09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy09.wav" -} - -"Scout.DominationHvy10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationHvy10.wav" -} - -"Scout.DominationMed06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed06.wav" -} - -"Scout.DominationMed05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed05.wav" -} - -"Scout.DominationMed01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed01.wav" -} - -"Scout.DominationMed02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed02.wav" -} - -"Scout.DominationMed03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed03.wav" -} - -"Scout.DominationMed04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationMed04.wav" -} - -"Scout.DominationPyr01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr01.wav" -} - -"Scout.DominationPyr02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr02.wav" -} - -"Scout.DominationPyr03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr03.wav" -} - -"Scout.DominationPyr06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr06.wav" -} - -"Scout.DominationPyr04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr04.wav" -} - -"Scout.DominationPyr05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationPyr05.wav" -} - -"Scout.DominationSct01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSct01.wav" -} - -"Scout.DominationSct02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSct02.wav" -} - -"Scout.DominationSct03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSct03.wav" -} - -"Scout.DominationSnp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp01.wav" -} - -"Scout.DominationSnp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp02.wav" -} - -"Scout.DominationSnp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp03.wav" -} - -"Scout.DominationSnp04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp04.wav" -} - -"Scout.DominationSnp05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSnp05.wav" -} - -"Scout.DominationSol01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol01.wav" -} - -"Scout.DominationSol02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol02.wav" -} - -"Scout.DominationSol03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol03.wav" -} - -"Scout.DominationSol04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol04.wav" -} - -"Scout.DominationSol05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol05.wav" -} - -"Scout.DominationSol06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSol06.wav" -} - -"Scout.DominationSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy01.wav" -} - -"Scout.DominationSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy02.wav" -} - -"Scout.DominationSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy03.wav" -} - -"Scout.DominationSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_DominationSpy04.wav" -} - -"Scout.FightOnCap01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap01.wav" -} - -"Scout.FightOnCap02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap02.wav" -} - -"Scout.FightOnCap03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap03.wav" -} - -"Scout.FightOnCap04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_FightOnCap04.wav" -} - -"Scout.Invincible01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible01.wav" -} - -"Scout.Invincible02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible02.wav" -} - -"Scout.Invincible04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible04.wav" -} - -"Scout.Invincible03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Invincible03.wav" -} - -"Scout.InvincibleChgUnderFire01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire01.wav" -} - -"Scout.InvincibleChgUnderFire02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire02.wav" -} - -"Scout.InvincibleChgUnderFire04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire04.wav" -} - -"Scout.InvincibleChgUnderFire03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleChgUnderFire03.wav" -} - -"Scout.InvincibleNotReady01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady01.wav" -} - -"Scout.InvincibleNotReady02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady02.wav" -} - -"Scout.InvincibleNotReady03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady03.wav" -} - -"Scout.InvincibleNotReady04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady04.wav" -} - -"Scout.InvincibleNotReady05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady05.wav" -} - -"Scout.InvincibleNotReady06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady06.wav" -} - -"Scout.InvincibleNotReady07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_InvincibleNotReady07.wav" -} - -"Scout.MedicFollow01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow01.wav" -} - -"Scout.MedicFollow02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow02.wav" -} - -"Scout.MedicFollow03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow03.wav" -} - -"Scout.MedicFollow04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MedicFollow04.wav" -} - -"Scout.MeleeDare01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare01.wav" -} - -"Scout.MeleeDare02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare02.wav" -} - -"Scout.MeleeDare06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare06.wav" -} - -"Scout.MeleeDare03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare03.wav" -} - -"Scout.MeleeDare04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare04.wav" -} - -"Scout.MeleeDare05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_MeleeDare05.wav" -} - -"Scout.Misc01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc01.wav" -} - -"Scout.Misc02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc02.wav" -} - -"Scout.Misc03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc03.wav" -} - -"Scout.Misc04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc04.wav" -} - -"Scout.Misc05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc05.wav" -} - -"Scout.Misc06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc06.wav" -} - -"Scout.Misc07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc07.wav" -} - -"Scout.Misc08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc08.wav" -} - -"Scout.Misc09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Misc09.wav" -} - -"Scout.Revenge01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge01.wav" -} - -"Scout.Revenge02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge02.wav" -} - -"Scout.Revenge03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge03.wav" -} - -"Scout.Revenge04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge04.wav" -} - -"Scout.Revenge05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge05.wav" -} - -"Scout.Revenge06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge06.wav" -} - -"Scout.Revenge07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge07.wav" -} - -"Scout.Revenge08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge08.wav" -} - -"Scout.Revenge09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_Revenge09.wav" -} - -"Scout.StunBallHit02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit02.wav" -} - -"Scout.StunBallHit03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit03.wav" -} - -"Scout.StunBallHit04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit04.wav" -} - -"Scout.StunBallHit05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit05.wav" -} - -"Scout.StunBallHit06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit06.wav" -} - -"Scout.StunBallHit07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit07.wav" -} - -"Scout.StunBallHit08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit08.wav" -} - -"Scout.StunBallHit09" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit09.wav" -} - -"Scout.StunBallHit10" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit10.wav" -} - -"Scout.StunBallHit15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit15.wav" -} - -"Scout.StunBallHit11" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit11.wav" -} - -"Scout.StunBallHit16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit16.wav" -} - -"Scout.StunBallHit12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit12.wav" -} - -"Scout.StunBallHit13" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit13.wav" -} - -"Scout.StunBallHit14" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit14.wav" -} - -"Scout.StunBallHit01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHit01.wav" -} - -"Scout.StunBallHittingIt02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt02.wav" -} - -"Scout.StunBallHittingIt01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt01.wav" -} - -"Scout.StunBallHittingIt04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt04.wav" -} - -"Scout.StunBallHittingIt03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt03.wav" -} - -"Scout.StunBallHittingIt05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallHittingIt05.wav" -} - -"Scout.StunBallPickUp01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp01.wav" -} - -"Scout.StunBallPickUp02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp02.wav" -} - -"Scout.StunBallPickUp03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp03.wav" -} - -"Scout.StunBallPickUp04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp04.wav" -} - -"Scout.StunBallPickUp05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_StunBallPickUp05.wav" -} - -"Scout.TripleJump01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump01.wav" -} - -"Scout.TripleJump03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump03.wav" -} - -"Scout.TripleJump02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump02.wav" -} - -"Scout.TripleJump04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/scout_TripleJump04.wav" -} - -//----------------------------------------------------------------------------- -//End of Scout Batch 4 -//----------------------------------------------------------------------------- - - -//----------------------------------------------------------------------------- -//Announcer batch 5 -//----------------------------------------------------------------------------- -"Announcer.AM_CapEnabledRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - - "rndwave" - { - "wave" "vo/announcer_AM_CapEnabled01.wav" - "wave" "vo/announcer_AM_CapEnabled02.wav" - "wave" "vo/announcer_AM_CapEnabled03.wav" - "wave" "vo/announcer_AM_CapEnabled04.wav" - } -} - -"Announcer.AM_CapEnabled01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled01.wav" -} - -"Announcer.AM_CapEnabled02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled02.wav" -} - -"Announcer.AM_CapEnabled03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled03.wav" -} - -"Announcer.AM_CapEnabled04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapEnabled04.wav" -} - -"Announcer.AM_CapIncite01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite01.wav" -} - -"Announcer.AM_CapIncite02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite02.wav" -} - -"Announcer.AM_CapIncite03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite03.wav" -} - -"Announcer.AM_CapIncite04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite04.wav" -} - -"Announcer.AM_CapIncite05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite05.wav" -} - -"Announcer.AM_CapIncite06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_CapIncite06.wav" -} - -"Announcer.AM_FirstBloodRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_FirstBlood01.wav" - "wave" "vo/announcer_AM_FirstBlood02.wav" - "wave" "vo/announcer_AM_FirstBlood04.wav" - "wave" "vo/announcer_AM_FirstBlood05.wav" - } -} - -"Announcer.AM_FirstBloodFinally" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood03.wav" -} - -"Announcer.AM_FirstBloodFast" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood06.wav" -} - - -"Announcer.AM_FirstBlood01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood01.wav" -} - -"Announcer.AM_FirstBlood03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood03.wav" -} - -"Announcer.AM_FirstBlood05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood05.wav" -} - -"Announcer.AM_FirstBlood02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood02.wav" -} - -"Announcer.AM_FirstBlood04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood04.wav" -} - -"Announcer.AM_FirstBlood06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FirstBlood06.wav" -} - -"Announcer.AM_FlawlessDefeatRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_FlawlessDefeat01.wav" - "wave" "vo/announcer_AM_FlawlessDefeat02.wav" - "wave" "vo/announcer_AM_FlawlessDefeat03.wav" - "wave" "vo/announcer_AM_FlawlessDefeat04.wav" - } -} - -"Announcer.AM_FlawlessVictoryRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_FlawlessVictory01.wav" - "wave" "vo/announcer_AM_FlawlessVictory02.wav" - "wave" "vo/announcer_AM_FlawlessVictory03.wav" - } -} - -"Announcer.AM_FlawlessDefeat02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat02.wav" -} - -"Announcer.AM_FlawlessDefeat01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat01.wav" -} - -"Announcer.AM_FlawlessDefeat03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat03.wav" -} - -"Announcer.AM_FlawlessDefeat04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessDefeat04.wav" -} - -"Announcer.AM_FlawlessVictory01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessVictory01.wav" -} - -"Announcer.AM_FlawlessVictory02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessVictory02.wav" -} - -"Announcer.AM_FlawlessVictory03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_FlawlessVictory03.wav" -} - -"Announcer.AM_GameStarting01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting01.wav" -} - -"Announcer.AM_GameStarting02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting02.wav" -} - -"Announcer.AM_GameStarting03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting03.wav" -} - -"Announcer.AM_GameStarting04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting04.wav" -} - -"Announcer.AM_GameStarting05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_GameStarting05.wav" -} - -"Announcer.AM_KillStreak01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak01.wav" -} - -"Announcer.AM_KillStreak02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak02.wav" -} - -"Announcer.AM_KillStreak03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak03.wav" -} - -"Announcer.AM_KillStreak04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak04.wav" -} - -"Announcer.AM_KillStreak05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak05.wav" -} - -"Announcer.AM_KillStreak06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak06.wav" -} - -"Announcer.AM_KillStreak07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak07.wav" -} - -"Announcer.AM_KillStreak08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak08.wav" -} - -"Announcer.AM_KillStreak09" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak09.wav" -} - -"Announcer.AM_KillStreak10" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak10.wav" -} - -"Announcer.AM_KillStreak11" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_KillStreak11.wav" -} - -"Announcer.AM_LastManAlive02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive02.wav" -} - -"Announcer.AM_LastManAlive03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive03.wav" -} - -"Announcer.AM_LastManAlive01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive01.wav" -} - -"Announcer.AM_LastManAlive04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManAlive04.wav" -} - -"Announcer.AM_LastManForfeit01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit01.wav" -} - -"Announcer.AM_LastManForfeit02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit02.wav" -} - -"Announcer.AM_LastManForfeit03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit03.wav" -} - -"Announcer.AM_LastManForfeit04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_LastManForfeit04.wav" -} - -"Announcer.AM_RoundStartRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_RoundStart01.wav" - "wave" "vo/announcer_AM_RoundStart03.wav" - "wave" "vo/announcer_AM_RoundStart04.wav" - } -} - -"Announcer.AM_RoundStart01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart01.wav" -} - -"Announcer.AM_RoundStart02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart02.wav" -} - -"Announcer.AM_RoundStart03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart03.wav" -} - -"Announcer.AM_RoundStart04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_RoundStart04.wav" -} - -"Announcer.AM_TeamScrambleRandom" -{ - "channel" "CHAN_STATIC" - "volume" "VOL_NORM" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_NORM" - - "rndwave" - { - "wave" "vo/announcer_AM_TeamScramble01.wav" - "wave" "vo/announcer_AM_TeamScramble02.wav" - "wave" "vo/announcer_AM_TeamScramble03.wav" - } -} - -"Announcer.AM_TeamScramble03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_TeamScramble03.wav" -} - -"Announcer.AM_TeamScramble02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_TeamScramble02.wav" -} - -"Announcer.AM_TeamScramble01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/announcer_AM_TeamScramble01.wav" -} - -//----------------------------------------------------------------------------- -//End of Announcer -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -//Spy batch 6 -//----------------------------------------------------------------------------- -"Spy.DominationDemoMan01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan01.wav" -} - -"Spy.DominationDemoMan02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan02.wav" -} - -"Spy.DominationDemoMan03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan03.wav" -} - -"Spy.DominationDemoMan04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan04.wav" -} - -"Spy.DominationDemoMan05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan05.wav" -} - -"Spy.DominationDemoMan06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan06.wav" -} - -"Spy.DominationDemoMan07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationDemoMan07.wav" -} - -"Spy.DominationEngineer01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer01.wav" -} - -"Spy.DominationEngineer02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer02.wav" -} - -"Spy.DominationEngineer03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer03.wav" -} - -"Spy.DominationEngineer04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer04.wav" -} - -"Spy.DominationEngineer05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer05.wav" -} - -"Spy.DominationEngineer06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationEngineer06.wav" -} - -"Spy.DominationHeavy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy01.wav" -} - -"Spy.DominationHeavy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy02.wav" -} - -"Spy.DominationHeavy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy03.wav" -} - -"Spy.DominationHeavy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy04.wav" -} - -"Spy.DominationHeavy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy05.wav" -} - -"Spy.DominationHeavy06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy06.wav" -} - -"Spy.DominationHeavy07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy07.wav" -} - -"Spy.DominationHeavy08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationHeavy08.wav" -} - -"Spy.DominationMedic01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic01.wav" -} - -"Spy.DominationMedic02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic02.wav" -} - -"Spy.DominationMedic03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic03.wav" -} - -"Spy.DominationMedic04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic04.wav" -} - -"Spy.DominationMedic05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic05.wav" -} - -"Spy.DominationMedic06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationMedic06.wav" -} - -"Spy.DominationPyro01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro01.wav" -} - -"Spy.DominationPyro02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro02.wav" -} - -"Spy.DominationPyro03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro03.wav" -} - -"Spy.DominationPyro04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro04.wav" -} - -"Spy.DominationPyro05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationPyro05.wav" -} - -"Spy.DominationScout01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout01.wav" -} - -"Spy.DominationScout02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout02.wav" -} - -"Spy.DominationScout03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout03.wav" -} - -"Spy.DominationScout04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout04.wav" -} - -"Spy.DominationScout05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout05.wav" -} - -"Spy.DominationScout06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout06.wav" -} - -"Spy.DominationScout07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout07.wav" -} - -"Spy.DominationScout08" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationScout08.wav" -} - -"Spy.DominationSniper01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper01.wav" -} - -"Spy.DominationSniper02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper02.wav" -} - -"Spy.DominationSniper03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper03.wav" -} - -"Spy.DominationSniper04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper04.wav" -} - -"Spy.DominationSniper05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper05.wav" -} - -"Spy.DominationSniper06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper06.wav" -} - -"Spy.DominationSniper07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSniper07.wav" -} - -"Spy.DominationSoldier01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier01.wav" -} - -"Spy.DominationSoldier02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier02.wav" -} - -"Spy.DominationSoldier03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier03.wav" -} - -"Spy.DominationSoldier04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier04.wav" -} - -"Spy.DominationSoldier05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSoldier05.wav" -} - -"Spy.DominationSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy01.wav" -} - -"Spy.DominationSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy02.wav" -} - -"Spy.DominationSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy03.wav" -} - -"Spy.DominationSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy04.wav" -} - -"Spy.DominationSpy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_DominationSpy05.wav" -} - -"Spy.JarateHit01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit01.wav" -} - -"Spy.JarateHit02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit02.wav" -} - -"Spy.JarateHit03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit03.wav" -} - -"Spy.JarateHit04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit04.wav" -} - -"Spy.JarateHit05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit05.wav" -} - -"Spy.JarateHit06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_JarateHit06.wav" -} - -"Spy.MedicFollow01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MedicFollow01.wav" -} - -"Spy.MedicFollow02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MedicFollow02.wav" -} - -"Spy.MeleeDare01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MeleeDare01.wav" -} - -"Spy.MeleeDare02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_MeleeDare02.wav" -} - -"Spy.Revenge01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_Revenge01.wav" -} - -"Spy.Revenge02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_Revenge02.wav" -} - -"Spy.Revenge03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/spy_Revenge03.wav" -} - -//----------------------------------------------------------------------------- -//End of Spy batch 6 -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -//Sniper BATCH 7 -//----------------------------------------------------------------------------- -"Sniper.DominationDemoMan01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan01.wav" -} - -"Sniper.DominationDemoMan02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan02.wav" -} - -"Sniper.DominationDemoMan03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan03.wav" -} - -"Sniper.DominationDemoMan04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan04.wav" -} - -"Sniper.DominationDemoMan05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationDemoMan05.wav" -} - -"Sniper.DominationEngineer01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer01.wav" -} - -"Sniper.DominationEngineer02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer02.wav" -} - -"Sniper.DominationEngineer03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer03.wav" -} - -"Sniper.DominationEngineer04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer04.wav" -} - -"Sniper.DominationEngineer05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer05.wav" -} - -"Sniper.DominationEngineer06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationEngineer06.wav" -} - -"Sniper.DominationHeavy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy01.wav" -} - -"Sniper.DominationHeavy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy02.wav" -} - -"Sniper.DominationHeavy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy03.wav" -} - -"Sniper.DominationHeavy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy04.wav" -} - -"Sniper.DominationHeavy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy05.wav" -} - -"Sniper.DominationHeavy06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy06.wav" -} - -"Sniper.DominationHeavy07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationHeavy07.wav" -} - -"Sniper.DominationMedic01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic01.wav" -} - -"Sniper.DominationMedic02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic02.wav" -} - -"Sniper.DominationMedic03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic03.wav" -} - -"Sniper.DominationMedic04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic04.wav" -} - -"Sniper.DominationMedic05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationMedic05.wav" -} - -"Sniper.DominationPyro01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro01.wav" -} - -"Sniper.DominationPyro02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro02.wav" -} - -"Sniper.DominationPyro03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro03.wav" -} - -"Sniper.DominationPyro04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro04.wav" -} - -"Sniper.DominationPyro05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationPyro05.wav" -} - -"Sniper.DominationScout01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout01.wav" -} - -"Sniper.DominationScout02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout02.wav" -} - -"Sniper.DominationScout03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout03.wav" -} - -"Sniper.DominationScout04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout04.wav" -} - -"Sniper.DominationScout05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationScout05.wav" -} - -"Sniper.DominationSniper18" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper18.wav" -} - -"Sniper.DominationSniper19" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper19.wav" -} - -"Sniper.DominationSniper20" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper20.wav" -} - -"Sniper.DominationSniper21" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper21.wav" -} - -"Sniper.DominationSniper22" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSniper22.wav" -} - -"Sniper.DominationSoldier01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier01.wav" -} - -"Sniper.DominationSoldier02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier02.wav" -} - -"Sniper.DominationSoldier03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier03.wav" -} - -"Sniper.DominationSoldier04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier04.wav" -} - -"Sniper.DominationSoldier05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier05.wav" -} - -"Sniper.DominationSoldier06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSoldier06.wav" -} - -"Sniper.DominationSpy01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy01.wav" -} - -"Sniper.DominationSpy02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy02.wav" -} - -"Sniper.DominationSpy03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy03.wav" -} - -"Sniper.DominationSpy04" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy04.wav" -} - -"Sniper.DominationSpy05" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy05.wav" -} - -"Sniper.DominationSpy06" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy06.wav" -} - -"Sniper.DominationSpy07" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_DominationSpy07.wav" -} - -"Sniper.JarateToss01" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_JarateToss01.wav" -} - -"Sniper.JarateToss02" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_JarateToss02.wav" -} - -"Sniper.JarateToss03" -{ - "channel" "CHAN_VOICE" - "volume" "1.000" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_JarateToss03.wav" -} - -//----------------------------------------------------------------------------- -//End of Sniper BATCH 7 -//----------------------------------------------------------------------------- diff --git a/addon/gamemodes/teamfortress/content/scripts/tf_game_sounds_vo_handmade.txt b/addon/gamemodes/teamfortress/content/scripts/tf_game_sounds_vo_handmade.txt deleted file mode 100644 index eea2de985..000000000 --- a/addon/gamemodes/teamfortress/content/scripts/tf_game_sounds_vo_handmade.txt +++ /dev/null @@ -1,118 +0,0 @@ -"Medic.Taunts16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - - "soundlevel" "SNDLVL_95dB" - - "wave" "vo/taunts/medic_Taunts16.wav" -} - -"sniper.CartGoingBackDefense01" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense01.wav" -} - -"sniper.CartGoingBackDefense02" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense02.wav" -} - -"sniper.CartGoingBackDefense03" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense03.wav" -} - -"sniper.CartGoingBackDefense04" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense04.wav" -} - -"sniper.CartGoingBackDefense05" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense05.wav" -} - -"sniper.CartGoingBackDefense06" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense06.wav" -} - -"sniper.CartGoingBackDefense07" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense07.wav" -} - -"sniper.CartGoingBackDefense08" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_CartGoingBackDefense08.wav" -} - -"sniper.Domination12" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination12.wav" -} - -"sniper.Domination15" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination15.wav" -} - -"sniper.Domination16" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination16.wav" -} - -"sniper.Domination17" -{ - "channel" "CHAN_VOICE" - "volume" "0.820" - "pitch" "PITCH_NORM" - "soundlevel" "SNDLVL_95dB" - "wave" "vo/sniper_domination17.wav" -} diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_arrow_stuck/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_arrow_stuck/init.lua deleted file mode 100644 index a39008e81..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_arrow_stuck/init.lua +++ /dev/null @@ -1,121 +0,0 @@ - -EFFECT.LifeTime = 10 -EFFECT.FadeTime = 2 - -EFFECT.Model = "models/weapons/w_models/w_arrow.mdl" - -function EFFECT:Init(data) - local ent, pos, ang, physbone = data:GetEntity(), data:GetOrigin(), data:GetAngles(), data:GetAttachment() - - self:SetModel(self.Model) - self:SetPos(pos) - self:SetAngles(ang) - - if IsValid(ent) then - local bone = ent:TranslatePhysBoneToBone(physbone) - local bonepos, boneang = ent:GetBonePosition(bone) - if bonepos and boneang then - self.Parent = ent - if IsValid(ent.DeathRagdoll) then self.Parent = ent.DeathRagdoll end - self.Bone = bone - - local dir, normal = ang:Forward(), ang:Up() - local X, Y, Z = boneang:Forward(), boneang:Right(), boneang:Up() - - if self.Parent:GetClass()=="class C_HL2MPRagdoll" or self.Parent:GetClass()=="class C_ClientRagdoll" or self.Parent:GetClass()=="prop_ragdoll" then - local phys = self.Parent:GetPhysicsObjectNum(physbone) - if IsValid(phys) then - local tr = util.TraceLine{ - start = pos, - endpos = pos + dir * 80, - mask = MASK_SOLID_BRUSHONLY, - } - if tr.Hit and not tr.HitSky then - -- Pin the ragdoll - - pos = tr.HitPos - dir * 5 - - if self.Parent:GetClass() ~= "prop_ragdoll" then - self.PhysObj = phys - self.NextPhysFreeze = CurTime() + 0.05 - EndDeathPose(self.Parent) - phys:SetPos(pos) - end - - pos = pos + dir * 8 - self:SetPos(pos) - - self.NoAttach = true - return - end - end - end - - local diff = pos - bonepos - - self.RelativePosition = Vector(diff:Dot(X),diff:Dot(Y),diff:Dot(Z))*0.5 - self.RelativeDirection = Vector(dir:Dot(X),dir:Dot(Y),dir:Dot(Z)) - self.RelativeNormal = Vector(normal:Dot(X),normal:Dot(Y),normal:Dot(Z)) - - if not self.Parent.StuckArrows then self.Parent.StuckArrows = {} end - self.Parent.StuckArrows[self] = true - end - - self:SetParent(ent) - else - self.NextDeath = CurTime() + self.LifeTime - end -end - -function EFFECT:Think() - if self.NextPhysFreeze and CurTime() > self.NextPhysFreeze then - if self.PhysObj and self.PhysObj:IsValid() then - self.PhysObj:EnableMotion(false) - end - self.NextPhysFreeze = nil - end - - if self.NextDeath then - local diff = self.NextDeath - CurTime() - - if diff0 - elseif IsValid(self.Parent) then - local _,_,_,a = self.Parent:GetColor() - self:SetColor(Color(255,255,255,a)) - - return true - else - return false - end -end - -function EFFECT:Render() - if self.Parent==LocalPlayer() then - if not LocalPlayer():ShouldDrawLocalPlayer() then - return - end - end - - if not self.NoAttach and IsValid(self.Parent) then - local pos, ang = self.Parent:GetBonePosition(self.Bone) - pos = pos + - self.RelativePosition.x * ang:Forward() + - self.RelativePosition.y * ang:Right() + - self.RelativePosition.z * ang:Up() - local dir = - self.RelativeDirection.x * ang:Forward() + - self.RelativeDirection.y * ang:Right() + - self.RelativeDirection.z * ang:Up() - ang = dir:Angle() - - self:SetPos(pos) - self:SetAngles(ang) - end - - self:DrawModel() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_dispenser_screen/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_dispenser_screen/init.lua deleted file mode 100644 index 08f7b77b5..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_dispenser_screen/init.lua +++ /dev/null @@ -1,97 +0,0 @@ - -function EFFECT:Init(data) - if IsValid(data:GetEntity()) and data:GetEntity():GetClass()=="obj_dispenser" then - self.Dispenser = data:GetEntity() - self:SetPos(self.Dispenser:GetPos()) - self:SetRenderBounds(self.Dispenser:GetRenderBounds()) - end -end - -function EFFECT:Think() - if not IsValid(self.Dispenser) then - return false - end - return true -end - -local ScreenTexture = { - [0]=surface.GetTextureID("vgui/dispenser_meter_bg_red"), - [1]=surface.GetTextureID("vgui/dispenser_meter_bg_blue"), -} -local ArrowTexture = surface.GetTextureID("vgui/dispenser_meter_arrow") -local Offset = Vector(-0.4, 0, -0.7) -local Scale = 0.082 -local DialSpeed = 1 -local AngleStart = 86 -local AngleEnd = -90 -local MaxMetal = 400 - -local function RotatedRect(x, y, w, h, ox, oy, a) - local dx, dy = 10*(w*ox-w/2), 10*(h*oy-h/2) - local s, c = math.sin(math.rad(a)), math.cos(math.rad(a)) - local ex, ey = dx * c + dy * s, dy * c - dx * s - - dx, dy = dx-ex, dy-ey - - surface.DrawTexturedRectRotated(x+dx/10, y+dy/10, w, h, a) -end - -function EFFECT:CalcAngle(m) - return AngleStart + (AngleEnd - AngleStart) * m / MaxMetal -end - -function EFFECT:Render() - local _,_,_,a = self.Dispenser:GetColor() - if a==0 then return end - - local state = self.Dispenser:GetNWInt("State") or 0 - if state<2 then return end - - local metal = self.Dispenser:GetNWInt("Metal") or 0 - if metal and metal~=self.LastMetalAmount then - if not self.Ang then - self.Ang = self:CalcAngle(metal) - else - if metal>self.LastMetalAmount then - self.DAng = -DialSpeed - else - self.DAng = DialSpeed - end - self.TargetAngle = self:CalcAngle(metal) - end - self.LastMetalAmount = metal - elseif self.TargetAngle then - if self.Ang*self.DAng > self.TargetAngle*self.DAng then - self.Ang = self.TargetAngle - self.TargetAngle = nil - else - self.Ang = self.Ang + self.DAng - end - end - - local cp0_ll = self.Dispenser:GetAttachment(self.Dispenser:LookupAttachment("controlpanel0_ll")) - local cp1_ll = self.Dispenser:GetAttachment(self.Dispenser:LookupAttachment("controlpanel1_ll")) - - cam.Start3D2D(cp0_ll.Pos - + Offset.x * cp0_ll.Ang:Forward() - + Offset.y * cp0_ll.Ang:Right() - + Offset.z * cp0_ll.Ang:Up(), cp0_ll.Ang, Scale) - self:DrawScreen() - cam.End3D2D() - - cam.Start3D2D(cp1_ll.Pos - + Offset.x * cp1_ll.Ang:Forward() - + Offset.y * cp1_ll.Ang:Right() - + Offset.z * cp1_ll.Ang:Up(), cp1_ll.Ang, Scale) - self:DrawScreen() - cam.End3D2D() -end - -function EFFECT:DrawScreen() - local r,g,b,a = self.Dispenser:GetColor() - surface.SetDrawColor(r,g,b,a) - surface.SetTexture(ScreenTexture[self.Dispenser:GetSkin()] or ScreenTexture[0]) - surface.DrawTexturedRect(0, -128, 256, 128) - surface.SetTexture(ArrowTexture) - RotatedRect(128,-64, 32, 128, 0.5, 0.90625, self.Ang) -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_explosion/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_explosion/init.lua deleted file mode 100644 index b6db3112e..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_explosion/init.lua +++ /dev/null @@ -1,82 +0,0 @@ - ---[[ -Explosion flags: -1 Underwater -2 Wall explosion -4 Jarate -8 Clientside sound -16 Mad Milk -32 -64 -]] - -local ExplosionSounds = { -")weapons/pipe_bomb1.wav", -")weapons/pipe_bomb2.wav", -")weapons/pipe_bomb3.wav", -} - -function EFFECT:Init(data) - local pos = data:GetOrigin() - local ang = data:GetAngles() - local flags = data:GetAttachment() - - local effect - - if bit.band(flags, 16) > 0 then - effect = "peejar_impact_milk" - elseif bit.band(flags, 4) > 0 then - if bit.band(flags, 1) > 0 then - effect = "peejar_impact_small" - else - effect = "peejar_impact" - end - else - effect = "ExplosionCore" - if bit.band(flags, 2) > 0 then - effect = effect.."_Wall" - else - effect = effect.."_MidAir" - end - - if bit.band(flags, 1) > 0 then - effect = effect.."_underwater" - end - end - - self:SetPos(pos) - ParticleEffect(effect, pos, ang, 0) - - if bit.band(flags, 8) > 0 then - self.NextExplosionSound = CurTime() + 0.05 - end -end - -function EFFECT:Think() - if self.NextExplosionSound then - if CurTime()>self.NextExplosionSound then - local mindist, best - for _,v in pairs(ents.GetAll()) do - if v.NextExplosionSound then - local d = EyePos():Distance(v:GetPos()) - if not mindist or d0 -end - -function EFFECT:Render() - self:StartVisualOverrides() - self:StartItemTint(self.ItemTint) - self:DrawModel() - self:EndItemTint() - self:EndVisualOverrides() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_hat_attached/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_hat_attached/init.lua deleted file mode 100644 index 4a85368f2..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_hat_attached/init.lua +++ /dev/null @@ -1,41 +0,0 @@ - -function EFFECT:Init(data) - local hat = data:GetEntity() - local pl = hat:GetOwner() - self.Parent = pl:GetRagdollEntity() - - if not IsValid(self.Parent) then - return - end - - local mdl = hat.Model - if not mdl then - self.Parent = nil - return - end - - if hat.GetItemTint then - self.ItemTint = hat:GetItemTint() - else - self.ItemTint = 0 - end - - self:SetModel(mdl) - self:AddEffects(EF_BONEMERGE) - self:SetParent(self.Parent) - - self:CopyVisualOverrides(hat) - hat.InitVisuals(self, pl, hat:GetVisuals()) -end - -function EFFECT:Think() - return IsValid(self.Parent) -end - -function EFFECT:Render() - self:StartVisualOverrides() - self:StartItemTint(self.ItemTint) - self:DrawModel() - self:EndItemTint() - self:EndVisualOverrides() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_hl2_head_gib/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_hl2_head_gib/init.lua deleted file mode 100644 index 3f1e217b4..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_hl2_head_gib/init.lua +++ /dev/null @@ -1,131 +0,0 @@ - -EFFECT.LifeTime = 10 -EFFECT.FadeTime = 2 - -local BoneList = { - "ValveBiped.Bip01_Pelvis", - "ValveBiped.Bip01_Spine", - "ValveBiped.Bip01_Spine1", - "ValveBiped.Bip01_Spine2", - "ValveBiped.forward", - - "ValveBiped.Bip01_R_Clavicle", - "ValveBiped.Bip01_R_UpperArm", - "ValveBiped.Bip01_R_Forearm", - "ValveBiped.Bip01_R_Hand", - "ValveBiped.Anim_Attachment_RH", - - "ValveBiped.Bip01_L_Clavicle", - "ValveBiped.Bip01_L_UpperArm", - "ValveBiped.Bip01_L_Forearm", - "ValveBiped.Bip01_L_Hand", - "ValveBiped.Anim_Attachment_LH", - - "ValveBiped.Bip01_R_Thigh", - "ValveBiped.Bip01_R_Calf", - "ValveBiped.Bip01_R_Foot", - - "ValveBiped.Bip01_L_Thigh", - "ValveBiped.Bip01_L_Calf", - "ValveBiped.Bip01_L_Foot", - - "ValveBiped.Bip01_R_Wrist", - "ValveBiped.Bip01_R_Ulna", - "ValveBiped.Bip01_L_Wrist", - "ValveBiped.Bip01_L_Ulna", -} - -local function HeadGibBuildBones(ent) - local b, m - - b = ent:LookupBone("ValveBiped.Bip01_Head1") - m = ent:GetBoneMatrix(b) - m:SetTranslation(Vector(0,0,0)) - m:Scale(Vector(4,4,4)) - ent:SetBoneMatrix(b,m) - - b = ent:LookupBone("ValveBiped.Bip01_Spine4") - m = ent:GetBoneMatrix(b) - m:Scale(Vector(0.25,0.25,0.25)) - ent:SetBoneMatrix(b,m) - - local pos = ent:GetPos() + ent:GetUp() * 65 - - for _,bone in ipairs(BoneList) do - b = ent:LookupBone(bone) - if b and b>=0 then - m = ent:GetBoneMatrix(b) - if m then - m:Scale(Vector(0,0,0)) - m:SetTranslation(pos) - ent:SetBoneMatrix(b, m) - end - end - end -end - -function EFFECT:Init(data) - local pl = data:GetEntity() - local pos = data:GetOrigin() - local ang = data:GetAngles() - - self:SetModel("models/player/gibs/spygib007.mdl") - --self:SetMaterial("models/wireframe") - self:SetPos(pos) - self:SetAngles(ang) - self:PhysicsInit(SOLID_VPHYSICS) - - self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) - self:SetCollisionBounds(Vector(-128,-128,-128), Vector(128,128,128)) - - self.NextDeath = CurTime() + self.LifeTime - self.Model = pl:GetModel() -end - -function EFFECT:Think() - if not self.DoneFirstThink then - self.DoneFirstThink = true - - local phys = self:GetPhysicsObject() - if phys and phys:IsValid() then - phys:Wake() - phys:SetVelocity(Vector(0, 0, math.Rand(200, 300)) + VectorRand() * math.Rand(0, 50)) - phys:AddAngleVelocity(Vector(math.Rand(-200,200),math.Rand(-200,200),math.Rand(-200,200))) - end - - self.Ragdoll = ClientsideModel(self.Model) - self.Ragdoll:SetNoDraw(true) - self.Ragdoll:SetPos(self:GetPos()) - self.Ragdoll:SetAngles(self:GetAngles()) - self.Ragdoll:SetParent(self) - self.Ragdoll.Parent = self - --self.Ragdoll.BuildBonePositions = HeadGibBuildBones - self.Ragdoll:AddBuildBoneHook("Head", HeadGibBuildBones) - - self.Ragdoll:InvalidateBoneCache() - self.Ragdoll:SetupBones() - end - - local diff = self.NextDeath - CurTime() - - if diff0 -end - -function EFFECT:Render() - if not IsValid(self.Ragdoll) then return end - - self.Ragdoll:SetRenderOrigin(self:GetPos() + self:GetUp() * 14) - self.Ragdoll:DrawModel() - --self:DrawModel() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_player_gibbed/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_player_gibbed/init.lua deleted file mode 100644 index 4912bc182..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_player_gibbed/init.lua +++ /dev/null @@ -1,72 +0,0 @@ - -local GenericGibs = {Gibs={ - [GIB_LEFTLEG] = GIBS_SILLY_START, - [GIB_RIGHTLEG] = GIBS_SILLY_START+1, - [GIB_LEFTARM] = GIBS_SILLY_START+2, - [GIB_RIGHTARM] = GIBS_SILLY_START+3, - [GIB_TORSO] = GIBS_SILLY_START+4, - [GIB_TORSO2] = GIBS_SILLY_START+5, - [GIB_HEAD] = GIBS_SILLY_START+6, - [GIB_HEADGEAR1] = GIBS_SILLY_START+7, - [GIB_HEADGEAR2] = GIBS_SILLY_START+8, - [GIB_ORGAN] = GIBS_SILLY_START+9, -}} - -function EFFECT:Init(data) - local pl = data:GetEntity() - - local c - - for k,_ in pairs(pl.StuckArrows or {}) do - k.Parent = nil - end - - if pl:IsPlayer() then - c = pl:GetPlayerClassTable() - else - c = GenericGibs - end - - if not c or not c.Gibs then return end - - local exclude = {} - - for _,v in pairs(pl:GetTFItems()) do - if v then - if v:GetVisuals() ~= nil then - local bodygroups = v:GetVisuals().hide_player_bodygroup_names - for _,b in ipairs(bodygroups or {}) do - if b == "hat" then - exclude[GIB_HEADGEAR1] = true - elseif b == "headphones" then - exclude[GIB_HEADGEAR2] = true - end - end - - if v.SetupPlayerRagdoll then - v:SetupPlayerRagdoll(NULL) - end - end - end - end - - for k,v in pairs(c.Gibs) do - if not exclude[k] then - local effectdata = EffectData() - effectdata:SetEntity(pl) - effectdata:SetMagnitude(v) - effectdata:SetOrigin(pl:GetPos()) - effectdata:SetAngles(pl:GetAngles()) - effectdata:SetNormal(Vector(0,0,1)) - effectdata:SetRadius(8) - util.Effect("tf_gib", effectdata) - end - end -end - -function EFFECT:Think() - return false -end - -function EFFECT:Render() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_stickybomb_gib/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_stickybomb_gib/init.lua deleted file mode 100644 index 7c7fe8a34..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_stickybomb_gib/init.lua +++ /dev/null @@ -1,57 +0,0 @@ - -EFFECT.LifeTime = 10 -EFFECT.FadeTime = 2 - -local GibModels = { -Model("models/weapons/w_models/w_stickybomb_gib1.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib2.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib3.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib4.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib5.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib6.mdl"), -} - -function EFFECT:Init(data) - local pos = data:GetOrigin() - local id = data:GetMagnitude() - local mdl = GibModels[id] or GibModels[1] - - self:SetModel(mdl) - self:SetPos(pos) - self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) - --self.Entity:SetCollisionBounds(Vector(-128,-128,-128), Vector(128,128,128)) - - self:InitPhysics() - - self.NextDeath = CurTime() + self.LifeTime -end - -function EFFECT:InitPhysics() - self:PhysicsInit(SOLID_VPHYSICS) - - local phys = self:GetPhysicsObject() - if phys and phys:IsValid() then - phys:Wake() - phys:SetVelocity(VectorRand() * math.Rand(200, 600)) - phys:AddAngleVelocity(Vector(math.Rand(-20,20),math.Rand(-20,20),math.Rand(-20,20))) - end -end - -function EFFECT:Think() - if not self:GetPhysicsObject():IsValid() then - self:InitPhysics() - end - - local diff = self.NextDeath - CurTime() - - if diff0 -end - -function EFFECT:Render() - self:DrawModel() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_syringe_stuck/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_syringe_stuck/init.lua deleted file mode 100644 index fd494b846..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_syringe_stuck/init.lua +++ /dev/null @@ -1,42 +0,0 @@ - -EFFECT.LifeTime = 10 -EFFECT.FadeTime = 2 - -EFFECT.Models = { - Model("models/weapons/w_models/w_syringe_proj.mdl"), - Model("models/weapons/c_models/c_leechgun/c_leech_proj.mdl"), - Model("models/weapons/w_models/w_syringe.mdl"), -} - -function EFFECT:Init(data) - local pos, ang, skin, stype = data:GetOrigin(), data:GetAngles(), data:GetMagnitude(), data:GetAttachment() - - self.Entity:SetModel(self.Models[stype+1] or self.Models[1]) - if stype==2 then - self.Entity:SetPos(pos - 18 * ang:Up()) - elseif stype==1 then - self.Entity:SetPos(pos - 7 * ang:Forward()) - else - self.Entity:SetPos(pos) - end - - self.Entity:SetAngles(ang) - self.Entity:SetSkin(skin) - - self.NextDeath = CurTime() + self.LifeTime -end - -function EFFECT:Think() - local diff = self.NextDeath - CurTime() - - if diff0 -end - -function EFFECT:Render() - self.Entity:DrawModel() -end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_tf2_head_gib/init.lua b/addon/gamemodes/teamfortress/entities/effects/tf_tf2_head_gib/init.lua deleted file mode 100644 index 239b78016..000000000 --- a/addon/gamemodes/teamfortress/entities/effects/tf_tf2_head_gib/init.lua +++ /dev/null @@ -1,55 +0,0 @@ - -local Gibs = {GIB_HEAD, GIB_HEADGEAR1, GIB_HEADGEAR2} - -function EFFECT:Init(data) - local pl = data:GetEntity() - local c = pl:GetPlayerClassTable() - - if not c or not c.Gibs then return end - - local exclude = {} - - for _,h in pairs(ents.FindByClass("tf_hat")) do - if h:GetOwner()==pl then - local hat = h:GetHatData() - if hat then - for _,v in ipairs(hat.disabledgibs or {}) do - exclude[v] = true - end - - if not(hat.nomodel or hat.nodrop) then - local effectdata = EffectData() - effectdata:SetEntity(h) - effectdata:SetMagnitude(0) - effectdata:SetOrigin(pl:GetPos()) - effectdata:SetAngles(pl:GetAngles()) - effectdata:SetNormal(Vector(0,0,1)) - util.Effect("tf_gib", effectdata) - end - end - end - end - - for _,k in ipairs(Gibs) do - if not exclude[k] then - local v = c.Gibs[k] - if v then - local effectdata = EffectData() - effectdata:SetEntity(pl) - effectdata:SetMagnitude(v) - effectdata:SetOrigin(pl:GetPos()) - effectdata:SetAngles(pl:GetAngles()) - effectdata:SetNormal(Vector(0,0,1)) - effectdata:SetRadius(1) - util.Effect("tf_gib", effectdata) - end - end - end -end - -function EFFECT:Think() - return false -end - -function EFFECT:Render() -end diff --git a/addon/gamemodes/teamfortress/entities/entities/ctf_bot_navigator.lua b/addon/gamemodes/teamfortress/entities/entities/ctf_bot_navigator.lua deleted file mode 100644 index 237844ebc..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/ctf_bot_navigator.lua +++ /dev/null @@ -1,57 +0,0 @@ --- taken from https://gmod.facepunch.com/f/gmodaddon/jgtl/Nextbot-Pathfinding-for-Players/1/ - -if SERVER then AddCSLuaFile() end - -ENT.Base = "base_nextbot" -ENT.Type = "nextbot" - -function ENT:Initialize() - self:SetModel("models/gman.mdl") - self:SetNoDraw(true) - self:SetSolid( SOLID_NONE ) - self.PosGen = nil -end - -function ENT:ChasePos( options ) - self.P = Path("Follow") - self.P:SetMinLookAheadDistance(300) - self.P:SetGoalTolerance(20) - self.P:Compute(self, self.PosGen) - - if !self.P:IsValid() then return end - while self.P:IsValid() do - if self.P:GetAge() > 0.3 then - self.P:Compute(self, self.PosGen) - end - if GetConVar("developer"):GetFloat() > 0 then - self.P:Draw() - end - - if self.loco:IsStuck() then - self:HandleStuck() - return - end - - coroutine.yield() - end -end - -function ENT:OnInjured() - return false -end - -function ENT:OnKilled() - return false -end - -function ENT:RunBehaviour() - while (true) do - if self.PosGen then - self:ChasePos({}) - end - --print("Recomputing...") - coroutine.wait(1) - - coroutine.yield() - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/filter_activator_tfteam/init.lua b/addon/gamemodes/teamfortress/entities/entities/filter_activator_tfteam/init.lua deleted file mode 100644 index ae0fa20d2..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/filter_activator_tfteam/init.lua +++ /dev/null @@ -1,43 +0,0 @@ -ENT.Type = "point" - -local TeamTranslateTable = { -[0] = TEAM_NEUTRAL, -[2] = TEAM_RED, -[3] = TEAM_BLU, -} - -function ENT:Initialize() - print(self) - PrintTable(self.Properties or {}) - - -- Bleh, can't create working filters using Lua, so we'll just spawn a similar existing filter and delete this one - - --local negated = self.Properties.negated - local negated = 0 - local teamnum = TeamTranslateTable[self.Properties.teamnum] or TEAM_NEUTRAL - - local filter = ents.Create("filter_activator_team") - filter:SetName(self:GetName().."_alt") - filter:SetPos(self:GetPos()) - filter:SetKeyValue("filterteam", teamnum) - filter:SetKeyValue("Negated", negated) - filter:Spawn() - - self:Remove() -end - -function ENT:KeyValue(key,value) - key = string.lower(key) - - if not self.Properties then - self.Properties = {} - end - if tonumber(value) then value=tonumber(value) end - self.Properties[key] = value -end - -hook.Add("EntityKeyValue", "TF_OverrideTriggerFilter", function(ent, key, value) - if string.lower(key)=="filtername" then - return value.."_alt" - end -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/func_capturezone/init.lua b/addon/gamemodes/teamfortress/entities/entities/func_capturezone/init.lua deleted file mode 100644 index 7e2a068ad..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/func_capturezone/init.lua +++ /dev/null @@ -1,73 +0,0 @@ -ENT.Base = "base_brush" -ENT.Type = "brush" - -function ENT:Initialize() - local pos = Vector(0, 0, 0) - local mins, maxs = self:WorldSpaceAABB() -- https://forum.facepunch.com/gmoddev/lmcw/Brush-entitys-ent-GetPos/1/#postdwfmq - pos = (mins + maxs) * 0.5 - - self.Team = self.Team or 0 - self.TeamNum = self.TeamNum or 0 - self.Pos = pos - SetGlobalFloat("tf_ctf_red", 0) - SetGlobalFloat("tf_ctf_blu", 0) - --SetGlobalFloat("tf_ctf_red_lastcap", CurTime() - 120) - --SetGlobalFloat("tf_ctf_blu_lastcap", CurTime() - 120) -end - -function ENT:KeyValue(key,value) - key = string.lower(key) - - if key=="teamnum" then - local t = tonumber(value) - - if t==0 then - self.TeamNum = 0 - elseif t==2 then - self.TeamNum = TEAM_RED - elseif t==3 then - self.TeamNum = TEAM_BLU - end - - self.Team = tonumber(value) - end - print(key, value, tonumber(value), self.Team) -end - -function ENT:StartTouch(ply) - for _,v in pairs(ents.FindByClass("item_teamflag")) do - --print(self.Team, v.te, self.Pos:Distance(ply) <= 50) - --print(self.Team ~= v.te, v.Carrier == ply, v:GetPos():Distance(ply:GetPos()) <= 50) - if v.Carrier==ply and self.Team ~= v.te and v.Prop:GetPos():Distance(ply:GetPos()) <= 100 then - v:Capture() - --team.AddScore(v.TeamNum, 1) - if v.TeamNum == TEAM_RED then - team.AddScore(TEAM_BLU, 1) - --SetGlobalFloat("tf_ctf_blu", GetGlobalFloat("tf_ctf_blu") + 1) - else - team.AddScore(TEAM_RED, 1) - --SetGlobalFloat("tf_ctf_red", GetGlobalFloat("tf_ctf_red") + 1) - end - - --SetGlobalFloat("tf_ctf_red_lastcap", CurTime()) - --SetGlobalFloat("tf_ctf_blu_lastcap", CurTime()) - - for _, ply in pairs(player.GetAll()) do - if ply:Team() ~= v.TeamNum then - ply:SendLua([[surface.PlaySound("vo/intel_teamcaptured.mp3")]]) - GAMEMODE:StartCritBoost(ply) - timer.Simple(10, function() - if IsValid(ply) then - GAMEMODE:StopCritBoost(ply) - end - end) - else - ply:SendLua([[surface.PlaySound("vo/intel_enemycaptured.mp3")]]) - end - end - end - end -end - -function ENT:EndTouch(ent) -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/func_regenerate/init.lua b/addon/gamemodes/teamfortress/entities/entities/func_regenerate/init.lua deleted file mode 100644 index fa4f43833..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/func_regenerate/init.lua +++ /dev/null @@ -1,84 +0,0 @@ -ENT.Base = "base_brush" -ENT.Type = "brush" - -function ENT:Initialize() - self.Team = 0 - self.Players = {} - self.Opened = false -end - -function ENT:KeyValue(key,value) - key = string.lower(key) - - if key=="teamnum" then - self.Team = tonumber(value) - elseif key=="associatedmodel" then - self.ResupplyLockerName = value - end -end - -function ENT:StartTouch(ent) - if ent:IsPlayer() then - self.Players[ent] = -1 - end -end - -function ENT:EndTouch(ent) - if ent:IsPlayer() then - self.Players[ent] = nil - end -end - -function ENT:Think() - local resupplied - - for pl,last in pairs(self.Players) do - if (last==-1 or CurTime()-last>1) and IsValid(pl) and pl:IsPlayer() then - resupplied = true - GAMEMODE:GiveHealthPercent(pl, 100) - GAMEMODE:GiveAmmoPercent(pl, 100) - if self.Opened then - self:EmitSound("AmmoPack.Touch", 100, 100) - end - self.Players[pl] = CurTime() - end - end - - if resupplied and not self.Opened then - self:EmitSound("Regenerate.Touch", 100, 100) - - if not self.ResupplyLocker and self.ResupplyLockerName then - self.ResupplyLocker = ents.FindByName(self.ResupplyLockerName)[1] - --print("associatedmodel : "..self.ResupplyLockerName.." : "..tostring(self.ResupplyLocker)) - end - - if self.ResupplyLocker and self.ResupplyLocker:IsValid() then - --self.ResupplyLocker:ResetSequence(self.ResupplyLocker:LookupSequence("open")) - self.ResupplyLocker:Fire("SetAnimation", "open") - end - - self.Opened = true - self.NextClose = CurTime() + 1.5 - end - - if self.NextClose and CurTime()>=self.NextClose then - if self.ResupplyLocker and self.ResupplyLocker:IsValid() then - --self.ResupplyLocker:ResetSequence(self.ResupplyLocker:LookupSequence("close")) - --self.NextIdle = CurTime() + self.ResupplyLocker:SequenceDuration() - self.ResupplyLocker:Fire("SetAnimation", "close") - self.NextIdle = CurTime() + 1.5 - else - self.NextIdle = CurTime() + 1.5 - end - self.NextClose = nil - end - - if self.NextIdle and CurTime()>=self.NextIdle then - --[[if self.ResupplyLocker and self.ResupplyLocker:IsValid() then - self.ResupplyLocker:ResetSequence(self.ResupplyLocker:LookupSequence("idle")) - end]] - - self.NextIdle = nil - self.Opened = false - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/func_respawnroomvisualizer/init.lua b/addon/gamemodes/teamfortress/entities/entities/func_respawnroomvisualizer/init.lua deleted file mode 100644 index b6ec0c3d4..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/func_respawnroomvisualizer/init.lua +++ /dev/null @@ -1,35 +0,0 @@ -ENT.Base = "base_brush" -ENT.Type = "brush" - -function ENT:Initialize() ---[[ - self.Brush = ents.Create("func_brush") - self.Brush:SetPos(self:GetPos()) - self.Brush:SetAngles(self:GetAngles()) - self.Brush:SetModel(self:GetModel()) - self.Brush:Spawn()]] -end - -function ENT:InitPostEntity() - print(self) - PrintTable(self.Properties or {}) -end - -function ENT:KeyValue(key,value) - key = string.lower(key) - - if not self.Properties then - self.Properties = {} - end - if tonumber(value) then value=tonumber(value) end - self.Properties[key] = value -end - -function ENT:Think() - if not GAMEMODE.PostEntityDone then return end - if GAMEMODE.PostEntityDone and not self.PostEntityDone then - self:InitPostEntity() - self.PostEntityDone = true - return - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/item_ammopack_base/shared.lua b/addon/gamemodes/teamfortress/entities/entities/item_ammopack_base/shared.lua deleted file mode 100644 index ca0787c85..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/item_ammopack_base/shared.lua +++ /dev/null @@ -1,27 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "item_base" - -ENT.Model = "models/items/ammopack_small.mdl" -ENT.AmmoPercentage = 1 - -if SERVER then - -AddCSLuaFile("shared.lua") - -function ENT:CanPickup(ply) - return not ply:HasFullAmmo() -end - -function ENT:PlayerTouched(pl) - local a = self.AmmoPercentage - if pl.TempAttributes and pl.TempAttributes.AmmoFromPacksMultiplier then - a = a * pl.TempAttributes.AmmoFromPacksMultiplier - end - - self:EmitSound("AmmoPack.Touch", 100, 100) - self:Hide() - GAMEMODE:GiveAmmoPercent(pl, a) -end - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/item_base/shared.lua b/addon/gamemodes/teamfortress/entities/entities/item_base/shared.lua deleted file mode 100644 index 8fdfef224..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/item_base/shared.lua +++ /dev/null @@ -1,144 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Model = "" - ---ENT.AutomaticFrameAdvance = true - -if SERVER then - -AddCSLuaFile("shared.lua") - -ENT.RespawnTime = 10 - -function ENT:SpawnFunction(pl, tr) - if not tr.Hit then return end - - local pos = tr.HitPos - - local ent = ents.Create(self.ClassName) - ent:SetPos(pos) - ent:Spawn() - ent:Activate() - - ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) - - ent.RespawnTime = -1 - - return ent -end - -function ENT:Initialize() - self:SetSolid(SOLID_VPHYSICS) - self:SetModel(self.Model) - self:PhysicsInit(SOLID_VPHYSICS) - self:SetMoveType(MOVETYPE_NONE) - --self:SetNoDraw(true) - - --self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) - self:SetTrigger(true) - self:SetNotSolid(true) - - --[[ - self.Prop = ents.Create("prop_dynamic") - self.Prop:SetMoveType(MOVETYPE_NONE) - self.Prop:SetSolid(SOLID_NONE) - self.Prop:SetModel(self.Model) - self.Prop:SetPos(self:GetPos()) - self.Prop:SetAngles(self:GetAngles()) - self.Prop:Spawn() - - self.Prop:SetParent(self) - - local sequence = self.Prop:LookupSequence("idle") - self.Prop:ResetSequence(sequence) - self.Prop:SetPlaybackRate(1) - self.Prop:SetCycle(1)]] - - local sequence = self:SelectWeightedSequence(ACT_IDLE) - self:ResetSequence(sequence) - self:SetPlaybackRate(1) - self:SetCycle(0) - - if self.ActivateDelay then - self.NextActive = CurTime() + self.ActivateDelay - end -end - -function ENT:DropWithGravity(vel) - self:SetMoveType(MOVETYPE_FLYGRAVITY) - self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) - self:SetVelocity(vel) -end - -function ENT:SetRespawnTime(time) - self.RespawnTime = time -end - -function ENT:Show() - self:SetTrigger(true) - --self.Prop:SetColor(255,255,255,255) - self:SetNoDraw(false) - self:DrawShadow(true) - self:EmitSound("Item.Materialize", 100, 100) -end - -function ENT:Hide() - if self.RespawnTime<0 then - self:Remove() - return - end - - self:SetTrigger(false) - --self.Prop:SetColor(0,0,0,0) - self:SetNoDraw(true) - self:DrawShadow(false) - - if self.RespawnTime then - self.NextRespawn = CurTime() + self.RespawnTime - end -end - -function ENT:Think() - if self.NextActive and CurTime()>=self.NextActive then - self.NextActive = nil - end - - if self.NextRespawn and CurTime()>=self.NextRespawn then - self:Show() - self.NextRespawn = nil - end -end - -function ENT:CanPickup(ply) - return true -end - -function ENT:PlayerTouched(pl) - -end - -function ENT:StartTouch(ent) - if not self.NextActive and ent:IsPlayer() and self:CanPickup(ent) then - self:PlayerTouched(ent) - end -end - -end - -if CLIENT then - -ENT.RenderGroup = RENDERGROUP_OPAQUE - -function ENT:Draw() - -- fuck AutomaticFrameAdvance, this is better - if self.LastDrawn then - self:FrameAdvance(CurTime() - self.LastDrawn) - end - self.LastDrawn = CurTime() - - self:DrawModel() -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/item_droppedweapon/shared.lua b/addon/gamemodes/teamfortress/entities/entities/item_droppedweapon/shared.lua deleted file mode 100644 index cdff67c32..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/item_droppedweapon/shared.lua +++ /dev/null @@ -1,101 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -if SERVER then - -AddCSLuaFile("shared.lua") - -ENT.AmmoPercent = 10 -ENT.LifeTime = 30 - -function ENT:Initialize() - if self.WeaponEntity then - if not IsValid(self.WeaponEntity) then - self:Remove() - return - end - - self:SetPos(self.WeaponEntity:GetPos()) - self:SetAngles(self.WeaponEntity:GetAngles()) - self:SetModel(self.WeaponEntity:GetModel()) - self:SetSolid(SOLID_VPHYSICS) - self:PhysicsInit(SOLID_VPHYSICS) - self:SetMoveType(MOVETYPE_NONE) - self:SetNotSolid(true) - self:SetOwner(self.WeaponEntity) - self:SetParent(self.WeaponEntity) - self:DeleteOnRemove(self.WeaponEntity) - self:SetCollisionGroup(COLLISION_GROUP_WEAPON) - self:SetTrigger(false) - self:SetNoDraw(true) - self.Active = false - else - self:SetCollisionGroup(COLLISION_GROUP_WEAPON) - self:SetTrigger(true) - self.NextDie = CurTime() + self.LifeTime - end -end - -function ENT:Think() - if IsValid(self.WeaponEntity) then - if IsValid(self.WeaponEntity:GetOwner()) then - if self.Active then - self.Active = false - self:SetTrigger(false) - self.NextDie = nil - end - else - if not self.Active then - self.Active = true - self:SetTrigger(true) - self.NextDie = CurTime() + self.LifeTime - end - end - end - - if self.NextDie and CurTime()>=self.NextDie then - self:Remove() - return false - end -end - -function ENT:CanPickup(ply) - if ply:IsHL2() then return false end - - if IsValid(self.WeaponEntity) and IsValid(self.WeaponEntity:GetOwner()) then - return false - end - - return not ply:HasFullAmmo() -end - -function ENT:PlayerTouched(pl) - self:EmitSound("AmmoPack.Touch", 100, 100) - self:Remove() - GAMEMODE:GiveAmmoPercent(pl, self.AmmoPercent) -end - -function ENT:StartTouch(ent) - if ent:IsPlayer() and self:CanPickup(ent) then - self:PlayerTouched(ent) - end -end - -function ENT:OnTakeDamage(dmginfo) - if not self.WeaponEntity then - self:TakePhysicsDamage(dmginfo) - end -end - -end - -if CLIENT then - -ENT.RenderGroup = RENDERGROUP_BOTH - -function ENT:Draw() - self:DrawModel() -end - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/item_duck/shared.lua b/addon/gamemodes/teamfortress/entities/entities/item_duck/shared.lua deleted file mode 100644 index df5924667..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/item_duck/shared.lua +++ /dev/null @@ -1,34 +0,0 @@ -ENT.PrintName = "Duck" -ENT.Author = "Agent Agrimar, _Kilburn" -ENT.Information = "It's a duck! Quack." -ENT.Category = "Team Fortress 2" - -ENT.Spawnable = true -ENT.AdminOnly = true - -ENT.Type = "anim" -ENT.Base = "item_base" - -ENT.Model = "models/items/target_duck.mdl" -ENT.HealthPercentage = 1 - -if SERVER then - -AddCSLuaFile("shared.lua") - -function ENT:CanPickup(ply) - return true -end - -function ENT:PlayerTouched(pl) - local effect = EffectData() - local color = ColorRand(false) - effect:SetOrigin(self:GetPos()) - effect:SetStart(Vector(color.r, color.g, color.b)) - util.Effect("balloon_pop", effect) - self:EmitSound("misc/halloween/duck_pickup_pos_01.wav") - self:Remove() - pl:AddFrags(1) -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/item_godkit_base/shared.lua b/addon/gamemodes/teamfortress/entities/entities/item_godkit_base/shared.lua deleted file mode 100644 index fb29de636..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/item_godkit_base/shared.lua +++ /dev/null @@ -1,39 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "item_base" - -ENT.Model = "models/items/medkit_small.mdl" -ENT.HealthPercentage = 999 -ENT.AmmoPercentage = 999 - -if SERVER then - -AddCSLuaFile("shared.lua") - -function ENT:CanPickup(ply) - return ply:Health()= 80 and self.PickupLock[v] then - self.PickupLock[v] = nil - end - end - - if self.NextReturn then - if not self.NextClientUpdateTimer or CurTime()>self.NextClientUpdateTimer then - self:SetNWFloat("TimeRemaining", self.NextReturn - CurTime()) - self.NextClientUpdateTimer = CurTime() + 0.5 - end - - if CurTime()>self.NextReturn then - self:Return() - end - else - self.NextClientUpdateTimer = nil - end -end - -function ENT:CanPickup(ply) - return ply:Team()~=self.TeamNum and not self.PickupLock[v] -end - -function ENT:StartTouch(ent) - if ent:IsPlayer() and self:CanPickup(ent) and not self.PickupLock[ent] then - self:PlayerTouched(ent) - end -end - -function ENT:EndTouch(ent) - if self.PickupLock[ent] then - self.PickupLock[ent] = nil - end -end - -function ENT:PlayerTouched(pl) - self:Pickup(pl) -end - -function ENT:Capture() - self:Return(true) - if IsValid(self.Carrier) then - self:TriggerOutput("OnCapture", self.Carrier) - end -end - -function ENT:Return(nosound) - if self.State~=0 then - self:Drop(true) - self.State = 0 - self:SetNWBool("TimerActive", false) - self.NextReturn = nil - self:SetPos(self.HomePosition) - self:SetAngles(self.HomeAngles) - print(self.HomePosition) - self:TriggerOutput("OnReturn") - - if nosound then - return - end - - for _, ply in pairs(player.GetAll()) do - if ply:Team() ~= self.TeamNum then - ply:SendLua([[surface.PlaySound("vo/intel_teamreturned.mp3")]]) - else - ply:SendLua([[surface.PlaySound("vo/intel_enemyreturned.mp3")]]) - end - end - end -end - -function ENT:Pickup(ply) - if self.State~=1 and not IsValid(self.Carrier) then - if not self.HomePosition or not self.HomeAngles then - self.HomePosition = self:GetPos() - self.HomeAngles = self:GetAngles() - end - - self:SetNWBool("TimerActive", false) - self.NextReturn = nil - - self.State = 1 - self.Trail:Fire("Start") - self.Carrier = ply - self.Prop:ResetSequence(self.Prop:LookupSequence("idle")) - self.Prop:SetPlaybackRate(1) - self.Prop:SetCycle(1) - self:SetNotSolid(true) - self:SetTrigger(false) - self:SetParent(ply) - self:Fire("SetParentAttachment", "flag", 0) - if ply:IsHL2() then - self:Fire("SetParentAttachment", "chest", 0) - end - self:TriggerOutput("OnPickup", ply) - - for _, ply in pairs(player.GetAll()) do - if ply:Team() ~= self.TeamNum then - ply:SendLua([[surface.PlaySound("vo/intel_teamstolen.mp3")]]) - else - ply:SendLua([[surface.PlaySound("vo/intel_enemystolen.mp3")]]) - end - end - end -end - -function ENT:Drop(nosound) - if self.State==1 and IsValid(self.Carrier) then - self:SetNWBool("TimerActive", true) - self:SetNWFloat("TimeRemaining", FlagReturnTime) - self.NextReturn = CurTime() + FlagReturnTime - - local ply = self.Carrier - self.PickupLock[ply] = 1 -- Prevent the player who dropped it to pick it up immediately again - self.State = 2 - self.Trail:Fire("Stop") - self.Carrier = nil - self.Prop:ResetSequence(self.Prop:LookupSequence("spin")) - self.Prop:SetPlaybackRate(1) - self.Prop:SetCycle(1) - self:SetNotSolid(false) - self:SetTrigger(true) - self:SetParent() - self:SetAngles(Angle(0, self:GetAngles().y, 0)) - self:DropToFloor() - self:TriggerOutput("OnDrop", ply) - - if nosound then - return - end - - for _, ply in pairs(player.GetAll()) do - if ply:Team() ~= self.TeamNum then - ply:SendLua([[surface.PlaySound("vo/intel_teamdropped.mp3")]]) - else - ply:SendLua([[surface.PlaySound("vo/intel_enemydropped.mp3")]]) - end - end - end -end - -function ENT:AcceptInput(name, activator, caller, value) - name = string.lower(name) - if name=="skin" then - self:SetSkin(tonumber(value) or 0) - elseif name=="setteam" then - local t = tonumber(value) - - if t==0 then - self.TeamNum = 0 - self:SetSkin(2) - self.Prop:SetSkin(2) - elseif t==2 then - self.TeamNum = TEAM_RED - self:SetSkin(0) - self.Prop:SetSkin(0) - elseif t==3 then - self.TeamNum = TEAM_BLU - self:SetSkin(1) - self.Prop:SetSkin(1) - end - end -end - -end - -if CLIENT then - -ENT.RenderGroup = RENDERGROUP_BOTH - -local colors = { - [0]=Color(255,0,0,255), - [1]=Color(0,0,255,255), - [2]=Color(255,255,255,255), -} - -function ENT:Initialize() - self.Progress = vgui.Create("CircularProgressBar") - self.Progress:SetSize(128, 128) - self.Progress:SetBackgroundTexture("vgui/flagtime_empty") - self.Progress:SetForegroundTexture("vgui/flagtime_full") - self.Progress:SetProgress(0) - self.Progress:SetCentered(true) - self.Progress:SetVisible(false) - - local min, max = self:GetRenderBounds() - max.z = max.z + 100 - self:SetRenderBounds(min, max) -end - -function ENT:Draw() - if IsValid(self:GetNWEntity("prop", self)) and IsValid(self:GetParent()) then - if self:GetParent() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then - self:GetNWEntity("prop", self):SetNoDraw(true) -- true) - else - self:GetNWEntity("prop", self):SetNoDraw(false) - end - - if self:GetParent():IsHL2() and self:GetParent():LookupAttachment("chest") > 0 then - local att = self:GetParent():GetAttachment(self:GetParent():LookupAttachment("chest")) - local ang = att.Ang - local pos = att.Pos - local pos2, ang2 = LocalToWorld(ang:Forward() * 10, Angle(90, 0, 180), pos, ang) - self:GetNWEntity("prop", self):SetAngles(ang2) - self:GetNWEntity("prop", self):SetPos(pos - ang:Forward() * 10) - --self:Fire("SetParentAttachment", "chest", 0) - end - end - - if not self:GetNWBool("TimerActive") then return end - - local s = self:GetSkin() - if self.OldSkin~=s then - self.Progress:SetBackgroundColor(colors[s]) - self.Progress:SetForegroundColor(colors[s]) - self.OldSkin = s - end - - local ang = EyeAngles() - ang:RotateAroundAxis(ang:Right(), 90) - ang:RotateAroundAxis(ang:Up(), -90) - - local W,H = ScrW(), ScrH() - - cam.Start3D2D(self:GetPos()+Vector(0,0,70), ang, 0.3) - self.Progress:Paint() - cam.End3D2D() -end - -function ENT:Think() - if self:GetNWBool("TimerActive") then - if not self.NextReturn or self.OldTimeRemaining~=self:GetNWFloat("TimeRemaining") then - self.OldTimeRemaining = self:GetNWFloat("TimeRemaining") - self.NextReturn = CurTime() + self.OldTimeRemaining - end - end - - if self.NextReturn then - self.Progress:SetProgress((self.NextReturn - CurTime())/FlagReturnTime) - end - - self:NextThink(CurTime()) -end - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_anim/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_anim/cl_init.lua deleted file mode 100644 index 769265fc4..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_anim/cl_init.lua +++ /dev/null @@ -1,34 +0,0 @@ - -include("shared.lua") - -ENT.RenderGroup = RENDERGROUP_BOTH - -function ENT:Initialize() - self:AddEffects(EF_NOINTERP) - self.NextRemoveNoInterp = CurTime() + 0.5 -end - -function ENT:Draw() - self:DrawModel() - - if self.LastDrawn then - self:FrameAdvance(CurTime() - self.LastDrawn) - end - self.LastDrawn = CurTime() -end - -function ENT:Think() - if self.LastScale ~= self.dt.Scale then - if self.dt.Scale > 0 then - local scl = Vector(self.dt.Scale, self.dt.Scale, self.dt.Scale) - self:SetModelScale( 0.8, 0 ) - self:GetOwner():SetModelScale( 0.8, 0 ) - end - self.LastScale = self.dt.Scale - end - - if self.NextRemoveNoInterp and CurTime() > self.NextRemoveNoInterp then - self.NextRemoveNoInterp = nil - self:RemoveEffects(EF_NOINTERP) - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_anim/shared.lua b/addon/gamemodes/teamfortress/entities/entities/obj_anim/shared.lua deleted file mode 100644 index 339e4ebb6..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_anim/shared.lua +++ /dev/null @@ -1,59 +0,0 @@ ---[[ -notes - -build_point_0 = sapper attachment -laser_origin = wrangler laser attachment - -direction = teleporter direction pose param - -]] - - -ENT.Base = "base_entity" -ENT.Type = "anim" - -function ENT:SetupDataTables() - self:NetworkVar("Entity", 0, "Builder") - self:NetworkVar("Float", 0, "Scale") - self:NetworkVar("Int", 0, "BuildGroup") - self:NetworkVar("Int", 1, "BuildMode") -end - -function ENT:SetBuildingScale(s) - self.dt.Scale = s -end - -function ENT:GetBuilder() - return self.dt.Builder -end - -function ENT:SetBuilder(pl) - self.dt.Builder = pl -end - -function ENT:GetBuildGroup() - return self.dt.BuildGroup -end - -function ENT:GetBuildMode() - return self.dt.BuildMode -end - -function ENT:SetBuildGroup(g) - self.dt.BuildGroup = g -end - -function ENT:SetBuildMode(m) - self.dt.BuildMode = m -end - -function ENT:GetBuildingData() - local group, mode = self.dt.BuildGroup, self.dt.BuildMode - if self.LastBuildGroup ~= group or self.LastBuildMode ~= mode then - self.LastBuildGroup = group - self.LastBuildMode = mode - self.LastBuildData = tf_objects.Get(group, mode) - end - - return self.LastBuildData or {} -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_base/init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_base/init.lua deleted file mode 100644 index 197f2fd08..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_base/init.lua +++ /dev/null @@ -1,340 +0,0 @@ - -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -include("shared.lua") - -ENT.Levels = {} -ENT.Gibs = {} -ENT.DisableDuringUpgrade = false -ENT.NoUpgradedModel = false -ENT.IdleSequence = "ref" - -ENT.Sound_Explode = Sound("Building_Dispenser.Explode") - -ENT.DefaultBuildRate = 0.5 -ENT.BuildRate = ENT.DefaultBuildRate - -ENT.RepairRate = 25 -ENT.UpgradeRate = 25 - -ENT.InitialHealth = 1 - -function ENT:OnStartBuilding() end -function ENT:OnDoneBuilding() end -function ENT:OnStartUpgrade() end -function ENT:PreUpgradeAnim() end -function ENT:OnDoneUpgrade() end -function ENT:PostEnable() end -function ENT:OnThink() end -function ENT:OnThinkActive() end - -function ENT:Initialize() - self:SetModel(self.Levels[1][1]) - - self:SetHullType(HULL_HUMAN) - self:SetHullSizeNormal() - - self:CapabilitiesAdd(CAP_FRIENDLY_DMG_IMMUNE) - - self:SetMaxHealth(self.ObjectHealth) - self:SetHealth(self.ObjectHealth) - - self:SetCollisionBounds(unpack(self.CollisionBox)) - --self:PhysicsInitShadow(true, true) - self:PhysicsInitBox(unpack(self.CollisionBox)) - self:SetSolid(SOLID_BBOX) - self:SetMoveType(MOVETYPE_NONE) - - local phys = self:GetPhysicsObject() - if phys:IsValid() then - phys:EnableMotion(false) - end - - if self:Team() == TEAM_BLU then - self:SetSkin(1) - end - - self.Model = ents.Create("obj_anim") - self.Model:SetOwner(self) - self.Model:Spawn() - self.Model:SetNoDraw(true) - - --[[ - 0 : Undefined - 1 : Building - 2 : Upgrading - 3 : Active - ]] - self:SetMetal(0) - self:SetState(0) - self:SetNPCState(NPC_STATE_IDLE) - - self.StartTime = CurTime() - self.TimeLeft = 0 - self:SetNoDraw(true) -end - -function ENT:Build() - if self:GetState()>0 then return false end - self:OnStartBuilding() - self:SetModel(self.Levels[1][1]) - self:SetCollisionBounds(unpack(self.CollisionBox)) - - self:SetNPCState(NPC_STATE_SCRIPT) - - self.Model:SetNoDraw(false) - self.Model:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_ASSEMBLING)) - self.Model:SetCycle(0) - self.Model:SetPlaybackRate(self.BuildRate) - - self:SetLevel(1) - self:SetState(1) - self.StartTime = CurTime() - - self.BuildProgress = 0 - self.BuildProgressMax = self.Model:SequenceDuration() / self.BuildRate - self:SetBuildProgress(0) -end - -function ENT:Upgrade() - if self:GetLevel()>=self.NumLevels then return false end - self:LevelUp() - self:OnStartUpgrade() - - if not self.NoUpgradedModel then - self:SetModel(self.Levels[self:GetLevel()][1]) - self.Model:SetModel(self.Levels[self:GetLevel()][1]) - self:SetCollisionBounds(unpack(self.CollisionBox)) - - self:PreUpgradeAnim() - self:SetNPCState(NPC_STATE_SCRIPT) - self:SetNoDraw(true) - self.Model:SetNoDraw(false) - self.Model:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_UPGRADING)) - self.Model:SetCycle(0) - self.Model:SetPlaybackRate(1) - end - - self:SetState(2) - self.StartTime = CurTime() - self.Duration = self.Model:SequenceDuration() - self.TimeLeft = self.Model:SequenceDuration() -end - -function ENT:Enable() - if self.NoUpgradedModel then - self:SetModel(self.Levels[1][2]) - self.Model:SetModel(self.Levels[1][2]) - self:SetCollisionBounds(unpack(self.CollisionBox)) - else - self:SetModel(self.Levels[self:GetLevel()][2]) - self.Model:SetModel(self.Levels[self:GetLevel()][2]) - self:SetCollisionBounds(unpack(self.CollisionBox)) - end - - self:SetNPCState(NPC_STATE_IDLE) - self.Model:SetNoDraw(false) - self:SetNoDraw(false) - self:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_RUNNING)) - self:SetCycle(0) - self:SetPlaybackRate(1) - - local prevstate = self:GetState() - self:SetState(3) - self:PostEnable(prevstate) -end - -function ENT:Explode() - for _,v in pairs(self.Gibs) do - if type(v)=="string" then - local drop = ents.Create("item_droppedweapon") - drop:SetSolid(SOLID_VPHYSICS) - drop:SetModel(v) - drop:PhysicsInit(SOLID_VPHYSICS) - drop:SetPos(self:GetPos()) - drop:SetAngles(self:GetAngles()) - drop:Spawn() - drop:Activate() - - drop:SetSkin(self:GetSkin()) - - drop:SetMoveType(MOVETYPE_VPHYSICS) - drop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) - - local phys = drop:GetPhysicsObject() - if phys:IsValid() then - phys:AddAngleVelocity(Vector(math.random(-100,100),math.random(-100,100),math.random(-100,100))) - phys:AddVelocity(Vector(math.random(-100,100),math.random(-100,100),math.random(100,300))) - phys:Wake() - end - end - end - - local explosion = ents.Create("info_particle_system") - explosion:SetKeyValue("effect_name", "ExplosionCore_buildings") - explosion:SetKeyValue("start_active", "1") - explosion:SetPos(self:GetPos()) - explosion:SetAngles(self:GetAngles()) - explosion:Spawn() - explosion:Activate() - explosion:Fire("Kill", "", 0.1) - - self:EmitSound(self.Sound_Explode, 100, 100) - - self:Remove() -end - -function ENT:Think() - local state = self:GetState() - local deltatime = 0 - - if self.LastThink then - deltatime = CurTime() - self.LastThink - end - self.LastThink = CurTime() - - self:OnThink() - if state==0 then - if CurTime()-self.StartTime>=self.TimeLeft then - self:Build() - end - elseif state==1 then - local time_added = deltatime - - if self.BuildBoost then - local total = 1 - local mul = self.DefaultBuildRate / self.BuildRate - - for pl,data in pairs(self.BuildBoost) do - if CurTime() > data.endtime then - self.BuildBoost[pl] = nil - else - total = total + data.val * mul - end - end - - self.Model:SetPlaybackRate(self.BuildRate * total) - time_added = time_added * total - end - - self.BuildProgress = math.Clamp(self.BuildProgress + time_added, 0, self.BuildProgressMax) - self:SetBuildProgress(self.BuildProgress / self.BuildProgressMax) - - local health = math.Clamp((self.BuildProgress / self.BuildProgressMax) * self:GetMaxHealth(), self.InitialHealth, self:GetMaxHealth()) - self:SetHealth(health - (self.BuildSubstractHealth or 0)) - - if self.BuildProgress >= self.BuildProgressMax then - self:OnDoneBuilding() - self:SetHealth(self:GetMaxHealth() - (self.BuildSubstractHealth or 0)) - self:Enable() - end - elseif state==2 then - if CurTime()-self.StartTime>=self.TimeLeft then - self:OnDoneUpgrade() - self:Enable() - end - - if not self.DisableDuringUpgrade then - self:OnThinkActive() - end - elseif state==3 then - self:OnThinkActive() - end - - self:NextThink(CurTime()) - return true -end - -function ENT:OnTakeDamage(dmginfo) - if dmginfo:GetInflictor():IsWorld() then return end - if dmginfo:GetDamageType() == DMG_POISON then return end - - self:SetHealth(self:Health() - dmginfo:GetDamage()) - if not self.BuildSubstractHealth then - self.BuildSubstractHealth = 0 - end - self.BuildSubstractHealth = self.BuildSubstractHealth + dmginfo:GetDamage() - if self:Health()<=0 then - gamemode.Call("OnNPCKilled", self, dmginfo:GetAttacker(), dmginfo:GetInflictor()) - self.OnTakeDamage = nil - local owner = self:GetBuilder() - if IsValid(owner) and owner:IsPlayer() and self.objtype then - owner.objtype = self.objtype - owner:Speak("TLK_LOST_OBJECT") - end - - self:Explode() - end -end - -function ENT:NeedsResupply() - return false -end - -function ENT:Resupply(max) - -end - -function ENT:AddMetal(owner, max) - if not self.BuildBoost then - self.BuildBoost = {} - end - - local mult = 1 - local w = owner:GetActiveWeapon() - if IsValid(w) and w.ConstructRateMultiplier then - mult = w.ConstructRateMultiplier - end - - self.BuildBoost[owner] = {val=mult, endtime=CurTime() + 0.8} - - -- Building or upgrading - if self:GetState()~=3 then return 0 end - - local max0 = max - local metal_spent - - local repaired, resupplied, upgraded - - -- Repair - metal_spent = math.Clamp(math.ceil((self:GetMaxHealth() - self:Health()) * 0.2), 0, math.min(max, self.RepairRate)) - - if metal_spent > 0 then - self:SetHealth(math.Clamp(self:Health() + 5 * metal_spent, 0, self:GetMaxHealth())) - - max = max - metal_spent - repaired = true - end - - -- Upgrade - if self:GetLevel()=self.UpgradeCost then - self:SetMetal(0) - self:Upgrade() - -- Upgrading already resupplies ammo so we don't need to do anything else - upgraded = true - elseif not repaired or not self:NeedsResupply() then - -- Add to the upgrade status only if no metal was spent repairing the building or if the building doesn't need to be resupplied first - self:SetMetal(current) - end - - max = max - metal_spent - end - - -- Resupply (todo) - if self:NeedsResupply() and not upgraded then - metal_spent = self:Resupply(max) - - if metal_spent then - max = max - metal_spent - resupplied = true - end - end - - return max0 - max -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_base/shared.lua b/addon/gamemodes/teamfortress/entities/entities/obj_base/shared.lua deleted file mode 100644 index 3fb9d25a8..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_base/shared.lua +++ /dev/null @@ -1,246 +0,0 @@ - -ENT.Base = "base_entity" -ENT.Type = "ai" - -ENT.AutomaticFrameAdvance = true - -ENT.IsTFBuilding = true -ENT.Building = true -ENT.NumLevels = 3 -ENT.ObjectHealth = 100 -ENT.Upgradable = true -ENT.UpgradeCost = 200 - -ENT.CollisionBox = {Vector(-22,-22,0), Vector(22,22,75)} -ENT.BuildHull = {Vector(-22,-22,0), Vector(22,22,75)} -ENT.BuildDistance = 80 -ENT.BuildYOffsetStand = 10 -ENT.BuildYOffsetDuck = -4 -ENT.BuildYRange = 120 -ENT.HeightTolerancy = 10 - -ENT.KillCreditAsInflictor = true - -PrecacheParticleSystem("ExplosionCore_buildings") - -function ENT:GetObjectHealth() - return self.ObjectHealth -end - --- The text which should show up under the Target ID when looking at that building -function ENT:GetTargetIDSubText() - local progress = Format("%d / %d", self:GetMetal(), self.UpgradeCost) - local level = self:GetLevel() - - if level < self.NumLevels then - return tf_lang.GetFormatted("#TF_playerid_object_upgrading_level", level, progress) - else - return tf_lang.GetFormatted("#TF_playerid_object_level", level, progress) - end -end - --- The type of alert that should show up on the HUD for this entity --- 0: none --- 1: wrench, not pulsing (half ammo) --- 2: wrench, pulsing red (low ammo) --- 3: wrench, pulsing red, two beeps (damaged) --- 4: sapper, pulsing red, repeatedly beeps (being sapped) -function ENT:HUDAlertStatus() - if self:GetState() ~= 3 then return end - - if self:Health() < self:GetObjectHealth() then - return 3 - end - return 0 -end - -function ENT:SetupDataTables() - self:NetworkVar("Int", 0, "BuildingInfo") - --[[ - 0x0TTTLLSS - T: Building sub-type - L: Building level - S: Building status - ]] - - self:NetworkVar("Int", 1, "BuildingInfo2") - --[[ - 0x0MMMUUUU - M: Building mode - U: Building upgrade status - ]] - - self:NetworkVar("Vector", 3, "BuildingInfoFloat") -end - -function ENT:GetDeathnoticeName(nolocalize) - local name = self.ObjectName or GAMEMODE:EntityName(self) - - if IsValid(self:GetBuilder()) then - return Format("%s\1%s", name, GAMEMODE:EntityName(self:GetBuilder())) - else - return name - end -end - -function ENT:GetTargetIDName(nolocalize) - local name = self.ObjectName or GAMEMODE:EntityName(self) - return tf_lang.GetFormatted("#TF_playerid_object", tf_lang.GetRaw(self.ObjectName), GAMEMODE:EntityName(self:GetBuilder())) -end - -function ENT:SetupBlueprint(blueprint, mode) - blueprint.BuildHull = self.BuildHull - blueprint.BuildDistance = self.BuildDistance - --blueprint.BuildYOffset = self.BuildYOffset - blueprint.BuildYOffsetStand = self.BuildYOffsetStand - blueprint.BuildYOffsetDuck = self.BuildYOffsetDuck - blueprint.BuildYRange = self.BuildYRange - blueprint.HeightTolerancy = self.HeightTolerancy -end - -function ENT:SetAutomaticFrameAdvance(bUsingAnim) - self.AutomaticFrameAdvance = bUsingAnim -end - -function ENT:Team() - return self:GetNWInt("Team") or TEAM_NEUTRAL -end - -function ENT:SetTeam(t) - if CLIENT then return end - - local oldteam = self:GetNWInt("Team") - self:SetNWInt("Team", t) - - if oldteam ~= t then - GAMEMODE:UpdateEntityRelationship(self) - end -end - --- The obj_anim entity attached to this building can act as a second datatable just in case we run out of datatable slots -function ENT:CallFromModelEntity(func, default, ...) - if not self.Model and CLIENT then - for _,v in pairs(ents.FindByClass("obj_anim")) do - if v:GetOwner() == self then - self.Model = v - end - end - end - - if IsValid(self.Model) and self.Model[func] then - return self.Model[func](self.Model, ...) - else - return default - end -end - ------------------------------------------------------------ - -function ENT:GetBuilder() - return self:CallFromModelEntity("GetBuilder", NULL) -end - -function ENT:SetBuilder(b) - self:CallFromModelEntity("SetBuilder", nil, b) -end - ------------------------------------------------------------ - -function ENT:GetBuildGroup() - return self:CallFromModelEntity("GetBuildGroup", 0) -end - -function ENT:SetBuildGroup(g) - self:CallFromModelEntity("SetBuildGroup", nil, g) -end - ------------------------------------------------------------ - -function ENT:GetBuildMode() - return self:CallFromModelEntity("GetBuildMode", 0) -end - -function ENT:SetBuildMode(m) - self:CallFromModelEntity("SetBuildMode", nil, m) -end - ------------------------------------------------------------ - -function ENT:GetBuildingData() - return self:CallFromModelEntity("GetBuildingData", {}) -end - ------------------------------------------------------------ - -function ENT:GetState() - return bit.band(self.dt.BuildingInfo, 0x000000ff) -end - -function ENT:SetState(s) - --self.dt.BuildingInfo = (self.dt.BuildingInfo & 0x7fffff00) | (s & 0xff) - self.dt.BuildingInfo = bit.bor(bit.band(self.dt.BuildingInfo, 0x7fffff00), bit.band(s, 0xff)) -end - ------------------------------------------------------------ - -function ENT:GetLevel() - return bit.rshift(bit.band(self.dt.BuildingInfo, 0x0000ff00), 8) -end - -function ENT:SetLevel(l) - self.dt.BuildingInfo = bit.bor(bit.band(self.dt.BuildingInfo, 0x7fff00ff), bit.lshift(bit.band(l, 0xff), 8)) -end - -function ENT:LevelUp() - return self:SetLevel(self:GetLevel()+1) -end - ------------------------------------------------------------ - -function ENT:GetBuildingType() - return bit.rshift(bit.band(self.dt.BuildingInfo, 0x0fff0000), 16) -end - -function ENT:SetBuildingType(t) - self.dt.BuildingInfo = bit.bor(bit.band(self.dt.BuildingInfo, 0x7000ffff), bit.lshift(bit.band(t, 0xfff), 16)) -end - ------------------------------------------------------------ - -function ENT:GetMetal() - return bit.band(self.dt.BuildingInfo2, 0x0000ffff) -end - -function ENT:SetMetal(m) - self.dt.BuildingInfo2 = bit.bor(bit.band(self.dt.BuildingInfo2, 0x7fff0000), bit.band(m, 0xffff)) -end - ------------------------------------------------------------ - -function ENT:GetMode() - return bit.rshift(bit.band(self.dt.BuildingInfo2, 0x0fff0000), 16) -end - -function ENT:SetMode(m) - self.dt.BuildingInfo2 = bit.bor(bit.band(self.dt.BuildingInfo2, 0x7000ffff), bit.lshift(bit.band(m, 0xfff), 16)) -end - ------------------------------------------------------------ - -function ENT:GetBuildProgress() - return self.dt.BuildingInfoFloat.x -end - -function ENT:SetBuildProgress(f) - local v = self.dt.BuildingInfoFloat - v.x = f - self.dt.BuildingInfoFloat = v -end - ------------------------------------------------------------ - -function ENT:ShouldCollide(ent) - if ent == self:GetBuilder() then - return true - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/cl_init.lua deleted file mode 100644 index 4aa0d0efa..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/cl_init.lua +++ /dev/null @@ -1,91 +0,0 @@ - -include("shared.lua") - -ENT.RenderGroup = RENDERGROUP_BOTH - -local ScreenTexture = { - [0]=surface.GetTextureID("vgui/dispenser_meter_bg_red"), - [1]=surface.GetTextureID("vgui/dispenser_meter_bg_blue"), -} -local ArrowTexture = surface.GetTextureID("vgui/dispenser_meter_arrow") -local Offset = Vector(-1.1, -11, -0.6) -local Scale=0.0465 -local DialSpeed = 1 -local AngleStart = 85 -local AngleEnd = -85 - -function ENT:CalcAngle(m) - return Lerp(m, AngleStart, AngleEnd) -end - -function ENT:Draw() - if self:GetState()<2 then return end - - if not self.Model then - for _,v in pairs(ents.FindByClass("obj_anim")) do - if v:GetOwner() == self then - self.Model = v - break - end - end - end - - if not IsValid(self.Model) then return end - - local metal = self:GetAmmoPercentage() - if metal and metal~=self.LastMetalAmount then - if not self.Ang then - self.Ang = self:CalcAngle(metal) - else - if metal>self.LastMetalAmount then - self.DAng = -DialSpeed - else - self.DAng = DialSpeed - end - self.TargetAngle = self:CalcAngle(metal) - end - self.LastMetalAmount = metal - elseif self.TargetAngle then - if self.Ang*self.DAng > self.TargetAngle*self.DAng then - self.Ang = self.TargetAngle - self.TargetAngle = nil - else - self.Ang = self.Ang + self.DAng - end - end - - local cp0_ll = self.Model:GetAttachment(self:LookupAttachment("controlpanel0_ll")) - local cp1_ll = self.Model:GetAttachment(self:LookupAttachment("controlpanel1_ll")) - - cam.Start3D2D(cp0_ll.Pos - + Offset.x * cp0_ll.Ang:Forward() - + Offset.y * cp0_ll.Ang:Right() - + Offset.z * cp0_ll.Ang:Up(), cp0_ll.Ang, Scale) - self:DrawScreen() - cam.End3D2D() - - cam.Start3D2D(cp1_ll.Pos - + Offset.x * cp1_ll.Ang:Forward() - + Offset.y * cp1_ll.Ang:Right() - + Offset.z * cp1_ll.Ang:Up(), cp1_ll.Ang, Scale) - self:DrawScreen() - cam.End3D2D() -end - -function ENT:DrawScreen() - surface.SetDrawColor(255,255,255,255) - if self:Team() == TEAM_BLU then - surface.SetTexture(ScreenTexture[1]) - else - surface.SetTexture(ScreenTexture[0]) - end - - surface.DrawTexturedRect(0, 0, 480, 240) - surface.SetTexture(ArrowTexture) - - local a = self.Ang - local r = math.rad(a) - local s, c = math.sin(r), math.cos(r) - - surface.DrawTexturedRectRotated(480*0.5 - math.floor(81*s), 240*0.90625 - math.floor(81*c), 50, 200, a) -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/init.lua deleted file mode 100644 index 0f9b6f4c0..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/init.lua +++ /dev/null @@ -1,216 +0,0 @@ - -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -include("shared.lua") - -ENT.NPCCallRange = 512 -ENT.NPCCallHealthFraction = 0.75 -ENT.NPCCallProbability = 0.5 - -ENT.NumLevels = 3 -ENT.Levels = { -{Model("models/buildables/dispenser.mdl"), Model("models/buildables/dispenser_light.mdl")}, -{Model("models/buildables/dispenser_lvl2.mdl"), Model("models/buildables/dispenser_lvl2_light.mdl")}, -{Model("models/buildables/dispenser_lvl3.mdl"), Model("models/buildables/dispenser_lvl3_light.mdl")}, -} -ENT.IdleSequence = "ref" -ENT.DisableDuringUpgrade = false -ENT.NoUpgradedModel = false - -ENT.Sound_Idle = Sound("Building_Dispenser.Idle") -ENT.Sound_Explode = Sound("Building_Dispenser.Explode") -ENT.Sound_Generate = Sound("Building_Dispenser.GenerateMetal") -ENT.Sound_Heal = Sound("Building_Dispenser.Heal") - -ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") - -ENT.Gibs = { -Model("models/buildables/Gibs/dispenser_gib1.mdl"), -Model("models/buildables/Gibs/dispenser_gib2.mdl"), -Model("models/buildables/Gibs/dispenser_gib3.mdl"), -Model("models/buildables/Gibs/dispenser_gib4.mdl"), -Model("models/buildables/Gibs/dispenser_gib5.mdl"), -} -ENT.Sound_Explode = Sound("Building_Dispenser.Explode") - -ENT.Range = 100 - -function ENT:StartSupply(pl) - self.NumClients = self.NumClients + 1 - if not self.NextHealSound or CurTime()>self.NextHealSound then - self.Heal_Sound:Stop() - self.Heal_Sound:Play() - self.NextHealSound = CurTime() + 0.4 - end - - local target = ents.Create("info_dummy") - target:SetPos(pl:GetPos() + Vector(0,0,45)) - target:Spawn() - target:SetParent(pl) - target:AttachToEntity(pl) - target:SetName(tostring(target)) - - local e = ParticleSuffix(self:EntityTeam()) - local effect = ents.Create("info_particle_system") - effect:SetKeyValue("effect_name", "dispenser_heal_"..e) - effect:SetKeyValue("cpoint1", target:GetName()) - effect:SetKeyValue("start_active", "1" ) - - effect:SetParent(self) - effect:Spawn() - effect:Activate() - - effect:Fire("SetParentAttachment", "heal_origin") - - self.Clients[pl] = {effect, target} - pl.BeingHealedByDispenser = true -end - -function ENT:StopSupply(pl) - self.NumClients = self.NumClients - 1 - if self.NumClients==0 then - self.Heal_Sound:Stop() - end - - local t = self.Clients[pl] - if not t then return end - - if IsValid(t[1]) then t[1]:Remove() end - if IsValid(t[2]) then t[2]:Remove() end - - self.Clients[pl] = nil - pl.BeingHealedByDispenser = false - pl.DoneWaitForHealingSchedule = false -end - -function ENT:OnStartBuilding() - self.Idle_Sound = CreateSound(self, self.Sound_Idle) - self.Heal_Sound = CreateSound(self, self.Sound_Heal) -end - -function ENT:OnDoneBuilding() - self:EmitSound(self.Sound_DoneBuilding, 100, 100) - self.Idle_Sound:Play() - - self.MetalPerGeneration = 40 - self.HealRate = 0.1 - self.AmmoPerSupply = 40 - - self.Clients = {} - self.NumClients = 0 - - self:SetNoDraw(false) - - self:SetMetalAmount(25) - self.NextGenerate = CurTime() + 5 -end - -function ENT:OnStartUpgrade() - self:EmitSound(self.Sound_DoneBuilding, 100, 100) - - if self.level==2 then - self.MetalPerGeneration = 50 - self.HealRate = 0.066 - self.AmmoPerSupply = 50 - else if self.level==3 then - self.MetalPerGeneration = 60 - self.HealRate = 0.05 - self.AmmoPerSupply = 60 - end - end -end - -function ENT:OnThinkActive() - if self.NextGenerate and CurTime()>=self.NextGenerate then - local color = self:GetColor() - if self:AddMetalAmount(self.MetalPerGeneration)>0 and color.a>0 then - self:EmitSound(self.Sound_Generate, 100, 100) - end - self.NextGenerate = CurTime() + 5 - end - - if not self.NextSearch or CurTime()>=self.NextSearch then - local removedclients = table.Copy(self.Clients) - for _,v in pairs(ents.FindInSphere(self:GetPos(), self.Range)) do - if (v:IsPlayer() or v:IsNPC()) and not v:IsBuilding() and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)==self:Team()) then - if self.Clients[v] then - -- Don't remove that client - removedclients[v] = nil - else - self:StartSupply(v) - end - end - end - - for k,_ in pairs(removedclients) do - self:StopSupply(k) - end - - self.NextSearch = CurTime() + 0.2 - end - - if not self.NextAmmoSupply or CurTime()>=self.NextAmmoSupply then - local metal_before = self:GetMetalAmount() - local metal_after = metal_before - - for k,_ in pairs(self.Clients) do - if k:IsPlayer() then - GAMEMODE:GiveAmmoPercentNoMetal(k, self.AmmoPerSupply) - - if metal_after > 0 then - local ammo_before = k:GetAmmoCount(TF_METAL) - k:GiveTFAmmo(math.min(self.MetalPerGeneration, metal_after), TF_METAL) - local ammo_after = k:GetAmmoCount(TF_METAL) - metal_after = metal_after - (ammo_after - ammo_before) - end - end - end - self:AddMetalAmount(metal_after - metal_before) - self.NextAmmoSupply = CurTime() + 1 - end - - if not self.NextHeal or CurTime()>=self.NextHeal then - for k,_ in pairs(self.Clients) do - k:SetHealth(math.Clamp(k:Health() + 1, 0, k:GetMaxHealth())) - - if k:IsNPC() and not k:IsCurrentSchedule(SCHED_FORCED_GO_RUN) and not k.DoneWaitForHealingSchedule then - if IsValid(k:GetEnemy()) then - k:SetSchedule(SCHED_SHOOT_ENEMY_COVER) - else - k:SetSchedule(SCHED_COWER) - end - k.DoneWaitForHealingSchedule = true - end - end - self.NextHeal = CurTime() + self.HealRate - end - - if not self.NextCallNPCs or CurTime()>=self.NextCallNPCs then - for _,v in pairs(ents.FindInSphere(self:GetPos(), self.NPCCallRange)) do - if not v.BeingHealedByDispenser and v:IsNPC() and v:IsFriendly(self) and not v:IsBuilding() and v:GetMoveType()==MOVETYPE_STEP then - if v:GetMaxHealth() > 0 and v:Health() / v:GetMaxHealth() <= self.NPCCallHealthFraction then - if math.random() < self.NPCCallProbability then - v:SetLastPosition(self:NearestPoint(v:GetPos())) - v:SetSchedule(SCHED_FORCED_GO_RUN) - end - end - end - end - self.NextCallNPCs = CurTime() + 2 - end -end - -function ENT:OnRemove() - for _,v in pairs(self.Clients or {}) do - self:StopSupply() - end - - if self.Idle_Sound then - self.Idle_Sound:Stop() - end - - if self.Heal_Sound then - self.Heal_Sound:Stop() - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/shared.lua b/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/shared.lua deleted file mode 100644 index a1aec3fe9..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_dispenser/shared.lua +++ /dev/null @@ -1,52 +0,0 @@ - -ENT.Base = "obj_base" -ENT.Type = "ai" - -ENT.AutomaticFrameAdvance = true - -ENT.ObjectHealth = 150 -ENT.MaxMetal = 400 - -ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,55)} -ENT.BuildHull = {Vector(-24,-24,0), Vector(24,24,82)} - -ENT.ObjectName = "#TF_Object_Dispenser" - -function ENT:SetAutomaticFrameAdvance(bUsingAnim) - self.AutomaticFrameAdvance = bUsingAnim -end - -function ENT:SetMetalAmount(m) - --self:SetNWInt("Metal", m) - self.MetalAmount = m - self:SetAmmoPercentage(m / self.MaxMetal) -end - -function ENT:GetMetalAmount() - return self.MetalAmount - --return self:GetNWInt("Metal") or 0 -end - -function ENT:AddMetalAmount(m) - local a = self:GetMetalAmount() - if a+m>self.MaxMetal then - self:SetMetalAmount(self.MaxMetal) - return self.MaxMetal - a - elseif a+m<0 then - self:SetMetalAmount(0) - return a - else - self:SetMetalAmount(a+m) - return m - end -end - -function ENT:GetAmmoPercentage() - return self.dt.BuildingInfoFloat.y -end - -function ENT:SetAmmoPercentage(p) - local v = self.dt.BuildingInfoFloat - v.y = p - self.dt.BuildingInfoFloat = v -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/cl_init.lua deleted file mode 100644 index 8de924ba9..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/cl_init.lua +++ /dev/null @@ -1,46 +0,0 @@ - -include("shared.lua") - -function ENT:DoMuzzleFlash(right) - if self:GetLevel() == 1 then - ParticleEffectAttach("muzzle_sentry", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) - self.MuzzleAttachmentOverride = nil - else - if right then - ParticleEffectAttach("muzzle_sentry2", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle_r")) - self.MuzzleAttachmentOverride = "muzzle_r" - else - ParticleEffectAttach("muzzle_sentry2", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle_l")) - self.MuzzleAttachmentOverride = "muzzle_l" - end - end -end - -function ENT:Think() - if self:GetState()>=2 then - if self:GetBuildingType() == 1 and not self.DoneParticleEffect then - if self:Team() == TEAM_BLU then - ParticleEffectAttach("cart_flashinglight", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("siren")) - else - ParticleEffectAttach("cart_flashinglight_red", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("siren")) - end - self.DoneParticleEffect = true - end - end -end - -usermessage.Hook("DoSentryMuzzleFlash", function(msg) - local w = msg:ReadEntity() - if IsValid(w) and w.DoMuzzleFlash then - w:DoMuzzleFlash(msg:ReadChar() > 0) - end -end) - -usermessage.Hook("NotifySentrySpotted", function(msg) - local w = msg:ReadEntity() - if IsValid(w) then - w:EmitSound("Building_Sentrygun.AlertTarget") - else - LocalPlayer():EmitSound("Building_Sentrygun.AlertTarget") - end -end) diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/init.lua deleted file mode 100644 index 093684d6e..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/init.lua +++ /dev/null @@ -1,783 +0,0 @@ - -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -include("shared.lua") - -local tf_minisentry_allow_upgrade = CreateConVar("tf_minisentry_allow_upgrade", "0", {FCVAR_CHEAT}) - -ENT.NumLevels = 3 -ENT.Levels = { -{Model("models/buildables/sentry1_heavy.mdl"), Model("models/buildables/sentry1.mdl")}, -{Model("models/buildables/sentry2_heavy.mdl"), Model("models/buildables/sentry2.mdl")}, -{Model("models/buildables/sentry3_heavy.mdl"), Model("models/buildables/sentry3.mdl")}, -} -ENT.IdleSequence = "idle_off" -ENT.DisableDuringUpgrade = true -ENT.NoUpgradedModel = false - -ENT.Sound_Idle = Sound("Building_Sentrygun.Idle") -ENT.Sound_Idle2 = Sound("Building_Sentrygun.Idle2") -ENT.Sound_Idle3 = Sound("Building_Sentrygun.Idle3") -ENT.Sound_Alert = Sound("Building_Sentrygun.Alert") - -ENT.Sound_Fire = Sound("Building_Sentrygun.Fire") -ENT.Sound_Fire2 = Sound("Building_Sentrygun.Fire2") -ENT.Sound_Fire3 = Sound("Building_Sentrygun.Fire3") -ENT.Sound_FireMini = Sound("Building_MiniSentrygun.Fire") - -ENT.Sound_Empty = Sound("Building_Sentrygun.Empty") - -ENT.RocketShoot_Sound = Sound("Building_Sentrygun.FireRocket") - -ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") - -ENT.MaxAmmo1 = 100 -ENT.MaxAmmo2 = 0 - -local SentryGibs1 = { -Model("models/buildables/Gibs/sentry1_Gib1.mdl"), -Model("models/buildables/Gibs/sentry1_Gib2.mdl"), -Model("models/buildables/Gibs/sentry1_Gib3.mdl"), -Model("models/buildables/Gibs/sentry1_Gib4.mdl"), -} - -local SentryGibs2 = { -Model("models/buildables/Gibs/sentry2_Gib1.mdl"), -Model("models/buildables/Gibs/sentry2_Gib2.mdl"), -Model("models/buildables/Gibs/sentry2_Gib3.mdl"), -Model("models/buildables/Gibs/sentry2_Gib4.mdl"), -} - -local SentryGibs3 = { -Model("models/buildables/Gibs/sentry3_Gib1.mdl"), -Model("models/buildables/Gibs/sentry2_Gib2.mdl"), -Model("models/buildables/Gibs/sentry2_Gib3.mdl"), -Model("models/buildables/Gibs/sentry2_Gib4.mdl"), -} - -ENT.Gibs = SentryGibs1 -ENT.Sound_Explode = Sound("Building_Sentry.Explode") - -ENT.TracerEffect = "bullet_tracer01" - -ENT.BaseDamage = 16 -ENT.DamageRandomize = 0.125 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.CritDamageMultiplier = 3 - -ENT.OriginZOffset = 40 - -local function sign(n) - if n<0 then return -1 - elseif n>0 then return 1 - end - return 0 -end - -local function angnorm(n) - while n<=-180 do n=n+360 end - while n>180 do n=n-360 end - return n -end - -local function dangnorm(a,b) - a,b=angnorm(a),angnorm(b) - local r = a-b - - if r<0 then - local d = r+360 - if d<-r then return d - else return r end - else - local d = r-360 - if d>-r then return d - else return r end - end -end - --- Target position retrieving methods - --- default -local function targetpos_default(t) - return t:BodyTarget(t:GetPos()) -end - --- from TF2 bone -local function targetpos_tf2(t) - local bone = t:LookupBone("bip_spine_2") - if bone then return t:GetBonePosition(bone) end -end - --- from HL2 bone -local function targetpos_hl2(t) - local bone = t:LookupBone("ValveBiped.Bip01_Spine2") - if bone then return t:GetBonePosition(bone) end -end - --- from bounding box -local function targetpos_bb(t) - return t:LocalToWorld(t:OBBCenter()) -end - -local targetmethods = {targetpos_default, targetpos_tf2, targetpos_hl2, targetpos_bb} -local targetmethodnames = { - "bodytarget", - "tf2 spine", - "hl2 spine", - "bounding box", -} -local CURRENT_SELF - -local function targetTraceCallback(res) - local e = res.Entity - if IsValid(e) and CURRENT_SELF:IsFriendly(e) then - -- trace through teammates - --MsgFN("Ignored entity %s", tostring(e)) - return false - end - - return true -end - -function ENT:Initialize() - self.BaseClass.Initialize(self) - self.TurretPitch = 0 - self.VisualTurretPitch = 0 - self.TurretYaw = 0 - self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE_DEBRIS) -end - --- Find the most suitable target position retrieving method for a given entity --- (returns nil if the entity cannot be reached) -function ENT:GetTargetMethod(ent, strict, dbg) - --local startpos = self:ShootPos() - local startpos = self:TargetOrigin() - - if dbg then MsgN(tostring(ent)) end - for i,method in ipairs(targetmethods) do - if dbg then MsgF(" Trying %s method... ", targetmethodnames[i]) end - local pos = method(ent) - if pos then - CURRENT_SELF = self - --local tr = util.TraceLine({start=startpos, endpos=pos, filter=self}) - local tr = tf_util.TraceLineWithCallback({start=startpos, endpos=pos, filter=self, callback=targetTraceCallback, mask=MASK_SHOT}) - CURRENT_SELF = nil - if tr.Entity == ent or (not strict and tr.StartSolid) then - if dbg then Msg("OK!\n") end - return method - else - if dbg then MsgF("Failure! (entity hit: %s)\n", tostring(tr.Entity)) end - end - else - if dbg then Msg("Failure! (no position found)\n") end - end - end -end - -function ENT:SetAmmo1(a) - self.Ammo1 = a - self:SetAmmo1Percentage(self.Ammo1 / self.MaxAmmo1) -end - -function ENT:AddAmmo1(a) - self.Ammo1 = self.Ammo1 + a - self:SetAmmo1Percentage(self.Ammo1 / self.MaxAmmo1) -end - -function ENT:TakeAmmo1(a) - if self.Ammo1 >= a then - self.Ammo1 = self.Ammo1 - a - self:SetAmmo1Percentage(self.Ammo1 / self.MaxAmmo1) - return true - end - return false -end - -function ENT:SetAmmo2(a) - self.Ammo2 = a - self:SetAmmo2Percentage(self.Ammo2 / self.MaxAmmo2) -end - -function ENT:AddAmmo2(a) - self.Ammo2 = self.Ammo2 + a - self:SetAmmo2Percentage(self.Ammo2 / self.MaxAmmo2) -end - -function ENT:TakeAmmo2(a) - if self.Ammo2 >= a then - self.Ammo2 = self.Ammo2 - a - self:SetAmmo2Percentage(self.Ammo2 / self.MaxAmmo2) - return true - end - return false -end - -function ENT:CalculateDamage(hitpos, ent) - return tf_util.CalculateDamage(self, hitpos) -end - -function ENT:OnStartBuilding() - if self:GetBuildingType() == 1 then - self:SetSkin(self:GetSkin()+2) - self:SetBodygroup(2, 1) - self.Model:SetBodygroup(2, 1) - self.Model:SetSkin(self:GetSkin()) - self.AnimNeedsBodygroup = true - self.Model:SetBuildingScale(0.75) - - self.BuildRate = 2 - self.InitialHealth = self:GetObjectHealth() - self:SetMaxHealth(self:GetObjectHealth()) - - self.BaseDamage = 8 - - if not tf_minisentry_allow_upgrade:GetBool() then - self.RepairRate = 0 - self.UpgradeRate = 0 - end - elseif self:GetBuildingType() == 2 then - self.BaseDamage = 20 - self.UpgradeRate = 15 - self.Model:SetBuildingScale(1.2) - end -end - -function ENT:OnDoneBuilding() - self:EmitSound(self.Sound_DoneBuilding) - - self.Target = nil - - self.TurretPitch = 0 - self.TurretYaw = 0 - self.TargetPitch = 0 - self.TargetYaw = 0 - self.DPitch = 0 - self.DYaw = 0 - - self.IdlePitchSpeed = 0.3 - self.IdleYawSpeed = 0.6 - - if self:GetBuildingType() == 1 then - self.AimSpeedMultiplier = 1.35 - self.FireRateMultiplier = 0.66 - elseif self:GetBuildingType() == 2 then - self.AimSpeedMultiplier = 0.8 - self.FireRateMultiplier = 1.25 - else - self.AimSpeedMultiplier = 1 - self.FireRateMultiplier = 1 - end - - self.ActiveSpeed = 4 * self.AimSpeedMultiplier - self.FireRate = 0.25 * self.FireRateMultiplier - - self:SetAmmo1(self.MaxAmmo1) - self:SetAmmo2(self.MaxAmmo2) - - self.BulletSpread = 0 - - --[[ - 0 : Undefined/Building/Upgrading - 1 : Scanning - 2 : Targeting - ]] - self:SetSentryState(1) - - self.Idle_Sound = CreateSound(self, self.Sound_Idle) - - if self:GetBuildingType() == 1 then - self.Shoot_Sound = self.Sound_FireMini - self.SoundPitch = 120 - elseif self:GetBuildingType() == 2 then - self.Shoot_Sound = self.Sound_Fire - self.SoundPitch = 85 - else - self.Shoot_Sound = self.Sound_Fire - self.SoundPitch = 100 - end -end - -function ENT:SetSentryState(st) - if st==1 then - --MsgFN("Switching to IDLE state!") - self.TargetPitch = 0 - self.TargetYaw = 50 - self.Target = nil - self.NextSearch = CurTime()+0.5 - else - --MsgFN("Switching to TARGET state! (target:%s)", tostring(self.Target)) - self.NextSearch = CurTime()+1 - end - self.SentryState = st -end - -function ENT:SetAimTarget(p, y) - self.TargetPitch = p - self.TargetYaw = y -end - -function ENT:OnStartUpgrade() - self:EmitSound(self.Sound_DoneBuilding, 100, 100) - - self.Idle_Sound:Stop() - if self:GetLevel()==2 then - self.Gibs = SentryGibs2 - self.FireRate = 0.125 - self.Shoot_Sound = self.Sound_Fire2 - self.Idle_Sound = CreateSound(self, self.Sound_Idle2) - self.NameOverride = "obj_sentrygun2" - - local health_frac = self:Health() / self:GetMaxHealth() - self:SetMaxHealth(self:GetObjectHealth()) - self:SetHealth(self:GetObjectHealth() * health_frac) - - self.MaxAmmo1 = 120 - self.MaxAmmo2 = 0 - self:SetAmmo1(self.MaxAmmo1) - self:SetAmmo2(self.MaxAmmo2) - elseif self:GetLevel()==3 then - self.Gibs = SentryGibs3 - self.Shoot_Sound = self.Sound_Fire3 - self.Idle_Sound = CreateSound(self, self.Sound_Idle3) - self.NameOverride = "obj_sentrygun3" - - local health_frac = self:Health() / self:GetMaxHealth() - self:SetMaxHealth(self:GetObjectHealth()) - self:SetHealth(self:GetObjectHealth() * health_frac) - - self.MaxAmmo1 = 144 - self.MaxAmmo2 = 20 - self:SetAmmo1(self.MaxAmmo1) - self:SetAmmo2(self.MaxAmmo2) - end -end - -function ENT:PreUpgradeAnim() - self:OnThink() -end - -function ENT:OnDoneUpgrade() - self:OnThink() -end - -function ENT:OnThink() - if self.AnimNeedsBodygroup then - if self.AnimNeedsBodygroup == true then - self:SetBodygroup(2, 1) - self.Model:SetBodygroup(2, 1) - end - end -end - -function ENT:Think() - local state = self:GetState() - local deltatime = 0 - - if self.LastThink then - deltatime = CurTime() - self.LastThink - end - self.LastThink = CurTime() - - self:OnThink() - if state==0 then - if CurTime()-self.StartTime>=self.TimeLeft then - self:Build() - end - elseif state==1 then - local time_added = deltatime - - if self.BuildBoost then - local total = 1 - local mul = self.DefaultBuildRate / self.BuildRate - - for pl,data in pairs(self.BuildBoost) do - if CurTime() > data.endtime then - self.BuildBoost[pl] = nil - else - total = total + data.val * mul - end - end - - self.Model:SetPlaybackRate(self.BuildRate * total) - time_added = time_added * total - end - - self.BuildProgress = math.Clamp(self.BuildProgress + time_added, 0, self.BuildProgressMax) - self:SetBuildProgress(self.BuildProgress / self.BuildProgressMax) - - local health = math.Clamp((self.BuildProgress / self.BuildProgressMax) * self:GetMaxHealth(), self.InitialHealth, self:GetMaxHealth()) - self:SetHealth(health - (self.BuildSubstractHealth or 0)) - - if self.BuildProgress >= self.BuildProgressMax then - self:OnDoneBuilding() - self:SetHealth(self:GetMaxHealth() - (self.BuildSubstractHealth or 0)) - self:Enable() - end - elseif state==2 then - if CurTime()-self.StartTime>=self.TimeLeft then - self:OnDoneUpgrade() - self:Enable() - end - - if not self.DisableDuringUpgrade then - self:OnThinkActive() - end - elseif state==3 then - self:OnThinkActive() - end - self:SetPoseParameter("aim_pitch", self.VisualTurretPitch) - self:SetPoseParameter("aim_yaw", self.TurretYaw) - self.Model:SetPoseParameter("aim_pitch", self.VisualTurretPitch) - self.Model:SetPoseParameter("aim_yaw", self.TurretYaw) - self:NextThink(CurTime()) - return true -end - - -function ENT:StartFiring() - self.Firing = true - self.NextFire = nil -end - -function ENT:StopFiring() - self.Firing = false -end - -function ENT:ShootPos(right) - local p - - if self:GetLevel()==1 then - p = self:GetAttachment(self:LookupAttachment("muzzle")) - else - if right then - p = self:GetAttachment(self:LookupAttachment("muzzle_r")) - else - p = self:GetAttachment(self:LookupAttachment("muzzle_l")) - end - end - - return p.Pos -end - -function ENT:TargetOrigin() - return self:GetPos() + self.OriginZOffset * vector_up -end - -function ENT:RocketShootPos() - local p - - p = self:GetAttachment(self:LookupAttachment("rocket")) - - return p.Pos -end - -function ENT:ShootBullets() - local dir = (self:GetAngles() + Angle(self.TurretPitch, self.TurretYaw, 0)):Forward() - - if self.GunCounter then - self.GunCounter = 1 - self.GunCounter - else - self.GunCounter = 0 - end - - local pos = self:ShootPos(self.GunCounter > 0) - local tarpos = self.TargetPos - - if not self.SoundCounter or self.SoundCounter == 0 then - --self:EmitSound(self.Shoot_Sound) - - if self.ShootSoundEnt then - self.ShootSoundEnt:Stop() - end - self.ShootSoundEnt = CreateSound(self, self.Shoot_Sound) - - if self:GetLevel() == 1 then - self.SoundCounter = 1 - self.ShootSoundEnt:Play() - else - self.SoundCounter = 2 - self.ShootSoundEnt:PlayEx(1, self.SoundPitch) - end - end - - umsg.Start("DoSentryMuzzleFlash") - umsg.Entity(self) - umsg.Char(self.GunCounter) - umsg.End() - - self:FireTFBullets{ - Num = 1, - Src = pos, - Dir = (tarpos - pos):GetNormal(), - Spread = Vector(0, 0, 0), - --Attacker = self, - Attacker = self:GetBuilder(), - - Team = GAMEMODE:EntityTeam(self), - Damage = self.BaseDamage, - RampUp = self.MaxDamageRampUp, - Falloff = self.MaxDamageFalloff, - Critical = false, - CritMultiplier = 3, - DamageModifier = 1, - DamageRandomize = self.DamageRandomize, - - Tracer = 1, - TracerName = "bullet_tracer01", - Force = 1, - } - - self.SoundCounter = self.SoundCounter - 1 - - return true -end - -function ENT:ShootRocket() - local pos = self:RocketShootPos() - local tarpos = self.TargetPos - local dir = (tarpos - pos):GetNormal() - - --self:EmitSound(self.RocketShoot_Sound) - if self.RocketShootSoundEnt then - self.RocketShootSoundEnt:Stop() - end - self.RocketShootSoundEnt = CreateSound(self, self.RocketShoot_Sound) - self.RocketShootSoundEnt:PlayEx(1, self.SoundPitch) - - local rocket = ents.Create("tf_projectile_sentryrocket") - rocket:SetPos(pos) - rocket:SetAngles(dir:Angle()) - --rocket:SetOwner(self) - rocket:SetOwner(self:GetBuilder()) - rocket.Launcher = self - rocket:Spawn() - --rocket:Activate() -end - -function ENT:FindTarget(dbg) - local Target, MinDist, Method - for _,v in pairs(ents.FindInSphere(self:GetPos(), self.Range)) do - if (v:IsPlayer() or v:IsNPC()) and v:Health() > 0 and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)~=self:Team()) then - local d = self:GetPos():Distance(v:GetPos()) - if not MinDist or d= dp * self.TargetPitch then - self.TurretPitch = self.TargetPitch - end - - self.TurretYaw = angnorm(self.TurretYaw + dy*self.IdleYawSpeed) - if dy * self.TurretYaw >= dy * self.TargetYaw then - self.TargetYaw = -self.TargetYaw - self.Idle_Sound:Stop() - - self.Idle_Sound:PlayEx(1, self.SoundPitch) - - self.TargetPitch = 5*math.random(-2,2) - end - - self.VisualTurretPitch = self.TurretPitch - - if not self.NextSearch or CurTime()>=self.NextSearch then - self.Target, self.TargetMethod = self:FindTarget() - if self.Target and self.TargetMethod and self.Target:IsValid() then - --self:EmitSound(self.Sound_Alert) - if self.AlertSoundEnt then - self.AlertSoundEnt:Stop() - end - self.AlertSoundEnt = CreateSound(self, self.Sound_Alert) - self.AlertSoundEnt:PlayEx(1, self.SoundPitch) - - if self.Target:IsPlayer() then - umsg.Start("NotifySentrySpotted", self.Target) - umsg.Entity(self) - umsg.End() - end - self:SetSentryState(2) - return - end - self.NextSearch = CurTime() + 0.5 - end -end - -function ENT:ThinkTarget() - -- If the target gets too far away, forget about it - if IsValid(self.Target) and self.Target:Health()>0 and (not self.NextDistanceCheck or CurTime() > self.NextDistanceCheck) then - local dist = self:GetPos():Distance(self.Target:GetPos()) - if dist > self.Range then - self.Target = nil - end - self.NextDistanceCheck = CurTime() + 0.25 - end - - -- Lost target, find another one, or go back to idle - if not self.Target or not self.Target:IsValid() or self.Target:Health()<=0 then - self.Target, self.TargetMethod = self:FindTarget() - if not self.Target or not self.TargetMethod then - self:StopFiring() - self:SetSentryState(1) - return - end - --self:EmitSound(self.Sound_Alert) - if self.AlertSoundEnt then - self.AlertSoundEnt:Stop() - end - self.AlertSoundEnt = CreateSound(self, self.Sound_Alert) - self.AlertSoundEnt:PlayEx(1, self.SoundPitch) - - if self.Target:IsPlayer() then - umsg.Start("NotifySentrySpotted", self.Target) - umsg.End() - end - end - - self.TargetPos = self.TargetMethod(self.Target) - - -- Tracking - --local ang = self:GetAngles()-(self.TargetPos - self:ShootPos()):Angle() - local ang = self:GetAngles()-(self.TargetPos - self:TargetOrigin()):Angle() - self.TargetPitch = angnorm(ang.p) - self.TargetYaw = angnorm(ang.y) - - local dp = math.Clamp(0.2*dangnorm(self.TargetPitch,self.TurretPitch), -self.ActiveSpeed, self.ActiveSpeed) - local dy = math.Clamp(0.2*dangnorm(self.TargetYaw,self.TurretYaw), -self.ActiveSpeed, self.ActiveSpeed) - - --self.TurretPitch = math.Clamp(angnorm(self.TurretPitch + dp),-50, 50) - self.TurretPitch = math.Clamp(angnorm(self.TurretPitch + dp),-89.9, 89.9) - self.VisualTurretPitch = math.Clamp(self.TurretPitch, -50, 50) - self.TurretYaw = angnorm(self.TurretYaw + dy) - - -- Firing - if self.Firing then - if not self.NextFire or CurTime()>=self.NextFire then - local ok = self:TakeAmmo1(1) - - self.ShootAnimCounter = (self.ShootAnimCounter or 1) - 1 - if self.ShootAnimCounter == 0 then - self.ShootAnimCounter = 4 - if ok then - self:RestartGesture(ACT_RANGE_ATTACK1) - elseif self:GetLevel() > 1 then - self:RestartGesture(ACT_RANGE_ATTACK1_LOW) - end - end - - if ok then - self:ShootBullets() - else - self:EmitSound(self.Sound_Empty) - end - - self.NextFire = CurTime() + self.FireRate - end - - if self:GetLevel() == 3 then - if not self.NextFireRocket or CurTime()>=self.NextFireRocket then - local ok = self:TakeAmmo2(1) - - if ok then - self:RestartGesture(ACT_RANGE_ATTACK2) - self:ShootRocket() - self.NextFireRocket = CurTime() + 3 - end - end - end - else - self.ShootAnimCounter = nil - --self:RestartGesture(ACT_INVALID) - end - - -- Check visibility and decide whether to shoot or not - if not self.NextCheckVis or CurTime()>=self.NextCheckVis then - local firestate = self.Firing - - if math.abs(dangnorm(self.TurretPitch,self.TargetPitch))<5 and math.abs(dangnorm(self.TurretYaw,self.TargetYaw))<5 then - firestate = true - else - firestate = false - end - - if firestate then - self.TargetMethod = self:GetTargetMethod(self.Target) - - if not self.TargetMethod then - firestate = false - self.Target = nil - end - end - - if firestate ~= self.Firing then - if firestate then - self:StartFiring() - else - self:StopFiring() - end - end - - self.NextCheckVis = CurTime() + 0.25 - end - - -- Update target, if someone gets closer than the current target, switch - if not self.NextSearch or CurTime()>=self.NextSearch then - self.Target, self.TargetMethod = self:FindTarget() - self.NextSearch = CurTime() + 1 - end -end - -function ENT:OnThinkActive() - if self.SentryState == 1 then -- Idling - self:ThinkIdle() - elseif self.SentryState == 2 then -- Targeting - self:ThinkTarget() - end -end - -function ENT:NeedsResupply() - return self.Ammo1 < self.MaxAmmo1 or self.Ammo2 < self.MaxAmmo2 -end - -function ENT:Resupply(max) - local max0 = max - local metal_spent - - -- bullets - local num_bullets = math.min(self.MaxAmmo1 - self.Ammo1, math.min(max, 40)) -- +40 bullets per wrench hit - metal_spent = num_bullets - if metal_spent > 0 then - max = max - metal_spent - self:AddAmmo1(num_bullets) - end - - -- rockets - local num_rockets = math.min(self.MaxAmmo2 - self.Ammo2, math.min(math.floor(max/2), 8)) -- +8 rockets per wrench hit - metal_spent = 2 * num_rockets - if metal_spent > 0 then - max = max - metal_spent - self:AddAmmo2(num_rockets) - end - - return max0 - max -end - -function ENT:OnRemove() - if self.Idle_Sound then - self.Idle_Sound:Stop() - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/shared.lua b/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/shared.lua deleted file mode 100644 index 926a69611..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_sentrygun/shared.lua +++ /dev/null @@ -1,139 +0,0 @@ - -DEFINE_BASECLASS("obj_base") -ENT.Type = "ai" - -ENT.AutomaticFrameAdvance = true - -ENT.ObjectHealth = 150 -ENT.Range = 1100 - -ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,66)} -ENT.BuildHull = {Vector(-24,-24,0), Vector(24,24,86)} - -ENT.ObjectName = "#TF_Object_Sentry" - -function ENT:GetObjectHealth() - local t = self:GetBuildingType() - local l = self:GetLevel() - - local m = 1 - if t == 1 then - m = 0.666666 - end - - if l==2 then - return math.ceil(180 * m) - elseif l==3 then - return math.ceil(216 * m) - else - return math.ceil(150 * m) - end -end - -function ENT:GetTargetIDSubText() - local progress = Format("%d / %d", self:GetMetal(), self.UpgradeCost) - local level = self:GetLevel() - - if level < self.NumLevels then - return tf_lang.GetFormatted("#TF_playerid_object_upgrading", progress) - else - return "" - end -end - -function ENT:HUDAlertStatus() - if self:GetState() ~= 3 then return end - - local p - if self:GetLevel() == 3 then - p = math.min(self:GetAmmo1Percentage(), self:GetAmmo2Percentage()) - else - p = self:GetAmmo1Percentage() - end - - if self:Health() < self:GetObjectHealth() then - return 3 - elseif p < 0.25 then - return 2 - elseif p < 0.5 then - return 1 - end - - return 0 -end - -function ENT:SetAutomaticFrameAdvance(bUsingAnim) - self.AutomaticFrameAdvance = true -end - -function ENT:SetupDataTables() - self.BaseClass.SetupDataTables(self) - self:DTVar("Int", 2, "KillsInfo") - --[[ - 0x00AAAKKK - KKK: Kills - AAA: Assists - ]] -end - ------------------------------------------------------------ - -function ENT:GetKills() - return bit.band(self.dt.KillsInfo, 0x00000fff) -end - -function ENT:SetKills(k) - self.dt.KillsInfo = bit.bor(bit.band(self.dt.KillsInfo, 0x7ffff000), bit.band(k, 0xfff)) -end - -function ENT:AddKills(k) - self:SetKills(self:GetKills() + k) -end - ------------------------------------------------------------ - -function ENT:GetAssists() - return bit.rshift(bit.band(self.dt.KillsInfo, 0x00fff000), 12) -end - -function ENT:SetAssists(a) - self.dt.KillsInfo = bit.bor(bit.band(self.dt.KillsInfo, 0x7f000fff), bit.lshift(bit.band(a, 0xfff), 12)) -end - -function ENT:AddAssists(a) - self:SetAssists(self:GetAssists() + a) -end - ------------------------------------------------------------ - -function ENT:GetAmmo1Percentage() - return self.dt.BuildingInfoFloat.y -end - -function ENT:SetAmmo1Percentage(p) - local v = self.dt.BuildingInfoFloat - v.y = p - self.dt.BuildingInfoFloat = v -end - ------------------------------------------------------------ - -function ENT:GetAmmo2Percentage() - return self.dt.BuildingInfoFloat.z -end - -function ENT:SetAmmo2Percentage(p) - local v = self.dt.BuildingInfoFloat - v.z = p - self.dt.BuildingInfoFloat = v -end - ------------------------------------------------------------ - -PrecacheParticleSystem("bullet_tracer01_red") -PrecacheParticleSystem("bullet_tracer01_blue") -PrecacheParticleSystem("muzzle_sentry") -PrecacheParticleSystem("muzzle_sentry2") - -PrecacheParticleSystem("cart_flashinglight_red") -PrecacheParticleSystem("cart_flashinglight") diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/cl_init.lua deleted file mode 100644 index 2f228da09..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/cl_init.lua +++ /dev/null @@ -1,83 +0,0 @@ - -include("shared.lua") - -local TeleporterParticles = { - { - arms = "teleporter_arms_circle_red", - charged = { - "teleporter_red_charged_level1", - "teleporter_red_charged_level2", - "teleporter_red_charged_level3", - }, - entrance = { - "teleporter_red_entrance_level1", - "teleporter_red_entrance_level2", - "teleporter_red_entrance_level3", - }, - exit = { - "teleporter_red_exit_level1", - "teleporter_red_exit_level2", - "teleporter_red_exit_level3", - }, - }, - { - arms = "teleporter_arms_circle_blue", - charged = { - "teleporter_blue_charged_level1", - "teleporter_blue_charged_level2", - "teleporter_blue_charged_level3", - }, - entrance = { - "teleporter_blue_entrance_level1", - "teleporter_blue_entrance_level2", - "teleporter_blue_entrance_level3", - }, - exit = { - "teleporter_blue_exit_level1", - "teleporter_blue_exit_level2", - "teleporter_blue_exit_level3", - }, - }, -} - -function ENT:UpdateParticles() - local link = self:GetLinkedTeleporter() - local level = self:GetLevel() - - self:StopParticles() - - if not IsValid(link) then return end - - local p - if self:Team() == TEAM_BLU then - p = TeleporterParticles[2] - else - p = TeleporterParticles[1] - end - - ParticleEffectAttach(p.arms, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("arm_attach_L")) - ParticleEffectAttach(p.arms, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("arm_attach_R")) - - if self:IsEntrance() then - ParticleEffectAttach(p.entrance[level], PATTACH_ABSORIGIN_FOLLOW, self, 0) - elseif self:IsExit() then - ParticleEffectAttach(p.exit[level], PATTACH_ABSORIGIN_FOLLOW, self, 0) - end - - if self:IsReady() then - ParticleEffectAttach(p.charged[level], PATTACH_ABSORIGIN_FOLLOW, self, 0) - end -end - -function ENT:Think() - local link = self:GetLinkedTeleporter() - local level = self:GetLevel() - local ready = self:IsReady() - - if link ~= self.LastLinkedTeleporter or level ~= self.LastLevel or ready ~= self.LastReady then - self:UpdateParticles() - self.LastLinkedTeleporter = link - self.LastLevel = level - self.LastReady = ready - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/init.lua b/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/init.lua deleted file mode 100644 index 72fb976cb..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/init.lua +++ /dev/null @@ -1,230 +0,0 @@ - -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -include("shared.lua") - -ENT.NumLevels = 3 -ENT.Levels = { -{Model("models/buildables/teleporter.mdl"), Model("models/buildables/teleporter_light.mdl")}, -{Model("models/buildables/teleporter.mdl"), Model("models/buildables/teleporter_light.mdl")}, -{Model("models/buildables/teleporter.mdl"), Model("models/buildables/teleporter_light.mdl")}, -} -ENT.IdleSequence = "running" -ENT.DisableDuringUpgrade = false -ENT.NoUpgradedModel = true - -ENT.Sound_Ready = Sound("Building_Teleporter.Ready") -ENT.Sound_Send = Sound("Building_Teleporter.Send") -ENT.Sound_Receive = Sound("Building_Teleporter.Receive") - -ENT.Sound_Spin1 = Sound("Building_Teleporter.SpinLevel1") -ENT.Sound_Spin2 = Sound("Building_Teleporter.SpinLevel2") -ENT.Sound_Spin3 = Sound("Building_Teleporter.SpinLevel3") - -ENT.Sound_Explode = Sound("Building_Teleporter.Explode") - ---ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") - -ENT.TeleportDelay = 1 - -ENT.RechargeTime = 10 -ENT.MinRechargingSpinSpeed = 0.2 - -ENT.Acceleration = 0 - -ENT.Gibs = { -Model("models/buildables/Gibs/teleporter_gib1.mdl"), -Model("models/buildables/Gibs/teleporter_gib2.mdl"), -Model("models/buildables/Gibs/teleporter_gib3.mdl"), -Model("models/buildables/Gibs/teleporter_gib4.mdl"), -} - -ENT.Accelerations = { - {acc=0.003, dec=0.002}, -} - -function ENT:SetAcceleration(a) - self.Acceleration = a -end - -function ENT:OnStartBuilding() -end - -function ENT:PostEnable(laststate) - if laststate == 1 then - for _,v in pairs(ents.FindByClass("obj_teleporter")) do - if v ~= self and v:GetBuilder() == self:GetBuilder() and v:GetState() == 3 and not IsValid(v:GetLinkedTeleporter()) then - if (self:IsEntrance() and v:IsExit()) or (self:IsExit() and v:IsEntrance()) then - self:SetLinkedTeleporter(v) - v:SetLinkedTeleporter(self) - self:OnLink(v) - v:OnLink(self) - end - end - end - - self.SpinSpeed = 0 - self:SetPlaybackRate(0) - end -end - -function ENT:OnLink(ent) - if self.Spin_Sound then - self.Spin_Sound:Stop() - end - - self.Spin_Sound = CreateSound(self, self.Sound_Spin1) - self.Spin_Sound:Play() - - self:SetAcceleration(0.005) - self:SetChargePercentage(1) -end - -function ENT:OnUnlink(ent) - if self.Spin_Sound then - self.Spin_Sound:Stop() - self.Spin_Sound = nil - end - - self:SetAcceleration(-0.005) -end - -function ENT:OnStartUpgrade() - if IsValid(self:GetLinkedTeleporter()) then - self:SetChargePercentage(1) - - if self.Spin_Sound then - self.Spin_Sound:Stop() - end - - if self:GetLevel()==2 then - self.Spin_Sound = CreateSound(self, self.Sound_Spin2) - self.Spin_Sound:Play() - elseif self:GetLevel()==3 then - self.Spin_Sound = CreateSound(self, self.Sound_Spin3) - self.Spin_Sound:Play() - end - end -end - -function ENT:GetExitPosition() - local att = self:GetAttachment(self:LookupAttachment("centre_attach")) - return att.Pos + 2*vector_up -end - -function ENT:Teleport(pl) - if not self:IsEntrance() then return end - local exit = self:GetLinkedTeleporter() - if not IsValid(exit) then return end - - self:EmitSound(self.Sound_Send) - exit:EmitSound(self.Sound_Receive) - - self:SetChargePercentage(0) - self.SpinSpeed = 0.9 - self:SetAcceleration(-0.002) - self.NextRecharge = CurTime() + self.RechargeTime - self.NextRestartMotor = CurTime() + 0.5 * self.RechargeTime - - exit.SpinSpeed = 0.9 - exit:SetAcceleration(-0.002) - exit.NextRestartMotor = CurTime() + 0.5 * self.RechargeTime - - pl:SetPos(exit:GetExitPosition()) - local y = self:GetAngles().y - if pl:IsPlayer() then - local ang = pl:EyeAngles() - ang.y = y - pl:SetEyeAngles(ang) - umsg.Start("TFTeleportEffect", pl) - umsg.End() - else - local ang = pl:GetAngles() - ang.y = y - pl:SetAngles(ang) - end - - self.DoneInitialWarmup = true -end - -function ENT:OnThinkActive() - if self:IsEntrance() and IsValid(self:GetLinkedTeleporter()) then - self:SetBodygroup(2, 1) - self:SetPoseParameter("direction", self:GetAngles().y-(self:GetPos()-self:GetLinkedTeleporter():GetPos()):Angle().y) - else - self:SetBodygroup(2, 0) - end - - if self.NextRecharge then - local r = math.Clamp(1 - (self.NextRecharge - CurTime()) / self.RechargeTime, 0, 1) - self:SetChargePercentage(r) - if r == 1 then - self.NextRecharge = nil - self.SpinSpeed = 1 - end - end - - if self.NextRestartMotor and CurTime() >= self.NextRestartMotor then - self:SetAcceleration(0.003) - self.NextRestartMotor = nil - end - - self.SpinSpeed = math.Clamp(self.SpinSpeed + self.Acceleration, 0, 1) - self:SetPlaybackRate(self.SpinSpeed) - if self.DoneInitialWarmup and self.Spin_Sound then - self.Spin_Sound:ChangePitch(math.Clamp(100*self.SpinSpeed, 1, 100), 0) - end - - if self.SpinSpeed == 1 then - self:SetBodygroup(1,1) - self.DoneInitialWarmup = true - else - self:SetBodygroup(1,0) - end - - local ready = self:IsReady() - if ready ~= self.LastReady then - if ready then - self:EmitSound(self.Sound_Ready) - self.Clients = {} - end - self.LastReady = ready - end - - if ready and self:IsEntrance() then - local pos = self:GetPos() - local teleported = false - - for _,v in pairs(self.Clients) do - v.removeme = true - end - - for _,pl in pairs(ents.FindInBox(pos + Vector(-10, -10, 0), pos + Vector(10, 10, 30))) do - if pl:IsTFPlayer() and self:IsFriendly(pl) and not pl:IsBuilding() and (pl:GetMoveType()==MOVETYPE_WALK or pl:GetMoveType()==MOVETYPE_STEP) then - if not self.Clients[pl] then - self.Clients[pl] = {starttime = CurTime()} - else - self.Clients[pl].removeme = nil - if not teleported and CurTime() - self.Clients[pl].starttime > self.TeleportDelay then - teleported = true - self.Clients[pl] = nil - self:Teleport(pl) - end - end - end - end - - for k,v in pairs(self.Clients) do - if v.removeme then - self.Clients[k] = nil - end - end - end -end - -function ENT:OnRemove() - if self.Spin_Sound then - self.Spin_Sound:Stop() - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/shared.lua b/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/shared.lua deleted file mode 100644 index 03870c859..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/obj_teleporter/shared.lua +++ /dev/null @@ -1,96 +0,0 @@ - -ENT.Base = "obj_base" -ENT.Type = "ai" - -ENT.AutomaticFrameAdvance = true - -PrecacheParticleSystem("teleporter_arms_circle_red") -PrecacheParticleSystem("teleporter_red_charged_level1") -PrecacheParticleSystem("teleporter_red_charged_level2") -PrecacheParticleSystem("teleporter_red_charged_level3") -PrecacheParticleSystem("teleporter_red_entrance_level1") -PrecacheParticleSystem("teleporter_red_entrance_level2") -PrecacheParticleSystem("teleporter_red_entrance_level3") -PrecacheParticleSystem("teleporter_red_exit_level1") -PrecacheParticleSystem("teleporter_red_exit_level2") -PrecacheParticleSystem("teleporter_red_exit_level3") - -PrecacheParticleSystem("teleporter_arms_circle_blue") -PrecacheParticleSystem("teleporter_blue_charged_level1") -PrecacheParticleSystem("teleporter_blue_charged_level2") -PrecacheParticleSystem("teleporter_blue_charged_level3") -PrecacheParticleSystem("teleporter_blue_entrance_level1") -PrecacheParticleSystem("teleporter_blue_entrance_level2") -PrecacheParticleSystem("teleporter_blue_entrance_level3") -PrecacheParticleSystem("teleporter_blue_exit_level1") -PrecacheParticleSystem("teleporter_blue_exit_level2") -PrecacheParticleSystem("teleporter_blue_exit_level3") - -ENT.ObjectHealth = 150 - -ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,12)} -ENT.BuildHull = {Vector(-28,-28,0), Vector(28,28,95)} - -ENT.ObjectName = "#TF_Object_Tele" - -function ENT:SetupDataTables() - self.BaseClass.SetupDataTables(self) - self:DTVar("Entity", 2, "LinkedTeleporter") -end - -function ENT:GetTargetIDSubText() - local charge = self:GetChargePercentage() - local link = self:GetLinkedTeleporter() - - if not IsValid(link) then - return tf_lang.GetRaw("#TF_playerid_teleporter_entrance_nomatch") - elseif charge < 0 then - return tf_lang.GetFormatted("#TF_playerid_object_recharging", math.floor(charge * 100)) - else - return self.BaseClass.GetTargetIDSubText(self) - end -end - -function ENT:GetTargetIDName(nolocalize) - local name = self.ObjectName or GAMEMODE:EntityName(self) - return tf_lang.GetFormatted("#TF_playerid_object_mode", - tf_lang.GetRaw(self.ObjectName), - GAMEMODE:EntityName(self:GetBuilder()), - tf_lang.GetRaw(self:GetBuildingData().mode_name or "") - ) -end - -function ENT:IsEntrance() - return self:GetBuildMode() == 0 -end - -function ENT:IsExit() - return self:GetBuildMode() == 1 -end - -function ENT:IsReady() - local link = self:GetLinkedTeleporter() - if self:IsEntrance() then - return IsValid(link) and (self:GetChargePercentage() >= 1) - else - return IsValid(link) and link:IsReady() - end -end - -function ENT:GetChargePercentage() - return self.dt.BuildingInfoFloat.y -end - -function ENT:SetChargePercentage(p) - local v = self.dt.BuildingInfoFloat - v.y = p - self.dt.BuildingInfoFloat = v -end - -function ENT:GetLinkedTeleporter() - return self.dt.LinkedTeleporter -end - -function ENT:SetLinkedTeleporter(e) - self.dt.LinkedTeleporter = e -end diff --git a/addon/gamemodes/teamfortress/entities/entities/team_control_point/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/team_control_point/cl_init.lua deleted file mode 100644 index 96888d0c1..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/team_control_point/cl_init.lua +++ /dev/null @@ -1,155 +0,0 @@ -include("shared.lua") - -ENT.RenderGroup = RENDERGROUP_TRANSLUCENT - -local function UpdateControlPointTexture(cp) - local str - if cp.locked then str = "tex_icon_locked_" - else str = "tex_icon_" - end - - cp.tex_icon = cp[str..cp.owner] or cp[str.."0"] - cp.tex_overlay = cp["tex_overlay_"..cp.owner] or cp["tex_overlay_0"] -end - -local function GetTextureID(tex) - if tex=="" then - return -1 - else - return surface.GetTextureID(tex) - end -end - -usermessage.Hook("TF_SetControlPointLayout", function(msg) - local str = msg:ReadString() - local y = 1 - local m = {{}} - - str=string.gsub(str, "(%S),", "%1 ,") - str=string.gsub(str, ",(%S)", ", %1") - for n in string.gmatch(str, "[0-9,]+") do - if tonumber(n) then - table.insert(m[y], tonumber(n)+1) - else - y = y+1 - m[y] = {} - end - end - - GAMEMODE.ControlPointLayout = m - - for _,v in ipairs(m) do - for _,n in ipairs(v) do - Msg(n.." ") - end - Msg("\n") - end -end) - -usermessage.Hook("TF_AddControlPoint", function(msg) - if not GAMEMODE.ControlPoints then GAMEMODE.ControlPoints = {} end - - local id = msg:ReadChar() - local cp = {} - - cp.name = msg:ReadString() - - cp.icon_neutral = msg:ReadString() - cp.icon_red = msg:ReadString() - cp.icon_blu = msg:ReadString() - cp.tex_icon_0 = GetTextureID(cp.icon_neutral) - cp.tex_icon_2 = GetTextureID(cp.icon_red) - cp.tex_icon_3 = GetTextureID(cp.icon_blu) - cp.tex_icon_locked_0 = GetTextureID(cp.icon_neutral.."_locked") - cp.tex_icon_locked_2 = GetTextureID(cp.icon_red.."_locked") - cp.tex_icon_locked_3 = GetTextureID(cp.icon_blu.."_locked") - - cp.overlay_neutral = msg:ReadString() - cp.overlay_red = msg:ReadString() - cp.overlay_blu = msg:ReadString() - cp.tex_overlay_0 = GetTextureID(cp.overlay_neutral) - cp.tex_overlay_2 = GetTextureID(cp.overlay_red) - cp.tex_overlay_3 = GetTextureID(cp.overlay_blu) - - cp.owner = msg:ReadChar() - cp.locked = false - - UpdateControlPointTexture(cp) - - MsgN("Control point "..id) - PrintTable(cp) - - GAMEMODE.ControlPoints[id] = cp -end) - -usermessage.Hook("TF_SetControlPointTeam", function(msg) - local id = msg:ReadChar() - local cp = GAMEMODE.ControlPoints[id] - - if not cp then return end - - cp.owner = msg:ReadChar() - UpdateControlPointTexture(cp) -end) - -usermessage.Hook("TF_LockControlPoint", function(msg) - local id = msg:ReadChar() - local cp = GAMEMODE.ControlPoints[id] - - if not cp then return end - - cp.locked = true - UpdateControlPointTexture(cp) -end) - -usermessage.Hook("TF_OpenControlPoint", function(msg) - local id = msg:ReadChar() - local cp = GAMEMODE.ControlPoints[id] - - if not cp then return end - - cp.locked = false - UpdateControlPointTexture(cp) -end) - -usermessage.Hook("TF_EnterControlPoint", function(msg) - LocalPlayer().CurrentControlPoint = msg:ReadChar() -end) - -usermessage.Hook("TF_ExitControlPoint", function(msg) - LocalPlayer().CurrentControlPoint = -1 -end) - -usermessage.Hook("TF_SetAndResumeTimer", function(msg) - GAMEMODE.RoundTimeReference = msg:ReadFloat() - - local t = msg:ReadFloat() - if t>0 then GAMEMODE.MaxRoundTime = t end - - GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() - GAMEMODE.RoundTimeLastUpdated = CurTime() - GAMEMODE.RoundTimePaused = nil -end) - -usermessage.Hook("TF_SetAndPauseTimer", function(msg) - GAMEMODE.RoundTimePaused = msg:ReadFloat() - - local t = msg:ReadFloat() - if t>0 then GAMEMODE.MaxRoundTime = t end - - GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() -end) - -usermessage.Hook("TF_PlayGlobalSound", function(msg) - LocalPlayer():EmitSound(msg:ReadString()) -end) - -function ENT:Draw() - -- fuck AutomaticFrameAdvance, this is better - if self.LastDrawn then - self:FrameAdvance(CurTime() - self.LastDrawn) - end - self.LastDrawn = CurTime() - - self:DrawModel() -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/team_control_point/init.lua b/addon/gamemodes/teamfortress/entities/entities/team_control_point/init.lua deleted file mode 100644 index 5b1ba5a65..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/team_control_point/init.lua +++ /dev/null @@ -1,179 +0,0 @@ -include("shared.lua") -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -function ENT:Initialize() - self.ID = self.Properties.point_index - self.OwnerTeam = self.Properties.point_default_owner - self.Locked = false - - self:UpdateModel() -end - -function ENT:UpdateModel() - self:SetModel(self.Properties["team_model_"..self.OwnerTeam]) - self:SetBodygroup(0, self.OwnerTeam) - self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) - self:DrawShadow(false) -end - -function ENT:InitPostEntity() - if not IsValid(self.TriggerEntity) then - return - end - - print(self) - - self.Properties.team_previouspoint_2_0 = ents.FindByName(self.Properties.team_previouspoint_2_0 or "")[1] or NULL - self.Properties.team_previouspoint_2_1 = ents.FindByName(self.Properties.team_previouspoint_2_1 or "")[1] or NULL - self.Properties.team_previouspoint_2_2 = ents.FindByName(self.Properties.team_previouspoint_2_2 or "")[1] or NULL - self.Properties.team_previouspoint_3_0 = ents.FindByName(self.Properties.team_previouspoint_3_0 or "")[1] or NULL - self.Properties.team_previouspoint_3_1 = ents.FindByName(self.Properties.team_previouspoint_3_1 or "")[1] or NULL - self.Properties.team_previouspoint_3_2 = ents.FindByName(self.Properties.team_previouspoint_3_2 or "")[1] or NULL - - PrintTable(self.Properties or {}) - - self:SendData() - self.Ready = true -end - -function ENT:SendData(pl) - umsg.Start("TF_AddControlPoint", pl) - umsg.Char(self.Properties.point_index) - umsg.String(self.Properties.point_printname) - - umsg.String(self.Properties.team_icon_0 or "") - umsg.String(self.Properties.team_icon_2 or "") - umsg.String(self.Properties.team_icon_3 or "") - - umsg.String(self.Properties.team_overlay_0 or "") - umsg.String(self.Properties.team_overlay_2 or "") - umsg.String(self.Properties.team_overlay_3 or "") - - umsg.Char(self.Properties.point_default_owner) - umsg.End() -end - -function ENT:SetOwnerTeam(o) - self.OwnerTeam = o - umsg.Start("TF_SetControlPointTeam") - umsg.Char(self.ID) - umsg.Char(self.OwnerTeam) - umsg.End() - self:UpdateModel() -end - -function ENT:Open() - self.Locked = false - umsg.Start("TF_OpenControlPoint") - umsg.Char(self.ID) - umsg.End() -end - -function ENT:Lock() - self.Locked = true - umsg.Start("TF_LockControlPoint") - umsg.Char(self.ID) - umsg.End() -end - -function ENT:SetLocked(b) - if b then - self:Lock() - else - self:Open() - end -end - --- Should this control point be locked or not? -function ENT:ComputeLockStatus() - if self.TeamCanCap then - -- If this point cannot be captured by any team other than its owner, it's definitely locked - local lock = true - for t=2,3 do - if t~=self.OwnerTeam and self.TeamCanCap[t] then - lock = false - break - end - end - if lock then - return true - end - end - - local pt - local lock = true - for t=2,3 do - if self.OwnerTeam ~= t then - local cancap = true - - if self.TeamCanCap and not self.TeamCanCap[t] then - cancap = false - else - for i=0,2 do - pt = self.Properties["team_previouspoint_"..t.."_"..i] - if not IsValid(pt) then - if i==0 then - local cannotcap = false - for _,pt in pairs(ents.FindByClass("team_control_point")) do - if ((t==2 and pt.ID>self.ID) or (t==3 and pt.ID0 then - self.IsSetupPhase = true - if self.StartPaused then - self:SetAndPauseTimer(self.SetupLength, true) - else - self:SetAndResumeTimer(self.SetupLength, true) - end - self:TriggerOutput("OnSetupStart") - else - self.IsSetupPhase = false - if self.StartPaused then - self:SetAndPauseTimer(self.TimerLength, true) - else - self:SetAndResumeTimer(self.TimerLength, true) - end - self:TriggerOutput("OnRoundStart") - if endsetup then - self:TriggerOutput("OnSetupFinished") - end - end -end - -function ENT:GetTime() - if not self.TimerReference or not self.TimerLastUpdated then - return 0 - end - - if self.TimerPaused then - return math.Clamp(self.TimerPaused, 0, math.huge) - else - return math.Clamp(self.TimerReference - (CurTime() - self.TimerLastUpdated), 0, math.huge) - end -end - -function ENT:SetTime(sec) - sec = math.Clamp(sec, 0, self.MaxLength) - - if self.TimerPaused then - self:SetAndPauseTimer(sec) - else - self:SetAndResumeTimer(sec) - end -end - -function ENT:SetAndResumeTimer(sec, setmax) - sec = math.Clamp(sec, 0, self.MaxLength) - - self.TimerReference = sec - self.TimerLastUpdated = CurTime() - self.TimerPaused = nil - - if self==GAMEMODE.CurrentHUDTimer then - umsg.Start("TF_SetAndResumeTimer") - umsg.Float(sec) - umsg.Float((setmax and sec) or 0) - umsg.Bool(self.IsSetupPhase) - umsg.End() - end -end - -function ENT:SetAndPauseTimer(sec, setmax) - sec = math.Clamp(sec, 0, self.MaxLength) - - self.TimerPaused = sec - - if self==GAMEMODE.CurrentHUDTimer then - umsg.Start("TF_SetAndPauseTimer") - umsg.Float(sec) - umsg.Float((setmax and sec) or 0) - umsg.Bool(self.IsSetupPhase) - umsg.End() - end -end - -function ENT:ResumeTimer() - self:SetAndResumeTimer(self:GetTime()) -end - -function ENT:PauseTimer() - self:SetAndPauseTimer(self:GetTime()) -end - -function ENT:KeyValue(key,value) - self:StoreOutput(key, value) - - key = string.lower(key) - - if not self.Properties then - self.Properties = {} - end - if tonumber(value) then value=tonumber(value) end - self.Properties[key] = value -end - -function ENT:Think() - if not GAMEMODE.PostEntityDone then return end - if GAMEMODE.PostEntityDone and not self.PostEntityDone then - self:InitPostEntity() - self.PostEntityDone = true - - -- return (I want you to start thinking, immediately) - end - - local t = self:GetTime() - if t<=0 then - if self.IsSetupPhase then - self:RestartTimer(true) - elseif not self.RoundFinished then - self.RoundFinished = true - self:TriggerOutput("OnFinished") - end - return - end - - for k,v in ipairs(TimeRemainingToOutput) do - if k == self.LastPlayedTimeSignal then - break - end - - if t <= v[1] then - self:TriggerOutput(v[2]) - self.LastPlayedTimeSignal = k - - if self.IsSetupPhase and v[3] then - umsg.Start("TF_PlayGlobalSound") - umsg.String(v[3]) - umsg.End() - elseif not self.IsSetupPhase and self.AutoCountdown and v[4] then - umsg.Start("TF_PlayGlobalSound") - umsg.String(v[4]) - umsg.End() - end - break - end - end -end - -function ENT:Input_Pause(activator, caller, data) - self:PauseTimer() -end - -function ENT:Input_Resume(activator, caller, data) - self:ResumeTimer() -end - -function ENT:Input_SetTime(activator, caller, data) - local sec = tonumber(data) - if sec then - self:SetTime(sec) - end -end - -function ENT:Input_AddTime(activator, caller, data) - local sec = tonumber(data) - if sec then - self:SetTime(self:GetTime() + sec) - end -end - -function ENT:Input_AddTeamTime(activator, caller, data) - local t, sec = string.match("(.*)%s+(.*)") - t, sec = tonumber(t), tonumber(sec) - - if t and sec then - print(Format("Added %d seconds due to team %d", sec, t)) - self:SetTime(self:GetTime() + sec) - end -end - -function ENT:Input_Restart(activator, caller, data) - self:RestartTimer() -end - -function ENT:Input_ShowInHUD(activator, caller, data) - if tonumber(data)==1 then - self.ShowInHUD = true - GAMEMODE.CurrentHUDTimer = self - else - self.ShowInHUD = false - if GAMEMODE.CurrentHUDTimer == self then - GAMEMODE.CurrentHUDTimer = nil - for _,v in pairs(ents.FindByClass("team_round_timer")) do - if v.ShowInHUD then - GAMEMODE.CurrentHUDTimer = v - break - end - end - end - end -end - -function ENT:Input_SetMaxTime(activator, caller, data) - local sec = tonumber(data) - if sec then - self.MaxLength = sec - if self.MaxLength <= 0 then self.MaxLength = math.huge end - - if self:GetTime()>self.MaxLength then - self:SetTime(self.MaxLength) - end - end -end - -function ENT:Input_AutoCountdown(activator, caller, data) - self.AutoCountdown = (tonumber(data)==1) -end - -function ENT:Input_SetSetupTime(activator, caller, data) - local sec = tonumber(data) - if sec then - self.SetupLength = sec - end -end - -function ENT:AcceptInput(name, activator, caller, data) - print(self, "received input", name) - local f = self["Input_"..name] - if f then - f(self, activator, caller, data) - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_entitybleed/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_entitybleed/shared.lua deleted file mode 100644 index 85ad708b9..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_entitybleed/shared.lua +++ /dev/null @@ -1,122 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "base_anim" - -if CLIENT then - -function ENT:Draw() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -local DamagePeriod = 0.5 -local DamagePerTick = 4 - -function ENT:GetInflictorName(inf) - --[[if inf.GetItemData then - local d = inf:GetItemData() - if d.item_iconname then - return "tf_weapon_"..d.item_iconname - end - end - - return inf:GetClass()]] - - return nil -end - -function ENT:Update(data) - local NameOverride - if IsValid(data.Inflictor) then - NameOverride = self:GetInflictorName(data.Inflictor) - --self.Attributes = data.Inflictor.Attributes - end - - -- Extend the life time - data.LifeTime = data.LifeTime or 8 - self.RemainingDamage = DamagePerTick * (math.floor(data.LifeTime / DamagePeriod) + 1) - - -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) - if NameOverride then - self.NameOverride = NameOverride - end - if IsValid(data.Owner) then - self:SetOwner(data.Owner) - end -end - -function ENT:Initialize() - self:SetNoDraw(true) - self:SetNotSolid(true) - - self.LifeTime = self.LifeTime or 8 - - if IsValid(self.Target) then - self:SetPos(self.Target:GetPos()) - self:SetParent(self.Target) - else - self.Target = self:GetParent() - end - - if IsValid(self.Inflictor) then - self.NameOverride = self:GetInflictorName(self.Inflictor) - --self.Attributes = self.Inflictor.Attributes - end - - if IsValid(self.Target) then - -- If the entity is already bleeding - if IsValid(self.Target.BleedEntity) then - -- Extend the life time - self.Target.BleedEntity.RemainingDamage = DamagePerTick * (math.floor(self.LifeTime / DamagePeriod) + 1) - - -- Update the inflictor and attacker - if self.NameOverride then - self.Target.BleedEntity.NameOverride = self.NameOverride - end - if IsValid(self:GetOwner()) then - self.Target.BleedEntity:SetOwner(self:GetOwner()) - end - - self:Remove() - return - else - self.Target:AddPlayerState(PLAYERSTATE_BLEEDING, false) - self.Target.BleedEntity = self - self.RemainingDamage = DamagePerTick * (math.floor(self.LifeTime / DamagePeriod) + 1) - end - end - - self.NextBleed = CurTime() + DamagePeriod -end - -function ENT:Think() - if not IsValid(self) or not IsValid(self.Target) then return false end - - if self.RemainingDamage<=0 or self.Target:Health()<=0 then - self:Remove() - return - elseif CurTime()>self.NextBleed then - local dmginfo = DamageInfo() - if IsValid(self:GetOwner()) then - dmginfo:SetAttacker(self:GetOwner()) - else - dmginfo:SetAttacker(self) - end - dmginfo:SetInflictor(self) - dmginfo:SetDamage(DamagePerTick) - dmginfo:SetDamageType(bit.bor(DMG_GENERIC,DMG_DIRECT)) - dmginfo:SetDamagePosition(self.Target:GetPos()) - self.Target:TakeDamageInfo(dmginfo) - self.NextBleed = CurTime() + DamagePeriod - self.RemainingDamage = self.RemainingDamage - DamagePerTick - end -end - -function ENT:OnRemove() - self.Target:RemovePlayerState(PLAYERSTATE_BLEEDING, false) -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_entityflame/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_entityflame/shared.lua deleted file mode 100644 index 982a1f8d9..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_entityflame/shared.lua +++ /dev/null @@ -1,200 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "base_anim" - -if CLIENT then - -function ENT:Draw() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.NoDamageCooperation = true - -local DamagePeriod = 0.5 -local DamagePerTick = 3 - -function ENT:ShouldExtinguishInWater() - if not IsValid(self.Target) then return false end - - -- Metallic props that can be ignited are usually oil drums, don't extinguish them when they enter water) - if self.Target:GetClass() == "prop_physics" and self.Target:GetMaterialType() == MAT_METAL then - return false - end - - return true -end - -function ENT:GetInflictorName(inf) - if inf.NameOverride then - return inf.NameOverride - end - - if inf.GetItemData then - local d = inf:GetItemData() - if d.item_iconname then - --return "tf_weapon_"..d.item_iconname - return d.item_iconname - end - end - - return inf:GetClass() -end - -function ENT:TargetIsFireproof() - if IsValid(self.Target) and self.Target:IsPlayer() then - if self.Target.TempAttributes.Fireproof then - return true - end - - local c = self.Target:GetPlayerClassTable() - if c and c.Fireproof then - return true - end - end - return false -end - -function ENT:Update(data) - local NameOverride - if IsValid(data.Inflictor) then - NameOverride = self:GetInflictorName(data.Inflictor) - self.Attributes = data.Inflictor.Attributes - end - - -- Extend the life time - self.LifeTime = data.LifeTime or 10 - if data.Inflictor and data.Inflictor.BurnTimeMultiplier then - self.LifeTime = self.LifeTime * data.Inflictor.BurnTimeMultiplier - end - - self.DamagePerTick = DamagePerTick - if data.Inflictor and data.Inflictor.BurnDamageMultiplier then - self.DamagePerTick = self.DamagePerTick * data.Inflictor.BurnDamageMultiplier - end - - self.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) - - -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) - if NameOverride then - self.NameOverride = NameOverride - end - if IsValid(data.Owner) then - self:SetOwner(data.Owner) - end -end - -function ENT:Initialize() - self:SetNoDraw(true) - self:SetNotSolid(true) - - self.LifeTime = self.LifeTime or 10 - if self.Inflictor and self.Inflictor.BurnTimeMultiplier then - self.LifeTime = self.LifeTime * self.Inflictor.BurnTimeMultiplier - end - - self.DamagePerTick = DamagePerTick - if self.Inflictor and self.Inflictor.BurnDamageMultiplier then - self.DamagePerTick = self.DamagePerTick * self.Inflictor.BurnDamageMultiplier - end - - - if IsValid(self.Target) then - self:SetPos(self.Target:GetPos()) - self:SetParent(self.Target) - else - self.Target = self:GetParent() - end - - if IsValid(self.Inflictor) then - self.NameOverride = self:GetInflictorName(self.Inflictor) - self.Attributes = self.Inflictor.Attributes - end - - if IsValid(self.Target) then - -- If the entity is already on fire - if IsValid(self.Target.FireEntity) then - -- Extend the life time - self.Target.FireEntity.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) - - -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) - if self.NameOverride then - self.Target.FireEntity.NameOverride = self.NameOverride - end - if IsValid(self:GetOwner()) then - self.Target.FireEntity:SetOwner(self:GetOwner()) - end - - self:Remove() - return - else - self.Target:AddPlayerState(PLAYERSTATE_ONFIRE, true) - if not self:TargetIsFireproof() then - --self.Target:SetNWBool("ShouldDropBurningRagdoll", true) - self.Target:AddDeathFlag(DF_FIRE) - end - if self.Target:IsPlayer() then - self.Target:Speak("TLK_ONFIRE") - end - - --print("ignite",self.Target) - self.Target:EmitSound("Fire.Engulf") - self.Target.FireEntity = self - self.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) - end - end - - if self.Target:IsNPC() then - self:EmitSound("General.BurningFlesh") - else - self:EmitSound("General.BurningObject") - end - - self.NextBurn = CurTime() + DamagePeriod -end - -function ENT:Think() - if not IsValid(self) or not IsValid(self.Target) then return false end - - if (self:ShouldExtinguishInWater() and self.Target:WaterLevel()>2) or self.RemainingDamage<=0 or self:TargetIsFireproof() then - self:Remove() - return - elseif CurTime()>self.NextBurn then - local dmginfo = DamageInfo() - if IsValid(self:GetOwner()) then - dmginfo:SetAttacker(self:GetOwner()) - else - dmginfo:SetAttacker(self) - end - dmginfo:SetInflictor(self) - dmginfo:SetDamage(self.DamagePerTick) - if self.Target:IsPlayer() then - dmginfo:SetDamageType(bit.bor(DMG_GENERIC,DMG_DIRECT)) - else - dmginfo:SetDamageType(bit.bor(DMG_BURN,DMG_DIRECT)) - end - dmginfo:SetDamagePosition(self.Target:GetPos()) - self.Target:TakeDamageInfo(dmginfo) - GAMEMODE:AddDamageCooperation(self.Target, dmginfo:GetAttacker(), self.DamagePerTick, ASSIST_FIRE) - - self.NextBurn = CurTime() + DamagePeriod - self.RemainingDamage = self.RemainingDamage - self.DamagePerTick - end -end - -function ENT:OnRemove() - if self.NextBurn and IsValid(self.Target) then - self.Target:Extinguish() - self.Target:RemovePlayerState(PLAYERSTATE_ONFIRE, true) - if self.Target:Health()>0 then - --self.Target:SetNWBool("ShouldDropBurningRagdoll", false) - self.Target:RemoveDeathFlag(DF_FIRE) - end - self:EmitSound("General.StopBurning") - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_flame/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_flame/shared.lua deleted file mode 100644 index 6a04326a8..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_flame/shared.lua +++ /dev/null @@ -1,208 +0,0 @@ --- Flare - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.IsTFWeapon = true - -ENT.Size = 5 - -function ENT:InitEffects() -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() -end - -local function DrawBox(pos, mins, maxs, F, R, U) - local bld = (pos + mins.x*F + mins.y*R + mins.z*U):ToScreen() - local brd = (pos + mins.x*F + maxs.y*R + mins.z*U):ToScreen() - local frd = (pos + maxs.x*F + maxs.y*R + mins.z*U):ToScreen() - local fld = (pos + maxs.x*F + mins.y*R + mins.z*U):ToScreen() - local blu = (pos + mins.x*F + mins.y*R + maxs.z*U):ToScreen() - local bru = (pos + mins.x*F + maxs.y*R + maxs.z*U):ToScreen() - local fru = (pos + maxs.x*F + maxs.y*R + maxs.z*U):ToScreen() - local flu = (pos + maxs.x*F + mins.y*R + maxs.z*U):ToScreen() - - surface.DrawLine(bld.x, bld.y, brd.x, brd.y) - surface.DrawLine(brd.x, brd.y, frd.x, frd.y) - surface.DrawLine(frd.x, frd.y, fld.x, fld.y) - surface.DrawLine(fld.x, fld.y, bld.x, bld.y) - - surface.DrawLine(blu.x, blu.y, bru.x, bru.y) - surface.DrawLine(bru.x, bru.y, fru.x, fru.y) - surface.DrawLine(fru.x, fru.y, flu.x, flu.y) - surface.DrawLine(flu.x, flu.y, blu.x, blu.y) - - surface.DrawLine(blu.x, blu.y, bld.x, bld.y) - surface.DrawLine(bru.x, bru.y, brd.x, brd.y) - surface.DrawLine(flu.x, flu.y, fld.x, fld.y) - surface.DrawLine(fru.x, fru.y, frd.x, frd.y) -end - -function ENT:Draw() - render.SetViewPort(0, 0, ScrW(), ScrH()) - cam.Start2D() - cam.IgnoreZ(true) - surface.SetDrawColor(50, 60, 255, 255) - DrawBox(self:GetPos(), Vector(-self.Size,-self.Size,-self.Size), Vector(self.Size,self.Size,self.Size), Vector(1,0,0), Vector(0,1,0), Vector(0,0,1)) - cam.IgnoreZ(false) - cam.End2D() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.HitSound = Sound("Weapon_FlameThrower.FireHit") - -ENT.MaxDamage = 7 -ENT.MinDamage = 2 -ENT.DamageRandomize = 0.1 -ENT.CritDamageMultiplier = 3 - -ENT.Force = 1200 -ENT.DragCoefficient = 3 -ENT.Buoyancy = 50 -ENT.ThinkTime = 0.2 - -ENT.BaseLifeTime = 1 - -ENT.BackCritAngle = 120 - -tf_debug_flamethrower = CreateConVar("tf_debug_flamethrower", 0, {FCVAR_CHEAT}) - -function ENT:Critical(ent) - if self.critical then - return true - end - - if self.CritsFromBehind then - local back_cos = math.cos(math.rad(self.BackCritAngle * 0.5)) - local v1 = ent:GetPos() - self:GetPos() - local v2 = ent:GetAngles():Forward() - - v1.z = 0 - v2.z = 0 - v1:Normalize() - v2:Normalize() - - return v1:Dot(v2) > back_cos - end - - return false -end - -function ENT:CalculateDamage(ownerpos) - local dmg = Lerp((self.NextDie - CurTime()) / self.LifeTime, self.MinDamage, self.MaxDamage) - return dmg * (1+math.Rand(-self.DamageRandomize, self.DamageRandomize)) -end - -function ENT:Initialize() - local min = Vector(-self.Size, -self.Size, -self.Size) - local max = Vector( self.Size, self.Size, self.Size) - - if tf_debug_flamethrower:GetBool() then - self:DrawShadow(false) - else - self:SetNoDraw(true) - end - - self:SetNotSolid(true) - - self:SetMoveType(MOVETYPE_FLY) - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - self:SetTrigger(true) - - self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - - self:SetLocalVelocity(self:GetForward() * self.Force) - - self.LifeTime = self.BaseLifeTime - self.NextDie = CurTime() + self.LifeTime -end - -function ENT:Think() - if CurTime()>=self.NextDie then - self:Remove() - return false - end - - local vel = self:GetVelocity() - -- More like AddVelocity, this adds a vector, it doesn't actually set it - self:SetVelocity(-self.DragCoefficient * self.ThinkTime * vel + Vector(0,0,self.Buoyancy * self.ThinkTime)) - - self:NextThink(CurTime() + 0.2) - return true -end - -function ENT:Hit(ent) - self.Touch = nil - - if self:IsWorld() then return end - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - if ent:IsTFPlayer() or (ent:GetClass()=="prop_physics") then - if not ent.FlameBurnSound then - ent.FlameBurnSound = CreateSound(ent, self.HitSound) - end - - if not ent.NextStopBurnSound or CurTime()>ent.NextStopBurnSound then - ent.FlameBurnSound:Play() - end - ent.NextStopBurnSound = CurTime() + 0.2 - end - - local damage = self:CalculateDamage() - - local dmginfo = DamageInfo() - dmginfo:SetAttacker(owner) - dmginfo:SetInflictor(self) - dmginfo:SetDamage(damage) - if ent:IsTFPlayer() then - dmginfo:SetDamageType(DMG_GENERIC) - else - dmginfo:SetDamageType(DMG_BURN) - end - dmginfo:SetDamagePosition(self:GetPos()) - dmginfo:SetDamageForce(self:GetVelocity()) - ent:TakeDamageInfo(dmginfo) - - if ent:IsFlammable() then - GAMEMODE:IgniteEntity(ent, self, owner, 10) - end - - self:Fire("kill", "", 0.01) -end - -function ENT:Touch(ent) - if not ent:IsTrigger() and ent~=self:GetOwner() and gamemode.Call("ShouldCollide",self,ent) then - self:Hit(ent) - end -end - -hook.Add("Think", "FlameBurnSoundThink", function() - for _,v in pairs(ents.GetAll()) do - if v.FlameBurnSound and (not v.NextStopBurnSound or CurTime()>v.NextStopBurnSound) then - v.NextStopBurnSound = nil - v.FlameBurnSound:Stop() - end - end -end) - -hook.Add("EntityRemoved", "FlameBurnSoundRemove", function(ent) - if ent.FlameBurnSound then - ent.FlameBurnSound:Stop() - ent.FlameBurnSound = nil - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_hat/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_hat/shared.lua deleted file mode 100644 index 8277d0485..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_hat/shared.lua +++ /dev/null @@ -1,173 +0,0 @@ - -DEFINE_BASECLASS( "base_gmodentity" ) - -local TranslateCModelToVModel = { - ["models/weapons/c_models/c_targe/c_targe.mdl"] = "models/weapons/c_models/c_v_targe/c_v_targe.mdl", -} - -function ENT:GetHatData() - return PlayerHats[self:GetNWString("HatName")] -end - -function ENT:GetHatModel() - local name = self:GetNWString("HatName") - local data = PlayerHats[name] - if data and not data.nomodel then - return "models/player/items/"..(data.model or name)..".mdl" - end -end - -function ENT:SetupSkinAndBodygroups(ent) - local hatdata = self:GetHatData() - - if hatdata then - if hatdata.skin then - ent:SetSkin(hatdata.skin) - else - if self:GetOwner():Team()==TEAM_BLU then - ent:SetSkin(1) - else - ent:SetSkin(0) - end - end - - if hatdata.perclassbodygroup then - local mdlname = self:GetOwner():GetPlayerClassTable().ModelName - if mdlname and ClassToMedalBodygroup[mdlname] then - ent:SetBodygroup(1, ClassToMedalBodygroup[mdlname]) - end - end - - ent:StopParticles() - if hatdata.particles then - for a,p in pairs(hatdata.particles) do - local att = ent:LookupAttachment(a) - if att and att > 0 then - ParticleEffectAttach(p, PATTACH_POINT_FOLLOW, ent, att) - else - ParticleEffectAttach(p, PATTACH_ABSORIGIN_FOLLOW, ent, 0) - end - end - end - end -end - -function ENT:SetupPlayerBodygroups(pl) - local hatdata = self:GetHatData() - - pl = pl or self:GetOwner() - - if hatdata and hatdata.hide then - local mdlname = self:GetOwner():GetPlayerClassTable().ModelName - if PlayerNamedBodygroups[mdlname] then - for _,v in ipairs(hatdata.hide) do - local d = PlayerNamedBodygroups[mdlname][v] - if d then - pl:SetBodygroup(d,1) - end - end - end - end -end - -function ENT:SetupDataTables() - self:DTVar("Bool", 0, "ShowInViewModel") -end - -function ENT:ShowsInViewModel() - return self.dt.ShowInViewModel -end - -if CLIENT then - -function ENT:DrawInViewModel(vm, wep) - print(self:GetOwner()) - if not wep.AddedCModels then - wep.AddedCModels = {} - end - - if not IsValid(wep.AddedCModels[self]) then - local mdlname = TranslateCModelToVModel[self:GetModel()] or self:GetModel() - - cm = ClientsideModel(mdlname) - cm:SetPos(vm:GetPos()) - cm:SetAngles(vm:GetAngles()) - cm:AddEffects(EF_BONEMERGE) - cm:SetParent(vm) - cm:SetNoDraw(true) - - wep.AddedCModels[self] = cm - end - - wep.AddedCModels[self]:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -function ENT:Initialize() - local hatdata - - if self.HatName then - hatdata = PlayerHats[self.HatName] - end - - if hatdata then - self:SetNWString("HatName", self.HatName) - self.Model = self:GetHatModel() - else - self:SetNWString("HatName", "") - end - - if self.Model then - self:SetModel(self.Model) - self:SetKeyValue("effects", "1") - else - self:SetNoDraw(true) - self:DrawShadow(false) - end - - self:SetMoveType(MOVETYPE_NONE) - self:SetSolid(SOLID_NONE) - - local pl = self.Player or player.GetAll()[1] - self:SetPos(pl:GetPos()) - self:SetAngles(pl:GetAngles()) - self:SetParent(pl) - self:SetOwner(pl) - - self:SetupSkinAndBodygroups(self) - self:SetupPlayerBodygroups() - - local att = self.Attributes or {} - if att.show_in_vmodel then - self.dt.ShowInViewModel = true - else - self.dt.ShowInViewModel = false - end -end - -hook.Add("DoPlayerDeath", "TFHatDisable", function(pl) - for _,v in pairs(ents.FindByClass("tf_hat")) do - if v:GetOwner()==pl then - v:SetKeyValue("effects", "0") - v:SetParent() - v:SetNoDraw(true) - v:DrawShadow(false) - v.Dead = true - end - end -end) - -hook.Add("PlayerSpawn", "TFHatCleanup", function(pl) - for _,v in pairs(ents.FindByClass("tf_hat")) do - if v:GetOwner()==pl and v.Dead then - v:Remove() - end - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_hl2landmark/init.lua b/addon/gamemodes/teamfortress/entities/entities/tf_hl2landmark/init.lua deleted file mode 100644 index d5bc75d3a..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_hl2landmark/init.lua +++ /dev/null @@ -1,206 +0,0 @@ -ENT.Type = "point" - -local AmmoTypes = { -TF_PRIMARY, -TF_SECONDARY, -TF_METAL, -TF_GRENADES1, -TF_GRENADES2 -} - -function ENT:Initialize() - self:Clear() -end - -function ENT:IsValidMap() - return self.Map==game.GetMap() and IsValid(self.LandmarkEntity) -end - -function ENT:GetLandmarkEntity() - if not self.Landmark then return end - - for _,v in pairs(ents.FindByName(self.Landmark)) do - if v:GetClass()=="info_landmark" then - self.LandmarkEntity = v - end - end -end - -function ENT:Clear() - self.Data = {} - self.Map = nil - self.Landmark = nil - self.LandmarkEntity = nil -end - -function ENT:Load() - self:Clear() - if not file.Exists("teamfortress/landmark.txt", "DATA") then return 1 end - local ok, t = pcall(util.JSONToTable, file.Read("teamfortress/landmark.txt", "DATA")) - - if not ok then - ErrorNoHalt(t) - file.Delete("teamfortress/landmark.txt") - return 2 - end - - self.Map = t.map - self.Landmark = t.landmark - self.Data = t.data - - self:GetLandmarkEntity() - file.Delete("teamfortress/landmark.txt") -end - -function ENT:Save() - local t = {map=self.Map, landmark=self.Landmark, data=self.Data} - file.Write("teamfortress/landmark.txt", util.TableToJSON(t)) - file.Write("teamfortress/landmark2.txt", util.TableToJSON(t)) - - file.Append("teamfortress/log.txt", Format("Saving landmark data, map: %s\n", self.Map)) -end - -function ENT:LoadPlayerData(pl) - local data = self.Data[pl:UniqueID()] - if not data then - Msg("Could not find data from player \""..pl:GetName().."\"\n") - return - end - - Msg("Loading data from player \""..pl:GetName().."\"\n") - PrintTable(data) - - pl.CPPos = self.LandmarkEntity:GetPos() + data.pos - pl.CPAng = data.ang - - pl:SetPos(pl.CPPos) - pl:SetEyeAngles(pl.CPAng) - - pl:SetPlayerClass(data.class) - pl:SetHealth(data.health) - - local activeweapon - - pl.ItemLoadout = {} - pl.ItemProperties = {} - - for k,wdata in pairs(data.loadout) do - pl.ItemLoadout[k] = tf_items.ItemsByID[wdata.id].name - pl.ItemProperties[k] = wdata.properties - end - - pl:SetPlayerClass(data.class) - - --pl.TempAttributes = data.tmpattrib - - pl:StripAmmo() - for _,ammotype in ipairs(AmmoTypes) do - pl:GiveAmmo(data.ammo[ammotype], ammotype) - end - - for k,wdata in pairs(data.loadout) do - local weap = pl:GetWeapon(tf_items.ItemsByID[wdata.id].item_class) - if IsValid(weap) then - if wdata.active then - activeweapon = weap:GetClass() - end - - weap:SetClip1(wdata.c1) - weap:SetClip2(wdata.c2) - - if weap.LoadData and wdata.custom then - weap:LoadData(wdata.custom) - end - end - end - - if activeweapon then - pl:SelectWeapon(activeweapon) - end -end - -function ENT:SavePlayerData(pl) - local data = {} - Msg("Saving data from player \""..pl:GetName().."\"\n") - - local id = pl:UniqueID() - - data.class = pl:GetPlayerClass() - data.health = pl:Health() - data.ammo = {} - for _,ammotype in ipairs(AmmoTypes) do - data.ammo[ammotype] = pl:GetAmmoCount(ammotype) - end - - data.loadout = {} - for k,item in pairs(pl.ItemLoadout) do - item = tf_items.Items[item] - - if item then - local wdata = {} - wdata.id = item.id - wdata.properties = pl.ItemProperties[k] - - local weap = pl:GetWeapon(item.item_class) - if IsValid(weap) then - if weap == pl:GetActiveWeapon() then - wdata.active = true - end - - wdata.c1 = weap:Clip1() - wdata.c2 = weap:Clip2() - if weap.SaveData then - wdata.custom = {} - weap:SaveData(wdata.custom) - end - end - - data.loadout[k] = wdata - end - end - - --data.tmpattrib = pl.TempAttributes - - data.pos = pl:GetPos() - self.LandmarkEntity:GetPos() - data.ang = pl:EyeAngles() - - self.Data[id] = data - PrintTable(data) -end - -function ENT:SaveLevelData(caller) - Msg("Changelevel triggered!\n") - - self:Clear() - - self.Map = caller.map - self.Landmark = caller.landmark - - self:GetLandmarkEntity() - - if not self.LandmarkEntity then - Msg("Error, no info_landmark found!\n") - return - end - - Msg("Changing level to "..self.Map.."\n") - for _,v in pairs(player.GetAll()) do - self:SavePlayerData(v) - end - - self:Save() -end - -function ENT:SetCheckpoint(pl) - Msg("Checkpoint reached by player : "..pl:GetName().."\n") - pl.CPPos = pl:GetPos() - pl.CPAng = pl:EyeAngles() -end - -function ENT:AcceptInput(name, activator, caller) - if name=="Trigger" and caller:GetClass()=="trigger_changelevel" then - self:SaveLevelData(caller) - elseif name=="Checkpoint" and caller:GetClass()=="trigger_autosave" then - self:SetCheckpoint(activator) - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/cl_init.lua deleted file mode 100644 index ff36fe162..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/cl_init.lua +++ /dev/null @@ -1,90 +0,0 @@ - -include("shared.lua") - -ENT.RenderGroup = RENDERGROUP_BOTH - -function ENT:Initialize() - self.Model = ClientsideModel("models/props_junk/watermelon01.mdl") - self.Model:SetNoDraw(true) - self.Model:DrawShadow(false) - - self.CurrentYaw = 0 - self.TargetYaw = 0 - self.Rotation = 0 -end - -function ENT:DrawTranslucent() - if not IsValid(self.Player) then - self.Player = self:GetOwner().Owner - end - - if self.LastDrawn then - local dt = CurTime() - self.LastDrawn - self.Model:FrameAdvance(dt) - - if self.CurrentYaw ~= self.TargetYaw then - local old = self.CurrentYaw - self.CurrentYaw = self.CurrentYaw + self.RotationSpeed * dt - if old < self.TargetYaw and self.CurrentYaw >= self.TargetYaw then - self.CurrentYaw = self.TargetYaw - end - self.CurrentYaw = math.NormalizeAngle(self.CurrentYaw) - end - end - self.LastDrawn = CurTime() - - - if IsValid(self.Player) then - local pos, ang = self:CalcPos(self.Player) - if ang then - ang.y = math.NormalizeAngle(ang.y + self.CurrentYaw) - self.Model:SetModel(self:GetModel()) - self.Model:SetSkin(self:GetSkin()) - self.Model:SetRenderOrigin(pos) - self.Model:SetRenderAngles(ang) - self.Model:DrawModel() - end - end -end - -function ENT:Think() - if not IsValid(self.Player) then - self.Player = self:GetOwner().Owner - end - - if self.LastScale ~= self.dt.Scale then - local s = self.dt.Scale - if s > 0 then - self.Model:SetModelScale( 0.8, 0 ) - end - self.LastScale = s - end - - if self.AllowedState ~= self.dt.Allowed then - self.Model:SetModel(self:GetModel()) - self.Model:SetSkin(self:GetSkin()) - self.AllowedState = self.dt.Allowed - if self.AllowedState then - self.Model:ResetSequence(self.Model:SelectWeightedSequence(ACT_OBJ_PLACING)) - if self.Player == LocalPlayer() then - self.Model:SetBodygroup(1, 1) - else - self.Model:SetBodygroup(1, 0) - end - else - self.Model:ResetSequence(self.Model:SelectWeightedSequence(ACT_OBJ_IDLE)) - self.Model:SetBodygroup(1, 0) - end - end - - if self.Rotation ~= self.dt.Rotation then - self.Rotation = self.dt.Rotation - self.TargetYaw = math.NormalizeAngle(90 * self.Rotation) - end -end - -function ENT:OnRemove() - if IsValid(self.Model) then - self.Model:Remove() - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/init.lua b/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/init.lua deleted file mode 100644 index c5dfa8420..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/init.lua +++ /dev/null @@ -1,122 +0,0 @@ - -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -include("shared.lua") - -function ENT:Initialize() - local owner = self:GetOwner() - if not IsValid(owner) then - self:Remove() return - end - - self.Player = self:GetOwner().Owner - if not IsValid(self.Player) then - self:Remove() return - end - - local obj = owner:GetBuilding() - if not obj then - self:Remove() return - end - - --[[ - local entdata = scripted_ents.Get(obj.class_name) - if not entdata then - self:Remove() return - end]] - - local model = obj.blueprint_model - if not model then - self:Remove() return - end - - self:SetModel(model) - if owner:EntityTeam()==TEAM_BLU then - self:SetSkin(1) - else - self:SetSkin(0) - end - - self.CurrentYaw = 0 - self.TargetYaw = 0 - self.Rotation = 0 - - self:Think() - --self:SetParent(owner) - owner:DeleteOnRemove(self) - self:SetNotSolid(true) - self:DrawShadow(false) -end - -function ENT:Build() - local pos, ang, valid = self:CalcPos(self.Player) - ang.y = math.NormalizeAngle(ang.y + self.CurrentYaw) - - self:SetPos(pos) - self:SetAngles(ang) - - if not valid then return end - - local obj = self:GetOwner():GetBuilding() - if not obj then return end - - local ent = ents.Create(obj.class_name) - if not IsValid(ent) then return end - - ent.Player = self.Player - ent:SetNWEntity("Player", self.Player) - ent:SetPos(pos) - ent:SetAngles(ang) - ent:SetTeam(self.Player:EntityTeam()) - ent:Spawn() - ent:SetAngles(ang) - if obj.class_name == "obj_sentrygun" and self.Player.TempAttributes.BuildsMiniSentries then - ent:SetBuildingType(1) - elseif obj.class_name == "obj_sentrygun" and self.Player.TempAttributes.BuildsMegaSentries then - ent:SetBuildingType(2) - end - ent:SetBuildGroup(self:GetOwner():GetBuildGroup()) - ent:SetBuildMode(self:GetOwner():GetBuildMode()) - - ent.objtype = obj.objtype - - return true -end - -function ENT:Think() - -- Updating target angle - if self.Rotation ~= self.dt.Rotation then - self.Rotation = self.dt.Rotation - self.TargetYaw = math.NormalizeAngle(90 * self.Rotation) - end - - -- Rotating the blueprint - if self.LastThink then - local dt = CurTime() - self.LastThink - - if self.CurrentYaw ~= self.TargetYaw then - local old = self.CurrentYaw - self.CurrentYaw = self.CurrentYaw + self.RotationSpeed * dt - if old < self.TargetYaw and self.CurrentYaw >= self.TargetYaw then - self.CurrentYaw = self.TargetYaw - end - self.CurrentYaw = math.NormalizeAngle(self.CurrentYaw) - end - end - self.LastThink = CurTime() - - -- Calculating the position - local pos, ang, valid = self:CalcPos(self.Player) - self:SetPos(pos) - - ang.y = math.NormalizeAngle(ang.y + self.CurrentYaw) - self:SetAngles(ang) - - if valid ~= self.dt.Allowed then - self.dt.Allowed = valid - end - - self:NextThink(CurTime()) - return true -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/shared.lua deleted file mode 100644 index 62d9a8de1..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_obj_blueprint/shared.lua +++ /dev/null @@ -1,113 +0,0 @@ - -ENT.Base = "base_entity" -ENT.Type = "anim" - -ENT.AutomaticFrameAdvance = true -ENT.RotationSpeed = 150 - -ENT.BuildHull = {Vector(-28,-28,0), Vector(28,28,94)} -ENT.BuildDistance = 80 -ENT.BuildYOffset = 30 -ENT.BuildYOffsetDuck = 30 -ENT.BuildYOffsetStand = 30 -ENT.BuildYRange = 120 -ENT.HeightTolerancy = 10 -ENT.ModelScale = 1 - -function ENT:SetupDataTables() - self:DTVar("Bool", 0, "Allowed") - self:DTVar("Int", 0, "Rotation") - self:DTVar("Float", 0, "Scale") - - if SERVER then - self.dt.Allowed = true - end -end - -function ENT:RotateBlueprint() - self.dt.Rotation = (self.dt.Rotation + 1) % 4 -end - -function ENT:CalcPos(pl) - if not self.Building then - self.Building = self:GetOwner():GetBuilding() - if not self.Building then return end - - local tab = scripted_ents.Get(self.Building.class_name) - if tab then - if tab.SetupBlueprint then - tab:SetupBlueprint(self, self:GetOwner():GetBuildMode()) - end - end - - --[[ - if CLIENT then - self.Model:SetModelScale(Vector(self.ModelScale, self.ModelScake, self.ModelScale)) - self.Model:SetupBones() - end]] - end - - --[[ - local entdata = scripted_ents.Get(obj.class_name) - if not entdata then - self:Remove() return - end]] - - local ang = pl:EyeAngles() - ang.p = 0 - local dir = ang:Forward() - - local origin - - if pl:Crouching() then - origin = pl:GetPos() + self.BuildYOffsetDuck * vector_up - else - origin = pl:GetPos() + self.BuildYOffsetStand * vector_up - end - - local pos = origin + self.BuildDistance * dir - local tr = util.TraceHull{ - start = pos + self.BuildYOffset * vector_up, - endpos = pos - self.BuildYRange * vector_up, - mins = self.BuildHull[1], - maxs = self.BuildHull[2], - filter = self, - } - - if tr.Hit and not tr.StartSolid then - pos = tr.HitPos - local p - - p = pos + Vector(self.BuildHull[1].x, self.BuildHull[1].y, 1) - tr = util.TraceLine{ - start = p, endpos = p - self.HeightTolerancy * vector_up, - filter = self, - } - if not tr.Hit then return pos, ang, false end - - p = pos + Vector(self.BuildHull[1].x, self.BuildHull[2].y, 1) - tr = util.TraceLine{ - start = p, endpos = p - self.HeightTolerancy * vector_up, - filter = self, - } - if not tr.Hit then return pos, ang, false end - - p = pos + Vector(self.BuildHull[2].x, self.BuildHull[1].y, 1) - tr = util.TraceLine{ - start = p, endpos = p - self.HeightTolerancy * vector_up, - filter = self, - } - if not tr.Hit then return pos, ang, false end - - p = pos + Vector(self.BuildHull[2].x, self.BuildHull[2].y, 1) - tr = util.TraceLine{ - start = p, endpos = p - self.HeightTolerancy * vector_up, - filter = self, - } - if not tr.Hit then return pos, ang, false end - - return pos, ang, true - end - - return pos, ang, false -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_arrow/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_arrow/shared.lua deleted file mode 100644 index 1f0436f7f..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_arrow/shared.lua +++ /dev/null @@ -1,316 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.IsTFWeapon = true - -local MaxAngCorrection = 45 - -function ENT:InitEffects() - if SERVER then - local mat - if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then - mat = "Effects/arrowtrail_blu.vmt" - else - mat = "Effects/arrowtrail_red.vmt" - end - - self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, - 0.1, 5, 1, 1/(5+1)*0.5, mat) - end -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() -end - -function ENT:Draw() - self:DrawModel() -end - -usermessage.Hook("ArrowHit", function(um) - LocalPlayer():EmitSound("Weapon_Arrow.ImpactFlesh") -end) - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = "models/weapons/w_models/w_arrow.mdl" - -ENT.MinDamage = 51 -ENT.MaxDamage = 120 -ENT.DamageRandomize = 0.125 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - -ENT.RangedMinDamage = 37.5 -ENT.RangedMaxDamage = 75 -ENT.RangedMinHealing = 75 -ENT.RangedMaxHealing = 150 - -ENT.HitboxSize = 0.5 - -ENT.CritDamageMultiplier = 3 - -function ENT:OnInitAttribute(att) - if att.attribute_class == "set_weapon_mode" then - self.NoHeadshots = true - end -end - -function ENT:Critical() - return self.critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - self:DrawShadow(false) - - local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) - local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) - - self:SetModel(self.Model) - - self.Charge = self.Charge or 0 - self.BaseDamage = Lerp(self.Charge, self.MinDamage, self.MaxDamage) - - self:SetMoveType(MOVETYPE_FLYGRAVITY) - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - - self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - - self:SetGravity(Lerp(self.Charge, self.MaxGravity or 1, self.MinGravity or 0.025)) - self:SetLocalVelocity(self:GetForward() * Lerp(self.Charge, self.MinForce or 2400, self.MaxForce or 3500)) - - self.StartPos = self:GetPos() - - self:InitEffects() -end - -function ENT:Think() - self:SetAngles(self:GetVelocity():Angle()) -end - -util.PrecacheSound("Weapon_Arrow.ImpactFlesh") -util.PrecacheSound("Weapon_Arrow.ImpactMetal") -util.PrecacheSound("Weapon_Arrow.ImpactWood") -util.PrecacheSound("Weapon_Arrow.ImpactConcrete") - -local ImpactSounds ={ - [MAT_ALIENFLESH] = "Weapon_Arrow.ImpactFlesh", - [MAT_ANTLION] = "Weapon_Arrow.ImpactFlesh", - [MAT_BLOODYFLESH] = "Weapon_Arrow.ImpactFlesh", - [MAT_CLIP] = "Weapon_Arrow.ImpactMetal", - [MAT_COMPUTER] = "Weapon_Arrow.ImpactMetal", - [MAT_CONCRETE] = "Weapon_Arrow.ImpactConcrete", - [MAT_DIRT] = "Weapon_Arrow.ImpactConcrete", - [MAT_FLESH] = "Weapon_Arrow.ImpactFlesh", - [MAT_FOLIAGE] = "Weapon_Arrow.ImpactWood", - [MAT_GLASS] = "Weapon_Arrow.ImpactMetal", - [MAT_GRATE] = "Weapon_Arrow.ImpactMetal", - [MAT_METAL] = "Weapon_Arrow.ImpactMetal", - [MAT_PLASTIC] = "Weapon_Arrow.ImpactConcrete", - [MAT_SAND] = "Weapon_Arrow.ImpactConcrete", - [MAT_SLOSH] = "Weapon_Arrow.ImpactConcrete", - [MAT_TILE] = "Weapon_Arrow.ImpactConcrete", - [MAT_VENT] = "Weapon_Arrow.ImpactMetal", - [MAT_WOOD] = "Weapon_Arrow.ImpactWood", -} - -local function ArrowBulletCallback(att, tr, dmginfo) - local ent = tr.Entity - local inf = dmginfo:GetInflictor() - - --print("ArrowBulletCallback", ent) - if ent:IsWorld() then - local effectdata = EffectData() - effectdata:SetEntity(NULL) - effectdata:SetOrigin(tr.HitPos) - effectdata:SetAngles(dmginfo:GetInflictor():GetAngles()) - util.Effect("tf_arrow_stuck", effectdata) - - inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") - elseif ent:IsTFPlayer() then - local bone, hitpos = ent:TranslatePhysBoneToBone(tr.PhysicsBone), tr.HitPos + inf:GetForward() * 5 - local pos = ent:GetBonePosition(bone) - - --inf:SetAngles((pos - hitpos):Angle()) - - local effectdata = EffectData() - effectdata:SetEntity(ent) - effectdata:SetAttachment(tr.PhysicsBone) - effectdata:SetOrigin(hitpos) - effectdata:SetAngles(inf:GetAngles()) - util.Effect("tf_arrow_stuck", effectdata) - - inf.HitPos = hitpos - inf.HitAng = inf:GetAngles() - inf.HitBone = tr.PhysicsBone - - if not inf.NoHeadshots and tr.HitGroup == HITGROUP_HEAD then - inf.critical = true - inf.NameOverride = "tf_projectile_arrow_headshot" - end - - if att:IsPlayer() then - SendUserMessage("ArrowHit", att) - end - else - inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") - end -end - -function ENT:Hit(ent) - self.Touch = nil - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - if self.IsHealingBolt then - local fraction = math.Clamp(self:GetPos():Distance(self.StartPos) / 1024, 0, 1) - if ent:IsTFPlayer() and ent:IsFriendly(owner) and not ent:IsBuilding() then - GAMEMODE:HealPlayer(owner, ent, Lerp(fraction, self.RangedMinHealing, self.RangedMaxHealing), true, false) - - if IsValid(self.Trail) then - self.Trail:SetParent() - self.Trail:Fire("kill", "", 1) - end - - self:SetLocalVelocity(Vector(0,0,0)) - self:SetMoveType(MOVETYPE_NONE) - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.5) - - return - else - self.DamageRandomize = 0 - self.MaxDamageRampUp = 0 - self.MaxDamageFalloff = 0 - self.BaseDamage = Lerp(fraction, self.RangedMinDamage, self.RangedMaxDamage) - end - end - - local damage = self:CalculateDamage(owner:GetPos()) - local dir = self:GetForward() - - local tr = util.QuickTrace(self:GetPos(), 20*dir, self) - - local trtest = util.TraceHull{ - start = self:GetPos(), - endpos = self:GetPos() + 20*dir, - filter = self, - mins = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), - maxs = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), - } - - --MsgN("Test trace ("..tostring(self)..") : physbone "..tr.PhysicsBone) - - if tr.HitEntity~=ent then - -- Trace towards the nearest bone - if ent:IsTFPlayer() then - local bone, dist, bpos - for i=1,100 do - local b = ent:TranslatePhysBoneToBone(i) - if b==0 then break end - - local pos = ent:GetBonePosition(b) - if !pos then return end - local d = self:GetPos():Distance(pos) - if not dist or d MaxAngCorrection then new_ang.p = old_ang.p + MaxAngCorrection - elseif diff.p < -MaxAngCorrection then new_ang.p = old_ang.p - MaxAngCorrection - end - if diff.y > MaxAngCorrection then new_ang.y = old_ang.y + MaxAngCorrection - elseif diff.y < -MaxAngCorrection then new_ang.y = old_ang.y - MaxAngCorrection - end - if diff.r > MaxAngCorrection then new_ang.r = old_ang.r + MaxAngCorrection - elseif diff.r < -MaxAngCorrection then new_ang.r = old_ang.r - MaxAngCorrection - end - - self:SetAngles(new_ang) - end - end - - self:FireBullets{ - Src=self:GetPos(), - Attacker=owner, - Dir=dir, - Spread=Vector(0,0,0), - Num=1, - Damage=damage, - Tracer=0, - Force=Lerp(self.Charge, 1, 50), - Callback=ArrowBulletCallback, - } - - if IsValid(self.Trail) then - self.Trail:SetParent() - self.Trail:Fire("kill", "", 1) - end - - self:SetLocalVelocity(Vector(0,0,0)) - self:SetMoveType(MOVETYPE_NONE) - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.5) -end - -function ENT:ShouldCollide(ent) - if self.IsHealingBolt and IsValid(self:GetOwner()) and ent:IsTFPlayer() and ent:IsFriendly(self:GetOwner()) and not ent:IsBuilding() then - return true - end -end - -function ENT:Touch(ent) - if not ent:IsTrigger() then - self:Hit(ent) - end -end - --- Used for serverside ragdoll pinning (singleplayer only) -hook.Add("PostScaleDamage", "TFArrowPinRegister", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - - if inf:GetClass()=="tf_projectile_arrow" and inf.HitPos then - ent.LastArrowHitPos = inf.HitPos - ent.LastArrowHitAng = inf.HitAng - ent.LastArrowHitBone = inf.HitBone - else - ent.LastArrowHitPos = nil - ent.LastArrowHitAng = nil - ent.LastArrowHitBone = nil - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_capsule/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_capsule/shared.lua deleted file mode 100644 index 3f986c8de..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_capsule/shared.lua +++ /dev/null @@ -1,252 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -if CLIENT then - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = "models/weapons/w_models/w_capsule_capsulelauncher.mdl" -ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") -ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") - -ENT.BaseDamage = 90 -ENT.DamageRandomize = 0.3 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - ---ENT.BaseSpeed = 1100 -ENT.ExplosionRadiusInit = 180 - -ENT.CritDamageMultiplier = 3 - -ENT.Mass = 10 - -local BlastForceMultiplier = 16 -local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) - -function ENT:Critical() - return self.critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:GetRocketJumpForce(owner, dmginfo) - local ang = dmginfo:GetDamageForce():Angle() - local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier - ang.p = math.Clamp(ang.p, -70, -89) - - return ang:Forward() * force -end - -function ENT:Reflect(pl, weapon, dir) - -end - -function ENT:Initialize() - if self.GrenadeMode==-1 then - self:SetModel(self.Model) - self:SetNoDraw(true) - self:DrawShadow(false) - self:SetNotSolid(true) - self:DoExplosion() - return - elseif self.GrenadeMode==1 then - self.BouncesLeft = 2 - self:SetModel(self.Model2) - self:PhysicsInitSphere(8, "metal_bouncy") - else - self.BouncesLeft = 1 - self:SetModel(self.Model) - self:PhysicsInit(SOLID_VPHYSICS) - end - - self:SetMoveType(MOVETYPE_VPHYSICS) - self:SetSolid(SOLID_CUSTOM) - self:SetHealth(1) - - if self.GrenadeMode==1 then - self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) - else - self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) - end - - if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then - if self.GrenadeMode==1 then - self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") - else - self:SetSkin(1) - end - end - - local phys = self.Entity:GetPhysicsObject() - if phys:IsValid() then - phys:Wake() - if self.GrenadeMode==1 then - self.Bounciness = 1 - phys:SetMass(self.Mass * 2) - else - phys:SetMass(self.Mass) - end - --phys:EnableDrag(false) - end - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - self.NextExplode = CurTime() + 2.3 - - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - - self.particle_timer = ents.Create("info_particle_system") - self.particle_timer:SetPos(self:GetPos()) - self.particle_timer:SetParent(self) - self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) - self.particle_timer:SetKeyValue("start_active", "1") - self.particle_timer:Spawn() - self.particle_timer:Activate() - - self.particle_trail = ents.Create("info_particle_system") - self.particle_trail:SetPos(self:GetPos()) - self.particle_trail:SetParent(self) - self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) - self.particle_trail:SetKeyValue("start_active", "1") - self.particle_trail:Spawn() - self.particle_trail:Activate() - - if self.critical then - self.particle_crit = ents.Create("info_particle_system") - self.particle_crit:SetPos(self:GetPos()) - self.particle_crit:SetParent(self) - self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) - self.particle_crit:SetKeyValue("start_active", "1") - self.particle_crit:Spawn() - self.particle_crit:Activate() - end -end - -function ENT:OnRemove() - if self.ai_sound then self.ai_sound:Remove() end - if self.particle_timer and self.particle_timer:IsValid() then self.particle_timer:Remove() end - if self.particle_trail and self.particle_trail:IsValid() then self.particle_trail:Remove() end - if self.particle_crit and self.particle_crit:IsValid() then self.particle_crit:Remove() end -end - -function ENT:Think() - if self.NextExplode and CurTime()>=self.NextExplode then - self:DoExplosion() - self.NextExplode = nil - end -end - -function ENT:DoExplosion() - self.PhysicsCollide = nil - - self:EmitSound(self.ExplosionSound, 100, 100) - - local flags = 0 - - if self:WaterLevel()>0 then - flags = bit.bor(flags, 1) - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(self:GetAngles()) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local range, damage - - if self.GrenadeMode==-1 then - range = self.ExplosionRadiusInit - elseif self.BouncesLeft<=0 then - range = self.ExplosionRadiusInit - self.BaseDamage = 41 - self.OwnerDamage = 1 - else - range = self.ExplosionRadiusInit * 0.5 - self.BaseDamage = 98 - self.OwnerDamage = 0.6 - end - - --self.ResultDamage = self.BaseDamage - - --util.BlastDamage(self, owner, self:GetPos(), range, self.BaseDamage) - util.BlastDamage(self, owner, self:GetPos(), range, 100) - - self:SetNoDraw(true) - self:SetNotSolid(true) - self:Fire("kill", "", 0.01) -end - -function ENT:Break() - if self.Dead then return end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - util.Effect("tf_stickybomb_destroyed", effectdata) - - self.Dead = true - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.01) -end - -function ENT:PhysicsCollide(data, physobj) - if data.HitEntity and data.HitEntity:IsValid() and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then - if self.BouncesLeft>0 then - return nil - end - else - if self.DetonateMode == 2 then - self:Break() - return - end - - if data.Speed > 50 and data.DeltaTime > 0.2 then - self:EmitSound(self.BounceSound, 100, 100) - end - - self.BouncesLeft = self.BouncesLeft - 1 - - if self.Bounciness then - local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) - local NewVelocity = physobj:GetVelocity() - NewVelocity:Normalize() - - LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) - - local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness - - physobj:SetVelocity( TargetVelocity ) - end - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_flare/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_flare/shared.lua deleted file mode 100644 index d5485eb74..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_flare/shared.lua +++ /dev/null @@ -1,149 +0,0 @@ --- Flare - -ENT.Type = "anim" -ENT.Base = "base_anim" - -PrecacheParticleSystem("flaregun_trail_red") -PrecacheParticleSystem("flaregun_trail_blue") -PrecacheParticleSystem("flaregun_crit_red") -PrecacheParticleSystem("flaregun_crit_blue") -PrecacheParticleSystem("flaregun_destroyed") - -ENT.IsTFWeapon = true - -function ENT:InitEffects() - local effect = "flaregun" - - if self.critical then - effect = effect.."_crit_" - else - effect = effect.."_trail_" - end - - effect = effect..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - - ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() -end - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = "models/weapons/w_models/w_flaregun_shell.mdl" - -ENT.BaseDamage = 30 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - -ENT.HitboxSize = 0.5 - -ENT.CritDamageMultiplier = 3 - -ENT.HitSound = Sound("Default.FlareImpact") - -function ENT:Critical() - return self.critical -end - -function ENT:MiniCrit() - return self.minicrit -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) - local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) - - self:SetModel(self.ModelOverride or self.Model) - - self:SetMoveType(MOVETYPE_FLYGRAVITY) - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - - self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - - self:SetLocalVelocity(self:GetForward() * (self.Force or 1650)) - self:SetGravity(0.5) - - if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then - self:SetSkin(1) - end - - self:InitEffects() -end - -function ENT:Think() - self:SetAngles(self:GetVelocity():Angle()) -end - -function ENT:Hit(ent) - self.Touch = nil - - self:EmitSound(self.HitSound) - - local explosion = ents.Create("info_particle_system") - explosion:SetKeyValue("effect_name", "flaregun_destroyed") - explosion:SetKeyValue("start_active", "1") - explosion:SetPos(self:GetPos()) - explosion:SetAngles(self:GetAngles()) - explosion:Spawn() - explosion:Activate() - explosion:Fire("Kill", "", 0.5) - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local damage = self:CalculateDamage(owner:GetPos()) - local dir = self:GetVelocity():GetNormal() - - if ent:IsTFPlayer() and ent:HasPlayerState(PLAYERSTATE_ONFIRE) then - self.minicrit = true - end - - self:FireBullets{ - Src=self:GetPos(), - Attacker=owner, - Dir=dir, - Spread=Vector(0,0,0), - Num=1, - Damage=damage, - Tracer=0, - HullSize=self.HitboxSize*2, - } - - if ent:IsFlammable() then - GAMEMODE:IgniteEntity(ent, self, owner, 10) - end - - self:SetLocalVelocity(Vector(0,0,0)) - self:SetMoveType(MOVETYPE_NONE) - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.1) -end - -function ENT:Touch(ent) - if not ent:IsTrigger() then - self:Hit(ent) - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_jar/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_jar/shared.lua deleted file mode 100644 index d6a711a16..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_jar/shared.lua +++ /dev/null @@ -1,223 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -PrecacheParticleSystem("peejar_trail_red") -PrecacheParticleSystem("peejar_trail_blu") -PrecacheParticleSystem("critical_grenade_red") -PrecacheParticleSystem("critical_grenade_blue") -PrecacheParticleSystem("peejar_impact") -PrecacheParticleSystem("peejar_impact_milk") -PrecacheParticleSystem("peejar_impact_small") - -if CLIENT then - -ENT.RenderGroup = RENDERGROUP_BOTH - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = "models/weapons/c_models/urinejar.mdl" -ENT.Model2 = "models/weapons/c_models/c_madmilk/c_madmilk.mdl" - -ENT.Explosive = true -ENT.NoSelfDamage = true ---ENT.NoMiniCrits = true -ENT.ZeroDamageCrits = true -ENT.ExplosionSound = Sound("Jar.Explode") -ENT.OwnerDamage = 0 - -ENT.Trail = {"peejar_trail_red", "peejar_trail_blu"} - -ENT.Mass = 10 - -local bugbait_radius = GetConVar("bugbait_radius") -local bugbait_hear_radius = GetConVar("bugbait_hear_radius") -local bugbait_distract_time = GetConVar("bugbait_distract_time") -local bugbait_grenade_radius = GetConVar("bugbait_grenade_radius") - -function ENT:DoSpecialDamage(ent, dmginfo) - local att = dmginfo:GetAttacker() - - dmginfo:SetDamage(0) - dmginfo:SetDamageType(DMG_GENERIC) - - if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then - if self.JarType == 2 then - ent:AddPlayerState(PLAYERSTATE_MILK, true) - ent.NextEndMilk = CurTime() + 10 - else - ent:AddPlayerState(PLAYERSTATE_JARATED, true) - ent.NextEndJarate = CurTime() + 10 - end - - if ent:IsPlayer() then - -- Jarate? NOOOOOOOOOOOOOOOOOOOOOO!!!! - ent:Speak("TLK_JARATE_HIT") - elseif ent:GetClass()=="npc_combine_s" then - ent:Fire("HitByBugbait", "", math.Rand(0, 0.5)) - end - - -- Since this doesn't actually cause damage, we are adding a cooperation here - -- TODO: code high priority cooperations that remain as long as the effect doesn't wear off - GAMEMODE:AddDamageCooperation(ent, att, 1, ASSIST_JARATE, 10) - elseif ent:GetClass()=="tf_entityflame" and (ent.Target==att or att:IsFriendly(ent.Target)) then - -- Extinguish teammates - GAMEMODE:ExtinguishEntity(ent.Target) - ent:EmitSound("TFPlayer.FlameOut") - end -end - -function ENT:Critical(ent, dmginfo) - return ent~=self:GetOwner() and self.critical -end - -function ENT:Initialize() - if self.JarType == 2 then - self:SetModel(self.Model2) - self:SetSkin(2) - else - self:SetModel(self.Model) - end - - self:PhysicsInit(SOLID_VPHYSICS) - self:SetMoveType(MOVETYPE_VPHYSICS) - self:SetSolid(SOLID_CUSTOM) - self:SetHealth(1) - self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) - - local phys = self:GetPhysicsObject() - if phys:IsValid() then - phys:Wake() - phys:SetMass(self.Mass) - phys:EnableDrag(false) - end - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - local trail = self.Trail[self:GetOwner():EntityTeam()] or self.Trail[1] - - self.particle_trail = ents.Create("info_particle_system") - self.particle_trail:SetPos(self:GetPos()) - self.particle_trail:SetParent(self) - self.particle_trail:SetKeyValue("effect_name",trail) - self.particle_trail:SetKeyValue("start_active", "1") - self.particle_trail:Spawn() - self.particle_trail:Activate() - - if self.critical then - self.particle_crit = ents.Create("info_particle_system") - self.particle_crit:SetPos(self:GetPos()) - self.particle_crit:SetParent(self) - self.particle_crit:SetKeyValue("effect_name","critical_grenade_" .. effect) - self.particle_crit:SetKeyValue("start_active", "1") - self.particle_crit:Spawn() - self.particle_crit:Activate() - end -end - -function ENT:OnRemove() - self.ai_sound:Remove() - if self.particle_trail and self.particle_trail:IsValid() then self.particle_trail:Remove() end - if self.particle_crit and self.particle_crit:IsValid() then self.particle_crit:Remove() end -end - -function ENT:BugbaitTouch(owner) - self:ActivateBugbaitTargets(owner) - -- Alert any antlions around - local bugbait_sound = ents.Create("ai_sound") - bugbait_sound:SetPos(self:GetPos()) - bugbait_sound:SetKeyValue("volume", bugbait_hear_radius:GetInt()) - bugbait_sound:SetKeyValue("duration", bugbait_distract_time:GetFloat()) - bugbait_sound:SetKeyValue("soundtype", "512") - bugbait_sound:Spawn() - bugbait_sound:Activate() - bugbait_sound:Fire("EmitAISound", "", 0) - bugbait_sound:Fire("Kill", "", 5) - - --[[ Tell all spawners to now fight to this position - g_AntlionMakerManager.BroadcastFightGoal( GetAbsOrigin() );]] -end - --- Direct port from CGrenadeBugBait::ActivateBugbaitTargets -function ENT:ActivateBugbaitTargets(owner) - --[[ - -- Iterate over all sensors to see if they detected this impact - for _,v in pairs(ents.FindByClass("point_bugbait")) do - -- Make sure we're within range of the sensor - local r = v:GetKeyValues().radius - if r and r > v:GetPos():Distance(self:GetPos()) then - -- Tell the sensor it's been hit - end - end]] - - -- oh fuck this shit -end - -function ENT:DoExplosion() - self.PhysicsCollide = nil - - self:EmitSound(self.ExplosionSound, 100, 100) - - --[[local effect = "peejar_impact" - - local explosion = ents.Create("info_particle_system") - explosion:SetKeyValue("effect_name", effect) - explosion:SetKeyValue("start_active", "1") - explosion:SetPos(self:GetPos()) - explosion:SetAngles(self:GetAngles()) - explosion:Spawn() - explosion:Activate() - explosion:Fire("Kill", "", 0.1)]] - - local flags - if self.JarType == 2 then - flags = 16 - else - flags = 4 - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(self:GetAngles()) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local range, damage - range = 140 - self.BaseDamage = 1 - self.OwnerDamage = 0 - self.ResultDamage = self.BaseDamage - - self.CalculatedDamage = 0 - -- Yes, I'm using blast damage because it has a complex algorithm that allows explosive damage to get around walls with a certain limit - -- A simple FindInSphere wouldn't be enough since players would be able to get jarated through a wall - util.BlastDamage(self, owner, self:GetPos(), range, self.BaseDamage) - self:BugbaitTouch(owner) - self:Fire("kill", "", 0.01) -end - -function ENT:PhysicsCollide(data, physobj) - self:DoExplosion() -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_nail/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_nail/shared.lua deleted file mode 100644 index 1d22f1272..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_nail/shared.lua +++ /dev/null @@ -1,184 +0,0 @@ --- Nail - -ENT.Type = "anim" -ENT.Base = "base_anim" - - PrecacheParticleSystem("nailtrails_medic_red") - PrecacheParticleSystem("nailtrails_medic_blue") - PrecacheParticleSystem("nailtrails_medic_red_crit") - PrecacheParticleSystem("nailtrails_medic_blue_crit") - -PrecacheParticleSystem("stunballtrail_red_crit") -PrecacheParticleSystem("stunballtrail_blue_crit") - -ENT.IsTFWeapon = true - -function ENT:SetupDataTables() - self:DTVar("Int", 0, "ProjectileType") - self:DTVar("Bool", 0, "Critical") -end - -function ENT:SetProjectileType(t) - self.dt.ProjectileType = t -end - -function ENT:ProjectileType() - return self.dt.ProjectileType -end - -function ENT:InitEffects() - if self:ProjectileType()==3 then - if SERVER then - local mat - if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then - mat = "Effects/arrowtrail_blu.vmt" - else - mat = "Effects/arrowtrail_red.vmt" - end - - --self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, - -- 0.1, 5, 0.1, 1/(5+1)*0.5, mat) - end - - if self.dt.Critical then - local effect = "stunballtrail_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())).."_crit" - --ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) - end - return - end - - local effectname = "nailtrails_medic_blue_crit" - - local effect = "nailtrails_medic_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - if self.dt.Critical then - effect = effect.."_crit" - end - - ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() -end - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Models = { - Model("models/weapons/w_models/w_nail.mdl"), -} - -ENT.BaseDamage = 15 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0.2 -ENT.MaxDamageFalloff = 0.5 -ENT.DamageModifier = 1 - -ENT.HitboxSize = 0.5 - -ENT.CritDamageMultiplier = 3 - -ENT.BaseSpeed = 1750 - - - -function ENT:Critical() - return self.dt.Critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - self.dt.Critical = self.critical - - local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) - local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) - - self:SetModel(self.Models[self:ProjectileType()] or self.Models[1]) - - - self:SetMoveType(MOVETYPE_FLYGRAVITY) - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - self:SetTrigger(true) - - --self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - self:SetNotSolid(true) - - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) - - self:InitEffects() - - if self:ProjectileType()==3 then - local ang = self:GetAngles() - ang:RotateAroundAxis(ang:Right(), -90) - self:SetAngles(ang) - end -end - -function ENT:Think() - if self:ProjectileType()==3 then - local ang = self:GetVelocity():Angle() - ang:RotateAroundAxis(ang:Right(), -90) - self:SetAngles(ang) - else - self:SetAngles(self:GetVelocity():Angle()) - end -end - -function ENT:Hit(ent) - self.Touch = nil - - if ent:IsWorld() then - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(self:GetAngles()) - effectdata:SetMagnitude(self:GetSkin()) - effectdata:SetAttachment(self:ProjectileType()-1) - util.Effect("tf_nail_stuck", effectdata) - end - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local damage = self:CalculateDamage(owner:GetPos()) - local dir = self:GetVelocity():GetNormal() - - self:FireBullets{ - Src=self:GetPos(), - Attacker=owner, - Dir=dir, - Spread=Vector(0,0,0), - Num=1, - Damage=damage, - Tracer=0, - HullSize=self.HitboxSize, - } - - if IsValid(self.Trail) then - self.Trail:SetParent() - self.Trail:Fire("kill", "", 1) - end - - self:Fire("kill", "", 0.01) -end - -function ENT:Touch(ent) - if not ent:IsTrigger() and GAMEMODE:ShouldCollide(self, ent) then - self:Hit(ent) - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_passtime_ball/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_passtime_ball/shared.lua deleted file mode 100644 index eb96210e4..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_passtime_ball/shared.lua +++ /dev/null @@ -1,185 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -if CLIENT then - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = "models/passtime/ball/passtime_ball.mdl" - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") -ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") - -ENT.BaseDamage = 90 -ENT.DamageRandomize = 0.3 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - ---ENT.BaseSpeed = 1100 -ENT.ExplosionRadiusInit = 180 - -ENT.CritDamageMultiplier = 3 - -ENT.Mass = 10 - -local BlastForceMultiplier = 16 -local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) - -function ENT:Critical() - return self.critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:GetRocketJumpForce(owner, dmginfo) - local ang = dmginfo:GetDamageForce():Angle() - local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier - ang.p = math.Clamp(ang.p, -70, -89) - - return ang:Forward() * force -end - -function ENT:Reflect(pl, weapon, dir) - -end - -function ENT:GetRealPos() - if self.ExplosiveHat then - return self:GetPos() + 81*self:GetUp() - else - return self:GetPos() - end -end - -function ENT:Touch(ent) - if ent:IsPlayer() then - self:Remove() - end -end - -function ENT:Initialize() - self:PhysicsInit(SOLID_VPHYSICS) - self:SetMoveType(MOVETYPE_VPHYSICS) - self:SetSolid(SOLID_VPHYSICS) - - self:GetPhysicsObject():Wake() - - if self.GrenadeMode==1 then - self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) - else - self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) - end - - if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then - if self.GrenadeMode==1 then - self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") - else - self:SetSkin(1) - end - end - - local phys = self.Entity:GetPhysicsObject() - if phys:IsValid() then - phys:Wake() - if self.GrenadeMode==1 then - self.Bounciness = 1 - phys:SetMass(self.Mass * 2) - else - phys:SetMass(self.Mass) - end - --phys:EnableDrag(false) - end - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetRealPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - self.NextExplode = CurTime() + 2.3 - - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - - self.particle_timer = ents.Create("info_particle_system") - self.particle_timer:SetPos(self:GetRealPos()) - self.particle_timer:SetParent(self) - self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) - self.particle_timer:SetKeyValue("start_active", "1") - self.particle_timer:Spawn() - self.particle_timer:Activate() - - self.particle_trail = ents.Create("info_particle_system") - self.particle_trail:SetPos(self:GetRealPos()) - self.particle_trail:SetParent(self) - self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) - self.particle_trail:SetKeyValue("start_active", "1") - self.particle_trail:Spawn() - self.particle_trail:Activate() - - if self.critical then - self.particle_crit = ents.Create("info_particle_system") - self.particle_crit:SetPos(self:GetRealPos()) - self.particle_crit:SetParent(self) - self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) - self.particle_crit:SetKeyValue("start_active", "1") - self.particle_crit:Spawn() - self.particle_crit:Activate() - end -end - -function ENT:OnRemove() - if self.ai_sound then self.ai_sound:Remove() end - if self.particle_timer and self.particle_timer:IsValid() then self.particle_timer:Remove() end - if self.particle_trail and self.particle_trail:IsValid() then self.particle_trail:Remove() end - if self.particle_crit and self.particle_crit:IsValid() then self.particle_crit:Remove() end -end - -function ENT:PhysicsCollide(data, physobj) - if data.HitEntity and data.HitEntity:IsValid() and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then - if self.BouncesLeft>0 then - self:DoExplosion() - end - else - if self.DetonateMode == 2 then - self:Break() - return - end - - if data.Speed > 50 and data.DeltaTime > 0.2 then - self:EmitSound(self.BounceSound, 100, 100) - end - - - if self.Bounciness then - local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) - local NewVelocity = physobj:GetVelocity() - NewVelocity:Normalize() - - LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) - - local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness - - physobj:SetVelocity( TargetVelocity ) - end - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_pipe/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_pipe/shared.lua deleted file mode 100644 index 51fa58e68..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_pipe/shared.lua +++ /dev/null @@ -1,275 +0,0 @@ - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -if CLIENT then - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = "models/weapons/w_models/w_grenade_grenadelauncher.mdl" -ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") -ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") - -ENT.BaseDamage = 90 -ENT.DamageRandomize = 0.3 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - ---ENT.BaseSpeed = 1100 -ENT.ExplosionRadiusInit = 180 - -ENT.CritDamageMultiplier = 3 - -ENT.Mass = 10 - -local BlastForceMultiplier = 16 -local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) - -function ENT:Critical() - return self.critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:GetRocketJumpForce(owner, dmginfo) - local ang = dmginfo:GetDamageForce():Angle() - local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier - ang.p = math.Clamp(ang.p, -70, -89) - - return ang:Forward() * force -end - -function ENT:Reflect(pl, weapon, dir) - -end - -function ENT:GetRealPos() - if self.ExplosiveHat then - return self:GetPos() + 81*self:GetUp() - else - return self:GetPos() - end -end - -function ENT:Initialize() - if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then - self.ExplosiveHat = true - self.BouncesLeft = 1 - self:SetModel("models/player/items/soldier/soldier_shako.mdl") - self:PhysicsInit(SOLID_VPHYSICS) - self.BounceSound = "Flesh.ImpactSoft" - self:SetPos(self:GetPos() - 81 * self:GetUp()) - elseif self.GrenadeMode==-1 then - self:SetModel(self.Model) - self:SetNoDraw(true) - self:DrawShadow(false) - self:SetNotSolid(true) - self:DoExplosion() - return - elseif self.GrenadeMode==1 then - self.BouncesLeft = 2 - self:SetModel(self.Model2) - self:PhysicsInitSphere(8, "metal_bouncy") - else - self.BouncesLeft = 1 - self:SetModel(self.Model) - self:PhysicsInit(SOLID_VPHYSICS) - end - - self:SetMoveType(MOVETYPE_VPHYSICS) - self:SetSolid(SOLID_CUSTOM) - self:SetHealth(1) - - if self.GrenadeMode==1 then - self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) - else - self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) - end - - if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then - if self.GrenadeMode==1 then - self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") - else - self:SetSkin(1) - end - end - - local phys = self.Entity:GetPhysicsObject() - if phys:IsValid() then - phys:Wake() - if self.GrenadeMode==1 then - self.Bounciness = 1 - phys:SetMass(self.Mass * 2) - else - phys:SetMass(self.Mass) - end - --phys:EnableDrag(false) - end - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetRealPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - self.NextExplode = CurTime() + 2.3 - - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - - self.particle_timer = ents.Create("info_particle_system") - self.particle_timer:SetPos(self:GetRealPos()) - self.particle_timer:SetParent(self) - self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) - self.particle_timer:SetKeyValue("start_active", "1") - self.particle_timer:Spawn() - self.particle_timer:Activate() - - self.particle_trail = ents.Create("info_particle_system") - self.particle_trail:SetPos(self:GetRealPos()) - self.particle_trail:SetParent(self) - self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) - self.particle_trail:SetKeyValue("start_active", "1") - self.particle_trail:Spawn() - self.particle_trail:Activate() - - if self.critical then - self.particle_crit = ents.Create("info_particle_system") - self.particle_crit:SetPos(self:GetRealPos()) - self.particle_crit:SetParent(self) - self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) - self.particle_crit:SetKeyValue("start_active", "1") - self.particle_crit:Spawn() - self.particle_crit:Activate() - end -end - -function ENT:OnRemove() - if self.ai_sound then self.ai_sound:Remove() end - if self.particle_timer and self.particle_timer:IsValid() then self.particle_timer:Remove() end - if self.particle_trail and self.particle_trail:IsValid() then self.particle_trail:Remove() end - if self.particle_crit and self.particle_crit:IsValid() then self.particle_crit:Remove() end -end - -function ENT:Think() - if self.NextExplode and CurTime()>=self.NextExplode then - self:DoExplosion() - self.NextExplode = nil - end -end - -function ENT:DoExplosion() - self.PhysicsCollide = nil - - self:EmitSound(self.ExplosionSound, 100, 100) - - local flags = 0 - - if self:WaterLevel()>0 then - flags = bit.bor(flags, 1) - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetRealPos()) - effectdata:SetAngles(self:GetAngles()) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local range, damage - - if self.GrenadeMode==-1 then - range = self.ExplosionRadiusInit - elseif self.BouncesLeft<=0 then - range = self.ExplosionRadiusInit - - self.BaseDamage = 64 - self.DamageRandomize = 0 - self.OwnerDamage = 1 - else - range = self.ExplosionRadiusInit * 0.7 - - self.BaseDamage = 100 - self.DamageRandomize = 0.05 - self.OwnerDamage = 0.6 - end - - --self.ResultDamage = self.BaseDamage - - --util.BlastDamage(self, owner, self:GetPos(), range, self.BaseDamage) - util.BlastDamage(self, owner, self:GetRealPos(), range, 100) - - self:SetNoDraw(true) - self:SetNotSolid(true) - self:Fire("kill", "", 0.01) -end - -function ENT:Break() - if self.Dead then return end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetRealPos()) - effectdata:SetNormal(Vector(0,0,1)) - effectdata:SetMagnitude(2) - effectdata:SetScale(1) - effectdata:SetRadius(5) - util.Effect("Sparks", effectdata) - - self.Dead = true - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.01) -end - -function ENT:PhysicsCollide(data, physobj) - if data.HitEntity and data.HitEntity:IsValid() and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then - if self.BouncesLeft>0 then - self:DoExplosion() - end - else - if self.DetonateMode == 2 then - self:Break() - return - end - - if data.Speed > 50 and data.DeltaTime > 0.2 then - self:EmitSound(self.BounceSound, 100, 100) - end - - self.BouncesLeft = self.BouncesLeft - 1 - - if self.Bounciness then - local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) - local NewVelocity = physobj:GetVelocity() - NewVelocity:Normalize() - - LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) - - local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness - - physobj:SetVelocity( TargetVelocity ) - end - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_pipe_remote/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_pipe_remote/shared.lua deleted file mode 100644 index 758f413c7..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_pipe_remote/shared.lua +++ /dev/null @@ -1,354 +0,0 @@ --- Sticky bomb - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -function ENT:SetupDataTables() - self:DTVar("Int", 0, "DetonateMode") -end - -if CLIENT then - -local mat = Material("models/debug/debugwhite") - -function ENT:Draw() - local highlight = false - - if self.dt.DetonateMode == 1 and self:GetOwner() == LocalPlayer() then - for _,v in pairs(LocalPlayer():GetWeapons()) do - if v.IsBombInSensorCone then - w = v - break - end - end - - if IsValid(w) then - if w:IsBombInSensorCone(self) then - highlight = true - end - end - end - - if highlight then - render.MaterialOverride(matShiny) - if LocalPlayer():EntityTeam()==TEAM_BLU then - render.SetColorModulation(0,0,1) - else - render.SetColorModulation(1,0,0) - end - render.SetBlend(1) - render.SuppressEngineLighting(true) - end - - self:DrawModel() - - if highlight then - render.SuppressEngineLighting(false) - render.SetColorModulation(1,1,1) - render.MaterialOverride(matShiny) - end -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -local GibModels = { -Model("models/weapons/w_models/w_stickybomb_gib1.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib2.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib3.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib4.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib5.mdl"), -Model("models/weapons/w_models/w_stickybomb_gib6.mdl"), -} - -ENT.Model = "models/weapons/w_models/w_stickybomb.mdl" -ENT.Model2 = "models/weapons/w_models/w_stickybomb_d.mdl" -ENT.Model3 = "models/weapons/w_models/w_stickybomb2.mdl" -ENT.Model4 = "models/weapons/w_models/w_stickybomb3.mdl" - - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") ---ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") - -ENT.BaseDamage = 120 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0.15 -ENT.MaxDamageFalloff = 0.5 -ENT.DamageModifier = 1 - -ENT.CritDamageMultiplier = 3 - -ENT.StickyDamping=15 -ENT.Mass=30 - -function ENT:Critical() - return self.critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - if self.DetonateMode==1 then - self:SetModel(self.Model2) - self.NameOverride = "tf_projectile_pipe_defender" - elseif self.DetonateMode==2 then - self:SetModel(self.Model3) - self.NameOverride = "tf_projectile_pipe_round" - else - self:SetModel(self.Model) - end - - self:PhysicsInit(SOLID_VPHYSICS) - self:SetMoveType(MOVETYPE_VPHYSICS) - self:SetSolid(SOLID_CUSTOM) - self:SetHealth(1) - self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) - - if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then - if self.DetonateMode==2 then - -- oh come on - self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") - else - self:SetSkin(1) - end - end - - local phys = self.Entity:GetPhysicsObject() - if phys:IsValid() then - phys:Wake() - phys:SetMass(self.Mass) - end - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.5) - - self.NextReady = CurTime() + 0.92 + (self.AdditionalArmTime or 0) - self.NextNoFalloff = CurTime() + 5 - - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - - self.particle_trail = ents.Create("info_particle_system") - self.particle_trail:SetPos(self:GetPos()) - self.particle_trail:SetParent(self) - self.particle_trail:SetKeyValue("effect_name","stickybombtrail_" .. effect) - self.particle_trail:SetKeyValue("start_active", "1") - self.particle_trail:Spawn() - self.particle_trail:Activate() - - if self.critical then - self.particle_crit = ents.Create("info_particle_system") - self.particle_crit:SetPos(self:GetPos()) - self.particle_crit:SetParent(self) - self.particle_crit:SetKeyValue("effect_name","critical_grenade_" .. effect) - self.particle_crit:SetKeyValue("start_active", "1") - self.particle_crit:Spawn() - self.particle_crit:Activate() - end - - self.FirstLaunch = true -end - -function ENT:OnRemove() - self.ai_sound:Remove() - if self.particle_timer and self.particle_timer:IsValid() then self.particle_timer:Remove() end - if self.particle_trail and self.particle_trail:IsValid() then self.particle_trail:Remove() end - if self.particle_crit and self.particle_crit:IsValid() then self.particle_crit:Remove() end -end - -function ENT:Think() - if self.NextReady and CurTime()>=self.NextReady then - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - self.particle_timer = ents.Create("info_particle_system") - self.particle_timer:SetPos(self:GetPos()) - self.particle_timer:SetParent(self) - self.particle_timer:SetKeyValue("effect_name","stickybomb_pulse_" .. effect) - self.particle_timer:SetKeyValue("start_active", "1") - self.particle_timer:Spawn() - self.particle_timer:Activate() - - self.Ready = true - self.NextReady = nil - - self.dt.DetonateMode = self.DetonateMode or 0 - end - - if self.NextNoFalloff and CurTime()>=self.NextNoFalloff then - self.MaxDamageRampUp = 0 - self.MaxDamageFalloff = 0 - self.NextNoFalloff = nil - end - - if IsValid(self.AttachedEntity) then - if self.AttachedPhysObj and self.AttachedPhysObj:IsValid() then - if self.AttachedPhysObj:IsMoveable() then - self:Detach() - end - end - end -end - -function ENT:DoExplosion() - if self.Dead then return end - --self:EmitSound(self.ExplosionSound, 100, 100) - - --local flags = 0 - local flags = 8 - - if self:WaterLevel()>0 then - flags = bit.bor(flags, 1) - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(self:GetAngles()) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local range = 180 - --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) - - self.OwnerDamage = 0.9 - --self.ResultDamage = damage - - --util.BlastDamage(self, owner, self:GetPos(), range, damage) - util.BlastDamage(self, owner, self:GetPos(), range, 100) - - self.Dead = true - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.01) -end - -function ENT:Break() - if self.Dead then return end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - util.Effect("tf_stickybomb_destroyed", effectdata) - - --[[ - for _,v in ipairs(GibModels) do - local drop = ents.Create("item_droppedweapon") - drop:SetSolid(SOLID_VPHYSICS) - drop:SetModel(v) - drop:PhysicsInit(SOLID_VPHYSICS) - drop:SetPos(self:GetPos()) - drop:SetAngles(self:GetAngles()) - drop:Spawn() - drop.AmmoPercent = 0.5 - drop:Activate() - - drop:SetMoveType(MOVETYPE_VPHYSICS) - drop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) - - local phys = drop:GetPhysicsObject() - if phys:IsValid() then - phys:AddAngleVelocity(Vector(math.Rand(-200,200),math.Rand(-200,200),math.Rand(-200,200))) - phys:AddVelocity(Vector(math.random(-100,100),math.random(-100,100),math.random(100,300))) - phys:Wake() - end - end]] - - if IsValid(self:GetOwner()) and self:GetOwner().Bombs then - for k,v in ipairs(self:GetOwner().Bombs) do - if v==self then - table.remove(self:GetOwner().Bombs, k) - break - end - end - self:GetOwner():SetNWInt("NumBombs", #(self:GetOwner().Bombs)) - end - - self.Dead = true - self:SetNotSolid(true) - self:SetNoDraw(true) - self:Fire("kill", "", 0.01) -end - -function ENT:Detach() - self.Detached = true - self.AttachedEntity = nil - self:GetPhysicsObject():SetDamping(0,self.StickyDamping) - self:GetPhysicsObject():EnableMotion(true) -end - -function ENT:OnTakeDamage(dmginfo) - if not self.FirstLaunch then - if dmginfo:IsExplosionDamage() then - self:Detach() - self:TakePhysicsDamage(dmginfo) - elseif dmginfo:IsDamageType(DMG_BULLET) or dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH) then - self:Break() - end - end -end - -function ENT:CanAttach(ent) - if not ent then return false end - - if ent:IsWorld() then return true end - - if string.find(ent:GetClass(),"^prop_dynamic") then return true end - - if ent:GetClass() == "prop_physics" then - local phys = ent:GetPhysicsObject() - if phys:IsValid() and not phys:IsMoveable() then - return true - end - end -end - -function ENT:PhysicsCollide(data, physobj) - self.FirstLaunch = false - - if self.Detached then - if self:GetPhysicsObject():GetVelocity():Length()<5 then - self.Detached = false - end - end - - if self:CanAttach(data.HitEntity) and not self.Detached then - if self.DetonateMode == 2 then - self:Break() - return - end - - self.AttachedEntity = data.HitEntity - if data.HitEntity:GetClass() == "prop_physics" then - self.AttachedPhysObj = data.HitEntity:GetPhysicsObject() - else - self.AttachedPhysObj = nil - end - - self:GetPhysicsObject():EnableMotion(false) - self:SetCollisionGroup(COLLISION_GROUP_WEAPON) - self:SetSolid(SOLID_VPHYSICS) - end -end - -hook.Add("EntityRemoved", "StickyBombDetach", function(ent) - for _,v in pairs(ents.FindByClass("tf_projectile_pipe_remote")) do - if v.AttachedEntity==ent then - v:Detach() - end - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_rocket/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_rocket/shared.lua deleted file mode 100644 index 9864a90ee..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_rocket/shared.lua +++ /dev/null @@ -1,305 +0,0 @@ --- Sticky bomb - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -PrecacheParticleSystem("rockettrail") -PrecacheParticleSystem("critical_rocket_red") -PrecacheParticleSystem("critical_rocket_blue") -PrecacheParticleSystem("cinefx_goldrush") - -PrecacheParticleSystem("ExplosionCore_MidAir") -PrecacheParticleSystem("ExplosionCore_MidAir_underwater") -PrecacheParticleSystem("ExplosionCore_Wall") -PrecacheParticleSystem("ExplosionCore_Wall_underwater") - -function ENT:SetupDataTables() - self:DTVar("Bool", 0, "Critical") -end - -function ENT:InitEffects() - local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - ParticleEffectAttach("rockettrail", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) - - if self.dt.Critical then - ParticleEffectAttach("critical_rocket_"..effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) - end -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() - - local bomb = self:GetNWEntity("Bomb") - if IsValid(bomb) then - bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) - end -end - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") -ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") -ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") -ENT.ExplosionSoundNuke = Sound("Cart.Explode") -ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") - -ENT.BaseDamage = 90 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0.25 -ENT.MaxDamageFalloff = 0.53 -ENT.DamageModifier = 1 - -ENT.BaseSpeed = 1100 -ENT.ExplosionRadiusInit = 150 -ENT.OwnerDamage = 1 - -ENT.CritDamageMultiplier = 3 - -ENT.HitboxSize = 10 - -function ENT:Critical() - return self.dt.Critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - self.dt.Critical = self.critical - - local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) - local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) - - self:SetModel(self.Model) - - if self.Nuke then - local bomb = ents.Create("prop_dynamic") - bomb:SetModel(self.ModelNuke) - bomb:SetPos(self:GetPos()) - bomb:SetAngles((-1 * self:GetForward()):Angle()) - bomb:SetNotSolid(true) - bomb:SetParent(self) - bomb:Spawn() - - self:SetNWEntity("Bomb", bomb) - elseif self.Error then - local bomb = ents.Create("prop_dynamic") - bomb:SetModel("models/error.mdl") - bomb:SetPos(self:GetPos()) - bomb:SetAngles((-1 * self:GetForward()):Angle()) - bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) - bomb:SetNotSolid(true) - bomb:SetParent(self) - bomb:Spawn() - - --self:SetNWEntity("Bomb", bomb) - self:SetColor(255,255,255,0) - self.NameOverride = "have_an_error" - end - - if self.Gravity then - self:SetMoveType(MOVETYPE_FLYGRAVITY) - self:SetGravity(self.Gravity) - else - self:SetMoveType(MOVETYPE_FLY) - end - - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - - self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) - - --[[ - if self.FastRocket then - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) - --self.BaseDamage = self.BaseDamage * 1.25 - self.NameOverride = "tf_projectile_rocket_direct" - else - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) - end]] - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - self:InitEffects() -end - -function ENT:FindTarget() - local v1, v2, dot - v1 = self:GetForward() - - local max, target - - for _,v in pairs(ents.GetAll()) do - if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then - v2 = (v:GetPos() - self:GetPos()):GetNormal() - dot = v1:DotProduct(v2) - - if not max or dot>max then - max, target = dot, v - end - end - end - - self.Target = target -end - -function ENT:Think() - if not self.Homing then - self:SetAngles(self:GetVelocity():Angle()) - return - end - - if not IsValid(self.Target) or self.Target:Health()<=0 then - if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then - self:FindTarget() - self.NextTargetSearch = CurTime() + 2 - end - self:SetAngles(self:GetVelocity():Angle()) - return - end -end - -function ENT:OnRemove() - self.ai_sound:Remove() -end - -local ForceDamageClasses = { - npc_combinegunship = true, -} - -function ENT:DoExplosion(ent) - self.Touch = nil - - local effect, angle - - if self.Nuke then - self:EmitSound(self.ExplosionSoundNuke) - effect = "cinefx_goldrush" - angle = Angle(0,self:GetAngles().y, 0) - - local explosion = ents.Create("info_particle_system") - explosion:SetKeyValue("effect_name", effect) - explosion:SetKeyValue("start_active", "1") - explosion:SetPos(self:GetPos()) - explosion:SetAngles(self:GetAngles()) - explosion:Spawn() - explosion:Activate() - - explosion:Fire("Kill", "", 5) - else - --[[if self.FastRocket then - self:EmitSound(self.ExplosionSoundFast) - else]] - self:EmitSound(self.ExplosionSound) - --end - - local flags = 0 - - if ent:IsWorld() then - local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) - if tr.HitWorld then - flags = bit.bor(flags, 2) - angle = tr.HitNormal:Angle():Up():Angle() - else - angle = self:GetAngles() - end - else - angle = self:GetAngles() - end - - if self:WaterLevel()>0 then - flags = bit.bor(flags, 1) - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(angle) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - end - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) - local range = self.ExplosionRadiusInit - if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then - range = range * self.ExplosionRadiusMultiplier - end - --[[if self.FastRocket then - range = range * 0.4 - end]] - - --self.ResultDamage = damage - - if self.Nuke then - --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) - util.BlastDamage(self, owner, self:GetPos(), range*6, 100) - else - --util.BlastDamage(self, owner, self:GetPos(), range, damage) - util.BlastDamage(self, owner, self:GetPos(), range, 100) - end - - if ForceDamageClasses[ent:GetClass()] then - local dmginfo = DamageInfo() - dmginfo:SetDamage(100) - dmginfo:SetDamageType(DMG_BLAST) - dmginfo:SetAttacker(owner) - dmginfo:SetInflictor(self) - dmginfo:SetDamagePosition(self:GetPos()) - dmginfo:SetDamageForce(vector_up) - ent:TakeDamageInfo(dmginfo) - end - - self:Remove() -end - ---[[ -function ENT:ModifyInitialDamage(ent, dmginfo) - if self.FastRocket and self:GetOwner() ~= ent then - local frac = dmginfo:GetDamage() * 0.01 - local saturate = 1.5 - local range_reduce = 0.7 - local mul = 1.25 - - frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul - - return frac * 100 - else - return dmginfo:GetDamage() - end -end]] - -function ENT:Touch(ent) - if not ent:IsTrigger() then - self:DoExplosion(ent) - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_rocket_flare/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_rocket_flare/shared.lua deleted file mode 100644 index 8230b0109..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_rocket_flare/shared.lua +++ /dev/null @@ -1,303 +0,0 @@ --- Sticky bomb - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -PrecacheParticleSystem("flaregun_trail_red") -PrecacheParticleSystem("flaregun_trail_blue") -PrecacheParticleSystem("flaregun_crit_red") -PrecacheParticleSystem("flaregun_crit_blue") -PrecacheParticleSystem("flaregun_destroyed") - -PrecacheParticleSystem("ExplosionCore") -PrecacheParticleSystem("ExplosionCore_MidAir") -PrecacheParticleSystem("ExplosionCore_MidAir_underwater") -PrecacheParticleSystem("ExplosionCore_Wall") -PrecacheParticleSystem("ExplosionCore_Wall_underwater") - -function ENT:SetupDataTables() - self:DTVar("Bool", 0, "Critical") -end - -ENT.IsTFWeapon = true - -function ENT:InitEffects() - local effect = "flaregun" - - if self.critical then - effect = effect.."_crit_" - else - effect = effect.."_trail_" - end - - effect = effect..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - - ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() - - local bomb = self:GetNWEntity("Bomb") - if IsValid(bomb) then - bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) - end -end - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = Model("models/weapons/w_models/w_flaregun_shell.mdl") -ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") -ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") -ENT.ExplosionSoundNuke = Sound("Cart.Explode") ---ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") - -ENT.BaseDamage = 15 -ENT.DamageRandomize = 0.3 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - -ENT.BaseSpeed = 1100 -ENT.ExplosionRadiusInit = 150 -ENT.OwnerDamage = 1 - -ENT.CritDamageMultiplier = 3 - -ENT.HitboxSize = 10 - -function ENT:Critical() - return self.dt.Critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - self.dt.Critical = self.critical - - local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) - local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) - - self:SetModel(self.Model) - - if self.Nuke then - local bomb = ents.Create("prop_dynamic") - bomb:SetModel(self.ModelNuke) - bomb:SetPos(self:GetPos()) - bomb:SetAngles((-1 * self:GetForward()):Angle()) - bomb:SetNotSolid(true) - bomb:SetParent(self) - bomb:Spawn() - - self:SetNWEntity("Bomb", bomb) - elseif self.Error then - local bomb = ents.Create("prop_dynamic") - bomb:SetModel("models/error.mdl") - bomb:SetPos(self:GetPos()) - bomb:SetAngles((-1 * self:GetForward()):Angle()) - bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) - bomb:SetNotSolid(true) - bomb:SetParent(self) - bomb:Spawn() - - --self:SetNWEntity("Bomb", bomb) - self:SetColor(255,255,255,0) - self.NameOverride = "have_an_error" - end - - if self.RocketGravity then - self:SetMoveType(MOVETYPE_FLYGRAVITY) - else - self:SetMoveType(MOVETYPE_FLY) - end - - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - - self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - - self:SetLocalVelocity(self:GetForward() * (self.Force or 1650)) - self:SetGravity(0.5) - - --[[ - if self.FastRocket then - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) - --self.BaseDamage = self.BaseDamage * 1.25 - self.NameOverride = "tf_projectile_rocket_direct" - else - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) - end]] - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - self:InitEffects() -end - -function ENT:FindTarget() - local v1, v2, dot - v1 = self:GetForward() - - local max, target - - for _,v in pairs(ents.GetAll()) do - if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then - v2 = (v:GetPos() - self:GetPos()):GetNormal() - dot = v1:DotProduct(v2) - - if not max or dot>max then - max, target = dot, v - end - end - end - - self.Target = target -end - -function ENT:Think() - if not self.Homing then - self:SetAngles(self:GetVelocity():Angle()) - return - end - - if not IsValid(self.Target) or self.Target:Health()<=0 then - if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then - self:FindTarget() - self.NextTargetSearch = CurTime() + 2 - end - self:SetAngles(self:GetVelocity():Angle()) - return - end -end - -function ENT:OnRemove() - self.ai_sound:Remove() -end - -function ENT:DoExplosion(ent) - self.Touch = nil - - local effect, angle - - if self.Nuke then - self:EmitSound(self.ExplosionSoundNuke) - effect = "cinefx_goldrush" - angle = Angle(0,self:GetAngles().y, 0) - - local explosion = ents.Create("info_particle_system") - explosion:SetKeyValue("effect_name", effect) - explosion:SetKeyValue("start_active", "1") - explosion:SetPos(self:GetPos()) - explosion:SetAngles(self:GetAngles()) - explosion:Spawn() - explosion:Activate() - - explosion:Fire("Kill", "", 5) - else - --[[if self.FastRocket then - self:EmitSound(self.ExplosionSoundFast) - else]] - self:EmitSound(self.ExplosionSound) - --end - - local flags = 0 - - if ent:IsWorld() then - local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) - if tr.HitWorld then - flags = bit.bor(flags, 2) - angle = tr.HitNormal:Angle():Up():Angle() - else - angle = self:GetAngles() - end - else - angle = self:GetAngles() - end - - if self:WaterLevel()>0 then - flags = bit.bor(flags, 1) - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(angle) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - end - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) - local range = self.ExplosionRadiusInit - if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then - range = range * self.ExplosionRadiusMultiplier - end - --[[if self.FastRocket then - range = range * 0.4 - end]] - - --self.ResultDamage = damage - - if self.Nuke then - --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) - util.BlastDamage(self, owner, self:GetPos(), range*6, 100) - else - --util.BlastDamage(self, owner, self:GetPos(), range, damage) - util.BlastDamage(self, owner, self:GetPos(), range, 100) - - if ent:IsFlammable() then - GAMEMODE:IgniteEntity(ent, self, owner, 3) - end - end - - self:Remove() -end - ---[[ -function ENT:ModifyInitialDamage(ent, dmginfo) - if self.FastRocket and self:GetOwner() ~= ent then - local frac = dmginfo:GetDamage() * 0.01 - local saturate = 1.5 - local range_reduce = 0.7 - local mul = 1.25 - - frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul - - return frac * 100 - else - return dmginfo:GetDamage() - end -end]] - -function ENT:Touch(ent) - if not ent:IsTrigger() then - self:DoExplosion(ent) - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_sentryrocket/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_sentryrocket/shared.lua deleted file mode 100644 index 23a6501f3..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_sentryrocket/shared.lua +++ /dev/null @@ -1,196 +0,0 @@ --- Sticky bomb - -ENT.Type = "anim" -ENT.Base = "base_anim" - -ENT.Explosive = true - -ENT.AutomaticFrameAdvance = true - -PrecacheParticleSystem("ExplosionCore_MidAir") -PrecacheParticleSystem("ExplosionCore_MidAir_underwater") -PrecacheParticleSystem("ExplosionCore_Wall") -PrecacheParticleSystem("ExplosionCore_Wall_underwater") - -function ENT:InitEffects() -end - -if CLIENT then - -function ENT:Initialize() -end - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Model = Model("models/buildables/sentry3_rockets.mdl") - -ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") - -ENT.BaseDamage = 100 -ENT.DamageRandomize = 0 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 -ENT.DamageModifier = 1 - -ENT.BaseSpeed = 1100 -ENT.ExplosionRadiusInit = 150 -ENT.OwnerDamage = 0 - -ENT.CritDamageMultiplier = 3 - -ENT.Size = 10 - -function ENT:Critical() - return self.critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - local min = Vector(-self.Size, -self.Size, -self.Size) - local max = Vector( self.Size, self.Size, self.Size) - - self:SetModel(self.Model) - - self:SetMoveType(MOVETYPE_FLY) - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - - self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE) - - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) - - self.ai_sound = ents.Create("ai_sound") - self.ai_sound:SetPos(self:GetPos()) - self.ai_sound:SetKeyValue("volume", "80") - self.ai_sound:SetKeyValue("duration", "8") - self.ai_sound:SetKeyValue("soundtype", "8") - self.ai_sound:SetParent(self) - self.ai_sound:Spawn() - self.ai_sound:Activate() - self.ai_sound:Fire("EmitAISound", "", 0.3) - - - self:ResetSequence(self:LookupSequence("idle")) - self:SetPlaybackRate(1) - self:SetCycle(0) - self:InitEffects() -end - -function ENT:FindTarget() - local v1, v2, dot - v1 = self:GetForward() - - local max, target - - for _,v in pairs(ents.GetAll()) do - if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then - v2 = (v:GetPos() - self:GetPos()):GetNormal() - dot = v1:DotProduct(v2) - - if not max or dot>max then - max, target = dot, v - end - end - end - - self.Target = target -end - -function ENT:Think() ---[[ - if not self.Homing then - self:SetAngles(self:GetVelocity():Angle()) - return - end - - if not IsValid(self.Target) or self.Target:Health()<=0 then - if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then - self:FindTarget() - self.NextTargetSearch = CurTime() + 2 - end - self:SetAngles(self:GetVelocity():Angle()) - return - end]] - - self:NextThink(CurTime()) - return true -end - -function ENT:OnRemove() - self.ai_sound:Remove() -end - -function ENT:DoExplosion(ent) - self.Touch = nil - - local effect, angle - - --[[if self.FastRocket then - self:EmitSound(self.ExplosionSoundFast) - else]] - self:EmitSound(self.ExplosionSound) - --end - - local flags = 0 - - if ent:IsWorld() then - local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) - if tr.HitWorld then - flags = bit.bor(flags, 2) - angle = tr.HitNormal:Angle():Up():Angle() - else - angle = self:GetAngles() - end - else - angle = self:GetAngles() - end - - if self:WaterLevel()>0 then - flags = bit.bor(flags, 1) - end - - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(angle) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) - local range = self.ExplosionRadiusInit - if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then - range = range * self.ExplosionRadiusMultiplier - end - --[[if self.FastRocket then - range = range * 0.4 - end]] - - --self.ResultDamage = damage - self.OwnerDamage = 0.8 - - util.BlastDamage(self.Launcher or self, owner, self:GetPos(), range, 100) - - self:Remove() -end - -function ENT:Touch(ent) - if not ent:IsTrigger() then - self:DoExplosion(ent) - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_syringe/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_projectile_syringe/shared.lua deleted file mode 100644 index 7000ec945..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_projectile_syringe/shared.lua +++ /dev/null @@ -1,199 +0,0 @@ --- Syringe - -ENT.Type = "anim" -ENT.Base = "base_anim" - -PrecacheParticleSystem("nailtrails_medic_red") -PrecacheParticleSystem("nailtrails_medic_blue") -PrecacheParticleSystem("nailtrails_medic_red_crit") -PrecacheParticleSystem("nailtrails_medic_blue_crit") - -PrecacheParticleSystem("stunballtrail_red_crit") -PrecacheParticleSystem("stunballtrail_blue_crit") - -ENT.IsTFWeapon = true - -function ENT:SetupDataTables() - self:DTVar("Int", 0, "ProjectileType") - self:DTVar("Bool", 0, "Critical") -end - -function ENT:SetProjectileType(t) - self.dt.ProjectileType = t -end - -function ENT:ProjectileType() - return self.dt.ProjectileType -end - -function ENT:InitEffects() - if self:ProjectileType()==3 then - if SERVER then - local mat - if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then - mat = "Effects/arrowtrail_blu.vmt" - else - mat = "Effects/arrowtrail_red.vmt" - end - - self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, - 0.1, 5, 0.1, 1/(5+1)*0.5, mat) - end - - if self.dt.Critical then - local effect = "stunballtrail_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())).."_crit" - ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) - end - return - end - - local effectname = "nailtrails_medic_blue_crit" - - local effect = "nailtrails_medic_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) - if self.dt.Critical then - effect = effect.."_crit" - end - - ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) -end - -if CLIENT then - -function ENT:Initialize() - self:InitEffects() -end - -function ENT:Draw() - self:DrawModel() -end - -end - -if SERVER then - -AddCSLuaFile( "shared.lua" ) - -ENT.Models = { - Model("models/weapons/w_models/w_syringe_proj.mdl"), - Model("models/weapons/c_models/c_leechgun/c_leech_proj.mdl"), - Model("models/weapons/w_models/w_syringe.mdl"), -} - -ENT.BaseDamage = 10 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0.2 -ENT.MaxDamageFalloff = 0.5 -ENT.DamageModifier = 1 - -ENT.HitboxSize = 0.5 - -ENT.CritDamageMultiplier = 3 - -ENT.BaseSpeed = 1650 - -function ENT:OnInitAttribute(att) - if att.attribute_class == "add_onhit_addhealth" then - self:SetProjectileType(2) - elseif att.attribute_class == "radial_onhit_addhealth" then - self:SetProjectileType(3) - end -end - -function ENT:Critical() - return self.dt.Critical -end - -function ENT:CalculateDamage(ownerpos) - return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) -end - -function ENT:Initialize() - self.dt.Critical = self.critical - - local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) - local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) - - self:SetModel(self.Models[self:ProjectileType()] or self.Models[1]) - - if self:ProjectileType()==2 then - self.NameOverride = "tf_projectile_blutsauger" - end - - self:SetMoveType(MOVETYPE_FLYGRAVITY) - self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - self:SetTrigger(true) - - --self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) - self:SetNotSolid(true) - - self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) - - if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then - self:SetSkin(1) - end - - self:InitEffects() - - if self:ProjectileType()==3 then - local ang = self:GetAngles() - ang:RotateAroundAxis(ang:Right(), -90) - self:SetAngles(ang) - end -end - -function ENT:Think() - if self:ProjectileType()==3 then - local ang = self:GetVelocity():Angle() - ang:RotateAroundAxis(ang:Right(), -90) - self:SetAngles(ang) - else - self:SetAngles(self:GetVelocity():Angle()) - end -end - -function ENT:Hit(ent) - self.Touch = nil - - if ent:IsWorld() then - local effectdata = EffectData() - effectdata:SetOrigin(self:GetPos()) - effectdata:SetAngles(self:GetAngles()) - effectdata:SetMagnitude(self:GetSkin()) - effectdata:SetAttachment(self:ProjectileType()-1) - util.Effect("tf_syringe_stuck", effectdata) - end - - local owner = self:GetOwner() - if not owner or not owner:IsValid() then owner = self end - - local damage = self:CalculateDamage(owner:GetPos()) - local dir = self:GetVelocity():GetNormal() - - self:FireBullets{ - Src=self:GetPos(), - Attacker=owner, - Dir=dir, - Spread=Vector(0,0,0), - Num=1, - Damage=damage, - Tracer=0, - HullSize=self.HitboxSize, - } - - if IsValid(self.Trail) then - self.Trail:SetParent() - self.Trail:Fire("kill", "", 1) - end - - self:Fire("kill", "", 0.01) -end - -function ENT:Touch(ent) - if not ent:IsTrigger() and GAMEMODE:ShouldCollide(self, ent) then - self:Hit(ent) - end -end - -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/init.lua b/addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/init.lua deleted file mode 100644 index 432efcd71..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/init.lua +++ /dev/null @@ -1,96 +0,0 @@ -function ENT:Initialize() - self:SetModel( "models/props_gameplay/resupply_locker.mdl" ) - self:PhysicsInit( SOLID_VPHYSICS ) - self:SetMoveType( MOVETYPE_VPHYSICS ) - self:SetSolid( SOLID_VPHYSICS ) - - local phys = self:GetPhysicsObject() - if (phys:IsValid()) then - phys:Wake() - end - - self.Team = 0 - self.Players = {} - self.Opened = false -end - -function ENT:Use( activator, caller ) - return -end - - -function ENT:KeyValue(key,value) - key = string.lower(key) - - if key=="teamnum" then - self.Team = tonumber(value) - elseif key=="associatedmodel" then - selfName = value - end -end - -function ENT:StartTouch(ent) - if ent:IsPlayer() then - self.Players[ent] = -1 - end -end - -function ENT:EndTouch(ent) - if ent:IsPlayer() then - self.Players[ent] = nil - end -end - -function ENT:Think() - local resupplied - - for pl,last in pairs(self.Players) do - if last==-1 or CurTime()-last>1 then - resupplied = true - GAMEMODE:GiveHealthPercent(pl, 100) - GAMEMODE:GiveAmmoPercent(pl, 100) - if self.Opened then - self:EmitSound("AmmoPack.Touch", 100, 100) - end - self.Players[pl] = CurTime() - end - end - - if resupplied and not self.Opened then - self:EmitSound("Regenerate.Touch", 100, 100) - - if not self and selfName then - self = ents.FindByName(selfName)[1] - --print("associatedmodel : "..selfName.." : "..tostring(self)) - end - - if self and self:IsValid() then - --self:ResetSequence(self:LookupSequence("open")) - self:Fire("SetAnimation", "open") - end - - self.Opened = true - self.NextClose = CurTime() + 1.5 - end - - if self.NextClose and CurTime()>=self.NextClose then - if self and self:IsValid() then - --self:ResetSequence(self:LookupSequence("close")) - --self.NextIdle = CurTime() + self:SequenceDuration() - self:Fire("SetAnimation", "close") - self.NextIdle = CurTime() + 1.5 - else - self.NextIdle = CurTime() + 1.5 - end - self.NextClose = nil - end - - if self.NextIdle and CurTime()>=self.NextIdle then - --[[if self and self:IsValid() then - self:ResetSequence(self:LookupSequence("idle")) - end]] - - self.NextIdle = nil - self.Opened = false - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_team_control_point/cl_init.lua b/addon/gamemodes/teamfortress/entities/entities/tf_team_control_point/cl_init.lua deleted file mode 100644 index 96888d0c1..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_team_control_point/cl_init.lua +++ /dev/null @@ -1,155 +0,0 @@ -include("shared.lua") - -ENT.RenderGroup = RENDERGROUP_TRANSLUCENT - -local function UpdateControlPointTexture(cp) - local str - if cp.locked then str = "tex_icon_locked_" - else str = "tex_icon_" - end - - cp.tex_icon = cp[str..cp.owner] or cp[str.."0"] - cp.tex_overlay = cp["tex_overlay_"..cp.owner] or cp["tex_overlay_0"] -end - -local function GetTextureID(tex) - if tex=="" then - return -1 - else - return surface.GetTextureID(tex) - end -end - -usermessage.Hook("TF_SetControlPointLayout", function(msg) - local str = msg:ReadString() - local y = 1 - local m = {{}} - - str=string.gsub(str, "(%S),", "%1 ,") - str=string.gsub(str, ",(%S)", ", %1") - for n in string.gmatch(str, "[0-9,]+") do - if tonumber(n) then - table.insert(m[y], tonumber(n)+1) - else - y = y+1 - m[y] = {} - end - end - - GAMEMODE.ControlPointLayout = m - - for _,v in ipairs(m) do - for _,n in ipairs(v) do - Msg(n.." ") - end - Msg("\n") - end -end) - -usermessage.Hook("TF_AddControlPoint", function(msg) - if not GAMEMODE.ControlPoints then GAMEMODE.ControlPoints = {} end - - local id = msg:ReadChar() - local cp = {} - - cp.name = msg:ReadString() - - cp.icon_neutral = msg:ReadString() - cp.icon_red = msg:ReadString() - cp.icon_blu = msg:ReadString() - cp.tex_icon_0 = GetTextureID(cp.icon_neutral) - cp.tex_icon_2 = GetTextureID(cp.icon_red) - cp.tex_icon_3 = GetTextureID(cp.icon_blu) - cp.tex_icon_locked_0 = GetTextureID(cp.icon_neutral.."_locked") - cp.tex_icon_locked_2 = GetTextureID(cp.icon_red.."_locked") - cp.tex_icon_locked_3 = GetTextureID(cp.icon_blu.."_locked") - - cp.overlay_neutral = msg:ReadString() - cp.overlay_red = msg:ReadString() - cp.overlay_blu = msg:ReadString() - cp.tex_overlay_0 = GetTextureID(cp.overlay_neutral) - cp.tex_overlay_2 = GetTextureID(cp.overlay_red) - cp.tex_overlay_3 = GetTextureID(cp.overlay_blu) - - cp.owner = msg:ReadChar() - cp.locked = false - - UpdateControlPointTexture(cp) - - MsgN("Control point "..id) - PrintTable(cp) - - GAMEMODE.ControlPoints[id] = cp -end) - -usermessage.Hook("TF_SetControlPointTeam", function(msg) - local id = msg:ReadChar() - local cp = GAMEMODE.ControlPoints[id] - - if not cp then return end - - cp.owner = msg:ReadChar() - UpdateControlPointTexture(cp) -end) - -usermessage.Hook("TF_LockControlPoint", function(msg) - local id = msg:ReadChar() - local cp = GAMEMODE.ControlPoints[id] - - if not cp then return end - - cp.locked = true - UpdateControlPointTexture(cp) -end) - -usermessage.Hook("TF_OpenControlPoint", function(msg) - local id = msg:ReadChar() - local cp = GAMEMODE.ControlPoints[id] - - if not cp then return end - - cp.locked = false - UpdateControlPointTexture(cp) -end) - -usermessage.Hook("TF_EnterControlPoint", function(msg) - LocalPlayer().CurrentControlPoint = msg:ReadChar() -end) - -usermessage.Hook("TF_ExitControlPoint", function(msg) - LocalPlayer().CurrentControlPoint = -1 -end) - -usermessage.Hook("TF_SetAndResumeTimer", function(msg) - GAMEMODE.RoundTimeReference = msg:ReadFloat() - - local t = msg:ReadFloat() - if t>0 then GAMEMODE.MaxRoundTime = t end - - GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() - GAMEMODE.RoundTimeLastUpdated = CurTime() - GAMEMODE.RoundTimePaused = nil -end) - -usermessage.Hook("TF_SetAndPauseTimer", function(msg) - GAMEMODE.RoundTimePaused = msg:ReadFloat() - - local t = msg:ReadFloat() - if t>0 then GAMEMODE.MaxRoundTime = t end - - GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() -end) - -usermessage.Hook("TF_PlayGlobalSound", function(msg) - LocalPlayer():EmitSound(msg:ReadString()) -end) - -function ENT:Draw() - -- fuck AutomaticFrameAdvance, this is better - if self.LastDrawn then - self:FrameAdvance(CurTime() - self.LastDrawn) - end - self.LastDrawn = CurTime() - - self:DrawModel() -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_team_control_point/init.lua b/addon/gamemodes/teamfortress/entities/entities/tf_team_control_point/init.lua deleted file mode 100644 index 5b1ba5a65..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_team_control_point/init.lua +++ /dev/null @@ -1,179 +0,0 @@ -include("shared.lua") -AddCSLuaFile("shared.lua") -AddCSLuaFile("cl_init.lua") - -function ENT:Initialize() - self.ID = self.Properties.point_index - self.OwnerTeam = self.Properties.point_default_owner - self.Locked = false - - self:UpdateModel() -end - -function ENT:UpdateModel() - self:SetModel(self.Properties["team_model_"..self.OwnerTeam]) - self:SetBodygroup(0, self.OwnerTeam) - self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) - self:DrawShadow(false) -end - -function ENT:InitPostEntity() - if not IsValid(self.TriggerEntity) then - return - end - - print(self) - - self.Properties.team_previouspoint_2_0 = ents.FindByName(self.Properties.team_previouspoint_2_0 or "")[1] or NULL - self.Properties.team_previouspoint_2_1 = ents.FindByName(self.Properties.team_previouspoint_2_1 or "")[1] or NULL - self.Properties.team_previouspoint_2_2 = ents.FindByName(self.Properties.team_previouspoint_2_2 or "")[1] or NULL - self.Properties.team_previouspoint_3_0 = ents.FindByName(self.Properties.team_previouspoint_3_0 or "")[1] or NULL - self.Properties.team_previouspoint_3_1 = ents.FindByName(self.Properties.team_previouspoint_3_1 or "")[1] or NULL - self.Properties.team_previouspoint_3_2 = ents.FindByName(self.Properties.team_previouspoint_3_2 or "")[1] or NULL - - PrintTable(self.Properties or {}) - - self:SendData() - self.Ready = true -end - -function ENT:SendData(pl) - umsg.Start("TF_AddControlPoint", pl) - umsg.Char(self.Properties.point_index) - umsg.String(self.Properties.point_printname) - - umsg.String(self.Properties.team_icon_0 or "") - umsg.String(self.Properties.team_icon_2 or "") - umsg.String(self.Properties.team_icon_3 or "") - - umsg.String(self.Properties.team_overlay_0 or "") - umsg.String(self.Properties.team_overlay_2 or "") - umsg.String(self.Properties.team_overlay_3 or "") - - umsg.Char(self.Properties.point_default_owner) - umsg.End() -end - -function ENT:SetOwnerTeam(o) - self.OwnerTeam = o - umsg.Start("TF_SetControlPointTeam") - umsg.Char(self.ID) - umsg.Char(self.OwnerTeam) - umsg.End() - self:UpdateModel() -end - -function ENT:Open() - self.Locked = false - umsg.Start("TF_OpenControlPoint") - umsg.Char(self.ID) - umsg.End() -end - -function ENT:Lock() - self.Locked = true - umsg.Start("TF_LockControlPoint") - umsg.Char(self.ID) - umsg.End() -end - -function ENT:SetLocked(b) - if b then - self:Lock() - else - self:Open() - end -end - --- Should this control point be locked or not? -function ENT:ComputeLockStatus() - if self.TeamCanCap then - -- If this point cannot be captured by any team other than its owner, it's definitely locked - local lock = true - for t=2,3 do - if t~=self.OwnerTeam and self.TeamCanCap[t] then - lock = false - break - end - end - if lock then - return true - end - end - - local pt - local lock = true - for t=2,3 do - if self.OwnerTeam ~= t then - local cancap = true - - if self.TeamCanCap and not self.TeamCanCap[t] then - cancap = false - else - for i=0,2 do - pt = self.Properties["team_previouspoint_"..t.."_"..i] - if not IsValid(pt) then - if i==0 then - local cannotcap = false - for _,pt in pairs(ents.FindByClass("team_control_point")) do - if ((t==2 and pt.ID>self.ID) or (t==3 and pt.ID 1) - elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then - return ent:GetMaxHealth() > 1 - elseif ent:GetClass() == "func_breakable" then - return true - end - - return false -end - -function ENT:MeleeAttack() - if not IsValid(self.Owner) then return end - - local pos = self.Owner:GetShootPos() - local ang = self.Owner:EyeAngles() - ang.p = 0 - local endpos = pos + ang:Forward() * self.MeleeRange - - local hitent, hitpos, dmginfo - - self.Owner:SetJumpPower(100) - - --self.Owner:LagCompensation(true) - - local tr = util.TraceLine { - start = pos, - endpos = endpos, - filter = self.Owner - } - - if not tr.Hit then - local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) - - tr = util.TraceHull { - start = pos, - endpos = endpos, - filter = self.Owner, - - mins = mins, - maxs = maxs, - } - end - - --self.Owner:LagCompensation(false) - - if tr.Entity and tr.Entity:IsValid() then - if self.Owner:IsFriendly(tr.Entity) or self.Owner:GetSolid() == SOLID_NONE then - return - end - - local ang = self.Owner:EyeAngles() - local dir = ang:Forward() - hitpos = tr.Entity:NearestPoint(self.Owner:GetShootPos()) - 2 * dir - tr.HitPos = hitpos - - if self.Owner:CanDamage(tr.Entity) then - local pitch, mul, dmgtype - - dmgtype = DMG_SLASH - pitch, mul = self.ForceAddPitch, self.ForceMultiplier - - ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) - local force_dir = ang:Forward() - - --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self.Owner:GetNWInt("Heads"), self.MaxHeads) - self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self.Owner:GetNWInt("Heads") - - local dmg = tf_util.CalculateDamage(self, hitpos) - - dmginfo = DamageInfo() - dmginfo:SetAttacker(self.Owner) - dmginfo:SetInflictor(self) - dmginfo:SetDamage(dmg) - dmginfo:SetDamageType(dmgtype) - dmginfo:SetDamagePosition(hitpos) - dmginfo:SetDamageForce(dmg * force_dir * mul) - tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = tr.Entity:GetPhysicsObject() - if phys and phys:IsValid() then - tr.Entity:SetPhysicsAttacker(self.Owner) - end - end - - if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then - if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then - sound.Play(self.HitPlayerRangeSound, self.Owner:GetPos()) - self.NextRangeSound = CurTime() + 1 - else - sound.Play(self.HitPlayerSound, self.Owner:GetPos()) - end - else - sound.Play(self.HitWorldSound, self.Owner:GetPos()) - end - elseif tr.HitWorld then - sound.Play(self.HitWorldSound, self.Owner:GetPos()) - else - return - end - - util.ScreenShake(self:GetPos(), 10, 5, 1, 512) - - if not tr.HitWorld then - if self.Owner.TempAttributes.ChargeIsUnstoppable then - return - end - - if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then - print("charge hit", tr.Entity, tr.Entity:Health(), tr.Entity:GetMaxHealth(), self:CanChargeThrough(tr.Entity)) - if self:CanChargeThrough(tr.Entity) then - return - --[[elseif tr.Entity:GetClass() == "prop_door_rotating" then - local p = ents.Create("prop_physics") - p:SetModel(tr.Entity:GetModel()) - p:SetBodygroup(1, 1) - p:SetSkin(tr.Entity:GetSkin()) - p:SetPos(tr.Entity:GetPos()) - p:SetAngles(tr.Entity:GetAngles()) - tr.Entity:Remove() - p:Spawn() - - p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = p:GetPhysicsObject() - if phys and phys:IsValid() then - p:SetPhysicsAttacker(self.Owner) - end - - return - elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) - and tr.Entity:GetParent():GetClass()=="func_door_rotating" then - local door = tr.Entity:GetParent() - - local p = ents.Create("prop_physics") - p:SetModel(door:GetModel()) - p:SetSkin(door:GetSkin()) - p:SetPos(door:GetPos()) - p:SetAngles(door:GetAngles()) - door:Remove() - p:Spawn() - - p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = p:GetPhysicsObject() - if phys and phys:IsValid() then - p:SetPhysicsAttacker(self.Owner) - end - - return]] - end - end - end - - local vel = self.Owner:GetVelocity() - local right = self.Owner:EyeAngles():Right() - local side = vel:DotProduct(right) - - self.Owner:SetVelocity(-side * right) - - self:StopCharging() -end - -function ENT:Initialize() - self.BaseClass.Initialize(self) - if IsValid(self.Owner) then - self.Owner.TargeEntity = self - end - self.dt.Charging = false - self.dt.Ready = true - self.dt.ChargeCooldownMultiplier = 1 -end - -function ENT:StartCharging() - if not self.ChargeDuration then - self.dt.AdditiveChargeDuration = self.Owner.TempAttributes.AdditiveChargeDuration or 0 - self.dt.ChargeCooldownMultiplier = self.Owner.TempAttributes.ChargeCooldownMultiplier or 1 - self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration - end - - self.dt.Ready = false - self.dt.Charging = true - self.dt.NextEndCharge = CurTime() + self.ChargeDuration - self.SpeedBonus = 2.69 - self.Owner:ResetClassSpeed() - self.Owner:SetJumpPower(0) - - if not self.ChargeSoundEnt then - self.ChargeSoundEnt = CreateSound(self.Owner, "Heavy.BattleCry05") - end - - if self.ChargeSoundEnt then - self.ChargeSoundEnt:Play() - end -end - -function ENT:StopCharging() - self.ChargeDuration = nil - self.dt.Ready = false - self.dt.Charging = false - self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier - self.SpeedBonus = nil - self.Owner:ResetClassSpeed() - - if self.ChargeSoundEnt then - self.ChargeSoundEnt:Stop() - self.ChargeSoundEnt = nil - end - - if self.ChargeState then - if self.ChargeState == 2 then - if self.CritStartSoundEnt then - self.CritStartSoundEnt:Stop() - self.CritStartSoundEnt = nil - self.Owner:EmitSound(self.CritStopSound) - end - end - - self.NextEndCritBoost = CurTime() + 0.4 - end -end - -function ENT:OnMeleeSwing() - if self.dt.Charging then - self:StopCharging() - end -end - -function ENT:Think() - if not IsValid(self.Owner) then return end - - if self.dt.Charging then - local vel = self.Owner:GetVelocity():LengthSqr() - - if self.Owner:Crouching() then - self.Owner:ConCommand("-duck") - end - - if not self.MaxSpeed or vel > self.MaxSpeed then - self.MaxSpeed = vel - end - - local cap = self.MaxSpeed * 0.8 * 0.8 - - if vel < cap then - --print("below minimum speed, performing trace check") - self:MeleeAttack() - if not self.dt.Charging then - return - end - end - - if CurTime() > self.dt.NextEndCharge then - self:StopCharging() - return - end - - local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration - local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) - - if p0 < 0.33 and self.ChargeState == 1 then - GAMEMODE:StartCritBoost(self.Owner, "melee") - self.ChargeState = 2 - - if not self.CritStartSoundEnt then - self.CritStartSoundEnt = CreateSound(self, self.CritStartSound) - end - if self.CritStartSoundEnt then - self.CritStartSoundEnt:Play() - end - elseif p0 < 0.66 and not self.ChargeState then - GAMEMODE:StartMiniCritBoost(self.Owner, "melee") - self.ChargeState = 1 - end - elseif not self.dt.Ready then - if CurTime() > self.dt.NextEndCharge then - self.dt.Ready = true - umsg.Start("PlayChargeReadySound", self.Owner) - umsg.End() - end - - self.MaxSpeed = nil - self.ChargeState = nil - end - - if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then - GAMEMODE:StopCritBoost(self.Owner) - self.NextEndCritBoost = nil - end - - if self.Owner:KeyDown(IN_ATTACK2) and self.dt.Ready then - if self.Owner:OnGround() then - if self.Owner:Crouching() then - self.Owner:ConCommand("-duck") - end - self:StartCharging() - end - end - - self:NextThink(CurTime()) - return true -end - -end - -hook.Add("Move", "TargeChargeMove", function(pl, move) - local t = pl.TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - move:SetForwardSpeed(pl:GetRealClassSpeed()) - move:SetSideSpeed(0) - end -end) - -hook.Add("SetupMove", "TargeChargeSetupMove", function(pl, move) - local t = pl.TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - -- This is already done clientside by CreateMove - if SERVER then - local ang = pl:EyeAngles() - if pl.SavedTargeAngle then - local oldyaw = pl.SavedTargeAngle.y - - ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) - pl:SetEyeAngles(ang) - end - pl.SavedTargeAngle = ang - end - - move:SetSideSpeed(0) - else - pl.SavedTargeAngle = nil - end -end) diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_wearable_item_demoshield/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_wearable_item_demoshield/shared.lua deleted file mode 100644 index b58b1b56f..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_wearable_item_demoshield/shared.lua +++ /dev/null @@ -1,491 +0,0 @@ - -local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) - -ENT.Type = "anim" -ENT.Base = "tf_wearable_item" - -ENT.MeleeRange = 50 - -ENT.ForceMultiplier = 10000 -ENT.CritForceMultiplier = 10000 -ENT.ForceAddPitch = 0 -ENT.CritForceAddPitch = 0 - -ENT.DefaultBaseDamage = 50 -ENT.DamagePerHead = 10 ---ENT.MaxHeads = 5 - -ENT.BaseDamage = 50 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 - -ENT.HitPlayerSound = Sound("DemoCharge.HitFlesh") -ENT.HitPlayerRangeSound = Sound("DemoCharge.HitFleshRange") -ENT.HitWorldSound = Sound("DemoCharge.HitWorld") - -ENT.CritStartSound = Sound("DemoCharge.ChargeCritOn") -ENT.CritStopSound = Sound("DemoCharge.ChargeCritOff") - -ENT.DefaultChargeDuration = 1.5 -ENT.ChargeCooldownDuration = 12 - -ENT.ChargeSteerConstraint = 0.3 - -function ENT:SetupDataTables() - self.BaseClass.SetupDataTables(self) - self:DTVar("Bool", 0, "Charging") - self:DTVar("Bool", 1, "Ready") - self:DTVar("Float", 0, "NextEndCharge") - self:DTVar("Float", 1, "AdditiveChargeDuration") - self:DTVar("Float", 2, "ChargeCooldownMultiplier") -end - -if CLIENT then - -ENT.GlobalCustomHUD = {HudDemomanCharge = true} - -function ENT:InitializeCModel(weapon) - local vm = self.Owner:GetViewModel() - - if IsValid(vm) then - self.CModel = ClientsideModel(self.Model) - if not IsValid(self.CModel) then return end - - self.CModel:SetPos(vm:GetPos()) - self.CModel:SetAngles(vm:GetAngles()) - self.CModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) - self.CModel:SetParent(vm) - self.CModel:SetNoDraw(true) - end -end - -function ENT:Think() - self.BaseClass.Think(self) - - if not self.Initialized then - self.Initialized = true - if IsValid(self.Owner) then - self.Owner.TargeEntity = self - if self.Owner == LocalPlayer() then - HudDemomanPipes:SetProgress(1) - HudDemomanPipes:SetChargeStatus(0) - end - end - end - - if self.Owner == LocalPlayer() then - if self.dt.Charging then - if not self.ChargeDuration then - self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration - end - - local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration - local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) - - if p0 < 0.33 then - HudDemomanPipes:SetChargeStatus(3) - elseif p0 < 0.66 then - HudDemomanPipes:SetChargeStatus(2) - else - HudDemomanPipes:SetChargeStatus(1) - end - - HudDemomanPipes:SetProgress(p) - else - HudDemomanPipes:SetChargeStatus(0) - if self.dt.Ready then - HudDemomanPipes:SetProgress(1) - else - self.ChargeDuration = nil - - local cooldown = self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier - local p = 1 - (self.dt.NextEndCharge - CurTime()) / cooldown - HudDemomanPipes:SetProgress(p) - end - end - end -end - -hook.Add("PlayerBindPress", "TargeChargeBindPress", function(pl, cmd, down) - local t = LocalPlayer().TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - if string.find(cmd, "+jump") then - return true - elseif string.find(cmd, "+duck") then - return true - end - end -end) - -hook.Add("CreateMove", "TargeChargeCreateMove", function(cmd) - local t = LocalPlayer().TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - local ang = cmd:GetViewAngles() - if LocalPlayer().SavedTargeAngle then - local oldyaw = LocalPlayer().SavedTargeAngle.y - - ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) - cmd:SetViewAngles(ang) - end - LocalPlayer().SavedTargeAngle = ang - else - LocalPlayer().SavedTargeAngle = nil - end -end) - -end - -if SERVER then - -AddCSLuaFile("shared.lua") - -function ENT:CanChargeThrough(ent) - if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then - return (ent:GetPhysicsObject():IsValid() and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or - (ent:GetMaxHealth() > 1) - elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then - return ent:GetMaxHealth() > 1 - elseif ent:GetClass() == "func_breakable" then - return true - end - - return false -end - --- Open the area portal linked to this door entity -local function OpenLinkedAreaPortal(ent) - local name = ent:GetName() - if not name or name == "" then return end - - for _,v in pairs(ents.FindByClass("func_areaportal")) do - if v.TargetDoorName == name then - v:Fire("Open") - end - end -end - -function ENT:MeleeAttack() - if not IsValid(self.Owner) then return end - - local pos = self.Owner:GetShootPos() - local ang = self.Owner:EyeAngles() - ang.p = 0 - local endpos = pos + ang:Forward() * self.MeleeRange - - local hitent, hitpos, dmginfo, dir - - --self.Owner:LagCompensation(true) - - local tr = util.TraceLine { - start = pos, - endpos = endpos, - filter = self.Owner - } - - if not tr.Hit then - local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) - - tr = util.TraceHull { - start = pos, - endpos = endpos, - filter = self.Owner, - - mins = mins, - maxs = maxs, - } - end - - --self.Owner:LagCompensation(false) - - if tr.Entity and tr.Entity:IsValid() then - if self.Owner:IsFriendly(tr.Entity) or self.Owner:GetSolid() == SOLID_NONE then - return - end - - local ang = self.Owner:EyeAngles() - dir = ang:Forward() - hitpos = tr.Entity:NearestPoint(self.Owner:GetShootPos()) - 2 * dir - tr.HitPos = hitpos - - if self.Owner:CanDamage(tr.Entity) then - local pitch, mul, dmgtype - - dmgtype = DMG_SLASH - pitch, mul = self.ForceAddPitch, self.ForceMultiplier - - ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) - local force_dir = ang:Forward() - - --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self.Owner:GetNWInt("Heads"), self.MaxHeads) - self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self.Owner:GetNWInt("Heads") - - local dmg = tf_util.CalculateDamage(self, hitpos) - - dmginfo = DamageInfo() - dmginfo:SetAttacker(self.Owner) - dmginfo:SetInflictor(self) - dmginfo:SetDamage(dmg) - dmginfo:SetDamageType(dmgtype) - dmginfo:SetDamagePosition(hitpos) - dmginfo:SetDamageForce(dmg * force_dir * mul) - tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = tr.Entity:GetPhysicsObject() - if phys and phys:IsValid() then - tr.Entity:SetPhysicsAttacker(self.Owner) - end - end - - if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then - if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then - sound.Play(self.HitPlayerRangeSound, self.Owner:GetPos()) - self.NextRangeSound = CurTime() + 1 - else - sound.Play(self.HitPlayerSound, self.Owner:GetPos()) - end - else - sound.Play(self.HitWorldSound, self.Owner:GetPos()) - end - elseif tr.HitWorld then - sound.Play(self.HitWorldSound, self.Owner:GetPos()) - else - return - end - - util.ScreenShake(self:GetPos(), 10, 5, 1, 512) - - if not tr.HitWorld then - if self.Owner.TempAttributes.ChargeIsUnstoppable then - return - end - - if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then - if self:CanChargeThrough(tr.Entity) then - return - elseif tr.Entity:GetClass() == "prop_door_rotating" then - local p = ents.Create("prop_physics") - p:SetModel(tr.Entity:GetModel()) - p:SetBodygroup(1, 1) - p:SetSkin(tr.Entity:GetSkin()) - p:SetPos(tr.Entity:GetPos()) - p:SetAngles(tr.Entity:GetAngles()) - - OpenLinkedAreaPortal(tr.Entity) - tr.Entity:Remove() - p:Spawn() - - p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = p:GetPhysicsObject() - if phys and phys:IsValid() then - p:SetPhysicsAttacker(self.Owner) - end - - return - elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) - and tr.Entity:GetParent():GetClass()=="func_door_rotating" then - local door = tr.Entity:GetParent() - - local p = ents.Create("prop_physics") - p:SetModel(tr.Entity:GetModel()) - p:SetSkin(tr.Entity:GetSkin()) - p:SetPos(tr.Entity:GetPos()) - p:SetAngles(tr.Entity:GetAngles()) - - OpenLinkedAreaPortal(door) - door:Remove() - p:Spawn() - - p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = p:GetPhysicsObject() - if phys and phys:IsValid() then - p:SetPhysicsAttacker(self.Owner) - end - - return - end - end - end - - local vel = self.Owner:GetVelocity() - local right = self.Owner:EyeAngles():Right() - local side = vel:DotProduct(right) - - self.Owner:SetVelocity(-side * right) - - self:StopCharging() -end - -function ENT:Initialize() - self.BaseClass.Initialize(self) - if IsValid(self.Owner) then - self.Owner.TargeEntity = self - end - self.dt.Charging = false - self.dt.Ready = true - self.dt.ChargeCooldownMultiplier = 1 -end - -function ENT:StartCharging() - if not self.ChargeDuration then - self.dt.AdditiveChargeDuration = self.Owner.TempAttributes.AdditiveChargeDuration or 0 - self.dt.ChargeCooldownMultiplier = self.Owner.TempAttributes.ChargeCooldownMultiplier or 1 - self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration - end - - self.dt.Ready = false - self.dt.Charging = true - self.dt.NextEndCharge = CurTime() + self.ChargeDuration - self.SpeedBonus = 2.69 - self.Owner:ResetClassSpeed() - self.Owner:SetJumpPower(0) - - if not self.ChargeSoundEnt then - self.ChargeSoundEnt = CreateSound(self.Owner, "DemoCharge.Charging") - end - - if self.ChargeSoundEnt then - self.ChargeSoundEnt:Play() - end -end - -function ENT:StopCharging() - self.ChargeDuration = nil - self.dt.Ready = false - self.dt.Charging = false - self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier - self.SpeedBonus = nil - self.Owner:ResetClassSpeed() - - if self.ChargeSoundEnt then - self.ChargeSoundEnt:Stop() - self.ChargeSoundEnt = nil - end - - if self.ChargeState then - if self.ChargeState == 2 then - if self.CritStartSoundEnt then - self.CritStartSoundEnt:Stop() - self.CritStartSoundEnt = nil - self.Owner:EmitSound(self.CritStopSound) - end - end - - self.NextEndCritBoost = CurTime() + 0.4 - end -end - -function ENT:OnMeleeSwing() - if self.dt.Charging then - self:StopCharging() - end -end - -function ENT:Think() - if not IsValid(self.Owner) then return end - - if self.dt.Charging then - local vel = self.Owner:GetVelocity():LengthSqr() - - if self.Owner:Crouching() then - self.Owner:ConCommand("-duck") - end - - if not self.MaxSpeed or vel > self.MaxSpeed then - self.MaxSpeed = vel - end - - local cap = self.MaxSpeed * 0.8 * 0.8 - - if vel < cap then - --print("below minimum speed, performing trace check") - self:MeleeAttack() - if not self.dt.Charging then - return - end - end - - if CurTime() > self.dt.NextEndCharge then - self:StopCharging() - return - end - - local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration - local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) - - if p0 < 0.33 and self.ChargeState == 1 then - GAMEMODE:StartCritBoost(self.Owner, "melee") - self.ChargeState = 2 - - if not self.CritStartSoundEnt then - self.CritStartSoundEnt = CreateSound(self, self.CritStartSound) - end - if self.CritStartSoundEnt then - self.CritStartSoundEnt:Play() - end - elseif p0 < 0.66 and not self.ChargeState then - GAMEMODE:StartMiniCritBoost(self.Owner, "melee") - self.ChargeState = 1 - end - elseif not self.dt.Ready then - if CurTime() > self.dt.NextEndCharge then - self.dt.Ready = true - umsg.Start("PlayChargeReadySound", self.Owner) - umsg.End() - end - - self.MaxSpeed = nil - self.ChargeState = nil - end - - if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then - GAMEMODE:StopCritBoost(self.Owner) - self.NextEndCritBoost = nil - print("!?!") - end - - if self.Owner:KeyDown(IN_ATTACK2) and self.dt.Ready then - if self.Owner:OnGround() then - if self.Owner:Crouching() then - self.Owner:ConCommand("-duck") - end - self:StartCharging() - end - end - - self:NextThink(CurTime()) - return true -end - -end - -hook.Add("Move", "TargeChargeMove", function(pl, move) - local t = pl.TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - move:SetForwardSpeed(pl:GetRealClassSpeed()) - move:SetSideSpeed(0) - end -end) - -hook.Add("SetupMove", "TargeChargeSetupMove", function(pl, move) - local t = pl.TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - -- This is already done clientside by CreateMove - if SERVER then - local ang = pl:EyeAngles() - if pl.SavedTargeAngle then - local oldyaw = pl.SavedTargeAngle.y - - ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) - pl:SetEyeAngles(ang) - end - pl.SavedTargeAngle = ang - end - - move:SetSideSpeed(0) - else - pl.SavedTargeAngle = nil - end -end) diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_wearable_item_hylianshield/shared.lua b/addon/gamemodes/teamfortress/entities/entities/tf_wearable_item_hylianshield/shared.lua deleted file mode 100644 index 626df5615..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/tf_wearable_item_hylianshield/shared.lua +++ /dev/null @@ -1,352 +0,0 @@ - -local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) - -ENT.Type = "anim" -ENT.Base = "tf_wearable_item" - -ENT.MeleeRange = 0 - -ENT.ForceMultiplier = 10000 -ENT.CritForceMultiplier = 10000 -ENT.ForceAddPitch = 20 -ENT.CritForceAddPitch = 0 - -ENT.DefaultBaseDamage = 50 -ENT.DamagePerHead = 10 ---ENT.MaxHeads = 5 - -ENT.BaseDamage = 0 -ENT.DamageRandomize = 0.1 -ENT.MaxDamageRampUp = 0 -ENT.MaxDamageFalloff = 0 - -ENT.HitPlayerSound = Sound("") -ENT.HitPlayerRangeSound = Sound("") -ENT.HitWorldSound = Sound("") - -ENT.CritStartSound = Sound("") -ENT.CritStopSound = Sound("") - -ENT.DefaultChargeDuration = 0 -ENT.ChargeCooldownDuration = 0 - -ENT.ChargeSteerConstraint = 9999 - -function ENT:SetupDataTables() - self.BaseClass.SetupDataTables(self) - self:DTVar("Bool", 0, "Charging") - self:DTVar("Bool", 1, "Ready") - self:DTVar("Float", 0, "NextEndCharge") - self:DTVar("Float", 1, "AdditiveChargeDuration") - self:DTVar("Float", 2, "ChargeCooldownMultiplier") -end - -if CLIENT then - -function ENT:InitializeCModel(weapon) - local vm = self.Owner:GetViewModel() - - if IsValid(vm) then - self.CModel = ClientsideModel(self.Model) - if not IsValid(self.CModel) then return end - - self.CModel:SetPos(vm:GetPos()) - self.CModel:SetAngles(vm:GetAngles()) - self.CModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) - self.CModel:SetParent(vm) - self.CModel:SetNoDraw(true) - end -end - -function ENT:Think() - self.BaseClass.Think(self) - - if not self.Initialized then - self.Initialized = true - if IsValid(self.Owner) then - self.Owner.TargeEntity = self - if self.Owner == LocalPlayer() then - HudDemomanPipes:SetProgress(1) - HudDemomanPipes:SetChargeStatus(0) - end - end - end - - if self.Owner == LocalPlayer() then - if self.dt.Charging then - return nil - end - end -end - -hook.Add("CreateMove", "TargeChargeCreateMove", function(cmd) - local t = LocalPlayer().TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - local ang = cmd:GetViewAngles() - if LocalPlayer().SavedTargeAngle then - local oldyaw = LocalPlayer().SavedTargeAngle.y - - ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) - cmd:SetViewAngles(ang) - end - LocalPlayer().SavedTargeAngle = ang - else - LocalPlayer().SavedTargeAngle = nil - end -end) - -end - -if SERVER then - -AddCSLuaFile("shared.lua") - -function ENT:CanChargeThrough(ent) - if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then - return (ent:GetPhysicsObject():IsValid() and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or - (ent:GetMaxHealth() > 1) - elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then - return ent:GetMaxHealth() > 1 - elseif ent:GetClass() == "func_breakable" then - return true - end - - return false -end - -function ENT:MeleeAttack() - if not IsValid(self.Owner) then return end - - local pos = self.Owner:GetShootPos() - local ang = self.Owner:EyeAngles() - ang.p = 0 - local endpos = pos + ang:Forward() * self.MeleeRange - - local hitent, hitpos, dmginfo - - --self.Owner:LagCompensation(true) - - local tr = util.TraceLine { - start = pos, - endpos = endpos, - filter = self.Owner - } - - if not tr.Hit then - local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) - - tr = util.TraceHull { - start = pos, - endpos = endpos, - filter = self.Owner, - - mins = mins, - maxs = maxs, - } - end - - --self.Owner:LagCompensation(false) - - if tr.Entity and tr.Entity:IsValid() then - if self.Owner:IsFriendly(tr.Entity) or self.Owner:GetSolid() == SOLID_NONE then - return - end - - local ang = self.Owner:EyeAngles() - local dir = ang:Forward() - hitpos = tr.Entity:NearestPoint(self.Owner:GetShootPos()) - 2 * dir - tr.HitPos = hitpos - - if self.Owner:CanDamage(tr.Entity) then - local pitch, mul, dmgtype - - dmgtype = DMG_SLASH - pitch, mul = self.ForceAddPitch, self.ForceMultiplier - - ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) - local force_dir = ang:Forward() - - --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self.Owner:GetNWInt("Heads"), self.MaxHeads) - self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self.Owner:GetNWInt("Heads") - - local dmg = tf_util.CalculateDamage(self, hitpos) - - dmginfo = DamageInfo() - dmginfo:SetAttacker(self.Owner) - dmginfo:SetInflictor(self) - dmginfo:SetDamage(dmg) - dmginfo:SetDamageType(dmgtype) - dmginfo:SetDamagePosition(hitpos) - dmginfo:SetDamageForce(dmg * force_dir * mul) - tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = tr.Entity:GetPhysicsObject() - if phys and phys:IsValid() then - tr.Entity:SetPhysicsAttacker(self.Owner) - end - end - - if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then - if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then - sound.Play(self.HitPlayerRangeSound, self.Owner:GetPos()) - self.NextRangeSound = CurTime() + 1 - else - sound.Play(self.HitPlayerSound, self.Owner:GetPos()) - end - else - sound.Play(self.HitWorldSound, self.Owner:GetPos()) - end - elseif tr.HitWorld then - sound.Play(self.HitWorldSound, self.Owner:GetPos()) - else - return - end - - util.ScreenShake(self:GetPos(), 10, 5, 1, 512) - - if not tr.HitWorld then - if self.Owner.TempAttributes.ChargeIsUnstoppable then - return - end - - if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then - print("charge hit", tr.Entity, tr.Entity:Health(), tr.Entity:GetMaxHealth(), self:CanChargeThrough(tr.Entity)) - if self:CanChargeThrough(tr.Entity) then - return - --[[elseif tr.Entity:GetClass() == "prop_door_rotating" then - local p = ents.Create("prop_physics") - p:SetModel(tr.Entity:GetModel()) - p:SetBodygroup(1, 1) - p:SetSkin(tr.Entity:GetSkin()) - p:SetPos(tr.Entity:GetPos()) - p:SetAngles(tr.Entity:GetAngles()) - tr.Entity:Remove() - p:Spawn() - - p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = p:GetPhysicsObject() - if phys and phys:IsValid() then - p:SetPhysicsAttacker(self.Owner) - end - - return - elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) - and tr.Entity:GetParent():GetClass()=="func_door_rotating" then - local door = tr.Entity:GetParent() - - local p = ents.Create("prop_physics") - p:SetModel(door:GetModel()) - p:SetSkin(door:GetSkin()) - p:SetPos(door:GetPos()) - p:SetAngles(door:GetAngles()) - door:Remove() - p:Spawn() - - p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - - local phys = p:GetPhysicsObject() - if phys and phys:IsValid() then - p:SetPhysicsAttacker(self.Owner) - end - - return]] - end - end - end - - local vel = self.Owner:GetVelocity() - local right = self.Owner:EyeAngles():Right() - local side = vel:DotProduct(right) - - self.Owner:SetVelocity(-side * right) - - self:StopCharging() -end - -function ENT:Initialize() - self.BaseClass.Initialize(self) - if IsValid(self.Owner) then - self.Owner.TargeEntity = self - end - self.dt.Charging = false - self.dt.Ready = true - self.dt.ChargeCooldownMultiplier = 1 -end - -function ENT:StartCharging() - if not self.ChargeDuration then - return nil - end - - if not self.ChargeSoundEnt then - return nil - end - - if self.ChargeSoundEnt then - return nil - end -end - -function ENT:StopCharging() - - if self.ChargeSoundEnt then - return nil - end - - if self.ChargeState then - return nil - end -end - -function ENT:OnMeleeSwing() - if self.dt.Charging then - self:StopCharging() - end -end - -function ENT:Think() - if not IsValid(self.Owner) then return end - - if self.dt.Charging then - return nil - end - - if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then - return nil - end - - self:NextThink(CurTime()) - return true -end - -end - -hook.Add("Move", "TargeChargeMove", function(pl, move) - local t = pl.TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - move:SetForwardSpeed(pl:GetRealClassSpeed()) - move:SetSideSpeed(0) - end -end) - -hook.Add("SetupMove", "TargeChargeSetupMove", function(pl, move) - local t = pl.TargeEntity - if IsValid(t) and t.dt and t.dt.Charging then - -- This is already done clientside by CreateMove - if SERVER then - local ang = pl:EyeAngles() - if pl.SavedTargeAngle then - local oldyaw = pl.SavedTargeAngle.y - - ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) - pl:SetEyeAngles(ang) - end - pl.SavedTargeAngle = ang - end - - move:SetSideSpeed(0) - else - pl.SavedTargeAngle = nil - end -end) diff --git a/addon/gamemodes/teamfortress/entities/entities/trigger_capture_area/init.lua b/addon/gamemodes/teamfortress/entities/entities/trigger_capture_area/init.lua deleted file mode 100644 index b3a7a75d1..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/trigger_capture_area/init.lua +++ /dev/null @@ -1,64 +0,0 @@ -ENT.Base = "base_brush" -ENT.Type = "brush" - -function ENT:Initialize() -end - -function ENT:InitPostEntity() - print(self) - self.CapturePoint = ents.FindByName(self.Properties.area_cap_point or "")[1] or NULL - - if IsValid(self.CapturePoint) then - self.CapturePoint.TriggerEntity = self - self.CapturePoint.TeamCanCap = { - [2]=(self.Properties.team_cancap_2==1), - [3]=(self.Properties.team_cancap_3==1), - } - end - - PrintTable(self.Properties or {}) -end - -function ENT:KeyValue(key,value) - key = string.lower(key) - - if not self.Properties then - self.Properties = {} - end - if tonumber(value) then value=tonumber(value) end - self.Properties[key] = value -end - -function ENT:Think() - if not GAMEMODE.PostEntityDone then return end - if GAMEMODE.PostEntityDone and not self.PostEntityDone then - self:InitPostEntity() - self.PostEntityDone = true - return - end -end - -function ENT:AcceptInput(name, activator, caller, data) - -end - -function ENT:StartTouch(ent) - if IsValid(self.CapturePoint) and ent:IsPlayer() then - if ent.CurrentControlPoint ~= self.CapturePoint.ID then - ent.CurrentControlPoint = self.CapturePoint.ID - umsg.Start("TF_EnterControlPoint", ent) - umsg.Char(ent.CurrentControlPoint) - umsg.End() - end - end -end - -function ENT:EndTouch(ent) - if IsValid(self.CapturePoint) and ent:IsPlayer() then - if ent.CurrentControlPoint == self.CapturePoint.ID then - ent.CurrentControlPoint = -1 - umsg.Start("TF_ExitControlPoint", ent) - umsg.End() - end - end -end diff --git a/addon/gamemodes/teamfortress/entities/entities/trigger_checkpoint/init.lua b/addon/gamemodes/teamfortress/entities/entities/trigger_checkpoint/init.lua deleted file mode 100644 index 5f0278c49..000000000 --- a/addon/gamemodes/teamfortress/entities/entities/trigger_checkpoint/init.lua +++ /dev/null @@ -1,79 +0,0 @@ -// Entity information -ENT.Base = "base_anim" -ENT.Type = "anim" - - -// Called when the entity first spawns -function ENT:Initialize() - self.ipsLocation = Vector(self.pos.x, self.pos.y, self.min.z + 8) - - local w = self.max.x - self.min.x - local l = self.max.y - self.min.y - local h = self.max.z - self.min.z - - local min = Vector(0 - (w / 2), 0 - (l / 2), 0 - (h / 2)) - local max = Vector(w / 2, l / 2, h / 2) - - self:DrawShadow(false) - self:SetCollisionBounds(min, max) - self:SetSolid(SOLID_BBOX) - self:SetCollisionGroup(COLLISION_GROUP_WORLD) - self:SetMoveType(0) - self:SetTrigger(true) -end - - -// Called when an entity touches it -function ENT:StartTouch(ent) - if ent && ent:IsValid() && ent:IsPlayer() && ent:Team() == TEAM_ALIVE && !self.triggered then - self.triggered = true - - if self.OnTouchRun then - self:OnTouchRun() - end - - local ang = ent:GetAngles() - - if !self.skipSpawnpoint then - GAMEMODE:CreateSpawnPoint(self.ipsLocation, ang.y) - end - - for _, pl in pairs(player.GetAll()) do - if pl && pl:IsValid() && pl != ent && pl:Team() == TEAM_ALIVE then - if pl:GetVehicle() && pl:GetVehicle():IsValid() then - // This just causes mayhem. - -- pl:GetVehicle():SetPos(self.ipsLocation) - -- pl:GetVehicle():SetAngles(ang) - pl:ExitVehicle() -- Make the player exit the vehicle and then teleport. - pl:SetPos(self.ipsLocation) - pl:SetAngles(ang) - else - pl:SetPos(self.ipsLocation) - pl:SetAngles(ang) - end - end - end - - // We're going to allow checkpoint respawning now. It gets out of hand when players are dead forever. - if GetConVarNumber("hl2c_classic") == 0 then - GAMEMODE:HL2CForceRespawn() - end - - table.remove(checkpointPositions, 1) - if checkpointPositions[1] then - if GetConVarNumber("hl2c_use_old_umsg") >= 1 then - umsg.Start("SetCheckpointPosition", RecipientFilter():AddAllPlayers()) - umsg.Vector(checkpointPositions[1]) - umsg.End() - elseif GetConVarNumber("hl2c_use_old_umsg") == 0 then - for _, pl in pairs(player.GetAll()) do - net.Start("SetCheckpointPosition") - net.WriteVector(checkpointPositions[1]) - net.Send(pl) - end - end - end - - self:Remove() - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/cl_init.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/cl_init.lua deleted file mode 100644 index 99adc4974..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/cl_init.lua +++ /dev/null @@ -1,167 +0,0 @@ - -local gmod_drawhelp = CreateClientConVar( "gmod_drawhelp", "1", true, false ) -gmod_toolmode = CreateClientConVar( "gmod_toolmode", "rope", true, true ) - -include('shared.lua') -include('cl_viewscreen.lua') - -SWEP.PrintName = "Tool Gun" -SWEP.Slot = 5 -SWEP.SlotPos = 6 -SWEP.DrawAmmo = false -SWEP.DrawCrosshair = true - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false - -SWEP.WepSelectIcon = surface.GetTextureID( "vgui/gmod_tool" ) -SWEP.Gradient = surface.GetTextureID( "gui/gradient" ) -SWEP.InfoIcon = surface.GetTextureID( "gui/info" ) - -SWEP.ToolNameHeight = 0 -SWEP.InfoBoxHeight = 0 - -surface.CreateFont( "GModToolName", -{ - font = "Roboto Bk", - size = 80, - weight = 1000 -}) - -surface.CreateFont( "GModToolSubtitle", -{ - font = "Roboto Bk", - size = 24, - weight = 1000 -}) - -surface.CreateFont( "GModToolHelp", -{ - font = "Roboto Bk", - size = 17, - weight = 1000 -}) - - ---[[--------------------------------------------------------- - Draws the help on the HUD (disabled if gmod_drawhelp is 0) ------------------------------------------------------------]] -function SWEP:DrawHUD() - - if ( !gmod_drawhelp:GetBool() ) then return end - - local mode = gmod_toolmode:GetString() - - -- Don't draw help for a nonexistant tool! - if ( !self:GetToolObject() ) then return end - - self:GetToolObject():DrawHUD() - - - -- This could probably all suck less than it already does - - - local x, y = 50, 40 - local w, h = 0, 0 - - local TextTable = {} - local QuadTable = {} - - QuadTable.texture = self.Gradient - QuadTable.color = Color( 10, 10, 10, 180 ) - - QuadTable.x = 0 - QuadTable.y = y-8 - QuadTable.w = 600 - QuadTable.h = self.ToolNameHeight - (y-8) - draw.TexturedQuad( QuadTable ) - - TextTable.font = "GModToolName" - TextTable.color = Color( 240, 240, 240, 255 ) - TextTable.pos = { x, y } - TextTable.text = "#tool."..mode..".name" - - w, h = draw.TextShadow( TextTable, 2 ) - y = y + h - - TextTable.font = "GModToolSubtitle" - TextTable.pos = { x, y } - TextTable.text = "#tool."..mode..".desc" - w, h = draw.TextShadow( TextTable, 1 ) - y = y + h + 8 - - self.ToolNameHeight = y - - --y = y + 4 - - QuadTable.x = 0 - QuadTable.y = y - QuadTable.w = 600 - QuadTable.h = self.InfoBoxHeight - local alpha = math.Clamp( 255 + (self:GetToolObject().LastMessage - CurTime())*800, 10, 255 ) - QuadTable.color = Color( alpha, alpha, alpha, 230 ) - draw.TexturedQuad( QuadTable ) - - y = y + 4 - - TextTable.font = "GModToolHelp" - TextTable.pos = { x + self.InfoBoxHeight, y } - TextTable.text = self:GetToolObject():GetHelpText() - w, h = draw.TextShadow( TextTable, 1 ) - - surface.SetDrawColor( 255, 255, 255, 255 ) - surface.SetTexture( self.InfoIcon ) - surface.DrawTexturedRect( x+1, y+1, h-3, h-3 ) - - self.InfoBoxHeight = h + 8 - -end - -function SWEP:SetStage( ... ) - - if ( !self:GetToolObject() ) then return end - return self:GetToolObject():SetStage( ... ) - -end - -function SWEP:GetStage( ... ) - - if ( !self:GetToolObject() ) then return end - return self:GetToolObject():GetStage( ... ) - -end - -function SWEP:ClearObjects( ... ) - - if ( !self:GetToolObject() ) then return end - self:GetToolObject():ClearObjects( ... ) - -end - -function SWEP:StartGhostEntities( ... ) - - if ( !self:GetToolObject() ) then return end - self:GetToolObject():StartGhostEntities( ... ) - -end - -function SWEP:PrintWeaponInfo( x, y, alpha ) -end - -function SWEP:FreezeMovement() - - local mode = self:GetMode() - - if ( !self:GetToolObject() ) then return false end - - return self:GetToolObject():FreezeMovement() - -end - -function SWEP:OnReloaded() - - -- TODO: Reload the tool control panels - -- controlpanel.Clear() - -end - diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/cl_viewscreen.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/cl_viewscreen.lua deleted file mode 100644 index c92551055..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/cl_viewscreen.lua +++ /dev/null @@ -1,87 +0,0 @@ - - -local matScreen = Material( "models/weapons/v_toolgun/screen" ) -local txidScreen = surface.GetTextureID( "models/weapons/v_toolgun/screen" ) -local txRotating = surface.GetTextureID( "pp/fb" ) - -local txBackground = surface.GetTextureID( "models/weapons/v_toolgun/screen_bg" ) - - --- GetRenderTarget returns the texture if it exists, or creates it if it doesn't -local RTTexture = GetRenderTarget( "GModToolgunScreen", 256, 256 ) - -surface.CreateFont( "GModToolScreen", -{ - font = "Helvetica", - size = 60, - weight = 900 -}) - - -local function DrawScrollingText( text, y, texwide ) - - local w, h = surface.GetTextSize( text ) - w = w + 64 - - local x = math.fmod( CurTime() * 400, w ) * -1; - - while ( x < texwide ) do - - surface.SetTextColor( 0, 0, 0, 255 ) - surface.SetTextPos( x + 3, y + 3 ) - surface.DrawText( text ) - - surface.SetTextColor( 255, 255, 255, 255 ) - surface.SetTextPos( x, y ) - surface.DrawText( text ) - - x = x + w - - end - -end - ---[[--------------------------------------------------------- - We use this opportunity to draw to the toolmode - screen's rendertarget texture. ------------------------------------------------------------]] -function SWEP:RenderScreen() - - local TEX_SIZE = 256 - local mode = gmod_toolmode:GetString() - local NewRT = RTTexture - local oldW = ScrW() - local oldH = ScrH() - - -- Set the material of the screen to our render target - matScreen:SetTexture( "$basetexture", NewRT ) - - local OldRT = render.GetRenderTarget(); - - -- Set up our view for drawing to the texture - render.SetRenderTarget( NewRT ) - render.SetViewPort( 0, 0, TEX_SIZE, TEX_SIZE ) - cam.Start2D() - - -- Background - surface.SetDrawColor( 255, 255, 255, 255 ) - surface.SetTexture( txBackground ) - surface.DrawTexturedRect( 0, 0, TEX_SIZE, TEX_SIZE ) - - -- Give our toolmode the opportunity to override the drawing - if ( self:GetToolObject() && self:GetToolObject().DrawToolScreen ) then - - self:GetToolObject():DrawToolScreen( TEX_SIZE, TEX_SIZE ) - - else - - surface.SetFont( "GModToolScreen" ) - DrawScrollingText( "#tool."..mode..".name", 64, TEX_SIZE ) - - end - - cam.End2D() - render.SetRenderTarget( OldRT ) - render.SetViewPort( 0, 0, oldW, oldH ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/ghostentity.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/ghostentity.lua deleted file mode 100644 index 15d3399a3..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/ghostentity.lua +++ /dev/null @@ -1,118 +0,0 @@ - ---[[--------------------------------------------------------- - Starts up the ghost entity - The most important part of this is making sure it gets deleted properly ------------------------------------------------------------]] -function ToolObj:MakeGhostEntity( model, pos, angle ) - - util.PrecacheModel( model ) - - -- We do ghosting serverside in single player - -- It's done clientside in multiplayer - if (SERVER && !game.SinglePlayer()) then return end - if (CLIENT && game.SinglePlayer()) then return end - - -- Release the old ghost entity - self:ReleaseGhostEntity() - - -- Don't allow ragdolls/effects to be ghosts - if (!util.IsValidProp( model )) then return end - - if ( CLIENT ) then - self.GhostEntity = ents.CreateClientProp( model ) - else - self.GhostEntity = ents.Create( "prop_physics" ) - end - - -- If there's too many entities we might not spawn.. - if (!self.GhostEntity:IsValid()) then - self.GhostEntity = nil - return - end - - self.GhostEntity:SetModel( model ) - self.GhostEntity:SetPos( pos ) - self.GhostEntity:SetAngles( angle ) - self.GhostEntity:Spawn() - - self.GhostEntity:SetSolid( SOLID_VPHYSICS ); - self.GhostEntity:SetMoveType( MOVETYPE_NONE ) - self.GhostEntity:SetNotSolid( true ); - self.GhostEntity:SetRenderMode( RENDERMODE_TRANSALPHA ) - self.GhostEntity:SetColor( Color( 255, 255, 255, 150 ) ) - -end - ---[[--------------------------------------------------------- - Starts up the ghost entity - The most important part of this is making sure it gets deleted properly ------------------------------------------------------------]] -function ToolObj:StartGhostEntity( ent ) - - -- We can't ghost ragdolls because it looks like ass - local class = ent:GetClass() - - -- We do ghosting serverside in single player - -- It's done clientside in multiplayer - if (SERVER && !game.SinglePlayer()) then return end - if (CLIENT && game.SinglePlayer()) then return end - - self:MakeGhostEntity( ent:GetModel(), ent:GetPos(), ent:GetAngles() ) - -end - ---[[--------------------------------------------------------- - Releases up the ghost entity ------------------------------------------------------------]] -function ToolObj:ReleaseGhostEntity() - - if ( self.GhostEntity ) then - if (!self.GhostEntity:IsValid()) then self.GhostEntity = nil return end - self.GhostEntity:Remove() - self.GhostEntity = nil - end - - if ( self.GhostEntities ) then - - for k,v in pairs( self.GhostEntities ) do - if ( v:IsValid() ) then v:Remove() end - self.GhostEntities[k] = nil - end - - self.GhostEntities = nil - end - - if ( self.GhostOffset ) then - - for k,v in pairs( self.GhostOffset ) do - self.GhostOffset[k] = nil - end - - end - -end - ---[[--------------------------------------------------------- - Update the ghost entity ------------------------------------------------------------]] -function ToolObj:UpdateGhostEntity() - - if (self.GhostEntity == nil) then return end - if (!self.GhostEntity:IsValid()) then self.GhostEntity = nil return end - - local tr = util.GetPlayerTrace( self:GetOwner() ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - local Ang1, Ang2 = self:GetNormal(1):Angle(), (trace.HitNormal * -1):Angle() - local TargetAngle = self:GetEnt(1):AlignAngles( Ang1, Ang2 ) - - self.GhostEntity:SetPos( self:GetEnt(1):GetPos() ) - self.GhostEntity:SetAngles( TargetAngle ) - - local TranslatedPos = self.GhostEntity:LocalToWorld( self:GetLocalPos(1) ) - local TargetPos = trace.HitPos + (self:GetEnt(1):GetPos() - TranslatedPos) + (trace.HitNormal) - - self.GhostEntity:SetPos( TargetPos ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/init.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/init.lua deleted file mode 100644 index a2e0bb954..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/init.lua +++ /dev/null @@ -1,76 +0,0 @@ -AddCSLuaFile( "cl_init.lua" ) -AddCSLuaFile( "shared.lua" ) -AddCSLuaFile( "ghostentity.lua" ) -AddCSLuaFile( "object.lua" ) -AddCSLuaFile( "stool.lua" ) -AddCSLuaFile( "cl_viewscreen.lua" ) -AddCSLuaFile( "stool_cl.lua" ) - -include('shared.lua') - -SWEP.Weight = 5 -SWEP.AutoSwitchTo = false -SWEP.AutoSwitchFrom = false - ---[[--------------------------------------------------------- - Desc: Convenience function to check object limits ------------------------------------------------------------]] -function SWEP:CheckLimit( str ) - - local ply = self.Weapon:GetOwner() - return ply:CheckLimit( str ) - -end - ---[[--------------------------------------------------------- - Name: ShouldDropOnDie - Desc: Should this weapon be dropped when its owner dies? ------------------------------------------------------------]] -function SWEP:ShouldDropOnDie() - return false -end - ---[[--------------------------------------------------------- - Name: CC_GMOD_Tool - Desc: Console Command to switch weapon/toolmode ------------------------------------------------------------]] -function CC_GMOD_Tool( player, command, arguments ) - - if ( arguments[1] == nil ) then return end - if ( GetConVarNumber( "toolmode_allow_"..arguments[1] ) != 1 ) then return end - - player:ConCommand( "gmod_toolmode "..arguments[1] ) - - local activeWep = player:GetActiveWeapon() - local isTool = (activeWep && activeWep:IsValid() && activeWep:GetClass() == "gmod_tool") - - -- Switch weapons - player:SelectWeapon( "gmod_tool") - - -- Get the weapon and send a fake deploy command - local wep = player:GetWeapon("gmod_tool") - - if (wep:IsValid()) then - - -- Hmmmmm??? - if ( !isTool ) then - wep.wheelModel = nil - end - - -- Holster the old 'tool' - if ( wep.Holster ) then - wep:Holster() - end - - wep.Mode = arguments[1] - - -- Deplot the new - if ( wep.Deploy ) then - wep:Deploy() - end - - end - -end - -concommand.Add( "gmod_tool", CC_GMOD_Tool, nil, nil, { FCVAR_SERVER_CAN_EXECUTE } ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/object.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/object.lua deleted file mode 100644 index 08e242015..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/object.lua +++ /dev/null @@ -1,199 +0,0 @@ - - ---[[--------------------------------------------------------- - Sets which stage a tool is at ------------------------------------------------------------]] -function ToolObj:UpdateData() - - self:SetStage( self:NumObjects() ) - -end - ---[[--------------------------------------------------------- - Sets which stage a tool is at ------------------------------------------------------------]] -function ToolObj:SetStage( i ) - - if ( SERVER ) then - self:GetWeapon():SetNWInt( "Stage", i, true ) - end - -end - ---[[--------------------------------------------------------- - Gets which stage a tool is at ------------------------------------------------------------]] -function ToolObj:GetStage() - return self:GetWeapon():GetNWInt( "Stage", 0 ) -end - ---[[--------------------------------------------------------- ------------------------------------------------------------]] -function ToolObj:GetOperation() - return self:GetWeapon():GetNWInt( "Op", 0 ) -end - ---[[--------------------------------------------------------- ------------------------------------------------------------]] -function ToolObj:SetOperation( i ) - - if ( SERVER ) then - self:GetWeapon():SetNWInt( "Op", i, true ) - end - -end - ---[[--------------------------------------------------------- - ClearObjects - clear the selected objects ------------------------------------------------------------]] -function ToolObj:ClearObjects() - - self:ReleaseGhostEntity() - self.Objects = {} - self:SetStage( 0 ) - self:SetOperation( 0 ) - -end - - ---[[--------------------------------------------------------- - Since we're going to be expanding this a lot I've tried - to add accessors for all of this crap to make it harder - for us to mess everything up. ------------------------------------------------------------]] -function ToolObj:GetEnt( i ) - - if (!self.Objects[i]) then return NULL end - - return self.Objects[i].Ent -end - - ---[[--------------------------------------------------------- - Returns the world position of the numbered object hit - We store it as a local vector then convert it to world - That way even if the object moves it's still valid ------------------------------------------------------------]] -function ToolObj:GetPos( i ) - - if (self.Objects[i].Ent:EntIndex() == 0) then - return self.Objects[i].Pos - else - if (self.Objects[i].Phys ~= nil && self.Objects[i].Phys:IsValid()) then - return self.Objects[i].Phys:LocalToWorld(self.Objects[i].Pos) - else - return self.Objects[i].Ent:LocalToWorld(self.Objects[i].Pos) - end - end - -end - ---[[--------------------------------------------------------- - Returns the local position of the numbered hit ------------------------------------------------------------]] -function ToolObj:GetLocalPos( i ) - return self.Objects[i].Pos -end - - ---[[--------------------------------------------------------- - Returns the physics bone number of the hit (ragdolls) ------------------------------------------------------------]] -function ToolObj:GetBone( i ) - return self.Objects[i].Bone -end - -function ToolObj:GetNormal( i ) - if (self.Objects[i].Ent:EntIndex() == 0) then - return self.Objects[i].Normal - else - local norm - if (self.Objects[i].Phys ~= nil && self.Objects[i].Phys:IsValid()) then - norm = self.Objects[i].Phys:LocalToWorld(self.Objects[i].Normal) - else - norm = self.Objects[i].Ent:LocalToWorld(self.Objects[i].Normal) - end - - return norm - self:GetPos(i) - end -end - - ---[[--------------------------------------------------------- - Returns the physics object for the numbered hit ------------------------------------------------------------]] -function ToolObj:GetPhys( i ) - - if (self.Objects[i].Phys == nil) then - return self:GetEnt(i):GetPhysicsObject() - end - - return self.Objects[i].Phys -end - - ---[[--------------------------------------------------------- - Sets a selected object ------------------------------------------------------------]] -function ToolObj:SetObject( i, ent, pos, phys, bone, norm ) - - self.Objects[i] = {} - self.Objects[i].Ent = ent - self.Objects[i].Phys = phys - self.Objects[i].Bone = bone - self.Objects[i].Normal = norm - - -- Worldspawn is a special case - if (ent:EntIndex() == 0) then - - self.Objects[i].Phys = nil - self.Objects[i].Pos = pos - - else - - norm = norm + pos - - -- Convert the position to a local position - so it's still valid when the object moves - if (phys != nil && phys:IsValid()) then - self.Objects[i].Normal = self.Objects[i].Phys:WorldToLocal(norm) - self.Objects[i].Pos = self.Objects[i].Phys:WorldToLocal(pos) - else - self.Objects[i].Normal = self.Objects[i].Ent:WorldToLocal(norm) - self.Objects[i].Pos = self.Objects[i].Ent:WorldToLocal(pos) - end - - end - - if (SERVER) then - -- Todo: Make sure the client got the same info - end - -end - - ---[[--------------------------------------------------------- - Returns the number of objects in the list ------------------------------------------------------------]] -function ToolObj:NumObjects() - - if ( CLIENT ) then - - return self:GetStage() - - end - - return #self.Objects - -end - - ---[[--------------------------------------------------------- - Returns the number of objects in the list ------------------------------------------------------------]] -function ToolObj:GetHelpText() - - return "#tool."..gmod_toolmode:GetString().."."..self:GetStage() - -end - - diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/shared.lua deleted file mode 100644 index ef3a07abb..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/shared.lua +++ /dev/null @@ -1,360 +0,0 @@ --- Variables that are used on both client and server - -SWEP.Author = "" -SWEP.Contact = "" -SWEP.Purpose = "" -SWEP.Instructions = "" - -SWEP.ViewModel = "models/weapons/c_toolgun.mdl" -SWEP.WorldModel = "models/weapons/w_toolgun.mdl" -SWEP.AnimPrefix = "python" - -SWEP.UseHands = true - --- Be nice, precache the models -util.PrecacheModel( SWEP.ViewModel ) -util.PrecacheModel( SWEP.WorldModel ) - --- Todo, make/find a better sound. -SWEP.ShootSound = Sound( "Airboat.FireGunRevDown" ) - -SWEP.Tool = {} - -SWEP.Primary = -{ - ClipSize = -1, - DefaultClip = -1, - Automatic = false, - Ammo = "none" -} - -SWEP.Secondary = -{ - ClipSize = -1, - DefaultClip = -1, - Automatic = false, - Ammo = "none" -} - -SWEP.CanHolster = true -SWEP.CanDeploy = true - -function SWEP:InitializeTools() - - local temp = {} - - for k,v in pairs( self.Tool ) do - - temp[k] = table.Copy(v) - temp[k].SWEP = self - temp[k].Owner = self.Owner - temp[k].Weapon = self.Weapon - temp[k]:Init() - - end - - self.Tool = temp - -end - -function SWEP:SetupDataTables() - - self:NetworkVar( "Entity", 0, "TargetEntity1" ); - self:NetworkVar( "Entity", 1, "TargetEntity2" ); - self:NetworkVar( "Entity", 2, "TargetEntity3" ); - self:NetworkVar( "Entity", 3, "TargetEntity4" ); - -end - ---[[--------------------------------------------------------- - Initialize ------------------------------------------------------------]] -function SWEP:Initialize() - - self:InitializeTools() - - -- We create these here. The problem is that these are meant to be constant values. - -- in the toolmode they're not because some tools can be automatic while some tools aren't. - -- Since this is a global table it's shared between all instances of the gun. - -- By creating new tables here we're making it so each tool has its own instance of the table - -- So changing it won't affect the other tools. - - self.Primary = - { - -- Note: Switched this back to -1.. lets not try to hack our way around shit that needs fixing. -gn - ClipSize = -1, - DefaultClip = -1, - Automatic = false, - Ammo = "none" - } - - self.Secondary = - { - ClipSize = -1, - DefaultClip = -1, - Automatic = false, - Ammo = "none" - } - -end - - ---[[--------------------------------------------------------- - OnRestore ------------------------------------------------------------]] -function SWEP:OnRestore() - - self:InitializeTools() - -end - ---[[--------------------------------------------------------- - Precache Stuff ------------------------------------------------------------]] -function SWEP:Precache() - - util.PrecacheSound( self.ShootSound ) - -end - ---[[--------------------------------------------------------- - Reload clears the objects ------------------------------------------------------------]] -function SWEP:Reload() - - -- This makes the reload a semi-automatic thing rather than a continuous thing - if ( !self.Owner:KeyPressed( IN_RELOAD ) ) then return end - - local mode = self:GetMode() - local tr = util.GetPlayerTrace( self.Owner ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - local tool = self:GetToolObject() - if ( !tool ) then return end - - tool:CheckObjects() - - -- Does the server setting say it's ok? - if ( !tool:Allowed() ) then return end - - -- Ask the gamemode if it's ok to do this - if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end - - if ( !tool:Reload( trace ) ) then return end - - self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() ) - -end - ---[[--------------------------------------------------------- - Returns the mode we're in ------------------------------------------------------------]] -function SWEP:GetMode() - - return self.Mode - -end - ---[[--------------------------------------------------------- - Think does stuff every frame ------------------------------------------------------------]] -function SWEP:Think() - - self.Mode = self.Owner:GetInfo( "gmod_toolmode" ) - local mode = self:GetMode() - local tool = self:GetToolObject() - - if ( !tool ) then return end - - tool:CheckObjects() - - self.last_mode = self.current_mode - self.current_mode = mode - - -- Release ghost entities if we're not allowed to use this new mode? - if ( !tool:Allowed() ) then - self:GetToolObject( self.last_mode ):ReleaseGhostEntity() - return - end - - if ( self.last_mode != self.current_mode ) then - - if ( !self:GetToolObject( self.last_mode ) ) then return end - - -- We want to release the ghost entity just in case - self:GetToolObject( self.last_mode ):Holster() - - end - - self.Primary.Automatic = tool.LeftClickAutomatic or false - self.Secondary.Automatic = tool.RightClickAutomatic or false - self.RequiresTraceHit = tool.RequiresTraceHit or true - - tool:Think() - -end - - ---[[--------------------------------------------------------- - The shoot effect ------------------------------------------------------------]] -function SWEP:DoShootEffect( hitpos, hitnormal, entity, physbone, bFirstTimePredicted ) - - self.Weapon:EmitSound( self.ShootSound ) - self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) -- View model animation - - -- There's a bug with the model that's causing a muzzle to - -- appear on everyone's screen when we fire this animation. - self.Owner:SetAnimation( PLAYER_ATTACK1 ) -- 3rd Person Animation - - if ( !bFirstTimePredicted ) then return end - - local effectdata = EffectData() - effectdata:SetOrigin( hitpos ) - effectdata:SetNormal( hitnormal ) - effectdata:SetEntity( entity ) - effectdata:SetAttachment( physbone ) - util.Effect( "selection_indicator", effectdata ) - - local effectdata = EffectData() - effectdata:SetOrigin( hitpos ) - effectdata:SetStart( self.Owner:GetShootPos() ) - effectdata:SetAttachment( 1 ) - effectdata:SetEntity( self.Weapon ) - util.Effect( "ToolTracer", effectdata ) - -end - ---[[--------------------------------------------------------- - Trace a line then send the result to a mode function ------------------------------------------------------------]] -function SWEP:PrimaryAttack() - - local mode = self:GetMode() - local tr = util.GetPlayerTrace( self.Owner ) - tr.mask = bit.bor( CONTENTS_SOLID, CONTENTS_MOVEABLE, CONTENTS_MONSTER, CONTENTS_WINDOW, CONTENTS_DEBRIS, CONTENTS_GRATE, CONTENTS_AUX ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - local tool = self:GetToolObject() - if ( !tool ) then return end - - tool:CheckObjects() - - -- Does the server setting say it's ok? - if ( !tool:Allowed() ) then return end - - -- Ask the gamemode if it's ok to do this - if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end - - if ( !tool:LeftClick( trace ) ) then return end - - self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() ) - -end - - ---[[--------------------------------------------------------- - SecondaryAttack - Reset everything to how it was ------------------------------------------------------------]] -function SWEP:SecondaryAttack() - - local mode = self:GetMode() - local tr = util.GetPlayerTrace( self.Owner ) - tr.mask = bit.bor( CONTENTS_SOLID, CONTENTS_MOVEABLE, CONTENTS_MONSTER, CONTENTS_WINDOW, CONTENTS_DEBRIS, CONTENTS_GRATE, CONTENTS_AUX ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - local tool = self:GetToolObject() - if ( !tool ) then return end - - tool:CheckObjects() - - -- Ask the gamemode if it's ok to do this - if ( !tool:Allowed() ) then return end - if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end - - if ( !tool:RightClick( trace ) ) then return end - - self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() ) - -end - ---[[--------------------------------------------------------- - Holster ------------------------------------------------------------]] -function SWEP:Holster() - - -- Just do what the SWEP wants to do if there's no tool - if ( !self:GetToolObject() ) then return self.CanHolster end - - local CanHolster = self:GetToolObject():Holster() - if ( CanHolster ~= nil ) then return CanHolster end - - return self.CanHolster - -end - ---[[--------------------------------------------------------- - OnRemove - - Delete ghosts here in case the weapon gets deleted all of a sudden somehow ------------------------------------------------------------]] -function SWEP:OnRemove() - - if ( !self:GetToolObject() ) then return end - - self:GetToolObject():ReleaseGhostEntity() - -end - - ---[[--------------------------------------------------------- - OwnerChanged - - This will remove any ghosts when a player dies and drops the weapon ------------------------------------------------------------]] -function SWEP:OwnerChanged() - - if ( !self:GetToolObject() ) then return end - - self:GetToolObject():ReleaseGhostEntity() - -end - ---[[--------------------------------------------------------- - Deploy ------------------------------------------------------------]] -function SWEP:Deploy() - - -- Just do what the SWEP wants to do if there is no tool - if ( !self:GetToolObject() ) then return self.CanDeploy end - - self:GetToolObject():UpdateData() - - local CanDeploy = self:GetToolObject():Deploy() - if ( CanDeploy ~= nil ) then return CanDeploy end - - return self.CanDeploy - -end - -function SWEP:GetToolObject( tool ) - - local mode = tool or self:GetMode() - - if ( !self.Tool[ mode ] ) then return false end - - return self.Tool[ mode ] - -end - -function SWEP:FireAnimationEvent( pos, ang, event, options ) - - -- Disables animation based muzzle event - if ( event == 21 ) then return true end - -- Disable thirdperson muzzle flash - if ( event == 5003 ) then return true end - -end - -include( 'stool.lua' ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stool.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stool.lua deleted file mode 100644 index 84cb5b234..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stool.lua +++ /dev/null @@ -1,234 +0,0 @@ - -ToolObj = {} - -include( 'ghostentity.lua' ) -include( 'object.lua' ) - -if ( CLIENT ) then - include( 'stool_cl.lua' ) -end - -function ToolObj:Create() - - local o = {} - - setmetatable( o, self ) - self.__index = self - - o.Mode = nil - o.SWEP = nil - o.Owner = nil - o.ClientConVar = {} - o.ServerConVar = {} - o.Objects = {} - o.Stage = 0 - o.Message = "start" - o.LastMessage = 0 - o.AllowedCVar = 0 - - return o - -end - -function ToolObj:CreateConVars() - - local mode = self:GetMode() - - if ( CLIENT ) then - - for cvar, default in pairs( self.ClientConVar ) do - - CreateClientConVar( mode.."_"..cvar, default, true, true ) - - end - - return end - - -- Note: I changed this from replicated because replicated convars don't work - -- when they're created via Lua. - - if ( SERVER ) then - - self.AllowedCVar = CreateConVar( "toolmode_allow_"..mode, 1, FCVAR_NOTIFY ) - - end - -end - -function ToolObj:GetServerInfo( property ) - - local mode = self:GetMode() - - return GetConVarString( mode.."_"..property ) - -end - -function ToolObj:GetClientInfo( property ) - - local mode = self:GetMode() - return self:GetOwner():GetInfo( mode.."_"..property ) - -end - -function ToolObj:GetClientNumber( property, default ) - - default = default or 0 - local mode = self:GetMode() - return self:GetOwner():GetInfoNum( mode.."_"..property, default ) - -end - -function ToolObj:Allowed() - - if ( CLIENT ) then return true end - return self.AllowedCVar:GetBool() - -end - --- Now for all the ToolObj redirects - -function ToolObj:Init() end - -function ToolObj:GetMode() return self.Mode end -function ToolObj:GetSWEP() return self.SWEP end -function ToolObj:GetOwner() return self:GetSWEP().Owner or self.Owner end -function ToolObj:GetWeapon() return self:GetSWEP().Weapon or self.Weapon end - -function ToolObj:LeftClick() return false end -function ToolObj:RightClick() return false end -function ToolObj:Reload() self:ClearObjects() end -function ToolObj:Deploy() self:ReleaseGhostEntity() return end -function ToolObj:Holster() self:ReleaseGhostEntity() return end -function ToolObj:Think() self:ReleaseGhostEntity() end - ---[[--------------------------------------------------------- - Checks the objects before any action is taken - This is to make sure that the entities haven't been removed ------------------------------------------------------------]] -function ToolObj:CheckObjects() - - for k, v in pairs( self.Objects ) do - - if ( !v.Ent:IsWorld() && !v.Ent:IsValid() ) then - self:ClearObjects() - end - - end - - -end - -local toolmodes = file.Find( SWEP.Folder.."/stools/*.lua", "LUA" ) - -for key, val in pairs( toolmodes ) do - - local char1,char2,toolmode = string.find( val, "([%w_]*).lua" ) - - TOOL = ToolObj:Create() - TOOL.Mode = toolmode - - AddCSLuaFile( "stools/"..val ) - include( "stools/"..val ) - - TOOL:CreateConVars() - - SWEP.Tool[ toolmode ] = TOOL - - TOOL = nil - -end - -ToolObj = nil - -if ( CLIENT ) then - - -- Keep the tool list handy - local TOOLS_LIST = SWEP.Tool - - -- Add the STOOLS to the tool menu - local function AddSToolsToMenu() - - for ToolName, TOOL in pairs( TOOLS_LIST ) do - - if ( TOOL.AddToMenu != false ) then - - spawnmenu.AddToolMenuOption( TOOL.Tab or "Main", - TOOL.Category or "New Category", - ToolName, - TOOL.Name or "#"..ToolName, - TOOL.Command or "gmod_tool "..ToolName, - TOOL.ConfigName or ToolName, - TOOL.BuildCPanel ) - - end - - end - - end - - hook.Add( "PopulateToolMenu", "AddSToolsToMenu", AddSToolsToMenu ) - - - -- - -- Search - -- - search.AddProvider( function( str ) - - local list = {} - - for k, v in pairs( TOOLS_LIST ) do - - if ( !k:find( str ) ) then continue end - - local entry = - { - text = v.Name or "#"..k, - icon = spawnmenu.CreateContentIcon( "tool", nil, { type = k } ), - words = { k } - } - - table.insert( list, entry ) - - if ( #list >= 32 ) then break end - - end - - return list - - end ); - - -- - -- Tool spawnmenu icon - -- - spawnmenu.AddContentType( "tool", function( container, obj ) - - if ( !obj.type ) then return end - - local icon = vgui.Create( "ContentIcon", container ) - icon:SetContentType( "tool" ) - icon:SetSpawnName( obj.type ) - icon:SetName( obj.type ) - icon:SetMaterial( "gui/tool.png" ) - - icon.DoClick = function() - RunConsoleCommand( "gmod_tool", obj.type ); - surface.PlaySound( "ui/buttonclickrelease.wav" ) - end - - icon.OpenMenu = function( icon ) - - local menu = DermaMenu() - menu:AddOption( "Delete", function() icon:Remove(); hook.Run( "SpawnlistContentChanged", icon ) end ) - menu:Open() - - end - - if ( IsValid( container ) ) then - container:Add( icon ) - end - - return icon; - - end ) - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stool_cl.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stool_cl.lua deleted file mode 100644 index 68bee339d..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stool_cl.lua +++ /dev/null @@ -1,15 +0,0 @@ - - ---[[--------------------------------------------------------- - Tool should return true if freezing the view angles ------------------------------------------------------------]] -function ToolObj:FreezeMovement() - return false -end - - ---[[--------------------------------------------------------- - The tool's opportunity to draw to the HUD ------------------------------------------------------------]] -function ToolObj:DrawHUD() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/axis.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/axis.lua deleted file mode 100644 index e09bc49b8..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/axis.lua +++ /dev/null @@ -1,206 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.axis.name" - -TOOL.ClientConVar[ "forcelimit" ] = 0 -TOOL.ClientConVar[ "torquelimit" ] = 0 -TOOL.ClientConVar[ "hingefriction" ] = 0 -TOOL.ClientConVar[ "nocollide" ] = 0 - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- todo: Don't attempt to constrain the first object if it's already constrained to a static object - - local iNum = self:NumObjects() - - -- Don't allow us to choose the world as the first object - if (iNum == 0 && !trace.Entity:IsValid()) then return false end - - -- Don't do jeeps (crash protection until we get it fixed) - if (iNum == 0 && trace.Entity:GetClass() == "prop_vehicle_jeep") then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - -- Clientside can bail out now - if ( CLIENT ) then - - self:ClearObjects() - self:ReleaseGhostEntity() - - return true - - end - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit", 0 ) - local torquelimit = self:GetClientNumber( "torquelimit", 0 ) - local friction = self:GetClientNumber( "hingefriction", 0 ) - local nocollide = self:GetClientNumber( "nocollide", 0 ) - - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local Norm1, Norm2 = self:GetNormal(1), self:GetNormal(2) - local Phys1, Phys2 = self:GetPhys(1), self:GetPhys(2) - - -- Note: To keep stuff ragdoll friendly try to treat things as physics objects rather than entities - local Ang1, Ang2 = Norm1:Angle(), (Norm2 * -1):Angle() - local TargetAngle = Phys1:AlignAngles( Ang1, Ang2 ) - - Phys1:SetAngles( TargetAngle ) - - -- Move the object so that the hitpos on our object is at the second hitpos - local TargetPos = WPos2 + ( Phys1:GetPos() - self:GetPos( 1 ) ) + ( Norm2 * 0.2 ) - - -- Set the position - Phys1:SetPos( TargetPos ) - - -- Wake up the physics object so that the entity updates - Phys1:Wake() - - -- Set the hinge Axis perpendicular to the trace hit surface - LPos1 = Phys1:WorldToLocal( WPos2 + Norm2 ) - - -- Create a constraint axis - local constraint = constraint.Axis( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, forcelimit, torquelimit, friction, nocollide ) - - undo.Create("Axis") - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "constraints", constraint ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - self:ReleaseGhostEntity() - - else - - self:StartGhostEntity( trace.Entity ) - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return false end - - local iNum = self:NumObjects() - - -- Don't allow us to choose the world as the first object - if (iNum == 0 && !trace.Entity:IsValid()) then return false end - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - -- Clientside can bail out now - if ( CLIENT ) then - - self:ClearObjects() - self:ReleaseGhostEntity() - - return true - - end - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit", 0 ) - local torquelimit = self:GetClientNumber( "torquelimit", 0 ) - local friction = self:GetClientNumber( "hingefriction", 0 ) - local nocollide = self:GetClientNumber( "nocollide", 0 ) - - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local Norm1, Norm2 = self:GetNormal(1), self:GetNormal(2) - local Phys1, Phys2 = self:GetPhys(1), self:GetPhys(2) - - -- Note: To keep stuff ragdoll friendly try to treat things as physics objects rather than entities - local Ang1, Ang2 = Norm1:Angle(), (Norm2 * -1):Angle() - local TargetAngle = Phys1:AlignAngles( Ang1, Ang2 ) - - --Phys1:SetAngles( TargetAngle ) - - local TargetPos = WPos2 + ( Phys1:GetPos() - self:GetPos( 1 ) ) + ( Norm2 * 0.2 ) - - Phys1:Wake() - - -- Set the hinge Axis perpendicular to the trace hit surface - LPos1 = Phys1:WorldToLocal( WPos2 + Norm2 ) - - local constraint = constraint.Axis( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, forcelimit, torquelimit, friction, nocollide ) - - undo.Create("Axis") - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "constraints", constraint ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - self:ReleaseGhostEntity() - - - else - - self:StartGhostEntity( trace.Entity ) - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Axis" ) - return bool - -end - -function TOOL:Think() - - if (self:NumObjects() != 1) then return end - - self:UpdateGhostEntity() - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.axis.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "axis", - Options = { Default = { axis_forcelimit = '0', axis_torquelimit='0', axis_hingefriction='0', axis_nocollide='0' } }, - CVars = { "axis_forcelimit", "axis_torquelimit", "axis_hingefriction", "axis_nocollide" } } ) - - CPanel:AddControl( "Slider", { Label = "#tool.forcelimit", Type = "Float", Command = "axis_forcelimit", Min = "0", Max = "50000", Help = true } ) - CPanel:AddControl( "Slider", { Label = "#tool.torquelimit", Type = "Float", Command = "axis_torquelimit", Min = "0", Max = "50000", Help = true } ) - CPanel:AddControl( "Slider", { Label = "#tool.hingefriction", Type = "Float", Command = "axis_hingefriction", Min = "0", Max = "200", Help = true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.nocollide", Command = "axis_nocollide" } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/balloon.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/balloon.lua deleted file mode 100644 index 1bc39aada..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/balloon.lua +++ /dev/null @@ -1,274 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.balloon.name" - -TOOL.ClientConVar[ "ropelength" ] = "64" -TOOL.ClientConVar[ "force" ] = "500" -TOOL.ClientConVar[ "r" ] = "255" -TOOL.ClientConVar[ "g" ] = "255" -TOOL.ClientConVar[ "b" ] = "0" -TOOL.ClientConVar[ "model" ] = "models/MaxOfS2D/balloon_classic.mdl" - -cleanup.Register( "balloons" ) - -function TOOL:LeftClick( trace, attach ) - - if ( IsValid( trace.Entity ) && trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - -- - -- Right click calls this with attach = false - -- - if ( attach == nil ) then - attach = true - end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && attach && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then - return false - end - - local ply = self:GetOwner() - local length = self:GetClientNumber( "ropelength", 64 ) - local material = "cable/rope" - local force = self:GetClientNumber( "force", 500 ) - local r = self:GetClientNumber( "r", 255 ) - local g = self:GetClientNumber( "g", 0 ) - local b = self:GetClientNumber( "b", 0 ) - local model = self:GetClientInfo( "model" ) - - local modeltable = list.Get( "BalloonModels" )[ model ] - - -- - -- Model is a table index on BalloonModels - -- If the model isn't defined then it can't be spawned. - -- - if ( !modeltable ) then return false end - - -- - -- The model table can disable colouring for its model - -- - if ( modeltable.nocolor ) then - r = 255 - g = 255 - b = 255 - end - - -- - -- Clicked on a balloon - modify the force/color/whatever - -- - if ( IsValid( trace.Entity ) && trace.Entity:GetClass() == "gmod_balloon" && trace.Entity.Player == ply ) then - - local force = self:GetClientNumber( "force", 500 ) - trace.Entity:GetPhysicsObject():Wake() - trace.Entity:SetColor( Color( r, g, b, 255 ) ) - trace.Entity:SetForce( force ) - trace.Entity.force = force - return true - - end - - -- - -- Hit the balloon limit, bail - -- - if ( !self:GetSWEP():CheckLimit( "balloons" ) ) then return false end - - local balloon = MakeBalloon( ply, r, g, b, force, { Pos = trace.HitPos, Model = modeltable.model, Skin = modeltable.skin } ) - - local CurPos = balloon:GetPos() - local NearestPoint = balloon:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local Offset = CurPos - NearestPoint - - local Pos = trace.HitPos + Offset - - balloon:SetPos( Pos ) - - undo.Create( "Balloon" ) - undo.AddEntity( balloon ) - - if ( attach ) then - - -- The real model should have an attachment! - local attachpoint = Pos + Vector( 0, 0, 0 ) - - local LPos1 = balloon:WorldToLocal( attachpoint ) - local LPos2 = trace.Entity:WorldToLocal( trace.HitPos ) - - if ( IsValid( trace.Entity ) ) then - - local phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - if ( IsValid( phys ) ) then LPos2 = phys:WorldToLocal( trace.HitPos ) end - - end - - local constraint, rope = constraint.Rope( balloon, trace.Entity, 0, trace.PhysicsBone, LPos1, LPos2, 0, length, 0, 0.5, material, nil ) - - undo.AddEntity( rope ) - undo.AddEntity( constraint ) - ply:AddCleanup( "balloons", rope ) - ply:AddCleanup( "balloons", constraint ) - - end - - undo.SetPlayer( ply ) - undo.Finish() - - ply:AddCleanup( "balloons", balloon ) - - return true - -end - -function TOOL:RightClick( trace ) - - return self:LeftClick( trace, false ) - -end - -if ( SERVER ) then - - function MakeBalloon( pl, r, g, b, force, Data ) - - if ( IsValid( pl ) && !pl:CheckLimit( "balloons" ) ) then return nil end - - local balloon = ents.Create( "gmod_balloon" ) - - if ( !balloon:IsValid() ) then return end - - duplicator.DoGeneric( balloon, Data ) - - balloon:Spawn() - - duplicator.DoGenericPhysics( balloon, pl, Data ) - - balloon:SetRenderMode( RENDERMODE_TRANSALPHA ) - balloon:SetColor( Color( r, g, b, 255 ) ) - balloon:SetForce( force ) - balloon:SetPlayer( pl ) - - balloon:SetMaterial( skin ) - - balloon.Player = pl - balloon.r = r - balloon.g = g - balloon.b = b - balloon.force = force - - if ( IsValid( pl ) ) then - pl:AddCount( "balloons", balloon ) - end - - return balloon - - end - - duplicator.RegisterEntityClass( "gmod_balloon", MakeBalloon, "r", "g", "b", "force", "Data" ) - -end - -function TOOL:UpdateGhostBalloon( ent, ply ) - - if ( !IsValid( ent ) ) then return end - - local tr = util.GetPlayerTrace( ply ) - local trace = util.TraceLine( tr ) - if ( !trace.Hit ) then return end - - if ( trace.Entity:IsPlayer() || trace.Entity:GetClass() == "gmod_balloon" ) then - - ent:SetNoDraw( true ) - return - - end - - local CurPos = ent:GetPos() - local NearestPoint = ent:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local Offset = CurPos - NearestPoint - - local pos = trace.HitPos + Offset - - local modeltable = list.Get( "BalloonModels" )[ self:GetClientInfo( "model" ) ] - if ( modeltable.skin ) then ent:SetSkin( modeltable.skin ) end - - ent:SetPos( pos ) - ent:SetAngles( Angle( 0, 0, 0 ) ) - - ent:SetNoDraw( false ) - -end - -function TOOL:Think() - - if ( !IsValid( self.GhostEntity ) || self.GhostEntity.model != self:GetClientInfo( "model" ) ) then - - local modeltable = list.Get( "BalloonModels" )[ self:GetClientInfo( "model" ) ] - self:MakeGhostEntity( modeltable.model, Vector( 0, 0, 0 ), Angle( 0, 0, 0 ) ) - if ( IsValid( self.GhostEntity ) ) then self.GhostEntity.model = self:GetClientInfo( "model" ) end - - end - - self:UpdateGhostBalloon( self.GhostEntity, self:GetOwner() ) - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.balloon.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "balloon", - CVars = { "balloon_ropelength", "balloon_force", "balloon_r", "balloon_g", "balloon_b", "balloon_skin" } } ) - - CPanel:AddControl( "Slider", { Label = "#tool.balloon.ropelength", Type = "Float", Command = "balloon_ropelength", Min = "5", Max = "1000" } ) - CPanel:AddControl( "Slider", { Label = "#tool.balloon.force", Type = "Float", Command = "balloon_force", Min = "-1000", Max = "2000", Help = true } ) - CPanel:AddControl( "Color", { Label = "#tool.balloon.color", Red = "balloon_r", Green = "balloon_g", Blue = "balloon_b", ShowAlpha = "0", ShowHSV = "1", ShowRGB = "1" } ) - - CPanel:AddControl( "PropSelect", { Label = "#tool.balloon.model", - ConVar = "balloon_model", - Height = 4, - ModelsTable = list.Get( "BalloonModels" ) } ) - -end - -list.Set( "BalloonModels", "normal", { - model = "models/MaxOfS2D/balloon_classic.mdl", - skin = 0, -}) - -list.Set( "BalloonModels", "normal_skin1", { - model = "models/MaxOfS2D/balloon_classic.mdl", - skin = 1, -}) - -list.Set( "BalloonModels", "normal_skin2", { - model = "models/MaxOfS2D/balloon_classic.mdl", - skin = 2, -}) - -list.Set( "BalloonModels", "normal_skin3", { - model = "models/MaxOfS2D/balloon_classic.mdl", - skin = 3, -}) - -list.Set( "BalloonModels", "gman", { - model = "models/MaxOfS2D/balloon_gman.mdl", - nocolor = true, -}) - -list.Set( "BalloonModels", "mossman", { - model = "models/MaxOfS2D/balloon_mossman.mdl", - nocolor = true, -}) - -list.Set( "BalloonModels", "dog", { - model = "models/balloons/balloon_dog.mdl" -}) - -list.Set( "BalloonModels", "heart", { - model = "models/balloons/balloon_classicheart.mdl" -}) - -list.Set( "BalloonModels", "star", { - model = "models/balloons/balloon_star.mdl" -}) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/ballsocket.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/ballsocket.lua deleted file mode 100644 index 69f50f8d1..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/ballsocket.lua +++ /dev/null @@ -1,85 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.ballsocket.name" - -TOOL.ClientConVar[ "forcelimit" ] = "0" -TOOL.ClientConVar[ "torquelimit" ] = "0" -TOOL.ClientConVar[ "nocollide" ] = "0" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit", 0 ) - local torquelimit = self:GetClientNumber( "torquelimit", 0 ) - local nocollide = self:GetClientNumber( "nocollide", 0 ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos = self:GetLocalPos(2) - - local constraint = constraint.Ballsocket( Ent1, Ent2, Bone1, Bone2, LPos, forcelimit, torquelimit, nocollide ) - - undo.Create("BallSocket") - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "constraints", constraint ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Ballsocket" ) - return bool - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.ballsocket.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "ballsocket", - Options = { Default = { ballsocket_forcelimit = '0', ballsocket_torquelimit='0', ballsocket_nocollide='0' } }, - CVars = { "ballsocket_forcelimit", "ballsocket_torquelimit", "ballsocket_nocollide" } } ) - - CPanel:AddControl( "Slider", { Label = "#tool.forcelimit", Type = "Float", Command = "ballsocket_forcelimit", Min = "0", Max = "50000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.torquelimit", Type = "Float", Command = "ballsocket_torquelimit", Min = "0", Max = "50000", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.nocollide", Command = "ballsocket_nocollide", Help=true } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/button.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/button.lua deleted file mode 100644 index 4e62360a7..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/button.lua +++ /dev/null @@ -1,209 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.button.name" - -TOOL.ClientConVar[ "model" ] = "models/dav0r/buttons/button.mdl" -TOOL.ClientConVar[ "keygroup" ] = "37" -TOOL.ClientConVar[ "description" ] = "" -TOOL.ClientConVar[ "toggle" ] = "1" - -cleanup.Register( "buttons" ) - -function TOOL:RightClick( trace ) - - if ( IsValid( trace.Entity ) && trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - if ( !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local ply = self:GetOwner() - - local model = self:GetClientInfo( "model" ) - local key = self:GetClientNumber( "keygroup" ) - local description = self:GetClientInfo( "description" ) - local toggle = self:GetClientNumber( "toggle" ) == 1 - - -- If we shot a button change its keygroup - if ( trace.Entity:IsValid() && - trace.Entity:GetClass() == "gmod_button" && - trace.Entity:GetPlayer() == ply ) then - - trace.Entity:SetKey( key ) - trace.Entity:SetLabel( description ) - trace.Entity:SetIsToggle( toggle ) - - return true, NULL, true - - end - - if ( !self:GetSWEP():CheckLimit( "buttons" ) ) then return false end - - if (not util.IsValidModel(model)) then return false end - if (not util.IsValidProp(model)) then return false end -- Allow ragdolls to be used? - - local Ang = trace.HitNormal:Angle() - Ang.pitch = Ang.pitch + 90 - - button = MakeButton( ply, model, Ang, trace.HitPos, key, description, toggle ) - - local min = button:OBBMins() - button:SetPos( trace.HitPos - trace.HitNormal * min.z ) - - local const - - undo.Create("Button") - undo.AddEntity( button ) - undo.SetPlayer( ply ) - undo.Finish() - - ply:AddCleanup( "buttons", button ) - - return true, button - -end - -function TOOL:LeftClick( trace ) - - local bool, button, set_key = self:RightClick( trace, true ) - if ( CLIENT ) then return bool end - - if ( set_key ) then return true end - if ( !button || !button:IsValid() ) then return false end - if ( !trace.Entity:IsValid() && !trace.Entity:IsWorld() ) then return false end - - local weld = constraint.Weld( button, trace.Entity, 0, trace.PhysicsBone, 0, 0, true ) - trace.Entity:DeleteOnRemove( weld ) - button:DeleteOnRemove( weld ) - - button:GetPhysicsObject():EnableCollisions( false ) - button.nocollide = true - - return true - -end - -if (SERVER) then - - function MakeButton( pl, Model, Ang, Pos, key, description, toggle, Vel, aVel, frozen ) - - if ( IsValid( pl ) && !pl:CheckLimit( "buttons" ) ) then return false end - - local button = ents.Create( "gmod_button" ) - if ( !IsValid( button ) ) then return false end - button:SetModel( Model ) - - button:SetAngles( Ang ) - button:SetPos( Pos ) - button:Spawn() - - button:SetPlayer( pl ) - button:SetKey( key ) - button:SetLabel( description ) - button:SetIsToggle( toggle ) - - local ttable = - { - key = key, - pl = pl, - toggle = toggle, - description = description - } - - table.Merge( button:GetTable(), ttable ) - - if ( IsValid( pl ) ) then - pl:AddCount( "buttons", button ) - end - - DoPropSpawnedEffect( button ) - - return button - - end - - duplicator.RegisterEntityClass( "gmod_button", MakeButton, "Model", "Ang", "Pos", "key", "description", "toggle", "Vel", "aVel", "frozen" ) - -end - -function TOOL:UpdateGhostButton( ent, player ) - - if ( !ent ) then return end - if ( !ent:IsValid() ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - if (trace.Entity && trace.Entity:GetClass() == "gmod_button" || trace.Entity:IsPlayer()) then - - ent:SetNoDraw( true ) - return - - end - - local Ang = trace.HitNormal:Angle() - Ang.pitch = Ang.pitch + 90 - - local min = ent:OBBMins() - ent:SetPos( trace.HitPos - trace.HitNormal * min.z ) - ent:SetAngles( Ang ) - - ent:SetNoDraw( false ) - -end - - -function TOOL:Think() - - if (!self.GhostEntity || !self.GhostEntity:IsValid() || self.GhostEntity:GetModel() != self:GetClientInfo( "model" )) then - self:MakeGhostEntity( self:GetClientInfo( "model" ), Vector(0,0,0), Angle(0,0,0) ) - end - - self:UpdateGhostButton( self.GhostEntity, self:GetOwner() ) - -end - - - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.button.desc" } ) - - local Options = { Default = { button_model = "models/dav0r/buttons/button.mdl" } } - - local CVars = { "button_model", "button_keygroup", "button_description" } - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "button", - Options = Options, - CVars = CVars } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.button.key", - Command = "button_keygroup", - ButtonSize = "22" } ) - - CPanel:AddControl( "TextBox", { Label = "#tool.button.text", - MaxLenth = "20", - Command = "button_description" } ) - - CPanel:AddControl( "CheckBox", { Label = "#tool.button.toggle", Command = "button_toggle", Help=true } ) - - CPanel:AddControl( "PropSelect", { Label = "#tool.button.model", - ConVar = "button_model", - Category = "Buttons", - Height = 4, - Models = list.Get( "ButtonModels" ) } ) - -end - -list.Set( "ButtonModels", "models/MaxOfS2D/button_01.mdl", {} ) -list.Set( "ButtonModels", "models/MaxOfS2D/button_02.mdl", {} ) -list.Set( "ButtonModels", "models/MaxOfS2D/button_03.mdl", {} ) -list.Set( "ButtonModels", "models/MaxOfS2D/button_04.mdl", {} ) -list.Set( "ButtonModels", "models/MaxOfS2D/button_05.mdl", {} ) -list.Set( "ButtonModels", "models/MaxOfS2D/button_06.mdl", {} ) -list.Set( "ButtonModels", "models/MaxOfS2D/button_slider.mdl", {} ) - ---list.Set( "ButtonModels", "models/dav0r/buttons/button.mdl", {} ) ---list.Set( "ButtonModels", "models/dav0r/buttons/switch.mdl", {} ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/camera.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/camera.lua deleted file mode 100644 index 6af3d3e0f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/camera.lua +++ /dev/null @@ -1,103 +0,0 @@ - -TOOL.Category = "Render" -TOOL.Name = "#tool.camera.name" - -TOOL.ClientConVar[ "locked" ] = "0" -TOOL.ClientConVar[ "key" ] = "37" -TOOL.ClientConVar[ "toggle" ] = "1" - -cleanup.Register( "cameras" ) - -local function MakeCamera( ply, key, locked, toggle, Data ) - - local ent = ents.Create( "gmod_cameraprop" ) - - if ( !IsValid( ent ) ) then return end - - duplicator.DoGeneric( ent, Data ) - - if ( key ) then - for id, camera in pairs( ents.FindByClass( "gmod_cameraprop" ) ) do - if ( camera.controlkey && camera.controlkey == key ) then - camera:Remove() - end - end - - ent:SetKey( key ) - ent.controlkey = key - end - - ent:SetPlayer( ply ) - - ent.toggle = toggle - ent.locked = locked - - ent:Spawn() - - ent:SetTracking( NULL, Vector(0) ) - ent:SetLocked( locked ) - - if ( toggle == 1 ) then - numpad.OnDown( ply, key, "Camera_Toggle", ent ) - else - numpad.OnDown( ply, key, "Camera_On", ent ) - numpad.OnUp( ply, key, "Camera_Off", ent ) - end - - if ( IsValid( ply ) ) then - - undo.Create( "Camera" ) - undo.AddEntity( ent ) - undo.SetPlayer( ply ) - undo.Finish() - - ply:AddCleanup( "cameras", ent ) - - end - - return ent - -end - -duplicator.RegisterEntityClass( "gmod_cameraprop", MakeCamera, "controlkey", "locked", "toggle", "Data" ) - - - -function TOOL:LeftClick( trace ) - - local key = self:GetClientNumber( "key" ) - if (key == -1) then return false end - - if ( CLIENT ) then return true end - - local ply = self:GetOwner() - local locked = self:GetClientNumber( "locked" ) - local toggle = self:GetClientNumber( "toggle" ) - local pid = ply:UniqueID() - - local ent = MakeCamera( ply, key, locked, toggle, { Pos = trace.StartPos, Angle = ply:EyeAngles() } ) - - return true, ent - -end - -function TOOL:RightClick( trace ) - - _, camera = self:LeftClick( trace, true ) - - if ( CLIENT ) then return true end - - if ( !camera || !camera:IsValid() ) then return end - - if ( trace.Entity:IsWorld() ) then - - trace.Entity = self:GetOwner() - trace.HitPos = self:GetOwner():GetPos() - - end - - camera:SetTracking( trace.Entity, trace.Entity:WorldToLocal( trace.HitPos ) ) - - return true - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/colour.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/colour.lua deleted file mode 100644 index 6f03bcaa8..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/colour.lua +++ /dev/null @@ -1,71 +0,0 @@ - -TOOL.Category = "Render" -TOOL.Name = "#tool.colour.name" - -TOOL.ClientConVar[ "r" ] = 255 -TOOL.ClientConVar[ "g" ] = 0 -TOOL.ClientConVar[ "b" ] = 255 -TOOL.ClientConVar[ "a" ] = 255 -TOOL.ClientConVar[ "mode" ] = "0" -TOOL.ClientConVar[ "fx" ] = "0" - -local function SetColour( Player, Entity, Data ) - - -- - -- If we're trying to make them transparent them make the render mode - -- a transparent type. This used to fix in the engine - but made HL:S props invisible(!) - -- - if ( Data.Color && Data.Color.a < 255 && Data.RenderMode == 0 ) then - Data.RenderMode = 1 - end - - if ( Data.Color ) then Entity:SetColor( Color( Data.Color.r, Data.Color.g, Data.Color.b, Data.Color.a ) ) end - if ( Data.RenderMode ) then Entity:SetRenderMode( Data.RenderMode ) end - if ( Data.RenderFX ) then Entity:SetKeyValue( "renderfx", Data.RenderFX ) end - - if ( SERVER ) then - duplicator.StoreEntityModifier( Entity, "colour", Data ) - end - -end -duplicator.RegisterEntityModifier( "colour", SetColour ) - -function TOOL:LeftClick( trace ) - - local ent = trace.Entity - if ( IsValid( ent.AttachedEntity ) ) then ent = ent.AttachedEntity end - - if IsValid( ent ) then -- The entity is valid and isn't worldspawn - - if ( CLIENT ) then return true end - - local r = self:GetClientNumber( "r", 0 ) - local g = self:GetClientNumber( "g", 0 ) - local b = self:GetClientNumber( "b", 0 ) - local a = self:GetClientNumber( "a", 0 ) - local mode = self:GetClientNumber( "mode", 0 ) - local fx = self:GetClientNumber( "fx", 0 ) - - SetColour( self:GetOwner(), ent, { Color = Color( r, g, b, a ), RenderMode = mode, RenderFX = fx } ) - - return true - - end - -end - -function TOOL:RightClick( trace ) - - local ent = trace.Entity - if ( IsValid( ent.AttachedEntity ) ) then ent = ent.AttachedEntity end - - if IsValid( ent ) then -- The entity is valid and isn't worldspawn - - if ( CLIENT ) then return true end - - SetColour( self:GetOwner(), ent, { Color = Color( 255, 255, 255, 255 ), RenderMode = 0, RenderFX = 0 } ) - return true - - end - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/creator.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/creator.lua deleted file mode 100644 index 948bdf447..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/creator.lua +++ /dev/null @@ -1,50 +0,0 @@ - -TOOL.AddToMenu = false -TOOL.ClientConVar[ "type" ] = "0" -TOOL.ClientConVar[ "name" ] = "0" -TOOL.ClientConVar[ "arg" ] = "0" - -function TOOL:LeftClick( trace, attach ) - - local type = self:GetClientNumber( "type", 0 ) - local name = self:GetClientInfo( "name", 0 ) - local arg = self:GetClientInfo( "arg", 0 ) - - -- - -- type 0 = sent - -- - if ( SERVER && type == 0 ) then - Spawn_SENT( self:GetOwner(), name, trace ) - end - - -- - -- type 1 = vehicle - -- - if ( SERVER && type == 1 ) then - Spawn_Vehicle( self:GetOwner(), name, trace ) - end - - -- - -- type 2 = npc - -- - if ( SERVER && type == 2 ) then - Spawn_NPC( self:GetOwner(), name, arg, trace ) - end - - -- - -- type 3 = weapons - -- - if ( SERVER && type == 3 ) then - Spawn_Weapon( self:GetOwner(), name, trace ) - end - - -- - -- type 4 = props - -- - if ( SERVER && type == 4 ) then - CCSpawn( self:GetOwner(), nil, { name } ) - end - - return true - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator.lua deleted file mode 100644 index 1b1301e43..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator.lua +++ /dev/null @@ -1,161 +0,0 @@ - -AddCSLuaFile() - -include( 'duplicator/transport.lua' ) -include( 'duplicator/arming.lua' ) - -if ( CLIENT ) then - - include( 'duplicator/icon.lua' ) - -else - - AddCSLuaFile( 'duplicator/arming.lua' ) - AddCSLuaFile( 'duplicator/transport.lua' ) - AddCSLuaFile( 'duplicator/icon.lua' ) - util.AddNetworkString( "CopiedDupe" ) - -end - -TOOL.Category = "Construction" -TOOL.Name = "#tool.duplicator.name" -TOOL.Stored = true - - -cleanup.Register( "duplicates" ) - --- --- PASTE --- -function TOOL:LeftClick( trace ) - - if ( CLIENT ) then return true end - - -- - -- Get the copied dupe. We store it on the player so it will still exist if they die and respawn. - -- - local dupe = self:GetOwner().CurrentDupe - if ( !dupe ) then return end - - -- - -- We want to spawn it flush on thr ground. So get the point that we hit - -- and take away the mins.z of the bounding box of the dupe. - -- - local SpawnCenter = trace.HitPos - SpawnCenter.z = SpawnCenter.z - dupe.Mins.z - - -- - -- Spawn it rotated with the player - but not pitch. - -- - local SpawnAngle = self:GetOwner():EyeAngles() - SpawnAngle.pitch = 0 - SpawnAngle.roll = 0 - - - -- - -- Spawn them all at our chosen positions - -- - duplicator.SetLocalPos( SpawnCenter ) - duplicator.SetLocalAng( SpawnAngle ) - - DisablePropCreateEffect = true - - local Ents, Constraints = duplicator.Paste( self:GetOwner(), dupe.Entities, dupe.Constraints ) - - DisablePropCreateEffect = nil - - duplicator.SetLocalPos( Vector( 0, 0, 0 ) ) - duplicator.SetLocalAng( Angle( 0, 0, 0 ) ) - - -- - -- Create one undo for the whole creation - -- - undo.Create( "Duplicator" ) - - for k, ent in pairs( Ents ) do - undo.AddEntity( ent ) - end - - for k, ent in pairs( Ents ) do - self:GetOwner():AddCleanup( "duplicates", ent ) - end - - undo.SetPlayer( self:GetOwner() ) - - undo.Finish() - - return true - -end - --- --- Copy --- -function TOOL:RightClick( trace ) - - if ( !IsValid( trace.Entity ) ) then return false end - if ( CLIENT ) then return true end - - -- - -- Set the position to our local position (so we can paste relative to our `hold`) - -- - duplicator.SetLocalPos( trace.HitPos ) - duplicator.SetLocalAng( Angle( 0, self:GetOwner():EyeAngles().yaw, 0 ) ) - - Dupe = duplicator.Copy( trace.Entity ) - - duplicator.SetLocalPos( Vector( 0, 0, 0 ) ) - duplicator.SetLocalAng( Angle( 0, 0, 0 ) ) - - if ( !Dupe ) then return false end - - -- - -- Tell the clientside that they're holding something new - -- - net.Start( "CopiedDupe" ) - net.WriteUInt( 1, 1 ); - net.Send( self:GetOwner() ) - - - -- - -- Store the dupe on the player - -- - self:GetOwner().CurrentDupe = Dupe; - - return true - -end - - ---[[--------------------------------------------------------- - Builds the context menu ------------------------------------------------------------]] -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.duplicator.desc" } ) - - local params = {} - params.Text = "#tool.duplicator.showsaves" - params.Command = "dupe_show" - CPanel:AddControl( "Button", params ) - -end - - -if ( CLIENT ) then - - -- - -- Received by the client to alert us that we have something copied - -- This allows us to enable the save button in the spawn menu - -- - net.Receive( "CopiedDupe", function( len, client ) - - if ( net.ReadUInt( 1 ) == 1 ) then - hook.Run( "DupeSaveAvailable" ) - else - hook.Run( "DupeSaveUnavailable" ) - end - - end ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/arming.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/arming.lua deleted file mode 100644 index 203cefe57..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/arming.lua +++ /dev/null @@ -1,76 +0,0 @@ - -if ( CLIENT ) then - - -- - -- Called by the client to save a dupe they're holding on the server - -- into a file on their computer. - -- - concommand.Add( "dupe_arm", function( ply, cmd, arg ) - - if ( !arg[1] ) then return end - -- - -- Load the dupe (engine takes care of making sure it's a dupe) - -- - local dupe = engine.OpenDupe( arg[1] ) - if ( !dupe ) then - MsgN( "Error loading dupe.. (", arg[1], ")" ); - return - end - - local uncompressed = util.Decompress( dupe.data ) - if ( !uncompressed ) then - MsgN( "Couldn't decompress dupe!" ) - return end - - -- - -- And send it to the server - -- - net.Start( "ArmDupe" ) - net.WriteUInt( dupe.data:len(), 32 ) - net.WriteData( dupe.data, dupe.data:len() ) - net.SendToServer() - - end, nil, "Arm a dupe", { FCVAR_DONTRECORD } ) - -end - -if ( SERVER ) then - - -- - -- Add the name of the net message to the string table (or it won't be able to send!) - -- - util.AddNetworkString( "ArmDupe" ) - - net.Receive( "ArmDupe", function( len, client ) - - local len = net.ReadUInt( 32 ) - local data = net.ReadData( len ) - - if ( !IsValid( client ) ) then return end - - -- Hook.. can arn dupe.. - - local uncompressed = util.Decompress( data ) - if ( !uncompressed ) then - MsgN( "Couldn't decompress dupe!" ) - return end - - local Dupe = util.JSONToTable( uncompressed ) - if ( !istable( Dupe ) ) then return end - if ( !isvector( Dupe.Mins ) ) then return end - if ( !isvector( Dupe.Maxs ) ) then return end - - client.CurrentDupe = Dupe; - - client:ConCommand( "gmod_tool duplicator" ); - - -- - -- Disable the Spawn Button - -- - net.Start( "CopiedDupe" ) - net.WriteUInt( 0, 1 ); - net.Send( client ) - end ) - -end - diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/icon.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/icon.lua deleted file mode 100644 index 01521e74f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/icon.lua +++ /dev/null @@ -1,256 +0,0 @@ - - -hook.Add( "PostRender", "RenderDupeIcon", function() - - -- - -- g_ClientSaveDupe is set in transport.lua when receiving a dupe from the server - -- - if ( !g_ClientSaveDupe ) then return end - - -- - -- Remove the global straight away - -- - local Dupe = g_ClientSaveDupe; - g_ClientSaveDupe = nil - - local FOV = 17 - - -- - -- This is gonna take some cunning to look awesome! - -- - local Size = Dupe.Maxs - Dupe.Mins; - local Radius = Size:Length() * 0.5; - local CamDist = Radius / math.sin( math.rad( FOV ) / 2 ) -- Works out how far the camera has to be away based on radius + fov! - local Center = LerpVector( 0.5, Dupe.Mins, Dupe.Maxs ); - local CamPos = Center + Vector( -1, 0, 0.5 ):GetNormal() * CamDist; - local EyeAng = ( Center - CamPos ):GetNormal():Angle(); - - -- - -- The base view - -- - local view = - { - type = "3D", - origin = CamPos, - angles = EyeAng, - x = 0, - y = 0, - w = 512, - h = 512, - aspect = 1, - fov = FOV - } - - -- - -- Create a bunch of entities we're gonna use to render. - -- - local entities = {} - - for k, v in pairs( Dupe.Entities ) do - - if ( v.Class == "prop_ragdoll" ) then - - entities[k] = ClientsideRagdoll( v.Model or "error.mdl", RENDERGROUP_OTHER ) - - if ( istable( v.PhysicsObjects ) ) then - - for boneid, v in pairs( v.PhysicsObjects ) do - - local obj = entities[k]:GetPhysicsObjectNum( boneid ) - if ( IsValid( obj ) ) then - obj:SetPos( v.Pos ) - obj:SetAngles( v.Angle ) - end - - end - - entities[ k ]:InvalidateBoneCache() - - end - - else - - entities[ k ] = ClientsideModel( v.Model or "error.mdl", RENDERGROUP_OTHER ) - - end - - end - - - -- - -- DRAW THE BLUE BACKGROUND - -- - render.SetMaterial( Material( "gui/dupe_bg.png" ) ) - render.DrawScreenQuadEx( 0, 0, 512, 512 ) - - - -- - -- BLACK OUTLINE - -- AWESOME BRUTE FORCE METHOD - -- - render.SuppressEngineLighting( true ) - - local BorderSize = CamDist * 0.004 - local Up = EyeAng:Up() * BorderSize - local Right = EyeAng:Right() * BorderSize - - render.SetColorModulation( 1, 1, 1, 1 ) - render.MaterialOverride( Material( "models/debug/debugwhite" ) ) - - -- Render each entity in a circle - for k, v in pairs( Dupe.Entities ) do - - for i=0, math.pi*2, 0.2 do - - view.origin = CamPos + Up * math.sin( i ) + Right * math.cos( i ) - - cam.Start( view ) - - render.Model( - { - model = v.Model, - pos = v.Pos, - angle = v.Angle, - - }, entities[k] ) - - cam.End() - - end - - end - - -- Because ee just messed up the depth - render.ClearDepth() - render.SetColorModulation( 0, 0, 0, 1 ) - - -- Try to keep the border size consistent with zoom size - local BorderSize = CamDist * 0.002 - local Up = EyeAng:Up() * BorderSize - local Right = EyeAng:Right() * BorderSize - - -- Render each entity in a circle - for k, v in pairs( Dupe.Entities ) do - - for i=0, math.pi*2, 0.2 do - - view.origin = CamPos + Up * math.sin( i ) + Right * math.cos( i ) - cam.Start( view ) - - render.Model( - { - model = v.Model, - pos = v.Pos, - angle = v.Angle, - skin = v.Skin - }, entities[k] ) - - cam.End() - - end - - end - - - -- - -- ACUAL RENDER! - -- - - -- We just fucked the depth up - so clean it - render.ClearDepth() - - -- Set up the lighting. This is over-bright on purpose - to make the ents pop - render.SetModelLighting( 0, 0, 0, 0 ) - render.SetModelLighting( 1, 2, 2, 2 ) - render.SetModelLighting( 2, 3, 2, 0 ) - render.SetModelLighting( 3, 0.5, 2.0, 2.5 ) - render.SetModelLighting( 4, 3, 3, 3 ) -- top - render.SetModelLighting( 5, 0, 0, 0 ) - render.MaterialOverride( nil ) - - view.origin = CamPos - cam.Start( view ) - - -- Render each model - for k, v in pairs( Dupe.Entities ) do - - render.SetColorModulation( 1, 1, 1, 1 ) - - if ( istable( v.EntityMods ) ) then - - if ( istable( v.EntityMods.colour ) ) then - render.SetColorModulation( v.EntityMods.colour.Color.r/255, v.EntityMods.colour.Color.g/255, v.EntityMods.colour.Color.b/255, v.EntityMods.colour.Color.a/255 ) - end - - if ( istable( v.EntityMods.material ) ) then - render.MaterialOverride( Material( v.EntityMods.material.MaterialOverride ) ) - end - - end - - render.Model( - { - model = v.Model, - pos = v.Pos, - angle = v.Angle, - skin = v.Skin - }, entities[k] ) - - render.MaterialOverride( nil ) - - end - - cam.End() - - -- Enable lighting again (or it will affect outside of this loop!) - render.SuppressEngineLighting( false ) - render.SetColorModulation( 1, 1, 1, 1 ) - - -- - -- Finished with the entities - remove them all - -- - for k, v in pairs( entities ) do - v:Remove() - end - - -- - -- This captures a square of the render target, copies it to a jpeg file - -- and returns it to us as a (binary) string. - -- - local jpegdata = render.Capture( - { - format = "jpeg", - x = 0, - y = 0, - w = 512, - h = 512, - quality = 95 - }); - - -- - -- Encode and compress the dupe - -- - local Dupe = util.TableToJSON( Dupe ) - if ( !isstring( Dupe ) ) then - Msg( "There was an error converting the dupe to a json string" ); - end - - Dupe = util.Compress( Dupe ) - - -- - -- And save it! (filename is automatic md5 in dupes/) - -- - if ( engine.WriteDupe( Dupe, jpegdata ) ) then - - -- Disable the save button!! - hook.Run( "DupeSaveUnavailable" ) - hook.Run( "DupeSaved" ) - - MsgN( "Saved!" ) - - -- TODO: Open tab and show dupe! - - end - - -end ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/transport.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/transport.lua deleted file mode 100644 index 007cabcdf..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/duplicator/transport.lua +++ /dev/null @@ -1,67 +0,0 @@ - -if ( SERVER ) then - --- --- Add the name of the net message to the string table (or it won't be able to send!) --- -util.AddNetworkString( "ReceiveDupe" ) - --- --- Called by the client to save a dupe they're holding on the server --- into a file on their computer. --- -concommand.Add( "dupe_save", function( ply, cmd, arg ) - - if ( !IsValid( ply ) ) then return end - - -- - -- No dupe to save (!) - -- - if ( !ply.CurrentDupe ) then return end - - -- - -- Convert dupe to JSON - -- - local json = util.TableToJSON( ply.CurrentDupe ) - - -- - -- Compress it - -- - local compressed = util.Compress( json ) - - MsgN( "Compressed Dupe for sending: ", json:len(), " => ", compressed:len() ); - - -- - -- And send it(!) - -- - net.Start( "ReceiveDupe" ) - net.WriteUInt( compressed:len(), 32 ) - net.WriteData( compressed, compressed:len() ) - net.Send( ply ) - -end, nil, "Save the current dupe!", { FCVAR_DONTRECORD } ) - -end - -if ( CLIENT ) then - - net.Receive( "ReceiveDupe", function( len, client ) - - local len = net.ReadUInt( 32 ) - local data = net.ReadData( len ) - - uncompressed = util.Decompress( data ) - if ( !uncompressed ) then - Msg( "Received dupe - but couldn't decompress!?\n" ); - return - end - - -- - -- Set this global so we can pick it up when we're rendering a frame - -- See icon.lua for this process - -- - g_ClientSaveDupe = util.JSONToTable( uncompressed ) - - end ) - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/dynamite.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/dynamite.lua deleted file mode 100644 index 110848396..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/dynamite.lua +++ /dev/null @@ -1,185 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.dynamite.name" - -TOOL.ClientConVar[ "group" ] = 52 -- Current group -TOOL.ClientConVar[ "damage" ] = 200 -- Damage to inflict -TOOL.ClientConVar[ "delay" ] = 0 -- Delay before explosions start -TOOL.ClientConVar[ "model" ] = "models/dav0r/tnt/tnt.mdl" -TOOL.ClientConVar[ "remove" ] = 0 - -cleanup.Register( "dynamite" ) - -function TOOL:LeftClick( trace ) - - if ( !trace.HitPos ) then return false end - if ( trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local ply = self:GetOwner() - - -- Get client's CVars - local _group = self:GetClientNumber( "group" ) - local _delay = self:GetClientNumber( "delay" ) - local _damage = math.Clamp( self:GetClientNumber( "damage" ), 0, 1500 ) - local _model = self:GetClientInfo( "model" ) - local _remove = self:GetClientNumber( "remove" ) == 1 - - -- If we shot a button change its keygroup - if ( IsValid( trace.Entity ) && trace.Entity:GetClass() == "gmod_dynamite" && trace.Entity:GetPlayer() == ply ) then - trace.Entity:Setup( _damage ) - trace.Entity:SetShouldRemove( _remove ) - trace.Entity.delay = _delay - - numpad.Remove( trace.Entity.NumDown ) - trace.Entity.key = _group - trace.Entity.NumDown = numpad.OnDown( ply, _group, "DynamiteBlow", trace.Entity, _delay ) - return true - end - - if ( !self:GetSWEP():CheckLimit( "dynamite" ) ) then return false end - - local dynamite = MakeDynamite( ply, trace.HitPos, Angle( 0, 0, 0 ), _group, _damage, _model, _remove, _delay ) - - local CurPos = dynamite:GetPos() - local NearestPoint = dynamite:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local Offset = CurPos - NearestPoint - - dynamite:SetPos( trace.HitPos + Offset ) - - undo.Create( "Dynamite" ) - undo.AddEntity( dynamite ) - undo.SetPlayer( ply ) - undo.Finish() - - - ply:AddCleanup( "dynamite", dynamite ) - - return true - -end - -function TOOL:RightClick( trace ) - - return self:LeftClick( trace ) - -end - -if ( SERVER ) then - - function MakeDynamite(pl, Pos, Ang, key, Damage, Model, Remove, delay, Vel, aVel, frozen ) - - if ( IsValid( pl ) && !pl:CheckLimit( "dynamite" ) ) then return nil end - - local dynamite = ents.Create( "gmod_dynamite" ) - dynamite:SetPos( Pos ) - dynamite:SetAngles( Ang ) - dynamite:SetModel( Model ) - dynamite:SetShouldRemove( Remove ) - dynamite:Spawn() - dynamite:Activate() - - dynamite:Setup( Damage ) - - if ( IsValid( pl ) ) then - dynamite:SetPlayer( pl ) - end - - local ttable = - { - key = key, - pl = pl, - nocollide = nocollide, - description = description, - Damage = Damage, - model = Model, - remove = Remove, - delay = delay - } - - table.Merge( dynamite:GetTable(), ttable ) - dynamite.NumDown = numpad.OnDown( pl, key, "DynamiteBlow", dynamite, delay ) - - if ( IsValid( pl ) ) then - - pl:AddCount( "dynamite", dynamite ) - - end - - DoPropSpawnedEffect( dynamite ) - - return dynamite - - end - - duplicator.RegisterEntityClass( "gmod_dynamite", MakeDynamite, "Pos", "Ang", "key", "Damage", "model", "remove", "delay", "Vel", "aVel", "frozen" ) - - local function BlowDynamite( pl, dynamite, delay ) - - if ( !IsValid( dynamite ) ) then return end - - dynamite:Explode( delay, pl ) - - end - - numpad.Register( "DynamiteBlow", BlowDynamite ) - -end - -function TOOL:UpdateGhostDynamite( ent, player ) - - if ( !IsValid( ent ) ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - - if ( !trace.Hit || trace.Entity:IsPlayer() || trace.Entity:GetClass() == "gmod_dynamite" ) then - ent:SetNoDraw( true ) - return - end - - ent:SetAngles( Angle( 0, 0, 0 ) ) - - local CurPos = ent:GetPos() - local NearestPoint = ent:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local Offset = CurPos - NearestPoint - - ent:SetPos( trace.HitPos + Offset ) - - ent:SetNoDraw( false ) - -end - -function TOOL:Think() - - local mdl = self:GetClientInfo( "model" ) - - if ( !IsValid( self.GhostEntity ) || self.GhostEntity:GetModel() != mdl ) then - self:MakeGhostEntity( mdl, Vector(0,0,0), Angle(0,0,0) ) - end - - self:UpdateGhostDynamite( self.GhostEntity, self:GetOwner() ) - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.dynamite.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "dynamite", - CVars = { "dynamite_group", "dynamite_damage", "dynamite_delay", "dynamite_delay_add", "dynamite_model" } } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.dynamite.explode", Command = "dynamite_group" } ) - CPanel:AddControl( "Slider", { Label = "#tool.dynamite.damage", Type = "Float", Command = "dynamite_damage", Min = "0", Max = "500", Help = true } ) - CPanel:AddControl( "Slider", { Label = "#tool.dynamite.delay", Type = "Float", Command = "dynamite_delay", Min = "0", Max = "10", Help = true } ) - CPanel:AddControl( "PropSelect", { Label = "#tool.dynamite.model", ConVar = "dynamite_model", Category = "Dynamite", Models = list.Get( "DynamiteModels" ) } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.dynamite.remove", Command = "dynamite_remove" } ) - -end - - -list.Set( "DynamiteModels", "models/dav0r/tnt/tnt.mdl", {} ) -list.Set( "DynamiteModels", "models/dav0r/tnt/tnttimed.mdl", {} ) -list.Set( "DynamiteModels", "models/dynamite/dynamite.mdl", {} ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/editentity.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/editentity.lua deleted file mode 100644 index 49b117959..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/editentity.lua +++ /dev/null @@ -1,55 +0,0 @@ - --- --- This works - but I'm not certain that it's the way to go about it. --- better instead to use the right click properties? --- - -TOOL.AddToMenu = false - -TOOL.Category = "Construction" -TOOL.Name = "#tool.editentity.name" - -function TOOL:LeftClick( trace ) - - if ( !trace.Hit ) then return false end - - self.Weapon:SetTargetEntity1( trace.Entity ) - - return true - -end - -function TOOL:RightClick( trace ) - - return self:LeftClick( trace ) - -end - -function TOOL:Think() - - local CurrentEditing = self.Weapon:GetTargetEntity1() - - if ( CLIENT && self.LastEditing != CurrentEditing ) then - - self.LastEditing = CurrentEditing - - local CPanel = controlpanel.Get( "editentity" ) - if ( !CPanel ) then return end - - CPanel:ClearControls() - self.BuildCPanel( CPanel, CurrentEditing ) - - end - -end - -function TOOL.BuildCPanel( CPanel, Entity ) - - local control = vgui.Create( "DEntityProperties" ) - control:SetEntity( Entity ) - control:SetSize( 10, 500 ) - - CPanel:AddPanel( control ) - -end - diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/elastic.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/elastic.lua deleted file mode 100644 index 6529b7491..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/elastic.lua +++ /dev/null @@ -1,100 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.elastic.name" - -TOOL.ClientConVar[ "constant" ] = "500" -TOOL.ClientConVar[ "damping" ] = "3" -TOOL.ClientConVar[ "rdamping" ] = "0.01" -TOOL.ClientConVar[ "material" ] = "cable/cable" -TOOL.ClientConVar[ "width" ] = "2" -TOOL.ClientConVar[ "stretch_only" ] = "1" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local constant = self:GetClientNumber( "constant" ) - local damping = self:GetClientNumber( "damping" ) - local rdamping = self:GetClientNumber( "rdamping" ) - local material = self:GetClientInfo( "material" ) - local width = self:GetClientNumber( "width" ) - local stretchonly = self:GetClientNumber( "stretch_only" ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1), self:GetLocalPos(2) - local constraint, rope = constraint.Elastic( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, constant, damping, rdamping, material, width, stretchonly ) - - -- Add The constraint to the players undo table - - undo.Create("Elastic") - undo.AddEntity( constraint ) - if rope then undo.AddEntity( rope ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "ropeconstraints", constraint ) - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Elastic" ) - return bool - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.elastic.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "elastic", - Options = { Default = { elastic_constant = '500', elastic_damping='3', elastic_rdamping='0.01', elastic_material='cable/cable', elastic_width='2', elastic_stretch_only="1" } }, - CVars = { "elastic_constant", "elastic_damping", "elastic_rdamping", "elastic_material", "elastic_width", "elastic_stretch_only" } } ) - - CPanel:AddControl( "Slider", { Label = "#tool.elastic.constant", Type = "Float", Command = "elastic_constant", Min = "0", Max = "4000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.elastic.damping", Type = "Float", Command = "elastic_damping", Min = "0", Max = "50", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.elastic.rdamping", Type = "Float", Command = "elastic_rdamping", Min = "0", Max = "1", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.elastic.stretchonly", Command = "elastic_stretch_only", Help=true } ) - - CPanel:AddControl( "Slider", { Label = "#tool.elastic.width", Type = "Float", Command = "elastic_width", Min = "0", Max = "20" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.elastic.material", convar = "elastic_material" } ) - - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/emitter.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/emitter.lua deleted file mode 100644 index 978e426f7..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/emitter.lua +++ /dev/null @@ -1,251 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.emitter.name" - -TOOL.ClientConVar[ "key" ] = "51" -TOOL.ClientConVar[ "delay" ] = "1" -TOOL.ClientConVar[ "toggle" ] = "1" -TOOL.ClientConVar[ "starton" ] = "0" -TOOL.ClientConVar[ "effect" ] = "sparks" -TOOL.ClientConVar[ "scale" ] = "1" - -cleanup.Register( "emitters" ) - -function TOOL:LeftClick( trace, worldweld ) - - worldweld = worldweld or false - - if ( trace.Entity && trace.Entity:IsPlayer() ) then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - if ( CLIENT ) then return true end - - local ply = self:GetOwner() - - local key = self:GetClientNumber( "key" ) - local delay = self:GetClientNumber( "delay" ) - local toggle = self:GetClientNumber( "toggle" ) == 1 - local starton = self:GetClientNumber( "starton" ) == 1 - local effect = self:GetClientInfo( "effect" ) - local scale = math.Clamp( self:GetClientNumber( "scale" ), 0.1, 6 ) - - -- Safe(ish) limits - delay = math.Clamp( delay, 0.05, 20 ) - - -- We shot an existing emitter - just change its values - if ( trace.Entity:IsValid() && trace.Entity:GetClass() == "gmod_emitter" && trace.Entity.pl == ply ) then - - trace.Entity:SetEffect( effect ) - trace.Entity:SetDelay( delay ) - trace.Entity:SetToggle( toggle ) - trace.Entity:SetScale( scale ) - - numpad.Remove( trace.Entity.NumDown ) - numpad.Remove( trace.Entity.NumUp ) - - trace.Entity.NumDown = numpad.OnDown( ply, key, "Emitter_On", trace.Entity ) - trace.Entity.NumUp = numpad.OnUp( ply, key, "Emitter_Off", trace.Entity ) - - trace.Entity.key = key - - return true - - end - - if ( !self:GetSWEP():CheckLimit( "emitters" ) ) then return false end - - local Pos = trace.HitPos - if ( trace.Entity != NULL && ( !trace.Entity:IsWorld() || worldweld ) ) then else - - Pos = Pos + trace.HitNormal - - end - - local Ang = trace.HitNormal:Angle() - Ang:RotateAroundAxis( trace.HitNormal, 0 ) - - local emitter = MakeEmitter( ply, key, delay, toggle, effect, starton, nil, nil, nil, nil, { Pos = Pos, Angle = Ang }, scale ) - - local weld - - -- Don't weld to world - if ( trace.Entity != NULL && ( !trace.Entity:IsWorld() || worldweld ) ) then - - weld = constraint.Weld( emitter, trace.Entity, 0, trace.PhysicsBone, 0, true, true ) - - -- >:( - emitter:GetPhysicsObject():EnableCollisions( false ) - emitter.nocollide = true - - end - - undo.Create( "Emitter" ) - undo.AddEntity( emitter ) - undo.AddEntity( weld ) - undo.SetPlayer( ply ) - undo.Finish() - - return true - -end - -function TOOL:RightClick( trace ) - return self:LeftClick( trace, true ) -end - -if ( SERVER ) then - - function MakeEmitter( ply, key, delay, toggle, effect, starton, Vel, aVel, frozen, nocollide, Data, scale ) - - if ( IsValid( ply ) && !ply:CheckLimit( "emitters" ) ) then return nil end - - local emitter = ents.Create( "gmod_emitter" ) - if ( !emitter:IsValid() ) then return false end - - duplicator.DoGeneric( emitter, Data ) - emitter:SetEffect( effect ) - emitter:SetPlayer( ply ) - emitter:SetDelay( delay ) - emitter:SetToggle( toggle ) - emitter:SetOn( starton ) - emitter:SetScale( scale or 1 ) - - emitter:Spawn() - - DoPropSpawnedEffect( emitter ) - - emitter.NumDown = numpad.OnDown( ply, key, "Emitter_On", emitter ) - emitter.NumUp = numpad.OnUp( ply, key, "Emitter_Off", emitter ) - - if ( nocollide == true ) then emitter:GetPhysicsObject():EnableCollisions( false ) end - - local ttable = - { - key = key, - delay = delay, - toggle = toggle, - effect = effect, - pl = ply, - nocollide = nocollide, - starton = starton, - scale = scale - } - - table.Merge( emitter:GetTable(), ttable ) - - if ( IsValid( ply ) ) then - ply:AddCount( "emitters", emitter ) - ply:AddCleanup( "emitters", emitter ) - end - - return emitter - - end - - duplicator.RegisterEntityClass( "gmod_emitter", MakeEmitter, "key", "delay", "toggle", "effect", "starton", "Vel", "aVel", "frozen", "nocollide", "Data", "scale" ) - -end - -function TOOL:UpdateGhostEmitter( ent, player ) - - if ( !IsValid( ent ) ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if ( !trace.Hit ) then return end - - if ( trace.Entity:IsPlayer() || trace.Entity:GetClass() == "gmod_emitter" ) then - - ent:SetNoDraw( true ) - return - - end - - ent:SetPos( trace.HitPos ) - ent:SetAngles( trace.HitNormal:Angle() ) - - ent:SetNoDraw( false ) - -end - -function TOOL:Think() - - if ( !IsValid( self.GhostEntity ) || self.GhostEntity:GetModel() != /*self:GetClientInfo( "model" )*/ "models/props_lab/tpplug.mdl" ) then - self:MakeGhostEntity( "models/props_lab/tpplug.mdl", Vector( 0, 0, 0 ), Angle( 0, 0, 0 ) ) - end - - self:UpdateGhostEmitter( self.GhostEntity, self:GetOwner() ) - -end - --- NOTE!! The . instead of : here - there is no 'self' argument!! --- This is just a function on the table - not a member function! - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.emitter.desc" } ) - - -- PRESETS - local params = { Label = "#tool.presets", MenuButton = 1, Folder = "emitter", Options = {}, CVars = {} } - - params.Options.default = { - emitter_key = 3, - emitter_delay = 0.1, - emitter_toggle = 1, - emitter_starton = 1, - emitter_scale = 1, - emitter_effect = "sparks" } - - table.insert( params.CVars, "emitter_key" ) - table.insert( params.CVars, "emitter_delay" ) - table.insert( params.CVars, "emitter_toggle" ) - table.insert( params.CVars, "emitter_starton" ) - table.insert( params.CVars, "emitter_effect" ) - table.insert( params.CVars, "emitter_scale" ) - - CPanel:AddControl( "ComboBox", params ) - - - -- KEY - CPanel:AddControl( "Numpad", { Label = "#tool.emitter.key", Command = "emitter_key", ButtonSize = 22 } ) - - -- DELAY - CPanel:AddControl( "Slider", { Label = "#tool.emitter.delay", - Type = "Float", - Min = 0.01, - Max = 0.5, - Command = "emitter_delay" } ) - - CPanel:AddControl( "Slider", { Label = "#tool.emitter.scale", - Type = "Float", - Min = 0.1, - Max = 6, - Command = "emitter_scale", - Help = true } ) - - -- TOGGLE - CPanel:AddControl( "Checkbox", { Label = "#tool.emitter.toggle", Command = "emitter_toggle" } ) - - -- START ON - CPanel:AddControl( "Checkbox", { Label = "#tool.emitter.starton", Command = "emitter_starton" } ) - - -- SELECT - local matselect = vgui.Create( "MatSelect", CPanel ) - matselect:SetItemWidth( 64 ) - matselect:SetItemHeight( 64 ) - matselect:SetAutoHeight( true ) - matselect:SetConVar( "emitter_effect" ) - - Derma_Hook( matselect.List, "Paint", "Paint", "Panel" ) - - local list = list.Get( "EffectType" ) - for k, v in pairs( list ) do - matselect:AddMaterialEx( v.print, v.material, k, { emitter_effect = k } ) - end - - CPanel:AddItem( matselect ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/example.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/example.lua deleted file mode 100644 index 664c1944a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/example.lua +++ /dev/null @@ -1,34 +0,0 @@ - --- Remove this to add it to the menu -TOOL.AddToMenu = false - --- Define these! -TOOL.Category = "My Category" -- Name of the category -TOOL.Name = "#Example" -- Name to display -TOOL.Command = nil -- Command on click (nil for default), can be removed -TOOL.ConfigName = nil -- Config file name (nil for default), can be removed - -if ( true ) then return end - - --- An example clientside convar -TOOL.ClientConVar["CLIENTSIDE"] = "default" - --- An example serverside convar -TOOL.ServerConVar["SERVERSIDE"] = "default" - -function TOOL:LeftClick( trace ) - Msg( "PRIMARY FIRE\n" ) -end - -function TOOL:RightClick( trace ) - Msg( "ALT FIRE\n" ) -end - -function TOOL:Reload( trace ) - -- The SWEP doesn't reload so this does nothing :( - Msg( "RELOAD\n" ) -end - -function TOOL:Think() -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/eyeposer.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/eyeposer.lua deleted file mode 100644 index b9a224944..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/eyeposer.lua +++ /dev/null @@ -1,138 +0,0 @@ - -TOOL.Category = "Poser" -TOOL.Name = "#tool.eyeposer.name" - -local function ConvertRelativeToEyesAttachment( Entity, Pos ) - - if ( Entity:IsNPC() ) then - return Pos - end - - -- Convert relative to eye attachment - local eyeattachment = Entity:LookupAttachment( "eyes" ) - if ( eyeattachment == 0 ) then return end - local attachment = Entity:GetAttachment( eyeattachment ) - if ( !attachment ) then return end - - local LocalPos, LocalAng = WorldToLocal( Pos, Angle(0,0,0), attachment.Pos, attachment.Ang ) - - return LocalPos - -end - ---[[--------------------------------------------------------- - Selects entity and aims their eyes ------------------------------------------------------------]] -function TOOL:LeftClick( trace ) - - if (self.SelectedEntity == nil) then - - if ( !IsValid( trace.Entity ) ) then return end - - self.SelectedEntity = trace.Entity - - self:GetWeapon():SetNetworkedEntity( 0, self.SelectedEntity ) - - return end - - local selectedent = self.SelectedEntity - self.SelectedEntity = nil - self:GetWeapon():SetNetworkedEntity( 0, NULL ) - - if (!selectedent:IsValid()) then return end - - local LocalPos = ConvertRelativeToEyesAttachment( selectedent, trace.HitPos ) - if (!LocalPos) then return false end - - selectedent:SetEyeTarget( LocalPos ) - -end - ---[[--------------------------------------------------------- - Makes the eyes look at the player ------------------------------------------------------------]] -function TOOL:RightClick( trace ) - - self:GetWeapon():SetNetworkedEntity( 0, NULL ) - self.SelectedEntity = nil - - if ( !IsValid( trace.Entity ) ) then return end - if ( CLIENT ) then return true end - - local pos = self:GetOwner():EyePos() - - local LocalPos = ConvertRelativeToEyesAttachment( trace.Entity, pos ) - if (!LocalPos) then return false end - - trace.Entity:SetEyeTarget( LocalPos ) - -end - -if ( CLIENT ) then - - --[[--------------------------------------------------------- - Draw a box indicating the face we have selected - -----------------------------------------------------------]] - function TOOL:DrawHUD() - - local selected = self:GetWeapon():GetNetworkedEntity( 0 ) - - if ( !IsValid( selected ) ) then return end - - local vEyePos = selected:EyePos() - - local eyeattachment = selected:LookupAttachment( "eyes" ) - if (eyeattachment == 0) then return end - - local attachment = selected:GetAttachment( eyeattachment ) - local scrpos = attachment.Pos:ToScreen() - if (!scrpos.visible) then return end - - -- Try to get each eye position.. this is a real guess and won't work on non-humans - local Leye = (attachment.Pos + attachment.Ang:Right() * 1.5):ToScreen() - local Reye = (attachment.Pos - attachment.Ang:Right() * 1.5):ToScreen() - - -- Work out the side distance to give a rough headsize box.. - local player_eyes = LocalPlayer():EyeAngles() - local side = (attachment.Pos + player_eyes:Right() * 10):ToScreen() - local size = 4 - - local Owner = self:GetOwner() - - -- Get Target - local tr = util.GetPlayerTrace( Owner ) - local trace = util.TraceLine( tr ) - local scrhit = trace.HitPos:ToScreen() - local x = scrhit.x - local y = scrhit.y - - local LocalPos = ConvertRelativeToEyesAttachment( selected, trace.HitPos ) - selected:SetEyeTarget( LocalPos ) - - -- Todo, make look less like ass - - surface.SetDrawColor( 0, 0, 0, 100 ) - surface.DrawLine( Leye.x-1, Leye.y+1, x-1, y+1 ) - surface.DrawLine( Leye.x-1, Leye.y-1, x-1, y-1 ) - surface.DrawLine( Leye.x+1, Leye.y+1, x+1, y+1 ) - surface.DrawLine( Leye.x+1, Leye.y-1, x+1, y-1 ) - surface.DrawLine( Reye.x-1, Reye.y+1, x-1, y+1 ) - surface.DrawLine( Reye.x-1, Reye.y-1, x-1, y-1 ) - surface.DrawLine( Reye.x+1, Reye.y+1, x+1, y+1 ) - surface.DrawLine( Reye.x+1, Reye.y-1, x+1, y-1 ) - - surface.SetDrawColor( 0, 255, 0, 255 ) - surface.DrawLine( Leye.x, Leye.y, x, y ) - surface.DrawLine( Reye.x, Reye.y, x, y ) - surface.DrawLine( Leye.x, Leye.y-1, x, y-1 ) - surface.DrawLine( Reye.x, Reye.y-1, x, y-1 ) - - end - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.eyeposer.desc" } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/faceposer.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/faceposer.lua deleted file mode 100644 index 4aa20d46a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/faceposer.lua +++ /dev/null @@ -1,423 +0,0 @@ - -TOOL.Category = "Poser" -TOOL.Name = "#tool.faceposer.name" - ---local EYE_END = 11 -local gLastFacePoseEntity = NULL -TOOL.FaceTimer = 0 - -local function IsUselessFaceFlex( strName ) - - if ( strName == "gesture_rightleft" ) then return true end - if ( strName == "gesture_updown" ) then return true end - if ( strName == "head_forwardback" ) then return true end - if ( strName == "chest_rightleft" ) then return true end - if ( strName == "body_rightleft" ) then return true end - if ( strName == "eyes_rightleft" ) then return true end - if ( strName == "eyes_updown" ) then return true end - if ( strName == "head_tilt" ) then return true end - if ( strName == "head_updown" ) then return true end - if ( strName == "head_rightleft" ) then return true end - - return false - -end - ---[[--------------------------------------------------------- ------------------------------------------------------------]] -function TOOL:FacePoserEntity() - return self:GetWeapon():GetNetworkedEntity( 1 ) -end - ---[[--------------------------------------------------------- ------------------------------------------------------------]] -function TOOL:SetFacePoserEntity( ent ) - return self:GetWeapon():SetNetworkedEntity( 1, ent ) -end - ---[[--------------------------------------------------------- ------------------------------------------------------------]] -function TOOL:Think() - - -- If we're on the client just make sure the context menu is up to date - if (CLIENT) then - - if ( self:FacePoserEntity() == gLastFacePoseEntity ) then return end - gLastFacePoseEntity = self:FacePoserEntity(); - self:UpdateFaceControlPanel(); - - return end - - -- On the server we continually set the flex weights - if (self.FaceTimer > CurTime() ) then return end - - local ent = self:FacePoserEntity() - if ( !IsValid( ent ) ) then return end - - local FlexNum = ent:GetFlexNum() - 1 - if (FlexNum <= 0) then return end - - for i=0, FlexNum-1 do - - local Name = ent:GetFlexName( i ) - - if ( IsUselessFaceFlex(Name ) ) then - - ent:SetFlexWeight( i, 0 ) - - else - - local num = self:GetClientNumber( "flex"..i ) - ent:SetFlexWeight( i, num ) - - end - - end - - local num = self:GetClientNumber( "scale" ) - ent:SetFlexScale( num ) - -end - - - ---[[--------------------------------------------------------- - Alt fire sucks the facepose from the model's face ------------------------------------------------------------]] -function TOOL:RightClick( trace ) - - if ( SERVER ) then - self:SetFacePoserEntity( trace.Entity ) - end - - if ( !IsValid( trace.Entity ) ) then return end - if ( trace.Entity:GetFlexNum() == 0 ) then return end - - local ent = trace.Entity - local FlexNum = ent:GetFlexNum() - - if ( SERVER ) then - - -- This stops it applying the current sliders to the newly selected face.. - -- it should probably be linked to the ping somehow.. but 1 second seems pretty safe - self.FaceTimer = CurTime() + 1 - - -- In multiplayer the rest is only done on the client to save bandwidth. - -- We can't do that in single player because these functions don't get called on the client - if ( !game.SinglePlayer() ) then return end - - end - - for i=0, FlexNum-1 do - - local Weight = '0.0' - - if ( i <= FlexNum ) then - Weight = ent:GetFlexWeight( i ) - end - - self:GetOwner():ConCommand( "faceposer_flex"..i.." " .. Weight ) - - end - - self:GetOwner():ConCommand( "faceposer_scale "..ent:GetFlexScale() ) - -end - -if ( SERVER ) then - - --[[--------------------------------------------------------- - Just select as the current object - - Current settings will get applied - -----------------------------------------------------------]] - function TOOL:LeftClick( trace ) - - if ( !IsValid( trace.Entity ) ) then return end - if ( trace.Entity:GetFlexNum() == 0 ) then return end - - self.FaceTimer = 0; - self:SetFacePoserEntity( trace.Entity ) - - end - - function CC_Face_Randomize( pl, command, arguments ) - - for i=0, 64 do - local num = math.Rand( 0, 1 ) - pl:ConCommand( "faceposer_flex"..i.." " .. string.format( "%.3f", num ) ) - end - - end - - concommand.Add( "faceposer_randomize", CC_Face_Randomize ) - -end - -if ( CLIENT ) then - - for i=0,64 do - TOOL.ClientConVar[ "flex"..i ] = "0" - end - - TOOL.ClientConVar[ "scale" ] = "1.0" - - --[[--------------------------------------------------------- - Updates the spawn menu panel - -----------------------------------------------------------]] - function TOOL:UpdateFaceControlPanel( index ) - - local CPanel = controlpanel.Get( "faceposer" ) - if ( !CPanel ) then Msg("Couldn't find faceposer panel!\n") return end - - CPanel:ClearControls() - self.BuildCPanel( CPanel, self:FacePoserEntity() ) - - end - - --[[--------------------------------------------------------- - Updates the Control Panel - -----------------------------------------------------------]] - function TOOL.BuildCPanel( CPanel, FaceEntity ) - - CPanel:AddControl( "Header", { Description = "#tool.faceposer.desc" } ) - - if ( !IsValid( FaceEntity ) ) then return end - - local Presets = vgui.Create( "ControlPresets", CPanel ) - Presets:SetPreset( "face" ) - - for i=0, 64 do - Presets:AddConVar( "faceposer_flex"..i ) - end - - CPanel:AddItem( Presets ) - - local QuickFace = vgui.Create( "MatSelect", CPanel ) - QuickFace:SetItemWidth( 64 ) - QuickFace:SetItemHeight( 32 ) - - QuickFace.List:SetSpacing( 1 ) - QuickFace.List:SetPadding( 0 ) - - QuickFace:SetNumRows( 3 ) - - -- Todo: These really need to be the name of the flex. - - local Clear = {} - for i=0, 64 do - Clear[ "faceposer_flex"..i ] = 0 - end - - QuickFace:AddMaterialEx( "#faceposer.clear", "vgui/face/clear", nil, Clear ) - - QuickFace:AddMaterialEx( "#faceposer.openeyes", "vgui/face/open_eyes", nil, { - faceposer_flex0 = "1", - faceposer_flex1 = "1", - faceposer_flex2 = "0", - faceposer_flex3 = "0", - faceposer_flex4 = "0", - faceposer_flex5 = "0", - faceposer_flex6 = "0", - faceposer_flex7 = "0", - faceposer_flex8 = "0", - faceposer_flex9 = "0" - }) - - QuickFace:AddMaterialEx( "#faceposer.closeeyes", "vgui/face/close_eyes", nil, { - faceposer_flex0 = "0", - faceposer_flex1 = "0", - faceposer_flex2 = "1", - faceposer_flex3 = "1", - faceposer_flex4 = "1", - faceposer_flex5 = "1", - faceposer_flex6 = "1", - faceposer_flex7 = "1", - faceposer_flex8 = "1", - faceposer_flex9 = "1" - }) - - QuickFace:AddMaterialEx( "#faceposer.angryeyebrows", "vgui/face/angry_eyebrows", nil, { - faceposer_flex10 = "0", - faceposer_flex11 = "0", - faceposer_flex12 = "1", - faceposer_flex13 = "1", - faceposer_flex14 = "0.5", - faceposer_flex15 = "0.5" - }) - - QuickFace:AddMaterialEx( "#faceposer.normaleyebrows", "vgui/face/normal_eyebrows", nil, { - faceposer_flex10 = "0", - faceposer_flex11 = "0", - faceposer_flex12 = "0", - faceposer_flex13 = "0", - faceposer_flex14 = "0", - faceposer_flex15 = "0" - }) - - QuickFace:AddMaterialEx( "#faceposer.sorryeyebrows", "vgui/face/sorry_eyebrows", nil, { - faceposer_flex10 = "1", - faceposer_flex11 = "1", - faceposer_flex12 = "0", - faceposer_flex13 = "0", - faceposer_flex14 = "0", - faceposer_flex15 = "0" - }) - - QuickFace:AddMaterialEx( "#faceposer.grin", "vgui/face/grin", nil, { - faceposer_flex20 = "1", - faceposer_flex21 = "1", - faceposer_flex22 = "1", - faceposer_flex23 = "1", - faceposer_flex24 = "0", - faceposer_flex25 = "0", - faceposer_flex26 = "0", - faceposer_flex27 = "1", - faceposer_flex28 = "1", - faceposer_flex29 = "0", - faceposer_flex30 = "0", - faceposer_flex31 = "0", - faceposer_flex32 = "0", - faceposer_flex33 = "1", - faceposer_flex34 = "1", - faceposer_flex35 = "0", - faceposer_flex36 = "0", - faceposer_flex37 = "0", - faceposer_flex38 = "0", - faceposer_flex39 = "1", - faceposer_flex40 = "0", - faceposer_flex41 = "0", - faceposer_flex42 = "1", - faceposer_flex43 = "1" - }) - - QuickFace:AddMaterialEx( "#faceposer.sad", "vgui/face/sad", nil, { - faceposer_flex20 = "0", - faceposer_flex21 = "0", - faceposer_flex22 = "0", - faceposer_flex23 = "0", - faceposer_flex24 = "1", - faceposer_flex25 = "1", - faceposer_flex26 = "0.0", - faceposer_flex27 = "0", - faceposer_flex28 = "0", - faceposer_flex29 = "0", - faceposer_flex30 = "0", - faceposer_flex31 = "0", - faceposer_flex32 = "0", - faceposer_flex33 = "0", - faceposer_flex34 = "0", - faceposer_flex35 = "0", - faceposer_flex36 = "0", - faceposer_flex37 = "0", - faceposer_flex38 = "0.5", - faceposer_flex39 = "0", - faceposer_flex40 = "0", - faceposer_flex41 = "0", - faceposer_flex42 = "0", - faceposer_flex43 = "0" - }) - - QuickFace:AddMaterialEx( "#faceposer.smile", "vgui/face/smile", nil, { - faceposer_flex20 = "1", - faceposer_flex21 = "1", - faceposer_flex22 = "1", - faceposer_flex23 = "1", - faceposer_flex24 = "0", - faceposer_flex25 = "0", - faceposer_flex26 = "0", - faceposer_flex27 = "0.6", - faceposer_flex28 = "0.4", - faceposer_flex29 = "0", - faceposer_flex30 = "0", - faceposer_flex31 = "0", - faceposer_flex32 = "0", - faceposer_flex33 = "1", - faceposer_flex34 = "1", - faceposer_flex35 = "0", - faceposer_flex36 = "0", - faceposer_flex37 = "0", - faceposer_flex38 = "0", - faceposer_flex39 = "0", - faceposer_flex40 = "1", - faceposer_flex41 = "1", - faceposer_flex42 = "0", - faceposer_flex43 = "0", - faceposer_flex44 = "0", - }) - - CPanel:AddItem( QuickFace ) - - local FlexNum = FaceEntity:GetFlexNum() - - local params = {} - params.Label = "#tool.faceposer.scale" - params.Help = true - params.Type = "Float" - params.Min = "-1" - params.Max = "5" - params.Command = "faceposer_scale" - CPanel:AddControl( "Slider", params ) - - local params = {} - params.Text = "#tool.faceposer.randomize" - params.Command = "faceposer_randomize" - CPanel:AddControl( "Button", params ) - - for i=0, FlexNum-1 do - - local Name = FaceEntity:GetFlexName( i ) - - if ( !IsUselessFaceFlex(Name ) ) then - - local params = {} - params.Label = Name - params.Type = "Float" - params.Min, params.Max = FaceEntity:GetFlexBounds( i ) - params.Command = "faceposer_flex"..i - - local ctrl = CPanel:AddControl( "Slider", params ) - - -- - -- this makes the controls all bunched up like how we want - -- - ctrl:SetHeight( 10 ) - - end - - end - - end - - local FacePoser = surface.GetTextureID( "gui/faceposer_indicator" ) - - --[[--------------------------------------------------------- - Draw a box indicating the face we have selected - -----------------------------------------------------------]] - function TOOL:DrawHUD() - - local selected = self:FacePoserEntity() - - if ( !IsValid( selected ) ) then return end - if ( selected:IsWorld() ) then return end - - local vEyePos = selected:EyePos() - - local eyeattachment = selected:LookupAttachment( "eyes" ) - if (eyeattachment == 0) then return end - - local attachment = selected:GetAttachment( eyeattachment ) - local scrpos = attachment.Pos:ToScreen() - if (!scrpos.visible) then return end - - -- Work out the side distance to give a rough headsize box.. - local player_eyes = LocalPlayer():EyeAngles() - local side = (attachment.Pos + player_eyes:Right() * 20):ToScreen() - local size = math.abs( side.x - scrpos.x ) - - surface.SetDrawColor( 255, 255, 255, 255 ) - surface.SetTexture( FacePoser ) - surface.DrawTexturedRect( scrpos.x-size, scrpos.y-size, size*2, size*2 ) - - end - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/finger.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/finger.lua deleted file mode 100644 index 59a141e58..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/finger.lua +++ /dev/null @@ -1,490 +0,0 @@ - -TOOL.Category = "Poser" -TOOL.Name = "#tool.finger.name" - -TOOL.RequiresTraceHit = true - -local VarsOnHand = 5 * 3 -local FingerVars = VarsOnHand * 2 - - ---[[------------------------------------------------------------ - Name: HasTF2Hands - Desc: Returns true if it has TF2 hands ---------------------------------------------------------------]] -local function HasTF2Hands( pEntity ) - return pEntity:LookupBone( "bip_hand_L" ) != nil -end - ---[[------------------------------------------------------------ - Name: HasZenoHands - Desc: Returns true if it has Zeno Clash hands ---------------------------------------------------------------]] -local function HasZenoHands( pEntity ) - return pEntity:LookupBone( "Bip01_L_Hand" ) != nil -end - -local TranslateTable_TF2 = {} - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger0" ] = "bip_thumb_0_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger01" ] = "bip_thumb_1_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger02" ] = "bip_thumb_2_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger1" ] = "bip_index_0_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger11" ] = "bip_index_1_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger12" ] = "bip_index_2_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger2" ] = "bip_middle_0_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger21" ] = "bip_middle_1_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger22" ] = "bip_middle_2_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger3" ] = "bip_ring_0_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger31" ] = "bip_ring_1_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger32" ] = "bip_ring_2_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger4" ] = "bip_pinky_0_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger41" ] = "bip_pinky_1_L" - TranslateTable_TF2[ "ValveBiped.Bip01_L_Finger42" ] = "bip_pinky_2_L" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger0" ] = "bip_thumb_0_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger01" ] = "bip_thumb_1_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger02" ] = "bip_thumb_2_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger1" ] = "bip_index_0_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger11" ] = "bip_index_1_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger12" ] = "bip_index_2_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger2" ] = "bip_middle_0_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger21" ] = "bip_middle_1_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger22" ] = "bip_middle_2_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger3" ] = "bip_ring_0_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger31" ] = "bip_ring_1_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger32" ] = "bip_ring_2_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger4" ] = "bip_pinky_0_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger41" ] = "bip_pinky_1_R" - TranslateTable_TF2[ "ValveBiped.Bip01_R_Finger42" ] = "bip_pinky_2_R" - -local TranslateTable_Zeno = {} - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger0" ] = "Bip01_L_Finger0" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger01" ] = "Bip01_L_Finger01" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger02" ] = "Bip01_L_Finger02" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger1" ] = "Bip01_L_Finger1" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger11" ] = "Bip01_L_Finger11" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger12" ] = "Bip01_L_Finger12" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger2" ] = "Bip01_L_Finger2" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger21" ] = "Bip01_L_Finger21" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger22" ] = "Bip01_L_Finger22" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger3" ] = "Bip01_L_Finger3" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger31" ] = "Bip01_L_Finger31" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger32" ] = "Bip01_L_Finger32" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger4" ] = "Bip01_L_Finger4" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger41" ] = "Bip01_L_Finger41" - TranslateTable_Zeno[ "ValveBiped.Bip01_L_Finger42" ] = "Bip01_L_Finger42" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger0" ] = "Bip01_R_Finger0" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger01" ] = "Bip01_R_Finger01" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger02" ] = "Bip01_R_Finger02" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger1" ] = "Bip01_R_Finger1" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger11" ] = "Bip01_R_Finger11" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger12" ] = "Bip01_R_Finger12" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger2" ] = "Bip01_R_Finger2" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger21" ] = "Bip01_R_Finger21" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger22" ] = "Bip01_R_Finger22" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger3" ] = "Bip01_R_Finger3" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger31" ] = "Bip01_R_Finger31" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger32" ] = "Bip01_R_Finger32" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger4" ] = "Bip01_R_Finger4" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger41" ] = "Bip01_R_Finger41" - TranslateTable_Zeno[ "ValveBiped.Bip01_R_Finger42" ] = "Bip01_R_Finger42" - ---[[--------------------------------------------------------- - Name: HandEntity ------------------------------------------------------------]] -function TOOL:HandEntity() - return self:GetWeapon():GetNetworkedEntity( "HandEntity" ) -end - ---[[--------------------------------------------------------- - Name: HandNum ------------------------------------------------------------]] -function TOOL:HandNum() - return self:GetWeapon():GetNetworkedInt( "HandNum" ) -end - ---[[--------------------------------------------------------- - Name: SetHand ------------------------------------------------------------]] -function TOOL:SetHand( ent, iHand ) - self:GetWeapon():SetNetworkedEntity( "HandEntity", ent ) - self:GetWeapon():SetNetworkedInt( "HandNum", iHand ) -end - - ---[[------------------------------------------------------------ - Name: GetFingerBone - Desc: Translate the fingernum, part and hand into an real bone number ---------------------------------------------------------------]] -local function GetFingerBone( self, fingernum, part, hand ) - - ---- START HL2 BONE LOOKUP ---------------------------------- - local Name = "ValveBiped.Bip01_L_Finger"..fingernum - if ( hand == 1 ) then Name = "ValveBiped.Bip01_R_Finger"..fingernum end - if ( part != 0 ) then Name = Name .. part end - - local bone = self:LookupBone( Name ) - if ( bone ) then return bone end - ---- END HL2 BONE LOOKUP ---------------------------------- - - - ---- START TF BONE LOOKUP ---------------------------------- - local TranslatedName = TranslateTable_TF2[ Name ] - if ( TranslatedName ) then - local bone = self:LookupBone( TranslatedName ) - if ( bone ) then return bone end - end - ---- END TF BONE LOOKUP ---------------------------------- - - ---- START Zeno BONE LOOKUP ---------------------------------- - local TranslatedName = TranslateTable_Zeno[ Name ] - if ( TranslatedName ) then - local bone = self:LookupBone( TranslatedName ) - if ( bone ) then return bone end - end - ---- END Zeno BONE LOOKUP ---------------------------------- - -end - ---[[------------------------------------------------------------ - Name: SetupFingers - Desc: Cache the finger bone numbers for faster access ---------------------------------------------------------------]] -local function SetupFingers( self ) - - if ( self.FingerIndex ) then return end - - self.FingerIndex = {} - - local i = 1 - - for hand = 0, 1 do - for finger = 0, 4 do - for part = 0, 2 do - - self.FingerIndex[ i ] = GetFingerBone( self, finger, part, hand ) - - i = i + 1 - - end - end - end - -end - ---[[--------------------------------------------------------- - Name: Apply the current tool values to entity's hand ------------------------------------------------------------]] -function TOOL:ApplyValues( pEntity, iHand ) - - if (CLIENT) then return end - - SetupFingers( pEntity ) - - local bTF2 = HasTF2Hands( pEntity ); - - for i=0, VarsOnHand-1 do - - local Var = self:GetClientInfo( i ) - local VecComp = string.Explode( " ", Var ) - - local sin = math.sin( CurTime() * 10 ) * 10 - - local Ang = nil; - - if ( bTF2 ) then - - if ( i < 3 ) then - Ang = Angle( 0, tonumber(VecComp[2]), tonumber(VecComp[1]) ) - else - Ang = Angle( 0, tonumber(VecComp[1]), -tonumber(VecComp[2]) ) - end - - else - if ( i < 3 ) then - Ang = Angle( tonumber(VecComp[2]), tonumber(VecComp[1]), 0 ) - else - Ang = Angle( tonumber(VecComp[1]), tonumber(VecComp[2]), 0 ) - end - end - - - local bone = pEntity.FingerIndex[ i + iHand*VarsOnHand + 1 ] - if ( bone ) then - pEntity:ManipulateBoneAngles( bone, Ang ) - end - - end - - -end - ---[[------------------------------------------------------------ - Name: GetHandPositions - Desc: Hope we don't have any one armed models ---------------------------------------------------------------]] -function TOOL:GetHandPositions( pEntity ) - - local LeftHand = pEntity:LookupBone( "ValveBiped.Bip01_L_Hand" ) - if (!LeftHand) then LeftHand = pEntity:LookupBone( "bip_hand_L" ) end - if (!LeftHand) then LeftHand = pEntity:LookupBone( "Bip01_L_Hand" ) end - - local RightHand = pEntity:LookupBone( "ValveBiped.Bip01_R_Hand" ) - if (!RightHand) then RightHand = pEntity:LookupBone( "bip_hand_R" ) end - if (!RightHand) then RightHand = pEntity:LookupBone( "Bip01_R_Hand" ) end - - if (!LeftHand || !RightHand) then return false end - - local LeftHand = pEntity:GetBoneMatrix( LeftHand ) - local RightHand = pEntity:GetBoneMatrix( RightHand ) - if (!LeftHand || !RightHand) then return false end - - return LeftHand, RightHand - -end - - ---[[------------------------------------------------------------ - Name: LeftClick - Desc: Applies current convar hand to picked hand ---------------------------------------------------------------]] -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return false end - if ( trace.Entity:GetClass() != "prop_ragdoll" && !trace.Entity:IsNPC() ) then return false end - - local LeftHand, RightHand = self:GetHandPositions( trace.Entity ) - - if (!LeftHand) then return false end - if ( CLIENT ) then return true end - - local LeftHand = (LeftHand:GetTranslation() - trace.HitPos):Length() - local RightHand = (RightHand:GetTranslation() - trace.HitPos):Length() - - if ( LeftHand < RightHand ) then - - self:ApplyValues( trace.Entity, 0 ) - - else - - self:ApplyValues( trace.Entity, 1 ) - - end - - - return true - -end - - ---[[------------------------------------------------------------ - Name: RightClick - Desc: Selects picked hand and sucks off convars ---------------------------------------------------------------]] -function TOOL:RightClick( trace ) - - local ent = trace.Entity; - - if ( !IsValid( ent ) ) then return false end - if ( ent:IsPlayer() ) then return false end - if ( ent:GetClass() != "prop_ragdoll" && !ent:IsNPC() ) then return false end - - if ( CLIENT ) then return false end - - local LeftHand, RightHand = self:GetHandPositions( ent ) - if ( !LeftHand ) then return false end - - local LeftHand = (LeftHand:GetTranslation() - trace.HitPos):Length() - local RightHand = (RightHand:GetTranslation() - trace.HitPos):Length() - - local Hand = 0 - if ( LeftHand < RightHand ) then - - self:SetHand( ent, 0, false ) - - else - - self:SetHand( ent, 1, false ) - Hand = 1 - - end - - -- - -- Make sure entity has fingers set up! - -- - SetupFingers( ent ); - - local bTF2 = HasTF2Hands( ent ); - - -- - -- Rwead the variables from the angles of the fingers, into our convars - -- - for i=0, VarsOnHand-1 do - - local bone = ent.FingerIndex[ i + Hand*VarsOnHand + 1 ] - if ( bone ) then - - local Ang = ent:GetManipulateBoneAngles( bone ) - - if ( bTF2 ) then - - if ( i < 3 ) then - self:GetOwner():ConCommand( Format( "finger_%s %.1f %.1f", i, Ang.Roll, Ang.Yaw ) ) - else - self:GetOwner():ConCommand( Format( "finger_%s %.1f %.1f", i, Ang.Yaw, -Ang.Roll ) ) - end - else - if ( i < 3 ) then - self:GetOwner():ConCommand( Format( "finger_%s %.1f %.1f", i, Ang.Yaw, Ang.Pitch ) ) - else - self:GetOwner():ConCommand( Format( "finger_%s %.1f %.1f", i, Ang.Pitch, Ang.Yaw ) ) - end - end - - - - end - - end - - -- We don't want to send the finger poses to the client straight away - -- because they will get the old poses that are currently in their convars - -- We need to wait until they convars get updated with the sucked pose - self.NextUpdate = CurTime() + 0.5 - - return false - -end - -local OldHand = nil -local OldEntity = nil - ---[[------------------------------------------------------------ - Name: Think - Desc: Updates the selected entity with the values from the convars - Also, on the client it rebuilds the control panel if we have - selected a new entity or hand ---------------------------------------------------------------]] -function TOOL:Think() - - local selected = self:HandEntity() - local hand = self:HandNum() - - if ( self.NextUpdate && self.NextUpdate > CurTime() ) then return end - - if ( CLIENT ) then - - if ( OldHand != hand || OldEntity != selected ) then - - OldHand = hand - OldEntity = selected - - self:RebuildControlPanel( hand ) - - end - - end - - if ( !IsValid( selected ) ) then return end - if ( selected:IsWorld() ) then return end - - self:ApplyValues( selected, hand ) - -end - -if ( !CLIENT ) then return end --- Notice the return above. --- The rest of this file CLIENT ONLY. - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.finger.desc" } ) - -end - -for i=0, VarsOnHand do - TOOL.ClientConVar[ ""..i ] = "0 0" -end - - ---[[------------------------------------------------------------ - Name: RebuildControlPanel - Desc: Rebuilds the context menu based on the current selected entity/hand ---------------------------------------------------------------]] -function TOOL:RebuildControlPanel( hand ) - - -- We've selected a new entity - rebuild the controls list - local CPanel = controlpanel.Get( "finger" ) - if ( !CPanel ) then return end - - CPanel:ClearControls() - - self.BuildCPanel( CPanel ) - - local Ent = self:HandEntity() - if ( !IsValid( Ent ) ) then return end - - local CVars = {} - - local Default = {} - for i=0, VarsOnHand do - table.insert( CVars, "finger_"..i ) - Default[ "finger_"..i ] = "0 0 0" - end - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "finger", - CVars = CVars, - Options = { default = Default } - } ) - - SetupFingers( Ent ); - - if ( !Ent.FingerIndex ) then return end - -- Detect mitten hands - local NumVars = table.Count( Ent.FingerIndex ) - - CPanel:AddControl( "FingerPoser", { hand = hand, numvars = NumVars } ) - - - CPanel:AddControl( "Checkbox", { Label = "#tool.finger.restrict_axis", Command = "finger_restrict" } ) - -end - -local FacePoser = surface.GetTextureID( "gui/faceposer_indicator" ) - ---[[------------------------------------------------------------ - Name: DrawHUD - Desc: Draw a circle around the selected hand ---------------------------------------------------------------]] -function TOOL:DrawHUD() - - local selected = self:HandEntity() - local hand = self:HandNum() - - if ( !IsValid( selected ) ) then return end - if ( selected:IsWorld() ) then return end - - local Bone = nil - - local lefthand, righthand = self:GetHandPositions( selected ) - - local BoneMatrix = lefthand - if ( hand == 1 ) then BoneMatrix = righthand end - if (!BoneMatrix) then return end - - local vPos = BoneMatrix:GetTranslation() - - local scrpos = vPos:ToScreen() - if (!scrpos.visible) then return end - - -- Work out the side distance to give a rough headsize box.. - local player_eyes = LocalPlayer():EyeAngles() - local side = (vPos + player_eyes:Right() * 20):ToScreen() - local size = math.abs( side.x - scrpos.x ) - - surface.SetDrawColor( 255, 255, 255, 255 ) - surface.SetTexture( FacePoser ) - surface.DrawTexturedRect( scrpos.x-size, scrpos.y-size, size*2, size*2 ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/hoverball.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/hoverball.lua deleted file mode 100644 index ab5e70fa2..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/hoverball.lua +++ /dev/null @@ -1,222 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.hoverball.name" - -TOOL.ClientConVar[ "keyup" ] = "46" -TOOL.ClientConVar[ "keydn" ] = "43" -TOOL.ClientConVar[ "speed" ] = "1" -TOOL.ClientConVar[ "resistance" ] = "0" -TOOL.ClientConVar[ "strength" ] = "1" -TOOL.ClientConVar[ "model" ] = "models/dav0r/hoverball.mdl" - -cleanup.Register( "hoverballs" ) - -function TOOL:LeftClick( trace ) - - if ( trace.Entity && trace.Entity:IsPlayer() ) then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - if ( CLIENT ) then return true end - - local ply = self:GetOwner() - - local key_d = self:GetClientNumber( "keydn" ) - local key_u = self:GetClientNumber( "keyup" ) - local speed = self:GetClientNumber( "speed" ) - local resistance = self:GetClientNumber( "resistance" ) - local strength = self:GetClientNumber( "strength" ) - local model = self:GetClientInfo( "model" ) - - resistance = math.Clamp( resistance, 0, 20 ) - strength = math.Clamp( strength, 0.1, 20 ) - - -- We shot an existing hoverball - just change its values - if ( trace.Entity:IsValid() && trace.Entity:GetClass() == "gmod_hoverball" && trace.Entity.pl == ply ) then - - trace.Entity:SetSpeed( speed ) - trace.Entity:SetAirResistance( resistance ) - trace.Entity:SetStrength( strength ) - - numpad.Remove( trace.Entity.NumDown ) - numpad.Remove( trace.Entity.NumUp ) - numpad.Remove( trace.Entity.NumBackDown ) - numpad.Remove( trace.Entity.NumBackUp ) - - trace.Entity.NumDown = numpad.OnDown( ply, key_u, "Hoverball_Up", trace.Entity, true ) - trace.Entity.NumUp = numpad.OnUp( ply, key_u, "Hoverball_Up", trace.Entity, false ) - - trace.Entity.NumBackDown = numpad.OnDown( ply, key_d, "Hoverball_Down", trace.Entity, true ) - trace.Entity.NumBackUp = numpad.OnUp( ply, key_d, "Hoverball_Down", trace.Entity, false ) - - trace.Entity.key_u = key_u - trace.Entity.key_d = key_d - trace.Entity.speed = speed - trace.Entity.strength = strength - trace.Entity.resistance = resistance - - return true - - end - - if ( !self:GetSWEP():CheckLimit( "hoverballs" ) ) then return false end - - local ball = MakeHoverBall( ply, trace.HitPos, key_d, key_u, speed, resistance, strength, model ) - - local CurPos = ball:GetPos() - local NearestPoint = ball:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local Offset = CurPos - NearestPoint - - ball:SetPos( trace.HitPos + Offset ) - - local const, nocollide - - -- Don't weld to world - if ( trace.Entity != NULL && !trace.Entity:IsWorld() ) then - - -- Ent1, Ent2, Bone1, Bone2, forcelimit, nocollide, deleteonbreak - const = constraint.Weld( ball, trace.Entity, 0, trace.PhysicsBone, 0, 0, true ) - - ball:GetPhysicsObject():EnableCollisions( false ) - ball.nocollide = true - - end - - undo.Create( "HoverBall" ) - undo.AddEntity( ball ) - undo.AddEntity( const ) - undo.SetPlayer( ply ) - undo.Finish() - - ply:AddCleanup( "hoverballs", ball ) - ply:AddCleanup( "hoverballs", const ) - ply:AddCleanup( "hoverballs", nocollide ) - - return true - -end - -function TOOL:RightClick( trace ) - - return self:LeftClick( trace ) - -end - -if ( SERVER ) then - - function MakeHoverBall( ply, Pos, key_d, key_u, speed, resistance, strength, model, Vel, aVel, frozen, nocollide ) - - if ( IsValid( ply ) ) then - if ( !ply:CheckLimit( "hoverballs" ) ) then return nil end - end - - local ball = ents.Create( "gmod_hoverball" ) - if ( !ball:IsValid() ) then return false end - - ball:SetPos( Pos ) - ball:SetModel( Model( model ) ) - ball:Spawn() - ball:SetSpeed( speed ) - ball:SetAirResistance( resistance ) - ball:SetStrength( strength ) - - if ( IsValid( ply ) ) then - ball:SetPlayer( ply ) - end - - ball.NumDown = numpad.OnDown( ply, key_u, "Hoverball_Up", ball, true ) - ball.NumUp = numpad.OnUp( ply, key_u, "Hoverball_Up", ball, false ) - - ball.NumBackDown = numpad.OnDown( ply, key_d, "Hoverball_Down", ball, true ) - ball.NumBackUp = numpad.OnUp( ply, key_d, "Hoverball_Down", ball, false ) - - if ( nocollide == true ) then ball:GetPhysicsObject():EnableCollisions( false ) end - - local ttable = - { - key_d = key_d, - key_u = key_u, - pl = ply, - nocollide = nocollide, - speed = speed, - strength = strength, - resistance = resistance, - model = model - } - - table.Merge( ball:GetTable(), ttable ) - - if ( IsValid( ply ) ) then - ply:AddCount( "hoverballs", ball ) - end - - DoPropSpawnedEffect( ball ) - - return ball - - end - - duplicator.RegisterEntityClass( "gmod_hoverball", MakeHoverBall, "Pos", "key_d", "key_u", "speed", "resistance", "strength", "model", "Vel", "aVel", "frozen", "nocollide" ) - -end - -function TOOL:UpdateGhostHoverball( ent, player ) - - if ( !IsValid( ent ) ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if ( !trace.Hit ) then return end - - if ( trace.Entity:IsPlayer() || trace.Entity:GetClass() == "gmod_hoverball" ) then - - ent:SetNoDraw( true ) - return - - end - - local CurPos = ent:GetPos() - local NearestPoint = ent:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local Offset = CurPos - NearestPoint - - ent:SetPos( trace.HitPos + Offset ) - - ent:SetNoDraw( false ) - -end - -function TOOL:Think() - - if ( !IsValid( self.GhostEntity ) || self.GhostEntity:GetModel() != self:GetClientInfo( "model" ) ) then - self:MakeGhostEntity( self:GetClientInfo( "model" ), Vector( 0, 0, 0 ), Angle( 0, 0, 0 ) ) - end - - self:UpdateGhostHoverball( self.GhostEntity, self:GetOwner() ) - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.hoverball.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "hoverball", - CVars = { "hoverball_keydn", "hoverball_keyup", "hoverball_speed", "hoverball_resistance", "hoverball_strength", "hoverball_model" } } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.hoverball.up", Command = "hoverball_keyup", Label2 = "#tool.hoverball.down", Command2 = "hoverball_keydn" } ) - CPanel:AddControl( "Slider", { Label = "#tool.hoverball.speed", Type = "Float", Command = "hoverball_speed", Min = "0", Max = "20", Help = true } ) - CPanel:AddControl( "Slider", { Label = "#tool.hoverball.resistance", Type = "Float", Command = "hoverball_resistance", Min = "0", Max = "10", Help = true } ) - CPanel:AddControl( "Slider", { Label = "#tool.hoverball.strength", Type = "Float", Command = "hoverball_strength", Min = "0.1", Max = "10", Help = true } ) - CPanel:AddControl( "PropSelect", { Label = "#tool.hoverball.model", ConVar = "hoverball_model", Models = list.Get( "HoverballModels" ), Height = 4 } ) - -end - --- This list is getting populated from right to left for some reason! - -list.Set( "HoverballModels", "models/MaxOfS2D/hover_propeller.mdl", {} ) -list.Set( "HoverballModels", "models/dav0r/hoverball.mdl", {} ) -list.Set( "HoverballModels", "models/MaxOfS2D/hover_rings.mdl", {} ) -list.Set( "HoverballModels", "models/MaxOfS2D/hover_classic.mdl", {} ) -list.Set( "HoverballModels", "models/MaxOfS2D/hover_basic.mdl", {} ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/hydraulic.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/hydraulic.lua deleted file mode 100644 index 559ad13b0..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/hydraulic.lua +++ /dev/null @@ -1,201 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.hydraulic.name" - -TOOL.ClientConVar[ "group" ] = "37" -TOOL.ClientConVar[ "width" ] = "3" -TOOL.ClientConVar[ "addlength" ] = "100" -TOOL.ClientConVar[ "fixed" ] = "1" -TOOL.ClientConVar[ "speed" ] = "64" -TOOL.ClientConVar[ "material" ] = "cable/rope" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - if ( ( !self:GetEnt(1):IsValid() && !self:GetEnt(2):IsValid() ) || iNum > 1 ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local width = self:GetClientNumber( "width", 3 ) - local bind = self:GetClientNumber( "group", 1 ) - local AddLength = self:GetClientNumber( "addlength", 0 ) - local fixed = self:GetClientNumber( "fixed", 1 ) - local speed = self:GetClientNumber( "speed", 64 ) - local material = self:GetClientInfo( "material" ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - - local Length1 = (WPos1 - WPos2):Length() - local Length2 = Length1 + AddLength - - local constraint,rope,controller,slider = constraint.Hydraulic( self:GetOwner(), Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, Length1, Length2, width, bind, fixed, speed, material ) - - undo.Create("Hydraulic") - if constraint then undo.AddEntity( constraint ) end - if rope then undo.AddEntity( rope ) end - if slider then undo.AddEntity( slider ) end - if controller then undo.AddEntity( controller ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - if constraint then self:GetOwner():AddCleanup( "ropeconstraints", constraint ) end - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - if slider then self:GetOwner():AddCleanup( "ropeconstraints", slider ) end - if controller then self:GetOwner():AddCleanup( "ropeconstraints", controller ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - local tr = {} - tr.start = trace.HitPos - tr.endpos = tr.start + (trace.HitNormal * 16384) - tr.filter = {} - tr.filter[1] = self:GetOwner() - if (trace.Entity:IsValid()) then - tr.filter[2] = trace.Entity - end - - local tr = util.TraceLine( tr ) - - if ( !tr.Hit ) then - self:ClearObjects() - return - end - - -- Don't try to constrain world to world - if ( trace.HitWorld && tr.HitWorld ) then - self:ClearObjects() - return - end - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - if ( tr.Entity:IsValid() && tr.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - - local Phys2 = tr.Entity:GetPhysicsObjectNum( tr.PhysicsBone ) - self:SetObject( 2, tr.Entity, tr.HitPos, Phys2, tr.PhysicsBone, tr.HitNormal ) - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - -- Get client's CVars - local width = self:GetClientNumber( "width", 3 ) - local bind = self:GetClientNumber( "group", 1 ) - local AddLength = self:GetClientNumber( "addlength", 0 ) - local fixed = self:GetClientNumber( "fixed", 1 ) - local speed = self:GetClientNumber( "speed", 64 ) - local material = self:GetClientInfo( "material" ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - - local Length1 = (WPos1 - WPos2):Length() - local Length2 = Length1 + AddLength - - local constraint,rope,controller,slider = constraint.Hydraulic( self:GetOwner(), Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, Length1, Length2, width, bind, fixed, speed, material ) - - undo.Create("Hydraulic") - if constraint then undo.AddEntity( constraint ) end - if rope then undo.AddEntity( rope ) end - if slider then undo.AddEntity( slider ) end - if controller then undo.AddEntity( controller ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - if constraint then self:GetOwner():AddCleanup( "ropeconstraints", constraint ) end - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - if slider then self:GetOwner():AddCleanup( "ropeconstraints", slider ) end - if controller then self:GetOwner():AddCleanup( "ropeconstraints", controller ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Hydraulic" ) - return bool - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.hydraulic.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "hydraulic", - Options = { Default = { hydraulic_width = '3', hydraulic_group='1', hydraulic_addlength='100', hydraulic_fixed='1' } }, - CVars = { "hydraulic_width", "hydraulic_group", "hydraulic_addlength", "hydraulic_fixed" } } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.hydraulic.controls", Command = "hydraulic_group" } ) - CPanel:AddControl( "Slider", { Label = "#tool.hydraulic.addlength", Type = "Float", Command = "hydraulic_addlength", Min = "-1000", Max = "1000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.hydraulic.speed", Type = "Float", Command = "hydraulic_speed", Min = "0", Max = "50", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.hydraulic.fixed", Command = "hydraulic_fixed", Help=true } ) - - CPanel:AddControl( "Slider", { Label = "#tool.hydraulic.width", Type = "Float", Command = "hydraulic_width", Min = "0", Max = "5" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.hydraulic.material", convar = "hydraulic_material" } ) - - - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/inflator.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/inflator.lua deleted file mode 100644 index 615d80cc0..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/inflator.lua +++ /dev/null @@ -1,164 +0,0 @@ - -TOOL.Category = "Poser" -TOOL.Name = "#tool.inflator.name" - -TOOL.LeftClickAutomatic = true -TOOL.RightClickAutomatic = true -TOOL.RequiresTraceHit = true - -if ( CLIENT ) then - - function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.inflator.desc" } ) - - end - -end - -local ScaleYZ = { "ValveBiped.Bip01_L_UpperArm", - "ValveBiped.Bip01_L_Forearm", - "ValveBiped.Bip01_L_Thigh", - "ValveBiped.Bip01_L_Calf", - "ValveBiped.Bip01_R_UpperArm", - "ValveBiped.Bip01_R_Forearm", - "ValveBiped.Bip01_R_Thigh", - "ValveBiped.Bip01_R_Calf", - "ValveBiped.Bip01_Spine2", - "ValveBiped.Bip01_Spine1", - "ValveBiped.Bip01_Spine", - "ValveBiped.Bip01_Spinebut" } - -local ScaleXZ = { "ValveBiped.Bip01_pelvis" } - - -local function GetNiceBoneScale( name, scale ) - - if ( table.HasValue( ScaleYZ, name ) ) then - return Vector( 0, scale, scale ) - end - - if ( table.HasValue( ScaleXZ, name ) ) then - return Vector( scale, 0, scale ) - end - - return Vector( scale, scale, scale ) - -end - - - -local ScaleBone = nil - -local function ScaleNeighbourBones( Entity, Pos, Bone, Scale, type ) - - if ( type == nil || type == 2 ) then - - local parent = Entity:GetBoneParent( Bone ) - if ( parent && parent >= 0 && parent != Bone ) then - ScaleBone( Entity, Pos, parent, Scale, 2 ) - end - - end - - if ( type == nil || type == 1 ) then - - local children = Entity:GetChildBones( Bone ) - - for k, v in pairs( children ) do - - ScaleBone( Entity, Pos, v, Scale, 1 ) - - end - - end - -end - ---[[------------------------------------------------------------ - - Scale the specified bone by Scale - ---------------------------------------------------------------]] -ScaleBone = function( Entity, Pos, Bone, Scale, type ) - - --local Bone, BonePos = Entity:FindNearestBone( Pos ) - if ( !Bone ) then return false end - - -- Some bones are scaled only in certain directions (like legs don't scale on length) - local v = GetNiceBoneScale( Entity:GetBoneName( Bone ), Scale ) * 0.1 - local TargetScale = Entity:GetManipulateBoneScale( Bone ) + v * 0.1; - - if ( TargetScale.x < 0 ) then TargetScale.x = 0; end - if ( TargetScale.y < 0 ) then TargetScale.y = 0; end - if ( TargetScale.z < 0 ) then TargetScale.z = 0; end - - Entity:ManipulateBoneScale( Bone, TargetScale ) - - ScaleNeighbourBones( Entity, Pos, Bone, Scale * 0.5, type ); - -end - - ---[[------------------------------------------------------------ - - Scale UP - ---------------------------------------------------------------]] -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return false end - if ( !trace.Entity:IsNPC() && trace.Entity:GetClass() != "prop_ragdoll" ) then return false end - - local Bone = trace.Entity:TranslatePhysBoneToBone( trace.PhysicsBone ) - ScaleBone( trace.Entity, trace.HitPos, Bone, 1 ) - self:GetWeapon():SetNextPrimaryFire( CurTime() + 0.01 ) - - local effectdata = EffectData() - effectdata:SetOrigin( trace.HitPos ) - util.Effect( "inflator_magic", effectdata ) - - return false - -end - - ---[[------------------------------------------------------------ - - Scale DOWN - ---------------------------------------------------------------]] -function TOOL:RightClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return false end - if ( !trace.Entity:IsNPC() && trace.Entity:GetClass() != "prop_ragdoll" ) then return false end - - local Bone = trace.Entity:TranslatePhysBoneToBone( trace.PhysicsBone ) - ScaleBone( trace.Entity, trace.HitPos, Bone, -1 ) - self:GetWeapon():SetNextSecondaryFire( CurTime() + 0.01 ) - - local effectdata = EffectData() - effectdata:SetOrigin( trace.HitPos ) - util.Effect( "inflator_magic", effectdata ) - - return false - -end - - ---[[------------------------------------------------------------ - - Remove Scaling - ---------------------------------------------------------------]] -function TOOL:Reload( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return false end - if ( !trace.Entity:IsNPC() && trace.Entity:GetClass() != "prop_ragdoll" ) then return false end - if ( CLIENT ) then return false end - - for i=0, trace.Entity:GetBoneCount() do - trace.Entity:ManipulateBoneScale( i, Vector(1, 1, 1) ) - end - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/lamp.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/lamp.lua deleted file mode 100644 index e1cf91c9c..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/lamp.lua +++ /dev/null @@ -1,269 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.lamp.name" - -TOOL.ClientConVar[ "r" ] = "255" -TOOL.ClientConVar[ "g" ] = "255" -TOOL.ClientConVar[ "b" ] = "255" -TOOL.ClientConVar[ "key" ] = "-1" -TOOL.ClientConVar[ "fov" ] = "90" -TOOL.ClientConVar[ "distance" ] = "1024" -TOOL.ClientConVar[ "brightness" ] = "7.5" -TOOL.ClientConVar[ "texture" ] = "effects/flashlight001" -TOOL.ClientConVar[ "model" ] = "models/lamps/torch.mdl" -TOOL.ClientConVar[ "toggle" ] = "1" - -cleanup.Register( "lamps" ) - -function TOOL:LeftClick( trace ) - - if ( IsValid( trace.Entity ) && trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local ply = self:GetOwner() - local pos = trace.HitPos - - local r = math.Clamp( self:GetClientNumber( "r" ), 0, 255 ) - local g = math.Clamp( self:GetClientNumber( "g" ), 0, 255 ) - local b = math.Clamp( self:GetClientNumber( "b" ), 0, 255 ) - local key = self:GetClientNumber( "key" ) - local texture = self:GetClientInfo( "texture" ) - local mdl = self:GetClientInfo( "model" ) - local fov = self:GetClientNumber( "fov" ) - local distance = self:GetClientNumber( "distance" ) - local bright = self:GetClientNumber( "brightness" ) - local toggle = self:GetClientNumber( "toggle" ) != 1 - - local mat = Material( texture ) - local texture = mat:GetString( "$basetexture" ) - - if ( IsValid( trace.Entity ) && trace.Entity:GetClass() == "gmod_lamp" && trace.Entity:GetPlayer() == ply ) then - - trace.Entity:SetColor( Color( r, g, b, 255 ) ) - trace.Entity:SetFlashlightTexture( texture ) - trace.Entity:SetLightFOV( fov ) - trace.Entity:SetDistance( distance ) - trace.Entity:SetBrightness( bright ) - trace.Entity:SetToggle( !toggle ) - trace.Entity:UpdateLight() - - numpad.Remove( trace.Entity.NumDown ) - numpad.Remove( trace.Entity.NumUp ) - - trace.Entity.NumDown = numpad.OnDown( ply, key, "LampToggle", trace.Entity, 1 ) - trace.Entity.NumUp = numpad.OnUp( ply, key, "LampToggle", trace.Entity, 0 ) - - -- For duplicator - trace.Entity.Texture = texture - trace.Entity.fov = fov - trace.Entity.distance = distance - trace.Entity.r = r trace.Entity.g = g trace.Entity.b = b - trace.Entity.brightness = bright - trace.Entity.KeyDown = key - - return true - - end - - if ( !self:GetSWEP():CheckLimit( "lamps" ) ) then return false end - - local lamp = MakeLamp( ply, r, g, b, key, toggle, texture, mdl, fov, distance, bright, !toggle, { Pos = pos, Angle = Angle(0, 0, 0) } ) - - local CurPos = lamp:GetPos() - local NearestPoint = lamp:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local LampOffset = CurPos - NearestPoint - - lamp:SetPos( trace.HitPos + LampOffset ) - - undo.Create("Lamp") - undo.AddEntity( lamp ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - return true - -end - -function TOOL:RightClick( trace ) - - return false - -end - -if ( SERVER ) then - - function MakeLamp( pl, r, g, b, KeyDown, toggle, Texture, Model, fov, distance, brightness, on, Data ) - - if ( IsValid( pl ) ) then - if ( !pl:CheckLimit( "lamps" ) ) then return false end - end - - local lamp = ents.Create( "gmod_lamp" ) - - if ( !IsValid( lamp ) ) then return end - - lamp:SetModel( Model ) - lamp:SetFlashlightTexture( Texture ) - lamp:SetLightFOV( fov ) - lamp:SetColor( Color( r, g, b, 255 ) ) - lamp:SetDistance( distance ) - lamp:SetBrightness( brightness ) - lamp:Switch( on ) - lamp:SetToggle( !toggle ) - duplicator.DoGeneric( lamp, Data ) - - lamp:Spawn() - - duplicator.DoGenericPhysics( lamp, pl, Data ) - - lamp:SetPlayer( pl ) - - if ( IsValid( pl ) ) then - pl:AddCount( "lamps", lamp ) - pl:AddCleanup( "lamps", lamp ) - end - - lamp.Texture = Texture - lamp.KeyDown = KeyDown - lamp.fov = fov - lamp.distance = distance - lamp.r = r - lamp.g = g - lamp.b = b - lamp.brightness = brightness - - lamp.NumDown = numpad.OnDown( pl, KeyDown, "LampToggle", lamp, 1 ) - lamp.NumUp = numpad.OnUp( pl, KeyDown, "LampToggle", lamp, 0 ) - - return lamp - - end - - duplicator.RegisterEntityClass( "gmod_lamp", MakeLamp, "r", "g", "b", "KeyDown", "Toggle", "Texture", "Model", "fov", "distance", "brightness", "on", "Data" ) - - - local function Toggle( pl, ent, onoff ) - - if ( !IsValid( ent ) ) then return false end - if ( !ent:GetToggle() ) then ent:Switch( onoff == 1 ) return end - - if ( numpad.FromButton() ) then - - ent:Toggle() - return; - - end - - if ( onoff == 0 ) then return end - - return ent:Toggle() - - end - - numpad.Register( "LampToggle", Toggle ) - -end - -function TOOL:UpdateGhostLamp( ent, player ) - - if ( !IsValid( ent ) ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if ( !trace.Hit ) then return end - - if ( trace.Entity:IsPlayer() || trace.Entity:GetClass() == "gmod_lamp" ) then - - ent:SetNoDraw( true ) - return - - end - - local CurPos = ent:GetPos() - local NearestPoint = ent:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local LampOffset = CurPos - NearestPoint - - ent:SetPos( trace.HitPos + LampOffset ) - - ent:SetNoDraw( false ) - -end - -function TOOL:Think() - - if ( !IsValid( self.GhostEntity ) || self.GhostEntity:GetModel() != self:GetClientInfo( "model" ) ) then - self:MakeGhostEntity( self:GetClientInfo( "model" ), Vector( 0, 0, 0 ), Angle( 0, 0, 0 ) ) - end - - self:UpdateGhostLamp( self.GhostEntity, self:GetOwner() ) - -end - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.lamp.desc" } ) - - -- Presets - local params = { Label = "#tool.presets", MenuButton = 1, Folder = "lamp", Options = {}, CVars = { "lamp_texture", "lamp_r", "lamp_g", "lamp_b", "lamp_key", "lamp_model", "lamp_toggle" } } - - params.Options.default = { - lamp_texture = "effects/flashlight001", - lamp_r = 255, - lamp_g = 255, - lamp_b = 255, - lamp_key = -1, - lamp_model = "models/MaxOfS2D/lamp_projector.mdl", - lamp_toggle = 0 - } - - CPanel:AddControl( "ComboBox", params ) - - CPanel:AddControl( "Numpad", { Label = "#tool.lamp.key", Command = "lamp_key" } ) - - CPanel:NumSlider( "#tool.lamp.fov", "lamp_fov", 10, 170, 2 ) - CPanel:NumSlider( "#tool.lamp.distance", "lamp_distance", 64, 2048, 0 ) - CPanel:NumSlider( "#tool.lamp.brightness", "lamp_brightness", 0, 8, 2 ) - - CPanel:AddControl( "Checkbox", { Label = "#tool.lamp.toggle", Command = "lamp_toggle" } ) - - local MatSelect = CPanel:MatSelect( "lamp_texture", nil, true, 0.33, 0.33 ) - - for k, v in pairs( list.Get( "LampTextures" ) ) do - MatSelect:AddMaterial( v.Name or k, k ) - end - - CPanel:AddControl( "Color", { Label = "#tool.lamp.color", - Red = "lamp_r", - Green = "lamp_g", - Blue = "lamp_b", - ShowAlpha = 0, - ShowHSV = 1, - ShowRGB = 1, - Multiplier = 255 } ) - - CPanel:AddControl( "PropSelect", { Label = "#tool.lamp.model", - ConVar = "lamp_model", - Category = "Lamps", - Height = 3, - Models = list.Get( "LampModels" ) } ) -end - -list.Set( "LampTextures", "effects/flashlight001", { Name = "#lamptexture.default" } ) -list.Set( "LampTextures", "effects/flashlight/slit", { Name = "#lamptexture.slit" } ) -list.Set( "LampTextures", "effects/flashlight/circles", { Name = "#lamptexture.circles" } ) -list.Set( "LampTextures", "effects/flashlight/window", { Name = "#lamptexture.window" } ) -list.Set( "LampTextures", "effects/flashlight/logo", { Name = "#lamptexture.logo" } ) -list.Set( "LampTextures", "effects/flashlight/gradient", { Name = "#lamptexture.gradient" } ) -list.Set( "LampTextures", "effects/flashlight/bars", { Name = "#lamptexture.bars" } ) -list.Set( "LampTextures", "effects/flashlight/tech", { Name = "#lamptexture.techdemo" } ) -list.Set( "LampTextures", "effects/flashlight/soft", { Name = "#lamptexture.soft" } ) -list.Set( "LampTextures", "effects/flashlight/hard", { Name = "#lamptexture.hard" } ) -list.Set( "LampTextures", "effects/flashlight/caustics", { Name = "#lamptexture.caustics" } ) -list.Set( "LampTextures", "effects/flashlight/square", { Name = "#lamptexture.square" } ) -list.Set( "LampTextures", "effects/flashlight/camera", { Name = "#lamptexture.camera" } ) -list.Set( "LampTextures", "effects/flashlight/view", { Name = "#lamptexture.view" } ) - -list.Set( "LampModels", "models/lamps/torch.mdl", {} ) -list.Set( "LampModels", "models/MaxOfS2D/lamp_flashlight.mdl", {} ) -list.Set( "LampModels", "models/MaxOfS2D/lamp_projector.mdl", {} ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/leafblower.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/leafblower.lua deleted file mode 100644 index 685e8fd3c..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/leafblower.lua +++ /dev/null @@ -1,42 +0,0 @@ - - -TOOL.AddToMenu = false - --- --- This tool is the most important aspect of Garry's Mod --- - -TOOL.LeftClickAutomatic = true - -function TOOL:LeftClick( trace ) - - if ( CLIENT ) then return end - - util.PrecacheSound( "ambient/wind/wind_hit2.wav" ) - self:GetOwner():EmitSound( "ambient/wind/wind_hit2.wav" ) - - if ( trace.Entity:IsValid() ) then - - if ( trace.Entity:GetPhysicsObject():IsValid() ) then - - local phys = trace.Entity:GetPhysicsObject() -- The physics object - local direction = trace.StartPos - trace.HitPos -- The direction of the force - local force = 32 -- The ideal amount of force - local distance = direction:Length() -- The distance the phys object is from the gun - local maxdistance = 512 -- The max distance the gun should reach - - -- Lessen the force from a distance - local ratio = math.Clamp( (1 - (distance/maxdistance)), 0, 1 ) - - -- Set up the 'real' force and the offset of the force - local vForce = -1*direction * (force * ratio) - local vOffset = trace.HitPos - - -- Apply it! - phys:ApplyForceOffset( vForce, vOffset ) - - end - - end - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/light.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/light.lua deleted file mode 100644 index 8ba0660f7..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/light.lua +++ /dev/null @@ -1,287 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.light.name" - -TOOL.ClientConVar[ "ropelength" ] = "64" -TOOL.ClientConVar[ "ropematerial" ] = "cable/rope" -TOOL.ClientConVar[ "r" ] = "255" -TOOL.ClientConVar[ "g" ] = "255" -TOOL.ClientConVar[ "b" ] = "255" -TOOL.ClientConVar[ "brightness" ] = "2" -TOOL.ClientConVar[ "size" ] = "256" -TOOL.ClientConVar[ "key" ] = "-1" -TOOL.ClientConVar[ "toggle" ] = "1" - -cleanup.Register( "lights" ) - -function TOOL:LeftClick( trace, attach ) - - if trace.Entity && trace.Entity:IsPlayer() then return false end - if ( CLIENT ) then return true end - if ( attach == nil ) then attach = true end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && attach && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local ply = self:GetOwner() - - local pos, ang = trace.HitPos + trace.HitNormal * 8, trace.HitNormal:Angle() - Angle( 90, 0, 0 ) - - local r = math.Clamp( self:GetClientNumber( "r" ), 0, 255 ) - local g = math.Clamp( self:GetClientNumber( "g" ), 0, 255 ) - local b = math.Clamp( self:GetClientNumber( "b" ), 0, 255 ) - local brght = math.Clamp( self:GetClientNumber( "brightness" ), 0, 255 ) - local size = self:GetClientNumber( "size" ) - local toggle = self:GetClientNumber( "toggle" ) != 1 - - local key = self:GetClientNumber( "key" ) - - -- Clamp for multiplayer - if ( !game.SinglePlayer() ) then - size = math.Clamp( size, 0, 512 ) - brght = math.Clamp( brght, 0, 1 ) - end - - if ( IsValid( trace.Entity ) && - trace.Entity:GetClass() == "gmod_light" && - trace.Entity:GetPlayer() == ply ) then - - trace.Entity:SetColor( Color( r, g, b, 255 ) ) - trace.Entity.r = r - trace.Entity.g = g - trace.Entity.b = b - trace.Entity.Brightness = brght - trace.Entity.Size = size - - trace.Entity:SetBrightness( brght ) - trace.Entity:SetLightSize( size ) - trace.Entity:SetToggle( !toggle ) - - trace.Entity.KeyDown = key - - numpad.Remove( trace.Entity.NumDown ) - numpad.Remove( trace.Entity.NumUp ) - - trace.Entity.NumDown = numpad.OnDown( ply, key, "LightToggle", trace.Entity, 1 ) - trace.Entity.NumUp = numpad.OnUp( ply, key, "LightToggle", trace.Entity, 0 ) - - return true - - end - - if ( !self:GetSWEP():CheckLimit( "lights" ) ) then return false end - lamp = MakeLight( ply, r, g, b, brght, size, toggle, !toggle, key, { Pos = pos, Angle = ang } ) - - if (!attach) then - - undo.Create("Light") - undo.AddEntity( lamp ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - return true - - end - - local length = math.Clamp( self:GetClientNumber( "ropelength" ), 4, 1024 ) - local material = self:GetClientInfo( "ropematerial" ) - - local LPos1 = Vector( 0, 0, 5 ) - local LPos2 = trace.Entity:WorldToLocal( trace.HitPos ) - - if (trace.Entity:IsValid()) then - - local phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - if (phys:IsValid()) then - LPos2 = phys:WorldToLocal( trace.HitPos ) - end - - end - - local constraint, rope = constraint.Rope( lamp, trace.Entity, - 0, trace.PhysicsBone, - LPos1, LPos2, - 0, length, - 0, - 1, - material, - nil ) - - undo.Create("Light") - undo.AddEntity( lamp ) - undo.AddEntity( rope ) - undo.AddEntity( constraint ) - undo.SetPlayer( ply ) - undo.Finish() - - return true - -end - -function TOOL:RightClick( trace ) - - return self:LeftClick( trace, false ) - -end - -function TOOL:UpdateGhostLight( ent, player ) - - if ( !IsValid( ent ) ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if ( !trace.Hit ) then return end - - if ( trace.Entity:IsPlayer() || trace.Entity:GetClass() == "gmod_light" ) then - - ent:SetNoDraw( true ) - return - - end - - ent:SetPos( trace.HitPos + trace.HitNormal * 8 ) - ent:SetAngles( trace.HitNormal:Angle() - Angle( 90, 0, 0 ) ) - - ent:SetNoDraw( false ) - -end - -function TOOL:Think() - - if ( !IsValid( self.GhostEntity ) || self.GhostEntity:GetModel() != /*self:GetClientInfo( "model" )*/ "models/MaxOfS2D/light_tubular.mdl" ) then - self:MakeGhostEntity( "models/MaxOfS2D/light_tubular.mdl", Vector( 0, 0, 0 ), Angle( 0, 0, 0 ) ) - end - - self:UpdateGhostLight( self.GhostEntity, self:GetOwner() ) - -end - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.light.desc" } ) - - -- Presets - local params = { Label = "#tool.presets", MenuButton = 1, Folder = "light", Options = {}, CVars = {} } - - params.Options.default = { - light_ropelength = 64, - light_ropematerial = "cable/rope", - light_r = 255, - light_g = 255, - light_b = 255, - light_brightness = 2, - light_size = 256 - } - - table.insert( params.CVars, "light_ropelength" ) - table.insert( params.CVars, "light_ropematerial" ) - table.insert( params.CVars, "light_r" ) - table.insert( params.CVars, "light_g" ) - table.insert( params.CVars, "light_b" ) - table.insert( params.CVars, "light_brightness" ) - table.insert( params.CVars, "light_size" ) - table.insert( params.CVars, "light_toggle" ) - - CPanel:AddControl( "ComboBox", params ) - - CPanel:AddControl( "Numpad", { Label = "#tool.light.key", Command = "light_key", ButtonSize = 22 } ) - - CPanel:AddControl( "Slider", { Label = "#tool.light.ropelength", - Type = "Float", - Min = 0, - Max = 256, - Command = "light_ropelength" } ) - - CPanel:AddControl( "Slider", { Label = "#tool.light.brightness", - Type = "Float", - Min = 0, - Max = 10, - Command = "light_brightness" } ) - - CPanel:AddControl( "Slider", { Label = "#tool.light.size", - Type = "Float", - Min = 0, - Max = 1024, - Command = "light_size" } ) - - CPanel:AddControl( "Checkbox", { Label = "#tool.light.toggle", Command = "light_toggle" } ) - - CPanel:AddControl( "Color", { Label = "#tool.light.color", - Red = "light_r", - Green = "light_g", - Blue = "light_b", - ShowAlpha = 0, - ShowHSV = 1, - ShowRGB = 1, - Multiplier = 255 } ) - -end - -if ( SERVER ) then - - function MakeLight( pl, r, g, b, brght, size, toggle, on, KeyDown, Data ) - - if ( IsValid( pl ) && !pl:CheckLimit( "lights" ) ) then return false end - - local lamp = ents.Create( "gmod_light" ) - - if (!lamp:IsValid()) then return end - - duplicator.DoGeneric( lamp, Data ) - lamp:SetColor( Color( r, g, b, 255 ) ) - lamp:SetBrightness( brght ) - lamp:SetLightSize( size ) - lamp:SetToggle( !toggle ) - lamp:SetOn( on ) - - lamp:Spawn() - - duplicator.DoGenericPhysics( lamp, pl, Data ) - - lamp:SetPlayer( pl ) - - if ( IsValid( pl ) ) then - pl:AddCount( "lights", lamp ) - pl:AddCleanup( "lights", lamp ) - end - - lamp.lightr = r - lamp.lightg = g - lamp.lightb = b - lamp.Brightness = brght - lamp.Size = size - lamp.KeyDown = KeyDown - lamp.on = on - - lamp.NumDown = numpad.OnDown( pl, KeyDown, "LightToggle", lamp, 1 ) - lamp.NumUp = numpad.OnUp( pl, KeyDown, "LightToggle", lamp, 0 ) - - return lamp - - end - - duplicator.RegisterEntityClass( "gmod_light", MakeLight, "lightr", "lightg", "lightb", "Brightness", "Size", "Toggle", "on", "KeyDown", "Data" ) - - - local function Toggle( pl, ent, onoff ) - - if ( !IsValid( ent ) ) then return false end - if ( !ent:GetToggle() ) then ent:SetOn( onoff == 1 ) return end - - if ( numpad.FromButton() ) then - - ent:SetOn( onoff == 1 ) - return; - - end - - if ( onoff == 0 ) then return end - - return ent:Toggle() - - end - - numpad.Register( "LightToggle", Toggle ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/material.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/material.lua deleted file mode 100644 index db91b0b29..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/material.lua +++ /dev/null @@ -1,119 +0,0 @@ - -TOOL.Category = "Render" -TOOL.Name = "#tool.material.name" - -TOOL.ClientConVar[ "override" ] = "debug/env_cubemap_model" - --- --- Duplicator function --- -local function SetMaterial( Player, Entity, Data ) - - if ( SERVER ) then - - -- - -- Make sure this is in the 'allowed' list in multiplayer - to stop people using exploits - -- - if ( !game.SinglePlayer() && !list.Contains( "OverrideMaterials", Data.MaterialOverride ) && Data.MaterialOverride != "" ) then - return - end - - Entity:SetMaterial( Data.MaterialOverride ) - duplicator.StoreEntityModifier( Entity, "material", Data ) - end - - return true - -end -duplicator.RegisterEntityModifier( "material", SetMaterial ) - --- --- Left click applies the current material --- -function TOOL:LeftClick( trace ) - - if ( !IsValid( trace.Entity ) ) then return end - - if ( CLIENT ) then return true end - - local ent = trace.Entity - if ( IsValid( ent.AttachedEntity ) ) then ent = ent.AttachedEntity end - - local mat = self:GetClientInfo( "override" ) - SetMaterial( self:GetOwner(), ent, { MaterialOverride = mat } ) - return true - -end - --- --- Right click reverts the material --- -function TOOL:RightClick( trace ) - - if ( !IsValid( trace.Entity ) ) then return end - - if ( CLIENT ) then return true end - - local ent = trace.Entity - if ( IsValid( ent.AttachedEntity ) ) then ent = ent.AttachedEntity end - - SetMaterial( self:GetOwner(), ent, { MaterialOverride = "" } ) - return true - -end - -list.Add( "OverrideMaterials", "models/wireframe" ) -list.Add( "OverrideMaterials", "debug/env_cubemap_model" ) -list.Add( "OverrideMaterials", "models/shadertest/shader3" ) -list.Add( "OverrideMaterials", "models/shadertest/shader4" ) -list.Add( "OverrideMaterials", "models/shadertest/shader5" ) -list.Add( "OverrideMaterials", "models/shiny" ) -list.Add( "OverrideMaterials", "models/debug/debugwhite" ) -list.Add( "OverrideMaterials", "Models/effects/comball_sphere" ) -list.Add( "OverrideMaterials", "Models/effects/comball_tape" ) -list.Add( "OverrideMaterials", "Models/effects/splodearc_sheet" ) -list.Add( "OverrideMaterials", "Models/effects/vol_light001" ) -list.Add( "OverrideMaterials", "models/props_combine/stasisshield_sheet" ) -list.Add( "OverrideMaterials", "models/props_combine/portalball001_sheet" ) -list.Add( "OverrideMaterials", "models/props_combine/com_shield001a" ) -list.Add( "OverrideMaterials", "models/props_c17/frostedglass_01a" ) -list.Add( "OverrideMaterials", "models/props_lab/Tank_Glass001" ) -list.Add( "OverrideMaterials", "models/props_combine/tprings_globe" ) -list.Add( "OverrideMaterials", "models/rendertarget" ) -list.Add( "OverrideMaterials", "models/screenspace" ) -list.Add( "OverrideMaterials", "brick/brick_model" ) -list.Add( "OverrideMaterials", "models/props_pipes/GutterMetal01a" ) -list.Add( "OverrideMaterials", "models/props_pipes/Pipesystem01a_skin3" ) -list.Add( "OverrideMaterials", "models/props_wasteland/wood_fence01a" ) -list.Add( "OverrideMaterials", "models/props_foliage/tree_deciduous_01a_trunk" ) -list.Add( "OverrideMaterials", "models/props_c17/FurnitureFabric003a" ) -list.Add( "OverrideMaterials", "models/props_c17/FurnitureMetal001a" ) -list.Add( "OverrideMaterials", "models/props_c17/paper01" ) -list.Add( "OverrideMaterials", "models/flesh" ) - --- phx -list.Add( "OverrideMaterials", "phoenix_storms/metalset_1-2" ) -list.Add( "OverrideMaterials", "phoenix_storms/metalfloor_2-3" ) -list.Add( "OverrideMaterials", "phoenix_storms/plastic" ) -list.Add( "OverrideMaterials", "phoenix_storms/wood" ) -list.Add( "OverrideMaterials", "phoenix_storms/bluemetal" ) -list.Add( "OverrideMaterials", "phoenix_storms/cube" ) -list.Add( "OverrideMaterials", "phoenix_storms/dome" ) -list.Add( "OverrideMaterials", "phoenix_storms/gear" ) -list.Add( "OverrideMaterials", "phoenix_storms/stripes" ) -list.Add( "OverrideMaterials", "phoenix_storms/wire/pcb_green" ) -list.Add( "OverrideMaterials", "phoenix_storms/wire/pcb_red" ) -list.Add( "OverrideMaterials", "phoenix_storms/wire/pcb_blue" ) - -list.Add( "OverrideMaterials", "hunter/myplastic" ) -list.Add( "OverrideMaterials", "models/XQM/LightLinesRed_tool" ) - - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.material.help" } ) - - CPanel:MatSelect( "material_override", list.Get( "OverrideMaterials" ), true, 0.33, 0.33 ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/motor.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/motor.lua deleted file mode 100644 index bd826cf83..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/motor.lua +++ /dev/null @@ -1,147 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.motor.name" - -TOOL.ClientConVar[ "torque" ] = "500" -TOOL.ClientConVar[ "friction" ] = "1" -TOOL.ClientConVar[ "nocollide" ] = "1" -TOOL.ClientConVar[ "forcetime" ] = "0" -TOOL.ClientConVar[ "fwd" ] = "45" -TOOL.ClientConVar[ "bwd" ] = "42" -TOOL.ClientConVar[ "toggle" ] = "0" -TOOL.ClientConVar[ "forcelimit" ] = "0" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - - -- Don't allow us to choose the world as the first object - if (iNum == 0 && !trace.Entity:IsValid()) then return end - - -- Don't allow us to choose the same object - if (iNum == 1 && trace.Entity == self:GetEnt(1) ) then return end - - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - - self:ClearObjects() - self:ReleaseGhostEntity() - - return true - - end - - -- Get client's CVars - local torque = self:GetClientNumber( "torque" ) - local friction = self:GetClientNumber( "friction" ) - local nocollide = self:GetClientNumber( "nocollide" ) - local time = self:GetClientNumber( "forcetime" ) - local forekey = self:GetClientNumber( "fwd" ) - local backkey = self:GetClientNumber( "bwd" ) - local toggle = self:GetClientNumber( "toggle" ) - local limit = self:GetClientNumber( "forcelimit" ) - - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local Norm1, Norm2 = self:GetNormal(1), self:GetNormal(2) - local Phys1, Phys2 = self:GetPhys(1), self:GetPhys(2) - - -- Note: To keep stuff ragdoll friendly try to treat things as physics objects rather than entities - local Ang1, Ang2 = Norm1:Angle(), (Norm2 * -1):Angle() - local TargetAngle = Phys1:AlignAngles( Ang1, Ang2 ) - - Phys1:SetAngles( TargetAngle ) - - -- Move the object so that the hitpos on our object is at the second hitpos - local TargetPos = WPos2 + ( Phys1:GetPos() - self:GetPos( 1 ) ) + ( Norm2 * 0.2 ) - - -- Set the position - Phys1:SetPos( TargetPos ) - - -- Wake up the physics object so that the entity updates - Phys1:Wake() - - -- Set the hinge Axis perpendicular to the trace hit surface - LPos1 = Phys1:WorldToLocal( WPos2 + Norm2 * 64 ) - - local constraint, axis = constraint.Motor( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, friction, torque, time, nocollide, toggle, self:GetOwner(), limit, forekey, backkey, 1 ) - - undo.Create("Motor") - undo.AddEntity( axis ) - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "constraints", axis ) - self:GetOwner():AddCleanup( "constraints", constraint ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - self:ReleaseGhostEntity() - - else - - self:StartGhostEntity( trace.Entity ) - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - return false - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Motor" ) - return bool - -end - -function TOOL:Think() - - if (self:NumObjects() != 1) then return end - - self:UpdateGhostEntity() - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.motor.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "motor", - Options = { Default = { motor_torque = '1000', motor_friction='0', motor_nocollide='0', motor_forcetime='0' } }, - CVars = { "motor_torque", "motor_friction", "motor_nocollide", "motor_forcetime" } } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.motor.numpad1", Command = "motor_fwd", Label2 = "#tool.motor.numpad2", Command2 = "motor_bwd" } ) - CPanel:AddControl( "Slider", { Label = "#tool.motor.torque", Type = "Float", Command = "motor_torque", Min = "0", Max = "10000" } ) - CPanel:AddControl( "Slider", { Label = "#tool.forcelimit", Type = "Float", Command = "motor_forcelimit", Min = "0", Max = "50000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.hingefriction", Type = "Float", Command = "motor_friction", Min = "0", Max = "100", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.motor.forcetime", Type = "Float", Command = "motor_forcetime", Min = "0", Max = "120", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.nocollide", Command = "motor_nocollide", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.toggle", Command = "motor_toggle", Help=true } ) - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/muscle.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/muscle.lua deleted file mode 100644 index faf463184..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/muscle.lua +++ /dev/null @@ -1,214 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.muscle.name" - -TOOL.ClientConVar[ "group" ] = "37" -TOOL.ClientConVar[ "width" ] = "2" -TOOL.ClientConVar[ "addlength" ] = "100" -TOOL.ClientConVar[ "fixed" ] = "1" -TOOL.ClientConVar[ "period" ] = "1" -TOOL.ClientConVar[ "material" ] = "cable/rope" -TOOL.ClientConVar[ "starton" ] = "0" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - if ( ( !self:GetEnt(1):IsValid() && !self:GetEnt(2):IsValid() ) || iNum > 1 ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local width = self:GetClientNumber( "width", 3 ) - local bind = self:GetClientNumber( "group", 1 ) - local AddLength = self:GetClientNumber( "addlength", 0 ) - local fixed = self:GetClientNumber( "fixed", 1 ) - local period = self:GetClientNumber( "period", 1 ) - local material = self:GetClientInfo( "material" ) - local starton = self:GetClientNumber( "starton" ) - - -- If AddLength is 0 then what's the point. - if ( AddLength == 0 ) then - self:ClearObjects() - return true - end - - if ( period <= 0 ) then period = 0.1 end - - AddLength = math.Clamp( AddLength, -1000, 1000 ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - - local Length1 = (WPos1 - WPos2):Length() - local Length2 = Length1 + AddLength - - local amp = Length2 - Length1 - - local constraint,rope,controller,slider = constraint.Muscle( self:GetOwner(), Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, Length1, Length2, width, bind, fixed, period, amp, starton, material ) - - undo.Create("Muscle") - if constraint then undo.AddEntity( constraint ) end - if rope then undo.AddEntity( rope ) end - if slider then undo.AddEntity( slider ) end - if controller then undo.AddEntity( controller ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - if constraint then self:GetOwner():AddCleanup( "ropeconstraints", constraint ) end - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - if slider then self:GetOwner():AddCleanup( "ropeconstraints", slider ) end - if controller then self:GetOwner():AddCleanup( "ropeconstraints", controller ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - local tr = {} - tr.start = trace.HitPos - tr.endpos = tr.start + (trace.HitNormal * 16384) - tr.filter = {} - tr.filter[1] = self:GetOwner() - if (trace.Entity:IsValid()) then - tr.filter[2] = trace.Entity - end - - local tr = util.TraceLine( tr ) - - if ( !tr.Hit ) then - self:ClearObjects() - return - end - - -- Don't try to constrain world to world - if ( trace.HitWorld && tr.HitWorld ) then - self:ClearObjects() - return - end - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - if ( tr.Entity:IsValid() && tr.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - - local Phys2 = tr.Entity:GetPhysicsObjectNum( tr.PhysicsBone ) - self:SetObject( 2, tr.Entity, tr.HitPos, Phys2, tr.PhysicsBone, tr.HitNormal ) - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - -- Get client's CVars - local width = self:GetClientNumber( "width", 3 ) - local bind = self:GetClientNumber( "group", 1 ) - local AddLength = self:GetClientNumber( "addlength", 0 ) - local fixed = self:GetClientNumber( "fixed", 1 ) - local period = self:GetClientNumber( "period", 64 ) - local material = self:GetClientInfo( "material" ) - local starton = self:GetClientNumber( "starton" ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - - local Length1 = (WPos1 - WPos2):Length() - local Length2 = Length1 + AddLength - - local amp = Length2 - Length1 - - local constraint,rope,controller,slider = constraint.Muscle( self:GetOwner(), Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, Length1, Length2, width, bind, fixed, period, amp, starton, material ) - - undo.Create("Muscle") - if constraint then undo.AddEntity( constraint ) end - if rope then undo.AddEntity( rope ) end - if slider then undo.AddEntity( slider ) end - if controller then undo.AddEntity( controller ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - if constraint then self:GetOwner():AddCleanup( "ropeconstraints", constraint ) end - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - if slider then self:GetOwner():AddCleanup( "ropeconstraints", slider ) end - if controller then self:GetOwner():AddCleanup( "ropeconstraints", controller ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Muscle" ) - return bool - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.muscle.help" } ) - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "muscle", - Options = { Default = { muscle_width = '2', muscle_group='1', muscle_addlength='100', muscle_fixed='1', muscle_period="1" } }, - CVars = { "muscle_width", "muscle_group", "muscle_addlength", "muscle_fixed", "muscle_period", "muscle_material" } } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.muscle.numpad", Command = "muscle_group" } ) - CPanel:AddControl( "Slider", { Label = "#tool.muscle.length", Type = "Float", Command = "muscle_addlength", Min = "-1000", Max = "1000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.muscle.period", Type = "Float", Command = "muscle_period", Min = "0", Max = "10", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.muscle.fixed", Command = "muscle_fixed", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.muscle.starton", Command = "muscle_starton", Help=true } ) - - CPanel:AddControl( "Slider", { Label = "#tool.muscle.width", Type = "Float", Command = "muscle_width", Min = "0", Max = "5" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.muscle.material", convar = "muscle_material" } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/nocollide.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/nocollide.lua deleted file mode 100644 index 5bf503fc2..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/nocollide.lua +++ /dev/null @@ -1,97 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.nocollide.name" - -cleanup.Register( "nocollide" ) - -function TOOL:LeftClick( trace ) - - if ( !IsValid( trace.Entity ) ) then return end - if ( trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( CLIENT ) then - - if ( iNum > 0 ) then self:ClearObjects() end - return true - - end - - if ( iNum > 0 ) then - - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - - local constraint = constraint.NoCollide(Ent1, Ent2, Bone1, Bone2) - - if ( constraint ) then - undo.Create( "NoCollide" ) - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "nocollide", constraint ) - end - - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -hook.Add( "EntityRemoved", "nocollide_fix", function( ent ) - if ( ent:GetClass() == "logic_collision_pair" ) then - ent:Fire( "EnableCollisions" ) - end -end ) - -function TOOL:RightClick( trace ) - - if (!trace.Entity ) then return end - if (!trace.Entity:IsValid()) then return end - if (trace.Entity:IsPlayer()) then return end - - if ( CLIENT ) then return true end - - if ( trace.Entity:GetCollisionGroup() == COLLISION_GROUP_WORLD ) then - - trace.Entity:SetCollisionGroup( COLLISION_GROUP_NONE ) - - else - - trace.Entity:SetCollisionGroup( COLLISION_GROUP_WORLD ) - - end - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "NoCollide" ) - return bool - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.nocollide.desc" } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/paint.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/paint.lua deleted file mode 100644 index 39f9c47eb..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/paint.lua +++ /dev/null @@ -1,135 +0,0 @@ - -TOOL.Category = "Render" -TOOL.Name = "#tool.paint.name" - -game.AddDecal( "Eye", "decals/eye" ); -game.AddDecal( "Smile", "decals/smile" ); -game.AddDecal( "Light", "decals/light" ); -game.AddDecal( "Dark", "decals/dark" ); -game.AddDecal( "Noughtsncrosses", "decals/noughtsncrosses" ); -game.AddDecal( "Nought", "decals/nought" ); -game.AddDecal( "Cross", "decals/cross" ); - -TOOL.LeftClickAutomatic = true -TOOL.RightClickAutomatic = true -TOOL.RequiresTraceHit = true - -TOOL.ClientConVar[ "decal" ] = "Blood" - -local function PlaceDecal( Player, Entity, Data ) - - if ( Entity == nil ) then return end - if ( !Entity:IsWorld() && !IsValid( Entity ) ) then return end - - local Bone = Entity:GetPhysicsObjectNum( Data.bone or 0 ) - if ( !IsValid( Bone ) ) then - Bone = Entity - end - - util.Decal( Data.decal, Bone:LocalToWorld(Data.Pos1), Bone:LocalToWorld(Data.Pos2) ) - - if ( SERVER ) then - local i = Entity.DecalCount or 0; - i = i + 1 - duplicator.StoreEntityModifier( Entity, "decal" .. i, Data ) - Entity.DecalCount = i - end - -end - --- --- Register decal duplicator --- -for i=1,32 do - - function PlaceDecal_delayed( Player, Entity, Data ) - timer.Simple( i*0.05, function() PlaceDecal( Player, Entity, Data ) end ) - end - - duplicator.RegisterEntityModifier( "decal"..i, PlaceDecal_delayed ) - -end - -function TOOL:LeftClick( trace ) - - return self:RightClick( trace, true ); - -end - -function TOOL:RightClick( trace, bNoDelay ) - - self:GetOwner():EmitSound( "SprayCan.Paint" ) - local decal = self:GetClientInfo( "decal" ) - - local Pos1 = trace.HitPos + trace.HitNormal - local Pos2 = trace.HitPos - trace.HitNormal - - local Bone = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone or 0 ) - if ( !Bone ) then - Bone = trace.Entity - end - - Pos1 = Bone:WorldToLocal( Pos1 ) - Pos2 = Bone:WorldToLocal( Pos2 ) - - PlaceDecal( self:GetOwner(), trace.Entity, { Pos1 = Pos1, Pos2 = Pos2, bone = trace.PhysicsBone, decal = decal } ) - - if ( bNoDelay ) then - self:GetWeapon():SetNextPrimaryFire( CurTime() + 0.05 ) - self:GetWeapon():SetNextSecondaryFire( CurTime() + 0.05 ) - else - self:GetWeapon():SetNextPrimaryFire( CurTime() + 0.2 ) - self:GetWeapon():SetNextSecondaryFire( CurTime() + 0.2 ) - end - - return false - -end - -list.Add( "PaintMaterials", "Eye" ) -list.Add( "PaintMaterials", "Smile" ) -list.Add( "PaintMaterials", "Light" ) -list.Add( "PaintMaterials", "Dark" ) -list.Add( "PaintMaterials", "Blood" ) -list.Add( "PaintMaterials", "YellowBlood" ) -list.Add( "PaintMaterials", "Impact.Metal" ) -list.Add( "PaintMaterials", "Scorch" ) -list.Add( "PaintMaterials", "BeerSplash" ) -list.Add( "PaintMaterials", "ExplosiveGunshot" ) -list.Add( "PaintMaterials", "BirdPoop" ) -list.Add( "PaintMaterials", "PaintSplatPink" ) -list.Add( "PaintMaterials", "PaintSplatGreen" ) -list.Add( "PaintMaterials", "PaintSplatBlue" ) -list.Add( "PaintMaterials", "ManhackCut" ) -list.Add( "PaintMaterials", "FadingScorch" ) -list.Add( "PaintMaterials", "Antlion.Splat" ) -list.Add( "PaintMaterials", "Splash.Large" ) -list.Add( "PaintMaterials", "BulletProof" ) -list.Add( "PaintMaterials", "GlassBreak" ) -list.Add( "PaintMaterials", "Impact.Sand" ) -list.Add( "PaintMaterials", "Impact.BloodyFlesh" ) -list.Add( "PaintMaterials", "Impact.Antlion" ) -list.Add( "PaintMaterials", "Impact.Glass" ) -list.Add( "PaintMaterials", "Impact.Wood" ) -list.Add( "PaintMaterials", "Impact.Concrete" ) -list.Add( "PaintMaterials", "Noughtsncrosses" ) -list.Add( "PaintMaterials", "Nought" ) -list.Add( "PaintMaterials", "Cross" ) - -function TOOL.BuildCPanel( CPanel ) - - local Options = list.Get( "PaintMaterials" ) - table.sort( Options ) - - local RealOptions = {} - - for k, decal in pairs( Options ) do - - --local MatName = util.DecalMaterial( decal ) - RealOptions[ decal ] = { paint_decal = decal } - - end - - CPanel:AddControl( "ListBox", { Label = "#tool.paint.texture", Height = "300", Options = RealOptions } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/physprop.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/physprop.lua deleted file mode 100644 index be2d3bcfb..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/physprop.lua +++ /dev/null @@ -1,40 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.physprop.name" - -TOOL.ClientConVar[ "gravity_toggle" ] = "1" -TOOL.ClientConVar[ "material" ] = "metal_bouncy" - -function TOOL:LeftClick( trace ) - - if ( !IsValid( trace.Entity ) ) then return false end - if (trace.Entity:IsPlayer()) then return false end - if (trace.Entity:IsWorld()) then return false end - - -- Make sure there's a physics object to manipulate - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - -- Client can bail out here and assume we're going ahead - if ( CLIENT ) then return true end - - -- Get the entity/bone from the trace - local Ent = trace.Entity - local Bone = trace.PhysicsBone - - -- Get client's CVars - local gravity = util.tobool( self:GetClientNumber( "gravity_toggle" ) ) - local material = self:GetClientInfo( "material" ) - - -- Set the properties - - construct.SetPhysProp( self:GetOwner(), Ent, Bone, nil, { GravityToggle = gravity, Material = material } ) - - DoPropSpawnedEffect( Ent ) - - return true - -end - -function TOOL:RightClick( trace ) - return false -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/pulley.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/pulley.lua deleted file mode 100644 index 5f9badee1..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/pulley.lua +++ /dev/null @@ -1,100 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.pulley.name" - -TOOL.ClientConVar[ "width" ] = "3" -TOOL.ClientConVar[ "forcelimit" ] = "0" -TOOL.ClientConVar[ "rigid" ] = "0" -TOOL.ClientConVar[ "material" ] = "cable/cable" - -function TOOL:LeftClick( trace ) - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - if ( !trace.Entity:IsValid() && ( iNum == nil || iNum == 0 || iNum > 2 ) ) then return end - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 2 ) then - - if ( CLIENT ) then return true end - - local width = self:GetClientNumber( "width" ) - local forcelimit = self:GetClientNumber( "forcelimit" ) - local rigid = util.tobool( self:GetClientNumber( "rigid" ) ) - local material = self:GetClientInfo( "material" ) - - -- Get information we're about to use - local Ent1 = self:GetEnt(1) - local Ent4 = self:GetEnt(4) - local Bone1 = self:GetBone(1) - local Bone4 = self:GetBone(4) - local LPos1 = self:GetLocalPos(1) - local LPos4 = self:GetLocalPos(4) - local WPos2 = self:GetPos(2) - local WPos3 = self:GetPos(3) - - local constraint = constraint.Pulley( Ent1, Ent4, Bone1, Bone4, LPos1, LPos4, WPos2, WPos3, forcelimit, rigid, width, material ) - - undo.Create("Pulley") - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "ropeconstraints", constraint ) - - self:ClearObjects() - - elseif ( iNum == 2 ) then - - self:SetStage( iNum+1 ) - - elseif ( iNum == 1 ) then - - self:SetStage( iNum+1 ) - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Pulley" ) - return bool - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.pulley.help" } ) - - CPanel:AddControl( "ComboBox", { - - Label = "#tool.presets", - MenuButton = 1, - Folder = "pulley", - Options = { Default = { pulley_forcelimit = '0', pulley_width='2', pulley_rigid='0', pulley_material='cable/cable' } }, - CVars = { "pulley_forcelimit", "pulley_width", "pulley_rigid", "pulley_material" } - }) - - CPanel:AddControl( "Slider", { Label = "#tool.forcelimit", Type = "Float", Command = "pulley_forcelimit", Min = "0", Max = "1000", Help=true } ) - CPanel:AddControl( "CheckBox", { Label = "#tool.pulley.rigid", Command = "pulley_rigid", Help=true } ) - - CPanel:AddControl( "Slider", { Label = "#tool.pulley.width", Type = "Float", Command = "pulley_width", Min = "0", Max = "10" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.pulley.material", convar = "pulley_material" } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/remover.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/remover.lua deleted file mode 100644 index 6f54c05cd..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/remover.lua +++ /dev/null @@ -1,105 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.remover.name" - -local function RemoveEntity( ent ) - - if ( ent:IsValid() ) then - ent:Remove() - end - -end - -local function DoRemoveEntity( Entity ) - - if ( !IsValid( Entity ) || Entity:IsPlayer() ) then return false end - - -- Nothing for the client to do here - if ( CLIENT ) then return true end - - -- Remove all constraints (this stops ropes from hanging around) - constraint.RemoveAll( Entity ) - - -- Remove it properly in 1 second - timer.Simple( 1, function() RemoveEntity( Entity ) end ) - - -- Make it non solid - Entity:SetNotSolid( true ) - Entity:SetMoveType( MOVETYPE_NONE ) - Entity:SetNoDraw( true ) - - -- Send Effect - local ed = EffectData() - ed:SetEntity( Entity ) - util.Effect( "entity_remove", ed, true, true ) - - return true - -end - ---[[--------------------------------------------------------- - Name: LeftClick - Desc: Remove a single entity ------------------------------------------------------------]] -function TOOL:LeftClick( trace ) - - if ( DoRemoveEntity( trace.Entity ) ) then - - if ( !CLIENT ) then - self:GetOwner():SendLua( "achievements.Remover()" ); - end - - return true - - end - - return false - -end - ---[[--------------------------------------------------------- - Name: RightClick - Desc: Remove this entity and everything constrained ------------------------------------------------------------]] -function TOOL:RightClick( trace ) - - local Entity = trace.Entity - - if ( !IsValid( Entity ) || Entity:IsPlayer() ) then return false end - - -- Client can bail out now. - if ( CLIENT ) then return true end - - local ConstrainedEntities = constraint.GetAllConstrainedEntities( trace.Entity ) - local Count = 0 - - -- Loop through all the entities in the system - for _, Entity in pairs( ConstrainedEntities ) do - - if ( DoRemoveEntity( Entity ) ) then - Count = Count + 1 - end - - end - - return true - -end - --- --- Reload removes all constraints on the targetted entity --- -function TOOL:Reload( trace ) - - if ( !IsValid( trace.Entity ) || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - return constraint.RemoveAll( trace.Entity ) - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.remover.desc" } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/rope.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/rope.lua deleted file mode 100644 index f798a37b4..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/rope.lua +++ /dev/null @@ -1,165 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.rope.name" - -TOOL.ClientConVar[ "forcelimit" ] = "0" -TOOL.ClientConVar[ "addlength" ] = "0" -TOOL.ClientConVar[ "material" ] = "cable/rope" -TOOL.ClientConVar[ "width" ] = "2" -TOOL.ClientConVar[ "rigid" ] = "0" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit" ) - local addlength = self:GetClientNumber( "addlength" ) - local material = self:GetClientInfo( "material" ) - local width = self:GetClientNumber( "width" ) - local rigid = self:GetClientNumber( "rigid" ) == 1 - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local length = ( WPos1 - WPos2):Length() - - local constraint, rope = constraint.Rope( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, length, addlength, forcelimit, width, material, rigid ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - -- Add The constraint to the players undo table - - undo.Create("Rope") - undo.AddEntity( constraint ) - undo.AddEntity( rope ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "ropeconstraints", constraint ) - self:GetOwner():AddCleanup( "ropeconstraints", rope ) - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit" ) - local addlength = self:GetClientNumber( "addlength" ) - local material = self:GetClientInfo( "material" ) - local width = self:GetClientNumber( "width" ) - local rigid = self:GetClientNumber( "rigid" ) == 1 - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local WPos1, WPos2 = self:GetPos(1),self:GetPos(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - local length = ( WPos1 - WPos2 ):Length() - - local constraint, rope = constraint.Rope( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, length, addlength, forcelimit, width, material, rigid ) - - -- Clear the objects and set the last object as object 1 - self:ClearObjects() - iNum = self:NumObjects() - self:SetObject( iNum + 1, Ent2, trace.HitPos, Phys, Bone2, trace.HitNormal ) - self:SetStage( iNum+1 ) - - -- Add The constraint to the players undo table - - undo.Create("Rope") - undo.AddEntity( constraint ) - if rope then undo.AddEntity( rope ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "ropeconstraints", constraint ) - self:GetOwner():AddCleanup( "ropeconstraints", rope ) - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Rope" ) - return bool - - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.rope.help" } ) - - CPanel:AddControl( "ComboBox", - { - Label = "#tool.presets", - MenuButton = 1, - Folder = "rope", - Options = { Default = { rope_forcelimit = '0', rope_addlength='0', rope_width='1', rope_material='cable/rope', rope_rigid='0' } }, - CVars = { "rope_forcelimit", "rope_addlength", "rope_width", "rope_material", "rope_rigid" } - }) - - CPanel:AddControl( "Slider", { Label = "#tool.forcelimit", Type = "Float", Command = "rope_forcelimit", Min = "0", Max = "1000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.rope.addlength", Type = "Float", Command = "rope_addlength", Min = "-500", Max = "500", Help=true } ) - - CPanel:AddControl( "CheckBox", { Label = "#tool.rope.rigid", Command = "rope_rigid", Help=true } ) - - CPanel:AddControl( "Slider", { Label = "#tool.rope.width", Type = "Float", Command = "rope_width", Min = "0", Max = "10" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.rope.material", convar = "rope_material" } ) - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/slider.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/slider.lua deleted file mode 100644 index eade86f8c..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/slider.lua +++ /dev/null @@ -1,159 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.slider.name" - -TOOL.ClientConVar[ "width" ] = "1.5" -TOOL.ClientConVar[ "material" ] = "cable/cable" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - -- Get client's CVars - local width = self:GetClientNumber( "width" ) or 1.5 - local material = self:GetClientInfo( "material" ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - - local constraint,rope = constraint.Slider( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, width, material ) - - undo.Create("Slider") - undo.AddEntity( constraint ) - if rope then undo.AddEntity( rope ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "ropeconstraints", constraint ) - self:GetOwner():AddCleanup( "ropeconstraints", rope ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - local tr = {} - tr.start = trace.HitPos - tr.endpos = tr.start + (trace.HitNormal * 16384) - tr.filter = {} - tr.filter[1] = self:GetOwner() - if (trace.Entity:IsValid()) then - tr.filter[2] = trace.Entity - end - - local tr = util.TraceLine( tr ) - - if ( !tr.Hit ) then - self:ClearObjects() - return - end - - -- Don't try to constrain world to world - if ( trace.HitWorld && tr.HitWorld ) then - self:ClearObjects() - return - end - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - if ( tr.Entity:IsValid() && tr.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - - local Phys2 = tr.Entity:GetPhysicsObjectNum( tr.PhysicsBone ) - self:SetObject( 2, tr.Entity, tr.HitPos, Phys2, tr.PhysicsBone, trace.HitNormal ) - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - local width = self:GetClientNumber( "width" ) or 1.5 - local material = self:GetClientInfo( "material" ) - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - - local constraint,rope = constraint.Slider( Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, width, material ) - - undo.Create("Slider") - undo.AddEntity( constraint ) - if rope then undo.AddEntity( rope ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "ropeconstraints", constraint ) - self:GetOwner():AddCleanup( "ropeconstraints", rope ) - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Slider" ) - return bool - -end - - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.slider.help" } ) - - CPanel:AddControl( "ComboBox", - { - Label = "#tool.presets", - MenuButton = 1, - Folder = "rope", - Options = { Default = { slider_width='1', slider_material='cable/rope' } }, - CVars = { "slider_width", "slider_material" } - }) - - CPanel:AddControl( "Slider", { Label = "#tool.slider.width", Type = "Float", Command = "slider_width", Min = "0", Max = "10" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.slider.material", convar = "slider_material" } ) - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/thruster.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/thruster.lua deleted file mode 100644 index 35c2e4aee..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/thruster.lua +++ /dev/null @@ -1,329 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.thruster.name" - -TOOL.ClientConVar[ "force" ] = "1500" -TOOL.ClientConVar[ "model" ] = "models/props_c17/lampShade001a.mdl" -TOOL.ClientConVar[ "keygroup" ] = "45" -TOOL.ClientConVar[ "keygroup_back" ] = "42" -TOOL.ClientConVar[ "toggle" ] = "0" -TOOL.ClientConVar[ "collision" ] = "0" -TOOL.ClientConVar[ "effect" ] = "fire" -TOOL.ClientConVar[ "damageable" ] = "0" -TOOL.ClientConVar[ "soundname" ] = "PhysicsCannister.ThrusterLoop" - -cleanup.Register( "thrusters" ) - -function TOOL:LeftClick( trace ) - - if ( trace.Entity && trace.Entity:IsPlayer() ) then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - if ( CLIENT ) then return true end - - local ply = self:GetOwner() - - local force = self:GetClientNumber( "force" ) - local model = self:GetClientInfo( "model" ) - local key = self:GetClientNumber( "keygroup" ) - local key_bk = self:GetClientNumber( "keygroup_back" ) - local toggle = self:GetClientNumber( "toggle" ) - local collision = self:GetClientNumber( "collision" ) - local effect = self:GetClientInfo( "effect" ) - local damageable = self:GetClientNumber( "damageable" ) - local soundname = self:GetClientInfo( "soundname" ) - - -- If we shot a thruster change its force - if ( trace.Entity:IsValid() && trace.Entity:GetClass() == "gmod_thruster" && trace.Entity.pl == ply ) then - - trace.Entity:SetForce( force ) - trace.Entity:SetEffect( effect ) - trace.Entity:SetToggle( toggle == 1 ) - trace.Entity.ActivateOnDamage = ( damageable == 1 ) - trace.Entity:SetSound( soundname ) - - numpad.Remove( trace.Entity.NumDown ) - numpad.Remove( trace.Entity.NumUp ) - numpad.Remove( trace.Entity.NumBackDown ) - numpad.Remove( trace.Entity.NumBackUp ) - - trace.Entity.NumDown = numpad.OnDown( ply, key, "Thruster_On", trace.Entity, 1 ) - trace.Entity.NumUp = numpad.OnUp( ply, key, "Thruster_Off", trace.Entity, 1 ) - - trace.Entity.NumBackDown = numpad.OnDown( ply, key_bk, "Thruster_On", trace.Entity, -1 ) - trace.Entity.NumBackUp = numpad.OnUp( ply, key_bk, "Thruster_Off", trace.Entity, -1 ) - - trace.Entity.key = key - trace.Entity.key_bk = key_bk - trace.Entity.force = force - trace.Entity.toggle = toggle - trace.Entity.effect = effect - trace.Entity.damageable = damageable - - return true - end - - if ( !self:GetSWEP():CheckLimit( "thrusters" ) ) then return false end - - if ( !util.IsValidModel( model ) ) then return false end - if ( !util.IsValidProp( model ) ) then return false end -- Allow ragdolls to be used? - - local Ang = trace.HitNormal:Angle() - Ang.pitch = Ang.pitch + 90 - - local thruster = MakeThruster( ply, model, Ang, trace.HitPos, key, key_bk, force, toggle, effect, damageable, soundname ) - - local min = thruster:OBBMins() - thruster:SetPos( trace.HitPos - trace.HitNormal * min.z ) - - local const, nocollide - - -- Don't weld to world - if ( trace.Entity:IsValid() ) then - - const = constraint.Weld( thruster, trace.Entity, 0, trace.PhysicsBone, 0, collision == 0, true ) - - -- Don't disable collision if it's not attached to anything - if ( collision == 0 ) then - - thruster:GetPhysicsObject():EnableCollisions( false ) - thruster.nocollide = true - - end - - end - - undo.Create("Thruster") - undo.AddEntity( thruster ) - undo.AddEntity( const ) - undo.SetPlayer( ply ) - undo.Finish() - - ply:AddCleanup( "thrusters", thruster ) - ply:AddCleanup( "thrusters", const ) - ply:AddCleanup( "thrusters", nocollide ) - - return true - -end - -if (SERVER) then - - function MakeThruster( pl, Model, Ang, Pos, key, key_bck, force, toggle, effect, damageable, soundname, nocollide, Vel, aVel, frozen ) - - if ( IsValid( pl ) ) then - if ( !pl:CheckLimit( "thrusters" ) ) then return false end - end - - local thruster = ents.Create( "gmod_thruster" ) - if ( !thruster:IsValid() ) then return false end - thruster:SetModel( Model ) - - thruster:SetAngles( Ang ) - thruster:SetPos( Pos ) - thruster:Spawn() - - thruster:SetEffect( effect ) - thruster:SetForce( force ) - thruster:SetToggle( toggle == 1 ) - thruster.ActivateOnDamage = ( damageable == 1 ) - thruster:SetPlayer( pl ) - thruster:SetSound( soundname ) - - thruster.NumDown = numpad.OnDown( pl, key, "Thruster_On", thruster, 1 ) - thruster.NumUp = numpad.OnUp( pl, key, "Thruster_Off", thruster, 1 ) - - thruster.NumBackDown = numpad.OnDown( pl, key_bck, "Thruster_On", thruster, -1 ) - thruster.NumBackUp = numpad.OnUp( pl, key_bck, "Thruster_Off", thruster, -1 ) - - if ( nocollide == true && IsValid( thruster:GetPhysicsObject() ) ) then thruster:GetPhysicsObject():EnableCollisions( false ) end - - local ttable = { - key = key, - key_bck = key_bck, - force = force, - toggle = toggle, - pl = pl, - effect = effect, - nocollide = nocollide, - damageable = damageable, - soundname = soundname - } - - table.Merge( thruster:GetTable(), ttable ) - - if ( IsValid( pl ) ) then - pl:AddCount( "thrusters", thruster ) - end - - DoPropSpawnedEffect( thruster ) - - return thruster - - end - - duplicator.RegisterEntityClass( "gmod_thruster", MakeThruster, "Model", "Ang", "Pos", "key", "key_bck", "force", "toggle", "effect", "damageable", "soundname", "nocollide", "Vel", "aVel", "frozen" ) - -end - -function TOOL:UpdateGhostThruster( ent, player ) - - if ( !ent ) then return end - if ( !ent:IsValid() ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - if (trace.Entity && trace.Entity:GetClass() == "gmod_thruster" || trace.Entity:IsPlayer()) then - - ent:SetNoDraw( true ) - return - - end - - local Ang = trace.HitNormal:Angle() - Ang.pitch = Ang.pitch + 90 - - local min = ent:OBBMins() - ent:SetPos( trace.HitPos - trace.HitNormal * min.z ) - ent:SetAngles( Ang ) - - ent:SetNoDraw( false ) - -end - - -function TOOL:Think() - - if (!self.GhostEntity || !self.GhostEntity:IsValid() || self.GhostEntity:GetModel() != self:GetClientInfo( "model" )) then - self:MakeGhostEntity( self:GetClientInfo( "model" ), Vector(0,0,0), Angle(0,0,0) ) - end - - self:UpdateGhostThruster( self.GhostEntity, self:GetOwner() ) - -end - - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.thruster.desc" } ) - - local Options = { Default = { thruster_force = "20", - thruster_model = "models/props_junk/plasticbucket001a.mdl", - thruster_effect = "fire" } } - - local CVars = { "thruster_force", "thruster_model", "thruster_effect" } - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "thruster", - Options = Options, - CVars = CVars } ) - - CPanel:AddControl( "Numpad", { Label = "#tool.thruster.forward", - Label2 = "#tool.thruster.back", - Command = "thruster_keygroup", - Command2 = "thruster_keygroup_back", - ButtonSize = "22" } ) - - CPanel:AddControl( "PropSelect", { Label = "#tool.thruster.model", - ConVar = "thruster_model", - Category = "Thrusters", - Height = 4, - Models = list.Get( "ThrusterModels" ) } ) - - - CPanel:AddControl( "ComboBox", { Label = "#tool.thruster.effect", - Description = "Thruster_Effects_Desc", - MenuButton = "0", - Options = list.Get( "ThrusterEffects" ) } ) - - - CPanel:AddControl( "ComboBox", { Label = "#tool.thruster.sound", - Description = "Thruster_Sounds_Desc", - MenuButton = "0", - Options = list.Get( "ThrusterSounds" ) } ) - - - CPanel:AddControl( "Slider", { Label = "#tool.thruster.force", - Description = "", - Type = "Float", - Min = 1, - Max = 10000, - Command = "thruster_force" } ) - - - - - CPanel:AddControl( "CheckBox", { Label = "#tool.thruster.toggle", - Command = "thruster_toggle" } ) - - CPanel:AddControl( "CheckBox", { Label = "#tool.thruster.collision", - Command = "thruster_collision" } ) - - CPanel:AddControl( "CheckBox", { Label = "#tool.thruster.damagable", - Command = "thruster_damageable" } ) - -end - -list.Set( "ThrusterModels", "models/dav0r/thruster.mdl", {} ) -list.Set( "ThrusterModels", "models/MaxOfS2D/thruster_projector.mdl", {} ) -list.Set( "ThrusterModels", "models/MaxOfS2D/thruster_propeller.mdl", {} ) -list.Set( "ThrusterModels", "models/thrusters/jetpack.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/plasticbucket001a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/PropaneCanister001a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/propane_tank001a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/PopCan01a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/MetalBucket01a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_lab/jar01a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/lampShade001a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/canister_propane01a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/canister01a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/canister02a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_trainstation/trainstation_ornament002.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/TrafficCone001a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/clock01.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/pottery02a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/pottery03a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_junk/terracotta01.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/TrapPropeller_Engine.mdl", {} ) -list.Set( "ThrusterModels", "models/props_c17/FurnitureSink001a.mdl", {} ) -list.Set( "ThrusterModels", "models/props_trainstation/trainstation_ornament001.mdl", {} ) -list.Set( "ThrusterModels", "models/props_trainstation/trashcan_indoor001b.mdl", {} ) - -list.Set( "ThrusterModels", "models/props_phx2/garbage_metalcan001a.mdl", {} ) - ---Tile Model Pack Thrusters - -list.Set( "ThrusterModels", "models/hunter/plates/plate.mdl", {} ) -list.Set( "ThrusterModels", "models/hunter/blocks/cube025x025x025.mdl", {} ) - ---XQM Model Pack Thrusters - -list.Set( "ThrusterModels", "models/XQM/AfterBurner1.mdl", {} ) -list.Set( "ThrusterModels", "models/XQM/AfterBurner1Medium.mdl", {} ) -list.Set( "ThrusterModels", "models/XQM/AfterBurner1Big.mdl", {} ) -list.Set( "ThrusterModels", "models/XQM/AfterBurner1Huge.mdl", {} ) -list.Set( "ThrusterModels", "models/XQM/AfterBurner1Large.mdl", {} ) - -list.Set( "ThrusterEffects", "#thrustereffect.none", { thruster_effect = "none" } ) -list.Set( "ThrusterEffects", "#thrustereffect.flames", { thruster_effect = "fire" } ) -list.Set( "ThrusterEffects", "#thrustereffect.plasma", { thruster_effect = "plasma" } ) -list.Set( "ThrusterEffects", "#thrustereffect.magic", { thruster_effect = "magic" } ) -list.Set( "ThrusterEffects", "#thrustereffect.rings", { thruster_effect = "rings" } ) -list.Set( "ThrusterEffects", "#thrustereffect.smoke", { thruster_effect = "smoke" } ) - -list.Set( "ThrusterSounds", "#thrustersounds.none", { thruster_soundname = "" } ) -list.Set( "ThrusterSounds", "#thrustersounds.steam", { thruster_soundname = "PhysicsCannister.ThrusterLoop" } ) -list.Set( "ThrusterSounds", "#thrustersounds.zap", { thruster_soundname = "WeaponDissolve.Charge" } ) -list.Set( "ThrusterSounds", "#thrustersounds.beam", { thruster_soundname = "WeaponDissolve.Beam" } ) -list.Set( "ThrusterSounds", "#thrustersounds.elevator", { thruster_soundname = "eli_lab.elevator_move" } ) -list.Set( "ThrusterSounds", "#thrustersounds.energy", { thruster_soundname = "combine.sheild_loop" } ) -list.Set( "ThrusterSounds", "#thrustersounds.ring", { thruster_soundname = "k_lab.ringsrotating" } ) -list.Set( "ThrusterSounds", "#thrustersounds.resonance", { thruster_soundname = "k_lab.teleport_rings_high" } ) -list.Set( "ThrusterSounds", "#thrustersounds.dropship", { thruster_soundname = "k_lab2.DropshipRotorLoop" } ) -list.Set( "ThrusterSounds", "#thrustersounds.machine", { thruster_soundname = "Town.d1_town_01_spin_loop" } ) diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/trails.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/trails.lua deleted file mode 100644 index 77330026e..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/trails.lua +++ /dev/null @@ -1,187 +0,0 @@ - -TOOL.Category = "Render" -TOOL.Name = "#tool.trails.name" - -TOOL.ClientConVar[ "r" ] = 255 -TOOL.ClientConVar[ "g" ] = 255 -TOOL.ClientConVar[ "b" ] = 255 -TOOL.ClientConVar[ "a" ] = 255 - -TOOL.ClientConVar[ "length" ] = 5 -TOOL.ClientConVar[ "startsize" ] = 32 -TOOL.ClientConVar[ "endsize" ] = 0 - -TOOL.ClientConVar[ "material" ] = "trails/lol" - -cleanup.Register( "trails" ) - -local function SetTrails( Player, Entity, Data ) - - if ( IsValid( Entity.SToolTrail ) ) then - - Entity.SToolTrail:Remove() - Entity.SToolTrail = nil - - end - - if ( !Data ) then - - duplicator.ClearEntityModifier( Entity, "trail" ); - return - - end - - if ( Data.StartSize == 0 ) then - - Data.StartSize = 0.0001; - - end - - -- - -- Lock down the trail material - only allow what the server allows - -- This is here to fix a crash exploit - -- - if ( !game.SinglePlayer() && !list.Contains( "trail_materials", Data.Material ) ) then - return - end - - - local trail_entity = util.SpriteTrail( Entity, --Entity - 0, --iAttachmentID - Data.Color, --Color - false, -- bAdditive - Data.StartSize, --fStartWidth - Data.EndSize, --fEndWidth - Data.Length, --fLifetime - 1 / ((Data.StartSize+Data.EndSize) * 0.5), --fTextureRes - Data.Material .. ".vmt" ) --strTexture - - Entity.SToolTrail = trail_entity - - if ( IsValid( Player ) ) then - Player:AddCleanup( "trails", trail_entity ) - end - - duplicator.StoreEntityModifier( Entity, "trail", Data ) - - return trail_entity - -end -duplicator.RegisterEntityModifier( "trail", SetTrails ) - -function TOOL:LeftClick( trace ) - - if (!trace.Entity) then return false end - if (!trace.Entity:IsValid()) then return false end - if (!trace.Entity:EntIndex() == 0) then return false end - if ( trace.Entity:IsPlayer() ) then return false end - if (CLIENT) then return true end - - local r = math.Clamp( self:GetClientNumber( "r", 255 ), 0, 255 ) - local g = math.Clamp( self:GetClientNumber( "g", 255 ), 0, 255 ) - local b = math.Clamp( self:GetClientNumber( "b", 255 ), 0, 255 ) - local a = math.Clamp( self:GetClientNumber( "a", 255 ), 0, 255 ) - - local length = self:GetClientNumber( "length", 5 ) - local startsize = self:GetClientNumber( "startsize", 32 ) - local endsize = self:GetClientNumber( "endsize", 0 ) - local Mat = self:GetClientInfo( "material", "sprites/obsolete" ) - - -- Clamp sizes in multiplayer - if ( !game.SinglePlayer() ) then - - length = math.Clamp( length, 0.1, 10 ) - startsize = math.Clamp( startsize, 0, 128 ) - endsize = math.Clamp( endsize, 0, 128 ) - - end - - local Trail = SetTrails( self:GetOwner(), trace.Entity, { - Color = Color( r, g, b, a ), - Length = length, - StartSize = startsize, - EndSize = endsize, - Material = Mat - } ) - - undo.Create("Trail") - undo.AddEntity( Trail ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - return true - - -end - -function TOOL:RightClick( trace ) - - if (!trace.Entity) then return false end - if (!trace.Entity:IsValid()) then return false end - if (!trace.Entity:EntIndex() == 0) then return false end - if ( trace.Entity:IsPlayer() ) then return false end - if (CLIENT) then return true end - - SetTrails( self:GetOwner(), trace.Entity, nil ) - return true - -end - --- --- Add default materials to list --- Note: Addons can easily add to this list in their --- own file placed in autorun or something. --- -list.Set( "trail_materials", "#trail.plasma", "trails/plasma" ) -list.Set( "trail_materials", "#trail.tube", "trails/tube" ) -list.Set( "trail_materials", "#trail.electric", "trails/electric" ) -list.Set( "trail_materials", "#trail.smoke", "trails/smoke" ) -list.Set( "trail_materials", "#trail.laser", "trails/laser" ) -list.Set( "trail_materials", "#trail.physbeam", "trails/physbeam" ) -list.Set( "trail_materials", "#trail.love", "trails/love" ) -list.Set( "trail_materials", "#trail.lol", "trails/lol" ) - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.trails.desc" } ) - - -- Presets - local params = { Label = "#tool.presets", MenuButton = 1, Folder = "trails", Options = {}, CVars = {} } - - params.Options.default = { - trails_r = 255, - trails_g = 255, - trails_b = 255, - trails_a = 255, - trails_length = 255, - trails_startsize = 16, - trails_endsize = 0 - } - - table.insert( params.CVars, "trails_r" ) - table.insert( params.CVars, "trails_g" ) - table.insert( params.CVars, "trails_b" ) - table.insert( params.CVars, "trails_a" ) - table.insert( params.CVars, "trails_length" ) - table.insert( params.CVars, "trails_startsize" ) - table.insert( params.CVars, "trails_endsize" ) - - CPanel:AddControl( "ComboBox", params ) - - CPanel:AddControl( "Color", { Label = "#tool.trails.color", - Red = "trails_r", - Green = "trails_g", - Blue = "trails_b", - Alpha = "trails_a", - ShowAlpha = 1, - ShowHSV = 1, - ShowRGB = 1, - Multiplier = 255 } ) - - CPanel:NumSlider( "#tool.trails.length", "trails_length", 0, 10, 2 ) - CPanel:NumSlider( "#tool.trails.startsize", "trails_startsize", 0, 128, 2 ) - CPanel:NumSlider( "#tool.trails.endsize", "trails_endsize", 0, 128, 2 ) - - CPanel:MatSelect( "trails_material", list.Get( "trail_materials" ), true, 0.25, 0.25 ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/weld.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/weld.lua deleted file mode 100644 index f4e64d18a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/weld.lua +++ /dev/null @@ -1,282 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.weld.name" - -TOOL.ClientConVar[ "forcelimit" ] = "0" - -function TOOL:RightClick( trace ) - - if ( self:GetOperation() == 2 ) then return false end - - -- Make sure the object we're about to use is valid - local iNum = self:NumObjects() - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - - -- You can click anywhere on the 3rd pass - if ( iNum < 2 ) then - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - -- Don't weld players, or to players - if ( trace.Entity:IsPlayer() ) then return false end - - -- Don't do anything with stuff without any physics.. - if ( SERVER && !Phys:IsValid() ) then return false end - - end - - if ( iNum == 0 ) then - - if ( !trace.Entity:IsValid() ) then return false end - if ( trace.Entity:GetClass() == "prop_vehicle_jeep" ) then return false end - - end - - self:SetOperation( 1 ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - -- - -- Stage 0 - grab an object, make a ghost entity - -- - if ( iNum == 0 ) then - - self:StartGhostEntity( trace.Entity ) - self:SetStage( 1 ) - return true - - end - - -- - -- Stage 1 - choose the spot and object to weld it to - -- - if ( iNum == 1 ) then - - if ( CLIENT ) then - self:ReleaseGhostEntity() - return true - end - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - local LPos1, LPos2 = self:GetLocalPos(1), self:GetLocalPos(2) - local Norm1, Norm2 = self:GetNormal(1), self:GetNormal(2) - local Phys1, Phys2 = self:GetPhys(1), self:GetPhys(2) - - -- Note: To keep stuff ragdoll friendly try to treat things as physics objects rather than entities - local Ang1, Ang2 = Norm1:Angle(), (Norm2 * -1):Angle() - local TargetAngle = Phys1:AlignAngles( Ang1, Ang2 ) - - Phys1:SetAngles( TargetAngle ) - - -- Move the object so that the hitpos on our object is at the second hitpos - local TargetPos = WPos2 + ( Phys1:GetPos() - self:GetPos( 1 ) ) - - -- Set the position - Phys1:SetPos( TargetPos ) - Phys1:EnableMotion( false ) - - -- Wake up the physics object so that the entity updates - Phys1:Wake() - - self.RotAxis = Norm2 - - self:ReleaseGhostEntity() - - self:SetStage( 2 ) - - return true; - - end - - -- - -- Stage 2 - Weld it in place. - -- - if ( iNum == 2 ) then - - if ( CLIENT ) then - - self:ClearObjects() - return true - - end - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit" ) - local nocollide = false - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local Phys1 = self:GetPhys(1) - - -- The entity became invalid half way through - if ( !IsValid( Ent1 ) ) then - - self:ClearObjects() - return false - - end - - local constraint = constraint.Weld( Ent1, Ent2, Bone1, Bone2, forcelimit, nocollide ) - if ( constraint ) then - - Phys1:EnableMotion( true ) - - undo.Create( "Weld" ) - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "constraints", constraint ) - - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - local Norm1, Norm2 = self:GetNormal(1), self:GetNormal(2) - - end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - return true - - end - -end - -function TOOL:Think() - - if ( self:NumObjects() < 1 ) then return end - - if ( self:GetOperation() == 1 ) then - - if ( SERVER && !IsValid( self:GetEnt(1) ) ) then - - self:ClearObjects() - return - - end - - if ( self:NumObjects() == 1 ) then - - self:UpdateGhostEntity() - return - - end - - if ( SERVER && self:NumObjects() == 2 ) then - - local Phys1 = self:GetPhys(1) - local LPos1, LPos2 = self:GetLocalPos(1), self:GetLocalPos(2) - local WPos1, WPos2 = self:GetPos(1), self:GetPos(2) - - local cmd = self:GetOwner():GetCurrentCommand() - - local degrees = cmd:GetMouseX() * 0.05 - - local angle = Phys1:RotateAroundAxis( self.RotAxis , degrees ) - - Phys1:SetAngles( angle ) - - -- Move so spots join up - local Norm2 = self:GetNormal( 2 ) - local TargetPos = WPos2 + ( Phys1:GetPos() - self:GetPos( 1 ) ) - Phys1:SetPos( TargetPos ) - Phys1:Wake() - - end - - end - -end - -function TOOL:Reload( trace ) - - if ( !trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - constraint.RemoveConstraints( trace.Entity, "Weld" ) - self:ClearObjects() - - return true - -end - -function TOOL:LeftClick( trace ) - - if ( self:GetOperation() == 1 ) then return false end - if ( IsValid( trace.Entity ) && trace.Entity:IsPlayer()) then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( CLIENT ) then - - if ( iNum > 0 ) then self:ClearObjects() end - return true - - end - - self:SetOperation( 2 ) - - if ( iNum == 0 ) then - - self:SetStage( 1 ) - return true - - end - - if ( iNum == 1 ) then - - -- Get client's CVars - local forcelimit = self:GetClientNumber( "forcelimit" ) - local nocollide = false - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - - local constraint = constraint.Weld( Ent1, Ent2, Bone1, Bone2, forcelimit, nocollide ) - if ( constraint ) then - - undo.Create( "Weld" ) - undo.AddEntity( constraint ) - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - self:GetOwner():AddCleanup( "constraints", constraint ) - - end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - end - - return true - -end - -function TOOL:FreezeMovement() - - return self:GetOperation() == 1 && self:GetStage() == 2 - -end - -function TOOL:Holster() - - self:ClearObjects() - -end - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.weld.help" } ) - CPanel:AddControl( "Slider", { Label = "#tool.forcelimit", Type = "Float", Command = "weld_forcelimit", Min = "0", Max = "1000", Help = true } ) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/wheel.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/wheel.lua deleted file mode 100644 index c89b1232b..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/wheel.lua +++ /dev/null @@ -1,496 +0,0 @@ - -TOOL.Category = "Construction" -TOOL.Name = "#tool.wheel.name" - -TOOL.ClientConVar[ "torque" ] = "3000" -TOOL.ClientConVar[ "friction" ] = "1" -TOOL.ClientConVar[ "nocollide" ] = "1" -TOOL.ClientConVar[ "forcelimit" ] = "0" -TOOL.ClientConVar[ "fwd" ] = "45" -- Forward key -TOOL.ClientConVar[ "bck" ] = "42" -- Back key -TOOL.ClientConVar[ "toggle" ] = "0" -- Togglable -TOOL.ClientConVar[ "model" ] = "models/props_vehicles/carparts_wheel01a.mdl" -TOOL.ClientConVar[ "rx" ] = "90" -TOOL.ClientConVar[ "ry" ] = "0" -TOOL.ClientConVar[ "rz" ] = "90" - -cleanup.Register( "wheels" ) - ---[[--------------------------------------------------------- - Places a wheel ------------------------------------------------------------]] -function TOOL:LeftClick( trace ) - - if ( trace.Entity && trace.Entity:IsPlayer() ) then return false end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - if (CLIENT) then return true end - - local ply = self:GetOwner() - - if ( !self:GetSWEP():CheckLimit( "wheels" ) ) then return false end - - local targetPhys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - - -- Get client's CVars - local torque = self:GetClientNumber( "torque" ) - local friction = self:GetClientNumber( "friction" ) - local nocollide = self:GetClientNumber( "nocollide" ) - local limit = self:GetClientNumber( "forcelimit" ) - local toggle = self:GetClientNumber( "toggle" ) != 0 - local model = self:GetClientInfo( "model" ) - - local fwd = self:GetClientNumber( "fwd" ) - local bck = self:GetClientNumber( "bck" ) - - if ( !util.IsValidModel( model ) ) then return false end - if ( !util.IsValidProp( model ) ) then return false end - - -- Create the wheel - local wheelEnt = MakeWheel( ply, trace.HitPos, Angle(0,0,0), model, fwd, bck, nil, nil, toggle, torque ) - - -- Make sure we have our wheel angle - self.wheelAngle = Angle( tonumber(self:GetClientInfo( "rx" )), tonumber(self:GetClientInfo( "ry" )), tonumber(self:GetClientInfo( "rz" )) ) - - local TargetAngle = trace.HitNormal:Angle() + self.wheelAngle - wheelEnt:SetAngles( TargetAngle ) - - local CurPos = wheelEnt:GetPos() - local NearestPoint = wheelEnt:NearestPoint( CurPos - ( trace.HitNormal * 512 ) ) - local wheelOffset = CurPos - NearestPoint - - wheelEnt:SetPos( trace.HitPos + wheelOffset ) - - -- Wake up the physics object so that the entity updates - wheelEnt:GetPhysicsObject():Wake() - - local TargetPos = wheelEnt:GetPos() - - -- Set the hinge Axis perpendicular to the trace hit surface - local LPos1 = wheelEnt:GetPhysicsObject():WorldToLocal( TargetPos + trace.HitNormal ) - local LPos2 = targetPhys:WorldToLocal( trace.HitPos ) - - local constraint, axis = constraint.Motor( wheelEnt, trace.Entity, 0, trace.PhysicsBone, LPos1, LPos2, friction, torque, 0, nocollide, toggle, ply, limit ) - - undo.Create("Wheel") - undo.AddEntity( axis ) - undo.AddEntity( constraint ) - undo.AddEntity( wheelEnt ) - undo.SetPlayer( ply ) - undo.Finish() - - ply:AddCleanup( "wheels", axis ) - ply:AddCleanup( "wheels", constraint ) - ply:AddCleanup( "wheels", wheelEnt ) - - wheelEnt:SetMotor( constraint ) - wheelEnt:SetDirection( constraint.direction ) - wheelEnt:SetAxis( trace.HitNormal ) - wheelEnt:SetToggle( toggle ) - wheelEnt:DoDirectionEffect() - wheelEnt:SetBaseTorque( torque ) - - return true - -end - - ---[[--------------------------------------------------------- - Apply new values to the wheel ------------------------------------------------------------]] -function TOOL:RightClick( trace ) - - if ( trace.Entity && trace.Entity:GetClass() != "gmod_wheel" ) then return false end - if (CLIENT) then return true end - - local wheelEnt = trace.Entity - - -- Only change your own wheels.. - if ( wheelEnt:GetPlayer():IsValid() && - wheelEnt:GetPlayer() != self:GetOwner() ) then - - return false - - end - - -- Get client's CVars - local torque = self:GetClientNumber( "torque" ) - local toggle = self:GetClientNumber( "toggle" ) != 0 - local fwd = self:GetClientNumber( "fwd" ) - local bck = self:GetClientNumber( "bck" ) - - wheelEnt.BaseTorque = torque - wheelEnt:SetTorque( torque ) - wheelEnt:SetToggle( toggle ) - - -- Make sure the table exists! - wheelEnt.KeyBinds = wheelEnt.KeyBinds or {} - - wheelEnt.key_f = fwd - wheelEnt.key_r = bck - - -- Remove old binds - numpad.Remove( wheelEnt.KeyBinds[1] ) - numpad.Remove( wheelEnt.KeyBinds[2] ) - numpad.Remove( wheelEnt.KeyBinds[3] ) - numpad.Remove( wheelEnt.KeyBinds[4] ) - - -- Add new binds - wheelEnt.KeyBinds[1] = numpad.OnDown( self:GetOwner(), fwd, "WheelForward", wheelEnt, true ) - wheelEnt.KeyBinds[2] = numpad.OnUp( self:GetOwner(), fwd, "WheelForward", wheelEnt, false ) - wheelEnt.KeyBinds[3] = numpad.OnDown( self:GetOwner(), bck, "WheelReverse", wheelEnt, true ) - wheelEnt.KeyBinds[4] = numpad.OnUp( self:GetOwner(), bck, "WheelReverse", wheelEnt, false ) - - return true - -end - -if ( SERVER ) then - - --[[--------------------------------------------------------- - For duplicator, creates the wheel. - -----------------------------------------------------------]] - function MakeWheel( pl, Pos, Ang, Model, key_f, key_r, axis, direction, toggle, BaseTorque, Data ) - - if ( IsValid( pl ) ) then - if ( !pl:CheckLimit( "wheels" ) ) then return false end - end - - local wheel = ents.Create( "gmod_wheel" ) - if ( !wheel:IsValid() ) then return end - - wheel:SetModel( Model ) - wheel:SetPos( Pos ) - wheel:SetAngles( Ang ) - wheel:Spawn() - - wheel:SetPlayer( pl ) - - duplicator.DoGenericPhysics( wheel, pl, Data ) - - wheel.key_f = key_f - wheel.key_r = key_r - - if ( axis ) then - wheel.Axis = axis - end - - direction = direction or 1 - wheel:SetDirection( direction ) - - toggle = toggle or false - wheel:SetToggle( toggle ) - - wheel:SetBaseTorque( BaseTorque ) - wheel:UpdateOverlayText() - - wheel.KeyBinds = {} - - -- Bind to keypad - wheel.KeyBinds[1] = numpad.OnDown( pl, key_f, "WheelForward", wheel, true ) - wheel.KeyBinds[2] = numpad.OnUp( pl, key_f, "WheelForward", wheel, false ) - wheel.KeyBinds[3] = numpad.OnDown( pl, key_r, "WheelReverse", wheel, true ) - wheel.KeyBinds[4] = numpad.OnUp( pl, key_r, "WheelReverse", wheel, false ) - - if ( IsValid( pl ) ) then - - pl:AddCount( "wheels", wheel ) - - end - - return wheel - - end - - duplicator.RegisterEntityClass( "gmod_wheel", MakeWheel, "Pos", "Ang", "Model", "key_f", "key_r", "Axis", "Direction", "Toggle", "BaseTorque", "Data" ) - -end - -function TOOL:UpdateGhostWheel( ent, player ) - - if ( !ent ) then return end - if ( !ent:IsValid() ) then return end - - local tr = util.GetPlayerTrace( player ) - local trace = util.TraceLine( tr ) - if (!trace.Hit) then return end - - if ( trace.Entity:IsPlayer() ) then - - ent:SetNoDraw( true ) - return - - end - - local Ang = trace.HitNormal:Angle() + self.wheelAngle - local CurPos = ent:GetPos() - local NearestPoint = ent:NearestPoint( CurPos - (trace.HitNormal * 512) ) - local WheelOffset = CurPos - NearestPoint - - local min = ent:OBBMins() - ent:SetPos( trace.HitPos + WheelOffset ) - ent:SetAngles( Ang ) - - ent:SetNoDraw( false ) - -end - ---[[--------------------------------------------------------- - Maintains the ghost wheel ------------------------------------------------------------]] -function TOOL:Think() - - if (!self.GhostEntity || !self.GhostEntity:IsValid() || self.GhostEntity:GetModel() != self:GetClientInfo( "model" )) then - self.wheelAngle = Angle( tonumber(self:GetClientInfo( "rx" )), tonumber(self:GetClientInfo( "ry" )), tonumber(self:GetClientInfo( "rz" )) ) - self:MakeGhostEntity( self:GetClientInfo( "model" ), Vector(0,0,0), Angle(0,0,0) ) - end - - self:UpdateGhostWheel( self.GhostEntity, self:GetOwner() ) - -end - - - -function TOOL.BuildCPanel( CPanel ) - - -- HEADER - CPanel:AddControl( "Header", { Description = "#tool.wheel.desc" } ) - - local Options = { Default = { wheel_torque = "3000", - wheel_friction = "0", - wheel_nocollide = "1", - wheel_forcelimit = "0" } } - - local CVars = { "wheel_torque", "wheel_friction", "wheel_nocollide", "wheel_forcelimit" } - - CPanel:AddControl( "ComboBox", { Label = "#tool.presets", - MenuButton = 1, - Folder = "wheel", - Options = Options, - CVars = CVars } ) - - - CPanel:AddControl( "Numpad", { Label = "#tool.wheel.forward", - Label2 = "#tool.wheel.reverse", - Command = "wheel_fwd", - Command2 = "wheel_bck", - ButtonSize = "22" } ) - - CPanel:AddControl( "PropSelect", { Label = "#tool.wheel.model", - ConVar = "wheel_model", - Category = "Wheels", - Height = 4, - Models = list.Get( "WheelModels" ) } ) - - CPanel:AddControl( "Slider", { Label = "#tool.wheel.torque", - Type = "Float", - Min = 10, - Max = 10000, - Command = "wheel_torque" } ) - - - CPanel:AddControl( "Slider", { Label = "#tool.wheel.forcelimit", - Type = "Float", - Min = 0, - Max = 50000, - Command = "wheel_forcelimit" } ) - - CPanel:AddControl( "Slider", { Label = "#tool.wheel.friction", - Type = "Float", - Min = 0, - Max = 100, - Command = "wheel_friction" } ) - - CPanel:AddControl( "CheckBox", { Label = "#tool.wheel.nocollide", - Command = "wheel_nocollide" } ) - - CPanel:AddControl( "CheckBox", { Label = "#tool.wheel.toggle", - Description = "#WheelTool_toggle_desc", - Command = "wheel_toggle" } ) - -end - -list.Set( "WheelModels", "models/props_junk/sawblade001a.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_vehicles/carparts_wheel01a.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 90} ) -list.Set( "WheelModels", "models/props_vehicles/apc_tire001.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_vehicles/tire001a_tractor.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_vehicles/tire001b_truck.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_vehicles/tire001c_car.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_wasteland/controlroom_filecabinet002a.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_borealis/bluebarrel001.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_c17/oildrum001.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_c17/playground_carousel01.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_c17/chair_office01a.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_c17/TrapPropeller_Blade.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_wasteland/wheel01.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 90} ) -list.Set( "WheelModels", "models/props_trainstation/trainstation_clock001.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_junk/metal_paintcan001a.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_c17/pulleywheels_large01.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) - -list.Set( "WheelModels", "models/props_phx/oildrum001_explosive.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/breakable_tire.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gibs/tire1_gib.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/normal_tire.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/mechanics/medgear.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/mechanics/biggear.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/bevel9.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/bevel90_24.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/bevel12.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/bevel24.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/bevel36.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/spur9.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/spur12.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/spur24.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/gears/spur36.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/smallwheel.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/747wheel.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/trucktire.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/trucktire2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/metal_wheel1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/metal_wheel2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/wooden_wheel1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/wooden_wheel2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/construct/metal_plate_curve360.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/construct/metal_plate_curve360x2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/construct/wood/wood_curve360x1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/construct/wood/wood_curve360x2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/construct/windows/window_curve360x1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/construct/windows/window_curve360x2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/trains/wheel_medium.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/trains/medium_wheel_2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/trains/double_wheels.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/trains/double_wheels2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/drugster_back.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/drugster_front.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/monster_truck.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/misc/propeller2x_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/misc/propeller3x_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/misc/paddle_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/misc/paddle_small2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/magnetic_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/magnetic_small_base.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/magnetic_medium.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/magnetic_med_base.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/magnetic_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/magnetic_large_base.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/props_phx/wheels/moped_tire.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) - ---Tile Model Pack Wheels - -list.Set( "WheelModels", "models/hunter/misc/cone1x05.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/hunter/tubes/circle2x2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/hunter/tubes/circle4x4.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) - ---Primitive Mechanics - -list.Set( "WheelModels", "models/mechanics/wheels/bmw.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/bmwl.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/rim_1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/tractor.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/wheel_2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/wheel_2l.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/wheel_extruded_48.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/wheel_race.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/mechanics/wheels/wheel_smooth2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x12.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x12_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x12_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x24.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x24_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x24_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x6.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x6_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear12x6_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x12.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x12_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x12_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x24.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x24_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x24_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x6.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x6_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear16x6_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x12.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x12_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x12_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x24.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x24_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x24_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x6.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x6_large.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears/gear24x6_small.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_12t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_18t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_24t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_36t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_48t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_60t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_12t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_18t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_24t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_36t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_48t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_60t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_12t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_18t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_24t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_36t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_48t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/gear_60t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/bevel_12t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/bevel_18t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/bevel_24t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/bevel_36t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/bevel_48t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/bevel_60t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/vert_12t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/vert_18t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/vert_24t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/vert_36t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_20t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_40t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_80t1.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_20t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_40t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_80t2.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_20t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_40t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) -list.Set( "WheelModels", "models/Mechanics/gears2/pinion_80t3.mdl", { wheel_rx = 90, wheel_ry = 0, wheel_rz = 0 } ) - ---XQM Model Pack Wheels - -list.Set( "WheelModels", "models/NatesWheel/nateswheel.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/NatesWheel/nateswheelwide.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/JetEnginePropeller.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/JetEnginePropellerMedium.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/JetEnginePropellerBig.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/JetEnginePropellerHuge.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/JetEnginePropellerLarge.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/HelicopterRotor.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/HelicopterRotorMedium.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/HelicopterRotorBig.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/HelicopterRotorHuge.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/HelicopterRotorLarge.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/Propeller1.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/Propeller1Medium.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/Propeller1Big.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/Propeller1Huge.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/Propeller1Large.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/AirPlaneWheel1.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/AirPlaneWheel1Medium.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/AirPlaneWheel1Big.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/AirPlaneWheel1Huge.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/XQM/AirPlaneWheel1Large.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) - ---Xeon133's Wheels - -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-20.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-30.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-40.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-50.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-60.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-70.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) -list.Set( "WheelModels", "models/xeon133/offroad/Off-road-80.mdl", { wheel_rx = 0, wheel_ry = 0, wheel_rz = 0} ) - diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/winch.lua b/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/winch.lua deleted file mode 100644 index e7c1aca14..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_tool/stools/winch.lua +++ /dev/null @@ -1,186 +0,0 @@ - -TOOL.Category = "Constraints" -TOOL.Name = "#tool.winch.name" - -TOOL.ClientConVar[ "rope_material" ] = "cable/rope" -TOOL.ClientConVar[ "rope_width" ] = "3" -TOOL.ClientConVar[ "fwd_speed" ] = "64" -TOOL.ClientConVar[ "bwd_speed" ] = "64" -TOOL.ClientConVar[ "fwd_group" ] = "44" -TOOL.ClientConVar[ "bwd_group" ] = "41" - -function TOOL:LeftClick( trace ) - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then return end - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( iNum + 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - if ( iNum > 0 ) then - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - -- Get client's CVars - local material = self:GetClientInfo( "rope_material" ) or "cable/rope" - local width = self:GetClientNumber( "rope_width" ) or 3 - local fwd_bind = self:GetClientNumber( "fwd_group" ) or 1 - local bwd_bind = self:GetClientNumber( "bwd_group" ) or 1 - local fwd_speed = self:GetClientNumber( "fwd_speed" ) or 64 - local bwd_speed = self:GetClientNumber( "bwd_speed" ) or 64 - local toggle = false - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - - local constraint,rope,controller = constraint.Winch( self:GetOwner(), Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, width, fwd_bind, bwd_bind, fwd_speed, bwd_speed, material, toggle ) - - undo.Create("Winch") - if constraint then undo.AddEntity( constraint ) end - if rope then undo.AddEntity( rope ) end - if controller then undo.AddEntity( controller ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - - if constraint then self:GetOwner():AddCleanup( "ropeconstraints", constraint ) end - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - if controller then self:GetOwner():AddCleanup( "ropeconstraints", controller ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - else - - self:SetStage( iNum+1 ) - - end - - return true - -end - -function TOOL:RightClick( trace ) - - -- If there's no physics object then we can't constraint it! - if ( SERVER && !util.IsValidPhysicsObject( trace.Entity, trace.PhysicsBone ) ) then return false end - - local iNum = self:NumObjects() - - local Phys = trace.Entity:GetPhysicsObjectNum( trace.PhysicsBone ) - self:SetObject( 1, trace.Entity, trace.HitPos, Phys, trace.PhysicsBone, trace.HitNormal ) - - local tr = {} - tr.start = trace.HitPos - tr.endpos = tr.start + (trace.HitNormal * 16384) - tr.filter = {} - tr.filter[1] = self:GetOwner() - if (trace.Entity:IsValid()) then - tr.filter[2] = trace.Entity - end - - local tr = util.TraceLine( tr ) - - if ( !tr.Hit ) then - self:ClearObjects() - return - end - - -- Don't try to constrain world to world - if ( trace.HitWorld && tr.HitWorld ) then - self:ClearObjects() - return - end - - if ( trace.Entity:IsValid() && trace.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - if ( tr.Entity:IsValid() && tr.Entity:IsPlayer() ) then - self:ClearObjects() - return - end - - local Phys2 = tr.Entity:GetPhysicsObjectNum( tr.PhysicsBone ) - self:SetObject( 2, tr.Entity, tr.HitPos, Phys2, tr.PhysicsBone, trace.HitNormal ) - - if ( CLIENT ) then - self:ClearObjects() - return true - end - - -- Get client's CVars - local material = self:GetClientInfo( "rope_material" ) or "cable/rope" - local width = self:GetClientNumber( "rope_width" ) or 3 - local fwd_bind = self:GetClientNumber( "fwd_group" ) or 1 - local bwd_bind = self:GetClientNumber( "bwd_group" ) or 1 - local fwd_speed = self:GetClientNumber( "fwd_speed" ) or 64 - local bwd_speed = self:GetClientNumber( "bwd_speed" ) or 64 - - -- Get information we're about to use - local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2) - local Bone1, Bone2 = self:GetBone(1), self:GetBone(2) - local LPos1, LPos2 = self:GetLocalPos(1),self:GetLocalPos(2) - - local constraint,rope,controller = constraint.Winch( self:GetOwner(), Ent1, Ent2, Bone1, Bone2, LPos1, LPos2, width, fwd_bind, bwd_bind, fwd_speed, bwd_speed, material ) - - undo.Create("Winch") - if constraint then undo.AddEntity( constraint ) end - if rope then undo.AddEntity( rope ) end - if controller then undo.AddEntity( controller ) end - undo.SetPlayer( self:GetOwner() ) - undo.Finish() - - if constraint then self:GetOwner():AddCleanup( "ropeconstraints", constraint ) end - if rope then self:GetOwner():AddCleanup( "ropeconstraints", rope ) end - if controller then self:GetOwner():AddCleanup( "ropeconstraints", controller ) end - - -- Clear the objects so we're ready to go again - self:ClearObjects() - - return true - -end - -function TOOL:Reload( trace ) - - if (!trace.Entity:IsValid() || trace.Entity:IsPlayer() ) then return false end - if ( CLIENT ) then return true end - - local bool = constraint.RemoveConstraints( trace.Entity, "Winch" ) - return bool - -end - - -function TOOL.BuildCPanel( CPanel ) - - CPanel:AddControl( "Header", { Description = "#tool.winch.help" } ) - - CPanel:AddControl( "ComboBox", - { - Label = "#tool.presets", - MenuButton = 1, - Folder = "winch", - Options = { Default = { winch_rope_width = '1', winch_fwd_speed='64', winch_bwd_speed='64', winch_rope_rigid='0', winch_rope_material='cable/cable' } }, - CVars = { "winch_rope_width", "winch_fwd_speed", "winch_bwd_speed", "winch_rope_rigid", "winch_rope_material" } - }) - - CPanel:AddControl( "Numpad", { Label = "#tool.winch.forward", Command = "winch_fwd_group", Label2 = "#tool.winch.backward", Command2 = "winch_bwd_group" } ) - - CPanel:AddControl( "Slider", { Label = "#tool.winch.fspeed", Type = "Float", Command = "winch_fwd_speed", Min = "0", Max = "1000", Help=true } ) - CPanel:AddControl( "Slider", { Label = "#tool.winch.bspeed", Type = "Float", Command = "winch_bwd_speed", Min = "0", Max = "1000", Help=true } ) - - CPanel:AddControl( "Slider", { Label = "#tool.winch.width", Type = "Float", Command = "winch_rope_width", Min = "0", Max = "10" } ) - CPanel:AddControl( "RopeMaterial", { Label = "#tool.winch.material", convar = "winch_rope_material" } ) - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_airblaster/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_airblaster/shared.lua deleted file mode 100644 index e0a6db173..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_airblaster/shared.lua +++ /dev/null @@ -1,381 +0,0 @@ -if SERVER then -AddCSLuaFile( "shared.lua" ) - -function SWEP:SetFlamethrowerEffect(i) - if self.LastEffect==i then return end - - umsg.Start("SetFlamethrowerEffect") - umsg.Entity(self) - umsg.Char(i) - umsg.End() - - self.LastEffect = i -end - -end - -if CLIENT then - -SWEP.PrintName = "Flamethrower" -SWEP.Slot = 0 - -function SWEP:SetFlamethrowerEffect(i) - if self.LastEffect==i then return end - - local effect - local t = GAMEMODE:EntityTeam(self.Owner) - - if i==1 then - effect = "flamethrower_blue" - elseif i>1 then - if t==2 then - effect = "flamethrower_crit_blue" - else - effect = "flamethrower_crit_red" - end - end - - if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then - local vm = self.Owner:GetViewModel() - if IsValid(self.CModel) then - vm = self.CModel - end - - vm:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) - end - else - self:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) - end - end - - self.LastEffect = i -end - -usermessage.Hook("SetFlamethrowerEffect", function(msg) - local w = msg:ReadEntity() - local i = msg:ReadChar() - if IsValid(w) and w.SetFlamethrowerEffect then - w:SetFlamethrowerEffect(i) - end -end) - - -end - -PrecacheParticleSystem("flamethrower_fire_1") -PrecacheParticleSystem("flamethrower_crit_red") -PrecacheParticleSystem("flamethrower_blue") -PrecacheParticleSystem("flamethrower_crit_blue") - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_flamethrower_pyro.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_flamethrower.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "pyro_blast" - -SWEP.ShootSound = Sound("Weapon_FlameThrower.FireStart") -SWEP.SpecialSound1 = Sound("Weapon_FlameThrower.FireLoop") -SWEP.ShootCritSound = Sound("Weapon_FlameThrower.FireLoopCrit") -SWEP.ShootSoundEnd = Sound("Weapon_FlameThrower.FireEnd") -SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") -SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") - -SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") -SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.04 - -SWEP.Secondary.Automatic = true -SWEP.Secondary.Delay = 0.5 -SWEP.AirblastRadius = 80 - -SWEP.BulletSpread = 0.06 - -SWEP.IsRapidFire = true -SWEP.ReloadSingle = false - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(3, 8, -5) - -function SWEP:CreateSounds() - self.SpinUpSound = CreateSound(self, self.ShootSound) - self.SpinDownSound = CreateSound(self, self.ShootSoundEnd) - self.FireSound = CreateSound(self, self.SpecialSound1) - self.FireCritSound = CreateSound(self, self.ShootCritSound) - self.PilotSound = CreateSound(self, self.PilotLoop) - - self.SoundsCreated = true -end - -function SWEP:PrimaryAttack() - if not self.IsDeployed then return false end - - if self:Ammo1()<=200 then - return - end - - local Delay = self.Delay or -1 - if Delay>=0 and CurTime()self.NextEndSpinUp then - self.SpinUpSound:Stop() - self.FireSound:Play() - self.NextEndSpinUp = nil - end - - if self:RollCritical() then - if not self.Critting or not self.Firing then - self.NextEndSpinUp = nil - self:SetFlamethrowerEffect(2) - self.FireSound:Stop() - self.FireCritSound:Play() - self.Firing = true - end - self.Critting = true - elseif not self.NextEndSpinUp then - if self.Critting or not self.Firing then - self:SetFlamethrowerEffect(1) - self.FireCritSound:Stop() - self.FireSound:Play() - self.Firing = true - end - self.Critting = false - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - -- Take one ammo every 2 projectiles fired - if not self.ParticleCounter then self.ParticleCounter = 1 end - self.ParticleCounter = self.ParticleCounter + 1 - if self.ParticleCounter>2 then - self.ParticleCounter = 1 - self:TakePrimaryAmmo(1) - end - - self:ShootProjectile() -end - -function SWEP:ShootProjectile() - if SERVER then - local flame = ents.Create("tf_flame") - local ang = self.Owner:EyeAngles() - local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() - - flame:SetPos(self:ProjectileShootPos()) - flame:SetAngles(vec:Angle()) - if self:Critical() then - flame.critical = true - end - if self.Force then - flame.Force = self.Force - end - flame:SetOwner(self.Owner) - self:InitProjectileAttributes(flame) - - flame:Spawn() - - flame:SetVelocity(self.Owner:GetVelocity()) - end -end - -function SWEP:SecondaryAttack() - if not self.IsDeployed then return false end - - if self.NoAirblast then return false end - - if self:Ammo1()<0 then - return - end - - local Delay = self.Delay or -1 - if Delay>=0 and CurTime()=self.NextDeployed then - self.IsDeployed = true - end - - if not self.SoundsCreated then - self:CreateSounds() - end - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - - if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then - self:StopFiring() - end -end - -function SWEP:Deploy() - if not self.SoundsCreated then - self:CreateSounds() - end - self.PilotSound:Play() - - MsgN(Format("Flamethrower Deploy %s",tostring(self))) - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - if SERVER then - self.SpinUpSound:Stop() - self.SpinDownSound:Stop() - self.FireSound:Stop() - self.FireCritSound:Stop() - self.PilotSound:Stop() - end - - self.Firing = false - self.Critting = false - self:SetFlamethrowerEffect(0) - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self:Holster() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_allclass/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_allclass/shared.lua deleted file mode 100644 index 3d058fbcd..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_allclass/shared.lua +++ /dev/null @@ -1,107 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "All Class" - SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shovel.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("Weapon_Shovel.Miss") -SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Shovel.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") - -local SpeedTable = { -{40, 1.6}, -{80, 1.4}, -{120, 1.2}, -{160, 1.1}, -} - -SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") -SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") - -SWEP.MinDamage = 0.5 -SWEP.MaxDamage = 1.75 - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.NoCModelOnStockWeapon = false - -SWEP.HoldType = "MELEE_ALLCLASS" - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -self.VM_DRAW = ACT_MELEE_ALLCLASS_VM_DRAW -self.VM_IDLE = ACT_MELEE_ALLCLASS_VM_IDLE -self.VM_HITCENTER = ACT_MELEE_ALLCLASS_VM_HITCENTER -self.VM_SWINGHARD = ACT_MELEE_ALLCLASS_VM_HITCENTER -self.VM_INSPECT_START = ACT_MELEE_ALLCLASS_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_MELEE_ALLCLASS_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_MELEE_ALLCLASS_VM_INSPECT_END -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if self.Owner:GetPlayerClass() == "scout" then - self.Primary.Delay = 0.5 - else - self.Primary.Delay = 0.80 - end - - if self.Owner:GetPlayerClass() == "engineer" then - self.NoHitSound = true - self.UpgradeSpeed = 25 - self.GlobalCustomHUD = {HudAccountPanel = true} - end -end - -function SWEP:OnMeleeHit(tr) - if self.Owner:GetPlayerClass() == "engineer" then - if tr.Entity and tr.Entity:IsValid() then - if tr.Entity:IsBuilding() then - local ent = tr.Entity - - if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then - if SERVER then - local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) - if m > 0 then - self:EmitSound(self.HitBuildingSuccess) - self.Owner:RemoveAmmo(m, TF_METAL) - umsg.Start("PlayerMetalBonus", self.Owner) - umsg.Short(-m) - umsg.End() - elseif ent:GetState() == 1 then - self:EmitSound(self.HitBuildingSuccess) - else - self:EmitSound(self.HitBuildingFailure) - end - end - else - //self:EmitSound(self.HitWorld) - end - elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then - //self:EmitSound(self.HitFlesh) - else - //self:EmitSound(self.HitWorld) - end - elseif tr.HitWorld then - //self:EmitSound(self.HitWorld) - end - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_ampgun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_ampgun/shared.lua deleted file mode 100644 index 3e53a4b06..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_ampgun/shared.lua +++ /dev/null @@ -1,461 +0,0 @@ -local function MedigunEffectName(i, t) - if i==1 then - if t==2 then - return "medicgun_beam_blue" - else - return "medicgun_beam_red" - end - elseif i>1 then - if t==2 then - return "medicgun_beam_blue_invun" - else - return "medicgun_beam_red_invun" - end - end -end - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - - self:DTVar("Entity", 0, "BeamEntity") - self:DTVar("Entity", 1, "TargetEntity") -end - -if SERVER then -AddCSLuaFile( "shared.lua" ) - -function SWEP:SetMedigunEffect(i, target) - if self.LastEffect==i then return end - - if IsValid(self.dt.BeamEntity) then - self.dt.BeamEntity:Remove() - self.dt.BeamEntity = NULL - end - if IsValid(self.InfoTarget) then - self.InfoTarget:Remove() - self.InfoTarget = NULL - end - - if i>0 and IsValid(target) then - local t = GAMEMODE:EntityTeam(self.Owner) - local effect = MedigunEffectName(i, t) - - local tar = ents.Create("info_dummy") - tar:SetPos(target:GetPos() + Vector(0,0,30)) - tar:Spawn() - tar:SetParent(target) - tar:SetName(tostring(tar)) - - self.InfoTarget = tar - - local beam = ents.Create("info_particle_system") - beam:SetPos(self:GetPos()) - beam:SetParent(self) - beam:SetKeyValue("effect_name",effect) - beam:SetKeyValue("cpoint1", tar:GetName()) - beam:SetKeyValue("start_active", "1") - beam:Spawn() - beam:Activate() - - self.dt.TargetEntity = target - self.dt.BeamEntity = beam - else - self.dt.TargetEntity = NULL - end - - self.LastEffect = i -end - -function SWEP:SetMedigunMuzzleEffect(i) - if self.LastEffect2==i then return end - - umsg.Start("SetMedigunMuzzleEffect") - umsg.Entity(self) - umsg.Char(i) - umsg.End() - - self.LastEffect2 = i -end - -end - -if CLIENT then - -SWEP.PrintName = "Ampgun" -SWEP.Slot = 1 -SWEP.CustomHUD = {HudMedicCharge = true} - ---[[ -function SWEP:SetMedigunEffect(p, t) - if IsValid(p) and IsValid(t) then - self.MedigunBeam = p - if self.Owner==LocalPlayer() then - HudHealingTargetID:SetTargetEntity(t) - HudHealingTargetID:SetVisible(true) - end - else - self.MedigunBeam = nil - if self.Owner==LocalPlayer() then - HudHealingTargetID:SetVisible(false) - end - end -end -]] - -function SWEP:SetMedigunMuzzleEffect(i) - if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then - return - end - - if self.LastEffect2==i then return end - - local effect - local t = GAMEMODE:EntityTeam(self.Owner) - - if i==1 then - if t==2 then - effect = "medicgun_invulnstatus_fullcharge_blue" - else - effect = "medicgun_invulnstatus_fullcharge_red" - end - end - - self.Owner:GetViewModel():StopParticles() - self:StopParticles() - - if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then - local vm = self.Owner:GetViewModel() - if IsValid(self.CModel) then - vm = self.CModel - end - - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) - end - else - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) - end - end - - self.LastEffect2 = i -end - -usermessage.Hook("SetMedigunMuzzleEffect", function(msg) - local w = msg:ReadEntity() - local i = msg:ReadChar() - - if IsValid(w) and w.SetMedigunMuzzleEffect then - w:SetMedigunMuzzleEffect(i) - end -end) - -function SWEP:ModelDrawn(view) - if IsValid(self.dt.BeamEntity) then - local wep, att - if view then - wep = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() - else - wep = self - end - att = wep:LookupAttachment("muzzle") - att = wep:GetAttachment(att) - if not att then return end - - self.dt.BeamEntity:SetPos(att.Pos) - self.dt.BeamEntity:SetAngles(att.Ang) - end -end - -end - -PrecacheParticleSystem("medicgun_beam_red") -PrecacheParticleSystem("medicgun_beam_red_invun") -PrecacheParticleSystem("medicgun_beam_blue") -PrecacheParticleSystem("medicgun_beam_blue_invun") -PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") -PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_medigun_medic.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_medigun.mdl" -SWEP.Crosshair = "tf_crosshair5" - -SWEP.MuzzleEffect = "pyro_blast" - -SWEP.ShootSound = Sound("WeaponMedigun.Healing") -SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") -SWEP.ChargedSound = Sound("WeaponMedigun.Charged") - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" - -SWEP.IsRapidFire = true -SWEP.ReloadSingle = false - -SWEP.HoldType = "SECONDARY" - -SWEP.ProjectileShootOffset = Vector(3, 8, -5) -SWEP.Range = 500 - -SWEP.MinHealRate = 24 -SWEP.MaxHealRate = 72 -SWEP.MinLastDamageTime = 10 -SWEP.MaxLastDamageTime = 15 - -SWEP.UberchargeRate = 2.5 - -function SWEP:CreateSounds() - self.ShootSoundLoop = CreateSound(self, self.ShootSound) - self.ChargedLoop = CreateSound(self, self.ChargedSound) - self.SoundsCreated = true -end - -function SWEP:SetHealTarget(e) - self.Target = e - if SERVER then - self:SetMedigunEffect(1, e) - if IsValid(e) then - GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) - end - end -end - -function SWEP:ClearHealTarget() - local e = self.Target - self.Target = nil - if SERVER then - self:SetMedigunEffect(0) - if IsValid(e) then - GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) - end - end -end - -local function medigun_trace_condition(tr, wep) - return - IsValid(tr.Entity) and - tr.Entity:IsTFPlayer() and - tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and - tr.Entity:Health()>0 and - not tr.Entity:HasNPCFlag(NPC_CANNOTHEAL) -end - -function SWEP:PrimaryAttack() - if not self.Firing then - local start = self.Owner:GetShootPos() - local endpos = start + self.Owner:GetAimVector() * self.Range - local tr = tf_util.MixedTrace({ - start = start, - endpos = endpos, - filter = self.Owner, - mins = Vector(-5, -5, -5), - maxs = Vector(5, 5, 5), - }, medigun_trace_condition, self) - - self.CanInspect = false - - if medigun_trace_condition(tr, self) then - self.Firing = true - self:SetHealTarget(tr.Entity) - - self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) - self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_PREFIRE) - self.ShootSoundLoop:Play() - self.NextIdle = nil - self.NextIdle2 = CurTime() + self:SequenceDuration() - elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then - self:EmitSound(self.ShootSound2) - self.NextDeniedSound = CurTime() + 0.5 - end - end - - self:StopTimers() -end - -function SWEP:Reload() -end - -function SWEP:StopFiring() - if IsValid(self.Target) and not self.Target:IsPlayer() and self.Target:Alive() then - self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") - end - - self.Firing = false - self:ClearHealTarget() - - self.CanInspect = true - - self.ShootSoundLoop:Stop() - self:SendWeaponAnim(ACT_MP_ATTACK_STAND_POSTFIRE) - self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) - self.NextIdle = CurTime() + self:SequenceDuration() -end - -function SWEP:Think() - self:TFViewModelFOV() - - if CLIENT then - if self.Owner==LocalPlayer() then - if self.dt.TargetEntity ~= self.LastTargetEntity then - if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then - HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) - HudHealingTargetID:SetVisible(true) - else - HudHealingTargetID:SetVisible(false) - end - self.LastTargetEntity = self.dt.TargetEntity - end - end - end - - if not self.SoundsCreated then - self:CreateSounds() - end - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.IsDeployed = true - self.NextIdle = nil - self.NextIdle2 = nil - end - - if self.NextIdle2 and CurTime()>=self.NextIdle2 then - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.NextIdle = nil - self.NextIdle2 = nil - end - - if self.Firing and SERVER then - if not self.Owner:KeyDown(IN_ATTACK) or not IsValid(self.Target) or self.Target:Health()<=0 then - self:StopFiring() - return - elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then - self.NextRangeCheck = CurTime() + 0.2 - if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then - self:StopFiring() - return - end - end - - if IsValid(self.Target) then - local maxhealth = self.Target:GetMaxHealth() - local maxoverheal = self.Target:GetMaxOverheal() - - if self.OverhealMultiplier then - maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) - end - - if not self.NextHeal or CurTime()>self.NextHeal then - if self.NextHeal then - local err = (CurTime() - self.NextHeal) / self.LastHealRate - self.HealErrorCumul = (self.HealErrorCumul or 0) + err - - local add = math.floor(self.HealErrorCumul) - self.HealErrorCumul = self.HealErrorCumul - add - - --[[if self.Target:Health()self.NextCharge then - if self.NextCharge then - local err = (CurTime() - self.NextCharge) / self.LastChargeRate - self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err - - local add = math.floor(self.ChargeErrorCumul) - self.ChargeErrorCumul = self.ChargeErrorCumul - add - - local ch = self.Owner:GetNWInt("Ubercharge") - if ch<100 then - ch = math.Clamp(ch + 1 + add, 0, 100) - self.Owner:SetNWInt("Ubercharge", ch) - if ch>=100 then - self.Owner:Speak("TLK_PLAYER_CHARGEREADY") - self.ChargedLoop:Play() - self:SetMedigunMuzzleEffect(1) - end - end - end - - local rate = self.UberchargeRate - if self.Target:Health()>maxhealth then - rate = rate * 0.5 - end - - if self.UberchargeRateMultiplier then - rate = rate * self.UberchargeRateMultiplier - end - - self.LastChargeRate = rate - self.NextCharge = CurTime() + 1 / rate - end - end - end - - self:Inspect() -end - -function SWEP:Deploy() - if not self.SoundsCreated then - self:CreateSounds() - end - - if self.Owner:GetNWInt("Ubercharge")>=100 then - self.ChargedLoop:Play() - if SERVER then - self:SetMedigunMuzzleEffect(1) - end - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - if self.ShootSoundLoop and self.ChargedLoop then - self.ShootSoundLoop:Stop() - self.ChargedLoop:Stop() - end - - self.Firing = false - - if SERVER then - self:ClearHealTarget() - self:SetMedigunMuzzleEffect(0) - else - if self.Owner == LocalPlayer() then - HudHealingTargetID:SetVisible(false) - self.LastTargetEntity = nil - end - end - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self:Holster() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/cl_init.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/cl_init.lua deleted file mode 100644 index 2020cc0bf..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/cl_init.lua +++ /dev/null @@ -1,425 +0,0 @@ -include('shared.lua') - - -SWEP.PrintName = "Scripted Weapon" - -SWEP.Slot = 0 -SWEP.SlotPos = 10 -SWEP.DrawAmmo = true -SWEP.DrawCrosshair = true -SWEP.DrawWeaponInfoBox = false -SWEP.BounceWeaponIcon = false -SWEP.WepSelectIcon = surface.GetTextureID( "weapons/swep" ) -SWEP.SwayScale = 0 -- 0.5 -SWEP.BobScale = 0.5 - -SWEP.RenderGroup = RENDERGROUP_OPAQUE - ---[[ -hook.Add("HUDPaint", "testlol", function() - draw.Text{text="Current sequence = "..LocalPlayer():GetViewModel():GetSequence(),pos={10, 10}} - draw.Text{text="Cycle = "..LocalPlayer():GetViewModel():GetCycle(),pos={10, 40}} -end)]] - -hook.Add("Think", "TFCheckWeaponChanged", function() - for _,v in pairs(player.GetAll()) do - if v:GetActiveWeapon() ~= v.LastActiveWeapon then - if IsValid(v.LastActiveWeapon) and v.LastActiveWeapon.ClearParticles then - v.LastActiveWeapon:ClearParticles() - end - - --MsgFN("Old weapon : %s", tostring(v.LastActiveWeapon)) - if IsValid(v.LastActiveWeapon) and v.LastActiveWeapon.NextDeployed and v.LastActiveWeapon.Holster then - v.LastActiveWeapon:Holster() - end - v.LastActiveWeapon = v:GetActiveWeapon() - if IsValid(v.LastActiveWeapon) and not v.LastActiveWeapon.NextDeployed and v.LastActiveWeapon.Deploy then - v.LastActiveWeapon:Deploy() - end - --MsgFN("New weapon : %s", tostring(v.LastActiveWeapon)) - - if IsValid(v.LastActiveWeapon) and v.LastActiveWeapon.ResetParticles then - v.LastActiveWeapon:ResetParticles() - end - end - end -end) - -function SWEP:InitializeCModel() - if not self.HasCModel then return end - --Msg("InitializeCModel\n") - local vm = self.Owner:GetViewModel() - - local wmodel = self.WorldModelOverride or self.WorldModel - - if IsValid(self.CModel) then - self.CModel:SetModel(wmodel) - elseif IsValid (vm) then - self.CModel = ClientsideModel(wmodel) - if not IsValid(self.CModel) then return end - - self.CModel:SetPos(vm:GetPos()) - self.CModel:SetAngles(vm:GetAngles()) - self.CModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) - self.CModel:SetParent(vm) - self.CModel:SetNoDraw(true) - end - - if IsValid(self.CModel) then - self.CModel.Player = self.Owner - self.CModel.Weapon = self - - if self.MaterialOverride then - self.CModel:SetMaterial(self.MaterialOverride) - end - end -end - -function SWEP:InitializeWModel2() - if not self.WorldModelOverride then return end ---Msg("InitializeWModel2\n") - local wmodel = self.WorldModelOverride2 or self.WorldModelOverride or self.WorldModel - - if IsValid(self.WModel2) then - self.WModel2:SetModel(wmodel) - else - self.WModel2 = ClientsideModel(wmodel) - if not IsValid(self.WModel2) then return end - - self.WModel2:SetPos(self.Owner:GetPos()) - self.WModel2:SetAngles(self.Owner:GetAngles()) - self.WModel2:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) - self.WModel2:SetParent(self.Owner) - self.WModel2:SetNoDraw(true) - self.WModel2:SetColor(Color(255, 255, 255)) - - if wmodel == "models/weapons/w_models/w_shotgun.mdl" then - self.WModel2:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") - end - end - - if IsValid(self.WModel2) then - self.WModel2.Player = self.Owner - self.WModel2.Weapon = self - - if self.MaterialOverride then - self.WModel2:SetMaterial(self.MaterialOverride) - end - end -end - -function SWEP:InitializeAttachedModels() ---Msg("InitializeAttachedModels\n") - if IsValid(self.AttachedWModel) then - if self.AttachedWorldModel then - self.AttachedWModel:SetModel(self.AttachedWorldModel) - else - self.AttachedWModel:Remove() - end - elseif self.AttachedWorldModel then - local ent = (IsValid(self.WModel2) and self.WModel2) or self - - self.AttachedWModel = ClientsideModel(self.AttachedWorldModel) - self.AttachedWModel:SetPos(ent:GetPos()) - self.AttachedWModel:SetAngles(ent:GetAngles()) - self.AttachedWModel:AddEffects(EF_BONEMERGE) - self.AttachedWModel:SetParent(ent) - self.AttachedWModel:SetNoDraw(true) - end - - if IsValid(self.AttachedWModel) then - self.AttachedWModel.Player = self.Owner - self.AttachedWModel.Weapon = self - - if self.MaterialOverride then - self.AttachedWModel:SetMaterial(self.MaterialOverride) - end - end - - if IsValid(self.AttachedVModel) then - if self.AttachedViewModel then - self.AttachedVModel:SetModel(self.AttachedViewModel) - else - self.AttachedVModel:Remove() - end - elseif self.AttachedViewModel then - local ent = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() - - if not IsValid(ent) then return end - - self.AttachedVModel = ClientsideModel(self.AttachedViewModel) - self.AttachedVModel:SetPos(ent:GetPos()) - self.AttachedVModel:SetAngles(ent:GetAngles()) - self.AttachedVModel:AddEffects(EF_BONEMERGE) - self.AttachedVModel:SetParent(ent) - self.AttachedVModel:SetNoDraw(true) - end - - if IsValid(self.AttachedVModel) then - self.AttachedVModel.Player = self.Owner - self.AttachedVModel.Weapon = self - - if self.MaterialOverride then - self.AttachedVModel:SetMaterial(self.MaterialOverride) - end - end -end - --- Attached viewmodels seem to lose their parent when the player exits a vehicle, we'll force ViewModelDrawn to re-parent them to the player's viewmodel if the player has entered a vehicle -local LastVehicle = NULL -hook.Add("Think", "TFCheckPlayerInVehicle", function() - local v = LocalPlayer():GetVehicle() - - if v ~= LastVehicle then - if IsValid(v) then - for _,w in pairs(LocalPlayer():GetWeapons()) do - w.FixViewModel = true - end - end - LastVehicle = v - end -end) - -function SWEP:RenderCModel() - if IsValid(self.CModel) then - self.CModel:DrawModel() - end - - if IsValid(self.AttachedVModel) then - self.AttachedVModel:DrawModel() - end -end - -function SWEP:RenderWModel() - if IsValid(self.WModel2) then - --self.WModel2:CreateShadow() - self.WModel2:DrawModel() - end - - if IsValid(self.AttachedWModel) then - --self.AttachedWModel:CreateShadow() - self.AttachedWModel:DrawModel() - end -end - -function SWEP:DrawWeaponSelection(x, y, w, h, alpha) - surface.SetDrawColor(255, 255, 255, alpha) - local tex = self:GetIconTextureID() or nil - if tex == nil then - draw.SimpleText(self.PrintName, "TFHudSelectionText", x + w / 2, y + h * 0.4, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER) - return - end - surface.SetTexture(tex) - local rx, ry = surface.GetTextureSize(tex) - - -- Borders - y = y - 10 - x = x + 50 - wide = wide - 20 - - -- Draw that mother - surface.DrawTexturedRect( x, y, wide * 0.6 , ( wide / 1.2 ) ) - - -- Draw weapon info box - self:PrintWeaponInfo( x + wide + 20, y + tall * 0.95, alpha ) -end - -function SWEP:ViewModelDrawn() - - //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat(),2) - local vm = self.Owner:GetViewModel() - vm.Player = self.Owner - - if not self.IsDeployed then - local seq = vm:GetSequence() - if vm:GetSequenceActivity(seq) == self.VM_DRAW then - self.DeploySequence = seq - end - - if self.Owner.TempAttributes and self.Owner.TempAttributes.DeployTimeMultiplier then - vm:SetPlaybackRate(1 / self.Owner.TempAttributes.DeployTimeMultiplier) - else - vm:SetPlaybackRate(1) - end - else - if self.DeploySequence ~= true and vm:GetSequence() ~= self.DeploySequence then - vm:SetPlaybackRate(1) - self.DeploySequence = true - end - end - - if self.FixViewModel then - if IsValid(self.CModel) then - self.CModel:SetParent(vm) - end - self.FixViewModel = false - end - - if self.ViewModelOverride --[[and self:GetModel()~=self.ViewModelOverride]] then - self.ViewModel = self.ViewModelOverride - self:SetModel(self.ViewModelOverride) - vm:SetModel(self.ViewModelOverride) - end - - if self.HasCModel and not IsValid(self.CModel) then - return - end - - self.DrawingViewModel = true - if IsValid(self.CModel) then - self.CModel:SetSkin(self.WeaponSkin or 0) - self.CModel:SetMaterial(self.WeaponMaterial or 0) - end - if IsValid(self.AttachedVModel) then - self.AttachedVModel:SetSkin(self.WeaponSkin or 0) - //self.AttachedVModel:SetMaterial(self.WeaponMaterial or 0) - end - self.Owner:GetViewModel():SetSkin(self.WeaponSkin or 0) - self.Owner:GetViewModel():SetMaterial(self.WeaponMaterial or 0) - - if self.ViewModelFlip then - render.CullMode(MATERIAL_CULLMODE_CW) - end - self:StartVisualOverrides() - - self:RenderCModel() - - self:EndVisualOverrides() - if self.ViewModelFlip then - render.CullMode(MATERIAL_CULLMODE_CCW) - end - - self:ModelDrawn(true) -end - -function SWEP:DrawWorldModel(from_postplayerdraw) - --self:CheckUpdateItem() - --self:SetNoDraw(true) - - -- this function is now called from PostPlayerDraw, don't do anything if it isn't - if IsValid(self.WModel2) and not from_postplayerdraw then - return - end - - if not gamemode.Call("ShouldDrawWorldModel", self.Owner) then - return - end - - self:StartVisualOverrides() - - self.DrawingViewModel = false - --if self.WorldModel and self.WorldModel~="" then - if IsValid(self.WModel2) then - self.WModel2:SetSkin(self.WeaponSkin or 0) - self.WModel2:SetMaterial(self.WeaponMaterial or 0) - end - if IsValid(self.AttachedWModel) then - self.AttachedWModel:SetSkin(self.WeaponSkin or 0) - self.AttachedWModel:SetMaterial(self.WeaponMaterial or 0) - end - --self:SetSkin(self.WeaponSkin or 0) - - self:RenderWModel() - --end - - --[[ - for _,v in pairs(self.Owner:GetWeapons()) do - if v~=self and v.PermanentWorldModel then - v:DrawWorldModel(from_postplayerdraw) - end - end - ]] - - self:EndVisualOverrides() - --render.SetBlend(0) -- Rendering the world model also re-renders the player - - self:ModelDrawn(false) -end - --- Instead of using using DrawWorldModel to render the world model, do it here (at least it guarantees that it will be always drawn if the player is visible) --- any potential problem with this? -hook.Add("PostPlayerDraw", "ForceDrawTFWorldModel", function(pl) - if pl.RenderingWorldModel then - render.SetBlend(1) - return - end - - if IsValid(pl:GetActiveWeapon()) and IsValid(pl:GetActiveWeapon().WModel2) then - pl.RenderingWorldModel = true - pl:GetActiveWeapon():DrawWorldModel(true) - pl.RenderingWorldModel = false - end -end) - --- Drawing the world model seems to redraw the player as well, this is quite annoying when a material is forced on the world model --- as the player will be redrawn using that material as well --- Just make players invisible if their world model is being rendered -hook.Add("PrePlayerDraw", "TFWorldModelHidePlayer", function(pl) - if pl.RenderingWorldModel then - render.SetBlend(0) - end -end) - -function SWEP:ModelDrawn(viewmode) - -end - -function SWEP:DoMuzzleFlash() - local betaeffect = self.BetaMuzzle - local ent - - if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then - ent = self:GetViewModelEntity() - else - ent = self:GetWorldModelEntity() - end - - self:ResetParticles() - - if betaeffect then - local effectdata = EffectData() - effectdata:SetEntity(self) - util.Effect(betaeffect, effectdata) - else - ParticleEffectAttach(self.MuzzleEffect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) - end -end - -function SWEP:Draw() - self:DrawModel() -end - -usermessage.Hook("DoMuzzleFlash", function(msg) - local w = msg:ReadEntity() - if IsValid(w) and w.DoMuzzleFlash then - w:DoMuzzleFlash() - end -end) - -usermessage.Hook("CallTFWeaponFunction", function(msg) - local w = msg:ReadEntity() - local f = msg:ReadString() - local p = msg:ReadString() - - if IsValid(w) and w[f] then - w[f](w, p) - end -end) - -usermessage.Hook("PlayTFWeaponWorldReload", function(msg) - local w = msg:ReadEntity() - - if IsValid(w) and w.ReloadSound and (w.Owner ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer()) then - w:EmitSound(w.ReloadSound) - end -end) - -hook.Add("EntityRemoved", "TFWeaponRemoved", function(ent) - if ent.IsTFWeapon then - if IsValid(ent.CModel) then ent.CModel:Remove() end - if IsValid(ent.WModel2) then ent.WModel2:Remove() end - if IsValid(ent.AttachedVModel) then ent.AttachedVModel:Remove() end - if IsValid(ent.AttachedWModel) then ent.AttachedWModel:Remove() end - end -end) - diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/init.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/init.lua deleted file mode 100644 index 5e76bd58f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/init.lua +++ /dev/null @@ -1,199 +0,0 @@ - -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -AddCSLuaFile("shd_util.lua") -AddCSLuaFile("shd_anim.lua") -AddCSLuaFile("shd_sound.lua") -AddCSLuaFile("shd_crits.lua") - -include("shared.lua") - -SWEP.Weight = 5 -SWEP.AutoSwitchTo = false -SWEP.AutoSwitchFrom = false -SWEP.HoldType = "IDLE" - ---CreateConVar("tf_weapon_deploy_speed", "0.17", {FCVAR_NOTIFY, FCVAR_SERVER_CAN_EXECUTE}, "The deploy speed of everybody's weapons on the server.") - -hook.Add("PlayerAuthed", "TF_SendAllWeaponData", function(pl, steamid, uniqueid) - for _,v in pairs(ents.GetAll()) do - if v.SendExtraAttributes then - v:SendExtraAttributes(pl) - end - end -end) - -function SWEP:CallOnOwnerClient(func, param) - if not self.Owner or not self.Owner:IsValid() then return end - - umsg.Start("CallTFWeaponFunction", self.Owner) - umsg.Entity(self) - umsg.String(func) - umsg.String(param or "") - umsg.End() -end - -function SWEP:CallOnClients(func, param, rp) - umsg.Start("CallTFWeaponFunction", rp) - umsg.Entity(self) - umsg.String(func) - umsg.String(param or "") - umsg.End() -end - --- obsolete -function SWEP:GetTextureDecal(trace) - local texture - if trace.MatType == 77 then - texture = "decals/metal/shot" .. math.random(1,5) - sound.Play( "physics/metal/metal_solid_impact_bullet" .. math.random(1,4) .. ".wav", trace.HitPos ) - elseif trace.MatType == 89 then - texture = "decals/glass/shot" .. math.random(1,5) - sound.Play( "physics/glass/glass_impact_bullet" .. math.random(1,4) .. ".wav", trace.HitPos ) - elseif trace.MatType == 87 then - texture = "decals/wood/shot" .. math.random(1,5) - sound.Play( "physics/wood/wood_solid_impact_bullet" .. math.random(1,5) .. ".wav", trace.HitPos ) - elseif trace.MatType == 67 then - texture = "decals/concrete/tf_shot" .. math.random(1,5) - elseif trace.MatType == 68 then - texture = "decals/dirtshot" .. math.random(1,4) - else - texture = "decals/concrete/shot" .. math.random(1,4) - end - local decal = ents.Create( "infodecal" ) - decal:SetPos(trace.HitPos) - decal:SetKeyValue("texture", texture) - decal:Spawn() - decal:Activate() -end - -function SWEP:CalculateAmmoGiven() - if self.Owner.AmmoMax and self.Owner.AmmoMax[self.Primary.Ammo] then - return self:Ammo1() / self.Owner.AmmoMax[self.Primary.Ammo] - else - return 0.5 - end -end - -function SWEP:OnDrop() - local mdl - if self.WorldModelOverride2 then - mdl = self.WorldModelOverride2 - else - mdl = (self:GetItemData().model_world or self:GetItemData().model_player) or self.WorldModel - end - - timer.Remove("AutoReload") - - local drop = ents.Create("item_droppedweapon") - drop:SetSolid(SOLID_VPHYSICS) - drop:SetModel(mdl) - drop:PhysicsInit(SOLID_VPHYSICS) - drop:Spawn() - drop.AmmoPercent = self.AmmoGiven or 100 - drop:Activate() - - if mdl == "models/weapons/w_models/w_shotgun.mdl" then - drop:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") - end - - if self.CustomMaterialOverride then - drop:SetMaterial(self.CustomMaterialOverride) - end - - if self.CustomColorOverride then - drop:SetColor(self.CustomColorOverride) - end - - drop:SetSkin(self.WeaponSkin or 0) - drop:SetMaterial(self.WeaponMaterial or 0) - - drop:SetPos(self:GetPos()) - drop:SetAngles(self:GetAngles()) - - drop:SetMoveType(MOVETYPE_VPHYSICS) - drop:SetCollisionGroup(COLLISION_GROUP_WORLD) - - local phys = drop:GetPhysicsObject() - if phys:IsValid() then - phys:SetMass(10) - phys:Wake() - if self.DropVelocity then - phys:SetVelocity(self.DropVelocity) - end - end - - timer.Stop("AutoReload") - - self:Remove() -end - -function SWEP:DropAsAmmo() - self.AmmoGiven = self:CalculateAmmoGiven() * 100 - self.DropVelocity = self.Owner:GetVelocity() - self.Owner:DropWeapon(self) -end - ---[[ -function SWEP:DropAsAmmo() - local mdl - if self.WorldModelOverride2 then - mdl = self.WorldModelOverride2 - else - mdl = (self:GetItemData().model_world or self:GetItemData().model_player) or self.WorldModel - end - - local drop = ents.Create("item_droppedweapon") - drop:SetSolid(SOLID_VPHYSICS) - drop:SetModel(mdl) - drop:PhysicsInit(SOLID_VPHYSICS) - drop:Spawn() - drop.AmmoGiven = self:CalculateAmmoGiven() * 100 - drop:Activate() - - if mdl == "models/weapons/w_models/w_shotgun.mdl" then - drop:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") - end - drop:SetSkin((self.Owner:Team() == TEAM_BLU and 1) or 0) - - local mat = drop:GetBoneMatrix(0) - local invrot - - if mat then - invrot = mat:GetAngles():GetInverse() - end - - local bonename = drop:GetBoneName(0) - mat = self.Owner:GetBoneMatrix(self.Owner:LookupBone(bonename)) - if mat then - local pos = mat:GetTranslation() - mat:SetTranslation(vector_origin) - - mat:Rotate(invrot) - - local ang = mat:GetAngles() - ang.y = ang.y + self.Owner:EyeAngles().y - - mat = Matrix() - mat:Rotate(Angle(0, self.Owner:EyeAngles().y, 0)) - mat:Translate(pos-self.Owner:GetPos()) - - drop:SetPos(self.Owner:GetPos() + mat:GetTranslation()) - drop:SetAngles(ang) - else - drop:SetPos(self:GetPos() + 40 * vector_up) - drop:SetAngles(self:GetAngles()) - end - - drop:SetMoveType(MOVETYPE_VPHYSICS) - drop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) - - local phys = drop:GetPhysicsObject() - if phys:IsValid() then - phys:SetMass(10) - phys:Wake() - phys:SetVelocity(self.Owner:GetVelocity()) - end -end -]] - diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shared.lua deleted file mode 100644 index 8fca01040..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shared.lua +++ /dev/null @@ -1,749 +0,0 @@ --- Not for use with Sandbox gamemode, so we don't care about this -SWEP.Author = "" -SWEP.Contact = "" -SWEP.Purpose = "" -SWEP.Instructions = "" - -SWEP.Spawnable = false -SWEP.AdminSpawnable = false - -if SERVER then - CreateConVar( "tf_caninspect", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Whether or not players can inspect weapons." ) -end - --- Viewmodel FOV should be constant, don't change this -SWEP.ViewModelFOV = GetConVar( "viewmodel_fov" ) --- Ugly hack for the viewmodel resetting on draw -if GetConVar("tf_use_viewmodel_fov") then - if GetConVar("tf_use_viewmodel_fov"):GetInt() >= 0 then - SWEP.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() - else - SWEP.ViewModelFOV = GetConVar( "viewmodel_fov" ) - end -end - -SWEP.ViewModelFlip = false ---eugh, another ugly hack. -if GetConVar("tf_righthand") then - if GetConVar("tf_righthand"):GetInt() == 0 then - SWEP.ViewModelFlip = true - else - SWEP.ViewModelFlip = false - end -end - - -function SWEP:TFViewModelFOV() - if GetConVar("tf_use_viewmodel_fov"):GetInt() > 0 then - self.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() - else - self.ViewModelFOV = GetConVar( "viewmodel_fov" ) - end -end - -function SWEP:TFFlipViewmodel() - if GetConVar("tf_righthand"):GetInt() > 0 then - self.ViewModelFlip = false - else - self.ViewModelFlip = true - end -end --- View/World model -SWEP.ViewModel = "models/weapons/v_pistol.mdl" -SWEP.WorldModel = "models/weapons/w_357.mdl" - -SWEP.IsTFWeapon = true - -SWEP.HasTeamColouredVModel = true -SWEP.HasTeamColouredWModel = true - -SWEP.Primary.ClipSize = 8 -SWEP.Primary.DefaultClip = 0 -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0 -SWEP.Primary.QuickDelay = -1 -SWEP.Primary.NoFiringScene = false - -SWEP.Secondary.Automatic = true -SWEP.Secondary.Ammo = "none" -SWEP.Secondary.Delay = 0.1 -SWEP.Secondary.QuickDelay = -1 -SWEP.Secondary.NoFiringScene = false - -SWEP.m_WeaponDeploySpeed = 1.4 -SWEP.DeployDuration = 0.8 - -SWEP.ReloadType = 0 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.00 - -SWEP.BaseDamage = 0 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.2 -SWEP.MaxDamageFalloff = 0.5 -SWEP.DamageModifier = 1 - -SWEP.IsRapidFire = false -SWEP.CriticalChance = 2 -SWEP.CritSpreadDuration = 2 -SWEP.CritDamageMultiplier = 3 - -SWEP.HasSecondaryFire = false - -SWEP.ProjectileShootOffset = Vector(0,0,0) - -SWEP.CanInspect = true - -SWEP.LastClass = "scout" - -CreateClientConVar("viewmodel_fov_tf", "54", true, false) -CreateClientConVar("tf_use_viewmodel_fov", "1", true, false) -CreateClientConVar("tf_righthand", "1", true, true) -CreateClientConVar("tf_sprintinspect", "1", true, true) -CreateClientConVar("tf_reloadinspect", "1", true, true) -CreateClientConVar("tf_use_min_viewmodels", "0", true, false) - --- Initialize the weapon as a TF item -tf_item.InitializeAsBaseItem(SWEP) - -include("shd_util.lua") -include("shd_anim.lua") -include("shd_sound.lua") -include("shd_crits.lua") - -function SWEP:StopTimers() - timer.Stop("StartInspection") - timer.Stop("EndInspection") - timer.Stop("PostInspection") - inspecting = false - inspecting_post = false -end - -function SWEP:ProjectileShootPos() - local pos, ang = self.Owner:GetShootPos(), self.Owner:EyeAngles() - if self then - if self.Owner:GetInfoNum("tf_righthand", 1) == 0 then - return pos + - self.ProjectileShootOffset.x * ang:Forward() - - self.ProjectileShootOffset.y * ang:Right() + - self.ProjectileShootOffset.z * ang:Up() - else return pos + - self.ProjectileShootOffset.x * ang:Forward() + - self.ProjectileShootOffset.y * ang:Right() + - self.ProjectileShootOffset.z * ang:Up() - end - end -end - -function SWEP:Precache() - if self.MuzzleEffect then - PrecacheParticleSystem(self.MuzzleEffect) - end - - if self.TracerEffect then - PrecacheParticleSystem(self.TracerEffect.."_red") - PrecacheParticleSystem(self.TracerEffect.."_blue") - PrecacheParticleSystem(self.TracerEffect.."_red_crit") - PrecacheParticleSystem(self.TracerEffect.."_blue_crit") - end -end - -function SWEP:PreCalculateDamage(ent) - -end - -function SWEP:PostCalculateDamage(dmg, ent) - return dmg -end - -function SWEP:CalculateDamage(hitpos, ent) - return self:PostCalculateDamage(tf_util.CalculateDamage(self, hitpos), ent) -end - -function SWEP:Equip() - self.CurrentOwner = self.Owner - --- if not inspectMessage and self.Owner:IsPlayer() then - -- self.Owner:ChatPrint("Press 'SHIFT' to Inspect!") - -- inspectMessage = true - -- timer.Simple(30, function() inspectMessage = false end) --- end - - self:StopTimers() - - if SERVER then - --MsgN(Format("Equip %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) - - --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then - self:SetItemIndex(self.Owner.WeaponItemIndex) - end]] - --MsgFN("Equip %s", tostring(self)) - - if self.DeployedBeforeEquip then - -- FIXED since gmod update 104, this does not seem to be called anymore - - -- Call the Deploy function again if the weapon is deployed before it has an owner attributed - -- This happens when a player is given a weapon right after the ammo for that weapon has been stripped - self:Deploy() - self.DeployedBeforeEquip = nil - --MsgN("Deployed before equip!") - elseif _G.TFWeaponItemIndex then - self:SetItemIndex(_G.TFWeaponItemIndex) - end - - -- quickfix for deploy animations since gmod update 104 - self.NextReplayDeployAnim = CurTime() + 0.1 - end -end - -function SWEP:Deploy() - --MsgFN("Deploy %s", tostring(self)) - self:StopTimers() - self.DeployPlayed = nil - if self:GetItemData().hide_bodygroups_deployed_only then - local visuals = self:GetVisuals() - local owner = self.Owner - - if visuals.hide_player_bodygroup_names then - for _,group in ipairs(visuals.hide_player_bodygroup_names) do - local b = PlayerNamedBodygroups[owner:GetPlayerClass()] - if b and b[group] then - owner:SetBodygroup(b[group], 1) - end - - b = PlayerNamedViewmodelBodygroups[owner:GetPlayerClass()] - if b and b[group] then - if IsValid(owner:GetViewModel()) then - owner:GetViewModel():SetBodygroup(b[group], 1) - end - end - end - end - end - - for k,v in pairs(self:GetVisuals()) do - if k=="hide_player_bodygroup" then - self.Owner:SetBodygroup(v,1) - end - end - if GetConVar("tf_righthand") then - if GetConVar("tf_righthand"):GetInt() == 0 then - self.ViewModelFlip = true - else - self.ViewModelFlip = false - end - end - - if GetConVar("tf_use_viewmodel_fov"):GetInt() > 0 then - self.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() - else - self.ViewModelFOV = GetConVar( "viewmodel_fov" ) - end - - if SERVER then - --MsgN(Format("Deploy %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) - - --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then - self:SetItemIndex(self.Owner.WeaponItemIndex) - end]] - - if not IsValid(self.Owner) then - --MsgFN("Deployed before equip %s",tostring(self)) - self.DeployedBeforeEquip = true - self.NextReplayDeployAnim = nil - --self:SendWeaponAnim(ACT_INVALID) - return true - end - - if _G.TFWeaponItemIndex then - self:SetItemIndex(_G.TFWeaponItemIndex) - end - self:CheckUpdateItem() - - self.Owner.weaponmode = string.lower(self.HoldType) - - if self.HasTeamColouredWModel then - if GAMEMODE:EntityTeam(self.Owner)==TEAM_BLU then - self:SetSkin(1) - else - self:SetSkin(0) - end - else - self:SetSkin(0) - end - - self.Owner:ResetClassSpeed() - end - - if CLIENT and not self.DoneFirstDeploy then - self.RestartClientsideDeployAnim = true - self.DoneFirstDeploy = true - end - - --MsgFN("SendWeaponAnim %s %d", tostring(self), self.VM_DRAW) - self:SendWeaponAnim(self.VM_DRAW) - - local draw_duration = self:SequenceDuration() - local deploy_duration = self.DeployDuration - - if self.Owner.TempAttributes and self.Owner.TempAttributes.DeployTimeMultiplier then - draw_duration = draw_duration * self.Owner.TempAttributes.DeployTimeMultiplier - deploy_duration = deploy_duration * self.Owner.TempAttributes.DeployTimeMultiplier - end - - self.NextIdle = CurTime() + draw_duration - self.NextDeployed = CurTime() + deploy_duration - - if CLIENT and self.DeploySound and not self.DeployPlayed then - self:EmitSound(self.DeploySound) - self.DeployPlayed = true - end - - --self.IsDeployed = false - self:RollCritical() - - if self.Owner.ForgetLastWeapon then - self.Owner.ForgetLastWeapon = nil - return false - end - - return true -end - -function SWEP:InspectAnimCheck() - -end - -function SWEP:ResetInspect() - -end - -function SWEP:Inspect() - self:InspectAnimCheck() - - if (self:GetOwner():GetMoveType()==MOVETYPE_NOCLIP) and GetConVar("tf_haltinspect"):GetBool() and self.CanInspect == true then - //self.CanInspect = false - //self:StopTimers() - return false - --[[else - if self.Owner:OnGround() and self.IsDeployed and self.Reloading == false then - self.CanInspect = true - end]] - end - - //if self:GetSequenceActivity(self:GetSequence()) == self.VM_INSPECT_IDLE then - - if self.IsDeployed and self.CanInspect then - local inspectionconvar2 = GetConVar("tf_caninspect") - local inspectionconvar = inspectionconvar2:GetBool() - if IsValid(self.Owner) then - if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and inspectionconvar and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then - inspecting = true - self:SendWeaponAnim( self.VM_INSPECT_START ) - timer.Create("StartInspection", self:SequenceDuration(), 1,function() - if self:GetOwner():KeyDown( IN_SPEED ) then - self:SendWeaponAnim( self.VM_INSPECT_IDLE ) - inspecting_idle = true - else - self:SendWeaponAnim( self.VM_INSPECT_END ) - inspecting_post = false - inspecting = false - timer.Create("PostInspection", self:SequenceDuration(), 1, function() - if !self:GetOwner():KeyDown( IN_SPEED ) then - self:SendWeaponAnim( self.VM_IDLE ) - end - end ) - end - end ) - end - - if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true ) then - self:SendWeaponAnim( self.VM_INSPECT_END ) - inspecting_post = false - inspecting_idle = false - inspecting = false - timer.Create("PostInspection", self:SequenceDuration(), 1, function() - if !self:GetOwner():KeyDown( IN_SPEED ) then - self:SendWeaponAnim( self.VM_IDLE ) - end - end ) - end - end - end -end - -function SWEP:CalcViewModelView(vm, oldpos, oldang, newpos, newang) - if not self.VMMinOffset and self:GetItemData() then - local data = self:GetItemData() - if data.static_attrs and data.static_attrs.min_viewmodel_offset then - self.VMMinOffset = Vector(data.static_attrs.min_viewmodel_offset) - end - end - - if GetConVar("tf_use_min_viewmodels"):GetBool() then -- TODO: Check for inspecting - newpos = newpos + (newang:Forward() * self.VMMinOffset.x) - newpos = newpos + (newang:Right() * self.VMMinOffset.y) - newpos = newpos + (newang:Up() * self.VMMinOffset.z) - end - - return newpos, newang -end - ---[[function SWEP:Inspect() - self:InspectAnimCheck() - - if (self:GetOwner():GetMoveType()==MOVETYPE_NOCLIP) and inspecting == true and GetConVar("tf_haltinspect"):GetBool() or (self:GetOwner():GetMoveType()==MOVETYPE_NOCLIP) and inspecting_post == true and GetConVar("tf_haltinspect"):GetBool() then - self:SendWeaponAnim( self.VM_IDLE ) - self:StopTimers() - return false - end - - if ( self:GetOwner():GetNWString("inspect") == "inspecting_start" and inspecting == false and GetConVar("tf_caninspect"):GetBool() ) then - inspecting = true - self:SendWeaponAnim( self.VM_INSPECT_START ) - timer.Create("StartInspection", self:SequenceDuration(), 1, function()self:SendWeaponAnim( self.VM_INSPECT_IDLE ) end ) - end - - if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() ) then - inspecting_post = true - timer.Create("EndInspection", self:SequenceDuration(), 1, function()self:SendWeaponAnim( self.VM_INSPECT_END ) - timer.Create("PostInspection", self:SequenceDuration(), 1, function() - self:SendWeaponAnim( self.VM_IDLE ) - inspecting_post = false - inspecting = false - end ) - end) - end -end]] - -function SWEP:Holster() - self:StopTimers() - if IsValid(self.Owner) then - if self:GetItemData().hide_bodygroups_deployed_only then - local visuals = self:GetVisuals() - local owner = self.Owner - - if visuals.hide_player_bodygroup_names then - for _,group in ipairs(visuals.hide_player_bodygroup_names) do - local b = PlayerNamedBodygroups[owner:GetPlayerClass()] - if b and b[group] then - owner:SetBodygroup(b[group], 0) - end - - b = PlayerNamedViewmodelBodygroups[owner:GetPlayerClass()] - if b and b[group] then - if IsValid(owner:GetViewModel()) then - owner:GetViewModel():SetBodygroup(b[group], 0) - end - end - end - end - end - - for k,v in pairs(self:GetVisuals()) do - if k=="hide_player_bodygroup" then - self.Owner:SetBodygroup(v,0) - end - end - end - - self.NextIdle = nil - self.NextReloadStart = nil - self.NextReload = nil - self.Reloading = nil - self.RequestedReload = nil - self.NextDeployed = nil - self.IsDeployed = nil - - if IsValid(self.Owner) then - self.Owner.LastWeapon = self:GetClass() - end - - return true -end - -function SWEP:OwnerChanged() - self:Holster() -end - -function SWEP:OnRemove() - self:StopTimers() - --self:Holster() -end - -function SWEP:CanPrimaryAttack() - if (self.Primary.ClipSize == -1 and self:Ammo1() > 0) or self:Clip1() > 0 then - return true - end - - return false -end - -function SWEP:CanSecondaryAttack() - if (self.Secondary.ClipSize == -1 and self:Ammo2() > 0) or self:Clip2() > 0 then - return true - end - - return false -end - -function SWEP:PrimaryAttack(noscene) - if not self.IsDeployed then return false end - //if self.Reloading then return false end - - self.NextDeployed = nil - - local Delay = self.Delay or -1 - local QuickDelay = self.QuickDelay or -1 - - if (not(self.Primary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK) and QuickDelay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK2)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK2) and QuickDelay>=0 and CurTime()= 0 and self:Ammo1() > 0 and not self:CanPrimaryAttack() then - --MsgFN("Deployed with empty clip, reloading") - self:Reload() - end - - - self:Reload() - end - end - end -end - -function SWEP:Reload() - self:StopTimers() - if CLIENT and _G.NOCLIENTRELOAD then return end - - if self.NextReloadStart or self.NextReload or self.Reloading then return end - - if self.RequestedReload then - if self.Delay and CurTime() < self.Delay then - return false - end - else - --MsgN("Requested reload!") - self.RequestedReload = true - return false - end - - self.CanInspect = false - - --MsgN("Reload!") - self.RequestedReload = false - - if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then - local available = self.Owner:GetAmmoCount(self.Primary.Ammo) - local ammo = self:Clip1() - - if ammo < self.Primary.ClipSize and available > 0 then - self.NextIdle = nil - if self.ReloadSingle then - --self:SendWeaponAnim(ACT_RELOAD_START) - self:SendWeaponAnimEx(self.VM_RELOAD_START) - self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start - self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) - else - self:SendWeaponAnimEx(self.VM_RELOAD) - self.Owner:SetAnimation(PLAYER_RELOAD) - self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) - self.NextReload = self.NextIdle - - self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) - self.Reloading = true - - if self.ReloadSound and SERVER then - umsg.Start("PlayTFWeaponWorldReload") - umsg.Entity(self) - umsg.End() - end - - --self.reload_cur_start = CurTime() - end - --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) - --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) - return true - end - end -end - -function SWEP:Think() - self:TFViewModelFOV() - self:TFFlipViewmodel() - //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat() - GetConVar("tf_weapon_deploy_speed"):GetInt(), 2) - //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat(),2) - - if SERVER and self.NextReplayDeployAnim then - if CurTime() > self.NextReplayDeployAnim then - --MsgFN("Replaying deploy animation %d", self.VM_DRAW) - timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) - self.NextReplayDeployAnim = nil - end - end - - if not game.SinglePlayer() or SERVER then - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - - if self.RequestedReload then - self:Reload() - end - end - - if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then - self.IsDeployed = true - self.CanInspect = true - self:CheckAutoReload() - end - - if self.IsDeployed then - self.CanInspect = true - end - - //print(deployspeed) - - if self.NextReload and CurTime()>=self.NextReload then - self:SetClip1(self:Clip1() + self.AmmoAdded) - - if not self.ReloadSingle and self.ReloadDiscardClip then - self.Owner:RemoveAmmo(self.Primary.ClipSize, self.Primary.Ammo, false) - else - self.Owner:RemoveAmmo(self.AmmoAdded, self.Primary.Ammo, false) - end - - self.Delay = -1 - self.QuickDelay = -1 - - if self:Clip1()>=self.Primary.ClipSize or self.Owner:GetAmmoCount(self.Primary.Ammo)==0 then - -- Stop reloading - self.Reloading = false - self.CanInspect = true - if self.ReloadSingle then - --self:SendWeaponAnim(ACT_RELOAD_FINISH) - self:SendWeaponAnim(self.VM_RELOAD_FINISH) - self.CanInspect = true - --self.Owner:SetAnimation(10001) -- reload finish - self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_END, true) - self.NextIdle = CurTime() + self:SequenceDuration() - else - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - self.NextReload = nil - else - self:SendWeaponAnim(self.VM_RELOAD) - --self.Owner:SetAnimation(10000) - self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP, true) - self.NextReload = CurTime() + (self.ReloadTime or self:SequenceDuration()) - - if self.ReloadSound and SERVER then - umsg.Start("PlayTFWeaponWorldReload") - umsg.Entity(self) - umsg.End() - end - - end - end - - if self.NextReloadStart and CurTime()>=self.NextReloadStart then - self:SendWeaponAnim(self.VM_RELOAD) - --self.Owner:SetAnimation(10000) -- reload loop - self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP, true) - self.NextReload = CurTime() + (self.ReloadTime or self:SequenceDuration()) - - self.AmmoAdded = 1 - - if self.ReloadSound and SERVER then - umsg.Start("PlayTFWeaponWorldReload") - umsg.Entity(self) - umsg.End() - end - - self.NextReloadStart = nil - end - - self:Inspect() -end - -function SWEP:Initialize() - self:SetWeaponHoldType(self.HoldType or "PRIMARY") -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_anim.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_anim.lua deleted file mode 100644 index ce1f6808a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_anim.lua +++ /dev/null @@ -1,242 +0,0 @@ - ---================================================================== --- FIRSTPERSON ANIMATIONS ---================================================================== - -SWEP.VM_DRAW = ACT_VM_DRAW -SWEP.VM_IDLE = ACT_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK -SWEP.VM_SECONDARYATTACK = ACT_VM_SECONDARYATTACK -SWEP.VM_RELOAD = ACT_VM_RELOAD -SWEP.VM_RELOAD_START = ACT_RELOAD_START -SWEP.VM_RELOAD_FINISH = ACT_RELOAD_FINISH - -local ActivityNameTranslate = { - ACT_VM_DRAW = "VM_DRAW", - ACT_VM_IDLE = "VM_IDLE", - ACT_VM_PRIMARYATTACK = "VM_PRIMARYATTACK", - ACT_VM_SECONDARYATTACK = "VM_SECONDARYATTACK", - ACT_VM_RELOAD = "VM_RELOAD", - ACT_RELOAD_START = "VM_RELOAD_START", - ACT_RELOAD_FINISH = "VM_RELOAD_FINISH", - ACT_VM_HITLEFT = "VM_HITLEFT", - ACT_VM_HITRIGHT = "VM_HITRIGHT", - ACT_VM_HITCENTER = "VM_HITCENTER", - ACT_VM_SWINGHARD = "VM_SWINGHARD", -} - -function SWEP:SetupCModelActivities(item, noreplace) - tf_util.ReadActivitiesFromModel(self) - - if item then - local hold = "PRIMARY" - if item.anim_slot then - hold = string.upper(item.anim_slot) - elseif item.item_slot then - hold = string.upper(item.item_slot) - end - --MsgN(Format("SetupCModelActivities %s", tostring(self))) - - self.VM_DRAW = _G["ACT_"..hold.."_VM_DRAW"] - self.VM_IDLE = _G["ACT_"..hold.."_VM_IDLE"] - self.VM_PRIMARYATTACK = _G["ACT_"..hold.."_VM_PRIMARYATTACK"] - self.VM_SECONDARYATTACK = _G["ACT_"..hold.."_VM_SECONDARYATTACK"] - self.VM_RELOAD = _G["ACT_"..hold.."_VM_RELOAD"] - self.VM_RELOAD_START = _G["ACT_"..hold.."_RELOAD_START"] - self.VM_RELOAD_FINISH = _G["ACT_"..hold.."_RELOAD_FINISH"] - - -- Special activities - self.VM_CHARGE = _G["ACT_"..hold.."_VM_CHARGE"] - self.VM_DRYFIRE = _G["ACT_"..hold.."_VM_DRYFIRE"] - self.VM_IDLE_2 = _G["ACT_"..hold.."_VM_IDLE_2"] - self.VM_CHARGE_IDLE_3 = _G["ACT_"..hold.."_VM_CHARGE_IDLE_3"] - self.VM_IDLE_3 = _G["ACT_"..hold.."_VM_IDLE_3"] - self.VM_PULLBACK = _G["ACT_"..hold.."_VM_PULLBACK"] - self.VM_PREFIRE = _G["ACT_"..hold.."_ATTACK_STAND_PREFIRE"] - self.VM_POSTFIRE = _G["ACT_"..hold.."_ATTACK_STAND_POSTFIRE"] - - self.VM_INSPECT_START = _G["ACT_"..hold.."_VM_INSPECT_START"] - self.VM_INSPECT_IDLE = _G["ACT_"..hold.."_VM_INSPECT_IDLE"] - self.VM_INSPECT_END = _G["ACT_"..hold.."_VM_INSPECT_END"] - - self.VM_HITLEFT = ACT_VM_HITLEFT - self.VM_HITRIGHT = ACT_VM_HITRIGHT - - -- those melee activities are just so weird, sometimes it's ACT_VM_HITCENTER, sometimes it's ACT_MELEE_VM_HITCENTER - if self:SelectWeightedSequence(ACT_VM_HITCENTER) < 0 then - self.VM_HITCENTER = _G["ACT_"..hold.."_VM_HITCENTER"] or ACT_VM_HITCENTER - self.VM_SWINGHARD = _G["ACT_"..hold.."_VM_SWINGHARD"] or ACT_VM_SWINGHARD - else - self.VM_HITCENTER = ACT_VM_HITCENTER - self.VM_SWINGHARD = ACT_VM_SWINGHARD - end - else - self.VM_DRAW = ACT_VM_DRAW - self.VM_IDLE = ACT_VM_IDLE - self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK - self.VM_SECONDARYATTACK = ACT_VM_SECONDARYATTACK - self.VM_RELOAD = ACT_VM_RELOAD - self.VM_RELOAD_START = ACT_RELOAD_START - self.VM_RELOAD_FINISH = ACT_RELOAD_FINISH - - self.VM_CHARGE = ACT_INVALID - self.VM_DRYFIRE = ACT_INVALID - self.VM_IDLE_2 = ACT_INVALID - self.VM_CHARGE_IDLE_3 = ACT_INVALID - self.VM_IDLE_3 = ACT_INVALID - self.VM_PULLBACK = ACT_VM_PULLBACK - self.VM_PREFIRE = ACT_MP_ATTACK_STAND_PREFIRE - self.VM_POSTFIRE = ACT_MP_ATTACK_STAND_POSTFIRE - - self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START - self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE - self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END - - self.VM_HITLEFT = ACT_VM_HITLEFT - self.VM_HITRIGHT = ACT_VM_HITRIGHT - self.VM_HITCENTER = ACT_VM_HITCENTER - self.VM_SWINGHARD = ACT_VM_SWINGHARD - end - - if self.UsesSpecialAnimations then - self.VM_DRAW = ACT_VM_DRAW_SPECIAL - self.VM_IDLE = ACT_VM_IDLE_SPECIAL - --self.VM_HITLEFT = ACT_VM_HITLEFT_SPECIAL - --self.VM_HITRIGHT = ACT_VM_HITRIGHT_SPECIAL - self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL - self.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL - end - - if not noreplace then - local visuals = self:GetVisuals() - if visuals and visuals.animations then - for act,rep in pairs(visuals.animations) do - if ActivityNameTranslate[act] then - self[ActivityNameTranslate[act]] = _G[rep] - end - end - end - end -end - -function SWEP:SendWeaponAnimEx(anim) - local t = type(anim) - - if t=="string" then - if string.find(anim,",") then - anim = string.Explode(",", anim) - t = "table" - end - end - - if t=="table" then - anim = table.Random(anim) - t = type(anim) - end - - if t=="number" then - self:SendWeaponAnim(anim) - elseif t=="string" then - print(anim) - local s = self.Owner:GetViewModel():LookupSequence(anim) - self:SetSequence(s) - self.Owner:GetViewModel():SetSequence(s) - end -end - ---================================================================== --- THIRDPERSON ANIMATIONS ---================================================================== - -function SWEP:SetWeaponHoldType(t) - local owner = (IsValid(self.Owner) and self.Owner) or _G.TFWeaponItemOwner - - if IsValid(owner) then - tf_util.ReadActivitiesFromModel(owner) - end - - local slot = self:GetItemData()["item_slot"] - - if isstring(slot) then - t = string.upper(slot) - end - - if not _G["ACT_MP_STAND_"..t] then - MsgN("SWEP:SetWeaponHoldType - Unknown TF2 weapon hold type '"..t.."'! Defaulting to PRIMARY") - t = "PRIMARY" - end - - self.ActivityTranslate = {} - self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_MP_STAND_"..t] - self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_MP_RUN_"..t] - self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_MP_CROUCH_"..t] - self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_MP_CROUCHWALK_"..t] - self.ActivityTranslate[ACT_MP_SWIM] = _G["ACT_MP_SWIM_"..t] - self.ActivityTranslate[ACT_MP_AIRWALK] = _G["ACT_MP_AIRWALK_"..t] - - if t == "PRIMARY" then - self.ActivityTranslate[ACT_MP_DEPLOYED_IDLE] = ACT_MP_DEPLOYED_IDLE - self.ActivityTranslate[ACT_MP_DEPLOYED] = ACT_MP_DEPLOYED_PRIMARY - self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED_IDLE] = ACT_MP_CROUCH_DEPLOYED_IDLE - self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED] = ACT_MP_CROUCHWALK_DEPLOYED - self.ActivityTranslate[ACT_MP_SWIM_DEPLOYED] = ACT_MP_SWIM_DEPLOYED_PRIMARY - else - self.ActivityTranslate[ACT_MP_DEPLOYED_IDLE] = _G["ACT_MP_DEPLOYED_IDLE_"..t] - self.ActivityTranslate[ACT_MP_DEPLOYED] = _G["ACT_MP_DEPLOYED_"..t] - self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED_IDLE] = _G["ACT_MP_CROUCH_DEPLOYED_IDLE_"..t] - self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED] = _G["ACT_MP_CROUCHWALK_DEPLOYED_"..t] - self.ActivityTranslate[ACT_MP_SWIM_DEPLOYED] = _G["ACT_MP_SWIM_DEPLOYED_"..t] - end - - self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MP_ATTACK_STAND_"..t] - self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MP_ATTACK_CROUCH_"..t] - self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARYFIRE] = _G["ACT_MP_ATTACK_SWIM_"..t] - - if _G["ACT_MP_ATTACK_STAND_HARD_"..t] then - self.ActivityTranslate[ACT_MP_ATTACK_STAND_SECONDARYFIRE] = _G["ACT_MP_ATTACK_STAND_HARD_"..t] - self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_SECONDARYFIRE] = _G["ACT_MP_ATTACK_CROUCH_HARD_"..t] - self.ActivityTranslate[ACT_MP_ATTACK_SWIM_SECONDARYFIRE] = _G["ACT_MP_ATTACK_SWIM_HARD_"..t] - else - self.ActivityTranslate[ACT_MP_ATTACK_STAND_SECONDARYFIRE] = _G["ACT_MP_ATTACK_STAND_"..t.."_SECONDARY"] - self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_SECONDARYFIRE] = _G["ACT_MP_ATTACK_CROUCH_"..t.."_SECONDARY"] - self.ActivityTranslate[ACT_MP_ATTACK_SWIM_SECONDARYFIRE] = _G["ACT_MP_ATTACK_SWIM_"..t.."_SECONDARY"] - end - - self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED] = _G["ACT_MP_ATTACK_STAND_"..t.."_DEPLOYED"] - self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED] = _G["ACT_MP_ATTACK_CROUCH_"..t.."_DEPLOYED"] - self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARY_DEPLOYED or 0]= _G["ACT_MP_ATTACK_SWIM_"..t.."_DEPLOYED"] - - self.ActivityTranslate[ACT_MP_ATTACK_STAND_PREFIRE] = ACT_MP_ATTACK_STAND_PREFIRE - self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PREFIRE] = ACT_MP_ATTACK_CROUCH_PREFIRE - self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PREFIRE] = ACT_MP_ATTACK_SWIM_PREFIRE - - self.ActivityTranslate[ACT_MP_ATTACK_STAND_POSTFIRE] = ACT_MP_ATTACK_STAND_POSTFIRE - self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_POSTFIRE] = ACT_MP_ATTACK_CROUCH_POSTFIRE - self.ActivityTranslate[ACT_MP_ATTACK_SWIM_POSTFIRE] = ACT_MP_ATTACK_SWIM_POSTFIRE - - self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_MP_RELOAD_STAND_"..t] - self.ActivityTranslate[ACT_MP_RELOAD_CROUCH] = _G["ACT_MP_RELOAD_CROUCH_"..t] - self.ActivityTranslate[ACT_MP_RELOAD_SWIM] = _G["ACT_MP_RELOAD_SWIM_"..t] - self.ActivityTranslate[ACT_MP_RELOAD_AIRWALK] = _G["ACT_MP_RELOAD_STAND_"..t] - - self.ActivityTranslate[ACT_MP_RELOAD_STAND_LOOP] = _G["ACT_MP_RELOAD_STAND_"..t.."_LOOP"] - self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_LOOP] = _G["ACT_MP_RELOAD_CROUCH_"..t.."_LOOP"] - self.ActivityTranslate[ACT_MP_RELOAD_SWIM_LOOP] = _G["ACT_MP_RELOAD_SWIM_"..t.."_LOOP"] - - self.ActivityTranslate[ACT_MP_RELOAD_STAND_END] = _G["ACT_MP_RELOAD_STAND_"..t.."_END"] - self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_END] = _G["ACT_MP_RELOAD_CROUCH_"..t.."_END"] - self.ActivityTranslate[ACT_MP_RELOAD_SWIM_END] = _G["ACT_MP_RELOAD_SWIM_"..t.."_END"] - - self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_MP_JUMP_START_"..t] - self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_MP_JUMP_FLOAT_"..t] - self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_MP_JUMP_LAND_"..t] - - self.ActivityTranslate[ACT_MP_GESTURE_VC_HANDMOUTH] = _G["ACT_MP_GESTURE_VC_HANDMOUTH_"..t] - self.ActivityTranslate[ACT_MP_GESTURE_VC_THUMBSUP] = _G["ACT_MP_GESTURE_VC_THUMBSUP_"..t] - self.ActivityTranslate[ACT_MP_GESTURE_VC_FINGERPOINT] = _G["ACT_MP_GESTURE_VC_FINGERPOINT_"..t] - self.ActivityTranslate[ACT_MP_GESTURE_VC_FISTPUMP] = _G["ACT_MP_GESTURE_VC_FISTPUMP_"..t] -end - -function SWEP:TranslateActivity(act) - return self.ActivityTranslate[act] or -1 -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat/shared.lua deleted file mode 100644 index 421e58a4a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat/shared.lua +++ /dev/null @@ -1,34 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Bat" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Bat.Miss") -SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Bat.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Bat.HitWorld") - -SWEP.BaseDamage = 35 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.5 - -SWEP.HoldType = "MELEE" diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat_fish/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat_fish/shared.lua deleted file mode 100644 index e1f28cb53..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat_fish/shared.lua +++ /dev/null @@ -1,61 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Bat" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("Weapon_Bat.Miss") -SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Bat.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Bat.HitWorld") - -SWEP.BaseDamage = 35 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.5 - -SWEP.HoldType = "MELEE" - -SWEP.Special_HumiliationCount = "#Humiliation_Count" -SWEP.Special_HumiliationKill = "#Humiliation_Kill" - -function SWEP:OnMeleeHit(tr) - if CLIENT then return end - - local ent = tr.Entity - if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end - - local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) - - umsg.Start("Notice_EntityHumiliationCounter") - umsg.String(GAMEMODE:EntityName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(InflictorClass) - - umsg.String(GAMEMODE:EntityName(self.Owner)) - umsg.Short(GAMEMODE:EntityTeam(self.Owner)) - umsg.Short(GAMEMODE:EntityID(self.Owner)) - - --[[ - umsg.String(GAMEMODE:EntityName(cooperator)) - umsg.Short(GAMEMODE:EntityTeam(cooperator)) - umsg.Short(GAMEMODE:EntityID(cooperator))]] - - umsg.Bool(self.CurrentShotIsCrit) - umsg.End() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bonesaw/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bonesaw/shared.lua deleted file mode 100644 index 061b86d26..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bonesaw/shared.lua +++ /dev/null @@ -1,62 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Bonesaw" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_bonesaw_medic.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_bonesaw.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Bonesaw.Miss") -SWEP.SwingCrit = Sound("Weapon_Bonesaw.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Bonesaw.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Bonesaw.HitWorld") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" - -if CLIENT then - -function SWEP:ViewModelDrawn() - if IsValid(self.CModel) then - self.CModel:SetPoseParameter("syringe_charge_level", self.Owner:GetNWInt("Ubercharge") * 0.01) - end - - self:CallBaseFunction("ViewModelDrawn") -end - -function SWEP:DrawWorldModel(from_postplayerdraw) - if IsValid(self.WModel2) then - self.WModel2:SetPoseParameter("syringe_charge_level", self.Owner:GetNWInt("Ubercharge") * 0.01) - end - - self:CallBaseFunction("DrawWorldModel", from_postplayerdraw) -end - -end - -function SWEP:MeleeHitSound(tr) - if self.CustomSound1 and tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then - self:EmitSound(self.CustomSound1) - else - self:BaseCall(tr) - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bottle/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bottle/shared.lua deleted file mode 100644 index 120c59b1f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bottle/shared.lua +++ /dev/null @@ -1,109 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Bottle" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_bottle_demoman.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_bottle.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Bottle.Miss") -SWEP.SwingCrit = Sound("Weapon_Bottle.MissCrit") - -SWEP.HitFlesh = Sound("Weapon_Bottle.IntactHitFlesh") -SWEP.HitWorld = Sound("Weapon_Bottle.IntactHitWorld") - -SWEP.BrokenHitFlesh = Sound("Weapon_Bottle.BrokenHitFlesh") -SWEP.BrokenHitWorld = Sound("Weapon_Bottle.BrokenHitWorld") - -SWEP.BreakSound = Sound("Weapon_Bottle.Break") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Bool", 0, "Broken") -end - -function SWEP:ViewModelDrawn() - if IsValid(self.CModel) then - if self.dt.Broken ~= self.VBrokenState then - self.CModel:SetBodygroup(0,(self.dt.Broken and 1) or 0) - - self.VBrokenState = self.dt.Broken - end - end - - self:CallBaseFunction("ViewModelDrawn") -end - -function SWEP:DrawWorldModel(from_postplayerdraw) - if IsValid(self.WModel2) then - if self.dt.Broken ~= self.BrokenState then - if self.dt.Broken then - MsgN("Breaking bottle worldmodel") - end - - self.WModel2:SetBodygroup(0,(self.dt.Broken and 1) or 0) - self.BrokenState = self.dt.Broken - end - end - - self:CallBaseFunction("DrawWorldModel", from_postplayerdraw) -end - -function SWEP:OnMeleeHit(trace) - if self:Critical() and not self.dt.Broken then - if SERVER then - self.dt.Broken = true - self.Owner:GetViewModel():SetBodygroup(1,1) - end - - self.HitFlesh = self.BrokenHitFlesh - self.HitWorld = self.BrokenHitWorld - self.Broken = true - - self:EmitSound(self.BreakSound) - end -end - -function SWEP:Deploy() - if SERVER and self.dt.Broken then - self.Owner:GetViewModel():SetBodygroup(1,1) - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - self:OnRemove() - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - if SERVER and self.dt.Broken then - if IsValid(self.Owner) and self.Owner:GetActiveWeapon()==self then - self.Owner:GetViewModel():SetBodygroup(1,0) - end - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_buff_item/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_buff_item/shared.lua deleted file mode 100644 index a14b0d62a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_buff_item/shared.lua +++ /dev/null @@ -1,79 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Pistol" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pistol_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_pistol.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = false -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pistol" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("weapons/pistol_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_pistol") - -SWEP.BaseDamage = 0 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.04 - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.DefaultClip = -1 -SWEP.Primary.Ammo = TF_METAL -SWEP.Primary.Delay = 0.225 - -SWEP.HoldType = "ITEM1" - -SWEP.IsRapidFire = true - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -self.VM_DRAW = ACT_ITEM1_VM_DRAW -self.VM_IDLE = ACT_ITEM1_VM_IDLE - -self.VM_INSPECT_START = ACT_ITEM1_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_ITEM1_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_ITEM1_VM_INSPECT_END -end - -function SWEP:CanPrimaryAttack() - return false -end - -function SWEP:PrimaryAttack() - self:StopTimers() - - if not self:CallBaseFunction("PrimaryAttack") then return false end - - return true -end - -function SWEP:Think() - self.BaseClass.Think(self) - - if self.Owner:KeyDown(IN_ATTACK) then - print("Fire!") - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_builder/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_builder/shared.lua deleted file mode 100644 index 432638e65..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_builder/shared.lua +++ /dev/null @@ -1,362 +0,0 @@ -if SERVER then - -AddCSLuaFile("shared.lua") - -CreateConVar("tf_unlimited_buildings", 0, {FCVAR_NOTIFY, FCVAR_SERVER_CAN_EXECUTE, FCVAR_ARCHIVE, FCVAR_CHEAT}) - -end - -if CLIENT then - -SWEP.GlobalCustomHUD = {HudBuildingStatus = true} - -end - -SWEP.Base = "tf_weapon_base" - -SWEP.ViewModel = "models/weapons/v_models/v_toolbox_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_toolbox.mdl" - -SWEP.HoldType = "BUILDING" - -SWEP.Primary.Delay = 0.1 -SWEP.Primary.Automatic = false -SWEP.Primary.Ammo = "none" - -SWEP.Secondary.Delay = 0.1 -SWEP.Secondary.Automatic = false -SWEP.HasSecondaryFire = true - -SWEP.DeployDuration = 0.1 - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Int", 1, "BuildGroup") - self:DTVar("Int", 2, "BuildMode") -end - -function SWEP:GetBuildGroup() - return self.dt.BuildGroup -end - -function SWEP:GetBuildMode() - return self.dt.BuildMode -end - -function SWEP:GetBuilding() - local group, mode = self.dt.BuildGroup, self.dt.BuildMode - if self then - if self.Owner then - if self.Owner.Buildings then - if self.Owner.Buildings[group] and self.Owner.Buildings[group][mode] then - return self.Owner.Buildings[group][mode] - end - end - end - end -end - -function SWEP:SetupBuilding(obj) - if obj.v_model and obj.w_model then - self.ViewModelOverride = obj.v_model - self.ViewModel = self.ViewModelOverride - self:SetModel(self.ViewModelOverride) - if IsValid(self.Owner:GetViewModel()) then - self.Owner:GetViewModel():SetModel(self.ViewModelOverride) - end - self.WorldModelOverride = obj.w_model - - if CLIENT then - self.WorldModelOverride2 = obj.w_model - - if IsValid(self.WModel2) then - if self.WModel2:GetModel() == self.WorldModelOverride then - return - else - self.WModel2:Remove() - self.WModel2 = nil - end - end - - self:InitializeWModel2() - - self.HasCModel = false - if IsValid(self.CModel) then - self.CModel:Remove() - end - end - - self:SetupCModelActivities(nil, true) - end -end - -function SWEP:CheckUpdateItem() - self:CallBaseFunction("CheckUpdateItem") - - if self.dt.BuildGroup ~= self.CurrentBuildGroup or self.dt.BuildMode ~= self.CurrentBuildMode then - local obj = tf_objects.Get(self.dt.BuildGroup, self.dt.BuildMode) - if obj then - self:SetupBuilding(obj) - end - self.CurrentBuildGroup = self.dt.BuildGroup - self.CurrentBuildMode = self.dt.BuildMode - end -end - -function SWEP:Equip() - if SERVER then - --print("Equip building", self.Owner) - --PrintTable(self.Owner.Buildings) - - local group, mode = self.dt.BuildGroup, self.dt.BuildMode - if not self.Owner.Buildings[group] or not self.Owner.Buildings[group][mode] then - --print("Not a valid building, changing current building mode") - for group=0,tf_objects.NumObjects()-1 do - if self.Owner.Buildings[group] then - self.dt.BuildGroup = group - self.dt.BuildMode = 0 - break - end - end - end - - --print("group",self.dt.BuildGroup,"mode",self.dt.BuildMode) - end - - return self:CallBaseFunction("Equip") -end - -function SWEP:CanPrimaryAttack() - return true -end - -function SWEP:CanSecondaryAttack() - return true -end - -function SWEP:PrimaryAttack() - - if SERVER then - if IsValid(self.Blueprint) then - local ammo = self.Owner:GetAmmoCount(TF_METAL) - if self:GetBuilding().cost > ammo then - return - end - - if self.Blueprint:Build() then - self.Owner.objtype = self:GetBuilding().objtype - self.Owner:Speak("TLK_BUILDING_OBJECT") - - self.Owner:RemoveAmmo(self:GetBuilding().cost, TF_METAL) - umsg.Start("PlayerMetalBonus", self.Owner) - umsg.Short(-self:GetBuilding().cost) - umsg.End() - - -- temp - self.Owner.ForgetLastWeapon = true - self.Owner:SelectWeapon(self.LastWeapon) - end - end - end - - return true -end - -function SWEP:SecondaryAttack() - if not self:CallBaseFunction("SecondaryAttack") then return false end - - if SERVER then - if IsValid(self.Blueprint) then - self.Blueprint:RotateBlueprint() - end - end - - return true -end - -function SWEP:Reload() -end - -if SERVER then - -function SWEP:SetBuilding(group, mode) - if self.Owner.Buildings[group] and self.Owner.Buildings[group][mode] then - local cost = self.Owner.Buildings[group][mode].cost - if self.Owner:GetAmmoCount(TF_METAL) < cost then - return false - end - - self.dt.BuildGroup = group - self.dt.BuildMode = mode - return true - end -end - -local old_group_translate = { - [0] = {0,0}, - [1] = {1,0}, - [2] = {1,1}, - [3] = {2,0}, - [4] = {3,0}, -} - -local builds = {} -builds[2] = "obj_sentrygun" -builds[0] = "obj_dispenser" -builds[1] = "obj_teleporter" - -concommand.Add("destroy", function(pl, cmd, args) - local group = tonumber(args[1]) - local sub = tonumber(args[2]) - - local builder = pl:GetWeapon("tf_weapon_builder") - - if not IsValid(builder) then return end - if not group then return end - - if not sub then - if not old_group_translate[group] then return end - - group, sub = unpack(old_group_translate[group]) - end - - if builds[group] then - local tab = ents.FindByClass(builds[group]) - for k, v in pairs(tab) do - if v.Player == pl and builds[group] ~= "obj_teleporter" then - v:Explode() - elseif v.Player == pl and builds[group] == "obj_teleporter" then - for i, o in pairs(tab) do - if (sub == 0 and v:IsEntrance() and o:IsEntrance()) or (sub == 1 and v:IsExit() and o:IsExit()) then - v:Explode() - end - end - end - end - end - - local current = pl:GetActiveWeapon() - if current.IsPDA then - local last = pl:GetWeapon(pl.LastWeapon) - if not IsValid(last) or last.IsPDA then - last = pl:GetWeapons()[1] - end - builder.LastWeapon = last:GetClass() - pl:SelectWeapon(last:GetClass()) - else - builder.LastWeapon = current:GetClass() - end -end) - -concommand.Add("build", function(pl, cmd, args) - local group = tonumber(args[1]) - local sub = tonumber(args[2]) - - local builder = pl:GetWeapon("tf_weapon_builder") - - if not IsValid(builder) then return end - if not group then return end - - if not sub then - if not old_group_translate[group] then return end - - group, sub = unpack(old_group_translate[group]) - end - - if builds[group] and (!GetConVar("tf_unlimited_buildings"):GetBool() or GetConVar("tf_competitive"):GetBool()) then - local tab = ents.FindByClass(builds[group]) - for k, v in pairs(tab) do - if v.Player == pl and builds[group] ~= "obj_teleporter" then - return - elseif v.Player == pl and builds[group] == "obj_teleporter" then - for i, o in pairs(tab) do - if (sub == 0 and v:IsEntrance() and o:IsEntrance()) or (sub == 1 and v:IsExit() and o:IsExit()) then - return - end - end - end - end - end - - local current = pl:GetActiveWeapon() - if builder:SetBuilding(group, sub) and current ~= builder then - if current.IsPDA then - local last = pl:GetWeapon(pl.LastWeapon) - if not IsValid(last) or last.IsPDA then - last = pl:GetWeapons()[1] - end - builder.LastWeapon = last:GetClass() - pl:SelectWeapon(last:GetClass()) - else - builder.LastWeapon = current:GetClass() - end - pl:SelectWeapon("tf_weapon_builder") - end -end) - -function SWEP:Deploy() - local result = self:CallBaseFunction("Deploy") - - if SERVER then - if IsValid(self.Blueprint) then - self.Blueprint:Remove() - end - self.Blueprint = ents.Create("tf_obj_blueprint") - self.Blueprint:SetOwner(self) - self.Blueprint:Spawn() - - if self:GetBuildGroup() == 2 and self.Owner.TempAttributes.BuildsMiniSentries then - self.Blueprint.dt.Scale = 0.75 - elseif self:GetBuildGroup() == 2 and self.Owner.TempAttributes.BuildsMegaSentries then - self.Blueprint.dt.Scale = 1.2 - end - end - - return result -end - -function SWEP:Holster() - if self:CallBaseFunction("Holster") == false then return false end - - if SERVER then - if IsValid(self.Blueprint) then - self.Blueprint:Remove() - end - end - - return true -end - -end - -if CLIENT then - -SWEP.PrintName = "Builder" -SWEP.Slot = 1 -SWEP.Crosshair = "tf_crosshair6" - -function SWEP:InitializeBuildings(buildings) - -- Change the slot of the weapon depending on which buildings are available - for _,group in pairs(buildings) do - for _,obj in pairs(group) do - self.Slot = obj.slot - self.Hidden = obj.hidden - end - end - - self.BuildingsInitialized = true - HudWeaponSelection:UpdateLoadout() -end - -hook.Add("Think", "TFBuilderInitialize", function() - for _,v in pairs(ents.FindByClass("tf_weapon_builder")) do - if not v.BuildingsInitialized and IsValid(v.Owner) and v.Owner:IsPlayer() then - if v.Owner.BuilderInit then - v:InitializeBuildings(v.Owner.BuilderInit) - v.Owner.BuilderInit = nil - end - end - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_capsulelauncher/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_capsulelauncher/shared.lua deleted file mode 100644 index 72f93a916..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_capsulelauncher/shared.lua +++ /dev/null @@ -1,87 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Capsule Launcher" -SWEP.HasCModel = true -SWEP.Slot = 0 - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - if IsValid(self.CModel) then - self.CModel:SetBodygroup(1, 1) - end -end - -function SWEP:InitializeWModel2() - self:CallBaseFunction("InitializeWModel2") - - --[[if IsValid(self.WModel2) then - self.WModel2:SetBodygroup(1, 1) - end]] -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_capsulelauncher/c_capsulelauncher.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "muzzle_grenadelauncher" - -SWEP.ShootSound = Sound("Weapon_GrenadeLauncher.Single") -SWEP.ShootCritSound = Sound("Weapon_GrenadeLauncher.SingleCrit") - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.6 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" - -SWEP.ProjectileShootOffset = Vector(0, 7, -6) -SWEP.Force = 1100 -SWEP.AddPitch = -4 - -SWEP.Properties = {} - -function SWEP:ShootProjectile() - if SERVER then - local grenade = ents.Create("tf_projectile_capsule") - grenade:SetPos(self:ProjectileShootPos()) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - - for k,v in pairs(self.Properties) do - grenade[k] = v - end - - grenade:SetOwner(self.Owner) - - self:InitProjectileAttributes(grenade) - - grenade.NameOverride = self:GetItemData().item_iconname - grenade:Spawn() - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - grenade:GetPhysicsObject():ApplyForceCenter(vel) - end - - self:ShootEffects() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_club/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_club/shared.lua deleted file mode 100644 index c771d498c..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_club/shared.lua +++ /dev/null @@ -1,37 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Kukri" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_machete_sniper.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_machete/c_machete.mdl" --"models/weapons/w_models/w_machete.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Machete.Miss") -SWEP.SwingCrit = Sound("Weapon_Machete.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Machete.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Machete.HitWorld") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - --- fixes having to wait for a long time before being able to swing it -SWEP.m_WeaponDeploySpeed = 2 - -SWEP.HoldType = "MELEE" diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_compound_bow/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_compound_bow/shared.lua deleted file mode 100644 index 5c5ffb55a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_compound_bow/shared.lua +++ /dev/null @@ -1,260 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - SWEP.HeadshotScore = 1 -end - -if CLIENT then - -SWEP.PrintName = "The Huntsman" -SWEP.HasCModel = true -SWEP.Slot = 0 - -function SWEP:InspectAnimCheck() -inspect_start = NONE -inspect_idle = NONE -inspect_end = NONE -inspect_post = NONE -end - -SWEP.CustomHUD = {HudBowCharge = true} - -function SWEP:ClientStartCharge() - self.ClientCharging = true - self.ClientChargeStart = CurTime() -end - -function SWEP:ClientEndCharge() - self.ClientCharging = false -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = Model("models/weapons/c_models/c_sniper_arms.mdl") -SWEP.WorldModel = Model("models/weapons/c_models/c_bow/c_bow.mdl") -SWEP.Crosshair = "tf_crosshair1" -SWEP.ViewModelFlip = false - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = Sound("Weapon_CompoundBow.Single") -SWEP.ShootCritSound = Sound("Weapon_CompoundBow.SingleCrit") -SWEP.PullSound = Sound("Weapon_CompoundBow.SinglePull") -SWEP.DeniedSound = Sound("Player.UseDeny") - -SWEP.Primary.ClipSize = 1 -SWEP.Primary.DefaultClip = 12 -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 1.94 - -SWEP.Secondary.Automatic = true - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = false - -SWEP.HoldType = "ITEM2" - -SWEP.ProjectileShootOffset = Vector(0, 6, -5) - -SWEP.Properties = {} - -function SWEP:Deploy() - if CLIENT then - HudBowCharge:SetProgress(0) - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:SendSequence(seq) - local s = self.Owner:GetViewModel():LookupSequence(seq) - self:SetSequence(s) - self.Owner:GetViewModel():SetSequence(s) -end - -function SWEP:PrimaryAttack() - if not self.IsDeployed then return false end - - -- Already charging - if self.Charging or self.NextIdle then return end - - if not self:CanPrimaryAttack() then - return - end - - -- Start charging - self.Charging = true - if SERVER then - self:CallOnClient("ClientStartCharge", "") - end - - self:SendWeaponAnim(self.VM_CHARGE) - --self:SendSequence("bw_charge") - --self.Owner:SetAnimation(PLAYER_PREFIRE) - self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) - - self.NextIdle2 = CurTime()+self:SequenceDuration() - self.ChargeStartTime = CurTime() - self:EmitSound(self.PullSound) - --[[ - self:Critical(1) - self:ShootProjectile() - - self:TakePrimaryAmmo(1)]] - - if SERVER then - self.Owner:SetClassSpeed(45 * (self.DeployMoveSpeedMultiplier or 1)) - self.Owner:SetCrouchedWalkSpeed(0.33) - self.Owner:SetJumpPower(0) - end -end - -function SWEP:SecondaryAttack() - if not self.IsDeployed then return false end - - if self.Charging and not self.NextIdle2 then - self.Charging = false - self:SendWeaponAnim(self.VM_DRYFIRE) - --self:SendSequence("bw_dryfire") - self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - self.NextIdle = CurTime()+self:SequenceDuration() - - if SERVER then - self:CallOnClient("ClientEndCharge", "") - self.Owner:ResetClassSpeed() - end - end -end - -function SWEP:ShootProjectile() - if SERVER then - local arrow = ents.Create("tf_projectile_arrow") - arrow:SetPos(self:ProjectileShootPos()) - - if CurTime()-self.ChargeStartTime>5 then - arrow:SetAngles(self.Owner:EyeAngles() + Angle(math.Rand(-15,15),math.Rand(-15,15),0)) - else - arrow:SetAngles(self.Owner:EyeAngles()) - end - - --[[ - if arrow:Critical() then - rocket.critical = true - end]] - - for k,v in pairs(self.Properties) do - arrow[k] = v - end - - arrow.Charge = math.Clamp((CurTime()-self.ChargeStartTime) / 1.25, 0, 1) - arrow.MinForce = self.MinForce - arrow.MaxForce = self.MaxForce - arrow.MinGravity = self.MinGravity - arrow.MaxGravity = self.MaxGravity - arrow:SetOwner(self.Owner) - self:InitProjectileAttributes(arrow) - - arrow.NameOverride = self:GetItemData().item_iconname - arrow:Spawn() - arrow:Activate() - end - - self:ShootEffects() -end - -function SWEP:Think() - self:TFViewModelFOV() - - if GetConVar("tf_righthand") then - if GetConVar("tf_righthand"):GetInt() == 1 then - self.ViewModelFlip = true - else - self.ViewModelFlip = false - end - end - - if SERVER and self.NextReplayDeployAnim then - if CurTime() > self.NextReplayDeployAnim then - --MsgFN("Replaying deploy animation %d", self.VM_DRAW) - timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) - self.NextReplayDeployAnim = nil - end - end - - if CLIENT then - if self.ClientCharging and self.ClientChargeStart then - HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / 1.25) - else - HudBowCharge:SetProgress(0) - end - end - - if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then - self.IsDeployed = true - self.CanInspect = true - self:CheckAutoReload() - end - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - self.NextIdle2 = nil - self.NextCharge3 = nil - self.NextIdle3 = nil - end - - if self.NextIdle2 and CurTime()>=self.NextIdle2 then - self:SendWeaponAnim(self.VM_IDLE_2) - --self:SendSequence("bw_idle2") - self.NextIdle2 = nil - self.NextCharge3 = CurTime()+5 - end - - if self.NextCharge3 and CurTime()>=self.NextCharge3 then - self:SendWeaponAnim(self.VM_CHARGE_IDLE_3) - --self:SendSequence("bw_shake") - self.NextCharge3 = nil - self.NextIdle3 = CurTime()+self:SequenceDuration() - end - - if self.NextIdle3 and CurTime()>=self.NextIdle3 then - self:SendWeaponAnim(self.VM_IDLE_3) - --self:SendSequence("bw_idle3") - self.NextIdle3 = nil - end - - if self.Charging and not self.Idle2 and not self.Owner:KeyDown(IN_ATTACK) and self.Owner:IsOnGround() then - self.Charging = false - if SERVER then - self:CallOnClient("ClientEndCharge", "") - end - self.NextIdle = nil - self.NextIdle2 = nil - self.NextCharge3 = nil - self.NextIdle3 = nil - self:ShootProjectile() - self:TakePrimaryAmmo(1) - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - self.NextIdle = CurTime()+self:SequenceDuration() - if self.Owner:GetAmmoCount(self.Primary.Ammo)>0 then - self.Reloading = true - self.AmmoAdded = 1 - self.NextReload = self.NextIdle-0.1 - end - - if SERVER then - self.Owner:ResetClassSpeed() - end - end - - if self.NextReload and CurTime()>=self.NextReload then - self:SetClip1(self:Clip1() + self.AmmoAdded) - self.Owner:RemoveAmmo(self.AmmoAdded, self.Primary.Ammo, false) - self.NextReload = nil - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_crossbow/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_crossbow/shared.lua deleted file mode 100644 index 33661ca4d..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_crossbow/shared.lua +++ /dev/null @@ -1,59 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - SWEP.HeadshotScore = 1 -end - -if CLIENT then - -SWEP.PrintName = "Syringe Gun" -SWEP.Slot = 0 - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_syringegun_medic.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_syringegun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = Sound("Weapon_CompoundBow.Single") -SWEP.ShootCritSound = Sound("Weapon_CompoundBow.SingleCrit") - -SWEP.Primary.ClipSize = 1 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.6 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = false - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(0, 8, -5) - -function SWEP:ShootProjectile() - if SERVER then - local syringe = ents.Create("tf_projectile_arrow") - local ang = self.Owner:EyeAngles() - local vec = ang:Forward() - - --local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() - - syringe:SetPos(self:ProjectileShootPos()) - syringe:SetAngles(vec:Angle()) - if self:Critical() then - syringe.critical = true - end - syringe:SetOwner(self.Owner) - --syringe:SetProjectileType(1) - - self:InitProjectileAttributes(syringe) - - syringe.NameOverride = self:GetItemData().item_iconname - syringe:Spawn() - end - - self:ShootEffects() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_engi_fist/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_engi_fist/shared.lua deleted file mode 100644 index 2f63b11fe..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_engi_fist/shared.lua +++ /dev/null @@ -1,147 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Engineer's Fist" - SWEP.Slot = 2 - SWEP.GlobalCustomHUD = {HudAccountPanel = true} -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_engineer_gunslinger.mdl" -SWEP.WorldModel = "" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.DropPrimaryWeaponInstead = true - -SWEP.Swing = Sound("Weapon_Gunslinger.Swing") -SWEP.SwingCrit = Sound("Weapon_Gunslinger.Swing") -SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Wrench.HitWorld") -SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") -SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 -SWEP.IsRoboArm = true - -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "ITEM2" - -SWEP.NoHitSound = true -SWEP.UpgradeSpeed = 25 -SWEP.HasThirdpersonCritAnimation = true - -SWEP.AltIdleAnimationProbability = 0.1 - -//function SWEP:SetupWModel - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Int", 1, "Combo") -end - -function SWEP:OnMeleeAttack(tr) - if SERVER then - local hit = false - - if IsValid(tr.Entity) and tr.Entity:IsTFPlayer() and !tr.Entity:IsBuilding() then - hit = true - end - - if hit then - self.HasHit = true - else - self.dt.Combo = 0 - end - end -end - -function SWEP:OnMeleeHit(tr) - if tr.Entity and tr.Entity:IsValid() then - if tr.Entity:IsBuilding() then - local ent = tr.Entity - - if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then - if SERVER then - local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) - if m > 0 then - self:EmitSound(self.HitBuildingSuccess) - self.Owner:RemoveAmmo(m, TF_METAL) - umsg.Start("PlayerMetalBonus", self.Owner) - umsg.Short(-m) - umsg.End() - elseif ent:GetState() == 1 then - self:EmitSound(self.HitBuildingSuccess) - else - self:EmitSound(self.HitBuildingFailure) - end - end - else - self:EmitSound(self.HitWorld) - end - elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then - self:EmitSound(self.HitFlesh) - else - self:EmitSound(self.HitWorld) - end - elseif tr.HitWorld then - self:EmitSound(self.HitWorld) - end - - if SERVER then - if self.HasHit then - self.dt.Combo = self.dt.Combo + 1 - self.HasHit = false - end - - if self.dt.Combo > 2 then - self.dt.Combo = 0 - end - end -end - -function SWEP:Critical(ent,dmginfo) - if self.dt.Combo >= 2 then - return true - end - - return self:CallBaseFunction("Critical", ent, dmginfo) -end - -function SWEP:PredictCriticalHit() - if self.dt.Combo >= 2 then - self.NameOverride = "robot_arm_combo_kill" - return true - else - self.NameOverride = nil - end -end - -function SWEP:Think() - --self.Owner:SetBodygroup( 2, 1 ) - --self.Owner:GetViewModel():SetBodygroup(1, 0) - - if not game.SinglePlayer() or SERVER then - if self.NextIdle and CurTime()>=self.NextIdle then - if self.PlayingIdle2Animation then - self.PlayingIdle2Animation = false - elseif math.Rand(0,1) <= self.AltIdleAnimationProbability and not self.PlayingIdle2Animation then - self:SendWeaponAnim(self.VM_IDLE_2) - self.NextIdle = CurTime() + self:SequenceDuration() - self.PlayingIdle2Animation = true - end - end - end - - if SERVER and not self.Owner:KeyDown(IN_ATTACK) then - self.dt.Combo = 0 - end - - self:CallBaseFunction("Think") -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fireaxe/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fireaxe/shared.lua deleted file mode 100644 index fce9af4b9..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fireaxe/shared.lua +++ /dev/null @@ -1,54 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Fire Axe" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_fireaxe_pyro.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_fireaxe.mdl" -SWEP.Crosshair = "tf_crosshair2" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_FireAxe.Miss") -SWEP.SwingCrit = Sound("Weapon_FireAxe.MissCrit") -SWEP.HitFlesh = Sound("Weapon_FireAxe.HitFlesh") -SWEP.HitWorld = Sound("Weapon_FireAxe.HitWorld") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" - -SWEP.DamageType = DMG_SLASH ---SWEP.CritDamageType = DMG_SLASH|DMG_CRUSH -SWEP.CritDamageType = DMG_SLASH, DMG_CRUSH - --- The following weapons should not cut zombies in half -local NoSlashDamage = { - [153] = true, -- Homewrecker - [214] = true, -- Powerjack - [326] = true, -- Back Scratcher -} - -function SWEP:InitAttributes(owner, attributes) - self:CallBaseFunction("InitAttributes", owner, attributes) - - if NoSlashDamage[self:ItemIndex()] then - self.DamageType = DMG_CLUB - self.CritDamageType = DMG_CLUB - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fists/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fists/shared.lua deleted file mode 100644 index 168d0e7d9..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fists/shared.lua +++ /dev/null @@ -1,56 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Fists" - SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_fist_heavy.mdl" -SWEP.WorldModel = "" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Fist.Miss") -SWEP.SwingCrit = Sound("Weapon_Fist.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Fist.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Fist.HitWorld") - -SWEP.CritEnabled = Sound("Weapon_BoxingGloves.CritEnabled") -SWEP.CritHit = Sound("Weapon_BoxingGloves.CritHit") - -SWEP.DropPrimaryWeaponInstead = true - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.Secondary.Automatic = true -SWEP.Secondary.Ammo = "none" -SWEP.Secondary.Delay = 0.8 - -SWEP.CritForceAddPitch = 45 - -SWEP.HoldType = "MELEE" -SWEP.HasThirdpersonCritAnimation = true -SWEP.HasSecondaryFire = true -SWEP.UsesLeftRightAnim = true - -function SWEP:OnCritBoostStarted() - self.Owner:EmitSound(self.CritEnabled) -end - -function SWEP:OnCritBoostAdded() - self.Owner:EmitSound(self.CritHit) -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flamethrower/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flamethrower/shared.lua deleted file mode 100644 index 6bf011a94..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flamethrower/shared.lua +++ /dev/null @@ -1,335 +0,0 @@ -if SERVER then -AddCSLuaFile( "shared.lua" ) -include("sv_airblast.lua") - -function SWEP:SetFlamethrowerEffect(i) - if self.LastEffect==i then return end - - umsg.Start("SetFlamethrowerEffect") - umsg.Entity(self) - umsg.Char(i) - umsg.End() - - self.LastEffect = i -end - -end - -if CLIENT then - -SWEP.PrintName = "Flamethrower" -SWEP.Slot = 0 - -function SWEP:SetFlamethrowerEffect(i) - if self.LastEffect==i then return end - if not IsValid(self.Owner) then return end - - local effect - local t = GAMEMODE:EntityTeam(self.Owner) - - if i==1 then - effect = "flamethrower_blue" - elseif i>1 then - if t==2 then - effect = "flamethrower_crit_blue" - else - effect = "flamethrower_crit_red" - end - end - - if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then - local vm = self.Owner:GetViewModel() - if IsValid(self.CModel) then - vm = self.CModel - end - - vm:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) - end - else - self:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) - end - end - - self.LastEffect = i -end - -usermessage.Hook("SetFlamethrowerEffect", function(msg) - local w = msg:ReadEntity() - local i = msg:ReadChar() - if IsValid(w) and w.SetFlamethrowerEffect then - w:SetFlamethrowerEffect(i) - end -end) - -usermessage.Hook("TFAirblastImpact", function(msg) - LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") -end) - -end - -PrecacheParticleSystem("flamethrower_fire_1") -PrecacheParticleSystem("flamethrower_crit_red") -PrecacheParticleSystem("flamethrower_blue") -PrecacheParticleSystem("flamethrower_crit_blue") -PrecacheParticleSystem("pyro_blast") -PrecacheParticleSystem("pyro_blast_flash") -PrecacheParticleSystem("pyro_blast_lines") -PrecacheParticleSystem("pyro_blast_warp") -PrecacheParticleSystem("pyro_blast_warp2") - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_flamethrower_pyro.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_flamethrower.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "pyro_blast" - -SWEP.ShootSound = Sound("Weapon_FlameThrower.FireStart") -SWEP.SpecialSound1 = Sound("Weapon_FlameThrower.FireLoop") -SWEP.ShootCritSound = Sound("Weapon_FlameThrower.FireLoopCrit") -SWEP.ShootSoundEnd = Sound("Weapon_FlameThrower.FireEnd") -SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") -SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") - -SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") -SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.04 - -SWEP.Secondary.Automatic = true -SWEP.Secondary.Delay = 1.1 -SWEP.AirblastRadius = 80 - -SWEP.BulletSpread = 0.06 - -SWEP.IsRapidFire = true -SWEP.ReloadSingle = false - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(3, 8, -5) - -function SWEP:CreateSounds(owner) - if not IsValid(owner) then return end - - self.SpinUpSound = CreateSound(owner, self.ShootSound) - self.SpinDownSound = CreateSound(owner, self.ShootSoundEnd) - self.FireSound = CreateSound(owner, self.SpecialSound1) - self.FireCritSound = CreateSound(owner, self.ShootCritSound) - self.PilotSound = CreateSound(owner, self.PilotLoop) - - self.SoundsCreated = true -end - -function SWEP:PrimaryAttack() - if not self.IsDeployed then return false end - - if self:Ammo1()<=0 then - return - end - - local Delay = self.Delay or -1 - if Delay>=0 and CurTime()self.NextEndSpinUp then - self.SpinUpSound:Stop() - self.FireSound:Play() - self.NextEndSpinUp = nil - end - - if self:RollCritical() then - if not self.Critting or not self.Firing then - self.NextEndSpinUp = nil - self:SetFlamethrowerEffect(2) - self.FireSound:Stop() - self.FireCritSound:Play() - self.Firing = true - end - self.Critting = true - elseif not self.NextEndSpinUp then - if self.Critting or not self.Firing then - self:SetFlamethrowerEffect(1) - self.FireCritSound:Stop() - self.FireSound:Play() - self.Firing = true - end - self.Critting = false - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - -- Take one ammo every 2 projectiles fired - if not self.ParticleCounter then self.ParticleCounter = 1 end - self.ParticleCounter = self.ParticleCounter + 1 - if self.ParticleCounter>2 then - self.ParticleCounter = 1 - self:TakePrimaryAmmo(1) - end - - self:ShootProjectile() -end - -function SWEP:ShootProjectile() - if SERVER then - local flame = ents.Create("tf_flame") - local ang = self.Owner:EyeAngles() - local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() - - flame:SetPos(self:ProjectileShootPos()) - flame:SetAngles(vec:Angle()) - if self:Critical() then - flame.critical = true - end - if self.Force then - flame.Force = self.Force - end - flame:SetOwner(self.Owner) - self:InitProjectileAttributes(flame) - - local d = self:GetItemData() - if d.item_iconname then - flame.NameOverride = d.item_iconname - end - - flame:Spawn() - - flame:SetVelocity(self.Owner:GetVelocity()) - end -end - -function SWEP:SecondaryAttack() - if not self.IsDeployed then return false end - - if self.NoAirblast then return false end - - if self:Ammo1()<20 then - return - end - - local Delay = self.Delay or -1 - if Delay>=0 and CurTime() self.NextReplayDeployAnim then - --MsgFN("Replaying deploy animation %d", self.VM_DRAW) - timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) - self.NextReplayDeployAnim = nil - end - end - - if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then - self.IsDeployed = true - end - - if not self.SoundsCreated then - self:CreateSounds(self.Owner) - end - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - - if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then - self:StopFiring() - end - - self:Inspect() -end - -function SWEP:Deploy() - if not self.SoundsCreated then - self:CreateSounds(self.Owner) - end - - if self.SoundsCreated then - self.PilotSound:Play() - end - - --MsgN(Format("Flamethrower Deploy %s",tostring(self))) - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - if self.SoundsCreated then - self.SpinUpSound:Stop() - self.SpinDownSound:Stop() - self.FireSound:Stop() - self.FireCritSound:Stop() - self.PilotSound:Stop() - end - - self.Firing = false - self.Critting = false - self:SetFlamethrowerEffect(0) - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self:Holster() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flamethrower/sv_airblast.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flamethrower/sv_airblast.lua deleted file mode 100644 index 49932c631..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flamethrower/sv_airblast.lua +++ /dev/null @@ -1,163 +0,0 @@ - -local function minicrit_true() return true end - -local AirblastFunc = { - ["grenade_spit"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * ent:GetVelocity():Length()) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "grenade_spit_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["grenade_ar2"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * ent:GetVelocity():Length()) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "grenade_ar2_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["crossbow_bolt"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * ent:GetVelocity():Length()) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "crossbow_bolt_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["npc_grenade_frag"] = function(self, ent, dir) - local phys = ent:GetPhysicsObject() - if not phys:IsValid() then return false end - - local vel = phys:GetVelocity() - phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) - - ent:SetOwner(self.Owner) - ent:SetPhysicsAttacker(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "npc_grenade_frag_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["prop_combine_ball"] = function(self, ent, dir) - local phys = ent:GetPhysicsObject() - if not phys:IsValid() then return false end - - local vel = phys:GetVelocity() - phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) - - ent:SetOwner(self.Owner) - ent:SetPhysicsAttacker(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "prop_combine_ball_deflect" - ent:EmitSound(self.AirblastDeflectSound) - - if phys:HasGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) then - -- The combine ball was fired by a NPC, and simply dissolves stuff without damaging them - -- Convert it into a player combine ball when it is airblasted - phys:ClearGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) - phys:AddGameFlag(FVPHYSICS_DMG_DISSOLVE) - phys:AddGameFlag(FVPHYSICS_HEAVY_OBJECT) - end - return true - end, - ["rpg_missile"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * 2000) - local dmginfo = DamageInfo() - dmginfo:SetDamage(1000) - dmginfo:SetDamageType(DMG_AIRBOAT) - ent:TakeDamageInfo(dmginfo) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "rpg_missile_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["tf_projectile_rocket"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * 2000) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "tf_projectile_rocket_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["tf_projectile_pipe"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * ent:GetVelocity():Length()) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "tf_projectile_pipe_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["tf_projectile_pipe_remote"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * ent:GetVelocity():Length()) - ent:EmitSound(self.AirblastDeflectSound) - return true - end, - ["tf_projectile_arrow"] = function(self, ent, dir) - ent:SetLocalVelocity(dir * 2000) - ent:SetOwner(self.Owner) - ent.AttackerOverride = self.Owner - ent.NameOverride = "tf_projectile_arrow_deflect" - ent.MiniCrit = minicrit_true - ent:EmitSound(self.AirblastDeflectSound) - return true - end, -} - -function SWEP:DoAirblast() - local r = self.AirblastRadius - local dir = self.Owner:GetAimVector() - local dir2 = dir:Angle() - dir2.p = math.Clamp(dir2.p - 45,-90,90) - dir2 = dir2:Forward() - - local pos = self.Owner:GetShootPos() + r * 1.5 * dir - local reflect - - for _,v in pairs(ents.FindInBox(pos-Vector(r,r,r),pos+Vector(r,r,r))) do - c = v:GetClass() - --print(v) - if v:GetOwner()~=self.Owner then - if v:IsTFPlayer() and self.Owner:IsValidEnemy(v) and v:ShouldReceiveDamageForce() then - if v:GetMoveType()==MOVETYPE_VPHYSICS then - for i=0,v:GetPhysicsObjectCount()-1 do - v:GetPhysicsObjectNum(i):ApplyForceCenter(18000*dir) - end - else - v:SetGroundEntity(NULL) - v:SetLocalVelocity(dir2 * 400) - v:SetThrownByExplosion(true) - - if v:IsPlayer() then - umsg.Start("TFAirblastImpact", v) - umsg.End() - end - end - elseif v.Reflect then - v:Reflect(self.Owner, self, dir) - reflect = true - elseif AirblastFunc[c] then - if AirblastFunc[c](self, v, dir, dir2) then - reflect = true - end - elseif v:GetMoveType()==MOVETYPE_VPHYSICS then - for i=0,v:GetPhysicsObjectCount()-1 do - v:GetPhysicsObjectNum(i):ApplyForceCenter(18000*dir) - end - end - end - end - - if reflect then - self:EmitSound(self.AirblastDeflectSound) - end -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flarecannon/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flarecannon/shared.lua deleted file mode 100644 index 6f24f4070..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flarecannon/shared.lua +++ /dev/null @@ -1,101 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "The Flare Gun" -SWEP.HasCModel = true -SWEP.Slot = 1 - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - if IsValid(self.CModel) then - self.CModel:SetBodygroup(1, 1) - end -end - -function SWEP:InitializeWModel2() - self:CallBaseFunction("InitializeWModel2") - - if IsValid(self.WModel2) then - self.WModel2:SetBodygroup(1, 1) - end -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = Sound(")weapons/flaregun_shoot.wav") -SWEP.ShootSoundLevel = 94 -SWEP.ShootCritSound = Sound("Weapon_FlareGun.SingleCrit") - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 2.02 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = false - -SWEP.HoldType = "ITEM1" - -SWEP.ProjectileShootOffset = Vector(0, 8, -5) - -SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW -SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK -SWEP.VM_RELOAD = ACT_ITEM1_VM_RELOAD - -function SWEP:PrimaryAttack() - if self.NextIdle then return end - - if not self:CanPrimaryAttack() then - return - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - self:ShootProjectile() - - self.NextIdle = CurTime()+self:SequenceDuration() - - self:TakePrimaryAmmo(1) - - self:RollCritical() -end - -function SWEP:ShootProjectile() - if SERVER then - local syringe = ents.Create("tf_projectile_rocket_flare") - local ang = self.Owner:EyeAngles() - - syringe:SetPos(self:ProjectileShootPos()) - syringe:SetAngles(ang) - syringe.Inflictor = self - if self:Critical() then - syringe.critical = true - end - syringe:SetOwner(self.Owner) - syringe:Spawn() - end - - self:ShootEffects() -end - -function SWEP:Think() - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flaregun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flaregun/shared.lua deleted file mode 100644 index 520a87790..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_flaregun/shared.lua +++ /dev/null @@ -1,117 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "The Flare Gun" -SWEP.HasCModel = true -SWEP.Slot = 1 - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = Sound("weapons/flaregun_shoot.wav") -SWEP.ShootCritSound = Sound("TFWeapon_FlareGun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_FlareGun.WorldReload") - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 2.02 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = false - -SWEP.HoldType = "ITEM1" - -SWEP.ProjectileShootOffset = Vector(0, 8, -5) - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW -SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK -SWEP.VM_RELOAD = ACT_ITEM1_VM_RELOAD - -function SWEP:PrimaryAttack() - if self.NextIdle then return end - - if not self:CanPrimaryAttack() then - return - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - self:ShootProjectile() - - self.NextIdle = CurTime()+self:SequenceDuration() - - self:TakePrimaryAmmo(1) - - self:StopTimers() - - self.Owner:ViewPunch( self.PunchView ) - - self:RollCritical() -end - -function SWEP:ShootProjectile() - if SERVER then - -- lol syringe - - local syringe = ents.Create("tf_projectile_flare") - local ang = self.Owner:EyeAngles() - - syringe:SetPos(self:ProjectileShootPos()) - syringe:SetAngles(ang) - syringe.Inflictor = self - if self:Critical() then - syringe.critical = true - end - syringe:SetOwner(self.Owner) - self:InitProjectileAttributes(syringe) - - syringe.NameOverride = self:GetItemData().item_iconname - syringe:Spawn() - end - - self:ShootEffects() -end - -function SWEP:Think() - self:TFViewModelFOV() - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - self.IsDeployed = true - end - - self:Inspect() -end - -local WeaponBodygroups = { - shell = 1, -} - -function SWEP:FireAnimationEvent(pos, ang, event, options) - if event == 37 then - local bodygroup, set = string.match(options, "(.-)%s+(%d+)") - bodygroup = WeaponBodygroups[bodygroup or ""] - set = tonumber(set) - - if bodygroup and set and IsValid(self.CModel) then - self.CModel:SetBodygroup(bodygroup, set) - end - end -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fryingpan/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fryingpan/shared.lua deleted file mode 100644 index 39708ea64..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_fryingpan/shared.lua +++ /dev/null @@ -1,103 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Frying Pan" - SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.Swing = Sound("Weapon_Shovel.Miss") -SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") -SWEP.HitFlesh = Sound("FryingPan.HitFlesh") -SWEP.HitWorld = Sound("FryingPan.HitWorld") - -local SpeedTable = { -{40, 1.6}, -{80, 1.4}, -{120, 1.2}, -{160, 1.1}, -} - -SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") -SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") - -SWEP.MinDamage = 0.5 -SWEP.MaxDamage = 1.75 - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.NoCModelOnStockWeapon = false - -SWEP.HoldType = "MELEE_ALLCLASS" - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -self.VM_DRAW = ACT_MELEE_ALLCLASS_VM_DRAW -self.VM_IDLE = ACT_MELEE_ALLCLASS_VM_IDLE -self.VM_HITCENTER = ACT_MELEE_ALLCLASS_VM_HITCENTER -self.VM_SWINGHARD = ACT_MELEE_ALLCLASS_VM_HITCENTER -self.VM_INSPECT_START = ACT_MELEE_ALLCLASS_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_MELEE_ALLCLASS_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_MELEE_ALLCLASS_VM_INSPECT_END -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if self.Owner:GetPlayerClass() == "scout" then - self.Primary.Delay = 0.5 - else - self.Primary.Delay = 0.80 - end - - if self.Owner:GetPlayerClass() == "engineer" then - self.NoHitSound = false - self.UpgradeSpeed = 25 - self.GlobalCustomHUD = {HudAccountPanel = true} - end -end - -function SWEP:OnMeleeHit(tr) - if self.Owner:GetPlayerClass() == "engineer" then - if tr.Entity and tr.Entity:IsValid() then - if tr.Entity:IsBuilding() then - local ent = tr.Entity - - if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then - if SERVER then - local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) - if m > 0 then - self:EmitSound(self.HitBuildingSuccess) - self.Owner:RemoveAmmo(m, TF_METAL) - umsg.Start("PlayerMetalBonus", self.Owner) - umsg.Short(-m) - umsg.End() - elseif ent:GetState() == 1 then - self:EmitSound(self.HitBuildingSuccess) - else - self:EmitSound(self.HitBuildingFailure) - end - end - else - //self:EmitSound(self.HitWorld) - end - elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then - //self:EmitSound(self.HitFlesh) - else - //self:EmitSound(self.HitWorld) - end - elseif tr.HitWorld then - //self:EmitSound(self.HitWorld) - end - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_grenadelauncher/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_grenadelauncher/shared.lua deleted file mode 100644 index 82e24604d..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_grenadelauncher/shared.lua +++ /dev/null @@ -1,155 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Grenade Launcher" -SWEP.Slot = 0 - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - if IsValid(self.CModel) then - self.CModel:SetBodygroup(1, 1) - end -end - -function SWEP:InitializeWModel2() - self:CallBaseFunction("InitializeWModel2") - - --[[if IsValid(self.WModel2) then - self.WModel2:SetBodygroup(1, 1) - end]] -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_grenadelauncher_demo.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_grenadelauncher.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - ---[[ --Viewmodel Settings Override (left-over from testing; works well) -SWEP.ViewModelFOV = 70 -SWEP.ViewModelFlip = false -]] - -SWEP.MuzzleEffect = "muzzle_grenadelauncher" -PrecacheParticleSystem("muzzle_grenadelauncher") - -SWEP.ShootSound = Sound("Weapon_GrenadeLauncher.Single") -SWEP.ShootCritSound = Sound("Weapon_GrenadeLauncher.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_GrenadeLauncher.WorldReload") - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.6 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" - -SWEP.ProjectileShootOffset = Vector(0, 7, -6) -SWEP.Force = 1100 -SWEP.AddPitch = -4 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.Properties = {} - -SWEP.SpinSound = true - -function SWEP:OnEquipAttribute(a, owner) - if a.attribute_class == "mult_clipsize" then - self.SpinSound = false - end -end - -function SWEP:InspectAnimCheck() -self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END - - if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then - timer.Create("StartInspection", self:SequenceDuration(), 1,function() - if self:GetOwner():KeyDown( IN_SPEED ) then - inspecting_idle = true - else - if CLIENT then - timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) - end - inspecting_idle = false - end - end ) - end - - if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then - if CLIENT then - timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) - end - end - - --[[ if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() and self.SpinSound == true and !(self.Owner:GetMoveType()==MOVETYPE_NOCLIP) ) then - if CLIENT then - timer.Create("PlaySpin", 2.06, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) - end - end]] -end - -function SWEP:StopTimers() - self:CallBaseFunction("StopTimers") - timer.Remove("PlaySpin") -end - -function SWEP:ShootProjectile() - if SERVER then - local grenade = ents.Create("tf_projectile_pipe") - grenade:SetPos(self:ProjectileShootPos()) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - - for k,v in pairs(self.Properties) do - grenade[k] = v - end - - grenade:SetOwner(self.Owner) - - self:InitProjectileAttributes(grenade) - - grenade.NameOverride = self:GetItemData().item_iconname - grenade:Spawn() - - if self.VM_RELOAD == ACT_PRIMARY_VM_RELOAD_2 then - grenade.DetonateMode = 2 - else - grenade.DetonateMode = 0 - end - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - if self.Owner.TempAttributes.ProjectileModelModifier == 1 then - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) - else - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - end - grenade:GetPhysicsObject():ApplyForceCenter(vel) - end - - - self:StopTimers() - self:ShootEffects() -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_gun_base/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_gun_base/shared.lua deleted file mode 100644 index 0ca870a2f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_gun_base/shared.lua +++ /dev/null @@ -1,142 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Gun" -end - -SWEP.Base = "tf_weapon_base" - -SWEP.ViewModel = "models/weapons/v_models/v_scattergun_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_scattergun.mdl" - -SWEP.MuzzleEffect = "muzzle_flash" -SWEP.MuzzleOffset = Vector(0,0,0) - -SWEP.ShootSound = Sound("") -SWEP.ShootCritSound = Sound("") -SWEP.ReloadSound = Sound("") - -SWEP.TracerEffect = "bullet_tracer01" -PrecacheParticleSystem("muzzle_flash") - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.2 - -SWEP.PunchView = Angle( 0, 0, 0 ) - -SWEP.HoldType = "PRIMARY" - -SWEP.AutoReloadTime = 0.01 - -idle_timer = 1 -end_timer = 1 -post_timer = 5.30 - -inspecting = false -inspecting_post = false - -CreateClientConVar("tf_autoreload", "1", true, true) - -function SWEP:ShootPos() - --local vm = self.Owner:GetViewModel() - --return vm:GetAttachment(vm:LookupAttachment("muzzle")) - - return self:GetAttachment(self:LookupAttachment("muzzle")).Pos -end - -function SWEP:PrimaryAttack() - self:StopTimers() - - if not self:CallBaseFunction("PrimaryAttack") then return false end - - auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:DoAttackEvent() - - self.NextIdle = CurTime() + self:SequenceDuration() - if self then - if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then - if auto_reload then - timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) - end - end - end - self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) - self:TakePrimaryAmmo(1) - - if self:Clip1() <= 0 then - self:Reload() - end - - self:RollCritical() -- Roll and check for criticals first - - self.Owner:ViewPunch( self.PunchView ) - - self.NextReloadStart = nil - self.NextReload = nil - self.Reloading = false - - return true -end - ---local force_bullets_lagcomp = CreateConVar("force_bullets_lagcomp", 0, {FCVAR_REPLICATED}) - -function SWEP:ShootProjectile(num_bullets, aimcone) - self:StopTimers() - --local b = force_bullets_lagcomp:GetBool() - - --if b then - self.Owner:LagCompensation(true) - --end - - self:FireTFBullets{ - Num = num_bullets, - Src = self.Owner:GetShootPos(), - --Src = self:ShootPos(), - Dir = self.Owner:GetAimVector(), - Spread = Vector(aimcone, aimcone, 0), - Attacker = self.Owner, - - Team = GAMEMODE:EntityTeam(self.Owner), - Damage = self.BaseDamage, - RampUp = self.MaxDamageRampUp, - Falloff = self.MaxDamageFalloff, - Critical = self:Critical(), - CritMultiplier = self.CritDamageMultiplier, - DamageModifier = self.DamageModifier, - DamageRandomize = self.DamageRandomize, - - Tracer = 1, - TracerName = self.TracerEffect, - Force = 1, - } - - --if b then - self.Owner:LagCompensation(false) - --end - - self:ShootEffects() -end - -function SWEP:ShootEffects() - if self:GetVisuals() and self:GetVisuals()["sound_single_shot"] then - self.ShootSound = self:GetVisuals()["sound_single_shot"] - self.ShootCritSound = self:GetVisuals()["sound_burst"] - end - if self:Critical() then - self:EmitSound(self.ShootCritSound) - else - self:EmitSound(self.ShootSound, self.ShootSoundLevel, self.ShootSoundPitch) - end - - if SERVER then - if self.MuzzleEffect and self.MuzzleEffect~="" then - umsg.Start("DoMuzzleFlash") - umsg.Entity(self) - umsg.End() - end - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_handgun_scout/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_handgun_scout/shared.lua deleted file mode 100644 index 777673b82..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_handgun_scout/shared.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Real class name: tf_weapon_handgun_scout_primary (see shd_items.lua) - -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Scattergun" -SWEP.Slot = 0 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_scattergun_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_scattergun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "muzzle_scattergun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("Weapon_Scatter_Gun.Single") -SWEP.ShootCritSound = Sound("Weapon_Scatter_Gun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Scatter_Gun.WorldReload") - -SWEP.TracerEffect = "bullet_scattergun_tracer01" - -SWEP.BaseDamage = 12 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 4 -SWEP.BulletSpread = 0.035 - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.36 - -SWEP.AutoReloadTime = 0.21 - ---SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" -SWEP.IsRapidFire = true \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_jar/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_jar/shared.lua deleted file mode 100644 index a4d48de0e..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_jar/shared.lua +++ /dev/null @@ -1,110 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Jarate" -SWEP.HasCModel = true -SWEP.Slot = 1 - -SWEP.RenderGroup = RENDERGROUP_BOTH - -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/urinejar.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = "" -SWEP.ShootCritSound = "" - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_GRENADES1 -SWEP.Primary.Delay = 1 - -SWEP.ReloadSingle = false - -SWEP.HasCustomMeleeBehaviour = true - -SWEP.HoldType = "ITEM1" - -SWEP.ProjectileShootOffset = Vector(0, 0, 0) - -SWEP.Properties = {} -SWEP.Force = 800 -SWEP.AddPitch = -4 - -SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW -SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK - -function SWEP:PredictCriticalHit() -end - -function SWEP:MeleeAttack() - local pos = self.Owner:GetShootPos() - - if SERVER then - local grenade = ents.Create("tf_projectile_jar") - grenade:SetPos(pos) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - - for k,v in pairs(self.Properties) do - grenade[k] = v - end - - grenade:SetOwner(self.Owner) - self:InitProjectileAttributes(grenade) - - grenade:Spawn() - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - grenade:GetPhysicsObject():ApplyForceCenter(vel) - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - if self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then - return - end - - if SERVER then - self.Owner:Speak("TLK_JARATE_LAUNCH") - //self.Owner:SelectWeapon("tf_weapon_club") - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - - - self:TakePrimaryAmmo(1) - - self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) - self.Owner.NextGiveAmmoType = self.Primary.Ammo - - self.NextIdle = CurTime() + self:SequenceDuration() - - --self.NextMeleeAttack = CurTime() + 0.25 - if not self.NextMeleeAttack then - self.NextMeleeAttack = {} - end - - table.insert(self.NextMeleeAttack, CurTime() + 0.25) -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_jar_milk/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_jar_milk/shared.lua deleted file mode 100644 index bdefba9e4..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_jar_milk/shared.lua +++ /dev/null @@ -1,129 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Mad Milk" -SWEP.HasCModel = true -SWEP.Slot = 1 - -SWEP.RenderGroup = RENDERGROUP_BOTH - -function SWEP:ResetParticles(state_override) - self:CallBaseFunction("ResetParticles", state_override) - - if not self.DoneDeployParticle then - if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then - local ent = self:GetViewModelEntity() - if IsValid(ent) then - ParticleEffectAttach("energydrink_milk_splash", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("drink_spray")) - end - end - - self.DoneDeployParticle = true - end -end - -end - -PrecacheParticleSystem("energydrink_milk_splash") - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_madmilk/c_madmilk.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = "" -SWEP.ShootCritSound = "" - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_GRENADES1 -SWEP.Primary.Delay = 1 - -SWEP.ReloadSingle = false - -SWEP.HasCustomMeleeBehaviour = true - -SWEP.HoldType = "ITEM1" - -SWEP.ProjectileShootOffset = Vector(0, 0, 0) - -SWEP.Properties = {} -SWEP.Force = 800 -SWEP.AddPitch = -4 - -SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW -SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK - -function SWEP:PredictCriticalHit() -end - -function SWEP:MeleeAttack() - local pos = self.Owner:GetShootPos() - - if SERVER then - local grenade = ents.Create("tf_projectile_jar") - grenade:SetPos(pos) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - - for k,v in pairs(self.Properties) do - grenade[k] = v - end - - grenade:SetOwner(self.Owner) - grenade.JarType = 2 - self:InitProjectileAttributes(grenade) - - grenade:Spawn() - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - grenade:GetPhysicsObject():ApplyForceCenter(vel) - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - if SERVER then - self.Owner:Speak("TLK_JARATE_LAUNCH") - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - self:TakePrimaryAmmo(1) - - self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) - self.Owner.NextGiveAmmoType = self.Primary.Ammo - - self.NextIdle = CurTime() + self:SequenceDuration() - - --self.NextMeleeAttack = CurTime() + 0.25 - if not self.NextMeleeAttack then - self.NextMeleeAttack = {} - end - - table.insert(self.NextMeleeAttack, CurTime() + 0.25) -end - -function SWEP:Holster() - if CLIENT then - self.DoneDeployParticle = false - end - - return self:CallBaseFunction("Holster") -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_karate/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_karate/shared.lua deleted file mode 100644 index 629ed9c32..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_karate/shared.lua +++ /dev/null @@ -1,33 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Karate" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_karatae_sniper.mdl" ---SWEP.WorldModel = "models/weapons/w_models/w_null.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("Weapon_Fist.Miss") -SWEP.SwingCrit = Sound("Weapon_Fist.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Fist.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Fist.HitWorld") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.3 - --- fixes having to wait for a long time before being able to swing it -SWEP.m_WeaponDeploySpeed = 2 - -SWEP.HoldType = "MELEE" diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_knife/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_knife/shared.lua deleted file mode 100644 index 7cd3b9778..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_knife/shared.lua +++ /dev/null @@ -1,151 +0,0 @@ -if SERVER then - -AddCSLuaFile("shared.lua") - -end - -if CLIENT then - -SWEP.PrintName = "Knife" -SWEP.Slot = 2 - -function SWEP:ResetBackstabState() - self.NextBackstabIdle = nil - self.BackstabState = false - self.NextAllowBackstabAnim = CurTime() + 0.8 -end - -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_knife_spy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_knife.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Knife.Miss") -SWEP.SwingCrit = Sound("Weapon_Knife.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Knife.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Knife.HitWorld") - -SWEP.BaseDamage = 40 -SWEP.DamageRandomize = 0.35 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.CriticalChance = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" -SWEP.HasThirdpersonCritAnimation = true - -SWEP.MeleePredictTolerancy = 0.1 -SWEP.MeleeAttackDelay = 0 -SWEP.BackstabAngle = 180 - --- ACT_MELEE_VM_STUN - -function SWEP:ShouldBackstab(ent) - if not ent then - local tr = self:MeleeAttack(true) - ent = tr.Entity - end - - if not IsValid(ent) or not self.Owner:CanDamage(ent) or ent:Health()<=0 or not ent:CanReceiveCrits() or inspecting == true or inspecting_post == true then - return false - end - - if not self.BackstabCos then - self.BackstabCos = math.cos(math.rad(self.BackstabAngle * 0.5)) - end - - local v1 = ent:GetPos() - self.Owner:GetPos() - local v2 = ent:GetAngles():Forward() - - v1.z = 0 - v2.z = 0 - v1:Normalize() - v2:Normalize() - - return v1:Dot(v2) > self.BackstabCos -end - -function SWEP:Critical(ent,dmginfo) - if self:ShouldBackstab(ent) then - return true - end - - return self:CallBaseFunction("Critical", ent, dmginfo) -end - -function SWEP:PredictCriticalHit() - if self:ShouldBackstab() then - return true - end -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if CLIENT and self.IsDeployed then - if not self.NextAllowBackstabAnim or CurTime() >= self.NextAllowBackstabAnim then - local shouldbackstab = self:ShouldBackstab() - - if shouldbackstab and not self.BackstabState then - self:SendWeaponAnim(ACT_BACKSTAB_VM_UP) - self.NextBackstabIdle = CurTime() + self:SequenceDuration() - elseif not shouldbackstab and self.BackstabState then - self:SendWeaponAnim(ACT_BACKSTAB_VM_DOWN) - self.NextBackstabIdle = nil - end - self.BackstabState = shouldbackstab - - if self.NextBackstabIdle and CurTime()>=self.NextBackstabIdle then - self:SendWeaponAnim(ACT_BACKSTAB_VM_IDLE) - self.NextBackstabIdle = nil - end - - self.NextAllowBackstabAnim = nil - end - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - self.NameOverride = nil - - if game.SinglePlayer() then - self:CallOnClient("ResetBackstabState", "") - elseif CLIENT then - self:ResetBackstabState() - end -end - -if SERVER then - -hook.Add("PreScaleDamage", "BackstabSetDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - if inf.ShouldBackstab and inf:ShouldBackstab(ent) then - inf.ResetBaseDamage = inf.BaseDamage - inf.BaseDamage = ent:Health() * 2 - inf.NameOverride = "tf_weapon_knife_backstab" - dmginfo:SetDamage(inf.BaseDamage) - end -end) - -hook.Add("PostScaleDamage", "BackstabResetDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - if inf.ResetBaseDamage then - inf.BaseDamage = inf.ResetBaseDamage - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_laser_pointer/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_laser_pointer/shared.lua deleted file mode 100644 index a14b0d62a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_laser_pointer/shared.lua +++ /dev/null @@ -1,79 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Pistol" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pistol_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_pistol.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = false -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pistol" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("weapons/pistol_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_pistol") - -SWEP.BaseDamage = 0 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.04 - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.DefaultClip = -1 -SWEP.Primary.Ammo = TF_METAL -SWEP.Primary.Delay = 0.225 - -SWEP.HoldType = "ITEM1" - -SWEP.IsRapidFire = true - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -self.VM_DRAW = ACT_ITEM1_VM_DRAW -self.VM_IDLE = ACT_ITEM1_VM_IDLE - -self.VM_INSPECT_START = ACT_ITEM1_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_ITEM1_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_ITEM1_VM_INSPECT_END -end - -function SWEP:CanPrimaryAttack() - return false -end - -function SWEP:PrimaryAttack() - self:StopTimers() - - if not self:CallBaseFunction("PrimaryAttack") then return false end - - return true -end - -function SWEP:Think() - self.BaseClass.Think(self) - - if self.Owner:KeyDown(IN_ATTACK) then - print("Fire!") - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_lever_rifle/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_lever_rifle/shared.lua deleted file mode 100644 index e660dfbee..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_lever_rifle/shared.lua +++ /dev/null @@ -1,129 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Lever Rifle" -SWEP.Slot = 0 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_leverrifle_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_leverrifle.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "muzzle_scattergun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("Weapon_Scatter_Gun.Single") -SWEP.ShootCritSound = Sound("Weapon_Scatter_Gun.SingleCrit") -SWEP.ReloadSound = Sound("TF_Weapon_Shotgun.Reload") - -SWEP.TracerEffect = "bullet_scattergun_tracer01" - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.75 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.625 - -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.KnockbackForceOwner = 225 - -SWEP.KnockbackMaxForce = 600 -SWEP.MinKnockbackDistance = 512 -SWEP.KnockbackAddPitch = -30 - -function SWEP:OnEquipAttribute(a, owner) - if a.attribute_class == "set_scattergun_no_reload_single" then - self.ReloadSingle = false - self.ReloadDiscardClip = true - elseif a.attribute_class == "set_scattergun_has_knockback" then - self.ScattergunHasKnockback = true - end -end - -function SWEP:SetupCModelActivities(item) - if item then - for _,a in pairs(item.attributes or {}) do - if a.attribute_class == "set_scattergun_no_reload_single" and a.value == 1 then - item = table.Copy(item) - item.anim_slot = "ITEM2" - self.HoldType = "ITEM2" - self:SetWeaponHoldType("ITEM2") - break - end - end - end - - return self:CallBaseFunction("SetupCModelActivities", item) -end - -if SERVER then - -function SWEP:DoOwnerKnockback() - if self.Owner:OnGround() then return end - if self.Owner.KnockbackJumpsRemaining and self.Owner.KnockbackJumpsRemaining <= 0 then return end - - local vel = self.Owner:GetVelocity() - local dir = self.Owner:GetAimVector() - local work = vel:Dot(dir) - --if work < 0 then work = 0 end - - local force = self.KnockbackForceOwner + work - if force < 0 then force = 0 end - - self.Owner:SetVelocity(-force * dir) - - self.Owner.KnockbackJumpsRemaining = (self.Owner.KnockbackJumpsRemaining or 1) - 1 - self.Owner:SetThrownByExplosion(true) -end - -hook.Add("OnPlayerHitGround", "TFKnockbackJumpsReset", function(pl) - pl.KnockbackJumpsRemaining = 1 -end) - -hook.Add("PostScaleDamage", "TFKnockbackDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - local att = dmginfo:GetAttacker() - - if inf.ScattergunHasKnockback and not ent:IsThrownByExplosion() then - local dist = inf:GetPos():Distance(ent:GetPos()) - if dist < inf.MinKnockbackDistance then - if not inf.MaxKnockbackDamage then - inf.MaxKnockbackDamage = inf.BaseDamage * (1 + inf.MaxDamageRampUp + inf.DamageRandomize) * inf.BulletsPerShot - end - - local force = inf.KnockbackMaxForce * dmginfo:GetDamage() / inf.MaxKnockbackDamage - local ang = att:EyeAngles() - ang.p = ang.p + inf.KnockbackAddPitch - - ent:SetGroundEntity(NULL) - ent:SetVelocity(ang:Forward() * force) - ent:SetThrownByExplosion(true) - end - end -end) - -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return end - - if SERVER and self.ScattergunHasKnockback then - self:DoOwnerKnockback() - end - - return -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_lunchbox/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_lunchbox/shared.lua deleted file mode 100644 index d9decdfee..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_lunchbox/shared.lua +++ /dev/null @@ -1,106 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Sandvich" - SWEP.Slot = 1 - SWEP.HasCModel = true -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.UsesJarateChargeMeter = true - -SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" -SWEP.WorldModel = "" -SWEP.Crosshair = "tf_crosshair3" -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = "" -SWEP.ShootCritSound = "" - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_GRENADES1 -SWEP.Primary.Delay = 1 - -SWEP.ReloadSingle = false - -SWEP.HasCustomMeleeBehaviour = true - -SWEP.HoldType = "ITEM1" - -SWEP.ProjectileShootOffset = Vector(0, 0, 0) - -SWEP.Properties = {} -SWEP.Force = 800 -SWEP.AddPitch = -4 - -SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW -SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK - -function SWEP:PredictCriticalHit() -end - -function SWEP:MeleeAttack() - local pos = self.Owner:GetShootPos() - - if SERVER then - local grenade = ents.Create("tf_projectile_jar") - grenade:SetPos(pos) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - - for k,v in pairs(self.Properties) do - grenade[k] = v - end - - grenade:SetOwner(self.Owner) - self:InitProjectileAttributes(grenade) - - grenade:Spawn() - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - grenade:GetPhysicsObject():ApplyForceCenter(vel) - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - if self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then - return - end - - if SERVER then - self.Owner:Speak("TLK_JARATE_LAUNCH") - //self.Owner:SelectWeapon("tf_weapon_club") - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - - - self:TakePrimaryAmmo(1) - - self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) - self.Owner.NextGiveAmmoType = self.Primary.Ammo - - self.NextIdle = CurTime() + self:SequenceDuration() - - --self.NextMeleeAttack = CurTime() + 0.25 - if not self.NextMeleeAttack then - self.NextMeleeAttack = {} - end - - table.insert(self.NextMeleeAttack, CurTime() + 0.25) -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_master_sword/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_master_sword/shared.lua deleted file mode 100644 index b9130a4c9..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_master_sword/shared.lua +++ /dev/null @@ -1,145 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - -SWEP.PrintName = "The Master Sword" -SWEP.HasCModel = true -SWEP.Slot = 2 - -SWEP.DamageType = DMG_SLASH -SWEP.CritDamageType = DMG_SLASH - -SWEP.CriticalChance = 3 - -local WhisperIdle = Sound("") -local WhisperKill = Sound("") - -usermessage.Hook("SwordWhisper", function(msg) - local t = msg:ReadChar() - if t==2 then return nil - else return nil - end -end) - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - for _,v in pairs(self.Owner:GetTFItems()) do - if v:GetClass() == "tf_wearable_item_demoshield" then - self.ShieldEntity = v - v:InitializeCModel(self) - elseif v:GetClass() == "tf_wearable_item_hylianshield" then - self.ShieldEntity = v - v:InitializeCModel(self) - end - end -end - -function SWEP:ViewModelDrawn() - self:CallBaseFunction("ViewModelDrawn") - - if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then - self.ShieldEntity:StartVisualOverrides() - self.ShieldEntity.CModel:DrawModel() - self.ShieldEntity:EndVisualOverrides() - end -end - -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_claymore/c_claymore.mdl" -SWEP.Crosshair = "tf_crosshair3" -SWEP.ItemName = "Unique Achievement Sword" - -SWEP.Swing = Sound("Weapon_Sword.Swing") -SWEP.SwingCrit = Sound("Weapon_Sword.SwingCrit") -SWEP.HitFlesh = Sound("Weapon_Sword.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Sword.HitWorld") - -SWEP.WhisperKillProbabilityPlayer = 0 -SWEP.WhisperKillProbabilityNPC = 0 - -SWEP.WhisperIdleMinDelay = 999 -SWEP.WhisperIdleMaxDelay = 999 -SWEP.WhisperKillMinDelay = 999 -SWEP.WhisperKillMaxDelay = 999 - -SWEP.MeleeRange = 100 -SWEP.HealthBonus = 0 - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - ---SWEP.CriticalChance = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "ITEM1" - -SWEP.UsesSpecialAnimations = true - -SWEP.VM_DRAW = ACT_VM_DRAW_SPECIAL -SWEP.VM_IDLE = ACT_VM_IDLE_SPECIAL -SWEP.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL -SWEP.VM_SWINGHARD = ACT_VM_HITCENTER_SPECIAL - ---[[ -SWEP.VM_DRAW = "cm_draw" -SWEP.VM_IDLE = "cm_idle" -SWEP.VM_HITCENTER = "cm_swing_a,cm_swing_b" -SWEP.VM_SWINGHARD = "cm_swing_c"]] - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Bool", 0, "IsEyelander") -end - --- The following weapons should not collect heads - -local NoHeadCollecting = { - [172] = true, -- Scotsman's Skullcutter - [327] = true, -- Claidheamohmor -} - -function SWEP:InitAttributes(owner, attributes) - self:CallBaseFunction("InitAttributes", owner, attributes) - - - if NoHeadCollecting[self:ItemIndex()] then - return - end - - self.dt.IsEyelander = true -end - -function SWEP:OnPlayerKilled(ent) - --ent:SetNWBool("ShouldDropDecapitatedRagdoll", true) - if ent:CanGiveHead() then - ent:AddDeathFlag(DF_DECAP) - end -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if SERVER and self.dt.IsEyelander then - if not self.NextWhisper then - return nil - end - end -end - -function SWEP:OnRemove() - if SERVER then - --self.Owner:SetNWInt("Heads", 0) - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_mechanical_arm/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_mechanical_arm/shared.lua deleted file mode 100644 index 499c0a76a..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_mechanical_arm/shared.lua +++ /dev/null @@ -1,129 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Pistol" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pistol_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_pistol.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = false -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pistol" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("weapons/pistol_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_pistol") - -SWEP.BaseDamage = 0 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.04 - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.DefaultClip = -1 -SWEP.Primary.Ammo = TF_METAL -SWEP.Primary.Delay = 0.225 - -SWEP.HoldType = "SECONDARY" - -SWEP.IsRapidFire = true - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -self.VM_DRAW = ACT_SECONDARY_VM_DRAW -self.VM_IDLE = ACT_SECONDARY_VM_IDLE - -self.VM_INSPECT_START = ACT_SECONDARY_ALT2_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_SECONDARY_ALT2_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_SECONDARY_ALT2_VM_INSPECT_END -end - -function SWEP:PreDrawViewModel(vm, wpn, ply) - vm:SetBodygroup(1, 1) -end - -function SWEP:Deploy() - self.BaseClass.Deploy(self) - if IsValid(self.Owner) then - self.Owner:SetBodygroup(2, 2) - end -end - -function SWEP:Holster() - if IsValid(self.Owner) then - self.Owner:SetBodygroup(2, 0) - if self.Owner:HasWeapon("tf_weapon_robot_arm") then - self.Owner:SetBodygroup(2, 1) - end - end - return self.BaseClass.Holster(self) -end - -function SWEP:OnRemove() - self:Holster() - return self.BaseClass.OnRemove(self) -end - -function SWEP:CanPrimaryAttack() - if (self.Primary.ClipSize == -1 and self:Ammo1() > 0) or self:Clip1() > 0 then - return true - end - self:EmitSound("string soundName") - return false -end - -function SWEP:PrimaryAttack() - self:StopTimers() - - if not self:CallBaseFunction("PrimaryAttack") then return false end - - auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:DoAttackEvent() - - self.NextIdle = CurTime() + self:SequenceDuration() - if self then - if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then - if auto_reload then - timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) - end - end - end - self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) - self:TakePrimaryAmmo(5) - - if self:Clip1() <= 0 then - self:Reload() - end - - self:RollCritical() -- Roll and check for criticals first - - self.Owner:ViewPunch( self.PunchView ) - - self.NextReloadStart = nil - self.NextReload = nil - self.Reloading = false - - return true -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_medigun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_medigun/shared.lua deleted file mode 100644 index fe0088112..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_medigun/shared.lua +++ /dev/null @@ -1,508 +0,0 @@ -local function MedigunEffectName(i, t) - if i==1 then - if t==2 then - return "medicgun_beam_blue" - else - return "medicgun_beam_red" - end - elseif i>1 then - if t==2 then - return "medicgun_beam_blue_invun" - else - return "medicgun_beam_red_invun" - end - end -end - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - - self:DTVar("Entity", 0, "BeamEntity") - self:DTVar("Entity", 1, "TargetEntity") -end - -if SERVER then -AddCSLuaFile( "shared.lua" ) - -function SWEP:SetMedigunEffect(i, target) - if self.LastEffect==i then return end - - if IsValid(self.dt.BeamEntity) then - self.dt.BeamEntity:Remove() - self.dt.BeamEntity = NULL - end - if IsValid(self.InfoTarget) then - self.InfoTarget:Remove() - self.InfoTarget = NULL - end - - if i>0 and IsValid(target) then - local t = GAMEMODE:EntityTeam(self.Owner) - local effect = MedigunEffectName(i, t) - - local tar = ents.Create("info_dummy") - tar:SetPos(target:GetPos() + Vector(0,0,30)) - tar:Spawn() - tar:SetParent(target) - tar:SetName(tostring(tar)) - - self.InfoTarget = tar - - local beam = ents.Create("info_particle_system") - beam:SetPos(self:GetPos()) - beam:SetParent(self) - beam:SetKeyValue("effect_name",effect) - beam:SetKeyValue("cpoint1", tar:GetName()) - beam:SetKeyValue("start_active", "1") - beam:Spawn() - beam:Activate() - - self.dt.TargetEntity = target - self.dt.BeamEntity = beam - else - self.dt.TargetEntity = NULL - end - - self.LastEffect = i -end - -function SWEP:SetMedigunMuzzleEffect(i) - if self.LastEffect2==i then return end - - umsg.Start("SetMedigunMuzzleEffect") - umsg.Entity(self) - umsg.Char(i) - umsg.End() - - self.LastEffect2 = i -end - -end - -if CLIENT then -CreateClientConVar("tf_heal_without_holding", "0", true, true) - -SWEP.PrintName = "Medigun" -SWEP.Slot = 1 -SWEP.CustomHUD = {HudMedicCharge = true} - ---[[ -function SWEP:SetMedigunEffect(p, t) - if IsValid(p) and IsValid(t) then - self.MedigunBeam = p - if self.Owner==LocalPlayer() then - HudHealingTargetID:SetTargetEntity(t) - HudHealingTargetID:SetVisible(true) - end - else - self.MedigunBeam = nil - if self.Owner==LocalPlayer() then - HudHealingTargetID:SetVisible(false) - end - end -end -]] - -function SWEP:SetMedigunMuzzleEffect(i) - if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then - return - end - - if self.LastEffect2==i then return end - - local effect - local t = GAMEMODE:EntityTeam(self.Owner) - - if i==1 then - if t==2 then - effect = "medicgun_invulnstatus_fullcharge_blue" - else - effect = "medicgun_invulnstatus_fullcharge_red" - end - end - - self.Owner:GetViewModel():StopParticles() - self:StopParticles() - - if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then - local vm = self.Owner:GetViewModel() - if IsValid(self.CModel) then - vm = self.CModel - end - - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) - end - else - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) - end - end - - self.LastEffect2 = i -end - -usermessage.Hook("SetMedigunMuzzleEffect", function(msg) - local w = msg:ReadEntity() - local i = msg:ReadChar() - - if IsValid(w) and w.SetMedigunMuzzleEffect then - w:SetMedigunMuzzleEffect(i) - end -end) - -function SWEP:ModelDrawn(view) - if IsValid(self.dt.BeamEntity) then - local wep, att - if view then - wep = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() - else - wep = self - end - att = wep:LookupAttachment("muzzle") - att = wep:GetAttachment(att) - if not att then return end - - self.dt.BeamEntity:SetPos(att.Pos) - self.dt.BeamEntity:SetAngles(att.Ang) - end -end - -end - -PrecacheParticleSystem("medicgun_beam_red") -PrecacheParticleSystem("medicgun_beam_red_invun") -PrecacheParticleSystem("medicgun_beam_blue") -PrecacheParticleSystem("medicgun_beam_blue_invun") -PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") -PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_medigun_medic.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_medigun.mdl" -SWEP.Crosshair = "tf_crosshair5" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "pyro_blast" - -SWEP.ShootSound = Sound("WeaponMedigun.Healing") -SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") -SWEP.ChargedSound = Sound("WeaponMedigun.Charged") - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" - -SWEP.IsRapidFire = true -SWEP.ReloadSingle = false - -SWEP.HoldType = "SECONDARY" - -SWEP.ProjectileShootOffset = Vector(3, 8, -5) -SWEP.Range = 500 - -SWEP.MinHealRate = 24 -SWEP.MaxHealRate = 72 -SWEP.MinLastDamageTime = 10 -SWEP.MaxLastDamageTime = 15 - -SWEP.UberchargeRate = 2.5 - -function SWEP:CreateSounds() - self.ShootSoundLoop = CreateSound(self, self.ShootSound) - self.ChargedLoop = CreateSound(self, self.ChargedSound) - self.SoundsCreated = true -end - -function SWEP:SetHealTarget(e) - self.Target = e - if SERVER then - self:SetMedigunEffect(1, e) - if IsValid(e) then - GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) - end - end -end - -function SWEP:ClearHealTarget() - local e = self.Target - self.Target = nil - if SERVER then - self:SetMedigunEffect(0) - if IsValid(e) then - GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) - end - end -end - -local function medigun_trace_condition(tr, wep) - return - IsValid(tr.Entity) and - tr.Entity:IsTFPlayer() and - tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and - tr.Entity:Health()>0 and - not tr.Entity:HasNPCFlag(NPC_CANNOTHEAL) -end - -function SWEP:SecondaryAttack() - self.Owner:SetNWInt("Ubercharge", 0) - - self:StopFiring() - - if self.ShootSoundLoop and self.ChargedLoop then - self.ShootSoundLoop:Stop() - self.ChargedLoop:Stop() - end - - self.Firing = false - - if SERVER then - self:ClearHealTarget() - self:SetMedigunMuzzleEffect(0) - else - if self.Owner == LocalPlayer() then - HudHealingTargetID:SetVisible(false) - self.LastTargetEntity = nil - end - end -end - -function SWEP:PrimaryAttack() - if not self.Firing then - local start = self.Owner:GetShootPos() - local endpos = start + self.Owner:GetAimVector() * self.Range - local tr = tf_util.MixedTrace({ - start = start, - endpos = endpos, - filter = self.Owner, - mins = Vector(-5, -5, -5), - maxs = Vector(5, 5, 5), - }, medigun_trace_condition, self) - - self.CanInspect = false - - if medigun_trace_condition(tr, self) then - self.Firing = true - self:SetHealTarget(tr.Entity) - - self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) - self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_PREFIRE) - self.ShootSoundLoop:Play() - self.NextIdle = nil - self.NextIdle2 = CurTime() + self:SequenceDuration() - elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then - self:EmitSound(self.ShootSound2) - self.NextDeniedSound = CurTime() + 0.5 - end - --self:StopFiring() - end - - self:StopTimers() -end - -function SWEP:Reload() -end - -function SWEP:StopFiring() - if IsValid(self.Target) and self.Target:IsPlayer() and self.Target:Alive() then - self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") - end - - self.Firing = false - self:ClearHealTarget() - - self.CanInspect = true - - self.ShootSoundLoop:Stop() - self:SendWeaponAnim(ACT_MP_ATTACK_STAND_POSTFIRE) - self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) - self.NextIdle = CurTime() + self:SequenceDuration() -end - -function SWEP:Think() - self:TFViewModelFOV() - - if CLIENT then - if self.Owner==LocalPlayer() then - if self.dt.TargetEntity ~= self.LastTargetEntity then - if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then - HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) - HudHealingTargetID:SetVisible(true) - else - HudHealingTargetID:SetVisible(false) - end - self.LastTargetEntity = self.dt.TargetEntity - end - end - end - - if not self.SoundsCreated then - self:CreateSounds() - end - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.IsDeployed = true - self.NextIdle = nil - self.NextIdle2 = nil - end - - if self.NextIdle2 and CurTime()>=self.NextIdle2 then - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.NextIdle = nil - self.NextIdle2 = nil - end - - if self.Firing and SERVER then - if (not self.Owner:KeyDown(IN_ATTACK) and self.Owner:GetInfoNum("tf_heal_without_holding", 0) == 0) or (self.Owner:KeyDown(IN_ATTACK) and self.Owner:GetInfoNum("tf_heal_without_holding", 0) == 1) or not IsValid(self.Target) or self.Target:Health()<=0 then - if self.Owner:KeyDown(IN_ATTACK) and self.Owner:GetInfoNum("tf_heal_without_holding", 0) == 1 then - local start = self.Owner:GetShootPos() - local endpos = start + self.Owner:GetAimVector() * self.Range - local tr = tf_util.MixedTrace({ - start = start, - endpos = endpos, - filter = self.Owner, - mins = Vector(-5, -5, -5), - maxs = Vector(5, 5, 5), - }, medigun_trace_condition, self) - - self.CanInspect = false - - if !medigun_trace_condition(tr, self) then - self:StopFiring() - end - else - self:StopFiring() - end - return - elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then - self.NextRangeCheck = CurTime() + 0.2 - if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then - self:StopFiring() - return - end - end - - if IsValid(self.Target) then - local maxhealth = self.Target:GetMaxHealth() - local maxoverheal = self.Target:GetMaxOverheal() - - if self.OverhealMultiplier then - maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) - end - - if not self.NextHeal or CurTime()>self.NextHeal then - if self.NextHeal then - local err = (CurTime() - self.NextHeal) / self.LastHealRate - self.HealErrorCumul = (self.HealErrorCumul or 0) + err - - local add = math.floor(self.HealErrorCumul) - self.HealErrorCumul = self.HealErrorCumul - add - - --[[if self.Target:Health()self.NextCharge then - if self.NextCharge then - local err = (CurTime() - self.NextCharge) / self.LastChargeRate - self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err - - local add = math.floor(self.ChargeErrorCumul) - self.ChargeErrorCumul = self.ChargeErrorCumul - add - - local ch = self.Owner:GetNWInt("Ubercharge") - if ch<100 then - ch = math.Clamp(ch + 1 + add, 0, 100) - self.Owner:SetNWInt("Ubercharge", ch) - if ch>=100 then - self.Owner:Speak("TLK_PLAYER_CHARGEREADY") - self.ChargedLoop:Play() - self:SetMedigunMuzzleEffect(1) - end - end - end - - local rate = self.UberchargeRate - if self.Target:Health()>maxhealth then - rate = rate * 0.5 - end - - if self.UberchargeRateMultiplier then - rate = rate * self.UberchargeRateMultiplier - end - - self.LastChargeRate = rate - self.NextCharge = CurTime() + 1 / rate - end - end - end - - self:Inspect() -end - -function SWEP:Deploy() - if not self.SoundsCreated then - self:CreateSounds() - end - - if self.Owner:GetNWInt("Ubercharge")>=100 then - self.ChargedLoop:Play() - if SERVER then - self:SetMedigunMuzzleEffect(1) - end - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - if self.ShootSoundLoop and self.ChargedLoop then - self.ShootSoundLoop:Stop() - self.ChargedLoop:Stop() - end - - self.Firing = false - - if SERVER then - self:ClearHealTarget() - self:SetMedigunMuzzleEffect(0) - else - if self.Owner == LocalPlayer() then - HudHealingTargetID:SetVisible(false) - self.LastTargetEntity = nil - end - end - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self:Holster() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_melee_base/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_melee_base/shared.lua deleted file mode 100644 index 226c20d77..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_melee_base/shared.lua +++ /dev/null @@ -1,488 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Melee" -end - -SWEP.Base = "tf_weapon_base" - -SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" - -SWEP.Primary.Ammo = "none" - -SWEP.HoldType = "MELEE" - -SWEP.Swing = Sound("") -SWEP.SwingCrit = Sound("") -SWEP.HitFlesh = Sound("") -SWEP.HitWorld = Sound("") - -SWEP.MeleeAttackDelay = 0.25 ---SWEP.MeleeAttackDelayCritical = 0.25 -SWEP.MeleeRange = 50 - -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.CriticalChance = 15 -SWEP.HasThirdpersonCritAnimation = false -SWEP.NoHitSound = false - -SWEP.ForceMultiplier = 5000 -SWEP.CritForceMultiplier = 10000 -SWEP.ForceAddPitch = 0 -SWEP.CritForceAddPitch = 0 - -SWEP.DamageType = DMG_CLUB -SWEP.CritDamageType = DMG_CLUB - -SWEP.MeleePredictTolerancy = 0.5 - -SWEP.HasCustomMeleeBehaviour = false - -SWEP.VM_HITCENTER = ACT_VM_HITCENTER -SWEP.VM_SWINGHARD = ACT_VM_SWINGHARD - -SWEP.HullAttackVector = Vector(10, 10, 15) - -function SWEP:InspectAnimCheck() - -end - -local FleshMaterials = { - [MAT_ANTLION] = true, - [MAT_BLOODYFLESH] = true, - [MAT_FLESH] = true, - [MAT_ALIENFLESH] = true, -} - -function SWEP:GetPrimaryFireActivity() - if self.UsesLeftRightAnim then - return self.VM_HITLEFT - else - return self.VM_HITCENTER - end -end - -function SWEP:GetSecondaryFireActivity() - if self.UsesLeftRightAnim then - return self.VM_HITRIGHT - else - return ACT_INVALID - end -end - -function SWEP:CanPrimaryAttack() - return true -end - -function SWEP:CanSecondaryAttack() - return true -end - -function SWEP:OnMeleeAttack(tr) - if self:GetVisuals() then - if self:GetVisuals()["sound_melee_hit"] then - self.HitFlesh = self:GetVisuals()["sound_melee_hit"] - end - if self:GetVisuals()["sound_melee_hit_world"] then - self.HitWorld = self:GetVisuals()["sound_melee_hit_world"] - end - if self:GetVisuals()["sound_melee_burst"] then - self.SwingCrit = self:GetVisuals()["sound_melee_burst"] - end - if self:GetVisuals()["sound_melee_miss"] then - self.Swing = self:GetVisuals()["sound_melee_miss"] - end - end -end - -function SWEP:OnMeleeHit(tr) - -end - -function SWEP:MeleeHitSound(tr) - --MsgFN("MeleeHitSound %f", CurTime()) - if CLIENT then - return - end - - if tr.Entity and IsValid(tr.Entity) then - if tr.Entity:IsTFPlayer() then - if tr.Entity:IsBuilding() then - --self:EmitSound(self.HitWorld) - --sound.Play(self.HitWorld, tr.HitPos) - sound.Play(self.HitWorld, self:GetPos()) - else - --self:EmitSound(self.HitFlesh) - --sound.Play(self.HitFlesh, tr.HitPos) - sound.Play(self.HitFlesh, self:GetPos()) - end - else - if not self.NoHitSound then - if FleshMaterials[tr.Entity:GetMaterialType()] then - --self:EmitSound(self.HitFlesh) - --sound.Play(self.HitFlesh, tr.HitPos) - sound.Play(self.HitFlesh, self:GetPos()) - else - --self:EmitSound(self.HitWorld) - --sound.Play(self.HitWorld, tr.HitPos) - sound.Play(self.HitWorld, self:GetPos()) - end - end - end - else - if not self.NoHitSound then - --self:EmitSound(self.HitWorld) - --sound.Play(self.HitWorld, tr.HitPos) - sound.Play(self.HitWorld, self:GetPos()) - end - end -end - -function SWEP:MeleeCritical(tr) - local b = gamemode.Call("ShouldCrit", tr.Entity, self, self.Owner) - - if b ~= nil and b ~= self.CurrentShotIsCrit then - self.CurrentShotIsCrit = b - self.CritTime = CurTime() - return b - end -end - -function SWEP:MeleeAttack(dummy) - local pos = self.Owner:GetShootPos() - local ang = self.Owner:GetAimVector() - local endpos - - if SERVER and not dummy and game.SinglePlayer() then - self:CallOnClient("MeleeAttack","") - end - - if CLIENT and dummy=="" then - dummy = false - end - - local scanmul = 1 + self.MeleePredictTolerancy - - if dummy then - -- When doing a dummy melee attack, perform a wider scan for better prediction - endpos = pos + self.Owner:GetAimVector() * self.MeleeRange * scanmul - else - endpos = pos + self.Owner:GetAimVector() * self.MeleeRange - end - - local hitent, hitpos - - if not dummy then - self.Owner:LagCompensation(true) - end - - local tr = util.TraceLine { - start = pos, - endpos = endpos, - filter = self.Owner - } - - if not tr.Hit then - local mins, maxs - local v = self.HullAttackVector - if dummy then - mins, maxs = scanmul * Vector(-v.x, -v.y, -v.z), scanmul * Vector(v.x, v.y, v.z) - else - mins, maxs = Vector(-v.x, -v.y, -v.z), Vector(v.x, v.y, v.z) - end - - tr = util.TraceHull { - start = pos, - endpos = endpos, - filter = self.Owner, - - mins = mins, - maxs = maxs, - } - end - - if not dummy then - self.Owner:LagCompensation(false) - end - - --MsgN(Format("HELLO %s",tostring(dummy))) - if dummy then return tr end - - self:OnMeleeAttack(tr) - - local damagedself = false - if self.MeleeHitSelfOnMiss and not tr.HitWorld and not IsValid(tr.Entity) then - damagedself = true - tr.Entity = self.Owner - end - - if tr.Entity and tr.Entity:IsValid() then - --local ang = (endpos - pos):GetNormal():Angle() - local ang = self.Owner:EyeAngles() - local dir = ang:Forward() - hitpos = tr.Entity:NearestPoint(self.Owner:GetShootPos()) - 2 * dir - tr.HitPos = hitpos - - if self.Owner:CanDamage(tr.Entity) then - if SERVER then - local mcrit = self:MeleeCritical(tr) - - local pitch, mul, dmgtype - if self.CurrentShotIsCrit then - dmgtype = self.CritDamageType - pitch, mul = self.CritForceAddPitch, self.CritForceMultiplier - else - dmgtype = self.DamageType - pitch, mul = self.ForceAddPitch, self.ForceMultiplier - end - - if tr.Entity:ShouldReceiveDefaultMeleeType() then - dmgtype = DMG_CLUB - end - - ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) - local force_dir = ang:Forward() - - self:PreCalculateDamage(tr.Entity) - local dmg = self:CalculateDamage(nil, tr.Entity) - --dmg = self:PostCalculateDamage(dmg, tr.Entity) - - local dmginfo = DamageInfo() - dmginfo:SetAttacker(self.Owner) - dmginfo:SetInflictor(self) - dmginfo:SetDamage(dmg) - dmginfo:SetDamageType(dmgtype) - dmginfo:SetDamagePosition(hitpos) - dmginfo:SetDamageForce(dmg * force_dir * mul) - if damagedself then - force_dir.x = -force_dir.x - force_dir.y = -force_dir.y - dmginfo:SetDamageForce(dmg * force_dir * (mul * 0.5)) - tr.Entity:DispatchBloodEffect() - tr.Entity:TakeDamageInfo(dmginfo) - else - tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) - end - - local phys = tr.Entity:GetPhysicsObject() - if phys and phys:IsValid() then - tr.Entity:SetPhysicsAttacker(self.Owner) - end - elseif CLIENT then - -- Fire a bullet clientside, just for decals and blood effects - if util.TraceLine({start=hitpos,endpos=hitpos+4*dir}).Entity == tr.Entity then - self:FireBullets{ - Src=hitpos, - Dir=dir, - Spread=Vector(0,0,0), - Num=1, - Damage=1, - Tracer=0, - } - end - end - end - - self:MeleeHitSound(tr) - self:OnMeleeHit(tr) - elseif tr.HitWorld then - local range = self.MeleeRange + 18 - local dir = self.Owner:GetAimVector() - - if not util.TraceLine({start=pos,endpos=pos+range*dir}).Hit then - local ang = self.Owner:EyeAngles() - ang.y = ang.y + 25 - local dir1 = ang:Forward() - ang.y = ang.y - 50 - local dir2 = ang:Forward() - - local tr1 = util.TraceLine({start=pos,endpos=pos+range*dir1}) - local tr2 = util.TraceLine({start=pos,endpos=pos+range*dir2}) - - if not tr1.Hit and not tr2.Hit then - dir = nil - elseif tr1.Fraction > tr2.Fraction then - dir = dir2 - tr.HitPos = tr2.HitPos - else - dir = dir1 - tr.HitPos = tr1.HitPos - end - end - - if CLIENT then - if dir then - self:FireBullets{ - Src=pos, - Dir=dir, - Spread=Vector(0,0,0), - Num=1, - Damage=1, - Tracer=0, - } - end - end - - self:MeleeHitSound(tr) - self:OnMeleeHit(tr) - end -end - ---[[ -usermessage.Hook("DoMeleeSwing", function(msg) - local wp = msg:ReadEntity() - local crit = msg:ReadBool() - - if crit then - wp:EmitSound(wp.SwingCrit, 100, 100) - else - wp:EmitSound(wp.Swing, 100, 100) - end -end)]] - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - if self.HasCustomMeleeBehaviour then return true end - - if SERVER and IsValid(self.Owner.TargeEntity) then - self.Owner.TargeEntity:OnMeleeSwing() - end - - if self:CriticalEffect() then - --MsgN(Format("[%f] From SWEP:PrimaryAttack (%s) : Critical hit!", CurTime(), tostring(self))) - self:EmitSound(self.SwingCrit, 100, 100) - --[[if SERVER then - self:EmitSound(self.SwingCrit, 100, 100) - umsg.Start("DoMeleeSwing",self.Owner) - umsg.Entity(self) - umsg.Bool(true) - umsg.End() - end]] - self:SendWeaponAnimEx(self.VM_SWINGHARD) - if self.HasThirdpersonCritAnimation then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) - else - self.Owner:SetAnimation(PLAYER_ATTACK1) - end - else - self:EmitSound(self.Swing, 100, 100) - --[[if SERVER then - self:EmitSound(self.Swing, 100, 100) - umsg.Start("DoMeleeSwing",self.Owner) - umsg.Entity(self) - umsg.Bool(false) - umsg.End() - end]] - - if self.UsesLeftRightAnim then - self:SendWeaponAnim(self.VM_HITLEFT) - else - self:SendWeaponAnim(self.VM_HITCENTER) - end - self.Owner:SetAnimation(PLAYER_ATTACK1) - end - - self.NextIdle = CurTime() + self:SequenceDuration() - - --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay - if not self.NextMeleeAttack then - self.NextMeleeAttack = {} - end - - self:StopTimers() - - table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) - return true -end - -function SWEP:SecondaryAttack() - if not self:CallBaseFunction("SecondaryAttack") then return false end - - if self.HasCustomMeleeBehaviour then return true end - - if self:CriticalEffect() then - self:EmitSound(self.SwingCrit, 100, 100) - --[[if SERVER then - self:EmitSound(self.SwingCrit, 100, 100) - umsg.Start("DoMeleeSwing",self.Owner) - umsg.Entity(self) - umsg.Bool(true) - umsg.End() - end]] - self:SendWeaponAnimEx(self.VM_SWINGHARD) - if self.HasThirdpersonCritAnimation then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) - else - self.Owner:SetAnimation(PLAYER_ATTACK1) - end - else - self:EmitSound(self.Swing, 100, 100) - --[[if SERVER then - self:EmitSound(self.Swing, 100, 100) - umsg.Start("DoMeleeSwing",self.Owner) - umsg.Entity(self) - umsg.Bool(false) - umsg.End() - end]] - - self:SendWeaponAnim(self.VM_HITRIGHT) - self.Owner:SetAnimation(PLAYER_ATTACK1) - end - - --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay - if not self.NextMeleeAttack then - self.NextMeleeAttack = {} - end - - table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) -end - -function SWEP:CanPrimaryAttack() - return true -end - -function SWEP:CanSecondaryAttack() - return true -end - -function SWEP:ShootEffects() -end - -function SWEP:Deploy() - self:StopTimers() - - return self:CallBaseFunction("Deploy") -end - -function SWEP:OnRemove() - self:StopTimers() - - return self:CallBaseFunction("OnRemove") -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - --if self.NextMeleeAttack and CurTime()>=self.NextMeleeAttack then - - while self.NextMeleeAttack and self.NextMeleeAttack[1] and CurTime() > self.NextMeleeAttack[1] do - self:MeleeAttack() - table.remove(self.NextMeleeAttack, 1) - - self:RollCritical() - end -end - -function SWEP:Holster() - self.NextMeleeAttack = nil - - self:StopTimers() - - return self:CallBaseFunction("Holster") -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_minigun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_minigun/shared.lua deleted file mode 100644 index 7fe360e2f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_minigun/shared.lua +++ /dev/null @@ -1,516 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -function SWEP:SetMinigunEffect(i) - if self.LastEffect==i then return end - - umsg.Start("SetMinigunEffect") - umsg.Entity(self) - umsg.Char(i) - umsg.End() - - self.LastEffect = i -end - -end - -if CLIENT then - -SWEP.PrintName = "Minigun" -SWEP.Slot = 0 -SWEP.barrelRotation = 0 -SWEP.barrelSpeed = 1 -SWEP.barrelValue1 = 0 - -function SWEP:SetMinigunEffect(i) - if self.LastEffect==i then return end - - local effect - - if i==1 then - effect = "muzzle_minigun_constant" - end - - if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then - local vm = self:GetViewModelEntity() - vm:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) - end - else - local ent = self:GetWorldModelEntity() - ent:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) - end - end - - self.LastEffect = i -end - -usermessage.Hook("SetMinigunEffect", function(msg) - local w = msg:ReadEntity() - local i = msg:ReadChar() - if IsValid(w) and w.SetMinigunEffect then - w:SetMinigunEffect(i) - end -end) - - -SWEP.MinigunMaxSpinSpeed = 10 -SWEP.MinigunSpinAcceleration = 0.07 - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - if IsValid(self.CModel) then - if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then - self.CModel.LeviathanBarrelFix = true - end - end -end - -function SWEP:InitializeWModel2() - self:CallBaseFunction("InitializeWModel2") - - if IsValid(self.WModel2) then - if string.lower(self.WModel2:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then - self.WModel2.LeviathanBarrelFix = true - end - end -end - -function SWEP:MinigunViewmodelReset() - if self.Owner==LocalPlayer() then - self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") - end -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_minigun_heavy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_minigun.mdl" -SWEP.Crosshair = "tf_crosshair4" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_minigun_constant" -SWEP.MuzzleOffset = Vector(20, 3, -10) -SWEP.TracerEffect = "bullet_tracer01" -PrecacheParticleSystem("muzzle_minigun_constant") -PrecacheParticleSystem("bullet_tracer01_red") -PrecacheParticleSystem("bullet_tracer01_red_crit") -PrecacheParticleSystem("bullet_tracer01_blue") -PrecacheParticleSystem("bullet_tracer01_blue_crit") - -SWEP.BaseDamage = 9 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 4 -SWEP.BulletSpread = 0.08 - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.1 - -SWEP.Secondary.Delay = 0.1 - -SWEP.IsRapidFire = true - -SWEP.HoldType = "PRIMARY" - -SWEP.ReloadSound = Sound("Weapon_Minigun.Reload") -SWEP.EmptySound = Sound("Weapon_Minigun.ClipEmpty") -SWEP.ShootSound2 = Sound("Weapon_Minigun.Fire") -SWEP.SpecialSound1 = Sound("Weapon_Minigun.WindUp") -SWEP.SpecialSound2 = Sound("Weapon_Minigun.WindDown") -SWEP.SpecialSound3 = Sound("Weapon_Minigun.Spin") -SWEP.ShootCritSound = Sound("Weapon_Minigun.FireCrit") - -function SWEP:CreateSounds() - self.SpinUpSound = CreateSound(self.Owner, self.SpecialSound1) - self.SpinDownSound = CreateSound(self.Owner, self.SpecialSound2) - self.SpinSound = CreateSound(self.Owner, self.SpecialSound3) - self.ShootSoundLoop = CreateSound(self.Owner, self.ShootSound2) - self.ShootCritSoundLoop = CreateSound(self.Owner, self.ShootCritSound) - - self.SoundsCreated = true -end - -function SWEP:SpinUp() - if SERVER then - self.Owner.minigunfiretime = 0 - self.Owner:Speak("TLK_WINDMINIGUN", true) - end - - --self.Owner:SetAnimation(10004) - - if SERVER then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) - end - - self:SendWeaponAnim(self.VM_PREFIRE) - - self:SetNetworkedBool("Spinning", true) - - self.Spinning = true - - self.NextEndSpinUp = CurTime() + 0.87 * (self.MinigunSpinupMultiplier or 1) - self.NextEndSpinUpSound = CurTime() + 0.87 - self.NextEndSpinDown = nil - self.NextIdle = nil - - self.SpinDownSound:Stop() - self.SpinSound:Stop() - self.SpinUpSound:Play() -end - -function SWEP:SpinDown() - --self.Owner:SetAnimation(10005) - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) - self:SendWeaponAnim(self.VM_POSTFIRE) - - self.Ready = false - self.NextEndSpinUp = nil - self.NextEndSpinUpSound = nil - self.NextEndSpinDown = CurTime() + self:SequenceDuration() - self.NextIdle = CurTime() + self:SequenceDuration() - - self.Owner:SetNWBool("MinigunReady", false) - --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - self:SetNetworkedBool("Spinning", false) - self.Spinning = false - - self.SpinUpSound:Stop() - self.SpinSound:Stop() - self.SpinDownSound:Play() -end - -function SWEP:ShootEffects() -end - -function SWEP:StopFiring() - if SERVER then - self:SetMinigunEffect(0) - self.Owner.minigunfiretime = 0 - self.StartTime = nil - self.Owner:SetAnimation(PLAYER_IDLE) - end - - self.SpinSound:Play() - self.ShootSoundLoop:Stop() - self.ShootCritSoundLoop:Stop() - self.Firing = false -end - -function SWEP:CanPrimaryAttack() - if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then - - self:EmitSound( "Weapon_Pistol.Empty" ) - self:SetNextPrimaryFire( CurTime() + 0.2 ) - self:Reload() - return false - - end - - return true -end - -function SWEP:PrimaryAttack(vampire) - if not self.IsDeployed then return false end - - if not self.Spinning then - self.IsVampire = vampire - self:SpinUp() - end - - if not self.Ready then return end - - if not self:CanPrimaryAttack() then - if self.Firing then self:StopFiring() end - return - end - - local Delay = self.Delay or -1 - - if Delay>=0 and CurTime()self.NextPlayerTalk then - self.Owner:Speak("TLK_MINIGUN_FIREWEAPON") - self.NextPlayerTalk = CurTime() + 1 - end - end - - if self:RollCritical() then - if not self.Critting or not self.Firing then - self:SetMinigunEffect(1) - self.SpinSound:Stop() - self.ShootSoundLoop:Stop() - self.ShootCritSoundLoop:Play() - self.Firing = true - end - self.Critting = true - else - if self.Critting or not self.Firing then - self:SetMinigunEffect(1) - self.SpinSound:Stop() - self.ShootCritSoundLoop:Stop() - self.ShootSoundLoop:Play() - self.Firing = true - end - self.Critting = false - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) - self:TakePrimaryAmmo(1) - self:RustyBulletHole() -end - -function SWEP:SecondaryAttack() - if self.AltFireMode == 1 then - return self:PrimaryAttack(true) - end - - if not self.IsDeployed then return false end - - if not self.Spinning then - self:SpinUp() - end -end - -function SWEP:Reload() -end - -function SWEP:Think() - self:TFViewModelFOV() - - if SERVER and self.NextReplayDeployAnim then - if CurTime() > self.NextReplayDeployAnim then - --MsgFN("Replaying deploy animation %d", self.VM_DRAW) - timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) - self.NextReplayDeployAnim = nil - end - end - - if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then - self.IsDeployed = true - end - - if SERVER then - if self.Spinning then - self.Owner:SetClassSpeed(37 * (self.DeployMoveSpeedMultiplier or 1)) - self.Owner:SetCrouchedWalkSpeed(0) - else - self.Owner:ResetClassSpeed() - end - end - - if not self.SoundsCreated then - self:CreateSounds() - end - - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - - if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then - self.SpinUpSound:Stop() - self.SpinSound:Play() - self.NextEndSpinUpSound = nil - end - - if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then - self.Ready = true - self.Owner:SetNWBool("MinigunReady", true) - --self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) - self.NextEndSpinUp = nil - end - - if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then - self.NextEndSpinDown = nil - end - - if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then - self:StopFiring() - self:SendWeaponAnim(self.VM_SECONDARYATTACK) - end - - if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then - if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then - self:SpinDown() - end - end - - if CLIENT then - - if self:GetNetworkedBool("Spinning") then - --[[if self:GetItemData().attach_to_hands == 1 then - return - end]] - - if self.barrelSpeed <= 12 then - - self.barrelRotation = self.barrelRotation + self.barrelSpeed - self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 - - end - - if self.barrelSpeed > 12 then - - self.barrelSpeed = 12 - - end - - if self.barrelRotation > 360 then - - self.barrelRotation = self.barrelRotation - 360 - - end - - end - - if not self:GetNetworkedBool("Spinning") then - - if self.barrelSpeed > 0 then - - self.barrelRotation = self.barrelRotation + self.barrelSpeed - self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 - - end - - if self.barrelSpeed < 0 then - - self.barrelSpeed = 0 - - end - - end - - end - - if self.barrelSpeed == 0 then - if self:GetItemData().attach_to_hands == 1 then - if CLIENT and IsValid(self.CModel) and self.CModel:LookupBone("barrel") then - self:StopSound(self.SpecialSound2) - end - else - self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) - end - end - - if ( CLIENT ) then - if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then - bone = self.CModel:LookupBone("barrel") - if bone then - self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) - self.WModel2:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) - else - return - end - else - self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) - end - - else - //self.WModel2:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) - end - - self.barrelValue1 = CurTime() - - self:Inspect() - -end - -function SWEP:Holster() - if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) - end - - if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then - return false - end - - if self.SoundsCreated then - self.SpinUpSound:Stop() - self.SpinDownSound:Stop() - self.SpinSound:Stop() - self.ShootSoundLoop:Stop() - self.ShootCritSoundLoop:Stop() - end - - self.Spinning = nil - self.Ready = nil - self.NextEndSpinUp = nil - self.NextEndSpinDown = nil - - if SERVER and IsValid(self.Owner) then - self.Owner:SetNWBool("MinigunReady", false) - --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - self.Owner:ResetClassSpeed() - end - - if CLIENT then - if self.Owner==LocalPlayer() then - self.ViewmodelInitialized = false - self:MinigunViewmodelReset() - end - end - - if self:GetItemData().attach_to_hands == 1 then - - elseif self.Owner and IsValid(self.Owner:GetViewModel()) then - self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) - end - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self.Owner = self.CurrentOwner - self.Removed = true - self:Holster() -end - -if SERVER then - -hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - local att = dmginfo:GetAttacker() - - if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then - if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then - GAMEMODE:HealPlayer(att, att, 3, true, false) - att.LastHealthBuffTime = CurTime() - end - end -end) - -hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - - if inf.IsVampire then - dmginfo:ScaleDamage(0.25) - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_minigun_flare/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_minigun_flare/shared.lua deleted file mode 100644 index e163be693..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_minigun_flare/shared.lua +++ /dev/null @@ -1,516 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -function SWEP:SetMinigunEffect(i) - if self.LastEffect==i then return end - - umsg.Start("SetMinigunEffect") - umsg.Entity(self) - umsg.Char(i) - umsg.End() - - self.LastEffect = i -end - -end - -if CLIENT then - -SWEP.PrintName = "Minigun" -SWEP.Slot = 0 - -function SWEP:SetMinigunEffect(i) - if self.LastEffect==i then return end - - local effect - - if i==1 then - effect = "muzzle_minigun_constant" - end - - if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then - local vm = self:GetViewModelEntity() - vm:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) - end - else - local ent = self:GetWorldModelEntity() - ent:StopParticles() - if effect then - ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) - end - end - - self.LastEffect = i -end - -usermessage.Hook("SetMinigunEffect", function(msg) - local w = msg:ReadEntity() - local i = msg:ReadChar() - if IsValid(w) and w.SetMinigunEffect then - w:SetMinigunEffect(i) - end -end) - - -SWEP.MinigunMaxSpinSpeed = 0 -SWEP.MinigunSpinAcceleration = 0 - -local function MinigunBuildBoneW(ent) - if IsValid(ent.MinigunEntity) and ent.MinigunEntity==ent.MinigunEntity.Owner:GetActiveWeapon() then - local bone = ent:LookupBone("barrel") - - local mat = ent:GetBoneMatrix(bone) - - if mat then - mat:Rotate(Angle(0, ent.MinigunEntity.BarrelAngle or 0, 0)) - ent:SetBoneMatrix(bone, mat) - end - end -end - -local function MinigunBuildBoneV(ent) - if IsValid(ent.MinigunEntity) and ent.MinigunEntity==ent.MinigunEntity.Owner:GetActiveWeapon() then - local bone = ent:LookupBone("v_minigun_barrel") - - local mat = ent:GetBoneMatrix(bone) - - if mat then - mat:Rotate(Angle(0, 0, ent.MinigunEntity.BarrelAngle or 0)) - ent:SetBoneMatrix(bone, mat) - end - end -end - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - if IsValid(self.CModel) then - self.CModel.MinigunEntity = self - self.CModel:AddBuildBoneHook("MinigunBarrel", MinigunBuildBoneW) - end -end - -function SWEP:InitializeWModel2() - self:CallBaseFunction("InitializeWModel2") - - if IsValid(self.WModel2) then - self.WModel2.MinigunEntity = self - self.WModel2:AddBuildBoneHook("MinigunBarrel", MinigunBuildBoneW) - end -end - -function SWEP:ViewModelDrawn() - if not self.ViewmodelInitialized then - self:MinigunViewmodelSpin() - end - - self:CallBaseFunction("ViewModelDrawn") -end - ---[[ -function SWEP:BuildBonePositions() - local bone = self:LookupBone("barrel") - - local mat = self:GetBoneMatrix(bone) - mat:Rotate(Angle(0, self.BarrelAngle or 0, 0)) - self:SetBoneMatrix(bone, mat) -end]] - -function SWEP:MinigunViewmodelSpin() - --Msg("MinigunViewmodelSpin\n") - if self.Owner==LocalPlayer() then - if self:GetItemData().attach_to_hands == 1 then - return - end - - local vm = self.Owner:GetViewModel() - if vm and vm:IsValid() then - vm.MinigunEntity = self - vm:AddBuildBoneHook("MinigunBarrel", MinigunBuildBoneV) - - vm:InvalidateBoneCache() - vm:SetupBones() - self.ViewmodelInitialized = true - end - end -end - -function SWEP:MinigunViewmodelReset() - if self.Owner==LocalPlayer() then - self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") - end -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_minigun_heavy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_minigun.mdl" -SWEP.Crosshair = "tf_crosshair4" - -SWEP.MuzzleEffect = "muzzle_minigun_constant" -SWEP.MuzzleOffset = Vector(20, 3, -10) -SWEP.TracerEffect = "bullet_tracer01" - -SWEP.BaseDamage = 9 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 4 -SWEP.BulletSpread = 0.08 - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.1 - -SWEP.Secondary.Delay = 0.1 - -SWEP.IsRapidFire = true - -SWEP.HoldType = "PRIMARY" - -SWEP.ReloadSound = Sound("Weapon_Minigun.Reload") -SWEP.EmptySound = Sound("Weapon_Minigun.ClipEmpty") -SWEP.ShootSound2 = Sound("Weapon_Minigun.Fire") -SWEP.SpecialSound1 = Sound("Weapon_Minigun.WindUp") -SWEP.SpecialSound2 = Sound("Weapon_Minigun.WindDown") -SWEP.SpecialSound3 = Sound("Weapon_Minigun.Spin") -SWEP.ShootCritSound = Sound("Weapon_Minigun.FireCrit") - -function SWEP:CreateSounds() - self.SpinUpSound = CreateSound(self.Owner, self.SpecialSound1) - self.SpinDownSound = CreateSound(self.Owner, self.SpecialSound2) - self.SpinSound = CreateSound(self.Owner, self.SpecialSound3) - self.ShootSoundLoop = CreateSound(self.Owner, self.ShootSound2) - self.ShootCritSoundLoop = CreateSound(self.Owner, self.ShootCritSound) - - self.SoundsCreated = true -end - -function SWEP:SpinUp() - if SERVER then - self.Owner.minigunfiretime = 0 - self.Owner:Speak("TLK_WINDMINIGUN", true) - end - - --self.Owner:SetAnimation(10004) - - if SERVER then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) - end - - self:SendWeaponAnim(self.VM_PREFIRE) - - self:SetNetworkedBool("Spinning", true) - - self.Spinning = true - - self.NextEndSpinUp = CurTime() + 0.87 * (self.MinigunSpinupMultiplier or 1) - self.NextEndSpinUpSound = CurTime() + 0.87 - self.NextEndSpinDown = nil - self.NextIdle = nil - - self.SpinDownSound:Stop() - self.SpinSound:Stop() - self.SpinUpSound:Play() -end - -function SWEP:SpinDown() - --self.Owner:SetAnimation(10005) - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) - self:SendWeaponAnim(self.VM_POSTFIRE) - - self.Ready = false - self.NextEndSpinUp = nil - self.NextEndSpinUpSound = nil - self.NextEndSpinDown = CurTime() + self:SequenceDuration() - self.NextIdle = CurTime() + self:SequenceDuration() - - self.Owner:SetNWBool("MinigunReady", false) - --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - self:SetNetworkedBool("Spinning", false) - self.Spinning = false - - self.SpinUpSound:Stop() - self.SpinSound:Stop() - self.SpinDownSound:Play() -end - -function SWEP:ShootEffects() -end - -function SWEP:StopFiring() - if SERVER then - self:SetMinigunEffect(0) - self.Owner.minigunfiretime = 0 - self.StartTime = nil - end - - self.ShootSoundLoop:Stop() - self.ShootCritSoundLoop:Stop() - self.Firing = false -end - -function SWEP:CanPrimaryAttack() - if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then - - self:EmitSound( "Weapon_Pistol.Empty" ) - self:SetNextPrimaryFire( CurTime() + 0.2 ) - self:Reload() - return false - - end - - return true -end - -function SWEP:PrimaryAttack(vampire) - if not self.IsDeployed then return false end - - if not self.Spinning then - self.IsVampire = vampire - self:SpinUp() - end - - if not self.Ready then return end - - if not self:CanPrimaryAttack() then - if self.Firing then self:StopFiring() end - return - end - - local Delay = self.Delay or -1 - - if Delay>=0 and CurTime()self.NextPlayerTalk then - self.Owner:Speak("TLK_MINIGUN_FIREWEAPON") - self.NextPlayerTalk = CurTime() + 1 - end - end - - if self:RollCritical() then - if not self.Critting or not self.Firing then - self:SetMinigunEffect(1) - self.ShootSoundLoop:Stop() - self.ShootCritSoundLoop:Play() - self.Firing = true - end - self.Critting = true - else - if self.Critting or not self.Firing then - self:SetMinigunEffect(1) - self.ShootCritSoundLoop:Stop() - self.ShootSoundLoop:Play() - self.Firing = true - end - self.Critting = false - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) - self:TakePrimaryAmmo(1) -end - -function SWEP:SecondaryAttack() - if self.AltFireMode == 1 then - return self:PrimaryAttack(true) - end - - if not self.IsDeployed then return false end - - if not self.Spinning then - self:SpinUp() - end -end - -function SWEP:Reload() -end - -function SWEP:Think() - if SERVER and self.NextReplayDeployAnim then - if CurTime() > self.NextReplayDeployAnim then - --MsgFN("Replaying deploy animation %d", self.VM_DRAW) - timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) - self.NextReplayDeployAnim = nil - end - end - - if CLIENT and self.Owner==LocalPlayer() then - if not self.BarrelAngle then self.BarrelAngle = 0 end - - if not self.SpinSpeed then self.SpinSpeed = 0 end - - self.BarrelAngle = self.BarrelAngle + self.SpinSpeed - while self.BarrelAngle>360 do - self.BarrelAngle = self.BarrelAngle - 360 - end - - local Spinning = self:GetNetworkedBool("Spinning") - - if Spinning and self.SpinSpeed0 then - self.SpinSpeed = self.SpinSpeed - self.MinigunSpinAcceleration - if self.SpinSpeed<0 then self.SpinSpeed = 0 end - end - - --[[self.BarrelAngle = self.BarrelAngle + 1 - while self.BarrelAngle>360 do - self.BarrelAngle = self.BarrelAngle - 360 - end]] - end - - if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then - self.IsDeployed = true - end - - if SERVER then - if self.Spinning then - self.Owner:SetClassSpeed(37 * (self.DeployMoveSpeedMultiplier or 1)) - self.Owner:SetCrouchedWalkSpeed(0) - else - self.Owner:ResetClassSpeed() - end - end - - if not self.SoundsCreated then - self:CreateSounds() - end - - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - - if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then - self.SpinUpSound:Stop() - self.SpinSound:Play() - self.NextEndSpinUpSound = nil - end - - if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then - self.Ready = true - self.Owner:SetNWBool("MinigunReady", true) - --self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) - self.NextEndSpinUp = nil - end - - if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then - self.SpinDownSound:Stop() - self.NextEndSpinDown = nil - end - - if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then - self:StopFiring() - self:SendWeaponAnim(self.VM_SECONDARYATTACK) - end - - if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then - if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then - self:SpinDown() - end - end -end - -function SWEP:ShootProjectile() - if SERVER then - local syringe = ents.Create("tf_projectile_flare") - local ang = self.Owner:EyeAngles() - - syringe:SetPos(self:ProjectileShootPos()) - syringe:SetAngles(ang) - syringe.Inflictor = self - if self:Critical() then - syringe.critical = true - end - syringe:SetOwner(self.Owner) - syringe:Spawn() - end - - self:ShootEffects() -end - -function SWEP:Holster() - if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) - end - - if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then - return false - end - - if self.SoundsCreated then - self.SpinUpSound:Stop() - self.SpinDownSound:Stop() - self.SpinSound:Stop() - self.ShootSoundLoop:Stop() - self.ShootCritSoundLoop:Stop() - end - - self.Spinning = nil - self.Ready = nil - self.NextEndSpinUp = nil - self.NextEndSpinDown = nil - - if SERVER and IsValid(self.Owner) then - self.Owner:SetNWBool("MinigunReady", false) - --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - self.Owner:ResetClassSpeed() - end - - if CLIENT then - if self.Owner==LocalPlayer() then - self.ViewmodelInitialized = false - self:MinigunViewmodelReset() - end - end - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self.Owner = self.CurrentOwner - self.Removed = true - self:Holster() -end - -if SERVER then - -hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - local att = dmginfo:GetAttacker() - - if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then - if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then - GAMEMODE:HealPlayer(att, att, 3, true, false) - att.LastHealthBuffTime = CurTime() - end - end -end) - -hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - - if inf.IsVampire then - dmginfo:ScaleDamage(0.25) - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_nailgun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_nailgun/shared.lua deleted file mode 100644 index c3ab3d22e..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_nailgun/shared.lua +++ /dev/null @@ -1,59 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Nailgun" -SWEP.Slot = 0 - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/advancedweaponiser/nailgun/v_nailgun.mdl" -SWEP.WorldModel = "models/advancedweaponiser/nailgun/c_nailgun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "muzzle_pistol" - -SWEP.ShootSound = Sound("weapons/nail_gun_shoot.wav") -SWEP.ShootCritSound = Sound("weapons/nail_gun_shoot_crit.wav") -SWEP.ReloadSound = Sound("weapons/nail_gun_worldreload.wav") - -SWEP.Primary.ClipSize = 40 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.1 - -SWEP.BulletSpread = 0.01 - -SWEP.IsRapidFire = true -SWEP.ReloadSingle = false - -SWEP.HoldType = "SECONDARY" - -SWEP.ProjectileShootOffset = Vector(0, 8, -5) - -function SWEP:ShootProjectile() - if SERVER then - local syringe = ents.Create("tf_projectile_nail") - local ang = self.Owner:EyeAngles() - local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() - - syringe:SetPos(self:ProjectileShootPos()) - syringe:SetAngles(vec:Angle()) - if self:Critical() then - syringe.critical = true - end - syringe:SetOwner(self.Owner) - --syringe:SetProjectileType(1) - - self:InitProjectileAttributes(syringe) - - syringe:Spawn() - end - - self:ShootEffects() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_passtime_gun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_passtime_gun/shared.lua deleted file mode 100644 index 49466d8c1..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_passtime_gun/shared.lua +++ /dev/null @@ -1,153 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Jack" -SWEP.Slot = 5 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" -SWEP.WorldModel = "models/passtime/ball/passtime_ball.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("Weapon_Shovel.Miss") -SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Shovel.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") - -local SpeedTable = { -{40, 1.6}, -{80, 1.4}, -{120, 1.2}, -{160, 1.1}, -} - -SWEP.MinDamage = 0.5 -SWEP.MaxDamage = 1.75 - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 -SWEP.Ball = 1 - -SWEP.CanInspect = false - -SWEP.VM_DRAW = ACT_BALL_VM_PICKUP -SWEP.VM_IDLE = ACT_BALL_VM_IDLE -SWEP.VM_THROWBALL = ACT_BALL_VM_THROW_START -SWEP.VM_RELOAD = ACT_BALL_VM_CATCH - -SWEP.AddPitch = 0 -SWEP.ProjectileShootOffset = Vector(0, 7, -6) -SWEP.Force = 1100 - -SWEP.CriticalChance = 0 - -SWEP.HoldType = "MELEE_ALLCLASS" - - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -idle_timer = 1 -end_timer = 1 -post_timer = 3.80 -self.VM_DRAW = ACT_BALL_VM_PICKUP -self.VM_IDLE = ACT_BALL_VM_IDLE -self.VM_HITCENTER = ACT_BALL_VM_THROW_START -self.VM_SWINGHARD = ACT_BALL_VM_THROW_END -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if self.Owner:GetPlayerClass() == "scout" then - self.Primary.Delay = 0.5 - else - self.Primary.Delay = 0.80 - end -end - -function SWEP:PrimaryAttack() - if self.Ball == 0 then - return - end - - self:SendWeaponAnim(self.VM_HITCENTER) - self.Owner:DoAttackEvent() - - self.NextIdle = CurTime() + self:SequenceDuration() - - self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) - - self:StopTimers() - - self.Ball = 0 - - return true -end - -function SWEP:ShootProjectile() - timer.Simple(0.26, function() - if IsValid(self) then - self:SendWeaponAnim(self.VM_SWINGHARD) - end - end) - - timer.Simple(0.46, function() - if IsValid(self) then - if SERVER then - local grenade = ents.Create("tf_projectile_passtime_ball") - grenade:SetModel("models/passtime/ball/passtime_ball.mdl") - grenade:SetPos(self:ProjectileShootPos()) - grenade:SetAngles(self.Owner:EyeAngles()) - - - self:InitProjectileAttributes(grenade) - - grenade.NameOverride = self:GetItemData().item_iconname - grenade:Spawn() - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - - grenade:GetPhysicsObject():ApplyForceCenter(vel) - self.Owner:EmptyLoadoutSlot("pda2") - end - end - end) -end - -function SWEP:OnDrop() - self.Ball = 1 - //self:Remove() - - //self:SetPos(self:ProjectileShootPos()) - //self:SetAngles(self.Owner:EyeAngles()) - - //local vel = self.Owner:GetAimVector():Angle() - //vel.p = vel.p + self.AddPitch - //vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - self:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - - self:GetPhysicsObject():ApplyForceCenter(Vector(math.random(-2000,2000))) - - self:SetMoveType(MOVETYPE_VPHYSICS) - self:SetSolid(SOLID_CUSTOM) - self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) -end - -function SWEP:OnRemove() - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_engineer_build/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_engineer_build/shared.lua deleted file mode 100644 index 0cf1e4424..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_engineer_build/shared.lua +++ /dev/null @@ -1,46 +0,0 @@ -if SERVER then - -AddCSLuaFile("shared.lua") - -end - -SWEP.Base = "tf_weapon_base" - -SWEP.ViewModel = "models/weapons/v_models/v_builder_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_builder.mdl" - -SWEP.HoldType = "PDA" -SWEP.IsPDA = true -SWEP.Primary.Automatic = false -SWEP.Primary.Ammo = "none" - -if CLIENT then - -SWEP.PrintName = "Build PDA" -SWEP.Slot = 3 -SWEP.Crosshair = "tf_crosshair6" - -SWEP.CustomHUD = {HudEngyMenuBuild = true} - -local BuilderParams = { - {2,0}, - {0,0}, - {1,0}, - {1,1}, -} - -hook.Add("PlayerBindPress", "TFBuildPDASlot", function(pl, bind) - if IsValid(LocalPlayer():GetActiveWeapon()) and LocalPlayer():GetActiveWeapon():GetClass() == "tf_weapon_pda_engineer_build" then - local num = tonumber(string.match(bind, "^slot(%d)") or "") - if num then - local param = BuilderParams[num] - - if param then - RunConsoleCommand("build", unpack(param)) - return true - end - end - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_engineer_destroy/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_engineer_destroy/shared.lua deleted file mode 100644 index e2d33b5af..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_engineer_destroy/shared.lua +++ /dev/null @@ -1,46 +0,0 @@ -if SERVER then - -AddCSLuaFile("shared.lua") - -end - -SWEP.Base = "tf_weapon_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pda_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_pda_engineer.mdl" - -SWEP.HoldType = "PDA" -SWEP.IsPDA = true -SWEP.Primary.Automatic = false -SWEP.Primary.Ammo = "none" - -if CLIENT then - -SWEP.PrintName = "Demolish PDA" -SWEP.Slot = 4 -SWEP.Crosshair = "tf_crosshair6" - -SWEP.CustomHUD = {HudEngyMenuDestroy = true} - -local BuilderParams = { - {2,0}, - {0,0}, - {1,0}, - {1,1}, -} - -hook.Add("PlayerBindPress", "TFBuildPDASlotDestroy", function(pl, bind) - if IsValid(LocalPlayer():GetActiveWeapon()) and LocalPlayer():GetActiveWeapon():GetClass() == "tf_weapon_pda_engineer_destroy" then - local num = tonumber(string.match(bind, "^slot(%d)") or "") - if num then - local param = BuilderParams[num] - - if param then - RunConsoleCommand("destroy", unpack(param)) - return true - end - end - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_spy/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_spy/shared.lua deleted file mode 100644 index a60ff96ca..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pda_spy/shared.lua +++ /dev/null @@ -1,22 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -SWEP.Base = "tf_weapon_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pda_spy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_cigarette_case.mdl" - -SWEP.HoldType = "PDA" - -SWEP.IsPDA = true -SWEP.Primary.Automatic = false -SWEP.Primary.Ammo = "none" - -if CLIENT then - -SWEP.PrintName = "Build PDA" -SWEP.Slot = 3 -SWEP.Crosshair = "" - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pipebomblauncher/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pipebomblauncher/shared.lua deleted file mode 100644 index bc343b4f1..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pipebomblauncher/shared.lua +++ /dev/null @@ -1,310 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Stickybomb Launcher" -SWEP.Slot = 1 - -SWEP.GlobalCustomHUD = {HudDemomanPipes = true} -SWEP.CustomHUD = {HudBowCharge = true} - -function SWEP:ClientStartCharge() - self.ClientCharging = true - self.ClientChargeStart = CurTime() -end - -function SWEP:ClientEndCharge() - self.ClientCharging = false -end - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.HasTeamColouredVModel = false -SWEP.HasTeamColouredWModel = false - -SWEP.ViewModel = "models/weapons/v_models/v_stickybomb_launcher_demo.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_stickybomb_launcher.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pipelauncher" -PrecacheParticleSystem("muzzle_pipelauncher") - -SWEP.ShootSound = Sound("Weapon_StickyBombLauncher.Single") -SWEP.ShootCritSound = Sound("Weapon_StickyBombLauncher.SingleCrit") -SWEP.DetonateSound = Sound("Weapon_StickyBombLauncher.ModeSwitch") -SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") -SWEP.ReloadSound = Sound("Weapon_StickyBombLauncher.WorldReload") -SWEP.Primary.ClipSize = 8 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.6 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.MaxBombs = 8 -SWEP.Bombs = {} - -SWEP.ProjectileShootOffset = Vector(0, 13, -10) -SWEP.MinForce = 805 -SWEP.MaxForce = 805*2.3 -SWEP.AddPitch = -4 - -SWEP.SensorCone = 30 -SWEP.NoSensorDetonateRadius = 100 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -function SWEP:InspectAnimCheck() -self.VM_INSPECT_START = ACT_SECONDARY_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_SECONDARY_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_SECONDARY_VM_INSPECT_END -end - -function SWEP:Deploy() - if CLIENT then - HudBowCharge:SetProgress(0) - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:OnEquipAttribute(a, owner) - if a.attribute_class == "mult_maxammo_secondary" then - self.Safe = true - end -end - -function SWEP:IsBombInSensorCone(ent) - local dot = self.Owner:GetAimVector():Dot((ent:GetPos() - self.Owner:GetShootPos()):GetNormal()) - - if not self.SensorCos then - self.SensorCos = math.cos(math.rad(self.SensorCone * 0.5)) - end - - return dot >= self.SensorCos -end - -function SWEP:InitOwner() - self.Owner:SetNWInt("NumBombs", 0) - self.Owner.Bombs = {} -end - -function SWEP:CreateSounds() - self.ChargeUpSound = CreateSound(self, self.ChargeSound) - - self.SoundsCreated = true -end - -function SWEP:PrimaryAttack() - if not self.IsDeployed then return false end - if self.Reloading then return false end - - self.NextDeployed = nil - - -- Already charging - if self.Charging then return end - - local Delay = self.Delay or -1 - local QuickDelay = self.QuickDelay or -1 - - if (not(self.Primary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK) and QuickDelay>=0 and CurTime() 4) then - self.Charging = false - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:DoAttackEvent() - - self.NextIdle = CurTime() + self:SequenceDuration() - - self:ShootProjectile() - self:TakePrimaryAmmo(1) - - self.Delay = CurTime() + self.Primary.Delay - self.QuickDelay = CurTime() + self.Primary.QuickDelay - - if SERVER then - self:CallOnClient("ClientEndCharge", "") - end - - if self:Clip1() <= 0 then - self:Reload() - end - - if SERVER and not self.Primary.NoFiringScene then - self.Owner:Speak("TLK_FIREWEAPON", true) - end - - self:RollCritical() -- Roll and check for criticals first - - if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then - self.ChargeUpSound:Stop() - self.ChargeUpSound = nil - end - else - if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then - self.ChargeUpSound = CreateSound(self, self.ChargeSound) - self.ChargeUpSound:Play() - end - end - end -end - -function SWEP:GlobalSecondaryAttack() - if SERVER then - self:DetonateProjectiles() - end -end - -function SWEP:ShootProjectile() - if SERVER then - if not self.Owner.Bombs then - self:InitOwner() - end - - if auto_reload then - timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() self:Reload() end) - end - - local grenade = ents.Create("tf_projectile_pipe_remote") - grenade:SetPos(self:ProjectileShootPos()) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - grenade:SetOwner(self.Owner) - - self:InitProjectileAttributes(grenade) - - grenade:Spawn() - - if self.Safe == true then - grenade:SetModel("models/weapons/w_models/w_stickybomb2.mdl") - end - - local force = Lerp((CurTime() - self.ChargeStartTime) / 4, self.MinForce, self.MaxForce) - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - grenade:GetPhysicsObject():ApplyForceCenter(vel) - - table.insert(self.Owner.Bombs, grenade) - if #self.Owner.Bombs>self.MaxBombs then - table.remove(self.Owner.Bombs, 1):DoExplosion() - end - - self.Owner:SetNWInt("NumBombs", #self.Owner.Bombs) - end - self:ShootEffects() - self.Owner:ViewPunch( self.PunchView ) -end - -function SWEP:DetonateProjectiles(nosound, noexplode) - if SERVER then - local owner = (IsValid(self.Owner) and self.Owner) or self.CurrentOwner - - if not self or not self:IsValid() then return end - - if not owner.Bombs then - self:InitOwner() - end - - local det = false - - if not owner.Bombs then return end - - for k=#owner.Bombs,1,-1 do - local bomb = owner.Bombs[k] - local ready = bomb and (bomb.Ready or noexplode) - - if ready and bomb.DetonateMode == 1 and not noexplode then - if bomb:GetPos():Distance(owner:GetShootPos()) > self.NoSensorDetonateRadius and not self:IsBombInSensorCone(bomb) then - ready = false - end - end - - if ready then - if noexplode then - bomb:Break() - else - bomb:DoExplosion() - det = true - end - table.remove(owner.Bombs, k) - end - end - - if det and not nosound then - self:EmitSound(self.DetonateSound, 100, 100) - end - - owner:SetNWInt("NumBombs", #owner.Bombs) - end -end - -function SWEP:OnRemove() - self:DetonateProjectiles(true, true) - - if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then - self.ChargeUpSound:Stop() - end -end - diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pistol/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pistol/shared.lua deleted file mode 100644 index cc68204a8..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pistol/shared.lua +++ /dev/null @@ -1,53 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Pistol" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pistol_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_pistol.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pistol" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("weapons/pistol_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_pistol") - -SWEP.BaseDamage = 15 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.04 - -SWEP.Primary.ClipSize = 12 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.17 - -SWEP.HoldType = "SECONDARY" - -SWEP.IsRapidFire = true - -function SWEP:InspectAnimCheck() - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pistol_scout/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pistol_scout/shared.lua deleted file mode 100644 index d3006a4a8..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_pistol_scout/shared.lua +++ /dev/null @@ -1,50 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Pistol" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_pistol_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_pistol.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pistol" ---SWEP.BetaMuzzle = "tf_muzzleflash_beta" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("weapons/pistol_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReload") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_pistol") - -SWEP.BaseDamage = 15 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.04 - -SWEP.Primary.ClipSize = 12 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.17 - -SWEP.HoldType = "SECONDARY" - -SWEP.IsRapidFire = true \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_revolver/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_revolver/shared.lua deleted file mode 100644 index 83826cb83..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_revolver/shared.lua +++ /dev/null @@ -1,131 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - -SWEP.PrintName = "Revolver" -SWEP.Slot = 0 - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_revolver_spy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_revolver.mdl" -SWEP.Crosshair = "tf_crosshair2" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_revolver" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("Weapon_Revolver.Single") -SWEP.ShootCritSound = Sound("Weapon_Revolver.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Revolver.WorldReload") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_revolver") - -SWEP.BaseDamage = 40 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.52 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.025 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.58 - -SWEP.HoldType = "SECONDARY" - -SWEP.AutoReloadTime = 0.10 - -SWEP.IsRapidFire = false - --- Ambassador properties -SWEP.AccuracyRecoveryStartDelay = 0.5 -SWEP.AccuracyRecoveryDelay = 0.75 - -SWEP.MinSpread = 0 -SWEP.MaxSpread = 0.06 -SWEP.CrosshairMaxScale = 3 - -if CLIENT then - - usermessage.Hook("AmbassadorFired", function(msg) - local self = msg:ReadEntity() - - self.CrosshairScale = self.CrosshairMaxScale - self.NextStartRecovery = CurTime() + self.AccuracyRecoveryStartDelay - self.NextEndRecovery = nil - end) - -end - -function SWEP:OnEquipAttribute(a, owner) - if a.attribute_class == "set_weapon_mode" then - if a.value == 1 then - self.CriticalChance = 0 - self.CritsOnHeadshot = true - self.BulletSpread = 0 - self.HeadshotName = "tf_weapon_ambassador_headshot" - self.PredictCritServerside = true - self.AutoReloadTime = 0.21 - end - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - if self.WeaponMode == 1 then - self.CritsOnHeadshot = false - self.NameOverride = nil - - self.BulletSpread = self.MaxSpread - - self.NextStartRecovery = CurTime() + self.AccuracyRecoveryStartDelay - self.NextEndRecovery = nil - - if SERVER then - umsg.Start("AmbassadorFired", self.Owner) - umsg.Entity(self) - umsg.End() - end - end - - return true -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if self.WeaponMode == 1 then - if self.NextStartRecovery and CurTime()>self.NextStartRecovery then - self.NextStartRecovery = nil - self.NextEndRecovery = CurTime() + self.AccuracyRecoveryDelay - end - - if self.NextEndRecovery then - local diff = self.NextEndRecovery - CurTime() - local r = math.Clamp(diff/self.AccuracyRecoveryDelay, 0, 1) - self.CrosshairScale = Lerp(r, 1, self.CrosshairMaxScale) - self.BulletSpread = Lerp(r, self.MinSpread, self.MaxSpread) - - if diff<=0 then - self.CritsOnHeadshot = true - self.NextEndRecovery = nil - end - end - end -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_robot_arm/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_robot_arm/shared.lua deleted file mode 100644 index e8b370279..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_robot_arm/shared.lua +++ /dev/null @@ -1,171 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "The Gunslinger" - SWEP.Slot = 2 - SWEP.GlobalCustomHUD = {HudAccountPanel = true} -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_engineer_gunslinger.mdl" -SWEP.WorldModel = "" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.DropPrimaryWeaponInstead = true - -SWEP.Swing = Sound("Weapon_Gunslinger.Swing") -SWEP.SwingCrit = Sound("Weapon_Gunslinger.Swing") -SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Wrench.HitWorld") -SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") -SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 -SWEP.IsRoboArm = true - -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "ITEM2" - -SWEP.NoHitSound = true -SWEP.UpgradeSpeed = 25 -SWEP.HasThirdpersonCritAnimation = true - -SWEP.AltIdleAnimationProbability = 0.1 - -//function SWEP:SetupWModel - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Int", 1, "Combo") -end - -//Do not enable as this it breaks the gunslinger anims ---[[function SWEP:SetupCModelActivities(item, noreplace) - self:CallBaseFunction("SetupCModelActivities", item, noreplace) - - if item then - local hold = string.upper(item.anim_slot or item.item_slot) - - self.VM_HITCENTER = debug.getregistry()["ACT_"..hold.."_VM_HITCENTER"] or ACT_VM_HITCENTER - self.VM_SWINGHARD = debug.getregistry()["ACT_"..hold.."_VM_SWINGHARD"] or ACT_VM_SWINGHARD - end -end]] - ---[[function SWEP:Deploy() - -end]] - -function SWEP:Equip() -- weird workaround hack for viewmodel bug - if IsValid(self) and IsValid(self.Owner) then - local lastwep = self.Owner:GetActiveWeapon():GetClass() - self.Owner:SelectWeapon(self:GetClass()) - timer.Simple(0.1, function() if IsValid(self) and IsValid(self.Owner) then self.Owner:SelectWeapon(lastwep) end end) - end -end - -function SWEP:OnMeleeAttack(tr) - if SERVER then - local hit = false - - if IsValid(tr.Entity) and tr.Entity:IsTFPlayer() and !tr.Entity:IsBuilding() then - hit = true - end - - if hit then - self.HasHit = true - else - self.dt.Combo = 0 - end - end -end - -function SWEP:OnMeleeHit(tr) - if tr.Entity and tr.Entity:IsValid() then - if tr.Entity:IsBuilding() then - local ent = tr.Entity - - if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then - if SERVER then - local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) - if m > 0 then - self:EmitSound(self.HitBuildingSuccess) - self.Owner:RemoveAmmo(m, TF_METAL) - umsg.Start("PlayerMetalBonus", self.Owner) - umsg.Short(-m) - umsg.End() - elseif ent:GetState() == 1 then - self:EmitSound(self.HitBuildingSuccess) - else - self:EmitSound(self.HitBuildingFailure) - end - end - else - self:EmitSound(self.HitWorld) - end - elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then - self:EmitSound(self.HitFlesh) - else - self:EmitSound(self.HitWorld) - end - elseif tr.HitWorld then - self:EmitSound(self.HitWorld) - end - - if SERVER then - if self.HasHit then - self.dt.Combo = self.dt.Combo + 1 - self.HasHit = false - end - - if self.dt.Combo > 2 then - self.dt.Combo = 0 - end - end -end - -function SWEP:Critical(ent,dmginfo) - if self.dt.Combo >= 2 then - return true - end - - return self:CallBaseFunction("Critical", ent, dmginfo) -end - -function SWEP:PredictCriticalHit() - if self.dt.Combo >= 2 then - self.NameOverride = "robot_arm_combo_kill" - return true - else - self.NameOverride = nil - end -end - -function SWEP:Think() - self.Owner:SetBodygroup( 2, 1 ) - --self.Owner:GetViewModel():SetBodygroup(1, 0) - - if not game.SinglePlayer() or SERVER then - if self.NextIdle and CurTime()>=self.NextIdle then - if self.PlayingIdle2Animation then - self.PlayingIdle2Animation = false - elseif math.Rand(0,1) <= self.AltIdleAnimationProbability and not self.PlayingIdle2Animation then - self:SendWeaponAnim(self.VM_IDLE_2) - self.NextIdle = CurTime() + self:SequenceDuration() - self.PlayingIdle2Animation = true - end - end - end - - if SERVER and not self.Owner:KeyDown(IN_ATTACK) then - self.dt.Combo = 0 - end - - self:CallBaseFunction("Think") -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher/shared.lua deleted file mode 100644 index b4e73912f..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher/shared.lua +++ /dev/null @@ -1,228 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Rocket Launcher" -SWEP.Slot = 0 - -function SWEP:ClientStartCharge() - self.ClientCharging = true - self.ClientChargeStart = CurTime() -end - -function SWEP:ClientEndCharge() - self.ClientCharging = false -end - -end - -function SWEP:OnEquipAttribute(a, owner) - if a.attribute_class == "set_weapon_mode" then - if a.value == 1 then - if CLIENT then - self.CustomHUD = {HudBowCharge = true} - end - end - end -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_rocketlauncher_soldier.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_rocketlauncher.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_pipelauncher" -PrecacheParticleSystem("muzzle_pipelauncher") - -SWEP.ShootSound = Sound("weapons/rocket_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_RPG.SingleCrit") -SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") -SWEP.ReloadSound = Sound("Weapon_RPG.WorldReload") - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.8 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(0, 13, -4) - -SWEP.PunchView = Angle( 0, 0, 0 ) - -SWEP.Properties = {} - -SWEP.ChargeTime = 2 -SWEP.MinForce = 150 -SWEP.MaxForce = 2800 - -SWEP.MinAddPitch = -1 -SWEP.MaxAddPitch = -6 - -SWEP.MinGravity = 1 -SWEP.MaxGravity = 1 - -function SWEP:Deploy() - if CLIENT then - HudBowCharge:SetProgress(0) - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:PrimaryAttack() - if self.WeaponMode ~= 1 then - return self:CallBaseFunction("PrimaryAttack") - end - - if not self.IsDeployed then return false end - if self.Reloading then return false end - - self.NextDeployed = nil - - -- Already charging - if self.Charging or self.LockAttackKey then return end - - local Delay = self.Delay or -1 - local QuickDelay = self.QuickDelay or -1 - - if (not(self.Primary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK) and QuickDelay>=0 and CurTime() self.ChargeTime) then - self.Charging = false - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:DoAttackEvent() - - self.NextIdle = CurTime() + self:SequenceDuration() - - self:ShootProjectile() - self:TakePrimaryAmmo(1) - - self.Delay = CurTime() + self.Primary.Delay - self.QuickDelay = CurTime() + self.Primary.QuickDelay - - if SERVER then - self:CallOnClient("ClientEndCharge", "") - end - - if self:Clip1() <= 0 then - self:Reload() - end - - if SERVER and not self.Primary.NoFiringScene then - self.Owner:Speak("TLK_FIREWEAPON", true) - end - - self:RollCritical() -- Roll and check for criticals first - - if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then - self.ChargeUpSound:Stop() - self.ChargeUpSound = nil - end - - self.LockAttackKey = true - else - if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then - self.ChargeUpSound = CreateSound(self, self.ChargeSound) - self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) - end - end - end - self:Inspect() -end - -function SWEP:ShootProjectile() - if SERVER then - local rocket = ents.Create("tf_projectile_rocket") - rocket:SetPos(self:ProjectileShootPos()) - local ang = self.Owner:EyeAngles() - - if self.WeaponMode == 1 then - local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime - rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) - rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) - ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) - end - - rocket:SetAngles(ang) - - if self:Critical() then - rocket.critical = true - end - - for k,v in pairs(self.Properties) do - rocket[k] = v - end - - rocket:SetOwner(self.Owner) - self:InitProjectileAttributes(rocket) - - rocket:Spawn() - rocket:Activate() - end - - self:ShootEffects() -end - -function SWEP:OnRemove() - if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then - self.ChargeUpSound:Stop() - self.ChargeUpSound = nil - end -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_dh/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_dh/shared.lua deleted file mode 100644 index ba1e5bf80..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_dh/shared.lua +++ /dev/null @@ -1,69 +0,0 @@ --- Real class name: tf_weapon_rocketlauncher_directhit (see shd_items.lua) - -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - -SWEP.PrintName = "The Direct Hit" -SWEP.Slot = 0 -SWEP.HasCModel = true - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_directhit/c_directhit.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "muzzle_pipelauncher" - -SWEP.ShootSound = Sound("Weapon_RPG_DirectHit.Single") -SWEP.ShootCritSound = Sound("Weapon_RPG_DirectHit.SingleCrit") -SWEP.CustomExplosionSound = Sound("Weapon_RPG_DirectHit.Explode") - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.8 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(0, 13, -4) - -SWEP.PunchView = Angle( 0, 0, 0 ) - -SWEP.Properties = {} - -function SWEP:ShootProjectile() - if SERVER then - local rocket = ents.Create("tf_projectile_rocket") - rocket:SetPos(self:ProjectileShootPos()) - rocket:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - rocket.critical = true - end - - --rocket.FastRocket = true - for k,v in pairs(self.Properties) do - rocket[k] = v - end - - rocket:SetOwner(self.Owner) - self:InitProjectileAttributes(rocket) - - rocket.NameOverride = "tf_projectile_rocket_direct" - rocket.ExplosionSound = self.CustomExplosionSound - - rocket:Spawn() - rocket:Activate() - end - - self:ShootEffects() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_dt/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_dt/shared.lua deleted file mode 100644 index 46426b046..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_dt/shared.lua +++ /dev/null @@ -1,65 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Rocket Launcher" -SWEP.Slot = 0 - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_rocketlauncher_soldier.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_rocketlauncher.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "muzzle_pipelauncher" - -SWEP.ShootSound = Sound("weapons/rocket_shoot.wav") -SWEP.ShootSoundLevel = 94 -SWEP.ShootCritSound = Sound("Weapon_RPG.SingleCrit") - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.8 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(0, 13, -4) - -SWEP.PunchView = Angle( 0, 0, 0 ) - -SWEP.Properties = {} - -function SWEP:ShootProjectile() - if SERVER then - local rocket = ents.Create("tf_projectile_rocket") - rocket:SetPos(self:ProjectileShootPos()) - rocket:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - rocket.critical = true - end - - for k,v in pairs(self.Properties) do - rocket[k] = v - end - - rocket:SetOwner(self.Owner) - self:InitProjectileAttributes(rocket) - rocket.NameOverride = "tf_projectile_rocket_trolling" - - rocket:Spawn() - rocket:Activate() - end - - self:ShootEffects() -end - diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_qrl/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_qrl/shared.lua deleted file mode 100644 index c51f9eb62..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_rocketlauncher_qrl/shared.lua +++ /dev/null @@ -1,94 +0,0 @@ --- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) - -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - -SWEP.PrintName = "The Original" -SWEP.Slot = 0 -SWEP.HasCModel = true - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "muzzle_pipelauncher" - -SWEP.ShootSound = Sound("Weapon_QuakeRPG.Single") -SWEP.ShootCritSound = Sound("Weapon_QuakeRPG.SingleCrit") -SWEP.CustomExplosionSound = Sound("Weapon_QuakeRPG.Reload") -SWEP.Primary.Reload = Sound("Weapon_QuakeRPG.Reload") - -SWEP.Primary.ClipSize = 4 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.8 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(30, 0, -6) - -SWEP.PunchView = Angle( 0, 0, 0 ) - -SWEP.Properties = {} - -SWEP.VM_DRAW = ACT_VM_DRAW_QRL -SWEP.VM_IDLE = ACT_VM_IDLE_QRL -ACT_VM_PULLBACK = ACT_VM_PULLBACK_QRL -SWEP.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK_QRL -SWEP.VM_RELOAD = ACT_VM_RELOAD_QRL -SWEP.VM_RELOAD_START = ACT_VM_RELOAD_START_QRL -SWEP.VM_RELOAD_FINISH = ACT_VM_RELOAD_FINISH_QRL - -function SWEP:Deploy() - self:CallBaseFunction("Deploy") - self.VM_DRAW = ACT_VM_DRAW_QRL - self.VM_IDLE = ACT_VM_IDLE_QRL - ACT_VM_PULLBACK = ACT_VM_PULLBACK_QRL - self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK_QRL - self.VM_RELOAD = ACT_VM_RELOAD_QRL - self.VM_RELOAD_START = ACT_VM_RELOAD_START_QRL - self.VM_RELOAD_FINISH = ACT_VM_RELOAD_FINISH_QRL -end - -function SWEP:ShootProjectile() - if SERVER then - local rocket = ents.Create("tf_projectile_rocket") - rocket:SetPos(self:ProjectileShootPos()) - local ang = self.Owner:EyeAngles() - - if self.WeaponMode == 1 then - local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime - rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) - rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) - ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) - end - - rocket:SetAngles(ang) - - if self:Critical() then - rocket.critical = true - end - - for k,v in pairs(self.Properties) do - rocket[k] = v - end - - rocket:SetOwner(self.Owner) - self:InitProjectileAttributes(rocket) - - rocket:Spawn() - rocket:Activate() - end - - self:ShootEffects() -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_scattergun/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_scattergun/shared.lua deleted file mode 100644 index 88b793b54..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_scattergun/shared.lua +++ /dev/null @@ -1,141 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Scattergun" -SWEP.Slot = 0 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_scattergun_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_scattergun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_scattergun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("Weapon_Scatter_Gun.Single") -SWEP.ShootCritSound = Sound("Weapon_Scatter_Gun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Scatter_Gun.WorldReload") - -SWEP.TracerEffect = "bullet_scattergun_tracer01" -PrecacheParticleSystem("bullet_scattergun_tracer01_red") -PrecacheParticleSystem("bullet_scattergun_tracer01_red_crit") -PrecacheParticleSystem("bullet_scattergun_tracer01_blue") -PrecacheParticleSystem("bullet_scattergun_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_scattergun") - - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.75 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.625 - -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" - -SWEP.KnockbackForceOwner = 225 - -SWEP.KnockbackMaxForce = 600 -SWEP.MinKnockbackDistance = 512 -SWEP.KnockbackAddPitch = -30 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -function SWEP:OnEquipAttribute(a, owner) - if a.attribute_class == "set_scattergun_no_reload_single" then - self.ReloadSingle = false - self.ReloadDiscardClip = true - elseif a.attribute_class == "set_scattergun_has_knockback" then - self.ScattergunHasKnockback = true - end -end - -function SWEP:SetupCModelActivities(item) - if item then - for _,a in pairs(item.attributes or {}) do - if a.attribute_class == "set_scattergun_no_reload_single" and a.value == 1 then - item = table.Copy(item) - item.anim_slot = "ITEM2" - self.HoldType = "ITEM2" - self:SetWeaponHoldType("ITEM2") - break - end - end - end - - return self:CallBaseFunction("SetupCModelActivities", item) -end - -if SERVER then - -function SWEP:DoOwnerKnockback() - if self.Owner:OnGround() then return end - if self.Owner.KnockbackJumpsRemaining and self.Owner.KnockbackJumpsRemaining <= 0 then return end - - local vel = self.Owner:GetVelocity() - local dir = self.Owner:GetAimVector() - local work = vel:Dot(dir) - --if work < 0 then work = 0 end - - local force = self.KnockbackForceOwner + work - if force < 0 then force = 0 end - - self.Owner:SetVelocity(-force * dir) - - self.Owner.KnockbackJumpsRemaining = (self.Owner.KnockbackJumpsRemaining or 1) - 1 - self.Owner:SetThrownByExplosion(true) -end - -hook.Add("OnPlayerHitGround", "TFKnockbackJumpsReset", function(pl) - pl.KnockbackJumpsRemaining = 1 -end) - -hook.Add("PostScaleDamage", "TFKnockbackDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - local att = dmginfo:GetAttacker() - - if inf.ScattergunHasKnockback and not ent:IsThrownByExplosion() then - local dist = inf:GetPos():Distance(ent:GetPos()) - if dist < inf.MinKnockbackDistance then - if not inf.MaxKnockbackDamage then - inf.MaxKnockbackDamage = inf.BaseDamage * (1 + inf.MaxDamageRampUp + inf.DamageRandomize) * inf.BulletsPerShot - end - - local force = inf.KnockbackMaxForce * dmginfo:GetDamage() / inf.MaxKnockbackDamage - local ang = att:EyeAngles() - ang.p = ang.p + inf.KnockbackAddPitch - - ent:SetGroundEntity(NULL) - ent:SetVelocity(ang:Forward() * force) - ent:SetThrownByExplosion(true) - end - end -end) - -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return end - - if SERVER and self.ScattergunHasKnockback then - self:DoOwnerKnockback() - end - - return -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sentry_revenge/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sentry_revenge/shared.lua deleted file mode 100644 index 6bfc7a2ec..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sentry_revenge/shared.lua +++ /dev/null @@ -1,47 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Shotgun" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_shotgun_heavy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shotgun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.MuzzleEffect = "muzzle_shotgun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") - -SWEP.TracerEffect = "bullet_shotgun_tracer01" -PrecacheParticleSystem("bullet_shotgun_tracer01_red") -PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_shotgun") - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.625 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_hwg/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_hwg/shared.lua deleted file mode 100644 index 21ec70577..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_hwg/shared.lua +++ /dev/null @@ -1,51 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Shotgun" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_shotgun_heavy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shotgun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_shotgun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") - -SWEP.TracerEffect = "bullet_shotgun_tracer01" -PrecacheParticleSystem("bullet_shotgun_tracer01_red") -PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_shotgun") - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.625 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_primary/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_primary/shared.lua deleted file mode 100644 index 289f78129..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_primary/shared.lua +++ /dev/null @@ -1,51 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Shotgun" -SWEP.Slot = 0 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_shotgun_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shotgun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_shotgun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") - -SWEP.TracerEffect = "bullet_shotgun_tracer01" -PrecacheParticleSystem("bullet_shotgun_tracer01_red") -PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_shotgun") - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.625 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.ReloadSingle = true - -SWEP.HoldType = "PRIMARY" \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_pyro/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_pyro/shared.lua deleted file mode 100644 index e73798567..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_pyro/shared.lua +++ /dev/null @@ -1,51 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Shotgun" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_shotgun_pyro.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shotgun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_shotgun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") - -SWEP.TracerEffect = "bullet_shotgun_tracer01" -PrecacheParticleSystem("bullet_shotgun_tracer01_red") -PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_shotgun") - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.625 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_soldier/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_soldier/shared.lua deleted file mode 100644 index 4156d03fb..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shotgun_soldier/shared.lua +++ /dev/null @@ -1,51 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Shotgun" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_shotgun_soldier.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shotgun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_shotgun" -SWEP.MuzzleOffset = Vector(20, 4, -3) - -SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") - -SWEP.TracerEffect = "bullet_shotgun_tracer01" -PrecacheParticleSystem("bullet_shotgun_tracer01_red") -PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue") -PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") -PrecacheParticleSystem("muzzle_shotgun") - -SWEP.BaseDamage = 6 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 10 -SWEP.BulletSpread = 0.0675 - -SWEP.Primary.ClipSize = 6 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.625 - -SWEP.PunchView = Angle( -2, 0, 0 ) - -SWEP.ReloadSingle = true - -SWEP.HoldType = "SECONDARY" \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shovel/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shovel/shared.lua deleted file mode 100644 index 3e64db5e1..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_shovel/shared.lua +++ /dev/null @@ -1,94 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Shovel" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_shovel_soldier.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_shovel.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Shovel.Miss") -SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Shovel.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") - -local SpeedTable = { -{40, 1.6}, -{80, 1.4}, -{120, 1.2}, -{160, 1.1}, -} - -SWEP.MinDamage = 0.5 -SWEP.MaxDamage = 1.75 - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.NoCModelOnStockWeapon = true - -SWEP.HoldType = "MELEE" - -function SWEP:Think() - self:CallBaseFunction("Think") - - if SERVER and self.WeaponMode == 1 and (not self.NextHealthCheck or CurTime()>=self.NextHealthCheck) then - if not self.InitialBaseDamage then - self.InitialBaseDamage = self.BaseDamage - end - - self.BaseDamage = self.InitialBaseDamage * Lerp((self.Owner:GetMaxHealth()-self.Owner:Health()) / self.Owner:GetMaxHealth(), self.MinDamage, self.MaxDamage) - - local sp - for _,v in ipairs(SpeedTable) do - if self.Owner:Health()<=v[1] then - sp = v[2] - break - end - end - - if sp~=self.LastSpeed then - if sp then - self.LocalSpeedBonus = sp - else - self.LocalSpeedBonus = nil - end - self.Owner:ResetClassSpeed() - self.LastSpeed = sp - end - - self.NextHealthCheck = CurTime() + 0.1 - end -end - -function SWEP:Deploy() - if SERVER and self.WeaponMode == 1 then - self.NameOverride = "pickaxe" - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - if SERVER and self.WeaponMode == 1 then - self.LastSpeed = nil - end - - return self:CallBaseFunction("Holster") -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_slap/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_slap/shared.lua deleted file mode 100644 index 1a3061211..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_slap/shared.lua +++ /dev/null @@ -1,72 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Hot Hand" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("weapons/slap_swing.wav") -- Sound("Weapon_Slap.Swing") -SWEP.SwingCrit = Sound("weapons/slap_swing_crit.wav") -- Sound("Weapon_Slap.Swing") -SWEP.HitFlesh = Sound("weapons/slap_hit1.wav") -- Sound("Weapon_Slap.Swing") -SWEP.HitWorld = Sound("weapons/slap_hit_world1.wav") -- Sound("Weapon_Slap.Swing") - -SWEP.BaseDamage = 35 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.5 - -SWEP.HoldType = "ITEM3" - -SWEP.Special_HumiliationCount = "#Humiliation_Count" -SWEP.Special_HumiliationKill = "#Humiliation_Kill" - -function SWEP:InspectAnimCheck() -self:CallBaseFunction("InspectAnimCheck") -self.VM_DRAW = ACT_ITEM3_VM_DRAW -self.VM_IDLE = ACT_ITEM3_VM_IDLE -self.VM_HITCENTER = ACT_ITEM3_VM_PRIMARYATTACK -self.VM_SWINGHARD = ACT_ITEM3_VM_PRIMARYATTACK -self.VM_INSPECT_START = ACT_ITEM3_VM_INSPECT_START -self.VM_INSPECT_IDLE = ACT_ITEM3_VM_INSPECT_IDLE -self.VM_INSPECT_END = ACT_ITEM3_VM_INSPECT_END -end - -function SWEP:OnMeleeHit(tr) - if CLIENT then return end - - local ent = tr.Entity - if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end - - local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) - - umsg.Start("Notice_EntityHumiliationCounter") - umsg.String(GAMEMODE:EntityName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(InflictorClass) - - umsg.String(GAMEMODE:EntityName(self.Owner)) - umsg.Short(GAMEMODE:EntityTeam(self.Owner)) - umsg.Short(GAMEMODE:EntityID(self.Owner)) - - --[[ - umsg.String(GAMEMODE:EntityName(cooperator)) - umsg.Short(GAMEMODE:EntityTeam(cooperator)) - umsg.Short(GAMEMODE:EntityID(cooperator))]] - - umsg.Bool(self.CurrentShotIsCrit) - umsg.End() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_smg/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_smg/shared.lua deleted file mode 100644 index 7d449a3ce..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_smg/shared.lua +++ /dev/null @@ -1,51 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "SMG" -SWEP.Slot = 1 -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_smg_sniper.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_smg.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_smg" -SWEP.MuzzleOffset = Vector(20, 4, -2) - -SWEP.ShootSound = Sound("Weapon_SMG.Single") -SWEP.ShootCritSound = Sound("Weapon_SMG.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_SMG.WorldReload") - -SWEP.TracerEffect = "bullet_pistol_tracer01" -PrecacheParticleSystem("muzzle_smg") -PrecacheParticleSystem("bullet_pistol_tracer01_red") -PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") -PrecacheParticleSystem("bullet_pistol_tracer01_blue") -PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") - -SWEP.BaseDamage = 8 -SWEP.DamageRandomize = 0 -SWEP.MaxDamageRampUp = 0.5 -SWEP.MaxDamageFalloff = 0.5 - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0.025 - -SWEP.Primary.ClipSize = 25 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_SECONDARY -SWEP.Primary.Delay = 0.1 - -SWEP.HoldType = "SECONDARY" - -SWEP.AutoReloadTime = 0.10 - -SWEP.IsRapidFire = true \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sniperrifle/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sniperrifle/shared.lua deleted file mode 100644 index b8769cb29..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sniperrifle/shared.lua +++ /dev/null @@ -1,409 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Sniper Rifle" -SWEP.Slot = 0 - -usermessage.Hook("ClearZoomStatus",function(msg) - local pl = msg:ReadEntity() - - if IsValid(pl) and pl:IsPlayer() then - pl.TargetZoom = 1 - if pl==LocalPlayer() then - HudSniperChargeMeter:SetVisible(false) - end - end -end) - -usermessage.Hook("SetZoomStatus",function(msg) - local self = msg:ReadEntity() - local b = msg:ReadBool() - self.ZoomStatus = b - if b and IsValid(self.Owner) then - self.Owner.TargetZoom = 3 * (self.ZoomMultiplier or 1) - if self.Owner==LocalPlayer() then - HudSniperChargeMeter:SetVisible(true) - if self.DisableSniperCharge then - HudSniperChargeMeter:SetProgress(-1) -- hide the charge meter - else - HudSniperChargeMeter:SetProgress(0) - end - end - self.ChargeTimerStart = CurTime() - self.Time0 = 0 - self.Rate = 1 - self.DrawCrosshair = false - else - if self and IsValid(self.Owner) then - self.Owner.TargetZoom = 1 - if self.Owner==LocalPlayer() then - HudSniperChargeMeter:SetVisible(false) - end - end - - self.ChargeTimerStart = nil - self.ChargeSoundPlayed = nil - self.DrawCrosshair = true - end -end) - -usermessage.Hook("SynchronizeSniperCharge", function(msg) - local self = msg:ReadEntity() - if not IsValid(self) then return end - - self.Time0 = self.Time0 + (CurTime() - self.ChargeTimerStart) * self.Rate - if self.Time0==0 then return end - self.Rate = msg:ReadFloat() / self.Time0 - self.ChargeTimerStart = CurTime() -end) - -function SWEP:TranslateFOV(fov) - if self.Owner.TargetZoom and not self.DisableSniperCharge then - if not self.Owner.CurrentZoom then self.Owner.CurrentZoom = 1 end - self.Owner.CurrentZoom = Lerp(0.5, self.Owner.CurrentZoom, self.Owner.TargetZoom) - return fov / self.Owner.CurrentZoom - else - return fov - end -end - -local W = ScrW() -local H = ScrH() -local Scale = H/480 - -local sniperdot_red = surface.GetTextureID("effects/sniperdot_red") -local sniperdot_blue = surface.GetTextureID("effects/sniperdot_blue") - -function SWEP:DrawHUD() - if self.ChargeTimerStart then - local charge - - if self.DisableSniperCharge then - charge = 0 - else - charge = self.Time0 + (CurTime() - self.ChargeTimerStart) * self.Rate - local chargetime = self.ChargeTime / (self.SniperChargeRateMultiplier or 1) - - charge = math.Clamp(100*charge/chargetime, 0, 100) - HudSniperChargeMeter:SetProgress(charge) - end - - if charge == 100 and !self.ChargeSoundPlayed then - surface.PlaySound("player/recharged.wav") - self.ChargeSoundPlayed = true - end - - local tex - if self.Owner:EntityTeam()==TEAM_BLU then - tex = sniperdot_blue - else - tex = sniperdot_red - end - - local tr = util.TraceLine{ - start=self.Owner:GetShootPos(), - endpos=self.Owner:GetShootPos()+10000*self.Owner:GetAimVector(), - filter=self.Owner, - mask=MASK_SHOT, - } - local dist = tr.Fraction * 10000 - - local s = math.floor(math.Clamp(2000*Scale/(dist+1), 4*Scale, 24*Scale)) - - surface.SetDrawColor(255,255,255,100) - surface.SetTexture(tex) - - local cx, cy = math.floor(W/2), math.floor(H/2) - - surface.DrawTexturedRect(cx - s, cy - s, 2*s, 2*s) - s = math.floor(Lerp(charge*0.01, 0.2, 1) * s) - - if s>0 then - surface.SetDrawColor(255,255,255,255) - surface.DrawTexturedRect(cx - s, cy - s, 2*s, 2*s) - end - end -end ---[[ -function SWEP:ModelDrawn(v) - if self.ZoomStatus then - local start = self.Owner:GetShootPos() - local endpos = start + 10000*self.Owner:GetAimVector() - local tr = util.TraceLine{ - start=start, - endpos=endpos, - filter=self.Owner, - } - - if tr.Hit and not tr.HitSky then - - end - end -end]] - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_sniperrifle_sniper.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_sniperrifle.mdl" -SWEP.Crosshair = "tf_crosshair2" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_sniperrifle" - -SWEP.ShootSound = Sound("weapons/sniper_shoot.wav") -SWEP.ShootCritSound = Sound("Weapon_SniperRifle.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_SniperRifle.WorldReload") - -SWEP.TracerEffect = "bullet_tracer01" -PrecacheParticleSystem("muzzle_sniperrifle") -PrecacheParticleSystem("bullet_tracer01_red") -PrecacheParticleSystem("bullet_tracer01_red_crit") -PrecacheParticleSystem("bullet_tracer01_blue") -PrecacheParticleSystem("bullet_tracer01_blue_crit") - -SWEP.MinDamage = 50 -SWEP.MaxDamage = 150 -SWEP.DamageRandomize = 0.14 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.CriticalChance = 0 -SWEP.CritsOnHeadshot = true -SWEP.HeadshotName = "tf_weapon_sniperrifle_headshot" - -SWEP.BulletsPerShot = 1 -SWEP.BulletSpread = 0 - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 1.5 - -SWEP.IsRapidFire = false -SWEP.ReloadSingle = false - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(3, 8, -5) -SWEP.ChargeTime = 4 - -SWEP.PredictCritServerside = true - -function SWEP:ZoomIn() - if CLIENT then return end - - self.NextAutoZoomIn = nil - if not self.ZoomStatus then - self.LaserDot:Enable() - self.ZoomStatus = true - umsg.Start("SetZoomStatus") - umsg.Entity(self) - umsg.Bool(true) - umsg.End() - self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) - - --self.Owner:DrawViewModel(false) - self.ChargeTimerStart = CurTime() - end - - if not self.DisableZoomSpeedPenalty then - self.Owner:SetClassSpeed(27 * (self.DeployMoveSpeedMultiplier or 1)) - self.Owner:SetCrouchedWalkSpeed(0.33) - end - -end - -function SWEP:AdjustMouseSensitivity() - if self.ZoomStatus then - return 0.35 - end -end - -function SWEP:ZoomOut() - if CLIENT then return end - - self.NextAutoZoomOut = nil - if self.ZoomStatus then - self.LaserDot:Disable() - self.ZoomStatus = false - umsg.Start("SetZoomStatus") - umsg.Entity(self) - umsg.Bool(false) - umsg.End() - self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) - - --self.Owner:DrawViewModel(true) - self.ChargeTimerStart = nil - end - - if not self.DisableZoomSpeedPenalty then - local owner = self.CurrentOwner or self.Owner - owner:ResetClassSpeed() - end -end - -function SWEP:ToggleZoom() - if self.ZoomStatus then self:ZoomOut() - else self:ZoomIn() - end -end - -function SWEP:PrimaryAttack() - if not self.IsDeployed then return false end - - if self.NextIdle then return end - - if not self:CanPrimaryAttack() then - return - end - - --self.Owner:DrawViewModel(true) - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - if self.ZoomStatus then - self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED, true) - else - self.Owner:SetAnimation(PLAYER_ATTACK1) - end - - self.NextAllowZoom = CurTime() + self:SequenceDuration() - if self.ZoomStatus then self.NextAutoZoomIn = CurTime()+self:SequenceDuration() end - - if self.WeaponMode == 1 then - self.CritsOnHeadshot = false - else - self.CritsOnHeadshot = self.ZoomStatus - end - - self:RollCritical() - if self.ChargeTimerStart and not self.DisableSniperCharge then - local chargetime = self.ChargeTime / (self.SniperChargeRateMultiplier or 1) - self.BaseDamage = Lerp(math.Clamp((CurTime()-self.ChargeTimerStart)/chargetime, 0, 1), self.MinDamage, self.MaxDamage) - else - self.BaseDamage = self.MinDamage - end - --print(self.BaseDamage) - self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) - self:TakePrimaryAmmo(1) - self:RustyBulletHole() - if SERVER then - self.NextAutoZoomOut = CurTime()+0.6 - end - - self.NextIdle = CurTime()+self:SequenceDuration() - self.AmmoAdded = 1 -end - -function SWEP:SecondaryAttack() - if not self.IsDeployed then return false end - - if SERVER then - if (not self.NextAllowZoom or CurTime()>self.NextAllowZoom) and self.Owner:IsOnGround() then - self:ToggleZoom() - self.NextAllowZoom = CurTime() + 0.4 - elseif self.NextAutoZoomIn then -- No, don't zoom me in automatically after that - self.NextAutoZoomIn = nil - end - end -end - -function SWEP:UpdateLaserDotPosition(dot) - local tr = util.TraceLine{ - start=self.Owner:GetShootPos(), - endpos=self.Owner:GetShootPos()+10000*self.Owner:GetAimVector(), - filter=self.Owner, - mask=MASK_SHOT, - } - - if tr.Hit then - dot:SetNoDraw(false) - dot:SetPos(tr.HitPos - 2*self.Owner:GetAimVector()) - dot:SetHitEntity(tr.Entity) - else - dot:SetNoDraw(true) - dot:SetHitEntity(NULL) - end -end - -function SWEP:Think() - self:TFViewModelFOV() - - if SERVER and self.NextReplayDeployAnim then - if CurTime() > self.NextReplayDeployAnim then - --MsgFN("Replaying deploy animation %d", self.VM_DRAW) - timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) - self.NextReplayDeployAnim = nil - end - end - - if SERVER then - if not self.LastOwner then - self.LastOwner = self.Owner - end - - if not IsValid(self.LaserDot) then - self.LaserDot = ents.Create("sniper_dot") - self.LaserDot:SetPos(self:GetPos()) - self.LaserDot:SetOwner(self) - self.LaserDot:Spawn() - end - - if self.ChargeTimerStart and (not self.NextClientChargeUpdate or CurTime()>self.NextClientChargeUpdate) then - umsg.Start("SynchronizeSniperCharge") - umsg.Entity(self) - umsg.Float(CurTime() - self.ChargeTimerStart) - umsg.End() - self.NextClientChargeUpdate = CurTime() + 0.1 - end - - if self.ZoomStatus and not self.Owner:IsOnGround() then - self:ZoomOut() - self.NextAllowZoom = CurTime() + 0.4 - end - end - - if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then - self.IsDeployed = true - end - - if self.NextIdle and CurTime()>=self.NextIdle then - self:SendWeaponAnim(self.VM_IDLE) - self.NextIdle = nil - end - - if self.NextAutoZoomOut and CurTime()>=self.NextAutoZoomOut then - self:ZoomOut() - end - - if self.NextAutoZoomIn and CurTime()>=self.NextAutoZoomIn then - self:ZoomIn() - end - - self:Inspect() -end - -function SWEP:Holster() - if SERVER then - umsg.Start("ClearZoomStatus") - umsg.Entity(self.LastOwner) - umsg.End() - - self.NextAutoZoomIn = nil - end - - self:ZoomOut() - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - self:Holster() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_stickbomb/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_stickbomb/shared.lua deleted file mode 100644 index 7889a49ca..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_stickbomb/shared.lua +++ /dev/null @@ -1,170 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Bottle" -SWEP.Slot = 2 -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_caber/c_caber.mdl" -SWEP.ExplodedModel = "models/weapons/c_models/c_caber/c_caber_exploded.mdl" - -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("Weapon_FireAxe.Miss") -SWEP.SwingCrit = Sound("Weapon_FireAxe.MissCrit") - -SWEP.HitFlesh = Sound("Weapon_FireAxe.HitFlesh") -SWEP.HitWorld = Sound("Weapon_FireAxe.HitWorld") - -SWEP.BaseDamage = 35 -SWEP.DamageRandomize = 0.15 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.ExplosionBaseDamage = 150 -SWEP.ExplosionDamageRandomize = 0 -SWEP.ExplosionRadiusInit = 180 -SWEP.ExplosionCritDamageMultiplier = 2 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Bool", 0, "Broken") -end - -function SWEP:ViewModelDrawn() - if IsValid(self.CModel) then - if self.dt.Broken ~= self.VBrokenState then - if self.dt.Broken then - self.CModel:SetModel(self.ExplodedModel) - else - self.CModel:SetModel(self.WorldModel) - end - - self.VBrokenState = self.dt.Broken - end - end - - self:CallBaseFunction("ViewModelDrawn") -end - -function SWEP:DrawWorldModel(from_postplayerdraw) - if IsValid(self.WModel2) then - if self.dt.Broken ~= self.BrokenState then - if self.dt.Broken then - self.WModel2:SetModel(self.ExplodedModel) - else - self.WModel2:SetModel(self.WorldModel) - end - - self.BrokenState = self.dt.Broken - end - end - - self:CallBaseFunction("DrawWorldModel", from_postplayerdraw) -end - -function SWEP:MeleeAttack(dummy) - if SERVER then - if self.dt.Broken then - self.NameOverride = nil - else - self.NameOverride = "ullapool_caber_explosion" - end - end - - return self:CallBaseFunction("MeleeAttack", dummy) -end - -function SWEP:OnMeleeHit(trace) - if IsValid(trace.Entity) and self.Owner:IsFriendly(trace.Entity) then - return - end - - if not self.dt.Broken then - if SERVER then - self.dt.Broken = true - self.WorldModelOverride2 = self.ExplodedModel - self.Owner:GetViewModel():SetBodygroup(1,1) - - local pos = trace.HitPos - - -- KA BEWM - - --[[local flags = 0 - if self.Owner:WaterLevel()>0 then - flags = flags | 1 - end - - local effectdata = EffectData() - effectdata:SetOrigin(pos) - effectdata:SetAngles(angle_zero) - effectdata:SetAttachment(flags) - util.Effect("tf_explosion", effectdata, true, true) - - local range = self.ExplosionRadiusInit - if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then - range = range * self.ExplosionRadiusMultiplier - end - - self.OwnerDamage = 0.85 - util.BlastDamage(self, self.Owner, pos, range, 200) - - sound.Play(self.ExplosionSound, pos)]] - - -- Use an invisible grenade instead - local grenade = ents.Create("tf_projectile_pipe") - grenade:SetPos(pos) - - if self:Critical() then - grenade.critical = true - end - - grenade:SetOwner(self.Owner) - grenade.BaseDamage = self.ExplosionBaseDamage - grenade.DamageRandomize = self.ExplosionDamageRandomize - grenade.ExplosionRadiusInit = self.ExplosionRadiusInit - grenade.CritDamageMultiplier = self.ExplosionCritDamageMultiplier - - self:InitProjectileAttributes(grenade) - - grenade.NameOverride = "ullapool_caber_explosion" - grenade.GrenadeMode = -1 -- invisible, instantly explodes - grenade:Spawn() - end - - self.Broken = true - end -end - -function SWEP:Deploy() - if SERVER and self.dt.Broken then - self.Owner:GetViewModel():SetBodygroup(1,1) - end - - return self:CallBaseFunction("Deploy") -end - -function SWEP:Holster() - self:OnRemove() - - return self:CallBaseFunction("Holster") -end - -function SWEP:OnRemove() - if SERVER and self.dt.Broken then - if IsValid(self.Owner) and self.Owner:GetActiveWeapon()==self then - self.Owner:GetViewModel():SetBodygroup(1,0) - end - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sword/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sword/shared.lua deleted file mode 100644 index 43b68de59..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_sword/shared.lua +++ /dev/null @@ -1,185 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - -SWEP.PrintName = "The Eyelander" -SWEP.HasCModel = true -SWEP.Slot = 2 - -local WhisperIdle = Sound("Sword.Idle") -local WhisperKill = Sound("Sword.Hit") - -usermessage.Hook("SwordWhisper", function(msg) - local t = msg:ReadChar() - if t==2 then LocalPlayer():EmitSound(WhisperKill) - else LocalPlayer():EmitSound(WhisperIdle) - end -end) - -SWEP.GlobalCustomHUD = {HudItemEffectMeter_Demoman = function(self) return self.dt.IsEyelander end} - -function SWEP:InitializeCModel() - self:CallBaseFunction("InitializeCModel") - - for _,v in pairs(self.Owner:GetTFItems()) do - if v:GetClass() == "tf_wearable_item_demoshield" then - self.ShieldEntity = v - v:InitializeCModel(self) - end - end -end - -function SWEP:ViewModelDrawn() - self:CallBaseFunction("ViewModelDrawn") - - if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then - self.ShieldEntity:StartVisualOverrides() - self.ShieldEntity.CModel:DrawModel() - self.ShieldEntity:EndVisualOverrides() - end -end - -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_claymore/c_claymore.mdl" -SWEP.Crosshair = "tf_crosshair3" -SWEP.ItemName = "Unique Achievement Sword" - -SWEP.Swing = Sound("Weapon_Sword.Swing") -SWEP.SwingCrit = Sound("Weapon_Sword.SwingCrit") -SWEP.HitFlesh = Sound("Weapon_Sword.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Sword.HitWorld") - -SWEP.WhisperKillProbabilityPlayer = 0.5 -SWEP.WhisperKillProbabilityNPC = 0.2 - -SWEP.WhisperIdleMinDelay = 10 -SWEP.WhisperIdleMaxDelay = 60 -SWEP.WhisperKillMinDelay = 2 -SWEP.WhisperKillMaxDelay = 4 - -SWEP.MeleeRange = 100 -SWEP.HealthBonus = 15 - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - ---SWEP.CriticalChance = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "ITEM1" - -SWEP.UsesSpecialAnimations = true - -SWEP.VM_DRAW = ACT_VM_DRAW_SPECIAL -SWEP.VM_IDLE = ACT_VM_IDLE_SPECIAL -SWEP.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL -SWEP.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL - ---[[ -SWEP.VM_DRAW = "cm_draw" -SWEP.VM_IDLE = "cm_idle" -SWEP.VM_HITCENTER = "cm_swing_a,cm_swing_b" -SWEP.VM_SWINGHARD = "cm_swing_c"]] - -function SWEP:SetupDataTables() - self:CallBaseFunction("SetupDataTables") - self:DTVar("Bool", 0, "IsEyelander") -end - --- The following weapons should not collect heads - -local NoHeadCollecting = { - [172] = true, -- Scotsman's Skullcutter - [327] = true, -- Claidheamohmor -} - -function SWEP:InitAttributes(owner, attributes) - self:CallBaseFunction("InitAttributes", owner, attributes) - - - if NoHeadCollecting[self:ItemIndex()] then - return - end - - self.dt.IsEyelander = true -end - -function SWEP:OnPlayerKilled(ent) - --ent:SetNWBool("ShouldDropDecapitatedRagdoll", true) - if ent:CanGiveHead() then - ent:AddDeathFlag(DF_DECAP) - end - - if self.dt.IsEyelander and ent:CanGiveHead() then - self.Owner:SetNWInt("Heads", self.Owner:GetNWInt("Heads") + 1) - self.Owner:AddPlayerState(PLAYERSTATE_EYELANDER) - self.Owner:UpdateState(0.1) - - if self.Owner:GetNWInt("Heads")<=4 then - --self.Owner:SetClassSpeed(self.Owner:GetClassSpeed() + self.SpeedBonus) - self.Owner.TempAttributes.AdditiveSpeedBonus = (self.Owner.TempAttributes.AdditiveSpeedBonus or 0) + 7.5 - self.Owner:ResetClassSpeed() - - self.Owner:SetMaxHealth(self.Owner:GetMaxHealth() + self.HealthBonus) - --self.Owner:SetNWInt("PlayerMaxHealthBuff", self.HealthBonus * self:GetNWInt("Heads")) - end - self.Owner:SetHealth(self.Owner:Health() + self.HealthBonus) - - local prob - if ent:IsPlayer() then prob = self.WhisperKillProbabilityPlayer - else prob = self.WhisperKillProbabilityNPC - end - - if math.random()self.NextWhisper then - if self.WhisperType == 2 then - if not self.Owner.NextSpeak or CurTime()>self.Owner.NextSpeak then - umsg.Start("SwordWhisper", self.Owner) - umsg.Char(2) - umsg.End() - self.WhisperType = 1 - self.NextWhisper = CurTime() + math.Rand(self.WhisperIdleMinDelay, self.WhisperIdleMaxDelay) - else - self.NextWhisper = CurTime() + math.Rand(self.WhisperKillMinDelay, self.WhisperKillMaxDelay) - end - else - if not self.Owner.NextSpeak or CurTime()>self.Owner.NextSpeak then - umsg.Start("SwordWhisper", self.Owner) - umsg.Char(1) - umsg.End() - end - self.NextWhisper = CurTime() + math.Rand(self.WhisperIdleMinDelay, self.WhisperIdleMaxDelay) - end - end - end -end - -function SWEP:OnRemove() - if SERVER then - --self.Owner:SetNWInt("Heads", 0) - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_syringegun_medic/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_syringegun_medic/shared.lua deleted file mode 100644 index 16f125ffc..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_syringegun_medic/shared.lua +++ /dev/null @@ -1,64 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Syringe Gun" -SWEP.Slot = 0 - -end - -SWEP.Base = "tf_weapon_gun_base" - -SWEP.ViewModel = "models/weapons/v_models/v_syringegun_medic.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_syringegun.mdl" -SWEP.Crosshair = "tf_crosshair1" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.MuzzleEffect = "muzzle_syringe" -PrecacheParticleSystem("muzzle_syringe") - -SWEP.ShootSound = Sound("Weapon_SyringeGun.Single") -SWEP.ShootCritSound = Sound("Weapon_SyringeGun.SingleCrit") -SWEP.ReloadSound = Sound("Weapon_SyringeGun.WorldReload") - -SWEP.Primary.ClipSize = 40 -SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize -SWEP.Primary.Ammo = TF_PRIMARY -SWEP.Primary.Delay = 0.1 - -SWEP.BulletSpread = 0.02 - -SWEP.IsRapidFire = true -SWEP.ReloadSingle = false - -SWEP.HoldType = "PRIMARY" - -SWEP.ProjectileShootOffset = Vector(40, 8, -5) - -function SWEP:ShootProjectile() - if SERVER then - local syringe = ents.Create("tf_projectile_syringe") - local ang = self.Owner:EyeAngles() - local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() - - syringe:SetPos(self:ProjectileShootPos()) - syringe:SetAngles(vec:Angle()) - if self:Critical() then - syringe.critical = true - end - syringe:SetOwner(self.Owner) - --syringe:SetProjectileType(1) - - self:InitProjectileAttributes(syringe) - - syringe:Spawn() - end - - self:ShootEffects() -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_trash/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_trash/shared.lua deleted file mode 100644 index 909a8a429..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_trash/shared.lua +++ /dev/null @@ -1,129 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) - -end - -if CLIENT then - -SWEP.PrintName = "Fucking Piece of Gargbage" -SWEP.HasCModel = true -SWEP.Slot = 1 - -SWEP.RenderGroup = RENDERGROUP_BOTH - -function SWEP:ResetParticles(state_override) - self:CallBaseFunction("ResetParticles", state_override) - - if not self.DoneDeployParticle then - if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then - local ent = self:GetViewModelEntity() - if IsValid(ent) then - ParticleEffectAttach("energydrink_milk_splash", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("drink_spray")) - end - end - - self.DoneDeployParticle = true - end -end - -end - -PrecacheParticleSystem("energydrink_milk_splash") - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" -SWEP.WorldModel = "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.MuzzleEffect = "" - -SWEP.ShootSound = "" -SWEP.ShootCritSound = "" - -SWEP.Primary.ClipSize = -1 -SWEP.Primary.Ammo = TF_GRENADES1 -SWEP.Primary.Delay = 1 - -SWEP.ReloadSingle = false - -SWEP.HasCustomMeleeBehaviour = true - -SWEP.HoldType = "ITEM1" - -SWEP.ProjectileShootOffset = Vector(0, 0, 0) - -SWEP.Properties = {} -SWEP.Force = 800 -SWEP.AddPitch = -4 - -SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW -SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE -SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK - -function SWEP:PredictCriticalHit() -end - -function SWEP:MeleeAttack() - local pos = self.Owner:GetShootPos() - - if SERVER then - local grenade = ents.Create("tf_projectile_can") - grenade:SetPos(pos) - grenade:SetAngles(self.Owner:EyeAngles()) - - if self:Critical() then - grenade.critical = true - end - - for k,v in pairs(self.Properties) do - grenade[k] = v - end - - grenade:SetOwner(self.Owner) - grenade.JarType = 2 - self:InitProjectileAttributes(grenade) - - grenade:Spawn() - - local vel = self.Owner:GetAimVector():Angle() - vel.p = vel.p + self.AddPitch - vel = vel:Forward() * self.Force * (grenade.Mass or 10) - - grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) - grenade:GetPhysicsObject():ApplyForceCenter(vel) - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - if SERVER then - self.Owner:Speak("TLK_JARATE_LAUNCH") - end - - self:SendWeaponAnim(self.VM_PRIMARYATTACK) - self.Owner:SetAnimation(PLAYER_ATTACK1) - - self:TakePrimaryAmmo(1) - - self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) - self.Owner.NextGiveAmmoType = self.Primary.Ammo - - self.NextIdle = CurTime() + self:SequenceDuration() - - --self.NextMeleeAttack = CurTime() + 0.25 - if not self.NextMeleeAttack then - self.NextMeleeAttack = {} - end - - table.insert(self.NextMeleeAttack, CurTime() + 0.25) -end - -function SWEP:Holster() - if CLIENT then - self.DoneDeployParticle = false - end - - return self:CallBaseFunction("Holster") -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_trenchknife/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_trenchknife/shared.lua deleted file mode 100644 index 54db7cda8..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_trenchknife/shared.lua +++ /dev/null @@ -1,142 +0,0 @@ -if SERVER then - -AddCSLuaFile("shared.lua") - -end - -if CLIENT then - -SWEP.PrintName = "Trench Knife" -SWEP.Slot = 2 - -function SWEP:ResetBackcritState() - self.NextBackcritIdle = nil - self.BackcritState = false - self.NextAllowBackcritAnim = CurTime() + 0.8 -end - -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_knife_spy.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_knife.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Swing = Sound("Weapon_Knife.Miss") -SWEP.SwingCrit = Sound("Weapon_Knife.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Knife.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Knife.HitWorld") - -SWEP.BaseDamage = 52 -SWEP.DamageRandomize = 0.35 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.CriticalChance = 0 - -SWEP.Primary.Automatic = true -SWEP.Primary.Ammo = "none" -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" - -SWEP.MeleePredictTolerancy = 0.1 -SWEP.MeleeAttackDelay = 0.15 -SWEP.BackstabAngle = 180 - --- ACT_MELEE_VM_STUN - -function SWEP:ShouldBackcrit(ent) - if not ent then - local tr = self:MeleeAttack(true) - ent = tr.Entity - end - - if not IsValid(ent) or ent:Health()<=0 or not self.Owner:CanDamage(ent) or not ent:CanReceiveCrits() then - return false - end - - if not self.BackstabCos then - self.BackstabCos = math.cos(math.rad(self.BackstabAngle * 0.5)) - end - - local v1 = ent:GetPos() - self.Owner:GetPos() - local v2 = ent:GetAngles():Forward() - - v1.z = 0 - v2.z = 0 - v1:Normalize() - v2:Normalize() - - return v1:Dot(v2) > self.BackstabCos -end - -function SWEP:Critical(ent,dmginfo) - if self:ShouldBackcrit(ent) then - return true - end - - return self:CallBaseFunction("Critical", ent, dmginfo) -end - -function SWEP:PredictCriticalHit() - if self:ShouldBackcrit() then - return true - end -end - -function SWEP:Think() - self:CallBaseFunction("Think") - - if CLIENT and self.IsDeployed then - if not self.NextAllowBackcritAnim or CurTime() >= self.NextAllowBackcritAnim then - local shouldbackcrit = self:ShouldBackcrit() - - if shouldbackcrit and not self.BackcritState then - self.NextBackcritIdle = CurTime() + self:SequenceDuration() - elseif not shouldbackcrit and self.BackcritState then - self.NextBackcritIdle = nil - end - self.BackcritState = shouldbackcrit - - if self.NextBackcritIdle and CurTime()>=self.NextBackcritIdle then - self.NextBackcritIdle = nil - end - - self.NextAllowBackcritAnim = nil - end - end -end - -function SWEP:PrimaryAttack() - if not self:CallBaseFunction("PrimaryAttack") then return false end - - self.NameOverride = nil - - if game.SinglePlayer() then - self:CallOnClient("ResetBackcritState", "") - elseif CLIENT then - self:ResetBackcritState() - end -end - -if SERVER then - -hook.Add("PreScaleDamage", "BackcritSetDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - if inf.ShouldBackcrit and inf:ShouldBackcrit(ent) then - inf.ResetBaseDamage = inf.BaseDamage - inf.BaseDamage = 50 - dmginfo:SetDamage(inf.BaseDamage) - end -end) - -hook.Add("PostScaleDamage", "BackcritResetDamage", function(ent, hitgroup, dmginfo) - local inf = dmginfo:GetInflictor() - if inf.ResetBaseDamage then - inf.BaseDamage = inf.ResetBaseDamage - end -end) - -end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_wrench/shared.lua b/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_wrench/shared.lua deleted file mode 100644 index 3cc0f1fe7..000000000 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_wrench/shared.lua +++ /dev/null @@ -1,71 +0,0 @@ -if SERVER then - AddCSLuaFile( "shared.lua" ) -end - -if CLIENT then - SWEP.PrintName = "Wrench" -SWEP.Slot = 2 -SWEP.GlobalCustomHUD = {HudAccountPanel = true} -end - -SWEP.Base = "tf_weapon_melee_base" - -SWEP.ViewModel = "models/weapons/v_models/v_wrench_engineer.mdl" -SWEP.WorldModel = "models/weapons/w_models/w_wrench.mdl" -SWEP.Crosshair = "tf_crosshair3" - -SWEP.Spawnable = true -SWEP.AdminSpawnable = false -SWEP.Category = "Team Fortress 2" - -SWEP.Swing = Sound("Weapon_Wrench.Miss") -SWEP.SwingCrit = Sound("Weapon_Wrench.MissCrit") -SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") -SWEP.HitWorld = Sound("Weapon_Wrench.HitWorld") -SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") -SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") - -SWEP.BaseDamage = 65 -SWEP.DamageRandomize = 0.1 -SWEP.MaxDamageRampUp = 0 -SWEP.MaxDamageFalloff = 0 - -SWEP.Primary.Delay = 0.8 - -SWEP.HoldType = "MELEE" - -SWEP.NoHitSound = true -SWEP.UpgradeSpeed = 25 - -function SWEP:OnMeleeHit(tr) - if tr.Entity and tr.Entity:IsValid() then - if tr.Entity:IsBuilding() then - local ent = tr.Entity - - if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then - if SERVER then - local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) - if m > 0 then - self:EmitSound(self.HitBuildingSuccess) - self.Owner:RemoveAmmo(m, TF_METAL) - umsg.Start("PlayerMetalBonus", self.Owner) - umsg.Short(-m) - umsg.End() - elseif ent:GetState() == 1 then - self:EmitSound(self.HitBuildingSuccess) - else - self:EmitSound(self.HitBuildingFailure) - end - end - else - self:EmitSound(self.HitWorld) - end - elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then - self:EmitSound(self.HitFlesh) - else - self:EmitSound(self.HitWorld) - end - elseif tr.HitWorld then - self:EmitSound(self.HitWorld) - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_conflict.lua b/addon/gamemodes/teamfortress/gamemode/cl_conflict.lua deleted file mode 100644 index 71c5faf4b..000000000 --- a/addon/gamemodes/teamfortress/gamemode/cl_conflict.lua +++ /dev/null @@ -1,35 +0,0 @@ -for k, v in pairs(engine.GetAddons()) do - print("addon "..v.wsid.." aka "..v.title.." has been detected!") - if v.wsid == "349050451" and v.mounted == true then - if not game.SinglePlayer() then if not LocalPlayer():IsListenServerHost() then return end end - local conflict_help_frame = vgui.Create( "DFrame" ) - conflict_help_frame:SetSize(200, 200) - conflict_help_frame:Center() - conflict_help_frame:SetTitle("!!CONFLICT!!") - conflict_help_frame:ShowCloseButton(true) - conflict_help_frame:SetBackgroundBlur(true) - conflict_help_frame:MakePopup() - - local conflicttext = vgui.Create("RichText", conflict_help_frame) - conflicttext:Dock(FILL) - conflicttext:InsertColorChange(255, 255, 255, 255) - conflicttext:CenterHorizontal(0.5) - conflicttext:SetVerticalScrollbarEnabled(false) - conflicttext:AppendText("A addon named "..v.title.." (id "..v.wsid..") has been detected. This addon is known to cause problems with the gamemode. I suggest you disable it while playing the gamemode. After disabling it, reload the map!") - - local conflictbut = vgui.Create("DButton", conflict_help_frame) - conflictbut:SetSize(100, 30) - conflictbut:SetPos(0, 145) - conflictbut:CenterHorizontal(0.5) - conflictbut:SetText("Open Page") - - function conflictbut.DoClick() - steamworks.ViewFile(349050451) - end - end -end - -if !IsMounted("tf") then - ErrorNoHalt("TF2 is not mounted! Expect errors!") -end - diff --git a/addon/gamemodes/teamfortress/gamemode/cl_deathnotice.lua b/addon/gamemodes/teamfortress/gamemode/cl_deathnotice.lua deleted file mode 100644 index 47dbb71a4..000000000 --- a/addon/gamemodes/teamfortress/gamemode/cl_deathnotice.lua +++ /dev/null @@ -1,504 +0,0 @@ -include("cl_killicons.lua") - -local W = ScrW() -local H = ScrH() -local WScale = W/640 -local Scale = H/480 - -surface.CreateFont("TF_Deathnotice", {font = "Verdana", size = 16, weight = 900}) - -Neutral_Color = Color(128, 128, 128, 255) -Red_Color = Color(163, 87, 74) -Blu_Color = Color(85, 124, 131) ---Spectator_Color = Color(128, 128, 128, 255) - -DefaultMessage_Color = Color(251, 235, 202, 255) -DefaultMessageNeg_Color = Color(0, 0, 0, 196) - -local hud_deathnotice_time = GetConVar("hud_deathnotice_time") -local hud_deathnotice_time_local = CreateClientConVar("hud_deathnotice_time_local", 12) - -local Deaths = {} - -local NOTICE_NORMAL = 1 -local NOTICE_HUMILIATION = 2 -local NOTICE_DOMINATION = 3 - -local function IsHidden(name) - -- Name doesn't start with # - if string.byte(name, 1)~=35 then return false end - - name = string.sub(name, 2) - if NPCData[name] and NPCData[name].team==TEAM_HIDDEN then - return true - else - return false - end -end - -local function GetDeathNoticeID(victim_id, attacker_id, cooperator_id, inflictor) - return util.CRC(Format("%d_%d_%d_%s", victim_id or 0, attacker_id or 0, --[[cooperator_id or 0]] 0, inflictor or "")) -end - -usermessage.Hook("Notice_EntityKilledEntity", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - local inflictor = msg:ReadString() - - local attacker_name = msg:ReadString() - local attacker_team = msg:ReadShort() - local attacker_id = msg:ReadShort() - - local cooperator_name = msg:ReadString() - local cooperator_team = msg:ReadShort() - local cooperator_id = msg:ReadShort() - - if cooperator_name=="" then cooperator_name = nil end - - local critical = msg:ReadBool() - - if victim_team ~= TEAM_HIDDEN then - GAMEMODE:AddDeathNotice( - attacker_name, - attacker_team, - inflictor, - victim_name, - victim_team, - cooperator_name, - cooperator_team, - nil, - critical, - pid==attacker_id or pid==victim_id or pid==cooperator_id, - GetDeathNoticeID(victim_id, attacker_id, cooperator_id, inflictor) - ) - end -end) - -usermessage.Hook("Notice_EntityHumiliationCounter", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - local inflictor = msg:ReadString() - - local attacker_name = msg:ReadString() - local attacker_team = msg:ReadShort() - local attacker_id = msg:ReadShort() - - --[[ - local cooperator_name = msg:ReadString() - local cooperator_team = msg:ReadShort() - local cooperator_id = msg:ReadShort() - - if cooperator_name=="" then cooperator_name = nil end]] - - local critical = msg:ReadBool() - - if victim_team ~= TEAM_HIDDEN then - GAMEMODE:AddDeathNotice( - attacker_name, - attacker_team, - inflictor, - victim_name, - victim_team, - nil, - 0, - nil, - critical, - pid==attacker_id or pid==victim_id, - GetDeathNoticeID(victim_id, attacker_id, 0, inflictor), - NOTICE_HUMILIATION - ) - end -end) - -usermessage.Hook("Notice_EntityFinishedOffEntity", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - local attacker_name = msg:ReadString() - local attacker_team = msg:ReadShort() - local attacker_id = msg:ReadShort() - - GAMEMODE:AddDeathNotice( - attacker_name, - attacker_team, - "skull", - victim_name, - victim_team, - nil, - 0, - "finished off ", - false, - pid==attacker_id or pid==victim_id, - GetDeathNoticeID(victim_id, attacker_id, 0, "__finish") - ) -end) - -usermessage.Hook("Notice_EntityFell", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - GAMEMODE:AddDeathNotice( - victim_name, - victim_team, - "skull", - "", - 0, - nil, - 0, - "fell to a clumsy, painful death", - false, - pid==attacker_id or pid==victim_id, - GetDeathNoticeID(victim_id, 0, 0, "__falldamage") - ) -end) - -usermessage.Hook("Notice_EntitySuicided", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - GAMEMODE:AddDeathNotice( - victim_name, - victim_team, - "skull", - "", - 0, - nil, - 0, - "bid farewell, cruel world!", - false, - pid==attacker_id or pid==victim_id, - GetDeathNoticeID(victim_id, 0, 0, "__suicide") - ) -end) - -usermessage.Hook("Notice_EntityDominatedEntity", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - local attacker_name = msg:ReadString() - local attacker_team = msg:ReadShort() - local attacker_id = msg:ReadShort() - - GAMEMODE:AddDeathNotice( - attacker_name, - attacker_team, - "domination", - victim_name, - victim_team, - nil, - 0, - tf_lang.GetRaw("#Msg_Dominating").." ", - false, - pid==attacker_id or pid==victim_id, - GetDeathNoticeID(victim_id, attacker_id, 0, "__domination"), - NOTICE_DOMINATION - ) -end) - -usermessage.Hook("Notice_EntityRevengeEntity", function(msg) - local pid = LocalPlayer():UserID() - - local victim_name = msg:ReadString() - local victim_team = msg:ReadShort() - local victim_id = msg:ReadShort() - - local attacker_name = msg:ReadString() - local attacker_team = msg:ReadShort() - local attacker_id = msg:ReadShort() - - GAMEMODE:AddDeathNotice( - attacker_name, - attacker_team, - "domination", - victim_name, - victim_team, - nil, - 0, - tf_lang.GetRaw("#Msg_Revenge").." ", - false, - pid==attacker_id or pid==victim_id, - GetDeathNoticeID(victim_id, attacker_id, 0, "__revenge"), - NOTICE_DOMINATION - ) -end) - -function GM:AddDeathNotice(Attacker, team1, Inflictor, Victim, team2, Cooperator, team3, Message, Critical, Highlight, UniqueId, NoticeType) -print(Attacker, Attacker, Attacker, team1) - if string.find(Attacker, "\1") then - local obj, owner = unpack(string.Explode("\1", Attacker)) - if obj and owner then - Attacker = Format("%s (%s)", tf_lang.GetRaw(obj), tf_lang.GetRaw(owner)) - end - end - - if string.find(Victim, "\1") then - local obj, owner = unpack(string.Explode("\1", Victim)) - if obj and owner then - Victim = Format("%s (%s)", tf_lang.GetRaw(obj), tf_lang.GetRaw(owner)) - end - end - - NoticeType = NoticeType or NOTICE_NORMAL - - if Inflictor then - Inflictor = TranslateKilliconName(Inflictor) - end - - for _,v in ipairs(Deaths) do - if v.id == UniqueId then - local quit = false - - if NoticeType == NOTICE_HUMILIATION then - if v.hitcount and v.hitcount > 0 then - -- Hit counter message received after a hit counter message on the same entity, increase the hit counter - v.hitcount = v.hitcount + 1 - v.right2 = tf_lang.GetFormatted("#Humiliation_Count", v.hitcount).." " - v.time = CurTime() - else - -- Hit counter message received after kill message, update the kill message with a funny comment - v.hitcount = -1 - v.right2 = tf_lang.GetFormatted("#Humiliation_Kill").." " - v.time = CurTime() - end - - quit = true - elseif v.hitcount then - -- Kill message received after hit counter message, turn the hit counter into a kill message - v.hitcount = -1 - v.right2 = tf_lang.GetFormatted("#Humiliation_Kill").." " - v.time = CurTime() - - quit = true - end - - if quit then - if Critical and not v.critical then - v.critical = true - end - - return - end - end - end - - if NoticeType == NOTICE_HUMILIATION then - Message = tf_lang.GetFormatted("#Humiliation_Count", 1).." " - end - - if Message then - print(Attacker.." "..Message..Victim) - else - local InflictorName = string.gsub(Inflictor, "^tf_weapon_", "") - if Critical then - print(Attacker.." killed "..Victim.." using "..InflictorName.." (crit)") - else - print(Attacker.." killed "..Victim.." using "..InflictorName) - end - end - - local Death = {} - Death.time = CurTime() - Death.id = UniqueId - - if team1 ~= TEAM_HIDDEN then - Death.left = Attacker - end - - if team3 ~= TEAM_HIDDEN then - Death.left2 = Cooperator - end - - if Death.left2 and not Death.left then - Death.left = Death.left2 - Death.left2 = nil - end - - Death.right = Victim - Death.right2 = Message - - Death.icon = Inflictor - - Death.critical = Critical - Death.highlight = Highlight - - if NoticeType == NOTICE_DOMINATION then - if Highlight then - Death.color1 = table.Copy(DefaultMessageNeg_Color) - Death.color2 = table.Copy(DefaultMessageNeg_Color) - Death.color3 = table.Copy(DefaultMessageNeg_Color) - else - Death.color1 = table.Copy(DefaultMessage_Color) - Death.color2 = table.Copy(DefaultMessage_Color) - Death.color3 = table.Copy(DefaultMessage_Color) - end - else - if team1 == -1 or team1 == 1002 then Death.color1 = table.Copy(Neutral_Color) - elseif team1 == 1 then Death.color1 = table.Copy(Red_Color) - elseif team1 == 2 then Death.color1 = table.Copy(Blu_Color) - else Death.color1 = table.Copy(GetTeamSecondaryColor(team1)) end - - if team2 == -1 or team2 == 1002 then Death.color2 = table.Copy(Neutral_Color) - elseif team2 == 1 then Death.color2 = table.Copy(Red_Color) - elseif team2 == 2 then Death.color2 = table.Copy(Blu_Color) - else Death.color2 = table.Copy(GetTeamSecondaryColor(team2)) end - - if team3 == -1 or team3 == 1002 then Death.color3 = table.Copy(Neutral_Color) - elseif team3 == 1 then Death.color3 = table.Copy(Red_Color) - elseif team3 == 2 then Death.color3 = table.Copy(Blu_Color) - else Death.color3 = table.Copy(GetTeamSecondaryColor(team3)) end - end - - if Highlight then Death.color4 = table.Copy(DefaultMessageNeg_Color) - else Death.Color4 = table.Copy(DefaultMessage_Color) end - - if Death.left == Death.right then - Death.left = nil - end - - if NoticeType == NOTICE_HUMILIATION then - Death.hitcount = 1 - end - - table.insert(Deaths, Death) -end - -local function DrawDeath(x, y, death) - local _, _, d_texture_tf = GetKilliconData("d_skull", death.highlight) - local K, color, d_texture = GetKilliconData(death.icon, death.highlight) - local w, h = K.w, K.h - local box_x, box_width, box_height - local x_attacker, x_coop, x_plus - - - box_height = 15 * Scale - local ks = box_height / h - w,h = w*ks, h*ks - - surface.SetFont("TFDefault") - local l_victim, h_text = surface.GetTextSize(death.right) - - local x_victim = x - l_victim - 4 - local x_icon, x_message - - if death.right2 then - local l_message = surface.GetTextSize(death.right2) - x_message = x_victim - l_message - x_icon = x_message - w - 4 - else - x_icon = x_victim - w - 4 - end - - if death.left then - if death.left2 then - local l_coop = surface.GetTextSize(death.left2) - local l_plus = surface.GetTextSize("+") - local l_attacker = surface.GetTextSize(death.left) - - x_coop = x_icon - l_coop - 4 - x_plus = x_coop - l_plus - 4 - x_attacker = x_plus - l_attacker - 4 - else - local l_attacker = surface.GetTextSize(death.left) - x_attacker = x_icon - l_attacker - 4 - end - - box_x = x_attacker-20 - box_width = x-x_attacker+30 - else - box_x = x_icon-20 - box_width = x-x_icon+30 - end - - local y_text = y + math.ceil((box_height-h_text)/2) + 1 - - draw.RoundedBox(4, box_x, y, box_width, box_height, color) - - surface.SetDrawColor(255,255,255,255) - local tex - if death.critical then - tex = surface.GetTextureID(d_texture_tf) - tf_draw.ModTexture(tex, x_icon, y, w, h, Killicons["_images"].d_crit) - end - tex = surface.GetTextureID(d_texture) - tf_draw.ModTexture(tex, x_icon, y, w, h, K) - - // Draw KILLER - if death.left then - draw.SimpleText(death.left, "TFDefault", x_attacker, y_text, death.color1, TEXT_ALIGN_LEFT) - if death.left2 then - draw.SimpleText("+", "TFDefault", x_plus, y_text, death.color3, TEXT_ALIGN_LEFT) - draw.SimpleText(death.left2, "TFDefault", x_coop, y_text, death.color3, TEXT_ALIGN_LEFT) - end - end - - // Draw VICTIM - draw.SimpleText(death.right, "TFDefault", x_victim, y_text, death.color2, TEXT_ALIGN_LEFT) - if death.right2 then - draw.SimpleText(death.right2, "TFDefault", x_message, y_text, death.color4, TEXT_ALIGN_LEFT) - end - - return y + box_height + 5*Scale -end - - -function GM:DrawDeathNotice(x, y) - if LocalPlayer().InScreenshot then return end - - local hud_deathnotice_time = hud_deathnotice_time:GetFloat() - local hud_deathnotice_time_local = hud_deathnotice_time_local:GetFloat() - --local cleared = true - - x = ScrW() - 25 - y = y * ScrH() - - -- Draw - local size = #Deaths - local i = 1 - local Death - - while i <= size do - Death = Deaths[i] - - local maxtime = (Death.highlight and hud_deathnotice_time_local) or hud_deathnotice_time - - if Death.time + maxtime > CurTime() then - y = DrawDeath(x, y, Death) - --cleared = false - i = i + 1 - else - table.remove(Deaths, i) - size = size - 1 - end - end - - --[[ - // We want to maintain the order of the table so instead of removing - // expired entries one by one we will just clear the entire table - // once everything is expired. - - -- fucking bullshit garry go suk dik ok - - if cleared then - Deaths = {} - end]] -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_init.lua b/addon/gamemodes/teamfortress/gamemode/cl_init.lua deleted file mode 100644 index daf746113..000000000 --- a/addon/gamemodes/teamfortress/gamemode/cl_init.lua +++ /dev/null @@ -1,911 +0,0 @@ - -local LOGFILE = "teamfortress/log_client.txt" -file.Delete(LOGFILE) -file.Append(LOGFILE, "Loading clientside script\n") -local load_time = SysTime() -local blacklist = {["Frying Pan"] = true, ["Golden Frying Pan"] = true, ["The PASSTIME Jack"] = true, ["TTG Max Pistol"] = true, ["Sexo de Pene Gay"] = true, ["Team Spirit"] = true,} -- Items that should NEVER show, must be their item.name if a hat/weapon! -local name_blacklist = {["The AK47"] = true,} -- Weapons that have names of other weapons must have their item.name put in here - -include("shd_items.lua") - -include("cl_proxies.lua") -include("cl_pickteam.lua") - -include("cl_conflict.lua") - -include("shared.lua") -include("cl_entclientinit.lua") -include("cl_deathnotice.lua") -include("cl_scheme.lua") - -include("cl_player_other.lua") - -include("cl_camera.lua") - -include("tf_draw_module.lua") - -include("cl_materialfix.lua") - -include("cl_pac.lua") - -include("proxies/itemtintcolor.lua") - -include("proxies/sniperriflecharge.lua") - -CreateClientConVar( "tf_haltinspect", "1", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Whether or not players can inspect while no-clipping." ) -CreateClientConVar( "tf_maxhealth_hud", "1", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Enable maxhealth above health when hurt." ) -CreateClientConVar( "tf_robot", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a robot after respawning." ) - -function GM:ShouldDrawWorldModel(pl) - if pl:GetNWBool("NoWeapon") == true then return false end - return true -end - ---[[ -timer.Create("lol",0.2,0,function() m=T:GetBoneMatrix(T:LookupBone("bip_head")) m:Translate(Vector(0,-5,0)) local e=EffectData() e:SetOrigin(m:GetTranslation()) e:SetAngles(Angle(180,0,0)) util.Effect("BloodImpact",e) end) - -LocalPlayer().BuildBonePositions=function(pl) local m = pl:GetBoneMatrix(pl:LookupBone("bip_neck")) m:Scale(Vector(0,0,0)) m:Translate(Vector(0,0,0)) pl:SetBoneMatrix(pl:LookupBone("bip_neck"),m) end - -TBB=function() local m=P:GetBoneMatrix(P:LookupBone("bip_spine_3")) m:Rotate(Angle(-10,0,-20)) m:Translate(Vector(0,-8,-3.5)) T:SetBoneMatrix(T:LookupBone("bip_head"),m) end - -]] - ---include("vgui/vgui_teammenubg.lua") - ---[[ -tf_util.AddDebugInfo("move_x", function() - return "forward : "..tostring(LocalPlayer():GetNWFloat("MoveForward")) -end) - -tf_util.AddDebugInfo("move_y", function() - return "side : "..tostring(LocalPlayer():GetNWFloat("MoveSide")) -end) - -tf_util.AddDebugInfo("move_z", function() - return "up : "..tostring(LocalPlayer():GetNWFloat("MoveUp")) -end)]] - -hook.Add("RenderScreenspaceEffects", "RenderPlayerStateOverlay", function() - if IsValid(LocalPlayer()) then - LocalPlayer():DrawStateOverlay() - end -end) - -concommand.Add("muzzlepos", function(pl) - local att = pl:GetViewModel():GetAttachment(pl:GetViewModel():LookupAttachment("muzzle")) - if not att then return end - - print(att.Pos - pl:GetShootPos()) -end) - -function GM:PlayerBindPress(pl, bind) - local w = pl:GetActiveWeapon() - if w and w:IsValid() and w:GetNWBool("SlotInputEnabled") then - local num = tonumber(string.match(bind, "^slot(%d)") or "") - if num then - pl:ConCommand("select_slot "..num) - return true - end - end -end - -function GetPlayerByUserID(id) - for _,v in pairs(player.GetAll()) do - if v:UserID()==id then - return v - end - end - return NULL -end - --- Spawn player gibs -usermessage.Hook("GibPlayer", function(um) - local pl = GetPlayerByUserID(um:ReadLong()) - if not IsValid(pl) then return end - - pl.DeathFlags = um:ReadShort() - - local effectdata = EffectData() - effectdata:SetEntity(pl) - util.Effect("tf_player_gibbed", effectdata) -end) - -usermessage.Hook("GibNPC", function(um) - local npc = um:ReadEntity() - if not IsValid(npc) then return end - - npc.DeathFlags = um:ReadShort() - - local effectdata = EffectData() - effectdata:SetEntity(npc) - util.Effect("tf_player_gibbed", effectdata) -end) - -usermessage.Hook("SilenceNPC", function(um) - local npc = um:ReadEntity() - if not IsValid(npc) then return end - - timer.Simple(0, function() npc:EmitSound("AI_BaseNPC.SentenceStop") end) - timer.Simple(0.1, function() npc:EmitSound("AI_BaseNPC.SentenceStop") end) -end) - --- Critical hit notifications -usermessage.Hook("CriticalHit", function(um) - local pos = um:ReadVector() - LocalPlayer():EmitSound("TFPlayer.CritHit") - ParticleEffect("crit_text", pos, Angle(0,0,0)) -end) - -usermessage.Hook("CriticalHitMini", function(um) - local pos = um:ReadVector() - LocalPlayer():EmitSound("TFPlayer.CritHit") - ParticleEffect("minicrit_text", pos, Angle(0,0,0)) -end) - -usermessage.Hook("CriticalHitMiniOther", function(um) - local pos = um:ReadVector() - sound.Play("TFPlayer.CritHitMini", pos) - ParticleEffect("minicrit_text", pos, Angle(0,0,0)) -end) - -usermessage.Hook("CriticalHitReceived", function(um) - LocalPlayer():EmitSound("TFPlayer.CritPain", 100, 100) -end) - --- Domination notifications -usermessage.Hook("PlayerDomination", function(um) - local victim = um:ReadEntity() - local attacker = um:ReadEntity() - if not IsValid(victim) or not IsValid(attacker) then - return - end - - if victim == LocalPlayer() then - local data = EffectData() - data:SetOrigin(attacker:GetPos()) - data:SetEntity(attacker) - util.Effect("tf_nemesis_icon", data) - LocalPlayer():EmitSound("Game.Nemesis") - elseif attacker == LocalPlayer() then - LocalPlayer():EmitSound("Game.Domination") - end - - if not victim.NemesisesList then victim.NemesisesList = {} end - if not attacker.DominationsList then attacker.DominationsList = {} end - - victim.NemesisesList[attacker] = true - attacker.DominationsList[victim] = true -end) - -usermessage.Hook("PlayerRevenge", function(um) - local victim = um:ReadEntity() - local attacker = um:ReadEntity() - if not IsValid(victim) or not IsValid(attacker) then - return - end - - if attacker == LocalPlayer() then - if IsValid(victim.NemesisEffect) and victim.NemesisEffect.Destroy then - victim.NemesisEffect:Destroy() - end - LocalPlayer():EmitSound("Game.Revenge") - elseif victim == LocalPlayer() then - LocalPlayer():EmitSound("Game.Revenge") - end - - if attacker.NemesisesList then - attacker.NemesisesList[victim] = nil - end - - if victim.DominationsList then - victim.DominationsList[attacker] = nil - end -end) - -usermessage.Hook("PlayerResetDominations", function(um) - local pl = um:ReadEntity() - if not IsValid(pl) then return end - - pl.NemesisesList = nil - pl.DominationsList = nil - - if IsValid(pl.NemesisEffect) and pl.NemesisEffect.Destroy then - pl.NemesisEffect:Destroy() - end - - for _,v in pairs(player.GetAll()) do - if v ~= pl then - if v.NemesisesList then - v.NemesisesList[pl] = nil - end - if v.DominationsList then - v.DominationsList[pl] = nil - end - end - end -end) - -usermessage.Hook("SendPlayerDominations", function(um) - local pl = um:ReadEntity() - if not IsValid(pl) then return end - - local num = um:ReadChar() - if num <= 0 then return end - - pl.DominationsList = {} - for i=1,num do - local k = um:ReadEntity() - if IsValid(pl) then - pl.DominationsList[k] = true - end - end -end) - -local function DoHealthBonusEffect(ent, positive) - if not IsValid(ent) then return end - - local col = "red" - if ent:EntityTeam()==TEAM_BLU then col = "blu" end - - local pos = ent:GetPos() + Vector(0,0,75) + math.Rand(0,4) * Angle(math.Rand(-180,180),math.Rand(-180,180),0):Forward() - - if positive then - ParticleEffect("healthgained_"..col, pos, Angle(0,0,0)) - else - ParticleEffect("healthlost_"..col, pos, Angle(0,0,0)) - end -end - -usermessage.Hook("PlayerHealthBonusEffect", function(um) - local ent = GetPlayerByUserID(um:ReadLong()) - local positive = um:ReadBool() - - if ent ~= LocalPlayer() or ent:ShouldDrawLocalPlayer() then - DoHealthBonusEffect(ent, positive) - end -end) - -usermessage.Hook("EntityHealthBonusEffect", function(um) - local ent = um:ReadEntity() - local positive = um:ReadBool() - DoHealthBonusEffect(ent, positive) -end) - -usermessage.Hook("PlayerRocketJumpEffect", function(um) - local ent = GetPlayerByUserID(um:ReadLong()) - - if ent ~= LocalPlayer() or ent:ShouldDrawLocalPlayer() then - ParticleEffectAttach("rocketjump_smoke", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("foot_L")) - ParticleEffectAttach("rocketjump_smoke", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("foot_R")) - end -end) - -usermessage.Hook("PlayChargeReadySound", function(um) - LocalPlayer():EmitSound("TFPlayer.ReCharged") -end) - -include("cl_hud.lua") - -file.Append(LOGFILE, Format("Done loading, time = %f\n", SysTime() - load_time)) -local load_time = SysTime() - -function GetImprovedItemName(name) -for k, v in pairs(tf_items.ReturnItems()) do - if v and istable(v) and v["used_by_classes"] and v["name"] and v["name"] == name and v["used_by_classes"][LocalPlayer():GetPlayerClass()] and v["item_slot"] and not blacklist[v["name"]] and v["prefab"] ~= "tournament_medal" then - if (v["item_slot"] == "primary" or v["item_slot"] == "secondary" or v["item_slot"] == "melee") then - if name_blacklist[v["name"]] then - return "wep"..v["name"] - elseif string.sub(v["name"], 1, 10) == "Australium" then - return "wep".."Australium "..tf_lang.GetRaw(v["item_name"]) or v["name"] - elseif v["item_name"] and string.sub(v["item_name"], 1, 10) == "#TF_Weapon" and string.sub(v["name"], 1, 9) ~= "TF_WEAPON" then - return "wep"..v["name"] - else - return "wep"..tf_lang.GetRaw(v["item_name"]) or v["name"] - end - elseif v and v["item_slot"] and v["item_slot"] == "head" then - return "hat"..v["name"] - elseif v and v["item_slot"] and v["item_slot"] == "misc" then - return "hat"..v["name"] - end - end -end -end - -function ClassSelection() -local ply = LocalPlayer() -local ClassFrame = vgui.Create("DFrame") --create a frame -ClassFrame:SetSize(840, 130) --set its size -ClassFrame:Center() --position it at the center of the screen -ClassFrame:SetTitle("TF2 Menu") --set the title of the menu -ClassFrame:SetDraggable(true) --can you move it around -ClassFrame:SetSizable(false) --can you resize it? -if ply:GetPlayerClass() ~= "" then - ClassFrame:ShowCloseButton(true) --can you close it -else - ClassFrame:ShowCloseButton(false) -end -ClassFrame:MakePopup() --make it appear - -local ScoutButton = vgui.Create("DButton", ClassFrame) -ScoutButton:SetSize(100, 30) -ScoutButton:SetPos(10, 35) -ScoutButton:SetText("Scout") -ScoutButton.DoClick = function() RunConsoleCommand("changeclass", "scout") surface.PlaySound( "/music/class_menu_01.wav" ) ClassFrame:Close() end - -local SoldierButton = vgui.Create("DButton", ClassFrame) -SoldierButton:SetSize(100, 30) -SoldierButton:SetPos(100, 35) -SoldierButton:SetText("Soldier") --Set the name of the button -SoldierButton.DoClick = function() RunConsoleCommand("changeclass", "soldier") surface.PlaySound( "/music/class_menu_02.wav" ) ClassFrame:Close() end - -local PyroButton = vgui.Create("DButton", ClassFrame) -PyroButton:SetSize(100, 30) -PyroButton:SetPos(190, 35) -PyroButton:SetText("Pyro") --Set the name of the button -PyroButton.DoClick = function() RunConsoleCommand("changeclass", "pyro") surface.PlaySound( "/music/class_menu_03.wav" ) ClassFrame:Close() end - -local DemomanButton = vgui.Create("DButton", ClassFrame) -DemomanButton:SetSize(100, 30) -DemomanButton:SetPos(280, 35) -DemomanButton:SetText("Demoman") --Set the name of the button -DemomanButton.DoClick = function() RunConsoleCommand("changeclass", "demoman") surface.PlaySound( "/music/class_menu_04.wav" ) ClassFrame:Close() end - -local HeavyButton = vgui.Create("DButton", ClassFrame) -HeavyButton:SetSize(100, 30) -HeavyButton:SetPos(370, 35) -HeavyButton:SetText("Heavy") --Set the name of the button -HeavyButton.DoClick = function() RunConsoleCommand("changeclass", "heavy") surface.PlaySound( "/music/class_menu_05.wav" ) ClassFrame:Close() end - -local EngineerButton = vgui.Create("DButton", ClassFrame) -EngineerButton:SetSize(100, 30) -EngineerButton:SetPos(460, 35) -EngineerButton:SetText("Engineer") --Set the name of the button -EngineerButton.DoClick = function() RunConsoleCommand("changeclass", "engineer") surface.PlaySound( "/music/class_menu_06.wav" ) ClassFrame:Close() end - -local MedicButton = vgui.Create("DButton", ClassFrame) -MedicButton:SetSize(100, 30) -MedicButton:SetPos(550, 35) -MedicButton:SetText("Medic") --Set the name of the button -MedicButton.DoClick = function() RunConsoleCommand("changeclass", "medic") surface.PlaySound( "/music/class_menu_07.wav" ) ClassFrame:Close() end - -local SniperButton = vgui.Create("DButton", ClassFrame) -SniperButton:SetSize(100, 30) -SniperButton:SetPos(640, 35) -SniperButton:SetText("Sniper") --Set the name of the button -SniperButton.DoClick = function() RunConsoleCommand("changeclass", "sniper") surface.PlaySound( "/music/class_menu_08.wav" ) ClassFrame:Close() end - -local SpyButton = vgui.Create("DButton", ClassFrame) -SpyButton:SetSize(100, 30) -SpyButton:SetPos(730, 35) -SpyButton:SetText("Spy") --Set the name of the button -SpyButton.DoClick = function() RunConsoleCommand("changeclass", "spy") surface.PlaySound( "/music/class_menu_09.wav" ) ClassFrame:Close() end - -if !GetConVar("tf_disable_fun_classes"):GetBool() then -local GmodButton = vgui.Create("DButton", ClassFrame) -GmodButton:SetSize(100, 30) -GmodButton:SetPos(366, 70) -GmodButton:SetText("GMod Player") --Set the name of the button -GmodButton.DoClick = function() RunConsoleCommand("changeclass", "gmodplayer") ClassFrame:Close() end -end - -local Hint = vgui.Create( "DLabel", ClassFrame ) -Hint:SetPos( 10, 70 ) -Hint:SetText( ( string.upper(input.LookupBinding( "gm_showteam" )) or "F2" ).." to open this menu" ) -Hint:SizeToContents() - -local Hint = vgui.Create( "DLabel", ClassFrame ) -Hint:SetPos( 10, 82 ) -Hint:SetText( ( string.upper(input.LookupBinding( "gm_showspare1" )) or "F3" ).." to open the hat picker" ) -Hint:SizeToContents() - -local Hint = vgui.Create( "DLabel", ClassFrame ) -Hint:SetPos( 10, 94 ) -Hint:SetText( ( string.upper(input.LookupBinding( "gm_showspare2" )) or "F4" ).." to open the weapon picker" ) -Hint:SizeToContents() - -local TeamRed = vgui.Create( "DButton", ClassFrame ) -function TeamRed.DoClick() RunConsoleCommand( "changeteam", 1 ) ClassFrame:Close() end -TeamRed:SetPos( 700, 65 ) -TeamRed:SetSize( 130, 20 ) -TeamRed:SetText( "RED Team" ) -local TeamBlu = vgui.Create( "DButton", ClassFrame ) -function TeamBlu.DoClick() RunConsoleCommand( "changeteam", 2 ) ClassFrame:Close() end -TeamBlu:SetPos( 700, 105 ) -TeamBlu:SetSize( 130, 20 ) -TeamBlu:SetText( "BLU Team" ) - -local spectate = vgui.Create("DModelPanel", ClassFrame) -spectate:SetPos( 625, 65 ) -spectate:SetSize( 75, 100 ) -spectate:SetModel( "models/vgui/ui_team01_spectate.mdl" ) - -spectate:SetFOV(15) -spectate:SetCamPos(Vector(90, 50, 35)) -spectate:SetLookAt(Vector(-1.883671, -12.644326, 30.984015)) - -function spectate.DoClick() RunConsoleCommand( "tf_spectate" ) ClassFrame:Close() end - -function spectate:LayoutEntity() - self.Hov = self.Hov or false - if self:IsHovered() and !self.Hov then - self.Entity:SetBodygroup(1, 1) - local random = math.random(3) - if random == 1 then - surface.PlaySound("ui/tv_tune.mp3") - else - surface.PlaySound("ui/tv_tune"..random..".mp3") - end - self.Hov = true - elseif !self:IsHovered() and self.Hov then - self.Entity:SetBodygroup(1, 0) - self.Hov = false - end -end - -if !GetConVar("tf_competitive"):GetBool() then - local TeamNeu = vgui.Create( "DButton", ClassFrame ) - function TeamNeu.DoClick() RunConsoleCommand( "changeteam", 4 ) ClassFrame:Close() end - TeamNeu:SetPos( 700, 85 ) - TeamNeu:SetSize( 130, 20 ) - TeamNeu:SetText( "Neutral Team" ) -end - -local Option1 = vgui.Create( "DCheckBox", ClassFrame ) -Option1:SetPos( 10, 110 ) -Option1:SetValue( GetConVar("tf_righthand"):GetInt() ) - -function Option1:OnChange(new) - if new == false then - RunConsoleCommand("tf_righthand", 0) - else - RunConsoleCommand("tf_righthand", 1) - end -end - -local Option1text = vgui.Create( "DLabel", ClassFrame ) -Option1text:SetPos( 30, 110 ) -Option1text:SetText( "Right handed" ) -Option1text:SizeToContents() - -local Option2 = vgui.Create( "DCheckBox", ClassFrame ) -Option2:SetPos( 100, 110 ) -Option2:SetValue( GetConVar("tf_autoreload"):GetInt() ) - -function Option2:OnChange(new) - if new == false then - RunConsoleCommand("tf_autoreload", 0) - else - RunConsoleCommand("tf_autoreload", 1) - end -end - -local Option2text = vgui.Create( "DLabel", ClassFrame ) -Option2text:SetPos( 120, 110 ) -Option2text:SetText( "Autoreload" ) -Option2text:SizeToContents() - ---[[local Option3 = vgui.Create( "DCheckBox", ClassFrame ) -Option3:SetPos( 180, 110 ) -Option3:SetValue( GetConVar("tf_robot"):GetInt() ) - -function Option3:OnChange(new) - RunConsoleCommand("kill") - if new == false then - RunConsoleCommand("tf_robot", 0) - else - RunConsoleCommand("tf_robot", 1) - end -end - -local Option3text = vgui.Create( "DLabel", ClassFrame ) -Option3text:SetPos( 200, 110 ) -Option3text:SetText( "Become a Robot" ) -Option3text:SizeToContents()]] - -local tauntlaugh = vgui.Create( "DButton", ClassFrame ) -function tauntlaugh.DoClick() RunConsoleCommand( "tf_taunt_laugh" ) ClassFrame:Close() end -tauntlaugh:SetPos( 180, 107 ) -tauntlaugh:SetSize( 90, 20 ) -tauntlaugh:SetText( "Schadenfreude" ) - -local taunt1 = vgui.Create( "DButton", ClassFrame ) -function taunt1.DoClick() RunConsoleCommand( "tf_taunt", "1" ) ClassFrame:Close() end -taunt1:SetPos( 280, 107 ) -taunt1:SetSize( 20, 20 ) -taunt1:SetText( "1" ) - -local taunt2 = vgui.Create( "DButton", ClassFrame ) -function taunt2.DoClick() RunConsoleCommand( "tf_taunt", "2" ) ClassFrame:Close() end -taunt2:SetPos( 310, 107 ) -taunt2:SetSize( 20, 20 ) -taunt2:SetText( "2" ) - -local taunt3 = vgui.Create( "DButton", ClassFrame ) -function taunt3.DoClick() RunConsoleCommand( "tf_taunt", "3" ) ClassFrame:Close() end -taunt3:SetPos( 340, 107 ) -taunt3:SetSize( 20, 20 ) -taunt3:SetText( "3" ) - ---[[local tauntlaugh = vgui.Create( "DButton", ClassFrame ) -function tauntlaugh.DoClick() RunConsoleCommand( "tf_tp_immersive_toggle" ) ClassFrame:Close() end -tauntlaugh:SetPos( 590, 107 ) -tauntlaugh:SetSize( 90, 20 ) -tauntlaugh:SetText( "Immersive Toggle" )]] - -local tauntlaugh = vgui.Create( "DButton", ClassFrame ) -function tauntlaugh.DoClick() RunConsoleCommand( "tf_hatpainter" ) end -tauntlaugh:SetPos( 370, 107 ) -tauntlaugh:SetSize( 90, 20 ) -tauntlaugh:SetText( "Hat Painter" ) - ---[[local function select_item(selector, data, item) - print(item) - if data and selector:GetOptionData(data) then - ply:ConCommand( "giveitem "..selector:GetOptionData(data) ) - else - ply:ConCommand( "giveitem "..item ) - end -end - -local weaponselector = vgui.Create( "DComboBox", ClassFrame ) -weaponselector:SetValue( "Weapons" ) -weaponselector:Center() -weaponselector:SetPos( 590, 107 ) -weaponselector:SetSize( 100, 20 ) -function weaponselector.OnSelect( _, data, weapon ) - select_item( weaponselector, data, weapon ) - - weaponselector:CloseMenu() - weaponselector:SetValue( "Weapons" ) - weaponselector:SetTooltip("test") -end - -local miscselector = vgui.Create( "DComboBox", ClassFrame ) -miscselector:SetValue( "Miscs" ) -miscselector:Center() -miscselector:SetPos( 590, 86 ) -miscselector:SetSize( 100, 20 ) -function miscselector.OnSelect( _, data, misc ) - select_item( miscselector, data, misc ) - - miscselector:CloseMenu() - miscselector:SetValue( "Miscs" ) -end - -local hatselector = vgui.Create( "DComboBox", ClassFrame ) -hatselector:SetValue( "Hats" ) -hatselector:Center() -hatselector:SetPos( 590, 65 ) -hatselector:SetSize( 100, 20 ) -function hatselector.OnSelect( _, data, hat ) - select_item( hatselector, data, hat ) - - hatselector:CloseMenu() - hatselector:SetValue( "Hats" ) -end - -for k, v in pairs(tf_items.ReturnItems()) do - if v and istable(v) and v["name"] and GetImprovedItemName(v["name"]) then - if string.sub(GetImprovedItemName(v["name"]), 1, 3) == "wep" then - weaponselector:AddChoice(string.sub(GetImprovedItemName(v["name"]), 4), v["name"]) - elseif string.sub(GetImprovedItemName(v["name"]), 1, 3) == "hat" then - hatselector:AddChoice(string.sub(GetImprovedItemName(v["name"]), 4), v["name"]) - end - end -end]] - -end - ---[[function GM:PlayerBindPress(pl, bind, pressed) - if (bind == "+menu") then - RunConsoleCommand("lastinv") - end -end]] - -function paintcanTohex(dec) -- code from https://stackoverflow.com/a/37797380 - return string.sub(string.format("%x", dec * 256), 1, 6) -end - -function hex2color(hex) -- code from https://gist.github.com/jasonbradley/4357406 - hex = hex:gsub("#","") - local r, g, b = tonumber("0x"..hex:sub(1,2)), tonumber("0x"..hex:sub(3,4)), tonumber("0x"..hex:sub(5,6)) - return string.ToColor(r.." "..g.." "..b.." 255") -end - --- wouldn't mind a hex to rgb in glua by default - -local function HatPicker() -- inb4 someone modifies this menu without using #suggestions in the first place -local ply = LocalPlayer() -local Frame = vgui.Create( "DFrame" ) -Frame:SetTitle( "Hat Painter" ) -Frame:SetSize( 300, 385 ) -Frame:Center() -Frame:MakePopup() - -local function add_hats(paintlist, convar, colorpicker) - local paintlistc = paintlist:AddNode("None") - paintlistc:SetIcon("icon16/cancel.png") - paintlistc.DoClick = function() - local color = Color(0, 0, 0, 255) - colorpicker:SetColor(Color(0, 0, 0)) -- hack!! - ply:ConCommand(convar.." "..tostring(color)) - end - for k, v in pairs(tf_items.ReturnItems()) do - if v and istable(v) and v["name"] and v["item_name"] and v["item_class"] and v["attributes"] and v["attributes"]["set item tint rgb"] and v["attributes"]["set item tint rgb"]["value"] and not blacklist[tf_lang.GetRaw(v["item_name"])] then - if (v["item_class"] == "tool" and string.sub(v["name"], 1, 5) == "Paint") then - local paintlistn = paintlist:AddNode(tf_lang.GetRaw(v["item_name"])) --.." ("..v["attributes"]["set item tint rgb"]["value"]..")") - paintlistn:SetIcon("backpack/player/items/crafting/paintcan") - paintlistn:SetTooltip(tf_lang.GetRaw(v["item_name"]).." ("..tostring(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"])))..")") - if ply:GetInfo(convar) == tostring(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"]))) then - paintlist:SetSelectedItem(paintlistn) - end - paintlistn.DoClick = function() - local color = tostring(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"]))) - colorpicker:SetColor(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"]))) -- hack!! - ply:ConCommand(convar.." "..color) - end - end - end - end - if not paintlist:GetSelectedItem() then - paintlist:SetSelectedItem(paintlistc) - end -end - -local ColorPicker = vgui.Create( "DColorMixer", Frame ) -ColorPicker:SetSize( 150, 150 ) -ColorPicker:SetPos( 5, 30 ) -ColorPicker:SetPalette( false ) -ColorPicker:SetAlphaBar( false ) -ColorPicker:SetWangs( true ) -ColorPicker:SetColor(string.ToColor(ply:GetInfo("tf_hatcolor"))) -ColorPicker.ValueChanged = function() - local ChosenColor = ColorPicker:GetColor() - local color = Color(ChosenColor.r, ChosenColor.g, ChosenColor.b, ChosenColor.a) - ply:ConCommand("tf_hatcolor "..tostring(color)) -end - -local ColorPicker2 = vgui.Create( "DColorMixer", Frame ) -ColorPicker2:SetSize( 150, 150 ) -ColorPicker2:SetPos( 5, 230 ) -ColorPicker2:SetPalette( false ) -ColorPicker2:SetAlphaBar( false ) -ColorPicker2:SetWangs( true ) -ColorPicker2:SetColor(string.ToColor(ply:GetInfo("tf_misccolor"))) -ColorPicker2.ValueChanged = function() - local ChosenColor = ColorPicker2:GetColor() - local color = Color(ChosenColor.r, ChosenColor.g, ChosenColor.b, ChosenColor.a) - ply:ConCommand("tf_misccolor "..tostring(color)) -end - -local paintlist = vgui.Create( "DTree", Frame ) -paintlist:SetPos( 170, 30 ) -paintlist:SetSize( 125, 150 ) - -local paintlist2 = vgui.Create( "DTree", Frame ) -paintlist2:SetPos( 170, 230 ) -paintlist2:SetSize( 125, 150 ) - -add_hats(paintlist, "tf_hatcolor", ColorPicker) -add_hats(paintlist2, "tf_misccolor", ColorPicker2) -end - -local function itemselector(type) -local Scale = ScrH()/480 - -local loadout_rect = surface.GetTextureID("vgui/loadout_rect") -local loadout_rect_mouseover = surface.GetTextureID("vgui/loadout_rect_mouseover") -local color_panel = surface.GetTextureID("hud/color_panel_browner") -local c_boxing_gloves = surface.GetTextureID("backpack/weapons/c_models/c_boxing_gloves/c_boxing_gloves") -local Frame = vgui.Create("DFrame") -Frame:SetTitle("Item Picker") -Frame:SetSize(1300, 650) -Frame:Center() -Frame:SetDraggable(true) -Frame:SetMouseInputEnabled(true) -Frame:MakePopup() ---gui.EnableScreenClicker(true) - -local scroll = vgui.Create("DScrollPanel", Frame) -scroll:Dock(FILL) - -local itemicons = vgui.Create("DIconLayout", scroll) -itemicons:Dock(FILL) - -local att = vgui.Create("ItemAttributePanel") -att:SetSize(168*Scale,300*Scale) -att:SetPos(0, 0) -att.text_ypos = 20 -att:SetMouseInputEnabled(false) - -local attributes_xoffset1 = 30 -local attributes_xoffset2 = -168 -local attributes_yoffset = 120 -local xoffset, yoffset = attributes_xoffset1 * Scale, attributes_yoffset * Scale - ---Frame.OnClose = function() gui.EnableScreenClicker(false) att:Remove() end - --- ugly code ahead -for k, v in pairs(tf_items.ReturnItems()) do - if v and istable(v) and v["name"] and GetImprovedItemName(v["name"]) and string.sub(GetImprovedItemName(v["name"]), 1, 3) == type then - local t = vgui.Create("ItemModelPanel", Frame) - t:SetSize(140 * Scale, 75 * Scale) - itemicons:Add(t) - t.activeImage = loadout_rect_mouseover - t.inactiveImage = loadout_rect - - t.RealName = v["name"] - t.centerytext = true - print(v["id"], string.sub(GetImprovedItemName(v["name"]), 4)) - t.disabled = false - print(v["image_inventory"]) - if !isstring(v["image_inventory"]) or Material(v["image_inventory"]):IsError() then - t.FallbackModel = v["model_player"] - t.itemImage = surface.GetTextureID("backpack/weapons/c_models/c_bat") - elseif isstring(v["image_inventory"]) then - -- t.FallbackModel = v["model_player"] - t.itemImage = surface.GetTextureID(v["image_inventory"]) - end - - --[[if v["item_class"] ~= "tf_wearable_item" and tonumber(v["id"]) > 6000 then - t.FallbackModel = v["model_player"] - end]] - - if v["attributes"] and v["attributes"]["material override"] and v["attributes"]["material override"]["value"] then - t.overridematerial = v["attributes"]["material override"]["value"] - end - - t.itemImage_low = nil - - t.text = string.sub(GetImprovedItemName(v["name"]), 4) - --t.text = tf_lang.GetRaw(v["item_name"]) or v["name"] - local quality = 0 - if v["item_quality"] then - quality = string.upper(string.sub(v["item_quality"], 1, 1)) .. string.sub(v["item_quality"], 2) - end - t:SetQuality(quality) - - t.model_xpos = 0 - t.model_ypos = 5 - t.model_tall = 55 - t.text_xpos = -5 - t.text_wide = 150 - t.text_ypos = 60 - t.DoClick = function() LocalPlayer():ConCommand("giveitem " .. t.RealName) surface.PlaySound(v["mouse_pressed_sound"] or "ui/item_hat_pickup.wav") Frame:Close() end - t:SetCursor("hand") - - if istable(v["attributes"]) then - t.attributes = v["attributes"] - end - - if v["item_slot"] == "primary" then - t.number = 1 - elseif v["item_slot"] == "secondary" then - t.number = 2 - elseif v["item_slot"] == "melee" then - t.number = 3 - end - end -end - -att:MoveToFront() -end - -concommand.Add("tf_changeclass", ClassSelection) -concommand.Add("tf_hatpainter", HatPicker) -concommand.Add("tf_menu", ClassSelection) -concommand.Add("tf_itempicker", function(_, _, args) local type = args[1] if args[1] == "weapons" then type = "wep" elseif args[1] == "hats" then type = "hat" end itemselector(type) end) ---spawnmenu.AddCreationTab( "Team Fortress 2", function() - - --local ctrl = vgui.Create( "SpawnmenuContentPanel" ) - --return ctrl - ---end, "icon16/control_repeat_blue.png", 200 ) - ---[[function GM:OnSpawnMenuOpen() - return --ply:IsAdmin() -end]] - -hook.Add( "PlayerSay", "Change class", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass" ) then - RunConsoleCommand("tf_changeclass") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Scout", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass scout" ) then - RunConsoleCommand("changeclass", "scout") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Soldier", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass soldier" ) then - RunConsoleCommand("changeclass", "soldier") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Pyro", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass pyro" ) then - RunConsoleCommand("changeclass", "pyro") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Demoman", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass demoman" ) then - RunConsoleCommand("changeclass", "demoman") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Heavy", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass heavy" ) then - RunConsoleCommand("changeclass", "heavy") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Engineer", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass engineer" ) then - RunConsoleCommand("changeclass", "engineer") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Medic", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass medic" ) then - RunConsoleCommand("changeclass", "medic") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Sniper", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass sniper" ) then - RunConsoleCommand("changeclass", "sniper") - return false - end -end ) - -hook.Add( "PlayerSay", "Class Spy", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeclass spy" ) then - RunConsoleCommand("changeclass", "spy") - return false - end -end ) - -hook.Add( "PlayerSay", "Change Team Red", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeteam red" ) then - RunConsoleCommand("changeteam", "1") - return false - end -end ) - -hook.Add( "PlayerSay", "Change Team Blu", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeteam blu" ) then - RunConsoleCommand("changeteam", "2") - return false - end -end ) - -hook.Add( "PlayerSay", "Change Team Blu", function( ply, text, public ) - text = string.lower( text ) -- Make the chat message entirely lowercase - if ( string.sub( text, 1 ) == "!changeteam blu" ) then - RunConsoleCommand("changeteam", "2") - return false - end -end ) diff --git a/addon/gamemodes/teamfortress/gamemode/cl_killicons.lua b/addon/gamemodes/teamfortress/gamemode/cl_killicons.lua deleted file mode 100644 index b109c49dc..000000000 --- a/addon/gamemodes/teamfortress/gamemode/cl_killicons.lua +++ /dev/null @@ -1,1165 +0,0 @@ -function GetKilliconData(name, highlight) - local icon = Killicons["_images"]["d_skull"] - local group = "_images" - - for k,v in pairs(Killicons) do - if v[name] then - icon = v[name] - group = k - break - end - end - - local path - - if string.sub(group, 1, 1)=="!" then - path = "HUD/"..string.sub(group, 2) - else - path = (highlight and ("HUD/dneg"..group)) or ("HUD/d"..group) - end - - if highlight then - return icon, Color(245, 229, 196, 200), path - else - return icon, Color(46, 43, 42, 220), path - end -end - -KilliconTranslate = { --- HL2 -weapon_pistol = "d_hl_pistol", -weapon_357 = "d_hl_357", -weapon_crossbow = "d_hl_crossbow", -crossbow_bolt = "d_hl_crossbow", -crossbow_bolt_deflect = "d_deflect_crossbowbolt", -weapon_smg1 = "d_hl_smg", -weapon_shotgun = "d_hl_shotgun", -weapon_ar2 = "d_hl_ar2", -weapon_crowbar = "d_hl_crowbar", -weapon_stunstick = "d_hl_stunstick", -weapon_rpg = "d_hl_rpg", -weapon_annabelle = "d_sniperrifle", -rpg_missile = "d_hl_rpg", -rpg_missile_deflect = "d_deflect_rpg", -weapon_frag = "d_hl_frag", -npc_grenade_frag = "d_hl_frag", -npc_grenade_frag_deflect = "d_deflect_frag", -prop_combine_ball = "d_hl_combine_ball", -prop_combine_ball_deflect = "d_deflect_combineball", -grenade_ar2 = "d_hl_ar2_grenade", -grenade_ar2_deflect = "d_deflect_ar2grenade", -grenade_spit = "d_hl_acidball", -grenade_spit_deflect = "d_deflect_acidball", -hunter_flechette = "d_hl_flechette", - -npc_zombie = "d_hl_zombie", -npc_zombie_torso = "d_hl_zombie", -npc_fastzombie = "d_hl_zombie", -npc_fastzombie_torso = "d_hl_zombie", -npc_poisonzombie = "d_hl_zombie", -npc_zombine = "d_hl_zombie", - -npc_headcrab = "d_hl_headcrab", -npc_headcrab_fast = "d_hl_headcrab", - -npc_antlion = "d_hl_antlion", -npc_antlion_worker = "d_hl_antlion", -npc_antlion_worker_explosion = "d_hl_antworker_explosion", -npc_antlionguard = "d_hl_antlionguard", - -npc_hunter = "d_hl_hunter_charge", -npc_hunter_pound = "d_hl_hunter_pound", -npc_hunter_skewer = "d_hl_hunter_skewer", - -npc_vortigaunt_beam = "d_hl_vortigaunt_beam", -npc_vortigaunt = "d_hl_vortigaunt", - -npc_helicopter = "d_hl_airboat_gun", -npc_combinegunship = "d_hl_airboat_gun", -npc_combinedropship = "d_hl_airboat_gun", -npc_strider_minigun = "d_hl_strider_minigun", -concussiveblast = "d_hl_strider_beam", -npc_strider = "d_hl_strider_skewer", - -npc_rollermine = "d_hl_rollermine", -npc_manhack = "d_hl_manhack", -npc_turret_floor = "d_hl_floorturret", - -have_an_error = "d_have_an_error", - --- Scout -tf_weapon_scattergun = "d_scattergun", -tf_weapon_pistol_scout = "d_pistol_scout", -tf_weapon_bat = "d_bat", - --- Heavy -tf_weapon_minigun = "d_minigun", -tf_weapon_shotgun_hwg = "d_shotgun_hwg", -tf_weapon_fists = "d_fists", - --- Demoman -tf_projectile_pipe = "d_tf_projectile_pipe", -tf_projectile_pipe_remote = "d_tf_projectile_pipe_remote", -tf_projectile_pipe_defender = "d_sticky_resistance", -tf_projectile_pipe_round = "d_tf_projectile_pipe_remote", -tf_weapon_bottle = "d_bottle", -tf_weapon_sword = "d_sword", -tf_wearable_item_demoshield = "d_demoshield", - --- Soldier -tf_projectile_rocket = "d_tf_projectile_rocket", -tf_projectile_rocket_direct = "d_rocketlauncher_directhit", -tf_weapon_shotgun_soldier = "d_shotgun_soldier", -tf_weapon_shovel = "d_shovel", - --- Engineer -tf_weapon_shotgun_primary = "d_shotgun_primary", -tf_weapon_pistol = "d_pistol", -tf_weapon_wrench = "d_wrench", -obj_sentrygun = "d_obj_sentrygun", -obj_sentrygun2 = "d_obj_sentrygun2", -obj_sentrygun3 = "d_obj_sentrygun3", -tf_projectile_sentryrocket = "d_obj_sentrygun3", - --- Pyro -tf_flame = "d_flamethrower", -tf_weapon_shotgun_pyro = "d_shotgun_pyro", -tf_weapon_fireaxe = "d_fireaxe", -tf_projectile_flare = "d_flaregun", - --- Medic -tf_projectile_syringe = "d_syringegun_medic", -tf_projectile_blutsauger = "d_blutsauger", -tf_weapon_bonesaw = "d_bonesaw", - --- Sniper -tf_weapon_sniperrifle = "d_sniperrifle", -tf_weapon_sniperrifle_headshot = "d_headshot", -tf_weapon_smg = "d_smg", -tf_weapon_club = "d_club", -tf_projectile_arrow = "d_huntsman", -tf_projectile_arrow_headshot = "d_huntsman_headshot", -tf_projectile_arrow_burning = "d_huntsman_burning", -tf_projectile_arrow_flyingburn = "d_huntsman_flyingburn", - --- Spy -tf_weapon_revolver = "d_revolver", -tf_weapon_knife = "d_knife", -tf_weapon_knife_backstab = "d_backstab", -tf_weapon_ambassador_headshot = "d_ambassador_headshot", - --- Vehicles -prop_vehicle_jeep_old = "d_vehicle", -prop_vehicle_jeep = "d_vehicle", -prop_vehicle_airboat = "d_vehicle", - --- Other -entityflame = "d_firedeath", -tf_entityflame = "d_firedeath", -tf_entitybleed = "d_bleed_kill", -env_explosion = "d_explosion", -env_physexplosion = "d_explosion", -combine_mine = "d_hl_combine_mine", -prop_physics = "d_hl_physics", -} - -function TranslateKilliconName(name) - return KilliconTranslate[name] or "d_"..name -end - -function RegisterKillicon(name, texture, data) - if not Killicons[texture] then Killicons[texture] = {} end - Killicons[texture][name] = data -end - -Killicons = { - -["!leaderboard_dominated"] = { -d_domination={ - x=0, - y=0, - w=64, - h=64, -}, -}, - -["_images"]={ -d_obj_sentrygun={ - x=96, - y=160, - w=64, - h=32, -}, -d_obj_sentrygun2={ - x=256, - y=0, - w=96, - h=32, -}, -d_obj_sentrygun3={ - x=256, - y=32, - w=96, - h=32, -}, -d_bat={ - x=0, - y=0, - w=96, - h=32, -}, -d_pistol={ - x=0, - y=32, - w=96, - h=32, -}, -d_pistol_scout={ - x=0, - y=32, - w=96, - h=32, -}, -d_nailgun={ - x=0, - y=64, - w=64, - h=32, -}, -d_sniperrifle={ - x=16, - y=96, - w=32, - h=32, -}, -d_smg={ - x=0, - y=128, - w=96, - h=32, -}, -d_club={ - x=0, - y=160, - w=96, - h=32, -}, -d_shovel={ - x=0, - y=192, - w=96, - h=32, -}, -d_tf_projectile_rocket={ - x=0, - y=224, - w=96, - h=32, -}, -d_tf_projectile_rocket_deflect={ - x=176, - y=128, - w=88, - h=32, -}, -d_shotgun_primary={ - x=0, - y=256, - w=96, - h=32, -}, -d_shotgun_soldier={ - x=0, - y=256, - w=96, - h=32, -}, -d_shotgun_hwg={ - x=0, - y=256, - w=96, - h=32, -}, -d_shotgun_pyro={ - x=0, - y=256, - w=96, - h=32, -}, -d_tf_projectile_pipe={ - x=0, - y=288, - w=96, - h=32, -}, -d_bottle={ - x=0, - y=320, - w=96, - h=32, -}, -d_syringegun_medic={ - x=0, - y=352, - w=96, - h=32, -}, -d_minigun={ - x=0, - y=384, - w=96, - h=32, -}, -d_pipe={ - x=0, - y=448, - w=96, - h=32, -}, -d_flamethrower={ - x=0, - y=416, - w=96, - h=32, -}, -d_fists={ - x=191, - y=446, - w=64, - h=32, -}, -d_fireaxe={ - x=0, - y=480, - w=96, - h=32, -}, -d_bonesaw={ - x=96, - y=128, - w=96, - h=32, -}, -d_knife={ - x=96, - y=0, - w=96, - h=32, -}, -d_revolver={ - x=96, - y=32, - w=96, - h=32, -}, -d_flaregun={ - x=96, - y=64, - w=96, - h=32, -}, -d_wrench={ - x=96, - y=96, - w=96, - h=32, -}, -d_scattergun={ - x=96, - y=192, - w=96, - h=32, -}, -d_tf_projectile_pipe_remote={ - x=96, - y=224, - w=96, - h=32, -}, -d_vehicle={ - x=96, - y=256, - w=96, - h=32, -}, -d_skull={ - x=116, - y=288, - w=52, - h=32, -}, -d_explosion={ - x=116, - y=320, - w=52, - h=32, -}, -d_headshot={ - x=120, - y=352, - w=42, - h=32, -}, -d_backstab={ - x=116, - y=384, - w=48, - h=32, -}, -d_ubersaw={ - x=96, - y=416, - w=96, - h=32, -}, -d_axtinguisher={ - x=96, - y=448, - w=96, - h=32, -}, -d_taunt_pyro={ - x=96, - y=480, - w=96, - h=32, -}, -d_bluedefend={ - x=194, - y=0, - w=32, - h=32, -}, -d_bluecapture={ - x=194, - y=32, - w=32, - h=32, -}, -d_reddefend={ - x=226, - y=0, - w=32, - h=32, -}, -d_redcapture={ - x=226, - y=32, - w=32, - h=32, -}, -d_obj_attachment_sapper={ - x=0, - y=64, - w=96, - h=32, -}, -d_deflect_promode={ - x=194, - y=64, - w=64, - h=32, -}, -d_deflect_sticky={ - x=194, - y=96, - w=64, - h=32, -}, -d_deflect_rocket={ - x=194, - y=128, - w=64, - h=32, -}, -d_deflect_flare={ - x=194, - y=160, - w=64, - h=32, -}, -d_bat_wood={ - x=0, - y=0, - w=96, - h=32, -}, -d_ball={ - x=192, - y=192, - w=64, - h=32, -}, -d_taunt_heavy={ - x=191, - y=479, - w=64, - h=32, -}, -d_taunt_scout={ - x=192, - y=224, - w=64, - h=64, -}, -d_gloves={ - x=0, - y=448, - w=96, - h=32, -}, -d_crit={ - x=192, - y=409, - w=64, - h=34, -}, -d_ambassador={ - x=263, - y=67, - w=92, - h=32, -}, -d_huntsman={ - x=263, - y=98, - w=96, - h=32, -}, -d_huntsman_burning={ - x=263, - y=190, - w=68, - h=33, -}, -d_huntsman_flyingburn={ - x=263, - y=223, - w=103, - h=32, -}, -d_taunt_spy={ - x=263, - y=129, - w=92, - h=32, -}, -d_huntsman_headshot={ - x=192, - y=289, - w=64, - h=32, -}, -d_ambassador_headshot={ - x=192, - y=322, - w=64, - h=32, -}, -d_taunt_sniper={ - x=263, - y=161, - w=94, - h=27, -}, -d_saw_kill={ - x=192, - y=359, - w=64, - h=32, -}, -d_deflect_arrow={ - x=360, - y=0, - w=64, - h=30, -}, -d_firedeath={ - x=263, - y=256, - w=64, - h=32, -}, -d_pumpkindeath={ - x=263, - y=358, - w=96, - h=32, -}, -d_taunt_soldier={ - x=323, - y=446, - w=64, - h=32, -}, -d_taunt_demoman={ - x=323, - y=479, - w=64, - h=32, -}, -d_sword={ - x=258, - y=464, - w=64, - h=32, -}, -d_demoshield={ - x=258, - y=398, - w=64, - h=32, -}, -d_pickaxe={ - x=258, - y=431, - w=64, - h=32, -}, -d_rocketlauncher_directhit={ - x=368, - y=263, - w=92, - h=32, -}, -d_sticky_resistance={ - x=323, - y=413, - w=64, - h=32, -}, -d_player_sentry={ - x=388, - y=446, - w=64, - h=32, -}, -d_battleaxe={ - x=368, - y=164, - w=64, - h=32, -}, -d_tribalkukri={ - x=368, - y=65, - w=92, - h=32, -}, -d_sledgehammer={ - x=368, - y=98, - w=64, - h=32, -}, -d_paintrain={ - x=368, - y=131, - w=64, - h=32, -}, -d_samrevolver={ - x=368, - y=230, - w=98, - h=32, -}, -d_natascha={ - x=368, - y=297, - w=98, - h=32, -}, -d_maxgun={ - x=368, - y=330, - w=98, - h=32, -}, -d_force_a_nature={ - x=368, - y=363, - w=128, - h=32, -}, - -}, -- ["_images"] - -["_images_v2"]={ - -d_wrench_golden={ - x=0, - y=736, - w=96, - h=32, -}, - -d_building_carried_destroyed={ - x=0, - y=768, - w=96, - h=32, -}, -d_taunt_guitar_kill={ - x=0, - y=704, - w=96, - h=32, -}, -d_frontier_kill={ - x=256, - y=96, - w=128, - h=32, -}, -d_wrench_golden={ - x=0, - y=736, - w=96, - h=32, -}, -d_southern_comfort_kill={ - x=256, - y=992, - w=64, - h=32, -}, -d_bleed_kill={ - x=256, - y=928, - w=32, - h=32, -}, -d_wrangler_kill={ - x=256, - y=960, - w=32, - h=32, -}, -d_robot_arm_kill={ - x=0, - y=800, - w=96, - h=32, -}, -d_robot_arm_combo_kill={ - x=0, - y=832, - w=96, - h=32, -}, -d_robot_arm_blender_kill={ - x=0, - y=864, - w=96, - h=32, -}, -d_degreaser={ - x=0, - y=896, - w=96, - h=32, -}, -d_powerjack={ - x=0, - y=928, - w=96, - h=32, -}, -d_eternal_reward={ - x=0, - y=960, - w=96, - h=32, -}, -d_letranger={ - x=0, - y=992, - w=96, - h=32, -}, -d_short_stop={ - x=256, - y=896, - w=64, - h=32, -}, -d_holy_mackerel={ - x=96, - y=992, - w=96, - h=32, -}, -d_headtaker={ - x=256, - y=128, - w=128, - h=32, -}, - -}, -- ["_images_v2"] - -["_images_custom"]={ -d_blutsauger={ - x=0, - y=0, - w=96, - h=32, -}, -d_crotchshot={ - x=24, - y=96, - w=42, - h=32, -}, - --- CUSTOM WEAPONS -d_firecannone={ - x=0, - y=128, - w=96, - h=32, -}, -d_leviathan={ - x=0, - y=160, - w=96, - h=32, -}, -d_bofors={ - x=0, - y=192, - w=96, - h=32, -}, --- /CUSTOM WEAPONS - -d_amputator={ - x=96, - y=0, - w=96, - h=32, -}, -d_back_scratcher={ - x=96, - y=32, - w=96, - h=32, -}, -d_boston_basher={ - x=96, - y=64, - w=96, - h=32, -}, -d_ullapool_caber_explosion={ - x=96, - y=96, - w=96, - h=32, -}, -d_ullapool_caber={ - x=96, - y=128, - w=96, - h=32, -}, -d_claidheamohmor={ - x=96, - y=160, - w=96, - h=32, -}, -d_lochnload={ - x=96, - y=192, - w=96, - h=32, -}, -d_steel_fists={ - x=96, - y=224, - w=78, - h=32, -}, -d_bear_claws={ - x=96, - y=256, - w=78, - h=32, -}, -d_candy_cane={ - x=96, - y=288, - w=96, - h=32, -}, -d_gatling={ - x=96, - y=320, - w=96, - h=32, -}, -d_wrench_jag={ - x=96, - y=352, - w=96, - h=32, -}, -d_crusaders_crossbow={ - x=96, - y=384, - w=96, - h=32, -}, -d_fryingpan={ - x=96, - y=416, - w=96, - h=32, -}, -}, -- ["_images_custom"] - -["_images_hl2"]={ -d_hl_crossbow={ - x=0, - y=0, - w=96, - h=32, -}, -d_hl_shotgun={ - x=0, - y=32, - w=96, - h=32, -}, -d_hl_ar2={ - x=0, - y=64, - w=96, - h=32, -}, -d_hl_frag={ - x=0, - y=96, - w=96, - h=32, -}, -d_hl_crowbar={ - x=0, - y=128, - w=96, - h=32, -}, -d_hl_pistol={ - x=0, - y=160, - w=96, - h=32, -}, -d_hl_357={ - x=0, - y=192, - w=96, - h=32, -}, -d_hl_smg={ - x=0, - y=224, - w=96, - h=32, -}, -d_hl_stunstick={ - x=0, - y=256, - w=96, - h=32, -}, -d_hl_physics={ - x=0, - y=288, - w=96, - h=32, -}, -d_hl_combine_ball={ - x=0, - y=320, - w=96, - h=32, -}, -d_hl_rpg={ - x=0, - y=352, - w=96, - h=32, -}, -d_hl_ar2_grenade={ - x=0, - y=384, - w=96, - h=32, -}, -d_deflect_frag={ - x=0, - y=416, - w=64, - h=32, -}, -d_deflect_ar2grenade={ - x=0, - y=448, - w=64, - h=32, -}, -d_deflect_rpg={ - x=0, - y=480, - w=64, - h=32, -}, -d_hl_zombie={ - x=96, - y=0, - w=96, - h=32, -}, -d_hl_antlion={ - x=96, - y=32, - w=96, - h=32, -}, -d_hl_headcrab={ - x=96, - y=64, - w=96, - h=32, -}, -d_hl_hunter_pound={ - x=96, - y=96, - w=96, - h=32, -}, -d_hl_hunter_skewer={ - x=96, - y=128, - w=96, - h=32, -}, -d_hl_antlionguard={ - x=96, - y=160, - w=96, - h=32, -}, -d_hl_hunter_charge={ - x=96, - y=192, - w=96, - h=32, -}, -d_hl_acidball={ - x=96, - y=224, - w=96, - h=32, -}, -d_hl_flechette={ - x=96, - y=256, - w=96, - h=32, -}, -d_hl_antworker_explosion={ - x=96, - y=288, - w=96, - h=32, -}, -d_hl_vortigaunt_beam={ - x=96, - y=320, - w=96, - h=32, -}, -d_hl_vortigaunt={ - x=96, - y=352, - w=96, - h=32, -}, -d_deflect_crossbowbolt={ - x=96, - y=416, - w=64, - h=32, -}, -d_deflect_combineball={ - x=96, - y=448, - w=64, - h=32, -}, -d_deflect_acidball={ - x=96, - y=480, - w=64, - h=32, -}, -d_hl_rollermine={ - x=192, - y=0, - w=96, - h=32, -}, -d_hl_manhack={ - x=192, - y=32, - w=96, - h=32, -}, -d_hl_floorturret={ - x=192, - y=64, - w=96, - h=32, -}, -d_hl_combine_mine={ - x=192, - y=96, - w=96, - h=32, -}, -d_hl_airboat_gun={ - x=192, - y=128, - w=96, - h=32, -}, -d_hl_strider_minigun={ - x=192, - y=160, - w=96, - h=32, -}, -d_hl_strider_beam={ - x=192, - y=192, - w=96, - h=32, -}, -d_hl_strider_skewer={ - x=192, - y=224, - w=96, - h=32, -}, -d_have_an_error={ - x=192, - y=480, - w=96, - h=32, -}, -} -- ["_images_hl2"] -} -- Killicons diff --git a/addon/gamemodes/teamfortress/gamemode/cl_pickteam.lua b/addon/gamemodes/teamfortress/gamemode/cl_pickteam.lua deleted file mode 100644 index cf6cb314f..000000000 --- a/addon/gamemodes/teamfortress/gamemode/cl_pickteam.lua +++ /dev/null @@ -1 +0,0 @@ --- Useless! \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_player_other.lua b/addon/gamemodes/teamfortress/gamemode/cl_player_other.lua deleted file mode 100644 index 6ac33cdeb..000000000 --- a/addon/gamemodes/teamfortress/gamemode/cl_player_other.lua +++ /dev/null @@ -1,44 +0,0 @@ -local neutralinstalled = false -for k, v in pairs(engine.GetAddons()) do - if v.wsid == "432633045" and v.mounted == true then - neutralinstalled = true - end -end - -if not neutralinstalled then return end -CreateClientConVar("tf_neutralmodel", 1, true, true) -CreateClientConVar("tf_neutralmodel_skin", 1, true, true, "The skin for the model, 0 for red 1 for blu") -CreateClientConVar("tf_neutralmodels_all", 1) - -hook.Add("PostPlayerDraw", "NeutralModels", function(ply) -- Experimental and WIP, Sorry for the strange and messy code! - if ply:Team() == 4 and not ply:IsHL2() and ply:Alive() and ply:GetInfoNum("tf_robot", 0) == 0 and neutralinstalled and ply:GetInfoNum("tf_neutralmodel", 1) == 1 and LocalPlayer():GetInfoNum("tf_neutralmodels_all", 1) == 1 then - local model = "models/player/x"..(string.sub(string.gsub(ply:GetPlayerClass(), "man", ""), 2) or "cout")..".mdl" - - if ply:GetPlayerClass() == "civilian" then - model = "models/player/xcout.mdl" - end - - if not IsValid(ply.NeutralModel) then - ply.NeutralModel = ClientsideModel(model) - end - - ply.NeutralModel:SetModel(model) - ply.NeutralModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) - ply.NeutralModel:SetParent(ply) - ply.NeutralModel:SetSkin(ply:GetInfoNum("tf_neutralmodel_skin", 1)) - ply:SetMaterial("color") - - for k, v in pairs(ply.NeutralModel:GetBodyGroups()) do - ply.NeutralModel:SetBodygroup(k, ply:GetBodygroup(k)) - end - - local playercolor = ply:GetPlayerColor():ToColor() - ply.NeutralModel:SetColor(playercolor) - else - ply:SetMaterial("") - - if IsValid(ply.NeutralModel) then - ply.NeutralModel:Remove() - end - end -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/init.lua b/addon/gamemodes/teamfortress/gamemode/init.lua deleted file mode 100644 index 87f594335..000000000 --- a/addon/gamemodes/teamfortress/gamemode/init.lua +++ /dev/null @@ -1,596 +0,0 @@ -include("sv_clientfiles.lua") -include("sv_resource.lua") -include("sv_response_rules.lua") - -include("shared.lua") -include("sv_hl2replace.lua") -include("sv_gamelogic.lua") -include("sv_damage.lua") -include("sv_death.lua") -include("sv_ctf_bots.lua") -include("sv_chat.lua") -include("shd_taunts.lua") - -local LOGFILE = "teamfortress/log_server.txt" -file.Delete(LOGFILE) -file.Append(LOGFILE, "Loading serverside script\n") -local load_time = SysTime() - -include("sv_npc_relationship.lua") -include("sv_ent_substitute.lua") - -response_rules.Load("talker/tf_response_rules.txt") -response_rules.Load("talker/demoman_custom.txt") -response_rules.Load("talker/heavy_custom.txt") - -CreateConVar( "tf_use_hl_hull_size", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players use the HL2 hull size found on coop." ) -CreateConVar( "tf_kill_on_change_class", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players will die if they change class." ) -CreateConVar( "tf_flashlight", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players will have a flashlight as a TF2 Class" ) - --- Quickfix for Valve's typo in tf_reponse_rules.txt -response_rules.AddCriterion([[criterion "WeaponIsScattergunDouble" "item_name" "The Force-a-Nature" "required" weight 10]]) - ---concommand.Add("lua_pick", function(pl, cmd, args) --- getfenv()[args[1]] = pl:GetEyeTrace().Entity ---end) - -concommand.Add("taunt", function(pl) - GAMEMODE:PlayerStartTaunt(pl, ACT_DIESIMPLE, 1 ) -end) - -concommand.Add("select_slot", function(pl, cmd, args) - local n = tonumber(args[1] or "") - local w = pl:GetActiveWeapon() - if n and w and w:IsValid() and w.OnSlotSelected then - w:OnSlotSelected(n) - end -end) - -concommand.Add("decapme", function(pl, cmd, args) --- pl:SetNWBool("ShouldDropDecapitatedRagdoll", true) - pl:AddDeathFlag(DF_DECAP) - pl:Kill() -end) - -concommand.Add("tf_stripme", function(pl, cmd, args) - pl:StripWeapons() -end) - -concommand.Add("changeclass", function(pl, cmd, args) - if pl:Team()==TEAM_SPECTATOR then return end - if pl:GetObserverMode() ~= OBS_MODE_NONE then pl:Spectate(OBS_MODE_NONE) end - if pl:Alive() and GetConVar("tf_kill_on_change_class"):GetInt() ~= 0 then pl:Kill() end - --if GetConVar("tf_kill_on_change_class"):GetInt() ~= 0 then pl:SetPlayerClass("gmodplayer") end - pl:SetPlayerClass(args[1]) -end, function() return GAMEMODE.PlayerClassesAutoComplete end) - -concommand.Add( "changeteam", function( pl, cmd, args ) - --if ( tonumber( args[ 1 ] ) >= 5 and args[ 1 ] ~= 1002 ) then return end - if ( tonumber( args[ 1 ] ) == 0 or tonumber( args[ 1 ] ) == 3 ) then pl:ChatPrint("Invalid Team!") return end - if ( pl:Team() == tonumber( args[ 1 ] ) ) then return false end - if ( GetConVar("tf_competitive"):GetBool() and tonumber( args[ 1 ] ) == 4 ) then pl:ChatPrint("Competitive mode is on!") return end - if pl:Team() == TEAM_SPECTATOR then - pl:KillSilent() - end - pl:SetTeam( tonumber( args[ 1 ] ) ) - timer.Simple(0.3, function() if !IsValid(pl) then return end pl:SendLua("chat.AddText( Color( 235, 226, 202 ), 'Player ', LocalPlayer():Nick(), ' joined team ', team.GetName(LocalPlayer():Team()) )") end) - if pl:Alive() then pl:Kill() end -end ) - - -local SpawnableItems = { - "item_ammopack_small", - "item_ammopack_medium", - "item_ammopack_full", - "item_healthkit_small", - "item_healthkit_medium", - "item_healthkit_full", - "item_duck", -} - -hook.Add("InitPostEntity", "TF_InitSpawnables", function() - local base = scripted_ents.GetStored("item_base") - if not base or not base.t or not base.t.SpawnFunction then return end - - for _,v in ipairs(SpawnableItems) do - local ent = scripted_ents.GetStored(v) - if ent and ent.t then - ent.t.SpawnFunction = base.t.SpawnFunction - end - end -end) - -function GM:PlayerInitialSpawn(ply) - ply:SetTeam(TEAM_RED) - ply:KillSilent() - -- Wait until InitPostEntity has been called - if not self.PostEntityDone then - timer.Simple(0.05, function() self:PlayerInitialSpawn(ply) end) - return - end - - Msg("PlayerInitialSpawn : "..ply:GetName().." "..tostring(self.Landmark).."\n") - if self.Landmark then--and self.Landmark:IsValidMap() then - self.Landmark:LoadPlayerData(ply) - end -end - -function GM:OnPlayerChangedTeam(ply, oldteam, newteam) - if newteam == TEAM_SPECTATOR then - ply:SetTeam(TEAM_RED) - local Pos = ply:EyePos() - ply:Spawn() - ply:SetPos( Pos ) - elseif oldteam == TEAM_SPECTATOR then - ply:Spawn() - end - - PrintMessage(HUD_PRINTTALK, Format("%s joined '%s'", ply:Nick(), team.GetName(newteam))) - - self:ClearDominations(ply) - self:UpdateEntityRelationship(ply) -end - -local function CanSpawn(ply) if ply:Team() == TEAM_SPECTATOR or GetConVar("tf_competitive"):GetBool() then return false end return true end - -function GM:CanPlayerSuicide(ply) - if ply:Team() == TEAM_SPECTATOR then return false end - return true -end - -function GM:PlayerSpawnSWEP(ply) - return CanSpawn(ply) -end - -function GM:PlayerSpawnVehicle(ply) - return CanSpawn(ply) -end - -function GM:PlayerSpawnNPC(ply) - return CanSpawn(ply) -end - -function GM:PlayerSpawnSENT(ply) - return CanSpawn(ply) -end - -function GM:PlayerSpawnObject(ply) - return CanSpawn(ply) -end - -function RandomWeapon(ply, wepslot) - local weps = tf_items.ReturnItems() - local validweapons = {} - for k, v in pairs(weps) do - if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and !string.StartWith(v["name"], "Australium") and v["craft_class"] == "weapon" then - PrintTable(v) - table.insert(validweapons, v["name"]) - end - end - - local wep = table.Random(validweapons) - - ply:PrintMessage(HUD_PRINTTALK, "You were given " .. wep .. "!") - ply:EquipInLoadout(wep) -end - -function RandomWeapon2(ply, wepslot) - local weps = tf_items.ReturnItems() - local class = ply:GetPlayerClass() - local validweapons = {} - for k, v in pairs(weps) do - if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and v["used_by_classes"] and v["used_by_classes"][class] and !string.StartWith(v["name"], "Australium") and v["craft_class"] == "weapon" then - table.insert(validweapons, v["name"]) - end - end - - local wep = table.Random(validweapons) - ply:EquipInLoadout(wep) -end - -function RandomWeapon(ply, wepslot) - local weps = tf_items.ReturnItems() - local validweapons = {} - for k, v in pairs(weps) do - if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and !string.StartWith(v["name"], "Australium") and v["craft_class"] == "weapon" then - PrintTable(v) - table.insert(validweapons, v["name"]) - end - end - - local wep = table.Random(validweapons) - - ply:PrintMessage(HUD_PRINTTALK, "You were given " .. wep .. "!") - ply:ConCommand("giveitem " .. wep) -end - -concommand.Add("randomweapon", function(ply, _, args) - if !args[1] then - local random = math.random(1, 3) - if random == 1 then - RandomWeapon(ply, "primary") - elseif random == 2 then - RandomWeapon(ply, "secondary") - elseif random == 3 then - RandomWeapon(ply, "melee") - end - else - RandomWeapon(ply, args[1]) - end -end) - -function GM:PlayerSpawn(ply) - if ply.CPPos and ply.CPAng then - ply:SetPos(ply.CPPos) - ply:SetEyeAngles(ply.CPAng) - end - - --ply:ShouldDropWeapon(true) - --[[ply:SetNWBool("ShouldDropBurningRagdoll", false) - ply:SetNWBool("ShouldDropDecapitatedRagdoll", false) - ply:SetNWBool("DeathByHeadshot", false)]] - ply:ResetDeathFlags() - - ply.LastWeapon = nil - self:ResetKills(ply) - self:ResetDamageCounter(ply) - self:ResetCooperations(ply) - self:StopCritBoost(ply) - - -- Reinitialize class - if ply:GetPlayerClass()=="" then - ply:ConCommand("tf_changeclass") - ply:SetPlayerClass("gmodplayer") - --ply:Spectate(OBS_MODE_FIXED) - --ply:StripWeapons() - --[[elseif ply:GetPlayerClass()=="sniper" then -- dumb hack wtf?? - ply:SetPlayerClass("scout") - timer.Simple(0.1, function() - if IsValid(ply) then - ply:SetPlayerClass("sniper") - end - end) - if ply:GetObserverMode() ~= OBS_MODE_NONE then - ply:UnSpectate() - end]] - elseif ply:GetPlayerClass()=="sniper" then - ply:SetPlayerClass("scout") - ply:SetPlayerClass("sniper") - timer.Simple(0.1, function() - ply:SetPlayerClass("sniper") - end) - else - timer.Simple(0.1, function() -- god i'm such a timer whore - ply:SetPlayerClass(ply:GetPlayerClass()) - end) - - if ply:GetObserverMode() ~= OBS_MODE_NONE then - ply:UnSpectate() - end - end - - if ply:Team()==TEAM_SPECTATOR then - GAMEMODE:PlayerSpawnAsSpectator( ply ) - end - - if ply:IsHL2() then - ply:SetupHands() - ply:EquipSuit() - ply:AllowFlashlight(true) - end - - if !ply:IsHL2() then - ply:AllowFlashlight(GetConVar("tf_flashlight"):GetBool()) - - if ply:Team()==TEAM_BLU then - ply:SetSkin(1) - else - ply:SetSkin(0) - end - - for k, v in pairs(ents.FindByClass('tf_wearable_item')) do - if v:GetClass() == 'tf_wearable_item' then - if v:GetOwner() == ply and string.find(v:GetModel(), "zombie") then - if ply:Team()==TEAM_BLU then - ply:SetSkin(5) - else - ply:SetSkin(4) - end - end - end - end - end - - ply:Speak("TLK_PLAYER_EXPRESSION", true) - - local playercolorconv = ply:GetInfo("cl_playercolor") - local weaponcolorconv = ply:GetInfo("cl_weaponcolor") - local playercolor = Vector(string.sub(playercolorconv, 1, 8), string.sub(playercolorconv, 10, 17), string.sub(playercolorconv, 19, 26)) - local weaponcolor = Vector(string.sub(weaponcolorconv, 1, 8), string.sub(weaponcolorconv, 10, 17), string.sub(weaponcolorconv, 19, 26)) - - ply:SetPlayerColor(playercolor) - ply:SetWeaponColor(weaponcolor) - ply:SetNoCollideWithTeammates(true) - ply:SetAvoidPlayers(true) - - if GetConVar("tf_randomizer"):GetBool() and !ply:IsHL2() then - RandomWeapon(ply, "primary") - RandomWeapon(ply, "secondary") - RandomWeapon(ply, "melee") - end - - umsg.Start("ExitFreezecam", ply) - umsg.End() -end - -function GM:PlayerSetHandsModel( ply, ent ) - local simplemodel = player_manager.TranslateToPlayerModelName( ply:GetModel() ) - local info = player_manager.TranslatePlayerHands( simplemodel ) - if ( info ) then - if ply:IsHL2() then - ent:SetModel( info.model ) - ent:SetSkin( info.skin ) - ent:SetBodyGroups( info.body ) - else - ent:SetModel( "models/weapons/c_arms_animations.mdl" ) - ent:SetSkin( info.skin ) - ent:SetBodyGroups( info.body ) - end - end -end - --- Fixing spawning at the wrong spawnpoint on HL2 maps -function GM:PlayerSelectSpawn(pl) - if self.MasterSpawn==nil then - self.MasterSpawn = false - for _,v in pairs(ents.FindByClass("info_player_start")) do - if v.IsMasterSpawn then - self.MasterSpawn = v - break - end - end - end - - if self.MasterSpawn then - return self.MasterSpawn - end - - local spawnsred = {} - local spawnsblu = {} - - for k, v in pairs(ents.FindByClass("info_player_teamspawn")) do - --print(v, "says") - if v:GetKeyValues()["StartDisabled"] == 0 then - if v:GetKeyValues()["TeamNum"] == 3 then - table.insert(spawnsblu, v) - elseif v:GetKeyValues()["TeamNum"] == 2 then - table.insert(spawnsred, v) - end - end - end - - - if pl:Team() == TEAM_RED and IsValid(spawnsred[1]) then - return table.Random(spawnsred) - elseif pl:Team() == TEAM_BLU and IsValid(spawnsblu[1]) then - return table.Random(spawnsblu) - end - - return self.BaseClass:PlayerSelectSpawn(pl) -end - -local PlayerGiveAmmoTypes = {TF_PRIMARY, TF_SECONDARY, TF_METAL} -function GM:GiveAmmoPercent(pl, pc, nometal) - --Msg("Giving "..pc.."% ammo to "..pl:GetName().." : ") - local ammo_given = false - - for _,v in ipairs(PlayerGiveAmmoTypes) do - if not nometal or v ~= TF_METAL then - if pl:GiveTFAmmo(pc * 0.01, v, true) then - ammo_given = true - end - end - end - - --Msg("\n") - if ammo_given then - if pl:GetActiveWeapon().CheckAutoReload then - pl:GetActiveWeapon():CheckAutoReload() - end - end - - return ammo_given -end - -function GM:GiveAmmoPercentNoMetal(pl, pc) - return self:GiveAmmoPercent(pl, pc, true) -end - -function GM:GiveHealthPercent(pl, pc) - return pl:GiveHealth(pc * 0.01, true) -end - -function GM:ShowHelp(ply) - ply:ConCommand("tf_hatpainter") -end - -function GM:ShowTeam(ply) - ply:ConCommand("tf_menu") -end - -function GM:ShowSpare1(ply) - ply:ConCommand("tf_itempicker hat") -end - -function GM:ShowSpare2(ply) - ply:ConCommand("tf_itempicker wep") -end - -function GM:HealPlayer(healer, pl, h, effect, allowoverheal) - local health_given = pl:GiveHealth(h, false, allowoverheal) - --print(health_given) - if effect then - if pl:IsPlayer() then - umsg.Start("PlayerHealthBonus", pl) - umsg.Short(h) - umsg.End() - - umsg.Start("PlayerHealthBonusEffect") - umsg.Long(pl:UserID()) - umsg.Bool(h>0) - umsg.End() - else - umsg.Start("EntityHealthBonusEffect") - umsg.Entity(pl) - umsg.Bool(h>0) - umsg.End() - end - end - - if health_given <= 0 then return end - if not healer or not healer:IsPlayer() then return end - - healer.AddedHealing = (healer.AddedHealing or 0) + health_given - healer.HealingScoreProgress = (healer.HealingScoreProgress or 0) + health_given -end - --- Deprecated, use HealPlayer instead -function GM:GiveHealthBonus(pl, h, allowoverheal) - pl:GiveHealth(h, false, allowoverheal) - - if pl:IsPlayer() then - umsg.Start("PlayerHealthBonus", pl) - umsg.Short(h) - umsg.End() - - umsg.Start("PlayerHealthBonusEffect") - umsg.Long(pl:UserID()) - umsg.Bool(h>0) - umsg.End() - else - umsg.Start("EntityHealthBonusEffect") - umsg.Entity(pl) - umsg.Bool(h>0) - umsg.End() - end - - return true -end - -file.Append(LOGFILE, Format("Done loading, time = %f\n", SysTime() - load_time)) -local load_time = SysTime() - -//Half-Life 2 Campaign - -// Include the configuration for this map -function GM:GrabAndSwitch() - for _, pl in pairs(player.GetAll()) do - local plInfo = {} - local plWeapons = pl:GetWeapons() - - plInfo.predicted_map = NEXT_MAP - plInfo.health = pl:Health() - plInfo.armor = pl:Armor() - plInfo.score = pl:Frags() - plInfo.deaths = pl:Deaths() - plInfo.model = pl.modelName - - if plWeapons && #plWeapons > 0 then - plInfo.loadout = {} - - for _, wep in pairs(plWeapons) do - plInfo.loadout[wep:GetClass()] = {pl:GetAmmoCount(wep:GetPrimaryAmmoType()), pl:GetAmmoCount(wep:GetSecondaryAmmoType())} - end - end - - file.Write("tf2_userid_info/tf2_userid_info_"..pl:UniqueID()..".txt", util.TableToKeyValues(plInfo)) - end - - -- Crash Recovery -- - if game.IsDedicated(true) then - local savedMap = {} - - savedMap.predicted_crash = NEXT_MAP - - file.Write("tf2_data/tf2_crash_recovery.txt", util.TableToKeyValues(savedMap)) - end - -- End -- - - // Switch maps - game.ConsoleCommand("changelevel "..NEXT_MAP.."\n") -end - -if file.Exists("tf2/maps/"..game.GetMap()..".lua", "LUA") then - include("tf2/maps/"..game.GetMap()..".lua") -elseif file.Exists("maps/"..game.GetMap()..".lua", "LUA") then - include("maps/"..game.GetMap()..".lua") -end - -//Disables use key on objects (Can Be Re-enabled) -RunConsoleCommand("sv_playerpickupallowed", "0") -//Sets the gravity to 800 (Can be set back to default "600") -RunConsoleCommand("sv_gravity", "700") -//Sets to a impact force similar to TF2 so things to go flying balls of the walls! -RunConsoleCommand("phys_impactforcescale", "0.05") -//Ditto -//RunConsoleCommand("phys_pushscale", "0.10") - -function GM:PlayerNoClip( pl ) - if GetConVar("sbox_noclip"):GetInt() <= 0 then - return - end - - if pl:Team() == TEAM_SPECTATOR then - return false - else - return true - end -end - -function GM:EntityRemoved(ent, ply) - if ent:GetClass() == "item_battery" then - ent:Remove("item_battery") - end -end - -function GM:PlayerRequestTeam( ply, teamid ) - -- This team isn't joinable - if ( !team.Joinable( teamid ) or teamid == 0 or teamid == 3 ) then - ply:ChatPrint( "You can't join that team" ) - return end - - -- This team isn't joinable - if ( !GAMEMODE:PlayerCanJoinTeam( ply, teamid ) ) then - -- Messages here should be outputted by this function - return end - - GAMEMODE:PlayerJoinTeam( ply, teamid ) -end - -function GM:PlayerCanJoinTeam( ply, teamid ) - --print("Requested "..teamid.." for "..ply:GetName().."!".." (aka team "..team.GetName(teamid).."!)") - local TimeBetweenSwitches = GAMEMODE.SecondsBetweenTeamSwitches or 5 - if ( ply.LastTeamSwitch && RealTime()-ply.LastTeamSwitch < TimeBetweenSwitches ) then - ply.LastTeamSwitch = ply.LastTeamSwitch + 1 - ply:ChatPrint( Format( "Please wait %i more seconds before trying to change team again!", ( TimeBetweenSwitches - ( RealTime() - ply.LastTeamSwitch ) ) + 1 ) ) - return false - end - - -- Already on this team! - if ( ply:Team() == teamid ) then - ply:ChatPrint( "You're already on that team" ) - return false - end - - return true -end - --- Networking -util.AddNetworkString("UpdateLoadout") - -function GM:PlayerDroppedWeapon(ply) - if IsValid(ply) and ply:IsPlayer() and !ply:IsHL2() then - net.Start("UpdateLoadout") - net.Send(ply) - end -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_example.lua b/addon/gamemodes/teamfortress/gamemode/items/workshop/items_example.lua deleted file mode 100644 index 102e24205..000000000 --- a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_example.lua +++ /dev/null @@ -1,86 +0,0 @@ -"items_game" -{ - "qualities" - { - } - "items" - { - "1000" - { - "name" "Hidden Big Axe" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Axe" - "item_name" "#TF_HalloweenBoss_Axe" - "item_description" "#TF_HalloweenBoss_Axe_Desc" - "item_slot" "melee" - "item_quality" "rarity4" - "item_logname" "headtaker" - "item_iconname" "headtaker" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_headtaker/c_headtaker" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bigaxe/c_bigaxe.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - } - "attributes" - { - } - "item_sets" - { - } - "attribute_controlled_attached_particles" - { - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_festives.lua b/addon/gamemodes/teamfortress/gamemode/items/workshop/items_festives.lua deleted file mode 100644 index a81ee7d18..000000000 --- a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_festives.lua +++ /dev/null @@ -1,106 +0,0 @@ -"items_games" -{ - "qualities" - { - } - "items" - { - "654" - { - "name" "Festive Minigun 2011" - "prefab" "weapon_minigun" - "craft_class" "" - "baseitem" "0" - "item_quality" "unique" - "item_name" "#TF_Weapon_Minigun_Festive2011" - "image_inventory" "backpack/player/items/heavy/xms_heavy_minigunlights" - "model_player" "models/weapons/c_models/c_minigun/c_minigun_xmas.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "heavy" "1" - } - } - "658" - { - "name" "Festive Rocket Launcher 2011" - "prefab" "weapon_rocketlauncher" - "craft_class" "" - "baseitem" "0" - "item_quality" "unique" - "item_name" "#TF_Weapon_RocketLauncher_Festive2011" - "image_inventory" "backpack/player/items/soldier/xms_rocketlauncher" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "attached_models" - { - "0" - { - "model_display_flags" "1" - "model" "models/player/items/soldier/xms_rocketlauncher.mdl" - } - "1" - { - "model_display_flags" "2" - "model" "models/player/items/soldier/xms_rocketlauncher.mdl" - } - } - } - "xifier_class_remap" "rocket_launcher" - } - "659" - { - "name" "Festive Flamethrower 2011" - "prefab" "weapon_flamethrower" - "craft_class" "" - "baseitem" "0" - "item_quality" "unique" - "item_name" "#TF_Weapon_Flamethrower_Festive2011" - "image_inventory" "backpack/player/items/pyro/xms_flamethrower" - "used_by_classes" - { - "pyro" "1" - } - "visuals" - { - "attached_models" - { - "0" - { - "model_display_flags" "1" - "model" "models/player/items/pyro/xms_flamethrower.mdl" - } - "1" - { - "model_display_flags" "2" - "model" "models/player/items/pyro/xms_flamethrower.mdl" - } - "2" - { - "model_display_flags" "1" - "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" - } - "3" - { - "model_display_flags" "2" - "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" - } - } - } - "xifier_class_remap" "flamethrower" - } - } - "attributes" - { - } - "item_sets" - { - } - "attribute_controlled_attached_particles" - { - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_leadkiller.lua b/addon/gamemodes/teamfortress/gamemode/items/workshop/items_leadkiller.lua deleted file mode 100644 index 6002a1e5d..000000000 --- a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_leadkiller.lua +++ /dev/null @@ -1,124 +0,0 @@ -"items_game" -{ - "qualities" - { - } - "items" - { - "9998" - { - "name" "The PASSTIME Jack" - "item_class" "tf_weapon_passtime_gun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "0" - "can_gift_wrap" "0" - } - "show_in_armory" "0" - "item_type_name" "#TF_Ball" - "item_name" "#TF_Ball" - "item_slot" "pda2" - "image_inventory" "passtime/hud/passtime_ball" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/passtime/ball/passtime_ball.mdl" - "attach_to_hands" "1" - "anim_slot" "item1" - "item_quality" "unusual" - "propername" "0" - "min_ilevel" "8" - "max_ilevel" "8" - "used_by_classes" - { - "scout" "1" - "soldier" "1" - "pyro" "1" - "demoman" "1" - "heavy" "1" - "engineer" "1" - "medic" "1" - "sniper" "1" - "spy" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "9996" - { - "name" "Engie's Fist" - "item_class" "tf_weapon_engi_fist" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "0" - "item_type_name" "#TF_Weapon_Fists" - "item_name" "Engie's Fist" - "item_slot" "melee" - "item_quality" "unique" - "anim_slot" "item2" - "min_ilevel" "15" - "max_ilevel" "15" - "propername" "0" - "item_logname" "robot_arm" - "item_iconname" "robot_arm_kill" - "image_inventory" "backpack/weapons/v_models/v_fist_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" - "drop_sound" "ui/item_robot_arm_drop.wav" - } - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_livetf2.lua b/addon/gamemodes/teamfortress/gamemode/items/workshop/items_livetf2.lua deleted file mode 100644 index 85e065acc..000000000 --- a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_livetf2.lua +++ /dev/null @@ -1,13528 +0,0 @@ -"items_game" -{ - "qualities" - { - } - "items" - { - "35" - { - "name" "The Kritzkrieg" - "item_class" "tf_weapon_medigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Medigun" - "item_name" "#TF_Unique_Achievement_Medigun1" - "item_slot" "secondary" - "image_inventory" "backpack/weapons/c_models/c_overhealer/c_overhealer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_medigun/c_medigun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "8" - "max_ilevel" "8" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "medigun charge is crit boost" - { - "attribute_class" "set_charge_type" - "value" "1" - } - "ubercharge rate bonus" - { - "attribute_class" "mult_medigun_uberchargerate" - "value" "1.25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_heal" "1" - "attrib_uber" "1" - } - "visuals_red" - { - "attached_model" - { - "model" "models/weapons/c_models/c_overhealer/c_overhealer.mdl" - } - "custom_particlesystem" - { - "system" "medicgun_beam_attrib_overheal_red" - } - } - "visuals_blu" - { - "attached_model" - { - "model" "models/weapons/c_models/c_overhealer/c_overhealer.mdl" - } - "custom_particlesystem" - { - "system" "medicgun_beam_attrib_overheal_blue" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "36" - { - "name" "The Blutsauger" - "item_class" "tf_weapon_syringegun_medic" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "blutsauger" - "item_iconname" "blutsauger" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SyringeGun" - "item_name" "#TF_Unique_Achievement_Syringegun1" - "item_slot" "primary" - "image_inventory" "backpack/weapons/c_models/c_leechgun/c_leechgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_leechgun/c_leechgun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "heal on hit for rapidfire" - { - "attribute_class" "add_onhit_addhealth" - "value" "3" - } - "health drain" - { - "attribute_class" "add_health_regen" - "value" "-2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "37" - { - "name" "The Ubersaw" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "ubersaw" - "item_iconname" "ubersaw" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Unique_Achievement_Bonesaw1" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_ubersaw/c_ubersaw" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ubersaw/c_ubersaw.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "add uber charge on hit" - { - "attribute_class" "add_onhit_ubercharge" - "value" "0.25" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "visuals" - { - "custom_sound1" "Weapon_UberSaw.HitFlesh" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "38" - { - "name" "The Axtinguisher" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "axtinguisher" - "item_iconname" "axtinguisher" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_FireAxe" - "item_name" "#TF_Unique_Achievement_FireAxe1" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "crit vs burning players" - { - "attribute_class" "or_crit_vs_playercond" - "value" "1" - } - "dmg penalty vs nonburning" - { - "attribute_class" "mult_dmg_vs_nonburning" - "value" "0.5" - } - "no crit vs nonburning" - { - "attribute_class" "set_nocrit_vs_nonburning" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "39" - { - "name" "The Flare Gun" - "item_class" "tf_weapon_flaregun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Flaregun" - "item_name" "#TF_Unique_Achievement_Flaregun" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "hidden secondary max ammo penalty" - { - "attribute_class" "mult_maxammo_secondary" - "value" "0.5" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_firerate" "1" - "wpn_ignites" "1" - "ammo_secondary" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "40" - { - "name" "The Backburner" - "item_class" "tf_weapon_flamethrower" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "backburner" - "item_iconname" "backburner" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Flamethrower" - "item_name" "#TF_Unique_Achievement_Flamethrower" - "item_slot" "primary" - "image_inventory" "backpack/weapons/c_models/c_backburner/c_backburner" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "mod flamethrower push" - { - "attribute_class" "set_flamethrower_push_disabled" - "value" "1" - } - "mod flamethrower back crit" - { - "attribute_class" "set_flamethrower_back_crit" - "value" "1" - } - "crit mod disabled hidden" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.15" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "wpn_ignites" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_BackBurner.FireStart" - "sound_special1" "Weapon_BackBurner.FireLoop" - "sound_burst" "Weapon_BackBurner.FireLoopCrit" - "attached_model" - { - "model" "models/weapons/c_models/c_backburner/c_backburner.mdl" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "41" - { - "name" "Natascha" - "item_class" "tf_weapon_minigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Unique_Achievement_Minigun" - "item_slot" "primary" - "item_logname" "natascha" - "item_iconname" "natascha" - "image_inventory" "backpack/weapons/c_models/c_w_ludmila/c_w_ludmila" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_minigun.mdl" - "attach_to_hands" "0" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "slow enemy on hit" - { - "attribute_class" "mult_onhit_enemyspeed" - "value" "1.0" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.75" - } - "minigun spinup time increased" - { - "attribute_class" "mult_minigun_spinup_time" - "value" "1.3" - } - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "wpn_uses_aimmode" "1" - "only_on_minigun" "1" - } - "visuals" - { - "sound_reload" "Weapon_Minifun.Reload" - "sound_empty" "Weapon_Minifun.ClipEmpty" - "sound_double_shot" "Weapon_Minifun.Fire" - "sound_special1" "Weapon_Minifun.WindUp" - "sound_special2" "Weapon_Minifun.WindDown" - "sound_special3" "Weapon_Minifun.Spin" - "sound_burst" "Weapon_Minifun.FireCrit" - "skin" "2" - "attached_model" - { - "world_model" "1" - "model" "models/weapons/c_models/c_w_ludmila/c_w_ludmila.mdl" - } - "attached_model" - { - "view_model" "1" - "model" "models/weapons/c_models/c_v_ludmila/c_v_ludmila.mdl" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "42" - { - "name" "The Sandvich" - "item_class" "tf_weapon_lunchbox" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_Achievement_LunchBox" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_sandwich/c_sandwich" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_sandwich/c_sandwich.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "heavy" "1" - } - "allowed_attributes" - { - "all_items" "1" - } - "mouse_pressed_sound" "ui/item_sandwich_drop.wav" - "drop_sound" "ui/item_sandwich_pickup.wav" - } - "43" - { - "name" "The Killing Gloves of Boxing" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_Unique_Achievement_Fists" - "item_slot" "melee" - "item_logname" "gloves" - "item_iconname" "gloves" - "image_inventory" "backpack/weapons/c_models/c_boxing_gloves/c_boxing_gloves" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "7" - "max_ilevel" "7" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "critboost on kill" - { - "attribute_class" "add_onkill_critboost_time" - "value" "5" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "hide_bodygroups_deployed_only" "1" - "visuals" - { - "hide_player_bodygroup_name" "hands" - "sound_melee_miss" "Weapon_BoxingGloves.Miss" - "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" - "sound_burst" "Weapon_BoxingGloves.MissCrit" - } - "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" - "drop_sound" "ui/item_boxing_gloves_drop.wav" - } - "44" - { - "name" "The Nailgun" - "item_class" "tf_weapon_nailgun" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_Weapon_Nailgun" - "item_description" "" - "item_slot" "primary" - "item_logname" "nailgun" - "item_iconname" "nailgun" - "image_inventory" "sprites/bucket_nailgun" - "image_inventory_size_w" "200" - "image_inventory_size_h" "128" - "model_player" "models/advancedweaponiser/nailgun/c_nailgun.mdl" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "45" - { - "name" "The Force-a-Nature" - "item_class" "tf_weapon_scattergun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Scattergun" - "item_name" "#TF_Unique_Achievement_Scattergun_Double" - "item_logname" "force_a_nature" - "item_iconname" "force_a_nature" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "anim_slot" "ITEM2" - "image_inventory" "backpack/weapons/c_models/c_double_barrel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_double_barrel.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "scout" "1" - } - "attributes" - { - "scattergun has knockback" - { - "attribute_class" "set_scattergun_has_knockback" - "value" "1" - } - "fire rate bonus" - { - "attribute_class" "mult_postfiredelay" - "value" "0.5" - } - "bullets per shot bonus" - { - "attribute_class" "mult_bullets_per_shot" - "value" "1.2" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.9" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.4" - } - "scattergun no reload single" - { - "attribute_class" "set_scattergun_no_reload_single" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Scatter_Gun_Double.Single" - "sound_burst" "Weapon_Scatter_Gun_Double.SingleCrit" - "muzzle_flash" "muzzle_bignasty" - "tracer_effect" "bullet_bignasty_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "46" - { - "name" "Bonk! Atomic Punch" - "item_class" "tf_weapon_lunchbox_drink" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_Achievement_EnergyDrink" - "anim_slot" "ITEM1" - "item_slot" "secondary" - "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_energy_drink" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "sound_deploy" "Scout.DodgeCanOpen" - } - "allowed_attributes" - { - "all_items" "1" - } - "mouse_pressed_sound" "ui/item_soda_can_pickup.wav" - "drop_sound" "ui/item_soda_can_drop.wav" - } - "47" - { - "name" "Demoman's Fro" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Demo_Hat_1" - "item_description" "#TF_Demo_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_afro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_afro.mdl" - "drop_type" "none" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "48" - { - "name" "Mining Light" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Engineer_Hat_1" - "item_description" "#TF_Engineer_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/mining_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/mining_hat.mdl" - "drop_type" "none" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "49" - { - "name" "Football Helmet" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Heavy_Hat_1" - "item_description" "#TF_Heavy_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/football_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/football_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "50" - { - "name" "Prussian Pickelhaube" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Medic_Hat_1" - "item_description" "#TF_Medic_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "51" - { - "name" "Pyro's Beanie" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Pyro_Hat_1" - "item_description" "#TF_Pyro_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "52" - { - "name" "Batter's Helmet" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Scout_Hat_1" - "item_description" "#TF_Scout_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/batter_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/batter_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_pickup.wav" - } - "53" - { - "name" "Trophy Belt" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Sniper_Hat_1" - "item_description" "#TF_Sniper_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/tooth_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/tooth_hat.mdl" - "drop_type" "none" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "54" - { - "name" "Soldier's Stash" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Soldier_Hat_1" - "item_description" "#TF_Soldier_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_hat.mdl" - "drop_type" "none" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "55" - { - "name" "Fancy Fedora" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Spy_Hat_1" - "item_description" "#TF_Spy_Hat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "56" - { - "name" "The Huntsman" - "item_class" "tf_weapon_compound_bow" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_CompoundBow" - "item_name" "#TF_Unique_Achievement_CompoundBow" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "item_iconname" "huntsman" - "min_ilevel" "10" - "max_ilevel" "10" - "anim_slot" "item2" - "image_inventory" "backpack/weapons/c_models/c_bow/c_bow" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bow/c_bow.mdl" - "attach_to_hands" "1" - "flip_viewmodel" "1" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "hidden primary max ammo bonus" - { - "attribute_class" "mult_maxammo_primary" - "value" "0.5" - } - } - "visuals" - { - "show_player_bodygroup_name" "arrows" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "57" - { - "name" "The Razorback" - "item_class" "tf_wearable_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Shield" - "item_name" "#TF_Unique_Backstab_Shield" - "item_slot" "secondary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/sniper/knife_shield" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/knife_shield.mdl" - "extra_wearable" "models/player/items/sniper/knife_shield.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "backstab shield" - { - "attribute_class" "set_blockbackstab_once" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "58" - { - "name" "Jarate" - "item_class" "tf_weapon_jar" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Jar" - "item_name" "#TF_Unique_Achievement_Jar" - "item_slot" "secondary" - "item_quality" "unique" - "anim_slot" "item1" - "min_ilevel" "5" - "max_ilevel" "5" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/urinejar" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/urinejar.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "jarate description" - { - "attribute_class" "desc_jarate_description" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_bottle_pickup.wav" - "drop_sound" "ui/item_bottle_drop.wav" - } - "59" - { - "name" "The Dead Ringer" - "item_class" "tf_weapon_invis" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_Unique_Achievement_FeignWatch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_pocket_watch/parts/c_pocket_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_watch_pocket_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "attributes" - { - "set cloak is feign death" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "mult cloak meter consume rate" - { - "attribute_class" "mult_cloak_meter_consume_rate" - "value" "1.6" - } - "mult cloak meter regen rate" - { - "attribute_class" "mult_cloak_meter_regen_rate" - "value" "1.8" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_cloak" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - } - "60" - { - "name" "The Cloak and Dagger" - "item_class" "tf_weapon_invis" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_Unique_Achievement_CloakWatch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_leather_watch/parts/c_leather_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_watch_leather_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "attributes" - { - "set cloak is movement based" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - "mult cloak meter regen rate" - { - "attribute_class" "mult_cloak_meter_regen_rate" - "value" "2.0" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "player_movement" "1" - "attrib_cloak" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - } - "61" - { - "name" "The Ambassador" - "item_class" "tf_weapon_revolver" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_Unique_Achievement_Revolver" - "item_slot" "secondary" - "item_quality" "unique" - "propername" "0" - "item_logname" "ambassador" - "item_iconname" "ambassador" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_ambassador/parts/c_ambassador_opt" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ambassador/c_ambassador.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "spy" "1" - } - "attributes" - { - "revolver use hit locations" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.85" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Ambassador.Single" - "sound_burst" "Weapon_Ambassador.SingleCrit" - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "94" - { - "name" "Texas Ten Gallon" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Engineer_Cowboy_Hat" - "item_description" "#TF_Engineer_Cowboy_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_cowboy_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_cowboy_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "95" - { - "name" "Engineer's Cap" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Engineer_Train_Hat" - "item_description" "#TF_Engineer_Train_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_train_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_train_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "96" - { - "name" "Officer's Ushanka" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Heavy_Ushanka_Hat" - "item_description" "#TF_Heavy_Ushanka_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_ushanka" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_ushanka.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "97" - { - "name" "Tough Guy's Toque" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Heavy_Stocking_cap" - "item_description" "#TF_Heavy_Stocking_cap_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_stocking_cap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_stocking_cap.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "98" - { - "name" "Stainless Pot" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Soldier_Pot_Hat" - "item_description" "#TF_Soldier_Pot_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_pot" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_pot.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" - "drop_sound" "ui/item_metal_pot_drop.wav" - } - "99" - { - "name" "Tyrant's Helm" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Soldier_Viking_Hat" - "item_description" "#TF_Soldier_Viking_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_viking" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_viking.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "100" - { - "name" "Glengarry Bonnet" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Demo_Scott_Hat" - "item_description" "#TF_Demo_Scott_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_scott" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_scott.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "101" - { - "name" "Vintage Tyrolean" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Medic_Tyrolean_Hat" - "item_description" "#TF_Medic_Tyrolean_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_tyrolean" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_tyrolean.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "102" - { - "name" "Respectless Rubber Glove" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Pyro_Chicken_Hat" - "item_description" "#TF_Pyro_Chicken_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_chicken" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_chicken.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_rubber_pickup.wav" - "drop_sound" "ui/item_rubber_pickup.wav" - } - "103" - { - "name" "Camera Beard" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Spy_Camera_Beard" - "item_description" "#TF_Spy_Camera_Beard_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_camera_beard" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_camera_beard.mdl" - "drop_type" "none" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "104" - { - "name" "Otolaryngologist's Mirror" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Medic_Mirror_Hat" - "item_description" "#TF_Medic_Mirror_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_mirror" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_mirror.mdl" - "drop_type" "none" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "105" - { - "name" "Brigade Helm" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Pyro_Fireman_Helmet" - "item_description" "#TF_Pyro_Fireman_Helmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/fireman_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/fireman_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "106" - { - "name" "Bonk Helm" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Scout_Bonk_Helmet" - "item_description" "#TF_Scout_Bonk_Helmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/bonk_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/bonk_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "107" - { - "name" "Ye Olde Baker Boy" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Scout_Newsboy_Cap" - "item_description" "#TF_Scout_Newsboy_Cap_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/newsboy_cap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/newsboy_cap.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "108" - { - "name" "Backbiter's Billycock" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Spy_Derby_Hat" - "item_description" "#TF_Spy_Derby_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/derby_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/derby_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "109" - { - "name" "Professional's Panama" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Sniper_Straw_Hat" - "item_description" "#TF_Sniper_Straw_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/straw_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/straw_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "110" - { - "name" "Master's Yellow Belt" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Sniper_Jarate_Headband" - "item_description" "#TF_Sniper_Jarate_Headband_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/jarate_headband" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/jarate_headband.mdl" - "drop_type" "none" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "111" - { - "name" "Baseball Bill's Sports Shine" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Hatless_Scout" - "item_description" "#TF_Hatless_Scout_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/scout_nohat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "115" - { - "name" "Mildly Disturbing Halloween Mask" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Holiday_Hat" - "item_name" "#TF_Halloween_Hat" - "item_description" "#TF_Halloween_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_halloween" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_halloween.mdl" - "sniper" "models/player/items/sniper/sniper_halloween.mdl" - "soldier" "models/player/items/soldier/soldier_halloween.mdl" - "demoman" "models/player/items/demo/demo_halloween.mdl" - "medic" "models/player/items/medic/medic_halloween.mdl" - "heavy" "models/player/items/heavy/heavy_halloween.mdl" - "spy" "models/player/items/spy/spy_halloween.mdl" - "engineer" "models/player/items/engineer/engineer_halloween.mdl" - "pyro" "models/player/items/pyro/pyro_halloween.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "116" - { - "name" "Ghastly Gibus" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Domination_Hat" - "item_description" "#TF_Domination_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_domination_2009" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/all_domination_2009.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2009" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "117" - { - "name" "Ritzy Rick's Hair Fixative" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Hatless_Sniper" - "item_description" "#TF_Hatless_Sniper_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/sniper_nohat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "none" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "118" - { - "name" "Texas Slim's Dome Shine" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Hatless_Engineer" - "item_description" "#TF_Hatless_Engineer_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_nohat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "none" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_bald_head_pickup.wav" - "drop_sound" "ui/item_bald_head_pickup.wav" - } - "120" - { - "name" "Scotsman's Stove Pipe" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Demo_Top_Hat" - "item_description" "#TF_Demo_Top_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/top_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/top_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "121" - { - "name" "Web Easteregg Medal" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Medal" - "item_name" "#TF_Soldier_Medal_Web_Sleuth" - "item_description" "#TF_Soldier_Medal_Web_Sleuth_Desc" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "backpack/player/items/soldier/medal" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "medal" - } - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "122" - { - "name" "CheatDetectedMinor" - "hidden" "1" - "item_class" "tf_wearable_item" - "item_type_name" "CheatDetector" - "item_name" "#TF_CheatDetectedMinor" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "123" - { - "name" "CheatDetectedMajor" - "hidden" "1" - "item_class" "tf_wearable_item" - "item_type_name" "CheatDetector" - "item_name" "#TF_CheatDetectedMajor" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "124" - { - "name" "CheatDetectedHonesty" - "hidden" "1" - "item_class" "tf_wearable_item" - "item_type_name" "CheatDetector" - "item_name" "#TF_HonestyReward" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "100" - "max_ilevel" "100" - "image_inventory" "" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "" - "used_by_classes" - { - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "125" - { - "name" "Honest Halo" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_HonestyHalo" - "item_name" "#TF_HonestyHalo" - "item_description" "#TF_HonestyHalo_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/player/items/all_class/all_halo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/all_halo.mdl" - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "attributes" - { - "attach particle effect" - { - "attribute_class" "set_attached_particle" - "value" "5" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "126" - { - "name" "L4D Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_L4DHat" - "item_name" "#TF_L4DHat" - "item_description" "#TF_L4DHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/demo/demo_bill" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_bill.mdl" - "sniper" "models/player/items/sniper/sniper_bill.mdl" - "soldier" "models/player/items/soldier/soldier_bill.mdl" - "demoman" "models/player/items/demo/demo_bill.mdl" - "medic" "models/player/items/medic/medic_bill.mdl" - "heavy" "models/player/items/heavy/heavy_bill.mdl" - "spy" "models/player/items/spy/spy_bill.mdl" - "engineer" "models/player/items/engineer/engineer_bill.mdl" - "pyro" "models/player/items/pyro/pyro_bill.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "127" - { - "name" "The Direct Hit" - "item_class" "tf_weapon_rocketlauncher_directhit" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Unique_Achievement_RocketLauncher" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_directhit/c_directhit" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_directhit/c_directhit.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "Blast radius decreased" - { - "attribute_class" "mult_explosion_radius" - "value" "0.3" - } - "Projectile speed increased" - { - "attribute_class" "mult_projectile_speed" - "value" "1.8" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.25" - } - "mod mini-crit airborne" - { - "attribute_class" "mini_crit_airborne" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "128" - { - "name" "The Equalizer" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Pickaxe" - "item_name" "#TF_Unique_Achievement_Pickaxe" - "item_logname" "unique_pickaxe" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_pickaxe/c_pickaxe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_pickaxe/c_pickaxe.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "mod shovel damage boost" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_PickAxe.Swing" - "sound_melee_hit" "Weapon_PickAxe.HitFlesh" - "sound_melee_burst" "Weapon_PickAxe.SwingCrit" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "129" - { - "name" "The Buff Banner" - "item_class" "tf_weapon_buff_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Battle_Banner" - "item_name" "#TF_Unique_Achievement_SoldierBuff" - "item_description" "#TF_Unique_Achievement_SoldierBuff_Desc" - "item_slot" "secondary" - "anim_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_buffpack/c_buffpack" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bugle/c_bugle.mdl" - "attach_to_hands" "1" - "extra_wearable" "models/weapons/c_models/c_buffpack/c_buffpack.mdl" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "attributes" - { - "mod soldier buff type" - { - "attribute_class" "set_buff_type" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_pack_pickup.wav" - "drop_sound" "ui/item_pack_drop.wav" - } - "130" - { - "name" "The Scottish Resistance" - "item_class" "tf_weapon_pipebomblauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_PipebombLauncher" - "item_name" "#TF_Unique_Achievement_StickyLauncher" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "item_logname" "stickybomb_defender" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/w_models/w_stickybomb_defender" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_scottish_resistance.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "fire rate bonus" - { - "attribute_class" "mult_postfiredelay" - "value" "0.75" - } - "sticky detonate mode" - { - "attribute_class" "set_detonate_mode" - "value" "1" - } - "stickies detonate stickies" - { - "attribute_class" "stickies_detonate_stickies" - "value" "1" - } - "maxammo secondary increased" - { - "attribute_class" "mult_maxammo_secondary" - "value" "1.5" - } - "max pipebombs increased" - { - "attribute_class" "add_max_pipebombs" - "value" "6" - } - "sticky arm time penalty" - { - "attribute_class" "sticky_arm_time" - "value" "0.8" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_secondary" "1" - "only_on_pipebombs" "1" - "wpn_lobs_projectiles" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "131" - { - "name" "The Chargin' Targe" - "item_class" "tf_wearable_item_demoshield" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Shield" - "item_name" "#TF_Unique_Achievement_Shield" - "item_description" "#TF_Unique_Achievement_Shield_Desc" - "item_slot" "primary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_targe/c_targe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_targe/c_targe.mdl" - "act_as_wearable" "1" - "attach_to_hands" "0" - "attach_to_hands_vm_only" "1" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "dmg taken from fire reduced" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "0.5" - } - "dmg taken from blast reduced" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "0.6" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "132" - { - "name" "The Eyelander" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Sword" - "item_name" "#TF_Unique_Achievement_Sword" - "item_description" "#TF_Unique_Achievement_Sword_Desc" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_claymore/c_claymore" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_claymore/c_claymore.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "133" - { - "name" "The Gunboats" - "item_class" "tf_wearable_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Boots" - "item_name" "#TF_Unique_Blast_Boots" - "item_slot" "secondary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_rocketboots_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rocketboots_soldier.mdl" - "act_as_wearable" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "rocket jump damage reduction" - { - "attribute_class" "rocket_jump_dmg_reduction" - "value" "0.4" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "134" - { - "name" "Propaganda Contest First Place" - "hidden" "0" - "item_class" "tf_wearable_item" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PropagandaContest_FirstPlace" - "item_description" "#TF_PropagandaContest_FirstPlace_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_first" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_first.mdl" - "sniper" "models/player/items/sniper/hat_first.mdl" - "soldier" "models/player/items/soldier/hat_first.mdl" - "demoman" "models/player/items/demo/hat_first.mdl" - "medic" "models/player/items/medic/hat_first.mdl" - "heavy" "models/player/items/heavy/hat_first.mdl" - "spy" "models/player/items/spy/hat_first.mdl" - "engineer" "models/player/items/engineer/hat_first.mdl" - "pyro" "models/player/items/pyro/hat_first.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "135" - { - "name" "Towering Pillar of Hats" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ToweringPillar_Hat" - "item_description" "#TF_ToweringPillar_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_first_nr" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_first_nr.mdl" - "sniper" "models/player/items/sniper/hat_first_nr.mdl" - "soldier" "models/player/items/soldier/hat_first_nr.mdl" - "demoman" "models/player/items/demo/hat_first_nr.mdl" - "medic" "models/player/items/medic/hat_first_nr.mdl" - "heavy" "models/player/items/heavy/hat_first_nr.mdl" - "spy" "models/player/items/spy/hat_first_nr.mdl" - "engineer" "models/player/items/engineer/hat_first_nr.mdl" - "pyro" "models/player/items/pyro/hat_first_nr.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "136" - { - "name" "Propaganda Contest Second Place" - "hidden" "0" - "item_class" "tf_wearable_item" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PropagandaContest_SecondPlace" - "item_description" "#TF_PropagandaContest_SecondPlace_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_second" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_second.mdl" - "sniper" "models/player/items/sniper/hat_second.mdl" - "soldier" "models/player/items/soldier/hat_second.mdl" - "demoman" "models/player/items/demo/hat_second.mdl" - "medic" "models/player/items/medic/hat_second.mdl" - "heavy" "models/player/items/heavy/hat_second.mdl" - "spy" "models/player/items/spy/hat_second.mdl" - "engineer" "models/player/items/engineer/hat_second.mdl" - "pyro" "models/player/items/pyro/hat_second.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "137" - { - "name" "Noble Amassment of Hats" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_NobleAmassment_Hat" - "item_description" "#TF_NobleAmassment_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_second_nr" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_second_nr.mdl" - "sniper" "models/player/items/sniper/hat_second_nr.mdl" - "soldier" "models/player/items/soldier/hat_second_nr.mdl" - "demoman" "models/player/items/demo/hat_second_nr.mdl" - "medic" "models/player/items/medic/hat_second_nr.mdl" - "heavy" "models/player/items/heavy/hat_second_nr.mdl" - "spy" "models/player/items/spy/hat_second_nr.mdl" - "engineer" "models/player/items/engineer/hat_second_nr.mdl" - "pyro" "models/player/items/pyro/hat_second_nr.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "138" - { - "name" "Propaganda Contest Third Place" - "hidden" "0" - "item_class" "tf_wearable_item" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PropagandaContest_ThirdPlace" - "item_description" "#TF_PropagandaContest_ThirdPlace_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_third" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_third.mdl" - "sniper" "models/player/items/sniper/hat_third.mdl" - "soldier" "models/player/items/soldier/hat_third.mdl" - "demoman" "models/player/items/demo/hat_third.mdl" - "medic" "models/player/items/medic/hat_third.mdl" - "heavy" "models/player/items/heavy/hat_third.mdl" - "spy" "models/player/items/spy/hat_third.mdl" - "engineer" "models/player/items/engineer/hat_third.mdl" - "pyro" "models/player/items/pyro/hat_third.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "139" - { - "name" "Modest Pile of Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ModestPile_Hat" - "item_description" "#TF_ModestPile_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hat_third_nr" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/hat_third_nr.mdl" - "sniper" "models/player/items/sniper/hat_third_nr.mdl" - "soldier" "models/player/items/soldier/hat_third_nr.mdl" - "demoman" "models/player/items/demo/hat_third_nr.mdl" - "medic" "models/player/items/medic/hat_third_nr.mdl" - "heavy" "models/player/items/heavy/hat_third_nr.mdl" - "spy" "models/player/items/spy/hat_third_nr.mdl" - "engineer" "models/player/items/engineer/hat_third_nr.mdl" - "pyro" "models/player/items/pyro/hat_third_nr.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "140" - { - "name" "The Reserve Shooter" - "first_sale_date" "2011/03/23" - "item_class" "tf_weapon_shotgun_soldier" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "can_craft_count" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - "can_deal_mvm_penetration_damage" "1" - "can_deal_long_distance_damage" "1" - "can_deal_taunt_damage" "1" - } - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_ReserveShooter" - "item_slot" "secondary" - "item_logname" "reserve_shooter" - "item_iconname" "reserve_kill" - "show_in_armory" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_reserve_shooter/c_reserve_shooter" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_reserve_shooter/c_reserve_shooter.mdl" - "used_by_classes" - { - "soldier" "1" - "pyro" "1" - } - "visuals" - { - "sound_single_shot" "weapons/reserve_shooter_02.wav" - "sound_burst" "weapons/reserve_shooter_02_crit.wav" - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "attributes" - { - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.5" - } - "mod mini-crit airborne deploy" - { - "attribute_class" "mini_crit_airborne_deploy" - "value" "3" - } - "deploy time decreased" - { - "attribute_class" "mult_deploy_time" - "value" "0.85" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "141" - { - "name" "The Frontier Justice" - "item_class" "tf_weapon_sentry_revenge" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Shotgun" - "item_name" "#TF_Unique_Sentry_Shotgun" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "item_logname" "frontier_justice" - "item_iconname" "frontier_kill" - "image_inventory" "backpack/weapons/c_models/c_frontierjustice/c_frontierjustice" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_frontierjustice/c_frontierjustice.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "mod sentry killed revenge" - { - "attribute_class" "sentry_killed_revenge" - "value" "1" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.5" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_shotgun" - "tracer_effect" "bullet_shotgun_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "142" - { - "name" "The Gunslinger" - "item_class" "tf_weapon_robot_arm" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Robot_Arm" - "item_name" "#TF_Unique_Robot_Arm" - "item_slot" "melee" - "item_quality" "unique" - "anim_slot" "item2" - "min_ilevel" "15" - "max_ilevel" "15" - "propername" "0" - "item_logname" "robot_arm" - "item_iconname" "robot_arm_kill" - "image_inventory" "backpack/weapons/gunslinger" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "mod wrench builds minisentry" - { - "attribute_class" "wrench_builds_minisentry" - "value" "1" - } - "max health additive bonus" - { - "attribute_class" "add_maxhealth" - "value" "25" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" - "drop_sound" "ui/item_robot_arm_drop.wav" - } - "143" - { - "name" "OSX Item" - "hidden" "0" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_OSXItem" - "item_description" "#TF_OSXItem_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/all_class/earbuds" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_earbuds.mdl" - "sniper" "models/player/items/sniper/sniper_earbuds.mdl" - "soldier" "models/player/items/soldier/soldier_earbuds.mdl" - "demoman" "models/player/items/demo/demo_earbuds.mdl" - "medic" "models/player/items/medic/medic_earbuds.mdl" - "heavy" "models/player/items/heavy/heavy_earbuds.mdl" - "spy" "models/player/items/spy/spy_earbuds.mdl" - "engineer" "models/player/items/engineer/engineer_earbuds.mdl" - "pyro" "models/player/items/pyro/pyro_earbuds.mdl" - } - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "attached_particlesystem" - { - "system" "headphone_notes" - "attachment" "ear_R" - } - "attached_particlesystem" - { - "system" "headphone_notes" - "attachment" "ear_L" - } - } - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - } - "144" - { - "name" "Medic Mask" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MedicMask" - "item_description" "#TF_MedicMask_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_mask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_mask.mdl" - "drop_type" "none" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "145" - { - "name" "Heavy Hair" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyHair" - "item_description" "#TF_HeavyHair_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/hounddog" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/hounddog.mdl" - "drop_type" "none" - "propername" "1" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "146" - { - "name" "Demoman Hallmark" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemomanHallmark" - "item_description" "#TF_DemomanHallmark_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/hallmark" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/hallmark.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "147" - { - "name" "Spy Noble Hair" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SpyNobleHair" - "item_description" "#TF_SpyNobleHair_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/noblehair" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/noblehair.mdl" - "drop_type" "none" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "148" - { - "name" "Engineer Welding Mask" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_EngineerWeldingMask" - "item_description" "#TF_EngineerWeldingMask_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/weldingmask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/weldingmask.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "animation" - { - "activity" "ACT_IDLE" - "playback" "on_spawn" - } - "animation" - { - "activity" "ACT_RUN" - "playback" "start_building" - } - "animation" - { - "activity" "ACT_IDLE" - "playback" "stop_building" - } - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "150" - { - "name" "Scout Beanie" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScoutBeanie" - "item_description" "#TF_ScoutBeanie_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/beanie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/beanie.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "151" - { - "name" "Pyro Brain Sucker" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroBrainSucker" - "item_description" "#TF_PyroBrainSucker_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_brainsucker" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_brainsucker.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_rubber_pickup.wav" - "drop_sound" "ui/item_rubber_pickup.wav" - } - "152" - { - "name" "Soldier Samurai Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierSamurai" - "item_description" "#TF_SoldierSamurai_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_samurai" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_samurai.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "153" - { - "name" "The Homewrecker" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "sledgehammer" - "item_iconname" "sledgehammer" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SledgeHammer" - "item_name" "#TF_Unique_SledgeHammer" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_sledgehammer/c_sledgehammer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_sledgehammer/c_sledgehammer.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "dmg bonus vs buildings" - { - "attribute_class" "mult_dmg_vs_buildings" - "value" "2.0" - } - "dmg penalty vs players" - { - "attribute_class" "mult_dmg_vs_players" - "value" "0.75" - } - "damage applies to sappers" - { - "attribute_class" "set_dmg_apply_to_sapper" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "154" - { - "name" "The Pain Train" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "paintrain" - "item_iconname" "paintrain" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_MakeshiftClub" - "item_name" "#TF_Unique_Makeshiftclub" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_paintrain/c_paintrain" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_paintrain/c_paintrain.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "demoman" "1" - "soldier" "1" - } - "attributes" - { - "increase player capture value" - { - "attribute_class" "add_player_capturevalue" - "value" "1" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "1.1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "155" - { - "name" "The Southern Hospitality" - "item_class" "tf_weapon_wrench" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Unique_Combat_Wrench" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "propername" "0" - "item_logname" "southern_hospitality" - "item_iconname" "southern_comfort_kill" - "image_inventory" "backpack/weapons/c_models/c_spikewrench/c_spikewrench" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_spikewrench/c_spikewrench.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "engineer" "1" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "bleeding duration" - { - "attribute_class" "bleeding_duration" - "value" "5" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "1.20" - } - } - "visuals" - { - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_ITEM3_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_ITEM3_VM_DRAW" - } - "animation" - { - "activity" "ACT_VM_HITCENTER" - "replacement" "ACT_ITEM3_VM_HITCENTER" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_ITEM3_VM_SWINGHARD" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "158" - { - "name" "Sniper Pith Helmet" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SniperPithHelmet" - "item_description" "#TF_SniperPithHelmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/pith_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/pith_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "159" - { - "name" "The Dalokohs Bar" - "item_class" "tf_weapon_lunchbox" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_Lunchbox_Chocolate" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_chocolate/c_chocolate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_chocolate/c_chocolate.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "heavy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_sandwich_drop.wav" - "drop_sound" "ui/item_sandwich_pickup.wav" - "attributes" - { - "lunchbox adds maxhealth bonus" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - } - } - "160" - { - "name" "TTG Max Pistol" - "item_class" "tf_weapon_pistol" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_TTG_MaxGun" - "item_description" "#TF_TTG_MaxGun_Desc" - "item_slot" "secondary" - "item_logname" "maxgun" - "item_iconname" "maxgun" - "image_inventory" "backpack/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "engineer" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "161" - { - "name" "TTG Sam Revolver" - "item_class" "tf_weapon_revolver" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_TTG_SamRevolver" - "item_description" "#TF_TTG_SamRevolver_Desc" - "item_slot" "secondary" - "item_quality" "unique" - "item_logname" "samrevolver" - "item_iconname" "samrevolver" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_ttg_sam_gun/c_ttg_sam_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ttg_sam_gun/c_ttg_sam_gun.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "spy" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "162" - { - "name" "TTG Max Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TTG_MaxsHat" - "item_description" "#TF_TTG_MaxsHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_ttg_max" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_ttg_max.mdl" - "sniper" "models/player/items/sniper/sniper_ttg_max.mdl" - "soldier" "models/player/items/soldier/soldier_ttg_max.mdl" - "demoman" "models/player/items/demo/demo_ttg_max.mdl" - "medic" "models/player/items/medic/medic_ttg_max.mdl" - "heavy" "models/player/items/heavy/heavy_ttg_max.mdl" - "spy" "models/player/items/spy/spy_ttg_max.mdl" - "engineer" "models/player/items/engineer/engineer_ttg_max.mdl" - "pyro" "models/player/items/pyro/pyro_ttg_max.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - } - "163" - { - "name" "Crit-a-Cola" - "item_class" "tf_weapon_lunchbox_drink" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_Unique_EnergyDrink_CritCola" - "item_description" "#TF_Unique_EnergyDrink_CritCola_Desc" - "anim_slot" "ITEM1" - "item_slot" "secondary" - "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_critcola" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "skin" "2" - "custom_particlesystem" - { - "system" "energydrink_cola_splash" - } - "sound_deploy" "Scout.DodgeCanOpen" - } - "attributes" - { - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_soda_can_pickup.wav" - "drop_sound" "ui/item_soda_can_drop.wav" - } - "164" - { - "name" "Employee Badge A" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_A" - "item_description" "#TF_Employee_Badge_A_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_gold" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "15" - "max_ilevel" "15" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "0" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "165" - { - "name" "Employee Badge B" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_B" - "item_description" "#TF_Employee_Badge_B_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_silver" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "1" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "166" - { - "name" "Employee Badge C" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_C" - "item_description" "#TF_Employee_Badge_C_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_bronze" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "2" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "169" - { - "name" "The Golden Wrench" - "item_class" "tf_weapon_wrench" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Unique_Golden_Wrench" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "25" - "max_ilevel" "25" - "propername" "0" - "attach_to_hands" "1" - "item_logname" "wrench_golden" - "item_iconname" "wrench_golden" - "image_inventory" "backpack/weapons/c_models/c_wrench/gold_wrench" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_wrench/c_wrench.mdl" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "material_override" "models/weapons/c_items/gold_wrench.vmt" - } - "attributes" - { - "turn to gold" - { - "attribute_class" "set_turn_to_gold" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "ammo_metal" "1" - "only_on_wrench" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "170" - { - "name" "Employee Badge Plat" - "capabilities" - { - "nameable" "1" - } - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Employee_Badge_Plat" - "item_description" "#TF_Employee_Badge_Plat_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/id_badge_platinum" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/id_badge.mdl" - "min_ilevel" "20" - "max_ilevel" "20" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "custom employee number" - { - "attribute_class" "set_employee_number" - "force_gc_to_generate" "1" - "use_custom_logic" "employee_number" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "3" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "171" - { - "name" "The Tribalman's Shiv" - "item_class" "tf_weapon_club" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "tribalkukri" - "item_iconname" "tribalkukri" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Club" - "item_name" "#TF_Unique_TribalmanKukri" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_wood_machete/c_wood_machete" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_wood_machete/c_wood_machete.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "bleeding duration" - { - "attribute_class" "bleeding_duration" - "value" "6" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.5" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "172" - { - "name" "The Scotsman's Skullcutter" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "battleaxe" - "item_iconname" "battleaxe" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Axe" - "item_name" "#TF_Unique_BattleAxe" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_battleaxe/c_battleaxe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "model_player" "models/weapons/c_models/c_battleaxe/c_battleaxe.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.2" - } - "move speed penalty" - { - "attribute_class" "mult_player_movespeed" - "value" "0.85" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "173" - { - "name" "The Vita-Saw" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "battleneedle" - "item_iconname" "battleneedle" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Unique_BattleSaw" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_uberneedle/c_uberneedle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_uberneedle/c_uberneedle.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "medic" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "attributes" - { - "preserve ubercharge" - { - "attribute_class" "preserve_ubercharge" - "value" "20" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-10" - } - } - "visuals" - { - "sound_taunt" "Taunt.MedicViolinUber" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "174" - { - "name" "Scout Whoopee Cap" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScoutWhoopee" - "item_description" "#TF_ScoutWhoopee_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/scout_whoopee" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/scout_whoopee.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "175" - { - "name" "Pyro Monocle" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroMonocle" - "item_description" "#TF_PyroMonocle_Desc" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_monocle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_monocle.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "177" - { - "name" "Medic Goggles" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MedicGoggles" - "item_description" "#TF_MedicGoggles_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_goggles" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_goggles.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_nvg_pickup.wav" - } - "178" - { - "name" "Engineer Earmuffs" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_EngineerEarmuffs" - "item_description" "#TF_EngineerEarmuffs_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engy_earphones" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engy_earphones.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - } - "179" - { - "name" "Demoman Tricorne" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemomanTricorne" - "item_description" "#TF_DemomanTricorne_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_tricorne" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_tricorne.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "180" - { - "name" "Spy Beret" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SpyBeret" - "item_description" "#TF_SpyBeret_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_beret" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_beret.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "181" - { - "name" "Sniper Fishing Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SniperFishingHat" - "item_description" "#TF_SniperFishingHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/sniper_fishinghat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/sniper_fishinghat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "182" - { - "name" "Pyro Helm" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroHelm" - "item_description" "#TF_PyroHelm_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_pyrolean" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_pyrolean.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "183" - { - "name" "Soldier Drill Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierDrillHat" - "item_description" "#TF_SoldierDrillHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_sargehat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_sargehat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "184" - { - "name" "Medic Gatsby" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MedicGatsby" - "item_description" "#TF_MedicGatsby_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_gatsby" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_gatsby.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "185" - { - "name" "Heavy Do-rag" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyDorag" - "item_description" "#TF_HeavyDorag_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_bandana" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_bandana.mdl" - "drop_type" "none" - "propername" "1" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "189" - { - "name" "Parasite Hat" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Parasite_Hat" - "item_description" "#TF_Parasite_Hat_Desc" - "item_slot" "head" - "image_inventory" "backpack/player/items/all_class/parasite_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/parasite_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_as_parasite_pickup.wav" - "drop_sound" "ui/item_as_parasite_drop.wav" - } - "213" - { - "name" "The Attendant" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "craft_class" "hat" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheAttendant" - "item_description" "#TF_TheAttendant_Desc" - "item_slot" "head" - "item_quality" "unique" - "propername" "1" - "image_inventory" "backpack/player/items/pyro/attendant" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/attendant.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "item_set" "polycount_pyro" - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "214" - { - "name" "The Powerjack" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "powerjack" - "item_iconname" "powerjack" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SledgeHammer" - "item_name" "#TF_ThePowerjack" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_powerjack/c_powerjack" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_powerjack/c_powerjack.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "heal on kill" - { - "attribute_class" "heal_on_kill" - "value" "75" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.25" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "item_set" "polycount_pyro" - } - "215" - { - "name" "The Degreaser" - "item_class" "tf_weapon_flamethrower" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "degreaser" - "item_iconname" "degreaser" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Flamethrower" - "item_name" "#TF_TheDegreaser" - "item_slot" "primary" - "image_inventory" "backpack/weapons/c_models/c_degreaser/c_degreaser" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_degreaser/c_degreaser.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "attributes" - { - "deploy time decreased" - { - "attribute_class" "mult_deploy_time" - "value" "0.35" - } - "weapon burn dmg reduced" - { - "attribute_class" "mult_wpn_burndmg" - "value" "0.75" - } - } - "visuals" - { - "sound_single_shot" "Weapon_Degreaser.FireStart" - "sound_special1" "Weapon_Degreaser.FireLoop" - "sound_burst" "Weapon_Degreaser.FireLoopCrit" - "sound_special3" "Weapon_Degreaser.FireEnd" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "item_set" "polycount_pyro" - } - "216" - { - "name" "Rimmed Raincatcher" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemomanPirate" - "item_description" "#TF_DemomanPirate_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/drinking_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/drinking_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "219" - { - "name" "The Milkman" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheMilkman" - "item_description" "#TF_TheMilkman_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/milkhat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/milkhat.mdl" - "drop_type" "drop" - "propername" "1" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "item_set" "polycount_scout" - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "220" - { - "name" "The Shortstop" - "item_class" "tf_weapon_handgun_scout_primary" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Peppergun" - "item_description" "#TF_TheShortstop_Desc" - "item_name" "#TF_TheShortstop" - "item_slot" "primary" - "anim_slot" "secondary" - "item_quality" "unique" - "item_logname" "short_stop" - "item_iconname" "short_stop" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_shortstop/c_shortstop" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shortstop/c_shortstop.mdl" - "attach_to_hands" "1" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - } - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Short_Stop.Single" - "sound_burst" "Weapon_Short_Stop.Single" - "muzzle_flash" "muzzle_bignasty" - "tracer_effect" "bullet_bignasty_tracer01" - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_SECONDARY_VM_IDLE_2" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_SECONDARY_VM_DRAW_2" - } - "animation" - { - "activity" "ACT_VM_PRIMARYATTACK" - "replacement" "ACT_SECONDARY_VM_PRIMARYATTACK_2" - } - "animation" - { - "activity" "ACT_VM_RELOAD" - "replacement" "ACT_SECONDARY_VM_RELOAD_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND" - "replacement" "ACT_MP_RELOAD_STAND_SECONDARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH" - "replacement" "ACT_MP_RELOAD_CROUCH_SECONDARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_SWIM" - "replacement" "ACT_MP_RELOAD_SWIM_SECONDARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK" - "replacement" "ACT_MP_RELOAD_AIRWALK_SECONDARY_2" - } - "animation_replacement" - { - "ACT_VM_IDLE" "ACT_SECONDARY_VM_IDLE_2" - "ACT_VM_DRAW" "ACT_SECONDARY_VM_DRAW_2" - "ACT_VM_PRIMARYATTACK" "ACT_SECONDARY_VM_PRIMARYATTACK_2" - "ACT_VM_RELOAD" "ACT_SECONDARY_VM_RELOAD_2" - "ACT_MP_RELOAD_STAND" "ACT_MP_RELOAD_STAND_SECONDARY_2" - "ACT_MP_RELOAD_CROUCH" "ACT_MP_RELOAD_CROUCH_SECONDARY_2" - "ACT_MP_RELOAD_SWIM" "ACT_MP_RELOAD_SWIM_SECONDARY_2" - "ACT_MP_RELOAD_AIRWALK" "ACT_MP_RELOAD_AIRWALK_SECONDARY_2" - } - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - "item_set" "polycount_scout" - } - "221" - { - "name" "The Holy Mackerel" - "item_class" "tf_weapon_bat_fish" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Fish" - "item_name" "#TF_TheHolyMackerel" - "item_description" "#TF_TheHolyMackerel_Desc" - "item_logname" "holy_mackerel" - "item_slot" "melee" - "item_quality" "unique" - "item_logname" "holy_mackerel" - "item_iconname" "holy_mackerel" - "propername" "0" - "min_ilevel" "42" - "max_ilevel" "42" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_holymackerel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_holymackerel.mdl" - "used_by_classes" - { - "scout" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" - "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" - } - "mouse_pressed_sound" "ui/item_gooey_pickup.wav" - "drop_sound" "ui/item_gooey_pickup.wav" - "item_set" "polycount_scout" - } - "222" - { - "name" "Mad Milk" - "item_class" "tf_weapon_jar_milk" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Jar_Milk" - "item_description" "#TF_MadMilk_Desc" - "item_name" "#TF_MadMilk" - "item_slot" "secondary" - "item_quality" "unique" - "anim_slot" "item1" - "min_ilevel" "5" - "max_ilevel" "5" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_madmilk/c_madmilk" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_madmilk/c_madmilk.mdl" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "skin" "2" - "custom_particlesystem" - { - "system" "energydrink_milk_splash" - } - "sound_deploy" "Weapon_MadMilk.Draw" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_bottle_pickup.wav" - "drop_sound" "ui/item_bottle_drop.wav" - "item_set" "polycount_scout" - } - "223" - { - "name" "The Familiar Fez" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheFamiliarFez" - "item_description" "#TF_TheFamiliarFez_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/fez" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/fez.mdl" - "drop_type" "drop" - "item_set" "polycount_spy" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "224" - { - "name" "L'Etranger" - "item_class" "tf_weapon_revolver" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Revolver" - "item_name" "#TF_LEtranger" - "item_slot" "secondary" - "item_quality" "unique" - "propername" "0" - "item_logname" "letranger" - "item_iconname" "letranger" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_letranger/c_letranger" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_letranger/c_letranger.mdl" - "attach_to_hands" "1" - "item_set" "polycount_spy" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - "attributes" - { - "add cloak on hit" - { - "attribute_class" "add_cloak_on_hit" - "value" "15" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.8" - } - } - "visuals" - { - "sound_single_shot" "Weapon_Letranger.Single" - "sound_burst" "Weapon_Letranger.SingleCrit" - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - } - "225" - { - "name" "Your Eternal Reward" - "item_class" "tf_weapon_knife" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Knife" - "item_name" "#TF_EternalReward" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "item_logname" "eternal_reward" - "item_iconname" "eternal_reward" - "image_inventory" "backpack/weapons/c_models/c_eternal_reward/c_eternal_reward" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "attach_to_hands" "1" - "model_player" "models/weapons/c_models/c_eternal_reward/c_eternal_reward.mdl" - "item_set" "polycount_spy" - "used_by_classes" - { - "spy" "1" - } - "visuals" - { - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_ITEM2_VM_DRAW" - } - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_ITEM2_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_HITCENTER" - "replacement" "ACT_ITEM2_VM_HITCENTER" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_ITEM2_VM_SWINGHARD" - } - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "226" - { - "name" "The Battalion's Backup" - "item_class" "tf_weapon_buff_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Battle_Banner" - "item_name" "#TF_TheBattalionsBackup" - "item_description" "#TF_TheBattalionsBackup_Desc" - "item_slot" "secondary" - "anim_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_battalion_buffpack/c_batt_buffpack" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_battalion_bugle/c_battalion_bugle.mdl" - "attach_to_hands" "1" - "extra_wearable" "models/weapons/c_models/c_battalion_buffpack/c_batt_buffpack.mdl" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "item_set" "polycount_soldier" - "mouse_pressed_sound" "ui/item_pack_pickup.wav" - "drop_sound" "ui/item_pack_drop.wav" - "attributes" - { - "mod soldier buff type" - { - "attribute_class" "set_buff_type" - "value" "2" - } - } - } - "227" - { - "name" "The Grenadier's Softcap" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TheGrenadiersSoftcap" - "item_description" "#TF_TheGrenadiersSoftcap_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/grenadier_softcap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/grenadier_softcap.mdl" - "drop_type" "drop" - "item_set" "polycount_soldier" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "228" - { - "name" "The Black Box" - "item_class" "tf_weapon_rocketlauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "blackbox" - "item_iconname" "blackbox" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_TheBlackBox" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_blackbox/c_blackbox" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_blackbox/c_blackbox.mdl" - "attach_to_hands" "1" - "item_set" "polycount_soldier" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "heal on hit for rapidfire" - { - "attribute_class" "add_onhit_addhealth" - "value" "15" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.75" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_RPG_BlackBox.Single" - "sound_burst" "Weapon_RPG_BlackBox.SingleCrit" - "animation" - { - "activity" "ACT_VM_RELOAD" - "replacement" "ACT_PRIMARY_VM_RELOAD_2" - } - "animation" - { - "activity" "ACT_RELOAD_START" - "replacement" "ACT_PRIMARY_RELOAD_START_2" - } - "animation" - { - "activity" "ACT_RELOAD_FINISH" - "replacement" "ACT_PRIMARY_RELOAD_FINISH_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND_LOOP" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND_END" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_END_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_STAND_LOOP" - "replacement" "ACT_MP_RELOAD_STAND_PRIMARY_LOOP_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH" - "replacement" "ACT_MP_RELOAD_CROUCH_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH_END" - "replacement" "ACT_MP_RELOAD_CROUCH_PRIMARY_END_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_CROUCH_LOOP" - "replacement" "ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK" - "replacement" "ACT_MP_RELOAD_AIRWALK_PRIMARY_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK_END" - "replacement" "ACT_MP_RELOAD_AIRWALK_PRIMARY_END_2" - } - "animation" - { - "activity" "ACT_MP_RELOAD_AIRWALK_LOOP" - "replacement" "ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP_2" - } - "muzzle_flash" "" - "tracer_effect" "" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "229" - { - "name" "Ol' Snaggletooth" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_OlSnaggletooth" - "item_description" "#TF_OlSnaggletooth_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/snaggletooth" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/snaggletooth.mdl" - "drop_type" "drop" - "item_set" "polycount_sniper" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_leather_pickup.wav" - "drop_sound" "ui/item_leather_pickup.wav" - } - "230" - { - "name" "The Sydney Sleeper" - "item_class" "tf_weapon_sniperrifle" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "sydney_sleeper" - "item_iconname" "sydney_sleeper" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_SniperRifle" - "item_name" "#TF_SydneySleeper" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_dartgun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_dartgun.mdl" - "attach_to_hands" "1" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - } - "visuals" - { - "show_player_bodygroup_name" "bullets" - "sound_single_shot" "Weapon_SydneySleeper.Single" - "sound_burst" "Weapon_SydneySleeper.SingleCrit" - "muzzle_flash" "muzzle_sniperrifle" - "tracer_effect" "bullet_tracer01" - } - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "item_set" "polycount_sniper" - "brass_eject_model" "" // Disabled - "attributes" - { - "sniper no headshots" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "jarate duration" - { - "attribute_class" "jarate_duration" - "value" "8" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - } - "231" - { - "name" "Darwin's Danger Shield" - "item_class" "tf_wearable_item" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Shield" - "item_name" "#TF_DarwinsDangerShield" - "item_slot" "secondary" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/sniper/croc_shield" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/croc_shield.mdl" - "extra_wearable" "models/player/items/sniper/croc_shield.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "max health additive bonus" - { - "attribute_class" "add_maxhealth" - "value" "25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - } - "mouse_pressed_sound" "ui/item_leather_pickup.wav" - "drop_sound" "ui/item_leather_pickup.wav" - "item_set" "polycount_sniper" - } - "232" - { - "name" "The Bushwacka" - "item_class" "tf_weapon_club" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "bushwacka" - "item_iconname" "bushwacka" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Club" - "item_name" "#TF_TheBushwacka" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_croc_knife/c_croc_knife" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_croc_knife/c_croc_knife.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "minicrits become crits" - { - "attribute_class" "minicrits_become_crits" - "value" "1" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "1.2" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "item_set" "polycount_sniper" - } - "233" - { - "name" "Gift - 1 Player" - "item_class" "tf_wearable_item" - "tool" - { - "type" "gift" - "usage" - { - "loot_list" "gift_standard_1_loot_list" - "num_items" "1" - "max_recipients" "1" - } - } - "capabilities" - { - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action gift_1" - "item_type_name" "#TF_Gift" - "item_name" "#TF_Gift_RandomPerson" - "item_description" "#TF_Gift_RandomPerson_Desc" - "item_slot" "action" - "image_inventory" "backpack/crafting/gift_single" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "234" - { - "name" "Gift - 24 Players" - "item_class" "tf_wearable_item" - "tool" - { - "type" "gift" - "usage" - { - // give out up to 23 gifts (we want to encourage servers of 24 people and the player giving the gift will not get a gift from themselves) - "loot_list" "gift_standard_24_loot_list" - "num_items" "1" - "max_recipients" "23" - } - } - "capabilities" - { - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action gift_24" - "item_type_name" "#TF_Gift" - "item_name" "#TF_Gift_EntireServer" - "item_description" "#TF_Gift_EntireServer_Desc" - "item_slot" "action" - "image_inventory" "backpack/crafting/gift_multiple" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "" - "min_ilevel" "23" - "max_ilevel" "23" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "237" - { - "name" "Rocket Jumper" - "item_class" "tf_weapon_rocketlauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Weapon_RocketLauncher_Jump" - "item_description" "#TF_Weapon_RocketLauncher_Jump_Desc" - "item_slot" "primary" - "item_quality" "unique" - "baseitem" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "propername" "0" - "image_inventory" "backpack/weapons/c_models/c_rocketjumper/c_rocketjumper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rocketjumper/c_rocketjumper.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0" - } - "no self blast dmg" - { - "attribute_class" "no_self_blast_dmg" - "value" "1" - } - "maxammo primary increased" - { - "attribute_class" "mult_maxammo_primary" - "value" "3.0" - } - "dmg taken from blast increased" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "2" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "2" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "2" - } - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - } - "239" - { - "name" "Gloves of Running Urgently" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_Unique_Gloves_of_Running_Urgently" - "item_slot" "melee" - "item_logname" "gloves_running_urgently" - "item_iconname" "gloves_running_urgently" - "image_inventory" "backpack/weapons/c_models/c_boxing_gloves_urgency/c_boxing_gloves_urgency" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "move speed bonus" - { - "attribute_class" "mult_player_movespeed" - "value" "1.3" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.5" - } - "provide on active" - { - "attribute_class" "provide_on_active" - "value" "1" - } - "active health degen" - { - "attribute_class" "active_item_health_regen" - "value" "-6" - } - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - } - "hide_bodygroups_deployed_only" "1" - "visuals" - { - "hide_player_bodygroup_name" "hands" - "sound_melee_miss" "Weapon_BoxingGloves.Miss" - "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" - "sound_burst" "Weapon_BoxingGloves.MissCrit" - } - "visuals_red" - { - "skin" "2" - } - "visuals_blu" - { - "skin" "3" - } - "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" - "drop_sound" "ui/item_boxing_gloves_drop.wav" - } - "240" - { - "name" "Worms Gear" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Worms_Gear" - "item_description" "#TF_Worms_Gear_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/worms_gear" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/worms_gear.mdl" - "drop_type" "none" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "grenades" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "241" - { - "name" "Duel MiniGame" - "item_class" "tf_wearable_item" - "tool" - { - "type" "duel_minigame" - } - "capabilities" - { - "usable_gc" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_UsableItem" - "item_name" "#TF_Usable_Duel" - "item_description" "#TF_Usable_Duel_Desc" - "item_slot" "action" - "image_inventory" "backpack/player/items/crafting/icon_dueling" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "model_player" "" - "min_ilevel" "5" - "max_ilevel" "5" - "armory_desc" "action duel" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_dueling_pistols_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - - // dueling badges - "242" - { - "name" "Duel Medal Bronze" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Bronze" - "item_description" "#TF_Duel_Medal_Bronze_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_bronze" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "1" - "max_ilevel" "1" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "2" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "243" - { - "name" "Duel Medal Silver" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Silver" - "item_description" "#TF_Duel_Medal_Silver_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_silver" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "25" - "max_ilevel" "25" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "1" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "244" - { - "name" "Duel Medal Gold" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Gold" - "item_description" "#TF_Duel_Medal_Gold_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_gold" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "50" - "max_ilevel" "50" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "0" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - "245" - { - "name" "Duel Medal Plat" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Duel_Medal_Plat" - "item_description" "#TF_Duel_Medal_Plat_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/dueling_medal_platinum" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/dueling_medal.mdl" - "min_ilevel" "75" - "max_ilevel" "75" - "armory_desc" "duel_medal" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "skin" "3" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - - // HAT STORM - - "246" - { - "name" "Pugilist's Protector" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyPugilistProtector" - "item_description" "#TF_HeavyPugilistProtector_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/pugilist_protector" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/pugilist_protector.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "247" - { - "name" "Old Guadalajara" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroFiestaSombrero" - "item_description" "#TF_PyroFiestaSombrero_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/fiesta_sombrero" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/fiesta_sombrero.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "248" - { - "name" "Napper's Respite" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroBeanie" - "item_description" "#TF_PyroBeanie_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_beanie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_beanie.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "249" - { - "name" "Bombing Run" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScoutBombingRun" - "item_description" "#TF_ScoutBombingRun_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/pilot_protector" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/pilot_protector.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "250" - { - "name" "Chieftain's Challenge" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierChiefRocketeer" - "item_description" "#TF_SoldierChiefRocketeer_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/chief_rocketeer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/chief_rocketeer.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "251" - { - "name" "Stout Shako" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_SoldierShako" - "item_description" "#TF_SoldierShako_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_shako" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_shako.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "252" - { - "name" "Dr's Dapper Topper" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Seuss" - "item_description" "#TF_Seuss_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/dappertopper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/dappertopper.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "253" - { - "name" "Handyman's Handle" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyroPlunger" - "item_description" "#TF_PyroPlunger_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_plunger" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_plunger.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "254" - { - "name" "Hard Counter" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_HeavyUmbrella" - "item_description" "#TF_HeavyUmbrella_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_umbrella" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_umbrella.mdl" - "drop_type" "drop" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_umbrella_pickup.wav" - "drop_sound" "ui/item_umbrella_pickup.wav" - } - "255" - { - "name" "Sober Stuntman" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemoStuntHelmet" - "item_description" "#TF_DemoStuntHelmet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/stunt_helmet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/stunt_helmet.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "259" - { - "name" "Carouser's Capotain" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DemoInquisitor" - "item_description" "#TF_DemoInquisitor_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/inquisitor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/inquisitor.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - - "260" - { - "name" "Wiki Cap" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_WikiCap" - "item_description" "#TF_WikiCap_Desc" - "item_slot" "head" - "image_inventory" "backpack/player/items/all_class/wikicap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/wikicap.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "261" - { - "name" "Mann Co. Cap" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "paintable" "1" - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_MannCoCap" - "item_description" "#TF_MannCoCap_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_manncap" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_cap.mdl" - "sniper" "models/player/items/sniper/sniper_cap.mdl" - "soldier" "models/player/items/soldier/soldier_cap.mdl" - "demoman" "models/player/items/demo/demo_cap.mdl" - "medic" "models/player/items/medic/medic_cap.mdl" - "heavy" "models/player/items/heavy/heavy_cap.mdl" - "spy" "models/player/items/spy/spy_cap.mdl" - "engineer" "models/player/items/engineer/engineer_cap.mdl" - "pyro" "models/player/items/pyro/pyro_cap.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "262" - { - "name" "Polycount Pin" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Polycount_Pin" - "item_description" "#TF_Polycount_Pin_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/polypack_badge" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "model_player" "models/player/items/all_class/polypack_badge.mdl" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - } - - "263" - { - "name" "Ellis Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_EllisHat" - "item_description" "#TF_EllisHat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_ellis" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_ellis.mdl" - "sniper" "models/player/items/sniper/sniper_ellis.mdl" - "soldier" "models/player/items/soldier/soldier_ellis.mdl" - "demoman" "models/player/items/demo/demo_ellis.mdl" - "medic" "models/player/items/medic/medic_ellis.mdl" - "heavy" "models/player/items/heavy/heavy_ellis.mdl" - "spy" "models/player/items/spy/spy_ellis.mdl" - "engineer" "models/player/items/engineer/engineer_ellis.mdl" - "pyro" "models/player/items/pyro/pyro_ellis.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "264" - { - "name" "Frying Pan" - "item_class" "tf_weapon_fryingpan" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "item_logname" "fryingpan" - "item_iconname" "fryingpan" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_FryingPan" - "item_name" "#TF_Unique_FryingPan" - "item_slot" "melee" - "image_inventory" "backpack/player/items/all_class/all_pan" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_frying_pan/c_frying_pan.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "soldier" "1" - "pyro" "1" - "demoman" "1" - "heavy" "1" - "engineer" "1" - "medic" "1" - "sniper" "1" - "spy" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_melee_hit" "FryingPan.HitFlesh" - "sound_melee_hit_world" "FryingPan.HitWorld" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "265" - { - "name" "Stickybomb Jumper" - "item_class" "tf_weapon_pipebomblauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#Tf_Weapon_Pipebomblauncher" - "item_name" "#TF_Weapon_StickyBomb_Jump" - "item_description" "#TF_Weapon_StickyBomb_Jump_Desc" - "item_slot" "primary" - "item_quality" "unique" - "baseitem" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "propername" "0" - "image_inventory" "backpack/weapons/w_models/w_stickybomb_launcher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_sticky_jumper/c_sticky_jumper.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0" - } - "no self blast dmg" - { - "attribute_class" "no_self_blast_dmg" - "value" "1" - } - "maxammo secondary increased" - { - "attribute_class" "mult_maxammo_secondary" - "value" "3.0" - } - "dmg taken from blast increased" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "2" - } - "dmg taken from bullets increased" - { - "attribute_class" "mult_dmgtaken_from_bullets" - "value" "2" - } - "dmg taken from fire increased" - { - "attribute_class" "mult_dmgtaken_from_fire" - "value" "2" - } - - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - } - "266" - { - "name" "The Horseless Headless Horseman's Headtaker" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Axe" - "item_name" "#TF_HalloweenBoss_Axe" - "item_description" "#TF_HalloweenBoss_Axe_Desc" - "item_slot" "melee" - "item_quality" "rarity4" - "item_logname" "headtaker" - "item_iconname" "headtaker" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_headtaker/c_headtaker" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_headtaker/c_headtaker.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - - "267" - { - "name" "Haunted Metal Scrap" - "item_class" "craft_item" - "craft_class" "craft_bar" - "capabilities" - { - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#TF_Haunted_Metal" - "item_description" "#TF_Haunted_Metal_Desc" - "image_inventory" "backpack/crafting/haunted_metal" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "rarity4" - "min_ilevel" "4" - "max_ilevel" "4" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - - "268" - { - "name" "Halloween Mask - Scout" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Scout" - "item_description" "#TF_Halloween_Mask_Scout_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "image_inventory" "backpack/player/items/all_class/halloween_bag_scout" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "model_player_per_class" - { - "scout" "models/player/items/all_class/halloween_bag_scout_scout.mdl" - "sniper" "models/player/items/all_class/halloween_bag_scout_sniper.mdl" - "soldier" "models/player/items/all_class/halloween_bag_scout_soldier.mdl" - "demoman" "models/player/items/all_class/halloween_bag_scout_demo.mdl" - "medic" "models/player/items/all_class/halloween_bag_scout_medic.mdl" - "heavy" "models/player/items/all_class/halloween_bag_scout_demo.mdl" - "spy" "models/player/items/all_class/halloween_bag_scout_spy.mdl" - "engineer" "models/player/items/all_class/halloween_bag_scout_engineer.mdl" - "pyro" "models/player/items/all_class/halloween_bag_scout_pyro.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "269" - { - "name" "Halloween Mask - Sniper" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Sniper" - "item_description" "#TF_Halloween_Mask_Sniper_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_sniper.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_sniper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "270" - { - "name" "Halloween Mask - Soldier" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Soldier" - "item_description" "#TF_Halloween_Mask_Soldier_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_soldier.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "271" - { - "name" "Halloween Mask - Demoman" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Demoman" - "item_description" "#TF_Halloween_Mask_Demoman_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_demo.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_demo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "272" - { - "name" "Halloween Mask - Medic" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Medic" - "item_description" "#TF_Halloween_Mask_Medic_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_medic.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_medic" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "273" - { - "name" "Halloween Mask - Heavy" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Heavy" - "item_description" "#TF_Halloween_Mask_Heavy_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_heavy.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "274" - { - "name" "Halloween Mask - Spy" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Spy" - "item_description" "#TF_Halloween_Mask_Spy_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_spy.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_spy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "275" - { - "name" "Halloween Mask - Engineer" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Engineer" - "item_description" "#TF_Halloween_Mask_Engineer_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_engineer.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_engineer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "276" - { - "name" "Halloween Mask - Pyro" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_Pyro" - "item_description" "#TF_Halloween_Mask_Pyro_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_pyro.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "holiday_restriction" "halloween" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "277" - { - "name" "Halloween Mask - Saxton Hale" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Mask_SaxtonHale" - "item_description" "#TF_Halloween_Mask_SaxtonHale_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/halloween_bag_saxton.mdl" - "image_inventory" "backpack/player/items/all_class/halloween_bag_saxton" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "use_per_class_bodygroups" "1" - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - - "278" - { - "name" "Horseless Headless Horseman's Head" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Head" - "item_description" "#TF_Halloween_Head_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/pumkin_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/pumkin_hat.mdl" - "drop_type" "none" - "holiday_restriction" "halloween" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_default_pickup.wav" - "drop_sound" "ui/item_default_drop.wav" - } - "279" - { - "name" "Ghastly Gibus 2010" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "paintable" "1" - "nameable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Domination_Hat_2010" - "item_description" "#TF_Domination_Hat_2010_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/all_domination" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/all_domination.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2010" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "280" - { - "name" "Halloween Noise Maker - Black Cat" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_BlackCat" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_cat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.BlackCat" - } - "mouse_pressed_sound" "Halloween.BlackCat" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "281" - { - "name" "Halloween Noise Maker - Gremlin" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Gremlin" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_gremlin" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Gremlin" - } - "mouse_pressed_sound" "Halloween.Gremlin" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "282" - { - "name" "Halloween Noise Maker - Werewolf" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Werewolf" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_wolf" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Werewolf" - } - "mouse_pressed_sound" "Halloween.Werewolf" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "283" - { - "name" "Halloween Noise Maker - Witch" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Witch" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_witch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Witch" - } - "mouse_pressed_sound" "Halloween.Witch" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "284" - { - "name" "Halloween Noise Maker - Banshee" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Banshee" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_banshee" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Banshee" - } - "mouse_pressed_sound" "Halloween.Banshee" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "286" - { - "name" "Halloween Noise Maker - Crazy Laugh" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_CrazyLaugh" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_laugh" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.CrazyLaugh" - } - "mouse_pressed_sound" "Halloween.CrazyLaugh" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "287" - { - "name" "Spine-Chilling Skull" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "haunted_hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Skullcap" - "item_description" "#TF_Halloween_Skullcap_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/skull" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/skull.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "attributes" - { - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2010" - } - } - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "288" - { - "name" "Halloween Noise Maker - Stabby" - "item_class" "tf_wearable_item" - "tool" - { - "type" "noise_maker" - } - "capabilities" - { - "usable" "1" - "usable_gc" "1" - } - "show_in_armory" "1" - "armory_desc" "action noisemaker" - "item_type_name" "#TF_Party_Favor" - "item_name" "#TF_NoiseMaker_Stabby" - "item_slot" "action" - "image_inventory" "backpack/crafting/noisemaker_stabby" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "noise maker" - { - "attribute_class" "enable_misc2_noisemaker" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "visuals" - { - "custom_sound0" "Halloween.Stabby" - } - "mouse_pressed_sound" "Halloween.Stabby" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "289" - { - "name" "Voodoo Juju" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "haunted_hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Halloween_Voodoo" - "item_description" "#TF_Halloween_Voodoo_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/voodoojuju_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/voodoojuju_hat.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "attributes" - { - "halloween item" - { - "attribute_class" "halloween_item" - "value" "2010" - } - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "290" - { - "name" "Cadaver's Cranium" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Cadavers_Cranium" - "item_description" "#TF_Cadavers_Cranium_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/heavy/cadavers_cranium" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/cadavers_cranium.mdl" - "drop_type" "none" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "291" - { - "name" "Horrific Headsplitter" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_Horrific_Headsplitter" - "item_description" "#TF_Horrific_Headsplitter_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "31" - "max_ilevel" "31" - "image_inventory" "backpack/player/items/all_class/headsplitter" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/headsplitter.mdl" - "drop_type" "none" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "292" - { - "name" "Poker Visor" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name""#TF_Wearable_Hat" - "item_name" "#TF_TTG_PokerVisor" - "item_description" "#TF_TTG_PokerVisor_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "image_inventory" "backpack/player/items/heavy/ttg_visor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/ttg_visor.mdl" - "drop_type" "none" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - - "294" - { - "name" "TTG Max Pistol - Poker Night" - "item_class" "tf_weapon_pistol" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "0" - "item_type_name" "#TF_Weapon_Pistol" - "item_name" "#TF_TTG_MaxGun" - "item_description" "#TF_TTG_MaxGun_Desc" - "item_slot" "secondary" - "item_logname" "maxgun" - "item_iconname" "maxgun" - "image_inventory" "backpack/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "scout" "1" - "engineer" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "ammo_metal" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "295" - { - "name" "TTG Glasses" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Glasses" - "item_name" "#TF_TTG_Glasses" - "item_description" "#TF_TTG_Glasses_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/demo/ttg_glasses" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "model_player" "models/player/items/demo/ttg_glasses.mdl" - "drop_type" "none" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "296" - { - "name" "TTG Badge" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_TTG_Badge" - "item_description" "#TF_TTG_Badge_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/ttg_badge" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "model_player" "models/player/items/all_class/ttg_badge.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "297" - { - "name" "TTG Watch" - "item_class" "tf_weapon_invis" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Watch" - "item_name" "#TF_TTG_Watch" - "item_slot" "pda2" - "anim_slot" "FORCE_NOT_USED" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_ttg_watch/c_ttg_watch" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/v_models/v_ttg_watch_spy.mdl" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_watch_pickup.wav" - "drop_sound" "ui/item_watch_drop.wav" - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "298" - { - "name" "Iron Curtain" - "item_class" "tf_weapon_minigun" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Iron_Curtain" - "item_slot" "primary" - "item_logname" "iron_curtain" - "item_iconname" "iron_curtain" - "image_inventory" "backpack/weapons/c_models/c_iron_curtain/c_iron_curtain" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_iron_curtain/c_iron_curtain.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "299" - { - "name" "Portal 2 Pin" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Badge" - "item_name" "#TF_Portal2_Pin" - "item_description" "#TF_Portal2_Pin_Desc" - "item_slot" "misc" - "image_inventory" "backpack/player/items/all_class/p2_pin" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "model_player" "models/player/items/all_class/p2_pin.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - } - "303" - { - "name" "Berliner's Bucket Helm" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BerlinersBucketHelm" - "item_description" "#TF_BerlinersBucketHelm_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/berliners_bucket_helm" - "image_inventory_size_w""128" - "image_inventory_size_h""82" - "model_player" "models/player/items/medic/berliners_bucket_helm.mdl" - "drop_type" "drop" - "propername" "0" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "304" - { - "name" "The Amputator" - "item_class" "tf_weapon_bonesaw" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "amputator" - "item_iconname" "amputator" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bonesaw" - "item_name" "#TF_Amputator" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_amputator/c_amputator" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_amputator/c_amputator.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "15" - "max_ilevel" "15" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "enables aoe heal" - { - "attribute_class" "enables_aoe_heal" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "visuals" - { - "custom_sound1" "Weapon_UberSaw.HitFlesh" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "item_set" "medieval_medic" - } - "305" - { - "name" "The Crusader's Crossbow" - "item_class" "tf_weapon_crossbow" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_type_name" "#TF_Weapon_Crossbow" - "item_name" "#TF_CrusadersCrossbow" - "item_logname" "crusaders_crossbow" - "item_iconname" "crusaders_crossbow" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "15" - "max_ilevel" "15" - "image_inventory" "backpack/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "fires healing bolts" - { - "attribute_class" "fires_healing_bolts" - "value" "1" - } - "sniper no headshots" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "maxammo primary reduced" - { - "attribute_class" "mult_maxammo_primary" - "value" "0.25" - } - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - "item_set" "medieval_medic" - } - "306" - { - "name" "Scotch Bonnet" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ScotchBonnet" - "item_description" "#TF_ScotchBonnet_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/demo_scotchbonnet" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/demo_scotchbonnet.mdl" - "drop_type" "drop" - "propername" "0" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "307" - { - "name" "The Ullapool Caber" - "item_class" "tf_weapon_stickbomb" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_StickBomb" - "item_name" "#TF_UllapoolCaber" - "item_description" "#TF_UllapoolCaber_Desc" - "item_logname" "ullapool_caber" - "item_iconname" "ullapool_caber" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_caber/c_caber" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_caber/c_caber.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "item_set" "experts_ordnance" - } - "308" - { - "name" "The Loch-n-Load" - "item_class" "tf_weapon_grenadelauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "loch_n_load" - "item_iconname" "loch_n_load" - "item_type_name" "#TF_Weapon_GrenadeLauncher" - "item_name" "#TF_LochNLoad" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_lochnload/c_lochnload" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_lochnload/c_lochnload.mdl" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.4" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.1" - } - "Projectile speed increased" - { - "attribute_class" "mult_projectile_speed" - "value" "1.25" - } - "blast dmg to self increased" - { - "attribute_class" "blast_dmg_to_self" - "value" "1.25" - } - } - "visuals" - { - "animation" - { - "activity" "ACT_VM_RELOAD" - "replacement" "ACT_PRIMARY_VM_RELOAD_2" - } - "animation" - { - "activity" "ACT_VM_RELOAD_START" - "replacement" "ACT_PRIMARY_VM_RELOAD_START_2" - } - "animation" - { - "activity" "ACT_VM_RELOAD_FINISH" - "replacement" "ACT_PRIMARY_VM_RELOAD_FINISH_2" - } - "muzzle_flash" "muzzle_revolver" - "tracer_effect" "bullet_tracer01" - } - "item_set" "experts_ordnance" - } - "309" - { - "name" "Big Chief" - "loadondemand" "1" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BigChief" - "item_description" "#TF_BigChief_Desc" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_big_chief" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_big_chief.mdl" - "drop_type" "none" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "310" - { - "name" "Warrior's Spirit" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_WarriorsSpirit" - "item_slot" "melee" - "item_logname" "warrior_spirit" - "item_iconname" "warrior_spirit" - "image_inventory" "backpack/weapons/c_models/c_bear_claw/c_bear_claw" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bear_claw/c_bear_claw.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.3" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-20" - } - } - "visuals" - { - "sound_melee_miss" "Weapon_BoxingGloves.Miss" - "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" - "sound_burst" "Weapon_BoxingGloves.MissCrit" - "animation" - { - "activity" "ACT_VM_IDLE" - "replacement" "ACT_FISTS_VM_IDLE" - } - "animation" - { - "activity" "ACT_VM_HITLEFT" - "replacement" "ACT_FISTS_VM_HITLEFT" - } - "animation" - { - "activity" "ACT_VM_HITRIGHT" - "replacement" "ACT_FISTS_VM_HITRIGHT" - } - "animation" - { - "activity" "ACT_VM_SWINGHARD" - "replacement" "ACT_FISTS_VM_SWINGHARD" - } - "animation" - { - "activity" "ACT_VM_DRAW" - "replacement" "ACT_FISTS_VM_DRAW" - } - } - "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" - "drop_sound" "ui/item_boxing_gloves_drop.wav" - "item_set" "hibernating_bear" - } - "311" - { - "name" "The Buffalo Steak Sandvich" - "item_class" "tf_weapon_lunchbox" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_LunchBox" - "item_name" "#TF_BuffaloSteak" - "item_description" "#TF_BuffaloSteak_Desc" - "item_slot" "secondary" - "anim_slot" "ITEM1" - "image_inventory" "backpack/weapons/c_models/c_buffalo_steak/c_buffalo_steak" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_buffalo_steak/c_buffalo_steak.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "lunchbox adds minicrits" - { - "attribute_class" "set_weapon_mode" - "value" "2" - } - } - "mouse_pressed_sound" "ui/item_sandwich_drop.wav" - "drop_sound" "ui/item_sandwich_pickup.wav" - "item_set" "hibernating_bear" - } - "312" - { - "name" "The Brass Beast" - "item_class" "tf_weapon_minigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_GatlingGun" - "item_slot" "primary" - "item_logname" "brass_beast" - "item_iconname" "brass_beast" - "image_inventory" "backpack/weapons/c_models/c_gatling_gun/c_gatling_gun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_gatling_gun/c_gatling_gun.mdl" - "attach_to_hands" "1" - "propername" "0" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "sound_deploy" "Weapon_Gatling.Draw" - "sound_reload" "Weapon_Gatling.Reload" - "sound_empty" "Weapon_Gatling.ClipEmpty" - "sound_double_shot" "Weapon_Gatling.Fire" - "sound_special1" "Weapon_Gatling.WindUp" - "sound_special2" "Weapon_Gatling.WindDown" - "sound_special3" "Weapon_Gatling.Spin" - "sound_burst" "Weapon_Gatling.FireCrit" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.20" - } - "minigun spinup time increased" - { - "attribute_class" "mult_minigun_spinup_time" - "value" "1.5" - } - "aiming movespeed decreased" - { - "attribute_class" "mult_player_aiming_movespeed" - "value" "0.4" - } - } - "item_set" "hibernating_bear" - } - "313" - { - "name" "Magnificent Mongolian" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MagnificentMongolian" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/heavy_magnificent_mongolian" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/heavy_magnificent_mongolian.mdl" - "drop_type" "drop" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "314" - { - "name" "Larrikin Robin" - "hidden" "0" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_LarrikinRobin" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/sniper/larrikin_robin" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/sniper/larrikin_robin.mdl" - "drop_type" "drop" - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "315" - { - "name" "Blighted Beak" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BlightedBeak" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/blighted_beak" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_blighted_beak.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "316" - { - "name" "Pyromancer's Mask" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PyromancersMask" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_pyromancers_mask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_pyromancers_mask.mdl" - "drop_type" "none" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "317" - { - "name" "The Candy Cane" - "item_class" "tf_weapon_bat" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bat" - "item_name" "#TF_CandyCane" - "item_logname" "candy_cane" - "item_iconname" "candy_cane" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "25" - "max_ilevel" "25" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_candy_cane/c_candy_cane" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_candy_cane/c_candy_cane.mdl" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - "visuals_red" - { - "skin" "0" - } - "visuals_blu" - { - "skin" "1" - } - "attributes" - { - "drop health pack on kill" - { - "attribute_class" "drop_health_pack_on_kill" - "value" "1" - } - "dmg taken from blast increased" - { - "attribute_class" "mult_dmgtaken_from_explosions" - "value" "1.25" - } - } - } - "318" - { - "name" "Prancer's Pride" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PrancersPride" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/prancers_pride" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/Prancers_Pride.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - } - "319" - { - "name" "Detective Noir" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DetectiveNoir" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_detective_noir" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_detective_noir.mdl" - "drop_type" "drop" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "321" - { - "name" "Madame Dixie" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MadameDixie" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_madame_dixie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_madame_dixie.mdl" - "drop_type" "drop" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "322" - { - "name" "Buckaroos Hat" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_BuckaroosHat" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_buckaroos_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_buckaroos_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "323" - { - "name" "German Gonzila" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_GermanGonzila" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/medic/medic_german_gonzila" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/medic/medic_german_gonzila.mdl" - "drop_type" "drop" - "used_by_classes" - { - "medic" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "324" - { - "name" "Flipped Trilby" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_FlippedTrilby" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/scout/scout_flipped_trilby" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/scout_flipped_trilby.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "325" - { - "name" "The Boston Basher" - "item_class" "tf_weapon_bat" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Bat" - "item_name" "#TF_BostonBasher" - "item_logname" "boston_basher" - "item_iconname" "boston_basher" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "25" - "max_ilevel" "25" - "attach_to_hands" "1" - "image_inventory" "backpack/weapons/c_models/c_boston_basher/c_boston_basher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_boston_basher/c_boston_basher.mdl" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - "attributes" - { - "bleeding duration" - { - "attribute_class" "bleeding_duration" - "value" "5" - } - "hit self on miss" - { - "attribute_class" "hit_self_on_miss" - "value" "1" - } - } - } - "326" - { - "name" "The Back Scratcher" - "item_class" "tf_weapon_fireaxe" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "back_scratcher" - "item_iconname" "back_scratcher" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_GardenRake" - "item_name" "#TF_BackScratcher" - "item_slot" "melee" - "image_inventory" "backpack/weapons/c_models/c_back_scratcher/c_back_scratcher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_back_scratcher/c_back_scratcher.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" - "drop_sound" "ui/item_wood_pole_drop.wav" - "attributes" - { - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "1.25" - } - "health from healers reduced" - { - "attribute_class" "mult_health_fromhealers" - "value" "0.25" - } - "health from packs increased" - { - "attribute_class" "mult_health_frompacks" - "value" "1.5" - } - } - } - "327" - { - "name" "The Claidheamohmor" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "item_logname" "claidheamohmor" - "item_iconname" "claidheamohmor" - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Sword" - "item_name" "#TF_Claidheamohmor" - "item_description" "#TF_Claidheamohmor_Desc" - "item_slot" "melee" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_claidheamohmor/c_claidheamohmor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_claidheamohmor/c_claidheamohmor.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "sound_melee_miss" "Weapon_Sword.Swing" - "sound_melee_hit" "Weapon_Sword.HitFlesh" - "sound_melee_hit_world" "Weapon_Sword.HitWorld" - "sound_melee_burst" "Weapon_Sword.SwingCrit" - "sound_special1" "Sword.Hit" - "sound_special2" "Sword.Idle" - } - "attributes" - { - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "charge time increased" - { - "attribute_class" "mod_charge_time" - "value" "0.5" - } - "max health additive penalty" - { - "attribute_class" "add_maxhealth" - "value" "-15" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "329" - { - "name" "The Jag" - "item_class" "tf_weapon_wrench" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Wrench" - "item_name" "#TF_Jag" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "15" - "max_ilevel" "15" - "propername" "0" - "attach_to_hands" "1" - "item_logname" "wrench_jag" - "item_iconname" "wrench_jag" - "image_inventory" "backpack/weapons/c_models/c_jag/c_jag" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_jag/c_jag.mdl" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_medal_pickup.wav" - "drop_sound" "ui/item_medal_pickup.wav" - "attributes" - { - "Construction rate increased" - { - "attribute_class" "mult_construction_value" - "value" "1.3" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.75" - } - } - } - "330" - { - "name" "Coupe D'isaster" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_CoupeDisaster" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/heavy/coupe_disaster" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/heavy/coupe_disaster.mdl" - "drop_type" "none" - "used_by_classes" - { - "heavy" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "331" - { - "name" "Fists of Steel" - "item_class" "tf_weapon_fists" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Gloves" - "item_name" "#TF_FistsOfSteel" - "item_slot" "melee" - "item_logname" "steel_fists" - "item_iconname" "steel_fists" - "image_inventory" "backpack/weapons/c_models/c_fists_of_steel/c_fists_of_steel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_fists_of_steel/c_fists_of_steel.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "heavy" "1" - } - "hide_bodygroups_deployed_only" "1" - "visuals" - { - "hide_player_bodygroup_name" "hands" - "sound_deploy" "Weapon_MetalGloves.Draw" - "sound_melee_miss" "Weapon_MetalGloves.Miss" - "sound_melee_hit" "Weapon_MetalGloves.HitFlesh" - "sound_melee_hit_world" "Weapon_MetalGloves.HitWorld" - "sound_burst" "Weapon_MetalGloves.MissCrit" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - "attributes" - { - "dmg from ranged reduced" - { - "attribute_class" "dmg_from_ranged" - "value" "0.4" - } - - "dmg from melee increased" - { - "attribute_class" "dmg_from_melee" - "value" "2.0" - } - } - } - - "332" - { - "name" "Treasure Hat 1" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TreasureHat_1" - "item_description" "#TF_TreasureHat_1_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/player/items/all_class/treasure_hat_01" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/treasure_hat_01.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "333" - { - "name" "Treasure Hat 2" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TreasureHat_2" - "item_description" "#TF_TreasureHat_2_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "15" - "max_ilevel" "15" - "image_inventory" "backpack/player/items/all_class/treasure_hat_02" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/treasure_hat_02.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "attached_particlesystem" - { - "system" "coin_spin" - "attachment" "root" - } - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "334" - { - "name" "Treasure Hat 3" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "paintable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TreasureHat_3" - "item_description" "#TF_TreasureHat_3_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "28" - "max_ilevel" "28" - "image_inventory" "backpack/player/items/all_class/treasure_hat_oct" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/treasure_hat_oct.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "335" - { - "name" "KF Pyro Mask" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "capabilities" - { - "nameable" "1" - "paintable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_KF_Pyro_Mask" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_tripwire_mask" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_tripwire_mask.mdl" - "used_by_classes" - { - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "head" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "336" - { - "name" "KF Pyro Tie" - "item_class" "tf_wearable_item" - "loadondemand" "1" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_KF_Pyro_Tie" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/pyro/pyro_tripwire_tie" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/pyro/pyro_tripwire_tie.mdl" - "used_by_classes" - { - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "grenades" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "337" - { - "name" "Le Party Phantom" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_PartyPhantom" - "item_slot" "misc" - "item_quality" "unique" - "image_inventory" "backpack/player/items/spy/spy_party_phantom" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/spy/spy_party_phantom.mdl" - "drop_type" "none" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "338" - { - "name" "Industrial Festivizer" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ColoredLights" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/engineer/engineer_colored_lights" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/engineer/engineer_colored_lights.mdl" - "drop_type" "none" - "used_by_classes" - { - "engineer" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "339" - { - "name" "Exquisite Rack" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_ExquisiteRack" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_holiday_antlers" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_holiday_antlers.mdl" - "drop_type" "none" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "340" - { - "name" "Defiant Spartan" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_DefiantSpartan" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/soldier/soldier_spartan" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/soldier/soldier_spartan.mdl" - "drop_type" "drop" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "341" - { - "name" "A Rather Festive Tree" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_FestiveTree" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/all_class/oh_xmas_tree" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/all_class/oh_xmas_tree.mdl" - "drop_type" "drop" - "set_sequence_to_class" "1" - "used_by_classes" - { - "spy" "1" - "soldier" "1" - "heavy" "1" - "demoman" "1" - "pyro" "1" - "scout" "1" - "medic" "1" - "sniper" "1" - "engineer" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "342" - { - "name" "Prince Tavish's Crown" - "item_class" "tf_wearable_item" - "craft_class" "hat" - "capabilities" - { - "paintable" "1" - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_TavishCrown" - "item_slot" "head" - "item_quality" "unique" - "image_inventory" "backpack/player/items/demo/crown" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/demo/crown.mdl" - "drop_type" "drop" - "used_by_classes" - { - "demoman" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_helmet_pickup.wav" - "drop_sound" "ui/item_helmet_drop.wav" - } - "357" - { - "name" "The Half-Zatoichi" - "first_sale_date" "2011/03/08" - "item_class" "tf_weapon_sword" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - "can_deal_taunt_damage" "1" - } - "show_in_armory" "1" - "item_logname" "demokatana" - "item_iconname" "demokatana" - "item_type_name" "#TF_Weapon_SoldierKatana" - "item_name" "#TF_SoldierKatana" - "item_description" "#TF_SoldierKatana_Desc" - "item_slot" "melee" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "5" - "max_ilevel" "5" - "image_inventory" "backpack/weapons/c_models/c_shogun_katana/c_shogun_katana" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_shogun_katana/c_shogun_katana.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - "demoman" "1" - } - "model_player_per_class" - { - "soldier" "models/weapons/c_models/c_shogun_katana/c_shogun_katana_soldier.mdl" - "demoman" "models/weapons/c_models/c_shogun_katana/c_shogun_katana.mdl" - } - "attributes" - { - "is_a_sword" - { - "attribute_class" "is_a_sword" - "value" "72" - } - "decapitate type" - { - "attribute_class" "decapitate_type" - "value" "1" - } - "restore health on kill" - { - "attribute_class" "heal_on_kill" - "value" "50" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - "honorbound" - { - "attribute_class" "honorbound" - "value" "1" - } - "special taunt" - { - "attribute_class" "special_taunt" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "345" - { - "name" "MNC Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MNC_Hat" - "item_description" "#TF_MNC_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/all_class/mnc_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_mnc.mdl" - "sniper" "models/player/items/sniper/sniper_mnc.mdl" - "soldier" "models/player/items/soldier/soldier_mnc.mdl" - "demoman" "models/player/items/demo/demo_mnc.mdl" - "medic" "models/player/items/medic/medic_mnc.mdl" - "heavy" "models/player/items/heavy/heavy_mnc.mdl" - "spy" "models/player/items/spy/spy_mnc.mdl" - "engineer" "models/player/items/engineer/engineer_mnc.mdl" - "pyro" "models/player/items/pyro/pyro_mnc.mdl" - } - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "346" - { - "name" "MNC Mascot Hat" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_MNC_Mascot_Hat" - "item_description" "#TF_MNC_Mascot_Hat_Desc" - "item_slot" "head" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/scout/mnc_mascot_hat" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/mnc_mascot_hat.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "347" - { - "name" "MNC Mascot Outfit" - "hidden" "0" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "loadondemand" "1" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Apparel" - "item_name" "#TF_MNC_Mascot_Outfit" - "item_description" "#TF_MNC_Mascot_Outfit_Desc" - "item_slot" "misc" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/player/items/scout/mnc_mascot_outfit" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/player/items/scout/mnc_mascot_outfit.mdl" - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - } - "visuals" - { - "hide_player_bodygroup_name" "shoes_socks" - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_pickup.wav" - } - "348" - { - "name" "Sharpened Volcano Fragment" - "item_class" "tf_weapon_fireaxe" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RiftFireAxe" - "item_name" "#TF_Unique_RiftFireAxe" - "item_description" "#TF_RiftFireAxe_Desc" - "item_slot" "melee" - "item_logname" "lava_axe" - "item_iconname" "lava_axe" - "item_quality" "unique" - "image_inventory" "backpack/weapons/c_models/c_rift_fire_axe/c_rift_fire_axe" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rift_fire_axe/c_rift_fire_axe.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "Set DamageType Ignite" - { - "attribute_class" "set_dmgtype_ignite" - "value" "1" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.8" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_firerate" "1" - } - } - "349" - { - "name" "The Market Gardener" - "first_sale_date" "2011/03/23" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "can_craft_count" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Shovel" - "item_name" "#TF_MarketGardener" - "item_logname" "market_gardener" - "item_iconname" "market_gardener" - "item_slot" "melee" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_market_gardener/c_market_gardener" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_market_gardener/c_market_gardener.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "mod crit while airborne" - { - "attribute_class" "crit_while_airborne" - "value" "1" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - "350" - { - "name" "Sun-on-a-Stick" - "item_class" "tf_weapon_bat" - "capabilities" - { - "nameable" "1" - "can_modify_socket" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RiftFireMace" - "item_name" "#TF_Unique_RiftFireMace" - "item_description" "#TF_RiftFireMace_Desc" - "item_slot" "melee" - "item_logname" "lava_bat" - "item_iconname" "lava_bat" - "item_quality" "unique" - "image_inventory" "backpack/weapons/c_models/c_rift_fire_mace/c_rift_fire_mace" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_rift_fire_mace/c_rift_fire_mace.mdl" - "attach_to_hands" "1" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "propername" "0" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - "attributes" - { - "minicrit vs burning player" - { - "attribute_class" "or_minicrit_vs_playercond_burning" - "value" "1" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.85" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "350" - { - "name" "The Market Gardener" - "first_sale_date" "2011/03/23" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "craft_material_type" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - "can_craft_count" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Shovel" - "item_name" "#TF_MarketGardener" - "item_logname" "market_gardener" - "item_iconname" "market_gardener" - "item_slot" "melee" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_market_gardener/c_market_gardener" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_market_gardener/c_market_gardener.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "mod crit while airborne" - { - "attribute_class" "crit_while_airborne" - "value" "1" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - } - "351" - { - "name" "The Disciplinary Action" - "item_class" "tf_weapon_shovel" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "tags" - { - "can_deal_damage" "1" - "can_be_equipped_by_soldier_or_demo" "1" - "can_deal_critical_damage" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Riding_Crop" - "item_name" "#TF_DisciplinaryAction" - "item_logname" "disciplinary_action" - "item_iconname" "disciplinary_action" - "item_slot" "melee" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "image_inventory" "backpack/weapons/c_models/c_riding_crop/c_riding_crop" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_riding_crop/c_riding_crop.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "visuals" - { - "sound_melee_miss" "weapons\discipline_device_woosh_01.wav" - "sound_melee_hit" "weapons\discipline_device_impact_01.wav" - "sound_melee_hit_world" "weapons\discipline_device_hit_world.wav" - "sound_melee_burst" "weapons\discipline_device_impact_crit_01.wav" - } - "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" - "drop_sound" "ui/item_metal_weapon_drop.wav" - } - - // world traveler hat and tokens - "1899" - { - "name" "World Traveler" - "item_class" "tf_wearable_item" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_WorldTraveler" - "item_description" "#TF_WorldTraveler_Desc" - "item_slot" "head" - "image_inventory" "backpack/player/items/all_class/world_traveller" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "20" - "max_ilevel" "20" - "set_sequence_to_class" "1" - "model_player" "models/player/items/all_class/world_traveller.mdl" - "drop_type" "drop" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "attach particle effect" - { - "attribute_class" "set_attached_particle" - "value" "20" - } - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - "visuals" - { - "hide_player_bodygroup_name" "hat" - "hide_player_bodygroup_name" "headphones" - "code_controlled_bodygroup" - { - "function" "map_contributor" - "bodygroup" "medal" - } - } - "mouse_pressed_sound" "ui/item_hat_pickup.wav" - "drop_sound" "ui/item_hat_drop.wav" - } - "1900" - { - "name" "Map Token Egypt" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Egypt" - "item_description" "#TF_MapToken_Egypt_Desc" - "map_name" "#TF_Egypt" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_egypt" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1901" - { - "name" "Map Token Coldfront" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Coldfront" - "item_description" "#TF_MapToken_Coldfront_Desc" - "map_name" "#TF_Coldfront" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_coldfront" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1902" - { - "name" "Map Token Fastlane" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Fastlane" - "item_description" "#TF_MapToken_Fastlane_Desc" - "map_name" "#TF_Fastlane" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_fastlane" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1903" - { - "name" "Map Token Turbine" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Turbine" - "item_description" "#TF_MapToken_Turbine_Desc" - "map_name" "#TF_Turbine" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_turbine" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1904" - { - "name" "Map Token Steel" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Steel" - "item_description" "#TF_MapToken_Steel_Desc" - "map_name" "#TF_Steel" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_steel" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1905" - { - "name" "Map Token Junction" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Junction" - "item_description" "#TF_MapToken_Junction_Desc" - "map_name" "#TF_Junction" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_junction" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1906" - { - "name" "Map Token Watchtower" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Watchtower" - "item_description" "#TF_MapToken_Watchtower_Desc" - "map_name" "#TF_Watchtower" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_watchtower" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1907" - { - "name" "Map Token Hoodoo" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Hoodoo" - "item_description" "#TF_MapToken_Hoodoo_Desc" - "map_name" "#TF_Hoodoo" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_hoodoo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1908" - { - "name" "Map Token Offblast" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Offblast" - "item_description" "#TF_MapToken_Offblast_Desc" - "map_name" "#TF_Offblast" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_offblast" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1909" - { - "name" "Map Token Yukon" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Yukon" - "item_description" "#TF_MapToken_Yukon_Desc" - "map_name" "#TF_Yukon" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_yukon" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1910" - { - "name" "Map Token Harvest" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Harvest" - "item_description" "#TF_MapToken_Harvest_Desc" - "map_name" "#TF_Harvest" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_harvest" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1911" - { - "name" "Map Token Freight" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_Freight" - "item_description" "#TF_MapToken_Freight_Desc" - "map_name" "#TF_Freight" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_freight" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1912" - { - "name" "Map Token Mountain Lab" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_MountainLab" - "item_description" "#TF_MapToken_MountainLab_Desc" - "map_name" "#TF_MountainLab" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_mountainlab" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "1913" - { - "name" "Map Token Manor Event" - "item_class" "map_token" - "item_type_name" "#TF_MapToken" - "item_name" "#TF_MapToken_ManorEvent" - "item_description" "#TF_MapToken_ManorEvent_Desc" - "map_name" "#TF_ManorEvent" - "show_in_armory" "1" - "armory_desc" "maptoken" - "image_inventory" "backpack/player/items/all_class/stamp_manor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - - // store bundle items - "2000" - { - "name" "Polycount Pyro Bundle" - "item_class" "bundle" - "bundle" - { - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountPyro" - "item_description" "#TF_Bundle_PolycountPyro_Desc" - "image_inventory" "backpack/player/items/crafting/kit_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "pyro" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2001" - { - "name" "Polycount Spy Bundle" - "item_class" "bundle" - "bundle" - { - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountSpy" - "item_description" "#TF_Bundle_PolycountSpy_Desc" - "image_inventory" "backpack/player/items/crafting/kit_spy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "spy" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2002" - { - "name" "Polycount Soldier Bundle" - "item_class" "bundle" - "bundle" - { - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountSoldier" - "item_description" "#TF_Bundle_PolycountSoldier_Desc" - "image_inventory" "backpack/player/items/crafting/kit_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "soldier" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2003" - { - "name" "Polycount Sniper Bundle" - "item_class" "bundle" - "bundle" - { - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountSniper" - "item_description" "#TF_Bundle_PolycountSniper_Desc" - "image_inventory" "backpack/player/items/crafting/kit_sniper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "sniper" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2004" - { - "name" "Polycount Scout Bundle" - "item_class" "bundle" - "bundle" - { - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_PolycountScout" - "item_description" "#TF_Bundle_PolycountScout_Desc" - "image_inventory" "backpack/player/items/crafting/kit_scout" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2005" - { - "name" "Polycount Bundle" - "item_class" "bundle" - "bundle" - { - // pyro polycount - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - - // spy polycount - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - - // soldier polycount - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - - // sniper polycount - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - - // scout polycount - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_Polycount" - "item_description" "#TF_Bundle_Polycount_Desc" - "image_inventory" "backpack/player/items/crafting/kit_polycount" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "pyro" "1" - "spy" "1" - "soldier" "1" - "sniper" "1" - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2006" - { - "name" "Halloween Noise Maker Bundle" - "item_class" "bundle" - "bundle" - { - "Halloween Noise Maker - Black Cat" "1" - "Halloween Noise Maker - Gremlin" "1" - "Halloween Noise Maker - Werewolf" "1" - "Halloween Noise Maker - Witch" "1" - "Halloween Noise Maker - Banshee" "1" - "Halloween Noise Maker - Crazy Laugh" "1" - "Halloween Noise Maker - Stabby" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_HalloweenNoiseMaker" - "item_description" "#TF_Bundle_HalloweenNoiseMaker_Desc" - "image_inventory" "backpack/crafting/noisemaker_bundle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2007" - { - "name" "Map Token Bundle" - "item_class" "bundle" - "bundle" - { - "Map Token Egypt" "1" - "Map Token Coldfront" "1" - "Map Token Fastlane" "1" - "Map Token Turbine" "1" - "Map Token Steel" "1" - "Map Token Junction" "1" - "Map Token Watchtower" "1" - "Map Token Hoodoo" "1" - "Map Token Offblast" "1" - "Map Token Yukon" "1" - "Map Token Harvest" "1" - "Map Token Freight" "1" - "Map Token Mountain Lab" "1" - "Map Token Manor Event" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_MapTokens" - "item_description" "#TF_Bundle_MapTokens_Desc" - "image_inventory" "backpack/player/items/all_class/stamp_collection" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "2008" - { - "name" "Medieval Medic Bundle" - "item_class" "bundle" - "bundle" - { - "The Amputator" "1" - "The Crusader's Crossbow" "1" - "Berliner's Bucket Helm" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_MedievalMedic" - "item_description" "#TF_Bundle_MedievalMedic_Desc" - "image_inventory" "backpack/player/items/crafting/kit_medieval_medic" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "medic" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2009" - { - "name" "Hibernating Bear Bundle" - "item_class" "bundle" - "bundle" - { - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - "Big Chief" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_HibernatingBear" - "item_description" "#TF_Bundle_HibernatingBear_Desc" - "image_inventory" "backpack/player/items/crafting/kit_hibernating_bear" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "heavy" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2010" - { - "name" "Expert's Ordnance Bundle" - "item_class" "bundle" - "bundle" - { - "The Loch-N-Load" "1" - "The Ullapool Caber" "1" - "Scotch Bonnet" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_ExpertsOrdnance" - "item_description" "#TF_Bundle_ExpertsOrdnance_Desc" - "image_inventory" "backpack/player/items/crafting/kit_experts_ordnance" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2011" - { - "name" "Winter Update Bundle" - "item_class" "bundle" - "bundle" - { - // medieval medic - "The Amputator" "1" - "The Crusader's Crossbow" "1" - "Berliner's Bucket Helm" "1" - - // hibernating bear - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - "Big Chief" "1" - - // expert's ordnance - "The Loch-N-Load" "1" - "The Ullapool Caber" "1" - "Scotch Bonnet" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_WinterUpdate" - "item_description" "#TF_Bundle_WinterUpdate_Desc" - "image_inventory" "backpack/player/items/crafting/kit_winterupdate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "medic" "1" - "heavy" "1" - "demoman" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2012" - { - "name" "Fancy Hat Bundle" - "item_class" "bundle" - "bundle" - { - "Coupe D'isaster" "1" - "Flipped Trilby" "1" - "German Gonzila" "1" - "Buckaroos Hat" "1" - "Madame Dixie" "1" - "Detective Noir" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_FancyHats" - "item_description" "#TF_Bundle_FancyHats_Desc" - "image_inventory" "backpack/player/items/crafting/kit_fancyhats" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "heavy" "1" - "medic" "1" - "scout" "1" - "engineer" "1" - "pyro" "1" - "demoman" "1" - "spy" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2013" - { - "name" "Excessive Bundle of Bundles" - "item_class" "bundle" - "bundle" - { - // pyro polycount - "The Degreaser" "1" - "The Powerjack" "1" - "The Attendant" "1" - - // spy polycount - "L'Etranger" "1" - "Your Eternal Reward" "1" - "The Familiar Fez" "1" - - // soldier polycount - "The Black Box" "1" - "The Battalion's Backup" "1" - "The Grenadier's Softcap" "1" - - // sniper polycount - "The Sydney Sleeper" "1" - "Darwin's Danger Shield" "1" - "The Bushwacka" "1" - "Ol' Snaggletooth" "1" - - // scout polycount - "The Shortstop" "1" - "Mad Milk" "1" - "The Holy Mackerel" "1" - "The Milkman" "1" - - // medieval medic - "The Amputator" "1" - "The Crusader's Crossbow" "1" - "Berliner's Bucket Helm" "1" - - // hibernating bear - "The Brass Beast" "1" - "The Buffalo Steak Sandvich" "1" - "Warrior's Spirit" "1" - "Big Chief" "1" - - // expert's ordnance - "The Loch-N-Load" "1" - "The Ullapool Caber" "1" - "Scotch Bonnet" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_ExcessiveBundle" - "item_description" "#TF_Bundle_ExcessiveBundle_Desc" - "image_inventory" "backpack/player/items/crafting/kit_polycount_winterupdate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "75" - "max_ilevel" "75" - "used_by_classes" - { - "medic" "1" - "heavy" "1" - "demoman" "1" - "pyro" "1" - "spy" "1" - "soldier" "1" - "sniper" "1" - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2014" - { - "name" "Nasty Weapon Bundle" - "item_class" "bundle" - "bundle" - { - "The Boston Basher" "1" - "The Back Scratcher" "1" - "The Claidheamohmor" "1" - "Fists of Steel" "1" - } - "item_type_name" "#TF_StoreBundle" - "item_name" "#TF_Bundle_NastyWeapons" - "item_description" "#TF_Bundle_NastyWeapons_Desc" - "image_inventory" "backpack/crafting/kit_nastyweapons" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "50" - "used_by_classes" - { - "heavy" "1" - "pyro" "1" - "demoman" "1" - "scout" "1" - } - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "2015" - { - "name" "The Cleaner's Carbine" - "first_sale_date" "2012/06/27" - "baseitem" "0" - "propername" "0" - "item_class" "tf_weapon_smg" - "craft_class" "weapon" - "craft_material_type" "weapon" - "tags" - { - "can_deal_damage" "1" - "can_deal_critical_damage" "1" - "can_deal_mvm_penetration_damage" "1" - "can_deal_long_distance_damage" "1" - } - "item_logname" "pro_smg" - "item_iconname" "pro_smg" - "item_type_name" "#TF_Weapon_SMG" - "item_name" "#TF_Pro_SMG" - "item_description" "#TF_Pro_SMG_Desc" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_pro_smg/c_pro_smg" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_pro_smg/c_pro_smg.mdl" - "attach_to_hands" "1" - "attributes" - { - "critboost on kill" - { - "attribute_class" "add_onkill_critboost_time" - "value" "3" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "1.35" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.80" - } - "crit mod disabled" - { - "attribute_class" "mult_crit_chance" - "value" "0" - } - } - "used_by_classes" - { - "sniper" "1" - } - "visuals" - { - "sound_single_shot" "weapons/doom_sniper_smg.wav" - "sound_burst" "weapons/doom_sniper_smg_crit.wav" - "muzzle_flash" "muzzle_pistol" - "tracer_effect" "bullet_tracer01" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "2016" - { - "name" "The Soda Popper" - "item_class" "tf_weapon_scattergun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Scattergun" - "item_name" "#TF_SodaPopper" - "item_logname" "soda_popper" - "item_iconname" "soda_popper" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "10" - "max_ilevel" "10" - "anim_slot" "ITEM2" - "image_inventory" "backpack/weapons/c_models/c_soda_popper/c_soda_popper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_soda_popper/c_soda_popper.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "scout" "1" - } - "attributes" - { - "scattergun has knockback" - { - "attribute_class" "set_scattergun_has_knockback" - "value" "1" - } - "fire rate bonus" - { - "attribute_class" "mult_postfiredelay" - "value" "0.5" - } - "bullets per shot bonus" - { - "attribute_class" "mult_bullets_per_shot" - "value" "1.2" - } - "damage penalty" - { - "attribute_class" "mult_dmg" - "value" "0.9" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.4" - } - "scattergun no reload single" - { - "attribute_class" "set_scattergun_no_reload_single" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_vs_burning" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - } - "visuals" - { - "sound_single_shot" "Weapon_Scatter_Gun_Double.Single" - "sound_burst" "Weapon_Scatter_Gun_Double.SingleCrit" - "muzzle_flash" "muzzle_bignasty" - "tracer_effect" "bullet_bignasty_tracer01" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "2017" - { - "name" "The Original" - "item_class" "tf_weapon_rocketlauncher_qrl" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "The Original" - "item_slot" "primary" - "item_quality" "unique" - "propername" "0" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "visuals" - { - "muzzle_flash" "" - "tracer_effect" "" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "5000" - { - "name" "Craft Bar Level 1" - "item_class" "craft_item" - "craft_class" "craft_bar" - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_Bar_A" - "image_inventory" "backpack/crafting/pile_of_junk" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "5001" - { - "name" "Craft Bar Level 2" - "item_class" "craft_item" - "craft_class" "craft_bar" - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_Bar_B" - "image_inventory" "backpack/crafting/pile_of_junk2" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "2" - "max_ilevel" "2" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "5002" - { - "name" "Craft Bar Level 3" - "item_class" "craft_item" - "craft_class" "craft_bar" - "show_in_armory" "1" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_Bar_C" - "image_inventory" "backpack/crafting/pile_of_junk3" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "3" - "max_ilevel" "3" - "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" - "drop_sound" "ui/item_metal_scrap_drop.wav" - } - "5003" - { - "name" "Scout Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_1" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_scout" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "scout" - "used_by_classes" - { - "scout" "1" - } - } - "5004" - { - "name" "Sniper Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_2" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_sniper" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "sniper" - "used_by_classes" - { - "sniper" "1" - } - } - "5005" - { - "name" "Soldier Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_3" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_soldier" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "soldier" - "used_by_classes" - { - "soldier" "1" - } - } - "5006" - { - "name" "Demoman Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_4" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_demo" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "demoman" - "used_by_classes" - { - "demoman" "1" - } - } - "5007" - { - "name" "Heavy Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_5" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_heavy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "heavy" - "used_by_classes" - { - "heavy" "1" - } - } - "5008" - { - "name" "Medic Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_6" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_medic" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "medic" - "used_by_classes" - { - "medic" "1" - } - } - "5009" - { - "name" "Pyro Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_7" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_pyro" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "pyro" - "used_by_classes" - { - "pyro" "1" - } - } - "5010" - { - "name" "Spy Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_8" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_spy" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "spy" - "used_by_classes" - { - "spy" "1" - } - } - "5011" - { - "name" "Engineer Class Token" - "item_class" "class_token" - "craft_class" "craft_token" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_C_9" - "item_description" "#TF_CraftItem_Token_C_Desc" - "image_inventory" "backpack/crafting/token_engineer" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "class_token_id" "engineer" - "used_by_classes" - { - "engineer" "1" - } - } - "5012" - { - "name" "Slot Token - Primary" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "primary" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_1" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_primary" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "primary" - } - "5013" - { - "name" "Slot Token - Secondary" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "secondary" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_2" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_secondary" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "secondary" - } - "5014" - { - "name" "Slot Token - Melee" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "melee" - "show_in_armory" "1" - "armory_desc" "craftitem" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_3" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_melee" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "melee" - } - "5018" - { - "name" "Slot Token - PDA2" - "item_class" "slot_token" - "craft_class" "craft_token" - "item_slot" "pda2" - "item_type_name" "#TF_CraftItem" - "item_name" "#CI_T_S_7" - "item_description" "#TF_CraftItem_Token_S_Desc" - "image_inventory" "backpack/crafting/token_pda" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "slot_token_id" "pda2" - } - "5020" - { - "name" "Name Tag" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "name" - "usage_capabilities" - { - "nameable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "nametag" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_T_Nt" - "item_description" "#TF_Tool_Nametag_Desc" - "image_inventory" "backpack/crafting/tag" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "5021" - { - "name" "Decoder Ring" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "decoder_ring" - "usage_capabilities" - { - "decodable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "key" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_DecoderRing" - "item_description" "#TF_Tool_DecoderRing_Desc" - "image_inventory" "backpack/player/items/crafting/key" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "5022" - { - "name" "Supply Crate" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "tool" - { - "type" "" - "usage" - { - } - } - "capabilities" - { - "decodable" "1" - } - "armory_desc" "supply_crate" - "show_in_armory" "1" - "show_in_armory" "1" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_SupplyCrate" - "item_description" "#TF_SupplyCrate_Desc" - "image_inventory" "backpack/player/items/crafting/crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "7" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5023" - { - "name" "Paint Can" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "store_remap" "Paint Can 5" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "force_gc_to_generate" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5027" - { - "name" "Paint Can 1" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_1" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "7511618" // 114 158 66 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5028" - { - "name" "Paint Can 2" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_2" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "4345659" // 66 79 59 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5029" - { - "name" "Paint Can 3" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_3" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "5322826" // 81 56 74 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5030" - { - "name" "Paint Can 4" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_4" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "14204632" // 216 190 216 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5031" - { - "name" "Paint Can 5" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_5" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8208497" // 233 194 139 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5032" - { - "name" "Paint Can 6" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_6" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "13595446" // 207 115 54 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5033" - { - "name" "Paint Can 7" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_7" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "10843461" // 165 117 69 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5034" - { - "name" "Paint Can 8" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_8" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "12955537" // 197 175 145 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5035" - { - "name" "Paint Can 9" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_9" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "6901050" // 105 77 58 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5036" - { - "name" "Paint Can 10" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_10" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8154199" // 124 108 87 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5037" - { - "name" "Paint Can 11" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_11" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15185211" // 231 181 59 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5038" - { - "name" "Paint Can 12" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_12" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8289918" // 126 126 126 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5039" - { - "name" "Paint Can 13" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_13" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15132390" // 230 230 230 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5040" - { - "name" "Paint Can 14" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_14" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "1315860" // 20 20 20 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5041" - { - "name" "Supply Crate 2" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "tool" - { - "type" "" - "usage" - { - } - } - "capabilities" - { - "can_gift_wrap" "1" - "decodable" "1" - } - "armory_desc" "supply_crate" - "show_in_armory" "0" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_SupplyCrate" - "item_description" "#TF_SupplyCrate_Desc" - "image_inventory" "backpack/player/items/crafting/crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "8" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5042" - { - "name" "Gift Wrap" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "gift_wrap" - "use_string" "#WrapGift" - "usage_capabilities" - { - "can_gift_wrap" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "gift_wrap" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_GiftWrap" - "item_description" "#TF_Tool_GiftWrap_Desc" - "image_inventory" "backpack/crafting/gift_custom_supplies" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "5043" - { - "name" "Wrapped Gift" - "item_class" "tool" - "tool" - { - "type" "wrapped_gift" - "use_string" "#UnwrapGift" - } - "capabilities" - { - "nameable" "1" - "usable_gc" "1" - "usable_out_of_game" "1" - } - "armory_desc" "gift" - "show_in_armory" "1" - "item_type_name" "#TF_GIFT" - "item_name" "#TF_Tool_Gift" - "item_description" "#TF_Tool_Gift_Desc" - "image_inventory" "backpack/crafting/gift_custom" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" - "drop_sound" "ui/item_cardboard_drop.wav" - } - "5044" - { - "name" "Description Tag" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "desc" - "usage_capabilities" - { - "nameable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "desctag" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_T_Dt" - "item_description" "#TF_Tool_Desctag_Desc" - "image_inventory" "backpack/crafting/desc_tag" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - "5045" - { - "name" "Supply Crate 3" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "tool" - { - "type" "" - "usage" - { - } - } - "capabilities" - { - "can_gift_wrap" "1" - "decodable" "1" - } - "armory_desc" "supply_crate" - "show_in_armory" "0" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_SupplyCrate" - "item_description" "#TF_SupplyCrate_Desc" - "image_inventory" "backpack/player/items/crafting/crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "9" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5046" - { - "name" "Paint Can Team Color" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_TeamColor" - "item_description" "#TF_Tool_PaintCan_TeamColor_Desc" - "image_inventory" "backpack/player/items/crafting/teampaint" - "image_inventory_size_w" "128" - "image_inventory_size_h" "96" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "1" - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5048" // Winter Crate - This id can never be re-used!!! - { - "name" "Winter Crate" - "item_class" "supply_crate" - "craft_class" "supply_crate" - "expiration_date" "2010-12-31 23:00:00" - "tool" - { - "type" "" - "usage" - { - } - "restriction" "winter" - } - "capabilities" - { - "decodable" "1" - } - "armory_desc" "winter_crate" - "show_in_armory" "1" - "item_type_name" "#TF_LockedCrate" - "item_name" "#TF_WinterCrate" - "item_description" "#TF_WinterCrate_Desc" - "image_inventory" "backpack/player/items/crafting/festive_crate" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "10" - "max_ilevel" "10" - "attributes" - { - "set supply crate series" - { - "attribute_class" "supply_crate_series" - "value" "6" - "force_gc_to_generate" "1" - } - } - "mouse_pressed_sound" "ui/item_crate_pickup.wav" - "drop_sound" "ui/item_crate_drop.wav" - } - "5049" - { - "name" "Winter Key" // Now a 'normal key' - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "decoder_ring" - "usage_capabilities" - { - "decodable" "1" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "armory_desc" "key" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_DecoderRing" - "item_description" "#TF_Tool_DecoderRing_Desc" - "image_inventory" "backpack/player/items/crafting/key" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - } - "5050" - { - "name" "Backpack Expander" - "item_class" "tool" - "tool" - { - "type" "backpack_expander" - "usage" - { - "backpack_slots" "100" - } - } - "attributes" - { - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "capabilities" - { - "usable_gc" "1" - "usable_out_of_game" "1" - } - "armory_desc" "backpack_expander" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_BackpackExpander" - "item_description" "#TF_Tool_BackpackExpander_Desc" - "image_inventory" "backpack/player/items/all_class/backpack_expander" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "50" - "max_ilevel" "59" - "mouse_pressed_sound" "ui/item_bag_pickup.wav" - "drop_sound" "ui/item_bag_drop.wav" - } - "5051" - { - "name" "Paint Can 15" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_15" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "16738740" // 255 105 180 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5052" - { - "name" "Paint Can 16" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_16" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "3100495" // 47 79 79 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5053" - { - "name" "Paint Can 17" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_17" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "8421376" // 128 128 0 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5054" - { - "name" "Paint Can 18" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_18" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "3329330" // 50 205 50 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5055" - { - "name" "Paint Can 19" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_19" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15787660" // 240 230 140 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5056" - { - "name" "Paint Can 20" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "paint_can" - "usage_capabilities" - { - "paintable" "1" - } - } - "armory_desc" "paintcan" - "armory_remap" "Paint Can" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_PaintCan_20" - "item_description" "#TF_Tool_PaintCan_Desc" - "image_inventory" "backpack/player/items/crafting/paintcan" - "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "attributes" - { - "set item tint RGB" - { - "attribute_class" "set_item_tint_rgb" - "value" "15308410" // 233 150 122 - } - "always tradable" - { - "attribute_class" "always_tradable" - "value" "1" - } - } - "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" - "drop_sound" "ui/item_paint_can_pickup.wav" - } - "5057" - { - "name" "Christmas Key 2010" - "item_class" "tool" - "craft_class" "tool" - "tool" - { - "type" "decoder_ring" - "usage_capabilities" - { - "decodable" "1" - } - "restriction" "any" - } - "armory_desc" "key" - "show_in_armory" "1" - "item_type_name" "#TF_T" - "item_name" "#TF_Tool_ChristmasKey2010" - "item_description" "#TF_Tool_ChristmasKey2010_Desc" - "image_inventory" "backpack/player/items/crafting/key_winter" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" - "drop_sound" "ui/item_metal_tiny_drop.wav" - "attributes" - { - "cannot trade" - { - "attribute_class" "cannot_trade" - "value" "1" - } - } - } - "5500" - { - "name" "RIFT Spider Hat Code" - "item_class" "tool" - "tool" - { - "type" "claimcode" - "usage" - { - "claim_type" "#TF_RIFT_SpiderHat_ClaimType" - } - } - "capabilities" - { - "usable_gc" "1" - "usable_out_of_game" "1" - } - "armory_desc" "claimcode" - "show_in_armory" "1" - "item_type_name" "#TF_ClaimCode" - "item_name" "#TF_RIFT_SpiderHat_ClaimCode" - "item_description" "#TF_RIFT_SpiderHat_ClaimCode_Desc" - "image_inventory" "backpack/crafting/ticket" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "mouse_pressed_sound" "ui/item_paper_pickup.wav" - "drop_sound" "ui/item_paper_pickup.wav" - } - } - "attributes" - { - } - "item_sets" - { - } - "attribute_controlled_attached_particles" - { - } -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_livetf2_2.lua b/addon/gamemodes/teamfortress/gamemode/items/workshop/items_livetf2_2.lua deleted file mode 100644 index 85a5adcba..000000000 --- a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_livetf2_2.lua +++ /dev/null @@ -1,54 +0,0 @@ -"items_game" -{ - "qualities" - { - } - "items" - { - "15367" - { - "name" "Voodoo-Cursed Soul" - "hidden" "0" - "item_class" "tf_wearable_item" - "show_in_armory" "1" - "item_type_name" "#TF_Wearable_Hat" - "item_name" "#TF_Item_Zombie_Armory" - "item_description" "#TF_Item_Zombie_Armory_Desc" - "item_slot" "misc" - "item_quality" "haunted" - "image_inventory" "backpack/player/items/all_class/earbuds" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player_per_class" - { - "scout" "models/player/items/scout/scout_zombie.mdl" - "sniper" "models/player/items/sniper/sniper_zombie.mdl" - "soldier" "models/player/items/soldier/soldier_zombie.mdl" - "demoman" "models/player/items/demo/demo_zombie.mdl" - "medic" "models/player/items/medic/medic_zombie.mdl" - "heavy" "models/player/items/heavy/heavy_zombie.mdl" - "spy" "models/player/items/spy/spy_zombie.mdl" - "engineer" "models/player/items/engineer/engineer_zombie.mdl" - "pyro" "models/player/items/pyro/pyro_zombie.mdl" - } - "drop_type" "none" - "used_by_classes" - { - "scout" "1" - "sniper" "1" - "soldier" "1" - "demoman" "1" - "medic" "1" - "heavy" "1" - "spy" "1" - "engineer" "1" - "pyro" "1" - } - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - } - } -} diff --git a/addon/gamemodes/teamfortress/gamemode/particle_manifest.lua b/addon/gamemodes/teamfortress/gamemode/particle_manifest.lua deleted file mode 100644 index 47d76e77c..000000000 --- a/addon/gamemodes/teamfortress/gamemode/particle_manifest.lua +++ /dev/null @@ -1,65 +0,0 @@ -print("Including TF2 Particles") -AddCSLuaFile() -game.AddParticles("particles/bigboom.pcf") -game.AddParticles("particles/blood_impact.pcf") -game.AddParticles("particles/blood_trail.pcf") -game.AddParticles("particles/bl_killtaunt.pcf") -game.AddParticles("particles/bombinomicon.pcf") -game.AddParticles("particles/buildingdamage.pcf") -game.AddParticles("particles/buildingdamage.pcf") -game.AddParticles("particles/bullet_tracers.pcf") -game.AddParticles("particles/burningplayer.pcf") -game.AddParticles("particles/cig_smoke.pcf") -game.AddParticles("particles/cinefx.pcf") -game.AddParticles("particles/class_fx.pcf") -game.AddParticles("particles/coin_spin.pcf") -game.AddParticles("particles/conc_stars.pcf") -game.AddParticles("particles/crit.pcf") -game.AddParticles("particles/dirty_explode.pcf") -game.AddParticles("particles/disguise.pcf") -game.AddParticles("particles/doomsday_fx.pcf") -game.AddParticles("particles/drg_bison.pcf") -game.AddParticles("particles/drg_cowmangler.pcf") -game.AddParticles("particles/drg_engineer.pcf") -game.AddParticles("particles/drg_pyro.pcf") -game.AddParticles("particles/dxhr_fx.pcf") -game.AddParticles("particles/explosion.pcf") -game.AddParticles("particles/eyeboss.pcf") -game.AddParticles("particles/flag_particles.pcf") -game.AddParticles("particles/flamethrower.pcf") -game.AddParticles("particles/flamethrower_mvm.pcf") -game.AddParticles("particles/halloween.pcf") -game.AddParticles("particles/harbor_fx.pcf") -game.AddParticles("particles/highfive.pcf") -game.AddParticles("particles/impact_fx.pcf") -game.AddParticles("particles/items_demo.pcf") -game.AddParticles("particles/items_engineer.pcf") -game.AddParticles("particles/item_fx.pcf") -game.AddParticles("particles/level_fx.pcf") -game.AddParticles("particles/medicgun_attrib.pcf") -game.AddParticles("particles/medicgun_beam.pcf") -game.AddParticles("particles/muzzle_flash.pcf") -game.AddParticles("particles/mvm.pcf") -game.AddParticles("particles/nailtrails.pcf") -game.AddParticles("particles/nemesis.pcf") -game.AddParticles("particles/npc_fx.pcf") -game.AddParticles("particles/player_recent_teleport.pcf") -game.AddParticles("particles/rain_custom.pcf") -game.AddParticles("particles/rocketbackblast.pcf") -game.AddParticles("particles/rocketjumptrail.pcf") -game.AddParticles("particles/rockettrail.pcf") -game.AddParticles("particles/scary_ghost.pcf") -game.AddParticles("particles/shellejection.pcf") -game.AddParticles("particles/smoke_blackbillow.pcf") -game.AddParticles("particles/smoke_blackbillow_hoodoo.pcf") -game.AddParticles("particles/soldierbuff.pcf") -game.AddParticles("particles/sparks.pcf") -game.AddParticles("particles/speechbubbles.pcf") -game.AddParticles("particles/stamp_spin.pcf") -game.AddParticles("particles/stickybomb.pcf") -game.AddParticles("particles/stormfront.pcf") -game.AddParticles("particles/teleported_fx.pcf") -game.AddParticles("particles/teleport_status.pcf") -game.AddParticles("particles/training.pcf") -game.AddParticles("particles/water.pcf") -game.AddParticles("particles/xms.pcf") diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/civilian.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/civilian.lua deleted file mode 100644 index 500700010..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/civilian.lua +++ /dev/null @@ -1,48 +0,0 @@ -CLASS.Name = "Civilian" -CLASS.Speed = 100 -CLASS.Health = 100 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_scoutred"), - surface.GetTextureID("hud/class_scoutblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_dead"), - surface.GetTextureID("hud/leaderboard_class_dead") - } -end - -CLASS.Loadout = {""} -CLASS.DefaultLoadout = {""} -CLASS.ModelName = "scout" - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_SCOUT_START, - [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, - [GIB_LEFTARM] = GIBS_SCOUT_START+3, - [GIB_RIGHTARM] = GIBS_SCOUT_START+4, - [GIB_TORSO] = GIBS_SCOUT_START+5, - [GIB_TORSO2] = GIBS_SCOUT_START+2, - [GIB_HEAD] = GIBS_SCOUT_START+6, - [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, - [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - }, - painsevere = { - }, - painsharp = { - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 0, -- primary - [TF_SECONDARY] = 0, -- secondary - [TF_METAL] = 0, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/demoman.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/demoman.lua deleted file mode 100644 index 8898944b6..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/demoman.lua +++ /dev/null @@ -1,61 +0,0 @@ -CLASS.Name = "Demoman" -CLASS.Speed = 93 -CLASS.Health = 175 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_demored"), - surface.GetTextureID("hud/class_demoblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_demo"), - surface.GetTextureID("hud/leaderboard_class_demo_d") - } -end - -CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} -CLASS.DefaultLoadout = {"TF_WEAPON_GRENADELAUNCHER", "TF_WEAPON_PIPEBOMBLAUNCHER", "TF_WEAPON_BOTTLE"} -CLASS.ModelName = "demo" - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_DEMOMAN_START, - [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, - [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, - [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, - [GIB_TORSO] = GIBS_DEMOMAN_START+4, - [GIB_HEAD] = GIBS_DEMOMAN_START+5, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/demoman_paincrticialdeath01.wav"), - Sound("vo/demoman_paincrticialdeath02.wav"), - Sound("vo/demoman_paincrticialdeath03.wav"), - Sound("vo/demoman_paincrticialdeath04.wav"), - Sound("vo/demoman_paincrticialdeath05.wav"), - }, - painsevere = { - Sound("vo/demoman_painsevere01.wav"), - Sound("vo/demoman_painsevere02.wav"), - Sound("vo/demoman_painsevere03.wav"), - Sound("vo/demoman_painsevere04.wav"), - }, - painsharp = { - Sound("vo/demoman_painsharp01.wav"), - Sound("vo/demoman_painsharp02.wav"), - Sound("vo/demoman_painsharp03.wav"), - Sound("vo/demoman_painsharp04.wav"), - Sound("vo/demoman_painsharp05.wav"), - Sound("vo/demoman_painsharp06.wav"), - Sound("vo/demoman_painsharp07.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 16, -- primary - [TF_SECONDARY] = 24, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/engineer.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/engineer.lua deleted file mode 100644 index fa20f82d7..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/engineer.lua +++ /dev/null @@ -1,71 +0,0 @@ -CLASS.Name = "Engineer" -CLASS.Speed = 100 -CLASS.Health = 125 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_engired"), - surface.GetTextureID("hud/class_engiblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_engineer"), - surface.GetTextureID("hud/leaderboard_class_engineer_d") - } -end - -CLASS.Loadout = {"tf_weapon_shotgun_primary", "tf_weapon_pistol", "tf_weapon_wrench", - "tf_weapon_pda_engineer_build", "tf_weapon_pda_engineer_destroy"} -CLASS.DefaultLoadout = {"TF_WEAPON_SHOTGUN_PRIMARY","TF_WEAPON_PISTOL","TF_WEAPON_WRENCH", - "TF_WEAPON_PDA_ENGINEER_BUILD","TF_WEAPON_PDA_ENGINEER_DESTROY"} -CLASS.ModelName = "engineer" - -CLASS.Buildings = {"OBJ_SENTRYGUN", "OBJ_DISPENSER", "OBJ_TELEPORTER"} - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_ENGINEER_START, - [GIB_RIGHTARM] = GIBS_ENGINEER_START+2, - [GIB_TORSO] = GIBS_ENGINEER_START+4, - [GIB_TORSO2] = GIBS_ENGINEER_START+1, - [GIB_EQUIPMENT1] = GIBS_ENGINEER_START+3, - [GIB_HEAD] = GIBS_ENGINEER_START+5, - [GIB_HEADGEAR1] = GIBS_ENGINEER_START+6, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/engineer_paincrticialdeath01.wav"), - Sound("vo/engineer_paincrticialdeath02.wav"), - Sound("vo/engineer_paincrticialdeath03.wav"), - Sound("vo/engineer_paincrticialdeath04.wav"), - Sound("vo/engineer_paincrticialdeath05.wav"), - Sound("vo/engineer_paincrticialdeath06.wav"), - }, - painsevere = { - Sound("vo/engineer_painsevere01.wav"), - Sound("vo/engineer_painsevere02.wav"), - Sound("vo/engineer_painsevere03.wav"), - Sound("vo/engineer_painsevere04.wav"), - Sound("vo/engineer_painsevere05.wav"), - Sound("vo/engineer_painsevere06.wav"), - Sound("vo/engineer_painsevere07.wav"), - }, - painsharp = { - Sound("vo/engineer_painsharp01.wav"), - Sound("vo/engineer_painsharp02.wav"), - Sound("vo/engineer_painsharp03.wav"), - Sound("vo/engineer_painsharp04.wav"), - Sound("vo/engineer_painsharp05.wav"), - Sound("vo/engineer_painsharp06.wav"), - Sound("vo/engineer_painsharp07.wav"), - Sound("vo/engineer_painsharp08.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 32, -- primary - [TF_SECONDARY] = 200, -- secondary - [TF_METAL] = 200, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/gmodplayer.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/gmodplayer.lua deleted file mode 100644 index 0c221c0a5..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/gmodplayer.lua +++ /dev/null @@ -1,61 +0,0 @@ --- Regular GMod player, as if you were playing sandbox - -if CLIENT then - CLASS.ScoreboardImage = { - surface.GetTextureID("vgui/modicon.vmt"), - } -end - -CLASS.Name = "GMod Player" -CLASS.Speed = 20 -CLASS.Health = 100 - -CLASS.AdditionalAmmo = { - Pistol = 256, - SMG1 = 256, - grenade = 5, - Buckshot = 64, - ["357"] = 32, - XBowBolt = 32, - AR2AltFire = 6, - AR2 = 100, - SMG1_Grenade = 6, -} - -CLASS.Loadout = { - "weapon_crowbar", - "weapon_pistol", - "weapon_smg1", - "weapon_frag", - "weapon_physcannon", - "weapon_crossbow", - "weapon_shotgun", - "weapon_357", - "weapon_rpg", - "weapon_ar2", - - "gmod_tool", - "gmod_camera", - "weapon_physgun", -} - -CLASS.ModelName = "scout" - -CLASS.IsHL2 = true - -if SERVER then - -function CLASS:Initialize() - local cl_playermodel = self:GetInfo("cl_playermodel") - local modelname = player_manager.TranslatePlayerModel(cl_playermodel) - util.PrecacheModel(modelname) - self:SetModel(modelname) - - local cl_defaultweapon = self:GetInfo("cl_defaultweapon") - - if self:HasWeapon(cl_defaultweapon) then - self:SelectWeapon(cl_defaultweapon) - end -end - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/heavy.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/heavy.lua deleted file mode 100644 index fda7a785b..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/heavy.lua +++ /dev/null @@ -1,129 +0,0 @@ -CLASS.Name = "Heavy" -CLASS.Speed = 77 -CLASS.Health = 300 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_heavyred"), - surface.GetTextureID("hud/class_heavyblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_heavy"), - surface.GetTextureID("hud/leaderboard_class_heavy_d") - } -end - -CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} -CLASS.DefaultLoadout = {"TF_WEAPON_MINIGUN","TF_WEAPON_SHOTGUN_HWG","TF_WEAPON_FISTS"} -CLASS.ModelName = "heavy" - ----------------------------------------- - -/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ - -CLASS.NoDeployedCrouchwalk = false - ----------------------------------------- - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_HEAVY_START, - [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, - [GIB_RIGHTARM] = GIBS_HEAVY_START+4, - [GIB_TORSO] = GIBS_HEAVY_START+5, - [GIB_TORSO2] = GIBS_HEAVY_START+3, - [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, - [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, - [GIB_HEAD] = GIBS_HEAVY_START+6, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/heavy_paincrticialdeath01.wav"), - Sound("vo/heavy_paincrticialdeath02.wav"), - Sound("vo/heavy_paincrticialdeath03.wav"), - }, - painsevere = { - Sound("vo/heavy_painsevere01.wav"), - Sound("vo/heavy_painsevere02.wav"), - Sound("vo/heavy_painsevere03.wav"), - }, - painsharp = { - Sound("vo/heavy_painsharp01.wav"), - Sound("vo/heavy_painsharp02.wav"), - Sound("vo/heavy_painsharp03.wav"), - Sound("vo/heavy_painsharp04.wav"), - Sound("vo/heavy_painsharp05.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 200, -- primary - [TF_SECONDARY] = 32, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} - -if SERVER then - -function CLASS:Initialize() - self.minigunfiretime = 0 -end - -function CLASS:PlayCustomGesture(anim, state) - local actname - if anim==10004 then - actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" - elseif anim==10005 then - actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" - end - - if actname then - act2 = getfenv()[actname] - Msg("Gesture : "..actname.." : "..tostring(act2).."\n") - self:RestartGesture(act2) - return true - end -end - -function CLASS:OverrideActivity(anim, state) - if self:GetNWBool("MinigunReady") then - local actname = "" - - local wstate = WeaponGestureTranslateTable[state] or "STAND" - if wstate=="STAND" then - actname = "ACT_MP_DEPLOYED_" - else - actname = "ACT_MP_"..wstate.."_DEPLOYED_" - end - - if state=="STAND" or wstate=="CROUCH" then - actname = actname.."IDLE" - else - actname = actname.."PRIMARY" - end - - return getfenv()[actname] - end -end - -end - --- This overrides the default primary walk animation speed while deployed as defined by the engine. -if CLIENT then - -function CLASS:ModifyMaxAnimSpeed(speed) - if self:GetNWBool("MinigunReady") then - return 12 - else - local w = self:GetActiveWeapon() - if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then - return 30 - end - end - return speed -end - -end - diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/medic.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/medic.lua deleted file mode 100644 index 3ab149841..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/medic.lua +++ /dev/null @@ -1,73 +0,0 @@ -CLASS.Name = "Medic" -CLASS.Speed = 107 -CLASS.Health = 150 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_medicred"), - surface.GetTextureID("hud/class_medicblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_medic"), - surface.GetTextureID("hud/leaderboard_class_medic_d") - } -end - -CLASS.Loadout = {"tf_weapon_syringegun_medic", "tf_weapon_medigun", "tf_weapon_bonesaw"} -CLASS.DefaultLoadout = {"TF_WEAPON_SYRINGEGUN_MEDIC","TF_WEAPON_MEDIGUN","TF_WEAPON_BONESAW"} -CLASS.ModelName = "medic" - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_MEDIC_START, - [GIB_RIGHTLEG] = GIBS_MEDIC_START+1, - [GIB_LEFTARM] = GIBS_MEDIC_START+3, - [GIB_RIGHTARM] = GIBS_MEDIC_START+4, - [GIB_TORSO] = GIBS_MEDIC_START+5, - [GIB_TORSO2] = GIBS_MEDIC_START+2, - [GIB_HEAD] = GIBS_MEDIC_START+6, - [GIB_HEADGEAR1] = GIBS_MEDIC_START+7, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/medic_paincrticialdeath01.wav"), - Sound("vo/medic_paincrticialdeath02.wav"), - Sound("vo/medic_paincrticialdeath03.wav"), - Sound("vo/medic_paincrticialdeath04.wav"), - }, - painsevere = { - Sound("vo/medic_painsevere01.wav"), - Sound("vo/medic_painsevere02.wav"), - Sound("vo/medic_painsevere03.wav"), - Sound("vo/medic_painsevere04.wav"), - }, - painsharp = { - Sound("vo/medic_painsharp01.wav"), - Sound("vo/medic_painsharp02.wav"), - Sound("vo/medic_painsharp03.wav"), - Sound("vo/medic_painsharp04.wav"), - Sound("vo/medic_painsharp05.wav"), - Sound("vo/medic_painsharp06.wav"), - Sound("vo/medic_painsharp07.wav"), - Sound("vo/medic_painsharp08.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 150, -- primary - [TF_SECONDARY] = 150, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} - -if SERVER then - -CLASS.HasMedicRegeneration = true - -function CLASS:Initialize() - self:SetNWInt("Ubercharge", 0) -end - -end diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/pyro.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/pyro.lua deleted file mode 100644 index 01513430d..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/pyro.lua +++ /dev/null @@ -1,83 +0,0 @@ -CLASS.Name = "Pyro" -CLASS.Speed = 100 -CLASS.Health = 175 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_pyrored"), - surface.GetTextureID("hud/class_pyroblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_pyro"), - surface.GetTextureID("hud/leaderboard_class_pyro_d") - } -end - -CLASS.Loadout = {"tf_weapon_flamethrower", "tf_weapon_shotgun_pyro", "tf_weapon_fireaxe"} -CLASS.DefaultLoadout = {"TF_WEAPON_FLAMETHROWER","TF_WEAPON_SHOTGUN_PYRO","TF_WEAPON_FIREAXE"} -CLASS.ModelName = "pyro" -CLASS.Fireproof = true - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_PYRO_START, - [GIB_RIGHTLEG] = GIBS_PYRO_START+1, - [GIB_LEFTARM] = GIBS_PYRO_START+2, - [GIB_RIGHTARM] = GIBS_PYRO_START+3, - [GIB_TORSO] = GIBS_PYRO_START+5, - [GIB_TORSO2] = GIBS_PYRO_START+4, - [GIB_EQUIPMENT1] = GIBS_PYRO_START+6, - [GIB_HEAD] = GIBS_PYRO_START+7, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/pyro_paincrticialdeath01.wav"), - Sound("vo/pyro_paincrticialdeath02.wav"), - Sound("vo/pyro_paincrticialdeath03.wav"), - }, - painsevere = { - Sound("vo/pyro_painsevere01.wav"), - Sound("vo/pyro_painsevere02.wav"), - Sound("vo/pyro_painsevere03.wav"), - Sound("vo/pyro_painsevere04.wav"), - Sound("vo/pyro_painsevere05.wav"), - Sound("vo/pyro_painsevere06.wav"), - }, - painsharp = { - Sound("vo/pyro_painsharp01.wav"), - Sound("vo/pyro_painsharp02.wav"), - Sound("vo/pyro_painsharp03.wav"), - Sound("vo/pyro_painsharp04.wav"), - Sound("vo/pyro_painsharp05.wav"), - Sound("vo/pyro_painsharp06.wav"), - Sound("vo/pyro_painsharp07.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 200, -- primary - [TF_SECONDARY] = 32, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} - -if SERVER then - -function CLASS:PlayCustomGesture(anim, state) - local actname - if anim==PLAYER_PREFIRE then - actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" - elseif anim==PLAYER_POSTFIRE then - actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" - end - - if actname then - act2 = _E[actname] - self:RestartGesture(act2) - return true - end -end - -end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/scout.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/scout.lua deleted file mode 100644 index 4b328a356..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/scout.lua +++ /dev/null @@ -1,67 +0,0 @@ -CLASS.Name = "Scout" -CLASS.Speed = 133 -CLASS.Health = 125 - -PrecacheParticleSystem("doublejump_puff") - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_scoutred"), - surface.GetTextureID("hud/class_scoutblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_scout"), - surface.GetTextureID("hud/leaderboard_class_scout_d") - } -end - -CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} -CLASS.DefaultLoadout = {"TF_WEAPON_SCATTERGUN", "TF_WEAPON_PISTOL_SCOUT", "TF_WEAPON_BAT"} -CLASS.ModelName = "scout" - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_SCOUT_START, - [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, - [GIB_LEFTARM] = GIBS_SCOUT_START+3, - [GIB_RIGHTARM] = GIBS_SCOUT_START+4, - [GIB_TORSO] = GIBS_SCOUT_START+5, - [GIB_TORSO2] = GIBS_SCOUT_START+2, - [GIB_HEAD] = GIBS_SCOUT_START+6, - [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, - [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/scout_paincrticialdeath01.wav"), - Sound("vo/scout_paincrticialdeath02.wav"), - Sound("vo/scout_paincrticialdeath03.wav"), - }, - painsevere = { - Sound("vo/scout_painsevere01.wav"), - Sound("vo/scout_painsevere02.wav"), - Sound("vo/scout_painsevere03.wav"), - Sound("vo/scout_painsevere04.wav"), - Sound("vo/scout_painsevere05.wav"), - Sound("vo/scout_painsevere06.wav"), - }, - painsharp = { - Sound("vo/scout_painsharp01.wav"), - Sound("vo/scout_painsharp02.wav"), - Sound("vo/scout_painsharp03.wav"), - Sound("vo/scout_painsharp04.wav"), - Sound("vo/scout_painsharp05.wav"), - Sound("vo/scout_painsharp06.wav"), - Sound("vo/scout_painsharp07.wav"), - Sound("vo/scout_painsharp08.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 32, -- primary - [TF_SECONDARY] = 36, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 1, -- grenades1 - [TF_GRENADES2] = 1, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/sniper.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/sniper.lua deleted file mode 100644 index 8f8e385d3..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/sniper.lua +++ /dev/null @@ -1,58 +0,0 @@ -CLASS.Name = "Sniper" -CLASS.Speed = 100 -CLASS.Health = 125 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_sniperred"), - surface.GetTextureID("hud/class_sniperblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_sniper"), - surface.GetTextureID("hud/leaderboard_class_sniper_d") - } -end - -CLASS.Loadout = {"tf_weapon_sniperrifle", "tf_weapon_smg", "tf_weapon_club"} -CLASS.DefaultLoadout = {"TF_WEAPON_SNIPERRIFLE", "TF_WEAPON_SMG", "TF_WEAPON_CLUB"} -CLASS.ModelName = "sniper" - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_SNIPER_START, - [GIB_RIGHTLEG] = GIBS_SNIPER_START+1, - [GIB_RIGHTARM] = GIBS_SNIPER_START+2, - [GIB_TORSO] = GIBS_SNIPER_START+3, - [GIB_HEAD] = GIBS_SNIPER_START+4, - [GIB_HEADGEAR1] = GIBS_SNIPER_START+5, - [GIB_HEADGEAR2] = GIBS_SNIPER_START+6, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/sniper_paincrticialdeath01.wav"), - Sound("vo/sniper_paincrticialdeath02.wav"), - Sound("vo/sniper_paincrticialdeath03.wav"), - Sound("vo/sniper_paincrticialdeath04.wav"), - }, - painsevere = { - Sound("vo/sniper_painsevere01.wav"), - Sound("vo/sniper_painsevere02.wav"), - Sound("vo/sniper_painsevere03.wav"), - Sound("vo/sniper_painsevere04.wav"), - }, - painsharp = { - Sound("vo/sniper_painsharp01.wav"), - Sound("vo/sniper_painsharp02.wav"), - Sound("vo/sniper_painsharp03.wav"), - Sound("vo/sniper_painsharp04.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 25, -- primary - [TF_SECONDARY] = 75, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 1, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/soldier.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/soldier.lua deleted file mode 100644 index d6b8bad92..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/soldier.lua +++ /dev/null @@ -1,65 +0,0 @@ -CLASS.Name = "Soldier" -CLASS.Speed = 80 -CLASS.Health = 200 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_soldierred"), - surface.GetTextureID("hud/class_soldierblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_soldier"), - surface.GetTextureID("hud/leaderboard_class_soldier_d") - } -end - -CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} -CLASS.DefaultLoadout = {"TF_WEAPON_ROCKETLAUNCHER", "TF_WEAPON_SHOTGUN_SOLDIER", "TF_WEAPON_SHOVEL"} -CLASS.ModelName = "soldier" - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_SOLDIER_START, - [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, - [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, - [GIB_TORSO] = GIBS_SOLDIER_START+5, - [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, - [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, - [GIB_HEAD] = GIBS_SOLDIER_START+6, - [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/soldier_paincrticialdeath01.wav"), - Sound("vo/soldier_paincrticialdeath02.wav"), - Sound("vo/soldier_paincrticialdeath03.wav"), - Sound("vo/soldier_paincrticialdeath04.wav"), - }, - painsevere = { - Sound("vo/soldier_painsevere01.wav"), - Sound("vo/soldier_painsevere02.wav"), - Sound("vo/soldier_painsevere03.wav"), - Sound("vo/soldier_painsevere04.wav"), - Sound("vo/soldier_painsevere05.wav"), - Sound("vo/soldier_painsevere06.wav"), - }, - painsharp = { - Sound("vo/soldier_painsharp01.wav"), - Sound("vo/soldier_painsharp02.wav"), - Sound("vo/soldier_painsharp03.wav"), - Sound("vo/soldier_painsharp04.wav"), - Sound("vo/soldier_painsharp05.wav"), - Sound("vo/soldier_painsharp06.wav"), - Sound("vo/soldier_painsharp07.wav"), - Sound("vo/soldier_painsharp08.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 20, -- primary - [TF_SECONDARY] = 32, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 0, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/spy.lua b/addon/gamemodes/teamfortress/gamemode/playerclasses/spy.lua deleted file mode 100644 index 14b36f004..000000000 --- a/addon/gamemodes/teamfortress/gamemode/playerclasses/spy.lua +++ /dev/null @@ -1,60 +0,0 @@ -CLASS.Name = "Spy" -CLASS.Speed = 100 -CLASS.Health = 125 - -if CLIENT then - CLASS.CharacterImage = { - surface.GetTextureID("hud/class_spyred"), - surface.GetTextureID("hud/class_spyblue") - } - CLASS.ScoreboardImage = { - surface.GetTextureID("hud/leaderboard_class_spy"), - surface.GetTextureID("hud/leaderboard_class_spy_d") - } -end - -CLASS.Loadout = {"tf_weapon_revolver", "tf_weapon_sapper", "tf_weapon_knife", "tf_weapon_pda_spy"} -CLASS.DefaultLoadout = {"TF_WEAPON_REVOLVER", "TF_WEAPON_KNIFE", "TF_WEAPON_PDA_SPY", "TF_WEAPON_INVIS"} -CLASS.ModelName = "spy" - -CLASS.Buildings = {"OBJ_ATTACHMENT_SAPPER"} - -CLASS.Gibs = { - [GIB_LEFTLEG] = GIBS_SPY_START, - [GIB_RIGHTLEG] = GIBS_SPY_START+1, - [GIB_LEFTARM] = GIBS_SPY_START+2, - [GIB_RIGHTARM] = GIBS_SPY_START+3, - [GIB_TORSO] = GIBS_SPY_START+5, - [GIB_TORSO2] = GIBS_SPY_START+4, - [GIB_HEAD] = GIBS_SPY_START+6, - [GIB_ORGAN] = GIBS_ORGANS_START, -} - -CLASS.Sounds = { - paincrticialdeath = { - Sound("vo/spy_paincrticialdeath01.wav"), - Sound("vo/spy_paincrticialdeath02.wav"), - Sound("vo/spy_paincrticialdeath03.wav"), - }, - painsevere = { - Sound("vo/spy_painsevere01.wav"), - Sound("vo/spy_painsevere02.wav"), - Sound("vo/spy_painsevere03.wav"), - Sound("vo/spy_painsevere04.wav"), - Sound("vo/spy_painsevere05.wav"), - }, - painsharp = { - Sound("vo/spy_painsharp01.wav"), - Sound("vo/spy_painsharp02.wav"), - Sound("vo/spy_painsharp03.wav"), - Sound("vo/spy_painsharp04.wav"), - }, -} - -CLASS.AmmoMax = { - [TF_PRIMARY] = 24, -- primary - [TF_SECONDARY] = 24, -- secondary - [TF_METAL] = 100, -- metal - [TF_GRENADES1] = 0, -- grenades1 - [TF_GRENADES2] = 1, -- grenades2 -} diff --git a/addon/gamemodes/teamfortress/gamemode/ply_extension.lua b/addon/gamemodes/teamfortress/gamemode/ply_extension.lua deleted file mode 100644 index 36ade5e2b..000000000 --- a/addon/gamemodes/teamfortress/gamemode/ply_extension.lua +++ /dev/null @@ -1,279 +0,0 @@ - --- General player extensions - -local meta = FindMetaTable( "Player" ) -if (!meta) then return end - -function RegisterStatType(obj, name) - local name_get = name - local name_set = "Set"..name - local name_add = "Add"..name - local name_umsg = "__playerSet"..name - - obj[name_get] = function(self) - if not self.Stats then self.Stats = {} end - return self.Stats[name] or 0 - end - - if SERVER then - obj[name_set] = function(self, val) - if not self.Stats then self.Stats = {} end - self.Stats[name] = val - umsg.Start(name_umsg) - umsg.Entity(self) - umsg.Long(val) - umsg.End() - end - - obj[name_add] = function(self, val) - self[name_set](self, self[name_get](self) + val) - end - else - usermessage.Hook(name_umsg, function(msg) - local self = msg:ReadEntity() - if not IsValid(self) or not self:IsPlayer() then return end - if not self.Stats then self.Stats = {} end - self.Stats[name] = msg:ReadLong() - end) - end -end - -RegisterStatType(meta, "Kills") -RegisterStatType(meta, "Assists") -RegisterStatType(meta, "Destructions") - -RegisterStatType(meta, "Captures") -RegisterStatType(meta, "Defenses") -RegisterStatType(meta, "Dominations") -RegisterStatType(meta, "Revenges") - -RegisterStatType(meta, "Healing") -RegisterStatType(meta, "Invulns") -RegisterStatType(meta, "Teleports") -RegisterStatType(meta, "Headshots") - -RegisterStatType(meta, "Backstabs") -RegisterStatType(meta, "Bonus") - --- Serverside - -if SERVER then - -if not meta.SetFrags0 then - meta.SetFrags0 = meta.SetFrags -end -function meta:SetFrags(n) - if not self.Stats then self.Stats = {} end - self.Stats.Points = n - self:SetFrags0(math.floor(self.Stats.Points)) -end - -function meta:AddFrags(n) - if not self.Stats then self.Stats = {} end - self.Stats.Points = (self.Stats.Points or self:Frags()) + n - self:SetFrags0(math.floor(self.Stats.Points)) -end - -function meta:Explode() - self.ShouldGib = true - umsg.Start("GibPlayer") - umsg.Long(self:UserID()) - umsg.Short(self.DeathFlags) - umsg.End() -end - -function meta:RandomSentence(group) - if self:IsHL2() then return end - - local class = self:GetPlayerClassTable() - if not class then return end - - --[[local tbl = class.Sounds[group] - self:EmitSound(tbl[math.random(1,#tbl)])]] - - self:EmitSound(Format("%s.%s", class.Name, group)) -end - -function meta:StripTFItems() - self:StripWeapons() - self:StripAmmo() - - if self.PlayerItemList then - for _,v in ipairs(self.PlayerItemList) do - v:Remove() - end - end -end - -function meta:StripHats() - for _,v in pairs(ents.FindByClass("tf_hat")) do - if v:GetOwner() == self then - v:Remove() - end - end - - for i=1,10 do - self:SetBodygroup(i,0) - end -end - -function meta:GiveTFAmmo(c, am, is_fraction) - if c==0 then return end - - if not self.AmmoMax then - if c>0 then - return self:GiveAmmo(c, am) - else - return self:RemoveAmmo(-c, am) - end - end - - local a = self:GetAmmoCount(am) - - if is_fraction then - if c ~= nil and not self:IsHL2() then - c = math.ceil(c * self.AmmoMax[am]) - else - c = 0 - end - end - - if c>0 then - c = math.min(self.AmmoMax[am] - a, c) - if c>0 then - self:GiveAmmo(c, am) - if am == TF_METAL then - umsg.Start("PlayerMetalBonus", self) - umsg.Short(c) - umsg.End() - end - return true - end - else - self:RemoveAmmo(-c, am) - if am == TF_METAL then - umsg.Start("PlayerMetalBonus", self) - umsg.Short(-c) - umsg.End() - end - end - - return false -end - -function meta:SetAmmoCount(c, am) - local a = self:GetAmmoCount(am) - - if c > a then - self:GiveAmmo(c - a, am) - elseif c < a then - self:RemoveAmmo(a - c, am) - end -end - -function meta:HasFullAmmo() - for k,v in pairs(self.AmmoMax or {}) do - if self:GetAmmoCount(k) < v then - return false - end - end - return true -end - -function meta:ResetAttributes() - local c = self:GetPlayerClassTable() - - self.TempAttributes = {} - self:ResetClassSpeed(c.Speed or 100) - self:ResetMaxHealth() - self.AmmoMax = table.Copy(c.AmmoMax or {}) -end - -end - --- Shared - -function meta:GetCrouchedWalkSpeed() - return self:GetNWFloat("CrouchedWalkSpeed") -end - -function meta:GetWalkSpeed() - return 1 -end - -function meta:GetRunSpeed() - return 1 -end - -function meta:GetDuckSpeed() - return self:GetNWFloat("TimeToDuck") -end - -function meta:GetUnDuckSpeed() - return self:GetNWFloat("TimeToUnDuck") -end - -function meta:IsHL2() - return self:GetNWBool("IsHL2") -end - -function meta:ShouldUseDefaultHull() - if self ~= nil then - if GetConVar("tf_use_hl_hull_size") then - return self:GetNWBool("IsHL2") or GetMapType(game.GetMap())=="hl2" or GetConVar("tf_use_hl_hull_size"):GetInt() == 1 - end - end -end - -function meta:GetTFItems() - local t = self:GetWeapons() - if self.PlayerItemList then - table.Add(t, self.PlayerItemList) - end - return t -end - -function meta:HasTFItem(name) - if not name then return false end - - for _,v in ipairs(self:GetTFItems()) do - if v.IsTFItem and v:GetItemData().name == name then - return true - end - end - - return false -end - ---[[ -if CLIENT then - -usermessage.Hook("SendWeaponAnim", function(msg) - local act = msg:ReadShort() - local seq = GAMEMODE.Viewmodels[1][2]:SelectWeightedSequence(act) - if seq>=0 then - GAMEMODE.Viewmodels[1][2]:ResetSequence(seq) - GAMEMODE.Viewmodels[1][2]:SetCycle(0) - end -end) - -end - -meta.SendWeaponAnim0 = meta.SendWeaponAnim - -function meta:SendWeaponAnim(act) - self:SendWeaponAnim0(act) - - if SERVER then - umsg.Start("SendWeaponAnim", self) - umsg.Short(act) - umsg.End() - else - local seq = GAMEMODE.Viewmodels[1][2]:SelectWeightedSequence(act) - if seq>=0 then - GAMEMODE.Viewmodels[1][2]:ResetSequence(seq) - GAMEMODE.Viewmodels[1][2]:ResetSequenceInfo() - end - end -end -]] diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/burnlevel.lua b/addon/gamemodes/teamfortress/gamemode/proxies/burnlevel.lua deleted file mode 100644 index 6b73ba55e..000000000 --- a/addon/gamemodes/teamfortress/gamemode/proxies/burnlevel.lua +++ /dev/null @@ -1 +0,0 @@ - function PROXY:Init(mat, kv) local var_blendmode = mat:FindVar("$detailblendmode") if var_blendmode then var_blendmode:SetIntValue(1) end local var_result = mat:FindVar(kv:GetString("resultVar") or "") if not var_result then return false end self.Result = var_result return true end function PROXY:OnBind(ent) if not self.Result then return end self.Result:SetFloatValue(ent:GetProxyVar("BurnLevel") or 0) end function PROXY:GetMaterial() if not self.Result then return end return self.Result:GetOwningMaterial() end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/modelglowcolor.lua b/addon/gamemodes/teamfortress/gamemode/proxies/modelglowcolor.lua deleted file mode 100644 index eaeaa0e0f..000000000 --- a/addon/gamemodes/teamfortress/gamemode/proxies/modelglowcolor.lua +++ /dev/null @@ -1 +0,0 @@ - local DefaultGlowColor = {1.0, 1.0, 1.0} --[[local ]] GlowColorTable = { { -- red {14.0, 1.0, 1.0}, -- crit {9.0, 4.0, 1.0}, -- minicrit }, { -- blue {1.0, 4.0, 14.0}, -- crit {2.0, 9.0, 9.0}, -- minicrit }, } function PROXY:Init(mat, kv) local var_result = mat:FindVar(kv:GetString("resultVar") or "") if not var_result then return false end self.Result = var_result return true end function PROXY:OnBind(ent) if not self.Result or not IsValid(ent) then return end local owner = (IsValid(ent.Player) and ent.Player) or ent local t = owner:GetProxyVar("CritTeam") local s = owner:GetProxyVar("CritStatus") if s and t and GlowColorTable[t] and GlowColorTable[t][s] then self.Result:SetVecValue(GlowColorTable[t][s], 3) else self.Result:SetVecValue(DefaultGlowColor, 3) end end function PROXY:GetMaterial() if not self.Result then return end return self.Result:GetOwningMaterial() end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/spy_invis.lua b/addon/gamemodes/teamfortress/gamemode/proxies/spy_invis.lua deleted file mode 100644 index 10d6c12f5..000000000 --- a/addon/gamemodes/teamfortress/gamemode/proxies/spy_invis.lua +++ /dev/null @@ -1 +0,0 @@ - local TempVector = {1.0, 1.0, 1.0} function PROXY:Init(mat, kv) local var_factor = mat:FindVar("$cloakfactor") local var_tint = mat:FindVar("$cloakcolortint") local var_refract = mat:FindVar("$refractamount") self.Factor = var_factor self.Tint = var_tint self.Refract = var_refract return true end function PROXY:OnBind(ent) if not self.Result then return end self.Factor:SetFloatValue(ent:GetProxyVar("CloakLevel") or 0) self.Refract:SetFloatValue(ent:GetProxyVar("CloakRefract") or 0.5) local tint = ent:GetProxyVar("CloakTint") if tint then TempVector[1] = tint[1] TempVector[2] = tint[2] TempVector[3] = tint[3] else TempVector[1] = 1.0 TempVector[2] = 1.0 TempVector[3] = 1.0 end self.Tint:SetVecValue(TempVector, 3) end function PROXY:GetMaterial() if not self.Factor then return end return self.Factor:GetOwningMaterial() end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/weapon_invis.lua b/addon/gamemodes/teamfortress/gamemode/proxies/weapon_invis.lua deleted file mode 100644 index ec7e8dd29..000000000 --- a/addon/gamemodes/teamfortress/gamemode/proxies/weapon_invis.lua +++ /dev/null @@ -1 +0,0 @@ - local TempVector = {1.0, 1.0, 1.0} function PROXY:Init(mat, kv) local var_factor = mat:FindVar("$cloakfactor") local var_tint = mat:FindVar("$cloakcolortint") local var_refract = mat:FindVar("$refractamount") self.Factor = var_factor self.Tint = var_tint self.Refract = var_refract return true end function PROXY:OnBind(ent) if not self.Result then return end if not IsValid(ent) then return end local owner = ent:GetOwner() if not IsValid(owner) then owner = (IsValid(ent.Player) and ent.Player) or ent end self.Factor:SetFloatValue(ent:GetProxyVar("CloakLevel") or 0) self.Refract:SetFloatValue(ent:GetProxyVar("CloakRefract") or 0.5) local tint = ent:GetProxyVar("CloakTint") if tint then TempVector[1] = tint[1] TempVector[2] = tint[2] TempVector[3] = tint[3] else TempVector[1] = 1.0 TempVector[2] = 1.0 TempVector[3] = 1.0 end self.Tint:SetVecValue(TempVector, 3) end function PROXY:GetMaterial() if not self.Factor then return end return self.Factor:GetOwningMaterial() end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/yellowlevel.lua b/addon/gamemodes/teamfortress/gamemode/proxies/yellowlevel.lua deleted file mode 100644 index 4ba0f7587..000000000 --- a/addon/gamemodes/teamfortress/gamemode/proxies/yellowlevel.lua +++ /dev/null @@ -1 +0,0 @@ - local JaratedColor = {2.0, 2.0, 0.7} local DefaultColor = {1.0, 1.0, 1.0} function PROXY:Init(mat, kv) local var_result = mat:FindVar(kv:GetString("resultVar") or "") if not var_result then return false end self.Result = var_result return true end function PROXY:OnBind(ent) if not self.Result then return end local owner = ent:GetOwner() if not IsValid(owner) then owner = (IsValid(ent.Player) and ent.Player) or ent end if owner:GetProxyVar("Jarated") then self.Result:SetVecValue(JaratedColor, 3) else self.Result:SetVecValue(DefaultColor, 3) end end function PROXY:GetMaterial() if not self.Result then return end return self.Result:GetOwningMaterial() end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shared.lua b/addon/gamemodes/teamfortress/gamemode/shared.lua deleted file mode 100644 index b42be447b..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shared.lua +++ /dev/null @@ -1,594 +0,0 @@ ---[[ -local old_include = include - -function include(name) - local time_start = SysTime() - old_include(name) - MsgN(Format("Included Lua file '%s', %f secs to load", name, SysTime() - time_start)) -end -]] -HOOK_WARNING_THRESHOLD = 0.1 - -local old_hook_call = hook.Call ---[[function hook.Call(name, gm, ...) - if HOOK_WARNING_THRESHOLD then - local time_start = SysTime() - local res = {old_hook_call(name, gm, ...)} - local time = SysTime() - time_start - - if time > HOOK_WARNING_THRESHOLD then - MsgFN("Warning: hook '%s' took %f seconds to execute!", name, time) - end - - return unpack(res) - else - return old_hook_call(name, gm, ...) - end -end]] - -if not util.PrecacheModel0 then - util.PrecacheModel0 = util.PrecacheModel -end - -function util.PrecacheModel(mdl) - if SERVER and game.SinglePlayer() then return end - return util.PrecacheModel0(mdl) -end - -include("tf_lang_module.lua") -tf_lang.Load("tf_english.txt") - -include("particle_manifest.lua") -include("vmatrix_extension.lua") - -include("shd_nwtable.lua") -include("shd_utils.lua") -include("shd_enums.lua") -include("tf_util_module.lua") -include("tf_item_module.lua") -include("tf_timer_module.lua") -include("tf_soundscript_module.lua") - -include("shd_objects.lua") -include("shd_attributes.lua") -include("shd_loadout.lua") -include("shd_extras.lua") -include("shd_workshop.lua") - -include("shd_competitive.lua") -include("shd_spec.lua") - ---include("shd_items_temp.lua") - -include("shd_maptypes.lua") -include("shd_playeranim.lua") - -include("shd_criticals.lua") - -include("shd_ragdolls.lua") - -include("shd_items_game.lua") - -tf_soundscript.Load("teamfortress/scripts/game_sounds_weapons_tf.txt") - -function GM:PostTFLibsLoaded() -end - -hook.Call("PostTFLibsLoaded", GM) - -GM.Name = "Team Fortress 2" -GM.Author = "_Kilburn; Fixed by wango911; Ported by Jcw87; Workshopped by Agent Agrimar" -GM.Email = "N/A" -GM.Website = "N/A" -GM.TeamBased = true -GM.Version = "1.0" - -GM.Data = {} - -DEFINE_BASECLASS("gamemode_sandbox") -DeriveGamemode("sandbox") -GM.IsSandboxDerived = true - -function GM:GetGameDescription() - return self.Name -end - -local VoiceMenuChatMessage = { - ["TLK_PLAYER_MEDIC"] = "#Voice_Menu_Medic", - ["TLK_PLAYER_THANKS"] = "#Voice_Menu_Thanks", - ["TLK_PLAYER_GO"] = "#Voice_Menu_Go", - ["TLK_PLAYER_MOVEUP"] = "#Voice_Menu_MoveUp", - ["TLK_PLAYER_LEFT"] = "#Voice_Menu_Left", - ["TLK_PLAYER_RIGHT"] = "#Voice_Menu_Right", - ["TLK_PLAYER_YES"] = "#Voice_Menu_Yes", - ["TLK_PLAYER_NO"] = "#Voice_Menu_No", - ["TLK_PLAYER_INCOMING"] = "#Voice_Menu_Incoming", - ["TLK_PLAYER_CLOAKEDSPY"] = "#Voice_Menu_CloakedSpy", - ["TLK_PLAYER_SENTRYAHEAD"] = "#Voice_Menu_SentryAhead", - ["TLK_PLAYER_ACTIVATECHARGE"] = "#Voice_Menu_ActivateCharge", - ["TLK_PLAYER_HELP"] = "#Voice_Menu_Help", -} - -local VoiceMenuGesture = { - ["TLK_PLAYER_MEDIC"] = ACT_MP_GESTURE_VC_HANDMOUTH, - ["TLK_PLAYER_THANKS"] = ACT_MP_GESTURE_VC_THUMBSUP, - ["TLK_PLAYER_GO"] = ACT_MP_GESTURE_VC_FINGERPOINT, - ["TLK_PLAYER_MOVEUP"] = ACT_MP_GESTURE_VC_FINGERPOINT, - ["TLK_PLAYER_LEFT"] = ACT_MP_GESTURE_VC_FINGERPOINT, - ["TLK_PLAYER_RIGHT"] = ACT_MP_GESTURE_VC_FINGERPOINT, - ["TLK_PLAYER_YES"] = nil, - ["TLK_PLAYER_NO"] = nil, - ["TLK_PLAYER_INCOMING"] = ACT_MP_GESTURE_VC_HANDMOUTH, - ["TLK_PLAYER_CLOAKEDSPY"] = nil, - ["TLK_PLAYER_SENTRYAHEAD"] = ACT_MP_GESTURE_VC_FINGERPOINT, - ["TLK_PLAYER_TELEPORTERHERE"] = nil, - ["TLK_PLAYER_DISPENSERHERE"] = nil, - ["TLK_PLAYER_SENTRYHERE"] = nil, - ["TLK_PLAYER_ACTIVATECHARGE"] = nil, - ["TLK_PLAYER_CHARGEREADY"] = ACT_MP_GESTURE_VC_THUMBSUP, - ["TLK_PLAYER_HELP"] = ACT_MP_GESTURE_VC_HANDMOUTH, - ["TLK_PLAYER_BATTLECRY"] = ACT_MP_GESTURE_VC_FISTPUMP, - ["TLK_PLAYER_CHEERS"] = ACT_MP_GESTURE_VC_FISTPUMP, - ["TLK_PLAYER_JEERS"] = nil, - ["TLK_PLAYER_POSITIVE"] = nil, - ["TLK_PLAYER_NEGATIVE"] = nil, - ["TLK_PLAYER_NICESHOT"] = ACT_MP_GESTURE_VC_THUMBSUP, - ["TLK_PLAYER_GOODJOB"] = ACT_MP_GESTURE_VC_THUMBSUP, -} - -concommand.Remove("__svspeak") - ---[[concommand.Add( "changeteam", function( pl, cmd, args ) - --if tonumber( args[ 1 ] ) >= 5 then return end - hook.Call( "PlayerRequestTeam", GAMEMODE, pl, tonumber( args[ 1 ] ) ) - print("changeteam?? to what, oh, team "..tonumber( args[ 1 ] ).."!") -end )]] - -if SERVER then - -util.AddNetworkString("ActivateTauntCam") -util.AddNetworkString("DeActivateTauntCam") - -concommand.Add("__svspeak", function(pl,_,args) - if pl:Speak(args[1]) then - if VoiceMenuGesture[args[1]] then - pl:DoAnimationEvent(VoiceMenuGesture[args[1]], true) - end - - umsg.Start("TFPlayerVoice") - umsg.Entity(pl) - umsg.String(args[1]) - umsg.End() - end -end) - -else - -usermessage.Hook("TFPlayerVoice", function(msg) - local pl = msg:ReadEntity() - local voice = msg:ReadString() - - if not IsValid(pl) or not pl:IsPlayer() then return end - if pl:Team() ~= TEAM_SPECTATOR and pl:Team() ~= LocalPlayer():Team() then return end - - local v = VoiceMenuChatMessage[voice] - if not v then return end - - chat.AddText( - team.GetColor(pl:Team()), - Format("(%s) %s", tf_lang.GetRaw("#Voice"), pl:GetName()), - color_white, - Format(": %s", tf_lang.GetRaw(v)) - ) -end) - -end - -GIBS_DEMOMAN_START = 1 -GIBS_ENGINEER_START = 7 -GIBS_HEAVY_START = 14 -GIBS_MEDIC_START = 21 -GIBS_PYRO_START = 29 -GIBS_SCOUT_START = 37 -GIBS_SNIPER_START = 46 -GIBS_SOLDIER_START = 53 -GIBS_SPY_START = 61 -GIBS_ORGANS_START = 68 -GIBS_SILLY_START = 69 -GIBS_LAST = 87 - -GIB_UNKNOWN = -1 -GIB_HAT = 0 -GIB_LEFTLEG = 1 -GIB_RIGHTLEG = 2 -GIB_LEFTARM = 3 -GIB_RIGHTARM = 4 -GIB_TORSO = 5 -GIB_TORSO2 = 6 -GIB_EQUIPMENT1 = 7 -GIB_EQUIPMENT2 = 8 -GIB_HEAD = 9 -GIB_HEADGEAR1 = 10 -GIB_HEADGEAR2 = 11 -GIB_ORGAN = 12 - -TEAM_RED = 1 -TEAM_BLU = 2 -TEAM_HIDDEN = 3 -TEAM_NEUTRAL = 4 - -TeamSecondaryColors = {} -function SetTeamSecondaryColor(t, c) - TeamSecondaryColors[t] = c -end - -function GetTeamSecondaryColor(t) - return TeamSecondaryColors[t] or team.GetColor(t) -end - -function GM:CreateTeams() - team.SetUp(TEAM_RED, "RED", Color(255, 64, 64)) - SetTeamSecondaryColor(TEAM_RED, Color(180, 92, 77)) - team.SetSpawnPoint(TEAM_RED, "info_player_start") - - team.SetUp(TEAM_BLU, "BLU", Color(153, 204, 255)) - SetTeamSecondaryColor(TEAM_BLU, Color(104, 124, 155)) - team.SetSpawnPoint(TEAM_BLU, "info_player_start") - - team.SetUp(TEAM_NEUTRAL, "NEUTRAL", Color(110, 255, 80)) - SetTeamSecondaryColor(TEAM_NEUTRAL, Color(74, 130, 54)) - team.SetSpawnPoint(TEAM_NEUTRAL, "info_player_start") - - team.SetUp(TEAM_SPECTATOR, "Spectator", Color(204, 204, 204)) - SetTeamSecondaryColor(TEAM_SPECTATOR, Color(255, 255, 255)) - team.SetSpawnPoint(TEAM_SPECTATOR, "worldspawn") - -end - -function GM:EntityName(ent, nolocalize) - if ent then - if ent:IsPlayer() and ent:IsValid() then - return ent:Name() - elseif ent:IsValid() and list.Get("NPC")[ent:GetClass()] and list.Get("NPC")[ent:GetClass()].Name then - return list.Get("NPC")[ent:GetClass()].Name - elseif ent:IsValid() and scripted_ents.GetList()[ent:GetClass()] and scripted_ents.GetList()[ent:GetClass()].t and scripted_ents.GetList()[ent:GetClass()].t.PrintName then - return scripted_ents.GetList()[ent:GetClass()].t.PrintName - elseif ent:IsValid() then - return "#"..ent:GetClass() - else - return "" - end - end - return "" -end - -function GM:EntityDeathnoticeName(ent, nolocalize) - if ent:IsWeapon() then - ent = ent:GetOwner() - end - if ent.GetDeathnoticeName then - return ent:GetDeathnoticeName(nolocalize) - else - return self:EntityName(ent, nolocalize) - end -end - -function GM:EntityTargetIDName(ent, nolocalize) - if ent.GetTargetIDName then - return ent:GetTargetIDName(nolocalize) - else - return self:EntityName(ent, nolocalize) - end -end - -function GM:EntityTeam(ent) - if not ent or not ent:IsValid() then return TEAM_NEUTRAL end - - if type(ent.Team)=="function" then - return ent:Team() - elseif isstring(ent.Team) and (ent.Team == "RED" or ent.Team == "BLU" or string.sub(ent:GetModel(), 1, 12) == "models/robo/") then - if ent.Team == "RED" then - return TEAM_RED - elseif ent.Team == "BLU" then - return TEAM_BLU - elseif string.sub(ent:GetModel(), 1, 12) == "models/robo/" then - return TEAM_SPECTATOR - end - else - local t = ent:GetNWInt("Team") or 0 - if t>=1 then - return t - else - t = ent:GetNPCData().team - if not t and IsValid(ent:GetOwner()) then - return self:EntityTeam(ent:GetOwner()) - else - if type(t)=="function" then - return t() or TEAM_NEUTRAL - else - return t or TEAM_NEUTRAL - end - end - end - end -end - -function GM:EntityID(ent) - if ent:IsPlayer() then - return ent:UserID() - elseif ent.DeathNoticeEntityID then - return -ent.DeathNoticeEntityID - else - return 0 - end -end - -function ParticleSuffix(t) - if t==TEAM_BLU then return "blue" - else return "red" - end -end - -function GM:ShouldCollide(ent1, ent2) - if not IsValid(ent1) or not IsValid(ent2) then - return true - end - - if ent1.ShouldCollide then - local c = ent1:ShouldCollide(ent2) - if c ~= nil then return c end - end - - if ent2.ShouldCollide then - local c = ent2:ShouldCollide(ent1) - if c ~= nil then return c end - end - - if IsValid(ent1:GetOwner()) and (ent1:GetOwner():IsPlayer() or ent1:GetOwner():IsNPC()) then ent1 = ent1:GetOwner() end - if IsValid(ent2:GetOwner()) and (ent2:GetOwner():IsPlayer() or ent2:GetOwner():IsNPC()) then ent2 = ent2:GetOwner() end - - local t1 = self:EntityTeam(ent1) - local t2 = self:EntityTeam(ent2) - - if (ent1:IsPlayer() or ent2:IsPlayer()) and (t1==TEAM_RED or t1==TEAM_BLU) and t1==t2 then - return false - end - - if CLIENT then - local c1, c2 = ent1:GetClass(), ent2:GetClass() - - if c2=="class C_HL2MPRagdoll" then - c1,c2=c2,c1 - end - - if (c1=="class C_HL2MPRagdoll" or c1=="class CLuaEffect") and c2=="class CLuaEffect" then - return false - end - end - - --[[ - if ent2:GetClass()=="phys_bone_follower" then - ent1,ent2 = ent2,ent1 - end]] - - return true -end - -HumanGibs = { - "models/player/gibs/demogib001.mdl", -- 1 - "models/player/gibs/demogib002.mdl", - "models/player/gibs/demogib003.mdl", - "models/player/gibs/demogib004.mdl", - "models/player/gibs/demogib005.mdl", - "models/player/gibs/demogib006.mdl", - "models/player/gibs/engineergib001.mdl", -- 7 - "models/player/gibs/engineergib002.mdl", - "models/player/gibs/engineergib003.mdl", - "models/player/gibs/engineergib004.mdl", - "models/player/gibs/engineergib005.mdl", - "models/player/gibs/engineergib006.mdl", - "models/player/gibs/engineergib007.mdl", - "models/player/gibs/heavygib001.mdl", -- 14 - "models/player/gibs/heavygib002.mdl", - "models/player/gibs/heavygib003.mdl", - "models/player/gibs/heavygib004.mdl", - "models/player/gibs/heavygib005.mdl", - "models/player/gibs/heavygib006.mdl", - "models/player/gibs/heavygib007.mdl", - "models/player/gibs/medicgib001.mdl", -- 21 - "models/player/gibs/medicgib002.mdl", - "models/player/gibs/medicgib003.mdl", - "models/player/gibs/medicgib004.mdl", - "models/player/gibs/medicgib005.mdl", - "models/player/gibs/medicgib006.mdl", - "models/player/gibs/medicgib007.mdl", - "models/player/gibs/medicgib008.mdl", - "models/player/gibs/pyrogib001.mdl", -- 29 - "models/player/gibs/pyrogib002.mdl", - "models/player/gibs/pyrogib003.mdl", - "models/player/gibs/pyrogib004.mdl", - "models/player/gibs/pyrogib005.mdl", - "models/player/gibs/pyrogib006.mdl", - "models/player/gibs/pyrogib007.mdl", - "models/player/gibs/pyrogib008.mdl", - "models/player/gibs/scoutgib001.mdl", -- 37 - "models/player/gibs/scoutgib002.mdl", - "models/player/gibs/scoutgib003.mdl", - "models/player/gibs/scoutgib004.mdl", - "models/player/gibs/scoutgib005.mdl", - "models/player/gibs/scoutgib006.mdl", - "models/player/gibs/scoutgib007.mdl", - "models/player/gibs/scoutgib008.mdl", - "models/player/gibs/scoutgib009.mdl", - "models/player/gibs/snipergib001.mdl", -- 46 - "models/player/gibs/snipergib002.mdl", - "models/player/gibs/snipergib003.mdl", - "models/player/gibs/snipergib004.mdl", - "models/player/gibs/snipergib005.mdl", - "models/player/gibs/snipergib006.mdl", - "models/player/gibs/snipergib007.mdl", - "models/player/gibs/soldiergib001.mdl", -- 53 - "models/player/gibs/soldiergib002.mdl", - "models/player/gibs/soldiergib003.mdl", - "models/player/gibs/soldiergib004.mdl", - "models/player/gibs/soldiergib005.mdl", - "models/player/gibs/soldiergib006.mdl", - "models/player/gibs/soldiergib007.mdl", - "models/player/gibs/soldiergib008.mdl", - "models/player/gibs/spygib001.mdl", -- 61 - "models/player/gibs/spygib002.mdl", - "models/player/gibs/spygib003.mdl", - "models/player/gibs/spygib004.mdl", - "models/player/gibs/spygib005.mdl", - "models/player/gibs/spygib006.mdl", - "models/player/gibs/spygib007.mdl", - "models/player/gibs/random_organ.mdl", -- 68 - "models/player/gibs/gibs_balloon.mdl", -- 69 - "models/player/gibs/gibs_bolt.mdl", - "models/player/gibs/gibs_boot.mdl", - "models/player/gibs/gibs_burger.mdl", - "models/player/gibs/gibs_can.mdl", - "models/player/gibs/gibs_clock.mdl", - "models/player/gibs/gibs_duck.mdl", - "models/player/gibs/gibs_fish.mdl", - "models/player/gibs/gibs_gear1.mdl", - "models/player/gibs/gibs_gear2.mdl", - "models/player/gibs/gibs_gear3.mdl", - "models/player/gibs/gibs_gear4.mdl", - "models/player/gibs/gibs_gear5.mdl", - "models/player/gibs/gibs_hubcap.mdl", - "models/player/gibs/gibs_licenseplate.mdl", - "models/player/gibs/gibs_spring1.mdl", - "models/player/gibs/gibs_spring2.mdl", - "models/player/gibs/gibs_teeth.mdl", - "models/player/gibs/gibs_tire.mdl", - -- 88 -} - -NPCModels = { - "models/Humans/Group01/female_01.mdl", - "models/Humans/Group01/female_02.mdl", - "models/Humans/Group01/female_03.mdl", - "models/Humans/Group01/female_04.mdl", - "models/Humans/Group01/female_05.mdl", - "models/Humans/Group01/female_06.mdl", - "models/Humans/Group01/female_07.mdl", - "models/Humans/Group01/male_01.mdl", - "models/Humans/Group01/male_02.mdl", - "models/Humans/Group01/male_03.mdl", - "models/Humans/Group01/male_04.mdl", - "models/Humans/Group01/male_05.mdl", - "models/Humans/Group01/male_06.mdl", - "models/Humans/Group01/male_07.mdl", - "models/Humans/Group01/male_08.mdl", - "models/Humans/Group01/male_09.mdl", - - "models/Humans/Group02/female_01.mdl", - "models/Humans/Group02/female_02.mdl", - "models/Humans/Group02/female_03.mdl", - "models/Humans/Group02/female_04.mdl", - "models/Humans/Group02/female_05.mdl", - "models/Humans/Group02/female_06.mdl", - "models/Humans/Group02/female_07.mdl", - "models/Humans/Group02/male_01.mdl", - "models/Humans/Group02/male_02.mdl", - "models/Humans/Group02/male_03.mdl", - "models/Humans/Group02/male_04.mdl", - "models/Humans/Group02/male_05.mdl", - "models/Humans/Group02/male_06.mdl", - "models/Humans/Group02/male_07.mdl", - "models/Humans/Group02/male_08.mdl", - "models/Humans/Group02/male_09.mdl", - - "models/Humans/Group03/female_01.mdl", - "models/Humans/Group03/female_02.mdl", - "models/Humans/Group03/female_03.mdl", - "models/Humans/Group03/female_04.mdl", - "models/Humans/Group03/female_05.mdl", - "models/Humans/Group03/female_06.mdl", - "models/Humans/Group03/female_07.mdl", - "models/Humans/Group03/male_01.mdl", - "models/Humans/Group03/male_02.mdl", - "models/Humans/Group03/male_03.mdl", - "models/Humans/Group03/male_04.mdl", - "models/Humans/Group03/male_05.mdl", - "models/Humans/Group03/male_06.mdl", - "models/Humans/Group03/male_07.mdl", - "models/Humans/Group03/male_08.mdl", - "models/Humans/Group03/male_09.mdl", - - "models/Humans/Group03m/female_01.mdl", - "models/Humans/Group03m/female_02.mdl", - "models/Humans/Group03m/female_03.mdl", - "models/Humans/Group03m/female_04.mdl", - "models/Humans/Group03m/female_05.mdl", - "models/Humans/Group03m/female_06.mdl", - "models/Humans/Group03m/female_07.mdl", - "models/Humans/Group03m/male_01.mdl", - "models/Humans/Group03m/male_02.mdl", - "models/Humans/Group03m/male_03.mdl", - "models/Humans/Group03m/male_04.mdl", - "models/Humans/Group03m/male_05.mdl", - "models/Humans/Group03m/male_06.mdl", - "models/Humans/Group03m/male_07.mdl", - "models/Humans/Group03m/male_08.mdl", - "models/Humans/Group03m/male_09.mdl", - - "models/alyx.mdl", - "models/barney.mdl", - "models/breen.mdl", - "models/eli.mdl", - "models/gman.mdl", - "models/gman_high.mdl", - "models/kleiner.mdl", - "models/monk.mdl", - "models/mossman.mdl", - "models/vortigaunt.mdl", -} - ---[[ -for _,v in pairs(NPCModels) do - util.PrecacheModel(v) -end]] - -PlayerModels = { - "models/player/demo.mdl", - "models/player/engineer.mdl", - "models/player/heavy.mdl", - "models/player/medic.mdl", - "models/player/pyro.mdl", - "models/player/scout.mdl", - "models/player/sniper.mdl", - "models/player/soldier.mdl", - "models/player/spy.mdl", -} - -AnimationModels = { - "models/weapons/c_models/c_demo_animations.mdl", - "models/weapons/c_models/c_heavy_animations.mdl", - "models/weapons/c_models/c_medic_animations.mdl", - "models/weapons/c_models/c_pyro_animations.mdl", - "models/weapons/c_models/c_scout_animations.mdl", - "models/weapons/c_models/c_sniper_animations.mdl", - "models/weapons/c_models/c_soldier_animations.mdl", - "models/weapons/c_models/c_spy_animations.mdl", -} - -include("shd_precaches.lua") -include("shd_movement.lua") -include("shd_npcdata.lua") -include("shd_playerclasses.lua") -include("ply_extension.lua") -include("ent_extension.lua") -include("shd_playerstates.lua") - -include("shd_maphooks.lua") - -concommand.Add("+inspect", function(pl) - pl:SetNWString("inspect", "inspecting_start") -end) - -concommand.Add("-inspect", function(pl) - pl:SetNWString("inspect", "inspecting_released") - timer.Simple( 0.02, function() pl:SetNWString("inspect", "inspecting_done") end ) -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_extras.lua b/addon/gamemodes/teamfortress/gamemode/shd_extras.lua deleted file mode 100644 index 33ceea22e..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_extras.lua +++ /dev/null @@ -1,1290 +0,0 @@ -MsgN("Loading extra items and attributes") - -if CLIENT then - -local lang_data = [["lang" -{ -"Language" "English" -"Tokens" -{ - -"Attrib_Player_TurnGay" "Imbued with an ancestral gey power" -"Attrib_Player_TurnGay2" "On Hit: Victim turns gay\nGay players have a 50% probability\nto inflict negative damage" -"Attrib_Shoots_Nukes" "Shoots massive nuclear payloads.\nHow can they even fit in there?" -"Attrib_Owner_Receives_Minicrits" "All incoming hits are mini-crits" -"Attrib_CritVsNoclip" "100% critical hits vs noclipping players" -"Attrib_EnableCrotchshots" "Crits on an accurate shot between legs" -"Attrib_AltFire_Is_Vampire" "Alt-Fire: +3 health on hit\n-75% damage done" -"Attrib_MilkDuration" "On Hit: Mad Milk applied to target for %s1 seconds" -"Attrib_BouncyGrenades" "Fires bouncy round grenades" -"Attrib_RadialHealOnHit" "On Hit: +%s1 health on nearby teammates" -"Attrib_BurnDuration" "On Hit: Victim catches fire for %s1 seconds" - -"Attrib_DmgTaken_From_Fall_Reduced" "+%s1% fall damage resistance on wearer" -"Attrib_DmgTaken_From_Fall_Increased" "%s1% fall damage vulnerability on wearer" -"Attrib_DmgTaken_From_Phys_Reduced" "+%s1% physics damage resistance on wearer" -"Attrib_DmgTaken_From_Phys_Increased" "%s1% physics damage vulnerability on wearer" -"Attrib_JumpHeight_Bonus" "+%s1% higher jump height on wearer" -"Attrib_JumpHeight_Penalty" "%s1% lower jump height on wearer" - -"Attrib_Charge_Is_Unstoppable" "Running into an enemy does not end a charge" -"Attrib_Charge_Rate_Reduced" "+%s1% longer cooldown" -"Attrib_Charge_Rate_Increased" "%s1% shorter cooldown" - -"Attrib_Rocket_Gravity" "Fires heavy rockets that arc over distances\nRockets can be charged, increasing their velocity" - -"Attrib_StoutShako_Launcher" "Stout Shako for two refined!" - -"TF_Unique_GayPride" "Sexo de Pene Gay" -"TF_Unique_GayPride_Desc" "Presumably stolen from an obscure\nbranch of the Spanish Inquisition, this\nweapon is imbued with sheer gey power" -"TF_Unique_Ludmila" "Ludmila" -"TF_Unique_Bazooka" "Bazooka" - -"TF_Test_SyringeGun1" "Syringe Gun Test 1" -"TF_Test_GrenadeLauncher1" "Grenade Launcher Test 1" - - -"TF_Set_Demopan_Trader" "The Demopan's Trading Kit" -} -} -]] - -include("tf_lang_module.lua") -tf_lang.Parse(lang_data) - -end - -local item_data = [["items_game" -{ - "qualities" - { - } - "items" - { - "633" - { - "name" "The Sexo De Pene Gay" - "hidden" "1" - "item_class" "tf_weapon_rocketlauncher" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Unique_GayPride" - "item_description" "#TF_Unique_GayPride_Desc" - "item_slot" "primary" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_directhit/c_directhit" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/c_models/c_directhit/c_directhit.mdl" - "attach_to_hands" "1" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "hidden turn gay" - { - "attribute_class" "turn_gey" - "value" "1" - } - "turn player gay 2" - { - "attribute_class" "turn_gey_2" - "value" "1" - } - "owner receives minicrits" - { - "attribute_class" "owner_receive_minicrits" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "634" - { - "name" "Ludmila" - "item_class" "tf_weapon_minigun" - "craft_class" "weapon" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "item_type_name" "#TF_Weapon_Minigun" - "item_name" "#TF_Unique_Ludmila" - "item_slot" "primary" - "item_logname" "ludmila" - "item_iconname" "natascha" - "image_inventory" "backpack/weapons/c_models/c_w_ludmila/c_w_ludmila" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_minigun.mdl" - "attach_to_hands" "0" - "item_quality" "unique" - "min_ilevel" "5" - "max_ilevel" "5" - "used_by_classes" - { - "heavy" "1" - } - "attributes" - { - "alt-fire is vampire" - { - "attribute_class" "set_altfire_mode" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_vs_burning" "1" - "wpn_uses_aimmode" "1" - "only_on_minigun" "1" - } - "visuals" - { - "sound_reload" "Weapon_Minifun.Reload" - "sound_empty" "Weapon_Minifun.ClipEmpty" - "sound_double_shot" "Weapon_Minifun.Fire" - "sound_special1" "Weapon_Minifun.WindUp" - "sound_special2" "Weapon_Minifun.WindDown" - "sound_special3" "Weapon_Minifun.Spin" - "sound_burst" "Weapon_Minifun.FireCrit" - "skin" "2" - "attached_model" - { - "world_model" "1" - "model" "models/weapons/c_models/c_w_ludmila/c_w_ludmila.mdl" - } - "attached_model" - { - "view_model" "1" - "model" "models/weapons/c_models/c_v_ludmila/c_v_ludmila.mdl" - } - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "635" - { - "name" "The Walkabout" - "item_class" "tf_weapon_sniperrifle" - "capabilities" - { - "nameable" "1" - "can_gift_wrap" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_SniperRifle" - "item_name" "#TF_Unique_Achievement_SniperRifle" - "item_slot" "primary" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_sniperrifle" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_sniperrifle.mdl" - "used_by_classes" - { - "sniper" "1" - } - "attributes" - { - "zoom speed mod disabled" - { - "attribute_class" "unimplemented_mod_zoom_speed_disabled" - "value" "1" - } - "sniper no charge" - { - "attribute_class" "unimplemented_mod_sniper_no_charge" - "value" "1" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "wpn_uses_aimmode" "1" - "only_on_srifle" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "636" - { - "name" "Test 1 TF_WEAPON_SYRINGEGUN_MEDIC" - "item_class" "tf_weapon_syringegun_medic" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_SyringeGun" - "item_name" "#TF_Test_SyringeGun1" - "item_slot" "primary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_syringegun" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_syringegun.mdl" - "used_by_classes" - { - "medic" "1" - } - "attributes" - { - "radial heal on hit" - { - "attribute_class" "radial_onhit_addhealth" - "value" "15" - } - "damage bonus" - { - "attribute_class" "mult_dmg" - "value" "3" - } - "fire rate penalty" - { - "attribute_class" "mult_postfiredelay" - "value" "3" - } - "clip size penalty" - { - "attribute_class" "mult_clipsize" - "value" "0.38" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_rapid" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "attrib_medic" "1" - } - "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" - "drop_sound" "ui/item_light_gun_drop.wav" - } - "637" - { - "name" "Test 1 TF_WEAPON_GRENADELAUNCHER" - "item_class" "tf_weapon_grenadelauncher" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_GrenadeLauncher" - "item_name" "#TF_Test_GrenadeLauncher1" - "item_slot" "secondary" - "item_quality" "unique" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_grenadelauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_grenadelauncher.mdl" - "used_by_classes" - { - "demoman" "1" - } - "attributes" - { - "bouncy grenades" - { - "attribute_class" "set_grenade_mode" - "value" "1" - } - "Blast radius increased" - { - "attribute_class" "mult_explosion_radius" - "value" "1.15" - } - "Projectile range decreased" - { - "attribute_class" "mult_projectile_range" - "value" "0.75" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_lobs_projectiles" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - "638" - { - "name" "The Bazooka" - "item_class" "tf_weapon_rocketlauncher" - "capabilities" - { - "nameable" "1" - } - "show_in_armory" "1" - "armory_desc" "stockitem" - "item_type_name" "#TF_Weapon_RocketLauncher" - "item_name" "#TF_Unique_Bazooka" - "item_slot" "primary" - "item_quality" "unique" - "propername" "1" - "min_ilevel" "1" - "max_ilevel" "1" - "image_inventory" "backpack/weapons/w_models/w_rocketlauncher" - "image_inventory_size_w" "128" - "image_inventory_size_h" "82" - "model_player" "models/weapons/w_models/w_rocketlauncher.mdl" - "used_by_classes" - { - "soldier" "1" - } - "attributes" - { - "heavy rockets" - { - "attribute_class" "set_weapon_mode" - "value" "1" - } - "fire rate bonus" - { - "attribute_class" "mult_postfiredelay" - "value" "0.2" - } - "blast dmg to self increased" - { - "attribute_class" "blast_dmg_to_self" - "value" "1.25" - } - } - "allowed_attributes" - { - "all_items" "1" - "dmg_reductions" "1" - "player_health" "1" - "attrib_healthregen" "1" - "player_movement" "1" - "attrib_dmgdone" "1" - "attrib_critboosts" "1" - "attrib_onhit_slow" "1" - "attrib_clip" "1" - "attrib_firerate" "1" - "wpn_explosive" "1" - "ammo_primary" "1" - "wpn_fires_projectiles" "1" - } - "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" - "drop_sound" "ui/item_heavy_gun_drop.wav" - } - } - "attributes" - { - "29" - { - "name" "alt-fire is vampire" - "attribute_class" "set_altfire_mode" - "attribute_name" "Alt-fire Is Vampire" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_AltFire_Is_Vampire" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "633" - { - "name" "turn player gay" - "attribute_class" "turn_gey" - "attribute_name" "Turn Player Gay" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Player_TurnGay" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "700" - { - "name" "turn player gay 2" - "attribute_class" "turn_gey_2" - "attribute_name" "Turn Player Gay 2" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Player_TurnGay2" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "701" - { - "name" "hidden turn gay" - "attribute_class" "turn_gey" - "attribute_name" "Hidden Turn Player Gay" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "" - "description_format" "value_is_additive" - "hidden" "1" - "effect_type" "neutral" - "stored_as_integer" "0" - } - "702" - { - "name" "owner receives minicrits" - "attribute_class" "owner_receive_minicrits" - "attribute_name" "Owner Receives Minicrits" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Owner_Receives_Minicrits" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "negative" - "stored_as_integer" "0" - } - "703" - { - "name" "crit vs noclippers" - "attribute_class" "mod_crit_noclip" - "attribute_name" "Crit Vs Noclippers" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_CritVsNoclip" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "704" - { - "name" "mod enable crotchshots" - "attribute_class" "mod_enable_crotchshots" - "attribute_name" "Mod Enable Crotchshots" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_EnableCrotchshots" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "705" - { - "name" "milk duration" - "attribute_class" "milk_duration" - "attribute_name" "Milk Duration" - "min_value" "1" - "max_value" "4" - "group" "only_on_unique" - "description_string" "#Attrib_MilkDuration" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit milk" - "stored_as_integer" "0" - } - "706" - { - "name" "bouncy grenades" - "attribute_class" "set_grenade_mode" - "attribute_name" "Bouncy Grenades" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_BouncyGrenades" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "707" - { - "name" "radial heal on hit" - "attribute_class" "radial_onhit_addhealth" - "attribute_name" "Radial Heal On Hit" - "min_value" "1" - "max_value" "30" - "group" "only_on_unique" - "description_string" "#Attrib_RadialHealOnHit" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "708" - { - "name" "dmg taken from fall reduced" - "attribute_class" "mult_dmgtaken_from_fall" - "attribute_name" "Minor fall damage reduced" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Fall_Reduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "709" - { - "name" "dmg taken from fall increased" - "attribute_class" "mult_dmgtaken_from_fall" - "attribute_name" "Minor fall damage increased" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Fall_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "710" - { - "name" "dmg taken from physics reduced" - "attribute_class" "mult_dmgtaken_from_phys" - "attribute_name" "Minor physics damage reduced" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Phys_Reduced" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "711" - { - "name" "dmg taken from physics increased" - "attribute_class" "mult_dmgtaken_from_phys" - "attribute_name" "Minor physics damage increased" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_DmgTaken_From_Phys_Increased" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "712" - { - "name" "jump height bonus" - "attribute_class" "mult_player_jumpheight" - "attribute_name" "Minor jump height bonus" - "min_value" "1.05" - "max_value" "1.25" - "group" "only_on_unique" - "description_string" "#Attrib_JumpHeight_Bonus" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "713" - { - "name" "jump height penalty" - "attribute_class" "mult_player_jumpheight" - "attribute_name" "Minor jump height penalty" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_JumpHeight_Bonus" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "714" - { - "name" "charge is unstoppable" - "attribute_class" "set_charge_mode" - "attribute_name" "Charge is unstoppable" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Charge_Is_Unstoppable" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "715" - { - "name" "cooldown rate penalty" - "attribute_class" "mult_cooldown_time" - "attribute_name" "Cooldown rate penalty" - "min_value" "1.2" - "max_value" "1.5" - "group" "only_on_unique" - "description_string" "#Attrib_Charge_Rate_Reduced" - "description_format" "value_is_percentage" - "hidden" "0" - "effect_type" "negative" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "716" - { - "name" "cooldown rate bonus" - "attribute_class" "mult_cooldown_time" - "attribute_name" "Cooldown rate bonus" - "min_value" "0.95" - "max_value" "0.9" - "group" "only_on_unique" - "description_string" "#Attrib_Charge_Rate_Increased" - "description_format" "value_is_inverted_percentage" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_wearer" - "stored_as_integer" "0" - } - "717" - { - "name" "burn duration" - "attribute_class" "burn_duration" - "attribute_name" "Burn Duration" - "min_value" "1" - "max_value" "4" - "group" "only_on_unique" - "description_string" "#Attrib_BurnDuration" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "armory_desc" "on_hit burn" - "stored_as_integer" "0" - } - "718" - { - "name" "heavy rockets" - "attribute_class" "set_weapon_mode" - "attribute_name" "Heavy Rockets" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Rocket_Gravity" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - - "1111" - { - "name" "nuclear payload launcher" - "attribute_class" "nuke" - "attribute_name" "Nuclear Payload Launcher" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_Shoots_Nukes" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "positive" - "stored_as_integer" "0" - } - "1112" - { - "name" "stout shako launcher" - "attribute_class" "projectile_model_mod" - "attribute_name" "Stout Shako Launcher" - "min_value" "1" - "max_value" "1" - "group" "only_on_unique" - "description_string" "#Attrib_StoutShako_Launcher" - "description_format" "value_is_additive" - "hidden" "0" - "effect_type" "neutral" - "stored_as_integer" "0" - } - } - "item_sets" - { - "secret_demo" - { - "name" "#TF_Set_Demopan_Trader" - "secret" "1" - "items" - { - "The Chargin' Targe" "1" - "Frying Pan" "1" - "Treasure Hat 1" "1" - "TTG Glasses" "1" - } - "attributes" - { - "stout shako launcher" - { - "attribute_class" "projectile_model_mod" - "value" "1" - } - } - } - "secret_soldier" - { - "name" "#TF_Set_Worms_Kit" - "secret" "1" - "items" - { - "The Bazooka" "1" - "The Equalizer" "1" - "Worms Gear" "1" - } - "attributes" - { - "todo" - { - "attribute_class" "todo" - "value" "1" - } - } - } - } - "attribute_controlled_attached_particles" - { - } -} -]] - --- Attributes -local function VALID(e) return IsValid(e) end -local function ISPLAYER(e) return VALID(e) and e:IsTFPlayer() end -local function ONFIRE(e) return VALID(e) and e:HasPlayerState(PLAYERSTATE_ONFIRE) end -local function ISBUILDING(e) return VALID(e) and (not e:IsTFPlayer() or e:IsBuilding()) end - -DF_GEY=128 - -desired = CreateClientConVar("wear_desired", "0", {FCVAR_CLIENTDLL}, "What wear type do you desire the most?") -sounds = CreateClientConVar("wear_sounds", "0", {FCVAR_CLIENTDLL}, "Do you want to hear sounds when you achieve something?") -lines = CreateClientConVar("wear_lines", "0", {FCVAR_CLIENTDLL}, "What to see messages alongside wear type?") - -function PrintSkin() - if desired:GetInt() == 0 and lines:GetInt() >= 2 then - wear_strings = { - 'Factory New. Well done!', - 'Minimal Wear. Few scratches, no jiffy.', - 'Feild Tested. Its good enough.', - 'Well Worn. This looks beat up!', - 'Battle Scarred. This looks like a car crash in slow motion!' - } - else - wear_strings = { - 'Factory New.', - 'Minimal Wear.', - 'Feild Tested.', - 'Well Worn.', - 'Battle Scarred.' - } - end - - if desired:GetInt() == 0 then - wear_sounds = { - 'misc/achievement_earned.wav', - 'misc/happy_birthday.wav', - 'misc/boring_applause_1.wav', - 'misc/clap_single_2.wav', - 'misc/hologram_stop.wav' - } - end - - if CLIENT then - timer.Simple(0.02, function() if lines:GetInt() >= 1 then chat.AddText( Color(255,255,255), LocalPlayer(), " Your ", weapon_name:GetFullName() ," is ", Color( 100, 255, 100 ), wear_strings[wear_number]) end end) - if desired:GetInt() == 0 and sounds:GetInt() >= 1 then surface.PlaySound(wear_sounds[wear_number]) end - end -end - -RegisterAttribute("material_override", { - equip = function(v,weapon,owner) - //weapon.CustomColorOverride = Color(255,30,150,255) - if SERVER then - weapon.CustomMaterialOverride = v - else - weapon.CustomMaterialOverride = Material(v) - end - - if CLIENT then - weapon.DrawWorldModel0 = weapon.DrawWorldModel - weapon.DrawWorldModel = function(self,t) - //render.SetColorModulation(1,0.2,0.7) - if IsValid(self.WModel2) then - self.WModel2:SetMaterial(v) - end - self:DrawWorldModel0(t) - //render.SetColorModulation(1,1,1) - end - - weapon.ViewModelDrawn0 = weapon.ViewModelDrawn - weapon.ViewModelDrawn = function(self,t) - //render.SetColorModulation(1,0.2,0.7) - if IsValid(self.CModel) then - self.CModel:SetMaterial(v) - end - self:ViewModelDrawn0() - //render.SetColorModulation(1,1,1) - end - end - - end, -}) - -RegisterAttribute("material_override_team", { - equip = function(v,weapon,owner) - if owner:Team() == 2 then - team_skin = "_blue" - else - team_skin = "_red" - end - if SERVER then - weapon.CustomMaterialOverride = v..team_skin - else - weapon.CustomMaterialOverride = Material(v..team_skin) - end - - if CLIENT then - weapon.DrawWorldModel0 = weapon.DrawWorldModel - weapon.DrawWorldModel = function(self,t) - if IsValid(self.WModel2) then - self.WModel2:SetMaterial(v..team_skin) - end - self:DrawWorldModel0(t) - end - - weapon.ViewModelDrawn0 = weapon.ViewModelDrawn - weapon.ViewModelDrawn = function(self,t) - if IsValid(self.CModel) then - self.CModel:SetMaterial(v..team_skin) - end - self:ViewModelDrawn0() - end - end - - end, -}) - -RegisterAttribute("material_override_skin", { - equip = function(v,weapon,owner) - wear_types = { - '_factory_new_red', - '_minimal_wear_red', - '_feild_tested_red', - '_well_worn_red', - '_battle_scarred_red' - } - if desired:GetInt() >= 1 and desired:GetInt() <= 5 then - wear_number = GetConVar("wear_desired"):GetInt() - else - wear_number = math.random( #wear_types ) - end - - if SERVER then - weapon.CustomMaterialOverride = v..wear_types[wear_number] - else - weapon.CustomMaterialOverride = Material(v..wear_types[wear_number]) - end - - if CLIENT then - weapon.DrawWorldModel0 = weapon.DrawWorldModel - weapon.DrawWorldModel = function(self,t) - if IsValid(self.WModel2) then - self.WModel2:SetMaterial(v..wear_types[wear_number]) - end - self:DrawWorldModel0(t) - end - - weapon.ViewModelDrawn0 = weapon.ViewModelDrawn - weapon.ViewModelDrawn = function(self,t) - if IsValid(self.CModel) then - self.CModel:SetMaterial(v..wear_types[wear_number]) - end - self:ViewModelDrawn0() - end - end - timer.Simple(0.02, function() weapon_name = weapon end) - PrintSkin() - end, -}) - -RegisterAttribute("material_override_skin_team", { - equip = function(v,weapon,owner) - if owner:Team() == 2 then - wear_types = { - '_factory_new_blue', - '_minimal_wear_blue', - '_feild_tested_blue', - '_well_worn_blue', - '_battle_scarred_blue' - } - else - wear_types = { - '_factory_new_red', - '_minimal_wear_red', - '_feild_tested_red', - '_well_worn_red', - '_battle_scarred_red' - } - end - if desired:GetInt() >= 1 and desired:GetInt() <= 5 then - wear_number = GetConVar("wear_desired"):GetInt() - else - wear_number = math.random( #wear_types ) - end - - if SERVER then - weapon.CustomMaterialOverride = v..wear_types[wear_number] - else - weapon.CustomMaterialOverride = Material(v..wear_types[wear_number]) - end - - if CLIENT then - weapon.DrawWorldModel0 = weapon.DrawWorldModel - weapon.DrawWorldModel = function(self,t) - if IsValid(self.WModel2) then - self.WModel2:SetMaterial(v..wear_types[wear_number]) - end - self:DrawWorldModel0(t) - end - - weapon.ViewModelDrawn0 = weapon.ViewModelDrawn - weapon.ViewModelDrawn = function(self,t) - if IsValid(self.CModel) then - self.CModel:SetMaterial(v..wear_types[wear_number]) - end - self:ViewModelDrawn0() - end - end - timer.Simple(0.02, function() weapon_name = weapon end) - PrintSkin() - end, -}) - -RegisterAttribute("nuke", { - projectile_fired = function(v,proj,weapon,owner) - proj.Nuke = true - end, - - post_damage = function(v,ent,hitgroup,dmginfo) - dmginfo:ScaleDamage(5) - end, -}) - -RegisterAttribute("owner_receive_minicrits", { - equip = function(v,weapon,owner) - if SERVER then - owner.TempAttributes.ReceiveCrits = true - end - end, -}) - -RegisterAttribute("mod_crit_noclip", { - boolean = true, - crit_override = function(v,ent,hitgroup,dmginfo) - if ISPLAYER(ent) and ent:GetMoveType()==MOVETYPE_NOCLIP then return true end - end, -}) - -RegisterAttribute("mod_enable_crotchshots", { - boolean = true, - - crit_override = function(v,ent,hitgroup,dmginfo) - if SERVER and ISPLAYER(ent) then - local inf, att = dmginfo:GetInflictor(), dmginfo:GetAttacker() - - if inf.NonCrotchshotNameOverride == nil then - inf.NonCrotchshotNameOverride = inf.NameOverride or false - end - - if not inf.NonCrotchshotNameOverride then - inf.NameOverride = nil - else - inf.NameOverride = inf.NonCrotchshotNameOverride - end - - -- Weapon must be a sniper-type weapon (Sniper Rifle or Ambassador) - if inf.IsTFWeapon and inf.BulletSpread == 0 and (inf.ChargeTimerStart or inf.CritsOnHeadshot) then - local f1, f2 = ent:GetAngles(), att:GetAngles() - f1.p = 0 - f2.p = 0 - local dot = f1:Forward():Dot(f2:Forward()) - - -- Attacker and victim must be facing each other - if dot > -0.5 then return end - - -- Pelvis bone check - local bone - bone = ent:GetBoneMatrix(ent:LookupBone("ValveBiped.Bip01_Pelvis") or ent:LookupBone("bip_pelvis") or -1) - - local dist = dmginfo:GetDamagePosition():Distance(bone:GetTranslation() - 3 * vector_up + 6*ent:GetForward()) - - if dist < 8 then - inf.NameOverride = "crotchshot" - return true - end - end - end - end, -}) - -RegisterAttribute("milk_duration", { - pre_damage = function(v,ent,hitgroup,dmginfo) - local inf = dmginfo:GetInflictor() - if inf:GetClass() == "tf_weapon_sniperrifle" and inf.ChargeTime then - if not inf.ChargeTimerStart or (CurTime()-inf.ChargeTimerStart)/inf.ChargeTime < 0.25 then - return - end - end - - local att = dmginfo:GetAttacker() - if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then - ent:AddPlayerState(PLAYERSTATE_MILK, true) - ent.NextEndMilk = CurTime() + v - end - end, - - equip = function(v,weapon,owner) - weapon.UsesJarateChargeMeter = true - end, -}) - -RegisterAttribute("burn_duration", { - pre_damage = function(v,ent,hitgroup,dmginfo) - local att = dmginfo:GetAttacker() - if ent:IsFlammable() and att:IsValidEnemy(ent) then - GAMEMODE:IgniteEntity(ent, dmginfo:GetInflictor(), dmginfo:GetAttacker(), v) - end - end, -}) - -RegisterAttribute("set_grenade_mode", { - equip = function(v,weapon,owner) - weapon.GrenadeMode = v - end, - projectile_fired = function(v,proj,weapon,owner) - proj.GrenadeMode = v - end, -}) - -RegisterAttribute("projectile_model_mod", { - equip = function(v,weapon,owner) - owner.TempAttributes.ProjectileModelModifier = v - end, -}) - - -RegisterAttribute("radial_onhit_addhealth", { - post_damage = function(v,ent,hitgroup,dmginfo) - local att = dmginfo:GetAttacker() - local pos = dmginfo:GetDamagePosition() - - if IsValid(att) and ent~=att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then - for _,p in pairs(ents.FindInSphere(pos, 250)) do - if p:IsTFPlayer() and not p:IsBuilding() and p:Health()>0 and p:EntityTeam()==att:EntityTeam() then - GAMEMODE:HealPlayer(att, p, v, true, false) - end - end - end - end, - projectile_fired = function(v,proj,weapon,owner) end, -}) - -RegisterAttribute("mult_dmgtaken_from_fall", { - _global_post_damage_received = function(v,pl,hitgroup,dmginfo) - if dmginfo:IsDamageType(DMG_FALL) then - dmginfo:ScaleDamage(v) - end - end, -}) - -RegisterAttribute("mult_dmgtaken_from_phys", { - _global_post_damage_received = function(v,pl,hitgroup,dmginfo) - if dmginfo:IsDamageType(DMG_CRUSH) then - dmginfo:ScaleDamage(v) - end - end, -}) - -RegisterAttribute("mult_player_jumpheight", { - equip = function(v,weapon,owner) - if SERVER then - owner.PlayerJumpPower = owner.PlayerJumpPower * v - owner:SetJumpPower(owner.PlayerJumpPower) - end - end, -}) - -RegisterAttribute("set_charge_mode", { - boolean = true, - equip = function(v,weapon,owner) - if SERVER then - owner.TempAttributes.ChargeIsUnstoppable = true - end - end, -}) - -RegisterAttribute("mult_cooldown_time", { - equip = function(v,weapon,owner) - if SERVER then - owner.TempAttributes.ChargeCooldownMultiplier = (owner.TempAttributes.ChargeCooldownMultiplier or 1) * v - end - end, -}) - -if SERVER then - -hook.Add("ShouldMiniCrit", "GAYPLAYER_MINICRIT", function(ent, inf, att, hitgroup, dmginfo) - if ent.TempAttributes and ent.TempAttributes.ReceiveCrits then - return true - end -end) - -hook.Add("PostScaleDamage", "GAYPLAYER_NEGDAMAGE", function(ent, hitgroup, dmginfo) - if ent:IsTFPlayer() then - if dmginfo:GetAttacker():GetNWBool("VeryGay") and math.random()<0.5 then - GAMEMODE:HealPlayer(nil, ent, dmginfo:GetDamage(), true, false) - dmginfo:SetDamage(0) - dmginfo:SetDamageType(DMG_GENERIC) - end - end -end) - -hook.Add("DoPlayerDeath", "GAYREMOVE", function(pl) - pl:SetNWBool("VeryGay", false) - pl.NextEndGay = 0 -end) - -end - -if CLIENT then - -hook.Add("SetupPlayerGib", "GEYGIB", function(pl, gib) - if pl:HasDeathFlag(DF_GEY) then - gib:SetMaterial("models/shiny") - gib:SetColor(255,30,150,255) - end -end) - -hook.Add("SetupPlayerRagdoll", "GEYRAGDOLL_PLAYER", function(pl, rag) - if pl:HasDeathFlag(DF_GEY) then - rag:SetMaterial("models/shiny") - rag:SetColor(255,30,150,255) - for i=0,rag:GetPhysicsObjectCount()-1 do - local p=rag:GetPhysicsObjectNum(i) - p:SetMaterial("gmod_bouncy") - p:ApplyForceCenter(Vector(0,0,math.Rand(2000,8000))) - timer.Simple(0.1,function() if p and p:IsValid() then p:AddAngleVelocity(Vector(math.Rand(-100000,100000),math.Rand(-100000,100000),math.Rand(-100000,100000))) end end) - p:SetMass(math.Rand(10,200)) - end - rag.Gey=true - pl.GeyRagdoll = rag - local effectdata = EffectData() - effectdata:SetEntity(pl) - util.Effect("tf_rainbow_trail", effectdata) - end -end) - -hook.Add("SetupNPCRagdoll", "GEYRAGDOLL_NPC", function(npc, rag) - if npc:HasDeathFlag(DF_GEY) then - rag:SetMaterial("models/shiny") - rag:SetColor(255,30,150,255) - for i=0,rag:GetPhysicsObjectCount()-1 do - local p=rag:GetPhysicsObjectNum(i) - p:SetMaterial("gmod_bouncy") - p:ApplyForceCenter(Vector(0,0,math.Rand(2000,8000))) - p:SetMass(math.Rand(10,400)) - p:AddAngleVelocity(Vector(math.Rand(-10000,10000),math.Rand(-10000,10000),math.Rand(-10000,10000))) - end - rag.Gey=true - npc.GeyRagdoll = rag - local effectdata = EffectData() - effectdata:SetEntity(npc) - util.Effect("gayplayer", effectdata) - end -end) - -end - --- Loading everything up - -tf_items.ParseGameItems(item_data) - -MsgN("Done!") diff --git a/addon/gamemodes/teamfortress/gamemode/shd_items_game.lua b/addon/gamemodes/teamfortress/gamemode/shd_items_game.lua deleted file mode 100644 index b98fd571e..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_items_game.lua +++ /dev/null @@ -1,68 +0,0 @@ --- tf_items -if !file.Exists("scripts/items/items_game.txt", "tf") then - Error("ERROR: items_game.txt NOT FOUND!\nLIVE TF WEAPONS WILL NOT BE LOADED!\n") -end - -local items_game = util.KeyValuesToTable(file.Read("scripts/items/items_game.txt", "tf")) - -for k, v in pairs(items_game["items"]) do - if v.prefab and string.find(v.prefab, " ") then - local tab = string.Split(v.prefab, " ") - for i, o in pairs(tab) do - if string.find(o, "weapon") then - v.prefab = o - end - end - end - - if v.prefab and items_game["prefabs"][v.prefab] then - for i, o in pairs(items_game["prefabs"][v.prefab]) do - if !v[i] then - v[i] = o - end - end - end - - v.id = k - v.propername = 0 - - if v.item_class == "saxxy" then - v.item_class = "tf_weapon_allclass" - elseif v.item_class == "tf_weapon_sniperrifle_classic" then - v.item_class = "tf_weapon_sniperrifle" - elseif v.item_class == "tf_weapon_sniperrifle_decap" then - v.item_class = "tf_weapon_sniperrifle" - end - - if !v.item_class then - v.item_class = "tf_wearable_item" - end - - if k == 513 then - v.item_class = "tf_weapon_rocketlauncher_qrl" - elseif k == 20 then - v.item_slot = "primary" - elseif k == 19 then - v.item_slot = "secondary" - end - - if v.id == 424 then print(tf_lang.GetRaw(v.item_name)) end - - if v.item_name then - v.name = tf_lang.GetRaw(v.item_name) - tf_items.Items[v.name] = v - - if v.name == "Tomislav" then - print("Tomislav Time") - end - elseif v.name then - tf_items.Items[tf_lang.GetRaw(v.name)] = v - else - v.name = "Test " .. math.random(30000) - tf_items.Items[v.name] = v - end - - tf_items.ItemsByID[v.id] = v -end - -tf_items.Items.n = #items_game["items"] \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_maptypes.lua b/addon/gamemodes/teamfortress/gamemode/shd_maptypes.lua deleted file mode 100644 index d2adca0b6..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_maptypes.lua +++ /dev/null @@ -1,103 +0,0 @@ - -if CLIENT then - -local lang_data = [["lang" -{ -"Language" "English" -"Tokens" -{ -"Gametype_HL2" "Half Life 2 Campaign" -"Gametype_Sandbox" "Sandbox" -"Gametype_ZombieSurvival "Zombie Survival" -} -} -]] - -include("tf_lang_module.lua") -tf_lang.Parse(lang_data) - -end - -MapTypes = { - -hl2 = { - "^d[0-9]_", - "^ep[0-9]_", - "^c[0-9]", - "^hls0[0-9]", -}, -cp = { - "^cp_" -}, -ctf = { - "^ctf_" -}, -tc = { - "^tc_" -}, -pl = { - "^pl_" -}, -plr = { - "^plr_" -}, -arena = { - "^arena_" -}, -koth = { - "^koth_" -}, -tr = { - "^tr_" -}, -sandbox = { - "^sb_", - "^gm_", -}, -zombiesurvival = { - "^zs_", -}, - -} - -function GetMapType(name) - for k,v in pairs(MapTypes) do - for _,p in ipairs(v) do - if string.find(name, p) then - return k - end - end - end - return "" -end - -GameTypes = { - hl2 = "#Gametype_HL2", - sandbox = "#Gametype_Sandbox", - zombiesurvival = "Zombie Survival", - cp = "#Gametype_CP", - ctf = "#Gametype_CTF", - tc = "#Gametype_CP", - pl = "#Gametype_Escort", - plr = "#Gametype_EscortRace", - arena = "#Gametype_Arena", - koth = "#Gametype_Koth", - tr = "#Gametype_Training", -} - -function GetTFMapName(name) - for k,v in pairs(MapTypes) do - for _,p in ipairs(v) do - if string.find(name, p) then - name = string.gsub(name, p, "") - break - end - end - end - - return string.upper(string.gsub(name, "_", " ")) -end - -function GetTFMapType(name) - return GameTypes[GetMapType(name)] or "" -end diff --git a/addon/gamemodes/teamfortress/gamemode/shd_npcdata.lua b/addon/gamemodes/teamfortress/gamemode/shd_npcdata.lua deleted file mode 100644 index 9d5c76bd9..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_npcdata.lua +++ /dev/null @@ -1,485 +0,0 @@ -NPC_MECH = 1 -- Shows a gear icon under the health bar in the TargetID and freezecam -NPC_NOCRITS = 2 -- Never receive critical damage, also immune to Jarate -NPC_NODMGFORCE = 4 -- Not pushed away by blast damage -NPC_NOSPECIALMELEE = 8 -- Always receive DMG_CLUB type damage on melee hits -NPC_INVULNERABLE = 16 -- Completely immune to damage -NPC_ALWAYSFRIENDLY = 32 -- Always considered as friendly by everyone, no matter which team it is on -NPC_FIREPROOF = 64 -- Cannot be ignited -NPC_HASHEAD = 128 -- Can be decapitated by the Eyelander -NPC_CANBLEED = 256 -- Can bleed -NPC_CANNOTHEAL = 512 -- Cannot be healed -NPC_NORELATIONSHIP = 1024 -- Do not override relationships for that NPC - -NPC_BUILDING = bit.bor(NPC_MECH, NPC_NOCRITS, NPC_FIREPROOF, NPC_CANNOTHEAL) -NPC_FLYING = NPC_NODMGFORCE -NPC_HUMAN = bit.bor(NPC_HASHEAD, NPC_CANBLEED) - --- Virtual player types -VPLAYER_NONE = 0 -- Cannot be assigned to a virtual player -VPLAYER_HEADCRAB = 1 -- Headcrabs -VPLAYER_ZOMBIE = 2 -- Zombies -VPLAYER_COMBINE = 3 -- Combine soldiers -VPLAYER_REBEL = 4 -- Rebels -VPLAYER_VORTIGAUNT = 5 -- Vortigaunts - -NPCData = { - --- Friendly actors -npc_dog = { - team=TEAM_RED, - flags=bit.bor(NPC_BUILDING, NPC_INVULNERABLE), - vplayer=VPLAYER_NONE -}, -npc_eli = { - team=TEAM_RED, - health=8, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, -npc_fisherman = { - team=TEAM_RED, - health=8, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, -npc_kleiner = { - team=TEAM_RED, - health=8, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, -npc_magnusson = { - team=TEAM_RED, - health=8, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, -npc_mossman = { - team=TEAM_RED, - health=8, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, - --- Vital player companions -npc_alyx = { - team=TEAM_RED, - health=80, - accuracy=3, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, -npc_barney = { - team=TEAM_RED, - health=80, - accuracy=3, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, -npc_monk = { - team=TEAM_RED, - health=100, - accuracy=4, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, - --- Regular friendlies -npc_citizen = { - team=TEAM_RED, - health=110, - accuracy=2, - flags=NPC_HUMAN, - vplayer=VPLAYER_REBEL -}, -npc_vortigaunt = { - team=TEAM_RED, - health=125, - vplayer=VPLAYER_VORTIGAUNT -}, -monster_scientist = { - team=TEAM_RED, - health=100, - accuracy=2, - flags=NPC_HUMAN, - vplayer=VPLAYER_REBEL -}, -monster_barney = { - team=TEAM_RED, - health=110, - accuracy=2, - flags=NPC_HUMAN, - vplayer=VPLAYER_REBEL -}, - --- Enemy actors -npc_breen = { - team=TEAM_BLU, - health=8, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, - --- Regular enemies -npc_combine_s = { - team=TEAM_BLU, - health={ - [0]=100, - ["models/combine_super_soldier.mdl"]=150 - }, - accuracy={ - [0]=2, - ["models/combine_super_soldier.mdl"]=3 - }, - flags=NPC_HUMAN, - vplayer=VPLAYER_COMBINE -}, -npc_metropolice = { - team=TEAM_BLU, - health=75, - flags=NPC_HUMAN, - vplayer=VPLAYER_METROCOP -}, -npc_stalker = { - team=TEAM_BLU, - health=100, - flags=NPC_HUMAN, - vplayer=VPLAYER_NONE -}, - --- Regular combine machines -npc_cscanner = { - team=TEAM_BLU, - health=50, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_clawscanner = { - team=TEAM_BLU, - health=75, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_manhack = { - team=TEAM_BLU, - health=40, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, - --- Indestructible combine machines -npc_combine_camera = { - team=TEAM_BLU, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_rollermine = { - team=TEAM_BLU, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_turret_ceiling = { - team=TEAM_BLU, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_turret_floor = { - team=TEAM_BLU, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_turret_ground = { - team=TEAM_BLU, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, - --- Synths/boss combine machines -npc_combinegunship = { - team=TEAM_BLU, - health=100, - alternatehealth=80, - flags=bit.bor(NPC_MECH, NPC_FIREPROOF, NPC_FLYING), - vplayer=VPLAYER_NONE -}, -npc_hunter = { - team=TEAM_BLU, - health=350, - flags=bit.bor(NPC_MECH, NPC_NOSPECIALMELEE), - vplayer=VPLAYER_NONE -}, -npc_strider = { - team=TEAM_BLU, - health=350, - alternatehealth=200, - flags=bit.bor(NPC_MECH, NPC_FIREPROOF, NPC_FLYING), - vplayer=VPLAYER_NONE -}, -npc_helicopter = { - team=TEAM_BLU, - health=5600, - flags=bit.bor(NPC_MECH, NPC_FIREPROOF, NPC_FLYING), - vplayer=VPLAYER_NONE -}, - --- Indestructible synths -npc_combinedropship = { - team=TEAM_BLU, - flags=bit.bor(NPC_BUILDING, NPC_FLYING), - vplayer=VPLAYER_NONE -}, - --- Special/unused combine NPCs -npc_apcdriver = { - team=TEAM_BLU, - vplayer=VPLAYER_NONE -}, - -combine_mine = { - team=TEAM_BLU, - flags=NPC_BUILDING, - vplayer=VPLAYER_NONE -}, -npc_crabsynth = { - team=TEAM_BLU, - flags=bit.bor(NPC_MECH, NPC_FIREPROOF), - vplayer=VPLAYER_NONE -}, -npc_mortarsynth = { - team=TEAM_BLU, - flags=bit.bor(NPC_MECH, NPC_FIREPROOF, NPC_FLYING), - vplayer=VPLAYER_NONE -}, -npc_sniper = { - team=TEAM_BLU, - vplayer=VPLAYER_COMBINE -}, -monster_human_grunt = { - team=TEAM_BLU, - health=140, - flags=NPC_HUMAN, - vplayer=VPLAYER_METROCOP -}, -monster_human_assassin = { - team=TEAM_BLU, - health=130, - flags=NPC_HUMAN, - vplayer=VPLAYER_METROCOP -}, - --- Antlions -npc_antlion = { - team=function() - return ((GetGlobalBool("AntlionsAreAllied") or GAMEMODE.AntlionsAreAllied) and TEAM_RED) or TEAM_NEUTRAL - end, - health=60, - - BaseDamage = 20, - DamageRandomize = 0.1, - pre_damage = function(self, ent, hitgroup, dmginfo) - dmginfo:SetDamage(tf_util.CalculateDamage(self:GetNPCData(), dmginfo:GetDamagePosition(), self:GetPos())) - end, - - vplayer=VPLAYER_ANTLION -}, -npc_antlion_worker = { - team=TEAM_NEUTRAL, - health=80, - vplayer=VPLAYER_ANTWORKER -}, -npc_antlionguard = { - team=TEAM_NEUTRAL, - health=1000, - flags=bit.bor(NPC_NODMGFORCE, NPC_NOSPECIALMELEE), - - BaseDamage = 90, - DamageRandomize = 0.15, - pre_damage = function(self, ent, hitgroup, dmginfo) - if self.LastPreDamage and CurTime() == self.LastPreDamage then - dmginfo:SetDamage(0) - return - end - self.LastPreDamage = CurTime() - - dmginfo:SetDamage(tf_util.CalculateDamage(self:GetNPCData(), dmginfo:GetDamagePosition(), self:GetPos())) - end, - crit_override = function(self, ent, hitgroup, dmginfo) - local seq = self:GetSequence() - if seq == 37 then -- Antlion guard charges are guaranteed critical hits - return true - end - end, - vplayer=VPLAYER_ANTGUARD -}, - --- Birds -npc_crow = { - team=TEAM_NEUTRAL, - vplayer=VPLAYER_NONE -}, -npc_pigeon = { - team=TEAM_NEUTRAL, - vplayer=VPLAYER_NONE -}, -npc_seagull = { - team=TEAM_NEUTRAL, - vplayer=VPLAYER_NONE -}, - --- Headcrabs -npc_headcrab = { - team=TEAM_NEUTRAL, - health=20, - vplayer=VPLAYER_HEADCRAB -}, -npc_headcrab_fast = { - team=TEAM_NEUTRAL, - health=15, - vplayer=VPLAYER_HEADCRAB -}, -npc_headcrab_black = { - team=TEAM_NEUTRAL, - health=50, - vplayer=VPLAYER_HEADCRAB -}, -npc_headcrab_poison = { - team=TEAM_NEUTRAL, - health=50, - vplayer=VPLAYER_HEADCRAB -}, - --- Zombies -npc_fastzombie = { - team=TEAM_NEUTRAL, - health=75, - vplayer=VPLAYER_ZOMBIE -}, -npc_fastzombie_torso = { - team=TEAM_NEUTRAL, - health=50, - vplayer=VPLAYER_ZOMBIE -}, -npc_poisonzombie = { - team=TEAM_NEUTRAL, - health=250, - damage={ - {nil ,{damage=45,random=0.1}}, - }, - vplayer=VPLAYER_ZOMBIE -}, -npc_zombie = { - team=TEAM_NEUTRAL, - health=125, - damage={ - {{sequence={7,8,9,10}} ,{damage=45,random=0.1}}, - {{sequence={11,12}} ,{damage=45,random=0.1,crit=true}}, - }, - vplayer=VPLAYER_ZOMBIE -}, -npc_zombie_torso = { - team=TEAM_NEUTRAL, - health=75, - damage={ - {nil ,{damage=30,random=0.1}}, - }, - vplayer=VPLAYER_ZOMBIE -}, -npc_zombine = { - team=TEAM_NEUTRAL, - health=175, - vplayer=VPLAYER_ZOMBIE -}, - --- Special neutral NPCs -npc_barnacle = { - team=TEAM_NEUTRAL, - vplayer=VPLAYER_NONE, - flags=NPC_NORELATIONSHIP, -}, -npc_gman = { - team=TEAM_NEUTRAL, - health=8, - flags=bit.bor(NPC_HUMAN,NPC_NORELATIONSHIP), - vplayer=VPLAYER_NONE -}, - --- Generic actors -cycler_actor = { - team=TEAM_HIDDEN, - flags=NPC_ALWAYSFRIENDLY, - vplayer=VPLAYER_NONE -}, -generic_actor = { - team=TEAM_HIDDEN, - flags=NPC_ALWAYSFRIENDLY, - vplayer=VPLAYER_NONE -}, - --- Generic targets -bullseye_strider_focus = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -monster_generic = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -npc_bullseye = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -npc_furniture = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -npc_enemyfinder = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -npc_ichthyosaur = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, - --- Unused -npc_missiledefense = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, - --- Non NPC entities -point_hurt = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -trigger_hurt = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -entityflame = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -tf_entityflame = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, -npc_grenade_frag = { - team=TEAM_HIDDEN, - vplayer=VPLAYER_NONE -}, - --- TF2 buildings -obj_sentrygun = { - flags=bit.bor(NPC_BUILDING, NPC_NODMGFORCE), - vplayer=VPLAYER_NONE -}, -obj_dispenser = { - flags=bit.bor(NPC_BUILDING, NPC_NODMGFORCE), - vplayer=VPLAYER_NONE -}, -obj_teleporter = { - flags=bit.bor(NPC_BUILDING, NPC_NODMGFORCE), - vplayer=VPLAYER_NONE -}, -} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_playeranim.lua b/addon/gamemodes/teamfortress/gamemode/shd_playeranim.lua deleted file mode 100644 index b5da86da7..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_playeranim.lua +++ /dev/null @@ -1,407 +0,0 @@ -function GM:HandlePlayerJumping(pl) - if pl:IsHL2() then - return self.BaseClass:HandlePlayerJumping(pl) - end - - if not pl.anim_Jumping and not pl:OnGround() and pl:WaterLevel() <= 0 then - if not pl.anim_GroundTime then - pl.anim_GroundTime = CurTime() - else --[[if CurTime() - pl.anim_GroundTime > 0.2 then]] - pl.anim_Jumping = true - pl.anim_FirstJumpFrame = false - pl.anim_JumpStartTime = 0 - end - end - - if pl.anim_Jumping then - local firstjumpframe = pl.anim_FirstJumpFrame - - if pl.anim_FirstJumpFrame then - pl.anim_FirstJumpFrame = false - pl:AnimRestartMainSequence() - end - - if pl:WaterLevel() >= 2 or --[[(CurTime() - pl.anim_JumpStartTime > 0.2 and]] pl:OnGround() --[[)]] then - pl.anim_Jumping = false - pl.anim_GroundTime = nil - pl:AnimRestartMainSequence() - - if pl:OnGround() then - pl:AnimRestartGesture(GESTURE_SLOT_JUMP, ACT_MP_JUMP_LAND, true) - end - end - - if pl.anim_Jumping then - if pl.anim_JumpStartTime == 0 then - if pl.anim_Airwalk then - pl.anim_CalcIdeal = ACT_MP_AIRWALK - else - return false - end - elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() then - pl.anim_CalcIdeal = ACT_MP_JUMP_FLOAT - else - pl.anim_CalcIdeal = ACT_MP_JUMP_START - end - - return true - end - end - - pl.anim_Airwalk = false - return false -end - -function GM:HandlePlayerDucking(pl, vel) - if pl:IsHL2() then - return self.BaseClass:HandlePlayerDucking(pl, vel) - end - - if pl:Crouching() and !pl:IsHL2() then - local len2d = vel:Length2D() - - -- fucking shit garry, you broke GetCrouchedWalkSpeed - local cl = pl:GetPlayerClassTable() - - - if len2d > 0.5 and (not cl or not cl.NoDeployedCrouchwalk) then - pl.anim_CalcIdeal = (pl.anim_Deployed and ACT_MP_CROUCH_DEPLOYED) or ACT_MP_CROUCHWALK - else - pl.anim_CalcIdeal = (pl.anim_Deployed and ACT_MP_CROUCH_DEPLOYED_IDLE) or ACT_MP_CROUCH_IDLE - end - - return true - end - - return false -end - -function GM:HandlePlayerSwimming(pl) - if pl:IsHL2() then - return self.BaseClass:HandlePlayerSwimming(pl) - end - - if pl:WaterLevel() >= 2 then - if pl.anim_FirstSwimFrame then - pl:AnimRestartMainSequence() - pl.anim_FirstSwimFrame = false - end - - pl.anim_InSwim = true - pl.anim_CalcIdeal = (pl.anim_Deployed and ACT_MP_SWIM_DEPLOYED) or ACT_MP_SWIM - - return true - else - pl.anim_InSwim = false - if not pl.anim_FirstSwimFrame then - pl.anim_FirstSwimFrame = true - end - end - - return false -end - -function GM:HandlePlayerDriving(pl) - if pl:IsHL2() then - return self.BaseClass:HandlePlayerDriving(pl) - end - - return false -end - -function GM:UpdateAnimation(pl, velocity, maxseqgroundspeed) - if pl:IsHL2() then - return self.BaseClass:UpdateAnimation(pl, velocity, maxseqgroundspeed) - end - - local c = pl:GetPlayerClassTable() - local maxspeed = 100 - - maxspeed = pl:GetRealClassSpeed() - - if c and c.Speed then - maxspeed = c.Speed - end - - if (pl:OnGround() and pl:Crouching()) then - maxspeed = maxspeed * 0.3 - elseif pl:WaterLevel() > 1 then - maxspeed = maxspeed * 0.8 - end - - if c and c.ModifyMaxAnimSpeed then - maxspeed = c.ModifyMaxAnimSpeed(pl, maxspeed) - end - - maxspeed = maxspeed * 3 - - local vel = 1 * velocity - vel:Rotate(Angle(0,-pl:EyeAngles().y,0)) - vel:Rotate(Angle(-vel:Angle().p,0,0)) - - pl:SetPoseParameter("move_x", vel.x / maxspeed) - pl:SetPoseParameter("move_y", -vel.y / maxspeed) - - local pitch = math.Clamp(math.NormalizeAngle(-pl:EyeAngles().p), -45, 90) - pl:SetPoseParameter("body_pitch", pitch) - - if not pl.PlayerBodyYaw or not pl.TargetBodyYaw then - pl.TargetBodyYaw = pl:EyeAngles().y - pl.PlayerBodyYaw = pl.TargetBodyYaw - end - - local diff - diff = pl.PlayerBodyYaw - pl:EyeAngles().y - - if velocity:Length2D() > 0.5 or diff > 45 or diff < -45 then - pl.TargetBodyYaw = pl:EyeAngles().y - end - - local d = pl.TargetBodyYaw - pl.PlayerBodyYaw - if d > 180 then - pl.PlayerBodyYaw = math.NormalizeAngle(Lerp(0.2, pl.PlayerBodyYaw+360, pl.TargetBodyYaw)) - elseif d < -180 then - pl.PlayerBodyYaw = math.NormalizeAngle(Lerp(0.2, pl.PlayerBodyYaw-360, pl.TargetBodyYaw)) - else - pl.PlayerBodyYaw = Lerp(0.2, pl.PlayerBodyYaw, pl.TargetBodyYaw) - end - - pl:SetPoseParameter("body_yaw", diff) - - if CLIENT then - pl:SetRenderAngles(Angle(0, pl.PlayerBodyYaw, 0)) - --pl:SetRenderAngles(Angle(0, pl:EyeAngles().y, 0)) - end -end - -function GM:CalcMainActivity(pl, vel) - if pl:IsHL2() then - return self.BaseClass:CalcMainActivity(pl, vel) - end - - pl.anim_CalcIdeal = (pl.anim_Deployed and ACT_MP_DEPLOYED_IDLE) or ACT_MP_STAND_IDLE - pl.anim_CalcSeqOverride = -1 - - if - self:HandlePlayerDriving(pl) or - self:HandlePlayerSwimming(pl) or - self:HandlePlayerJumping(pl) or - self:HandlePlayerDucking(pl, vel) then - -- do nothing - else - local len2d = vel:Length2D() - - if len2d > 0.5 then - pl.anim_CalcIdeal = (pl.anim_Deployed and ACT_MP_DEPLOYED) or ACT_MP_RUN - end - end - - return pl.anim_CalcIdeal, pl.anim_CalcSeqOverride -end - -local LoserStateActivityTranslate = {} - -local VoiceCommandGestures = { - [ACT_MP_GESTURE_VC_HANDMOUTH] = true, - [ACT_MP_GESTURE_VC_THUMBSUP] = true, - [ACT_MP_GESTURE_VC_FINGERPOINT] = true, - [ACT_MP_GESTURE_VC_FISTPUMP] = true, -} - -local TauntGestures = { - [ACT_DOD_HS_CROUCH_KNIFE] = "layer_taunt_laugh", - [ACT_DOD_CROUCH_AIM_C96] = "layer_taunt01", - [ACT_DOD_CROUCHWALK_AIM_MP40] = "layer_taunt02", - [ACT_DOD_STAND_AIM_30CAL] = "layer_taunt03", -} - -function GM:TranslateActivity(pl, act) - if pl:IsHL2() then - return self.BaseClass:TranslateActivity(pl, act) - end - - if pl:IsLoser() then - if LoserStateActivityTranslate[ACT_MP_STAND_IDLE] ~= ACT_MP_STAND_LOSERSTATE then - LoserStateActivityTranslate[ACT_MP_STAND_IDLE] = ACT_MP_STAND_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_RUN] = ACT_MP_RUN_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_SWIM] = ACT_MP_SWIM_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_LOSERSTATE - - LoserStateActivityTranslate[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_LOSERSTATE - LoserStateActivityTranslate[ACT_MP_JUMP_LAND] = ACT_MP_JUMP_LAND_LOSERSTATE - end - - return LoserStateActivityTranslate[act] or act - end - - if pl:InVehicle() then - return ACT_KART_IDLE or act - end - - return pl:TranslateWeaponActivity(act) -end - -function GM:DoAnimationEvent(pl, event, data, taunt) - if pl:IsHL2() then - return self.BaseClass:DoAnimationEvent(pl, event, data) - end - - print(event, data) - - local w = pl:GetActiveWeapon() - if event == PLAYERANIMEVENT_ATTACK_PRIMARY then - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_SWIM_PRIMARYFIRE, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_CROUCH_PRIMARYFIRE, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PRIMARYFIRE, true) - end - - --return ACT_INVALID - if IsValid(w) and w.GetPrimaryFireActivity then - return w:GetPrimaryFireActivity() - else - return ACT_INVALID - end - elseif event == PLAYERANIMEVENT_RELOAD then - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_SWIM, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_CROUCH, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_STAND, true) - end - - return ACT_INVALID - elseif event == PLAYERANIMEVENT_CUSTOM_GESTURE then - if data == ACT_MP_DOUBLEJUMP then - -- Double jump - pl:AnimRestartGesture(GESTURE_SLOT_JUMP, ACT_MP_DOUBLEJUMP, true) - elseif data == ACT_MP_GESTURE_FLINCH_CHEST then - -- Flinch - pl:AnimRestartGesture(GESTURE_SLOT_FLINCH, ACT_MP_GESTURE_FLINCH_CHEST, true) - elseif data == ACT_MP_AIRWALK then - -- Go into airwalk animation - if pl.anim_Jumping then - pl.anim_Jumping = false - end - pl.anim_Airwalk = true - pl:AnimRestartMainSequence() - elseif data == ACT_MP_RELOAD_STAND_LOOP then - -- Reload loop - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_SWIM_LOOP, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_CROUCH_LOOP, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_STAND_LOOP, true) - end - elseif data == ACT_MP_RELOAD_STAND_END then - -- Reload end - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_SWIM_END, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_CROUCH_END, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_STAND_END, true) - end - elseif data == ACT_MP_ATTACK_STAND_PREFIRE then - -- Prefire gesture - local act - --MsgN("Restarting prefire gesture") - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_SWIM_PREFIRE, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_CROUCH_PREFIRE, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PREFIRE, true) - end - pl.anim_Deployed = true - elseif data == ACT_MP_ATTACK_STAND_POSTFIRE then - -- Postfire gesture - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_SWIM_POSTFIRE, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_CROUCH_POSTFIRE, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE, true) - end - pl.anim_Deployed = false - elseif data == ACT_MP_ATTACK_STAND_SECONDARYFIRE then - -- Secondary attack gesture - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_SWIM_SECONDARYFIRE, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_CROUCH_SECONDARYFIRE, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) - end - elseif data == ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED then - -- Deployed attack gesture - if pl.anim_InSwim then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_SWIM_PRIMARY_DEPLOYED, true) - elseif pl:Crouching() then - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED, true) - else - pl:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED, true) - end - elseif data == ACT_MP_DEPLOYED then - -- Enter deployed state - if not pl.anim_Deployed then - pl.anim_Deployed = true - pl:AnimRestartMainSequence() - end - elseif data == ACT_MP_STAND_PRIMARY then - -- Leave deployed state - if pl.anim_Deployed then - pl.anim_Deployed = false - pl:AnimRestartMainSequence() - end - elseif VoiceCommandGestures[data] then - pl:AnimRestartGesture(GESTURE_SLOT_CUSTOM, data, true) - elseif TauntGestures[data] then -- laugh - pl:AddVCDSequenceToGestureSlot(GESTURE_SLOT_CUSTOM, pl:LookupSequence(TauntGestures[data]), 0, true) - else - -- just let us do custom ones man - pl:AnimRestartGesture(GESTURE_SLOT_CUSTOM, data, true) - end - - return ACT_INVALID - elseif event == PLAYERANIMEVENT_JUMP then - pl.anim_Jumping = true - pl.anim_FirstJumpFrame = true - pl.anim_JumpStartTime = CurTime() - - pl:AnimRestartMainSequence() - - return ACT_INVALID - elseif event == PLAYERANIMEVENT_CANCEL_RELOAD then - pl:AnimResetGestureSlot(GESTURE_SLOT_ATTACK_AND_RELOAD) - return ACT_INVALID - end -end - -local meta = FindMetaTable("Weapon") - -local OldSendWeaponAnim = meta.SendWeaponAnim - -function meta:SendWeaponAnim(act) - if not act or act == -1 then return end - --MsgN(Format("SendWeaponAnim %d %s",act,tostring(self))) - if IsValid(self.Owner) and self.Owner:IsPlayer() and IsValid(self.Owner:GetViewModel()) and self.ViewModelOverride then - for k, v in pairs(self.Owner:GetWeapons()) do - if IsValid(v) and v:GetClass() == "tf_weapon_robot_arm" and v.IsRoboArm then - self.ViewModelOverride = "models/weapons/c_models/c_engineer_gunslinger.mdl" - end - end - - self:SetModel(self.ViewModelOverride) - self.Owner:GetViewModel():SetModel(self.ViewModelOverride) - end - - OldSendWeaponAnim(self,act) -end diff --git a/addon/gamemodes/teamfortress/gamemode/shd_playerclasses.lua b/addon/gamemodes/teamfortress/gamemode/shd_playerclasses.lua deleted file mode 100644 index 614203a2f..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_playerclasses.lua +++ /dev/null @@ -1,398 +0,0 @@ - -local BASESPEED = 3 - -GM.PlayerClasses = {} -GM.PlayerClassesAutoComplete = {} -GM.GibTypeTable = {} - -local TFHull = {Vector(-24, -24, 0), Vector(24, 24, 82)} -local TFHullDuck = {Vector(-24, -24, 0), Vector(24, 24, 62)} - -local DefaultHull = {Vector(-16, -16, 0), Vector(16, 16, 72)} -local DefaultHullDuck = {Vector(-16, -16, 0), Vector(16, 16, 36)} - -local randomizer = CreateConVar( "tf_randomizer", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE} ) -local randomizerit = CreateConVar( "tf_randomizer_class_specific", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE} ) -local dgmod = CreateConVar( "tf_disable_fun_classes", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE} ) -local botrobot = CreateConVar( "tf_bots_are_robots", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE} ) - -cvars.AddChangeCallback("tf_disable_fun_classes", function(_, _, val) - if SERVER and val == "1" then - for k, v in pairs(player.GetAll()) do - if v:GetPlayerClass() == "gmodplayer" then - v:SetPlayerClass("scout") - v:Kill() - end - end - end -end) - -function GM:RegisterPlayerClass(name, tbl) - for k,v in pairs(tbl.Gibs or {}) do - self.GibTypeTable[v] = k - end - - local mdl = "models/player/"..(tbl.ModelName or "scout")..".mdl" - util.PrecacheModel(mdl) - --PrintTable(tbl) - self.PlayerClasses[name] = tbl - table.insert(self.PlayerClassesAutoComplete, "changeclass "..name) -end - -function GM:LoadPlayerClasses() - local path = string.Replace(GM.Folder, "gamemodes/", "").."/gamemode/playerclasses/" - for _,f in pairs(file.Find(path.."*.lua", "LUA")) do - CLASS = {} - AddCSLuaFile(path..f) - include(path..f) - - local classname = string.Replace(f, ".lua", "") - self:RegisterPlayerClass(classname, CLASS) - - if SERVER then - Msg("Registered class \""..classname.."\"\n") - end - end -end - -GM:LoadPlayerClasses() - --- Player extension - -local meta = FindMetaTable( "Player" ) -if (!meta) then return end - --- Serverside only -if SERVER then - -local function InitPlayerBodygroups(pl) - if IsValid(pl) then - for _,v in pairs(pl:GetTFItems()) do - if v.ApplyPlayerBodygroups then - v:ApplyPlayerBodygroups() - end - end - end -end - -function meta:SetPlayerClass(class) - class = string.lower(class) - - if dgmod:GetBool() and (class == "gmodplayer" or class == "civilian") then - return - end - - local oldclass = self:GetPlayerClass() - local t1 = GAMEMODE.PlayerClasses[oldclass] - - if t1 and t1.ChangeClass then t1.ChangeClass(self, class) end - - local c = GAMEMODE.PlayerClasses[class] - if not c then - -- idiot proof - ErrorNoHalt("WARNING : Class \""..class.."\" not found\n") - return - end - - if PlayerNamedBodygroups[oldclass] then - for _,v in pairs(PlayerNamedBodygroups[oldclass]) do - self:SetBodygroup(v, 0) - end - - for _,v in pairs(PlayerNamedViewmodelBodygroups[oldclass]) do - self:GetViewModel():SetBodygroup(v, 0) - end - end - - self.TempAttributes = {} - self.NextSpeak = nil - - -- Update all the needed networked info - if class~=self:GetNWString("PlayerClass") then - if c.DefaultLoadout then - self.ItemLoadout = table.Copy(c.DefaultLoadout) - self.ItemProperties = {} - else - self.ItemLoadout = nil - self.ItemProperties = nil - end - end - self:SetNWInt("Heads", 0) - self:SetNWString("PlayerClass", class) - self:SetNWBool("IsHL2", (c.IsHL2~=false and c.IsHL2~=nil)) -- Doing this so the result is an actual boolean (else it seems not to work properly) - - -- Set speed and health - self:SetClassSpeed(c.Speed or 100) - self:ResetMaxHealth() - - if c.IsHL2 then -- ...however, only gmodplayers use the default view offset, TF2 players keep their own view height even when playing a HL2 map - self:SetViewOffset(Vector(0,0,64)) - self:SetViewOffsetDucked(Vector(0, 0, 28)) - self.PlayerJumpPower = 200 - else - self:SetViewOffset(Vector(0, 0, 68)) - self:SetViewOffsetDucked(Vector(0, 0, 48)) - self.PlayerJumpPower = 240 - end - self:SetJumpPower(self.PlayerJumpPower) - - -- Hull and view offset - if self:ShouldUseDefaultHull() then -- In HL2 maps, all players should have a normal collision hull so they can go through doors properly... - -- Default hull - self:ResetHull() - self:SetStepSize(18) - self:SetModelScale(0.9) - self:SetViewOffset(Vector(0,0,64)) - self:SetViewOffsetDucked(Vector(0, 0, 28)) - --self:SetCollisionBounds(unpack(DefaultHull)) - else - -- Special hull, because TF2 players are larger than HL2 players - self:SetHull(unpack(TFHull)) - self:SetHullDuck(unpack(TFHullDuck)) - self:SetModelScale(1) - --self:SetCollisionBounds(unpack(TFHull)) - self:SetStepSize(18) - end - self:SetDuckSpeed(0.2) - - -- Remove all weapons - self:StripTFItems() - self:ClearItemSetAttributes() - self:GiveItemSetAttributes() - - -- Give ammo, and weapons - self.AmmoMax = table.Copy(c.AmmoMax or {}) - - for k,v in pairs(c.AdditionalAmmo or {}) do - self:GiveAmmo(v, k, true) - end - - if self.ItemLoadout then - for k,v in ipairs(self.ItemLoadout or {}) do - self:GiveItem(v, self.ItemProperties[k]) - end - else - for k,v in ipairs(c.Loadout or {}) do - self:Give(v) - end - end - - self:ResetHealth() - - if c.Buildings then - self.Buildings = tf_objects.GetBuildables(c.Buildings) - self:GiveItem("TF_WEAPON_BUILDER") - end - - for k,v in pairs(self.AmmoMax or {}) do - self:SetAmmoCount(v, k) - end - - -- Capitalize player class because the talker system wants to :/ - -- This is used for playing scenes - self.playerclass = string.upper(string.sub(class,1,1))..string.sub(class,2) - - -- Setting the model, obviously - -- Stupid way to enable robots, but we just comment out class model already being defined! - --if not c.Model then - if self:GetInfoNum("tf_robot", 0) == 1 or (botrobot:GetBool() and self:IsBot()) then--or self:IsBot() then - c.Model = "models/bots/"..(c.ModelName or "scout").."/bot_"..(c.ModelName or "scout")..".mdl" - else - c.Model = "models/player/"..(c.ModelName or "scout")..".mdl" - end - - --end - - self:SetModel(c.Model) - - -- If this class needs some special initialization, do it - if c.Initialize then c.Initialize(self) end - - -- Notify the client that their class has changed - umsg.Start("PlayerClassChanged") - umsg.Long(self:EntIndex()) - umsg.String(oldclass) - umsg.String(class) - umsg.End() - - timer.Simple(0, function() InitPlayerBodygroups(self) end) - - self:ResetClassSpeed() -end - -function meta:SetClassSpeed(sp) - if not self:IsHL2() then - self:SetWalkSpeed(BASESPEED * sp) - self:SetRunSpeed(BASESPEED * sp) - --self:SetJumpPower(self.PlayerJumpPower) - self:SetCrouchedWalkSpeed(0.33) - self:SetNWFloat("ClassSpeed", sp) - elseif self:IsHL2() then - self:SetWalkSpeed(200) - self:SetRunSpeed(400) - self:SetCrouchedWalkSpeed(0.3) - self:SetJumpPower(200) - self:SetDuckSpeed(0.1) - self:SetUnDuckSpeed(0.1) - end -end - -function meta:ResetClassSpeed() - local c = self:GetPlayerClassTable() - local sp = 100 - if c and c.Speed then sp = c.Speed end - - if self.TempAttributes then - --[[sp = sp * (self.TempAttributes.SpeedBonus or 1) * (self:GetActiveWeapon().LocalSpeedBonus or 1) - + (self.TempAttributes.AdditiveSpeedBonus or 0) + (self:GetActiveWeapon().LocalAdditiveSpeedBonus or 0)]] - - local mul_speedbonus = self.TempAttributes.SpeedBonus or 1 - local add_speedbonus = self.TempAttributes.AdditiveSpeedBonus or 0 - - for _,v in ipairs(self:GetTFItems()) do - if v == self:GetActiveWeapon() or not v.OnlyProvideAttributesOnActive then - mul_speedbonus = mul_speedbonus * (v.SpeedBonus or 1) - add_speedbonus = add_speedbonus + (v.AdditiveSpeedBonus or 0) - end - - if v == self:GetActiveWeapon() then - mul_speedbonus = mul_speedbonus * (v.LocalSpeedBonus or 1) - add_speedbonus = add_speedbonus + (v.LocalAdditiveSpeedBonus or 0) - end - end - - if self.ItemSetTable then - mul_speedbonus = mul_speedbonus * (self.ItemSetTable.SpeedBonus or 1) - add_speedbonus = add_speedbonus + (self.ItemSetTable.AdditiveSpeedBonus or 0) - end - - sp = sp * mul_speedbonus + add_speedbonus - end - - self:SetClassSpeed(sp) - self:SetJumpPower(self.PlayerJumpPower) -end - -end - -if CLIENT then - -local function PlayerClassChanged(id, oldclass, newclass, timeout) - local pl = Entity(id) - - -- Because when the player spawns for the first time, their clientside entity seems not to have been created yet when this is called - -- So we keep on trying till we run out of cake, err... I mean, until LocalPlayer() exists - -- Also, there is no failsafe exit, because this should never loop forever unless something really wrong happens - if not IsValid(pl) then - if timeout then - timeout = timeout - 0.05 - if timeout <= 0 then - return - end - end - - timer.Simple(0.05, function() PlayerClassChanged(id, oldclass, newclass, timeout) end) - return - end - - --MsgFN("PlayerClassChanged %s", tostring(pl)) - - local t1 = GAMEMODE.PlayerClasses[oldclass] - local t2 = GAMEMODE.PlayerClasses[newclass] - - if t2 then - pl:SetNWBool("IsHL2", t2.IsHL2 or false) - end - - if pl:ShouldUseDefaultHull() then - pl:ResetHull() - else - pl:SetHull(unpack(TFHull)) - pl:SetHullDuck(unpack(TFHullDuck)) - end - - pl:SetDuckSpeed(0.2) - pl.TempAttributes = {} - - if pl == LocalPlayer() then - --GAMEMODE:InitWeaponSelection(newclass) - LocalPlayer().ShouldUpdateWeaponSelection = true - - if t1 and t1.ChangeClass then t1.ChangeClass(LocalPlayer(), newclass) end - if t2 and t2.Initialize then t2.Initialize(LocalPlayer()) end - end - - if t2.Buildings then - pl.Buildings = tf_objects.GetBuildables(t2.Buildings) - pl.BuilderInit = pl.Buildings - end -end - -usermessage.Hook("PlayerClassChanged", function(msg) - local id = msg:ReadLong() - local oldclass = msg:ReadString() - local newclass = msg:ReadString() - - PlayerClassChanged(id, oldclass, newclass, 2) -end) - -end - --- Shared - -function meta:GetPlayerClass() - return self:GetNWString("PlayerClass") or "" -end - -function meta:GetPlayerClassTable() - return GAMEMODE.PlayerClasses[self:GetPlayerClass()] -end - -function meta:GetRealClassSpeed() - local sp = self:GetNWFloat("ClassSpeed") - - if sp==0 then return BASESPEED * 100 - else return BASESPEED * sp - end -end - -function meta:GetClassSpeed() - return self:GetNWFloat("ClassSpeed") -end - - -PlayerNamedBodygroups = { - ["demo"] = {}, - ["engineer"] = {hat=1,rightarm=2}, - ["heavy"] = {hands=1}, - ["medic"] = {}, - ["pyro"] = {head=1,grenades=2}, - ["scout"] = {hat=1,headphones=2,shoes_socks=3}, - ["sniper"] = {arrows=1,hat=2,bullets=3}, - ["soldier"] = {hat=2,medal=3,grenades=4}, - ["spy"] = {}, -} - -PlayerNamedViewmodelBodygroups = { - ["demo"] = {}, - ["engineer"] = {rightarm=1}, - ["heavy"] = {}, - ["medic"] = {}, - ["pyro"] = {}, - ["scout"] = {}, - ["sniper"] = {}, - ["soldier"] = {}, - ["spy"] = {}, -} - -ClassToMedalBodygroup = { - ["scout"] = 0, - ["sniper"] = 1, - ["soldier"] = 2, - ["demo"] = 3, - ["medic"] = 4, - ["heavy"] = 5, - ["pyro"] = 6, - ["spy"] = 7, - ["engineer"] = 8, -} diff --git a/addon/gamemodes/teamfortress/gamemode/shd_precaches.lua b/addon/gamemodes/teamfortress/gamemode/shd_precaches.lua deleted file mode 100644 index 7f0f9338d..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_precaches.lua +++ /dev/null @@ -1,40 +0,0 @@ - -local function PrecacheTFContent() - MsgN("Precaching TF2 models") - for _,v in pairs(HumanGibs) do - util.PrecacheModel0(v) - end - - for _,v in pairs(PlayerModels) do - util.PrecacheModel0(v) - end - - for _,v in pairs(AnimationModels) do - util.PrecacheModel0(v) - end -end - -if SERVER and game.SinglePlayer() then - hook.Add("PostGamemodeLoaded", "PrecacheTFContent", function() - PrecacheTFContent() - end) -else - PrecacheTFContent() -end - -PrecacheParticleSystem("crit_text") -PrecacheParticleSystem("minicrit_text") -PrecacheParticleSystem("healthgained_red") -PrecacheParticleSystem("healthgained_blu") -PrecacheParticleSystem("healthlost_red") -PrecacheParticleSystem("healthlost_blu") - -PrecacheParticleSystem("blood_decap") - -PrecacheParticleSystem("rocketjump_smoke") -PrecacheParticleSystem("burningplayer_flyingbits") -PrecacheParticleSystem("particle_nemesis_red") -PrecacheParticleSystem("particle_nemesis_blue") - -PrecacheParticleSystem("muzzle_raygun_red") -PrecacheParticleSystem("bullet_tracer_raygun_red") \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_spec.lua b/addon/gamemodes/teamfortress/gamemode/shd_spec.lua deleted file mode 100644 index b5abc7afc..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_spec.lua +++ /dev/null @@ -1,58 +0,0 @@ -if CLIENT then return end - -concommand.Add("tf_spectate", function(ply, _, args) -if args[1] == "2" then ply:Spectate(OBS_MODE_CHASE) ply.SpectateMode = 2 return -elseif args[1] == "1" then ply:Spectate(OBS_MODE_IN_EYE) ply.SpectateMode = 1 return -elseif args[1] == "3" then ply:Spectate(OBS_MODE_ROAMING) ply.SpectateMode = 3 return -elseif args[1] == "-1" then ply:UnSpectate() ply:SetTeam(TEAM_RED) ply.IsSpectating = false ply:KillSilent() ply:Spawn() return end - -ply:StripWeapons() - -local bot = table.Random(player.GetAll()) -ply:SetTeam(TEAM_SPECTATOR) ---ply:Kill() -ply:SpectateEntity(bot) -ply.IsSpectating = true -ply:SetModel("models/weapons/c_arms_animations.mdl") -- anti ragdoll on death -end) - -hook.Add("PlayerDeath", "tf_Spectate_", function(ply) - if ply.IsSpectating then - ply:UnSpectate() - ply.IsSpectating = false - if ply:Team() == TEAM_SPECTATOR then - ply:SetTeam(TEAM_RED) - end - end -end) - -hook.Add("PlayerSpawn", "tf_Spectate_", function(ply) - ply.IsSpectating = false - ply:UnSpectate() -end) - -hook.Add("KeyPress", "tf_Spectate_", function(ply, key) - if ply.IsSpectating and ply:Team() == TEAM_SPECTATOR then - if key == IN_ATTACK then - ply:ConCommand("tf_spectate") - elseif key == IN_ATTACK2 then - ply:ConCommand("tf_spectate") - elseif key == IN_JUMP then - local number = 1 - local mode = ply.SpectateMode - if ply.SpectateMode == 1 then number = 2 - elseif ply.SpectateMode == 2 then number = 3 - elseif ply.SpectateMode == 3 then number = 1 - end - ply:ConCommand("tf_spectate "..number) - end - --cmd:ClearMovement() - --cmd:ClearButtons() - end -end) - -hook.Add("SetupPlayerVisibility", "tf_Spectate_HackyAreaPortalyFixing", function(ply) - if IsValid(ply:GetObserverTarget()) then - AddOriginToPVS(ply:GetObserverTarget():EyePos()) - end -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_taunts.lua b/addon/gamemodes/teamfortress/gamemode/shd_taunts.lua deleted file mode 100644 index b0492840c..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_taunts.lua +++ /dev/null @@ -1,85 +0,0 @@ -local allowedtaunts = { -"1", -"2", -"3", -} - -local class_hidewep = { -"scout", -"soldier", -"pyro", -"engineer", -"medic", -} - -local wep = { -"tf_weapon_medigun", -"tf_weapon_pistol_scout", -"tf_weapon_rocketlauncher", -"tf_weapon_shotgun_pyro", -"tf_weapon_shotgun_primary", -"tf_weapon_syringegun_medic", -} - -concommand.Add("tf_taunt_laugh", function(ply) - if ply:GetNWBool("Taunting") == true then return end - if ply:IsHL2() then ply:ConCommand("act laugh") return end - if not ply:IsOnGround() then return end - if ply:WaterLevel() ~= 0 then return end - if ply:GetInfoNum("tf_robot", 0) == 1 then ply:ChatPrint("You can't taunt as a robot!") return end - local time = ply:PlayScene("scenes/player/"..ply:GetPlayerClass().."/low/taunt_laugh.vcd", 0) - ply:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) - ply:SetNWBool("Taunting", true) - ply:SetNWBool("NoWeapon", true) - net.Start("ActivateTauntCam") - net.Send(ply) - timer.Simple(time, function() - if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end - ply:SetNWBool("Taunting", false) - ply:SetNWBool("NoWeapon", false) - net.Start("DeActivateTauntCam") - net.Send(ply) - end) -end) - -concommand.Add("tf_taunt", function(ply,cmd,args) - if ply:GetNWBool("Taunting") == true then return end - if ply:IsHL2() then ply:ConCommand("act laugh") return end - if not ply:IsOnGround() then return end - if ply:WaterLevel() ~= 0 then return end - if ply:GetInfoNum("tf_robot", 0) == 1 then ply:ChatPrint("You can't taunt as a robot!") return end - if not table.HasValue(allowedtaunts, args[1]) then return end - if table.KeyFromValue(allowedtaunts,args[1]) == 1 then - ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) - ply:DoAnimationEvent(ACT_DOD_CROUCH_AIM_C96, true) - elseif table.KeyFromValue(allowedtaunts,args[1]) == 2 then - ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) - ply:DoAnimationEvent(ACT_DOD_CROUCHWALK_AIM_MP40, true) - elseif table.KeyFromValue(allowedtaunts,args[1]) == 3 then - ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) - ply:DoAnimationEvent(ACT_DOD_STAND_AIM_30CAL, true) - else - ply:DoAnimationEvent(ACT_DOD_STAND_AIM_30CAL, true) - end - ply:Speak("TLK_PLAYER_TAUNT") - ply:SetNWBool("Taunting", true) - if IsValid(ply:GetActiveWeapon()) and table.HasValue(wep, ply:GetActiveWeapon():GetClass()) then ply:SetNWBool("NoWeapon", true) end - net.Start("ActivateTauntCam") - net.Send(ply) - print(ply:GetNWBool("SpeechTime")) - timer.Simple(ply:GetNWBool("SpeechTime"), function() - if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end - ply:SetNWBool("Taunting", false) - ply:SetNWBool("NoWeapon", false) - print("Thegay.") - net.Start("DeActivateTauntCam") - net.Send(ply) - end) -end) - -concommand.Add("tf_taunt1_var", function(ply,cmd,args) - if ply:IsHL2() then return end - if SERVER and ply:IsSuperAdmin() then - ply:Speak("TLK_PLAYER_TAUNT") - end -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_workshop.lua b/addon/gamemodes/teamfortress/gamemode/shd_workshop.lua deleted file mode 100644 index e63df55c5..000000000 --- a/addon/gamemodes/teamfortress/gamemode/shd_workshop.lua +++ /dev/null @@ -1,2 +0,0 @@ -if CLIENT then return end -resource.AddWorkshop("1417447538") \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/sv_ctf_bots.lua b/addon/gamemodes/teamfortress/gamemode/sv_ctf_bots.lua deleted file mode 100644 index 85795a2ca..000000000 --- a/addon/gamemodes/teamfortress/gamemode/sv_ctf_bots.lua +++ /dev/null @@ -1,893 +0,0 @@ -if game.SinglePlayer() or CLIENT then return end - ---[[LEADBOT STANDALONE V1.0_DEV by Lead]]-- ---[["For epic developers who don't have friends to play with. 😎"]]-- ---[[ONLY MEAN TO BE USED WITHIN Team Fortress 2 Gamemode Dev!!!]]-- - -local profiles = {} -local bots = {} - ---local names = {"LeadKiller", "A Random Person", "Foxie117", "G.A.M.E.R v24", "Agent Agrimar"} -local names = {"A Professional With Standards", "AimBot", "AmNot", "Aperture Science Prototype XR7", "Archimedes!", "BeepBeepBoop", "Big Mean Muther Hubbard", "Black Mesa", "BoomerBile", "Cannon Fodder", "CEDA", "Chell", "Chucklenuts", "Companion Cube", "Crazed Gunman", "CreditToTeam", "CRITRAWKETS", "Crowbar", "CryBaby", "CrySomeMore", "C++", "DeadHead", "Delicious Cake", "Divide by Zero", "Dog", "Force of Nature", "Freakin' Unbelievable", "Gentlemanne of Leisure", "GENTLE MANNE of LEISURE ", "GLaDOS", "Glorified Toaster with Legs", "Grim Bloody Fable", "GutsAndGlory!", "Hat-Wearing MAN", "Headful of Eyeballs", "Herr Doktor", "HI THERE", "Hostage", "Humans Are Weak", "H@XX0RZ", "I LIVE!", "It's Filthy in There!", "IvanTheSpaceBiker", "Kaboom!", "Kill Me", "LOS LOS LOS", "Maggot", "Mann Co.", "Me", "Mega Baboon", "Mentlegen", "Mindless Electrons", "MoreGun", "Nobody", "Nom Nom Nom", "NotMe", "Numnutz", "One-Man Cheeseburger Apocalypse", "Poopy Joe", "Pow!", "RageQuit", "Ribs Grow Back", "Saxton Hale", "Screamin' Eagles", "SMELLY UNFORTUNATE", "SomeDude", "Someone Else", "Soulless", "Still Alive", "TAAAAANK!", "Target Practice", "ThatGuy", "The Administrator", "The Combine", "The Freeman", "The G-Man", "THEM", "Tiny Baby Man", "Totally Not A Bot", "trigger_hurt", "WITCH", "ZAWMBEEZ", "Ze Ubermensch", "Zepheniah Mann", "0xDEADBEEF", "10001011101"} -local classtb = {"scout", "soldier", "pyro", "heavy", "demoman", "sniper"} -- "scout", "soldier", "pyro", "engineer", "heavy", "demoman", "sniper", "medic", "spy" -local bot_class = CreateConVar("tf_bot_keep_class_after_death", "0", {FCVAR_ARCHIVE, FCVAR_REPLICATED, FCVAR_NOTIFY}) -local bot_diff = CreateConVar("tf_bot_difficulty", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED, FCVAR_NOTIFY}, "Sets the difficulty level for the bots. Values are: 0=easy, 1=normal, 2=hard, 3=expert. Default is \"Normal\" (1).") -local tf_bot_notarget = CreateConVar("tf_bot_notarget", "0", {FCVAR_ARCHIVE, FCVAR_NOTIFY}) -local tf_bot_melee_only = CreateConVar("tf_bot_melee_only", "0", {FCVAR_ARCHIVE, FCVAR_REPLICATED, FCVAR_NOTIFY}) - -function LBAddProfile(tab) - if profiles[tab["name"]] then return end - table.insert(profiles, tab) -end - -function LBAddBot(team) - --if !profiles[name] then MsgN("That is not a valid bot!") return end - if !navmesh.IsLoaded() then - navmesh.BeginGeneration() - for k, v in pairs(player.GetAll()) do - v:ChatPrint("GENERATING NAV") - end - end - local diff = GetConVar("tf_bot_difficulty"):GetFloat() -- math.random(3) ---[[local diffn = "Normal" - if diff == 0 then - diffn = "Easy" - if diff == 1 then - diffn = "Normal" - elseif diff == 2 then - diffn = "Hard" - elseif diff == 3 then - diffn = "Expert" - end]] - local name = table.Random(names) -- .." (bot) "..diffn --"Bot"..math.random(0, 99) - local bot = player.CreateNextBot(name) - local teamd = TEAM_RED - if team == 1 then - teamd = TEAM_BLU - end - bot.ControllerBot = ents.Create("ctf_bot_navigator") - bot.ControllerBot:Spawn() - bot.LastPath = nil - bot.CurSegment = 2 - bot:SetPlayerClass(table.Random(classtb)) - for k, v in pairs(player.GetAll()) do - v:ChatPrint(tostring(team)) - end - timer.Simple(3, function() - if IsValid(bot) then - bot.LKBot = true - bot:SetTeam(teamd) - bot:Kill() - bot.Difficulty = diff - table.insert(bots, bot) - end - end) -end - -function LBFindClosest(bot) - local players = player.GetHumans() - local distance = 9999 - local player = player.GetHumans()[1] - local distanceplayer = 9999 - for k, v in pairs(players) do - distanceplayer = v:GetPos():Distance(bot:GetPos()) - if distance > distanceplayer and v ~= bot then - distance = distanceplayer - player = v - end - end - - --print(player:Nick().." is the closest!") - bot.FollowPly = player -end - -local function LeadBot_S_Add(team) - if !navmesh.IsLoaded() then - ErrorNoHalt("There is no navmesh! Generate one using \"nav_generate\"!\n") - return - end - - local name = table.Random(names) or "Bot" - local bot = player.CreateNextBot(name) - local teamv = TEAM_RED - if team == 1 then - teamv = TEAM_BLU - end - - if !IsValid(bot) then ErrorNoHalt("[LeadBot] Player limit reached!\n") return end - - bot.LastSegmented = CurTime() - - bot.ControllerBot = ents.Create("ctf_bot_navigator") - bot.ControllerBot:Spawn() - bot.ControllerBot:SetOwner(bot) - - bot.LastPath = nil - bot.CurSegment = 2 - bot.LeadBot = true - bot.BotStrategy = math.random(0, 1) - - bot:SetTeam(teamv) - bot:SetPlayerClass(table.Random(classtb)) - - timer.Simple(1, function() - if IsValid(bot) then - bot:Kill() - end - end) - - MsgN("[LeadBot] Bot " .. name .. " with strategy " .. bot.BotStrategy .. " added!") -end - -hook.Add("PostCleanupMap", "LeadBot_S_PostCleanup", function() - for k, v in pairs(player.GetBots()) do - if v.LeadBot then - v.ControllerBot = ents.Create("ctf_bot_navigator") - v.ControllerBot:Spawn() - end - end -end) - -hook.Add("PostPlayerDeath", "LeadBot_S_Death", function(bot) - if bot.LeadBot then - timer.Simple(2, function() - if IsValid(bot) and !bot:Alive() then - bot:Spawn() - end - end) - end -end) - -hook.Add("StartCommand", "LeadBot_S_Command", function(bot, cmd) - if bot.LeadBot then - local buttons = IN_RELOAD - local botWeapon = bot:GetActiveWeapon() - - --[[if IsValid(botWeapon) and (botWeapon:Clip1() == 0 or !IsValid(bot.TargetEnt) and botWeapon:Clip1() <= botWeapon:GetMaxClip1() / 2) then - buttons = buttons + IN_RELOAD - end]] - - if IsValid(bot.TargetEnt) and (math.random(2) == 1 or bot:GetPlayerClass() == "heavy") then - buttons = buttons + IN_ATTACK - end - - cmd:ClearButtons() - cmd:ClearMovement() - cmd:SetButtons(buttons) - end -end) - -hook.Add("PlayerSpawn", "LeadBot_S_PlayerSpawn", function(bot) - if bot.LeadBot then - local class = table.Random(classtb) - - timer.Simple(1, function() - if !bot_class:GetBool() then - bot:SetPlayerClass(table.Random(classtb)) - end - - timer.Simple(0.1, function() - bot:SetPlayerClass(bot:GetPlayerClass()) - --[[if bot:GetPlayerClass() ~= "medic" then - RandomWeapon2(bot, "primary") - RandomWeapon2(bot, "secondary") - RandomWeapon2(bot, "melee") - end]] - end) - - bot:SetFOV(100, 0) - end) - end -end) - -hook.Add("SetupMove", "LeadBot_Control", function(bot, mv, cmd) - if bot.LeadBot then - if bot.ControllerBot:GetPos() ~= bot:GetPos() then - bot.ControllerBot:SetPos(bot:GetPos()) - end - - bot.TargetEnt = nil - - --cmd:SetForwardMove(250) - - ------------------------------ - -----[[ENTITY DETECTION]]----- - ------------------------------ - - for k, v in pairs(ents.GetAll()) do - if v:IsPlayer() and v ~= bot and v:GetPos():Distance(bot:GetPos()) < 1500 then - if (v:Team() ~= bot:Team() and bot:Team() ~= TEAM_UNASSIGNED) or bot:Team() == TEAM_UNASSIGNED then -- TODO: find a better way to do this - local targetpos = v:EyePos() - Vector(0, 0, 10) -- bot eye check, don't start shooting targets just because we barely see their head - local trace = util.TraceLine({start = bot:GetShootPos(), endpos = targetpos, filter = function( ent ) return ent == v end}) - - if trace.Entity == v then -- TODO: FOV Check - bot.TargetEnt = v - end - end - elseif v:GetClass() == "prop_door_rotating" and v:GetPos():Distance(bot:GetPos()) < 70 then - -- open a door if we see one blocking our path - local targetpos = v:GetPos() + Vector(0, 0, 45) - - if util.TraceLine({start = bot:GetShootPos(), endpos = targetpos, filter = function( ent ) return ent == v end}).Entity == v then - v:Fire("Open","",0) - end - end - end - - ------------------------------ - --------[[BOT LOGIC]]--------- - ------------------------------ - - mv:SetForwardSpeed(1200) - - if bot:GetPlayerClass() == "scout" or !IsValid(bot.TargetEnt) and (!bot.botPos or bot:GetPos():Distance(bot.botPos) < 60 or math.abs(bot.LastSegmented - CurTime()) > 10) then - -- find a random spot on the map, and in 10 seconds do it again! - -- bot.botPos = bot.ControllerBot:FindSpot("random", {radius = 12500}) - bot.LastSegmented = CurTime() - - local intel - local fintel - local intelcap - local fintelcap - local targetpos2 = Vector(0, 0, 0) - - if string.find(game.GetMap(), "ctf_") then -- CTF AI - for k, v in pairs(ents.FindByClass("item_teamflag")) do - if v.TeamNum ~= bot:Team() then - intel = v - else - fintel = v - end - end - - for k, v in pairs(ents.FindByClass("func_capturezone")) do - if v.TeamNum ~= bot:Team() then - intelcap = v - else - fintelcap = v - end - end - - if !intel.Carrier and !fintel.Carrier then -- neither intel has a capture - targetpos2 = intel:GetPos() -- goto enemy intel - ignoreback = true - elseif intel.Carrier == bot then -- or if friendly intelligence has capture - targetpos2 = fintelcap.Pos -- goto friendly cap spot - ignoreback = true - elseif intel.Carrier then -- or else if we have it already carried - targetpos2 = intel.Carrier:GetPos() -- follow that man - end - end - - bot.botPos = targetpos2 - elseif IsValid(bot.TargetEnt) then - -- move to our target - local distance = bot.TargetEnt:GetPos():Distance(bot:GetPos()) - bot.botPos = bot.TargetEnt:GetPos() - - -- back up if the target is really close - -- TODO: find a random spot rather than trying to back up into what could just be a wall - if distance <= 300 then - mv:SetForwardSpeed(-1200) - end - - if bot:GetPlayerClass() == "sniper" then - mv:SetForwardSpeed(0) - end - end - - bot.ControllerBot.PosGen = bot.botPos - - if bot.ControllerBot.P then - bot.LastPath = bot.ControllerBot.P:GetAllSegments() - end - - if !bot.ControllerBot.P then - return - end - - if bot.CurSegment ~= 2 and !table.EqualValues( bot.LastPath, bot.ControllerBot.P:GetAllSegments() ) then - bot.CurSegment = 2 - end - - if !bot.LastPath then return end - local curgoal = bot.LastPath[bot.CurSegment] - if !curgoal then return end - - -- think one step ahead! - if bot:GetPos():Distance(curgoal.pos) < 50 and bot.LastPath[bot.CurSegment + 1] then - curgoal = bot.LastPath[bot.CurSegment + 1] - end - - ------------------------------ - --------[[BOT EYES]]--------- - ------------------------------ - - local lerp = 0.4 - - mv:SetMoveAngles(LerpAngle(lerp, mv:GetMoveAngles(), ((curgoal.pos + Vector(0, 0, 65)) - bot:GetShootPos()):Angle())) - - if IsValid(bot.TargetEnt) and bot:GetEyeTrace().Entity ~= bot.TargetEnt then - local shouldvegoneforthehead = bot.TargetEnt:EyePos() - local group = math.random(0, bot.TargetEnt:GetHitBoxGroupCount() - 1) - local bone = bot.TargetEnt:GetHitBoxBone(math.random(0, bot.TargetEnt:GetHitBoxCount(group) - 1), group) or 0 - shouldvegoneforthehead = bot.TargetEnt:GetBonePosition(bone) - - bot:SetEyeAngles(LerpAngle(lerp, bot:EyeAngles(), (shouldvegoneforthehead - bot:GetShootPos()):Angle()) --[[+ bot:GetViewPunchAngles()]]) - return - elseif bot:GetPos():Distance(curgoal.pos) > 20 then - local ang2 = ((curgoal.pos + Vector(0, 0, 65)) - bot:GetShootPos()):Angle() - local ang = LerpAngle(lerp, mv:GetMoveAngles(), ang2) - bot:SetEyeAngles(LerpAngle(0.03, bot:EyeAngles(), ang2)) - mv:SetMoveAngles(ang) - end - end -end) - -hook.Add("PlayerSpawn", "leadbot_spawn", function(ply) - timer.Simple(0.1, function() - if ply.LKBot then - --[[ply:StripWeapons() - ply:Give("cw_m1911")]] - local class = table.Random(classtb) - - timer.Simple(1, function() - if !bot_class:GetBool() then - ply:SetPlayerClass(table.Random(classtb)) - end - - timer.Simple(0.1, function() - ply:SetPlayerClass(ply:GetPlayerClass()) - if ply:GetPlayerClass() ~= "medic" then - RandomWeapon2(ply, "primary") - RandomWeapon2(ply, "secondary") - RandomWeapon2(ply, "melee") - end - end) - ply:SetPlayerColor(Vector(math.random(0, 255) / 255, math.random(0, 255) / 255, math.random(0, 255) / 255)) - ply:SetFOV(100, 0) - end) - - if tf_bot_melee_only:GetBool() then - local weps = ply:GetWeapons() - for k, v in pairs(weps) do - if v.Base == "tf_weapon_melee_base" then - timer.Simple(0.2, function() - ply:SelectWeapon(v:GetClass()) - end) - print(v) - end - end - end - - --if !DeathMatch:GetBool() then return end - --local spawns = {Vector(-213.596680, -1471.438721, -79.968750), Vector(369.839966, -1744.694458, -79.968750), Vector(-835.960327, -1636.255249, 5.029270), Vector(-441.878693, -1857.632935, -79.968750), Vector(557.627441, -1333.633301, 64.693993)} - - --ply:SetPos(table.Random(spawns) + Vector(0, 0, math.random(10, 70))) - end - end) -end) - -hook.Add("PlayerDisconnected", "leadbot_removed", function(ply) - if IsValid(ply) and IsValid(ply.ControllerBot) then - ply.ControllerBot:Remove() - end -end) - -hook.Add("Think", "leadbot_think", function() - --for _, bot in pairs(player.GetBots()) do - --print(bot) - --[[for m, n in pairs(ents.FindByClass("prop_buys")) do - if n:GetPos():Distance(bot:GetPos()) < 120 then - print(n) - end - end]] - --[[if bot:Team() == TEAM_SPECTATOR then - bot:SetTeam(TEAM_PLAYERS) - end]] - --[[if bot.LKBot then - if IsValid(bot:GetActiveWeapon()) then - local wep = bot:GetActiveWeapon() - local ammoty = wep:GetPrimaryAmmoType() or wep.Primary.Ammo - --bot:SetAmmo(32, ammoty) - end]] - - --[[if nzRound:InState(ROUND_WAITING) and !IsValid(bot:GetActiveWeapon()) then - bot:KillSilent() - end]] - - --if bot:GetActiveWeapon() == NULL or (IsValid(bot:GetActiveWeapon()) and bot:GetActiveWeapon():GetClass() ~= Entity(1):GetActiveWeapon():GetClass()) or !IsValid(bot:GetActiveWeapon()) then - --if Entity(1):GetActiveWeapon():GetClass() ~= "nz_quickknife_crowbar" and Entity(1):GetActiveWeapon():GetClass() ~= "nz_grenade" and !IsValid(bot.UseTarget) then - --bot:StripWeapons() - --bot:Give(Entity(1):GetActiveWeapon():GetClass()) - --end - --end - --end - --end -end) - -hook.Add("OnPlayerReady", "leadbot_ready", function() - RunConsoleCommand("lk.ready_bots") -end) - -hook.Add("StartCommand", "leadbot_control", function(bot, cmd) - if bot.LKBot then - cmd:ClearMovement() - cmd:ClearButtons() - --cmd:SetButtons(IN_ATTACK) - - --bot:SetFOV(100, 0) - - --LBFindClosest(bot) - - if bot.ControllerBot:GetPos() ~= bot:GetPos() then - bot.ControllerBot:SetPos(bot:GetPos()) - bot.ControllerBot:SetAngles(bot:EyeAngles()) - end - - --[[if bot.ControllerBot:GetModel() ~= bot:GetModel() then - bot.ControllerBot:SetModel(bot:GetModel()) - end]] - - bot.TargetEnt = nil - bot.UseTarget = nil - bot.FollowPly = bot.FollowPly or bot - - local ignoreback = true -- false - - --if bot:GetPos():Distance(Vector(-4.121376, 3.947412, -165.17173)) <= 100 then - --if bot:GetPos().z <= -155 then - --bot:SetPos(Vector(-2.374759, -587.545959, 136.182220)) - -- bot:Kill() - --end - - local targetply = player.GetBots()[2]--Entity(4) - local targetpos2 = Vector(457.283539, -3213.777588, -94.868698)--Vector(-489.159485, 3313.968750, -107.968750)--Vector(0, 0, 0)--ents.FindByClass("team_control_point")[1]:GetPos()--targetply:GetPos() -- Vector(-213.596680, -1471.438721, -79.968750) - local intel - local fintel - local intelcap - local fintelcap - - if string.find(game.GetMap(), "ctf_") then - for k, v in pairs(ents.FindByClass("item_teamflag")) do - if v.TeamNum ~= bot:Team() then - intel = v - else - fintel = v - end - end - - for k, v in pairs(ents.FindByClass("func_capturezone")) do - if v.TeamNum ~= bot:Team() then - intelcap = v - else - fintelcap = v - end - end - - if !intel.Carrier and !fintel.Carrier then -- neither intel has a capture - targetpos2 = intel:GetPos() -- goto enemy intel - ignoreback = true - elseif intel.Carrier == bot then -- or if friendly intelligence has capture - targetpos2 = fintelcap.Pos -- goto friendly cap spot - ignoreback = true - elseif intel.Carrier then -- or else if we have it already carried - targetpos2 = intel.Carrier:GetPos() -- follow that man - end - end - - --[[for k, v in pairs(player.GetAll()) do - if v:Alive() and v:GetPos():Distance(bot:GetPos()) < 4096 and !v:IsBot() and !ignoreback then - if bot:GetPos():Distance(v:GetPos()) > 150 then - cmd:SetForwardMove( 800 ) - elseif bot:GetPos():Distance(v:GetPos()) < 100 then - cmd:SetForwardMove( -250 ) - end - elseif v:Alive() then - cmd:SetForwardMove( 800 ) - end - end ]] - - --[[for k, v in pairs(ents.GetAll()) do - local class = v:GetClass() - if (class == "prop_buys" or class == "func_button" or class == "func_door" or class == "func_door_rotating" or class == "prop_dynamic" or class == "prop_door_rotating" or class == "nz_script_triggerzone" or class == "nz_triggerbutton") and v:GetPos():Distance(bot:GetPos()) < 150 then - nzDoors:BuyDoor( bot, v ) - elseif v:GetClass() == "wall_buys" and tonumber(v:GetPrice()) <= bot:GetPoints() and (IsValid(bot:GetActiveWeapon()) and bot:GetActiveWeapon():GetClass() ~= v:GetWepClass()) and bot.LastGunPrice <= tonumber(v:GetPrice()) and v:GetPos():Distance(bot:GetPos()) < 120 then - --print(v:GetWepClass()) - v:Use(bot, bot, USE_SET, 1) - bot.LastGunPrice = tonumber(v:GetPrice()) - timer.Simple(0.1, function() bot:SelectWeapon(v:GetWepClass()) end) - elseif v:GetClass() == "breakable_entry" and v:GetPos():Distance(bot:GetPos()) < 180 then - v:Use(bot, bot, USE_SET, 1) - end - end]] - - --[[for m, n in pairs(player.GetAll()) do - if n:GetPos():Distance(bot:GetPos()) < 320 and !n:GetNotDowned() then - --print(n:Nick().." is Downed!") - bot.UseTarget = n - end - end]] - - - if !bot:Alive() and bot:Team() ~= TEAM_SPECTATOR then - cmd:SetButtons(IN_ATTACK) - end - - --[[if bot:GetPlayerClass() == "engineer" then - bot:ConCommand("build", "3") - end]] - - --[[if bot:GetPlayerClass() == "medic" and (!IsValid(intel) or (IsValid(intel) and intel.Carrier ~= bot)) then - --print(intel) - local targetply = player.GetAll()[1] - for k, v in pairs(player.GetAll()) do - if v ~= bot and v:Team() == bot:Team() and v:Health() < v:GetMaxHealth() / 2 then - targetply = v - end - end - - if targetply:Health() > targetply:GetMaxHealth() / 2 then - targetply = nil - end - - if IsValid(targetply) then - targetpos2 = targetply:GetPos() - local trace = util.QuickTrace(bot:EyePos(), targetply:EyePos() - bot:EyePos(), bot) - debugoverlay.Line(trace.StartPos, trace.HitPos, 1, Color( 255, 255, 0 )) - - if trace.Entity == targetply then - bot.TargetEnt = targetply - bot:SetEyeAngles((targetply:EyePos() - bot:GetShootPos()):Angle()) - bot:SelectWeapon("tf_weapon_medigun") - cmd:SetButtons(IN_ATTACK) - else - bot.TargetEnt = nil - end - end - end]] - - --PrintTable(Entity(2):GetAttachments()) - - local BotCanTarget = tf_bot_notarget:GetBool() - - if !BotCanTarget then - for k, v in pairs(player.GetAll()) do - if v:Team() ~= bot:Team() and v:Alive() and v:Team() ~= TEAM_SPECTATOR then - local att - if !v:IsHL2() then - att = v:GetAttachment(v:LookupAttachment("head")).Pos - else - att = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Head1")) - end - local trace = util.QuickTrace(bot:EyePos(), att - bot:EyePos(), team.GetPlayers(bot:Team())) - if trace.Entity == v then - debugoverlay.Text(bot:EyePos() + Vector(0, 0, 15), "I can see you "..v:Nick().."!", 0.03, false) - bot.TargetEnt = v - end - end - end - end - - - - --[[if BotCanTarget and !IsValid(bot.TargetEnt) and (bot:GetPlayerClass() ~= "medic" or (bot:GetPlayerClass() == "medic" and bot:GetActiveWeapon() and bot:GetActiveWeapon():GetClass() ~= "tf_weapon_medigun")) then - for k, v in pairs(ents.GetAll()) do - if (v:IsNPC() or v:GetClass() == "obj_sentrygun" or v:IsPlayer()) - and (GAMEMODE:EntityTeam(v) ~= bot:Team() or GAMEMODE:EntityTeam(v) == TEAM_NEUTRAL) - and v ~= bot and v:Alive() and v:IsBot() then --and v:GetPos():Distance(bot:GetPos()) < 350 then - local headbone = v:LookupBone("ValveBiped.Bip01_Head1") - local targetpos = v:GetPos() - if !headbone then - headbone = v:LookupBone("bip_head") - end - --print(headbone) - if headbone then - targetpos = v:GetBonePosition(headbone) - end]] - --[[for i=0, v:GetBoneCount()-1 do - print(v:GetBoneName(i)) - end]] - --[[local trace = util.TraceLine({ - start = bot:GetShootPos(), - endpos = targetpos, - filter = function( ent ) - if ent == v then - return true - end - end - })]] - --[[local newpos = v:EyePos() or v:GetPos() - local trace = util.QuickTrace(bot:EyePos(), newpos - bot:EyePos(), bot) - local color = Color(255, 0, 0) - -- debugoverlay.Line(trace.StartPos, trace.HitPos, 0.03, color) - if trace.Entity == v then - bot.TargetEnt = v - --print(v) - end - end - end - end]] - - --[[if bot:Health() < bot:GetMaxHealth() / 3 and !IsValid(bot.TargetEnt) then - if math.random(2) == 1 then - local args = {"TLK_PLAYER_MEDIC"} - if bot:Speak(args[1]) then - bot:DoAnimationEvent(ACT_MP_GESTURE_VC_HANDMOUTH, true) - - umsg.Start("TFPlayerVoice") - umsg.Entity(bot) - umsg.String(args[1]) - umsg.End() - end - end - end]] - - cmd:SetForwardMove(1000) - - if IsValid(bot.TargetEnt) then - --for i=0, bot.TargetEnt:GetBoneCount()-1 do - --print(bot.TargetEnt:GetBoneName(i)) - -- end - --[[if bot:GetPos():Distance(bot.TargetEnt:GetPos()) < 40 then - bot:Give("nz_quickknife_crowbar") - bot:SelectWeapon("nz_quickknife_crowbar") - end]] - --[[if (IsValid(bot:GetActiveWeapon()) and bot:GetActiveWeapon().Base ~= "tf_weapon_melee_base") and bot:GetPos():Distance(bot.TargetEnt:GetPos()) < 120 then - cmd:SetForwardMove( -250 ) - else]] - if bot:GetPos():Distance(bot.TargetEnt:GetPos()) < 250 then - cmd:SetForwardMove(-250) - if bot:GetPlayerClass() == "pyro" then - cmd:SetButtons(IN_ATTACK) - end - end - --if IsValid(bot:GetActiveWeapon()) and bot:GetActiveWeapon():Clip1() ~= 0 then - --print("SHOOT!!!") - --bot:GetActiveWeapon():PrimaryAttack() - --cmd:SetButtons(IN_CANCEL) - if bot:GetPlayerClass() ~= "pyro" then - if math.random(2) == 1 or bot:GetPlayerClass() == "heavy" then --[[or bot:GetActiveWeapon().Base ~= "tf_weapon_melee_base")]] - cmd:SetButtons(IN_ATTACK) - end - end - --bot:GetActiveWeapon():SetClip1(100) - --end - else - cmd:SetButtons(IN_RELOAD) - --[[if bot:GetPlayerClass() == "heavy" then - --cmd:SetButtons(IN_ATTACK2) - end]] - end - - if IsValid(bot:GetActiveWeapon()) and bot:GetActiveWeapon():Clip1() == 0 then - --print(bot:GetActiveWeapon():Clip1()) - --print("RELOAD") - --bot:GetActiveWeapon():SetClip1(1) - if math.random(2) == 1 then - cmd:SetButtons(IN_RELOAD) - end - end - - --print(bot.UseTarget) - - --[[if IsValid(bot.UseTarget) then - cmd:SetButtons(IN_USE) - if bot:GetPos():Distance(bot.UseTarget:GetPos()) > 50 then - cmd:SetForwardMove(250) - end - end - - if bot:GetMoveType() == MOVETYPE_LADDER then - cmd:SetButtons(bit.bor(IN_JUMP, IN_DUCK)) - --cmd:SetForwardMove(-250) - bot:SetMoveType(MOVETYPE_WALK) - local pos = navmesh.GetNavArea(targetply:GetPos(), 5):GetRandomPoint() - if isvector(pos) then - bot:SetPos(pos) - end - - end]] - - --print(math.abs(cmd:GetForwardMove()), math.floor(math.abs(tonumber(bot:GetVelocity():Length())))) - - --[[if math.floor(math.abs(tonumber(bot:GetVelocity():Length()))) <= 1 and math.abs(cmd:GetForwardMove()) >= 1 and bot:GetNotDowned() then - cmd:SetButtons(IN_JUMP) - print("Stuck!") - end]] - - --print(bot.TargetEnt) - - if IsValid(bot.TargetEnt) then - targetpos2 = bot.TargetEnt:GetPos() - end - - bot.ControllerBot.PosGen = targetpos2 --targetply:GetPos() --navmesh.GetNavArea(Entity(1):GetPos(), 1):GetCenter() or Entity(1):GetPos() - --[[if bot:GetPos():Distance(bot.ControllerBot.PosGen) > 150 and !ignoreback then - cmd:SetForwardMove( 1000 ) - elseif bot:GetPos():Distance(bot.ControllerBot.PosGen) < 100 and !ignoreback then - cmd:SetForwardMove( -250 ) - else]] - - --end - - if bot.ControllerBot.P then - bot.LastPath = bot.ControllerBot.P:GetAllSegments() - end - - if !bot.ControllerBot.P then - return - end - - if bot.CurSegment ~= 2 and !table.EqualValues( bot.LastPath, bot.ControllerBot.P:GetAllSegments() ) then - bot.CurSegment = 2 - end - - if !bot.LastPath then return end - local curgoal = bot.LastPath[bot.CurSegment] - if !curgoal then return end -- why tf does this not work?? - - if bot:GetPos():Distance(curgoal.pos) < 50 then - bot.LastSegmented = CurTime() - if bot.LastPath[bot.CurSegment + 1] then - curgoal = bot.LastPath[bot.CurSegment + 1] - end - end - --debugoverlay.Text(curgoal.pos, bot:Nick().."'s goal", 0.03, false) - --bot:LookatPosXY( cmd, curgoal.pos ) - --bot:SetEyeAngles((curgoal.pos - bot:GetShootPos()):Angle()) - - local lerp = 0.3 - if bot.Difficulty == 0 then - lerp = 0.2 - elseif bot.Difficulty == 2 then - lerp = 0.5 - elseif bot.Difficulty == 3 then - lerp = 0.7 - end - - if IsValid(bot.TargetEnt) then - bot:SetEyeAngles(LerpAngle(lerp, bot:EyeAngles(), (bot.TargetEnt:EyePos() - bot:GetShootPos()):Angle())) - elseif curgoal and bot:GetPos():Distance(curgoal.pos) > 20 then - bot:SetEyeAngles(LerpAngle(0.25, bot:EyeAngles(), ((curgoal.pos + Vector(0, 0, 65)) - bot:GetShootPos()):Angle())) - end - - bot.LastSegmented = bot.LastSegmented or CurTime() - - --debugoverlay.Text(bot:GetPos(), bot:Nick().." LAST: "..bot.LastSegmented - CurTime().." DISTANCE: "..bot:GetPos():Distance( curgoal.pos ), 0.001, false) - --debugoverlay.Sphere(bot:GetPos(), 10, 0.05, gamemode.Call("GetTeamColor", bot), true) - --debugoverlay.Line(bot:GetPos(), curgoal.pos, 1.1, Color(0, 255, 0), true) - - - --[[bot:SetEyeAngles((curgoal.pos - bot:GetShootPos()):Angle()) - - if IsValid(bot.TargetEnt) then - bot:SetEyeAngles((targetpos2 - bot:GetShootPos()):Angle()) - end]] - - --debugoverlay.Text(bot:EyePos() - Vector(0, 0, 15), math.abs(bot.LastSegmented - CurTime()), 0.005, false) - - --if bot.LastSegmented - CurTime() < -5 and !IsValid(bot.TargetEnt) and !util.IsInWorld(curgoal.pos) then -- ai fault check (buggy) - --debugoverlay.Text(bot:EyePos(), "yikes!", 1, false) - --[[bot.CurSegment = bot.CurSegment + 1 - bot.LastSegmented = CurTime() - local curgoal = bot.LastPath[bot.CurSegment + 1] - if !curgoal then return end - bot:LookatPosXY( cmd, curgoal.pos + Vector(0, 0, 150) ) - --debugoverlay.Line(bot:GetPos(), curgoal.pos + Vector(0, 0, 150), 1.1, Color(255, 255, 255), true) - cmd:SetForwardMove( 1000 )]] - --bot:SetPos(curgoal.pos) - --bot.LastSegmented = CurTime() - --end - - --print(bot.CurSegment) - end -end) - -hook.Add("PostPlayerDeath", "leadbot_respawn", function(bot) - timer.Simple(2, function() if bot.LKBot and !bot:Alive() then bot:Spawn() end end) -end) - -function table.EqualValues(t1,t2,ignore_mt) - ignore_mt = ignore_mt or true - local ty1 = type(t1) - local ty2 = type(t2) - if ty1 ~= ty2 then return false end - -- non-table types can be directly compared - if ty1 ~= 'table' and ty2 ~= 'table' then return t1 == t2 end - -- as well as tables which have the metamethod __eq - local mt = getmetatable(t1) - if not ignore_mt and mt and mt.__eq then return t1 == t2 end - for k1,v1 in pairs(t1) do - local v2 = t2[k1] - if v2 == nil or not table.EqualValues(v1,v2) then return false end - end - for k2,v2 in pairs(t2) do - local v1 = t1[k2] - if v1 == nil or not table.EqualValues(v1,v2) then return false end - end - return true -end - -debug.getregistry().Player.LookatPosXY = function( self, cmd, pos ) - if IsValid(self.TargetEnt) then - local targetpos = self.TargetEnt:EyePos() or self.TargetEnt:GetPos() - --[[if self.TargetEnt:LookupBone("bip_head") then - targetpos = self.TargetEnt:GetBonePosition(self.TargetEnt:LookupBone("bip_head")) - elseif self.TargetEnt:LookupBone("ValveBiped.Bip01_Head1") then - targetpos = self.TargetEnt:GetBonePosition(self.TargetEnt:LookupBone("ValveBiped.Bip01_Head1")) - end]] - - local lerp = 0.2 - if self.Difficulty == 0 then - lerp = 0.3 - elseif self.Difficulty == 2 then - lerp = 0.1 - elseif self.Difficulty == 3 then - lerp = 0 - end - - local angle = LerpAngle(lerp, self:EyeAngles(), (targetpos - self:GetShootPos()):Angle()) - --local angle = (targetpos - self:GetShootPos()):Angle() - self:SetEyeAngles(angle) - cmd:SetViewAngles(angle) - return - end - - local our_position = self:GetPos() - local distance = our_position:Distance( pos ) - local pitch = math.atan2( -(pos.z - our_position.z), distance ) - local yaw = math.deg(math.atan2(pos.y - our_position.y, pos.x - our_position.x)) - - --local angle = LerpAngle(0.2, self:EyeAngles(), Angle( pitch, yaw, 0 )) - local angle = Angle( pitch, yaw, 0 ) - --print(pos) - --local angle = (pos - self:GetShootPos()):Angle() - - self:SetEyeAngles( angle ) - cmd:SetViewAngles( angle ) -end - -concommand.Add("tf_bot_kick_all", function() for k, v in pairs(player.GetBots()) do v:Kick("Kicked from server") end end) -concommand.Add("tf_bot_bring_all", function(ply) for k, v in pairs(player.GetBots()) do v:SetPos(ply:GetPos()) end end) -concommand.Add("tf_bot_goto", function(ply) local bots = {} for k, v in pairs(player.GetBots()) do table.insert(bots, v) end ply:SetPos(table.Random(bots):GetPos()) end) -concommand.Add("tf_bot_bring", function(ply) local bots = {} for k, v in pairs(player.GetBots()) do table.insert(bots, v) end local pos = navmesh.GetNavArea(Entity(1):GetPos(), 5):GetRandomPoint() table.Random(bots):SetPos(pos) end) -concommand.Add("tf_bot_kill_all", function() for k, v in pairs(player.GetAll()) do v:Kill() end end) -concommand.Add("tf_bot_kill_bots", function() for k, v in pairs(player.GetBots()) do v:Kill() end end) -concommand.Add("tf_bot_say", function(ply, _, args) for k, v in pairs(player.GetBots()) do v:Say(args[1]) end end) - ---concommand.Add("lk.noclip", function(ply) if ply:GetMoveType() == MOVETYPE_NOCLIP then ply:SetMoveType(MOVETYPE_WALK) else ply:SetMoveType(MOVETYPE_NOCLIP) end end) ---concommand.Add("lk.downme", function(ply) ply:DownPlayer() end) -concommand.Add("tf_bot_add", function(_, _, args) LeadBot_S_Add(args[1]) end) - -concommand.Add("tf_bot_name_add", function(_, _, args) table.insert(names, args[1]) MsgN(args[1].." added to names list!") end) -concommand.Add("tf_bot_quota", function(_, _, args) for i=0, args[1]-1 do LeadBot_S_Add() end end) - ---concommand.Add("lk.playerclass", function(_, _, args) for k, v in pairs(player.GetBots()) do v:SetPlayerClass(args[1]) end end) - -concommand.Add("tf_bot_scramble", function(_, _, args) for k, v in pairs(player.GetBots()) do local teamd = TEAM_RED if math.random(2) == 1 then teamd = TEAM_BLU end v:SetTeam(teamd) end end) - ---concommand.Add("lk.neutral", function(_, _, args) for k, v in pairs(player.GetBots()) do v:SetTeam(TEAM_NEUTRAL) end end) ---:SpectateEntity(table.Random(player.GetBots())) -concommand.Add("tf_spectate_bot", function(ply, _, args) if args[1] == "2" then ply:Spectate(OBS_MODE_CHASE) return elseif args[1] == "1" then ply:Spectate(OBS_MODE_IN_EYE) return elseif args[1] == "3" then ply:Spectate(OBS_MODE_ROAMING) return end ply:StripWeapons() local bot = table.Random(player.GetBots()) ply:SpectateEntity(bot) ply:Spectate(OBS_MODE_IN_EYE) end) -concommand.Add("tf_unspectate_bot", function(ply) ply:UnSpectate() ply:KillSilent() ply:Spawn() end) - -concommand.Add("tf_bot_takecontrol", function(ply) local bot = ply:GetObserverTarget() ply:UnSpectate() ply:SetMoveType(MOVETYPE_WALK) ply:KillSilent() ply:Spawn() ply:SetTeam(bot:Team()) ply:SetPlayerClass(bot:GetPlayerClass()) timer.Simple(0.1, function() ply:UnSpectate() ply:SetPlayerClass(bot:GetPlayerClass()) timer.Simple(0.1, function() ply:SetHealth(bot:Health()) ply:SetPos(bot:GetPos()) ply:SetEyeAngles(bot:EyeAngles()) ply:SendLua([[surface.PlaySound("misc/freeze_cam.wav")]]) bot:Kill() end) end) end) - ---[[concommand.Add("tf_bot_difficulty", function(_, _, args) - if !args[1] then MsgN("Defines the skill of bots joining the game.") return - local diffn = "easy" - if args[1] == "2" then - diffn = "medium" - elseif args[1] == "3" then - diffn = "hard" - end - - for k, v in pairs(player.GetBots()) do - v.Difficulty = args[1] - end - - for k, v in pairs(player.GetAll()) do - v:ChatPrint("Difficulty has been set to "..args[1].." ("..diffn..")") - end -end)]] \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/sv_damage.lua b/addon/gamemodes/teamfortress/gamemode/sv_damage.lua deleted file mode 100644 index 0e49c25bc..000000000 --- a/addon/gamemodes/teamfortress/gamemode/sv_damage.lua +++ /dev/null @@ -1,683 +0,0 @@ -local BlastForceMultiplier = 16 -local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) - -local BulletForceMultiplier = 3 - -local ForceScaleDamageEntityClasses = { -tf_flame = true, -tf_entityflame = true, -tf_entitybleed = true, -npc_grenade_frag = true, -rpg_missile = true, -tf_projectile_rocket = true, -grenade_spit = true, -obj_sentrygun = true, -obj_dispenser = true, -} -local ForceDamageClasses = { -npc_combinegunship = true, -} - ---[[ -function GM:OnPlayerHitGround(pl, inWater, onFloater, speed) - if speed>580 and not inWater and not onFloater then - local dmg = self:GetFallDamage(pl, speed) - pl:ViewPunch(Angle()) - end - return true -end]] - -local mp_falldamage = GetConVar("mp_falldamage") - --- No ear ringing sound when damaged by explosion -function GM:OnDamagedByExplosion(pl, dmginfo) -end - -function GM:GetFallDamage(pl, sp) - if mp_falldamage:GetBool() then - if sp <= 550 then return 0 end - - return math.sqrt(sp-550)*3.47 - else - return 10 - end -end - -function GM:PreScaleDamage(ent, hitgroup, dmginfo) - local inf, att = dmginfo:GetInflictor(), dmginfo:GetAttacker() - - ApplyAttributesFromEntity(dmginfo:GetInflictor(), "pre_damage", ent, hitgroup, dmginfo) - - if att:IsPlayer() then - ApplyGlobalAttributesFromPlayer(att, "pre_damage", ent, hitgroup, dmginfo) - end - - if ent:IsPlayer() then - ApplyAttributesFromEntity(ent:GetActiveWeapon(), "pre_damage_received", ent, hitgroup, dmginfo) - ApplyGlobalAttributesFromPlayer(ent, "pre_damage_received", ent, hitgroup, dmginfo) - end - - if att:IsNPC() then - att:CallNPCEvent("pre_damage", ent, hitgroup, dmginfo) - end - - -- Used for recalculating custom damage falloff - -- (especially for the Direct Hit which does not do enough damage due to its poor blast radius) - --[[if inf.ModifyInitialDamage then - dmginfo:SetDamage(inf:ModifyInitialDamage(ent, dmginfo)) - end]] - - if dmginfo:GetAttacker() ~= ent and inf.ExplosionRadiusMultiplier and inf.ExplosionRadiusMultiplier < 1 then - local frac = dmginfo:GetDamage() * 0.01 - local saturate = 1 / inf.ExplosionRadiusMultiplier - local range_reduce = 1 - inf.ExplosionRadiusMultiplier - - frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) - - if frac * 100 < 1 then - dmginfo:SetDamage(0) - else - dmginfo:SetDamage(frac * 100) - end - end -end - -function GM:PostScaleDamage(ent, hitgroup, dmginfo) - local att = dmginfo:GetAttacker() - - ApplyAttributesFromEntity(dmginfo:GetInflictor(), "post_damage", ent, hitgroup, dmginfo) - - if att:IsPlayer() then - ApplyGlobalAttributesFromPlayer(att, "post_damage", ent, hitgroup, dmginfo) - end - - if ent:IsPlayer() then - ApplyAttributesFromEntity(ent:GetActiveWeapon(), "post_damage_received", ent, hitgroup, dmginfo) - ApplyGlobalAttributesFromPlayer(ent, "post_damage_received", ent, hitgroup, dmginfo) - end - - if att:IsNPC() then - att:CallNPCEvent("post_damage", ent, hitgroup, dmginfo) - end - - if dmginfo:GetDamage() > 0 and ent:IsTFPlayer() and not ent:IsBuilding() - and att:IsTFPlayer() and not att:IsBuilding() and ent:HasPlayerState(PLAYERSTATE_MILK) then - GAMEMODE:HealPlayer(nil, att, dmginfo:GetDamage() * 0.75, true, false) - end -end - --------------------------------------------------------------- --- TF2 damage system (takes care of damage spread --- for TF2 bullets, special damage effects (jarate) and crits) - -function GM:CommonScaleDamage(ent, hitgroup, dmginfo) - if ent:IsTFPlayer() and ent:Health() <= 0 then - return - end - - --ent.DoneScaleDamage = true - - local dontscaledamage = false - - local att, inf = dmginfo:GetAttacker(), dmginfo:GetInflictor() - - -- HL2 guns and melee weapons use the owner as the inflictor, get the real inflictor by retrieving the owner's current weapon - if inf == att and att:IsPlayer() then - inf = att:GetActiveWeapon() - end - - -- Damage from fire produces this annoying burn pain sound that we don't want - -- Just turn it into something else - if dmginfo:IsDamageType(DMG_BURN) and ent:IsPlayer() then - dmginfo:SetDamageType(bit.band(dmginfo:GetDamageType(), 65535-DMG_BURN)) - end - - -- Projectiles such as grenades don't do physical damage - if inf.Explosive and not dmginfo:IsExplosionDamage() then - dmginfo:SetDamage(0) - return true - end - - -- For projectiles or weapons that have a special way to deal damage (jarate) - if inf.DoSpecialDamage then - inf:DoSpecialDamage(ent, dmginfo) - end - - -- Friendly fire - if not att:CanDamage(ent) then - dmginfo:SetDamage(0) - dmginfo:SetDamageType(DMG_GENERIC) - return true - end - - -- Self damage - if ent == att then - dontscaledamage = true - end - - -- Critical and mini critical hits - - gamemode.Call("PreScaleDamage", ent, hitgroup, dmginfo) - - local is_normal_damage = true - - -- if the entity can receive crits - if gamemode.Call("ShouldCrit", ent, inf, att, hitgroup, dmginfo) then - if att == ent then - -- Self damage, don't scale the damage, but still notify the player that they critted themselves - if ent:IsPlayer() then - SendUserMessage("CriticalHitReceived", ent) - end - dontscaledamage = true - else - -- Modify the damage - if inf.BaseDamage and inf.CritDamageMultiplier then - if inf.Explosive then - -- TF2 explosives inflict 100 damage, this way we have an easy way to manipulate damage falloff - dmginfo:SetDamage(dmginfo:GetDamage() * 0.01 * inf.BaseDamage * inf.CritDamageMultiplier) - else - dmginfo:SetDamage(inf.BaseDamage * inf.CritDamageMultiplier) - end - - dontscaledamage = true - else - dmginfo:ScaleDamage(3) - end - - DispatchCritEffect(ent, inf, att, false) - - is_normal_damage = false - end - - ent.LastDamageWasCrit = true - elseif gamemode.Call("ShouldMiniCrit", ent, inf, att, hitgroup, dmginfo) then - local mul - - if att:IsNPC() then - -- NPCs do doubled damage against other NPCs and 50% times more damage on players - if ent:IsPlayer() then - mul = 1.5 - else - mul = 2 - end - else - mul = 1.35 - end - - -- Modify the damage - -- (apparently, minicrits don't suffer from damage spread either) - if inf.BaseDamage and inf.CritDamageMultiplier then - if inf.Explosive then - -- todo: clamp the explosive damage instead of recalculating it - dmginfo:SetDamage(dmginfo:GetDamage() * 0.01 * inf.BaseDamage * mul) - else - --dmginfo:SetDamage(inf.BaseDamage * mul) - dmginfo:SetDamage(math.max(dmginfo:GetDamage(), inf.BaseDamage * mul)) - end - - dontscaledamage = true - else - dmginfo:ScaleDamage(mul) - end - - DispatchCritEffect(ent, inf, att, true) - is_normal_damage = false - - ent.LastDamageWasCrit = true - end - - if is_normal_damage then - -- Not a crit, calculate the damage properly here - - if inf.Explosive then - -- Explosive damage - - local damage = inf.CalculatedDamage - - -- Self damage - if att==ent then - if ent:IsPlayer() and inf.BaseDamage then - if inf.OwnerDamage then - damage = inf.BaseDamage * inf.OwnerDamage - else - dmginfo:SetDamage(inf.BaseDamage * 0.8) - end - dmginfo:SetDamageForce(dmginfo:GetDamageForce() * 2) - elseif ent.IsTFBuilding then - damage = 0 - dmginfo:SetDamageForce(vector_origin) - end - end - - if not damage then - if inf.CalculateDamage then - local owner = inf:GetOwner() - if not owner or not owner:IsValid() then owner = inf end - - damage = inf:CalculateDamage(owner:GetPos()+Vector(0,0,1)) - - inf.CalculatedDamage = damage - else - damage = inf.BaseDamage or 0 - end - end - - dmginfo:SetDamage(dmginfo:GetDamage() * 0.01 * damage) - - elseif dmginfo:IsBulletDamage() and (inf:IsWeapon() or inf.IsTFBuilding) then - if (inf.IsTFWeapon or inf.IsTFBuilding) and inf.CalculateDamage then - -- Bullet damage inflicted from a TF2 weapon - local damage = inf:CalculateDamage(dmginfo:GetDamagePosition(), ent) - - -- Entities that aren't players or NPCs (such as props) do not process every bullet from a shotgun blast as individual - -- Instead, they take a single damage info, which is the sum of the damage inflicted by every bullet received - if not ent:IsTFPlayer() then - -- that's quite convenient since bullets fired from TF2 weapons initially inflict only 1 damage - damage = damage * dmginfo:GetDamage() - end - - dmginfo:SetDamage(damage) - dontscaledamage = true - else - -- Bullet damage inflicted from another weapon - - -- TODO: Simulate damage spread here? - end - end - - ent.LastDamageWasCrit = false - end - - if dmginfo:IsBulletDamage() and (inf.IsTFWeapon or inf.IsTFBuilding) and inf.CalculateDamage then - dmginfo:SetDamageForce(dmginfo:GetDamageForce() * dmginfo:GetDamage()) - end - - return dontscaledamage -end - -function GM:ScalePlayerDamage(pl, hitgroup, dmginfo) - local dontscaledamage = self:CommonScaleDamage(pl, hitgroup, dmginfo) - - --if not dontscaledamage then - -- players seem to receive doubled damage from other players, so we'll just fix this - --dmginfo:ScaleDamage(0.5) - --end - - --Msg(tostring(pl).." - "..tostring(dmginfo).." > Calculated damage : "..dmginfo:GetDamage().." Attacker : "..tostring(dmginfo:GetAttacker()).."\n") - - --[[ - local att = dmginfo:GetAttacker() - if att:IsPlayer() and att~=pl and dmginfo:GetDamage()>=1 then - if att:Visible(pl) then - --Msg("Sent damage notifier ("..dmginfo:GetDamage()..")\n") - umsg.Start("PushDamageNotifier", att) - umsg.Float(CurTime()) - umsg.Vector(pl:GetPos() + Vector(0, 0, pl:OBBMaxs().z)) - umsg.Float(dmginfo:GetDamage()) - umsg.End() - end - end]] -end - -function GM:ScaleNPCDamage(npc, hitgroup, dmginfo) - self:CommonScaleDamage(npc, hitgroup, dmginfo) - - --[[ - if not dmginfo:IsDamageType(DMG_DIRECT) then - -- make NPCs a bit harder to kill - dmginfo:ScaleDamage(0.7) - end]] - - --Msg(tostring(npc).." - "..tostring(dmginfo).." > Calculated damage : "..dmginfo:GetDamage().." Attacker : "..tostring(dmginfo:GetAttacker()).."\n") - - --[[ - local att = dmginfo:GetAttacker() - if npc:IsNPC() and att:IsPlayer() and dmginfo:GetDamage()>=1 then - if att:Visible(npc) then - --Msg("Sent damage notifier ("..dmginfo:GetDamage()..")\n") - umsg.Start("PushDamageNotifier", att) - umsg.Float(CurTime()) - umsg.Vector(npc:GetPos() + Vector(0, 0, npc:OBBMaxs().z)) - umsg.Float(dmginfo:GetDamage()) - umsg.End() - end - end]] - - --print("ScaleNPCDamage",npc,dmginfo) -end - -function GM:EntityTakeDamage( ent, dmginfo ) - - local inflictor = dmginfo:GetInflictor() - local attacker = dmginfo:GetAttacker() - local amount = dmginfo:GetDamage() - - if ent:IsTFPlayer() and ent:Health() <= 0 then - return - end - - -- Projectiles such as grenades don't do physical damage - if inflictor.Explosive and not dmginfo:IsExplosionDamage() then - dmginfo:SetDamage(0) - return true - end - - --print("EntityTakeDamage",ent,dmginfo) - - -- Some HL2 projectiles seem to keep the original attacker, even though their owner got changed (by Pyro's airblast, for instance) - -- Fixing this issue by storing the new attacker in a separate variable - if inflictor.AttackerOverride and attacker~=inflictor.AttackerOverride then - attacker = inflictor.AttackerOverride - dmginfo:SetAttacker(attacker) - end - - - --Msg(tostring(ent).." - "..tostring(dmginfo).." > Received damage : "..dmginfo:GetDamage().." Attacker : "..tostring(attacker).."\n") - -- No damage from fire, as we are using a custom fire system - if inflictor:GetClass()=="entityflame" then - dmginfo:SetDamage(0) - dmginfo:SetDamageType(DMG_GENERIC) - return - end - - -- Friendly fire - local t1, t2 = attacker:EntityTeam(), ent:EntityTeam() - if attacker~=ent and attacker:IsTFPlayer() and (t1==TEAM_RED or t1==TEAM_BLU) and t1==t2 and !GetConVar("mp_friendlyfire"):GetBool() then - dmginfo:SetDamage(0) - dmginfo:SetDamageType(DMG_GENERIC) - return true - end - - -- Quickfix for bullet damage mysteriously gaining DMG_ALWAYSGIB flag - if dmginfo:GetDamageType() == bit.bor(DMG_BULLET,DMG_ALWAYSGIB) then - dmginfo:SetDamageType(DMG_BULLET) - end - - if dmginfo:GetDamage()==0 then return end - - if ent:IsPlayer() then - --print("EntityTakeDamage", ent, dmginfo) - if not ent.DamagePositions then - --print("-> Manually calling ScalePlayerDamage") - self:ScalePlayerDamage(ent, 0, dmginfo) - else - if ent.ScaleDamageSubstract then - --print("Substracting "..ent.ScaleDamageSubstract.." from total damage") - dmginfo:SubtractDamage(ent.ScaleDamageSubstract) - end - end - ent.DamagePositions = nil - end - - if not ent:IsTFPlayer() then - --print("-> Manually calling ScaleNPCDamage") - self:ScaleNPCDamage(ent, 0, dmginfo) - elseif ent:IsNPC() then - if ForceScaleDamageEntityClasses[inflictor:GetClass()] or ForceDamageClasses[ent:GetClass()] then - --print("-> Manually calling ScaleNPCDamage") - self:ScaleNPCDamage(ent, 0, dmginfo) - end - end - - gamemode.Call("PostScaleDamage", ent, 0, dmginfo) - - -- Increased explosion force - if dmginfo:IsExplosionDamage() then - dmginfo:SetDamageForce(dmginfo:GetDamageForce() * (inflictor.BlastForceMultiplier or 1) * BlastForceMultiplier) - end - - if ent:IsTFPlayer() then - -- Increased bullet force - if dmginfo:IsBulletDamage() then - dmginfo:SetDamageForce(dmginfo:GetDamageForce() * BulletForceMultiplier) - end - - -- Overexaggerated explosion force - if (ent:IsNPC() or ent:IsPlayer()) and ent:ShouldReceiveDamageForce() and dmginfo:IsExplosionDamage() then - local force = dmginfo:GetDamageForce() * BlastForceToVelocityMultiplier - - ent:SetGroundEntity(NULL) - ent:SetThrownByExplosion(true) - - if ent:IsPlayer() and attacker==ent then - -- Rocket jumping - if inflictor.GetRocketJumpForce then - force = inflictor:GetRocketJumpForce(ent, dmginfo) - else - local dist = (ent:GetPos() - inflictor:GetPos()):Length() - local fraction = math.Clamp(dist / 50, 0.3, 2) - - force = force * fraction - end - - local vel = ent:GetVelocity() + force - --MsgN(tostring(vel)) - if vel.z > 100 and vel.z > vel:Length2D() then - --MsgN("Dispatching rocket jump effect") - umsg.Start("PlayerRocketJumpEffect") - umsg.Long(ent:UserID()) - umsg.End() - end - end - - if ent.ExplosionForceCalcTime ~= CurTime() then - ent.ExplosionForceCalcTime = CurTime() - if not ent.ExplosionForceCalc then - ent.ExplosionForceCalc = Vector() - end - ent.ExplosionForceCalc:Zero() - end - - ent.ExplosionForceCalc:Add(force) - ent:SetVelocity(ent.ExplosionForceCalc) - - if ent:IsPlayer() then - ent:DoAnimationEvent(ACT_MP_AIRWALK, false) - --ent:DoAnimationEvent(ACT_MP_JUMP_FLOAT, false) - end - end - - -- Player damaged someone else, add crit percentage bonus - if attacker:IsPlayer() and ent~=attacker then - local realdmg = math.Clamp(dmginfo:GetDamage(), 0, ent:Health()) - self:AddTotalDamage(attacker, realdmg) - end - - -- Reset the damage timer for the victim, for the medigun healing ramp - self:ResetLastDamaged(ent) - - -- Cooperations against that victim - if dmginfo:GetDamage() > 0 and attacker~=ent and not inflictor.NoDamageCooperation and not dmginfo:IsFallDamage() then - self:AddDamageCooperation(ent, attacker, dmginfo:GetDamage(), ASSIST_NORMAL, nil, {inflictor=inflictor}) - end - - -- Force dispatch a blood effect when the entity has been damaged by either fall or direct damage - if dmginfo:IsFallDamage() or dmginfo:IsDamageType(DMG_DIRECT) then - ent:DispatchBloodEffect() - end - - -- Store some info regarding damage for death hooks - ent.LastDamageInfo = CopyDamageInfo(dmginfo) - ent.LastDamageData = { - attacker_sequence = attacker:GetSequence(), - } - end - - -- Combine synths (striders, gunship) normally get hurt only from heavy explosive damage - -- This adds a health counter that decreases as they take bullet damage, and creates an explosion when it reaches zero (and then restarts again) - if ent:GetAlternateHealth()>0 and not dmginfo:IsExplosionDamage() then - local h = ent:GetAlternateHealth() - if not ent.TempHealth then ent.TempHealth = h end - ent.TempHealth = ent.TempHealth - dmginfo:GetDamage() - if ent.TempHealth<=0 then - util.BlastDamage(inflictor, attacker, dmginfo:GetDamagePosition(), 80, 1000) - - local effectdata = EffectData() - effectdata:SetOrigin(dmginfo:GetDamagePosition()) - util.Effect("Explosion", effectdata, true, true) - - ent.TempHealth = h - end - end - - if dmginfo:GetDamage()<1 then - return - end - - if ent:IsTFPlayer() and attacker:IsPlayer() and attacker~=ent and dmginfo:GetDamage()>=1 then - --MsgFN("%s Health = %d", tostring(ent), ent:Health()) - if attacker:Visible(ent) then - --Msg("Sent damage notifier ("..dmginfo:GetDamage()..")\n") - umsg.Start("PushDamageNotifier", attacker) - umsg.Float(CurTime()) - umsg.Vector(ent:HeadTarget(ent:GetPos())+Vector(0,0,10)) - umsg.Float(dmginfo:GetDamage()) - umsg.End() - end - end - - if not ent:IsPlayer() or not ent:Alive() then return end - - -- Pain and death sounds - local hp = ent:Health() - dmginfo:GetDamage() - - ent:Speak("TLK_PLAYER_EXPRESSION", true) - - if inflictor:GetClass()=="tf_entityflame" then - ent:Speak("TLK_ONFIRE") - end - - if not ent.NextFlinch or CurTime() > ent.NextFlinch then - ent:DoAnimationEvent(ACT_MP_GESTURE_FLINCH_CHEST, true) - ent.NextFlinch = CurTime() + 0.5 - end - - if hp<=0 then - --ent.LastDamageInfo = CopyDamageInfo(dmginfo) - elseif not dmginfo:IsFallDamage() and not dmginfo:IsDamageType(DMG_DIRECT) then - if dmginfo:GetDamage()/hp>0.5 or ent == attacker then - ent:Speak("TLK_PLAYER_ATTACKER_PAIN") - else - ent:Speak("TLK_PLAYER_PAIN") - end - - umsg.Start("PushDamageIndicator", ent) - umsg.Vector(dmginfo:GetDamagePosition()-ent:GetPos()) - umsg.Float(dmginfo:GetDamage()) - umsg.End() - elseif dmginfo:IsFallDamage() then - ent:Speak("TLK_PLAYER_ATTACKER_PAIN") - end -end - --------------------------------------------------------------- --- Fire - -function GM:IgniteEntity(ent, inf, att, dur) - local fl - - if IsValid(ent.FireEntity) then - fl = {} - fl.Target = ent - fl.Inflictor = inf - fl.LifeTime = dur - fl.Owner = att - ent.FireEntity:Update(fl) - else - fl = ents.Create("tf_entityflame") - fl.Target = ent - fl.Inflictor = inf - fl.LifeTime = dur - fl:SetOwner(att) - fl:Spawn() - fl:Activate() - - if not ent:IsPlayer() then -- No need to spawn unnecessary entityflames on players - ent:Fire("ignite","",0.05) -- Ignite it using the classic method, gamemode hooks like the one below will take care of the rest - end - end -end - -function GM:ExtinguishEntity(ent) - if IsValid(ent.FireEntity) then - ent.FireEntity:Remove() - end - ent:Extinguish() -end - -function GM:EntityStartBleeding(ent, inf, att, dur) - local fl - - if IsValid(ent.BleedEntity) then - fl = {} - fl.Target = ent - fl.Inflictor = inf - fl.LifeTime = dur - fl.Owner = att - ent.BleedEntity:Update(fl) - else - fl = ents.Create("tf_entitybleed") - fl.Target = ent - fl.Inflictor = inf - fl.LifeTime = dur - fl:SetOwner(att) - fl:Spawn() - fl:Activate() - end -end - -function GM:EntityStopBleeding(ent) - if IsValid(ent.BleedEntity) then - ent.BleedEntity:Remove() - end -end - --- NPC classes which should keep the default entityflame entity --- This is useful for tricking zombies into believing they are still on fire ---[[local KeepDefaultEntityflame = { -npc_zombie = true, -npc_zombie_torso = true, -npc_fastzombie = true, -npc_fastzombie_torso = true, -npc_poisonzombie = true, -npc_combine_s = true, -npc_metropolice = true, -}]] - --- Special entities that should never be ignited -local CannotIgnite = { -raggib = true, -} - --- Replacing boring laggy HL2 fire by fancy TF2 fire -hook.Add("OnEntityCreated", "TFDisableHL2Fire", function(ent) - if IsValid(ent) and ent:GetClass()=="entityflame" then - local p = ent:GetParent() - if IsValid(p) then - if CannotIgnite[p:GetClass()] then - ent:Remove() - return - end - - if p:IsNPC() then - -- Don't kill it, just make it invisible so NPCs like zombies still believe they are on fire - ent:EmitSound("General.StopBurning") - ent:AddEffects(EF_NODRAW) - - if p:GetClass()=="npc_zombie" then - -- For some reason, zombies don't immediately perform the "walk on fire" animation, so we'll just do it manually here - p:SetMovementActivity(ACT_WALK_ON_FIRE) - end - else - ent:Remove() - end - - if not IsValid(ent.FireEntity) then - local fl = ents.Create("tf_entityflame") - fl.Target = p - fl:Spawn() - fl:Activate() - end - end - end -end) diff --git a/addon/gamemodes/teamfortress/gamemode/sv_death.lua b/addon/gamemodes/teamfortress/gamemode/sv_death.lua deleted file mode 100644 index 3e7b629e6..000000000 --- a/addon/gamemodes/teamfortress/gamemode/sv_death.lua +++ /dev/null @@ -1,464 +0,0 @@ - -local ENT_ID_CURRENT = 1 -hook.Add("OnEntityCreated", "TF_DeathNoticeEntityID", function(ent) - if IsValid(ent) then - ent.DeathNoticeEntityID = ENT_ID_CURRENT - ENT_ID_CURRENT = ENT_ID_CURRENT + 1 - if ENT_ID_CURRENT >= 16384 then - ENT_ID_CURRENT = 1 - end - end -end) - -function GM:DoTFPlayerDeath(ent, attacker, dmginfo) - if not IsValid(attacker) then return end - - local inflictor = (dmginfo and dmginfo:GetInflictor()) or game.GetWorld() - - local shouldgib = false - - -- Remove all player states - ent:SetPlayerState(0, true) - if ent:GetNWBool("Taunting") == true then ent:SetNWBool("Taunting", false) ent:Freeze(false) ent:ConCommand("tf_firstperson") end - attacker.customdeath = "" - local InflictorClass = gamemode.Call("GetInflictorClass", ent, attacker, inflictor) - - if string.find(InflictorClass, "headshot") then - attacker.customdeath = "headshot" - ent:SetNWBool("DeathByHeadshot", true) - elseif string.find(InflictorClass, "backstab") then - attacker.customdeath = "backstab" - ent:SetNWBool("DeathByBackstab", true) - elseif inflictor:GetClass() == "obj_sentrygun" then - if inflictor:GetBuildingType() == 1 then - attacker.customdeath = "minisentrygun" - else - attacker.customdeath = "sentrygun" - end - - inflictor:AddKills(1) - end - - if inflictor and inflictor.OnPlayerKilled then - inflictor:OnPlayerKilled(ent) - end - - ApplyAttributesFromEntity(inflictor, "on_kill", ent, inflictor, attacker) - if attacker:IsPlayer() then - ApplyGlobalAttributesFromPlayer(attacker, "on_kill", ent, inflictor, attacker) - end - - self:ExtinguishEntity(ent) - self:RemoveDamageCooperationsOnDeath(ent) - - if ent:IsPlayer() then - ent:AddDeaths(1) - end - - if attacker:IsWeapon() then - attacker = attacker:GetOwner() - end - - if attacker:IsVehicle() and IsValid(attacker:GetDriver()) then - attacker = attacker:GetDriver() - end - - if attacker:IsPlayer() and attacker ~= ent then - local score = inflictor.Score or 1 - if attacker.customdeath == "headshot" then - attacker:AddHeadshots(1) - score = score + (inflictor.HeadshotScore or 0.5) - end - if attacker.customdeath == "backstab" then - attacker:AddBackstabs(1) - score = score + 1 - end - - attacker:AddFrags(score * ent:GetScoreMultiplier()) - - if ent:IsBuilding() then - attacker:AddDestructions(1) - else - attacker:AddKills(1) - end - end - - local assistants = self:GetAllAssistants(ent, attacker) - for a,v in pairs(assistants) do - if a:IsPlayer() then - a:AddAssists(1) - a:AddFrags(0.5 * ent:GetScoreMultiplier()) - - ApplyGlobalAttributesFromPlayer(a, "on_kill", ent, inflictor, attacker) - end - - if v - and isentity(v) - and v.inflictor and - v.inflictor:IsBuilding() - and v.inflictor.AddAssists then - v.inflictor:AddAssists(1) - end - end - - --[[ - print(ent) - print("Global assist table") - PrintTable(attacker.GlobalAssistants or {}) - print("Assist table") - PrintTable(ent.DamageCooperations or {}) - print("Assistants") - PrintTable(assistants) - ]] - - ent.KillerDominationInfo = 0 - - if not ent.KillComboCounter then - ent.KillComboCounter = {} - end - - if not attacker.KillComboCounter then - attacker.KillComboCounter = {} - end - - ent.KillComboCounter[attacker] = 0 - attacker.KillComboCounter[ent] = (attacker.KillComboCounter[ent] or 0) + 1 - - for a,_ in pairs(assistants) do - if not a.KillComboCounter then - a.KillComboCounter = {} - end - - ent.KillComboCounter[a] = 0 - a.KillComboCounter[ent] = (a.KillComboCounter[ent] or 0) + 1 - end - - if attacker.KillComboCounter[ent] >= 4 then - if self:PlayerIsNemesis(attacker, ent) then - ent.KillerDominationInfo = 2 -- nemesis - else - self:TriggerDomination(ent, attacker) - ent.KillerDominationInfo = 1 -- new nemesis - end - end - - for a,_ in pairs(assistants) do - if a.KillComboCounter[ent] >= 4 then - self:TriggerDomination(ent, a) - end - end - - if self:PlayerIsNemesis(ent, attacker) then - self:TriggerRevenge(ent, attacker) - ent.KillerDominationInfo = 3 -- revenge - end - - for a,_ in pairs(assistants) do - if self:PlayerIsNemesis(ent, a) then - self:TriggerRevenge(ent, a) - end - end - - -- Voice responses - if attacker:IsPlayer() and ent~=attacker then - if ent:IsBuilding() then - attacker:Speak("TLK_KILLED_OBJECT") - else - self:AddKill(attacker) - attacker.victimclass = ent.playerclass or "" - attacker:Speak("TLK_KILLED_PLAYER") - end - end - attacker.domination = "" -end - -function GM:PostTFPlayerDeath(ent, attacker, inflictor) - if GAMEMODE:EntityTeam(attacker) == TEAM_HIDDEN then - return - end - - if IsValid(inflictor) and attacker == inflictor and inflictor:IsTFPlayer() then - inflictor = inflictor:GetActiveWeapon() - if not IsValid(inflictor) then inflictor = attacker end - end - - local cooperator = self:GetDisplayedAssistant(ent, attacker) or NULL - --print("Displayed assistant") - --print(cooperator) - - if attacker:IsWeapon() then - attacker = attacker:GetOwner() - end - - if attacker:IsVehicle() and IsValid(attacker:GetDriver()) then - attacker = attacker:GetDriver() - end - - local killer = attacker - - --[[if inflictor.KillCreditAsInflictor then - killer = inflictor - end]] - - -- X fell to a clumsy, painful death - if ent.LastDamageInfo and ent.LastDamageInfo:IsFallDamage() then - umsg.Start("Notice_EntityFell") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - umsg.End() - elseif attacker == ent then - -- Suicide - if IsValid(cooperator) and GAMEMODE:EntityTeam(cooperator)~=TEAM_HIDDEN then - -- Y finished off X - umsg.Start("Notice_EntityFinishedOffEntity") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(GAMEMODE:EntityDeathnoticeName(cooperator)) - umsg.Short(GAMEMODE:EntityTeam(cooperator)) - umsg.Short(GAMEMODE:EntityID(cooperator)) - umsg.End() - elseif attacker==inflictor then - -- X bid farewell, cruel world! - umsg.Start("Notice_EntitySuicided") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - umsg.End() - else - local InflictorClass = gamemode.Call("GetInflictorClass", ent, attacker, inflictor) - - -- X - umsg.Start("Notice_EntityKilledEntity") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(InflictorClass) - - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(GAMEMODE:EntityDeathnoticeName(cooperator)) - umsg.Short(GAMEMODE:EntityTeam(cooperator)) - umsg.Short(GAMEMODE:EntityID(cooperator)) - - umsg.Bool(ent.LastDamageWasCrit) - umsg.End() - end - else - local InflictorClass = gamemode.Call("GetInflictorClass", ent, attacker, inflictor) - - -- Y X - umsg.Start("Notice_EntityKilledEntity") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(InflictorClass) - - umsg.String(GAMEMODE:EntityDeathnoticeName(killer)) - umsg.Short(GAMEMODE:EntityTeam(killer)) - umsg.Short(GAMEMODE:EntityID(killer)) - - umsg.String(GAMEMODE:EntityDeathnoticeName(cooperator)) - umsg.Short(GAMEMODE:EntityTeam(cooperator)) - umsg.Short(GAMEMODE:EntityID(cooperator)) - - umsg.Bool(ent.LastDamageWasCrit) - umsg.End() - end - - if ent.PendingNemesises then - for _,v in ipairs(ent.PendingNemesises) do - if IsValid(v) then - umsg.Start("Notice_EntityDominatedEntity") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(GAMEMODE:EntityDeathnoticeName(v)) - umsg.Short(GAMEMODE:EntityTeam(v)) - umsg.Short(GAMEMODE:EntityID(v)) - umsg.End() - - umsg.Start("PlayerDomination") - umsg.Entity(ent) - umsg.Entity(v) - umsg.End() - end - end - ent.PendingNemesises = nil - end - - if ent.PendingRevenges then - for _,v in ipairs(ent.PendingRevenges) do - if IsValid(v) then - umsg.Start("Notice_EntityRevengeEntity") - umsg.String(GAMEMODE:EntityDeathnoticeName(ent)) - umsg.Short(GAMEMODE:EntityTeam(ent)) - umsg.Short(GAMEMODE:EntityID(ent)) - - umsg.String(GAMEMODE:EntityDeathnoticeName(v)) - umsg.Short(GAMEMODE:EntityTeam(v)) - umsg.Short(GAMEMODE:EntityID(v)) - umsg.End() - - umsg.Start("PlayerRevenge") - umsg.Entity(ent) - umsg.Entity(v) - umsg.End() - end - end - ent.PendingRevenges = nil - end - - ent.LastDamageWasCrit = false -end - -function GM:OnTFPlayerDominated(ent, attacker) - if attacker:IsPlayer() then - attacker:AddDominations(1) - end - - if not ent.PendingNemesises then - ent.PendingNemesises = {} - end - table.insert(ent.PendingNemesises, attacker) -end - -function GM:OnTFPlayerRevenge(ent, attacker) - if attacker:IsPlayer() then - attacker:AddRevenges(1) - attacker:AddFrags(1) - end - - if not ent.PendingRevenges then - ent.PendingRevenges = {} - end - table.insert(ent.PendingRevenges, attacker) -end - -local player_gib_probability = CreateConVar("player_gib_probability", 0.33) - -function GM:DoPlayerDeath(ply, attacker, dmginfo) - local inflictor = dmginfo:GetInflictor() - gamemode.Call("DoTFPlayerDeath", ply, attacker, dmginfo) - - local drop - for _,v in pairs(ply:GetWeapons()) do - if v.DropAsAmmo then - if v.GetItemData and v:GetItemData().item_slot == "primary" then - drop = v - end - - if v == ply:GetActiveWeapon() and not v.DropPrimaryWeaponInstead then - drop = v - break - end - end - end - - if IsValid(drop) then - drop:DropAsAmmo() - end - - local killer = attacker - if inflictor.KillCreditAsInflictor then - killer = inflictor - end - - if ply~=killer and not killer:IsWorld() and (killer:IsTFPlayer()) then - umsg.Start("SetPlayerKiller", ply) - umsg.Entity(killer) - umsg.String(GAMEMODE:EntityDeathnoticeName(killer)) - umsg.Short(killer:EntityTeam()) - umsg.Char(ply.KillerDominationInfo) - if killer ~= attacker then - umsg.Entity(attacker) - else - umsg.Entity(NULL) - end - umsg.End() - end - - --print("DoPlayerDeath", dmginfo:GetInflictor(), dmginfo:GetAttacker(), dmginfo:GetDamage(), dmginfo:GetDamageType()) - local shouldgib = false - - if dmginfo:IsFallDamage() then -- Fall damage - ply.FallDeath = true - elseif dmginfo:IsDamageType(DMG_ALWAYSGIB) or dmginfo:IsExplosionDamage() or inflictor.Explosive then -- Explosion damage - ply:RandomSentence("ExplosionDeath") - - local p = player_gib_probability:GetFloat() - if dmginfo:IsDamageType(DMG_NEVERGIB) then - p = 0 - elseif dmginfo:IsDamageType(DMG_ALWAYSGIB) then - p = 1 - end - - if not ply:IsHL2() then - if ply:GetInfoNum("tf_robot", 0) == 0 then - if math.random()

10 then - table.remove(pl.AddedKills, i) - pl.recentkills = pl.recentkills - 1 - end - end -end - --- Cooperations - --- Assist filters -AS_EARLIEST = 0 -AS_LATEST = 1 -AS_LOWEST = 2 -AS_HIGHEST = 3 -AS_ALL = 4 - -local AssistOp = { - [AS_EARLIEST] = function(a, b) - return a.time < b.time - end, - [AS_LATEST] = function(a, b) - return a.time > b.time - end, - [AS_LOWEST] = function(a, b) - return a.value < b.value - end, - [AS_HIGHEST] = function(a, b) - return a.value > b.value - end, - [AS_ALL] = function(a, b) - return true - end, -} - --- Assist types - -local ASSIST_START = 0 -ASSIST_FIRE = 0 -ASSIST_NORMAL = 1 -ASSIST_BUFF = 2 -ASSIST_HEAL = 3 -ASSIST_JARATE = 4 -local ASSIST_END = 4 - -local AssistData = {} - --- Fire assists will be given to the Pyro who did the most afterburn damage to the victim. -AssistData[ASSIST_FIRE] = { - display_filter = AS_HIGHEST, - score_filter = AS_HIGHEST, -} - --- Normal assists will be given to the player who did the most damage to the victim. -AssistData[ASSIST_NORMAL] = { - display_filter = AS_HIGHEST, - score_filter = AS_HIGHEST, - remove_on_death = true, - expire_time = 10 -} - --- Buff assists will be given to all Soldiers with the Buff Banner/Battalion's Backup deployed near the killer -AssistData[ASSIST_BUFF] = { - display_filter = AS_EARLIEST, - score_filter = AS_ALL, - remove_on_death = true -} - --- Heal assists will be given to all Medics who are currently healing the killer -AssistData[ASSIST_HEAL] = { - display_filter = AS_EARLIEST, - score_filter = AS_ALL, - remove_on_death = true -} - --- Jarate assists will be given to the first Sniper who coated the victim in Jarate -AssistData[ASSIST_JARATE] = { - display_filter = AS_EARLIEST, - score_filter = AS_EARLIEST -} - -function GM:ResetCooperations(pl) - pl.DamageCooperations = nil -end - -function GM:AddGlobalAssistant(attacker, assistant, value, assist_type, expire_time) - if not attacker.GlobalAssistants then attacker.GlobalAssistants = {} end - if not attacker.GlobalAssistants[assist_type] then attacker.GlobalAssistants[assist_type] = {} end - - local assist_table = attacker.GlobalAssistants[assist_type] - if not assist_table[assistant] then assist_table[assistant] = {} end - - assist_table[assistant].time = CurTime() - assist_table[assistant].value = (assist_table[assistant].value or 0) + value - assist_table[assistant].expire_time = expire_time -end - -function GM:RemoveGlobalAssistant(attacker, assistant, assist_type) - if not attacker.GlobalAssistants then return end - if not attacker.GlobalAssistants[assist_type] then return end - - attacker.GlobalAssistants[assist_type][assistant] = nil -end - -function GM:AddDamageCooperation(pl, attacker, value, assist_type, expire_time, extra_info) - if not pl.DamageCooperations then pl.DamageCooperations = {} end - - if not attacker:IsPlayer() and not attacker:IsNPC() then return end - - assist_type = assist_type or ASSIST_NORMAL - local assist_data = AssistData[assist_type] - if not assist_data then - ErrorNoHalt(Format("Assist type %d not supported, using normal assist instead", assist_type)) - assist_type = ASSIST_NORMAL - assist_data = AssistData[assist_type] - end - - --[[ - if attacker==pl.DamageCooperations[1] then return end - - if pl.DamageCooperations[2] and pl.DamageCooperations[2][1]==attacker then - -- If the attacker is already a cooperator, update the time - pl.DamageCooperations[2][2] = CurTime() - else - -- Else, just push it into the table and pop the earliest cooperator - table.insert(pl.DamageCooperations, {attacker, CurTime()}) - if #pl.DamageCooperations>2 then - table.remove(pl.DamageCooperations, 1) - end - end]] - - -- Better assists - local assist_table - if not pl.DamageCooperations[assist_type] then - pl.DamageCooperations[assist_type] = {} - end - - assist_table = pl.DamageCooperations[assist_type] - - if not assist_table[attacker] then - assist_table[attacker] = {} - end - - if not value then - ErrorNoHalt("WARNING: AddDamageCooperations: value is nil!") - LAST_DEBUG_INFO = debug.getinfo(2) - end - - assist_table[attacker].time = CurTime() - assist_table[attacker].value = (assist_table[attacker].value or 0) + (value or 0) - assist_table[attacker].expire_time = expire_time - assist_table[attacker].extra_info = extra_info -end - -function GM:RemoveDamageCooperation(pl, attacker, assist_type) - if not pl.DamageCooperations then return end - if not pl.DamageCooperations[assist_type] then return end - - pl.DamageCooperations[assist_type][attacker] = nil -end - -function GM:RemoveDamageCooperationPlayer(pl, attacker) - if not pl.DamageCooperations then return end - - for _,v in pairs(pl.DamageCooperations) do - v[attacker] = nil - end -end - -function GM:RemoveDamageCooperationType(pl, assist_type) - if not pl.DamageCooperations then return end - pl.DamageCooperations[assist_type] = nil -end - -local function ValidAssist(v, assist_data) - return v.time < CurTime() and - (not assist_data.expire_time or CurTime() - v.time < assist_data.expire_time) and - (not v.expire_time or CurTime() - v.time < v.expire_time) -end - -function GM:GetAllAssistants(pl, attacker) - if not pl.DamageCooperations then - return {} - end - - local assists = {} - local tmp = {} - local assist_table - local best, bestvalue - for i=ASSIST_END,ASSIST_START,-1 do - tmp[1] = (attacker and attacker.GlobalAssistants) and attacker.GlobalAssistants[i] - tmp[2] = pl.DamageCooperations[i] - - for j=1,2 do - assist_table = tmp[j] - if assist_table then - local assist_data = AssistData[i] - local op = AssistOp[assist_data.score_filter] - - if assist_data.score_filter == AS_ALL then - for k,v in pairs(assist_table) do - if IsValid(k) and ValidAssist(v, assist_data) and k~=attacker then - assists[k] = true - end - end - else - best = nil - if assist_data.score_filter == AS_EARLIEST or assist_data.score_filter == AS_LOWEST then - bestvalue = {time=math.huge, value=math.huge} - elseif assist_data.score_filter == AS_LATEST or assist_data.score_filter == AS_HIGHEST then - bestvalue = {time=-math.huge, value=-math.huge} - end - - for k,v in pairs(assist_table) do - if IsValid(k) and ValidAssist(v, assist_data) and k~=attacker and op(v, bestvalue) then - best = k - bestvalue = v - end - end - - if best then - assists[best] = bestvalue.extra_info or {} - end - end - end - end - end - - return assists -end - -function GM:GetDisplayedAssistant(pl, attacker) - if not pl.DamageCooperations then - return - end - - local best, bestvalue - local tmp = {} - - for i=ASSIST_END,ASSIST_START,-1 do - tmp[1] = (attacker and attacker.GlobalAssistants) and attacker.GlobalAssistants[i] - tmp[2] = pl.DamageCooperations[i] - - for j=1,2 do - assist_table = tmp[j] - if assist_table then - local assist_data = AssistData[i] - local op = AssistOp[assist_data.display_filter] - - best = nil - if assist_data.display_filter == AS_EARLIEST or assist_data.display_filter == AS_LOWEST then - bestvalue = {time=math.huge, value=math.huge} - elseif assist_data.display_filter == AS_LATEST or assist_data.display_filter == AS_HIGHEST then - bestvalue = {time=-math.huge, value=-math.huge} - end - - for k,v in pairs(assist_table) do - if IsValid(k) and ValidAssist(v, assist_data) and k~=attacker and op(v, bestvalue) then - best = k - bestvalue = v - end - end - - if best then - return best - end - end - end - end -end - -function GM:RemoveDamageCooperationsOnDeath(attacker) - for _,v in pairs(ents.GetAll()) do - if v:IsTFPlayer() and v.DamageCooperations then - for assist_type, data in pairs(v.DamageCooperations) do - if AssistData[assist_type].remove_on_death then - data[attacker] = nil - end - end - end - end -end - --- Dominations - -function GM:TriggerDomination(pl, attacker) - if not pl.Dominators then - pl.Dominators = {} - end - - if pl.Dominators[attacker] then - return - end - - pl.Dominators[attacker] = true - attacker.domination = "dominated" - - gamemode.Call("OnTFPlayerDominated", pl, attacker) -end - -function GM:TriggerRevenge(pl, attacker) - if not attacker.Dominators then - attacker.Dominators = {} - end - - if not attacker.Dominators[pl] then - return - end - - attacker.Dominators[pl] = nil - attacker.domination = "revenge" - - gamemode.Call("OnTFPlayerRevenge", pl, attacker) -end - -function GM:PlayerIsNemesis(pl1, pl2) - if pl2.Dominators and pl2.Dominators[pl1] then - return true - end - - return false -end - -function GM:ClearDominations(pl) - pl.Dominators = nil - pl.KillComboCounter = nil - - umsg.Start("PlayerResetDominations") - umsg.Entity(pl) - umsg.End() -end - -hook.Add("PlayerAuthed", "TFSendPlayerDominations", function(pl) - for _,v in pairs(player.GetAll()) do - if v.Dominators then - local num = 0 - for d,_ in pairs(v.Dominators) do - if IsValid(d) then - num = num + 1 - else - v.Dominators[d] = nil - end - end - - if num > 0 then - umsg.Start("SendPlayerDominations", pl) - umsg.Entity(pl) - umsg.Char(num) - for d,_ in pairs(v.Dominators) do - umsg.Entity(d) - end - umsg.End() - end - end - end -end) - --- Managing crits - -local debug_crits = CreateConVar("debug_crits", "0", {FCVAR_NOTIFY,FCVAR_CHEAT}) - -function GM:AddCritBoostTime(pl, time) - local w = pl:GetActiveWeapon() - - if not pl.NextCritBoostExpire or CurTime()>pl.NextCritBoostExpire then - pl.NextCritBoostExpire = CurTime() - self:StartCritBoost(pl) - - if IsValid(w) and w.OnCritBoostStarted then - w:OnCritBoostStarted() - end - else - if IsValid(w) and w.OnCritBoostAdded then - w:OnCritBoostAdded() - end - end - - pl.NextCritBoostExpire = pl.NextCritBoostExpire + time -end - -function GM:StartCritBoost(pl, slotconstraint) - if pl.CritBoostType == 2 then - pl:RemovePlayerState(PLAYERSTATE_MINICRIT) - end - - pl.CritBoostType = 1 - pl.CritBoostSlotConstraint = slotconstraint - pl:AddPlayerState(PLAYERSTATE_CRITBOOST, true) - - if pl:GetActiveWeapon().RollCritical then - pl:GetActiveWeapon():RollCritical() - end -end - -function GM:StopCritBoost(pl) - pl.CritBoostType = nil - pl.CritBoostSlotConstraint = nil - - pl:RemovePlayerState(bit.bor(PLAYERSTATE_CRITBOOST,PLAYERSTATE_MINICRIT), true) - - pl.NextCritBoostExpire = nil - - if pl:GetActiveWeapon().RollCritical then - -- we need to roll a critical again, else when the crit boost expires, the next shot will still be a guaranteed crit - pl:GetActiveWeapon():RollCritical() - end -end - -function GM:StartMiniCritBoost(pl, slotconstraint) - pl.CritBoostType = 2 - pl.CritBoostSlotConstraint = slotconstraint - pl:AddPlayerState(PLAYERSTATE_MINICRIT, true) -end - -function GM:StopMiniCritBoost(pl) - pl.CritBoostType = nil - pl.CritBoostSlotConstraint = nil - pl:RemovePlayerState(PLAYERSTATE_MINICRIT, true) -end - -function GM:ResetDamageCounter(pl) - pl.DamageSum = nil - pl.DamageDealtThisSecond = nil - pl.DamageTable = nil - pl.NextCritBoostExpire = nil -end - -function GM:AddTotalDamage(pl, dmg) - if not pl.DamageDealtThisSecond then pl.DamageDealtThisSecond = 0 end - if not pl.DamageSum then pl.DamageSum = 0 end - - pl.DamageDealtThisSecond = pl.DamageDealtThisSecond + dmg - pl.DamageSum = pl.DamageSum + dmg -end - -function GM:UpdateTotalDamage(pl) - if not pl.DamageTable then - pl.DamageTable = {} - end - if not pl.DamageSum then pl.DamageSum = 0 end - if not pl.DamageDealtThisSecond then pl.DamageDealtThisSecond = 0 end - - table.insert(pl.DamageTable, pl.DamageDealtThisSecond) - - if #pl.DamageTable>20 then - pl.DamageSum = pl.DamageSum - table.remove(pl.DamageTable, 1) - end - - pl.DamageDealtThisSecond = 0 -end - -function GM:RollCritical(pl) - if not IsValid(pl) then return end - - local crits = debug_crits:GetInt() - if crits==1 then -- Always crit - --pl.NextShotIsCritical = true - pl:SetNWBool("NextShotIsCritical", true) - return - end - - local w = pl:GetActiveWeapon() - if pl.CritBoostType == 1 then - if not pl.CritBoostSlotConstraint or (w.GetItemData and w:GetItemData().item_slot == pl.CritBoostSlotConstraint) then - --pl.NextShotIsCritical = true - pl:SetNWBool("NextShotIsCritical", true) - return - end - end - - --pl.NextShotIsCritical = false - if crits==-1 then -- Never crit - pl:SetNWBool("NextShotIsCritical", false) - return - end - - -- you're covered in piss mate, no crits for you, wanker - if pl:HasPlayerState(PLAYERSTATE_JARATED) then - pl:SetNWBool("NextShotIsCritical", false) - return - end - - if not pl.DamageSum or pl.CritsDisabled then - pl:SetNWBool("NextShotIsCritical", false) - return - end - - local w = pl:GetActiveWeapon() - - if not w or not w:IsValid() or not w.CriticalChance or w.CriticalChance<=0 then - pl:SetNWBool("NextShotIsCritical", false) - return - end - - local chance = w.CriticalChance - - - if pl.CritsOnly then -- 100% crits buff, during humiliation on the winning team for example - chance = 100 - else - -- Crit chance bonus based on damage, can go up to 10% - chance = chance + math.Clamp(pl.DamageSum / 80, 0, 10) - end - - if math.random(1,100)<=chance then - -- critz omgomgomgomgomgomg - pl:SetNWBool("NextShotIsCritical", true) - --pl.NextShotIsCritical = true - --pl:ChatPrint(Format("Rolling crit (%d%%): Success!",chance)) - else - pl:SetNWBool("NextShotIsCritical", false) - --pl:ChatPrint(Format("Rolling crit (%d%%): Fail!",chance)) - end -end - -function GM:Think() - if not self.NextUpdateDamage or CurTime()>self.NextUpdateDamage then - for _,v in pairs(player.GetAll()) do - -- Update damage dealt in the last 20 seconds for every player - self:UpdateTotalDamage(v) - self:UpdateKills(v) - - -- Roll critical hits for rapidfire weapons - local w = v:GetActiveWeapon() - if w and w:IsValid() and w.CriticalChance and w.IsRapidFire then - self:RollCritical(v) - end - end - - self.NextUpdateDamage = CurTime() + 1 - end - - if not self.NextLoopExpression or CurTime()>self.NextLoopExpression then - for _,v in pairs(player.GetAll()) do - v:Speak("TLK_PLAYER_EXPRESSION", true) - end - - self.NextLoopExpression = CurTime() + 5 - end -end - ---[[ -hook.Add("Move", "TFPlayerSlowdown", function(pl, move) - -- Players run 10% slower when moving backwards - local fw = move:GetForwardSpeed() - local sd = move:GetSideSpeed() - - local sp = pl:GetRealClassSpeed() * pl:GetNWFloat() - - if fwd<0 then - local sp = -pl:GetRealClassSpeed() * 0.9 - if fwd0 then -- Some particuliar NPCs have a max health of 0, do not take overhealing into consideration - if not v.OverhealDecreasePeriod or v.CurrentMaxHealth~=maxhealth then - -- A full overheal (+50% max health) takes exactly 20 seconds to fade out - v.OverhealDecreasePeriod = 20/(maxhealth * 0.5) - v.CurrentMaxHealth = maxhealth - end - - if (not v.NextOverhealThink or CurTime()>v.NextOverhealThink) and health>maxhealth then - health = health-1 - v:SetHealth(health) - v.NextOverhealThink = CurTime() + v.OverhealDecreasePeriod - end - - if health<=maxhealth then - v:RemovePlayerState(PLAYERSTATE_OVERHEALED, true) - else - v:AddPlayerState(PLAYERSTATE_OVERHEALED, true) - end - end - end - - -- Update the networked health for all NPCs - if v:IsNPC() then - if not v.LastHealth and v:GetNPCData().health then - v:ResetMaxHealth() - v:ResetHealth() - end - - v.LastHealth = v:HealthOLD() - v:SetNWInt("Health", v.LastHealth) - end - - -------------------------------------------------------- - -- Fire - - -- now handled by tf_entityflame - - --[[ - if v.NextExtinguish then - if v:WaterLevel()>2 or CurTime()>v.NextExtinguish or (v:IsPlayer() and not v:Alive()) then - GAMEMODE:ExtinguishEntity(v) - elseif not v.NextBurn or CurTime()>v.NextBurn then - local attacker = v.LastIgniter or v - local dmginfo = DamageInfo() - dmginfo:SetAttacker(attacker) - dmginfo:SetInflictor(attacker) - dmginfo:SetDamage(3) - dmginfo:SetDamageType(DMG_BURN|DMG_DIRECT) - dmginfo:SetDamagePosition(v:GetPos()) - v:TakeDamageInfo(dmginfo) - v.NextBurn = CurTime() + 0.5 - end - end]] - - -------------------------------------------------------- - -- Removing Jarate effects - - if v.NextEndJarate and (v:WaterLevel()>2 or CurTime()>v.NextEndJarate) then - v.NextEndJarate = nil - v:RemovePlayerState(PLAYERSTATE_JARATED, true) - end - - -------------------------------------------------------- - -- Removing Mad Milk effects - - if v.NextEndMilk and CurTime()>v.NextEndMilk then - v.NextEndMilk = nil - v:RemovePlayerState(PLAYERSTATE_MILK, true) - end - - -------------------------------------------------------- - -- Recharging weapons (Jarate, Sandman, etc...) - - if v:IsPlayer() and v.NextGiveAmmo and CurTime()>v.NextGiveAmmo then - if v.NextGiveAmmoType then - v:GiveAmmo(1, v.NextGiveAmmoType) - end - v.NextGiveAmmo = nil - end - - -------------------------------------------------------- - -- Critical boost expired, remove the crit effect - - if v:IsPlayer() and v.NextCritBoostExpire and CurTime()>v.NextCritBoostExpire then - GAMEMODE:StopCritBoost(v) - end - - -------------------------------------------------------- - -- Thrown by explosion - - if v:IsThrownByExplosion() and v:OnGround() then - v:SetThrownByExplosion(false) - end - - -------------------------------------------------------- - -- Updating stats - - if not v.NextUpdateHealStats or CurTime() > v.NextUpdateHealStats then - if v.AddedHealing then - if v.AddedHealing ~= 0 then - v:AddHealing(v.AddedHealing) - end - end - if v and v.AddedHealing and isnumber(v.AddedHealing) then - v.AddedHealing = 0 - end - if v and v.HealingScoreProgress and isnumber(v.HealingScoreProgress) then - local score = 0 - while v.HealingScoreProgress > 600 do - v.HealingScoreProgress = v.HealingScoreProgress - 600 - score = score + 1 - end - if score > 0 then v:AddFrags(score) end - end - if v.NextUpdateHealStats then - v.NextUpdateHealStats = CurTime() + 2 - end - end - - -------------------------------------------------------- - -- Player-only attributes - - local TA - if IsValid(v) and v:IsPlayer() and v:Alive() and v.TempAttributes and TA then - TA = v.TempAttributes - end - - if TA then - -------------------------------------------------------- - -- Health regeneration/drain - - if not TA.NextHealthRegen then - TA.NextHealthRegen = CurTime() + 1 - elseif CurTime() >= TA.NextHealthRegen then - --local h = TA.HealthRegen or 0 - local data = {health = 0} - - if v:GetPlayerClassTable().HasMedicRegeneration then - data.health = Lerp((CurTime() - (v.LastDamaged or 0)) / 10, 3, 6) - - if v:IsPlayer() and IsValid(v:GetActiveWeapon()) then - ApplyAttributesFromEntity(v:GetActiveWeapon(), "medic_health_regen", v, data) - end - ApplyGlobalAttributesFromPlayer(v, "medic_health_regen", v, data) - end - - if v:IsPlayer() and IsValid(v:GetActiveWeapon()) then - ApplyAttributesFromEntity(v:GetActiveWeapon(), "health_regen", v, data) - end - ApplyGlobalAttributesFromPlayer(v, "health_regen", v, data) - - v:GiveHealth(math.floor(data.health)) - TA.NextHealthRegen = CurTime() + 1 - end - - - -------------------------------------------------------- - -- Ammo regeneration/drain - - if not TA.NextAmmoRegen then - TA.NextAmmoRegen = CurTime() + 5 - elseif CurTime() >= TA.NextAmmoRegen then - local data = {} - - if v:IsPlayer() and IsValid(v:GetActiveWeapon()) then - ApplyAttributesFromEntity(v:GetActiveWeapon(), "ammo_regen", v, data) - end - ApplyGlobalAttributesFromPlayer(v, "ammo_regen", v, data) - - for ammo,count in pairs(data) do - v:GiveTFAmmo(count,ammo) - end - TA.NextAmmoRegen = CurTime() + 5 - end - end - end -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/sv_hl2replace.lua b/addon/gamemodes/teamfortress/gamemode/sv_hl2replace.lua deleted file mode 100644 index 22aa04a72..000000000 --- a/addon/gamemodes/teamfortress/gamemode/sv_hl2replace.lua +++ /dev/null @@ -1,328 +0,0 @@ - -local HL2Weapon = { - weapon_pistol = 1, - weapon_357 = 1, - --weapon_alyxgun - weapon_annabelle = 1, - weapon_ar2 = 1, - --weapon_bugbait - weapon_crossbow = 1, - --weapon_crowbar - weapon_frag = 1, - weapon_rpg = 1, - weapon_shotgun = 1, - weapon_smg1 = 1, - weapon_stunstick = 1, - weapon_annabelle = 1, - - ai_weapon_pistol = 1, - ai_weapon_357 = 1, - ai_weapon_ar2 = 1, - ai_weapon_crossbow = 1, - ai_weapon_frag = 1, - ai_weapon_rpg = 1, - ai_weapon_shotgun = 1, - ai_weapon_smg1 = 1, - ai_weapon_stunstick = 1, - ai_weapon_annabelle = 1, -} - -local HL2AmmoSize = { - item_ammo_357 = 1, - item_ammo_357_large = 2, - item_ammo_ar2 = 1, - item_ammo_ar2_large = 2, - item_ammo_crossbow = 1, - item_ammo_pistol = 1, - item_ammo_pistol_large = 2, - item_ammo_smg1 = 1, - item_ammo_smg1_large = 2, - item_ammo_smg1_grenade = 1, - --item_battery = 1, - item_box_buckshot = 1, - item_rpg_round = 1, - item_ammo_ar2_altfire = 1, - - item_ammo_crate = 3, -} - -local function CreateTFAmmoTrigger(wep, val) - if IsValid(wep) and wep:GetModel() then - local ammo = ents.Create("item_droppedweapon") - ammo.WeaponEntity = wep - ammo:Spawn() - ammo:Activate() - end -end - -function GM:PlayerCanPickupWeapon(ply, wep) - if ply:IsHL2() then - return true - end - - if HL2Weapon[wep:GetClass()] then return true end - return true -end - -function GM:InitPostEntity() - local global = ents.FindByClass("env_global")[1] - if global then - local state = global.globalstate - local init = global.initialstate - if state=="antlion_allied" then - Msg("Antlions are allied\n") - SetGlobalBool("AntlionsAreAllied", true) - self.AntlionsAreAllied = true - end - - if state=="gordon_precriminal" then - Msg("Gordon is precriminal\n") - SetGlobalBool("GordonIsPrecriminal", true) - self.GordonIsPrecriminal = true - end - end - - local landmark = ents.Create("tf_hl2landmark") - landmark:Spawn() - landmark:SetName(tostring(landmark)) - - local err = landmark:Load() - MsgN("Loading data from previous level") - if err==1 then - MsgN("No data to load") - elseif err==2 then - MsgN("Error reading file") - end - - if not landmark:IsValidMap() then - MsgN("Wrong map, landmark data will not be used") - end - - for _,v in pairs(ents.FindByClass("trigger_changelevel")) do - v:Fire("addoutput", "OnChangeLevel "..landmark:GetName()..",Trigger", 0) - - - local b = ents.Create("trigger_mp_changelevel") - b:SetModel(v:GetModel()) - b:SetPos(v:GetPos()) - b:SetAngles(v:GetAngles()) - b:Spawn() - b.Changelevel = v - b.Landmark = landmark - end - - for _,v in pairs(ents.FindByClass("trigger_autosave")) do - v:Fire("addoutput", "OnStartTouch "..landmark:GetName()..",Checkpoint", 0) - end - - for _,v in pairs(ents.GetAll()) do - local c = v:GetClass() - local remove = true - - if c=="item_healthvial" then - local ent = ents.Create("item_healthkit_small") - ent:SetPos(v:GetPos() + Vector(0, 0, 10)) - ent:Spawn() - ent:SetRespawnTime(-1) - elseif c=="item_healthkit" then - local ent = ents.Create("item_healthkit_medium") - ent:SetPos(v:GetPos() + Vector(0, 0, 10)) - ent:Spawn() - ent:SetRespawnTime(-1) - elseif HL2AmmoSize[c] then - local s = HL2AmmoSize[c] - if s==1 then - local ent = ents.Create("item_ammopack_small") - ent:SetPos(v:GetPos() + Vector(0, 0, 10)) - ent:Spawn() - ent:SetRespawnTime(-1) - elseif s==2 then - local ent = ents.Create("item_ammopack_medium") - ent:SetPos(v:GetPos() + Vector(0, 0, 10)) - ent:Spawn() - ent:SetRespawnTime(-1) - else - local ent = ents.Create("item_ammopack_full") - ent:SetPos(v:GetPos() + Vector(0, 0, 10)) - ent:Spawn() - end - elseif c=="item_item_crate" then - local s = math.random(1,100) - local d - if s<30 then - d = "item_ammopack_small" - elseif s<60 then - d = "item_healthkit_small" - elseif s<75 then - d = "item_ammopack_medium" - elseif s<90 then - d = "item_healthkit_medium" - elseif s<95 then - d = "item_ammopack_full" - else - d = "item_healthkit_full" - end - - local ent = ents.Create(d) - ent:SetPos(v:GetPos() + Vector(0, 0, 10)) - ent:Spawn() - ent:SetRespawnTime(-1) - else - if HL2Weapon[c] then - CreateTFAmmoTrigger(v) - end - remove = false - end - - if remove then v:Remove() end - end - - self.Landmark = landmark - self.PostEntityDone = true -end - -local function ReplaceWeapon(ent) - if not ent:IsValid() then return end - - local phys = ent:GetPhysicsObject() - if HL2Weapon[ent:GetClass()] and phys and phys:IsValid() then - local drop = ents.Create("item_droppedweapon") - drop:SetSolid(SOLID_VPHYSICS) - drop:SetModel(ent:GetModel()) - drop:PhysicsInit(SOLID_VPHYSICS) - drop:SetPos(ent:GetPos()) - drop:SetAngles(ent:GetAngles()) - ent:Remove() - drop:Spawn() - drop:Activate() - - drop:SetMoveType(MOVETYPE_VPHYSICS) - drop:SetCollisionGroup(COLLISION_GROUP_WEAPON) - - local phys2 = drop:GetPhysicsObject() - if phys2:IsValid() then - phys2:AddAngleVelocity(phys:GetAngleVelocity()) - phys2:AddVelocity(phys:GetVelocity()) - phys2:Wake() - end - - end -end - -function GM:EntityKeyValue(ent, key, value) - local k = string.lower(key) - if ent:GetClass() == "prop_physics" then - if not ent.KeyValues then - ent.KeyValues = {} - end - ent.KeyValues[key] = value - elseif ent:GetClass()=="trigger_changelevel" then - ent[k] = value - - if k=="spawnflags" then - if bit.bor(tonumber(value),4)>0 then - print(ent,"previous") - end - --[[else - ent:SetKeyValue("spawnflags", 2)]] - end - elseif ent:GetClass()=="env_global" then - ent[key] = value - elseif ent:GetClass()=="info_player_start" then - if k == "spawnflags" and tonumber(value) and tonumber(value) > 0 then - ent.IsMasterSpawn = true - end - elseif ent:GetClass()=="func_areaportal" then - if key == "target" then - ent.TargetDoorName = value - end - end -end - -function GM:OnEntityCreated(ent) - --[[local phys = ent:GetPhysicsObject() - if HL2Weapon[ent:GetClass()] and phys and phys:IsValid() then - timer.Simple(0.05, function() ReplaceWeapon(ent) end) - end]] - - if not self.PostEntityDone then - return - end - - if not IsValid(ent) then - return - end - - if HL2Weapon[ent:GetClass()] then - CreateTFAmmoTrigger(ent) - end - - -- Jarated zombies release jarated headcrabs - if ent:IsNPC() and string.find(ent:GetClass(), "headcrab") then - local owner = ent:GetOwner() - if owner:IsNPC() and owner:HasPlayerState(PLAYERSTATE_JARATED) then - ent.NextEndJarate = owner.NextEndJarate - ent:AddPlayerState(PLAYERSTATE_JARATED, true) - end - end -end - -function GM:GetInflictorClass(ent, attacker, inflictor) - if ent:IsNPC() and attacker == ent then - return "" - end - - if IsValid(inflictor) then - local inflictorclass = inflictor.NameOverride or inflictor:GetClass() - local seq = (ent.LastDamageData and ent.LastDamageData.attacker_sequence) or 0 - local dmginfo = ent.LastDamageInfo or DamageInfo() - - - if inflictor.GetKillIconName and not inflictor.NameOverride then - return inflictor:GetKillIconName() - end - - - if attacker:GetClass()=="combine_mine" then - return "combine_mine" - end - - if attacker:GetClass()=="npc_vortigaunt" then - if dmginfo:IsDamageType(DMG_SLASH) then - return "npc_vortigaunt" - elseif dmginfo:IsDamageType(DMG_SHOCK) then - return "npc_vortigaunt_beam" - end - end - - if inflictorclass=="prop_physics" and dmginfo:IsExplosionDamage() then - return "env_explosion" - end - - if inflictorclass=="npc_hunter" then - if seq==10 or seq==11 then - return "npc_hunter_pound" - elseif seq==12 then - return "npc_hunter_skewer" - elseif seq==115 or seq==116 then - return "npc_hunter" - end - end - - if inflictorclass=="npc_antlion_worker" and dmginfo:IsDamageType(DMG_POISON) then - return "npc_antlion_worker_explosion" - end - - if inflictorclass=="npc_strider" then - if dmginfo:IsDamageType(DMG_BULLET) then - return "npc_strider_minigun" - else - return "npc_strider" - end - end - - return inflictor.NameOverride or inflictor:GetClass() - else - return "World" - end -end diff --git a/addon/gamemodes/teamfortress/gamemode/sv_npc_relationship.lua b/addon/gamemodes/teamfortress/gamemode/sv_npc_relationship.lua deleted file mode 100644 index 00828c0a4..000000000 --- a/addon/gamemodes/teamfortress/gamemode/sv_npc_relationship.lua +++ /dev/null @@ -1,50 +0,0 @@ - --- Those classes will keep default relationship regardless of which team concerns them -local IgnoredClasses = { - [CLASS_FLARE] = 1, - [CLASS_EARTH_FAUNA] = 1, - [CLASS_BULLSEYE] = 1, -} - -local function CalcRelationship(ent1, ent2) - local t1, t2 = GAMEMODE:EntityTeam(ent1), GAMEMODE:EntityTeam(ent2) - - if t1==t2 then - if t1==TEAM_RED or t1==TEAM_BLU then - return D_LI - else - --return D_NU - end - else - return D_HT - end -end - -function GM:UpdateEntityRelationship(ent) - -- Use default relationships in the first maps of the first chapter - if GetGlobalBool("GordonIsPrecriminal") or self.GordonIsPrecriminal then - return - end - - for _,v in pairs(ents.GetAll()) do - if (v:IsNPC() and v:EntityTeam()~=TEAM_HIDDEN and not IgnoredClasses[v:Classify()]) or v:IsPlayer() then - local rel = CalcRelationship(v, ent) - - if rel then - if v:IsNPC() then - v:AddEntityRelationship(ent, rel) - end - - if ent:IsNPC() then - ent:AddEntityRelationship(v, rel) - end - end - end - end -end - -hook.Add("OnEntityCreated", "TF_UpdateNPCRelationship", function(ent) - if ent:IsNPC() and ent:EntityTeam()~=TEAM_HIDDEN and not IgnoredClasses[ent:Classify()] and not ent:HasNPCFlag(NPC_NORELATIONSHIP) then - GAMEMODE:UpdateEntityRelationship(ent) - end -end) diff --git a/addon/gamemodes/teamfortress/gamemode/sv_response_rules.lua b/addon/gamemodes/teamfortress/gamemode/sv_response_rules.lua deleted file mode 100644 index 9438d3260..000000000 --- a/addon/gamemodes/teamfortress/gamemode/sv_response_rules.lua +++ /dev/null @@ -1,413 +0,0 @@ - -local tf_voice_cooldown = CreateConVar("tf_voice_cooldown", "1", {FCVAR_NOTIFY}) - -local function PrecacheGameSounds(path) - local data - - if SERVER and game.IsDedicated() then - data = file.Read(GM.Folder.."/content/scripts/"..path, "GAME") - else - data = file.Read(GM.Folder.."/content/scripts/"..path, "GAME") - end - - data = '"woot"\n{\n'..data..'\n}\n' - - for s,_ in pairs(util.KeyValuesToTable(data)) do - util.PrecacheSound(s) - end -end - -PrecacheGameSounds("tf_game_sounds_vo.txt") - -module("response_rules", package.seeall) - -Criteria = {} -Responses = {} -Rules = {} - -local comparisons = { - [">"] = function(a,b) return a>b end, - ["<"] = function(a,b) return a="] = function(a,b) return a>=b end, - ["!="] = function(a,b) return a~=b end, - [""] = function(a,b) return a==b end, -} - -function AddCriterion(str) - --[[ - local name, matchkey, matchvalue, required, weight, w = - string.match(str, '[cC]riterion%s*"(%S*)"%s*"(%S*)"%s*"(%S*)"%s*(%S*)%s*(%S*)%s*(%S*)') - ]] - local name, matchkey, matchvalue, required, weight, w = - string.match(str, '[cC]riterion%s*(%b"")%s*(%b"")%s*(%b"")%s*(%S*)%s*(%S*)%s*(%S*)') - name = string.match(name, '^"(.*)"$') - matchkey = string.match(matchkey, '^"(.*)"$') - matchvalue = string.match(matchvalue, '^"(.*)"$') - - if not name then - return - end - - local tbl = {} - tbl.key = matchkey - - if (required=='required' or required=='"required"') then - tbl.required = true - end - - if (weight=='weight' or weight=='"weight"') and tonumber(w) then - tbl.weight = tonumber(w) - else - tbl.weight = 1 - end - - tbl.values = {} - for operator,value in string.gmatch(matchvalue, "([<>=!]*)([^,]+)") do - local t = {} - t.o = comparisons[operator] or comparisons[""] - - if tonumber(value) then - t.n = tonumber(value) - else - t.n = value - end - - table.insert(tbl.values, t) - end - if not tbl.values[1] then - tbl.values[1] = {o=comparisons[""], n=""} - end - - --Msg("Registered criterion '"..name.."'\n") - - Criteria[name] = tbl - return tbl -end - -function AddResponse(str) - local name - name, str = string.match(str, '[rR]esponse%s*"*(%a+)"*%s*{(.-)}') - if not name then - return - end - - local tbl = {} - - for line in string.gmatch(str, ".-\n") do - local head,param,param2,param3 = string.match(line, "(%S+)%s*(%S*)%s*(%S*)%s*(%S*)") - if head=="scene" then - local sc = string.match(param, '([%a%d_/%.]+)') - PrecacheScene(sc) - local t = {sc} - if param2=="predelay" then - t.predelay = {} - for v in string.gmatch(param3, "[%d%.]+") do - table.insert(t.predelay, tonumber(v) or 0) - end - end - table.insert(tbl, t) - end - end - - Responses[name] = tbl - return tbl -end - -function AddRule(str) - local name - name, str = string.match(str, "[rR]ule%s*(%a+)%s*{(.-)}") - if not name then - return - end - - local tbl = {} - local criteria = string.match(str, "[cC]riteria%s*(.-)\n") - - if not criteria then - return - end - - tbl.criteria = {} - for criterion in string.gmatch(criteria, "(%S+)") do - table.insert(tbl.criteria, criterion) - end - - local response = string.match(str, "[rR]esponse%s*(.-)\n") - if not response then - return - end - - tbl.response = response - - local worldcontext = string.find(str, "applycontexttoworld") - - local context, value, duration = string.match(str, "[aA]pplyContext%s*\"(.-):(%d-):(%d-)\"\n") - if context and value and duration then - tbl.context = {context, tonumber(value) or 0, tonumber(duration) or 0, worldcontext ~= nil} - end - - Rules[name] = tbl - return tbl -end - -function IsMatchingCriterion(ent,crit) - local value = ent[crit.key] - if not crit.values then return false end - - for _,v in ipairs(crit.values) do - if not v.o(value, v.n) then - return false - end - end - - return true -end - -concommand.Add("match_criterion", function(pl,cmd,args) - if not Criteria[args[1]] then return end - pl:ChatPrint(tostring(IsMatchingCriterion(pl,Criteria[args[1]]))) -end) - --------------------------------------------------------------------------------- - -function Load(path) - Msg("Loading response/rules script '"..path.."' ... ") - local nrule, nresp, ncrit = 0, 0, 0 - local data - - if SERVER and game.IsDedicated() then - data = file.Read(GM.Folder.."/content/scripts/"..path, "GAME") - else - data = file.Read(GM.Folder.."/content/scripts/"..path, "GAME") - end - - if not data or data=="" then - MsgFN("Error, file '%s' not found!", path) - return - end - - data = string.gsub(data, "//.-\n", "") - data = string.gsub(data, "\r", "") -- get rid of carriage returns - - -- Criteria - for str in string.gmatch(data, "([cC]riterion.-\n)") do - AddCriterion(str) - ncrit = ncrit + 1 - end - - -- Rules - for str in string.gmatch(data, "([rR]ule.-{.-})") do - AddRule(str) - nrule = nrule + 1 - end - - -- Responses - for str in string.gmatch(data, "([rR]esponse.-{.-})") do - AddResponse(str) - nresp = nresp + 1 - end - - Msg(nrule.." rules, "..nresp.." responses, "..ncrit.." criteria\n") - - -- Includes - for str in string.gmatch(data, "#include \"(.-)\"") do - Load(str) - end -end - -local MissingCriterionErrorShown - -function SelectResponse(ent, dbg) - for k,v in pairs(ent.TemporaryContexts or {}) do - if CurTime()>v then - ent[k] = nil - end - end - - local bestrule, best, bestscore = nil, nil, 0 - for rname,rule in pairs(Rules) do - local score = 0 - for rcrit,cname in ipairs(rule.criteria) do - local criterion = Criteria[cname] - - if not criterion then - if not MissingCriterionErrorShown then - MissingCriterionErrorShown = true - ErrorNoHalt("WARNING: Criterion '"..cname.."' is required for rule '"..rname.."' but was not found") - ErrorNoHalt("WARNING: Outdated tf_response_rules.txt, some scenes might not function properly") - end - elseif IsMatchingCriterion(ent, criterion or {}) then - score = score + criterion.weight - elseif criterion.required then - score = -1 - break - end - end - - if score>=bestscore and Responses[rule.response] then - bestrule = rule - best = Responses[rule.response] - bestscore = score - end - end - - if bestrule and bestrule.context then - if bestrule.context[4] then - -- Apply the context to all players - local n = "world"..bestrule.context[1] - for _,v in pairs(player.GetAll()) do - v[n] = bestrule.context[2] - if not v.TemporaryContexts then v.TemporaryContexts = {} end - v.TemporaryContexts[n] = CurTime() + bestrule.context[3] - end - else - ent[bestrule.context[1]] = bestrule.context[2] - if not ent.TemporaryContexts then ent.TemporaryContexts = {} end - ent.TemporaryContexts[bestrule.context[1]] = CurTime() + bestrule.context[3] - end - end - - return best -end - -local function playscene_delayed(ent, scene) - if not IsValid(ent) then return end - ent:PlayScene(scene, 0) -end - -function PlayResponse(ent, response, nospeech) - if ent.NextSpeak and CurTime()num then j=1 end - if j==i then break end - end - - local r = response[j] - - local delay - if r.predelay then - if r.predelay[2] then - delay = math.Rand(r.predelay[1], r.predelay[2]) - else - delay = r.predelay[1] - end - end - - if not ent.NextSpeak or CurTime()>ent.NextSpeak or nospeech then - if delay then - timer.Simple(delay, function() - local time = playscene_delayed(ent, r[1]) - ent:SetNWBool("SpeechTime", time) - end) - else - local time = ent:PlayScene(r[1], 0) - ent:SetNWBool("SpeechTime", time) - end - - if not nospeech then - ent.LastScene = r[1] - - if tf_voice_cooldown:GetBool() then - ent.NextSpeak = CurTime() + 1.5 - if delay then ent.NextSpeak = ent.NextSpeak + delay end - end - end - return true - end - - return false -end - -local META = FindMetaTable("Player") - -function META:Speak(concept, nospeech, dbg) - if self:IsHL2() then return false end - if self:GetInfoNum("tf_robot", 0) == 1 or self:Team() == TEAM_SPECTATOR then return true end - if not self:Alive() then - return false - end - --[[ - if not nospeech then - Msg("Concept : "..concept.."\n") - end]] - - ---------------------------------------------------------------- - - -- Which concept we want to play - self.Concept = concept - - -- Random number - self.randomnum = math.random(0,100) - - -- Current weapon - if IsValid(self:GetActiveWeapon()) then - self.playerweapon = self:GetActiveWeapon():GetClass() - if self:GetActiveWeapon().GetItemData then - self.item_name = self:GetActiveWeapon():GetItemData().name or "" - self.item_type_name = self:GetActiveWeapon():GetItemData().item_type_name or "" - else - self.item_name = "" - self.item_type_name = "" - end - else - self.playeranim = "" - end - - -- Health fraction - self.playerhealthfrac = self:Health()/self:GetMaxHealth() - - -- What class the player is looking at - self.crosshair_on = "" - self.crosshair_enemy = "No" - - local start = self:GetShootPos() - local endpos = start + self:GetAimVector() * 10000 - local tr = util.TraceHull{ - start = start, - endpos = endpos, - filter = self, - mins = Vector(-10, -10, -10), - maxs = Vector(10, 10, 10), - } - - local class = "" - if tr.Entity and tr.Entity:IsPlayer() then - class = tr.Entity:GetPlayerClass() - -- Capitalize player class because the talker system wants to :/ - class = string.upper(string.sub(class,1,1))..string.sub(class,2) - - if self:IsValidEnemy(tr.Entity) then - self.crosshair_enemy = "Yes" - end - end - self.crosshair_on = class - - -- Temporary - self.GameRound = 5 - if self:IsLoser() then - self.OnWinningTeam = 0 - else - self.OnWinningTeam = 1 - end - - ---------------------------------------------------------------- - - local response = SelectResponse(self, dbg) - - if response and self:GetInfoNum("tf_robot", 0) == 0 then - return PlayResponse(self, response, nospeech, dbg) - end - - return false -end diff --git a/addon/gamemodes/teamfortress/gamemode/tf_soundscript_module.lua b/addon/gamemodes/teamfortress/gamemode/tf_soundscript_module.lua deleted file mode 100644 index ad2a25c7e..000000000 --- a/addon/gamemodes/teamfortress/gamemode/tf_soundscript_module.lua +++ /dev/null @@ -1,193 +0,0 @@ - -local meta = FindMetaTable("Entity") - -if CLIENT then - -function TestSound(snd) - local s = tf_soundscript.Sounds[string.lower(snd)] - if s then - local snd = table.Random(s.wave) - local pitch - if s.rndpitch then - pitch = math.random(unpack(s.rndpitch)) - else - pitch = s.pitch - end - - local lvl = s.soundlevel - - print(snd, lvl, pitch) - LocalPlayer():EmitSound(snd, lvl, pitch) - end -end - -end - -if not meta.EmitSoundOLD then - meta.EmitSoundOLD = meta.EmitSound -end -function meta:EmitSound(snd, lvl, pitch) - local s = tf_soundscript.Sounds[string.lower(snd)] - --print(snd) - if s then - snd = table.Random(s.wave) - local pitch - if s.rndpitch then - pitch = math.random(unpack(s.rndpitch)) - else - pitch = s.pitch - end - - local lvl = s.soundlevel - - self:EmitSoundOLD(snd, lvl, pitch) - else - self:EmitSoundOLD(snd, lvl, pitch) - end -end - -if not util.PrecacheSoundOLD then - util.PrecacheSoundOLD = util.PrecacheSound -end -function util.PrecacheSound(snd) - local s = tf_soundscript.Sounds[string.lower(snd)] - if s then - for _,v in ipairs(s.wave) do - util.PrecacheSound(v) - end - else - util.PrecacheSoundOLD(snd) - end -end - -if not CreateSoundOLD then - CreateSoundOLD = CreateSound -end -function CreateSound(ent, snd) - local s = tf_soundscript.Sounds[string.lower(snd)] - - if s then - snd = table.Random(s.wave) - local pitch - if s.rndpitch then - pitch = math.random(unpack(s.rndpitch)) - else - pitch = s.pitch - end - - local lvl = s.soundlevel - - local sound_ent = CreateSoundOLD(ent, snd) - sound_ent:ChangePitch(pitch) - sound_ent:ChangeVolume(volume) - sound_ent:SetSoundLevel(lvl) - return sound_ent - else - return CreateSoundOLD(ent, snd) - end -end - -local string = string -local util = util -local file = file -local pairs = pairs -local tonumber = tonumber - -module("tf_soundscript") - -Sounds = {} - -local VolumeNames = { - -} - -local PitchNames = { - PITCH_NORM = 100, - PITCH_LOW = 95, - PITCH_HIGH = 120, -} - -local SoundlevelNames = { - SNDLVL_NONE = 0, - SNDLVL_20dB = 20, - SNDLVL_25dB = 25, - SNDLVL_30dB = 30, - SNDLVL_35dB = 35, - SNDLVL_40dB = 40, - SNDLVL_45dB = 45, - SNDLVL_50dB = 50, - SNDLVL_55dB = 55, - SNDLVL_IDLE = 60, - SNDLVL_TALKING = 60, - SNDLVL_65dB = 65, - SNDLVL_STATIC = 66, - SNDLVL_70dB = 70, - SNDLVL_NORM = 75, - SNDLVL_80dB = 80, - SNDLVL_85dB = 85, - SNDLVL_90dB = 90, - SNDLVL_95dB = 95, - SNDLVL_100dB = 100, - SNDLVL_105dB = 105, - SNDLVL_110dB = 110, - SNDLVL_120dB = 120, - SNDLVL_130dB = 130, - SNDLVL_GUNFIRE = 140, - SNDLVL_140dB = 140, - SNDLVL_150dB = 150, -} - --- Adds an unique number before each key which has the given name -local function FormatNamedBlocks(str, name) - local counter = 0 - return string.gsub(str, '(%s*)"'..name..'"', function(s) - counter = counter + 1 - return string.format('%s"%d-'..name..'"', s, counter) - end) -end - -function Parse(data) - data = "data\n{\n"..data.."\n}\n" - data = string.gsub(data, '("rndwave"%s*%b{})', function(s) return FormatNamedBlocks(s, "wave") end) - - for name,d in pairs(util.KeyValuesToTable(data)) do - local t = {} - - t.wave = {} - if d.rndwave then - for k,v in pairs(d.rndwave) do - local i = tonumber(string.match(k, "wave-(%d+)")) - if i then - t.wave[i] = v - end - end - else - t.wave[1] = d.wave or "" - end - - t.channel = d.channel or "CHAN_STATIC" - t.volume = tonumber(d.volume) or 1.0 - - if d.pitch then - local min, max = string.match(d.pitch, "(%d+)%s*,%s*(%d+)") - if min then - t.rndpitch = {min, max} - else - t.pitch = (tonumber(d.pitch) or PitchNames[d.pitch]) or 100 - end - else - t.pitch = 100 - end - - t.soundlevel = (tonumber(d.soundlevel) or SoundlevelNames[d.soundlevel or ""]) or 75 - - Sounds[string.lower(name)] = t - end -end - -function Load(path) - local data = file.Read(path, "DATA") - if data and data ~= "" then - Parse(data) - end -end diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/hud_objectiveflagpanel.lua b/addon/gamemodes/teamfortress/gamemode/vgui/hud_objectiveflagpanel.lua deleted file mode 100644 index 299a7cd1d..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/hud_objectiveflagpanel.lua +++ /dev/null @@ -1,93 +0,0 @@ -local PANEL = {} - -local W = ScrW() -local H = ScrH() -local WScale = W/640 -local Scale = H/480 - -CreateConVar("hud_show_ctf_as_hl2", "1", {FCVAR_ARCHIVE}, "Show CTF hud as GMod Player") - -local objectives_flagpanel_bg_left = surface.GetTextureID("hud/objectives_flagpanel_bg_left") -local objectives_flagpanel_bg_right = surface.GetTextureID("hud/objectives_flagpanel_bg_right") -local objectives_flagpanel_bg_outline = surface.GetTextureID("hud/objectives_flagpanel_bg_outline") -local objectives_flagpanel_carried_outline = surface.GetTextureID("hud/objectives_flagpanel_carried_outline") -local objectives_flagpanel_carried_red = surface.GetTextureID("hud/objectives_flagpanel_carried_red") -local objectives_flagpanel_carried_blue = surface.GetTextureID("hud/objectives_flagpanel_carried_blue") -local objectives_flagpanel_bg_playingto = surface.GetTextureID("hud/objectives_flagpanel_bg_playingto") - -function PANEL:Init() - self:SetPaintBackgroundEnabled(false) - self:ParentToHUD() - self:SetVisible(true) -end - -function PANEL:PerformLayout() - self:SetPos(0,0) - self:SetSize(W,H) -end - -function PANEL:Paint() - local param - - if not LocalPlayer():Alive() or (LocalPlayer():IsHL2() and !GetConVar("hud_show_ctf_as_hl2"):GetBool()) or GetConVar("hud_forcehl2hud"):GetBool() or GetConVarNumber("cl_drawhud")==0 or GAMEMODE.ShowScoreboard or !string.find(game.GetMap(), "ctf_") then return end - - surface.SetDrawColor(255,255,255,255) - - surface.SetTexture(objectives_flagpanel_bg_left) - surface.DrawTexturedRect(320*WScale-140*Scale, (480-75)*Scale, 280*Scale, 80*Scale) - - surface.SetTexture(objectives_flagpanel_bg_right) - surface.DrawTexturedRect(320*WScale-140*Scale, (480-75)*Scale, 280*Scale, 80*Scale) - - surface.SetTexture(objectives_flagpanel_bg_outline) - surface.DrawTexturedRect(320*WScale-140*Scale, (480-75)*Scale, 280*Scale, 80*Scale) - - surface.SetTexture(objectives_flagpanel_bg_playingto) - surface.DrawTexturedRect(320*WScale-75*Scale, (480-31)*Scale, 150*Scale, 38*Scale) - - -- Blue score - param = { - text=team.GetScore(TEAM_BLU), - font="HudFontBig", - pos={320*WScale-128*Scale, (480-46+17.5)*Scale}, - color=Colors.Black, - xalign=TEXT_ALIGN_LEFT, - yalign=TEXT_ALIGN_CENTER, - } - draw.Text(param) - param.pos[1] = param.pos[1]-2*WScale - param.pos[2] = param.pos[2]-Scale - param.color=Colors.TanLight - draw.Text(param) - - -- Red score - param = { - text=team.GetScore(TEAM_RED), - font="HudFontBig", - pos={320*WScale+132*Scale, (480-46+17.5)*Scale}, - color=Colors.Black, - xalign=TEXT_ALIGN_RIGHT, - yalign=TEXT_ALIGN_CENTER, - } - - draw.Text(param) - param.pos[1] = param.pos[1]-2*WScale - param.pos[2] = param.pos[2]-Scale - param.color=Colors.TanLight - draw.Text(param) - - -- Playing to : - param = { - text="Playing to: ∞", - font="HudFontSmall", - pos={320*WScale, (480-28+15)*Scale}, - color=Colors.TanLight, - xalign=TEXT_ALIGN_CENTER, - yalign=TEXT_ALIGN_CENTER, - } - - draw.Text(param) -end - -if HudObjectiveFlagPanel then HudObjectiveFlagPanel:Remove() end -HudObjectiveFlagPanel = vgui.CreateFromTable(vgui.RegisterTable(PANEL, "DPanel")) diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/hud_playerclass.lua b/addon/gamemodes/teamfortress/gamemode/vgui/hud_playerclass.lua deleted file mode 100644 index 714a1d526..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/hud_playerclass.lua +++ /dev/null @@ -1,121 +0,0 @@ -local PANEL = {} - -local W = ScrW() -local H = ScrH() -local Scale = H/480 - -local character_bg = { - surface.GetTextureID("hud/character_red_bg"), - surface.GetTextureID("hud/character_blue_bg"), -} -local character_default = surface.GetTextureID("hud/class_scoutred") -local character3d_default = "models/player/spy.mdl" -local convar = CreateClientConVar("cl_hud_playerclass_use_playermodel", "0", true, false) - -function PANEL:Init() - self:SetPaintBackgroundEnabled(false) - self:ParentToHUD() - self:SetVisible(true) -end - -function PANEL:PerformLayout() - self:SetPos(0,0) - self:SetSize(W,H) -end - -function PANEL:OnRemove() - if self.ClassModel then - self.ClassModel:Remove() - end -end - -function PANEL:Paint() - if not LocalPlayer():Alive() or LocalPlayer():IsHL2() or GetConVar("hud_forcehl2hud"):GetBool() or GAMEMODE.ShowScoreboard or GetConVarNumber("cl_drawhud")==0 or LocalPlayer():Team() == TEAM_SPECTATOR or LocalPlayer():GetPlayerClass()=="" then if self.ClassPanel then self.ClassPanel:Remove() self.ClassPanel = nil end return end - - local t = LocalPlayer():Team() - local tbl = LocalPlayer():GetPlayerClassTable() - - if LocalPlayer():GetObserverTarget() and LocalPlayer():GetObserverTarget():IsPlayer() then - t = LocalPlayer():GetObserverTarget():Team() - tbl = LocalPlayer():GetObserverTarget():GetPlayerClassTable() - end - - --ht = ACT_MP_STAND_..LocalPlayer():GetActiveWeapon().HoldType - --[[model = LocalPlayer():GetPlayerClass() - - if not self.ClassPanel then - p = vgui.Create("ClassModelPanel") - - p:SetParent(self) - p:SetPos(W/2-100*Scale, 20*Scale) - p:SetSize(200*Scale, 360*Scale) - p.FOV = 50 - p.spotlight = true - - --t:AddModel(3,"models/player/items/all_class/all_halo.mdl",{ - --Parent = 1, - --}) - end - - if not LocalPlayer():GetPlayerClass() == model then - self.ModelSet = false - end - - if self.ClassPanel and not self.ModelSet then - p:SetSkin( LocalPlayer():GetSkin() ) - - if LocalPlayer():GetPlayerClass() == "demoman" then - model = "demo" - end - - p:AddModel(1, "models/player/"..model..".mdl",{ - Pos = Vector(220, 0, -36), - Ang = Angle(0, 220, 0), - }) - - if model == LocalPlayer():GetPlayerClass() then - self.ModelSet = true - end - end - - p:StartAnimation(1, LocalPlayer():GetSequenceActivity( LocalPlayer():GetSequence() )) - - --t:GetModelEntity(1):SetPoseParameter("move_x",1) - --t:GetModelEntity(1):SetPoseParameter("body_pitch",90) - self.ClassPanel = p - - --print("ACT_MP_STAND_"..LocalPlayer():GetActiveWeapon().HoldType)]] - local w, h = self:LocalToScreen( self:GetWide(), self:GetTall() - 30 ) - local tex = character_bg[t] or character_bg[1] - surface.SetTexture(tex) - surface.SetDrawColor(255,255,255,255) - surface.DrawTexturedRect(9*Scale, (480-60)*Scale, 100*Scale, 50*Scale) - if convar:GetBool() then - if !IsValid(self.ClassModel) then - self.ClassModel = vgui.Create("DModelPanel", self, "TF_3DClassModel") - self.ClassModel.PreDrawModel = function() render.SetScissorRect(0, 0, w, h, true) end - self.ClassModel.PostDrawModel = function() render.SetScissorRect(0, 0, 0, 0, false) end - end - self.ClassModel:SetPos(9*Scale, (480-100)*Scale) - self.ClassModel:SetSize(125*Scale, 100*Scale) - self.ClassModel:SetFOV(60) - self.ClassModel:SetAnimated(true) - self.ClassModel:SetLookAng(Angle(170, -30, 180)) - self.ClassModel:SetCamPos(Vector(75, -30, 60)) - self.ClassModel:SetModel(LocalPlayer():GetModel()) - self.ClassModel.Entity:SetSequence(LocalPlayer():GetSequence()) - self.ClassModel.LayoutEntity = function() end - else - if self.ClassModel then self.ClassModel:Remove() end - tex = character_default - if tbl and tbl.CharacterImage and tbl.CharacterImage[1] then - tex = tbl.CharacterImage[t] or tbl.CharacterImage[1] - end - surface.SetTexture(tex) - surface.SetDrawColor(255,255,255,255) - surface.DrawTexturedRect(25*Scale, (480-88)*Scale, 75*Scale, 75*Scale) - end -end - -if HudPlayerClass then HudPlayerClass:Remove() end -HudPlayerClass = vgui.CreateFromTable(vgui.RegisterTable(PANEL, "DPanel")) diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/hud_playerhealth.lua b/addon/gamemodes/teamfortress/gamemode/vgui/hud_playerhealth.lua deleted file mode 100644 index 0f911fadd..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/hud_playerhealth.lua +++ /dev/null @@ -1,140 +0,0 @@ -local W = ScrW() -local H = ScrH() -local Scale = H/480 - -local health_bg = surface.GetTextureID("hud/health_bg") -local health_color = surface.GetTextureID("hud/health_color") -local health_over_bg = surface.GetTextureID("hud/health_over_bg") -local health_dead = surface.GetTextureID("hud/health_dead") -local bleed_drop = surface.GetTextureID("vgui/bleed_drop") - -local PANEL = {} - -function PANEL:Init() - self:SetPaintBackgroundEnabled(false) - self:ParentToHUD() - self:SetVisible(true) -end - -function PANEL:PerformLayout() - self:SetPos(0,(480-120)*Scale) - self:SetSize(250*Scale,120*Scale) -end - -function PANEL:Paint() - if not LocalPlayer():Alive() or LocalPlayer():IsHL2() or GetConVar("hud_forcehl2hud"):GetBool() or GAMEMODE.ShowScoreboard or GetConVarNumber("cl_drawhud")==0 or LocalPlayer():Team() == TEAM_SPECTATOR or LocalPlayer():GetPlayerClass()=="" then return end - - local size, amplitude, frequency - local health = LocalPlayer():Health() - - if LocalPlayer():GetObserverTarget() and LocalPlayer():GetObserverTarget():IsPlayer() then - health = LocalPlayer():GetObserverTarget():Health() - end - - if health<=0 then - surface.SetTexture(health_dead) - surface.SetDrawColor(255,255,255,255) - surface.DrawTexturedRect(73*Scale, 33*Scale, 55*Scale, 55*Scale) - return - end - - --[[local tbl = LocalPlayer():GetPlayerClassTable() - local maxhealth = 100 - - if tbl and tbl.Health then - maxhealth = tbl.Health - end - - maxhealth = maxhealth + LocalPlayer():GetNWInt("PlayerMaxHealthBuff")]] - local maxhealth = LocalPlayer():GetMaxHealth() - - local ratio = math.Clamp(health/maxhealth,0,1) - - --local tbl = LocalPlayer():GetPlayerClassTable() - - if 2*healthmaxhealth then -- Overheal - size = (health-maxhealth)/maxhealth - frequency = 20 - amplitude = math.Clamp(size*127, 0, 127) - - surface.SetTexture(health_over_bg) - surface.SetDrawColor(255,255,255,128+amplitude*math.sin(frequency*CurTime())) - surface.DrawTexturedRect((73-size*27.5)*Scale, (33-size*27.5)*Scale, (1+size)*55*Scale, (1+size)*55*Scale) - end - - surface.SetTexture(health_bg) - surface.SetDrawColor(255,255,255,255) - surface.DrawTexturedRect(73*Scale, 33*Scale, 55*Scale, 55*Scale) - - local x,y,w,h = math.floor(75*Scale), math.floor(35*Scale), math.floor(51*Scale), math.floor(51*Scale) - surface.SetTexture(health_color) - - if 2*health self.NextAutoClose then - self.NextAutoClose = nil - self:Hide() - end - - if self.EndTime then - local r - if self.Opened then - r = math.Clamp(1 - (self.EndTime - CurTime()) / FadeInTime, 0, 1) - else - r = math.Clamp((self.EndTime - CurTime()) / FadeOutTime, 0, 1) - if r == 0 then - self:SetVisible(false) - return - end - end - - self.BackgroundColor.a = Lerp(r, 0, Colors.TransparentLightBlack.a) - self.ForegroundColor.a = Lerp(r, 0, Colors.TanLight.a) - else - self.BackgroundColor.a = Colors.TransparentLightBlack.a - self.ForegroundColor.a = Colors.TanLight.a - end - - local height = TextYOffset * (#VoiceTable - 1) - local y0 = 100*Scale - height * 0.5 - - local width = 0 - surface.SetFont("TFDefault") - for _,v in ipairs(VoiceTable) do - local w, h = surface.GetTextSize(v) - width = math.max(width, w) - end - - draw.RoundedBox(4, 0, y0 - TextYOffset, width + 10*Scale, height + 2*TextYOffset, self.BackgroundColor) - - local param = { - font="TFDefault", - pos={4.5*Scale, y0}, - color=self.ForegroundColor, - xalign=TEXT_ALIGN_LEFT, - yalign=TEXT_ALIGN_CENTER, - } - for _,v in ipairs(VoiceTable) do - param.text = v - draw.Text(param) - param.pos[2] = param.pos[2] + TextYOffset - end -end - -if HudVoiceMenu then HudVoiceMenu:Remove() end -HudVoiceMenu = vgui.CreateFromTable(vgui.RegisterTable(PANEL, "DPanel")) - -concommand.Add("voice_menu_1", function() - HudVoiceMenu:SelectMenu(1) -end) - -concommand.Add("voice_menu_2", function() - HudVoiceMenu:SelectMenu(2) -end) - -concommand.Add("voice_menu_3", function() - HudVoiceMenu:SelectMenu(3) -end) - -hook.Add("PlayerSlotSelected", "VoiceMenuSelect", function(slot) - if HudVoiceMenu.CurrentMenu then - RunConsoleCommand("voicemenu", HudVoiceMenu.CurrentMenu - 1, slot - 1) - return true - end -end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/hud_weaponselection.lua b/addon/gamemodes/teamfortress/gamemode/vgui/hud_weaponselection.lua deleted file mode 100644 index 49518c882..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/hud_weaponselection.lua +++ /dev/null @@ -1,311 +0,0 @@ -local PANEL = {} - -local W = ScrW() -local H = ScrH() -local WScale = W/640 -local Scale = H/480 - --- maximum number of slots to be displayed -local MAXSLOTS = 6 - -local color_panel = { - [0]=surface.GetTextureID("hud/color_panel_brown"), - surface.GetTextureID("hud/color_panel_red"), - surface.GetTextureID("hud/color_panel_blu"), -} -local w_machete_large = surface.GetTextureID("backpack/weapons/c_models/c_sandwich/c_sandwich_large") -local teamnames = {"red","blue"} ---local w_machete_large = surface.GetTextureID("sprites/bucket_fists_blue") - -local ACTIVE_WIDTH = 110 -local ACTIVE_HEIGHT = 77 -local INACTIVE_WIDTH = 71.5 -local INACTIVE_HEIGHT = 54 -local GAP_HEIGHT = 3.75 - -local DEFAULT_ICONS = { -tf_weapon_bat = "sprites/bucket_bat_%s", -tf_weapon_bonesaw = "sprites/bucket_bonesaw", -tf_weapon_bottle = "sprites/bucket_bottle_%s", -tf_weapon_builder = "sprites/bucket_sapper", -tf_weapon_club = "sprites/bucket_machete", -tf_weapon_fireaxe = "sprites/bucket_fireaxe", -tf_weapon_fists = "sprites/bucket_fists_%s", -tf_weapon_flamethrower = "sprites/bucket_flamethrower_%s", -tf_weapon_grenadelauncher = "sprites/bucket_grenlaunch", -tf_weapon_knife = "sprites/bucket_knife", -tf_weapon_medigun = "sprites/bucket_medigun_%s", -tf_weapon_minigun = "sprites/bucket_minigun", -tf_weapon_pda_engineer_build = "sprites/bucket_pda_build", -tf_weapon_pda_engineer_destroy = "sprites/bucket_pda_destroy", -tf_weapon_pipebomblauncher = "sprites/bucket_pipelaunch", -tf_weapon_pistol = "sprites/bucket_pistol", -tf_weapon_pistol_scout = "sprites/bucket_pistol", -tf_weapon_revolver = "sprites/bucket_revolver", -tf_weapon_rocketlauncher = "sprites/bucket_rl", -tf_weapon_scattergun = "sprites/bucket_scatgun", -tf_weapon_shotgun_hwg = "sprites/bucket_shotgun", -tf_weapon_shotgun_primary = "sprites/bucket_shotgun", -tf_weapon_shotgun_pyro = "sprites/bucket_shotgun", -tf_weapon_shotgun_soldier = "sprites/bucket_shotgun", -tf_weapon_shovel = "sprites/bucket_shovel", -tf_weapon_smg = "sprites/bucket_smg", -tf_weapon_sniperrifle = "sprites/bucket_sniper", -tf_weapon_syringegun_medic = "sprites/bucket_syrgun_%s", -tf_weapon_wrench = "sprites/bucket_wrench", -} - -function PANEL:Init() - self:SetPaintBackgroundEnabled(false) - self:ParentToHUD() - self:SetVisible(false) - - self.Panels = {} - for i=1,MAXSLOTS do - local t = vgui.Create("ItemModelPanel") - t:SetParent(self) - t.activeImage = color_panel[1] - t.inactiveImage = color_panel[0] - t.srcborder = 23 - t.drawborder = 4.5*Scale - t.disabled = true - t.itemImage = w_machete_large - t.itemImage_low = nil - t.text = "THE SANDVICH" - t.number = i - t:SetQuality("Unique") - - self.Panels[i] = t - end - - self.Loadout = {} - self.Current = 1 - - --[[self:SetLoadout({1,2,3}) - self:Select(1)]] -end - -function PANEL:PerformLayout() - self:SetPos(0,0) - self:SetSize(W,H) - - if not self.Panels then return end - - local y = (H - (self.TotalHeight)*Scale) / 2 - for k=1,self.NumSlots do - local t = self.Panels[k] - if k == self.Current then - t:SetPos(W-(ACTIVE_WIDTH+3)*Scale, y) - t:SetSize(ACTIVE_WIDTH*Scale, ACTIVE_HEIGHT*Scale) - t.model_ypos = 5 - t.model_tall = 62 - t.text_ypos = 57.5 +5 - t.inactiveImage = color_panel[1] - y = y + (ACTIVE_HEIGHT+GAP_HEIGHT)*Scale - else - t:SetPos(W-(INACTIVE_WIDTH+3)*Scale, y) - t:SetSize(INACTIVE_WIDTH*Scale, INACTIVE_HEIGHT*Scale) - t.model_ypos = 5 - t.model_tall = 42 - t.text_ypos = 38.5 - t.inactiveImage = color_panel[0] - y = y + (INACTIVE_HEIGHT+GAP_HEIGHT)*Scale - end - end -end - -function PANEL:CanSelectSlot(n) - for i,l in ipairs(self.Loadout) do - if l.slot == n then - return true - end - end - return false -end - -function PANEL:Select(n) - for i=1,MAXSLOTS do - self.Panels[i].Hover = false - end - - for i,l in ipairs(self.Loadout) do - if l.slot == n then - self.Current = i - self.CurrentSlot = l.slot - self.Panels[self.Current].Hover = true - self:InvalidateLayout() - return - end - end -end - -function PANEL:GetNextSlot(n) - for i,l in ipairs(self.Loadout) do - if l.slot == n then - if self.Loadout[i+1] then - return self.Loadout[i+1].slot - else - return self.Loadout[1].slot - end - end - end - return 1 -end - -function PANEL:GetPreviousSlot(n) - for i,l in ipairs(self.Loadout) do - if l.slot == n then - if self.Loadout[i-1] then - return self.Loadout[i-1].slot - else - return self.Loadout[#self.Loadout].slot - end - end - end - return 1 -end - -function PANEL:CalcCurrentWeaponSlot() - for i=1,self.NumSlots do - local l = self.Loadout[i] - - if l and l.ent == LocalPlayer():GetActiveWeapon() then - return i - end - end - - return 1 -end - -function PANEL:UpdateLoadout() - self.Loadout = {} - - local maxslot = 0 - local loadout = {} - - for _,v in pairs(LocalPlayer():GetWeapons()) do - if v.Slot and not v.Hidden then - loadout[v.Slot+1] = { - class=v:GetClass(), - ent=v, - slot=v.Slot+1, - id=(v.ItemIndex and v:ItemIndex()) or -1 - } - - if v.Slot>maxslot then maxslot = v.Slot end - end - end - - for i=1,maxslot+1 do - if loadout[i] then - table.insert(self.Loadout, loadout[i]) - end - end - - self.NumSlots = math.Clamp(#self.Loadout, 0, MAXSLOTS) - self.TotalHeight = (INACTIVE_HEIGHT + 4) * (self.NumSlots-1) + ACTIVE_HEIGHT - self:InvalidateLayout() - - for i=1,MAXSLOTS do - local t = self.Panels[i] - local l = self.Loadout[i] - - if i<=self.NumSlots then - t:SetVisible(true) - local w = tf_items.ItemsByID[l.id] - if w then - if w.baseitem and DEFAULT_ICONS[l.class] then - t.itemImage = surface.GetTextureID(Format(DEFAULT_ICONS[l.class], teamnames[LocalPlayer():EntityTeam()] or teamnames[1])) - elseif w.image_inventory then - t.itemImage = surface.GetTextureID(w.image_inventory) - else - t.itemImage = nil - end - - - t:SetTextColor(l.ent:GetNameColor()) - local q = (l.ent.GetQuality and l.ent:GetQuality()) or 0 - - if q == 0 then - t.text = nil - else - t.text = l.ent:GetFullName() - end - else - t.itemImage = l.ent - t:SetTextColor(l.ent:GetNameColor()) - t.text = l.ent:GetFullName() - end - - if LocalPlayer():EntityTeam() == TEAM_BLU then - t.activeImage = color_panel[2] - else - t.activeImage = color_panel[1] - end - - t.number = l.slot - t.itemImage_hi = nil - - if l.ent == LocalPlayer():GetActiveWeapon() then - self.Current = i - self.CurrentSlot = l.slot - end - else - t:SetVisible(false) - end - end -end - -function PANEL:SetLoadout(tbl) - self.Loadout = table.Copy(tbl) - self.NumSlots = math.Clamp(#self.Loadout, 1, MAXSLOTS) - self.TotalHeight = (INACTIVE_HEIGHT + 4) * (self.NumSlots-1) + ACTIVE_HEIGHT - self:InvalidateLayout() - - for k=1,MAXSLOTS do - local t = self.Panels[k] - - if k<=self.NumSlots then - t:SetVisible(true) - local w = TF_WEAPONS[self.Loadout[k]] - if w then - local tex = Format(w.icon, teamnames[LocalPlayer():EntityTeam()] or teamnames[1]) - t.itemImage = surface.GetTextureID(tex) - t.itemImage_hi = nil - t.text = w.name - else - t.itemImage = nil - t.itemImage_hi = nil - t.text = nil - end - else - t:SetVisible(false) - end - end -end - -function PANEL:CanSelectWeapon(n) - --[[n = self.Loadout[n or self.Current] - for _,v in pairs(LocalPlayer():GetWeapons()) do - if v:GetClass()==n then return true end - end - return false]] - - return true -end - -function PANEL:CurrentWeapon() - --return self.Loadout[self.Current] - if self.Loadout[self.Current] then - return self.Loadout[self.Current].class - end -end - -function PANEL:Paint() - if not LocalPlayer():Alive() or LocalPlayer():Team() == TEAM_SPECTATOR or LocalPlayer():HasWeapon("nil") then - self:SetVisible(false) - end -end - -if HudWeaponSelection then HudWeaponSelection:Remove() end -HudWeaponSelection = vgui.CreateFromTable(vgui.RegisterTable(PANEL, "DPanel")) diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/menu_charinfoloadoutsubpanel.lua b/addon/gamemodes/teamfortress/gamemode/vgui/menu_charinfoloadoutsubpanel.lua deleted file mode 100644 index 2c3bbdec0..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/menu_charinfoloadoutsubpanel.lua +++ /dev/null @@ -1,179 +0,0 @@ -local PANEL = {} - -local W = ScrW() -local H = ScrH() -local WScale = W/640 -local Scale = H/480 - -local class_sel_sm = {} -local classes = {"scout", "soldier", "pyro", "demo", "heavy", "engineer", "medic", "sniper", "spy"} -local classnames = {"SCOUT", "SOLDIER", "PYRO", "DEMOMAN", "HEAVY", "ENGINEER", "MEDIC", "SNIPER", "SPY"} - -local class_ypos = 40 -local class_xdelta = 5 -local class_wide_min = 60 -local class_wide_max = 100 -local class_tall_min = 120 -local class_tall_max = 200 -local class_distance_min = 7 -local class_distance_max = 100 - -local class_size_speed = 10 - -for k,v in ipairs(classes) do - class_sel_sm[k] = { - surface.GetTextureID("vgui/class_sel_sm_"..v.."_red"), - surface.GetTextureID("vgui/class_sel_sm_"..v.."_inactive") - } -end - -local backpack_01 = surface.GetTextureID("hud/backpack_01") -local backpack_01_grey = surface.GetTextureID("hud/backpack_01_grey") - -function PANEL:SelectClassLoadout(c) - if c>=1 and c<=10 then - FullLoadoutPanel:SetVisible(true) - self:ResetButtons() - self:SetVisible(false) - else - FullLoadoutPanel:SetVisible(false) - self:SetVisible(true) - end -end - -function PANEL:Init() - self:SetPaintBackgroundEnabled(false) - self:SetVisible(true) - self:SetParent(CharInfoPanel) - - -- Class loadout buttons - self.ClassButtons = {} - local x = (W/2)/Scale - (4.5 * class_wide_min + 4 * class_xdelta) - for k,_ in ipairs(classes) do - local t = vgui.Create("TFButton") - t:SetParent(self) - t:SetPos(x*Scale, (28+class_ypos)*Scale) - t:SetSize(class_wide_min*Scale,class_tall_min*Scale) - t.activeImage = class_sel_sm[k][1] - t.inactiveImage = class_sel_sm[k][2] - - t.xcenter = Scale * (x+class_wide_min/2) - t.ycenter = Scale * (28+class_ypos+class_tall_min/2) - - function t:DoClick() - self:GetParent():SelectClassLoadout(k) - self:GetParent().char_model = "models/player/medic.mdl" - end - - self.ClassButtons[k] = t - - x = x + class_wide_min + class_xdelta - end - - --[[-- Backpack - local t = vgui.Create("TFButton") - t:SetParent(self) - t:SetPos(W/2-30*Scale, 254*Scale) - t:SetSize(60*Scale,60*Scale) - t.activeImage = backpack_01 - t.inactiveImage = backpack_01_grey]] -end - -function PANEL:ResetButtons() - local w, h = Scale*class_wide_min, Scale*class_tall_min - for k,v in ipairs(self.ClassButtons) do - v:SetPos(v.xcenter-w/2, v.ycenter-h/2) - v:SetSize(w, h) - end -end - -function PANEL:PerformLayout() - self:SetPos(0, 40*Scale) - self:SetSize(W, H) - - if not self.ClassButtons then return end - - local active = false - for _,v in ipairs(self.ClassButtons) do - if v.Hover then - active = true - break - end - end - - if active then - local x, y = self:CursorPos() - for k,v in ipairs(self.ClassButtons) do - local dist = math.Clamp(math.abs(v.xcenter - x) / Scale, class_distance_min, class_distance_max) - local r = 1 - (dist - class_distance_min) / (class_distance_max - class_distance_min) - - local w, h = Scale*Lerp(r, class_wide_min, class_wide_max), Scale*Lerp(r, class_tall_min, class_tall_max) - v.TargetSize = Vector(w, h, 0) - end - else - for k,v in ipairs(self.ClassButtons) do - local w, h = Scale*class_wide_min, Scale*class_tall_min - v.TargetSize = Vector(w, h, 0) - end - end - - for k,v in ipairs(self.ClassButtons) do - if v.TargetSize then - local w0, h0 = v:GetSize() - local dw, dh = (v.TargetSize.x - w0) * RealFrameTime() * class_size_speed, (v.TargetSize.y - h0) * RealFrameTime() * class_size_speed - local w, h = w0 + dw, h0 + dh - - v:SetPos(v.xcenter-w/2, v.ycenter-h/2) - v:SetSize(w, h) - end - end -end - -function PANEL:Think() - self:InvalidateLayout() -end - -function PANEL:Paint() - draw.Text{ - text="SELECT A CLASS TO MODIFY LOADOUT", - font="HudFontSmallBold", - pos={W/2, 330*Scale}, - color=Color(117, 107, 94, 255), - xalign=TEXT_ALIGN_CENTER, - yalign=TEXT_ALIGN_TOP, - } - - for k,v in ipairs(self.ClassButtons) do - if v.Hover then - draw.Text{ - text=classnames[k], - font="HudFontSmallBold", - pos={v.xcenter, 226*Scale}, - color=Color(235, 226, 202, 255), - xalign=TEXT_ALIGN_CENTER, - yalign=TEXT_ALIGN_TOP, - } - - draw.Text{ - text="(NO ITEM FOUND YET)", - font="HudFontSmall", - pos={v.xcenter, 242*Scale}, - color=Color(117, 107, 94, 255), - xalign=TEXT_ALIGN_CENTER, - yalign=TEXT_ALIGN_TOP, - } - --[[ - draw.Text{ - text="(2 ITEMS IN INVENTORY)", - font="HudFontSmall", - pos={v.xcenter, 242*Scale}, - color=Color(200, 80, 60, 255), - xalign=TEXT_ALIGN_CENTER, - yalign=TEXT_ALIGN_TOP, - }]] - end - end -end - -if CharInfoLoadoutSubPanel then CharInfoLoadoutSubPanel:Remove() end -CharInfoLoadoutSubPanel = vgui.CreateFromTable(vgui.RegisterTable(PANEL, "DPanel")) diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/menu_fullloadoutpanel.lua b/addon/gamemodes/teamfortress/gamemode/vgui/menu_fullloadoutpanel.lua deleted file mode 100644 index 5f6b19bfe..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/menu_fullloadoutpanel.lua +++ /dev/null @@ -1,202 +0,0 @@ -local PANEL = {} - -local W = ScrW() -local H = ScrH() -local WScale = W/640 -local Scale = H/480 - -local loadout_rect = surface.GetTextureID("vgui/loadout_rect") -local loadout_rect_mouseover = surface.GetTextureID("vgui/loadout_rect_mouseover") -local loadout_dotted_line = surface.GetTextureID("vgui/loadout_dotted_line") - -local loadout_round_rect = surface.GetTextureID("vgui/loadout_round_rect") -local loadout_round_rect_selected = surface.GetTextureID("vgui/loadout_round_rect_selected") - -local w_machete_large = surface.GetTextureID("backpack/weapons/w_models/w_machete_large") -local w_cigarette_case = surface.GetTextureID("backpack/weapons/w_models/w_cigarette_case_large") -local c_leather_watch = surface.GetTextureID("backpack/weapons/c_models/c_leather_watch/parts/c_leather_watch_large") -local w_knife = surface.GetTextureID("backpack/weapons/w_models/w_knife_large") -local w_revolver = surface.GetTextureID("backpack/weapons/w_models/w_revolver_large") -local all_halo = surface.GetTextureID("backpack/player/items/all_class/all_halo_large") - -local item_center_xoffset1 = -310 -local item_center_xoffset2 = 165 -local attributes_xoffset1 = 140 -local attributes_xoffset2 = -168 -local attributes_yoffset = 10 - ---[[ -local ATT_TEST = { -{"Level 0 Cigarette Case", 1}, -{"+900% health", 3}, -{"No weapon when equipped", 4}, -{"-66% speed", 4}, -}]] - -local ATT1 = { -{"Level 1 Revolver", 1}, -} - -local ATT2 = { -{"Level 5 Invisibility Watch", 1}, -{"Cloak Type: Motion Sensitive", 2}, -} - -local ATT3 = { -{"Level 0 Cigarette Case", 1}, -{"It will change your skeleton!", 2}, -{"Excrutiatingly painful . . .", 4}, -{". . . but worth it", 3}, -} - -local ATT4 = { -{"Level 42 Shitstorm Generator", 1}, -} - -local Items = { - {"REVOLVER", "Normal", w_revolver, ATT1}, - {"THE CLOAK AND DAGGER", "Unique", c_leather_watch, ATT2}, - {"THE CRAB-WALKING KIT", "rarity3", w_cigarette_case, ATT3}, - {"FAGGOT'S SHINEY RING", "Unique", all_halo, ATT4}, - {"MISC", "", nil}, -} - -function PANEL:Init() - self:SetPaintBackgroundEnabled(true) - self:SetVisible(false) - self:SetParent(CharInfoPanel) -end - -function PANEL:PerformLayout() - self:SetPos(0, 67*Scale) - self:SetSize(W, H) - - -- The attribute panel, which displays the name and attributes of each item - if not self.AttributePanel then - local t = vgui.Create("ItemAttributePanel") - t:SetParent(self) - t:SetSize(168*Scale,300*Scale) - t.text_ypos = 20 - - self.AttributePanel = t - end - - -- The item panels, with the name and a picture of each item currently equipped - if not self.ItemPanels then - self.ItemPanels = {} - local x, y = W/2+item_center_xoffset1*Scale, 60*Scale - local xoffset, yoffset = attributes_xoffset1*Scale, attributes_yoffset*Scale - for k,v in ipairs(Items) do - local t = vgui.Create("ItemModelPanel") - t:SetParent(self) - t:SetPos(x, y) - t:SetSize(140*Scale, 75*Scale) - t.model_ypos = 5 - t.model_tall = 55 - t.activeImage = loadout_rect_mouseover - t.inactiveImage = loadout_rect - t.itemImage = v[3] - t.text = v[1] - t.text_ypos = 60 - t.attributes = v[4] - t:SetQuality(v[2]) - - t:SetAttributePanel(self.AttributePanel, xoffset, yoffset) - - self.ItemPanels[k] = t - - if k==3 then - x = W/2+item_center_xoffset2*Scale - xoffset = attributes_xoffset2*Scale - y = 60*Scale - else - y = y + 80*Scale - end - end - end - - -- The class panel, shows the current class selected holding the last weapon equipped - if not self.ClassPanel then - local t = vgui.Create("ClassModelPanel") - t:SetParent(self) - t:SetPos(W/2-100*Scale, 20*Scale) - t:SetSize(200*Scale, 340*Scale) - t.FOV = 50 - t.spotlight = true - - t:AddModel(1,"models/player/spy.mdl",{ - Pos = Vector(190, 0, -36), - Ang = Angle(0, 200, 0), - }) - t:AddModel(2,"models/weapons/w_models/w_cigarette_case.mdl",{ - Parent = 1, - }) - t:AddModel(3,"models/player/items/all_class/all_halo.mdl",{ - Parent = 1, - }) - t:StartAnimation(1, ACT_MP_CROUCHWALK_PDA) - t:GetModelEntity(1):SetPoseParameter("move_x",1) - t:GetModelEntity(1):SetPoseParameter("body_pitch",90) - self.ClassPanel = t - end - - -- Move the attribute panel in front of everything - self.AttributePanel:MoveToFront() - - -- And finally, the button to go back to the main loadout menu - if not self.BackButton then - self.BackButton = vgui.Create("TFButton") - self.BackButton:SetParent(self) - self.BackButton:SetPos(W/2 - 310*Scale,320*Scale) - self.BackButton:SetSize(100*Scale,25*Scale) - self.BackButton.labelText = "<< BACK" - self.BackButton.font = "HudFontSmallBold" - function self.BackButton:DoClick() - CharInfoLoadoutSubPanel:SelectClassLoadout(0) - end - end -end - -function PANEL:Paint() - -- Header lines - - surface.SetDrawColor(255,255,255,255) - tf_draw.TexturedQuadTiled(loadout_dotted_line, W/2-305*Scale, 40*Scale, 610*Scale, 10*Scale, {y=false}) - - -- Labels - tf_draw.LabelText( - W/2-300*Scale, - 20*Scale, - 20*Scale, - 15*Scale, - ">>", - Color(200, 80, 60, 255), - "HudFontSmallestBold", - "west" - ) - - tf_draw.LabelText( - W/2-280*Scale, - 15*Scale, - 240*Scale, - 25*Scale, - "SPY", - "TanLight", - "HudFontMediumBold", - "west" - ) - - tf_draw.LabelText( - W/2-55*Scale, - 22*Scale, - 180*Scale, - 15*Scale, - "CURRENTLY EQUIPPED:", - "TanLight", - "HudFontSmallestBold", - "south-west" - ) -end - -if FullLoadoutPanel then FullLoadoutPanel:Remove() end -FullLoadoutPanel = vgui.CreateFromTable(vgui.RegisterTable(PANEL, "DPanel")) diff --git a/addon/gamemodes/teamfortress/gamemode/vgui/vgui_tfbutton.lua b/addon/gamemodes/teamfortress/gamemode/vgui/vgui_tfbutton.lua deleted file mode 100644 index 7276374b7..000000000 --- a/addon/gamemodes/teamfortress/gamemode/vgui/vgui_tfbutton.lua +++ /dev/null @@ -1,69 +0,0 @@ -local PANEL = {} - -function PANEL:Init() - self:SetVisible(true) - self:SetPaintBackgroundEnabled(false) -end - -function PANEL:Paint() - if self.invisible then return end - - local w, h = self:GetSize() - - if self.activeImage and self.inactiveImage then - -- Image button - surface.SetDrawColor(255,255,255,255) - - if self.Hover then - surface.SetTexture(self.activeImage) - else - surface.SetTexture(self.inactiveImage) - end - surface.DrawTexturedRect(0, 0, w, h) - else - -- Text button - local fc, bc - if self.Hover then - fc = Colors.TanDarker - bc = Colors.Orange - else - fc = Colors.TanDark - bc = Colors.TanLight - end - - draw.RoundedBox(6, 0, 0, w, h, bc) - - if self.labelText then - draw.Text{ - text=self.labelText, - font=self.font, - pos={w/2,h/2}, - color=fc, - xalign=TEXT_ALIGN_CENTER, - yalign=TEXT_ALIGN_CENTER, - } - end - end -end - -function PANEL:OnCursorEntered() - if self.invisible or self.disabled then return end - self.Hover = true -end - -function PANEL:OnCursorExited() - if self.invisible or self.disabled then return end - self.Hover = false -end - -function PANEL:OnMousePressed(b) - if self.disabled then return end - if b==MOUSE_LEFT then - self:DoClick() - end -end - -function PANEL:DoClick() -end - -vgui.Register("TFButton", PANEL) diff --git a/addon/gamemodes/teamfortress/teamfortress.txt b/addon/gamemodes/teamfortress/teamfortress.txt deleted file mode 100644 index 4c55a2bd7..000000000 --- a/addon/gamemodes/teamfortress/teamfortress.txt +++ /dev/null @@ -1,85 +0,0 @@ -"teamfortress" -{ - "base" "base" - "title" "Team Fortress 2" - "menusystem" "1" - "workshopid" "1417447538" - - "author_name" "LeadKiller" - - "settings" - { - 1 - { - "name" "tf_caninspect" - "text" "Weapon Inspecting" - "help" "When enabled, it allows anybody to take a good look of their weapon." - "type" "CheckBox" - "default" "1" - "singleplayer" "1" - } - 2 - { - "name" "tf_haltinspect" - "text" "Stop Inspecting when Noclipping" - "help" "When enabled, you can't inspect while noclipping, and will halt as soon as you enter noclip." - "type" "CheckBox" - "default" "1" - "singleplayer" "1" - } - 3 - { - "name" "tf_use_hl_hull_size" - "text" "Use HL2 Hull Size For Players" - "help" "When enabled, your collision will be like GMod player instead of TF2!" - "type" "CheckBox" - "default" "0" - "singleplayer" "1" - } - 4 - { - "name" "tf_voice_cooldown" - "text" "Voice Cooldown" - "help" "When enabled, it stops users from spamming voice commands!" - "type" "CheckBox" - "default" "1" - "singleplayer" "1" - } - 5 - { - "name" "tf_fashlight" - "text" "TF Flashlight" - "help" "Whether or not players will have a flashlight as a TF2 Class" - "type" "CheckBox" - "default" "1" - "singleplayer" "1" - } - 6 - { - "name" "tf_competitive" - "text" "Competitive Mode" - "help" "Disables sandbox features, recommended for serious coop!" - "type" "CheckBox" - "default" "0" - "singleplayer" "1" - } - 7 - { - "name" "sbox_noclip" - "text" "Noclip" - "help" "When enabled players will be able to noclip" - "type" "CheckBox" - "default" "1" - "singleplayer" "1" - } - 8 - { - "name" "sbox_godmode" - "text" "god_mode" - "help" "If enabled, all players will be invincible" - "type" "CheckBox" - "default" "0" - "singleplayer" "1" - } - } -} diff --git a/addon/maps/ctf_2fort.nav b/addon/maps/ctf_2fort.nav deleted file mode 100644 index b2cae07f5..000000000 Binary files a/addon/maps/ctf_2fort.nav and /dev/null differ diff --git a/addon/materials/vgui/av_default.vmt b/addon/materials/vgui/av_default.vmt deleted file mode 100644 index e7bc19a9e..000000000 --- a/addon/materials/vgui/av_default.vmt +++ /dev/null @@ -1,8 +0,0 @@ -"UnlitGeneric" -{ - "$baseTexture" "vgui\av_default" - "$vertexcolor" 1 - "$no_fullbright" 1 - "$ignorez" 1 - "$translucent" 1 -} diff --git a/addon/materials/vgui/av_default.vtf b/addon/materials/vgui/av_default.vtf deleted file mode 100644 index 80b7fe215..000000000 Binary files a/addon/materials/vgui/av_default.vtf and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/c_nailgun.dx80.vtx b/addon/models/advancedweaponiser/nailgun/c_nailgun.dx80.vtx deleted file mode 100644 index 982a2dad4..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/c_nailgun.dx80.vtx and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/c_nailgun.dx90.vtx b/addon/models/advancedweaponiser/nailgun/c_nailgun.dx90.vtx deleted file mode 100644 index 0b218cf0f..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/c_nailgun.dx90.vtx and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/c_nailgun.mdl b/addon/models/advancedweaponiser/nailgun/c_nailgun.mdl deleted file mode 100644 index 724df7e97..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/c_nailgun.mdl and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/c_nailgun.phy b/addon/models/advancedweaponiser/nailgun/c_nailgun.phy deleted file mode 100644 index 961661d68..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/c_nailgun.phy and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/c_nailgun.sw.vtx b/addon/models/advancedweaponiser/nailgun/c_nailgun.sw.vtx deleted file mode 100644 index 6a8b7786c..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/c_nailgun.sw.vtx and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/c_nailgun.vvd b/addon/models/advancedweaponiser/nailgun/c_nailgun.vvd deleted file mode 100644 index d795df38d..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/c_nailgun.vvd and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/v_nailgun.dx80.vtx b/addon/models/advancedweaponiser/nailgun/v_nailgun.dx80.vtx deleted file mode 100644 index 9f25fe4eb..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/v_nailgun.dx80.vtx and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/v_nailgun.dx90.vtx b/addon/models/advancedweaponiser/nailgun/v_nailgun.dx90.vtx deleted file mode 100644 index 36fc36916..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/v_nailgun.dx90.vtx and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/v_nailgun.mdl b/addon/models/advancedweaponiser/nailgun/v_nailgun.mdl deleted file mode 100644 index 7c013db31..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/v_nailgun.mdl and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/v_nailgun.sw.vtx b/addon/models/advancedweaponiser/nailgun/v_nailgun.sw.vtx deleted file mode 100644 index d6401148f..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/v_nailgun.sw.vtx and /dev/null differ diff --git a/addon/models/advancedweaponiser/nailgun/v_nailgun.vvd b/addon/models/advancedweaponiser/nailgun/v_nailgun.vvd deleted file mode 100644 index e499e9056..000000000 Binary files a/addon/models/advancedweaponiser/nailgun/v_nailgun.vvd and /dev/null differ diff --git a/addon/scenes/player/demoman/low/taunt_brutallegend.vcd b/addon/scenes/player/demoman/low/taunt_brutallegend.vcd deleted file mode 100644 index dc8c6fb25..000000000 --- a/addon/scenes/player/demoman/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "demo" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/demoman/low/taunt_laugh.vcd b/addon/scenes/player/demoman/low/taunt_laugh.vcd deleted file mode 100644 index 4b45fd75f..000000000 --- a/addon/scenes/player/demoman/low/taunt_laugh.vcd +++ /dev/null @@ -1,213 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 5.299650 -1.000000 - param "noaction" -} -actor "Demo" -{ - channel "Animation" - { - event sequence "taunt_laugh" - { - time 0.000000 5.300000 - param "taunt_laugh" - fixedlength - } - event speak "d" - { - time 0.000000 5.050340 - param "Demoman.LaughLong02" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "happy" - { - time 0.792270 3.246376 - param "player\demo\emotion\emotion" - param2 "happy" - event_ramp - { - 0.1200 1.0000 - 2.3409 0.9980 - } - } - event expression "uw" - { - time 0.007246 0.570048 - param "player\demo\phonemes\phonemes_strong" - param2 "uw" - event_ramp - { - 0.0600 0.0000 - 0.2733 0.9861 "curve_easein_to_curve_easein" - 0.3667 1.0000 "curve_easeout_to_curve_easeout" - 0.4800 0.0179 - } - } - event expression "drunkHappy" - { - time 0.449275 1.147343 - param "player\demo\emotion\emotion" - param2 "drunkHappy" - event_ramp - { - 0.0000 0.0020 "curve_easein_to_curve_easeout" - 0.1000 0.9960 "curve_easein_to_curve_easein" - 0.5867 1.0000 "curve_easein_to_curve_easein" - 0.6933 0.0100 "curve_easein_to_curve_easein" - } - } - event expression "openJaw" - { - time 0.613527 5.275362 - param "player\demo\emotion\emotion" - param2 "openJaw" - event_ramp - { - 0.0733 0.9363 "curve_easein_to_curve_easeout" - 0.1867 0.0837 - 0.2867 1.0000 "curve_easein_to_curve_easeout" - 0.3967 0.0319 - 0.5100 0.9980 - 0.6100 0.0478 - 0.7733 1.0000 - 0.8833 0.2649 - 0.9867 0.9920 - 1.0833 0.0438 "curve_easein_to_curve_easein" - 1.2667 0.7948 - 1.3833 0.2052 - 1.5300 0.9303 - 1.6233 0.0199 - 1.7300 0.7789 - 1.8067 0.1833 - 1.9700 0.8367 - 2.0833 0.0219 - 2.4067 0.6175 "curve_easein_to_curve_easeout" - 2.5067 0.6394 "curve_easein_to_curve_easein" - 2.5767 0.9861 - 2.7067 0.4442 - 2.8133 0.9940 - 2.9667 0.1574 - 3.1967 0.9880 - 3.4767 0.6175 - 3.6500 0.5717 - 3.7800 0.8765 - 3.8333 0.3566 - 3.9800 0.6912 - 4.1000 0.1514 - 4.2633 0.7610 - } - } - event expression "happyUpper" - { - time 0.012077 0.644927 - param "player\demo\emotion\emotion" - param2 "happyUpper" - event_ramp - { - 0.1533 1.0000 - 0.5700 0.9980 - } - } - event expression "openJaw" - { - time 0.009662 1.009662 - param "player\demo\emotion\emotion" - param2 "openJaw" - event_ramp - { - 0.2000 0.9980 - } - } - event expression "happy" - { - time 3.446860 5.137681 - param "player\demo\emotion\emotion" - param2 "happy" - event_ramp - { - 0.0700 0.9980 - 0.8700 0.9920 - 1.1300 0.7052 "curve_easein_to_curve_easein" - 1.4233 0.6853 "curve_easeout_to_curve_easeout" - 1.6148 1.0000 - } - } - event expression "happyUpper" - { - time 3.147343 4.400966 - param "player\demo\emotion\emotion" - param2 "happyUpper" - event_ramp - { - 0.1867 0.9781 - 0.5067 0.0120 - } - } - event expression "happy" - { - time 4.963768 5.311594 - param "player\demo\emotion\emotion" - param2 "happy" - event_ramp - { - 0.0333 0.9980 - 0.3065 1.0000 - } - } - event expression "openJaw" - { - time 4.396135 5.067633 - param "player\demo\emotion\emotion" - param2 "openJaw" - event_ramp - { - 0.0300 0.0100 - 0.1733 0.9940 - 0.3000 0.0319 - 0.4667 0.9920 - } - } - event expression "uw" - { - time 4.338164 5.243961 - param "player\demo\phonemes\phonemes_strong" - param2 "uw" - event_ramp - { - 0.2200 0.6614 - 0.3933 0.1056 - 0.5300 0.5339 - } - } - event expression "ao" - { - time 4.299517 5.299517 - param "player\demo\phonemes\phonemes_strong" - param2 "ao" - event_ramp - { - 0.1833 0.0219 - 0.3167 0.6514 - 0.4333 0.0558 - 0.5700 0.6355 - 0.7167 0.0518 - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\demo.mdl" -} - -scalesettings -{ - "CChoreoView" "276" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/demoman/low/taunt_replay.vcd b/addon/scenes/player/demoman/low/taunt_replay.vcd deleted file mode 100644 index a6d0cafbf..000000000 --- a/addon/scenes/player/demoman/low/taunt_replay.vcd +++ /dev/null @@ -1,50 +0,0 @@ -// Choreo version 1 -actor "demo" -{ - channel "body" - { - event sequence "taunt07" - { - time -0.000000 3.333333 - param "taunt_replay" - fixedlength - } - event expression "evilHappy" - { - time 0.563218 3.327586 - param "player\demo\emotion\emotion" - param2 "evilHappy" - event_ramp - { - 0.1605 1.0000 "curve_easein_to_curve_easein" - 2.6692 1.0000 "curve_easein_to_curve_easein" - } - } - event expression "mad" - { - time 0.005747 0.747126 - param "player\demo\emotion\emotion" - param2 "mad" - event_ramp - { - 0.0209 1.0000 "curve_easein_to_curve_easein" - 0.6907 1.0000 "curve_easein_to_curve_easein" - } - } - } - channel "wav" - { - } -} - -scalesettings -{ - "CChoreoView" "116" - "RampTool" "86" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/engineer/low/taunt_brutallegend.vcd b/addon/scenes/player/engineer/low/taunt_brutallegend.vcd deleted file mode 100644 index 66a0e90f1..000000000 --- a/addon/scenes/player/engineer/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "engineer" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/engineer/low/taunt_hifivefailfull.vcd b/addon/scenes/player/engineer/low/taunt_hifivefailfull.vcd deleted file mode 100644 index 43231dfa1..000000000 --- a/addon/scenes/player/engineer/low/taunt_hifivefailfull.vcd +++ /dev/null @@ -1,69 +0,0 @@ -// Choreo version 1 -actor "eng" -{ - channel "body" - { - event sequence "taunt_hifiveFailFull" - { - time 0.000000 3.966667 - param "taunt_hifiveFailFull" - fixedlength - } - event expression "defaultFace" - { - time 0.000000 0.326087 - param "player\engineer\emotion\emotion" - param2 "defaultFace" - event_ramp - { - 0.0000 0.9958 - 0.2182 0.9979 "curve_easeout_to_curve_easeout" - } - } - event expression "happyBig" - { - time 0.202899 1.884058 - param "player\engineer\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.3242 0.9979 "curve_easein_to_curve_easein" - 1.4818 0.9979 "curve_easeout_to_curve_easeout" - } - } - event expression "scared" - { - time 1.760870 2.514493 - param "player\engineer\emotion\emotion" - param2 "scared" - event_ramp - { - 0.0697 1.0000 "curve_easein_to_curve_easein" - 0.5746 0.9936 "curve_easeout_to_curve_easeout" - } - } - event expression "mad" - { - time 2.413043 3.971014 - param "player\engineer\emotion\emotion" - param2 "mad" - event_ramp - { - 0.4515 0.9851 "curve_easein_to_curve_easein" - 1.5489 0.9979 "curve_easeout_to_curve_easeout" - } - } - } -} - -scalesettings -{ - "CChoreoView" "92" - "ExpressionTool" "100" - "RampTool" "66" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/engineer/low/taunt_laugh.vcd b/addon/scenes/player/engineer/low/taunt_laugh.vcd deleted file mode 100644 index 46869c6b9..000000000 --- a/addon/scenes/player/engineer/low/taunt_laugh.vcd +++ /dev/null @@ -1,77 +0,0 @@ -// Choreo version 1 -actor "engineer" -{ - channel "body" - { - event sequence "taunt_laugh" - { - time 0.000000 3.333333 - param "taunt_laugh" - fixedlength - } - event speak "engineer_laugh_long02" - { - time 0.000000 3.002993 - param "Engineer.LaughLong02" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "happyBigClosed" - { - time 0.018519 3.314815 - param "player\engineer\emotion\emotion" - param2 "happyBigClosed" - event_ramp - { - 0.0972 1.0000 - 1.7750 1.0000 "curve_easeout_to_curve_easeout" - 2.1222 0.6865 "curve_easein_to_curve_easeout" - 3.1889 0.6728 "curve_easeout_to_curve_easeout" - } - } - event expression "ah" - { - time 0.037037 1.697531 - param "player\engineer\phonemes\phonemes" - param2 "ah" - event_ramp - { - 0.1160 0.9245 - 0.3180 0.2014 - 0.5600 0.9062 - 0.8080 0.2082 - 1.0040 0.9016 - 1.1660 0.2151 - 1.4180 0.8993 - 1.5980 0.0000 - } - } - event expression "uh" - { - time 1.765432 3.055556 - param "player\engineer\phonemes\phonemes" - param2 "uh" - event_ramp - { - 0.2160 0.8558 - 0.4220 0.0892 - 0.6560 0.7803 - 0.8780 0.1236 - 1.0660 0.7712 - } - } - } -} - -scalesettings -{ - "CChoreoView" "104" - "RampTool" "72" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/engineer/low/taunt_replay.vcd b/addon/scenes/player/engineer/low/taunt_replay.vcd deleted file mode 100644 index d5b0b7688..000000000 --- a/addon/scenes/player/engineer/low/taunt_replay.vcd +++ /dev/null @@ -1,48 +0,0 @@ -// Choreo version 1 -actor "engineer" -{ - channel "body" - { - event sequence "taunt07" - { - time 0.000000 3.333333 - param "taunt_replay" - fixedlength - } - event expression "madUpper" - { - time 0.086420 0.993827 - param "player\engineer\emotion\emotion" - param2 "madUpper" - event_ramp - { - 0.0511 0.9612 "curve_easein_to_curve_easein" - 0.8500 0.9563 "curve_easein_to_curve_easeout" - } - } - event expression "happyBig" - { - time 0.925925 3.320988 - param "player\engineer\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.0830 1.0000 "curve_easein_to_curve_easeout" - 2.2614 1.0000 "curve_easeout_to_curve_easeout" - 2.3774 0.0218 - } - } - } -} - -scalesettings -{ - "CChoreoView" "108" - "RampTool" "94" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/heavy/low/taunt_brutallegend.vcd b/addon/scenes/player/heavy/low/taunt_brutallegend.vcd deleted file mode 100644 index 276261705..000000000 --- a/addon/scenes/player/heavy/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "heavy" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/heavy/low/taunt_laugh.vcd b/addon/scenes/player/heavy/low/taunt_laugh.vcd deleted file mode 100644 index 946200f0b..000000000 --- a/addon/scenes/player/heavy/low/taunt_laugh.vcd +++ /dev/null @@ -1,102 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 5.048442 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "taunt_laugh" - { - time 0.002415 4.835749 - param "taunt_laugh" - fixedlength - } - event expression "happybig02" - { - time -0.004831 5.048309 - param "player\heavy\emotion\emotion" - param2 "happybig02" - event_ramp - { - 0.2400 0.9980 "curve_easein_to_curve_easein" - 0.6867 0.9980 - 0.9200 0.0000 - 1.1800 1.0000 - 1.4133 0.4960 - 1.5533 0.4980 - 1.6600 1.0000 - 1.8233 0.6056 - 1.9933 0.6653 - 2.1500 1.0000 - 3.2250 0.3745 - 3.6367 0.3028 - 4.0033 0.7490 - 4.1967 0.3725 - 4.4067 0.6315 - 4.7917 0.3028 - } - } - event expression "happy1" - { - time 0.739130 1.739130 - param "player\heavy\emotion\emotion" - param2 "happy1" - event_ramp - { - 0.0200 0.0060 - 0.1633 0.9940 - 0.3733 0.0040 - } - } - event speak "Heavy.LaugherBigSnort01" - { - time 0.000000 5.046690 - param "Heavy.LaugherBigSnort01" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "aa2" - { - time 1.454106 2.400966 - param "player\heavy\phonemes\phonemes_strong" - param2 "aa2" - event_ramp - { - 0.2200 0.3865 - 0.4267 0.0040 - 0.6500 0.4044 - } - } - event expression "painbig" - { - time 2.574879 3.574879 - param "player\heavy\emotion\emotion" - param2 "painbig" - event_ramp - { - 0.3967 0.0000 - 0.5500 1.0000 "curve_easein_to_curve_easein" - 0.5733 0.9880 "curve_easeout_to_curve_easeout" - 0.6400 0.1952 "curve_easein_to_curve_easein" - 0.8000 0.0080 "curve_easein_to_curve_easein" - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\heavy.mdl" -} - -scalesettings -{ - "CChoreoView" "276" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/heavy/low/taunt_replay.vcd b/addon/scenes/player/heavy/low/taunt_replay.vcd deleted file mode 100644 index fa887ed6e..000000000 --- a/addon/scenes/player/heavy/low/taunt_replay.vcd +++ /dev/null @@ -1,57 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 2.828768 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "heavy_taunt_replay" - { - time 0.000000 2.833333 - param "heavy_taunt_replay" - fixedlength - } - } - channel "audio" - { - event expression "happysmall02" - { - time 0.004566 0.776256 - param "player\heavy\emotion\emotion" - param2 "happysmall02" - event_ramp - { - 0.2933 0.8578 "curve_easein_to_curve_easein" - 0.6385 0.8858 "curve_easeout_to_curve_easeout" - } - } - event expression "happybig02" - { - time 0.618721 2.819635 - param "player\heavy\emotion\emotion" - param2 "happybig02" - event_ramp - { - 0.1433 0.9790 - 1.6564 0.9930 - 1.9233 0.0793 "curve_kochanek_early_to_curve_kochanek_early" - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\heavy.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/medic/low/taunt09.vcd b/addon/scenes/player/medic/low/taunt09.vcd deleted file mode 100644 index e1499cd09..000000000 --- a/addon/scenes/player/medic/low/taunt09.vcd +++ /dev/null @@ -1,47 +0,0 @@ -// Choreo version 1 -actor "medic" -{ - channel "body" - { - event sequence "taunt09" - { - time 0.000000 5.000000 - param "taunt09" - fixedlength - } - event expression "evilHappyUpper" - { - time 0.000000 2.958333 - param "player\medic\emotion\emotion" - param2 "evilHappyUpper" - event_ramp - { - 0.1853 1.0000 "curve_easein_to_curve_easeout" - 2.7840 1.0000 "curve_easeout_to_curve_easeout" - } - } - event expression "happyFull" - { - time 2.797619 4.970238 - param "player\medic\emotion\emotion" - param2 "happyFull" - event_ramp - { - 0.1647 0.9954 "curve_easein_to_curve_easeout" - 1.9986 1.0000 "curve_easeout_to_curve_easeout" - } - } - } -} - -scalesettings -{ - "CChoreoView" "112" - "RampTool" "68" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/medic/low/taunt_brutallegend.vcd b/addon/scenes/player/medic/low/taunt_brutallegend.vcd deleted file mode 100644 index 2cefa0756..000000000 --- a/addon/scenes/player/medic/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "medic" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/medic/low/taunt_laugh.vcd b/addon/scenes/player/medic/low/taunt_laugh.vcd deleted file mode 100644 index 9a6fcadc9..000000000 --- a/addon/scenes/player/medic/low/taunt_laugh.vcd +++ /dev/null @@ -1,99 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 4.831051 -1.000000 - param "noaction" -} -actor "Medic" -{ - channel "Animation" - { - event sequence "pyro_taunt_replay" - { - time 0.000000 4.833333 - param "taunt_laugh" - fixedlength - } - } - channel "audio" - { - event speak "me" - { - time 0.330000 4.091633 - param "Medic.LaughLong01" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "happyFull" - { - time 0.018265 4.819634 - param "player\medic\emotion\emotion" - param2 "happyFull" - event_ramp - { - 0.4700 0.9980 "curve_easein_to_curve_easeout" - 4.6900 1.0000 "curve_easein_to_curve_easeout" - } - } - event expression "ax2" - { - time 0.593607 4.732877 - param "player\medic\phonemes\phonemes_strong" - param2 "ax2" - event_ramp - { - 0.1000 0.6076 - 0.2367 0.0239 - 0.2933 0.5418 - 0.4733 0.5219 - 0.5567 0.7629 - 0.6367 0.3705 - 0.7267 0.7649 - 0.8533 0.3705 - 0.9700 0.5956 - 1.0400 0.3048 - 1.1700 0.6892 - 1.2000 0.5398 - 1.2967 0.6494 - 1.3833 0.1116 - 1.4700 0.5956 - 1.5333 0.4482 - 1.6467 0.5398 - 1.7533 0.0956 "curve_easein_to_curve_easeout" - 1.9267 0.4482 "curve_kochanek_late_to_curve_kochanek_late" - 1.9500 0.3765 "curve_easein_to_curve_easeout" - 2.1767 0.2869 "curve_easeout_to_curve_easeout" - 2.2267 0.0000 "curve_bspline_to_curve_bspline" - 2.5200 0.3845 "curve_easein_to_curve_easeout" - 2.5600 0.0418 "curve_easein_to_curve_easein" - 2.7200 0.3247 "curve_easein_to_curve_easeout" - 2.9800 0.0757 - } - } - event expression "evilHappy" - { - time 0.924657 2.194064 - param "player\medic\emotion\emotion" - param2 "evilHappy" - event_ramp - { - 0.0967 0.1673 "curve_easein_to_curve_easein" - 1.0300 0.1116 "curve_easeout_to_curve_easeout" - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\medic.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/medic/low/taunt_replay.vcd b/addon/scenes/player/medic/low/taunt_replay.vcd deleted file mode 100644 index bde9ff5d0..000000000 --- a/addon/scenes/player/medic/low/taunt_replay.vcd +++ /dev/null @@ -1,36 +0,0 @@ -// Choreo version 1 -actor "medic" -{ - channel "body" - { - event sequence "taunt_replay" - { - time 0.000000 3.333333 - param "taunt_replay" - fixedlength - } - event expression "evilHappy" - { - time 0.458333 3.309524 - param "player\medic\emotion\emotion" - param2 "evilHappy" - event_ramp - { - 0.3147 0.9830 "curve_easein_to_curve_easein" - 2.6941 1.0000 "curve_easein_to_curve_easeout" - } - } - } -} - -scalesettings -{ - "CChoreoView" "112" - "RampTool" "68" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/pyro/low/taunt_brutallegend.vcd b/addon/scenes/player/pyro/low/taunt_brutallegend.vcd deleted file mode 100644 index 7ec31609e..000000000 --- a/addon/scenes/player/pyro/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "pyro" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/pyro/low/taunt_laugh.vcd b/addon/scenes/player/pyro/low/taunt_laugh.vcd deleted file mode 100644 index e360cbad9..000000000 --- a/addon/scenes/player/pyro/low/taunt_laugh.vcd +++ /dev/null @@ -1,39 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 4.934916 -1.000000 - param "noaction" -} -actor "Pyro" -{ - channel "Animation" - { - event sequence "taunt_laugh" - { - time 0.000000 4.933333 - param "taunt_laugh" - fixedlength - } - event speak "Pyro.laugh_addl04" - { - time 0.000000 4.952744 - param "Pyro.laugh_addl04" - fixedlength - cctype "cc_master" - cctoken "" - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\pyro.mdl" -} - -scalesettings -{ - "CChoreoView" "276" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/pyro/low/taunt_replay.vcd b/addon/scenes/player/pyro/low/taunt_replay.vcd deleted file mode 100644 index 0367aef38..000000000 --- a/addon/scenes/player/pyro/low/taunt_replay.vcd +++ /dev/null @@ -1,34 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 2.828768 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "pyro_taunt_replay" - { - time 0.000000 2.833333 - param "pyro_taunt_replay2" - fixedlength - } - } - channel "audio" - { - } - faceposermodel "D:\dev\staging\game\tf\models\player\pyro.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/pyro/low/taunt_replay2.vcd b/addon/scenes/player/pyro/low/taunt_replay2.vcd deleted file mode 100644 index 0beacac08..000000000 --- a/addon/scenes/player/pyro/low/taunt_replay2.vcd +++ /dev/null @@ -1,34 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 2.828768 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "pyro_taunt_replay" - { - time 0.000000 2.833333 - param "pyro_taunt_replay" - fixedlength - } - } - channel "audio" - { - } - faceposermodel "D:\dev\staging\game\tf\models\player\pyro.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/scout/low/taunt_brutallegend.vcd b/addon/scenes/player/scout/low/taunt_brutallegend.vcd deleted file mode 100644 index b17d45f52..000000000 --- a/addon/scenes/player/scout/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "scout" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/scout/low/taunt_laugh.vcd b/addon/scenes/player/scout/low/taunt_laugh.vcd deleted file mode 100644 index 611cb9827..000000000 --- a/addon/scenes/player/scout/low/taunt_laugh.vcd +++ /dev/null @@ -1,96 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 4.934916 -1.000000 - param "noaction" -} -actor "Scout" -{ - channel "Animation" - { - event sequence "taunt_laugh" - { - time 0.000000 4.933333 - param "taunt_laugh" - fixedlength - } - event speak "d" - { - time 0.000000 4.771701 - param "Scout.LaughLong02" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "happyBig" - { - time 0.002415 4.925121 - param "player\scout\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.0867 1.0000 - 4.8700 1.0000 - } - } - event expression "aa2" - { - time 0.004831 4.939613 - param "player\scout\phonemes\phonemes_strong" - param2 "aa2" - event_ramp - { - 0.3967 0.0139 - 0.5733 0.8127 - 0.7200 0.0000 - 0.8467 0.9522 - 0.9167 0.0279 - 1.6200 0.0000 - 1.7600 0.8247 "curve_easein_to_curve_easeout" - 1.8167 0.0000 - 1.8733 0.0100 "curve_easeout_to_curve_easeout" - 2.0000 0.9163 "curve_easein_to_curve_easein" - 2.0833 0.0020 - 4.0500 0.0080 - 4.2333 0.6673 - 4.3833 0.0120 - } - } - event expression "happyBigUpper" - { - time 0.108696 4.847826 - param "player\scout\emotion\emotion" - param2 "happyBigUpper" - event_ramp - { - 0.0033 0.0000 - 0.1833 0.0000 - 0.3400 0.4183 - 0.3767 0.0000 - 0.5133 0.0000 - 0.5967 0.3506 - 0.6367 0.0000 - 0.8433 0.0000 - 1.0933 0.7430 - 1.3100 0.0000 - 2.3733 0.0000 - 2.6267 0.4263 - 3.1200 0.0000 - 4.7391 0.0000 - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\scout.mdl" -} - -scalesettings -{ - "CChoreoView" "276" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/scout/low/taunt_replay.vcd b/addon/scenes/player/scout/low/taunt_replay.vcd deleted file mode 100644 index 85e3e531d..000000000 --- a/addon/scenes/player/scout/low/taunt_replay.vcd +++ /dev/null @@ -1,67 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 2.831051 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "scout_taunt_replay" - { - time 0.000000 2.833333 - param "scout_taunt_replay" - fixedlength - } - } - channel "audio" - { - event expression "happyBig" - { - time 0.399543 2.794520 - param "player\scout\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.0800 0.9953 "curve_easein_to_curve_easeout" - 2.0695 1.0000 "curve_easein_to_curve_easeout" - } - } - event expression "painSmall" - { - time 0.004566 0.527397 - param "player\scout\emotion\emotion" - param2 "painSmall" - event_ramp - { - 0.0467 0.3193 "curve_easein_to_curve_easein" - 0.3567 0.3193 "curve_easeout_to_curve_easeout" - } - } - event expression "aa" - { - time 0.445206 2.723744 - param "player\scout\phonemes\phonemes_strong" - param2 "aa" - event_ramp - { - 0.1967 0.6294 "curve_easein_to_curve_easein" - 2.0004 0.6200 "curve_easeout_to_curve_easeout" - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\scout.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/sniper/low/taunt_brutallegend.vcd b/addon/scenes/player/sniper/low/taunt_brutallegend.vcd deleted file mode 100644 index b939cd096..000000000 --- a/addon/scenes/player/sniper/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "sniper" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/sniper/low/taunt_laugh.vcd b/addon/scenes/player/sniper/low/taunt_laugh.vcd deleted file mode 100644 index 7ac681881..000000000 --- a/addon/scenes/player/sniper/low/taunt_laugh.vcd +++ /dev/null @@ -1,52 +0,0 @@ -// Choreo version 1 -actor "sniper" -{ - channel "body" - { - event sequence "taunt_laugh" - { - time 0.000000 3.500000 - param "taunt_laugh" - fixedlength - } - } - channel "audio" - { - event speak "sniper_laughlong02" - { - time 0.000000 3.192744 - param "Sniper.LaughLong02" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "happyBig" - { - time 0.012346 3.493827 - param "player\sniper\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.1976 0.0000 "curve_easein_to_curve_easeout" - 0.5119 0.8352 "curve_easein_to_curve_easeout" - 2.3952 0.8307 "curve_easein_to_curve_easeout" - 2.8000 0.4851 - 2.9452 0.7918 - 3.0881 0.3913 - 3.2381 0.7071 "curve_easein_to_curve_easeout" - } - } - } -} - -scalesettings -{ - "CChoreoView" "108" - "RampTool" "84" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/sniper/low/taunt_replay.vcd b/addon/scenes/player/sniper/low/taunt_replay.vcd deleted file mode 100644 index ee79af825..000000000 --- a/addon/scenes/player/sniper/low/taunt_replay.vcd +++ /dev/null @@ -1,47 +0,0 @@ -// Choreo version 1 -actor "sniper" -{ - channel "body" - { - event sequence "taunt_replay" - { - time 0.006173 3.339506 - param "taunt_replay" - fixedlength - } - event expression "happyBig" - { - time 0.456790 3.314815 - param "player\sniper\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.2927 1.0000 - 2.6195 1.0000 - } - } - event expression "mad" - { - time 0.037037 0.808642 - param "player\sniper\emotion\emotion" - param2 "mad" - event_ramp - { - 0.1512 1.0000 - 0.4780 1.0000 - } - } - } -} - -scalesettings -{ - "CChoreoView" "108" - "RampTool" "82" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/soldier/low/taunt_brutallegend.vcd b/addon/scenes/player/soldier/low/taunt_brutallegend.vcd deleted file mode 100644 index 18ddbb8c1..000000000 --- a/addon/scenes/player/soldier/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "soldier" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/soldier/low/taunt_laugh.vcd b/addon/scenes/player/soldier/low/taunt_laugh.vcd deleted file mode 100644 index 559dacd3e..000000000 --- a/addon/scenes/player/soldier/low/taunt_laugh.vcd +++ /dev/null @@ -1,114 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 4.831051 -1.000000 - param "noaction" -} -actor "Soldier" -{ - channel "Animation" - { - event sequence "taunt_laugh" - { - time 0.000000 4.833333 - param "taunt_laugh" - fixedlength - } - event speak "Soldier.LaughLong03" - { - time 0.004831 4.091543 - param "Soldier.LaughLong03" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "happyBig" - { - time 0.019324 4.835749 - param "player\soldier\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.6233 0.2829 - 1.1767 0.9861 "curve_easein_to_curve_easeout" - 1.5800 0.4582 - 2.0367 0.9861 - 3.9633 1.0000 - 4.1133 0.3207 - 4.2400 1.0000 - 4.6267 1.0000 "curve_easeout_to_curve_easeout" - } - } - event expression "uw" - { - time 3.618358 4.618358 - param "player\soldier\phonemes\phonemes_strong" - param2 "uw" - event_ramp - { - 0.5200 0.7789 - 0.8200 0.0438 "curve_easein_to_curve_easeout" - } - } - event expression "ah" - { - time 0.524155 3.509662 - param "player\soldier\phonemes\phonemes_strong" - param2 "ah" - event_ramp - { - 0.4900 0.0179 "curve_kochanek_to_curve_kochanek" - 0.6367 0.4880 "curve_easein_to_curve_easeout" - 0.7800 0.0000 "curve_easein_to_curve_easein" - } - } - event expression "iy" - { - time 3.258454 4.258454 - param "player\soldier\phonemes\phonemes_strong" - param2 "iy" - event_ramp - { - 0.3667 0.3167 - 0.6967 0.0219 - } - } - event expression "eh" - { - time 0.422705 3.980676 - param "player\soldier\phonemes\phonemes_strong" - param2 "eh" - event_ramp - { - 0.5967 0.0159 - 0.7433 0.1713 - 0.9000 0.0080 - 1.5033 0.0100 - 1.6300 0.1753 - 1.7100 0.0020 - 2.0400 0.0100 - 2.1300 0.1315 - 2.2067 0.0060 - 2.3567 0.0120 - 2.4100 0.1235 - 2.4567 0.0159 - 3.0200 0.0020 - 3.0967 0.0956 - 3.1533 0.0080 - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\soldier.mdl" -} - -scalesettings -{ - "CChoreoView" "276" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/soldier/low/taunt_replay.vcd b/addon/scenes/player/soldier/low/taunt_replay.vcd deleted file mode 100644 index 83abec31c..000000000 --- a/addon/scenes/player/soldier/low/taunt_replay.vcd +++ /dev/null @@ -1,67 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 2.799088 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "Soldier_replay_taunt" - { - time 0.000000 2.800000 - param "Soldier_replay_taunt" - fixedlength - } - } - channel "audio" - { - event expression "mad" - { - time 0.011415 0.757991 - param "player\soldier\emotion\emotion" - param2 "mad" - event_ramp - { - 0.1933 0.5734 "curve_easein_to_curve_easein" - 0.5233 0.5618 "curve_easeout_to_curve_easeout" - } - } - event expression "happyBig" - { - time 0.680365 2.801370 - param "player\soldier\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.1367 0.9860 "curve_easein_to_curve_easein" - 1.8167 1.0000 "curve_easeout_to_curve_easeout" - } - } - event expression "eh" - { - time 0.696347 0.977169 - param "player\soldier\phonemes\phonemes_strong" - param2 "eh" - event_ramp - { - 0.0867 0.6923 "curve_easein_to_curve_easein" - 0.1777 0.6853 "curve_easeout_to_curve_easeout" - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\soldier.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/spy/low/taunt_brutallegend.vcd b/addon/scenes/player/spy/low/taunt_brutallegend.vcd deleted file mode 100644 index 3fcc1d679..000000000 --- a/addon/scenes/player/spy/low/taunt_brutallegend.vcd +++ /dev/null @@ -1,25 +0,0 @@ -// Choreo version 1 -actor "spy" -{ - channel "body" - { - event sequence "taunt_brutallegend" - { - time 0.000000 4.36666 - param "taunt_brutallegend" - fixedlength - } - } -} - -scalesettings -{ - "CChoreoView" "172" - "ExpressionTool" "100" - "RampTool" "42" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/spy/low/taunt_laugh.vcd b/addon/scenes/player/spy/low/taunt_laugh.vcd deleted file mode 100644 index 7e23b6423..000000000 --- a/addon/scenes/player/spy/low/taunt_laugh.vcd +++ /dev/null @@ -1,88 +0,0 @@ -// Choreo version 1 -actor "spy" -{ - channel "face" - { - event sequence "taunt_laugh" - { - time 0.000000 6.666667 - param "taunt_laugh" - fixedlength - } - event speak "spy.laughlong01" - { - time 0.000000 6.466757 - param "Spy.LaughLong01" - fixedlength - cctype "cc_master" - cctoken "" - } - event expression "scaredUpper" - { - time 0.006173 2.401235 - param "player\spy\emotion\emotion" - param2 "scaredUpper" - event_ramp - { - 0.1159 1.0000 "curve_easein_to_curve_easeout" - 2.2136 1.0000 "curve_easein_to_curve_easeout" - } - } - event expression "painBig" - { - time 2.240741 3.240741 - param "player\spy\emotion\emotion" - param2 "painBig" - event_ramp - { - 0.1182 0.8467 "curve_easein_to_curve_easeout" - 0.8773 0.8421 "curve_easeout_to_curve_easeout" - } - } - event expression "scaredUpper" - { - time 3.104939 6.635803 - param "player\spy\emotion\emotion" - param2 "painBigUpper" - event_ramp - { - 0.1382 0.9176 "curve_easein_to_curve_easeout" - 3.4441 0.9222 "curve_easeout_to_curve_easeout" - } - } - event expression "Smile02" - { - time 0.024691 3.259259 - param "player\spy\emotion\emotion" - param2 "Smile02" - event_ramp - { - 0.1632 1.0000 "curve_easein_to_curve_easeout" - 3.0628 1.0000 "curve_easeout_to_curve_easeout" - } - } - event expression "happyBig" - { - time 3.141975 6.641975 - param "player\spy\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.2474 1.0000 "curve_easein_to_curve_easeout" - 3.2579 1.0000 "curve_easeout_to_curve_easeout" - } - } - } -} - -scalesettings -{ - "CChoreoView" "108" - "RampTool" "38" - "ExpressionTool" "74" - "GestureTool" "100" - "SceneRampTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/scenes/player/spy/low/taunt_replay.vcd b/addon/scenes/player/spy/low/taunt_replay.vcd deleted file mode 100644 index 0823820a6..000000000 --- a/addon/scenes/player/spy/low/taunt_replay.vcd +++ /dev/null @@ -1,56 +0,0 @@ -// Choreo version 1 -event stoppoint "end" -{ - time 2.828768 -1.000000 - param "noaction" -} -actor "Heavy" -{ - channel "Animation" - { - event sequence "spy_replay_taunt" - { - time 0.000000 2.833333 - param "spy_replay_taunt" - fixedlength - } - } - channel "audio" - { - event expression "scared" - { - time 0.004566 0.500000 - param "player\spy\emotion\emotion" - param2 "scared" - event_ramp - { - 0.2000 0.6410 "curve_catmullrom_normalize_x_to_curve_catmullrom_normalize_x" - 0.3290 0.8910 "curve_easein_to_curve_easeout" - } - } - event expression "happyBig" - { - time 0.426941 2.696347 - param "player\spy\emotion\emotion" - param2 "happyBig" - event_ramp - { - 0.2467 0.9940 "curve_easein_to_curve_easein" - 2.1400 1.0000 "curve_easeout_to_curve_easeout" - } - } - } - faceposermodel "D:\dev\staging\game\tf\models\player\heavy.mdl" -} - -scalesettings -{ - "CChoreoView" "292" - "RampTool" "60" - "SceneRampTool" "100" - "ExpressionTool" "100" - "GestureTool" "100" -} -fps 60 -snap off -ignorePhonemes off diff --git a/addon/sound/weapons/nail_gun_shoot.wav b/addon/sound/weapons/nail_gun_shoot.wav deleted file mode 100644 index 138bf47d9..000000000 Binary files a/addon/sound/weapons/nail_gun_shoot.wav and /dev/null differ diff --git a/addon/sound/weapons/nail_gun_shoot_crit.wav b/addon/sound/weapons/nail_gun_shoot_crit.wav deleted file mode 100644 index 468ccd362..000000000 Binary files a/addon/sound/weapons/nail_gun_shoot_crit.wav and /dev/null differ diff --git a/gamemodes/base/entities/weapons/weapon_base/cl_init.lua b/gamemodes/base/entities/weapons/weapon_base/cl_init.lua new file mode 100644 index 000000000..c9350b294 --- /dev/null +++ b/gamemodes/base/entities/weapons/weapon_base/cl_init.lua @@ -0,0 +1,260 @@ + +include( "ai_translations.lua" ) +include( "sh_anim.lua" ) +include( "shared.lua" ) + +SWEP.Slot = 0 -- Slot in the weapon selection menu +SWEP.SlotPos = 10 -- Position in the slot +SWEP.DrawAmmo = true -- Should draw the default HL2 ammo counter +SWEP.DrawCrosshair = true -- Should draw the default crosshair +SWEP.DrawWeaponInfoBox = true -- Should draw the weapon info box +SWEP.BounceWeaponIcon = true -- Should the weapon icon bounce? +SWEP.SwayScale = 1.0 -- The scale of the viewmodel sway +SWEP.BobScale = 1.0 -- The scale of the viewmodel bob + +SWEP.RenderGroup = RENDERGROUP_OPAQUE + +-- Override this in your SWEP to set the icon in the weapon selection +SWEP.WepSelectIcon = surface.GetTextureID( "weapons/swep" ) + +-- This is the corner of the speech bubble +SWEP.SpeechBubbleLid = surface.GetTextureID( "gui/speech_lid" ) + +--[[--------------------------------------------------------- + You can draw to the HUD here - it will only draw when + the client has the weapon deployed.. +-----------------------------------------------------------]] +function SWEP:DrawHUD() +end + +--[[--------------------------------------------------------- + Checks the objects before any action is taken + This is to make sure that the entities haven't been removed +-----------------------------------------------------------]] +function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha ) + + -- Set us up the texture + surface.SetDrawColor( 255, 255, 255, alpha ) + surface.SetTexture( self.WepSelectIcon ) + + -- Lets get a sin wave to make it bounce + local fsin = 0 + + if ( self.BounceWeaponIcon == true ) then + fsin = math.sin( CurTime() * 10 ) * 5 + end + + -- Borders + y = y + 10 + x = x + 10 + wide = wide - 20 + + -- Draw that mother + surface.DrawTexturedRect( x + fsin, y - fsin, wide - fsin * 2 , ( wide / 2 ) + fsin ) + + -- Draw weapon info box + self:PrintWeaponInfo( x + wide + 20, y + tall * 0.95, alpha ) + +end + +--[[--------------------------------------------------------- + This draws the weapon info box +-----------------------------------------------------------]] +function SWEP:PrintWeaponInfo( x, y, alpha ) + + if ( self.DrawWeaponInfoBox == false ) then return end + + if (self.InfoMarkup == nil ) then + local str + local title_color = "" + local text_color = "" + + str = "" + if ( self.Author != "" ) then str = str .. title_color .. "Author:\t" .. text_color .. self.Author .. "\n" end + if ( self.Contact != "" ) then str = str .. title_color .. "Contact:\t" .. text_color .. self.Contact .. "\n\n" end + if ( self.Purpose != "" ) then str = str .. title_color .. "Purpose:\n" .. text_color .. self.Purpose .. "\n\n" end + if ( self.Instructions != "" ) then str = str .. title_color .. "Instructions:\n" .. text_color .. self.Instructions .. "\n" end + str = str .. "" + + self.InfoMarkup = markup.Parse( str, 250 ) + end + + surface.SetDrawColor( 60, 60, 60, alpha ) + surface.SetTexture( self.SpeechBubbleLid ) + + surface.DrawTexturedRect( x, y - 64 - 5, 128, 64 ) + draw.RoundedBox( 8, x - 5, y - 6, 260, self.InfoMarkup:GetHeight() + 18, Color( 60, 60, 60, alpha ) ) + + self.InfoMarkup:Draw( x + 5, y + 5, nil, nil, alpha ) + +end + +--[[--------------------------------------------------------- + Name: SWEP:FreezeMovement() + Desc: Return true to freeze moving the view +-----------------------------------------------------------]] +function SWEP:FreezeMovement() + return false +end + +--[[--------------------------------------------------------- + Name: SWEP:ViewModelDrawn( viewModel ) + Desc: Called straight after the viewmodel has been drawn +-----------------------------------------------------------]] +function SWEP:ViewModelDrawn( vm ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function SWEP:OnRestore() +end + +--[[--------------------------------------------------------- + Name: CustomAmmoDisplay + Desc: Return a table +-----------------------------------------------------------]] +function SWEP:CustomAmmoDisplay() +end + +--[[--------------------------------------------------------- + Name: GetViewModelPosition + Desc: Allows you to re-position the view model +-----------------------------------------------------------]] +function SWEP:GetViewModelPosition( pos, ang ) + + return pos, ang + +end + +--[[--------------------------------------------------------- + Name: TranslateFOV + Desc: Allows the weapon to translate the player's FOV (clientside) +-----------------------------------------------------------]] +function SWEP:TranslateFOV( current_fov ) + + return current_fov + +end + +local WorldModel = ClientsideModel(SWEP.WorldModel) + +-- Settings... +WorldModel:SetNoDraw(true) + +--[[--------------------------------------------------------- + Name: DrawWorldModel + Desc: Draws the world model (not the viewmodel) +-----------------------------------------------------------]] +function SWEP:DrawWorldModel() + if ((IsValid(self.Owner) && self.Owner:LookupBone("ValveBiped.Bip01_R_Hand")) or !IsValid(self.Owner)) then + self:DrawModel() + elseif (self.Owner:LookupBone("weapon_bone")) then + local _Owner = self:GetOwner() + + if (IsValid(_Owner)) then + -- Specify a good position + WorldModel:SetModel(self.WorldModel) + + local boneid = _Owner:LookupBone("ValveBiped.Bip01_R_Hand") or _Owner:LookupBone("weapon_bone") -- Right Hand + if !boneid then return end + + local matrix = _Owner:GetBoneMatrix(boneid) + if !matrix then return end + + local offsetVec = Vector(0, -2, 0) + local offsetAng = Angle(170, 180, 0) + if (boneid == _Owner:LookupBone("weapon_bone")) then + local offsetVec = Vector(0, -2, 5) + if (string.find(self.WorldModel,"_pist")) then + offsetVec = Vector(0, -2, 5) + end + local offsetAng = Angle(-90, -90, 0) + local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles()) + + WorldModel:SetPos(newPos) + WorldModel:SetAngles(newAng) + + WorldModel:SetupBones() + + else + local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles()) + + WorldModel:SetPos(newPos) + WorldModel:SetAngles(newAng) + + WorldModel:SetupBones() + end + else + WorldModel:SetPos(self:GetPos()) + WorldModel:SetAngles(self:GetAngles()) + end + + WorldModel:DrawModel() + end + +end + +--[[--------------------------------------------------------- + Name: DrawWorldModelTranslucent + Desc: Draws the world model (not the viewmodel) +-----------------------------------------------------------]] +function SWEP:DrawWorldModelTranslucent() + + self:DrawModel() + +end + +--[[--------------------------------------------------------- + Name: AdjustMouseSensitivity + Desc: Allows you to adjust the mouse sensitivity. +-----------------------------------------------------------]] +function SWEP:AdjustMouseSensitivity() + + return nil + +end + +--[[--------------------------------------------------------- + Name: GetTracerOrigin + Desc: Allows you to override where the tracer comes from (in first person view) + returning anything but a vector indicates that you want the default action +-----------------------------------------------------------]] +function SWEP:GetTracerOrigin() + +--[[ + local ply = self:GetOwner() + local pos = ply:EyePos() + ply:EyeAngles():Right() * -5 + return pos +--]] + +end + +--[[--------------------------------------------------------- + Name: FireAnimationEvent + Desc: Allows you to override weapon animation events +-----------------------------------------------------------]] +function SWEP:FireAnimationEvent( pos, ang, event, options ) + + if ( !self.CSMuzzleFlashes ) then return end + + -- CS Muzzle flashes + if ( event == 5001 or event == 5011 or event == 5021 or event == 5031 ) then + + local data = EffectData() + data:SetFlags( 0 ) + data:SetEntity( self.Owner:GetViewModel() ) + data:SetAttachment( math.floor( ( event - 4991 ) / 10 ) ) + data:SetScale( 1 ) + + if ( self.CSMuzzleX ) then + util.Effect( "CS_MuzzleFlash_X", data ) + else + util.Effect( "CS_MuzzleFlash", data ) + end + + return true + end + +end diff --git a/gamemodes/tf/backgrounds/background01_widescreen.png b/gamemodes/tf/backgrounds/background01_widescreen.png new file mode 100644 index 000000000..0d13f7df9 Binary files /dev/null and b/gamemodes/tf/backgrounds/background01_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/background_2fort.png b/gamemodes/tf/backgrounds/background_2fort.png new file mode 100644 index 000000000..93fbe6628 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_2fort.png differ diff --git a/gamemodes/tf/backgrounds/background_gravelpit.png b/gamemodes/tf/backgrounds/background_gravelpit.png new file mode 100644 index 000000000..04ea1e8e3 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_gravelpit.png differ diff --git a/gamemodes/tf/backgrounds/background_mvm.png b/gamemodes/tf/backgrounds/background_mvm.png new file mode 100644 index 000000000..e68c8e1e2 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_mvm.png differ diff --git a/gamemodes/tf/backgrounds/background_tf.png b/gamemodes/tf/backgrounds/background_tf.png new file mode 100644 index 000000000..f1545165b Binary files /dev/null and b/gamemodes/tf/backgrounds/background_tf.png differ diff --git a/gamemodes/tf/backgrounds/background_upward.png b/gamemodes/tf/backgrounds/background_upward.png new file mode 100644 index 000000000..cbfa302a9 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_upward.png differ diff --git a/gamemodes/tf/backgrounds/background_xmas2011_widescreen.png b/gamemodes/tf/backgrounds/background_xmas2011_widescreen.png new file mode 100644 index 000000000..8ccf253e5 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_xmas2011_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/background_xmas2020_widescreen.png b/gamemodes/tf/backgrounds/background_xmas2020_widescreen.png new file mode 100644 index 000000000..9b4fe0492 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_xmas2020_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/background_xmas2023_widescreen.png b/gamemodes/tf/backgrounds/background_xmas2023_widescreen.png new file mode 100644 index 000000000..09e8697e7 Binary files /dev/null and b/gamemodes/tf/backgrounds/background_xmas2023_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/screenlg1.png b/gamemodes/tf/backgrounds/screenlg1.png new file mode 100644 index 000000000..3e032acae Binary files /dev/null and b/gamemodes/tf/backgrounds/screenlg1.png differ diff --git a/gamemodes/tf/backgrounds/screenlg9.png b/gamemodes/tf/backgrounds/screenlg9.png new file mode 100644 index 000000000..233655e13 Binary files /dev/null and b/gamemodes/tf/backgrounds/screenlg9.png differ diff --git a/gamemodes/tf/backgrounds/title_blue_widescreen.png b/gamemodes/tf/backgrounds/title_blue_widescreen.png new file mode 100644 index 000000000..3fc6ccc16 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_blue_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_red_widescreen.png b/gamemodes/tf/backgrounds/title_red_widescreen.png new file mode 100644 index 000000000..39b373804 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_red_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_halloween2011_widescreen.png b/gamemodes/tf/backgrounds/title_team_halloween2011_widescreen.png new file mode 100644 index 000000000..fa92fe30f Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_halloween2011_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_halloween2012_widescreen.png b/gamemodes/tf/backgrounds/title_team_halloween2012_widescreen.png new file mode 100644 index 000000000..bdac85c3b Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_halloween2012_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_halloween2013_widescreen.png b/gamemodes/tf/backgrounds/title_team_halloween2013_widescreen.png new file mode 100644 index 000000000..6da67d71d Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_halloween2013_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_halloween2014_widescreen.png b/gamemodes/tf/backgrounds/title_team_halloween2014_widescreen.png new file mode 100644 index 000000000..8094086f3 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_halloween2014_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_halloween2015_widescreen.png b/gamemodes/tf/backgrounds/title_team_halloween2015_widescreen.png new file mode 100644 index 000000000..31bb70434 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_halloween2015_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_halloween_widescreen.png b/gamemodes/tf/backgrounds/title_team_halloween_widescreen.png new file mode 100644 index 000000000..bc52bf168 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_halloween_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_heavy01_blu_widescreen.png b/gamemodes/tf/backgrounds/title_team_heavy01_blu_widescreen.png new file mode 100644 index 000000000..236f35122 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_heavy01_blu_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_heavy01_red_widescreen.png b/gamemodes/tf/backgrounds/title_team_heavy01_red_widescreen.png new file mode 100644 index 000000000..434d08371 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_heavy01_red_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_jungle_inferno_2017.png b/gamemodes/tf/backgrounds/title_team_jungle_inferno_2017.png new file mode 100644 index 000000000..d2627d994 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_jungle_inferno_2017.png differ diff --git a/gamemodes/tf/backgrounds/title_team_jungle_inferno_2017_widescreen.png b/gamemodes/tf/backgrounds/title_team_jungle_inferno_2017_widescreen.png new file mode 100644 index 000000000..b53e23049 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_jungle_inferno_2017_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_pyro01_blu_widescreen.png b/gamemodes/tf/backgrounds/title_team_pyro01_blu_widescreen.png new file mode 100644 index 000000000..95688d75a Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_pyro01_blu_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_pyro01_red_widescreen.png b/gamemodes/tf/backgrounds/title_team_pyro01_red_widescreen.png new file mode 100644 index 000000000..af8fa6bdc Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_pyro01_red_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_smissmas_2017_widescreen.png b/gamemodes/tf/backgrounds/title_team_smissmas_2017_widescreen.png new file mode 100644 index 000000000..bc0ed11a1 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_smissmas_2017_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_team_tough_break_widescreen.png b/gamemodes/tf/backgrounds/title_team_tough_break_widescreen.png new file mode 100644 index 000000000..cc38accc4 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_team_tough_break_widescreen.png differ diff --git a/gamemodes/tf/backgrounds/title_war_widescreen.png b/gamemodes/tf/backgrounds/title_war_widescreen.png new file mode 100644 index 000000000..297984b56 Binary files /dev/null and b/gamemodes/tf/backgrounds/title_war_widescreen.png differ diff --git a/addon/materials/advancedweaponiser/nailgun/c_nailgun.vtf b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/c_nailgun.vtf similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/c_nailgun.vtf rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/c_nailgun.vtf diff --git a/addon/materials/advancedweaponiser/nailgun/c_nailgun_normal.vtf b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/c_nailgun_normal.vtf similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/c_nailgun_normal.vtf rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/c_nailgun_normal.vtf diff --git a/addon/materials/advancedweaponiser/nailgun/c_nailgun_normal1.vtf b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/c_nailgun_normal1.vtf similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/c_nailgun_normal1.vtf rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/c_nailgun_normal1.vtf diff --git a/addon/materials/advancedweaponiser/nailgun/v_pistol.vmt b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/v_pistol.vmt similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/v_pistol.vmt rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/v_pistol.vmt diff --git a/addon/materials/advancedweaponiser/nailgun/v_pistol1.vmt b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/v_pistol1.vmt similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/v_pistol1.vmt rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/v_pistol1.vmt diff --git a/addon/materials/advancedweaponiser/nailgun/w_pistol.vmt b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/w_pistol.vmt similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/w_pistol.vmt rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/w_pistol.vmt diff --git a/addon/materials/advancedweaponiser/nailgun/w_pistol1.vmt b/gamemodes/tf/content/materials/advancedweaponiser/nailgun/w_pistol1.vmt similarity index 100% rename from addon/materials/advancedweaponiser/nailgun/w_pistol1.vmt rename to gamemodes/tf/content/materials/advancedweaponiser/nailgun/w_pistol1.vmt diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_afterburner/c_degreaser.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_afterburner/c_degreaser.vtf new file mode 100644 index 000000000..de51a13e7 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_afterburner/c_degreaser.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_afterburner/c_degreaser_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_afterburner/c_degreaser_large.vtf new file mode 100644 index 000000000..8bdaa7d5b Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_afterburner/c_degreaser_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vmt new file mode 100644 index 000000000..4de58c0cd --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vtf new file mode 100644 index 000000000..87c8c4ac1 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large.vmt new file mode 100644 index 000000000..dd10c195c --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large.vtf new file mode 100644 index 000000000..d696e9536 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vmt new file mode 100644 index 000000000..3b2766f81 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vtf new file mode 100644 index 000000000..cfe978ecb Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large.vmt new file mode 100644 index 000000000..9858b2bb0 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large.vtf new file mode 100644 index 000000000..c5fb4513b Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vmt new file mode 100644 index 000000000..078fd7a93 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vtf new file mode 100644 index 000000000..0d42f5c7d Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large.vmt new file mode 100644 index 000000000..041fa901c --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large.vtf new file mode 100644 index 000000000..a74fa5e39 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vmt new file mode 100644 index 000000000..6e2d434d4 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vtf new file mode 100644 index 000000000..da9a0ae50 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large.vmt new file mode 100644 index 000000000..01069f8ca --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large.vtf new file mode 100644 index 000000000..432c1c021 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vmt new file mode 100644 index 000000000..3bb257e65 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vtf new file mode 100644 index 000000000..acb4b2729 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large.vmt new file mode 100644 index 000000000..7bfd9243a --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large.vtf new file mode 100644 index 000000000..019e1601a Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv.vmt new file mode 100644 index 000000000..ddde803b1 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv.vtf new file mode 100644 index 000000000..6fb9ffde3 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large.vmt new file mode 100644 index 000000000..5d5a84ef3 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large.vtf new file mode 100644 index 000000000..20b36e37f Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_large.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun.vmt new file mode 100644 index 000000000..987b74977 --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun.vtf new file mode 100644 index 000000000..e20806f4c Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun.vtf differ diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large.vmt b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large.vmt new file mode 100644 index 000000000..13be10c9f --- /dev/null +++ b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large.vmt @@ -0,0 +1,6 @@ +"UnlitGeneric" +{ + "$baseTexture" "backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large" + $translucent 1 + $vertexcolor 1 +} diff --git a/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large.vtf b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large.vtf new file mode 100644 index 000000000..ef0112307 Binary files /dev/null and b/gamemodes/tf/content/materials/backpack/workshop/weapons/c_models/c_specialist_scattergun/c_specialist_scattergun_large.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high.vmt new file mode 100644 index 000000000..ab5a67be4 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high.vmt @@ -0,0 +1,30 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/saxton_belt_high" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_belt_high_normal" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + "$phong" "1" + "$phongexponent" "15" + "$phongboost" "4" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 1 8]" + "$phongtint" "[.5 .29 .17]" + + "$rimlight" "0" + "$rimlightexponent" "4" + "$rimlightboost" "2" + + "$envmap" "cubemaps/cubemap_gold001" + "$envmaptint" "[.025 .015 .007]" + "$basemapalphaphongmask" "0" + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high.vtf new file mode 100644 index 000000000..24aa9d5da Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high_normal.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high_normal.vtf new file mode 100644 index 000000000..f627e2741 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_belt_high_normal.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body.vmt new file mode 100644 index 000000000..ce7259b01 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body.vmt @@ -0,0 +1,26 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/saxton_body" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_body_normal" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_body_exp" + "$phongboost" "0.09" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 5 2]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body.vtf new file mode 100644 index 000000000..bdd1efd55 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body_exp.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body_exp.vtf new file mode 100644 index 000000000..59ef9b2dc Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body_exp.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body_normal.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body_normal.vtf new file mode 100644 index 000000000..c4d14ca27 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_body_normal.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist.vmt new file mode 100644 index 000000000..4a7ea3cf5 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist.vmt @@ -0,0 +1,31 @@ +"VertexLitGeneric" +{ + "$basetexture" "models/player/vsh_saxton_hale/saxton_fist" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_fist_normal" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_fist_exp" + //"$phongexponent" "20" + //"$phongtint" "[0.8 0.5 0.2]" + "$phongboost" "0.09" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 5 2]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "Proxies" + { + "spy_invis" //wmodel and team color cloak support + { + } + "invis" //vmodel cloak support + { + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist.vtf new file mode 100644 index 000000000..d0c3b3138 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_chargedash.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_chargedash.vmt new file mode 100644 index 000000000..4c26a73c4 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_chargedash.vmt @@ -0,0 +1,20 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_fist.vmt" + + insert + { + "$detail" "models/player/vsh_saxton_hale/saxton_fist_chargedash" + "$detailscale" "1" + "$detailblendfactor" "0.10" + "$detailblendmode" "6" + + "$EmissiveBlendEnabled" "1" + "$EmissiveBlendStrength" "1" + "$EmissiveBlendTexture" "vgui/white" + "$EmissiveBlendBaseTexture" "models/player/vsh_saxton_hale/saxton_fist_chargedash" + "$EmissiveBlendFlowTexture" "vgui/white" + "$EmissiveBlendTint" "[0 0.75 1]" + "$EmissiveBlendScrollVector" "[0 0]" + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_chargedash.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_chargedash.vtf new file mode 100644 index 000000000..f9b543920 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_chargedash.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_exp.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_exp.vtf new file mode 100644 index 000000000..cdb0c1aa4 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_exp.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_megapunch.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_megapunch.vmt new file mode 100644 index 000000000..c4bca7388 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_megapunch.vmt @@ -0,0 +1,20 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_fist.vmt" + + insert + { + "$detail" "models/player/vsh_saxton_hale/saxton_fist_megapunch" + "$detailscale" "1" + "$detailblendfactor" "1" + "$detailblendmode" "6" + + "$EmissiveBlendEnabled" "1" + "$EmissiveBlendStrength" "1" + "$EmissiveBlendTexture" "vgui/white" + "$EmissiveBlendBaseTexture" "models/player/vsh_saxton_hale/saxton_fist_megapunch" + "$EmissiveBlendFlowTexture" "vgui/white" + "$EmissiveBlendTint" "[1 0 0]" + "$EmissiveBlendScrollVector" "[0 0]" + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_megapunch.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_megapunch.vtf new file mode 100644 index 000000000..54920751f Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_megapunch.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_normal.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_normal.vtf new file mode 100644 index 000000000..a30d8367c Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_fist_normal.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_hat_color.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_hat_color.vmt new file mode 100644 index 000000000..597e5a36a --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_hat_color.vmt @@ -0,0 +1,26 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/saxton_hat_color" + "$basemapalphaphongmask" "1" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + "$phong" "1" + "$phongexponent" "20" + "$phongboost" ".3" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 1 8]" + "$halflambert" "0" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_hat_color.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_hat_color.vtf new file mode 100644 index 000000000..19edb568a Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_hat_color.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head.vmt new file mode 100644 index 000000000..68eea8108 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head.vmt @@ -0,0 +1,28 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/saxton_head" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_head_normal" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + //"$basemapalphaphongmask" "0" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_head_exponent" + "$phongboost" "0" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 1 8]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head.vtf new file mode 100644 index 000000000..682854f0d Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head_exponent.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head_exponent.vtf new file mode 100644 index 000000000..ffeec1d2b Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head_exponent.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head_normal.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head_normal.vtf new file mode 100644 index 000000000..2bbe4e71f Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_head_normal.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm.vmt new file mode 100644 index 000000000..02376933d --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm.vmt @@ -0,0 +1,27 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/saxton_body" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_body_normal" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_body_exp" + "$phongboost" "0.09" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 5 2]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + } +} + diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm_megapunch.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm_megapunch.vmt new file mode 100644 index 000000000..a7f9d5717 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm_megapunch.vmt @@ -0,0 +1,80 @@ +"VertexLitGeneric" +{ + "$basetexture" "models/player/vsh_saxton_hale/saxton_body" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_body_normal" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_body_exp" + "$phongboost" "0.09" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 5 2]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + + "$detail" "models/player/vsh_saxton_hale/saxton_ltarm_megapunch" + "$detailscale" "1" + "$detailblendfactor" "1" + "$detailblendmode" "6" + + "$EmissiveBlendEnabled" "1" + "$EmissiveBlendStrength" "1" + "$EmissiveBlendTexture" "vgui/white" + "$EmissiveBlendBaseTexture" "models/player/vsh_saxton_hale/saxton_ltarm_megapunch" + "$EmissiveBlendFlowTexture" "vgui/white" + "$EmissiveBlendTint" "[1 0 0]" + "$EmissiveBlendScrollVector" "[0 0]" + + "$halflambert" "0" + "$ambientocclusion" "0.75" + + //"$yellow" "0" + //"$one" "1" + + "$cloakPassEnabled" "1" + + "Proxies" + { + "spy_invis" //wmodel and team color cloak support + { + } + "invis" //vmodel cloak support + { + } + //"AnimatedTexture" + //{ + // "animatedtexturevar" "$detail" + // "animatedtextureframenumvar" "$detailframe" + // "animatedtextureframerate" 30 + //} + //"BurnLevel" + //{ + // "resultVar" "$detailblendfactor" + //} + //"YellowLevel" + //{ + // "resultVar" "$yellow" + //} + //"Equals" + //{ + // "srcVar1" "$yellow" + // "resultVar" "$color2" + //} + //"Sine" + //{ + // "resultVar" "$EmissiveBlendTint[0]" + // "sineperiod" "0.5" + // "sinemin" "0.8" + // "sinemax" "1.2" + //} + //"Sine" + //{ + // "resultVar" "$sheenmaptint[0]" + // "sineperiod" "0.5" + // "sinemin" "15.8" + // "sinemax" "16.2" + //} + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm_megapunch.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm_megapunch.vtf new file mode 100644 index 000000000..07360a309 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_ltarm_megapunch.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm.vmt new file mode 100644 index 000000000..02376933d --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm.vmt @@ -0,0 +1,27 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/saxton_body" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_body_normal" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_body_exp" + "$phongboost" "0.09" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 5 2]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + } +} + diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm_chargedash.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm_chargedash.vmt new file mode 100644 index 000000000..9cf22e7c5 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm_chargedash.vmt @@ -0,0 +1,80 @@ +"VertexLitGeneric" +{ + "$basetexture" "models/player/vsh_saxton_hale/saxton_body" + "$bumpmap" "models/player/vsh_saxton_hale/saxton_body_normal" + + "$phong" "1" + "$phongexponenttexture" "models/player/vsh_saxton_hale/saxton_body_exp" + "$phongboost" "0.09" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 5 2]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + "$rimmask" "1" + + "$detail" "models/player/vsh_saxton_hale/saxton_rtarm_chargedash" + "$detailscale" "1" + "$detailblendfactor" "0.10" + "$detailblendmode" "6" + + "$EmissiveBlendEnabled" "1" + "$EmissiveBlendStrength" "1" + "$EmissiveBlendTexture" "vgui/white" + "$EmissiveBlendBaseTexture" "models/player/vsh_saxton_hale/saxton_rtarm_chargedash" + "$EmissiveBlendFlowTexture" "vgui/white" + "$EmissiveBlendTint" "[0 0.75 1]" + "$EmissiveBlendScrollVector" "[0 0]" + + "$halflambert" "0" + "$ambientocclusion" "0.75" + + //"$yellow" "0" + //"$one" "1" + + "$cloakPassEnabled" "1" + + "Proxies" + { + "spy_invis" //wmodel and team color cloak support + { + } + "invis" //vmodel cloak support + { + } + //"AnimatedTexture" + //{ + // "animatedtexturevar" "$detail" + // "animatedtextureframenumvar" "$detailframe" + // "animatedtextureframerate" 30 + //} + //"BurnLevel" + //{ + // "resultVar" "$detailblendfactor" + //} + //"YellowLevel" + //{ + // "resultVar" "$yellow" + //} + //"Equals" + //{ + // "srcVar1" "$yellow" + // "resultVar" "$color2" + //} + //"Sine" + //{ + // "resultVar" "$EmissiveBlendTint[0]" + // "sineperiod" "0.5" + // "sinemin" "0.8" + // "sinemax" "1.2" + //} + //"Sine" + //{ + // "resultVar" "$sheenmaptint[0]" + // "sineperiod" "0.5" + // "sinemin" "15.8" + // "sinemax" "16.2" + //} + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm_chargedash.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm_chargedash.vtf new file mode 100644 index 000000000..6aaf3d738 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_rtarm_chargedash.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_shared.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_shared.vmt new file mode 100644 index 000000000..4079a7979 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/saxton_shared.vmt @@ -0,0 +1,39 @@ +"VertexLitGeneric" +{ + "$halflambert" "0" + "$ambientocclusion" "0.75" + + //"$yellow" "0" + //"$one" "1" + + "$cloakPassEnabled" "1" + + "Proxies" + { + "spy_invis" //wmodel and team color cloak support + { + } + "invis" //vmodel cloak support + { + } + //"AnimatedTexture" + //{ + // "animatedtexturevar" "$detail" + // "animatedtextureframenumvar" "$detailframe" + // "animatedtextureframerate" 30 + //} + //"BurnLevel" + //{ + // "resultVar" "$detailblendfactor" + //} + //"YellowLevel" + //{ + // "resultVar" "$yellow" + //} + //"Equals" + //{ + // "srcVar1" "$yellow" + // "resultVar" "$color2" + //} + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye-extra.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye-extra.vtf new file mode 100644 index 000000000..a9e0a22e0 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye-extra.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye-saxxy.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye-saxxy.vtf new file mode 100644 index 000000000..eeb383ed8 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye-saxxy.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye.vtf new file mode 100644 index 000000000..01f1cf82e Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eye.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_l.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_l.vmt new file mode 100644 index 000000000..ffa571bc1 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_l.vmt @@ -0,0 +1,40 @@ +"EyeRefract" +{ + "$Iris" "models/player/vsh_saxton_hale/shades/eye" + "$ambientoccltexture" "models/player/vsh_saxton_hale/shades/eye-extra" + "$envmap" "models/player/shared/eye-reflection-cubemap-" + "$corneatexture" "models/player/shared/eye-cornea" + "$lightwarptexture" "models/player/shared/eye_lightwarp" + + "$eyeballradius" "0.9" + "$ambientocclcolor" "[0.23 0.23 0.23]" + "$dilation" "0.5" + "$parallaxstrength" "0.25" + "$corneabumpstrength" "1.0" + + "$halflambert" "1" + "$nodecal" "1" + + "$raytracesphere" "0" + "$spheretexkillcombo" "0" + + "Eyes_dx8" + { + "$basetexture" "models/player/shared/dxlevel80/eyeball_l" + "$iris" "models/player/shared/dxlevel80/iris_blue_l" + } + + "$cloakPassEnabled" "1" + + "Proxies" + { + "spy_invis" + { + } + "invis" //vmodel cloak support + { + } + } + + // "$ambientocclusion" "1" +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_r.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_r.vmt new file mode 100644 index 000000000..0c898521f --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_r.vmt @@ -0,0 +1,40 @@ +"EyeRefract" +{ + "$Iris" "models/player/vsh_saxton_hale/shades/eye" + "$ambientoccltexture" "models/player/vsh_saxton_hale/shades/eye-extra" + "$envmap" "models/player/shared/eye-reflection-cubemap-" + "$corneatexture" "models/player/shared/eye-cornea" + "$lightwarptexture" "models/player/shared/eye_lightwarp" + + "$eyeballradius" "0.9" + "$ambientocclcolor" "[0.23 0.23 0.23]" + "$dilation" "0.5" + "$parallaxstrength" "0.25" + "$corneabumpstrength" "1.0" + + "$halflambert" "1" + "$nodecal" "1" + + "$raytracesphere" "0" + "$spheretexkillcombo" "0" + + "Eyes_dx8" + { + "$basetexture" "models/player/shared/dxlevel80/eyeball_r" + "$iris" "models/player/shared/dxlevel80/iris_blue_r" + } + + "$cloakPassEnabled" "1" + + "Proxies" + { + "spy_invis" + { + } + "invis" //vmodel cloak support + { + } + } + + // "$ambientocclusion" "1" +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_saxxy.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_saxxy.vmt new file mode 100644 index 000000000..567926688 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/eyeball_saxxy.vmt @@ -0,0 +1,23 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/shades/eye-saxxy" + + "$phong" "1" + "$phongexponent" "25" + "$phongboost" "1.5" + "$lightwarptexture" "models/player/pyro/pyro_lightwarp" + "$phongfresnelranges" "[.3 1 8]" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + + "$envmap" "cubemaps/cubemap_gold001" + "$envmaptint" "[.5 .475 .15]" + "$normalmapalphaenvmapmask" "0" + } +} diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/inv.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/inv.vmt new file mode 100644 index 000000000..f92bf0280 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/inv.vmt @@ -0,0 +1,10 @@ +"VertexLitGeneric" +{ + "$basetexture" "models/player/vsh_saxton_hale/shades/inv" + "$translucent" "1" + "$nocull" "1" + "$ambientocclusion" "0" +} + + + diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/inv.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/inv.vtf new file mode 100644 index 000000000..7cc20f6b1 Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/shades/inv.vtf differ diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/tongue.vmt b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/tongue.vmt new file mode 100644 index 000000000..4975e8f92 --- /dev/null +++ b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/tongue.vmt @@ -0,0 +1,30 @@ +patch +{ + include "materials/models/player/vsh_saxton_hale/saxton_shared.vmt" + + insert + { + "$basetexture" "models/player/vsh_saxton_hale/tongue" + "$bumpmap" "models/player/shared/shared_normal" + "$basemapalphaphongmask" "1" + + //"$detail" "effects/tiledfire/fireLayeredSlowTiled512.vtf" + //"$detailscale" "5" + //"$detailblendfactor" "0.0" + //"$detailblendmode" "6" + + "$phong" "1" + //"$phongexponenttexture" "models/player/shared/tongue_exponent" + //"$phongexponent" "25" + //"$phongboost" "2" + //"$lightwarptexture" "models/player/pyro/pyro_lightwarp" + //"$phongfresnelranges" "[.3 1 8]" + + //"$rimlight" "1" + //"$rimlightexponent" "4" + //"$rimlightboost" "2" + + "$ambientocclusion" "1" + } +} + diff --git a/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/tongue.vtf b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/tongue.vtf new file mode 100644 index 000000000..7671ad53f Binary files /dev/null and b/gamemodes/tf/content/materials/models/player/vsh_saxton_hale/tongue.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vmt new file mode 100644 index 000000000..87847d9d6 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vmt @@ -0,0 +1,77 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_assault_minigun/c_assault_minigun" + + "$phong" "1" + "$phongexponent" "15" + "$phongboost" "1" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[1.5 .5 3]" + "$halflambert" "1" + "$basemapalphaphongmask" "1" + + "$tempvar" "0" + + "$basephongexponent" "20" + "$basephongboost" "1" + + "$commadd_phongexponent" "30" + "$commadd_phongboost" "22.5" + "$commweapon" "0" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".25" + + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} + diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vtf new file mode 100644 index 000000000..b7e4100df Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_assault_minigun/c_assault_minigun.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vmt new file mode 100644 index 000000000..05855b839 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vmt @@ -0,0 +1,41 @@ +"VertexLitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_mini_dispenser_pda/c_mini_dispenser_pda" + + "$phong" "1" + "$phongexponent" "50" + "$phongboost" "4" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[0.25 0.5 1]" + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + + "$glowcolor" "1" + +// Cloaking + "$cloakPassEnabled" "1" + "Proxies" + { + "weapon_invis" + { + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$selfillumtint" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + } +} + diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vtf new file mode 100644 index 000000000..94cf8015f Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_blue.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_blue.vmt new file mode 100644 index 000000000..5d7f4304e --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_blue.vmt @@ -0,0 +1,21 @@ +"UnlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_mini_dispenser_pda/c_mini_dispenser_pda_blue" + "$surfaceprop" "default" + "$selfillum" 1 + "$color" "[1 .3 0]" + + "$phong" "1" + "$phongboost" "1" + "$phongexponent" "20" + "$phongfresnelranges" "[.5 1 2]" + "Proxies" + { + "AnimatedTexture" + { + "animatedtexturevar" "$basetexture" + "animatedtextureframenumvar" "$frame" + "animatedtextureframerate" 30 + } + } +} diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_blue.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_blue.vtf new file mode 100644 index 000000000..5ee0c5e1a Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_blue.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_glass.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_glass.vmt new file mode 100644 index 000000000..ee579b32c --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_glass.vmt @@ -0,0 +1,39 @@ +"VertexLitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_mini_dispenser_pda/c_mini_dispenser_pda" + "$translucent" 1 + + "$envmap" "env_cubemap" + "$envmaptint" "[.05 .05 .2]" + + "$phong" "1" + "$phongexponent" "50" + "$phongboost" "5" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[25 .5 1]" + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + "Proxies" + { + "weapon_invis" + { + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$selfillumtint" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + } +} + diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_red.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_red.vmt new file mode 100644 index 000000000..f72d17b14 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_red.vmt @@ -0,0 +1,21 @@ +"UnlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_mini_dispenser_pda/c_mini_dispenser_pda_red" + "$surfaceprop" "default" + "$selfillum" 1 + "$color" "[1 .3 0]" + + "$phong" "1" + "$phongboost" "1" + "$phongexponent" "20" + "$phongfresnelranges" "[.5 1 2]" + "Proxies" + { + "AnimatedTexture" + { + "animatedtexturevar" "$basetexture" + "animatedtextureframenumvar" "$frame" + "animatedtextureframerate" 30 + } + } +} diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_red.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_red.vtf new file mode 100644 index 000000000..f57c92890 Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_mini_dispenser_pda/c_mini_dispenser_pda_red.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vmt new file mode 100644 index 000000000..70ac727d3 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vmt @@ -0,0 +1,67 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_pilot_flamer/c_pilot_flamer" + + "$phong" "1" + "$phongexponent" "6" + "$phongboost" "0.8" + + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + + "$phongfresnelranges" "[1.5 .5 3]" + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "1" + + "$glowcolor" "1" + + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vtf new file mode 100644 index 000000000..08afc9a06 Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flamer/c_pilot_flamer.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flare.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flare.vmt new file mode 100644 index 000000000..b3d388040 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flare.vmt @@ -0,0 +1,67 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_pilot_flaregun/c_pilot_flare" + + "$phong" "1" + "$phongexponent" "15" + "$phongboost" "4" + + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + + "$phongfresnelranges" "[0.25 0.5 1]" + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "4" + "$rimlightboost" "2" + + "$glowcolor" "1" + + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flare.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flare.vtf new file mode 100644 index 000000000..c646ac6b9 Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flare.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vmt new file mode 100644 index 000000000..1536fc35c --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vmt @@ -0,0 +1,67 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_pilot_flaregun/c_pilot_flaregun" + + "$phong" "1" + "$phongexponent" "25" + "$phongboost" "0.7" + + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + + "$phongfresnelranges" "[.5 5 10]" + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "3" + "$rimlightboost" "2" + + "$glowcolor" "1" + + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vtf new file mode 100644 index 000000000..f58bf3de8 Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pilot_flaregun/c_pilot_flaregun.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vmt new file mode 100644 index 000000000..21cc83b8e --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vmt @@ -0,0 +1,75 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_pistol_knife/c_pistol_knife" + "$basemapalphaphongmask" "1" + + "$phong" "1" + "$phongexponent" "6" + "$phongboost" "2" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[.25 2 1]" + + "$tempvar" "0" + + "$basephongexponent" "15" + "$basephongboost" "5" + + "$commadd_phongexponent" "40" + "$commadd_phongboost" "22.5" + "$commweapon" "0" + + "$glowcolor" "1" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".125" // Boost for ambient cube component of rim lighting + + // Cloaking + "$cloakPassEnabled" "1" + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$selfillumtint" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vtf new file mode 100644 index 000000000..309aa6f3b Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_pistol_knife/c_pistol_knife.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_blue.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_blue.vmt new file mode 100644 index 000000000..736c5b747 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_blue.vmt @@ -0,0 +1,68 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_sniperrifle_tv/c_sniperrifle_tv_blue" + + "$phong" "1" + "$phongexponent" "15" + "$phongboost" "1" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[.5 .5 1.5]" + "$halflambert" "1" + + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".125" + + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_blue.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_blue.vtf new file mode 100644 index 000000000..df587b2e7 Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_blue.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_coil.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_coil.vmt new file mode 100644 index 000000000..26e3235af --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_coil.vmt @@ -0,0 +1,77 @@ +"VertexLitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_sniperrifle_tv/c_sniperrifle_tv_red" + + "$envmap" "cubemaps/cubemap_gold001" + "$envmaptint" "[.5 .2 .1]" + + + "$phongtint" "[1 0.8 0.2]" + "$phong" "1" + "$phongexponent" "20" + "$phongboost" "10" + "$lightwarptexture" "models\weapons\c_items/c_pocket_watch_lightwarp" + + "$phongfresnelranges" "[1.5 1.5 3]" + "$halflambert" "1" + + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".5" + + "360?$color2" "[ 0.9 0.8 0.8 ]" + + + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "0" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_glass.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_glass.vmt new file mode 100644 index 000000000..7ab361cc9 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_glass.vmt @@ -0,0 +1,71 @@ +"VertexLitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_sniperrifle_tv/c_sniperrifle_tv_red" + "$bumpmap" "models/weapons/c_items/c_urinejar_glass_phongmask" + "$additive" 1 + + "$envmap" "env_cubemap" + "$envmaptint" "[.3 .2 .2]" + + "$phong" "1" + "$phongexponent" "35" + "$phongfresnelranges" "[1 2 4]" + "$lightwarptexture" "models/lightwarps/jarate_lightwarp" + "$phongboost" "10" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" "2" + + "$glowcolor" "1" + + "$model" "1" + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "0" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_light_blue.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_light_blue.vmt new file mode 100644 index 000000000..f40df0826 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_light_blue.vmt @@ -0,0 +1,71 @@ +"VertexLitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_sniperrifle_tv/c_sniperrifle_tv_blue" + + "$phong" "1" + "$phongexponent" "25" + "$phongboost" "0" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[1.5 1.5 3]" + "$selfillum" "1" + + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".125" + + "360?$color2" "[ 0.9 0.8 0.8 ]" + + + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "0" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_light_red.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_light_red.vmt new file mode 100644 index 000000000..cb12fa216 --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_light_red.vmt @@ -0,0 +1,71 @@ +"VertexLitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_sniperrifle_tv/c_sniperrifle_tv_red" + + "$phong" "1" + "$phongexponent" "25" + "$phongboost" "0" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[1.5 1.5 3]" + "$selfillum" "1" + + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".125" + + "360?$color2" "[ 0.9 0.8 0.8 ]" + + + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "0" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} \ No newline at end of file diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_red.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_red.vmt new file mode 100644 index 000000000..78173c9bf --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_red.vmt @@ -0,0 +1,68 @@ +"VertexlitGeneric" +{ + "$baseTexture" "models\workshop\weapons\c_models\c_sniperrifle_tv/c_sniperrifle_tv_red" + + "$phong" "1" + "$phongexponent" "15" + "$phongboost" "1" + "$lightwarptexture" "models\lightwarps\weapon_lightwarp" + "$phongfresnelranges" "[.5 .5 1.5]" + "$halflambert" "1" + + "$basemapalphaphongmask" "1" + + "$rimlight" "1" + "$rimlightexponent" "20" + "$rimlightboost" ".125" + + "$glowcolor" "1" + + // Cloaking + "$cloakPassEnabled" "1" + + "$sheenPassEnabled" "1" + + "$sheenmap" "cubemaps\cubemap_sheen001" + "$sheenmapmask" "Effects\AnimatedSheen\animatedsheen0" + "$sheenmaptint" "[ 1 1 1 ]" + "$sheenmapmaskframe" "0" + "$sheenindex" "0" + + "$yellow" "0" + + "Proxies" + { + "AnimatedWeaponSheen" + { + "animatedtexturevar" "$sheenmapmask" + "animatedtextureframenumvar" "$sheenmapmaskframe" + "animatedtextureframerate" "40" + } + "invis" + { + } + "BurnLevel" + { + "resultVar" "$detailblendfactor" + } + "ModelGlowColor" + { + "resultVar" "$glowcolor" + } + "Equals" + { + "srcVar1" "$glowcolor" + "resultVar" "$color2" + } + "YellowLevel" + { + "resultVar" "$yellow" + } + "Multiply" + { + "srcVar1" "$color2" + "srcVar2" "$yellow" + "resultVar" "$color2" + } + } +} diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_red.vtf b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_red.vtf new file mode 100644 index 000000000..838fa69b7 Binary files /dev/null and b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_red.vtf differ diff --git a/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_refract.vmt b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_refract.vmt new file mode 100644 index 000000000..c93d30f8f --- /dev/null +++ b/gamemodes/tf/content/materials/models/workshop/weapons/c_models/c_sniperrifle_tv/c_sniperrifle_tv_refract.vmt @@ -0,0 +1,14 @@ +"Refract" +{ + self.NextPhysFreeze then + if self.PhysObj and self.PhysObj:IsValid(self.WModel2) then + self.PhysObj:EnableMotion(false) + end + self.NextPhysFreeze = nil + end + + if self.NextDeath then + local diff = self.NextDeath - CurTime() + + if diff0 + elseif IsValid(self.Parent) then + local _,_,_,a = self.Parent:GetColor() + self:SetColor(Color(255,255,255,a)) + + return true + else + return false + end +end + +function EFFECT:Render() + if self.Parent==LocalPlayer() then + if not LocalPlayer():ShouldDrawLocalPlayer() then + return + end + end + + if not self.NoAttach and IsValid(self.Parent) then + local pos, ang = self.Parent:GetBonePosition(self.Bone) + pos = pos + + self.RelativePosition.x * ang:Forward() + + self.RelativePosition.y * ang:Right() + + self.RelativePosition.z * ang:Up() + local dir = + self.RelativeDirection.x * ang:Forward() + + self.RelativeDirection.y * ang:Right() + + self.RelativeDirection.z * ang:Up() + ang = dir:Angle() + + self:SetPos(pos) + self:SetAngles(ang) + end + + self:DrawModel() +end diff --git a/gamemodes/tf/entities/effects/tf_arrow_stuck_heal/init.lua b/gamemodes/tf/entities/effects/tf_arrow_stuck_heal/init.lua new file mode 100644 index 000000000..a9c91eb48 --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_arrow_stuck_heal/init.lua @@ -0,0 +1,123 @@ + +EFFECT.LifeTime = 10 +EFFECT.FadeTime = 2 + +EFFECT.Model = "models/weapons/w_models/w_syringe_proj.mdl" + +function EFFECT:Init(data) + local ent, pos, ang, physbone = data:GetEntity(), data:GetOrigin(), data:GetAngles(), data:GetAttachment() + + + self:SetModel(self.Model) + self:SetModelScale(2) + self:SetPos(pos) + self:SetAngles(ang) + + if IsValid(ent) then + local bone = ent:TranslatePhysBoneToBone(physbone) + local bonepos, boneang = ent:GetBonePosition(bone) + if bonepos and boneang then + self.Parent = ent + if IsValid(ent.DeathRagdoll) then self.Parent = ent.DeathRagdoll end + self.Bone = bone + + local dir, normal = ang:Forward(), ang:Up() + local X, Y, Z = boneang:Forward(), boneang:Right(), boneang:Up() + + if self.Parent:GetClass()=="class C_HL2MPRagdoll" or self.Parent:GetClass()=="class C_ClientRagdoll" or self.Parent:GetClass()=="prop_ragdoll" then + local phys = self.Parent:GetPhysicsObjectNum(physbone) + if IsValid(phys) then + local tr = util.TraceLine{ + start = pos, + endpos = pos + dir * 80, + mask = MASK_SOLID_BRUSHONLY, + } + if tr.Hit and not tr.HitSky then + -- Pin the ragdoll + + pos = tr.HitPos - dir * 5 + + if self.Parent:GetClass() ~= "prop_ragdoll" then + self.PhysObj = phys + self.NextPhysFreeze = CurTime() + 0.05 + EndDeathPose(self.Parent) + phys:SetPos(pos) + end + + pos = pos + dir * 8 + self:SetPos(pos) + + self.NoAttach = true + return + end + end + end + + local diff = pos - bonepos + + self.RelativePosition = Vector(diff:Dot(X),diff:Dot(Y),diff:Dot(Z))*0.5 + self.RelativeDirection = Vector(dir:Dot(X),dir:Dot(Y),dir:Dot(Z)) + self.RelativeNormal = Vector(normal:Dot(X),normal:Dot(Y),normal:Dot(Z)) + + if not self.Parent.StuckArrows then self.Parent.StuckArrows = {} end + self.Parent.StuckArrows[self] = true + end + + self:SetParent(ent) + else + self.NextDeath = CurTime() + self.LifeTime + end +end + +function EFFECT:Think() + if self.NextPhysFreeze and CurTime() > self.NextPhysFreeze then + if self.PhysObj and self.PhysObj:IsValid(self.WModel2) then + self.PhysObj:EnableMotion(false) + end + self.NextPhysFreeze = nil + end + + if self.NextDeath then + local diff = self.NextDeath - CurTime() + + if diff0 + elseif IsValid(self.Parent) then + local _,_,_,a = self.Parent:GetColor() + self:SetColor(Color(255,255,255,a)) + + return true + else + return false + end +end + +function EFFECT:Render() + if self.Parent==LocalPlayer() then + if not LocalPlayer():ShouldDrawLocalPlayer() then + return + end + end + + if not self.NoAttach and IsValid(self.Parent) then + local pos, ang = self.Parent:GetBonePosition(self.Bone) + pos = pos + + self.RelativePosition.x * ang:Forward() + + self.RelativePosition.y * ang:Right() + + self.RelativePosition.z * ang:Up() + local dir = + self.RelativeDirection.x * ang:Forward() + + self.RelativeDirection.y * ang:Right() + + self.RelativeDirection.z * ang:Up() + ang = dir:Angle() + + self:SetPos(pos) + self:SetAngles(ang) + end + + self:DrawModel() +end diff --git a/gamemodes/tf/entities/effects/tf_arrow_stuck_rescue_building/init.lua b/gamemodes/tf/entities/effects/tf_arrow_stuck_rescue_building/init.lua new file mode 100644 index 000000000..8f0aff88b --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_arrow_stuck_rescue_building/init.lua @@ -0,0 +1,122 @@ + +EFFECT.LifeTime = 10 +EFFECT.FadeTime = 2 + +EFFECT.Model = "models/weapons/w_models/w_repair_claw.mdl" + +function EFFECT:Init(data) + local ent, pos, ang, physbone = data:GetEntity(), data:GetOrigin(), data:GetAngles(), data:GetAttachment() + + + self:SetModel(self.Model) + self:SetPos(pos) + self:SetAngles(ang) + + if IsValid(ent) then + local bone = ent:TranslatePhysBoneToBone(physbone) + local bonepos, boneang = ent:GetBonePosition(bone) + if bonepos and boneang then + self.Parent = ent + if IsValid(ent.DeathRagdoll) then self.Parent = ent.DeathRagdoll end + self.Bone = bone + + local dir, normal = ang:Forward(), ang:Up() + local X, Y, Z = boneang:Forward(), boneang:Right(), boneang:Up() + + if self.Parent:GetClass()=="class C_HL2MPRagdoll" or self.Parent:GetClass()=="class C_ClientRagdoll" or self.Parent:GetClass()=="prop_ragdoll" then + local phys = self.Parent:GetPhysicsObjectNum(physbone) + if IsValid(phys) then + local tr = util.TraceLine{ + start = pos, + endpos = pos + dir * 80, + mask = MASK_SOLID_BRUSHONLY, + } + if tr.Hit and not tr.HitSky then + -- Pin the ragdoll + + pos = tr.HitPos - dir * 5 + + if self.Parent:GetClass() ~= "prop_ragdoll" then + self.PhysObj = phys + self.NextPhysFreeze = CurTime() + 0.05 + EndDeathPose(self.Parent) + phys:SetPos(pos) + end + + pos = pos + dir * 8 + self:SetPos(pos) + + self.NoAttach = true + return + end + end + end + + local diff = pos - bonepos + + self.RelativePosition = Vector(diff:Dot(X),diff:Dot(Y),diff:Dot(Z))*0.5 + self.RelativeDirection = Vector(dir:Dot(X),dir:Dot(Y),dir:Dot(Z)) + self.RelativeNormal = Vector(normal:Dot(X),normal:Dot(Y),normal:Dot(Z)) + + if not self.Parent.StuckArrows then self.Parent.StuckArrows = {} end + self.Parent.StuckArrows[self] = true + end + + self:SetParent(ent) + else + self.NextDeath = CurTime() + self.LifeTime + end +end + +function EFFECT:Think() + if self.NextPhysFreeze and CurTime() > self.NextPhysFreeze then + if self.PhysObj and self.PhysObj:IsValid(self.WModel2) then + self.PhysObj:EnableMotion(false) + end + self.NextPhysFreeze = nil + end + + if self.NextDeath then + local diff = self.NextDeath - CurTime() + + if diff0 + elseif IsValid(self.Parent) then + local _,_,_,a = self.Parent:GetColor() + self:SetColor(Color(255,255,255,a)) + + return true + else + return false + end +end + +function EFFECT:Render() + if self.Parent==LocalPlayer() then + if not LocalPlayer():ShouldDrawLocalPlayer() then + return + end + end + + if not self.NoAttach and IsValid(self.Parent) then + local pos, ang = self.Parent:GetBonePosition(self.Bone) + pos = pos + + self.RelativePosition.x * ang:Forward() + + self.RelativePosition.y * ang:Right() + + self.RelativePosition.z * ang:Up() + local dir = + self.RelativeDirection.x * ang:Forward() + + self.RelativeDirection.y * ang:Right() + + self.RelativeDirection.z * ang:Up() + ang = dir:Angle() + + self:SetPos(pos) + self:SetAngles(ang) + end + + self:DrawModel() +end diff --git a/gamemodes/tf/entities/effects/tf_dispenser_screen/init.lua b/gamemodes/tf/entities/effects/tf_dispenser_screen/init.lua new file mode 100644 index 000000000..ffa6227d8 --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_dispenser_screen/init.lua @@ -0,0 +1,97 @@ + +function EFFECT:Init(data) + if IsValid(data:GetEntity()) and data:GetEntity():GetClass()=="obj_dispenser" then + self.Dispenser = data:GetEntity() + self:SetPos(self.Dispenser:GetPos()) + self:SetRenderBounds(self.Dispenser:GetRenderBounds()) + end +end + +function EFFECT:Think() + if not IsValid(self.Dispenser) then + return false + end + return true +end + +local ScreenTexture = { + [0]=surface.GetTextureID("vgui/dispenser_meter_bg_red"), + [1]=surface.GetTextureID("vgui/dispenser_meter_bg_blue"), +} +local ArrowTexture = surface.GetTextureID("vgui/dispenser_meter_arrow") +local Offset = Vector(-0.4, 0, -0.7) +local Scale = 0.082 +local DialSpeed = 1 +local AngleStart = 86 +local AngleEnd = -90 +local MaxMetal = 400 + +local function RotatedRect(x, y, w, h, ox, oy, a) + local dx, dy = 10*(w*ox-w/2), 10*(h*oy-h/2) + local s, c = math.sin(math.rad(a)), math.cos(math.rad(a)) + local ex, ey = dx * c + dy * s, dy * c - dx * s + + dx, dy = dx-ex, dy-ey + + surface.DrawTexturedRectRotated(x+dx/10, y+dy/10, w, h, a) +end + +function EFFECT:CalcAngle(m) + return AngleStart + (AngleEnd - AngleStart) * m / MaxMetal +end + +function EFFECT:Render() + local _,_,_,a = self.Dispenser:GetColor() + if a==0 then return end + + local state = self.Dispenser:GetNWInt("State") or 0 + if state<2 then return end + + local metal = self.Dispenser:GetNWInt("Metal") or 0 + if metal and metal~=self.LastMetalAmount then + if not self.Ang then + self.Ang = self:CalcAngle(metal) + else + if metal>self.LastMetalAmount then + self.DAng = -DialSpeed + else + self.DAng = DialSpeed + end + self.TargetAngle = self:CalcAngle(metal) + end + self.LastMetalAmount = metal + elseif self.TargetAngle then + if self.Ang*self.DAng > self.TargetAngle*self.DAng then + self.Ang = self.TargetAngle + self.TargetAngle = nil + else + self.Ang = self.Ang + self.DAng + end + end + + local cp0_ll = self.Dispenser:GetAttachment(self.Dispenser:LookupAttachment("controlpanel0_ll")) + local cp1_ll = self.Dispenser:GetAttachment(self.Dispenser:LookupAttachment("controlpanel1_ll")) + + cam.Start3D2D(cp0_ll.Pos + + Offset.x * cp0_ll.Ang:Forward() + + Offset.y * cp0_ll.Ang:Right() + + Offset.z * cp0_ll.Ang:Up(), cp0_ll.Ang, Scale) + self:DrawScreen() + cam.End3D2D() + + cam.Start3D2D(cp1_ll.Pos + + Offset.x * cp1_ll.Ang:Forward() + + Offset.y * cp1_ll.Ang:Right() + + Offset.z * cp1_ll.Ang:Up(), cp1_ll.Ang, Scale) + self:DrawScreen() + cam.End3D2D() +end + +function EFFECT:DrawScreen() + local r,g,b,a = self.Dispenser:GetColor() + surface.SetDrawColor(r,g,b,a) + surface.SetTexture(ScreenTexture[self.Dispenser:GetSkin()] or ScreenTexture[0]) + surface.DrawTexturedRect(0, -128, 256, 128) + surface.SetTexture(ArrowTexture) + RotatedRect(128,-64, 32, 128, 0.5, 0.90625, self.Ang) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/effects/tf_explosion/init.lua b/gamemodes/tf/entities/effects/tf_explosion/init.lua new file mode 100644 index 000000000..57ab37b3b --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_explosion/init.lua @@ -0,0 +1,82 @@ + +--[[ +Explosion flags: +1 Underwater +2 Wall explosion +4 Jarate +8 Clientside sound +16 Mad Milk +32 +64 +]] + +local ExplosionSounds = { +")weapons/pipe_bomb1.wav", +")weapons/pipe_bomb2.wav", +")weapons/pipe_bomb3.wav", +} + +function EFFECT:Init(data) + local pos = data:GetOrigin() + local ang = data:GetAngles() + local flags = data:GetAttachment() + + local effect + + if bit.band(flags, 16) > 0 then + effect = "peejar_impact_milk" + elseif bit.band(flags, 4) > 0 then + if bit.band(flags, 1) > 0 then + effect = "peejar_impact_small" + else + effect = "peejar_impact" + end + else + effect = "ExplosionCore" + if bit.band(flags, 2) > 0 then + effect = effect.."_Wall" + else + effect = effect.."_MidAir" + end + + if bit.band(flags, 1) > 0 then + effect = effect.."_underwater" + end + end + + self:SetPos(pos) + ParticleEffect(effect, pos, ang) + + if bit.band(flags, 8) > 0 then + self.NextExplosionSound = CurTime() + 0.05 + end +end + +function EFFECT:Think() + if self.NextExplosionSound then + if CurTime()>self.NextExplosionSound then + local mindist, best + for _,v in pairs(ents.GetAll()) do + if v.NextExplosionSound then + local d = EyePos():Distance(v:GetPos()) + if not mindist or d0 +end + +function EFFECT:Render() + if (file.Exists(self:GetModel(),"GAME")) then + self:StartVisualOverrides() + self:StartItemTint(self.ItemTint) + self:DrawModel() + self:EndItemTint() + self:EndVisualOverrides() + end +end diff --git a/gamemodes/tf/entities/effects/tf_hat_attached/init.lua b/gamemodes/tf/entities/effects/tf_hat_attached/init.lua new file mode 100644 index 000000000..b24666a5e --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_hat_attached/init.lua @@ -0,0 +1,43 @@ + +function EFFECT:Init(data) + local hat = data:GetEntity() + local pl = hat:GetOwner() + self.Parent = pl:GetRagdollEntity() + + if not IsValid(self.Parent) then + return + end + + local mdl = hat.Model + if not mdl then + self.Parent = nil + return + end + + if hat.GetItemTint then + self.ItemTint = hat:GetItemTint() + else + self.ItemTint = 0 + end + + self:SetModel(mdl) + self:AddEffects(EF_BONEMERGE) + self:SetParent(self.Parent) + + self:CopyVisualOverrides(hat) + hat.InitVisuals(self, pl, hat:GetVisuals()) +end + +function EFFECT:Think() + return IsValid(self.Parent) +end + +function EFFECT:Render() + if (file.Exists(self:GetModel(),"GAME")) then + self:StartVisualOverrides() + self:StartItemTint(self.ItemTint) + self:DrawModel() + self:EndItemTint() + self:EndVisualOverrides() + end +end diff --git a/gamemodes/tf/entities/effects/tf_hl2_head_gib/init.lua b/gamemodes/tf/entities/effects/tf_hl2_head_gib/init.lua new file mode 100644 index 000000000..dbf6c9996 --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_hl2_head_gib/init.lua @@ -0,0 +1,116 @@ + +EFFECT.LifeTime = 20 +EFFECT.FadeTime = 2 +EFFECT.DoneFirstThink = false + +local BoneList = { + "ValveBiped.Bip01_Pelvis", + "ValveBiped.Bip01_Spine", + "ValveBiped.Bip01_Spine1", + "ValveBiped.Bip01_Spine2", + "ValveBiped.forward", + + "ValveBiped.Bip01_R_Clavicle", + "ValveBiped.Bip01_R_UpperArm", + "ValveBiped.Bip01_R_Forearm", + "ValveBiped.Bip01_R_Hand", + "ValveBiped.Anim_Attachment_RH", + + "ValveBiped.Bip01_L_Clavicle", + "ValveBiped.Bip01_L_UpperArm", + "ValveBiped.Bip01_L_Forearm", + "ValveBiped.Bip01_L_Hand", + "ValveBiped.Anim_Attachment_LH", + + "ValveBiped.Bip01_R_Thigh", + "ValveBiped.Bip01_R_Calf", + "ValveBiped.Bip01_R_Foot", + + "ValveBiped.Bip01_L_Thigh", + "ValveBiped.Bip01_L_Calf", + "ValveBiped.Bip01_L_Foot", + + "ValveBiped.Bip01_R_Wrist", + "ValveBiped.Bip01_R_Ulna", + "ValveBiped.Bip01_L_Wrist", + "ValveBiped.Bip01_L_Ulna", +} + +function EFFECT:Init(data) + local pl = data:GetEntity() + local pos = data:GetOrigin() + local ang = data:GetAngles() + + self:SetModel("models/player/gibs/spygib007.mdl") + self:SetMaterial("Models/effects/vol_light001") + self:SetPos(pos) + self:SetAngles(ang) + self:PhysicsInit(SOLID_VPHYSICS) + + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:SetCollisionBounds(Vector(-128,-128,-128), Vector(128,128,128)) + + self.NextDeath = CurTime() + self.LifeTime + self.Model = pl:GetModel() +end + +function EFFECT:Think() + if not self.DoneFirstThink then + self.DoneFirstThink = true + + local phys = self:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + phys:Wake() + phys:SetVelocity(Vector(0, 0, math.Rand(200, 300)) + VectorRand() * math.Rand(0, 50)) + phys:AddAngleVelocity(Vector(math.Rand(-200,200),math.Rand(-200,200),math.Rand(-200,200))) + end + + self.Ragdoll = ClientsideModel(self.Model) + self.Ragdoll:SetNoDraw(true) + self.Ragdoll:SetPos(self:GetPos()) + self.Ragdoll:SetAngles(self:GetAngles()) + self.Ragdoll:SetParent(self) + self.Ragdoll.Parent = self + local b1 = self.Ragdoll:LookupBone("ValveBiped.Bip01_Head1") + self.Ragdoll:ManipulateBoneScale( self.Ragdoll:LookupBone("ValveBiped.Bip01_Head1"), Vector(1,1,1)) + + local b2 = self.Ragdoll:LookupBone("ValveBiped.Bip01_Spine4") + self.Ragdoll:ManipulateBoneScale( self.Ragdoll:LookupBone("ValveBiped.Bip01_Spine4"), Vector(0,0,0)) + + local pos = self.Ragdoll:GetPos() + self.Ragdoll:GetUp() * 65 + + for _,bone in ipairs(BoneList) do + local bones = self.Ragdoll:LookupBone(bone) + if bones and bones>=0 then + self.Ragdoll:ManipulateBoneScale( bones, Vector(0,0,0)) + end + end + --self.Ragdoll.BuildBonePositions = HeadGibBuildBones + + self.Ragdoll:InvalidateBoneCache() + self.Ragdoll:SetupBones() + end + + local diff = self.NextDeath - CurTime() + + if diff0 +end + +function EFFECT:Render() + if not IsValid(self.Ragdoll) then return end + + self.Ragdoll:SetRenderOrigin(self:GetPos() + self:GetUp() * 14) + self.Ragdoll:DrawModel() + self:DrawModel() +end diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_muzzleflash_beta/init.lua b/gamemodes/tf/entities/effects/tf_muzzleflash_beta/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/effects/tf_muzzleflash_beta/init.lua rename to gamemodes/tf/entities/effects/tf_muzzleflash_beta/init.lua diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_nemesis_icon/init.lua b/gamemodes/tf/entities/effects/tf_nemesis_icon/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/effects/tf_nemesis_icon/init.lua rename to gamemodes/tf/entities/effects/tf_nemesis_icon/init.lua diff --git a/gamemodes/tf/entities/effects/tf_player_gibbed/init.lua b/gamemodes/tf/entities/effects/tf_player_gibbed/init.lua new file mode 100644 index 000000000..0595d97c3 --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_player_gibbed/init.lua @@ -0,0 +1,74 @@ + +local GenericGibs = {Gibs={ + [GIB_LEFTLEG] = GIBS_SILLY_START, + [GIB_RIGHTLEG] = GIBS_SILLY_START+1, + [GIB_LEFTARM] = GIBS_SILLY_START+2, + [GIB_RIGHTARM] = GIBS_SILLY_START+3, + [GIB_TORSO] = GIBS_SILLY_START+4, + [GIB_TORSO2] = GIBS_SILLY_START+5, + [GIB_HEAD] = GIBS_SILLY_START+6, + [GIB_HEADGEAR1] = GIBS_SILLY_START+7, + [GIB_HEADGEAR2] = GIBS_SILLY_START+8, + [GIB_ORGAN] = GIBS_SILLY_START+9, +}} + +function EFFECT:Init(data) + local pl = data:GetEntity() + + local c + + for k,_ in pairs(pl.StuckArrows or {}) do + k.Parent = nil + end + + if pl:IsPlayer() then + c = pl:GetPlayerClassTable() + else + c = GenericGibs + end + + if not c or not c.Gibs then return end + + local exclude = {} + + if (pl:IsPlayer() and !pl:IsHL2()) then + for _,v in pairs(pl:GetTFItems()) do + if IsValid(v) then + if v.GetVisuals and v:GetVisuals() ~= nil then + local bodygroups = v:GetVisuals().hide_player_bodygroup_names + for _,b in ipairs(bodygroups or {}) do + if b == "hat" then + exclude[GIB_HEADGEAR1] = true + elseif b == "headphones" then + exclude[GIB_HEADGEAR2] = true + end + end + + if v.SetupPlayerRagdoll then + v:SetupPlayerRagdoll(NULL) + end + end + end + end + + for k,v in pairs(c.Gibs) do + if not exclude[k] then + local effectdata = EffectData() + effectdata:SetEntity(pl) + effectdata:SetMagnitude(v) + effectdata:SetOrigin(pl:GetPos()) + effectdata:SetAngles(pl:GetAngles()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetRadius(8) + util.Effect("tf_gib", effectdata) + end + end + end +end + +function EFFECT:Think() + return false +end + +function EFFECT:Render() +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_rainbow_trail/init.lua b/gamemodes/tf/entities/effects/tf_rainbow_trail/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/effects/tf_rainbow_trail/init.lua rename to gamemodes/tf/entities/effects/tf_rainbow_trail/init.lua diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_stickybomb_destroyed/init.lua b/gamemodes/tf/entities/effects/tf_stickybomb_destroyed/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/effects/tf_stickybomb_destroyed/init.lua rename to gamemodes/tf/entities/effects/tf_stickybomb_destroyed/init.lua diff --git a/gamemodes/tf/entities/effects/tf_stickybomb_gib/init.lua b/gamemodes/tf/entities/effects/tf_stickybomb_gib/init.lua new file mode 100644 index 000000000..90af1885b --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_stickybomb_gib/init.lua @@ -0,0 +1,57 @@ + +EFFECT.LifeTime = 10 +EFFECT.FadeTime = 2 + +local GibModels = { +Model("models/weapons/w_models/w_stickybomb_gib1.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib2.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib3.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib4.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib5.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib6.mdl"), +} + +function EFFECT:Init(data) + local pos = data:GetOrigin() + local id = data:GetMagnitude() + local mdl = GibModels[id] or GibModels[1] + + self:SetModel(mdl) + self:SetPos(pos) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + --self.Entity:SetCollisionBounds(Vector(-128,-128,-128), Vector(128,128,128)) + + self:InitPhysics() + + self.NextDeath = CurTime() + self.LifeTime +end + +function EFFECT:InitPhysics() + self:PhysicsInit(SOLID_VPHYSICS) + + local phys = self:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + phys:Wake() + phys:SetVelocity(VectorRand() * math.Rand(200, 600)) + phys:AddAngleVelocity(Vector(math.Rand(-20,20),math.Rand(-20,20),math.Rand(-20,20))) + end +end + +function EFFECT:Think() + if not self:GetPhysicsObject():IsValid(self.WModel2) then + self:InitPhysics() + end + + local diff = self.NextDeath - CurTime() + + if diff0 +end + +function EFFECT:Render() + self:DrawModel() +end diff --git a/gamemodes/tf/entities/effects/tf_syringe_stuck/init.lua b/gamemodes/tf/entities/effects/tf_syringe_stuck/init.lua new file mode 100644 index 000000000..ddce1decd --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_syringe_stuck/init.lua @@ -0,0 +1,42 @@ + +EFFECT.LifeTime = 10 +EFFECT.FadeTime = 2 + +EFFECT.Models = { + Model("models/weapons/w_models/w_syringe_proj.mdl"), + Model("models/weapons/c_models/c_leechgun/c_leech_proj.mdl"), + Model("models/weapons/w_models/w_syringe.mdl"), +} + +function EFFECT:Init(data) + local pos, ang, skin, stype = data:GetOrigin(), data:GetAngles(), data:GetMagnitude(), data:GetAttachment() + + self.Entity:SetModel(self.Models[stype+1] or self.Models[1]) + if stype==2 then + self.Entity:SetPos(pos - 18 * ang:Up()) + elseif stype==1 then + self.Entity:SetPos(pos - 7 * ang:Forward()) + else + self.Entity:SetPos(pos) + end + + self.Entity:SetAngles(ang) + self.Entity:SetSkin(skin) + + self.NextDeath = CurTime() + self.LifeTime +end + +function EFFECT:Think() + local diff = self.NextDeath - CurTime() + + if diff0 +end + +function EFFECT:Render() + self.Entity:DrawModel() +end diff --git a/gamemodes/tf/entities/effects/tf_tf2_head_gib/init.lua b/gamemodes/tf/entities/effects/tf_tf2_head_gib/init.lua new file mode 100644 index 000000000..366ac0a24 --- /dev/null +++ b/gamemodes/tf/entities/effects/tf_tf2_head_gib/init.lua @@ -0,0 +1,54 @@ + +local Gibs = {GIB_HEAD, GIB_HEADGEAR1, GIB_HEADGEAR2} + +function EFFECT:Init(data) + local pl = data:GetEntity() + local c = pl:GetPlayerClassTable() + + if not c or not c.Gibs then return end + + local exclude = {} + for _,h in pairs(ents.FindByClass("tf_hat")) do + if h:GetOwner()==pl then + local hat = h:GetHatData() + if hat then + for _,v in ipairs(hat.disabledgibs or {}) do + exclude[v] = true + end + + if not(hat.nomodel or hat.nodrop) then + local effectdata = EffectData() + effectdata:SetEntity(h) + effectdata:SetMagnitude(0) + effectdata:SetOrigin(pl:GetPos()) + effectdata:SetAngles(pl:GetAngles()) + effectdata:SetNormal(Vector(0,0,1)) + util.Effect("tf_gib", effectdata) + end + end + end + end + + for _,k in ipairs(Gibs) do + if not exclude[k] then + local v = c.Gibs[k] + if v then + local effectdata = EffectData() + effectdata:SetEntity(pl) + effectdata:SetMagnitude(v) + effectdata:SetOrigin(pl:GetPos()) + effectdata:SetAngles(pl:GetAngles()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetRadius(1) + util.Effect("tf_gib", effectdata) + end + end + end +end + +function EFFECT:Think() + return false +end + +function EFFECT:Render() +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/effects/tf_viewmodel/init.lua b/gamemodes/tf/entities/effects/tf_viewmodel/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/effects/tf_viewmodel/init.lua rename to gamemodes/tf/entities/effects/tf_viewmodel/init.lua diff --git a/addon/gamemodes/teamfortress/entities/entities/act_finder/cl_init.lua b/gamemodes/tf/entities/entities/act_finder/cl_init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/act_finder/cl_init.lua rename to gamemodes/tf/entities/entities/act_finder/cl_init.lua diff --git a/addon/gamemodes/teamfortress/entities/entities/act_finder/init.lua b/gamemodes/tf/entities/entities/act_finder/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/act_finder/init.lua rename to gamemodes/tf/entities/entities/act_finder/init.lua diff --git a/addon/gamemodes/teamfortress/entities/entities/act_finder/shared.lua b/gamemodes/tf/entities/entities/act_finder/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/act_finder/shared.lua rename to gamemodes/tf/entities/entities/act_finder/shared.lua diff --git a/gamemodes/tf/entities/entities/boss_alpha.lua b/gamemodes/tf/entities/entities/boss_alpha.lua new file mode 100644 index 000000000..70ddeafc5 --- /dev/null +++ b/gamemodes/tf/entities/entities/boss_alpha.lua @@ -0,0 +1,444 @@ +AddCSLuaFile() + +PrecacheParticleSystem( "halloween_boss_summon" ); +PrecacheParticleSystem( "halloween_boss_axe_hit_world" ); +PrecacheParticleSystem( "halloween_boss_injured" ); +PrecacheParticleSystem( "halloween_boss_death" ); +PrecacheParticleSystem( "halloween_boss_foot_impact" ); +PrecacheParticleSystem( "halloween_boss_eye_glow" ); +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.Model = "models/bots/knight/knight.mdl" +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 800 +ENT.item1AttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( self.Model ) + self:AddFlags(FL_OBJECT) + if SERVER then + local larm = ents.Create("gmod_button") + larm:SetModel("models/bots/knight/armor_arm_upper_l.mdl") + larm:SetPos(self:GetPos()) + larm:SetAngles(self:GetAngles()) + larm:SetParent(self) + larm:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + local rarm = ents.Create("gmod_button") + rarm:SetModel("models/bots/knight/armor_arm_upper_r.mdl") + rarm:SetPos(self:GetPos()) + rarm:SetAngles(self:GetAngles()) + rarm:SetParent(self) + rarm:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + local lleg = ents.Create("gmod_button") + lleg:SetModel("models/bots/knight/armor_leg_upper_l.mdl") + lleg:SetPos(self:GetPos()) + lleg:SetAngles(self:GetAngles()) + lleg:SetParent(self) + lleg:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + local rleg = ents.Create("gmod_button") + rleg:SetModel("models/bots/knight/armor_leg_upper_r.mdl") + rleg:SetPos(self:GetPos()) + rleg:SetAngles(self:GetAngles()) + rleg:SetParent(self) + rleg:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self:SetNWEntity("LeftArm",larm) + self:SetNWEntity("RightArm",rarm) + self:SetNWEntity("LeftLeg",lleg) + self:SetNWEntity("RightLeg",rleg) + end + local seq = "spawn" + timer.Simple(0.1, function() + self.Ready = true + if SERVER then + self:StartActivity(self:GetSequenceActivity(self:LookupSequence("stand_secondary"))) + timer.Create("Laugh"..self:EntIndex(), 3, 0, function() + if (self.Ready) then + self:EmitSound("ambient/levels/prison/radio_random"..math.random(1,15)..".wav",95,100,1) + timer.Adjust("Laugh"..self:EntIndex(),math.random(1,5),nil,nil) + if (math.random(0,100) < 25) then + self:AddGesture(ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY,true) + elseif (math.random(0,100) < 50) then + self:AddGesture(ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY,true) + end + end + end) + end + end) + self.Ready = false + self.LoseTargetDist = 3600 -- How far the enemy has to be before we lose them + self.SearchRadius = 2500 -- How far to search for enemies + self:SetHealth(30000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionBounds(Vector(-24,-24,0),Vector(24,24,170)) + self:SetCollisionGroup(COLLISION_GROUP_NPC) + if SERVER then + self:SetBloodColor(DONT_BLEED) + end +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.01, function() + self:EmitSound("MVM.GiantScoutStep") + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromitem1Hit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("boss_alpha")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + if (v:IsPlayer()) then + self:SetEnemy(table.Random(player.GetAll())) + else + self:SetEnemy(v) + end + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +function ENT:BodyUpdate() + + local act = self:GetActivity() + + -- + -- This helper function does a lot of useful stuff for us. + -- It sets the bot's move_x move_y pose parameters, sets their animation speed relative to the ground speed, and calls FrameAdvance. + -- + if ( act == ACT_MP_RUN_MELEE || act == self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) then + + self:BodyMoveXY() + + -- BodyMoveXY() already calls FrameAdvance, calling it twice will affect animation playback, specifically on layers + return + + end + + -- + -- If we're not walking or running we probably just want to update the anim system + -- + self:FrameAdvance() + +end +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + -- This function is called when the entity is first spawned. It acts as a giant loop that will run as long as the NPC exists + while ( true ) do + -- Lets use the above mentioned functions to see if we have/can find a enemy + if self.Ready then + + if ( self:HaveEnemy() ) then + + -- Now that we have an enemy, the code in this block will run + self.loco:FaceTowards(self:GetEnemy():GetPos()) -- Face our enemy + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) -- Set the animation + self.loco:SetDesiredSpeed( 400 ) -- Set the speed that we will be moving at. Don't worry, the animation will speed up/slow down to match + self:ChaseEnemy( ) -- The new function like MoveToPos. + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) -- Set the animation + -- Now once the above function is finished doing what it needs to do, the code will loop back to the start + -- unless you put stuff after the if statement. Then that will be run before it loops + + else + + if (math.random(1,800) == 1) then + + -- Since we can't find an enemy, lets wander + -- Its the same code used in Garry's test bot + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) -- Set the animation + self.loco:SetDesiredSpeed( 320 ) -- Walk speed + self.loco:SetAcceleration(300) + self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 800 ) -- Walk to a random place within about 400 units (yielding) + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) -- Set the animation + + + coroutine.wait(2) + end + + end + + coroutine.wait(0.1) + else + -- At this point in the code the bot has stopped chasing the player or finished walking to a random spot + -- Using this next function we are going to wait 2 seconds until we go ahead and repeat it + coroutine.wait(0.1) + end + + end + +end + +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + local targetheadpos,targetheadang = self:GetEnemy():GetBonePosition(1) -- Get the position/angle of the head. + self.EyeAngle = (targetheadpos - self:EyePos()):Angle() -- And finally, we snap our aim to the head of the target. + end + if (SERVER and !self:HaveEnemy()) then + self.EyeAngle = self:GetAngles() + end + + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self:GetEnemy()) and self:GetEnemy():Health() < 1) then + self:SetEnemy(nil) + end + if (IsValid(self:GetEnemy()) and self.Ready) then + + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < self.AttackRange and self:GetEnemy():Health() > 0) then + if (IsValid(self:GetEnemy()) and (!self.item1AttackDelay or CurTime() > self.item1AttackDelay)) then + self:AddGestureSequence(self:LookupSequence("attackstand_secondary"),true) + self.item1AttackDelay = CurTime() + 0.3 + local bomb = ents.Create("tf_projectile_rocket") + local aimvec = self:EyePos() + Vector(0,0,102) + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("MVM.GiantSoldierRocketShoot") + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + end + end + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 100 and self:GetEnemy():Health() > 0) then + if (self:GetSequence() != self:LookupSequence("stand_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) + end + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(0) + elseif (self:GetEnemy():GetPos():Distance(self:GetPos()) > 100 and self:GetEnemy():Health() > 0) then + if (self.CrybabyMode) then + + if (self:GetSequence() != self:LookupSequence("run_item1")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_item1")) ) + end + + else + if (self:GetSequence() != self:LookupSequence("run_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) + end + end + self.loco:SetDesiredSpeed( 400 ) + self.loco:SetAcceleration(300) + end + elseif (IsValid(self:GetEnemy()) and (self:GetEnemy():Health() < 1) and self.Ready) then + self:SetEnemy(nil) + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() + + -- + -- Clear the stuck status + -- + self.loco:ClearStuck() + if (math.random(1,4) == 1) then + if (self:HaveEnemy()) then + self:SetPos(self:GetEnemy():GetPos() + Vector(0,0,10)) + end + else + self.Enemy = nil + self:FindEnemy() + end +end + +function ENT:ChaseEnemy( options ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, self:GetEnemy():GetPos() ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() and self:HaveEnemy() ) do + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, self:GetEnemy():GetPos())-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if (dmginfo:IsDamageType(DMG_BULLET)) then + ParticleEffect( "bot_impact_light", dmginfo:GetDamagePosition(), self:GetAngles() ) + self:EmitSound("MVM_Giant.BulletImpact") + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:PrecacheGibs() + self:EmitSound("MVM.GiantCommonExplodes") + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + timer.Simple(0.1, function() + + if (!IsValid(self)) then return end + + local pos = self:GetPos() + self:GibBreakServer(dmginfo:GetDamageForce() * 2) + self:Remove() + + end) +end + +list.Set( "NPC", "boss_alpha", { + Name = "Knight", + Class = "boss_alpha", + Category = "TFBots: Raid", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/boss_alpha_sentry.lua b/gamemodes/tf/entities/entities/boss_alpha_sentry.lua new file mode 100644 index 000000000..7509dbb65 --- /dev/null +++ b/gamemodes/tf/entities/entities/boss_alpha_sentry.lua @@ -0,0 +1,417 @@ +AddCSLuaFile() + +PrecacheParticleSystem( "halloween_boss_summon" ); +PrecacheParticleSystem( "halloween_boss_axe_hit_world" ); +PrecacheParticleSystem( "halloween_boss_injured" ); +PrecacheParticleSystem( "halloween_boss_death" ); +PrecacheParticleSystem( "halloween_boss_foot_impact" ); +PrecacheParticleSystem( "halloween_boss_eye_glow" ); +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.Model = "models/bots/boss_sentry/boss_sentry.mdl" +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 2500 +ENT.item1AttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( self.Model ) + self:AddFlags(FL_OBJECT) + if SERVER then + local axe = ents.Create("gmod_button") + axe:SetModel("models/empty.mdl") + axe:SetPos(self:GetPos()) + axe:SetAngles(self:GetAngles()) + axe:SetParent(self) + axe:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self:SetNWEntity("Axe",axe) + end + local seq = "spawn" + timer.Simple(0.1, function() + self.Ready = true + self:EmitSound("Building_Sentrygun.Built") + if SERVER then + self:StartActivity(self:GetSequenceActivity(self:LookupSequence("stand_secondary"))) + timer.Create("Laugh"..self:EntIndex(), 2, 0, function() + if (self.Ready && !self:HaveEnemy()) then + timer.Adjust("Laugh"..self:EntIndex(),2,nil,nil) + timer.Simple(0.2, function() + self:EmitSound("Building_Sentrygun.Idle2",95,80) + end) + self:EmitSound("Building_Sentrygun.Idle2",95,80) + end + end) + end + end) + self.Ready = false + self.LoseTargetDist = 3600 -- How far the enemy has to be before we lose them + self.SearchRadius = 2500 -- How far to search for enemies + self:SetHealth(30000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionGroup(COLLISION_GROUP_NPC) + if SERVER then + self:SetBloodColor(DONT_BLEED) + end +end +function ENT:GetAxe() + return self:GetNWEntity("Axe") +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.01, function() + self:EmitSound("MVM.GiantScoutStep") + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromitem1Hit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("boss_alpha_sentry")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + if (v:IsPlayer()) then + self:SetEnemy(table.Random(player.GetAll())) + else + self:SetEnemy(v) + end + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + self:EmitSound("weapons/sentry_spot.wav",75,100) + if (v:IsPlayer()) then + + umsg.Start("NotifySentrySpotted", v) + umsg.End() + + end + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + -- This function is called when the entity is first spawned. It acts as a giant loop that will run as long as the NPC exists + while ( true ) do + -- Lets use the above mentioned functions to see if we have/can find a enemy + if self.Ready then + + if ( self:HaveEnemy() ) then + + -- Now that we have an enemy, the code in this block will run + self.loco:FaceTowards(self:GetEnemy():GetPos()) -- Face our enemy + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) -- Set the animation + self.loco:SetDesiredSpeed( 0 ) -- Set the speed that we will be moving at. Don't worry, the animation will speed up/slow down to match + self:ChaseEnemy( ) -- The new function like MoveToPos. + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) -- Set the animation + -- Now once the above function is finished doing what it needs to do, the code will loop back to the start + -- unless you put stuff after the if statement. Then that will be run before it loops + + else + + if (math.random(1,800) == 1) then + + -- Since we can't find an enemy, lets wander + -- Its the same code used in Garry's test bot + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) -- Set the animation + self.loco:SetDesiredSpeed( 0 ) -- Walk speed + self.loco:SetAcceleration(0) + self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 800 ) -- Walk to a random place within about 400 units (yielding) + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) -- Set the animation + + + coroutine.wait(2) + end + + end + + coroutine.wait(0.1) + else + -- At this point in the code the bot has stopped chasing the player or finished walking to a random spot + -- Using this next function we are going to wait 2 seconds until we go ahead and repeat it + coroutine.wait(0.1) + end + + end + +end + +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + local targetheadpos,targetheadang = self:GetEnemy():GetBonePosition(1) -- Get the position/angle of the head. + self.EyeAngle = (targetheadpos - self:EyePos()):Angle() -- And finally, we snap our aim to the head of the target. + end + if (SERVER and !self:HaveEnemy()) then + self.EyeAngle = self:GetAngles() + end + if SERVER then + + if (self:HaveEnemy()) then + self:SetAngles(Angle(self.EyeAngle.x,self.EyeAngle.y,0)) + else + self:SetAngles(self.EyeAngle) + end + self:BodyMoveXY() + + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self:GetEnemy()) and self:GetEnemy():Health() < 1) then + self:SetEnemy(nil) + end + if (IsValid(self:GetEnemy()) and self.Ready) then + + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < self.AttackRange and self:GetEnemy():Health() > 0) then + if (IsValid(self:GetEnemy()) and (!self.item1AttackDelay or CurTime() > self.item1AttackDelay)) then + self:AddGestureSequence(self:LookupSequence("attackstand_secondary"),true) + self.item1AttackDelay = CurTime() + 0.6 + timer.Simple(0.3, function() + local bomb = ents.Create("tf_projectile_sentryrocket") + local aimvec = self:EyePos() + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100) + Vector(36,0,0)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("Building_Sentrygun.FireRocket") + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + timer.Simple(0.3, function() + local bomb = ents.Create("tf_projectile_sentryrocket") + local aimvec = self:EyePos() + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100) - Vector(32,0,0)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("Building_Sentrygun.FireRocket") + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + end) + end) + end + end + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 100 and self:GetEnemy():Health() > 0) then + if (self:GetSequence() != self:LookupSequence("stand_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) + end + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(0) + elseif (self:GetEnemy():GetPos():Distance(self:GetPos()) > 100 and self:GetEnemy():Health() > 0) then + if (self.CrybabyMode) then + + if (self:GetSequence() != self:LookupSequence("run_item1")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_item1")) ) + end + + else + if (self:GetSequence() != self:LookupSequence("run_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) + end + end + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(0) + end + elseif (IsValid(self:GetEnemy()) and (self:GetEnemy():Health() < 1) and self.Ready) then + self:SetEnemy(nil) + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() +end + +function ENT:ChaseEnemy( options ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, self:GetEnemy():GetPos() ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() and self:HaveEnemy() ) do + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, self:GetEnemy():GetPos())-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if (dmginfo:IsDamageType(DMG_BULLET) || dmginfo:IsDamageType(DMG_CLUB)) then + ParticleEffect( "bot_impact_light", dmginfo:GetDamagePosition(), self:GetAngles() ) + self:StopSound("Building_Sentry.Damage") + self:EmitSound("Building_Sentry.Damage") + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:PrecacheGibs() + self:EmitSound("MVM.GiantCommonExplodes") + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + timer.Simple(0.1, function() + + if (!IsValid(self)) then return end + + local pos = self:GetPos() + self:GibBreakServer(dmginfo:GetDamageForce() * 2) + self:Remove() + + end) +end + +list.Set( "NPC", "boss_alpha_sentry", { + Name = "Mecha Level 4 Sentry", + Class = "boss_alpha_sentry", + Category = "TFBots: Raid", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/boss_bot.lua b/gamemodes/tf/entities/entities/boss_bot.lua new file mode 100644 index 000000000..1e1b19989 --- /dev/null +++ b/gamemodes/tf/entities/entities/boss_bot.lua @@ -0,0 +1,363 @@ +AddCSLuaFile() + +PrecacheParticleSystem( "halloween_boss_summon" ); +PrecacheParticleSystem( "halloween_boss_axe_hit_world" ); +PrecacheParticleSystem( "halloween_boss_injured" ); +PrecacheParticleSystem( "halloween_boss_death" ); +PrecacheParticleSystem( "halloween_boss_foot_impact" ); +PrecacheParticleSystem( "halloween_boss_eye_glow" ); +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.Model = "models/bots/boss_bot/boss_bot.mdl" +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 300 +ENT.item1AttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( self.Model ) + self:AddFlags(FL_OBJECT) + local seq = "spawn" + timer.Simple(0.1, function() + self.Ready = true + self:EmitSound("Building_Sentrygun.Built") + self:SetCycle(0) + self:SetSequence("test") + self:SetPlaybackRate(1) + if SERVER then + self:EmitSound("MVM.TankEngineLoop",95,70,0.2) + self:EmitSound("mvm/giant_heavy/giant_heavy_loop.wav",65,50,0.2) + timer.Create("Laugh"..self:EntIndex(), 3, 0, function() + if (self.Ready) then + self:EmitSound("ambient/levels/prison/radio_random"..math.random(1,15)..".wav",95,100,1) + timer.Adjust("Laugh"..self:EntIndex(),math.random(1,5),nil,nil) + end + end) + end + end) + self.Ready = false + self.LoseTargetDist = 3600 -- How far the enemy has to be before we lose them + self.SearchRadius = 2500 -- How far to search for enemies + self:SetHealth(8000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionGroup(COLLISION_GROUP_NPC) + if SERVER then + self:SetBloodColor(DONT_BLEED) + end +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + self:StopSound("MVM.TankEngineLoop") + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.01, function() + self:EmitSound("MVM.GiantScoutStep") + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromitem1Hit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("boss_alpha")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + if (v:IsPlayer()) then + self:SetEnemy(table.Random(player.GetAll())) + else + self:SetEnemy(v) + end + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + -- This function is called when the entity is first spawned. It acts as a giant loop that will run as long as the NPC exists + while ( true ) do + -- Lets use the above mentioned functions to see if we have/can find a enemy + if self.Ready then + + if ( self:HaveEnemy() ) then + + -- Now that we have an enemy, the code in this block will run + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(200) -- Now once the above function is finished doing what it needs to do, the code will loop back to the start + -- unless you put stuff after the if statement. Then that will be run before it loops + + else + + if (math.random(1,800) == 1) then + + -- Since we can't find an enemy, lets wander + -- Its the same code used in Garry's test bot + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(200) + self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 800 ) -- Walk to a random place within about 400 units (yielding) + + + coroutine.wait(2) + end + + end + + coroutine.wait(0.1) + else + -- At this point in the code the bot has stopped chasing the player or finished walking to a random spot + -- Using this next function we are going to wait 2 seconds until we go ahead and repeat it + coroutine.wait(0.1) + end + + end + +end + +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + local targetheadpos,targetheadang = self:GetEnemy():GetBonePosition(1) -- Get the position/angle of the head. + self.EyeAngle = (targetheadpos - self:EyePos()):Angle() -- And finally, we snap our aim to the head of the target. + end + if (SERVER and !self:HaveEnemy()) then + self.EyeAngle = self:GetAngles() + end + if SERVER then + + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:BodyMoveXY() + + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self:GetEnemy()) and self:GetEnemy():Health() < 1) then + self:SetEnemy(nil) + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 100 and self:GetEnemy():Health() > 0) then + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(200) + elseif (self:GetEnemy():GetPos():Distance(self:GetPos()) > 100 and self:GetEnemy():Health() > 0) then + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(200) + end + elseif (IsValid(self:GetEnemy()) and (self:GetEnemy():Health() < 1) and self.Ready) then + self:SetEnemy(nil) + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() + + -- + -- Clear the stuck status + -- + self.loco:ClearStuck() + if (math.random(1,4) == 1) then + if (self:HaveEnemy()) then + self:SetPos(self:GetEnemy():GetPos() + Vector(0,0,10)) + end + else + self.Enemy = nil + self:FindEnemy() + end +end + +function ENT:ChaseEnemy( options ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, self:GetEnemy():GetPos() ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() and self:HaveEnemy() ) do + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, self:GetEnemy():GetPos())-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if (dmginfo:IsDamageType(DMG_BULLET)) then + ParticleEffect( "bot_impact_light", dmginfo:GetDamagePosition(), self:GetAngles() ) + self:EmitSound("MVM_Tank.BulletImpact") + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:PrecacheGibs() + self:EmitSound("MVM.GiantCommonExplodes") + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + timer.Simple(0.1, function() + + if (!IsValid(self)) then return end + + local pos = self:GetPos() + self:GibBreakServer(dmginfo:GetDamageForce() * 2) + self:Remove() + + end) +end + +list.Set( "NPC", "boss_bot", { + Name = "Undentified Machine Type 1", + Class = "boss_bot", + Category = "TFBots: Raid", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/boss_cart.lua b/gamemodes/tf/entities/entities/boss_cart.lua new file mode 100644 index 000000000..c3e282f10 --- /dev/null +++ b/gamemodes/tf/entities/entities/boss_cart.lua @@ -0,0 +1,448 @@ +AddCSLuaFile() + +sound.Add( { + name = "BossCart.Drive", + channel = CHAN_BODY, + volume = 1.0, + level = 95, + pitch = {100}, + sound = { + "ambience/tankdrivein1.wav", + "ambience/tankdrivein2.wav" + } +} ) + +PrecacheParticleSystem( "halloween_boss_summon" ); +PrecacheParticleSystem( "halloween_boss_axe_hit_world" ); +PrecacheParticleSystem( "halloween_boss_injured" ); +PrecacheParticleSystem( "halloween_boss_death" ); +PrecacheParticleSystem( "halloween_boss_foot_impact" ); +PrecacheParticleSystem( "halloween_boss_eye_glow" ); +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.Model = "models/bots/boss_bot/boss_cart.mdl" +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 2500 +ENT.item1AttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( self.Model ) + self:AddFlags(FL_OBJECT) + if SERVER then + local axe = ents.Create("gmod_button") + axe:SetModel("models/empty.mdl") + axe:SetPos(self:GetPos()) + axe:SetAngles(self:GetAngles()) + axe:SetParent(self) + axe:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self:SetNWEntity("Axe",axe) + end + local seq = "spawn" + timer.Simple(0.1, function() + self.Ready = true + self:EmitSound("Building_Sentrygun.Built") + if SERVER then + self:EmitSound("MVM.TankEngineLoop") + self:EmitSound("mvm/giant_heavy/giant_heavy_loop.wav",65,60,0.2) + timer.Create("Laugh"..self:EntIndex(), 3, 0, function() + if (self.Ready) then + self:EmitSound("ambient/levels/prison/radio_random"..math.random(1,15)..".wav",95,100,1) + timer.Adjust("Laugh"..self:EntIndex(),math.random(1,5),nil,nil) + end + end) + end + end) + self.Ready = false + self.LoseTargetDist = 5400 -- How far the enemy has to be before we lose them + self.SearchRadius = 4000 -- How far to search for enemies + self:SetHealth(5000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionBounds(Vector(-24,-24,0),Vector(24,24,140)) + self:SetCollisionGroup(COLLISION_GROUP_NPC) + if SERVER then + self:SetBloodColor(DONT_BLEED) + end +end +function ENT:GetAxe() + return self:GetNWEntity("Axe") +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + self:StopSound("MVM.TankEngineLoop") + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.01, function() + self:EmitSound("MVM.GiantScoutStep") + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromitem1Hit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("boss_cart")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + self:StopSound("BossCart.Drive") + self:EmitSound("plats/bigstop1.wav") + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + if (v:IsPlayer()) then + self:SetEnemy(table.Random(player.GetAll())) + else + self:SetEnemy(v) + end + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + //self:EmitSound("BossCart.Drive") + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + -- This function is called when the entity is first spawned. It acts as a giant loop that will run as long as the NPC exists + while ( true ) do + -- Lets use the above mentioned functions to see if we have/can find a enemy + if self.Ready then + + if ( self:HaveEnemy() ) then + + -- Now that we have an enemy, the code in this block will run + self.loco:FaceTowards(self:GetEnemy():GetPos()) -- Face our enemy + self.loco:SetDesiredSpeed( 80 ) + self.loco:SetAcceleration(200) + self:ChaseEnemy( ) -- The new function like MoveToPos. + -- Now once the above function is finished doing what it needs to do, the code will loop back to the start + -- unless you put stuff after the if statement. Then that will be run before it loops + + else + + if (math.random(1,800) == 1) then + + -- Since we can't find an enemy, lets wander + -- Its the same code used in Garry's test bot + self.loco:SetDesiredSpeed( 80 ) + self.loco:SetAcceleration(200) + self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 800 ) -- Walk to a random place within about 400 units (yielding) + + + coroutine.wait(2) + end + + end + + coroutine.wait(0.1) + else + -- At this point in the code the bot has stopped chasing the player or finished walking to a random spot + -- Using this next function we are going to wait 2 seconds until we go ahead and repeat it + coroutine.wait(0.1) + end + + end + +end + +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + local targetheadpos,targetheadang = self:GetEnemy():GetBonePosition(1) -- Get the position/angle of the head. + self.EyeAngle = (targetheadpos - self:EyePos()):Angle() -- And finally, we snap our aim to the head of the target. + end + if (SERVER and !self:HaveEnemy()) then + self.EyeAngle = self:EyeAngles() + end + + + if SERVER then + + self:SetAngles(self:EyeAngles()) + self:ManipulateBoneAngles(self:LookupBone("gun_L"),Angle(0,0,self.EyeAngle.x)) + self:ManipulateBoneAngles(self:LookupBone("gun_R"),Angle(0,0,self.EyeAngle.x)) + self:BodyMoveXY() + + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self:GetEnemy()) and self:GetEnemy():Health() < 1) then + self:SetEnemy(nil) + end + if (IsValid(self:GetEnemy()) and self.Ready) then + + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < self.AttackRange and self:GetEnemy():Health() > 0) then + if (IsValid(self:GetEnemy()) and (!self.item1AttackDelay or CurTime() > self.item1AttackDelay)) then + self:AddGestureSequence(self:LookupSequence("attackstand_secondary"),true) + self.item1AttackDelay = CurTime() + 5.0 + timer.Simple(3.5, function() + self:EmitSound("vehicles/tank_readyfire1.wav",95,100,1) + end) + self:EmitSound("vehicles/tank_turret_start1.wav",95,100,1) + timer.Simple(0.2, function() + local bomb = ents.Create("tf_projectile_sentryrocket") + local aimvec = self:EyePos() + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100) + Vector(64,0,0)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("weapons/stinger_fire1.wav",120,100,1,CHAN_ITEM) + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + timer.Simple(0.2, function() + local bomb = ents.Create("tf_projectile_sentryrocket") + local aimvec = self:EyePos() + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100) - Vector(64,0,0)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("weapons/stinger_fire1.wav",120,100,1,CHAN_ITEM) + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + timer.Simple(0.2, function() + local bomb = ents.Create("tf_projectile_sentryrocket") + local aimvec = self:EyePos() + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100) + Vector(64,0,72)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("weapons/stinger_fire1.wav",120,100,1,CHAN_ITEM) + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + timer.Simple(0.2, function() + local bomb = ents.Create("tf_projectile_sentryrocket") + local aimvec = self:EyePos() + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100) - Vector(64,0,-72)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("weapons/stinger_fire1.wav",120,100,1,CHAN_ITEM) + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + timer.Simple(0.1, function() + self:EmitSound("vehicles/tank_turret_stop1.wav",95,100,1) + end) + end) + end) + end) + end) + end + end + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 100 and self:GetEnemy():Health() > 0) then + if (self:GetSequence() != self:LookupSequence("stand_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) + end + self.loco:SetDesiredSpeed( 0 ) -- Walk speed + self.loco:SetAcceleration(200) + elseif (self:GetEnemy():GetPos():Distance(self:GetPos()) > 100 and self:GetEnemy():Health() > 0) then + if (self.CrybabyMode) then + + if (self:GetSequence() != self:LookupSequence("run_item1")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_item1")) ) + end + + else + if (self:GetSequence() != self:LookupSequence("run_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) + end + end + self.loco:SetDesiredSpeed( 80 ) + self.loco:SetAcceleration(200) + end + elseif (IsValid(self:GetEnemy()) and (self:GetEnemy():Health() < 1) and self.Ready) then + self:SetEnemy(nil) + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() +end + +function ENT:ChaseEnemy( options ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, self:GetEnemy():GetPos() ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() and self:HaveEnemy() ) do + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, self:GetEnemy():GetPos())-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if (dmginfo:IsDamageType(DMG_BULLET)) then + ParticleEffect( "bot_impact_light", dmginfo:GetDamagePosition(), self:GetAngles() ) + self:EmitSound("MVM_Tank.BulletImpact") + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:PrecacheGibs() + self:EmitSound("MVM.GiantCommonExplodes") + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + timer.Simple(0.1, function() + + if (!IsValid(self)) then return end + + local pos = self:GetPos() + self:GibBreakServer(dmginfo:GetDamageForce() * 2) + self:Remove() + + end) +end + +list.Set( "NPC", "boss_cart", { + Name = "Undentified Machine Type 2", + Class = "boss_cart", + Category = "TFBots: Raid", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/bot_boss_mini_rockets.lua b/gamemodes/tf/entities/entities/bot_boss_mini_rockets.lua new file mode 100644 index 000000000..a8ebbeffd --- /dev/null +++ b/gamemodes/tf/entities/entities/bot_boss_mini_rockets.lua @@ -0,0 +1,425 @@ +AddCSLuaFile() + +PrecacheParticleSystem( "halloween_boss_summon" ); +PrecacheParticleSystem( "halloween_boss_axe_hit_world" ); +PrecacheParticleSystem( "halloween_boss_injured" ); +PrecacheParticleSystem( "halloween_boss_death" ); +PrecacheParticleSystem( "halloween_boss_foot_impact" ); +PrecacheParticleSystem( "halloween_boss_eye_glow" ); +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.Model = "models/bots/knight/knight_mini.mdl" +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 500 +ENT.item1AttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( self.Model ) + self:AddFlags(FL_OBJECT) + if SERVER then + local axe = ents.Create("gmod_button") + axe:SetModel("models/empty.mdl") + axe:SetPos(self:GetPos()) + axe:SetAngles(self:GetAngles()) + axe:SetParent(self) + axe:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self:SetNWEntity("Axe",axe) + end + local seq = "spawn" + timer.Simple(0.1, function() + self.Ready = true + if SERVER then + self:StartActivity(self:GetSequenceActivity(self:LookupSequence("stand_secondary"))) + timer.Create("Laugh"..self:EntIndex(), 3, 0, function() + if (self.Ready) then + self:EmitSound("ambient/levels/prison/radio_random"..math.random(1,15)..".wav",95,100,1) + timer.Adjust("Laugh"..self:EntIndex(),math.random(1,5),nil,nil) + if (math.random(0,100) < 25) then + self:AddGesture(ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY,true) + elseif (math.random(0,100) < 50) then + self:AddGesture(ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY,true) + end + end + end) + end + end) + self.Ready = false + self.LoseTargetDist = 3600 -- How far the enemy has to be before we lose them + self.SearchRadius = 2500 -- How far to search for enemies + self:SetHealth(5000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionGroup(COLLISION_GROUP_NPC) + if SERVER then + self:SetBloodColor(DONT_BLEED) + end +end +function ENT:GetAxe() + return self:GetNWEntity("Axe") +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.01, function() + self:EmitSound("MVM.GiantScoutStep") + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromitem1Hit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("bot_boss_mini_rockets")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + if (v:IsPlayer()) then + self:SetEnemy(table.Random(player.GetAll())) + else + self:SetEnemy(v) + end + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + -- This function is called when the entity is first spawned. It acts as a giant loop that will run as long as the NPC exists + while ( true ) do + -- Lets use the above mentioned functions to see if we have/can find a enemy + if self.Ready then + + if ( self:HaveEnemy() ) then + + -- Now that we have an enemy, the code in this block will run + self.loco:FaceTowards(self:GetEnemy():GetPos()) -- Face our enemy + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) -- Set the animation + self.loco:SetDesiredSpeed( 400 ) -- Set the speed that we will be moving at. Don't worry, the animation will speed up/slow down to match + self:ChaseEnemy( ) -- The new function like MoveToPos. + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) -- Set the animation + -- Now once the above function is finished doing what it needs to do, the code will loop back to the start + -- unless you put stuff after the if statement. Then that will be run before it loops + + else + + if (math.random(1,800) == 1) then + + -- Since we can't find an enemy, lets wander + -- Its the same code used in Garry's test bot + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) -- Set the animation + self.loco:SetDesiredSpeed( 320 ) -- Walk speed + self.loco:SetAcceleration(300) + self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 800 ) -- Walk to a random place within about 400 units (yielding) + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) -- Set the animation + + + coroutine.wait(2) + end + + end + + coroutine.wait(0.1) + else + -- At this point in the code the bot has stopped chasing the player or finished walking to a random spot + -- Using this next function we are going to wait 2 seconds until we go ahead and repeat it + coroutine.wait(0.1) + end + + end + +end + +function ENT:BodyUpdate() + + local act = self:GetActivity() + + -- + -- This helper function does a lot of useful stuff for us. + -- It sets the bot's move_x move_y pose parameters, sets their animation speed relative to the ground speed, and calls FrameAdvance. + -- + + if ( act == self:GetSequenceActivity(self:LookupSequence("run_item1")) || act == self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) then + + self:BodyMoveXY() + + -- BodyMoveXY() already calls FrameAdvance, calling it twice will affect animation playback, specifically on layers + return + + end + + -- + -- If we're not walking or running we probably just want to update the anim system + -- + self:FrameAdvance() + +end +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + local targetheadpos,targetheadang = self:GetEnemy():GetBonePosition(1) -- Get the position/angle of the head. + self.EyeAngle = (targetheadpos - self:EyePos()):Angle() -- And finally, we snap our aim to the head of the target. + end + if (SERVER and !self:HaveEnemy()) then + self.EyeAngle = self:GetAngles() + end + + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self:GetEnemy()) and self:GetEnemy():Health() < 1) then + self:SetEnemy(nil) + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < self.AttackRange and self:GetEnemy():Health() > 0) then + if (IsValid(self:GetEnemy()) and (!self.item1AttackDelay or CurTime() > self.item1AttackDelay)) then + self:AddGestureSequence(self:LookupSequence("attackstand_secondary"),true) + self.item1AttackDelay = CurTime() + 0.3 + local bomb = ents.Create("tf_projectile_rocket") + local aimvec = self:EyePos() + Vector(0,0,102) + bomb:SetPos(aimvec + (self.EyeAngle:Forward() * 100)) + -- Set the angles to the player'e eye angles. Then spawn it. + self:EmitSound("MVM.GiantSoldierRocketShoot") + bomb:SetAngles( self.EyeAngle ) + bomb:SetOwner(self) + bomb:Spawn() + end + end + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 100 and self:GetEnemy():Health() > 0) then + if (self:GetSequence() != self:LookupSequence("stand_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_secondary")) ) + end + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(0) + elseif (self:GetEnemy():GetPos():Distance(self:GetPos()) > 100 and self:GetEnemy():Health() > 0) then + if (self.CrybabyMode) then + + if (self:GetSequence() != self:LookupSequence("run_item1")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_item1")) ) + end + + else + if (self:GetSequence() != self:LookupSequence("run_secondary")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_secondary")) ) + end + end + self.loco:SetDesiredSpeed( 400 ) + self.loco:SetAcceleration(300) + end + elseif (IsValid(self:GetEnemy()) and (self:GetEnemy():Health() < 1) and self.Ready) then + self:SetEnemy(nil) + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() + + -- + -- Clear the stuck status + -- + self.loco:ClearStuck() + if (math.random(1,4) == 1) then + if (self:HaveEnemy()) then + self:SetPos(self:GetEnemy():GetPos() + Vector(0,0,10)) + end + else + self.Enemy = nil + self:FindEnemy() + end +end + +function ENT:ChaseEnemy( options ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, self:GetEnemy():GetPos() ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() and self:HaveEnemy() ) do + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, self:GetEnemy():GetPos())-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if (dmginfo:IsDamageType(DMG_BULLET)) then + ParticleEffect( "bot_impact_light", dmginfo:GetDamagePosition(), self:GetAngles() ) + self:EmitSound("MVM_Giant.BulletImpact") + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:PrecacheGibs() + self:EmitSound("MVM.GiantCommonExplodes") + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + timer.Simple(0.1, function() + + if (!IsValid(self)) then return end + + local pos = self:GetPos() + self:GibBreakServer(dmginfo:GetDamageForce() * 2) + self:Remove() + + end) +end + +list.Set( "NPC", "bot_boss_mini_rockets", { + Name = "Mini-Knight", + Class = "bot_boss_mini_rockets", + Category = "TFBots: Raid", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/bot_hint_sentrygun/cl_init.lua b/gamemodes/tf/entities/entities/bot_hint_sentrygun/cl_init.lua new file mode 100644 index 000000000..403e686c9 --- /dev/null +++ b/gamemodes/tf/entities/entities/bot_hint_sentrygun/cl_init.lua @@ -0,0 +1,2 @@ + +include('shared.lua') diff --git a/gamemodes/tf/entities/entities/bot_hint_sentrygun/init.lua b/gamemodes/tf/entities/entities/bot_hint_sentrygun/init.lua new file mode 100644 index 000000000..77b90a484 --- /dev/null +++ b/gamemodes/tf/entities/entities/bot_hint_sentrygun/init.lua @@ -0,0 +1,7 @@ + +AddCSLuaFile( "shared.lua" ) +include( 'shared.lua' ) + +function ENT:Initialize() + self:SetModel("models/props_lab/huladoll.mdl") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/bot_hint_sentrygun/shared.lua b/gamemodes/tf/entities/entities/bot_hint_sentrygun/shared.lua new file mode 100644 index 000000000..d5807ba04 --- /dev/null +++ b/gamemodes/tf/entities/entities/bot_hint_sentrygun/shared.lua @@ -0,0 +1,6 @@ +ENT.Type = "anim" +ENT.Base = "base_anim" +ENT.Name = "Sentry Gun Bot Hint" +ENT.Category = "Team Fortress 2" +ENT.Spawnable = true +ENT.AdminOnly = true diff --git a/gamemodes/tf/entities/entities/clear_info_teamspawns.lua b/gamemodes/tf/entities/entities/clear_info_teamspawns.lua new file mode 100644 index 000000000..826119061 --- /dev/null +++ b/gamemodes/tf/entities/entities/clear_info_teamspawns.lua @@ -0,0 +1,39 @@ +AddCSLuaFile() +ENT.Type = "anim" +ENT.Team = TEAM_RED +ENT.Spawnable = true +ENT.PrintName = "Clear Team Spawnpoints" +ENT.Category = "Team Fortress 2" +ENT.AdminOnly = true + + +function ENT:SpawnFunction(pl, tr) + if not tr.Hit then return end + + local pos = tr.HitPos + + local ent = ents.Create(self.ClassName) + ent:SetPos(pos) + ent:Spawn() + ent:Activate() + + ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + + for k,v in ipairs(ents.FindByClass("info_player_teamspawn")) do + + local ent = ents.Create("info_player_start") + ent:SetPos(v:GetPos()) + ent:Spawn() + ent:Activate() + v:Remove() + + end + + return ent +end + +function ENT:Initialize() + + self:Remove() + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/ctf_bot_navigator.lua b/gamemodes/tf/entities/entities/ctf_bot_navigator.lua new file mode 100644 index 000000000..1e9483ef2 --- /dev/null +++ b/gamemodes/tf/entities/entities/ctf_bot_navigator.lua @@ -0,0 +1,133 @@ +-- taken from https://gmod.facepunch.com/f/gmodaddon/jgtl/Nextbot-Pathfinding-for-Players/1/ + +if SERVER then AddCSLuaFile() end + +ENT.Base = "base_nextbot" +ENT.Type = "nextbot" + +function ENT:Initialize() + self:SetModel("models/gman.mdl") + self:SetNoDraw(true) + self:SetSolid( SOLID_NONE ) + self.PosGen = nil + self.NextJump = -1 + self.NextDuck = 0 + self.cur_segment = 2 + self.Target = nil + self.LastSegmented = 0 + self.ForgetTarget = 0 + self.NextCenter = 0 + self.LookAt = Angle(0, 0, 0) + self.LookAtTime = 0 + self.goalPos = Vector(0, 0, 0) + self.strafeAngle = 0 + self.nextStuckJump = 0 +end + +function ENT:ChasePos( options ) + if (self.PosGen ~= nil) then + self.P = Path("Follow") + self.P:Compute(self, self.PosGen) + self.P:SetGoalTolerance(250) + coroutine.wait(1) + coroutine.yield() + end +end + +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:RunBehaviour() + while (true) do + if self.PosGen then + self:ChasePos({}) + end + coroutine.wait(0.1) + coroutine.yield() + end +end + + +function ENT:Think() + if (IsValid(self:GetOwner())) then + self:SetModelScale(self:GetOwner():GetModelScale()) + self:SetModel(self:GetOwner():GetModel()) + end + if self.PosGen then -- If the bot has a target location (i.e., an ally), go for it. + if (self.PosGen ~= nil) then + end + if (self.P ~= nil) then + self.P:Compute(self, self.PosGen, function( area, fromArea, ladder, elevator, length ) + if ( !IsValid( fromArea ) ) then + + -- first area in path, no cost + return 0 + + else + + if ( !self.loco:IsAreaTraversable( area ) ) then + -- our locomotor says we can't move here + return -1 + end + + -- compute distance traveled along path so far + local dist = 0 + + if ( IsValid( ladder ) ) then + dist = ladder:GetLength() + elseif ( length > 0 ) then + -- optimization to avoid recomputing length + dist = length + else + dist = ( area:GetCenter() - fromArea:GetCenter() ):GetLength() + end + + local cost = dist + fromArea:GetCostSoFar() + + -- check height change + local deltaZ = fromArea:ComputeAdjacentConnectionHeightChange( area ) + if ( deltaZ >= self.loco:GetStepHeight() ) then + if ( deltaZ >= self.loco:GetMaxJumpHeight() ) then + -- too high to reach + return -1 + end + + -- jumping is slower than flat ground + local jumpPenalty = 5 + cost = cost + jumpPenalty * dist + elseif ( deltaZ < -self.loco:GetDeathDropHeight() ) then + -- too far to drop + return -1 + end + + return cost + end + end) + if self.loco:IsStuck() then + self:HandleStuck() + if (IsValid(self:GetOwner())) then + self.nextStuckJump = CurTime() + math.Rand(1, 2) + end + return + end + self.loco:FaceTowards(self.PosGen) + self.loco:Approach( self.PosGen, 1 ) + end + + if GetConVar('developer'):GetBool() then + if (self.P ~= nil) then + self.P:Draw() + end + end + + if (IsValid(self:GetOwner())) then + self.loco:SetDesiredSpeed(self:GetOwner():GetWalkSpeed()) + end + end + self:NextThink(CurTime() + 0.2) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/dm_weapon_spawner/shared.lua b/gamemodes/tf/entities/entities/dm_weapon_spawner/shared.lua new file mode 100644 index 000000000..546eb9650 --- /dev/null +++ b/gamemodes/tf/entities/entities/dm_weapon_spawner/shared.lua @@ -0,0 +1,87 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "item_base" + +ENT.Model = "models/props_junk/PopCan01a.mdl" +ENT.Weapon = "weapon_smg1" +ENT.Prop = nil + + + +function ENT:Initialize() + self:SetModel(self.Model) + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_NONE) + self:DrawShadow(false) + --self:SetNoDraw(true) + + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:EmitSound("items/spawn_item.wav") + self:SetTrigger(true) +end + +function ENT:Think() + if self.NextActive and CurTime()>=self.NextActive then + self.NextActive = nil + end + + if self.NextRespawn and CurTime()>=self.NextRespawn then + self:Show() + self.NextRespawn = nil + end + self:SetAngles(self:GetAngles() + Angle(0, 10, 0)) + if self:GetModel() == "models/weapons/w_models/w_rocketlauncher.mdl" then + self:SetModel("models/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl") + end +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() then + self:PlayerTouched(ent) + self:Hide() + end +end +function ENT:PlayerTouched(pl) + pl:Give(self.Weapon) + pl:SelectWeapon(self.Weapon) + pl:EmitSound("items/gunpickup2.wav") +end + +function ENT:KeyValue(key, value) + key = string.lower(key) + + if key=="weaponname" then + local wep = tostring(value) + self.Weapon = tostring(value) + timer.Create("SetWeapon", 0.5, 0, function() + self.Weapon = tostring(value) + end) + elseif key=="spawnpropname" then + self.Prop = tostring(value) + timer.Create("SetProp", 0.5, 0, function() + self.Prop = tostring(value) + end) + timer.Create("SpawnProp", 40, 0, function() + local button = ents.Create( "prop_physics" ) + if ( !IsValid( button ) ) then return end -- Check whether we successfully made an entity, if not - bail + button:SetModel( self.Prop ) + button:SetPos( self:GetPos() ) + button:Spawn() + self:EmitSound("items/spawn_item.wav", 80, 100) + end) + elseif key=="model" then + local model = tostring(value) + self.Model = model + self:SetModel(model) + timer.Create("SetModel", 0.5, 0, function() + if model == "models/weapons/w_models/w_rocketlauncher.mdl" then + self:SetModel("models/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl") + else + self:SetModel(model) + end + end) + --print(model) + end +end diff --git a/gamemodes/tf/entities/entities/eyeball_boss/cl_init.lua b/gamemodes/tf/entities/entities/eyeball_boss/cl_init.lua new file mode 100644 index 000000000..36c4050f0 --- /dev/null +++ b/gamemodes/tf/entities/entities/eyeball_boss/cl_init.lua @@ -0,0 +1,6 @@ +include('shared.lua') + +ENT.RenderGroup = RENDERGROUP_BOTH + + +language.Add("headless_hatman", "Horseless Headless Horsemann") \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/eyeball_boss/shared.lua b/gamemodes/tf/entities/entities/eyeball_boss/shared.lua new file mode 100644 index 000000000..97c1f112c --- /dev/null +++ b/gamemodes/tf/entities/entities/eyeball_boss/shared.lua @@ -0,0 +1 @@ +-- unused \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/filter_activator_tfteam/init.lua b/gamemodes/tf/entities/entities/filter_activator_tfteam/init.lua new file mode 100644 index 000000000..d3c9f801c --- /dev/null +++ b/gamemodes/tf/entities/entities/filter_activator_tfteam/init.lua @@ -0,0 +1,43 @@ +ENT.Type = "point" + +local TeamTranslateTable = { +[0] = TEAM_NEUTRAL, +[2] = TEAM_RED, +[3] = TEAM_BLU, +} + +function ENT:Initialize() + --print(self) + PrintTable(self.Properties or {}) + + -- Bleh, can't create working filters using Lua, so we'll just spawn a similar existing filter and delete this one + + --local negated = self.Properties.negated + local negated = 0 + local teamnum = TeamTranslateTable[self.Properties.teamnum] or TEAM_NEUTRAL + + local filter = ents.Create("filter_activator_team") + filter:SetName(self:GetName().."_alt") + filter:SetPos(self:GetPos()) + filter:SetKeyValue("filterteam", teamnum) + filter:SetKeyValue("Negated", negated) + filter:Spawn() + + self:Remove() +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if not self.Properties then + self.Properties = {} + end + if tonumber(value) then value=tonumber(value) end + self.Properties[key] = value +end + +hook.Add("EntityKeyValue", "TF_OverrideTriggerFilter", function(ent, key, value) + if string.lower(key)=="filtername" then + return value.."_alt" + end +end) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/func_capturezone/init.lua b/gamemodes/tf/entities/entities/func_capturezone/init.lua new file mode 100644 index 000000000..3fd30d05f --- /dev/null +++ b/gamemodes/tf/entities/entities/func_capturezone/init.lua @@ -0,0 +1,142 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + +function ENT:Initialize() + local pos = self:GetPos() + local mins, maxs = self:WorldSpaceAABB() -- https://forum.facepunch.com/gmoddev/lmcw/Brush-entitys-ent-GetPos/1/#postdwfmq + pos = (mins + maxs) * 0.5 + + self.Team = self.Team or 0 + self.TeamNum = self.TeamNum or 0 + self.Pos = pos + SetGlobalFloat("tf_ctf_red", 0) + SetGlobalFloat("tf_ctf_blu", 0) + --SetGlobalFloat("tf_ctf_red_lastcap", CurTime() - 120) + --SetGlobalFloat("tf_ctf_blu_lastcap", CurTime() - 120) +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + local t = tonumber(value) + + if t==0 then + self.TeamNum = 0 + elseif t==2 then + self.TeamNum = TEAM_RED + elseif t==3 then + self.TeamNum = TEAM_BLU + end + + self.Team = tonumber(value) + end + --print(key, value, tonumber(value), self.Team) +end + +function ENT:StartTouch(ply) + if ply:GetClass() == "npc_mvm_tank" then + ply:DeployBomb() + timer.Create("Tank", 0.001, 0, function() + ply:SetThrottle(0) + end) + timer.Simple(7.5, function() + ply:Explode() + RunConsoleCommand("tf_mvm_wins") + end) + end + for _,v in pairs(ents.FindByClass("item_teamflag")) do + ----print(self.Team, v.te, self.Pos:Distance(ply) <= 50) + ----print(self.Team ~= v.te, v.Carrier == ply, v:GetPos():Distance(ply:GetPos()) <= 50) + if v.Carrier==ply and self.Team ~= v.te and v.Prop:GetPos():Distance(ply:GetPos()) <= 100 then + if game.GetMap() == "mvm_terroristmission_v7_1" then + RunConsoleCommand("tf_red_wins") + end + + ply:Speak("TLK_FLAGCAPTURED") + v:Capture() + --team.AddScore(v.TeamNum, 1) + if v.TeamNum == TEAM_RED then + team.AddScore(TEAM_BLU, 1) + if (team.GetScore(TEAM_BLU) > GetConVarNumber("tf_flag_caps_per_round") - 1 and !GAMEMODE.RoundHasWinner) then + GAMEMODE:RoundWin(TEAM_BLU) + return + end + --SetGlobalFloat("tf_ctf_blu", GetGlobalFloat("tf_ctf_blu") + 1) + else + team.AddScore(TEAM_RED, 1) + if (team.GetScore(TEAM_RED) > GetConVarNumber("tf_flag_caps_per_round") - 1 and !GAMEMODE.RoundHasWinner) then + GAMEMODE:RoundWin(TEAM_RED) + return + end + --SetGlobalFloat("tf_ctf_red", GetGlobalFloat("tf_ctf_red") + 1) + end + + --SetGlobalFloat("tf_ctf_red_lastcap", CurTime()) + --SetGlobalFloat("tf_ctf_blu_lastcap", CurTime()) + + for _, ply in pairs(player.GetAll()) do + if ply:Team() ~= v.TeamNum then + ply:SendLua([[surface.PlaySound("vo/intel_teamcaptured.mp3")]]) + GAMEMODE:StartCritBoost(ply) + if (!GAMEMODE.RoundHasWinner) then + timer.Simple(10, function() + if IsValid(ply) then + GAMEMODE:StopCritBoost(ply) + end + end) + end + else + ply:SendLua([[surface.PlaySound("vo/intel_enemycaptured.mp3")]]) + end + end + end + end + for _,v in pairs(ents.FindByClass("item_teamflag_mvm")) do + ----print(self.Team, v.te, self.Pos:Distance(ply) <= 50) + ----print(self.Team ~= v.te, v.Carrier == ply, v:GetPos():Distance(ply:GetPos()) <= 50) + if v.Carrier==ply and self.Team ~= v.Team then + timer.Simple(0.1, function() + if string.find(v.Carrier:GetModel(),"_boss.mdl") then + v:EmitSound("mvm/mvm_deploy_giant.wav", 95, 100) + else + v:EmitSound("mvm/mvm_deploy_small.wav", 95, 100) + end + for _, player in ipairs(player.GetAll()) do + player:SendLua([[LocalPlayer():EmitSound("Announcer.MVM_Bomb_Alert_Deploying")]]) + end + v.Carrier:SetNWBool("Taunting",true) + v.Carrier:DoAnimationEvent(v.Carrier:LookupSequence("primary_deploybomb")) + end) + timer.Simple(3, function() + if not v.Carrier:Alive() then v.Carrier:Freeze(false) return end + for _,pl in pairs(player.GetAll()) do + if pl:Team() == TEAM_RED then + pl:SendLua([[LocalPlayer():EmitSound("Announcer.MVM_Wave_Lose")]]) + end + end + RunConsoleCommand("tf_mvm_wins") + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if !v:IsFriendly(ent) then + v:Remove() + end + end + end) + timer.Simple(5, function() + if not v.Carrier:Alive() then v.Carrier:Freeze(false) return end + v.WModel2:SetNoDraw(false) + v.Carrier:Freeze(false) + v.Carrier:SetNoDraw(false) + v.Carrier:ConCommand("tf_firstperson") + end) + timer.Simple(5.3, function() + if not v.Carrier:Alive() then v.Carrier:Freeze(false) return end + v.Carrier:Kill() + v:Capture() + end) + end + end +end + +function ENT:EndTouch(ent) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/func_flagdetectionzone/init.lua b/gamemodes/tf/entities/entities/func_flagdetectionzone/init.lua new file mode 100644 index 000000000..fb81071d5 --- /dev/null +++ b/gamemodes/tf/entities/entities/func_flagdetectionzone/init.lua @@ -0,0 +1,70 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + +function ENT:Initialize() + self.Team = 0 + self.Players = {} + self.Opened = false + + timer.Stop("Warning!") +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + self.Team = tonumber(value) + elseif key=="associatedmodel" then + self.ResupplyLockerName = value + end +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = -1 + for k,v in pairs(ents.FindByClass("item_teamflag")) do + if v.Carrier == ent then + if game.GetMap() == "sd_doomsday" then + for _,relay in pairs(ents.FindByName("touch_relay")) do + relay:Fire( "Trigger" ) + end + end + end + end + for k,v in pairs(ents.FindByClass("item_teamflag_mvm")) do + if v.Carrier == ent then + if string.find(game.GetMap(), "mvm_") then + for _,ply in ipairs(player.GetAll()) do + ply:SendLua([[surface.PlaySound("vo/mvm_bomb_alerts0"..math.random(4,5)..".mp3")]]) + if (ply.TFBot and !ply:IsFriendly(ent)) then + ply.TargetEnt = ent + end + timer.Create("Warning!", 3, 0, function() + ply:SendLua([[surface.PlaySound("mvm/mvm_bomb_warning.wav")]]) + end) + end + end + end + end + end +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = nil + for k,v in pairs(ents.FindByClass("item_teamflag")) do + if v.Carrier == ent then + if game.GetMap() == "sd_doomsday" then + for _,relay in pairs(ents.FindByName("drop_relay")) do + relay:Fire( "Trigger" ) + end + end + end + end + for k,v in pairs(ents.FindByClass("item_teamflag_mvm")) do + if string.find(game.GetMap(), "mvm_") then + timer.Stop("Warning!") + end + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/func_regenerate/init.lua b/gamemodes/tf/entities/entities/func_regenerate/init.lua new file mode 100644 index 000000000..6209aca41 --- /dev/null +++ b/gamemodes/tf/entities/entities/func_regenerate/init.lua @@ -0,0 +1,92 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + +function ENT:Initialize() + self.Team = 0 + self.Players = {} + self.Opened = false +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + self.Team = tonumber(value) + elseif key=="associatedmodel" then + self.ResupplyLockerName = value + end +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = -1 + end +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = nil + end +end + +function ENT:Think() + local resupplied + + for pl,last in pairs(self.Players) do + if (last==-1 or CurTime()-last>1) and IsValid(pl) and pl:IsPlayer() then + resupplied = true + end + end + + if resupplied and not self.Opened then + self:EmitSound("items/regenerate.wav", 100, 100) + for pl,last in pairs(self.Players) do + if (last==-1 or CurTime()-last>1) and IsValid(pl) and pl:IsPlayer() then + + GAMEMODE:GiveHealthPercent(pl, 100) + GAMEMODE:GiveAmmoPercent(pl, 100) + local c = GAMEMODE.PlayerClasses[pl:GetPlayerClass()] + pl.ItemLoadout = table.Copy(c.DefaultLoadout) + pl.ItemProperties = {} + pl:SetPlayerClass(pl:GetPlayerClass()) + pl:GiveLoadout() + self.Players[pl] = CurTime() + self.NextClose = CurTime() + 1.5 + + end + end + if not self.ResupplyLocker and self.ResupplyLockerName then + self.ResupplyLocker = ents.FindByName(self.ResupplyLockerName)[1] + ----print("associatedmodel : "..self.ResupplyLockerName.." : "..tostring(self.ResupplyLocker)) + end + + if self.ResupplyLocker and self.ResupplyLocker:IsValid(self.WModel2) then + --self.ResupplyLocker:ResetSequence(self.ResupplyLocker:LookupSequence("open")) + self.ResupplyLocker:Fire("SetAnimation", "open") + end + + self.Opened = true + self.NextClose = CurTime() + 1.5 + end + + if self.NextClose and CurTime()>=self.NextClose then + if self.ResupplyLocker and self.ResupplyLocker:IsValid(self.WModel2) then + --self.ResupplyLocker:ResetSequence(self.ResupplyLocker:LookupSequence("close")) + --self.NextIdle = CurTime() + self.ResupplyLocker:SequenceDuration() + self.ResupplyLocker:Fire("SetAnimation", "close") + self.NextIdle = CurTime() + 1.5 + else + self.NextIdle = CurTime() + 1.5 + end + self.NextClose = nil + end + + if self.NextIdle and CurTime()>=self.NextIdle then + --[[if self.ResupplyLocker and self.ResupplyLocker:IsValid(self.WModel2) then + self.ResupplyLocker:ResetSequence(self.ResupplyLocker:LookupSequence("idle")) + end]] + + self.NextIdle = nil + self.Opened = false + end +end diff --git a/gamemodes/tf/entities/entities/func_respawnroom/init.lua b/gamemodes/tf/entities/entities/func_respawnroom/init.lua new file mode 100644 index 000000000..467397fc6 --- /dev/null +++ b/gamemodes/tf/entities/entities/func_respawnroom/init.lua @@ -0,0 +1,92 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + +randomscoutubertaunt = +{ + "vo/Scout_specialcompleted12.mp3", + "vo/Scout_award05.mp3", + "vo/taunts/Scout_taunts02.mp3", + "vo/taunts/Scout_taunts09.mp3" +} +randomsoldierubertaunt = +{ + "vo/taunts/Soldier_taunts05.mp3", + "vo/taunts/Soldier_taunts11.mp3", + "vo/taunts/Soldier_taunts21.mp3", + "vo/taunts/Soldier_taunts06.mp3", + "vo/taunts/Soldier_taunts15.mp3", + "vo/taunts/Soldier_taunts04.mp3", + "vo/taunts/Soldier_taunts12.mp3" +} +randomdemomanubertaunt = +{ + "vo/taunts/demoman_taunts01.mp3", + "vo/taunts/demoman_taunts07.mp3", + "vo/taunts/demoman_taunts09.mp3", + "vo/taunts/demoman_taunts15.mp3", +} + +randompyroubertaunt = +{ + "vo/Pyro_specialcompleted01.mp3", + "vo/Pyro_laughlong01.mp3", +} +function ENT:Initialize() + local pos = self:GetPos() + local mins, maxs = self:WorldSpaceAABB() -- https://forum.facepunch.com/gmoddev/lmcw/Brush-entitys-ent-GetPos/1/#postdwfmq + pos = (mins + maxs) * 0.5 + + self.Pos = pos + self.Players = {} +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + local t = tonumber(value) + + if t==0 then + self.TeamNum = 0 + elseif t==2 then + self.TeamNum = TEAM_RED + elseif t==3 then + self.TeamNum = TEAM_BLU + end + + self.Team = tonumber(value) + end + self:SetNWInt("TeamNum",self.TeamNum) + self:SetNWInt("Team",self.Team) + --print(key, value, tonumber(value), self.Team, self.TeamNum) +end + +function ENT:StartTouch(ent) + --print(self.Team, self.TeamNum) + if ent:IsPlayer() then + ent:SetNWBool("InRespawnRoom",true) + end +end + +function ENT:Touch(ent) + if ent:IsPlayer() then + self.Players[ent] = ent:EntIndex() + ----print(self.Team) + ent:GodEnable() + end + --[[ + if (ent:IsPlayer()) then + if (ent:Team() ~= self:GetNWInt("TeamNum") && (ent:Team() == TEAM_RED or ent:Team() == TEAM_BLU)) then + ent:KillSilent() + ent:Spawn() + end + end]] +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + ent:SetNWBool("InRespawnRoom",false) + self.Players[ent] = nil + ent:GodDisable() + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/func_respawnroomvisualizer/init.lua b/gamemodes/tf/entities/entities/func_respawnroomvisualizer/init.lua new file mode 100644 index 000000000..1c490c7ea --- /dev/null +++ b/gamemodes/tf/entities/entities/func_respawnroomvisualizer/init.lua @@ -0,0 +1,80 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + + +function ENT:Initialize() + local pos = self:GetPos() + local mins, maxs = self:WorldSpaceAABB() -- https://forum.facepunch.com/gmoddev/lmcw/Brush-entitys-ent-GetPos/1/#postdwfmq + pos = (mins + maxs) * 0.5 + + self.Team = self.Team or 0 + self.TeamNum = self.TeamNum or 0 + self.Pos = pos + self.Players = {} + self:SetSolid(SOLID_BBOX) + self:SetCustomCollisionCheck( true ) +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + if key =="respawnroomname" then + for k,v in ipairs(ents.GetAll()) do + local t = tostring(value) + if (v:GetName() == t) then + self.RespawnRoom = v + self.TeamNum = v.TeamNum + --print(t) + end + end + end + --print(key, value, tostring(value), self.RespawnRoom) +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() then + if (!string.find(game.GetMap(), "mvm_")) then -- suck my dick + if (ent:Team() != TEAM_YELLOW and ent:Team() != TEAM_GREEN and ent:Team() != TEAM_NEUTRAL and ent:Team() != TEAM_FRIENDLY) then + --[[if ((self.TeamNum == ent:Team() or ent:Team() == self.TeamNum) and ent:Team() != TEAM_SPECTATOR and ent:Team() != 0) then + ent:KillSilent() + ent:Spawn() + ent:PrintMessage(HUD_PRINTCENTER,"You are not allowed to enter enemy spawnrooms.") + end]] + end + end + end +end + +hook.Add( "ShouldCollide", "RespawnRoomVisualizerCollision", function( ent1, ent2 ) + + -- If players are about to collide with each other, then they won't collide. + if ( ent1:GetClass() == "func_respawnroomvisualizer" and ent2:IsPlayer() ) then + if (ent1.TeamNum == TEAM_RED) then + if (ent2:Team() != TEAM_RED) then + return true + else + return false + end + elseif (ent1.TeamNum == TEAM_BLU) then + if (ent2:Team() != TEAM_BLU) then + return true + else + return false + end + end + elseif ( ent2:GetClass() == "func_respawnroomvisualizer" and ent1:IsPlayer() ) then + if (ent2.TeamNum == TEAM_RED) then + if (ent1:Team() != TEAM_RED) then + return true + else + return false + end + elseif (ent2.TeamNum == TEAM_BLU) then + if (ent1:Team() != TEAM_BLU) then + return true + else + return false + end + end + end + +end ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/func_upgradestation/init.lua b/gamemodes/tf/entities/entities/func_upgradestation/init.lua new file mode 100644 index 000000000..2ac57f478 --- /dev/null +++ b/gamemodes/tf/entities/entities/func_upgradestation/init.lua @@ -0,0 +1,90 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + + +function ENT:Initialize() + self.Team = 0 + self.Players = {} +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + self.Team = tonumber(value) + end +end +function ENT:StartTouch(ent) + if ent:IsPlayer() and ent:Team() == TEAM_RED then + self.Players[ent] = -1 + if ent:GetPlayerClass() == "scout" then + ent:SetArmor(2000) + elseif ent:GetPlayerClass() == "soldier" then + ent:SetArmor(2950) + elseif ent:GetPlayerClass() == "gmodplayer" then + ent:SetArmor(2950) + elseif ent:GetPlayerClass() == "pyro" then + ent:SetArmor(2220) + elseif ent:GetPlayerClass() == "demoman" then + ent:SetArmor(2220) + elseif ent:GetPlayerClass() == "heavy" then + ent:SetArmor(2320) + elseif ent:GetPlayerClass() == "engineer" then + ent:SetArmor(2420) + elseif ent:GetPlayerClass() == "medic" then + ent:SetArmor(2620) + elseif ent:GetPlayerClass() == "sniper" then + ent:SetArmor(2420) + elseif ent:GetPlayerClass() == "spy" then + ent:SetArmor(2920) + end + for _,currentweapon in ipairs(ent:GetWeapons()) do + if (IsValid(currentweapon)) then + if (currentweapon.Primary and currentweapon.Secondary and currentweapon.ReloadTime) then + if (!currentweapon.Primary.OldDelay and !currentweapon.Secondary.OldDelay and !currentweapon.OldReloadTime) then + currentweapon.Primary.OldDelay = currentweapon.Primary.Delay + currentweapon.Secondary.OldDelay = currentweapon.Secondary.Delay + currentweapon.OldReloadTime = currentweapon.ReloadTime + end + currentweapon.Primary.FastDelay = currentweapon.Primary.OldDelay * 0.6 + currentweapon.Secondary.FastDelay = currentweapon.Secondary.OldDelay * 0.6 + currentweapon.Primary.Delay = currentweapon.Primary.FastDelay + currentweapon.Secondary.Delay = currentweapon.Secondary.FastDelay + currentweapon.FastReloadTime = currentweapon.OldReloadTime * 0.4 + if (currentweapon.BaseDamage) then + if (!currentweapon.OldBaseDamage) then + currentweapon.ProjectileDamageMultiplier = 2.0 + currentweapon.OldBaseDamage = currentweapon.BaseDamage + currentweapon.BaseDamage = currentweapon.OldBaseDamage * 2.0 + end + end + if (currentweapon.ReloadStartTime) then + if (!currentweapon.FastReloadStartTime) then + currentweapon.FastReloadStartTime = currentweapon.ReloadStartTime * 0.6 + end + elseif (currentweapon.Primary.ClipSize) then + if (!currentweapon.Primary.OldClipSize) then + currentweapon.Primary.OldClipSize = currentweapon.Primary.ClipSize + currentweapon.Primary.ClipSize = currentweapon.Primary.OldClipSize * 3.0 + end + currentweapon:SetClip1(currentweapon.Primary.ClipSize) + end + end + end + end + ent.AmmoMax[TF_PRIMARY] = math.Round(ent.AmmoMax[TF_PRIMARY] * 2.5) + ent.AmmoMax[TF_SECONDARY] = math.Round(ent.AmmoMax[TF_SECONDARY] * 2.5) + ent.AmmoMax[TF_GRENADES1] = math.Round(ent.AmmoMax[TF_GRENADES1] * 7.0) + ent.AmmoMax[TF_METAL] = math.Round(ent.AmmoMax[TF_METAL] * 3.0) + + GAMEMODE:GiveAmmoPercent(ent,100) + ent:EmitSound("MVM.PlayerUpgraded") + end +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = nil + ent:Speak("TLK_MVM_UPGRADE_COMPLETE") + end +end diff --git a/gamemodes/tf/entities/entities/func_upgradestation/shared.lua b/gamemodes/tf/entities/entities/func_upgradestation/shared.lua new file mode 100644 index 000000000..aa08a0182 --- /dev/null +++ b/gamemodes/tf/entities/entities/func_upgradestation/shared.lua @@ -0,0 +1,899 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + + +function ENT:Initialize() + self.Team = 0 + self.Players = {} +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + self.Team = tonumber(value) + end +end +function ENT:StartTouch(ent) + if ent:IsPlayer() and ent:Team() == TEAM_RED then + self.Players[ent] = -1 + if ent:GetPlayerClass() == "scout" then + ent:SetHealth(125 + 150) + ent:SetMaxHealth(125 + 150) + ent:SetArmor(520) + elseif ent:GetPlayerClass() == "soldier" then + ent:SetHealth(200 + 150) + ent:SetMaxHealth(200 + 150) + ent:SetArmor(550) + elseif ent:GetPlayerClass() == "pyro" then + ent:SetHealth(175 + 150) + ent:SetMaxHealth(175 + 150) + ent:SetArmor(520) + elseif ent:GetPlayerClass() == "demoman" then + ent:SetHealth(150 + 175) + ent:SetMaxHealth(150 + 175) + ent:SetArmor(520) + elseif ent:GetPlayerClass() == "heavy" then + ent:SetHealth(300 + 175) + ent:SetMaxHealth(300 + 175) + ent:SetArmor(570) + elseif ent:GetPlayerClass() == "engineer" then + ent:SetHealth(125 + 150) + ent:SetMaxHealth(125 + 150) + ent:SetArmor(520) + elseif ent:GetPlayerClass() == "medic" then + ent:SetHealth(175 + 150) + ent:SetMaxHealth(175 + 150) + ent:SetArmor(520) + elseif ent:GetPlayerClass() == "sniper" then + ent:SetHealth(125 + 150) + ent:SetMaxHealth(125 + 150) + ent:SetArmor(300) + elseif ent:GetPlayerClass() == "spy" then + ent:SetHealth(125 + 150) + ent:SetMaxHealth(125 + 150) + ent:SetArmor(330) + end + currentweapon = ent:GetActiveWeapon() + if currentweapon:GetClass() == "tf_weapon_rocketlauncher" then + currentweapon.Primary.Delay = 0.5 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent.AmmoMax[TF_PRIMARY] = 120 + ent:ConCommand("tf_upgradewep05clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_rocketlauncher_bbox" then + currentweapon.Primary.Delay = 0.5 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep05clientonly") + ent.AmmoMax[TF_PRIMARY] = 120 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_rocketlauncher_qrl" then + currentweapon.Primary.Delay = 0.5 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep05clientonly") + ent.AmmoMax[TF_PRIMARY] = 120 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_rocketlauncher_dh" then + currentweapon.Primary.Delay = 0.5 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep05clientonly") + ent.AmmoMax[TF_PRIMARY] = 120 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_rocketlauncher_airstrike" then + currentweapon.Primary.Delay = 0.2 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + ent.AmmoMax[TF_PRIMARY] = 120 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_minigun" then + currentweapon.Primary.Delay = 0.06 + currentweapon.BaseDamage = 6 + currentweapon.MaxDamageRampUp = 0.75 + currentweapon.MaxDamageFalloff = 0.6 + ent.AmmoMax[TF_PRIMARY] = 400 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_pda_engineer_build" then + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their existing Buildings" ) + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == ent then + v.FireRate = 0.065 + v:SetHealth(862) + v:SetMaxHealth(862) + end + end + for k,v in pairs(ents.FindByClass("obj_dispenser")) do + if v:GetOwner() == ent then + v.Range = 320 + v:SetHealth(862) + v:SetMaxHealth(862) + end + end + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_minifun" then + currentweapon.Primary.Delay = 0.06 + currentweapon.BaseDamage = 6 + currentweapon.BaseDamage = 5 + ent.AmmoMax[TF_PRIMARY] = 400 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_minigun_tomislav" then + currentweapon.Primary.Delay = 0.06 + currentweapon.BaseDamage = 6 + currentweapon.BaseDamage = 9 + ent.AmmoMax[TF_PRIMARY] = 400 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_minigun_burner" then + currentweapon.Primary.Delay = 0.06 + currentweapon.BaseDamage = 6 + currentweapon.BaseDamage = 9 + ent.AmmoMax[TF_PRIMARY] = 400 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_minigun_bb" then + currentweapon.Primary.Delay = 0.06 + currentweapon.BaseDamage = 6 + currentweapon.BaseDamage = 9 + ent.AmmoMax[TF_PRIMARY] = 400 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_minigun_ic" then + currentweapon.Primary.Delay = 0.06 + currentweapon.BaseDamage = 6 + currentweapon.BaseDamage = 9 + ent.AmmoMax[TF_PRIMARY] = 400 + + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $300 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shotgun_soldier" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_revolver" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 11 + currentweapon.ReloadTime = 0.71 + ent.AmmoMax[TF_PRIMARY] = 400 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_sentry_revenge" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shotgun_imalreadywidowmaker" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shotgun_hwg" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their S"..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_flaregun" then + currentweapon.Primary.Delay = 0.5 + ent:ConCommand("tf_upgradewep05clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shotgun_pyro" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $500 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shotgun_primary" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_flamethrower" then + +currentweapon.Primary.Delay = 0.015 + currentweapon.BaseDamage = 6 + ent.AmmoMax[TF_PRIMARY] = 600 + ent.AmmoMax[TF_PRIMARY] = 600 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_flamethrower_bb" then + +currentweapon.Primary.Delay = 0.015 + currentweapon.BaseDamage = 6 + ent.AmmoMax[TF_PRIMARY] = 600 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_flamethrower_degreaser" then + +currentweapon.Primary.Delay = 0.015 + currentweapon.BaseDamage = 6 + ent.AmmoMax[TF_PRIMARY] = 600 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_flamethrower_rb" then + +currentweapon.Primary.Delay = 0.015 + currentweapon.BaseDamage = 6 + ent.AmmoMax[TF_PRIMARY] = 600 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their F"..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_phlogistinator" then + +currentweapon.Primary.Delay = 0.015 + currentweapon.BaseDamage = 6 + ent.AmmoMax[TF_PRIMARY] = 600 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_scattergun" then + currentweapon.Primary.Delay = 0.3 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent:ConCommand("tf_upgradewep03clientonly") + ent.AmmoMax[TF_PRIMARY] = 120 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_handgun_scout" then + currentweapon.Primary.Delay = 0.22 + currentweapon.BaseDamage = 23 + currentweapon.Primary.ClipSize = 8 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_sniperrifle" then + currentweapon.Primary.Delay = 0.7 + currentweapon.BaseDamage = 120 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_smg" then + currentweapon.Primary.Delay = 0.08 + currentweapon.Primary.ClipSize = 35 + currentweapon.BaseDamage = 30 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $600 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_grenadelauncher" then + currentweapon.Primary.Delay = 0.4 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + ent.AmmoMax[TF_PRIMARY] = 80 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their G"..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_pipebomblauncher" then + currentweapon.Primary.Delay = 0.3 + currentweapon.Primary.ClipSize = 12 + currentweapon.ReloadTime = 0.2 + currentweapon.MaxBombs = 12 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $1200 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_pistol_scout" then + currentweapon.Primary.Delay = 0.08 + currentweapon.Primary.ClipSize = 16 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shortcircuit" then + currentweapon.Primary.Delay = 0.08 + currentweapon.Secondary.Delay = 0.4 + currentweapon.BaseDamage = 140 + ent.AmmoMax[TF_METAL] = 550 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_pistol" then + currentweapon.Primary.Delay = 0.08 + currentweapon.BaseDamage = 12 + currentweapon.Primary.ClipSize = 16 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_bat" then + currentweapon.Primary.Delay = 0.2 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_bat_wood" then + currentweapon.Primary.Delay = 0.25 + currentweapon.Secondary.Delay = 2 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_club" then + currentweapon.Primary.Delay = 0.43 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_wrench" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + ent.AmmoMax[TF_METAL] = 450 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_robot_arm" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + ent.AmmoMax[TF_METAL] = 450 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_engi_fist" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + ent.AmmoMax[TF_METAL] = 450 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_bottle" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_fireaxe" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_syringegun_medic" then + currentweapon.Primary.Delay = 0.07 + currentweapon.BaseDamage = 65 + currentweapon.Primary.ClipSize = 80 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_medigun" then + currentweapon.MinHealRate = 250 + currentweapon.MaxHealRate = 252 + currentweapon.MinLastDamageTime = 18 + currentweapon.MaxLastDamageTime = 19 + currentweapon.UberchargeRate = 12 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Medigun upgrades for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_medigun_vaccinator" then + currentweapon.MinHealRate = 300 + currentweapon.MaxHealRate = 300 + currentweapon.MinLastDamageTime = 18 + currentweapon.MaxLastDamageTime = 19 + currentweapon.UberchargeRate = 16 + currentweapon.Overpowered = true + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Medigun upgrades for their Vaccinator" ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_medigun_quickfix" then + currentweapon.MinHealRate = 330 + currentweapon.MaxHealRate = 332 + currentweapon.MinLastDamageTime = 18 + currentweapon.MaxLastDamageTime = 19 + currentweapon.UberchargeRate = 16 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Medigun upgrades for their Quick-Fix" ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_bonesaw" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_fists" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_shovel" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 95 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_sword" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 150 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_katana" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 150 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_allclass" and ent:GetPlayerClass() != "scout" then + currentweapon.Primary.Delay = 0.5 + currentweapon.BaseDamage = 100 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + if currentweapon:GetClass() == "tf_weapon_allclass" and ent:GetPlayerClass() == "scout" then + currentweapon.Primary.Delay = 0.2 + currentweapon.BaseDamage = 100 + PrintMessage( HUD_PRINTTALK, "Player "..ent:Nick().." bought Rapid Fire with $400 dollars for their "..self:GetItemData().item_name ) + timer.Simple(0.1, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.4, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + timer.Simple(0.6, function() + ent:EmitSound("mvm/mvm_bought_upgrade.wav", 80, 100) + end) + end + end +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = nil + if ent:GetPlayerClass() == "heavy" then + ent:EmitSound("vo/heavy_mvm_get_upgrade0"..math.random(1,6)..".mp3", 80, 100) + elseif ent:GetPlayerClass() == "soldier" then + ent:EmitSound("vo/soldier_mvm_get_upgrade0"..math.random(1,3)..".mp3", 80, 100) + elseif ent:GetPlayerClass() == "engineer" then + ent:EmitSound("vo/engineer_mvm_get_upgrade0"..math.random(1,2)..".mp3", 80, 100) + elseif ent:GetPlayerClass() == "medic" then + ent:EmitSound("vo/medic_mvm_get_upgrade0"..math.random(1,4)..".mp3", 80, 100) + end + end +end diff --git a/addon/gamemodes/teamfortress/entities/entities/info_dummy/shared.lua b/gamemodes/tf/entities/entities/info_dummy/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/info_dummy/shared.lua rename to gamemodes/tf/entities/entities/info_dummy/shared.lua diff --git a/gamemodes/tf/entities/entities/info_observer_point/shared.lua b/gamemodes/tf/entities/entities/info_observer_point/shared.lua new file mode 100644 index 000000000..7d879b3b2 --- /dev/null +++ b/gamemodes/tf/entities/entities/info_observer_point/shared.lua @@ -0,0 +1,8 @@ +-- observer point for spectating +AddCSLuaFile() +ENT.Type = "anim" + +function ENT:Initialize() + self:SetModel("models/editor/camera.mdl") + self:SetNoDraw(true) +end diff --git a/gamemodes/tf/entities/entities/info_player_bluteamspawn.lua b/gamemodes/tf/entities/entities/info_player_bluteamspawn.lua new file mode 100644 index 000000000..c98724fc0 --- /dev/null +++ b/gamemodes/tf/entities/entities/info_player_bluteamspawn.lua @@ -0,0 +1,8 @@ +AddCSLuaFile() +ENT.Type = "anim" +ENT.Base = "info_player_redteamspawn" +ENT.Team = TEAM_BLU +ENT.Spawnable = true +ENT.PrintName = "BLU Spawnpoint" +ENT.Category = "Team Fortress 2" +ENT.AdminOnly = true \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/info_player_datatable/shared.lua b/gamemodes/tf/entities/entities/info_player_datatable/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/info_player_datatable/shared.lua rename to gamemodes/tf/entities/entities/info_player_datatable/shared.lua diff --git a/gamemodes/tf/entities/entities/info_player_redteamspawn.lua b/gamemodes/tf/entities/entities/info_player_redteamspawn.lua new file mode 100644 index 000000000..34fae3c76 --- /dev/null +++ b/gamemodes/tf/entities/entities/info_player_redteamspawn.lua @@ -0,0 +1,45 @@ +AddCSLuaFile() +ENT.Type = "anim" +ENT.Team = TEAM_RED +ENT.Spawnable = true +ENT.PrintName = "RED Spawnpoint" +ENT.Category = "Team Fortress 2" +ENT.AdminOnly = true + + +function ENT:SpawnFunction(pl, tr) + if not tr.Hit then return end + + local pos = tr.HitPos + + local ent = ents.Create(self.ClassName) + ent:SetPos(pos) + ent:Spawn() + ent:Activate() + + ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + ent:SetAngles((pl:GetPos() - ent:GetPos()):Angle()) + + local point = ents.Create("info_player_teamspawn") + point:SetPos(pos) + point:SetKeyValue("TeamNum",self.Team) + point:Spawn() + point:Activate() + point:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + point:SetParent(ent) + + return ent +end + +function ENT:Initialize() + + self:SetModel("models/editor/playerstart.mdl") + self:SetMaterial("models/debug/debugwhite") + self:SetColor(Color(team.GetColor(self.Team).r,team.GetColor(self.Team).g,team.GetColor(self.Team).b,100)) + self:SetRenderMode(RENDERMODE_TRANSCOLOR) + self:SetRenderFX(kRenderFxHologram) + self:SetSolid(SOLID_BBOX) + self:SetModelScale(1.0) + self:SetCollisionGroup(COLLISION_GROUP_WORLD) + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/init.lua b/gamemodes/tf/entities/entities/init.lua new file mode 100644 index 000000000..3e90ffc16 --- /dev/null +++ b/gamemodes/tf/entities/entities/init.lua @@ -0,0 +1,178 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + + +function ENT:Initialize() + self.Players = 0 +end + +function ENT:InitPostEntity() + --print(self) + self.CapturePoint = ents.FindByName(self.Properties.area_cap_point or "")[1] or NULL + + if IsValid(self.CapturePoint) then + self.CapturePoint.TriggerEntity = self + self.CapturePoint.TeamCanCap = { + [2]=(self.Properties.team_cancap_2==1), + [3]=(self.Properties.team_cancap_3==1), + } + end + + PrintTable(self.Properties or {}) +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if not self.Properties then + self.Properties = {} + end + if tonumber(value) then value=tonumber(value) end + self.Properties[key] = value +end + +function ENT:Think() + if not GAMEMODE.PostEntityDone then return end + if GAMEMODE.PostEntityDone and not self.PostEntityDone then + self:InitPostEntity() + self.PostEntityDone = true + return + end + if (IsValid(self.Train)) then + if (self.Players == 0) then + if (!timer.Exists("CartGoesBackwards"..self:EntIndex())) then + timer.Create("CartGoesBackwards"..self:EntIndex(), 30, 1, function() + self.Train:Fire("SetSpeed",tostring(-0.1),0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_MOVING_BACKWARD",false) + end + end) + end + else + if (timer.Exists("CartGoesBackwards"..self:EntIndex())) then + timer.Stop("CartGoesBackwards"..self:EntIndex()) + end + end + end +end + +function ENT:AcceptInput(name, activator, caller, data) + +end + +function ENT:StartTouch(ent) + for k,v in ipairs(ents.FindByClass("team_train_watcher")) do + if (IsValid(v.Train)) then + self.Train = v.Train + end + end + if (ent:IsPlayer()) then + self.Players = self.Players + 1 + end + if (IsValid(self.Train)) then + if (ent:IsPlayer()) then + if (ent:Team() == TEAM_BLU) then + self.Train:Fire("SetSpeed",tostring(0.3 * self.Players),0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_MOVING_FORWARD",false) + end + else + self.Train:Fire("Stop","",0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_STOP",false) + end + end + end + else + if IsValid(self.CapturePoint) and ent:IsPlayer() then + if ent.CurrentControlPoint ~= self.CapturePoint.ID then + ent.CurrentControlPoint = self.CapturePoint.ID + umsg.Start("TF_EnterControlPoint", ent) + umsg.Char(ent.CurrentControlPoint) + umsg.End() + if GAMEMODE:EntityTeam(self.CapturePoint) != ent:Team() then + umsg.Start("TF_PlayGlobalSound", ent) + umsg.String("Announcer.ControlPointContested") + umsg.End() + self.CapturePoint:EmitSound("ControlPoint.Start", 80, 100) + self.CapturePoint:EmitSound("ControlPoint.Move", 80, 100) + timer.Create("CapPoint"..ent.CurrentControlPoint, 10, 1, function() + umsg.Start("TF_SetControlPointTeam", ent) + umsg.Char(ent.CurrentControlPoint) + umsg.Float(tonumber(ent:Team()) + 1) + umsg.End() + umsg.Start("TF_UnLockControlPoint", ent) + umsg.Char(ent.CurrentControlPoint) + umsg.End() + for k,v in ipairs(ents.FindByClass("team_control_point")) do + if GAMEMODE:EntityTeam(v) != GAMEMODE:EntityTeam(self.ControlPoint) then + umsg.Start("TF_UnLockControlPoint", ent) + umsg.Char(v.ID) + umsg.End() + end + end + if ent:Team() == TEAM_RED then + self.CapturePoint:SetBodygroup(0, ent:Team() + 1) + elseif ent:Team() == TEAM_BLU then + self.CapturePoint:SetBodygroup(0, ent:Team() + 1) + end + self.CapturePoint:SetNWInt("Team", ent:Team()) + self.CapturePoint:ResetSequence(self.CapturePoint:SelectWeightedSequence(ACT_IDLE)) + self.CapturePoint:DrawShadow(false) + self.CapturePoint:StopSound("ControlPoint.Move") + self.CapturePoint:EmitSound("ControlPoint.Stop") + end) + end + if GAMEMODE:EntityTeam(self.CapturePoint) == ent:Team() then + timer.Stop("CapPoint"..ent.CurrentControlPoint) + self.CapturePoint:StopSound("ControlPoint.Move") + self.CapturePoint:EmitSound("ControlPoint.Malfunction") + timer.Create("CapPoint"..ent.CurrentControlPoint, 20, 1, function() + self.CapturePoint:StopSound("ControlPoint.Malfunction") + self.CapturePoint:EmitSound("ControlPoint.Stop") + end) + + end + end + end + end +end + +function ENT:EndTouch(ent) + for k,v in ipairs(ents.FindByClass("team_train_watcher")) do + if (IsValid(v.Train)) then + self.Train = v.Train + end + end + + if (ent:IsPlayer()) then + self.Players = self.Players - 1 + end + if (IsValid(self.Train)) then + if (ent:IsPlayer()) then + self.Train:Fire("Stop","",0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_STOP",false) + end + end + else + if IsValid(self.CapturePoint) and ent:IsPlayer() then + if ent.CurrentControlPoint == self.CapturePoint.ID then + timer.Stop("CapPoint"..ent.CurrentControlPoint) + ent.CurrentControlPoint = -1 + umsg.Start("TF_ExitControlPoint", ent) + umsg.End() + + if GAMEMODE:EntityTeam(self.CapturePoint) != ent:Team() then + + timer.Create("CapPoint"..self.CapturePoint, 20, 1, function() + self.CapturePoint:StopSound("ControlPoint.Move") + self.CapturePoint:StopSound("ControlPoint.Malfunction") + self.CapturePoint:EmitSound("ControlPoint.Stop") + end) + + end + end + end + end +end diff --git a/gamemodes/tf/entities/entities/item_ammopack_base/shared.lua b/gamemodes/tf/entities/entities/item_ammopack_base/shared.lua new file mode 100644 index 000000000..4c9f46403 --- /dev/null +++ b/gamemodes/tf/entities/entities/item_ammopack_base/shared.lua @@ -0,0 +1,31 @@ + +ENT.Type = "anim" +ENT.Base = "item_base" + +ENT.Model = "models/items/ammopack_small.mdl" +ENT.AmmoPercentage = 1 + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanPickup(ply) + return not ply:HasFullAmmo() +end + +function ENT:PlayerTouched(pl) + local a = self.AmmoPercentage + if pl.TempAttributes and pl.TempAttributes.AmmoFromPacksMultiplier then + a = a * pl.TempAttributes.AmmoFromPacksMultiplier + end + if pl:IsPlayer() then + if (GAMEMODE:GiveAmmoPercent(pl, a)) then + pl:SendLua([[EmitSound("AmmoPack.Touch", Vector(]]..pl:GetPos().x..[[,]]..pl:GetPos().y..[[,]]..pl:GetPos().z..[[))]]) + self:Hide() + end + end +end + + + +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/item_ammopack_full/shared.lua b/gamemodes/tf/entities/entities/item_ammopack_full/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/item_ammopack_full/shared.lua rename to gamemodes/tf/entities/entities/item_ammopack_full/shared.lua diff --git a/gamemodes/tf/entities/entities/item_ammopack_gift/shared.lua b/gamemodes/tf/entities/entities/item_ammopack_gift/shared.lua new file mode 100644 index 000000000..890aaa1d7 --- /dev/null +++ b/gamemodes/tf/entities/entities/item_ammopack_gift/shared.lua @@ -0,0 +1,9 @@ +ENT.Type = "anim" +ENT.Base = "item_gift_base" + +ENT.Model = "models/items/tf_gift.mdl" +ENT.AmmoPercentage = 25 + +if SERVER then + AddCSLuaFile("shared.lua") +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/item_ammopack_medium/shared.lua b/gamemodes/tf/entities/entities/item_ammopack_medium/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/item_ammopack_medium/shared.lua rename to gamemodes/tf/entities/entities/item_ammopack_medium/shared.lua diff --git a/addon/gamemodes/teamfortress/entities/entities/item_ammopack_small/shared.lua b/gamemodes/tf/entities/entities/item_ammopack_small/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/item_ammopack_small/shared.lua rename to gamemodes/tf/entities/entities/item_ammopack_small/shared.lua diff --git a/gamemodes/tf/entities/entities/item_base/shared.lua b/gamemodes/tf/entities/entities/item_base/shared.lua new file mode 100644 index 000000000..477f2fa30 --- /dev/null +++ b/gamemodes/tf/entities/entities/item_base/shared.lua @@ -0,0 +1,152 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Model = "" + +--ENT.AutomaticFrameAdvance = true + +if SERVER then + +AddCSLuaFile("shared.lua") + +ENT.RespawnTime = 10 + +function ENT:SpawnFunction(pl, tr) + if not tr.Hit then return end + + local pos = tr.HitPos + + local ent = ents.Create(self.ClassName) + ent:SetPos(pos) + ent:Spawn() + ent:Activate() + + ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + + ent.RespawnTime = -1 + + return ent +end + +function ENT:Initialize() + self:SetSolid(SOLID_VPHYSICS) + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_NONE) + --self:SetNoDraw(true) + + --self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:SetTrigger(true) + self:SetNotSolid(true) + + --[[ + self.Prop = ents.Create("prop_dynamic") + self.Prop:SetMoveType(MOVETYPE_NONE) + self.Prop:SetSolid(SOLID_NONE) + self.Prop:SetModel(self.Model) + self.Prop:SetPos(self:GetPos()) + self.Prop:SetAngles(self:GetAngles()) + self.Prop:Spawn() + + self.Prop:SetParent(self) + + local sequence = self.Prop:LookupSequence("idle") + self.Prop:ResetSequence(sequence) + self.Prop:SetPlaybackRate(1) + self.Prop:SetCycle(1)]] + + local sequence = self:SelectWeightedSequence(ACT_IDLE) + self:ResetSequence(sequence) + self:SetPlaybackRate(1) + self:SetCycle(0) + + if self.ActivateDelay then + self.NextActive = CurTime() + self.ActivateDelay + end +end + +function ENT:DropWithGravity(vel) + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + self:SetVelocity(vel) +end + +function ENT:KeyValue(key, value) + key = string.lower(key) + + if key=="model" then + self:SetModel(value) + end +end + +function ENT:SetRespawnTime(time) + self.RespawnTime = time +end + +function ENT:Show() + self:SetTrigger(true) + --self.Prop:SetColor(255,255,255,255) + self:SetNoDraw(false) + self:DrawShadow(true) + self:EmitSoundEx("items/spawn_item.wav", 100, 100) +end + +function ENT:Hide() + if self.RespawnTime<0 then + self:Remove() + return + end + + self:SetTrigger(false) + --self.Prop:SetColor(0,0,0,0) + self:SetNoDraw(true) + self:DrawShadow(false) + + if self.RespawnTime then + self.NextRespawn = CurTime() + self.RespawnTime + end +end + +function ENT:Think() + if self.NextActive and CurTime()>=self.NextActive then + self.NextActive = nil + end + + if self.NextRespawn and CurTime()>=self.NextRespawn then + self:Show() + self.NextRespawn = nil + end +end + +function ENT:CanPickup(ply) + return true +end + +function ENT:PlayerTouched(pl) + +end + +function ENT:StartTouch(ent) + if not self.NextActive and ent:IsTFPlayer() and self:CanPickup(ent) and ent != self:GetOwner() then + self:PlayerTouched(ent) + end +end + +end + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_OPAQUE + +function ENT:Draw() + -- fuck AutomaticFrameAdvance, this is better + if self.LastDrawn then + self:FrameAdvance(CurTime() - self.LastDrawn) + end + self.LastDrawn = CurTime() + + self:DrawModel() +end + +end diff --git a/gamemodes/tf/entities/entities/item_droppedweapon/shared.lua b/gamemodes/tf/entities/entities/item_droppedweapon/shared.lua new file mode 100644 index 000000000..188df3ced --- /dev/null +++ b/gamemodes/tf/entities/entities/item_droppedweapon/shared.lua @@ -0,0 +1,101 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +if SERVER then + +AddCSLuaFile("shared.lua") + +ENT.AmmoPercent = 10 +ENT.LifeTime = 30 + +function ENT:Initialize() + if self.WeaponEntity then + if not IsValid(self.WeaponEntity) then + self:Remove() + return + end + + self:SetPos(self.WeaponEntity:GetPos()) + self:SetAngles(self.WeaponEntity:GetAngles()) + self:SetModel(self.WeaponEntity:GetModel()) + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetOwner(self.WeaponEntity) + self:SetParent(self.WeaponEntity) + self:DeleteOnRemove(self.WeaponEntity) + self:SetCollisionGroup(COLLISION_GROUP_WEAPON) + self:SetTrigger(false) + self:SetNoDraw(true) + self.Active = false + else + self:SetCollisionGroup(COLLISION_GROUP_WEAPON) + self:SetTrigger(true) + self.NextDie = CurTime() + self.LifeTime + end +end + +function ENT:Think() + if IsValid(self.WeaponEntity) then + if IsValid(self.WeaponEntity:GetOwner()) then + if self.Active then + self.Active = false + self:SetTrigger(false) + self.NextDie = nil + end + else + if not self.Active then + self.Active = true + self:SetTrigger(true) + self.NextDie = CurTime() + self.LifeTime + end + end + end + + if self.NextDie and CurTime()>=self.NextDie then + self:Remove() + return false + end +end + +function ENT:CanPickup(ply) + if ply:IsHL2() then return false end + + if IsValid(self.WeaponEntity) and IsValid(self.WeaponEntity:GetOwner()) then + return false + end + + return not ply:HasFullAmmo() +end + +function ENT:PlayerTouched(pl) + pl:SendLua([[EmitSound("Player.PickupWeapon", Vector(]]..pl:GetPos().x..[[,]]..pl:GetPos().y..[[,]]..pl:GetPos().z..[[))]]) + self:Remove() + GAMEMODE:GiveAmmoPercent(pl, self.AmmoPercent) +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() and self:CanPickup(ent) then + self:PlayerTouched(ent) + end +end + +function ENT:OnTakeDamage(dmginfo) + if not self.WeaponEntity then + self:TakePhysicsDamage(dmginfo) + end +end + +end + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Draw() + self:DrawModel() +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/item_duck/shared.lua b/gamemodes/tf/entities/entities/item_duck/shared.lua new file mode 100644 index 000000000..8516fb8c0 --- /dev/null +++ b/gamemodes/tf/entities/entities/item_duck/shared.lua @@ -0,0 +1,36 @@ +ENT.PrintName = "Duck" +ENT.Author = "Agent Agrimar, _Kilburn" +ENT.Information = "It's a duck! Quack." +ENT.Category = "Team Fortress 2" + +ENT.Spawnable = true +ENT.AdminSpawnable = true + +ENT.Type = "anim" +ENT.Base = "item_healthkit_base" + +ENT.Model = "models/items/target_duck.mdl" +ENT.HealthPercentage = 1 + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanPickup(ply) + return ply:Health()= 80 and self.PickupLock[v] then + self.PickupLock[v] = nil + end + end + end + + if self.NextReturn then + if not self.NextClientUpdateTimer or CurTime()>self.NextClientUpdateTimer then + self:SetNWFloat("TimeRemaining", self.NextReturn - CurTime()) + self.NextClientUpdateTimer = CurTime() + 0.5 + end + + if CurTime()>self.NextReturn then + self:Return() + end + else + self.NextClientUpdateTimer = nil + end + + if IsValid(self.Carrier) and isstring(self.Carrier.Team) and (self.Carrier.Team == "RED" or self.Carrier.Team == "BLU" ) then + local intel = nil + local fintel = nil + local intelcap = nil + local fintelcap = nil + if self.Carrier:Health() <= 1 then + self:Drop() + elseif !IsValid(self.Carrier) then + self:Drop() + end + if self.Carrier:Health() >= 1 then + for k, v in pairs(ents.FindByClass("item_teamflag")) do + if v.TeamNum ~= GAMEMODE:EntityTeam(self.Carrier) then + intel = v + else + fintel = v + end + end + + for k, v in pairs(ents.FindByClass("func_capturezone")) do + if v.TeamNum ~= GAMEMODE:EntityTeam(self.Carrier) then + intelcap = v + else + fintelcap = v + end + end + + self.Carrier:RunToPos(fintel:GetPos(), {tolerance = 60} ) + end + end + +end + +function ENT:CanPickup(ply) + return ply:Team()~=self.TeamNum or GAMEMODE:EntityTeam(ply)~=self.TeamNum and not self.PickupLock[v] +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() and self:CanPickup(ent) and not self.PickupLock[ent] then + self:PlayerTouched(ent) + end + if isstring(ent.Team) and (ent.Team == "RED" or ent.Team == "BLU" ) then + if ent.Team == "BLU" and self.TeamNum == TEAM_RED then + self:PlayerTouched(ent) + elseif ent.Team == "RED" and self.TeamNum == TEAM_BLU then + self:PlayerTouched(ent) + end + end +end + +function ENT:EndTouch(ent) + if self.PickupLock[ent] then + self.PickupLock[ent] = nil + end +end + +function ENT:PlayerTouched(pl) + self:Pickup(pl) +end + +function ENT:Capture() + self:Return(true) + if IsValid(self.Carrier) then + self:TriggerOutput("OnCapture", self.Carrier) + end +end + +function ENT:Return(nosound) + if self.State~=0 then + self:Drop(true) + self.State = 0 + self:SetNWBool("TimerActive", false) + self.NextReturn = nil + self:SetPos(self.HomePosition) + self:SetAngles(self.HomeAngles) + --print(self.HomePosition) + self:TriggerOutput("OnReturn") + + if nosound then + return + end + + for _, ply in pairs(player.GetAll()) do + if ply:Team() ~= self.TeamNum then + ply:SendLua([[surface.PlaySound("vo/intel_teamreturned.wav")]]) + else + ply:SendLua([[surface.PlaySound("vo/intel_enemyreturned.wav")]]) + end + end + end +end + +function ENT:Pickup(ply) + if self.State~=1 and not IsValid(self.Carrier) then + if not self.HomePosition or not self.HomeAngles then + self.HomePosition = self:GetPos() + self.HomeAngles = self:GetAngles() + end + + self:SetNWBool("TimerActive", false) + self.NextReturn = nil + + self.State = 1 + self.Trail:Fire("Start") + self.Carrier = ply + self.Prop:ResetSequence(self.Prop:LookupSequence("idle")) + self.Prop:SetPlaybackRate(1) + self.Prop:SetCycle(1) + self:SetNotSolid(true) + self:SetTrigger(false) + self:SetParent(ply) + ply:Speak("TLK_FLAGPICKUP") + self:Fire("SetParentAttachment", "flag", 0) + if ply:IsPlayer() and ply:IsHL2() then + self:Fire("SetParentAttachment", "chest", 0) + end + self:TriggerOutput("OnPickup", ply) + + for _, ply in pairs(player.GetAll()) do + if ply:Team() ~= self.TeamNum then + ply:SendLua([[surface.PlaySound("vo/intel_teamstolen.wav")]]) + else + ply:SendLua([[surface.PlaySound("vo/intel_enemystolen.wav")]]) + end + end + end +end + +function ENT:Drop(nosound) + if self.State==1 and IsValid(self.Carrier) then + self:SetNWBool("TimerActive", true) + self:SetNWFloat("TimeRemaining", FlagReturnTime) + self.NextReturn = CurTime() + FlagReturnTime + + local ply = self.Carrier + self.PickupLock[ply] = 1 -- Prevent the player who dropped it to pick it up immediately again + self.State = 2 + self.Trail:Fire("Stop") + self.Carrier = nil + self.Prop:ResetSequence(self.Prop:LookupSequence("spin")) + self.Prop:SetPlaybackRate(1) + self.Prop:SetCycle(1) + self:SetNotSolid(false) + self:SetTrigger(true) + self:SetParent() + self:SetAngles(Angle(0, self:GetAngles().y, 0)) + self:DropToFloor() + self:TriggerOutput("OnDrop", ply) + + if nosound then + return + end + + for _, ply in pairs(player.GetAll()) do + if ply:Team() ~= self.TeamNum then + ply:SendLua([[surface.PlaySound("vo/intel_teamdropped.wav")]]) + else + ply:SendLua([[surface.PlaySound("vo/intel_enemydropped.wav")]]) + end + end + end +end + +function ENT:AcceptInput(name, activator, caller, value) + name = string.lower(name) + if name=="skin" then + self:SetSkin(tonumber(value) or 0) + elseif name=="setteam" then + local t = tonumber(value) + + if t==0 then + self.TeamNum = 0 + self:SetSkin(2) + self.Prop:SetSkin(2) + elseif t==2 then + self.TeamNum = TEAM_RED + self:SetSkin(0) + self.Prop:SetSkin(0) + elseif t==3 then + self.TeamNum = TEAM_BLU + self:SetSkin(1) + self.Prop:SetSkin(1) + end + end +end + +end + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +local colors = { + [0]=Color(255,0,0,255), + [1]=Color(0,0,255,255), + [2]=Color(255,255,255,255), +} + +function ENT:Initialize() + self.Progress = vgui.Create("CircularProgressBar") + self.Progress:SetSize(128, 128) + self.Progress:SetBackgroundTexture("vgui/flagtime_empty") + self.Progress:SetForegroundTexture("vgui/flagtime_full") + self.Progress:SetProgress(0) + self.Progress:SetCentered(true) + self.Progress:SetVisible(false) + + local min, max = self:GetRenderBounds() + max.z = max.z + 100 + self:SetRenderBounds(min, max) +end + +function ENT:Draw() + if IsValid(self:GetNWEntity("prop", self)) and IsValid(self:GetParent()) then + if self:GetParent() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then + self:GetNWEntity("prop", self):SetNoDraw(true) -- true) + else + self:GetNWEntity("prop", self):SetNoDraw(false) + end + + if self:GetParent():IsHL2() and self:GetParent():LookupAttachment("chest") > 0 then + local att = self:GetParent():GetAttachment(self:GetParent():LookupAttachment("chest")) + local ang = att.Ang + local pos = att.Pos + local pos2, ang2 = LocalToWorld(ang:Forward() * 10, Angle(90, 0, 180), pos, ang) + self:GetNWEntity("prop", self):SetAngles(ang2) + self:GetNWEntity("prop", self):SetPos(pos - ang:Forward() * 10) + --self:Fire("SetParentAttachment", "chest", 0) + end + end + + if not self:GetNWBool("TimerActive") then return end + + local s = self:GetSkin() + if self.OldSkin~=s then + self.Progress:SetBackgroundColor(colors[s]) + self.Progress:SetForegroundColor(colors[s]) + self.OldSkin = s + end + + local ang = EyeAngles() + ang:RotateAroundAxis(ang:Right(), 90) + ang:RotateAroundAxis(ang:Up(), -90) + + local W,H = ScrW(), ScrH() + + cam.Start3D2D(self:GetPos()+Vector(0,0,70), ang, 0.3) + self.Progress:Paint() + cam.End3D2D() +end + +function ENT:Think() + if (self:GetNWInt("FlagTeamNum",0) ~= nil and self.TeamNum == nil) then + self.TeamNum = self:GetNWInt("FlagTeamNum") + end + if self:GetNWBool("TimerActive") then + if not self.NextReturn or self.OldTimeRemaining~=self:GetNWFloat("TimeRemaining") then + self.OldTimeRemaining = self:GetNWFloat("TimeRemaining") + self.NextReturn = CurTime() + self.OldTimeRemaining + end + end + + if self.NextReturn then + self.Progress:SetProgress((self.NextReturn - CurTime())/FlagReturnTime) + end + + self:NextThink(CurTime()) +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/item_teamflag_mvm/shared.lua b/gamemodes/tf/entities/entities/item_teamflag_mvm/shared.lua new file mode 100644 index 000000000..9e5cf684a --- /dev/null +++ b/gamemodes/tf/entities/entities/item_teamflag_mvm/shared.lua @@ -0,0 +1,515 @@ +AddCSLuaFile() +ENT.PrintName = "Bomb" +ENT.Information = "A Bomb." +ENT.Category = "Team Fortress 2" + +ENT.Spawnable = true +ENT.AdminSpawnable = true +ENT.Type = "anim" +ENT.Base = "item_base" + +ENT.Model = "models/flag/briefcase.mdl" +ENT.Model2 = "models/props_td/atom_bomb.mdl" + +game.AddParticles( "particles/mvm.pcf" ) +PrecacheParticleSystem( "mvm_levelup1" ) +PrecacheParticleSystem( "mvm_levelup2" ) +PrecacheParticleSystem( "mvm_levelup3" ) + +local FlagReturnTime = 60 + +if SERVER then + +hook.Add("DoPlayerDeath", "IntelSafeHelp2", function(ply) + for _,v in pairs(ents.FindByClass("item_teamflag_mvm")) do + if v.Carrier==ply then + v:Drop() + end + end +end) + +concommand.Add("drop_flag_mvm", function(pl) + for _,v in pairs(ents.FindByClass("item_teamflag_mvm")) do + if v.Carrier==pl then + v:Drop() + end + end +end) + + +function ENT:SpawnFunction( ply, tr, ClassName ) + + if ( !tr.Hit ) then return end + + local SpawnPos = tr.HitPos + tr.HitNormal * 16 + + local ent = ents.Create( "item_teamflag_mvm" ) + ent:SetPos( SpawnPos ) + ent.TeamNum = TEAM_RED + ent:Spawn() + ent:Activate() + + return ent + +end + +function ENT:Initialize() + self:SetSolid(SOLID_VPHYSICS) + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_NONE) + self:DrawShadow(false) + --self:SetNoDraw(true) + + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:SetTrigger(true) + self:SetNoDraw(true) + + self.Prop = ents.Create("prop_dynamic") + self.Prop:SetMoveType(MOVETYPE_NONE) + self.Prop:SetSolid(SOLID_NONE) + self.Prop:SetModel(self.Model) + self.Prop:SetPos(self:GetPos()) + self.Prop:SetAngles(self:GetAngles()) + self.Prop:Spawn() + self.Prop:SetNoDraw(true) + + + self.Prop2 = ents.Create("prop_dynamic") + self.Prop2:SetMoveType(MOVETYPE_NONE) + self.Prop2:SetSolid(SOLID_NONE) + self.Prop2:SetModel("models/props_td/atom_bomb.mdl") + self.Prop2:SetPos(self:GetPos()) + self.Prop2:SetAngles(self:GetAngles()) + self.Prop2:Spawn() + self.Prop2:SetParent(self.Prop) + ParticleEffectAttach( "cart_flashinglight", PATTACH_POINT_FOLLOW, self.Prop2, self.Prop2:LookupAttachment("siren") ) + self:SetNWEntity("prop2", self.Prop2) + self:SetNWEntity("prop", self.Prop) + + self.Prop:SetParent(self) + + local sequence = self.Prop:LookupSequence("spin") + self.Prop:ResetSequence(sequence) + self.Prop:SetPlaybackRate(1) + self.Prop:SetCycle(1) + + if self.TeamNum==0 then + self:SetSkin(2) + self.Prop:SetSkin(2) + elseif self.TeamNum==TEAM_RED then + self:SetSkin(0) + self.Prop:SetSkin(0) + elseif self.TeamNum==TEAM_BLU then + self:SetSkin(1) + self.Prop:SetSkin(1) + end + + self.State = 0 + + + self.Trail = ents.Create("info_particle_system") + self.Trail:SetPos(self:GetPos()) + self.Trail:SetAngles(self:GetAngles()) + self.Trail:SetKeyValue("effect_name", "player_intel_trail_"..ParticleSuffix(self.TeamNum)) + self.Trail:Spawn() + self.Trail:SetParent(self) + + self.PickupLock = {} + --[[ + 0 : home + 1 : carried + 2 : dropped + ]] + + --effectdata = EffectData() + -- effectdata:SetEntity(self) + --util.Effect("tf_flagtimer", effectdata) +end + +function ENT:KeyValue(key, value) + key = string.lower(key) + + if key=="gametype" then + self.GameType = tonumber(value) + elseif key=="teamnum" then + self.te = tonumber(value) + local t = tonumber(value) + + if t==0 then + self.TeamNum = 0 + elseif t==2 then + self.TeamNum = TEAM_RED + elseif t==3 then + self.TeamNum = TEAM_BLU + end + end +end + +function ENT:Think() + self:SetNWEntity("carrier", self.Carrier) + + for k, v in pairs(player.GetAll()) do + local trace = util.QuickTrace(self:GetPos(), v:EyePos() - self:GetPos(), self.Prop) + if self:GetSkin() == 1 and v:IsBot() and !v:IsHL2() then + local color = Color(255, 0, 0) + if trace.Entity == v then + color = Color(0, 255, 255) + end + debugoverlay.Line(trace.StartPos, trace.HitPos, 1.1, color, true) + ----print(trace.Entity) + end + + if v:GetPos():Distance(self:GetPos()) <= 80 and self:CanPickup(v) and util.QuickTrace(self:GetPos(), v:EyePos() - self:GetPos(), self.Prop).Entity == v then + self:PlayerTouched(v) + end + + ----print(self.PickupLock[v]) + if (self.PickupLock) then + if v:GetPos():Distance(self:GetPos()) >= 80 and self.PickupLock[v] then + self.PickupLock[v] = nil + end + end + end + + if self.NextReturn then + if not self.NextClientUpdateTimer or CurTime()>self.NextClientUpdateTimer then + self:SetNWFloat("TimeRemaining", self.NextReturn - CurTime()) + self.NextClientUpdateTimer = CurTime() + 0.5 + end + + if CurTime()>self.NextReturn then + self:Return() + end + else + self.NextClientUpdateTimer = nil + end +end + +function ENT:CanPickup(ply) + return ply:Team()~=self.TeamNum and not self.PickupLock[v] +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() and self:CanPickup(ent) and not self.PickupLock[ent] then + self:PlayerTouched(ent) + end +end + +function ENT:EndTouch(ent) + if self.PickupLock[ent] then + self.PickupLock[ent] = nil + end +end + +function ENT:PlayerTouched(pl) + self:Pickup(pl) +end + +function ENT:Capture() + self:Return(true) + self.Prop2:SetNoDraw(false) + self.Prop2:SetNoDraw(true) + if IsValid(self.Carrier) then + self:TriggerOutput("OnCapture", self.Carrier) + end +end + +function ENT:Return(nosound) + if self.State~=0 then + self:Drop(true) + self.State = 0 + self:SetNWBool("TimerActive", false) + self.NextReturn = nil + self:SetPos(self.HomePosition) + self:SetAngles(self.HomeAngles) + --print(self.HomePosition) + self:TriggerOutput("OnReturn") + + --ParticleEffectAttach( "cart_flashinglight", PATTACH_POINT_FOLLOW, self.Prop2, self.Prop2:LookupAttachment("siren") ) + if nosound then + return + end + + for _, ply in pairs(player.GetAll()) do + ply:SendLua([[LocalPlayer():EmitSound("MVM.AttackDefend.EnemyReturned")]]) + end + end +end + +function ENT:Pickup(ply) + if self.State~=1 and not IsValid(self.Carrier) then + if not self.HomePosition or not self.HomeAngles then + self.HomePosition = self:GetPos() + self.HomeAngles = self:GetAngles() + end + self.isCarryingIntel = true + + self:SetNWBool("TimerActive", false) + self.NextReturn = nil + + for _,capturezone in ipairs(ents.FindByClass("func_capturezone")) do + ply.botPos = capturezone.Pos + end + self.State = 1 + self.Carrier = ply + self.Prop:ResetSequence(self.Prop:LookupSequence("idle")) + self.Prop:SetPlaybackRate(1) + self.Prop:SetCycle(1) + self:SetNotSolid(true) + self:SetTrigger(false) + self:SetParent(ply) + self:Fire("SetParentAttachment", "flag", 0) + if ply:IsHL2() then + self:Fire("SetParentAttachment", "chest", 0) + end + self:TriggerOutput("OnPickup", ply) + + for _, ply in pairs(player.GetAll()) do + if ply:Team() == self.TeamNum then + ply:Speak("TLK_MVM_BOMB_PICKUP") + end + end + + timer.Create("DropIfCarrierNotAlive", 0.001, 0, function() + if ply:Alive() then + if !string.find(ply:GetModel(),"_boss.mdl") then + ply:SetClassSpeed(ply:GetPlayerClassTable().Speed * 0.5) + end + if ply:HasGodMode() then + self.Prop2:SetMaterial("models/effects/invulnfx_blue") + else + self.Prop2:SetMaterial("") + end + end + + if not ply:Alive() then + ply:Freeze(false) + ply:SetNoDraw(false) + self:SetNoDraw(false) + timer.Stop("Warning1") + timer.Stop("Warning2") + timer.Stop("Warning3") + timer.Stop("WarningEnd1") + timer.Stop("WarningEnd2") + timer.Stop("WarningEnd3") + timer.Stop("CarrierGetsHealed") + timer.Stop("CarrierGetsResistance") + for k,v in pairs(player.GetAll()) do + if not ply:IsFriendly(v) then + v:Speak("TLK_MVM_BOMB_DROPPED") + end + end + self:Drop() + self.Carrier = nil + timer.Stop("DropIfCarrierNotAlive") + end + end) + timer.Create("Warning1", 10, 1, function() + ParticleEffectAttach( "mvm_levelup1", PATTACH_POINT_FOLLOW, ply, ply:LookupAttachment("head") ) + ply:EmitSound("mvm/mvm_warning.wav", 0, 100) + if (!ply:IsMiniBoss()) then + ply:TFTaunt(tostring(ply:GetActiveWeapon():GetSlot() + 1)) + end + timer.Create("CarrierGetsHealed", 5.0, 0, function() + --ply:SetArmor( 50 ) + end) + + end) + + timer.Create("Warning2", 45, 1, function() + ParticleEffectAttach( "mvm_levelup2", PATTACH_POINT_FOLLOW, ply, ply:LookupAttachment("head") ) + ply:EmitSound("mvm/mvm_warning.wav", 0, 100) + if (!ply:IsMiniBoss()) then + ply:TFTaunt(tostring(ply:GetActiveWeapon():GetSlot() + 1)) + end + timer.Create("CarrierGetsResistance", 2, 0, function() + GAMEMODE:HealPlayer(self.Carrier, self.Carrier, 5, true, false) + end) + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(ply) then + if v:GetPlayerClass() == "heavy" then + v:EmitSound("vo/heavy_mvm_bomb_upgrade0"..math.random(1,2)..".wav", 80, 100, 1, CHAN_VOICE) + elseif v:GetPlayerClass() == "soldier" then + v:EmitSound("vo/soldier_mvm_bomb_upgrade0"..math.random(1,3)..".wav", 80, 100, 1, CHAN_VOICE) + elseif v:GetPlayerClass() == "medic" then + v:EmitSound("vo/medic_mvm_bomb_upgrade0"..math.random(1,3)..".wav", 80, 100, 1, CHAN_VOICE) + elseif v:GetPlayerClass() == "engineer" then + v:EmitSound("vo/engineer_mvm_bomb_upgrade0"..math.random(1,3)..".wav", 80, 100, 1, CHAN_VOICE) + end + end + end + end) + timer.Create("Warning3", 65, 1, function() + ParticleEffectAttach( "mvm_levelup3", PATTACH_POINT_FOLLOW, ply, ply:LookupAttachment("head") ) + ply:EmitSound("mvm/mvm_warning.wav", 0, 100) + if (!ply:IsMiniBoss()) then + ply:TFTaunt(tostring(ply:GetActiveWeapon():GetSlot() + 1)) + end + for _,pl in pairs(player.GetAll()) do + if not pl:IsFriendly(ply) then + if pl:GetPlayerClass() == "heavy" then + pl:EmitSound("vo/heavy_mvm_bomb_upgrade0"..math.random(1,2)..".wav", 80, 100, 1, CHAN_VOICE) + elseif pl:GetPlayerClass() == "soldier" then + pl:EmitSound("vo/soldier_mvm_bomb_upgrade0"..math.random(1,3)..".wav", 80, 100, 1, CHAN_VOICE) + elseif pl:GetPlayerClass() == "medic" then + pl:EmitSound("vo/medic_mvm_bomb_upgrade0"..math.random(1,3)..".wav", 80, 100, 1, CHAN_VOICE) + elseif pl:GetPlayerClass() == "engineer" then + pl:EmitSound("vo/engineer_mvm_bomb_upgrade0"..math.random(1,3)..".wav", 80, 100, 1, CHAN_VOICE) + end + end + end + end) + timer.Create("WarningEnd3", 65 + ply:SequenceDuration(ply:LookupSequence("taunt01")), 1, function() + ply:ConCommand("tf_firstperson") + ply:Freeze(false) + end) + end +end + +function ENT:Drop(nosound) + if self.State==1 and IsValid(self.Carrier) then + self:SetNWBool("TimerActive", true) + self:SetNWFloat("TimeRemaining", FlagReturnTime) + self.NextReturn = CurTime() + FlagReturnTime + + local ply = self.Carrier + self.PickupLock[ply] = 1 -- Prevent the player who dropped it to pick it up immediately again + self.State = 2 + self.Carrier = nil + self.Prop:ResetSequence(self.Prop:LookupSequence("spin")) + self.Prop:SetPlaybackRate(1) + self.Prop:SetCycle(1) + self.Prop2:SetPlaybackRate(1) + self.Prop2:SetCycle(1) + self:SetNotSolid(false) + self:SetTrigger(true) + self:SetParent() + self:SetAngles(Angle(0, self:GetAngles().y, 0)) + self:DropToFloor() + self:TriggerOutput("OnDrop", ply) + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + + --ParticleEffectAttach( "cart_flashinglight", PATTACH_POINT_FOLLOW, self.Prop2, self.Prop2:LookupAttachment("siren") ) + if nosound then + return + end + self:GetNWEntity("prop2", self):SetNoDraw(false) + for _, ply in pairs(player.GetAll()) do + if ply:Team() == self.TeamNum then + ply:Speak("TLK_MVM_BOMB_DROPPED") + end + end + end +end + +function ENT:AcceptInput(name, activator, caller, value) + name = string.lower(name) + if name=="skin" then + self:SetSkin(tonumber(value) or 0) + elseif name=="setteam" then + local t = tonumber(value) + + if t==0 then + self.TeamNum = 0 + self:SetSkin(2) + self.Prop:SetSkin(2) + elseif t==2 then + self.TeamNum = TEAM_RED + self:SetSkin(0) + self.Prop:SetSkin(0) + elseif t==3 then + self.TeamNum = TEAM_BLU + self:SetSkin(1) + self.Prop:SetSkin(1) + end + end +end + +end + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +local colors = { + [0]=Color(255,0,0,255), + [1]=Color(0,0,255,255), + [2]=Color(255,255,255,255), +} + +function ENT:Initialize() + self.Progress = vgui.Create("CircularProgressBar") + self.Progress:SetSize(128, 128) + self.Progress:SetBackgroundTexture("vgui/flagtime_empty") + self.Progress:SetForegroundTexture("vgui/flagtime_full") + self.Progress:SetProgress(0) + self.Progress:SetCentered(true) + self.Progress:SetVisible(false) + + local min, max = self:GetRenderBounds() + max.z = max.z + 100 + self:SetRenderBounds(min, max) +end + +function ENT:Draw() + if IsValid(self:GetNWEntity("prop", self)) and IsValid(self:GetParent()) then + if self:GetParent() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then + self:GetNWEntity("prop", self):SetNoDraw(true) -- true) + end + + if self:GetParent():IsHL2() and self:GetParent():LookupAttachment("chest") > 0 then + local att = self:GetParent():GetAttachment(self:GetParent():LookupAttachment("chest")) + local ang = att.Ang + local pos = att.Pos + local pos2, ang2 = LocalToWorld(ang:Forward() * 10, Angle(90, 0, 180), pos, ang) + self:GetNWEntity("prop", self):SetAngles(ang2) + self:GetNWEntity("prop", self):SetPos(pos - ang:Forward() * 10) + --self:Fire("SetParentAttachment", "chest", 0) + end + end + + if not self:GetNWBool("TimerActive") then return end + + local s = 1 + if self.OldSkin~=s then + self.Progress:SetBackgroundColor(colors[s]) + self.Progress:SetForegroundColor(colors[s]) + self.OldSkin = s + end + + local ang = EyeAngles() + ang:RotateAroundAxis(ang:Right(), 90) + ang:RotateAroundAxis(ang:Up(), -90) + + local W,H = ScrW(), ScrH() + + cam.Start3D2D(self:GetPos()+Vector(0,0,70), ang, 0.3) + self.Progress:Paint() + cam.End3D2D() +end + +function ENT:Think() + if self:GetNWBool("TimerActive") then + if not self.NextReturn or self.OldTimeRemaining~=self:GetNWFloat("TimeRemaining") then + self.OldTimeRemaining = self:GetNWFloat("TimeRemaining") + self.NextReturn = CurTime() + self.OldTimeRemaining + end + end + + if self.NextReturn then + self.Progress:SetProgress((self.NextReturn - CurTime())/FlagReturnTime) + end + if (self.Carrier and self.Carrier.TFBot) then + + for _,capturezone in ipairs(ents.FindByClass("func_capturezone")) do + self.Carrier.botPos = capturezone.Pos + end + + end + self:NextThink(CurTime()) +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mapobj_cart_dispenser/cl_init.lua b/gamemodes/tf/entities/entities/mapobj_cart_dispenser/cl_init.lua new file mode 100644 index 000000000..a34af23b7 --- /dev/null +++ b/gamemodes/tf/entities/entities/mapobj_cart_dispenser/cl_init.lua @@ -0,0 +1,82 @@ + +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_BOTH + +local ScreenTexture = { + [0]=surface.GetTextureID("vgui/dispenser_meter_bg_red"), + [1]=surface.GetTextureID("vgui/dispenser_meter_bg_blue"), +} +local ArrowTexture = surface.GetTextureID("vgui/dispenser_meter_arrow") +local Offset = Vector(-1.1, -11, -0.6) +local Scale=0.0465 +local DialSpeed = 1 +local AngleStart = 85 +local AngleEnd = -85 + +function ENT:CalcAngle(m) + return Lerp(m, AngleStart, AngleEnd) +end + + + +function ENT:Draw() + if self:GetState()<2 then return end + + if not self.Model then + for _,v in pairs(ents.FindByClass("obj_anim")) do + if v:GetOwner() == self then + self.Model = v + break + end + end + end + + if not IsValid(self.Model) then return end + + local metal = self:GetAmmoPercentage() + if metal and metal~=self.LastMetalAmount then + if not self.Ang then + self.Ang = self:CalcAngle(metal) + else + if metal>self.LastMetalAmount then + self.DAng = -DialSpeed + else + self.DAng = DialSpeed + end + self.TargetAngle = self:CalcAngle(metal) + end + self.LastMetalAmount = metal + elseif self.TargetAngle then + if self.Ang*self.DAng > self.TargetAngle*self.DAng then + self.Ang = self.TargetAngle + self.TargetAngle = nil + else + self.Ang = self.Ang + self.DAng + end + end + + local cp0_ll = self.Model:GetAttachment(self:LookupAttachment("controlpanel0_ll")) + local cp1_ll = self.Model:GetAttachment(self:LookupAttachment("controlpanel1_ll")) + + if self:GetBuildingType() != 1 and self:GetBuildingType() != 2 then + end +end + +function ENT:DrawScreen() + surface.SetDrawColor(255,255,255,255) + if self:Team() == TEAM_BLU then + surface.SetTexture(ScreenTexture[1]) + else + surface.SetTexture(ScreenTexture[0]) + end + + surface.DrawTexturedRect(0, 0, 480, 240) + surface.SetTexture(ArrowTexture) + + local a = self.Ang + local r = math.rad(a) + local s, c = math.sin(r), math.cos(r) + + surface.DrawTexturedRectRotated(480*0.5 - math.floor(81*s), 240*0.90625 - math.floor(81*c), 50, 200, a) +end diff --git a/gamemodes/tf/entities/entities/mapobj_cart_dispenser/init.lua b/gamemodes/tf/entities/entities/mapobj_cart_dispenser/init.lua new file mode 100644 index 000000000..aca260af0 --- /dev/null +++ b/gamemodes/tf/entities/entities/mapobj_cart_dispenser/init.lua @@ -0,0 +1,321 @@ + +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +include("shared.lua") + +local tf_minidispenser_allow_upgrade = CreateConVar("tf_minidispenser_allow_upgrade", "0", {FCVAR_CHEAT}) + +ENT.NPCCallRange = 512 +ENT.NPCCallHealthFraction = 0.75 +ENT.NPCCallProbability = 0.5 + +ENT.NumLevels = 3 +ENT.Levels = { +{Model("models/buildables/dispenser.mdl"), Model("models/buildables/dispenser_light.mdl")}, +{Model("models/buildables/dispenser_lvl2.mdl"), Model("models/buildables/dispenser_lvl2_light.mdl")}, +{Model("models/buildables/dispenser_lvl3.mdl"), Model("models/buildables/dispenser_lvl3_light.mdl")}, +} +ENT.IdleSequence = "ref" +ENT.DisableDuringUpgrade = false +ENT.NoUpgradedModel = false + +ENT.Sound_Explode = Sound("Building_Dispenser.Explode") +ENT.Sound_Generate = Sound("Building_Dispenser.GenerateMetal") + +ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") + +ENT.Gibs = { +Model("models/buildables/Gibs/dispenser_gib1.mdl"), +Model("models/buildables/Gibs/dispenser_gib2.mdl"), +Model("models/buildables/Gibs/dispenser_gib3.mdl"), +Model("models/buildables/Gibs/dispenser_gib4.mdl"), +Model("models/buildables/Gibs/dispenser_gib5.mdl"), +} +ENT.Sound_Explode = Sound("Building_Dispenser.Explode") + +ENT.Sapped = false + +ENT.Range = 100 + +function ENT:StartSupply(pl) + self.NumClients = self.NumClients + 1 + + local target = ents.Create("info_dummy") + target:SetPos(pl:GetPos() + Vector(0,0,45)) + target:Spawn() + target:SetParent(pl) + target:AttachToEntity(pl) + target:SetName(tostring(target)) + local e = ParticleSuffix(self:EntityTeam()) + local effect = ents.Create("info_particle_system") + if self:GetBuildingType() == 2 then + self:SetModel("models/buildables/dispenser_light.mdl") + effect:SetKeyValue("effect_name", "medicgun_beam_"..e) + else + effect:SetKeyValue("effect_name", "dispenser_heal_"..e) + end + effect:SetKeyValue("cpoint1", target:GetName()) + effect:SetKeyValue("start_active", "1" ) + + effect:SetParent(self) + effect:Spawn() + effect:Activate() + + effect:Fire("SetParentAttachment", "heal_origin") + + self.Clients[pl] = {effect, target} + pl.BeingHealedByDispenser = true +end + +function ENT:StopSupply(pl) + self.NumClients = self.NumClients - 1 + + local t = self.Clients[pl] + if not t then return end + + if IsValid(t[1]) then t[1]:Remove() end + if IsValid(t[2]) then t[2]:Remove() end + + self.Clients[pl] = nil + pl.BeingHealedByDispenser = false + pl.DoneWaitForHealingSchedule = false +end + +function ENT:OnStartBuilding() + if self:GetBuildingType() == 1 then + self.BuildRate = 1.5 + self.NextAmmoSupply = CurTime() + 0.5 + self:SetModel("models/buildables/mdispenser.mdl") + self.Model:SetModel("models/buildables/mdispenser.mdl") + self.Levels = { + {Model("models/buildables/mdispenser.mdl"), Model("models/buildables/mdispenser_light.mdl")}, + {Model("models/buildables/mdispenser.mdl"), Model("models/buildables/mdispenser_light.mdl")}, + {Model("models/buildables/mdispenser.mdl"), Model("models/buildables/mdispenser_light.mdl")} + } + self.Gibs = { + Model("models/buildables/gibs/mdispenser_gib1.mdl"), + Model("models/buildables/gibs/mdispenser_gib2.mdl"), + Model("models/buildables/Gibs/mdispenser_gib3.mdl"), + Model("models/buildables/Gibs/mdispenser_gib4.mdl"), + Model("models/buildables/Gibs/mdispenser_gib5.mdl"), + } + end + if self:GetBuildingType() == 2 then + self.Model:SetModel("models/buildables/repair_level1.mdl") + self:SetModel("models/buildables/dispenser_light.mdl") + self.Levels = { + {Model("models/buildables/dispenser_light.mdl"), Model("models/buildables/repair_level1.mdl")}, + {Model("models/buildables/dispenser_light.mdl"), Model("models/buildables/repair_level2.mdl")}, + {Model("models/buildables/dispenser_light.mdl"), Model("models/buildables/repair_level3.mdl")} + } + end +end + +function ENT:OnDoneBuilding() + self:EmitSoundEx(self.Sound_DoneBuilding, 100, 100) + + self.MetalPerGeneration = 40 + self.HealRate = 0.1 + self.AmmoPerSupply = 40 + + self.Clients = {} + self.NumClients = 0 + + self:SetNoDraw(false) + + self:SetMetalAmount(1000000000) + self.NextGenerate = CurTime() + 5 + if self:GetBuildingType() == 1 then + self.NextAmmoSupply = CurTime() + 0.5 + + self.BuildRate = 2 + self.InitialHealth = self:GetObjectHealth() + self:SetMaxHealth(self:GetObjectHealth()) + + if not tf_minidispenser_allow_upgrade:GetBool() then + self.RepairRate = 0 + self.UpgradeRate = 0 + end + timer.Simple(0.05, function() + self:SetModel("models/buildables/mdispenser_light.mdl") + self.Model:SetModel("models/buildables/mdispenser_light.mdl") + end) + elseif self:GetBuildingType() == 2 then + + self.BuildRate = 2 + self.InitialHealth = self:GetObjectHealth() + self:SetMaxHealth(self:GetObjectHealth()) + + if not tf_minidispenser_allow_upgrade:GetBool() then + self.RepairRate = 15 + self.UpgradeRate = 15 + end + timer.Simple(0.05, function() + self:SetModel("models/buildables/dispenser_light.mdl") + self.Model:SetModel("models/buildables/repair_level1.mdl") + end) + end +end + +function ENT:OnStartUpgrade() + self:EmitSoundEx(self.Sound_DoneBuilding, 100, 100) + + if self.level==2 then + self.MetalPerGeneration = 50 + self.HealRate = 0.066 + self.AmmoPerSupply = 50 + timer.Simple(0.2, function() + self:SetModel("models/buildables/dispenser_light.mdl") + end) + timer.Simple(0.05, function() + if self:GetBuildingType() == 2 then + self.Model:SetModel("models/buildables/repair_level2.mdl") + end + end) + else if self.level==3 then + self.MetalPerGeneration = 60 + self.HealRate = 0.05 + self.AmmoPerSupply = 60 + timer.Simple(0.2, function() + self:SetModel("models/buildables/dispenser_light.mdl") + end) + timer.Simple(0.05, function() + if self:GetBuildingType() == 2 then + self.Model:SetModel("models/buildables/repair_level3.mdl") + end + end) + end + end +end + +function ENT:OnThinkActive() + for k,v in ipairs(player.GetBots()) do + if (IsValid(v.TargetEnt)) then + if (v.TargetEnt:EntIndex() == self:EntIndex()) then + v.TargetEnt = nil + end + end + end + self:SetHealth(1000000000) + self:SetModelScale(0.01) + self.Model:SetModelScale(0.01) + local rf = RecipientFilter() + rf:AddAllPlayers() + if !self.Idle_Sound and self:GetState()==3 || self.Idle_Sound and !self.Idle_Sound:IsPlaying() and self:GetState()==3 then + self.Idle_Sound = CreateSound(self, self.Sound_Idle,rf) + self.Idle_Sound:Play() + end + if !self.Heal_Sound and self:GetNWInt("NumClients",0) >= 0 and self:GetState()==3 || self.Heal_Sound != nil and !self.Heal_Sound:IsPlaying() and self:GetNWInt("NumClients",0) >= 0 and self:GetState()==3 then + self.Heal_Sound = CreateSound(self, self.Sound_Heal,rf) + self.Heal_Sound:Play() + end + if (self.Heal_Sound != nil and self.Heal_Sound:IsPlaying() and self:GetNWInt("NumClients",0) <= 0 and self:GetState()==3) then + self.Heal_Sound:Stop() + end + + self:SetNWInt("NumClients",self.NumClients) + if self.NextGenerate and CurTime()>=self.NextGenerate then + local color = self:GetColor() + if self:AddMetalAmount(self.MetalPerGeneration)>0 and color.a>0 then + self:EmitSoundEx(self.Sound_Generate, 100, 100) + end + if self:GetBuildingType() == 1 then + self.NextGenerate = CurTime() + 2.5 + else + self.NextGenerate = CurTime() + 5 + end + end + + if not self.NextSearch or CurTime()>=self.NextSearch then + local removedclients = table.Copy(self.Clients) + for _,v in pairs(ents.FindInSphere(self:GetPos(), self.Range)) do + if (v:IsPlayer()) and not v:IsBuilding() and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)==self:Team()) then + if self.Clients[v] then + -- Don't remove that client + removedclients[v] = nil + else + self:StartSupply(v) + end + end + if (self:GetBuildingType() == 2) and v:IsBuilding() and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)==self:Team()) then + if self.Clients[v] then + -- Don't remove that client + removedclients[v] = nil + else + self:StartSupply(v) + end + end + end + + for k,_ in pairs(removedclients) do + self:StopSupply(k) + end + + self.NextSearch = CurTime() + 0.2 + end + + if not self.NextAmmoSupply or CurTime()>=self.NextAmmoSupply then + local metal_before = self:GetMetalAmount() + local metal_after = metal_before + + for k,_ in pairs(self.Clients) do + if k:IsPlayer() then + GAMEMODE:GiveAmmoPercentNoMetal(k, self.AmmoPerSupply) + + if metal_after > 0 then + local ammo_before = k:GetAmmoCount(TF_METAL) + k:GiveTFAmmo(math.min(self.MetalPerGeneration, metal_after), TF_METAL) + local ammo_after = k:GetAmmoCount(TF_METAL) + metal_after = metal_after - (ammo_after - ammo_before) + end + end + end + self:AddMetalAmount(metal_after - metal_before) + if self:GetBuildingType() == 1 then + self.NextAmmoSupply = CurTime() + 0.7 + else + self.NextAmmoSupply = CurTime() + 1 + end + end + + if not self.NextHeal or CurTime()>=self.NextHeal then + for k,_ in pairs(self.Clients) do + if self:GetBuildingType() == 2 then + k:SetHealth(math.Clamp(k:Health() + 1.5, 0, k:GetMaxHealth() + 140)) + elseif (k:Health() > 0) then + k:SetHealth(math.Clamp(k:Health() + 1, 0, k:GetMaxHealth())) + end + + if k:IsNPC() and not k:IsCurrentSchedule(SCHED_FORCED_GO_RUN) and not k.DoneWaitForHealingSchedule then + if IsValid(k:GetEnemy()) then + k:SetSchedule(SCHED_SHOOT_ENEMY_COVER) + else + k:SetSchedule(SCHED_COWER) + end + k.DoneWaitForHealingSchedule = true + end + end + self.NextHeal = CurTime() + self.HealRate + end + + if not self.NextCallNPCs or CurTime()>=self.NextCallNPCs then + for _,v in pairs(ents.FindInSphere(self:GetPos(), self.NPCCallRange)) do + if not v.BeingHealedByDispenser and v:IsNPC() and v:IsFriendly(self) and not v:IsBuilding() and v:GetMoveType()==MOVETYPE_STEP then + if v:GetMaxHealth() > 0 and v:Health() / v:GetMaxHealth() <= self.NPCCallHealthFraction then + if math.random() < self.NPCCallProbability then + v:SetLastPosition(self:NearestPoint(v:GetPos())) + v:SetSchedule(SCHED_FORCED_GO_RUN) + end + end + end + end + self.NextCallNPCs = CurTime() + 2 + end +end + +function ENT:OnRemove() + for _,v in pairs(self.Clients or {}) do + self:StopSupply() + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mapobj_cart_dispenser/shared.lua b/gamemodes/tf/entities/entities/mapobj_cart_dispenser/shared.lua new file mode 100644 index 000000000..a23544cc0 --- /dev/null +++ b/gamemodes/tf/entities/entities/mapobj_cart_dispenser/shared.lua @@ -0,0 +1,80 @@ + +ENT.Base = "obj_base" +ENT.Type = "ai" +ENT.PrintName = "Invisible Dispenser" +ENT.Author = "Seamusmario" +ENT.Category = "Team Fortress 2" +ENT.Spawnable = false + +ENT.AutomaticFrameAdvance = true +ENT.Sapped = false +ENT.ObjectHealth = 150 +ENT.MaxMetal = 400 +ENT.IsEnabled = 0 +ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,55)} +ENT.BuildHull = {Vector(-24,-24,0), Vector(24,24,82)} +ENT.Sound_Idle = Sound("Building_Dispenser.Idle") +ENT.Sound_Heal = Sound("Building_Dispenser.Heal") +ENT.ObjectName = "#TF_Object_Dispenser" + +function ENT:SetAutomaticFrameAdvance(bUsingAnim) + self.AutomaticFrameAdvance = bUsingAnim +end + +function ENT:SetMetalAmount(m) + --self:SetNWInt("Metal", m) + self.MetalAmount = m + self:SetAmmoPercentage(m / self.MaxMetal) +end + +function ENT:GetMetalAmount() + return self.MetalAmount + --return self:GetNWInt("Metal") or 0 +end + +function ENT:AddMetalAmount(m) + local a = self:GetMetalAmount() + if a+m>self.MaxMetal then + self:SetMetalAmount(self.MaxMetal) + return self.MaxMetal - a + elseif a+m<0 then + self:SetMetalAmount(0) + return a + else + self:SetMetalAmount(a+m) + return m + end +end + +function ENT:GetAmmoPercentage() + return self.dt.BuildingInfoFloat.y +end + +function ENT:SetAmmoPercentage(p) + local v = self.dt.BuildingInfoFloat + v.y = p + self.dt.BuildingInfoFloat = v +end + +if CLIENT then +function ENT:Think() + if !self.Idle_Sound and self:GetState()==3 || self.Idle_Sound and !self.Idle_Sound:IsPlaying() and self:GetState()==3 then + self.Idle_Sound = CreateSound(self, self.Sound_Idle) + self.Idle_Sound:Play() + end +end + +function ENT:OnRemove() + + + if self.Idle_Sound then + self.Idle_Sound:Stop() + end + + if self.Heal_Sound then + self.Heal_Sound:Stop() + end + +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/megaphyscannon/shared.lua b/gamemodes/tf/entities/entities/megaphyscannon/shared.lua new file mode 100644 index 000000000..b9e61269c --- /dev/null +++ b/gamemodes/tf/entities/entities/megaphyscannon/shared.lua @@ -0,0 +1,241 @@ +ENT.Type = "anim" +ENT.Base = "base_anim" +ENT.PrintName = "Super Gravity Gun" +ENT.Category = "Half-Life 2" + +ENT.Spawnable = true +ENT.AdminOnly = true +ENT.DoNotDuplicate = true + +--[[ +if SERVER then + +AddCSLuaFile("shared.lua") +function ENT:SpawnFunction(ply, tr) + + if (!tr.Hit) then return end + + local SpawnPos = tr.HitPos + tr.HitNormal * 16 + + local ent = ents.Create("MegaPhyscannon") + + ent:SetPos(SpawnPos) + ent:Spawn() + ent:Activate() + --ent.ClawOpenState = false + ent.Planted = false + + return ent +end + + +/*--------------------------------------------------------- + Name: Initialize +---------------------------------------------------------*/ +function ENT:Initialize() + + --local model = ("models/weapons/errolliamp/w_superphyscannon.mdl") + local model = ("models/weapons/shadowysn/w_superphyscannon.mdl") + + self.Entity:SetModel(model) + + self.Entity:PhysicsInit(SOLID_VPHYSICS) + self.Entity:SetMoveType(MOVETYPE_VPHYSICS) + self.Entity:SetSolid(SOLID_VPHYSICS) + self.Entity:DrawShadow(true) + --self.Entity:SetNWBool("scgg_spawn_into_old", true) + + self.Entity:SetCollisionGroup(COLLISION_GROUP_WEAPON) + + local phys = self.Entity:GetPhysicsObject() + + if (phys:IsValid(self.WModel2)) then + phys:Wake() + end + + self.Entity:SetUseType(SIMPLE_USE) + + --[[if SERVER then + util.AddNetworkString( "SCGG_Entity_InvalidateBone" ) + end + if CLIENT then + usermessage.Receive( "SCGG_Entity_InvalidateBone", function( entity ) + --print("i has mesage") + entity:InvalidateBoneCache() + end ) + end + self.Entity:Fire("AddOutput", "classname weapon_superphyscannon", 0) +end + + +function ENT:PhysicsCollide(data, physobj) + + // Play sound on bounce + if ((data.Speed > 150 and data.Speed <= 180) and data.DeltaTime > 0.2) then + self.Entity:EmitSound("weapon.ImpactSoft", 75, 100, vol) + end + if (data.Speed > 180 and data.DeltaTime > 0.2) then + self.Entity:EmitSound("weapon.ImpactHard") + end +end + +/*--------------------------------------------------------- + Name: Use +---------------------------------------------------------*/ +function ENT:Use(activator, caller) + if self.Entity.Fading == true then return end + + if (activator:IsPlayer()) and not self.Planted then + local gun = activator:GetWeapon( "weapon_superphyscannon" ) + if !IsValid(gun) then + activator:Give("weapon_superphyscannon") + local newgun = activator:GetWeapon( "weapon_superphyscannon" ) + newgun:SetMaterial(self.Entity:GetMaterial()) + newgun:SetColor(self.Entity:GetColor()) + end + self.Entity:Remove() + end +end + +/*--------------------------------------------------------- + Name: Think +---------------------------------------------------------*/ +function ENT:Think() + if self.ClawOpenState == true then + self:SetPoseParameter("super_active", 1) + --net.Start("SCGG_Entity_InvalidateBone") + --usermessage.WriteEntity( self ) + --net.Send( player.GetAll() ) + elseif self.ClawOpenState != true then + self:SetPoseParameter("super_active", 0) + --net.Start("SCGG_Entity_InvalidateBone") + --usermessage.WriteEntity( self ) + --net.Send( player.GetAll() ) + end + if game.GetGlobalState("super_phys_gun") == GLOBAL_OFF and GetConVar("scgg_enabled"):GetInt() <= 0 and self.Entity.Fading != true then + self.Entity.Fading = true + --self.Entity:SetNWBool("scgg_spawn_into_old", false) + + local coreattachmentID=self.Entity:LookupAttachment("core") + local coreattachment = self.Entity:GetAttachment(coreattachmentID) + local core = ents.Create("env_citadel_energy_core") + core:SetPos( coreattachment.Pos ) + core:SetAngles( self.Entity:GetAngles() ) + core:SetParent( self.Entity ) + core:Spawn() + core:Fire( "AddOutput","scale 1.5",0 ) + core:Fire( "StartCharge","0.1``",0.1 ) + + self.Entity:EmitSound("Weapon_Physgun.Off", 75, 100, 1) + + timer.Simple( 0.70, function() + if IsValid(self.Entity) then + self.Entity:SetCollisionGroup(COLLISION_GROUP_WORLD) + local normalgrav = ents.Create("weapon_physcannon") + normalgrav:SetPos( self.Entity:GetPos() ) + normalgrav:SetAngles( self.Entity:GetPhysicsObject():GetAngles() ) + normalgrav:SetVelocity( self.Entity:GetVelocity() ) + normalgrav:Fire("Addoutput","spawnflags 2",0) + normalgrav:Fire("Addoutput","spawnflags 0",1) + normalgrav:Spawn() + normalgrav:Activate() + core:SetParent( normalgrav ) + core:Fire( "Stop","0",0 ) + core:Fire( "Kill","0",2 ) + + cleanup.ReplaceEntity( self.Entity, normalgrav ) + undo.ReplaceEntity( self.Entity, normalgrav ) + undo.Finish(); + timer.Simple( 0.02, function() + if IsValid(self.Entity) then + self.Entity:Remove() + end + end ) + end + end ) + end + self.Entity:NextThink( 0.5 ) +end + +end + +if CLIENT then + +/*--------------------------------------------------------- + Name: Initialize +---------------------------------------------------------*/ +function ENT:Initialize() +end + +/*--------------------------------------------------------- + Name: DrawPre +---------------------------------------------------------*/ +function ENT:Draw() +local Mat = Material( "sprites/blueflare1" ) +Mat:SetInt("$spriterendermode",5) +local Zap = Material( "sprites/physcannon_bluelight1b" ) +Zap:SetInt("$spriterendermode",5) + self.Entity:DrawModel() + + local ledcolor = Color(230, 45, 45, 255) + + local TargetPos = self.Entity:GetPos() + (self.Entity:GetUp() * 11.6) + (self.Entity:GetRight() * 2) + (self.Entity:GetForward() * 1.5) + + local FixAngles = self.Entity:GetAngles() + local FixRotation = Vector(90, 90, 90) + + FixAngles:RotateAroundAxis(FixAngles:Right(), FixRotation.x) + FixAngles:RotateAroundAxis(FixAngles:Up(), FixRotation.y) + FixAngles:RotateAroundAxis(FixAngles:Forward(), FixRotation.z) + + local scale = math.Rand( 8, 10 ) + local scale2 = math.Rand( 25, 27 ) + local scale3 = math.Rand( 3, 4 ) + local scale7 = math.Rand( 12, 14 ) + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + render.SetMaterial( Mat ) + + local vm = self.Entity + if (!vm || vm == NULL) then return end + + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID2=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_O.Pos + + local attachmentID3=vm:LookupAttachment("fork2t") + local attachment_L = vm:GetAttachment( attachmentID3 ) + StartPosL = attachment_L.Pos + + local attachmentID4=vm:LookupAttachment("fork3t") + local attachment_R = vm:GetAttachment( attachmentID4 ) + StartPosR = attachment_R.Pos + + local attachmentID5=vm:LookupAttachment("fork1m") + local attachment_OH = vm:GetAttachment( attachmentID5 ) + StartPosOH = attachment_OH.Pos + + local attachmentID6=vm:LookupAttachment("fork2m") + local attachment_LH = vm:GetAttachment( attachmentID6 ) + StartPosLH = attachment_LH.Pos + + local attachmentID7=vm:LookupAttachment("fork3m") + local attachment_RH = vm:GetAttachment( attachmentID7 ) + StartPosRH = attachment_RH.Pos + + render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,240)) + render.DrawSprite( StartPosO, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosL, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosR, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosOH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosLH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosRH, scale3, scale3, Color(255,255,255,80)) +end + +end]] \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mob_xen_director.lua b/gamemodes/tf/entities/entities/mob_xen_director.lua new file mode 100644 index 000000000..e02a3c967 --- /dev/null +++ b/gamemodes/tf/entities/entities/mob_xen_director.lua @@ -0,0 +1,334 @@ +AddCSLuaFile() +ENT.Base = "base_nextbot" +ENT.Type = "nextbot" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Resonance Cascade" +ENT.Category = "Civillian 2 Misc" + +list.Set( "NPC", "mob_xen_director", { + Name = ENT.PrintName, + Class = "mob_xen_director", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) + +local function lookForNearestPlayer(bot) + local npcs = {} + for k,v in ipairs(ents.FindInSphere(bot:GetPos(), 25000)) do + if ((v:IsTFPlayer()) and v:Health() > 0 and !v:IsFriendly(bot) and v:EntIndex() != bot:EntIndex() and !v:IsFlagSet(FL_NOTARGET) and v:Health() > 0 ) then + table.insert(npcs, v) + end + end + return table.Random(npcs) +end +function ENT:Initialize() + if CLIENT then return end + self:SetModel("models/zombies/classic.mdl") + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:SetMaterial("debug/debugmrmwireframe") + self:SetSolid(SOLID_NONE) + self:SetModelScale(1) + self:SetFOV(90) + self:SetEntityTeam(TEAM_GREEN) + self.bots = {} + self.bot = {} +end +function ENT:Think() + self:SetNoDraw(!GetConVar("developer"):GetBool()) + if (self:GetCycle() == 1) then + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:SetCycle(0) + end + return true +end + +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:IsNPC() + return false +end + +function ENT:IsNextBot() + return true +end + +function ENT:Health() + return nil +end + +local function LeadBot_S_Add_Zombie(team,class,pos) + if !navmesh.IsLoaded() then + ErrorNoHalt("There is no navmesh! Generate one using \"nav_generate\"!\n") + return + end + + local name = string.upper(string.sub(class,1,1))..string.sub(class,2) + local bot = player.CreateNextBot(name) + local teamv = TEAM_RED + if team == 1 then + teamv = TEAM_bot + end + + if !IsValid(bot) then ErrorNoHalt("[LeadBot] Player limit reached!\n") return end + bot.LastSegmented = CurTime() + 1 + + bot.ControllerBot = ents.Create("ctf_bot_navigator") + bot.ControllerBot:Spawn() + bot.ControllerBot:SetOwner(bot) + + bot.LastPath = nil + bot.CurSegment = 2 + bot.TFBot = true + bot.IsL4DZombie = true + bot.BotStrategy = math.random(0, 1) + + --timer.Simple(1, function() + ----TalkToMe(bot, "join") + --end) + bot:SetTeam(teamv) + bot:SetPlayerClass(class) + bot:SetPos(pos) + timer.Simple(0.1, function() + if IsValid(bot) then + bot:SetPlayerClass(class) + bot.TFBot = true + end + end) + + --MsgN("[LeadBot] Bot " .. name .. " with strategy " .. bot.BotStrategy .. " added!") + return bot +end + +local combine = { + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_headcrab", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_bullchicken", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_houndeye", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_slave", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_grunt", + "monster_alien_controller", + "monster_alien_controller", + "monster_alien_controller", + "monster_alien_controller", + "monster_alien_controller", + "monster_alien_controller", + "monster_alien_controller", + "monster_gargantua", + "monster_snark", + "monster_snark", + "monster_snark", + "monster_snark", + "monster_snark", + "monster_snark", + "monster_snark", + "monster_tentacle", + "monster_tentacle", + "monster_tentacle", + "monster_bigmomma" +} +function ENT:OnRemove() + for k,v in ipairs(self.bots) do + v:Remove() + --print("Removed special bot #"..v:EntIndex()) + end + for k,v in ipairs(self.bot) do + if (IsValid(v)) then + v:Remove() + --print("Removed bot #"..v:EntIndex()) + end + end +end + +function ENT:ChasePos() +end +function ENT:RunBehaviour() + while (true) do + for k,v in ipairs(self.bots) do + if (!IsValid(v)) then + table.remove(self.bots,k) + end + end + for k,v in ipairs(self.bot) do + if (!IsValid(v)) then + table.remove(self.bot,k) + end + end + self.loco:SetAcceleration( 1400 ) + self.loco:SetDesiredSpeed( 1400 ) -- Walk speed + local ply = lookForNearestPlayer(self) + if (IsValid(ply)) then + self:SetPos(ply:GetPos()) + end + local pos = self:FindSpot("random", {type = "hiding", radius = math.random(120,8000), pos = self:GetPos()}) + if (pos) then + self:SetPos(pos) + end + if (math.random(1,7) == 1) then + self:EmitSound("debris/beamstart2.wav",95) + util.ScreenShake( self:GetPos(), 5, 5, 1, 800 ) + timer.Simple(0.5, function() + + local cmb = table.Random(combine) + self:EmitSound(table.Random({"debris/beamstart7.wav"}),95) + util.ScreenShake( self:GetPos(), 5, 5, 2, 800 ) + local bot = ents.Create(cmb) + if (!IsValid(bot)) then + coroutine.wait(0.1) + return + end + bot:SetAngles(self:GetAngles()) + bot:SetOwner(self) + local plr = lookForNearestPlayer(self) + bot:SetPos(self:GetPos() + Vector(0,0,40)) + bot:Spawn() + bot:Activate() + + headcrab = math.random(0,2) + count = 6 + speed = 3000 + time = 5 + height = 0 + damage = 150 + radius = 300 + duration = 30 + spawnflags = 0 + if (bot:GetClass() == "env_headcrabcanister") then + bot:SetKeyValue( "HeadcrabType", headcrab ) + bot:SetKeyValue( "HeadcrabCount", count ) + bot:SetKeyValue( "FlightSpeed", speed ) + bot:SetKeyValue( "FlightTime", time ) + bot:SetKeyValue( "StartingHeight", height ) + bot:SetKeyValue( "Damage", damage ) + bot:SetKeyValue( "DamageRadius", radius ) + bot:SetKeyValue( "SmokeLifetime", duration ) + bot:SetKeyValue( "spawnflags", spawnflags ) + bot:Fire( "FireCanister" ) + bot:SetAngles(Angle(math.sin( CurTime() ) * 16 - 55,plr:GetAngles().y,0)) + bot:SetPos(plr:GetPos() + Vector(math.random(-300,300),math.random(-300,300),0)) + end + if (bot:IsNPC()) then + bot:SetTarget(plr) + bot:SetEnemy(plr) + bot:AlertSound() + bot:UpdateEnemyMemory( plr, plr:GetPos() ) + bot:SetSaveValue( "m_vecLastPosition", plr:GetPos() ) + bot:SetSchedule(SCHED_FORCED_GO_RUN) + bot:SetEntityTeam(TEAM_GREEN) + end + table.insert(self.bot,bot) + --print("Creating NPC #"..bot:EntIndex()) + timer.Create("CheckForNoEnemies"..bot:EntIndex(), 8, 0, function() + if (!IsValid(bot) or !bot:IsNPC()) then return end + if (bot:GetEnemy() == nil) then -- not doing anything, kick + for k,v in ipairs(self.bot) do + if (v:EntIndex() == bot:EntIndex()) then + table.remove(self.bot,k) + end + end + bot:Remove() + --print("Removed NPC #"..bot:EntIndex()) + end + end) + if (bot:GetModel()) then + self:SetModel(bot:GetModel()) + end + end) + coroutine.wait(3.0) + else + coroutine.yield() + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mob_zombie_director.lua b/gamemodes/tf/entities/entities/mob_zombie_director.lua new file mode 100644 index 000000000..ef138be57 --- /dev/null +++ b/gamemodes/tf/entities/entities/mob_zombie_director.lua @@ -0,0 +1,372 @@ +AddCSLuaFile() +ENT.Base = "base_nextbot" +ENT.Type = "nextbot" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Infestation Raid" +ENT.Category = "Civillian 2 Misc" + +list.Set( "NPC", "mob_zombie_director", { + Name = ENT.PrintName, + Class = "mob_zombie_director", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) + +local function lookForNearestPlayer(bot) + local npcs = {} + for k,v in ipairs(ents.FindInSphere(bot:GetPos(), 25000)) do + if ((v:IsTFPlayer()) and v:Health() > 0 and !v:IsFriendly(bot) and v:EntIndex() != bot:EntIndex() and !v:IsFlagSet(FL_NOTARGET) and v:Health() > 0 ) then + table.insert(npcs, v) + end + end + return table.Random(npcs) +end +function ENT:Initialize() + if CLIENT then return end + self:SetModel("models/zombies/classic.mdl") + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:SetMaterial("debug/debugmrmwireframe") + self:SetSolid(SOLID_NONE) + self:SetModelScale(1) + self:SetFOV(90) + self:SetEntityTeam(TEAM_GREEN) + self.bots = {} + self.bot = {} +end +function ENT:Think() + self:SetNoDraw(!GetConVar("developer"):GetBool()) + if (self:GetCycle() == 1) then + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:SetCycle(0) + end + return true +end + +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:IsNPC() + return false +end + +function ENT:IsNextBot() + return true +end + +function ENT:Health() + return nil +end + +local function LeadBot_S_Add_Zombie(team,class,pos) + if !navmesh.IsLoaded() then + ErrorNoHalt("There is no navmesh! Generate one using \"nav_generate\"!\n") + return + end + + local name = string.upper(string.sub(class,1,1))..string.sub(class,2) + local bot = player.CreateNextBot(name) + local teamv = TEAM_RED + if team == 1 then + teamv = TEAM_bot + end + + if !IsValid(bot) then ErrorNoHalt("[LeadBot] Player limit reached!\n") return end + bot.LastSegmented = CurTime() + 1 + + bot.ControllerBot = ents.Create("ctf_bot_navigator") + bot.ControllerBot:Spawn() + bot.ControllerBot:SetOwner(bot) + + bot.LastPath = nil + bot.CurSegment = 2 + bot.TFBot = true + bot.IsL4DZombie = true + bot.BotStrategy = math.random(0, 1) + + --timer.Simple(1, function() + ----TalkToMe(bot, "join") + --end) + bot:SetTeam(teamv) + bot:SetPlayerClass(class) + bot:SetPos(pos) + timer.Simple(0.1, function() + if IsValid(bot) then + bot:SetPlayerClass(class) + bot.TFBot = true + end + end) + + --MsgN("[LeadBot] Bot " .. name .. " with strategy " .. bot.BotStrategy .. " added!") + return bot +end + +local combine = { + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombie_torso", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_zombine", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_fastzombie", + "npc_poisonzombie", + "npc_poisonzombie", + "npc_poisonzombie", + "npc_poisonzombie", + "npc_poisonzombie", + "npc_poisonzombie", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_fast", + "npc_headcrab_black", + "npc_headcrab_black", + "npc_headcrab_black", + "npc_headcrab_black", + "npc_headcrab_black", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", +} +function ENT:OnRemove() + for k,v in ipairs(self.bots) do + v:Remove() + --print("Removed special bot #"..v:EntIndex()) + end + for k,v in ipairs(self.bot) do + if (IsValid(v)) then + v:Remove() + --print("Removed bot #"..v:EntIndex()) + end + end +end + +function ENT:ChasePos() +end +function ENT:RunBehaviour() + while (true) do + for k,v in ipairs(self.bots) do + if (!IsValid(v)) then + table.remove(self.bots,k) + end + end + for k,v in ipairs(self.bot) do + if (!IsValid(v)) then + table.remove(self.bot,k) + end + end + self.loco:SetAcceleration( 1400 ) + self.loco:SetDesiredSpeed( 1400 ) -- Walk speed + local ply = lookForNearestPlayer(self) + if (IsValid(ply)) then + self:SetPos(ply:GetPos()) + end + local pos = self:FindSpot("random", {type = "hiding", radius = math.random(120,8000), pos = self:GetPos()}) + if (pos) then + self:SetPos(pos) + end + if (math.random(1,7) == 1) then + local cmb = table.Random(combine) + local bot = ents.Create(cmb) + if (!IsValid(bot)) then + coroutine.wait(0.1) + return + end + bot:SetAngles(self:GetAngles()) + bot:SetOwner(self) + local plr = lookForNearestPlayer(self) + local pos = self:FindSpot("random", {type = "hiding", radius = math.random(120,8000), pos = self:GetPos()}) + if (pos) then + bot:SetPos(pos) + else + bot:SetPos(self:GetPos() + Vector(math.random(-120,120),math.random(-120,120),20)) + end + bot:Spawn() + bot:Activate() + + headcrab = math.random(0,2) + count = 6 + speed = 3000 + time = 5 + height = 0 + damage = 150 + radius = 300 + duration = 30 + spawnflags = 0 + if (bot:GetClass() == "env_headcrabcanister") then + bot:SetKeyValue( "HeadcrabType", headcrab ) + bot:SetKeyValue( "HeadcrabCount", count ) + bot:SetKeyValue( "FlightSpeed", speed ) + bot:SetKeyValue( "FlightTime", time ) + bot:SetKeyValue( "StartingHeight", height ) + bot:SetKeyValue( "Damage", damage ) + bot:SetKeyValue( "DamageRadius", radius ) + bot:SetKeyValue( "SmokeLifetime", duration ) + bot:SetKeyValue( "spawnflags", spawnflags ) + bot:Fire( "FireCanister" ) + bot:SetAngles(Angle(math.sin( CurTime() ) * 16 - 55,plr:GetAngles().y,0)) + bot:SetPos(plr:GetPos() + Vector(math.random(-300,300),math.random(-300,300),0)) + end + if (bot:IsNPC()) then + bot:SetTarget(plr) + bot:SetEnemy(plr) + bot:AlertSound() + bot:UpdateEnemyMemory( plr, plr:GetPos() ) + bot:SetSaveValue( "m_vecLastPosition", plr:GetPos() ) + bot:SetSchedule(SCHED_FORCED_GO_RUN) + bot:SetEntityTeam(TEAM_GREEN) + end + table.insert(self.bot,bot) + --print("Creating NPC #"..bot:EntIndex()) + timer.Create("CheckForNoEnemies"..bot:EntIndex(), 8, 0, function() + if (!IsValid(bot) or !bot:IsNPC()) then return end + if (bot:GetEnemy() == nil) then -- not doing anything, kick + for k,v in ipairs(self.bot) do + if (v:EntIndex() == bot:EntIndex()) then + table.remove(self.bot,k) + end + end + bot:Remove() + --print("Removed NPC #"..bot:EntIndex()) + end + end) + if (bot:GetModel()) then + self:SetModel(bot:GetModel()) + end + coroutine.wait(3.0) + else + coroutine.yield() + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot.lua b/gamemodes/tf/entities/entities/mvm_bot.lua new file mode 100644 index 000000000..9eadc558d --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot.lua @@ -0,0 +1,354 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "base_entity" +ENT.Type = "anim" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 0 +ENT.PrintName = "Scout" +ENT.Items = {} +ENT.Bot = nil +ENT.Category = "TFBots: MVM" +ENT.PreferredName = nil +ENT.PreferredIcon = nil +list.Set( "NPC", "mvm_bot", { + Name = ENT.PrintName, + Class = "mvm_bot", + Category = ENT.Category, + AdminOnly = true +} ) + +local function LeadBot_S_Add_Zombie(team,class,pos,ent) + if !navmesh.IsLoaded() then + ErrorNoHalt("There is no navmesh! Generate one using \"nav_generate\"!\n") + return + end + + local name = string.upper(string.sub(class,1,1))..string.sub(class,2) + + local bot + if (ent.PZClass == "giantheavyheater") then + bot = player.CreateNextBot("Heavyweapons") + else + if (ent.PreferredName != nil) then + bot = player.CreateNextBot(ent.PreferredName) + else + bot = player.CreateNextBot(ent.PrintName) + end + end + bot.VisionLimits = ent.VisionLimits + local teamv = TEAM_RED + if team == 1 then + if (ent.PZClass == "wtfdemoman") then + teamv = TEAM_NEUTRAL + else + teamv = TEAM_BLU + end + end + + if !IsValid(bot) then ErrorNoHalt("[LeadBot] Player limit reached!\n") return end + bot.LastSegmented = CurTime() + 1 + + bot.ControllerBot = ents.Create("ctf_bot_navigator") + bot.ControllerBot:Spawn() + bot.ControllerBot:SetOwner(bot) + + bot.LastPath = nil + bot.CurSegment = 2 + bot.TFBot = true + bot.IsL4DZombie = true + bot.BotStrategy = math.random(0, 1) + bot:SetNWString("PreferredIcon",ent.PreferredIcon) + + --timer.Simple(1, function() + ----TalkToMe(bot, "join") + --end) + bot:SetTeam(teamv) + bot:SetPlayerClass(class) + bot:SetPos(pos) + bot.botPos = pos + bot.IsMVMRobot = true + bot:SetNWBool("IsBoss",ent.IsBoss) + bot.Difficulty = ent.Difficulty + + timer.Simple(0.1, function() + if IsValid(bot) then + --bot:SetPlayerClass(class) + if (bot:GetPlayerClass() == "bowman_rapid_fire") then + bot:ManipulateBoneScale(bot:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + elseif (bot:GetPlayerClass() == "scout_shortstop") then + bot:ManipulateBoneScale(bot:LookupBone("bip_head"),Vector(0.75, 0.75, 0.75)) + end + timer.Simple(0.3, function() + + bot:SetNWString("PreferredIcon",ent.PreferredIcon) + + end) + bot:SetBloodColor(DONT_BLEED) + bot.TFBot = true + + local class = bot.playerclass + if (string.find(class,"demoman")) then + class = "demo" + elseif (string.find(class,"Demoman")) then + class = "demo" + elseif (string.find(class,"demoknight")) then + class = "demo" + end + ent:CustomOnInitialize(bot) + end + end) + + --MsgN("[LeadBot] Bot " .. name .. " with strategy " .. bot.BotStrategy .. " added!") + return bot +end + +function ENT:CustomOnInitialize(bot) -- i did not steal this +end +function ENT:CustomOnKillEnemy(bot) +end +function ENT:Initialize() + self:SetModel("models/bots/scout/bot_scout.mdl") + self:ResetSequence(self:SelectWeightedSequence(ACT_MP_STAND_MELEE)) + self:SetSolid(SOLID_NONE) + self:SetModelScale(1) + --self:SetFOV(90) + self.bots = {} + self.infected = {} + if SERVER then + local npc = LeadBot_S_Add_Zombie(1,self.PZClass,self:GetPos(),self) + if (!IsValid(npc)) then + ErrorNoHalt("The bot could not spawn because you are in singleplayer!") + return + end + self:SetModel(npc:GetModel()) + self:ResetSequence(self:SelectWeightedSequence(ACT_MP_STAND_MELEE)) + npc:SetNWString("PreferredIcon",self.PreferredIcon) + timer.Simple(0.3, function() + + npc:SetSkin(1) + timer.Simple(0.5, function() + + if (GetConVar("ai_disabled"):GetBool()) then return end + for k,v in ipairs(ents.FindByClass("item_teamflag_mvm")) do + if (!IsValid(v.Carrier) and !v.NextReturn and k == 1) then + if (npc:GetPlayerClass() != "engineer" and npc:GetPlayerClass() != "medic" and npc:GetPlayerClass() != "sentrybuster") then + v:Pickup(npc) + for _,capturezone in ipairs(ents.FindByClass("func_capturezone")) do + npc.botPos = capturezone.Pos + end + end + end + end + + end) + local class = npc:GetPlayerClass() + if (class != "scout" and + class != "soldier" and + class != "pyro" and + class != "demoman" and + class != "heavy" and + class != "engineer" and + class != "medic" and + class != "sniper" and + class != "spy" and + class != "gmodplayer") + then + + local class = npc.playerclass + if (string.find(class,"demoman")) then + class = "demo" + elseif (string.find(class,"Demoman")) then + class = "demo" + elseif (string.find(class,"demoknight")) then + class = "demo" + end + if (self.IsBoss) then + if (self.PZClass == "wtfdemoman") then + + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + npc:SetModelScale(0.45 ) + npc:StopSound("MVM.GiantScoutLoop") + npc:StopSound("MVM.GiantSoldierLoop") + npc:StopSound("MVM.GiantPyroLoop") + npc:StopSound("MVM.GiantDemomanLoop") + npc:StopSound("MVM.GiantHeavyLoop") + npc:StopSound("MVM.GiantWTFDemomanLoop") + npc:EmitSound("MVM.GiantWTFDemomanLoop") + + else + + if (npc:GetPlayerClass() != "sentrybuster") then + if (npc:GetPlayerClass() == "engineer" or npc:GetPlayerClass() == "medic" or npc:GetPlayerClass() == "giantmedic" or npc:GetPlayerClass() == "sniper" or npc:GetPlayerClass() == "spy") then + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + npc.IsBossOverride = true + else + npc:SetModel("models/bots/"..class.."_boss/bot_"..class.."_boss.mdl") + end + else + npc:SetModel("models/bots/demo/bot_sentry_buster.mdl") + end + if (self.OverrideModelScale) then + npc.OverrideModelScale = self.OverrideModelScale + npc:SetModelScale(self.OverrideModelScale) + else + npc:SetModelScale(1.75) + end + end + + else + if (self.OverrideModelScale) then + npc.OverrideModelScale = self.OverrideModelScale + npc:SetModelScale(self.OverrideModelScale) + end + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + if (npc:GetPlayerClass() == "bowman_rapid_fire") then + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + elseif (npc:GetPlayerClass() == "scout_shortstop") then + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.75, 0.75, 0.75)) + end + end + else + local class = npc:GetPlayerClass() + if (string.find(class,"demoman")) then + class = "demo" + elseif (string.find(class,"Demoman")) then + class = "demo" + elseif (string.find(class,"demoknight")) then + class = "demo" + end + if (self.IsBoss and !self.OverrideModelScale) then + if (npc.playerclass == "Engineer" or npc:GetPlayerClass() == "medic" or npc:GetPlayerClass() == "giantmedic" or npc:GetPlayerClass() == "sniper" or npc:GetPlayerClass() == "spy") then + + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + else + npc:SetModel("models/bots/"..class.."_boss/bot_"..class.."_boss.mdl") + end + npc:SetModelScale(1.75) + elseif (self.OverrideModelScale) then + if (npc:GetPlayerClass() == "bowman_rapid_fire") then + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + elseif (npc:GetPlayerClass() == "scout_shortstop") then + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.75, 0.75, 0.75)) + end + if (self.IsBoss) then + if (npc:GetPlayerClass() == "engineer" or npc:GetPlayerClass() == "medic" or npc:GetPlayerClass() == "giantengineer" or npc:GetPlayerClass() == "giantmedic" or npc:GetPlayerClass() == "sniper" or npc:GetPlayerClass() == "spy") then + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + else + npc:SetModel("models/bots/"..class.."_boss/bot_"..class.."_boss.mdl") + end + else + + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(1, 1, 1)) + end + npc:SetModelScale(self.OverrideModelScale) + else + if (self.IsBoss) then + + if (npc:GetPlayerClass() == "engineer" or npc:GetPlayerClass() == "medic" or npc:GetPlayerClass() == "giantengineer" or npc:GetPlayerClass() == "giantmedic" or npc:GetPlayerClass() == "sniper" or npc:GetPlayerClass() == "spy") then + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + else + npc:SetModel("models/bots/"..class.."_boss/bot_"..class.."_boss.mdl") + end + + else + npc:SetModel("models/bots/"..class.."/bot_"..class..".mdl") + if (npc:GetPlayerClass() == "bowman_rapid_fire") then + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.7, 0.7, 0.7)) + elseif (npc:GetPlayerClass() == "scout_shortstop") then + npc:ManipulateBoneScale(npc:LookupBone("bip_head"),Vector(0.75, 0.75, 0.75)) + end + end + end + + end + end) + self.Bot = npc + timer.Simple(0.5, function() + if (self.Items and !table.IsEmpty(self.Items)) then + npc:StripWeapons() + for k,v in ipairs(self.Items) do + npc:SetPlayerClass(npc:GetPlayerClass()) + npc:EquipInLoadout(v) + timer.Simple(0.1, function() + local wep = npc:GetWeapons()[1] or npc:GetWeapons()[2] or npc:GetWeapons()[3] + npc:SelectWeapon(wep) + end) + end + else + npc:SetPlayerClass(npc:GetPlayerClass()) + end + end) + end + self:SetNoDraw(true) +end + +function ENT:SpawnFunction( ply, tr, ClassName ) + + if ( !tr.Hit ) then return end + + local SpawnPos = tr.HitPos + tr.HitNormal * 16 + + local ent = ents.Create( ClassName ) + ent:SetPos( SpawnPos ) + ent:Spawn() + ent:Activate() + + return ent + +end + +function ENT:CustomOnThink() + do return end +end + +function ENT:Think() + if SERVER then + for k,v in ipairs(team.GetPlayers(TEAM_BLU)) do + if (v:EntIndex() == self.Bot:EntIndex() and !v:Alive() and !self.Removing and self.PZClass != "sentrybuster") then + timer.Simple(1.5, function() + self:Remove() + end) + self.Removing = true + end + end + self:CustomOnThink() + end + if (!IsValid(self.Bot) and SERVER) then + self:Remove() + end + self:NextThink(CurTime()) + return true +end + +function ENT:OnRemove() + if SERVER then + self.Bot:Kick("Removed by creator") + end +end +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:IsNPC() + return false +end + +function ENT:IsNextBot() + return false +end + +function ENT:Health() + return nil +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_bonk_scout.lua b/gamemodes/tf/entities/entities/mvm_bot_bonk_scout.lua new file mode 100644 index 000000000..e96790518 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_bonk_scout.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.Difficulty = 3 +ENT.PrintName = "Bonk! Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_scout_bonk" +ENT.Items = {"Bonk! Atomic Punch","Atomizer","Bonk Helm"} + +list.Set( "NPC", "mvm_bot_bonk_scout", { + Name = ENT.PrintName, + Class = "mvm_bot_bonk_scout", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_bowman.lua b/gamemodes/tf/entities/entities/mvm_bot_bowman.lua new file mode 100644 index 000000000..b877e43db --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_bowman.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "bowman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Bowman" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_bowman", { + Name = ENT.PrintName, + Class = "mvm_bot_bowman", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_bowman_rapid_fire.lua b/gamemodes/tf/entities/entities/mvm_bot_bowman_rapid_fire.lua new file mode 100644 index 000000000..d0463a44a --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_bowman_rapid_fire.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "bowman_rapid_fire" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 2 +ENT.PrintName = "Bowman Rapid Fire" +ENT.Category = "TFBots: MVM" +list.Set( "NPC", "mvm_bot_bowman_rapid_fire", { + Name = ENT.PrintName, + Class = "mvm_bot_bowman_rapid_fire", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_captain_punch.lua b/gamemodes/tf/entities/entities/mvm_bot_captain_punch.lua new file mode 100644 index 000000000..2e554e58e --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_captain_punch.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "captain_punch" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.Items = {"War Head","Fists of Steel"} +ENT.PrintName = "Captain Punch" +ENT.Category = "TFBots: MVM" +ENT.OverrideModelScale = 1.9 + +list.Set( "NPC", "mvm_bot_captain_punch", { + Name = ENT.PrintName, + Class = "mvm_bot_captain_punch" , + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_chief_pyro.lua b/gamemodes/tf/entities/entities/mvm_bot_chief_pyro.lua new file mode 100644 index 000000000..af06783fe --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_chief_pyro.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "chiefpyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Chief Pyro" +ENT.Category = "TFBots: MVM" +ENT.OverrideModelScale = 1.9 + +list.Set( "NPC", "mvm_bot_chief_pyro", { + Name = ENT.PrintName, + Class = "mvm_bot_chief_pyro", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_chief_tavish.lua b/gamemodes/tf/entities/entities/mvm_bot_chief_tavish.lua new file mode 100644 index 000000000..99f972d3a --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_chief_tavish.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "chieftavish" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Chief Tavish" +ENT.Category = "TFBots: MVM" +ENT.OverrideModelScale = 1.9 +ENT.PreferredIcon = "hud/leaderboard_class_demoknight_giant" + +list.Set( "NPC", "mvm_bot_chief_tavish", { + Name = ENT.PrintName, + Class = "mvm_bot_chief_tavish" , + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_clusterfuck_demo.lua b/gamemodes/tf/entities/entities/mvm_bot_clusterfuck_demo.lua new file mode 100644 index 000000000..48cf39440 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_clusterfuck_demo.lua @@ -0,0 +1,19 @@ +if (!IsMounted("tf") and !IsMounted("cstrike")) then return end +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "wtfdemoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "WTF Demoman" +ENT.Category = "TFBots: MVM" + + +list.Set( "NPC", "mvm_bot_clusterfuck_demo", { + Name = ENT.PrintName, + Class = "mvm_bot_clusterfuck_demo", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_colonelbarrage.lua b/gamemodes/tf/entities/entities/mvm_bot_colonelbarrage.lua new file mode 100644 index 000000000..3d7583707 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_colonelbarrage.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "colonelbarrage" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Colonel Barrage" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_soldier_barrage" + +list.Set( "NPC", "mvm_bot_colonelbarrage", { + Name = ENT.PrintName, + Class = "mvm_bot_colonelbarrage", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_deflectorheavy.lua b/gamemodes/tf/entities/entities/mvm_bot_deflectorheavy.lua new file mode 100644 index 000000000..96a619ddf --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_deflectorheavy.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "heavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Items = {"U-clank-a","Deflector"} +ENT.PrintName = "Deflector Heavy" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_deflector" +list.Set( "NPC", "mvm_bot_deflectorheavy", { + Name = ENT.PrintName, + Class = "mvm_bot_deflectorheavy" , + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_demoknight.lua b/gamemodes/tf/entities/entities/mvm_bot_demoknight.lua new file mode 100644 index 000000000..3567795e6 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_demoknight.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "demoknight" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 2 +ENT.PrintName = "Demoknight" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Chargin' Targe","Eyelander"} +ENT.PreferredIcon = "hud/leaderboard_class_demoknight" + +list.Set( "NPC", "mvm_bot_demoknight", { + Name = ENT.PrintName, + Class = "mvm_bot_demoknight", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_demoman.lua b/gamemodes/tf/entities/entities/mvm_bot_demoman.lua new file mode 100644 index 000000000..5b29f405b --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_demoman.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "demoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Demoman" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_demoman", { + Name = ENT.PrintName, + Class = "mvm_bot_demoman", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_engineer.lua b/gamemodes/tf/entities/entities/mvm_bot_engineer.lua new file mode 100644 index 000000000..0d3fbe139 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_engineer.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "engineer" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Engineer" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_teleporter" + +list.Set( "NPC", "mvm_bot_engineer", { + Name = ENT.PrintName, + Class = "mvm_bot_engineer", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giant_bonk_scout.lua b/gamemodes/tf/entities/entities/mvm_bot_giant_bonk_scout.lua new file mode 100644 index 000000000..b2bae5b7b --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giant_bonk_scout.lua @@ -0,0 +1,30 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Bonk! Scout" +ENT.PreferredName = "Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_scout_bonk_giant" +ENT.Items = {"Bonk! Atomic Punch","Atomizer","Bonk Helm"} + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.75) + bot:SetHealth(1600) + bot:SetMaxHealth(1600) + end) +end + +list.Set( "NPC", "mvm_bot_giant_bonk_scout", { + Name = ENT.PrintName, + Class = "mvm_bot_giant_bonk_scout", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantblastsoldier.lua b/gamemodes/tf/entities/entities/mvm_bot_giantblastsoldier.lua new file mode 100644 index 000000000..e2c1388a0 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantblastsoldier.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantblastsoldier" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Blast Soldier" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_soldier_libertylauncher_giant" + +list.Set( "NPC", "mvm_bot_giantblastsoldier", { + Name = ENT.PrintName, + Class = "mvm_bot_giantblastsoldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantburstfiredemoman.lua b/gamemodes/tf/entities/entities/mvm_bot_giantburstfiredemoman.lua new file mode 100644 index 000000000..263df0079 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantburstfiredemoman.lua @@ -0,0 +1,25 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantdemoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Burst Fire Demo" +ENT.Category = "TFBots: MVM" + + +function ENT:CustomOnInitialize(bot) + bot:GetActiveWeapon().Primary.Delay = 0.6 * 0.1 + bot:GetActiveWeapon().ReloadTime = 0.6 * 0.65 + bot:GetActiveWeapon().Primary.ClipSize = 4 + 7 + bot:GetActiveWeapon().Force = 1100 * 1.1 +end + +list.Set( "NPC", "mvm_bot_giantburstfiredemoman", { + Name = ENT.PrintName, + Class = "mvm_bot_giantburstfiredemoman", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantburstfiresoldier.lua b/gamemodes/tf/entities/entities/mvm_bot_giantburstfiresoldier.lua new file mode 100644 index 000000000..819fada12 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantburstfiresoldier.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantburstfiresoldier" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Burst Fire Soldier" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_soldier_burstfire" + +list.Set( "NPC", "mvm_bot_giantburstfiresoldier", { + Name = ENT.PrintName, + Class = "mvm_bot_giantburstfiresoldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantburstfiresoldier2.lua b/gamemodes/tf/entities/entities/mvm_bot_giantburstfiresoldier2.lua new file mode 100644 index 000000000..1828a0925 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantburstfiresoldier2.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantburstfiresoldier2" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PreferredName = "Giant Burst Fire Soldier" +ENT.PrintName = "Giant Burst Fire Soldier (Type 2)" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_soldier_burstfire" + +list.Set( "NPC", "mvm_bot_giantburstfiresoldier2", { + Name = ENT.PrintName, + Class = "mvm_bot_giantburstfiresoldier2", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantchargedsoldier.lua b/gamemodes/tf/entities/entities/mvm_bot_giantchargedsoldier.lua new file mode 100644 index 000000000..ba5fa6bfa --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantchargedsoldier.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantsoldiercharged" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Charged Soldier" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_giantchargedsoldier", { + Name = ENT.PrintName, + Class = "mvm_bot_giantchargedsoldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantdemoknight.lua b/gamemodes/tf/entities/entities/mvm_bot_giantdemoknight.lua new file mode 100644 index 000000000..cda34252e --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantdemoknight.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantdemoknight" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.Items = {"Prince Tavish's Crown","Chargin' Targe","Eyelander","Ali Baba's Wee Booties"} +ENT.PrintName = "Giant Demoknight" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_demoknight_giant" + +list.Set( "NPC", "mvm_bot_giantdemoknight", { + Name = ENT.PrintName, + Class = "mvm_bot_giantdemoknight", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantdemoman.lua b/gamemodes/tf/entities/entities/mvm_bot_giantdemoman.lua new file mode 100644 index 000000000..84c02a409 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantdemoman.lua @@ -0,0 +1,15 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantdemoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Demoman" +ENT.Category = "TFBots: MVM" +list.Set( "NPC", "mvm_bot_giantdemoman", { + Name = ENT.PrintName, + Class = "mvm_bot_giantdemoman", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantengineer.lua b/gamemodes/tf/entities/entities/mvm_bot_giantengineer.lua new file mode 100644 index 000000000..efec862f3 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantengineer.lua @@ -0,0 +1,25 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantengineer" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Engineer" +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/engineer/bot_engineer.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.75) + end) +end + +list.Set( "NPC", "mvm_bot_giantengineer", { + Name = ENT.PrintName, + Class = "mvm_bot_giantengineer", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantflarepyro.lua b/gamemodes/tf/entities/entities/mvm_bot_giantflarepyro.lua new file mode 100644 index 000000000..f13b080c5 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantflarepyro.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantflarepyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Flare Pyro" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Detonator","Old Guadalajara"} +ENT.PreferredIcon = "hud/leaderboard_class_pyro_flare_giant" + +list.Set( "NPC", "mvm_bot_giantflarepyro", { + Name = ENT.PrintName, + Class = "mvm_bot_giantflarepyro", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavy.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavy.lua new file mode 100644 index 000000000..f7c3cc1ff --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavy.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Heavy" +ENT.Category = "TFBots: MVM" +list.Set( "NPC", "mvm_bot_giantheavy", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavy_brassbeast.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavy_brassbeast.lua new file mode 100644 index 000000000..66393a61f --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavy_brassbeast.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Brass Beast Heavy" +ENT.Items = {"Brass Beast"} +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_giantheavy_brassbeast", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavy_brassbeast", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavy_natascha.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavy_natascha.lua new file mode 100644 index 000000000..7adb5bf39 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavy_natascha.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Natascha Heavy" +ENT.Items = {"Natascha"} +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_giantheavy_natascha", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavy_natascha", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector.lua new file mode 100644 index 000000000..4b9591271 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Deflector Heavy" +ENT.Items = {"U-clank-a","Deflector"} +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_deflector" +list.Set( "NPC", "mvm_bot_giantheavydeflector", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavydeflector", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill.lua new file mode 100644 index 000000000..6df6fb65f --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill.lua @@ -0,0 +1,29 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Heal-on-Kill Heavy" +ENT.Items = {"Tungsten Toque","Deflector"} +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_deflector_healonkill" +ENT.VisionLimits = 1600 + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetHealth(5500) + bot:SetMaxHealth(5500) + end) +end +function ENT:CustomOnKillEnemy(bot) + GAMEMODE:HealPlayer(bot,bot,5000,true,false) +end +list.Set( "NPC", "mvm_bot_giantheavydeflector_healonkill", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavydeflector_healonkill", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill2.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill2.lua new file mode 100644 index 000000000..64dd2b747 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill2.lua @@ -0,0 +1,24 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Heal-on-Kill Heavy (Type 2)" +ENT.PreferredName = "Giant Heavy" +ENT.Items = {"Deflector"} +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_deflector_healonkill" +ENT.VisionLimits = 1200 + +function ENT:CustomOnKillEnemy(bot) + GAMEMODE:HealPlayer(bot,bot,5000,true,false) +end +list.Set( "NPC", "mvm_bot_giantheavydeflector_healonkill2", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavydeflector_healonkill2", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill_boss.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill_boss.lua new file mode 100644 index 000000000..988f67bb6 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavydeflector_healonkill_boss.lua @@ -0,0 +1,31 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Chief Heal-on-Kill Heavy" +ENT.PreferredName = "Giant Heal-on-Kill Heavy" +ENT.Items = {"Tungsten Toque","Deflector"} +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_deflector_healonkill" +ENT.VisionLimits = 1600 + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModelScale(1.8) + bot:SetHealth(60000) + bot:SetMaxHealth(60000) + end) +end +function ENT:CustomOnKillEnemy(bot) + GAMEMODE:HealPlayer(bot,bot,8000,true,false) +end +list.Set( "NPC", "mvm_bot_giantheavydeflector_healonkill_boss", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavydeflector_healonkill_boss", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantheavyheater.lua b/gamemodes/tf/entities/entities/mvm_bot_giantheavyheater.lua new file mode 100644 index 000000000..37221fcd7 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantheavyheater.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavyheater" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Heater Heavy" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_heater" +list.Set( "NPC", "mvm_bot_giantheavyheater", { + Name = ENT.PrintName, + Class = "mvm_bot_giantheavyheater", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantmedic.lua b/gamemodes/tf/entities/entities/mvm_bot_giantmedic.lua new file mode 100644 index 000000000..de05aeef9 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantmedic.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantmedic" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Medic" +ENT.Items = {"Syringe Gun","Quick-Fix","Bonesaw"} +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_giantmedic", { + Name = ENT.PrintName, + Class = "mvm_bot_giantmedic", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantpyro.lua b/gamemodes/tf/entities/entities/mvm_bot_giantpyro.lua new file mode 100644 index 000000000..31f7462d0 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantpyro.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantpyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Pyro" +ENT.Category = "TFBots: MVM" +ENT.Items = {"TF_WEAPON_FLAMETHROWER","TF_WEAPON_FIREAXE"} +ENT.PreferredIcon = "hud/leaderboard_class_pyro" + +list.Set( "NPC", "mvm_bot_giantpyro", { + Name = ENT.PrintName, + Class = "mvm_bot_giantpyro", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantpyro_airblast.lua b/gamemodes/tf/entities/entities/mvm_bot_giantpyro_airblast.lua new file mode 100644 index 000000000..a1c2e1918 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantpyro_airblast.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantpyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Airblast Pyro" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Degreaser","Dead Cone"} +ENT.PreferredIcon = "hud/leaderboard_class_pyro" + +list.Set( "NPC", "mvm_bot_giantpyro_airblast", { + Name = ENT.PrintName, + Class = "mvm_bot_giantpyro_airblast", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantrapidfiredemoman.lua b/gamemodes/tf/entities/entities/mvm_bot_giantrapidfiredemoman.lua new file mode 100644 index 000000000..2e1881e0b --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantrapidfiredemoman.lua @@ -0,0 +1,23 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantdemoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Rapid Fire Demoman" +ENT.Category = "TFBots: MVM" + + +function ENT:CustomOnInitialize(bot) + bot:GetActiveWeapon().Primary.Delay = 0.6 * 0.75 + bot:GetActiveWeapon().ReloadTime = 0.6 * -0.4 +end + +list.Set( "NPC", "mvm_bot_giantrapidfiredemoman", { + Name = ENT.PrintName, + Class = "mvm_bot_giantrapidfiredemoman", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantrapidfiresoldier.lua b/gamemodes/tf/entities/entities/mvm_bot_giantrapidfiresoldier.lua new file mode 100644 index 000000000..b54f65d58 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantrapidfiresoldier.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantsoldierrapidfire" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Rapid Fire Soldier" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_giantrapidfiresoldier", { + Name = ENT.PrintName, + Class = "mvm_bot_giantrapidfiresoldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantscout.lua b/gamemodes/tf/entities/entities/mvm_bot_giantscout.lua new file mode 100644 index 000000000..3b92b5c80 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantscout.lua @@ -0,0 +1,28 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_scout" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.75) + bot:SetHealth(1600) + bot:SetMaxHealth(1600) + end) +end + +list.Set( "NPC", "mvm_bot_giantscout", { + Name = ENT.PrintName, + Class = "mvm_bot_giantscout", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantshotgunheavy.lua b/gamemodes/tf/entities/entities/mvm_bot_giantshotgunheavy.lua new file mode 100644 index 000000000..1bcb85a26 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantshotgunheavy.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantheavyshotgun" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Shotgun Heavy" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_shotgun_giant" +ENT.VisionLimits = 1200 + +list.Set( "NPC", "mvm_bot_giantshotgunheavy", { + Name = ENT.PrintName, + Class = "mvm_bot_giantshotgunheavy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantsniper.lua b/gamemodes/tf/entities/entities/mvm_bot_giantsniper.lua new file mode 100644 index 000000000..533cf5b74 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantsniper.lua @@ -0,0 +1,28 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "sniper" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Sniper" +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/sniper/bot_sniper.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetClassSpeed(300 * 0.5) + bot:SetModelScale(1.75) + bot:SetHealth(1600) + bot:SetMaxHealth(1600) + end) +end + +list.Set( "NPC", "mvm_bot_giantsniper", { + Name = ENT.PrintName, + Class = "mvm_bot_giantsniper", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantsoldier.lua b/gamemodes/tf/entities/entities/mvm_bot_giantsoldier.lua new file mode 100644 index 000000000..42993ab97 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantsoldier.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantsoldier" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Giant Soldier" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_giantsoldier", { + Name = ENT.PrintName, + Class = "mvm_bot_giantsoldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_giantspy.lua b/gamemodes/tf/entities/entities/mvm_bot_giantspy.lua new file mode 100644 index 000000000..9c4356d39 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_giantspy.lua @@ -0,0 +1,27 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "spy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.PrintName = "Giant Spy" +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/spy/bot_spy.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetClassSpeed(320 * 0.5) + bot:SetModelScale(1.75) + bot:SetHealth(1600) + bot:SetMaxHealth(1600) + end) +end + +list.Set( "NPC", "mvm_bot_giantspy", { + Name = ENT.PrintName, + Class = "mvm_bot_giantspy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_heavy.lua b/gamemodes/tf/entities/entities/mvm_bot_heavy.lua new file mode 100644 index 000000000..df61da85e --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_heavy.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "heavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Heavyweapons" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_heavy", { + Name = ENT.PrintName, + Class = "mvm_bot_heavy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_heavy_mittens.lua b/gamemodes/tf/entities/entities/mvm_bot_heavy_mittens.lua new file mode 100644 index 000000000..e829ab03a --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_heavy_mittens.lua @@ -0,0 +1,25 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "heavyweightchamp" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Heavy Mittens" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Holiday Punch"} +ENT.OverrideModelScale = 0.65 +ENT.PreferredIcon = "hud/leaderboard_class_heavy_mittens" + +function ENT:CustomOnInitialize(bot) + bot:SetMaxHealth(60) + bot:SetHealth(60) + bot:SetModelScale(0.65) +end + +list.Set( "NPC", "mvm_bot_heavy_mittens", { + Name = ENT.PrintName, + Class = "mvm_bot_heavy_mittens", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_heavyshotgun.lua b/gamemodes/tf/entities/entities/mvm_bot_heavyshotgun.lua new file mode 100644 index 000000000..7f484c283 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_heavyshotgun.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "heavyshotgun" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 2 +ENT.Items = {"Shotgun"} +ENT.PrintName = "Heavy Shotgun" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_shotgun" + +list.Set( "NPC", "mvm_bot_heavyshotgun", { + Name = ENT.PrintName, + Class = "mvm_bot_heavyshotgun", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_heavyweightchamp.lua b/gamemodes/tf/entities/entities/mvm_bot_heavyweightchamp.lua new file mode 100644 index 000000000..3a62df4ba --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_heavyweightchamp.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "heavyweightchamp" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Heavyweight Champ" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Killing Gloves of Boxing","Pugilist's Protector"} +ENT.PreferredIcon = "hud/leaderboard_class_heavy_champ" + +list.Set( "NPC", "mvm_bot_heavyweightchamp", { + Name = ENT.PrintName, + Class = "mvm_bot_heavyweightchamp", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_heavyweightchamp_giant.lua b/gamemodes/tf/entities/entities/mvm_bot_heavyweightchamp_giant.lua new file mode 100644 index 000000000..29f782893 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_heavyweightchamp_giant.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "superheavyweightchamp" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.Items = {"Pugilist's Protector","Killing Gloves of Boxing"} +ENT.PrintName = "Super Heavyweight Champ" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_heavyweightchamp_giant", { + Name = ENT.PrintName, + Class = "mvm_bot_heavyweightchamp_giant", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_heavyweightchampfast.lua b/gamemodes/tf/entities/entities/mvm_bot_heavyweightchampfast.lua new file mode 100644 index 000000000..2687f5e13 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_heavyweightchampfast.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "heavyweightchamp" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Items = {"Gloves of Running Urgently MvM"} +ENT.PrintName = "Heavyweight Champ (Fast)" +ENT.Category = "TFBots: MVM" +ENT.PreferredName = "Heavyweight Champ" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_gru" + +list.Set( "NPC", "mvm_bot_heavyweightchampfast", { + Name = ENT.PrintName, + Class = "mvm_bot_heavyweightchampfast", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_medic.lua b/gamemodes/tf/entities/entities/mvm_bot_medic.lua new file mode 100644 index 000000000..3cb8b20b7 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_medic.lua @@ -0,0 +1,15 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "medic" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Medic" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_medic", { + Name = ENT.PrintName, + Class = "mvm_bot_medic", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_melee_scout.lua b/gamemodes/tf/entities/entities/mvm_bot_melee_scout.lua new file mode 100644 index 000000000..9919fe6db --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_melee_scout.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Scout (Melee)" +ENT.Category = "TFBots: MVM" +ENT.PreferredName = "Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout" + +list.Set( "NPC", "mvm_bot_melee_scout", { + Name = ENT.PrintName, + Class = "mvm_bot_melee_scout", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_melee_scout_expert.lua b/gamemodes/tf/entities/entities/mvm_bot_melee_scout_expert.lua new file mode 100644 index 000000000..c45bd144c --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_melee_scout_expert.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout_expert" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.Difficulty = 3 +ENT.PrintName = "Melee Scout (Expert)" +ENT.Category = "TFBots: MVM" +ENT.PreferredName = "Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout" + + +list.Set( "NPC", "mvm_bot_melee_scout_expert", { + Name = ENT.PrintName, + Class = "mvm_bot_melee_scout_expert", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_melee_scout_fanwar.lua b/gamemodes/tf/entities/entities/mvm_bot_melee_scout_fanwar.lua new file mode 100644 index 000000000..5d9290f9f --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_melee_scout_fanwar.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Fan O' War Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredName = "Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout" +ENT.Items = {"Fan O'War"} + +list.Set( "NPC", "mvm_bot_melee_scout_fanwar", { + Name = ENT.PrintName, + Class = "mvm_bot_melee_scout_fanwar", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_melee_scout_sandman.lua b/gamemodes/tf/entities/entities/mvm_bot_melee_scout_sandman.lua new file mode 100644 index 000000000..40a713f18 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_melee_scout_sandman.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout_sandman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Stun Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredName = "Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" + +list.Set( "NPC", "mvm_bot_melee_scout_sandman", { + Name = ENT.PrintName, + Class = "mvm_bot_melee_scout_sandman", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_pyro.lua b/gamemodes/tf/entities/entities/mvm_bot_pyro.lua new file mode 100644 index 000000000..ec9d3a790 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_pyro.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "pyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Pyro" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_pyro", { + Name = ENT.PrintName, + Class = "mvm_bot_pyro", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_pyro_flare.lua b/gamemodes/tf/entities/entities/mvm_bot_pyro_flare.lua new file mode 100644 index 000000000..022bedfaf --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_pyro_flare.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "pyro_flare" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Flare Pyro" +ENT.Items = {"Flare Gun"} +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_pyro_flare" + +list.Set( "NPC", "mvm_bot_pyro_flare", { + Name = ENT.PrintName, + Class = "mvm_bot_pyro_flare", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_pyro_pusher.lua b/gamemodes/tf/entities/entities/mvm_bot_pyro_pusher.lua new file mode 100644 index 000000000..52fdafd90 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_pyro_pusher.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "pyro_flare" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Pyro Pusher" +ENT.Items = {"Scorch Shot"} +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_pyro_flare" + +list.Set( "NPC", "mvm_bot_pyro_pusher", { + Name = ENT.PrintName, + Class = "mvm_bot_pyro_pusher", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_samurai_demo.lua b/gamemodes/tf/entities/entities/mvm_bot_samurai_demo.lua new file mode 100644 index 000000000..f56707c85 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_samurai_demo.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "samuraidemo" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 3 +ENT.PrintName = "Samurai Demo" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Half-Zatoichi","Splendid Screen","Samur-Eye"} +ENT.PreferredIcon = "hud/leaderboard_class_demoknight_samurai" + +list.Set( "NPC", "mvm_bot_samurai_demo", { + Name = ENT.PrintName, + Class = "mvm_bot_samurai_demo", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_armored_sandman.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_armored_sandman.lua new file mode 100644 index 000000000..22721385d --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_armored_sandman.lua @@ -0,0 +1,30 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantscoutmelee" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Major League Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Batter's Helmet","Sandman"} +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.75) + bot:SetClassSpeed(300) + bot:SetHealth(3000) + bot:SetMaxHealth(3000) + bot:GetActiveWeapon().Secondary.Delay = math.max(bot:GetActiveWeapon().Secondary.Delay * 0.1,0.25) +end + +list.Set( "NPC", "mvm_bot_scout_major_league", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_major_league", + Category = ENT.Category, + AdminOnly = true +} ) diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_hyper_league.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_hyper_league.lua new file mode 100644 index 000000000..2760792b4 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_hyper_league.lua @@ -0,0 +1,23 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 2 +ENT.PrintName = "Hyper League Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Batter's Helmet","Sandman"} +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + bot:GetActiveWeapon().Secondary.Delay = math.max(bot:GetActiveWeapon().Secondary.Delay * 0.25,0.25) +end + +list.Set( "NPC", "mvm_bot_scout_hyper_league", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_hyper_league", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_long_jumping.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_long_jumping.lua new file mode 100644 index 000000000..10a2aa8a4 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_long_jumping.lua @@ -0,0 +1,34 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 2 +ENT.PrintName = "Jumping Sandman" +ENT.PreferredName = "Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Hanger-On Hood","Flight of the Monarch","Sandman"} +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnThink() + local bot = self.Bot + if bot.ControllerBot.nextStuckJump < CurTime() then + if !bot:Crouching() then + bot.ControllerBot.NextJump = 0 + end + bot.ControllerBot.nextStuckJump = CurTime() + 5 + end + bot:SetJumpPower(220 * 2) +end +function ENT:CustomOnInitialize(bot) + bot:GetActiveWeapon().Secondary.Delay = math.max(bot:GetActiveWeapon().Secondary.Delay * 0.5,0.25) +end + +list.Set( "NPC", "mvm_bot_scout_long_jumping", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_long_jumping", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_long_jumping_giant.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_long_jumping_giant.lua new file mode 100644 index 000000000..e8d04c400 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_long_jumping_giant.lua @@ -0,0 +1,44 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 2 +ENT.PrintName = "Giant Jumping Sandman" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Hanger-On Hood","Flight of the Monarch","Sandman"} +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnThink() + local bot = self.Bot + if bot.ControllerBot.nextStuckJump < CurTime() then + if !bot:Crouching() then + bot.ControllerBot.NextJump = 0 + end + bot.ControllerBot.nextStuckJump = CurTime() + 5 + end + bot:SetJumpPower(220 * 2) +end +function ENT:CustomOnInitialize(bot) + bot:SelectWeapon(bot:GetWeapons()[3]:GetClass()) + bot:GetActiveWeapon().Secondary.Delay = math.max(bot:GetActiveWeapon().Secondary.Delay * 0.1,0.25) + bot:GetActiveWeapon().BaseDamage = 45 * 2 + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.75) + bot:SetHealth(1200) + bot:SetMaxHealth(1200) + end) + bot:GetWeapons()[2]:Remove() + bot:GetWeapons()[1]:Remove() +end + +list.Set( "NPC", "mvm_bot_scout_long_jumping_giant", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_long_jumping_giant", + Category = ENT.Category, + AdminOnly = true +} ) diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_major_league.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_major_league.lua new file mode 100644 index 000000000..0d527f8e3 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_major_league.lua @@ -0,0 +1,30 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantscoutmelee" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Major League Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Batter's Helmet","Essential Accessories","Sandman"} +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.75) + bot:SetClassSpeed(400) + bot:SetHealth(1600) + bot:SetMaxHealth(1600) + bot:GetActiveWeapon().Secondary.Delay = math.max(bot:GetActiveWeapon().Secondary.Delay * 0.1,0.25) +end + +list.Set( "NPC", "mvm_bot_scout_major_league", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_major_league", + Category = ENT.Category, + AdminOnly = true +} ) diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_major_league_boss.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_major_league_boss.lua new file mode 100644 index 000000000..c3c3d8304 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_major_league_boss.lua @@ -0,0 +1,32 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "giantscoutmelee" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Major League" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Boston Boom-Bringer","Summer Shades","Genuine Cockfighter","Sandman"} +ENT.Category = "TFBots: MVM" + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetModelScale(1.9) + bot:SetClassSpeed(400 * 1.4) + bot:SetHealth(10000) + bot:SetMaxHealth(10000) + end) + bot:GetActiveWeapon().Secondary.Delay = math.max(bot:GetActiveWeapon().Secondary.Delay * 0.001,0.25) +end + + +list.Set( "NPC", "mvm_bot_scout_major_league_boss", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_major_league_boss", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_minor_league.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_minor_league.lua new file mode 100644 index 000000000..0c8a6968a --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_minor_league.lua @@ -0,0 +1,19 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 2 +ENT.PrintName = "Minor League Scout" +ENT.PreferredIcon = "hud/leaderboard_class_scout_stun" +ENT.Items = {"Batter's Helmet","Sandman"} +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_scout_minor_league", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_minor_league", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_shortstop.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_shortstop.lua new file mode 100644 index 000000000..93461bf5f --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_shortstop.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout_shortstop" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Shortstop Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_scout_shortstop" + +list.Set( "NPC", "mvm_bot_scout_shortstop", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_shortstop", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_sun_stick.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_sun_stick.lua new file mode 100644 index 000000000..1faaf42b1 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_sun_stick.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Scout (Sun-on-a-Stick)" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Sun-on-a-Stick","Bolt Boy"} +ENT.PreferredIcon = "hud/leaderboard_class_scout" + +list.Set( "NPC", "mvm_bot_scout_sun_stick", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_sun_stick", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scout_wrap_assassin.lua b/gamemodes/tf/entities/entities/mvm_bot_scout_wrap_assassin.lua new file mode 100644 index 000000000..64d869a91 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scout_wrap_assassin.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "melee_scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Wrap Assassin" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_scout" +ENT.Items = {"Wrap Assassin"} + +list.Set( "NPC", "mvm_bot_scout_wrap_assassin", { + Name = ENT.PrintName, + Class = "mvm_bot_scout_wrap_assassin", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_scoutfan.lua b/gamemodes/tf/entities/entities/mvm_bot_scoutfan.lua new file mode 100644 index 000000000..cbf2422e1 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_scoutfan.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.Difficulty = 3 +ENT.PrintName = "Force-A-Nature Scout" +ENT.Category = "TFBots: MVM" +ENT.Items = {"Force-A-Nature","Bolt Boy","Fed-Fightin' Fedora"} +ENT.VisionLimits = 500 + +list.Set( "NPC", "mvm_bot_scoutfan", { + Name = ENT.PrintName, + Class = "mvm_bot_scoutfan", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_sentrybuster.lua b/gamemodes/tf/entities/entities/mvm_bot_sentrybuster.lua new file mode 100644 index 000000000..bc5f1b703 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_sentrybuster.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "sentrybuster" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Sentry Buster" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_sentry_buster" + +list.Set( "NPC", "mvm_bot_sentrybuster", { + Name = ENT.PrintName, + Class = "mvm_bot_sentrybuster", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_sniper.lua b/gamemodes/tf/entities/entities/mvm_bot_sniper.lua new file mode 100644 index 000000000..2fe6e863c --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_sniper.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "sniper" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Sniper" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_sniper", { + Name = ENT.PrintName, + Class = "mvm_bot_sniper", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_soldier.lua b/gamemodes/tf/entities/entities/mvm_bot_soldier.lua new file mode 100644 index 000000000..1ebaa84a5 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_soldier.lua @@ -0,0 +1,15 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "soldier" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Soldier" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_soldier", { + Name = ENT.PrintName, + Class = "mvm_bot_soldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_spy.lua b/gamemodes/tf/entities/entities/mvm_bot_spy.lua new file mode 100644 index 000000000..e46bc9f51 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_spy.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "spy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Spy" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_spy", { + Name = ENT.PrintName, + Class = "mvm_bot_spy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_steelgauntlet.lua b/gamemodes/tf/entities/entities/mvm_bot_steelgauntlet.lua new file mode 100644 index 000000000..0b1aaf9a9 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_steelgauntlet.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "steelgauntlet" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Steel Gauntlet" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_heavy_steelfist" + +list.Set( "NPC", "mvm_bot_steelgauntlet", { + Name = ENT.PrintName, + Class = "mvm_bot_steelgauntlet", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_steelgauntletpusher.lua b/gamemodes/tf/entities/entities/mvm_bot_steelgauntletpusher.lua new file mode 100644 index 000000000..2092e78c3 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_steelgauntletpusher.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "steelgauntletpusher" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Difficulty = 3 +ENT.PrintName = "Steel Gauntlet Pusher" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_steelgauntletpusher", { + Name = ENT.PrintName, + Class = "mvm_bot_steelgauntletpusher", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_superscout.lua b/gamemodes/tf/entities/entities/mvm_bot_superscout.lua new file mode 100644 index 000000000..ee4183a6b --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_superscout.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "superscout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Super Scout" +ENT.Category = "TFBots: MVM" + +list.Set( "NPC", "mvm_bot_superscout", { + Name = ENT.PrintName, + Class = "mvm_bot_superscout", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_bot_superscoutfan.lua b/gamemodes/tf/entities/entities/mvm_bot_superscoutfan.lua new file mode 100644 index 000000000..2c23945ac --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_bot_superscoutfan.lua @@ -0,0 +1,31 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "mvm_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = true +ENT.Difficulty = 3 +ENT.PrintName = "Force-A-Nature Super Scout" +ENT.Category = "TFBots: MVM" +ENT.PreferredIcon = "hud/leaderboard_class_scout_fan" +ENT.Items = {"Force-A-Nature","Bolt Boy","Fed-Fightin' Fedora"} +ENT.VisionLimits = 500 + +function ENT:CustomOnInitialize(bot) + timer.Create("SetModel"..bot:EntIndex(),0.1,10,function() + bot:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + bot:SetNWBool("IsBoss",true) + bot:SetClassSpeed(400 * 1.2) + bot:SetModelScale(1.75) + bot:SetHealth(1200) + bot:SetMaxHealth(1200) + end) +end + +list.Set( "NPC", "mvm_bot_superscoutfan", { + Name = ENT.PrintName, + Class = "mvm_bot_superscoutfan", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_mob_director.lua b/gamemodes/tf/entities/entities/mvm_mob_director.lua new file mode 100644 index 000000000..ad15030a8 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_mob_director.lua @@ -0,0 +1,355 @@ +if SERVER then AddCSLuaFile() end +ENT.Base = "base_nextbot" +ENT.Type = "nextbot" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.PrintName = "Raid" +ENT.Category = "Civillian 2 Misc" + +list.Set( "NPC", "mvm_mob_director", { + Name = ENT.PrintName, + Class = "mvm_mob_director", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) +function ENT:Initialize() + if CLIENT then return end + self:SetModel("models/bots/scout/bot_scout.mdl") + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:SetMaterial("debug/debugmrmwireframe") + self:SetSolid(SOLID_NONE) + self:SetModelScale(1) + self:SetFOV(90) + self.bots = {} + self.bot = {} +end +function ENT:Think() + self:SetNoDraw(!GetConVar("developer"):GetBool()) + if (self:GetCycle() == 1) then + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:SetCycle(0) + end + return true +end + +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:IsNPC() + return false +end + +function ENT:IsNextBot() + return true +end + +function ENT:Health() + return nil +end + +local function LeadBot_S_Add_Zombie(team,class,pos) + if !navmesh.IsLoaded() then + ErrorNoHalt("There is no navmesh! Generate one using \"nav_generate\"!\n") + return + end + + local name = string.upper(string.sub(class,1,1))..string.sub(class,2) + local bot = player.CreateNextBot(name) + local teamv = TEAM_RED + if team == 1 then + teamv = TEAM_bot + end + + if !IsValid(bot) then ErrorNoHalt("[LeadBot] Player limit reached!\n") return end + bot.LastSegmented = CurTime() + 1 + + bot.ControllerBot = ents.Create("ctf_bot_navigator") + bot.ControllerBot:Spawn() + bot.ControllerBot:SetOwner(bot) + + bot.LastPath = nil + bot.CurSegment = 2 + bot.TFBot = true + bot.IsL4DZombie = true + bot.BotStrategy = math.random(0, 1) + + --timer.Simple(1, function() + ----TalkToMe(bot, "join") + --end) + bot:SetTeam(teamv) + bot:SetPlayerClass(class) + bot:SetPos(pos) + timer.Simple(0.1, function() + if IsValid(bot) then + bot:SetPlayerClass(class) + bot.TFBot = true + end + end) + + --MsgN("[LeadBot] Bot " .. name .. " with strategy " .. bot.BotStrategy .. " added!") + return bot +end + +local combine = { + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_metropolice", + "npc_manhack", + "npc_manhack", + "npc_manhack", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_combine_s", + "npc_cscanner", + "npc_cscanner", + "npc_cscanner", + "npc_cscanner", + "npc_cscanner", + "npc_cscanner", + "npc_cscanner", + "npc_cscanner", + "npc_rollermine", + "npc_rollermine", + "npc_rollermine", + "npc_rollermine", + "npc_rollermine", + "npc_rollermine", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister", + "env_headcrabcanister" +} +function ENT:OnRemove() + for k,v in ipairs(self.bots) do + v:Remove() + --print("Removed special bot #"..v:EntIndex()) + end + for k,v in ipairs(self.bot) do + if (IsValid(v)) then + v:Remove() + --print("Removed bot #"..v:EntIndex()) + end + end +end + +function ENT:ChasePos() +end +function ENT:RunBehaviour() + while (true) do + for k,v in ipairs(self.bots) do + if (!IsValid(v)) then + table.remove(self.bots,k) + end + end + for k,v in ipairs(self.bot) do + if (!IsValid(v)) then + table.remove(self.bot,k) + end + end + self.loco:SetAcceleration( 1400 ) + self.loco:SetDesiredSpeed( 1400 ) -- Walk speed + local ply = table.Random(player.GetAll()) + local pos = self:FindSpot("random", {type = "hiding", radius = math.random(400,20000), pos = ply:GetPos()}) + if (pos) then + self:SetPos(pos) + end + if (math.random(1,20) == 1) then + local cmb = table.Random(combine) + if (cmb == "npc_manhack") then + for i=1,math.random(1,3) do + + local bot = ents.Create(cmb) + if (!IsValid(bot)) then + coroutine.wait(0.1) + return + end + bot:SetAngles(self:GetAngles()) + bot:SetOwner(self) + if (bot:GetClass() == "npc_combine_s") then + bot:Fire("addoutput","numgrenades 6") + end + headcrab = math.random(0,2) + count = 6 + speed = 3000 + time = 5 + height = 0 + damage = 150 + radius = 300 + duration = 30 + spawnflags = 0 + local plr = table.Random(player.GetAll()) + if (bot:GetClass() == "env_headcrabcanister") then + bot:SetKeyValue( "HeadcrabType", headcrab ) + bot:SetKeyValue( "HeadcrabCount", count ) + bot:SetKeyValue( "FlightSpeed", speed ) + bot:SetKeyValue( "FlightTime", time ) + bot:SetKeyValue( "StartingHeight", height ) + bot:SetKeyValue( "Damage", damage ) + bot:SetKeyValue( "DamageRadius", radius ) + bot:SetKeyValue( "SmokeLifetime", duration ) + bot:SetKeyValue( "spawnflags", spawnflags ) + bot:Fire( "FireCanister" ) + bot:SetAngles(Angle(math.sin( CurTime() ) * 16 - 55,plr:GetAngles().y,0)) + bot:SetPos(plr:GetPos() + Vector(math.random(-300,300),math.random(-300,300),0)) + end + + bot:Spawn() + if (bot:IsNPC()) then + bot:SetSquad("overwatch") + if (bot:GetClass() == "npc_helicopter" or bot:GetClass() == "npc_combinegunship" or bot:GetClass() == "npc_strider") then + bot:SetPos(self:GetPos() + Vector(0,0,300)) + else + bot:SetPos(self:GetPos() + Vector(0,0,20)) + end + bot:SetTarget(plr) + bot:SetEnemy(plr) + bot:UpdateEnemyMemory( plr, plr:GetPos() ) + if (bot:GetClass() == "npc_combine_s") then + bot:Give(table.Random({"weapon_ar2","weapon_smg1","weapon_shotgun"})) + if (math.random(1,3) == 1) then + bot:SetModel("models/combine_super_soldier.mdl") + end + elseif (bot:GetClass() == "npc_metropolice") then + bot:Give(table.Random({"weapon_smg1","weapon_pistol","weapon_shotgun","weapon_ar2","weapon_stunstick"})) + end + table.insert(self.bot,bot) + --print("Creating NPC #"..bot:EntIndex()) + timer.Create("CheckForNoEnemies"..bot:EntIndex(), 8, 0, function() + if (!IsValid(bot)) then return end + if (bot:GetEnemy() == nil) then -- not doing anything, kick + for k,v in ipairs(self.bot) do + if (v:EntIndex() == bot:EntIndex()) then + table.remove(self.bot,k) + end + end + bot:Remove() + --print("Removed NPC #"..bot:EntIndex()) + end + end) + end + if (bot:GetModel()) then + self:SetModel(bot:GetModel()) + end + coroutine.wait(1.5) + + end + else + local bot = ents.Create(cmb) + if (!IsValid(bot)) then + coroutine.wait(0.1) + return + end + bot:SetAngles(self:GetAngles()) + bot:SetOwner(self) + if (bot:GetClass() == "npc_combine_s") then + bot:Fire("addoutput","numgrenades "..math.random(0,6)) + elseif (bot:GetClass() == "npc_metropolice") then + bot:Fire("addoutput","manhacks "..math.random(0,3)) + end + bot:Spawn() + bot:SetSquad("overwatch") + if (bot:GetClass() == "npc_helicopter" or bot:GetClass() == "npc_combinegunship" or bot:GetClass() == "npc_strider") then + bot:SetPos(self:GetPos() + Vector(0,0,300)) + else + bot:SetPos(self:GetPos() + Vector(0,0,20)) + end + local plr = table.Random(player.GetAll()) + bot:SetTarget(plr) + bot:SetEnemy(plr) + bot:UpdateEnemyMemory( plr, plr:GetPos() ) + if (bot:GetClass() == "npc_combine_s") then + bot:Give(table.Random({"weapon_ar2","weapon_smg1","weapon_shotgun"})) + if (math.random(1,3) == 1) then + bot:SetModel("models/combine_super_soldier.mdl") + end + elseif (bot:GetClass() == "npc_metropolice") then + bot:Give(table.Random({"weapon_smg1","weapon_pistol","weapon_stunstick"})) + end + table.insert(self.bot,bot) + --print("Creating NPC #"..bot:EntIndex()) + timer.Create("CheckForNoEnemies"..bot:EntIndex(), 8, 0, function() + if (!IsValid(bot)) then return end + if (bot:GetEnemy() == nil) then -- not doing anything, kick + for k,v in ipairs(self.bot) do + if (v:EntIndex() == bot:EntIndex()) then + table.remove(self.bot,k) + end + end + bot:Remove() + --print("Removed NPC #"..bot:EntIndex()) + end + end) + if (bot:GetModel()) then + self:SetModel(bot:GetModel()) + end + coroutine.wait(1.5) + end + else + coroutine.yield() + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/mvm_robot_spawner.lua b/gamemodes/tf/entities/entities/mvm_robot_spawner.lua new file mode 100644 index 000000000..9bf720bc8 --- /dev/null +++ b/gamemodes/tf/entities/entities/mvm_robot_spawner.lua @@ -0,0 +1,334 @@ +if SERVER then AddCSLuaFile() end +ENT.Base = "base_anim" +ENT.Type = "anim" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.AutomaticFrameAdvance = true +ENT.PrintName = "Robot Spawner" +ENT.Category = "TFBots: MVM" + +local stock_bots = { + "mvm_bot", + "mvm_bot_melee_scout", + "mvm_bot_soldier", + "mvm_bot_pyro", + "mvm_bot_demoman", + "mvm_bot_heavy" +} +local horde_bots = { + "mvm_bot", + "mvm_bot_soldier", + "mvm_bot_pyro", + "mvm_bot_demoman", + "mvm_bot_heavy", + "mvm_bot_demoknight", + "mvm_bot_melee_scout", + "mvm_bot_melee_scout_sandman", + "mvm_bot_scout_minor_league", + "mvm_bot_scoutfan", + "mvm_bot_bowman", + "mvm_bot_heavyweightchamp", + "mvm_bot_heavyweightchampfast", + "mvm_bot_scout_minor_league", + "mvm_bot_deflectorheavy", + "mvm_bot_pyro_flare" +} +local unlock_bots = { + "mvm_bot_scout_minor_league", + "mvm_bot_melee_scout_sandman", + "mvm_bot_melee_scout_expert", + "mvm_bot_bonk_scout", + "mvm_bot_heavyweightchamp", + "mvm_bot_heavyweightchampfast", + "mvm_bot_melee_scout", + "mvm_bot_scout_sun_stick", + "mvm_bot_melee_scout_sandman", + "mvm_bot_steelgauntlet", + "mvm_bot_melee_scout_fanwar", + "mvm_bot_pyro_flare", + "mvm_bot_scout_wrap_assassin", + "mvm_bot_pyro_pusher", + "mvm_bot_heavyshotgun", + "mvm_bot_scout_shortstop", + "mvm_bot_deflectorheavy", + "mvm_bot_medic", + "mvm_bot_scoutfan", + "mvm_bot_demoknight", + "mvm_bot_bowman", + "mvm_bot_samurai_demo", + "mvm_bot_scout_shortstop", + "mvm_bot_engineer", + "mvm_bot_scoutfan" +} + +local giant_bots = { + "mvm_bot_giantscout", + "mvm_bot_giantsoldier", + "mvm_bot_giantchargedsoldier", + "mvm_bot_giantburstfiresoldier", + "mvm_bot_giantblastsoldier", + "mvm_bot_giantpyro", + "mvm_bot_giantflarepyro", + "mvm_bot_giantpyro_airblast", + "mvm_bot_giantdemoman", + "mvm_bot_giantdemoknight", + "mvm_bot_giantheavy", + "mvm_bot_giantheavydeflector", + "mvm_bot_giantheavy_brassbeast", + "mvm_bot_giantheavy_natascha", + "mvm_bot_colonelbarrage", + "mvm_bot_heavyweightchamp_giant", + "mvm_bot_bowman_rapid_fire", + "mvm_bot_superscout", + "mvm_bot_superscoutfan", + "mvm_bot_scout_major_league" +} + +list.Set( "NPC", "mvm_robot_spawner", { + Name = ENT.PrintName, + Class = "mvm_robot_spawner", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) +function ENT:Initialize() + if CLIENT then return end + self:SetModel("models/editor/playerstart.mdl") + self:SetMaterial("models/debug/debugwhite") + self:SetColor(Color(128,128,128,100)) + self:SetRenderMode(RENDERMODE_TRANSCOLOR) + self:SetRenderFX(kRenderFxHologram) + self:SetSolid(SOLID_BBOX) + self:SetModelScale(1.0) + self:SetCollisionGroup(COLLISION_GROUP_WORLD) + self.bots = {} + self.bot = {} + self.spawnsblu = {} + self:SetSkin(1) + if SERVER then + self:EmitSound("MVM.Robot_Engineer_Spawn") + if (string.find(game.GetMap(),"mvm_")) then + for k, v in pairs(ents.FindByClass("team_round_timer")) do + v.IsSetupPhase = true + v:SetAndPauseTimer(v.SetupLength, true) + end + end + for k, v in pairs(ents.FindByClass("info_player_teamspawn")) do + if v:GetKeyValues()["StartDisabled"] == 0 then + if v:GetKeyValues()["TeamNum"] == 3 and !string.find(v:GetClass(),"sniper") and !string.find(v:GetClass(),"spy") and v:GetClass() != "spawnbot_invasion" and v:GetClass() != "spawnbot_left" then + table.insert(self.spawnsblu, v) + end + end + end + end +end + +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:IsNPC() + return false +end + +function ENT:IsNextBot() + return true +end + +function ENT:Health() + return nil +end + +function ENT:OnRemove() + if SERVER then + for k,v in ipairs(self.bots) do + v:Remove() + --print("Removed robot #"..v:EntIndex()) + end + end +end + +function ENT:Think() + if SERVER then + for k,v in ipairs(self.bots) do + table.remove(self.bots,k) + --print("Removed robot #"..v:EntIndex()) + end + end + self:NextThink(CurTime()) + return true +end + + +function ENT:Use( activator, caller ) + if (!self.WaveStarted) then + umsg.Start("TF_PlayGlobalSound") + umsg.String("music.mvm_start_wave") + umsg.End() + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_Wave_Start") + umsg.End() + if SERVER then + if (string.find(game.GetMap(),"mvm_")) then + for k, v in pairs(ents.FindByClass("team_round_timer")) do + v:SetAndResumeTimer2(9, true) + end + end + end + local count = math.random(15,32) + timer.Create("WaveEnder", 10 * count, 1, function() + timer.Create("WaitUntilAllBotsDead", 0.1, 0, function() + if (table.Count(team.GetPlayers(TEAM_BLU)) == 0) then + umsg.Start("TF_PlayGlobalSound") + umsg.String("music.mvm_end_wave") + umsg.End() + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_Wave_End") + umsg.End() + + for k, v in pairs(ents.FindByClass("team_round_timer")) do + v.IsSetupPhase = true + v:SetAndPauseTimer(v.SetupLength, true) + end + for k,v in ipairs(ents.FindByClass("func_door")) do + if (v:GetName() == "cave_door") then + v:Fire("Close","",0) + end + end + self.WaveStarted = false + for k,v in ipairs(ents.FindByClass("item_teamflag_mvm")) do + v:Return() + end + timer.Stop("SentryBusterSpawner") + timer.Stop("WaitUntilAllBotsDead") + end + end) + end) + timer.Simple(10, function() + self:EmitSound("MVM.Robot_Teleporter_Deliver") + for k,v in ipairs(player.GetAll()) do + if (v:Team() != TEAM_BLU) then + v:Speak("TLK_ROUND_START") + end + end + end) + timer.Create("SentryBusterSpawner", 30, 0, function() + if SERVER then + local count = #ents.FindByClass("obj_sentrygun") + for k,v in ipairs(ents.FindByClass("obj_sentrygun")) do + if (IsValid(v) and k == 1) then + local spawn = table.Random(self.spawnsblu) + if (table.Count(self.spawnsblu) == 0) then + spawn = self + end + for k,v in ipairs(player.GetBots()) do + if (v:Nick() == "Sentry Buster") then + return + end + end + local bot = ents.Create("mvm_bot_sentrybuster") + if (!IsValid(bot)) then + return + end + bot:SetPos(spawn:GetPos() + Vector(0,0,45)) + table.insert(self.bots,bot) + bot:SetOwner(self) + bot:Spawn() + bot:EmitSound("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav",70,100) + bot.TargetEnt = v + ParticleEffect("teleportedin_blue", bot:GetPos(), bot:GetAngles(), self) + --print("Creating robot #"..bot:EntIndex()) + end + end + + end + end) + timer.Create("BotSpawner", 9, count, function() + if SERVER then + local slef = self + local spawn = table.Random(self.spawnsblu) + if (table.Count(self.spawnsblu) == 0) then + spawn = self + end + if (table.Count(team.GetPlayers(TEAM_BLU)) < 6) then + if (math.random(1,8) == 1) then + local bottable = table.Random(horde_bots) + if (math.random(1,4) == 1) then -- unlocked bots + bottable = table.Random(unlock_bots) + end + for i=1,math.random(2,10) do + local bot = ents.Create(bottable) + if (!IsValid(bot)) then + return + end + bot:SetPos(spawn:GetPos() + Vector(0,0,45)) + table.insert(self.bots,bot) + bot:SetOwner(self) + bot:Spawn() + bot.TargetEnt = table.Random(team.GetPlayers(TEAM_RED)) + bot:EmitSound("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav",70,100) + ParticleEffect("teleportedin_blue", bot:GetPos(), bot:GetAngles(), self) + --print("Creating horde robot #"..bot:EntIndex()) + end + else + local bot = ents.Create(table.Random(stock_bots)) + if (math.random(1,6) == 1) then -- unlocked bots + bot = ents.Create(table.Random(unlock_bots)) + for i=1,math.random(1,10) do + if (!IsValid(bot)) then + return + end + bot:SetPos(spawn:GetPos() + Vector(0,0,45)) + table.insert(self.bots,bot) + bot:SetOwner(self) + bot:Spawn() + bot:EmitSound("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav",70,100) + ParticleEffect("teleportedin_blue", bot:GetPos(), bot:GetAngles(), self) + bot.TargetEnt = table.Random(team.GetPlayers(TEAM_RED)) + --print("Creating robot #"..bot:EntIndex()) + end + + elseif (math.random(1,10) == 1) then + bot = ents.Create(table.Random(giant_bots)) + if (!IsValid(bot)) then + return + end + bot:SetPos(spawn:GetPos() + Vector(0,0,45)) + table.insert(self.bots,bot) + bot:SetOwner(self) + bot:Spawn() + bot:EmitSound("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav",70,100) + ParticleEffect("teleportedin_blue", bot:GetPos(), bot:GetAngles(), self) + bot.TargetEnt = table.Random(team.GetPlayers(TEAM_RED)) + --print("Creating robot #"..bot:EntIndex()) + + else + + for i=1,math.random(1,10) do + if (!IsValid(bot)) then + return + end + bot:SetPos(spawn:GetPos() + Vector(0,0,45)) + table.insert(self.bots,bot) + bot:SetOwner(self) + bot:Spawn() + bot:EmitSound("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav",70,100) + ParticleEffect("teleportedin_blue", bot:GetPos(), bot:GetAngles(), self) + bot.TargetEnt = table.Random(team.GetPlayers(TEAM_RED)) + --print("Creating robot #"..bot:EntIndex()) + end + + end + end + else + --print("We have reached the limits! Not spawning MVM bots...") + end + end + end) + self.WaveStarted = true + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_headless_hatman.lua b/gamemodes/tf/entities/entities/npc_headless_hatman.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_headless_hatman.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_headless_hatman_hammer.lua b/gamemodes/tf/entities/entities/npc_headless_hatman_hammer.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_headless_hatman_hammer.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_merasmus.lua b/gamemodes/tf/entities/entities/npc_merasmus.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_merasmus.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_saxton.lua b/gamemodes/tf/entities/entities/npc_saxton.lua new file mode 100644 index 000000000..286b4a041 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_saxton.lua @@ -0,0 +1,447 @@ +AddCSLuaFile() + +game.AddParticles("particles/particles_vsh.pcf") +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.Model = "models/player/saxton_hale.mdl" +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 200 +ENT.MeleeAttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( self.Model ) + self:AddFlags(FL_OBJECT) + if SERVER then + local axe = ents.Create("gmod_button") + axe:SetModel("models/empty.mdl") + axe:SetPos(self:GetPos()) + axe:SetAngles(self:GetAngles()) + axe:SetParent(self) + axe:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self:SetNWEntity("Axe",axe) + end + local seq = "taunt01" + timer.Simple(0.1, function() + if SERVER then + self:AddGestureSequence(self:LookupSequence(seq)) + end + timer.Simple(self:SequenceDuration(self:LookupSequence(seq)) - 0.6, function() + self.Ready = true + if SERVER then + self:StartActivity(self:GetSequenceActivity(self:LookupSequence("stand_melee"))) + timer.Create("Laugh"..self:EntIndex(), 3, 0, function() + if (self.Ready) then + timer.Adjust("Laugh"..self:EntIndex(),math.random(3,15),nil,nil) + if (self:GetEnemy() != nil and !self:Visible(self:GetEnemy())) then + self:EmitSound(table.Random({ + "mvm/saxton_hale_by_matthew_simmons/come_back_01.mp3", + "mvm/saxton_hale_by_matthew_simmons/come_back_02.mp3", + "mvm/saxton_hale_by_matthew_simmons/laugh_01.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_01.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_02.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_03.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_04.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_05.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_06.mp3", + "mvm/saxton_hale_by_matthew_simmons/last_mann_hiding_07.mp3", + }),95,100,CHAN_VOICE) + if (math.random(0,100) < 25) then + self:AddGesture(ACT_MP_GESTURE_VC_FISTPUMP_MELEE,true) + elseif (math.random(0,100) < 50) then + self:AddGesture(ACT_MP_GESTURE_VC_FINGERPOINT_MELEE,true) + elseif (math.random(0,100) < 75) then + self:AddGestureSequence(self:LookupSequence("gesture_melee_help")) + end + else + if (math.random(0,100) < 25) then + self:AddGesture(ACT_MP_GESTURE_VC_FISTPUMP_MELEE,true) + elseif (math.random(0,100) < 50) then + self:AddGesture(ACT_MP_GESTURE_VC_FINGERPOINT_MELEE,true) + end + end + end + end) + end + end) + end) + self.Ready = false + self.LoseTargetDist = 3600 -- How far the enemy has to be before we lose them + self.SearchRadius = 2500 -- How far to search for enemies + self:SetHealth(30000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionGroup(COLLISION_GROUP_NPC) +end +function ENT:GetAxe() + return self:GetNWEntity("Axe") +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.02, function() + self:EmitSound("Concrete.Step"..table.Random({"Left","Right"})) + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromMeleeHit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("npc_saxton")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +function ENT:BodyUpdate() + + local act = self:GetActivity() + + -- + -- This helper function does a lot of useful stuff for us. + -- It sets the bot's move_x move_y pose parameters, sets their animation speed relative to the ground speed, and calls FrameAdvance. + -- + if ( act == ACT_MP_RUN_MELEE || act == self:GetSequenceActivity(self:LookupSequence("run_item1")) ) then + + self:BodyMoveXY() + + -- BodyMoveXY() already calls FrameAdvance, calling it twice will affect animation playback, specifically on layers + return + + end + + -- + -- If we're not walking or running we probably just want to update the anim system + -- + self:FrameAdvance() + +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + local plrs = player.GetAll() + if (v:IsPlayer()) then + v = table.Random(plrs) + end + self:SetEnemy(v) + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + -- This function is called when the entity is first spawned. It acts as a giant loop that will run as long as the NPC exists + while ( true ) do + -- Lets use the above mentioned functions to see if we have/can find a enemy + if self.Ready then + + if ( self:HaveEnemy() ) then + + -- Now that we have an enemy, the code in this block will run + self.loco:FaceTowards(self:GetEnemy():GetPos()) -- Face our enemy + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_melee")) ) -- Set the animation + self.loco:SetDesiredSpeed( 400 ) -- Set the speed that we will be moving at. Don't worry, the animation will speed up/slow down to match + self:ChaseEnemy( ) -- The new function like MoveToPos. + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_melee")) ) -- Set the animation + -- Now once the above function is finished doing what it needs to do, the code will loop back to the start + -- unless you put stuff after the if statement. Then that will be run before it loops + + else + + if (math.random(1,800) == 1) then + + -- Since we can't find an enemy, lets wander + -- Its the same code used in Garry's test bot + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_melee")) ) -- Set the animation + self.loco:SetDesiredSpeed( 400 ) -- Walk speed + self.loco:SetAcceleration(400) + self:MoveToPos( self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 800 ) -- Walk to a random place within about 400 units (yielding) + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_melee")) ) -- Set the animation + + + coroutine.wait(2) + end + + end + + coroutine.wait(0.1) + else + -- At this point in the code the bot has stopped chasing the player or finished walking to a random spot + -- Using this next function we are going to wait 2 seconds until we go ahead and repeat it + coroutine.wait(0.1) + end + + end + +end + +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self:GetEnemy()) and self:GetEnemy():Health() < 1) then + self:SetEnemy(nil) + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < self.AttackRange and self:GetEnemy():Health() > 0) then + + if (IsValid(self:GetEnemy()) and (!self.MeleeAttackDelay or CurTime() > self.MeleeAttackDelay)) then + self:AddGestureSequence(self:SelectWeightedSequence(ACT_MP_ATTACK_STAND_MELEE),true) + self:EmitSound("Weapon_Fist.Miss") + timer.Simple(0.2, function() + if (!self.Ready) then return end + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 200) then + if (self:GetEnemy():GetClass() != "npc_saxton") then + local dmginfo = DamageInfo() + dmginfo:SetAttacker(self) + dmginfo:SetInflictor(self) + dmginfo:SetDamageType(bit.bor(DMG_CLUB,DMG_SLASH,DMG_BLAST)) + dmginfo:SetDamage(40) + self:GetEnemy():TakeDamageInfo(dmginfo) + self:EmitSound("Weapon_Fist.HitFlesh") + if (self:GetEnemy():Health() < 0) then + self:EmitSound("mvm/saxton_hale_by_matthew_simmons/kill_generic_"..table.Random({ + "01", + "02", + "03", + "04", + "05", + "06", + "07", + "08", + "09", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + })..".mp3",95,100,CHAN_VOICE) + end + end + end + + end) + self.MeleeAttackDelay = CurTime() + 0.4 + end + end + if (self:GetEnemy():GetPos():Distance(self:GetPos()) < 100 and self:GetEnemy():Health() > 0) then + if (self:GetSequence() != self:LookupSequence("stand_melee")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("stand_melee")) ) + end + self.loco:SetDesiredSpeed( 0 ) + self.loco:SetAcceleration(0) + elseif (self:GetEnemy():GetPos():Distance(self:GetPos()) > 100 and self:GetEnemy():Health() > 0) then + if (self.CrybabyMode) then + + if (self:GetSequence() != self:LookupSequence("run_melee")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_melee")) ) + end + + else + if (self:GetSequence() != self:LookupSequence("run_melee")) then + self:StartActivity( self:GetSequenceActivity(self:LookupSequence("run_melee")) ) + end + end + self.loco:SetDesiredSpeed( 400 ) + self.loco:SetAcceleration(400) + end + elseif (IsValid(self:GetEnemy()) and (self:GetEnemy():Health() < 1) and self.Ready) then + self:SetEnemy(nil) + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() + + -- + -- Clear the stuck status + -- + self.loco:ClearStuck() + if (math.random(1,4) == 1) then + if (self:HaveEnemy()) then + self:SetPos(self:GetEnemy():GetPos() + Vector(0,0,10)) + end + else + self.Enemy = nil + self:FindEnemy() + end +end + +function ENT:ChaseEnemy( options ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, self:GetEnemy():GetPos() ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() and self:HaveEnemy() ) do + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, self:GetEnemy():GetPos())-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if not self.NextFlinch or CurTime() > self.NextFlinch then + self:AddGesture(ACT_MP_GESTURE_FLINCH_CHEST) + self.NextFlinch = CurTime() + 0.5 + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:BecomeRagdoll(dmginfo) + self:Remove() +end + +list.Set( "NPC", "npc_saxton", { + Name = "Saxton Hale", + Class = "npc_saxton", + Category = "TFBots: Extras", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_tf_zombie.lua b/gamemodes/tf/entities/entities/npc_tf_zombie.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_tf_zombie.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_tf_zombie_boss.lua b/gamemodes/tf/entities/entities/npc_tf_zombie_boss.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_tf_zombie_boss.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_tf_zombie_old.lua b/gamemodes/tf/entities/entities/npc_tf_zombie_old.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_tf_zombie_old.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_tf_zombie_spawner.lua b/gamemodes/tf/entities/entities/npc_tf_zombie_spawner.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_tf_zombie_spawner.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/npc_tf_zombie_spawner_old.lua b/gamemodes/tf/entities/entities/npc_tf_zombie_spawner_old.lua new file mode 100644 index 000000000..ae4bd4ec6 --- /dev/null +++ b/gamemodes/tf/entities/entities/npc_tf_zombie_spawner_old.lua @@ -0,0 +1 @@ +-- already implemented by another addon, why should i leave this file here? \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_anim/cl_init.lua b/gamemodes/tf/entities/entities/obj_anim/cl_init.lua new file mode 100644 index 000000000..08bcc74e6 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_anim/cl_init.lua @@ -0,0 +1,23 @@ + +include("shared.lua") + +//ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Initialize() + self:AddEffects(EF_NOINTERP) +end + +function ENT:Draw() + self:DrawModel() +end + +function ENT:Think() + if self.LastScale ~= self.dt.Scale then + if self.dt.Scale > 0 then + local scl = self.dt.Scale + self:SetModelScale( scl, 0 ) + self:GetOwner():SetModelScale( scl, 0 ) + end + self.LastScale = self.dt.Scale + end +end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_anim/init.lua b/gamemodes/tf/entities/entities/obj_anim/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/obj_anim/init.lua rename to gamemodes/tf/entities/entities/obj_anim/init.lua diff --git a/gamemodes/tf/entities/entities/obj_anim/shared.lua b/gamemodes/tf/entities/entities/obj_anim/shared.lua new file mode 100644 index 000000000..131d5239a --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_anim/shared.lua @@ -0,0 +1,64 @@ +--[[ +notes + +build_point_0 = sapper attachment +laser_origin = wrangler laser attachment + +direction = teleporter direction pose param + +]] + + +ENT.Base = "base_nextbot" +ENT.Type = "anim" + +function ENT:SetupDataTables() + self:NetworkVar("Entity", 0, "Builder") + self:NetworkVar("Float", 0, "Scale") + self:NetworkVar("Int", 0, "BuildGroup") + self:NetworkVar("Int", 1, "BuildMode") +end + +function ENT:Think() + self:NextThink(CurTime()) + return true +end + +function ENT:SetBuildingScale(s) + self.dt.Scale = s +end + +function ENT:GetOwner() + return self.dt.Builder +end + +function ENT:SetBuilder(pl) + self.dt.Builder = pl +end + +function ENT:GetBuildGroup() + return self.dt.BuildGroup +end + +function ENT:GetBuildMode() + return self.dt.BuildMode +end + +function ENT:SetBuildGroup(g) + self.dt.BuildGroup = g +end + +function ENT:SetBuildMode(m) + self.dt.BuildMode = m +end + +function ENT:GetBuildingData() + local group, mode = self.dt.BuildGroup, self.dt.BuildMode + if self.LastBuildGroup ~= group or self.LastBuildMode ~= mode then + self.LastBuildGroup = group + self.LastBuildMode = mode + self.LastBuildData = tf_objects.Get(group, mode) + end + + return self.LastBuildData or {} +end diff --git a/addon/gamemodes/teamfortress/entities/entities/obj_base/cl_init.lua b/gamemodes/tf/entities/entities/obj_base/cl_init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/obj_base/cl_init.lua rename to gamemodes/tf/entities/entities/obj_base/cl_init.lua diff --git a/gamemodes/tf/entities/entities/obj_base/init.lua b/gamemodes/tf/entities/entities/obj_base/init.lua new file mode 100644 index 000000000..2b8d45496 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_base/init.lua @@ -0,0 +1,566 @@ + +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +include("shared.lua") + +ENT.Levels = {} +ENT.Gibs = {} +ENT.DisableDuringUpgrade = false +ENT.AutomaticFrameAdvance = true +ENT.NoUpgradedModel = false +ENT.IdleSequence = "ref" + +ENT.Sound_Explode = Sound("Building_Dispenser.Explode") + +ENT.DefaultBuildRate = 0.5 +ENT.BuildRate = ENT.DefaultBuildRate + +ENT.RepairRate = 25 +ENT.UpgradeRate = 25 +ENT.UpgradeAnimRate = 1 +ENT.UpgradeProgress = 0 +ENT.InitialHealth = 1 +ENT.IsEnabled = 0 + + +function ENT:SpawnFunction(pl, tr) + if not tr.Hit then return end + + local pos = tr.HitPos + + local ent = ents.Create(self.ClassName) + ent:SetPos(pos) + ent:Spawn() + ent:Activate() + + ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + + ent:SetTeam(pl:Team()) + ent:SetBuilder(pl) + + return ent +end + +function ENT:OnStartBuilding() end +function ENT:OnDoneBuilding() end +function ENT:OnStartUpgrade() end +function ENT:PreUpgradeAnim() end +function ENT:OnDoneUpgrade() end +function ENT:PostEnable() end +function ENT:OnThink() end +function ENT:OnThinkActive() end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + local t = tonumber(value) + + if t==0 then + self.TeamNum = 0 + elseif t==2 then + self:SetTeam(TEAM_RED) + elseif t==3 then + self:SetTeam(TEAM_BLU) + end + end + --print(key, value, tonumber(value), self.Team) +end + +function ENT:Initialize() + self:SetModel(self.Levels[1][1]) + + self:SetHullType(HULL_HUMAN) + self:SetHullSizeNormal() + + self:CapabilitiesAdd(CAP_FRIENDLY_DMG_IMMUNE) + + self:SetMaxHealth(self.ObjectHealth) + self:SetHealth(self.ObjectHealth) + + self:SetCollisionBounds(unpack(self.CollisionBox)) + --self:PhysicsInitShadow(true, true) + self:PhysicsInitBox(unpack(self.CollisionBox)) + self:SetSolid(SOLID_BBOX) + self:SetMoveType(MOVETYPE_NONE) + + local phys = self:GetPhysicsObject() + if phys:IsValid() then + phys:EnableMotion(false) + end + + if self:Team() == TEAM_BLU then + self:SetSkin(1) + end + + self.Model = ents.Create("obj_anim") + self.Model:SetOwner(self) + self.Model:Spawn() + self.Model:SetNoDraw(true) + + --[[ + 0 : Undefined + 1 : Building + 2 : Upgrading + 3 : Active + ]] + self:SetMetal(0) + self:SetState(0) + self:SetNPCState(NPC_STATE_IDLE) + + self.StartTime = CurTime() + self.TimeLeft = 0 + self:SetNoDraw(true) +end + +function ENT:GravGunPunt( ply ) + return false +end + +function ENT:GravGunPickupAllowed( ply ) + return self:GetBuilder():EntIndex() == ply:EntIndex() +end + +function ENT:Build() + if !IsValid(self:GetBuilder()) then + self.BuildRate = 5 + end + if self:GetState()>0 then return false end + self:OnStartBuilding() + self:SetModel(self.Levels[1][1]) + self:SetCollisionBounds(unpack(self.CollisionBox)) + + self:SetNPCState(NPC_STATE_SCRIPT) + + self.Model:SetNoDraw(false) + self.Model:SetCycle(0) + self.Model:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_ASSEMBLING)) + self.Model:SetPlaybackRate(self.BuildRate) + + self:SetLevel(1) + self:SetState(1) + self.StartTime = CurTime() + + if (string.find(game.GetMap(),"mvm_")) then + + self.BuildProgress = 0 + self.BuildProgressMax = 0 + self:SetBuildProgress(0) + + else + self.BuildProgress = 0 + self.BuildProgressMax = self.Model:SequenceDuration() / self.BuildRate + self:SetBuildProgress(0) + end +end + +function ENT:Upgrade() + if self:GetLevel()>=self.NumLevels then return false end + self:LevelUp() + self:OnStartUpgrade() + + if not self.NoUpgradedModel then + self:SetModel(self.Levels[self:GetLevel()][1]) + self.Model:SetModel(self.Levels[self:GetLevel()][1]) + self:SetCollisionBounds(unpack(self.CollisionBox)) + + self:PreUpgradeAnim() + self:SetNoDraw(true) + self.Model:SetNoDraw(false) + self.Model:SetCycle(0) + self.Model:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_UPGRADING)) + self.Model:SetPlaybackRate(1) + + if (string.find(game.GetMap(),"mvm_")) then + self.Model:SetPlaybackRate(0.00001) + self.Duration = 0.1 + self.TimeLeft = 0.1 + else + self.Model:SetPlaybackRate(1) + self.Duration = 1.5 + self.TimeLeft = 1.5 + timer.Simple(1.5, function() + self:EmitSoundEx("Building_Sentrygun.Built") + end) + end + end + + self:SetState(2) + self.StartTime = CurTime() +end + +function ENT:Enable() + if self.NoUpgradedModel then + self:SetModel(self.Levels[1][2]) + self.Model:SetModel(self.Levels[1][2]) + self:SetCollisionBounds(unpack(self.CollisionBox)) + else + self:SetModel(self.Levels[self:GetLevel()][2]) + self.Model:SetModel(self.Levels[self:GetLevel()][2]) + self:SetCollisionBounds(unpack(self.CollisionBox)) + end + + self:SetNPCState(NPC_STATE_IDLE) + self.Model:SetNoDraw(false) + self:SetNoDraw(true) + self:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_RUNNING)) + self:SetCycle(0) + self:SetPlaybackRate(1) + + local prevstate = self:GetState() + self:SetState(3) + self:PostEnable(prevstate) + + + self.IsEnabled = 1 + + + if self.IsEnabled == 1 then + + if self:GetKeyValues()[defaultupgrade] == 0 then + self:SetLevel(1) + elseif self:GetKeyValues()[defaultupgrade] == 1 then + if self:GetLevel()>=self.NumLevels then return false end + self:SetLevel(2) + self:OnStartUpgrade() + + if not self.NoUpgradedModel then + self:SetModel(self.Levels[self:GetLevel()][1]) + self.Model:SetModel(self.Levels[self:GetLevel()][1]) + self:SetCollisionBounds(unpack(self.CollisionBox)) + + self:PreUpgradeAnim() + self:SetNoDraw(true) + self.Model:SetNoDraw(false) + self.Model:SetCycle(0) + self.Model:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_UPGRADING)) + self.Model:SetPlaybackRate(1) + if (string.find(game.GetMap(),"mvm_")) then + self.Duration = 0.1 + self.TimeLeft = 0.1 + else + self.Model:SetPlaybackRate(1) + self.Duration = 1.5 + self.TimeLeft = 1.5 + timer.Simple(1.5, function() + self:EmitSoundEx("Building_Sentrygun.Built") + end) + end + end + + self:SetState(2) + self.StartTime = CurTime() + elseif self:GetKeyValues()[defaultupgrade] == 2 then + if self:GetLevel()>=self.NumLevels then return false end + self:SetLevel(3) + self:OnStartUpgrade() + + if not self.NoUpgradedModel then + self:SetModel(self.Levels[self:GetLevel()][1]) + self.Model:SetModel(self.Levels[self:GetLevel()][1]) + self:SetCollisionBounds(unpack(self.CollisionBox)) + + self:PreUpgradeAnim() + self:SetNoDraw(true) + self.Model:SetNoDraw(false) + self.Model:SetCycle(0) + self.Model:ResetSequence(self:SelectWeightedSequence(ACT_OBJ_UPGRADING)) + self.Model:SetPlaybackRate(1) + if (string.find(game.GetMap(),"mvm_")) then + self.Duration = 0.1 + self.TimeLeft = 0.1 + else + self.Duration = 1.5 + self.TimeLeft = 1.5 + timer.Simple(1.5, function() + self:EmitSoundEx("Building_Sentrygun.Built") + end) + end + end + + self:SetState(2) + self.StartTime = CurTime() + end + end +end + +function ENT:Explode() + for _,v in pairs(self.Gibs) do + if type(v)=="string" then + local drop = ents.Create("item_droppedweapon") + drop:SetSolid(SOLID_VPHYSICS) + drop:SetModel(v) + drop:PhysicsInit(SOLID_VPHYSICS) + drop:SetPos(self:GetPos()) + drop:SetAngles(self:GetAngles()) + drop:Spawn() + drop:Activate() + + drop:SetSkin(self:GetSkin()) + + drop:SetMoveType(MOVETYPE_VPHYSICS) + drop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + + local phys = drop:GetPhysicsObject() + if phys:IsValid() then + phys:AddAngleVelocity(Vector(math.random(-100,100),math.random(-100,100),math.random(-100,100))) + phys:AddVelocity(Vector(math.random(-100,100),math.random(-100,100),math.random(100,300))) + phys:Wake() + end + end + end + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", "ExplosionCore_buildings") + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.1) + + self:EmitSoundEx(self.Sound_Explode, 100, 100) + self:StopSound("Weapon_Sapper.Timer") + self:Remove() +end + +function ENT:Think() + local state = self:GetState() + local deltatime = 0 + + if self.LastThink then + deltatime = CurTime() - self.LastThink + end + self.LastThink = CurTime() + + self.Model:SetModelScale(self:GetModelScale()) + self:OnThink() + if (self:GetClass() == "obj_dispenser") then + if (IsValid(self:GetBuilder())) then + self:GetBuilder().Dispenser = self + end + end + if state==0 then + if CurTime()-self.StartTime>=self.TimeLeft then + self:Build() + end + elseif state==1 then + local time_added = deltatime + + if self.BuildBoost then + local total = 1 + local mul = self.DefaultBuildRate / self.BuildRate + + for pl,data in pairs(self.BuildBoost) do + if CurTime() > data.endtime then + self.BuildBoost[pl] = nil + else + total = total + data.val * mul + end + end + + self.Model:SetPlaybackRate(self.BuildRate * total) + time_added = time_added * total + end + + self.BuildProgress = math.Clamp(self.BuildProgress + time_added, 0, self.BuildProgressMax) + self:SetBuildProgress(self.BuildProgress / self.BuildProgressMax) + + local health = math.Clamp((self.BuildProgress / self.BuildProgressMax) * self:GetMaxHealth(), self.InitialHealth, self:GetMaxHealth()) + self:SetHealth(health - (self.BuildSubstractHealth or 0)) + + if self.BuildProgress >= self.BuildProgressMax then + self:OnDoneBuilding() + self:EmitSoundEx("Building_Sentrygun.Built") + self:SetHealth(self:GetMaxHealth() - (self.BuildSubstractHealth or 0)) + self:Enable() + end + elseif state==2 then + if CurTime()-self.StartTime>=self.TimeLeft then + self:OnDoneUpgrade() + self:Enable() + end + + if not self.DisableDuringUpgrade then + self:OnThinkActive() + + if (self:GetBuilder() != nil && self:GetBuilder():IsPlayer()) then + if (self:GetBuilder():GetPlayerClass() != "engineer" && self:GetBuilder():GetPlayerClass() != "gmodplayer") then + self:Explode() + end + elseif (self:GetBuilder() == nil) then + self:Explode() + end + end + elseif state==3 then + self:OnThinkActive() + if (self:GetBuilder() != nil && self:GetBuilder():IsPlayer()) then + if (self:GetBuilder():GetPlayerClass() != "engineer" && self:GetBuilder():GetPlayerClass() != "gmodplayer") then + self:Explode() + end + elseif (self:GetBuilder() == nil) then + self:Explode() + end + if (string.find(game.GetMap(),"mvm_")) then + + if self:GetLevel()<=self.NumLevels then + self:Upgrade() + end + + end + end + + self:NextThink(CurTime()) + return true +end + +function ENT:OnTakeDamage(dmginfo) + if dmginfo:GetInflictor():IsWorld() then return end + if dmginfo:GetDamageType() == DMG_POISON then return end + self:SetBloodColor(BLOOD_COLOR_MECH) + self:SetHealth(self:Health() - dmginfo:GetDamage()) + if not self.BuildSubstractHealth then + self.BuildSubstractHealth = 0 + end + self.BuildSubstractHealth = self.BuildSubstractHealth + dmginfo:GetDamage() + if self:Health()<=0 then + gamemode.Call("OnNPCKilled", self, dmginfo:GetAttacker(), dmginfo:GetInflictor()) + self.OnTakeDamage = nil + local owner = self:GetBuilder() + if IsValid(owner) and owner:IsPlayer() and self.objtype then + owner.objtype = self.objtype + owner:Speak("TLK_LOST_OBJECT") + end + + self:Explode() + end +end + +function ENT:NeedsResupply() + return false +end + +function ENT:Resupply(max) + +end + +function ENT:AddMetal(owner, max) + if not self.BuildBoost then + self.BuildBoost = {} + end + + local mult = 1 + local w = owner:GetActiveWeapon() + if IsValid(w) and w.ConstructRateMultiplier then + mult = w.ConstructRateMultiplier + end + + self.BuildBoost[owner] = {val=mult, endtime=CurTime() + 0.8} + + -- Building or upgrading + if self:GetState()~=3 then return 0 end + + local max0 = max + local metal_spent + + local repaired, resupplied, upgraded + + -- Repair + metal_spent = math.Clamp(math.ceil((self:GetMaxHealth() - self:Health()) * 0.2), 0, math.min(max, self.RepairRate)) + + if metal_spent > 0 then + self:SetHealth(math.Clamp(self:Health() + 5 * metal_spent, 0, self:GetMaxHealth())) + + max = max - metal_spent + repaired = true + end + + -- Upgrade + if self:GetLevel()=self.UpgradeCost then + self:SetMetal(0) + self:Upgrade() + -- Upgrading already resupplies ammo so we don't need to do anything else + upgraded = true + elseif not repaired or not self:NeedsResupply() then + -- Add to the upgrade status only if no metal was spent repairing the building or if the building doesn't need to be resupplied first + self:SetMetal(current) + end + + max = max - metal_spent + end + + -- Resupply (todo) + if self:NeedsResupply() and not upgraded then + metal_spent = self:Resupply(max) + + if metal_spent then + max = max - metal_spent + resupplied = true + end + end + + return max0 - max +end + +function ENT:AddMetal2(owner, max) + if not self.BuildBoost then + self.BuildBoost = {} + end + + self.BuildBoost[owner] = {val=2, endtime=CurTime() + 9999} + + -- Building or upgrading + if self:GetState()~=3 then return 0 end + + local max0 = max + local metal_spent + + local repaired, resupplied, upgraded + + -- Repair + metal_spent = math.Clamp(math.ceil((self:GetMaxHealth() - self:Health()) * 0.2), 0, math.min(max, self.RepairRate)) + + if metal_spent > 0 then + self:SetHealth(math.Clamp(self:Health() + 5 * metal_spent, 0, self:GetMaxHealth())) + + max = max - metal_spent + repaired = true + end + + -- Upgrade + if self:GetLevel()=self.UpgradeCost then + self:SetMetal(0) + self:Upgrade() + -- Upgrading already resupplies ammo so we don't need to do anything else + upgraded = true + elseif not repaired or not self:NeedsResupply() then + -- Add to the upgrade status only if no metal was spent repairing the building or if the building doesn't need to be resupplied first + self:SetMetal(current) + end + + max = max - metal_spent + end + + -- Resupply (todo) + if self:NeedsResupply() and not upgraded then + metal_spent = self:Resupply(max) + + if metal_spent then + max = max - metal_spent + resupplied = true + end + end + + return max0 - max +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_base/shared.lua b/gamemodes/tf/entities/entities/obj_base/shared.lua new file mode 100644 index 000000000..2d0dfde77 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_base/shared.lua @@ -0,0 +1,245 @@ + +ENT.Base = "base_entity" +ENT.Type = "ai" + +ENT.AutomaticFrameAdvance = true + +ENT.IsTFBuilding = true +ENT.Building = true +ENT.NumLevels = 3 +ENT.ObjectHealth = 100 +ENT.Upgradable = true +ENT.UpgradeCost = 200 + +ENT.CollisionBox = {Vector(-22,-22,0), Vector(22,22,75)} +ENT.BuildHull = {Vector(-22,-22,0), Vector(22,22,75)} +ENT.BuildDistance = 80 +ENT.BuildYOffsetStand = 10 +ENT.BuildYOffsetDuck = -4 +ENT.BuildYRange = 120 +ENT.HeightTolerancy = 10 +ENT.KillCreditAsInflictor = true +ENT.SappedBy = nil +PrecacheParticleSystem("ExplosionCore_buildings") + +function ENT:GetObjectHealth() + return self.ObjectHealth +end + +-- The text which should show up under the Target ID when looking at that building +function ENT:GetTargetIDSubText() + local progress = Format("%d / %d", self:GetMetal(), self.UpgradeCost) + local level = self:GetLevel() + + if level < self.NumLevels then + return tf_lang.GetFormatted("#TF_playerid_object_upgrading_level", level, progress) + else + return tf_lang.GetFormatted("#TF_playerid_object_level", level, progress) + end +end + +-- The type of alert that should show up on the HUD for this entity +-- 0: none +-- 1: wrench, not pulsing (half ammo) +-- 2: wrench, pulsing red (low ammo) +-- 3: wrench, pulsing red, two beeps (damaged) +-- 4: sapper, pulsing red, repeatedly beeps (being sapped) +function ENT:HUDAlertStatus() + if self:GetState() ~= 3 then return end + + if self:Health() < self:GetObjectHealth() then + return 3 + end + return 0 +end + +function ENT:SetupDataTables() + self:NetworkVar("Int", 0, "BuildingInfo") + --[[ + 0x0TTTLLSS + T: Building sub-type + L: Building level + S: Building status + ]] + + self:NetworkVar("Int", 1, "BuildingInfo2") + --[[ + 0x0MMMUUUU + M: Building mode + U: Building upgrade status + ]] + + self:NetworkVar("Vector", 3, "BuildingInfoFloat") +end + +function ENT:GetDeathnoticeName(nolocalize) + local name = self.ObjectName or GAMEMODE:EntityName(self) + + if IsValid(self:GetBuilder()) then + return Format("%s\1%s", name, GAMEMODE:EntityName(self:GetBuilder())) + else + return name + end +end + +function ENT:GetTargetIDName(nolocalize) + local name = self.ObjectName or GAMEMODE:EntityName(self) + return tf_lang.GetFormatted("#TF_playerid_object", tf_lang.GetRaw(self.ObjectName), GAMEMODE:EntityName(self:GetBuilder())) +end + +function ENT:SetupBlueprint(blueprint, mode) + blueprint.BuildHull = self.BuildHull + blueprint.BuildDistance = self.BuildDistance + --blueprint.BuildYOffset = self.BuildYOffset + blueprint.BuildYOffsetStand = self.BuildYOffsetStand + blueprint.BuildYOffsetDuck = self.BuildYOffsetDuck + blueprint.BuildYRange = self.BuildYRange + blueprint.HeightTolerancy = self.HeightTolerancy +end + +function ENT:SetAutomaticFrameAdvance(bUsingAnim) + self.AutomaticFrameAdvance = bUsingAnim +end + +function ENT:Team() + return self:GetNWInt("Team") or TEAM_NEUTRAL +end + +function ENT:SetTeam(t) + if CLIENT then return end + + local oldteam = self:GetNWInt("Team") + self:SetNWInt("Team", t) + + if oldteam ~= t then + GAMEMODE:UpdateEntityRelationship(self) + end +end + +-- The obj_anim entity attached to this building can act as a second datatable just in case we run out of datatable slots +function ENT:CallFromModelEntity(func, default, ...) + if not self.Model and CLIENT then + for _,v in pairs(ents.FindByClass("obj_anim")) do + if v:GetOwner() == self then + self.Model = v + end + end + end + + if IsValid(self.Model) and self.Model[func] then + return self.Model[func](self.Model, ...) + else + return default + end +end + +----------------------------------------------------------- + +function ENT:GetBuilder() + return self:CallFromModelEntity("GetBuilder", NULL) +end + +function ENT:SetBuilder(b) + self:CallFromModelEntity("SetBuilder", nil, b) +end + +----------------------------------------------------------- + +function ENT:GetBuildGroup() + return self:CallFromModelEntity("GetBuildGroup", 0) +end + +function ENT:SetBuildGroup(g) + self:CallFromModelEntity("SetBuildGroup", nil, g) +end + +----------------------------------------------------------- + +function ENT:GetBuildMode() + return self:CallFromModelEntity("GetBuildMode", 0) +end + +function ENT:SetBuildMode(m) + self:CallFromModelEntity("SetBuildMode", nil, m) +end + +----------------------------------------------------------- + +function ENT:GetBuildingData() + return self:CallFromModelEntity("GetBuildingData", {}) +end + +----------------------------------------------------------- + +function ENT:GetState() + return bit.band(self.dt.BuildingInfo, 0x000000ff) +end + +function ENT:SetState(s) + --self.dt.BuildingInfo = (self.dt.BuildingInfo & 0x7fffff00) | (s & 0xff) + self.dt.BuildingInfo = bit.bor(bit.band(self.dt.BuildingInfo, 0x7fffff00), bit.band(s, 0xff)) +end + +----------------------------------------------------------- + +function ENT:GetLevel() + return bit.rshift(bit.band(self.dt.BuildingInfo, 0x0000ff00), 8) +end + +function ENT:SetLevel(l) + self.dt.BuildingInfo = bit.bor(bit.band(self.dt.BuildingInfo, 0x7fff00ff), bit.lshift(bit.band(l, 0xff), 8)) +end + +function ENT:LevelUp() + return self:SetLevel(self:GetLevel()+1) +end + +----------------------------------------------------------- + +function ENT:GetBuildingType() + return bit.rshift(bit.band(self.dt.BuildingInfo, 0x0fff0000), 16) +end + +function ENT:SetBuildingType(t) + self.dt.BuildingInfo = bit.bor(bit.band(self.dt.BuildingInfo, 0x7000ffff), bit.lshift(bit.band(t, 0xfff), 16)) +end + +----------------------------------------------------------- + +function ENT:GetMetal() + return bit.band(self.dt.BuildingInfo2, 0x0000ffff) +end + +function ENT:SetMetal(m) + self.dt.BuildingInfo2 = bit.bor(bit.band(self.dt.BuildingInfo2, 0x7fff0000), bit.band(m, 0xffff)) +end + +----------------------------------------------------------- + +function ENT:GetMode() + return bit.rshift(bit.band(self.dt.BuildingInfo2, 0x0fff0000), 16) +end + +function ENT:SetMode(m) + self.dt.BuildingInfo2 = bit.bor(bit.band(self.dt.BuildingInfo2, 0x7000ffff), bit.lshift(bit.band(m, 0xfff), 16)) +end + +----------------------------------------------------------- + +function ENT:GetBuildProgress() + return self.dt.BuildingInfoFloat.x +end + +function ENT:SetBuildProgress(f) + local v = self.dt.BuildingInfoFloat + v.x = f + self.dt.BuildingInfoFloat = v +end + +----------------------------------------------------------- + +function ENT:ShouldCollide(ent) + if ent == self:GetBuilder() then + return true + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_dispenser/cl_init.lua b/gamemodes/tf/entities/entities/obj_dispenser/cl_init.lua new file mode 100644 index 000000000..082657836 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_dispenser/cl_init.lua @@ -0,0 +1,95 @@ + +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_BOTH + +local ScreenTexture = { + [0]=surface.GetTextureID("vgui/dispenser_meter_bg_red"), + [1]=surface.GetTextureID("vgui/dispenser_meter_bg_blue"), +} +local ArrowTexture = surface.GetTextureID("vgui/dispenser_meter_arrow") +local Offset = Vector(-1.1, -11, -0.6) +local Scale=0.0465 +local DialSpeed = 1 +local AngleStart = 85 +local AngleEnd = -85 + +function ENT:CalcAngle(m) + return Lerp(m, AngleStart, AngleEnd) +end + + + +function ENT:Draw() + if self:GetState()<2 then return end + + if not self.Model then + for _,v in pairs(ents.FindByClass("obj_anim")) do + if v:GetOwner() == self then + self.Model = v + break + end + end + end + + if not IsValid(self.Model) then return end + + local metal = self:GetAmmoPercentage() + if metal and metal~=self.LastMetalAmount then + if not self.Ang then + self.Ang = self:CalcAngle(metal) + else + if metal>self.LastMetalAmount then + self.DAng = -DialSpeed + else + self.DAng = DialSpeed + end + self.TargetAngle = self:CalcAngle(metal) + end + self.LastMetalAmount = metal + elseif self.TargetAngle then + if self.Ang*self.DAng > self.TargetAngle*self.DAng then + self.Ang = self.TargetAngle + self.TargetAngle = nil + else + self.Ang = self.Ang + self.DAng + end + end + + local cp0_ll = self.Model:GetAttachment(self:LookupAttachment("controlpanel0_ll")) + local cp1_ll = self.Model:GetAttachment(self:LookupAttachment("controlpanel1_ll")) + + if self:GetBuildingType() != 1 and self:GetBuildingType() != 2 then + cam.Start3D2D(cp0_ll.Pos + + Offset.x * cp0_ll.Ang:Forward() + + Offset.y * cp0_ll.Ang:Right() + + Offset.z * cp0_ll.Ang:Up(), cp0_ll.Ang, Scale) + self:DrawScreen() + cam.End3D2D() + + cam.Start3D2D(cp1_ll.Pos + + Offset.x * cp1_ll.Ang:Forward() + + Offset.y * cp1_ll.Ang:Right() + + Offset.z * cp1_ll.Ang:Up(), cp1_ll.Ang, Scale) + self:DrawScreen() + cam.End3D2D() + end +end + +function ENT:DrawScreen() + surface.SetDrawColor(255,255,255,255) + if self:Team() == TEAM_BLU then + surface.SetTexture(ScreenTexture[1]) + else + surface.SetTexture(ScreenTexture[0]) + end + + surface.DrawTexturedRect(0, 0, 480, 240) + surface.SetTexture(ArrowTexture) + + local a = self.Ang + local r = math.rad(a) + local s, c = math.sin(r), math.cos(r) + + surface.DrawTexturedRectRotated(480*0.5 - math.floor(81*s), 240*0.90625 - math.floor(81*c), 50, 200, a) +end diff --git a/gamemodes/tf/entities/entities/obj_dispenser/init.lua b/gamemodes/tf/entities/entities/obj_dispenser/init.lua new file mode 100644 index 000000000..553f11d99 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_dispenser/init.lua @@ -0,0 +1,330 @@ + +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +include("shared.lua") + +local tf_minidispenser_allow_upgrade = CreateConVar("tf_minidispenser_allow_upgrade", "0", {FCVAR_CHEAT}) + +ENT.NPCCallRange = 512 +ENT.NPCCallHealthFraction = 0.75 +ENT.NPCCallProbability = 0.5 + +ENT.NumLevels = 3 +ENT.Levels = { +{Model("models/buildables/dispenser.mdl"), Model("models/buildables/dispenser_light.mdl")}, +{Model("models/buildables/dispenser_lvl2.mdl"), Model("models/buildables/dispenser_lvl2_light.mdl")}, +{Model("models/buildables/dispenser_lvl3.mdl"), Model("models/buildables/dispenser_lvl3_light.mdl")}, +} +ENT.IdleSequence = "ref" +ENT.DisableDuringUpgrade = false +ENT.NoUpgradedModel = false + +ENT.Sound_Explode = Sound("Building_Dispenser.Explode") +ENT.Sound_Generate = Sound("Building_Dispenser.GenerateMetal") + +ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") + +ENT.Gibs = { +Model("models/buildables/Gibs/dispenser_gib1.mdl"), +Model("models/buildables/Gibs/dispenser_gib2.mdl"), +Model("models/buildables/Gibs/dispenser_gib3.mdl"), +Model("models/buildables/Gibs/dispenser_gib4.mdl"), +Model("models/buildables/Gibs/dispenser_gib5.mdl"), +} +ENT.Sound_Explode = Sound("Building_Dispenser.Explode") + +ENT.Sapped = false + +ENT.Range = 100 + +function ENT:SpawnFunction(pl, tr) + if not tr.Hit then return end + if (!pl:IsAdmin()) then return end + + local pos = tr.HitPos + + local ent = ents.Create(self.ClassName) + ent:SetPos(pos) + ent:Spawn() + ent:Activate() + + ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + + ent:SetTeam(pl:Team()) + ent:SetBuilder(pl) + + return ent +end + +function ENT:StartSupply(pl) + self.NumClients = self.NumClients + 1 + + local target = ents.Create("info_dummy") + target:SetPos(pl:GetPos() + Vector(0,0,45)) + target:Spawn() + target:SetParent(pl) + target:AttachToEntity(pl) + target:SetName(tostring(target)) + local e = ParticleSuffix(self:EntityTeam()) + local effect = ents.Create("info_particle_system") + if self:GetBuildingType() == 2 then + self:SetModel("models/buildables/dispenser_light.mdl") + effect:SetKeyValue("effect_name", "medicgun_beam_"..e) + else + effect:SetKeyValue("effect_name", "dispenser_heal_"..e) + end + effect:SetKeyValue("cpoint1", target:GetName()) + effect:SetKeyValue("start_active", "1" ) + + effect:SetParent(self) + effect:Spawn() + effect:Activate() + + effect:Fire("SetParentAttachment", "heal_origin") + + self.Clients[pl] = {effect, target} + pl.BeingHealedByDispenser = true +end + +function ENT:StopSupply(pl) + self.NumClients = self.NumClients - 1 + + local t = self.Clients[pl] + if not t then return end + + if IsValid(t[1]) then t[1]:Remove() end + if IsValid(t[2]) then t[2]:Remove() end + + self.Clients[pl] = nil + pl.BeingHealedByDispenser = false + pl.DoneWaitForHealingSchedule = false +end + +function ENT:OnStartBuilding() + if self:GetBuildingType() == 1 then + self.BuildRate = 1.5 + self.NextAmmoSupply = CurTime() + 0.5 + self:SetModel("models/buildables/mdispenser.mdl") + self.Model:SetModel("models/buildables/mdispenser.mdl") + self.Levels = { + {Model("models/buildables/mdispenser.mdl"), Model("models/buildables/mdispenser_light.mdl")}, + {Model("models/buildables/mdispenser.mdl"), Model("models/buildables/mdispenser_light.mdl")}, + {Model("models/buildables/mdispenser.mdl"), Model("models/buildables/mdispenser_light.mdl")} + } + self.Gibs = { + Model("models/buildables/gibs/mdispenser_gib1.mdl"), + Model("models/buildables/gibs/mdispenser_gib2.mdl"), + Model("models/buildables/Gibs/mdispenser_gib3.mdl"), + Model("models/buildables/Gibs/mdispenser_gib4.mdl"), + Model("models/buildables/Gibs/mdispenser_gib5.mdl"), + } + end + if self:GetBuildingType() == 2 then + self.Model:SetModel("models/buildables/repair_level1.mdl") + self:SetModel("models/buildables/dispenser_light.mdl") + self.Levels = { + {Model("models/buildables/dispenser_light.mdl"), Model("models/buildables/repair_level1.mdl")}, + {Model("models/buildables/dispenser_light.mdl"), Model("models/buildables/repair_level2.mdl")}, + {Model("models/buildables/dispenser_light.mdl"), Model("models/buildables/repair_level3.mdl")} + } + end +end + +function ENT:OnDoneBuilding() + self:EmitSoundEx(self.Sound_DoneBuilding, 100, 100) + + self.MetalPerGeneration = 40 + self.HealRate = 0.1 + self.AmmoPerSupply = 40 + + self.Clients = {} + self.NumClients = 0 + + self:SetNoDraw(false) + + self:SetMetalAmount(25) + self.NextGenerate = CurTime() + 5 + if self:GetBuildingType() == 1 then + self.NextAmmoSupply = CurTime() + 0.5 + + self.BuildRate = 2 + self.InitialHealth = self:GetObjectHealth() + self:SetMaxHealth(self:GetObjectHealth()) + + if not tf_minidispenser_allow_upgrade:GetBool() then + self.RepairRate = 0 + self.UpgradeRate = 0 + end + timer.Simple(0.05, function() + self:SetModel("models/buildables/mdispenser_light.mdl") + self.Model:SetModel("models/buildables/mdispenser_light.mdl") + end) + elseif self:GetBuildingType() == 2 then + + self.BuildRate = 2 + self.InitialHealth = self:GetObjectHealth() + self:SetMaxHealth(self:GetObjectHealth()) + + if not tf_minidispenser_allow_upgrade:GetBool() then + self.RepairRate = 15 + self.UpgradeRate = 15 + end + timer.Simple(0.05, function() + self:SetModel("models/buildables/dispenser_light.mdl") + self.Model:SetModel("models/buildables/repair_level1.mdl") + end) + end +end + +function ENT:OnStartUpgrade() + self:EmitSoundEx(self.Sound_DoneBuilding, 100, 100) + + if self.level==2 then + self.MetalPerGeneration = 50 + self.HealRate = 0.066 + self.AmmoPerSupply = 50 + timer.Simple(0.2, function() + self:SetModel("models/buildables/dispenser_light.mdl") + end) + timer.Simple(0.05, function() + if self:GetBuildingType() == 2 then + self.Model:SetModel("models/buildables/repair_level2.mdl") + end + end) + else if self.level==3 then + self.MetalPerGeneration = 60 + self.HealRate = 0.05 + self.AmmoPerSupply = 60 + timer.Simple(0.2, function() + self:SetModel("models/buildables/dispenser_light.mdl") + end) + timer.Simple(0.05, function() + if self:GetBuildingType() == 2 then + self.Model:SetModel("models/buildables/repair_level3.mdl") + end + end) + end + end +end + +function ENT:OnThinkActive() + + local rf = RecipientFilter() + rf:AddAllPlayers() + if !self.Idle_Sound and self:GetState()==3 || self.Idle_Sound and !self.Idle_Sound:IsPlaying() and self:GetState()==3 then + self.Idle_Sound = CreateSound(self, self.Sound_Idle,rf) + self.Idle_Sound:Play() + end + if !self.Heal_Sound and self:GetNWInt("NumClients",0) >= 0 and self:GetState()==3 || self.Heal_Sound != nil and !self.Heal_Sound:IsPlaying() and self:GetNWInt("NumClients",0) >= 0 and self:GetState()==3 then + self.Heal_Sound = CreateSound(self, self.Sound_Heal,rf) + self.Heal_Sound:Play() + end + if (self.Heal_Sound != nil and self.Heal_Sound:IsPlaying() and self:GetNWInt("NumClients",0) <= 0 and self:GetState()==3) then + self.Heal_Sound:Stop() + end + self:SetNWInt("NumClients",self.NumClients) + if self.NextGenerate and CurTime()>=self.NextGenerate then + local color = self:GetColor() + if self:AddMetalAmount(self.MetalPerGeneration)>0 and color.a>0 then + self:EmitSoundEx(self.Sound_Generate, 100, 100) + end + if self:GetBuildingType() == 1 then + self.NextGenerate = CurTime() + 2.5 + else + self.NextGenerate = CurTime() + 5 + end + end + + if not self.NextSearch or CurTime()>=self.NextSearch then + local removedclients = table.Copy(self.Clients) + for _,v in pairs(ents.FindInSphere(self:GetPos(), self.Range)) do + if (v:IsPlayer() or v.Base == "npc_tf2base") and not v:IsBuilding() and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)==self:Team()) then + if self.Clients[v] then + -- Don't remove that client + removedclients[v] = nil + else + self:StartSupply(v) + end + end + if (self:GetBuildingType() == 2) and v:IsBuilding() and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)==self:Team()) then + if self.Clients[v] then + -- Don't remove that client + removedclients[v] = nil + else + self:StartSupply(v) + end + end + end + + for k,_ in pairs(removedclients) do + self:StopSupply(k) + end + + self.NextSearch = CurTime() + 0.2 + end + + if not self.NextAmmoSupply or CurTime()>=self.NextAmmoSupply then + local metal_before = self:GetMetalAmount() + local metal_after = metal_before + + for k,_ in pairs(self.Clients) do + if k:IsPlayer() then + GAMEMODE:GiveAmmoPercentNoMetal(k, self.AmmoPerSupply) + + if metal_after > 0 then + local ammo_before = k:GetAmmoCount(TF_METAL) + k:GiveTFAmmo(math.min(self.MetalPerGeneration, metal_after), TF_METAL) + local ammo_after = k:GetAmmoCount(TF_METAL) + metal_after = metal_after - (ammo_after - ammo_before) + end + end + end + self:AddMetalAmount(metal_after - metal_before) + if self:GetBuildingType() == 1 then + self.NextAmmoSupply = CurTime() + 0.7 + else + self.NextAmmoSupply = CurTime() + 1 + end + end + + if not self.NextHeal or CurTime()>=self.NextHeal then + for k,_ in pairs(self.Clients) do + if self:GetBuildingType() == 2 then + k:SetHealth(math.Clamp(k:Health() + 1.5, 0, k:GetMaxHealth() + 140)) + else + k:SetHealth(math.Clamp(k:Health() + 1, 0, k:GetMaxHealth())) + end + + if k:IsNPC() and not k:IsCurrentSchedule(SCHED_FORCED_GO_RUN) and not k.DoneWaitForHealingSchedule then + if IsValid(k:GetEnemy()) then + k:SetSchedule(SCHED_SHOOT_ENEMY_COVER) + else + k:SetSchedule(SCHED_COWER) + end + k.DoneWaitForHealingSchedule = true + end + end + self.NextHeal = CurTime() + self.HealRate + end + + if not self.NextCallNPCs or CurTime()>=self.NextCallNPCs then + for _,v in pairs(ents.FindInSphere(self:GetPos(), self.NPCCallRange)) do + if not v.BeingHealedByDispenser and v:IsNPC() and v:IsFriendly(self) and not v:IsBuilding() and v:GetMoveType()==MOVETYPE_STEP then + if v:GetMaxHealth() > 0 and v:Health() / v:GetMaxHealth() <= self.NPCCallHealthFraction then + if math.random() < self.NPCCallProbability then + v:SetLastPosition(self:NearestPoint(v:GetPos())) + v:SetSchedule(SCHED_FORCED_GO_RUN) + end + end + end + end + self.NextCallNPCs = CurTime() + 2 + end +end + +function ENT:OnRemove() + for _,v in pairs(self.Clients or {}) do + self:StopSupply() + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_dispenser/shared.lua b/gamemodes/tf/entities/entities/obj_dispenser/shared.lua new file mode 100644 index 000000000..e142602b9 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_dispenser/shared.lua @@ -0,0 +1,80 @@ + +ENT.Base = "obj_base" +ENT.Type = "ai" +ENT.PrintName = "Dispenser" +ENT.Author = "Seamusmario" +ENT.Category = "Team Fortress 2" +ENT.Spawnable = true + +ENT.AutomaticFrameAdvance = true +ENT.Sapped = false +ENT.ObjectHealth = 150 +ENT.MaxMetal = 400 +ENT.IsEnabled = 0 +ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,55)} +ENT.BuildHull = {Vector(-24,-24,0), Vector(24,24,82)} +ENT.Sound_Idle = Sound("Building_Dispenser.Idle") +ENT.Sound_Heal = Sound("Building_Dispenser.Heal") +ENT.ObjectName = "#TF_Object_Dispenser" + +function ENT:SetAutomaticFrameAdvance(bUsingAnim) + self.AutomaticFrameAdvance = bUsingAnim +end + +function ENT:SetMetalAmount(m) + --self:SetNWInt("Metal", m) + self.MetalAmount = m + self:SetAmmoPercentage(m / self.MaxMetal) +end + +function ENT:GetMetalAmount() + return self.MetalAmount + --return self:GetNWInt("Metal") or 0 +end + +function ENT:AddMetalAmount(m) + local a = self:GetMetalAmount() + if a+m>self.MaxMetal then + self:SetMetalAmount(self.MaxMetal) + return self.MaxMetal - a + elseif a+m<0 then + self:SetMetalAmount(0) + return a + else + self:SetMetalAmount(a+m) + return m + end +end + +function ENT:GetAmmoPercentage() + return self.dt.BuildingInfoFloat.y +end + +function ENT:SetAmmoPercentage(p) + local v = self.dt.BuildingInfoFloat + v.y = p + self.dt.BuildingInfoFloat = v +end + +if CLIENT then +function ENT:Think() + if !self.Idle_Sound and self:GetState()==3 || self.Idle_Sound and !self.Idle_Sound:IsPlaying() and self:GetState()==3 then + self.Idle_Sound = CreateSound(self, self.Sound_Idle) + self.Idle_Sound:Play() + end +end + +function ENT:OnRemove() + + + if self.Idle_Sound then + self.Idle_Sound:Stop() + end + + if self.Heal_Sound then + self.Heal_Sound:Stop() + end + +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_sentrygun/cl_init.lua b/gamemodes/tf/entities/entities/obj_sentrygun/cl_init.lua new file mode 100644 index 000000000..2d44ba0dd --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_sentrygun/cl_init.lua @@ -0,0 +1,46 @@ + +include("shared.lua") + +function ENT:DoMuzzleFlash(right) + if self:GetLevel() == 1 then + ParticleEffectAttach("muzzle_sentry", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + self.MuzzleAttachmentOverride = nil + else + if right then + ParticleEffectAttach("muzzle_sentry2", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle_r")) + self.MuzzleAttachmentOverride = "muzzle_r" + else + ParticleEffectAttach("muzzle_sentry2", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle_l")) + self.MuzzleAttachmentOverride = "muzzle_l" + end + end +end + +function ENT:Think() + if self:GetState()>=2 then + if self:GetBuildingType() == 1 and not self.DoneParticleEffect then + if self:Team() == TEAM_BLU then + ParticleEffectAttach("cart_flashinglight", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("siren")) + else + ParticleEffectAttach("cart_flashinglight_red", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("siren")) + end + self.DoneParticleEffect = true + end + end +end + +usermessage.Hook("DoSentryMuzzleFlash", function(msg) + local w = msg:ReadEntity() + if IsValid(w) and w.DoMuzzleFlash then + w:DoMuzzleFlash(msg:ReadChar() > 0) + end +end) + +usermessage.Hook("NotifySentrySpotted", function(msg) + local w = msg:ReadEntity() + if IsValid(w) then + w:EmitSoundEx("Building_Sentrygun.AlertTarget") + else + LocalPlayer():EmitSoundEx("Building_Sentrygun.AlertTarget") + end +end) diff --git a/gamemodes/tf/entities/entities/obj_sentrygun/init.lua b/gamemodes/tf/entities/entities/obj_sentrygun/init.lua new file mode 100644 index 000000000..90b2f0e8a --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_sentrygun/init.lua @@ -0,0 +1,921 @@ +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +include("shared.lua") + +local tf_minisentry_allow_upgrade = CreateConVar("tf_minisentry_allow_upgrade", "0", {FCVAR_CHEAT}) + +ENT.NumLevels = 3 +ENT.Levels = { +{Model("models/buildables/sentry1_heavy.mdl"), Model("models/buildables/sentry1.mdl")}, +{Model("models/buildables/sentry2_heavy.mdl"), Model("models/buildables/sentry2.mdl")}, +{Model("models/buildables/sentry3_heavy.mdl"), Model("models/buildables/sentry3.mdl")}, +} +ENT.IdleSequence = "idle_off" +ENT.DisableDuringUpgrade = true +ENT.NoUpgradedModel = false + +ENT.Sound_Idle = Sound("Building_Sentrygun.Idle") +ENT.Sound_Idle2 = Sound("Building_Sentrygun.Idle2") +ENT.Sound_Idle3 = Sound("Building_Sentrygun.Idle3") +ENT.Sound_Alert = Sound("Building_Sentrygun.Alert") + +ENT.Sound_Fire = Sound("Building_Sentrygun.Fire") +ENT.Sound_Fire2 = Sound("Building_Sentrygun.Fire2") +ENT.Sound_Fire3 = Sound("Building_Sentrygun.Fire3") +ENT.Sound_FireMini = Sound("Building_MiniSentrygun.Fire") + +ENT.Sound_Empty = Sound("Building_Sentrygun.Empty") + +ENT.RocketShoot_Sound = Sound("Building_Sentrygun.FireRocket") + +ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") + +ENT.MaxAmmo1 = 100 +ENT.MaxAmmo2 = 0 + +ENT.Wrangled = false +ENT.Sapped = false +ENT.IsDoneBuilding = false + +local SentryGibs1 = { +Model("models/buildables/Gibs/sentry1_Gib1.mdl"), +Model("models/buildables/Gibs/sentry1_Gib2.mdl"), +Model("models/buildables/Gibs/sentry1_Gib3.mdl"), +Model("models/buildables/Gibs/sentry1_Gib4.mdl"), +} + +local SentryGibs2 = { +Model("models/buildables/Gibs/sentry2_Gib1.mdl"), +Model("models/buildables/Gibs/sentry2_Gib2.mdl"), +Model("models/buildables/Gibs/sentry2_Gib3.mdl"), +Model("models/buildables/Gibs/sentry2_Gib4.mdl"), +} + +local SentryGibs3 = { +Model("models/buildables/Gibs/sentry3_Gib1.mdl"), +Model("models/buildables/Gibs/sentry2_Gib2.mdl"), +Model("models/buildables/Gibs/sentry2_Gib3.mdl"), +Model("models/buildables/Gibs/sentry2_Gib4.mdl"), +} + +ENT.Gibs = SentryGibs1 +ENT.Sound_Explode = Sound("Building_Sentry.Explode") + +ENT.TracerEffect = "bullet_tracer01" + +ENT.BaseDamage = 16 +ENT.DamageRandomize = 0.125 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.CritDamageMultiplier = 3 + +ENT.OriginZOffset = 40 + +function ENT:SpawnFunction(pl, tr) + if not tr.Hit then return end + if (!pl:IsAdmin()) then return end + local pos = tr.HitPos + + local ent = ents.Create(self.ClassName) + ent:SetPos(pos) + ent:SetTeam(pl:Team()) + ent:SetBuilder(pl) + ent:Spawn() + ent:Activate() + + ent:SetPos(pos - Vector(0,0,ent:OBBMins().z)) + + return ent +end + + +local function sign(n) + if n<0 then return -1 + elseif n>0 then return 1 + end + return 0 +end + +local function angnorm(n) + while n<=-180 do n=n+360 end + while n>180 do n=n-360 end + return n +end + +local function dangnorm(a,b) + a,b=angnorm(a),angnorm(b) + local r = a-b + + if r<0 then + local d = r+360 + if d<-r then return d + else return r end + else + local d = r-360 + if d>-r then return d + else return r end + end +end + +-- Target position retrieving methods + +-- default +local function targetpos_default(t) + return t:BodyTarget(t:GetPos()) +end + +-- from TF2 bone +local function targetpos_tf2(t) + local bone = t:LookupBone("bip_spine_2") + if bone then return t:GetBonePosition(bone) end +end + +-- from HL2 bone +local function targetpos_hl2(t) + local bone = t:LookupBone("ValveBiped.Bip01_Spine2") + if bone then return t:GetBonePosition(bone) end +end + +-- from bounding box +local function targetpos_bb(t) + return t:LocalToWorld(t:OBBCenter()) +end + +local targetmethods = {targetpos_default, targetpos_tf2, targetpos_hl2, targetpos_bb} +local targetmethodnames = { + "bodytarget", + "tf2 spine", + "hl2 spine", + "bounding box", +} +local CURRENT_SELF + +local function targetTraceCallback(res) + local e = res.Entity + if IsValid(e) and CURRENT_SELF:IsFriendly(e) then + -- trace through teammates + --MsgFN("Ignored entity %s", tostring(e)) + return false + end + + return true +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + self.TurretPitch = 0 + self.VisualTurretPitch = 0 + self.TurretYaw = 0 + self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE_DEBRIS) +end + +-- Find the most suitable target position retrieving method for a given entity +-- (returns nil if the entity cannot be reached) +function ENT:GetTargetMethod(ent, strict, dbg) + --local startpos = self:ShootPos() + local startpos = self:TargetOrigin() + if (ent:IsPlayer() and ent:IsAdmin() and ent:IsNeutral()) then + return + end + if dbg then MsgN(tostring(ent)) end + for i,method in ipairs(targetmethods) do + if dbg then MsgF(" Trying %s method... ", targetmethodnames[i]) end + local pos = method(ent) + if pos then + CURRENT_SELF = self + --local tr = util.TraceLine({start=startpos, endpos=pos, filter=self}) + local tr = tf_util.TraceLineWithCallback({start=startpos, endpos=pos, filter=self, callback=targetTraceCallback, mask=MASK_SHOT}) + CURRENT_SELF = nil + if tr.Entity == ent or (not strict and tr.StartSolid) then + if dbg then Msg("OK!\n") end + return method + else + if dbg then MsgF("Failure! (entity hit: %s)\n", tostring(tr.Entity)) end + end + else + if dbg then Msg("Failure! (no position found)\n") end + end + end +end + +function ENT:SetAmmo1(a) + self.Ammo1 = a + self:SetAmmo1Percentage(self.Ammo1 / self.MaxAmmo1) +end + +function ENT:AddAmmo1(a) + self.Ammo1 = self.Ammo1 + a + self:SetAmmo1Percentage(self.Ammo1 / self.MaxAmmo1) +end + +function ENT:TakeAmmo1(a) + if self.Ammo1 >= a then + self.Ammo1 = self.Ammo1 - a + self:SetAmmo1Percentage(self.Ammo1 / self.MaxAmmo1) + return true + end + return false +end + +function ENT:SetAmmo2(a) + self.Ammo2 = a + self:SetAmmo2Percentage(self.Ammo2 / self.MaxAmmo2) +end + +function ENT:AddAmmo2(a) + self.Ammo2 = self.Ammo2 + a + self:SetAmmo2Percentage(self.Ammo2 / self.MaxAmmo2) +end + +function ENT:TakeAmmo2(a) + if self.Ammo2 >= a then + self.Ammo2 = self.Ammo2 - a + self:SetAmmo2Percentage(self.Ammo2 / self.MaxAmmo2) + return true + end + return false +end + +function ENT:OnTakeDamage(dmginfo) + if dmginfo:GetInflictor():IsWorld() then return end + if dmginfo:GetDamageType() == DMG_POISON then return end + self:SetBloodColor(BLOOD_COLOR_MECH) + self:SetHealth(self:Health() - dmginfo:GetDamage()) + if not self.BuildSubstractHealth then + self.BuildSubstractHealth = 0 + end + self.BuildSubstractHealth = self.BuildSubstractHealth + dmginfo:GetDamage() + if self:Health()<=0 then + gamemode.Call("OnNPCKilled", self, dmginfo:GetAttacker(), dmginfo:GetInflictor()) + self.OnTakeDamage = nil + local owner = self:GetBuilder() + if IsValid(owner) and owner:IsPlayer() and self.objtype then + owner.objtype = self.objtype + owner:Speak("TLK_LOST_OBJECT") + end + + self:Explode() + end + if (dmginfo:IsDamageType(DMG_BULLET) and self:Health()>=1 ) then + self:EmitSound("Building_Sentry.Damaged") + end +end + +function ENT:OnStartBuilding() + if self:GetBuildingType() == 1 then + self:SetSkin(self:GetSkin()+2) + self:SetBodygroup(2, 1) + self.FireRate = 0.14 + self.Model:SetBodygroup(2, 1) + self.Model:SetSkin(self:GetSkin()) + self.AnimNeedsBodygroup = true + self.Model:SetBuildingScale(0.75) + + self.BuildRate = 2 + self.InitialHealth = self:GetObjectHealth() + self:SetMaxHealth(self:GetObjectHealth()) + + self.BaseDamage = 10 + + if not tf_minisentry_allow_upgrade:GetBool() then + self.RepairRate = 0 + self.UpgradeRate = 0 + end + elseif self:GetBuildingType() == 2 then + self.BaseDamage = 20 + self.UpgradeRate = 15 + self:SetBodygroup(2, 0) + self.Model:SetBuildingScale(1.2) + elseif self:GetBuildingType() == 3 then + self.BaseDamage = 6 + self.UpgradeRate = 0 + self:SetBodygroup(2, 0) + self.Model:SetBuildingScale(1.0) + self.Model:SetModel("models/combine_turrets/floor_turret.mdl") + self:SetModel("models/combine_turrets/floor_turret.mdl") + end +end + +function ENT:OnDoneBuilding() + self:EmitSound(self.Sound_DoneBuilding) + + self.Target = nil + + self.TurretPitch = 0 + self.TurretYaw = 0 + self.TargetPitch = 0 + self.TargetYaw = 0 + self.DPitch = 0 + self.DYaw = 0 + self.IdlePitchSpeed = 0.3 + self.IdleYawSpeed = 0.75 + + if self:GetBuildingType() == 1 then + self.IdlePitchSpeed = 0.3 + self.IdleYawSpeed = 1.1 + self.AimSpeedMultiplier = 1.35 + self.FireRateMultiplier = 0.66 + self.FireRate = 0.15 + self.ActiveSpeed = 4 * 1.35 + elseif self:GetBuildingType() == 2 then + self.AimSpeedMultiplier = 0.8 + self.FireRateMultiplier = 1.25 + self.ActiveSpeed = 4 * self.AimSpeedMultiplier + else + self.AimSpeedMultiplier = 1 + self.FireRateMultiplier = 1 + self.ActiveSpeed = 4 * self.AimSpeedMultiplier + self.FireRate = 0.25 * self.FireRateMultiplier + end + + + self:SetAmmo1(self.MaxAmmo1) + self:SetAmmo2(self.MaxAmmo2) + + self.BulletSpread = 0 + + --[[ + 0 : Undefined/Building/Upgrading + 1 : Scanning + 2 : Targeting + ]] + self:SetSentryState(1) + local rf = RecipientFilter() + rf:AddAllPlayers() + self.Idle_Sound = CreateSound(self, self.Sound_Idle,rf) + + if self:GetBuildingType() == 1 then + self.Shoot_Sound = self.Sound_FireMini + self.SoundPitch = 120 + elseif self:GetBuildingType() == 2 then + self.Shoot_Sound = self.Sound_Fire + self.SoundPitch = 85 + else + self.Shoot_Sound = self.Sound_Fire + self.SoundPitch = 100 + end + self.IsDoneBuilding = true +end + +function ENT:SetSentryState(st) + if st==1 then + --MsgFN("Switching to IDLE state!") + self.TargetPitch = 0 + self.TargetYaw = 50 + self.Target = nil + self.NextSearch = CurTime()+0.5 + else + --MsgFN("Switching to TARGET state! (target:%s)", tostring(self.Target)) + self.NextSearch = CurTime()+1 + end + self.SentryState = st +end + +function ENT:SetAimTarget(p, y) + self.TargetPitch = p + self.TargetYaw = y +end + +function ENT:OnStartUpgrade() + self:EmitSound(self.Sound_DoneBuilding, 100, 100) + + self.Idle_Sound:Stop() + if self:GetLevel()==2 then + self.Gibs = SentryGibs2 + self.FireRate = 0.125 + self.Shoot_Sound = self.Sound_Fire2 + local rf = RecipientFilter() + rf:AddAllPlayers() + self.Idle_Sound = CreateSound(self, self.Sound_Idle2,rf) + self.NameOverride = "obj_sentrygun2" + + local health_frac = self:Health() / self:GetMaxHealth() + self:SetMaxHealth(self:GetObjectHealth()) + self:SetHealth(self:GetObjectHealth() * health_frac) + + self.MaxAmmo1 = 120 + self.MaxAmmo2 = 0 + self:SetAmmo1(self.MaxAmmo1) + self:SetAmmo2(self.MaxAmmo2) + elseif self:GetLevel()==3 then + self.Gibs = SentryGibs3 + self.Shoot_Sound = self.Sound_Fire3 + local rf = RecipientFilter() + rf:AddAllPlayers() + self.Idle_Sound = CreateSound(self, self.Sound_Idle3,rf) + self.NameOverride = "obj_sentrygun3" + + local health_frac = self:Health() / self:GetMaxHealth() + self:SetMaxHealth(self:GetObjectHealth()) + self:SetHealth(self:GetObjectHealth() * health_frac) + + self.MaxAmmo1 = 144 + self.MaxAmmo2 = 20 + self:SetAmmo1(self.MaxAmmo1) + self:SetAmmo2(self.MaxAmmo2) + end +end + +function ENT:PreUpgradeAnim() + self:OnThink() +end + +function ENT:OnDoneUpgrade() + self:OnThink() +end + +function ENT:OnThink() + if self.AnimNeedsBodygroup then + if self.AnimNeedsBodygroup == true then + self:SetBodygroup(2, 1) + self.Model:SetBodygroup(2, 1) + end + end + if self.Wrangled == false then + if self:GetBuildingType() == 3 then + self:SetPoseParameter("aim_pitch", -self.VisualTurretPitch) + self:SetPoseParameter("aim_yaw", -self.TurretYaw) + self.Model:SetPoseParameter("aim_pitch", -self.VisualTurretPitch) + self.Model:SetPoseParameter("aim_yaw", -self.TurretYaw) + else + self:SetPoseParameter("aim_pitch", self.VisualTurretPitch) + self:SetPoseParameter("aim_yaw", self.TurretYaw) + self.Model:SetPoseParameter("aim_pitch", self.VisualTurretPitch) + self.Model:SetPoseParameter("aim_yaw", self.TurretYaw) + end + end +end + +function ENT:StartFiring() + self.Firing = true + self.NextFire = nil +end + +function ENT:StopFiring() + self.Firing = false +end + +function ENT:ShootPos(right) + local p + + if self:GetLevel()==1 then + if self:GetBuildingType() == 3 then + p = self:GetBonePosition(self:LookupBone("Barrel")) + else + p = self:GetAttachment(self:LookupAttachment("muzzle")) + end + else + if right then + p = self:GetAttachment(self:LookupAttachment("muzzle_r")) + else + p = self:GetAttachment(self:LookupAttachment("muzzle_l")) + end + end + if self:GetBuildingType() == 3 then + return p + else + return p.Pos + end +end + +function ENT:TargetOrigin() + return self:GetPos() + self.OriginZOffset * vector_up +end + +function ENT:RocketShootPos() + local p + + p = self:GetAttachment(self:LookupAttachment("rocket")) + + return p.Pos +end + +function ENT:ShootBullets() + local dir = (self:GetAngles() + Angle(self.TurretPitch, self.TurretYaw, 0)):Forward() + + if self.GunCounter then + self.GunCounter = 1 - self.GunCounter + else + self.GunCounter = 0 + end + local pos = self:ShootPos(self.GunCounter > 0) + local tarpos = self.TargetPos + + if not self.SoundCounter or self.SoundCounter == 0 then + --self:EmitSound(self.Shoot_Sound) + + if self.ShootSoundEnt then + self.ShootSoundEnt:Stop() + end + local rf = RecipientFilter() + rf:AddAllPlayers() + self.ShootSoundEnt = CreateSound(self, self.Shoot_Sound,rf) + + if self:GetLevel() == 1 then + self.SoundCounter = 1 + self.ShootSoundEnt:Play() + + if self.Wrangled != false then + self.ShootSoundEnt:ChangePitch(120) + end + else + self.SoundCounter = 2 + self.ShootSoundEnt:PlayEx(1, self.SoundPitch) + if self.Wrangled != false then + self.ShootSoundEnt:ChangePitch(120) + end + end + end + + umsg.Start("DoSentryMuzzleFlash") + umsg.Entity(self) + umsg.Char(self.GunCounter) + umsg.End() + + self:FireTFBullets{ + Num = 1, + Src = pos, + Dir = (tarpos - pos):GetNormal(), + Spread = Vector(0, 0, 0), + --Attacker = self, + Attacker = self:GetBuilder(), + + Team = GAMEMODE:EntityTeam(self), + RampUp = self.MaxDamageRampUp, + Falloff = self.MaxDamageFalloff, + Critical = false, + CritMultiplier = 1, + Damage = self.BaseDamage, + + Tracer = 1, + TracerName = "bullet_tracer01", + Force = 1, + } + self.SoundCounter = self.SoundCounter - 1 + + return true +end + +function ENT:ShootRocket() + local pos = self:RocketShootPos() + local tarpos = self.TargetPos + local dir = (tarpos - pos):GetNormal() + + --self:EmitSound(self.RocketShoot_Sound) + if self.RocketShootSoundEnt then + self.RocketShootSoundEnt:Stop() + end + local rf = RecipientFilter() + rf:AddAllPlayers() + self.RocketShootSoundEnt = CreateSound(self, self.RocketShoot_Sound,rf) + self.RocketShootSoundEnt:PlayEx(1, self.SoundPitch) + if self.Wrangled != false then + self.RocketShootSoundEnt:ChangePitch(120) + end + + local rocket = ents.Create("tf_projectile_sentryrocket") + rocket:SetPos(pos) + rocket:SetAngles(dir:Angle()) + --rocket:SetOwner(self) + rocket:SetOwner(self:GetBuilder()) + rocket.Launcher = self + rocket:Spawn() + --rocket:Activate() +end + +function ENT:FindTarget(dbg) + local Target, MinDist, Method + for _,v in pairs(ents.FindInSphere(self:GetPos(), self.Range)) do + if (v:IsTFPlayer()) and ( v:Health() > 0 ) and (self:Team()==TEAM_NEUTRAL or GAMEMODE:EntityTeam(v)~=self:Team()) and v:EntIndex() != self:GetBuilder():EntIndex() and v:GetNoDraw() == false then + local d = self:GetPos():Distance(v:GetPos()) + if not MinDist or d= dp * self.TargetPitch then + self.TurretPitch = self.TargetPitch + end + + self.TurretYaw = angnorm(self.TurretYaw + dy*self.IdleYawSpeed) + if dy * self.TurretYaw >= dy * self.TargetYaw then + self.TargetYaw = -self.TargetYaw + self.Idle_Sound:Stop() + + self.Idle_Sound:PlayEx(1, self.SoundPitch) + + self.TargetPitch = 5*math.random(-2,2) + end + + self.VisualTurretPitch = self.TurretPitch + + if not self.NextSearch or CurTime()>=self.NextSearch then + self.Target, self.TargetMethod = self:FindTarget() + if self.Target and self.TargetMethod and self.Target:IsValid() then + --self:EmitSound(self.Sound_Alert) + if self.AlertSoundEnt then + self.AlertSoundEnt:Stop() + end + if self:GetBuildingType() == 3 then + self:EmitSound("NPC_CeilingTurret.Active") + else + local rf = RecipientFilter() + rf:AddAllPlayers() + self.AlertSoundEnt = CreateSound(self, self.Sound_Alert,rf) + self.AlertSoundEnt:PlayEx(1, self.SoundPitch) + end + + if self.Target:IsPlayer() then + umsg.Start("NotifySentrySpotted", self.Target) + umsg.Entity(self) + umsg.End() + end + self:SetSentryState(2) + return + end + self.NextSearch = CurTime() + 0.5 + end +end +if SERVER then +function ENT:Think() + local state = self:GetState() + local deltatime = 0 + + if self.LastThink then + deltatime = CurTime() - self.LastThink + end + self.LastThink = CurTime() + if (self:GetBuilder() != nil && self:GetBuilder():IsPlayer()) then + if (self:GetBuilder():GetPlayerClass() != "engineer" && self:GetBuilder():GetPlayerClass() != "gmodplayer") then + self:Explode() + end + elseif (self:GetBuilder() == nil) then + self:Explode() + end + if (IsValid(self:GetBuilder())) then + self:GetBuilder().SentryGun = self + end + self:OnThink() + if state==0 then + if CurTime()-self.StartTime>=self.TimeLeft then + self:Build() + end + elseif state==1 then + local time_added = deltatime + + if self.BuildBoost then + local total = 1 + local mul = self.DefaultBuildRate / self.BuildRate + + for pl,data in pairs(self.BuildBoost) do + if CurTime() > data.endtime then + self.BuildBoost[pl] = nil + else + total = total + data.val * mul + end + end + self.Model:SetPlaybackRate(self.BuildRate * total) + time_added = time_added * total + end + + self.BuildProgress = math.Clamp(self.BuildProgress + time_added, 0, self.BuildProgressMax) + self:SetBuildProgress(self.BuildProgress / self.BuildProgressMax) + + local health = math.Clamp((self.BuildProgress / self.BuildProgressMax) * self:GetMaxHealth(), self.InitialHealth, self:GetMaxHealth()) + self:SetHealth(health - (self.BuildSubstractHealth or 0)) + + if self.BuildProgress >= self.BuildProgressMax then + self:OnDoneBuilding() + self:SetHealth(self:GetMaxHealth() - (self.BuildSubstractHealth or 0)) + self:Enable() + end + elseif state==2 then + if CurTime()-self.StartTime>=self.TimeLeft then + self:OnDoneUpgrade() + self:Enable() + end + + if not self.DisableDuringUpgrade then + self:OnThinkActive() + end + elseif state==3 then + self:OnThinkActive() + if (string.find(game.GetMap(),"mvm_")) then + + if CurTime()>=self.TimeLeft and self:GetLevel()<=self.NumLevels then + self:Upgrade() + end + + end + + end + + self:NextThink(FrameTime()) + return true +end +end +function ENT:ThinkTarget() + -- If the target gets too far away, forget about it + if IsValid(self.Target) and self.Target:Health()>0 and (not self.NextDistanceCheck or CurTime() > self.NextDistanceCheck) then + local dist = self:GetPos():Distance(self.Target:GetPos()) + if dist > self.Range then + self.Target = nil + end + self.NextDistanceCheck = CurTime() + 0.25 + end + + -- Lost target, find another one, or go back to idle + if not self.Target or not self.Target:IsValid() or self.Target:Health()<=0 then + self.Target, self.TargetMethod = self:FindTarget() + if not self.Target or not self.TargetMethod then + self:StopFiring() + self:SetSentryState(1) + return + end + --self:EmitSound(self.Sound_Alert) + if self.AlertSoundEnt then + self.AlertSoundEnt:Stop() + end + if self:GetBuildingType() == 3 then + self:EmitSound("NPC_CeilingTurret.Alert") + timer.Simple(2, function() + local rf = RecipientFilter() + rf:AddAllPlayers() + self.AlertSoundEnt = CreateSound(self, self.Sound_Alert,rf) + self.AlertSoundEnt:PlayEx(1, self.SoundPitch) + self:StopSound("NPC_CeilingTurret.Alert") + end) + else + local rf = RecipientFilter() + rf:AddAllPlayers() + self.AlertSoundEnt = CreateSound(self, self.Sound_Alert,rf) + self.AlertSoundEnt:PlayEx(1, self.SoundPitch) + end + if self.Target:IsPlayer() then + umsg.Start("NotifySentrySpotted", self.Target) + umsg.End() + end + end + + self.TargetPos = self.TargetMethod(self.Target) + + -- Tracking + --local ang = self:GetAngles()-(self.TargetPos - self:ShootPos()):Angle() + local ang = self:GetAngles()-(self.TargetPos - self:TargetOrigin()):Angle() + self.TargetPitch = angnorm(ang.p) + self.TargetYaw = angnorm(ang.y) + + local dp = math.Clamp(0.2*dangnorm(self.TargetPitch,self.TurretPitch), -self.ActiveSpeed, self.ActiveSpeed) + local dy = math.Clamp(0.2*dangnorm(self.TargetYaw,self.TurretYaw), -self.ActiveSpeed, self.ActiveSpeed) + + --self.TurretPitch = math.Clamp(angnorm(self.TurretPitch + dp),-50, 50) + self.TurretPitch = math.Clamp(angnorm(self.TurretPitch + dp),-89.9, 89.9) + self.VisualTurretPitch = math.Clamp(self.TurretPitch, -50, 50) + self.TurretYaw = angnorm(self.TurretYaw + dy) + + -- Firing + if self.Firing then + if not self.NextFire or CurTime()>=self.NextFire then + local ok = self:TakeAmmo1(1) + + self.ShootAnimCounter = (self.ShootAnimCounter or 1) - 1 + if self.ShootAnimCounter == 0 then + self.ShootAnimCounter = 4 + if ok then + self.Model:RestartGesture(ACT_RANGE_ATTACK1, true) + elseif self:GetLevel() > 1 then + self.Model:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + end + end + + if ok then + self:ShootBullets() + else + self:EmitSound(self.Sound_Empty) + end + + self.NextFire = CurTime() + self.FireRate + end + + if self:GetLevel() == 3 then + if not self.NextFireRocket or CurTime()>=self.NextFireRocket then + local ok = self:TakeAmmo2(1) + + if ok then + self:ShootRocket() + self:SetNoDraw(true) + self.Model:SetNoDraw(false) + self.Model:RestartGesture(ACT_RANGE_ATTACK2, true) + self.NextFireRocket = CurTime() + 3 + end + end + end + else + self.ShootAnimCounter = nil + --self:RestartGesture(ACT_INVALID) + end + + -- Check visibility and decide whether to shoot or not + if not self.NextCheckVis or CurTime()>=self.NextCheckVis then + local firestate = self.Firing + + if math.abs(dangnorm(self.TurretPitch,self.TargetPitch))<5 and math.abs(dangnorm(self.TurretYaw,self.TargetYaw))<5 then + firestate = true + else + firestate = false + end + + if firestate then + self.TargetMethod = self:GetTargetMethod(self.Target) + + if not self.TargetMethod then + firestate = false + self.Target = nil + end + end + + if firestate ~= self.Firing then + if firestate then + self:StartFiring() + else + self:StopFiring() + end + end + + self.NextCheckVis = CurTime() + 0.25 + end + + -- Update target, if someone gets closer than the current target, switch + if not self.NextSearch or CurTime()>=self.NextSearch then + self.Target, self.TargetMethod = self:FindTarget() + self.NextSearch = CurTime() + 1 + end +end + +function ENT:OnThinkActive() + if self.SentryState == 1 then -- Idling + self:ThinkIdle() + elseif self.SentryState == 2 then -- Targeting + self:ThinkTarget() + end +end + +function ENT:NeedsResupply() + return self.Ammo1 < self.MaxAmmo1 or self.Ammo2 < self.MaxAmmo2 +end + +function ENT:Resupply(max) + local max0 = max + local metal_spent + + -- bullets + local num_bullets = math.min(self.MaxAmmo1 - self.Ammo1, math.min(max, 40)) -- +40 bullets per wrench hit + metal_spent = num_bullets + if metal_spent > 0 then + max = max - metal_spent + self:AddAmmo1(num_bullets) + end + + -- rockets + local num_rockets = math.min(self.MaxAmmo2 - self.Ammo2, math.min(math.floor(max/2), 8)) -- +8 rockets per wrench hit + metal_spent = 2 * num_rockets + if metal_spent > 0 then + max = max - metal_spent + self:AddAmmo2(num_rockets) + end + + return max0 - max +end + +function ENT:OnRemove() + if self.Idle_Sound then + self.Idle_Sound:Stop() + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_sentrygun/shared.lua b/gamemodes/tf/entities/entities/obj_sentrygun/shared.lua new file mode 100644 index 000000000..7e0986fde --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_sentrygun/shared.lua @@ -0,0 +1,143 @@ +ENT.PrintName = "Sentry Gun" +ENT.Author = "Seamusmario" +ENT.Category = "Team Fortress 2" +ENT.Spawnable = true +ENT.AdminSpawnable = false +ENT.Base = "obj_base" +ENT.Type = "ai" + +ENT.AutomaticFrameAdvance = true + +ENT.ObjectHealth = 150 +ENT.Range = 1100 + +ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,66)} +ENT.BuildHull = {Vector(-24,-24,0), Vector(24,24,86)} +ENT.Sapped = false +ENT.ObjectName = "#TF_Object_Sentry" + +function ENT:GetObjectHealth() + local t = self:GetBuildingType() + local l = self:GetLevel() + + local m = 1 + if t == 1 then + m = 0.666666 + end + + if l==2 then + return math.ceil(180 * m) + elseif l==3 then + return math.ceil(216 * m) + else + return math.ceil(150 * m) + end +end + +function ENT:GetTargetIDSubText() + local progress = Format("%d / %d", self:GetMetal(), self.UpgradeCost) + local level = self:GetLevel() + + if level < self.NumLevels then + return tf_lang.GetFormatted("#TF_playerid_object_upgrading", progress) + else + return "" + end +end + +function ENT:HUDAlertStatus() + if self:GetState() ~= 3 then return end + + local p + if self:GetLevel() == 3 then + p = math.min(self:GetAmmo1Percentage(), self:GetAmmo2Percentage()) + else + p = self:GetAmmo1Percentage() + end + + if self:Health() < self:GetObjectHealth() then + return 3 + elseif p < 0.25 then + return 2 + elseif p < 0.5 then + return 1 + end + + return 0 +end + +function ENT:SetAutomaticFrameAdvance(bUsingAnim) + self.AutomaticFrameAdvance = bUsingAnim +end + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Int", 2, "KillsInfo") + --[[ + 0x00AAAKKK + KKK: Kills + AAA: Assists + ]] +end + +----------------------------------------------------------- + +function ENT:GetKills() + return bit.band(self.dt.KillsInfo, 0x00000fff) +end + +function ENT:SetKills(k) + self.dt.KillsInfo = bit.bor(bit.band(self.dt.KillsInfo, 0x7ffff000), bit.band(k, 0xfff)) +end + +function ENT:AddKills(k) + self:SetKills(self:GetKills() + k) +end + +----------------------------------------------------------- + +function ENT:GetAssists() + return bit.rshift(bit.band(self.dt.KillsInfo, 0x00fff000), 12) +end + +function ENT:SetAssists(a) + self.dt.KillsInfo = bit.bor(bit.band(self.dt.KillsInfo, 0x7f000fff), bit.lshift(bit.band(a, 0xfff), 12)) +end + +function ENT:AddAssists(a) + self:SetAssists(self:GetAssists() + a) +end + +----------------------------------------------------------- + +function ENT:GetAmmo1Percentage() + return self.dt.BuildingInfoFloat.y +end + +function ENT:SetAmmo1Percentage(p) + local v = self.dt.BuildingInfoFloat + v.y = p + self.dt.BuildingInfoFloat = v +end + +----------------------------------------------------------- + +function ENT:GetAmmo2Percentage() + return self.dt.BuildingInfoFloat.z +end + +function ENT:SetAmmo2Percentage(p) + local v = self.dt.BuildingInfoFloat + v.z = p + self.dt.BuildingInfoFloat = v +end + +----------------------------------------------------------- + +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("muzzle_sentry") +PrecacheParticleSystem("muzzle_sentry2") + +PrecacheParticleSystem("cart_flashinglight_red") +PrecacheParticleSystem("cart_flashinglight") \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_teleporter/cl_init.lua b/gamemodes/tf/entities/entities/obj_teleporter/cl_init.lua new file mode 100644 index 000000000..c1fbd4920 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_teleporter/cl_init.lua @@ -0,0 +1,123 @@ + +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_BOTH + +local TeleporterParticles = { + { + arms = "teleporter_arms_circle_red", + charged = { + "teleporter_red_charged_level1", + "teleporter_red_charged_level2", + "teleporter_red_charged_level3", + }, + entrance = { + "teleporter_red_entrance_level1", + "teleporter_red_entrance_level2", + "teleporter_red_entrance_level3", + }, + exit = { + "teleporter_red_exit_level1", + "teleporter_red_exit_level2", + "teleporter_red_exit_level3", + }, + }, + { + arms = "teleporter_arms_circle_blue", + charged = { + "teleporter_blue_charged_level1", + "teleporter_blue_charged_level2", + "teleporter_blue_charged_level3", + }, + entrance = { + "teleporter_blue_entrance_level1", + "teleporter_blue_entrance_level2", + "teleporter_blue_entrance_level3", + }, + exit = { + "teleporter_blue_exit_level1", + "teleporter_blue_exit_level2", + "teleporter_blue_exit_level3", + }, + }, +} + +ENT.Sound_Spin1 = Sound("Building_Teleporter.SpinLevel1") +ENT.Sound_Spin2 = Sound("Building_Teleporter.SpinLevel2") +ENT.Sound_Spin3 = Sound("Building_Teleporter.SpinLevel3") + +function ENT:UpdateParticles() + local link = self:GetLinkedTeleporter() + local level = self:GetLevel() + + self:StopParticles() + + if not IsValid(link) then return end + + local p + if self:Team() == TEAM_BLU then + p = TeleporterParticles[2] + else + p = TeleporterParticles[1] + end + + ParticleEffectAttach(p.arms, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("arm_attach_L")) + ParticleEffectAttach(p.arms, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("arm_attach_R")) + + if self:IsEntrance() then + ParticleEffectAttach(p.entrance[level], PATTACH_ABSORIGIN_FOLLOW, self, 0) + elseif self:IsExit() then + ParticleEffectAttach(p.entrance[level], PATTACH_ABSORIGIN_FOLLOW, self, 0) + end + + if self:IsReady() then + ParticleEffectAttach(p.charged[level], PATTACH_ABSORIGIN_FOLLOW, self, 0) + end +end + +function ENT:Think() + if !self.Spin_Sound and self:GetLinkedTeleporter() != nil || self.Spin_Sound and !self.Spin_Sound:IsPlaying() and self:GetLinkedTeleporter() != nil then + + if (self:GetLevel() == 1) then + + self.Spin_Sound = CreateSound(self, self.Sound_Spin1) + self.Spin_Sound:Play() + + elseif self:GetLevel() == 2 then + + self.Spin_Sound = CreateSound(self, self.Sound_Spin2) + self.Spin_Sound:Play() + + else + + self.Spin_Sound = CreateSound(self, self.Sound_Spin3) + self.Spin_Sound:Play() + + end + end + if (self:GetState()~=3 and self.Spin_Sound) then + + self.Spin_Sound:Stop() + + end + if self.Spin_Sound then + self.Spin_Sound:ChangePitch(math.Clamp(100*self:GetNWFloat("SpinSpeed",0), 1, 100), 0) + end + local link = self:GetLinkedTeleporter() + local level = self:GetLevel() + local ready = self:IsReady() + + if link ~= self.LastLinkedTeleporter or level ~= self.LastLevel or ready ~= self.LastReady then + self:UpdateParticles() + self.LastLinkedTeleporter = link + self.LastLevel = level + self.LastReady = ready + end +end + + +function ENT:OnRemove() + if self.Spin_Sound then + self.Spin_Sound:Stop() + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_teleporter/init.lua b/gamemodes/tf/entities/entities/obj_teleporter/init.lua new file mode 100644 index 000000000..5579d8898 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_teleporter/init.lua @@ -0,0 +1,434 @@ + +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +include("shared.lua") + +ENT.NumLevels = 3 +ENT.Levels = { +{Model("models/buildables/teleporter.mdl"), Model("models/buildables/teleporter_light.mdl")}, +{Model("models/buildables/teleporter.mdl"), Model("models/buildables/teleporter_light.mdl")}, +{Model("models/buildables/teleporter.mdl"), Model("models/buildables/teleporter_light.mdl")}, +} +ENT.IdleSequence = "running" +ENT.DisableDuringUpgrade = false +ENT.NoUpgradedModel = false + +ENT.Sound_Ready = Sound("Building_Teleporter.Ready") +ENT.Sound_Send = Sound("Building_Teleporter.Send") +ENT.Sound_Receive = Sound("Building_Teleporter.Receive") + +ENT.Sound_Explode = Sound("Building_Teleporter.Explode") + +--ENT.Sound_DoneBuilding = Sound("Building_Sentrygun.Built") + +ENT.TeleportDelay = 1 + +ENT.RechargeTime = 10 +ENT.RechargeTime2 = 7 +ENT.RechargeTime3 = 3.3 +ENT.MinRechargingSpinSpeed = 0.2 +ENT.SpinSpeed = 0 + +ENT.Acceleration = 0 + +ENT.Spawnpoint = false +ENT.Entrance = false +ENT.Exit = false +ENT.Sapped = false + +ENT.Gibs = { +Model("models/buildables/Gibs/teleporter_gib1.mdl"), +Model("models/buildables/Gibs/teleporter_gib2.mdl"), +Model("models/buildables/Gibs/teleporter_gib3.mdl"), +Model("models/buildables/Gibs/teleporter_gib4.mdl"), +} + +ENT.Accelerations = { + {acc=0.003, dec=0.002}, +} + +function ENT:SetAcceleration(a) + self.Acceleration = a +end + +function ENT:OnStartBuilding() + if self.Entrance == true then + self:SetBuildMode(0) + elseif self.Exit == true then + self:SetBuildMode(1) + end +end + +function ENT:PostEnable(laststate) + if laststate == 1 then + for _,v in pairs(ents.FindByClass("obj_teleporter")) do + if v ~= self and v:GetBuilder() == self:GetBuilder() and v:GetState() == 3 and not IsValid(v:GetLinkedTeleporter()) then + if (self:IsEntrance() and v:IsExit()) or (self:IsExit() and v:IsEntrance()) then + self:SetLinkedTeleporter(v) + v:SetLinkedTeleporter(self) + self:OnLink(v) + v:OnLink(self) + end + end + end + + self.SpinSpeed = 0 + self:SetPlaybackRate(0) + end +end + +function ENT:OnLink(ent) + self:SetAcceleration(0.005) + self:SetChargePercentage(1) + + if (ent != nil) then + ent:SetLevel(self:GetLevel()) + end + + self.Model:ResetSequence("running") + +end + +function ENT:OnUnlink(ent) + if (!self.Spawnpoint) then + self:SetAcceleration(-0.003) + end +end + +function ENT:OnStartUpgrade() + if IsValid(self:GetLinkedTeleporter()) then + self:SetChargePercentage(1) + + if self.Spin_Sound then + self.Spin_Sound:Stop() + end + + self.NextRecharge = CurTime() + 2.5 + timer.Simple(2.5, function() + self:EmitSoundEx(self.Sound_Ready) + self:GetLinkedTeleporter():EmitSoundEx(self.Sound_Ready) + end) + timer.Simple(1.5, function() + self:SetAcceleration(0.01) + self:GetLinkedTeleporter():SetAcceleration(0.01) + end) + self:SetAcceleration(-0.01) + self:GetLinkedTeleporter():SetAcceleration(-0.01) + + self.DoneInitialWarmup = true + local rf = RecipientFilter() + rf:AddAllPlayers() + if self:GetLevel()==2 then + self.Spin_Sound = CreateSound(self, self.Sound_Spin2,rf) + self.Spin_Sound:Play() + elseif self:GetLevel()==3 then + self.Spin_Sound = CreateSound(self, self.Sound_Spin3,rf) + self.Spin_Sound:Play() + end + end +end + +function ENT:GetExitPosition() + local att = self:GetAttachment(self:LookupAttachment("centre_attach")) + return att.Pos + 2*vector_up +end + +function ENT:AddMetal(owner, max) + if not self.BuildBoost then + self.BuildBoost = {} + end + + local exit = self:GetLinkedTeleporter() + local mult = 1 + local w = owner:GetActiveWeapon() + if IsValid(w) and w.ConstructRateMultiplier then + mult = w.ConstructRateMultiplier + end + self.BuildBoost[owner] = {val=mult, endtime=CurTime() + 0.8} + + -- Building or upgrading + if self:GetState()~=3 then return 0 end + + local max0 = max + local metal_spent + + local repaired, resupplied, upgraded + + -- Repair + metal_spent = math.Clamp(math.ceil((self:GetMaxHealth() - self:Health()) * 0.2), 0, math.min(max, self.RepairRate)) + + if metal_spent > 0 then + GAMEMODE:HealPlayer(owner, self, 5 * metal_spent, true, false) + + max = max - metal_spent + repaired = true + end + + -- Upgrade + if self:GetLevel()=self.UpgradeCost then + self:SetMetal(0) + self:Upgrade() + upgraded = true + elseif not repaired or not self:NeedsResupply() then + -- Add to the upgrade status only if no metal was spent repairing the building or if the building doesn't need to be resupplied first + + if (exit != nil and exit:EntIndex()~=self:EntIndex()) then + exit:SetMetal(current) + end + self:SetMetal(current) + end + + max = max - metal_spent + end + + -- Resupply (todo) + if self:NeedsResupply() and not upgraded then + metal_spent = self:Resupply(max) + + if metal_spent then + max = max - metal_spent + resupplied = true + end + end + return max0 - max +end + +function ENT:Teleport(pl) + if not self:IsEntrance() then return end + local exit = self:GetLinkedTeleporter() + if not IsValid(exit) then return end + + self:EmitSoundEx(self.Sound_Send) + if pl:IsTFPlayer() then + if pl:IsPlayer() then + pl:SetFOV(50, 0.4) + umsg.Start("TFTeleportEffect", pl) + umsg.End() + pl:ScreenFade( SCREENFADE.OUT, Color( 255, 255, 255, 150 ), 0.4, 0.4 ) + end + ParticleEffect("teleportedin_red", self:GetPos(), self:GetAngles(), pl) + end + timer.Simple(0.4, function() + + self:SetChargePercentage(0) + if self:GetLevel() == 2 then + self.SpinSpeed = 2 + self:SetAcceleration(-0.004) + self.NextRecharge = CurTime() + self.RechargeTime2 + self.NextRestartMotor = CurTime() + 0.5 * self.RechargeTime2 + elseif self:GetLevel() == 3 then + self.SpinSpeed = 3 + self:SetAcceleration(-0.009) + self.NextRecharge = CurTime() + self.RechargeTime3 + self.NextRestartMotor = CurTime() + 0.5 * self.RechargeTime3 + else + self.SpinSpeed = 1.0 + self:SetAcceleration(-0.0025) + self.NextRecharge = CurTime() + self.RechargeTime + self.NextRestartMotor = CurTime() + 0.5 * self.RechargeTime + end + if exit:GetLevel() == 2 then + exit.SpinSpeed = 2 + exit:SetAcceleration(-0.004) + exit.NextRecharge = CurTime() + exit.RechargeTime2 + exit.NextRestartMotor = CurTime() + 0.5 * exit.RechargeTime2 + elseif exit:GetLevel() == 3 then + exit.SpinSpeed = 3 + exit:SetAcceleration(-0.009) + exit.NextRecharge = CurTime() + exit.RechargeTime3 + exit.NextRestartMotor = CurTime() + 0.5 * exit.RechargeTime3 + else + exit.SpinSpeed = 1.0 + exit:SetAcceleration(-0.0025) + exit.NextRecharge = CurTime() + exit.RechargeTime + exit.NextRestartMotor = CurTime() + 0.5 * exit.RechargeTime + end + pl:SetPos(exit:GetExitPosition()) + + if pl:IsPlayer() then + pl:SetFOV(120, 0) + timer.Simple(0.05, function() + pl:SetFOV(0, 0.8) + end) + end + ParticleEffect("teleportedin_red", exit:GetPos(), exit:GetAngles(), pl) + exit:EmitSoundEx(self.Sound_Receive) + + local y = self:GetAngles().y + if pl:IsTFPlayer() then + if pl:IsPlayer() then + local ang = pl:EyeAngles() + ang.y = y + pl:SetEyeAngles(ang) + umsg.Start("TFTeleportEffect", pl) + umsg.End() + else + local ang = pl:GetAngles() + ang.y = y + pl:SetAngles(ang) + end + else + local ang = pl:GetAngles() + ang.y = y + pl:SetAngles(ang) + end + end) + self.DoneInitialWarmup = true +end + +function ENT:OnThinkActive() + + if !self.Spin_Sound and self:GetLinkedTeleporter() != nil and self:GetState()==3 || self.Spin_Sound and !self.Spin_Sound:IsPlaying() and self:GetLinkedTeleporter() != nil and self:GetState()==3 then + local rf = RecipientFilter() + rf:AddAllPlayers() + if (self:GetLevel() == 1) then + + self.Spin_Sound = CreateSound(self, self.Sound_Spin1,rf) + self.Spin_Sound:Play() + + elseif self:GetLevel() == 2 then + + self.Spin_Sound = CreateSound(self, self.Sound_Spin2,rf) + self.Spin_Sound:Play() + + else + + self.Spin_Sound = CreateSound(self, self.Sound_Spin3,rf) + self.Spin_Sound:Play() + + end + end + if (self:GetState()~=3 and self.Spin_Sound) then + + self.Spin_Sound:Stop() + + end + if self.Spin_Sound then + self.Spin_Sound:ChangePitch(math.Clamp(100*self:GetNWFloat("SpinSpeed",0), 1, 100), 0) + end + + if self:IsEntrance() and IsValid(self:GetLinkedTeleporter()) then + self:SetBodygroup(2, 1) + self:SetPoseParameter("direction", self.Model:GetAngles().y-(self.Model:GetPos()-self:GetLinkedTeleporter():GetPos()):Angle().y) + self.Model:SetBodygroup(2, 1) + self.Model:SetPoseParameter("direction", self.Model:GetAngles().y-(self.Model:GetPos()-self:GetLinkedTeleporter():GetPos()):Angle().y) + else + self:SetBodygroup(2, 0) + self.Model:SetBodygroup(2, 0) + end + if string.find(game.GetMap(),"mvm_") and self:GetBuilder():Team() == TEAM_BLU then + self.Spawnpoint = true + end + if !IsValid(self:GetLinkedTeleporter()) then + self:OnUnlink(self:GetLinkedTeleporter()) + end + if (IsValid(self:GetLinkedTeleporter())) then + if (self:GetLinkedTeleporter():GetLevel() <= self:GetLevel() - 1 and self:GetLinkedTeleporter():GetState() == 3) then + local exit = self:GetLinkedTeleporter() + exit:AddMetal2(self:GetOwner(),200) + end + end + if (self.Spawnpoint) then + + if (!IsValid(self:GetLinkedTeleporter())) then + self:SetLinkedTeleporter(self) + self:OnLink(self) + self:SetAcceleration(0.0025) + for k,v in pairs(player.GetAll()) do + if !v:IsFriendly(self) then + v:SendLua([[surface.PlaySound("vo/announcer_mvm_eng_tele_activated0"..math.random(1,4)..".mp3")]]) + end + v:SendLua([[surface.PlaySound("mvm/mvm_tele_activate.wav")]]) + end + end + end + if self.NextRecharge then + local r = math.Clamp(1 - (self.NextRecharge - CurTime()) / self.RechargeTime, 0, 1) + self:SetChargePercentage(r) + if r == 1 then + self.NextRecharge = nil + end + end + + self.Model:ResetSequence("running") + if self.NextRestartMotor and CurTime() >= self.NextRestartMotor then + if self:GetLevel() == 1 then + self:SetAcceleration(0.0025) + elseif self:GetLevel() == 2 then + self:SetAcceleration(0.004) + elseif self:GetLevel() == 3 then + self:SetAcceleration(0.009) + end + self.NextRestartMotor = nil + end + + local exit = self:GetLinkedTeleporter() + self.SpinSpeed = math.Clamp(self.SpinSpeed + self.Acceleration, 0, 1) + self:SetPlaybackRate(self.SpinSpeed) + self.Model:SetPlaybackRate(self.SpinSpeed) + self:SetNWFloat("SpinSpeed",self.SpinSpeed) + + if self.SpinSpeed == 1 then + self:SetBodygroup(1,1) + self.DoneInitialWarmup = true + else + self:SetBodygroup(1,0) + end + self:SetCycle(self.Model:GetCycle()) + local ready = self:IsReady() + if ready ~= self.LastReady then + if ready then + self:EmitSoundEx(self.Sound_Ready) + exit:EmitSoundEx(self.Sound_Ready) + self.Clients = {} + end + self.LastReady = ready + end + + if ready and self:IsEntrance() then + local pos = self:GetPos() + local teleported = false + + for _,v in pairs(self.Clients) do + v.removeme = true + end + + for _,pl in pairs(ents.FindInSphere(pos, 70)) do + if pl:IsTFPlayer() and self:IsFriendly(pl) and not pl:IsBuilding() then + if not self.Clients[pl] then + self.Clients[pl] = {starttime = CurTime()} + else + self.Clients[pl].removeme = nil + if not teleported and CurTime() - self.Clients[pl].starttime > self.TeleportDelay then + teleported = true + self.Clients[pl] = nil + self:Teleport(pl) + end + end + elseif pl:IsPlayer() and pl:GetPlayerClass() == "spy" and not pl:IsBuilding() and (pl:GetMoveType()==MOVETYPE_WALK or pl:GetMoveType()==MOVETYPE_STEP) then + if not self.Clients[pl] then + self.Clients[pl] = {starttime = CurTime()} + else + self.Clients[pl].removeme = nil + if not teleported and CurTime() - self.Clients[pl].starttime > self.TeleportDelay then + teleported = true + self.Clients[pl] = nil + self:Teleport(pl) + end + end + end + end + + for k,v in pairs(self.Clients) do + if v.removeme then + self.Clients[k] = nil + end + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/obj_teleporter/shared.lua b/gamemodes/tf/entities/entities/obj_teleporter/shared.lua new file mode 100644 index 000000000..0c1a2e3c1 --- /dev/null +++ b/gamemodes/tf/entities/entities/obj_teleporter/shared.lua @@ -0,0 +1,98 @@ + +ENT.Base = "obj_base" +ENT.Type = "ai" + +ENT.AutomaticFrameAdvance = true + +PrecacheParticleSystem("teleporter_arms_circle_red") +PrecacheParticleSystem("teleporter_red_charged_level1") +PrecacheParticleSystem("teleporter_red_charged_level2") +PrecacheParticleSystem("teleporter_red_charged_level3") +PrecacheParticleSystem("teleporter_red_entrance_level1") +PrecacheParticleSystem("teleporter_red_entrance_level2") +PrecacheParticleSystem("teleporter_red_entrance_level3") +PrecacheParticleSystem("teleporter_red_exit_level1") +PrecacheParticleSystem("teleporter_red_exit_level2") +PrecacheParticleSystem("teleporter_red_exit_level3") + +PrecacheParticleSystem("teleporter_arms_circle_blue") +PrecacheParticleSystem("teleporter_blue_charged_level1") +PrecacheParticleSystem("teleporter_blue_charged_level2") +PrecacheParticleSystem("teleporter_blue_charged_level3") +PrecacheParticleSystem("teleporter_blue_entrance_level1") +PrecacheParticleSystem("teleporter_blue_entrance_level2") +PrecacheParticleSystem("teleporter_blue_entrance_level3") +PrecacheParticleSystem("teleporter_blue_exit_level1") +PrecacheParticleSystem("teleporter_blue_exit_level2") +PrecacheParticleSystem("teleporter_blue_exit_level3") + +ENT.ObjectHealth = 150 + +ENT.Sound_Spin1 = Sound("Building_Teleporter.SpinLevel1") +ENT.Sound_Spin2 = Sound("Building_Teleporter.SpinLevel2") +ENT.Sound_Spin3 = Sound("Building_Teleporter.SpinLevel3") + +ENT.CollisionBox = {Vector(-24,-24,0), Vector(24,24,12)} +ENT.BuildHull = {Vector(-28,-28,0), Vector(28,28,95)} +ENT.Sapped = false +ENT.ObjectName = "#TF_Object_Tele" + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Entity", 2, "LinkedTeleporter") +end + +function ENT:GetTargetIDSubText() + local charge = self:GetChargePercentage() + local link = self:GetLinkedTeleporter() + + if not IsValid(link) then + return tf_lang.GetRaw("#TF_playerid_teleporter_entrance_nomatch") + elseif charge < 0 then + return tf_lang.GetFormatted("#TF_playerid_object_recharging", math.floor(charge * 100)) + else + return self.BaseClass.GetTargetIDSubText(self) + end +end + +function ENT:GetTargetIDName(nolocalize) + local name = self.ObjectName or GAMEMODE:EntityName(self) + return tf_lang.GetFormatted("#TF_playerid_object_mode", + tf_lang.GetRaw(self.ObjectName), + GAMEMODE:EntityName(self:GetBuilder()), + tf_lang.GetRaw(self:GetBuildingData().mode_name or "") + ) +end + +function ENT:IsEntrance() + return self:GetBuildMode() == 0 +end + +function ENT:IsExit() + return self:GetBuildMode() == 1 +end + +function ENT:IsReady() + local link = self:GetLinkedTeleporter() + if self:IsEntrance() then + return IsValid(link) and (self:GetChargePercentage() >= 1) + end +end + +function ENT:GetChargePercentage() + return self.dt.BuildingInfoFloat.y +end + +function ENT:SetChargePercentage(p) + local v = self.dt.BuildingInfoFloat + v.y = p + self.dt.BuildingInfoFloat = v +end + +function ENT:GetLinkedTeleporter() + return self.dt.LinkedTeleporter +end + +function ENT:SetLinkedTeleporter(e) + self.dt.LinkedTeleporter = e +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannoncore/cl_init.lua b/gamemodes/tf/entities/entities/physcannoncore/cl_init.lua new file mode 100644 index 000000000..221df8560 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannoncore/cl_init.lua @@ -0,0 +1,142 @@ +include('shared.lua') + +local Mat = Material( "sprites/blueflare1_noz" ) +Mat:SetInt("$spriterendermode",5) +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) +local Main = Material( "effects/fluttercore" ) +Main:SetInt("$spriterendermode",5) +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT --RENDERGROUP_BOTH + +function ENT:Initialize() +Mat:SetInt("$spriterendermode",5) +Main:SetInt("$spriterendermode",9) +MatWorld:SetInt("$spriterendermode",5) +end + +function ENT:Think() +self:Draw() +end + +function ENT:Draw() + local scale = math.Rand( 8, 10 ) + --local scale2 = math.Rand( 25, 27 ) + local scale2 = math.Rand( 20, 24 ) + local scale3 = math.Rand( 3, 4 ) + local scale7 = math.Rand( 12, 14 ) + if !IsValid(self) then return end + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and GetViewEntity() == Owner then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID2=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_O.Pos + + local attachmentID3=vm:LookupAttachment("fork2t") + local attachment_L = vm:GetAttachment( attachmentID3 ) + StartPosL = attachment_L.Pos + + local attachmentID4=vm:LookupAttachment("fork1b") + local attachment_OH = vm:GetAttachment( attachmentID4) + StartPosOH = attachment_OH.Pos + + local attachmentID5=vm:LookupAttachment("fork2b") + local attachment_LH = vm:GetAttachment( attachmentID5 ) + StartPosLH = attachment_LH.Pos + --if !IsValid(attachment) then return end + render.SetMaterial( Main ) + --render.DrawSprite( StartPos, scale2, scale2, Color(255,255,255,240)) + render.DrawSprite( StartPos, scale2, scale2, Color(255,255,255,90)) + --if !IsValid(attachment_O) then return end + render.SetMaterial( Mat ) + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + --if !IsValid(attachment_L) then return end + render.DrawSprite( StartPosL, scale, scale, Color(255,255,255,80)) + --if !IsValid(attachment_OH) then return end + render.DrawSprite( StartPosOH, scale, scale, Color(255,255,255,80)) + --if !IsValid(attachment_LH) then return end + render.DrawSprite( StartPosLH, scale, scale, Color(255,255,255,80)) + + + + elseif ( (!ViewModel) or GetViewEntity() != Owner ) then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + if GetViewEntity() == Owner then return end + + --if !IsValid(vm:LookupAttachment("core")) then return end + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + --if !IsValid(attachment.Pos) then return end + StartPos = attachment.Pos + + --if !IsValid(vm:LookupAttachment("fork1t")) then return end + local attachmentID2=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID2 ) + --if !IsValid(attachment_O.Pos) then return end + StartPosO = attachment_O.Pos + + --if !IsValid(vm:LookupAttachment("fork2t")) then return end + local attachmentID3=vm:LookupAttachment("fork2t") + local attachment_L = vm:GetAttachment( attachmentID3 ) + --if !IsValid(attachment_L.Pos) then return end + StartPosL = attachment_L.Pos + + --if !IsValid(vm:LookupAttachment("fork3t")) then return end + local attachmentID4=vm:LookupAttachment("fork3t") + local attachment_R = vm:GetAttachment( attachmentID4 ) + --if !IsValid(attachment_R.Pos) then return end + StartPosR = attachment_R.Pos + + --if !IsValid(vm:LookupAttachment("fork1m")) then return end + local attachmentID5=vm:LookupAttachment("fork1m") + local attachment_OH = vm:GetAttachment( attachmentID5 ) + --if !IsValid(attachment_OH.Pos) then return end + StartPosOH = attachment_OH.Pos + + --if !IsValid(vm:LookupAttachment("fork2m")) then return end + local attachmentID6=vm:LookupAttachment("fork2m") + local attachment_LH = vm:GetAttachment( attachmentID6 ) + --if !IsValid(attachment_LH.Pos) then return end + StartPosLH = attachment_LH.Pos + + --if !IsValid(vm:LookupAttachment("fork3m")) then return end + local attachmentID7=vm:LookupAttachment("fork3m") + local attachment_RH = vm:GetAttachment( attachmentID7 ) + --if !IsValid(attachment_RH.Pos) then return end + StartPosRH = attachment_RH.Pos + +-- render.SetMaterial( Main ) + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,240)) +-- render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,130)) +-- render.SetMaterial( MatWorld ) + render.DrawSprite( StartPosO, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosL, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosR, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosOH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosLH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosRH, scale3, scale3, Color(255,255,255,80)) end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannoncore/init.lua b/gamemodes/tf/entities/entities/physcannoncore/init.lua new file mode 100644 index 000000000..9f1848df1 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannoncore/init.lua @@ -0,0 +1,33 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + --[[if Owner:GetViewEntity():GetClass() != Owner:GetClass() then + Owner:SetNWBool( "SCGG_NotFirstPerson", true) + else + Owner:SetNWBool( "SCGG_NotFirstPerson", false) + end--]] + -- ^ This system of NW Bools is replaced with a direct check on the ViewEntities. + -- It is much faster and safer to directly check on the client than wait for a serversided boolean. + + if !Owner:Alive() or (IsValid(Owner:GetActiveWeapon()) and Owner:GetActiveWeapon():GetClass() != "weapon_superphyscannon") then + self.Entity:Remove() + --[[for k,v in pairs(player.GetAll()) do + v:ConCommand("stopsounds") -- fix for holdsound bug + end--]] + return end +end + diff --git a/gamemodes/tf/entities/entities/physcannoncore/shared.lua b/gamemodes/tf/entities/entities/physcannoncore/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannoncore/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannonfade/cl_init.lua b/gamemodes/tf/entities/entities/physcannonfade/cl_init.lua new file mode 100644 index 000000000..3862d3b23 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonfade/cl_init.lua @@ -0,0 +1,66 @@ +include('shared.lua') + +local Mat = Material( "effects/fluttercore" ) +Mat:SetInt("$spriterendermode",5) +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT --RENDERGROUP_BOTH + +function ENT:Initialize() +Mat:SetInt("$spriterendermode",5) +MatWorld:SetInt("$spriterendermode",5) +end + +function ENT:Think() +self:Draw() +end + +function ENT:Draw() + local scale1 = self.Entity:GetNWInt("scgg_size") + --local scale1 = math.Rand( 35, 37 ) + local scale7 = math.Rand( 18, 20 ) + local color = self.Entity:GetNWInt("scgg_color") + if !IsValid(self) then return end + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and Owner:GetNWBool("SCGG_NotFirstPerson") == false and Owner:Alive() then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + render.SetMaterial( Mat ) + render.DrawSprite( StartPos, scale1, scale1, Color(255,255,255,color)) + + + elseif ( (!ViewModel) or Owner:GetNWBool("SCGG_NotFirstPerson") == true ) and Owner:Alive() then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + + --if !IsValid(vm:LookupAttachment("core")) then return end + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + --if !IsValid(attachment.Pos) then return end + StartPos = attachment.Pos + + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,color)) + end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannonfade/init.lua b/gamemodes/tf/entities/entities/physcannonfade/init.lua new file mode 100644 index 000000000..5d898fbdc --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonfade/init.lua @@ -0,0 +1,45 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + self.Entity:SetNWInt("scgg_size", 25) + self.Entity:SetNWInt("scgg_color", 40) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + if Owner:GetViewEntity():GetClass() == "gmod_cameraprop" then + Owner:SetNWBool( "Camera", true) + else + Owner:SetNWBool( "Camera", false) + end + + if !Owner:Alive() then + self.Entity:Remove() + return end + + local color = self.Entity:GetNWInt("scgg_color") + if color < 203 then + local value = 30 + value = value + math.Rand( 2, 3 ) + self.Entity:SetNWInt("scgg_color", color+value) + end + local scale1 = self.Entity:GetNWInt("scgg_size") + if scale1 < 203 then + local value = 8 + value = value-6 + self.Entity:SetNWInt("scgg_size", scale1+value) + end + + self.Entity:NextThink( CurTime() + 0.01 ) +end + diff --git a/gamemodes/tf/entities/entities/physcannonfade/shared.lua b/gamemodes/tf/entities/entities/physcannonfade/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonfade/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannonglow/cl_init.lua b/gamemodes/tf/entities/entities/physcannonglow/cl_init.lua new file mode 100644 index 000000000..7b5e80213 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonglow/cl_init.lua @@ -0,0 +1,163 @@ +include('shared.lua') + +local Mat = Material( "sprites/blueflare1_noz" ) +Mat:SetInt("$spriterendermode",5) +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) +local Zap = Material( "sprites/physcannon_bluelight1b" ) +Zap:SetInt("$spriterendermode",5) +--local ZapWorld = Material( "sprites/bluelight1" ) +local ZapWorld = Material( "sprites/lgtning" ) +ZapWorld:SetInt("$spriterendermode",5) +local Main = Material( "effects/fluttercore" ) +Main:SetInt("$spriterendermode",5) +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +function ENT:Initialize() +Mat:SetInt("$spriterendermode",5) +Zap:SetInt("$spriterendermode",5) +ZapWorld:SetInt("$spriterendermode",5) +Main:SetInt("$spriterendermode",9) +MatWorld:SetInt("$spriterendermode",5) +end + +function ENT:Think() +end + +function ENT:Draw() + local scale = math.Rand( 8, 10 ) + --local scale3 = math.Rand( 3, 5 ) + local scale3 = math.Rand( 3, 4 ) + --local scale6 = math.Rand( 35, 37 ) + local scale6 = math.Rand( 28, 35 ) + local scale7 = math.Rand( 12, 14 ) + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and GetViewEntity() == Owner then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + + render.SetMaterial( Main ) + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + render.SetMaterial( Mat ) + local attachmentID0=vm:LookupAttachment("muzzle") + local attachment_R = vm:GetAttachment( attachmentID0 ) + StartPosR = attachment_R.Pos + + local attachmentID2=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_O.Pos + + local attachmentID3=vm:LookupAttachment("fork2t") + local attachment_L = vm:GetAttachment( attachmentID3 ) + StartPosL = attachment_L.Pos + + local attachmentID4=vm:LookupAttachment("fork1b") + local attachment_OH = vm:GetAttachment( attachmentID4) + StartPosOH = attachment_OH.Pos + + local attachmentID5=vm:LookupAttachment("fork2b") + local attachment_LH = vm:GetAttachment( attachmentID5 ) + StartPosLH = attachment_LH.Pos + + render.SetMaterial( Main ) + --render.DrawSprite( StartPos, scale6, scale6, Color(255,255,255,240)) + render.DrawSprite( StartPos, scale6, scale6, Color(255,255,255,80)) + render.SetMaterial( Mat ) + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,160)) + render.DrawSprite( StartPosL, scale, scale, Color(255,255,255,160)) + render.DrawSprite( StartPosOH, scale, scale, Color(255,255,255,80)) + render.DrawSprite( StartPosLH, scale, scale, Color(255,255,255,80)) + --render.DrawSprite( StartPos, 35, 35, Color(255,255,255,240)) + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.DrawSprite( StartPosL, scale, scale, Color(255,255,255,80)) + render.DrawSprite( StartPosOH, scale, scale, Color(255,255,255,80)) + render.DrawSprite( StartPosLH, scale, scale, Color(255,255,255,80)) + + elseif ( (!ViewModel) or GetViewEntity() != Owner ) then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID2=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_O.Pos + + local attachmentID3=vm:LookupAttachment("fork2t") + local attachment_L = vm:GetAttachment( attachmentID3 ) + StartPosL = attachment_L.Pos + + local attachmentID4=vm:LookupAttachment("fork3t") + local attachment_R = vm:GetAttachment( attachmentID4 ) + StartPosR = attachment_R.Pos + + local attachmentID5=vm:LookupAttachment("fork1m") + local attachment_OH = vm:GetAttachment( attachmentID5 ) + StartPosOH = attachment_OH.Pos + + local attachmentID6=vm:LookupAttachment("fork2m") + local attachment_LH = vm:GetAttachment( attachmentID6 ) + StartPosLH = attachment_LH.Pos + + local attachmentID7=vm:LookupAttachment("fork3m") + local attachment_RH = vm:GetAttachment( attachmentID7 ) + StartPosRH = attachment_RH.Pos + +-- render.SetMaterial( Main ) + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,120)) +-- render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,140)) +-- render.SetMaterial( MatWorld ) + render.DrawSprite( StartPosO, scale3, scale3, Color(255,255,255,160)) + render.DrawSprite( StartPosL, scale3, scale3, Color(255,255,255,160)) + render.DrawSprite( StartPosR, scale3, scale3, Color(255,255,255,160)) + render.DrawSprite( StartPosOH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosLH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosRH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,100)) + render.DrawSprite( StartPos, scale7, scale7, Color(255,255,255,240)) + render.DrawSprite( StartPosO, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosL, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosR, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosOH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosLH, scale3, scale3, Color(255,255,255,80)) + render.DrawSprite( StartPosRH, scale3, scale3, Color(255,255,255,80)) + end + + self.Length = (StartPosO - StartPos):Length() + self.Length2 = (StartPosL - StartPos):Length() + self.Length3 = (StartPosR - StartPos):Length() + + if ( ViewModel ) and GetViewEntity() == Owner then + render.SetMaterial( Zap ) + render.DrawBeam( StartPosO, StartPos, 5, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128, Color( 205, 255, 195, 195 ) ) + render.DrawBeam( StartPosL, StartPos, 5, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length2 / 128, Color( 205, 255, 195, 195 ) ) + render.DrawBeam( StartPosR, StartPos, 5, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length2 / 128, Color( 205, 255, 195, 195 ) ) + else + render.SetMaterial( ZapWorld ) + render.DrawBeam( StartPosO, StartPos, 2, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128, Color( 255, 255, 255, 255 ) ) + render.DrawBeam( StartPosL, StartPos, 2, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length2 / 128, Color( 255, 255, 255, 255 ) ) + render.DrawBeam( StartPosR, StartPos, 2, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length2 / 128, Color( 255, 255, 255, 255 ) ) + end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannonglow/init.lua b/gamemodes/tf/entities/entities/physcannonglow/init.lua new file mode 100644 index 000000000..c400259d1 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonglow/init.lua @@ -0,0 +1,33 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + --[[if Owner:GetViewEntity():GetClass() != Owner:GetClass() then + Owner:SetNWBool( "SCGG_NotFirstPerson", true) + else + Owner:SetNWBool( "SCGG_NotFirstPerson", false) + end--]] + -- ^ This system of NW Bools is replaced with a direct check on the ViewEntities. + -- It is much faster to directly check on the client than wait for a serversided boolean. + + if !Owner:Alive() or Owner:GetActiveWeapon():GetClass() != "weapon_superphyscannon" then + self.Entity:Remove() + --[[for k,v in pairs(player.GetAll()) do + v:ConCommand("stopsounds") --there is a better way to stop the holdingsound, but i cant figure it out somehow... + end--]] + return end +end + diff --git a/gamemodes/tf/entities/entities/physcannonglow/shared.lua b/gamemodes/tf/entities/entities/physcannonglow/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonglow/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannonmuzzle/cl_init.lua b/gamemodes/tf/entities/entities/physcannonmuzzle/cl_init.lua new file mode 100644 index 000000000..0da0cddb8 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonmuzzle/cl_init.lua @@ -0,0 +1,58 @@ +include('shared.lua') + +local Mat = Material( "sprites/blueflare1_noz" ) +Mat:SetInt("$spriterendermode",5) +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) + + +function ENT:Initialize() +Mat:SetInt("$spriterendermode",5) +end + +function ENT:Think() +end + +function ENT:Draw() + local scale4 = math.Rand( 45, 47 ) + local scale5 = math.Rand( 34, 36 ) + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and GetViewEntity() == Owner then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + render.SetMaterial( Mat ) + render.DrawSprite( StartPos, scale4, scale4, Color(255,255,255,240)) + + elseif ( (!ViewModel) or GetViewEntity() != Owner ) then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + if GetViewEntity() == Owner then return end + + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale5, scale5, Color(255,255,255,240)) + end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannonmuzzle/init.lua b/gamemodes/tf/entities/entities/physcannonmuzzle/init.lua new file mode 100644 index 000000000..aea42857a --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonmuzzle/init.lua @@ -0,0 +1,30 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + --[[if Owner:GetViewEntity():GetClass() != Owner:GetClass() then + Owner:SetNWBool( "SCGG_NotFirstPerson", true) + else + Owner:SetNWBool( "SCGG_NotFirstPerson", false) + end--]] + -- ^ This system of NW Bools is replaced with a direct check on the ViewEntities. + -- It is much faster to directly check on the client than wait for a serversided boolean. + + if !Owner:Alive() then + self.Entity:Remove() + return end +end + diff --git a/gamemodes/tf/entities/entities/physcannonmuzzle/shared.lua b/gamemodes/tf/entities/entities/physcannonmuzzle/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonmuzzle/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannonzap1/cl_init.lua b/gamemodes/tf/entities/entities/physcannonzap1/cl_init.lua new file mode 100644 index 000000000..e66fd1df0 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap1/cl_init.lua @@ -0,0 +1,95 @@ +include('shared.lua') + +local Zap = Material( "sprites/physcannon_bluelight1b" ) +Zap:SetInt("$spriterendermode",5) + +local ZapWorld = Material( "sprites/lgtning" ) +ZapWorld:SetInt("$spriterendermode",5) + +local Mat = Material( "sprites/blueflare1_noz" ) +Mat:SetInt("$spriterendermode",5) + +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +function ENT:Initialize() +Zap:SetInt("$spriterendermode",5) +ZapWorld:SetInt("$spriterendermode",5) +Mat:SetInt("$spriterendermode",5) +MatWorld:SetInt("$spriterendermode",5) +end + +function ENT:Think() +end + +function ENT:Draw() + local scale = math.Rand( 8, 10 ) + local scale2 = math.Rand( 25, 27 ) + local scale3 = math.Rand( 3, 5 ) + if !IsValid(self) then return end + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and GetViewEntity() == Owner then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + if !IsValid(self) then return end + + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID5=vm:LookupAttachment("fork2t") + local attachment_LH = vm:GetAttachment( attachmentID5 ) + StartPosO = attachment_LH.Pos + + render.SetMaterial( Mat ) + self.Length = (StartPosO - StartPos):Length() + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.SetMaterial( Zap ) + + render.DrawBeam( StartPosO, StartPos, 3, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128 , Color( 255, 255, 255, 195 ) ) + + elseif ( (!ViewModel) or GetViewEntity() != Owner ) then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !IsValid(vm) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + if !IsValid(self) then return end + + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID2=vm:LookupAttachment("fork2t") + local attachment_LH = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_LH.Pos + + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale3, scale3, Color(255,255,255,240)) + --local scale = math.Rand( 8, 10 ) + --local scale2 = math.Rand( 25, 27 ) + --local scale3 = math.Rand( 3, 5 ) + render.SetMaterial( MatWorld ) + self.Length = (StartPosO - StartPos):Length() + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.SetMaterial( ZapWorld ) + + render.DrawBeam( StartPosO, StartPos, 3, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128 , Color( 255, 255, 255, 255 ) ) + end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannonzap1/init.lua b/gamemodes/tf/entities/entities/physcannonzap1/init.lua new file mode 100644 index 000000000..6d00e070e --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap1/init.lua @@ -0,0 +1,30 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + self.Entity:EmitSound("Weapon_MegaPhysCannon.ChargeZap") + timer.Simple( math.Rand(0.1,0.3), function() if IsValid(self.Entity) then self.Entity:Remove() end end ) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + if Owner:GetViewEntity():GetClass() != Owner:GetClass() then + Owner:SetNWBool( "SCGG_NotFirstPerson", true) + else + Owner:SetNWBool( "SCGG_NotFirstPerson", false) + end + + if !Owner:Alive() then + self.Entity:Remove() + return end +end + diff --git a/gamemodes/tf/entities/entities/physcannonzap1/shared.lua b/gamemodes/tf/entities/entities/physcannonzap1/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap1/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannonzap2/cl_init.lua b/gamemodes/tf/entities/entities/physcannonzap2/cl_init.lua new file mode 100644 index 000000000..ee20c7184 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap2/cl_init.lua @@ -0,0 +1,95 @@ +include('shared.lua') + +local Zap = Material( "sprites/physcannon_bluelight1b" ) +Zap:SetInt("$spriterendermode",5) + +local ZapWorld = Material( "sprites/lgtning" ) +ZapWorld:SetInt("$spriterendermode",5) + +local Mat = Material( "sprites/blueflare1_noz" ) +Mat:SetInt("$spriterendermode",5) + +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +function ENT:Initialize() +Zap:SetInt("$spriterendermode",5) +ZapWorld:SetInt("$spriterendermode",5) +Mat:SetInt("$spriterendermode",5) +MatWorld:SetInt("$spriterendermode",5) +end + +function ENT:Think() +end + +function ENT:Draw() + local scale = math.Rand( 8, 10 ) + local scale2 = math.Rand( 25, 27 ) + local scale3 = math.Rand( 3, 5 ) + if !IsValid(self) then return end + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and GetViewEntity() == Owner then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + if !IsValid(self) then return end + + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID5=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID5 ) + StartPosO = attachment_O.Pos + + render.SetMaterial( Mat ) + self.Length = (StartPosO - StartPos):Length() + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.SetMaterial( Zap ) + + render.DrawBeam( StartPosO, StartPos, 3, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128 , Color( 255, 255, 255, 195 ) ) + + elseif ( (!ViewModel) or GetViewEntity() != Owner ) then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !IsValid(vm) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + if !IsValid(self) then return end + + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID2=vm:LookupAttachment("fork1t") + local attachment_O = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_O.Pos + + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale3, scale3, Color(255,255,255,240)) + --local scale = math.Rand( 8, 10 ) + --local scale2 = math.Rand( 25, 27 ) + --local scale3 = math.Rand( 3, 5 ) + render.SetMaterial( MatWorld ) + self.Length = (StartPosO - StartPos):Length() + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.SetMaterial( ZapWorld ) + + render.DrawBeam( StartPosO, StartPos, 3, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128 , Color( 255, 255, 255, 255 ) ) + end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannonzap2/init.lua b/gamemodes/tf/entities/entities/physcannonzap2/init.lua new file mode 100644 index 000000000..6d00e070e --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap2/init.lua @@ -0,0 +1,30 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + self.Entity:EmitSound("Weapon_MegaPhysCannon.ChargeZap") + timer.Simple( math.Rand(0.1,0.3), function() if IsValid(self.Entity) then self.Entity:Remove() end end ) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + if Owner:GetViewEntity():GetClass() != Owner:GetClass() then + Owner:SetNWBool( "SCGG_NotFirstPerson", true) + else + Owner:SetNWBool( "SCGG_NotFirstPerson", false) + end + + if !Owner:Alive() then + self.Entity:Remove() + return end +end + diff --git a/gamemodes/tf/entities/entities/physcannonzap2/shared.lua b/gamemodes/tf/entities/entities/physcannonzap2/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap2/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/physcannonzap3/cl_init.lua b/gamemodes/tf/entities/entities/physcannonzap3/cl_init.lua new file mode 100644 index 000000000..f694e1ac6 --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap3/cl_init.lua @@ -0,0 +1,95 @@ +include('shared.lua') + +local Zap = Material( "sprites/physcannon_bluelight1b" ) +Zap:SetInt("$spriterendermode",5) + +local ZapWorld = Material( "sprites/lgtning" ) +ZapWorld:SetInt("$spriterendermode",5) + +local Mat = Material( "sprites/blueflare1_noz" ) +Mat:SetInt("$spriterendermode",5) + +local MatWorld = Material( "sprites/blueflare1" ) +MatWorld:SetInt("$spriterendermode",5) + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +function ENT:Initialize() +Zap:SetInt("$spriterendermode",5) +ZapWorld:SetInt("$spriterendermode",5) +Mat:SetInt("$spriterendermode",5) +MatWorld:SetInt("$spriterendermode",5) +end + +function ENT:Think() +end + +function ENT:Draw() + local scale = math.Rand( 8, 10 ) + local scale2 = math.Rand( 25, 27 ) + local scale3 = math.Rand( 3, 5 ) + if !IsValid(self) then return end + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local ViewModel = Owner == LocalPlayer() + + if ( ViewModel ) and GetViewEntity() == Owner then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + if !Owner:Alive() then return end + if IsValid(Owner:GetActiveWeapon()) then + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + end + if !IsValid(self) then return end + + local attachmentID=vm:LookupAttachment("muzzle") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID5=vm:LookupAttachment("muzzle") + local attachment_LH = vm:GetAttachment( attachmentID5 ) + StartPosO = attachment_LH.Pos + + render.SetMaterial( Mat ) + self.Length = (StartPosO - StartPos):Length() + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.SetMaterial( Zap ) + + render.DrawBeam( StartPosO, StartPos, 3, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128 , Color( 255, 255, 255, 195 ) ) + + elseif ( (!ViewModel) or GetViewEntity() != Owner ) then + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + if !IsValid(vm) then return end + if !Owner:Alive() then return end + if not ( Owner:GetActiveWeapon():GetClass() == "weapon_superphyscannon" ) then return end + if !IsValid(self) then return end + + local attachmentID=vm:LookupAttachment("core") + local attachment = vm:GetAttachment(attachmentID) + StartPos = attachment.Pos + + local attachmentID2=vm:LookupAttachment("fork3t") + local attachment_LH = vm:GetAttachment( attachmentID2 ) + StartPosO = attachment_LH.Pos + + render.SetMaterial( MatWorld ) + render.DrawSprite( StartPos, scale3, scale3, Color(255,255,255,240)) + --local scale = math.Rand( 8, 10 ) + --local scale2 = math.Rand( 25, 27 ) + --local scale3 = math.Rand( 3, 5 ) + render.SetMaterial( MatWorld ) + self.Length = (StartPosO - StartPos):Length() + render.DrawSprite( StartPosO, scale, scale, Color(255,255,255,80)) + render.SetMaterial( ZapWorld ) + + render.DrawBeam( StartPosO, StartPos, 3, math.Rand( 0, 1 ), math.Rand( 0, 1 ) + self.Length / 128 , Color( 255, 255, 255, 255 ) ) + end +end + +function ENT:IsTranslucent() + return true +end diff --git a/gamemodes/tf/entities/entities/physcannonzap3/init.lua b/gamemodes/tf/entities/entities/physcannonzap3/init.lua new file mode 100644 index 000000000..6d00e070e --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap3/init.lua @@ -0,0 +1,30 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) + self.Entity:EmitSound("Weapon_MegaPhysCannon.ChargeZap") + timer.Simple( math.Rand(0.1,0.3), function() if IsValid(self.Entity) then self.Entity:Remove() end end ) + +end + +function ENT:Think() + local Owner = self.Entity:GetOwner() + if !IsValid(Owner) then self.Entity:Remove() return end + + if Owner:GetViewEntity():GetClass() != Owner:GetClass() then + Owner:SetNWBool( "SCGG_NotFirstPerson", true) + else + Owner:SetNWBool( "SCGG_NotFirstPerson", false) + end + + if !Owner:Alive() then + self.Entity:Remove() + return end +end + diff --git a/gamemodes/tf/entities/entities/physcannonzap3/shared.lua b/gamemodes/tf/entities/entities/physcannonzap3/shared.lua new file mode 100644 index 000000000..97c647d3c --- /dev/null +++ b/gamemodes/tf/entities/entities/physcannonzap3/shared.lua @@ -0,0 +1 @@ +ENT.Type = "anim" \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/point_changelevel.lua b/gamemodes/tf/entities/entities/point_changelevel.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/point_changelevel.lua rename to gamemodes/tf/entities/entities/point_changelevel.lua diff --git a/addon/gamemodes/teamfortress/entities/entities/point_changelevel_extra.lua b/gamemodes/tf/entities/entities/point_changelevel_extra.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/point_changelevel_extra.lua rename to gamemodes/tf/entities/entities/point_changelevel_extra.lua diff --git a/addon/gamemodes/teamfortress/entities/entities/point_hl2cteleport.lua b/gamemodes/tf/entities/entities/point_hl2cteleport.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/point_hl2cteleport.lua rename to gamemodes/tf/entities/entities/point_hl2cteleport.lua diff --git a/gamemodes/tf/entities/entities/prop_ceda_jar/shared.lua b/gamemodes/tf/entities/entities/prop_ceda_jar/shared.lua new file mode 100644 index 000000000..9f3e91699 --- /dev/null +++ b/gamemodes/tf/entities/entities/prop_ceda_jar/shared.lua @@ -0,0 +1,226 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("peejar_trail_red") +PrecacheParticleSystem("peejar_trail_blu") +PrecacheParticleSystem("critical_grenade_red") +PrecacheParticleSystem("critical_grenade_blue") +PrecacheParticleSystem("peejar_impact") +PrecacheParticleSystem("peejar_impact_milk") +PrecacheParticleSystem("peejar_impact_small") + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/w_models/weapons/w_eq_bile_flask.mdl" +ENT.Model2 = "models/w_models/weapons/w_eq_bile_flask.mdl" + +ENT.Explosive = true +ENT.NoSelfDamage = true +--ENT.NoMiniCrits = true +ENT.ZeroDamageCrits = true +ENT.ExplosionSound = Sound("CedaJar.Explode") +ENT.OwnerDamage = 0 + +ENT.Trail = {"peejar_trail_red", "peejar_trail_blu"} + +ENT.Mass = 10 + +local bugbait_radius = GetConVar("bugbait_radius") +local bugbait_hear_radius = GetConVar("bugbait_hear_radius") +local bugbait_distract_time = GetConVar("bugbait_distract_time") +local bugbait_grenade_radius = GetConVar("bugbait_grenade_radius") + +function ENT:DoSpecialDamage(ent, dmginfo) + local att = dmginfo:GetAttacker() + + dmginfo:SetDamage(0) + dmginfo:SetDamageType(DMG_GENERIC) + + if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then + + if (!ent:HasPlayerState(PLAYERSTATE_PUKEDON)) then + if (ent:IsPlayer()) then + if SERVER then + ent:SendLua("LocalPlayer():EmitSound('Event.VomitInTheFace')") + end + end + ent:AddPlayerState(PLAYERSTATE_PUKEDON, true) + end + timer.Simple(15, function() + if (ent:HasPlayerState(PLAYERSTATE_PUKEDON)) then + ent:RemovePlayerState(PLAYERSTATE_PUKEDON, false) + end + end) + + if ent:IsPlayer() then + -- Jarate? NOOOOOOOOOOOOOOOOOOOOOO!!!! + ent:Speak("TLK_JARATE_HIT") + elseif ent:GetClass()=="npc_combine_s" then + ent:Fire("HitByBugbait", "", math.Rand(0, 0.5)) + end + + -- Since this doesn't actually cause damage, we are adding a cooperation here + -- TODO: code high priority cooperations that remain as long as the effect doesn't wear off + GAMEMODE:AddDamageCooperation(ent, att, 1, ASSIST_JARATE, 10) + end +end + +function ENT:Critical(ent, dmginfo) + return ent~=self:GetOwner() and self.critical +end + +function ENT:Initialize() + if self.JarType == 2 then + self:SetModel(self.Model2) + self:SetSkin(2) + else + self:SetModel(self.Model) + end + + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_CUSTOM) + self:SetHealth(1) + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + + local phys = self:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + phys:SetMass(self.Mass) + phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + local trail = self.Trail[self:GetOwner():EntityTeam()] or self.Trail[1] + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name",trail) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_grenade_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:BugbaitTouch(owner) + self:ActivateBugbaitTargets(owner) + -- Alert any antlions around + local bugbait_sound = ents.Create("ai_sound") + bugbait_sound:SetPos(self:GetPos()) + bugbait_sound:SetKeyValue("volume", bugbait_hear_radius:GetInt()) + bugbait_sound:SetKeyValue("duration", bugbait_distract_time:GetFloat()) + bugbait_sound:SetKeyValue("soundtype", "512") + bugbait_sound:Spawn() + bugbait_sound:Activate() + bugbait_sound:Fire("EmitAISound", "", 0) + bugbait_sound:Fire("Kill", "", 5) + + --[[ Tell all spawners to now fight to this position + g_AntlionMakerManager.BroadcastFightGoal( GetAbsOrigin() );]] +end + +-- Direct port from CGrenadeBugBait::ActivateBugbaitTargets +function ENT:ActivateBugbaitTargets(owner) + --[[ + -- Iterate over all sensors to see if they detected this impact + for _,v in pairs(ents.FindByClass("point_bugbait")) do + -- Make sure we're within range of the sensor + local r = v:GetKeyValues().radius + if r and r > v:GetPos():Distance(self:GetPos()) then + -- Tell the sensor it's been hit + end + end]] + + -- oh fuck this shit +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + sound.Play(self.ExplosionSound, self:GetPos()) + + --[[local effect = "peejar_impact" + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.1)]] + + local flags + if self.JarType == 2 then + flags = 16 + else + flags = 4 + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range, damage + range = 180 + self.BaseDamage = 1 + self.OwnerDamage = 0 + self.ResultDamage = self.BaseDamage + + self.CalculatedDamage = 0 + -- Yes, I'm using blast damage because it has a complex algorithm that allows explosive damage to get around walls with a certain limit + -- A simple FindInSphere wouldn't be enough since players would be able to get jarated through a wall + util.BlastDamage(self, owner, self:GetPos(), range*1, self.BaseDamage) + self:BugbaitTouch(owner) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + self:DoExplosion() +end + +end diff --git a/addon/gamemodes/teamfortress/entities/entities/prop_tfplayerstart/shared.lua b/gamemodes/tf/entities/entities/prop_tfplayerstart/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/prop_tfplayerstart/shared.lua rename to gamemodes/tf/entities/entities/prop_tfplayerstart/shared.lua diff --git a/gamemodes/tf/entities/entities/reviver/init.lua b/gamemodes/tf/entities/entities/reviver/init.lua new file mode 100644 index 000000000..cc14bcdc1 --- /dev/null +++ b/gamemodes/tf/entities/entities/reviver/init.lua @@ -0,0 +1,51 @@ +include("shared.lua") +AddCSLuaFile("shared.lua") + +ENT.Model = "models/props_mvm/mvm_revive_tombstone.mdl" + +function ENT:Think() + self:NextThink(CurTime()) + local ply = self:GetOwner() + self:SetMaxHealth(95) + self:SetNWInt("Team", ply:Team()) + if ply:Alive() then + self:Remove() + end + return true +end + + +function ENT:Initialize() + self:SetSolid(SOLID_BBOX) + self:EmitSound("ui/medic_alert.wav", 95, 100) + self:SetModel(self.Model) + ParticleEffect("speech_revivecall", self:GetPos() + Vector(0, 0, 90), self:GetAngles()) + self:ResetSequence( "idle" ) + self:SetPlaybackRate( 1 ) + self:FrameAdvance() + local ply = self:GetOwner() + + self:SetPos(self:GetOwner():GetPos()) + if ply:GetPlayerClass() == "soldier" then + self:SetBodygroup(1, 2) + elseif ply:GetPlayerClass() == "pyro" then + self:SetBodygroup(1, 6) + elseif ply:GetPlayerClass() == "demoman" then + self:SetBodygroup(1, 3) + elseif ply:GetPlayerClass() == "heavy" then + self:SetBodygroup(1, 5) + elseif ply:GetPlayerClass() == "engineer" then + self:SetBodygroup(1, 8) + elseif ply:GetPlayerClass() == "medic" then + self:SetBodygroup(1, 4) + elseif ply:GetPlayerClass() == "sniper" then + self:SetBodygroup(1, 1) + elseif ply:GetPlayerClass() == "spy" then + self:SetBodygroup(1, 7) + end + + + self:SetNoDraw(false) + self:SetCollisionGroup( COLLISION_GROUP_PLAYER ) + self:SetNWInt( 'Health', 50 ) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/reviver/shared.lua b/gamemodes/tf/entities/entities/reviver/shared.lua new file mode 100644 index 000000000..3f8bba133 --- /dev/null +++ b/gamemodes/tf/entities/entities/reviver/shared.lua @@ -0,0 +1,25 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.IsReviveMark = true +ENT.AutomaticFrameAdvance = true + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Initialize() + self:AddEffects(EF_NOINTERP) + self.NextRemoveNoInterp = CurTime() + 0.5 +end + +function ENT:Draw() + self:DrawModel() + + if self.LastDrawn then + self:FrameAdvance(CurTime() - self.LastDrawn) + end + self.LastDrawn = CurTime() +end + +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/sniper_dot/shared.lua b/gamemodes/tf/entities/entities/sniper_dot/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/sniper_dot/shared.lua rename to gamemodes/tf/entities/entities/sniper_dot/shared.lua diff --git a/gamemodes/tf/entities/entities/tank_boss.lua b/gamemodes/tf/entities/entities/tank_boss.lua new file mode 100644 index 000000000..42ee02be1 --- /dev/null +++ b/gamemodes/tf/entities/entities/tank_boss.lua @@ -0,0 +1,364 @@ +AddCSLuaFile() + +sound.Add( { + name = "BossCart.Drive", + channel = CHAN_BODY, + volume = 1.0, + level = 95, + pitch = {100}, + sound = { + "ambience/tankdrivein1.wav", + "ambience/tankdrivein2.wav" + } +} ) + +PrecacheParticleSystem( "halloween_boss_summon" ); +PrecacheParticleSystem( "halloween_boss_axe_hit_world" ); +PrecacheParticleSystem( "halloween_boss_injured" ); +PrecacheParticleSystem( "halloween_boss_death" ); +PrecacheParticleSystem( "halloween_boss_foot_impact" ); +PrecacheParticleSystem( "halloween_boss_eye_glow" ); +ENT.Base = "base_nextbot" +ENT.Spawnable = false +ENT.AttackDelay = 50 +ENT.AttackDamage = 30 +ENT.AttackRange = 2500 +ENT.item1AttackDelay2 = CurTime() + 1.1 +ENT.CrybabyMode = false +function ENT:Initialize() + + if CLIENT then + + killicon.Add( "headtaker", "backpack/weapons/c_models/c_headtaker/c_headtaker", Color( 255, 255, 255, 255 ) ) + + end + self:SetModel( "models/bots/boss_bot/boss_tank.mdl" ) + self:AddFlags(FL_OBJECT) + if SERVER then + local axe = ents.Create("gmod_button") + axe:SetModel("models/bots/boss_bot/tank_track_l.mdl") + axe:SetPos(self:GetPos()) + axe:SetAngles(self:GetAngles()) + axe:SetParent(self) + axe:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + axe:SetSequence("forward") + axe:SetPlaybackRate(1) + local axe2 = ents.Create("gmod_button") + axe2:SetModel("models/bots/boss_bot/tank_track_r.mdl") + axe2:SetPos(self:GetPos()) + axe2:SetAngles(self:GetAngles()) + axe2:SetParent(self) + axe2:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + axe2:SetSequence("forward") + axe2:SetPlaybackRate(1) + local axe3 = ents.Create("gmod_button") + axe3:SetModel("models/bots/boss_bot/bomb_mechanism.mdl") + axe3:SetPos(self:GetPos()) + axe3:SetAngles(self:GetAngles()) + axe3:SetParent(self) + axe3:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + end + local seq = "spawn" + if SERVER then + self:EmitSound("MVM.TankEngineLoop") + self:EmitSound("MVM.TankStart") + timer.Create("TankPing"..self:EntIndex(), 5, 0, function() + self:EmitSound("MVM.TankPing") + end) + end + self.Ready = false + self.LoseTargetDist = 5400 -- How far the enemy has to be before we lose them + self.SearchRadius = 4000 -- How far to search for enemies + self:SetHealth(30000) + self:SetSolid(SOLID_BBOX) + self:SetCollisionBounds(Vector(-100,-100,0),Vector(100,100,140)) + self:ResetSequence("movement") + + if SERVER then + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_Tank_Alert_Spawn") + umsg.End() + ParticleEffectAttach( "smoke_train", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("smoke_attachment") ); + self:SetBloodColor(DONT_BLEED) + end +end +function ENT:GetAxe() + return self:GetNWEntity("Axe") +end +function ENT:OnRemove() + if (IsValid(self.bullseye)) then + self.bullseye:Remove() + end + self:StopSound("MVM.TankEngineLoop") + self:StopSound("MVM.TankPing") + for k,v in ipairs(player.GetAll()) do + if (v.IsITFromHHH) then + v:RemovePlayerState(PLAYERSTATE_MARKED) + v.IsITFromHHH = false + end + end +end + +function ENT:FireAnimationEvent( pos, ang, event, name ) + if (event == 6004 or event == 7001) then + timer.Simple(0.01, function() + self:EmitSound("MVM.GiantScoutStep") + end) + end +end +---------------------------------------------------- +-- ENT:Get/SetEnemy() +-- Simple functions used in keeping our enemy saved +---------------------------------------------------- +function ENT:SetEnemy(ent) + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self.Enemy = ent +end +function ENT:GetEnemy() + return self.Enemy +end + +hook.Add("PlayerDeath","RemoveITOnPlayerDeath",function(ply,inflictor,attacker) + if (ply.IsITFromHHH) then + ply.IsITFromHHH = false + end +end) +hook.Add("EntityTakeDamage","RemoveITFromitem1Hit",function(target,dmginfo) + local att = dmginfo:GetAttacker() + if (target:IsTFPlayer() and !target:IsNextBot() and (dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH)) and att.IsITFromHHH) then + att:RemovePlayerState(PLAYERSTATE_MARKED) + att.IsITFromHHH = false + for k,v in ipairs(ents.FindByClass("boss_cart")) do + if (IsValid(v)) then + v:SetEnemy(target) + end + end + end +end) + +---------------------------------------------------- +-- ENT:HaveEnemy() +-- Returns true if we have a enemy +---------------------------------------------------- +function ENT:HaveEnemy() + -- If our current enemy is valid + if ( self:GetEnemy() and IsValid(self:GetEnemy()) ) then + -- If the enemy is too far + if ( self:GetRangeTo(self:GetEnemy():GetPos()) > self.LoseTargetDist ) then + -- If the enemy is lost then call FindEnemy() to look for a new one + -- FindEnemy() will return true if an enemy is found, making this function return true + if (self:GetEnemy():IsPlayer()) then + self:GetEnemy():RemovePlayerState(PLAYERSTATE_MARKED) + self:GetEnemy().IsITFromHHH = false + end + return self:FindEnemy() + -- If the enemy is dead( we have to check if its a player before we use Alive() ) + elseif ( self:GetEnemy():IsTFPlayer() and (GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_SPECTATOR or GAMEMODE:EntityTeam(self:GetEnemy()) == TEAM_FRIENDLY or self:GetEnemy():Health() < 1 or self:GetEnemy():IsFlagSet(FL_NOTARGET)) ) then + return self:FindEnemy() -- Return false if the search finds nothing + end + -- The enemy is neither too far nor too dead so we can return true + return true + else + -- The enemy isn't valid so lets look for a new one + return self:FindEnemy() + end +end + +---------------------------------------------------- +-- ENT:FindEnemy() +-- Returns true and sets our enemy if we find one +---------------------------------------------------- +function ENT:FindEnemy() + if not self.Ready then return false end + -- Search around us for entities + -- This can be done any way you want eg. ents.FindInCone() to replicate eyesight + --[[ + local _ents = ents.FindInSphere( self:GetPos(), self.SearchRadius ) + -- Here we loop through every entity the above search finds and see if it's the one we want + for k,v in ipairs( _ents ) do + if ( ( v:IsTFPlayer() and !v:IsNextBot()) and GAMEMODE:EntityTeam(v) != TEAM_SPECTATOR and GAMEMODE:EntityTeam(v) != TEAM_FRIENDLY and v:Health() > 1 and !v:IsFlagSet(FL_NOTARGET) ) then + if SERVER then + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + end + -- We found one so lets set it as our enemy and return true + self:SetEnemy(v) + if (v:IsNPC()) then + v:SetEnemy(self.bullseye) + elseif (v:IsNextBot()) then + v:SetEnemy(self) + end + //self:EmitSound("BossCart.Drive") + if (v:IsPlayer() and !v.IsITFromHHH) then + v.IsITFromHHH = true + end + //v:AddPlayerState(PLAYERSTATE_MARKED) + return true + end + end]] + -- We found nothing so we will set our enemy as nil (nothing) and return false + if (self.CrybabyMode) then + self.CrybabyMode = false + end + self:SetEnemy(nil) + return false +end + +---------------------------------------------------- +-- ENT:RunBehaviour() +-- This is where the meat of our AI is +---------------------------------------------------- +function ENT:RunBehaviour() + while (true) do + for k,v in ipairs(ents.FindByClass("func_capturezone")) do + if (v.TeamNum == TEAM_BLU) then + if (self:GetPos():Distance(v.Pos) > 200) then + self:ChaseEnemy({},v.Pos) + end + end + end + coroutine.yield() + end + +end + +---------------------------------------------------- +-- ENT:ChaseEnemy() +-- Works similarly to Garry's MoveToPos function +-- except it will constantly follow the +-- position of the enemy until there no longer +-- is one. +---------------------------------------------------- +function ENT:Think() + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + local targetheadpos,targetheadang = self:GetEnemy():GetBonePosition(1) -- Get the position/angle of the head. + self.EyeAngle = (targetheadpos - self:EyePos()):Angle() -- And finally, we snap our aim to the head of the target. + end + if (SERVER and !self:HaveEnemy()) then + self.EyeAngle = self:EyeAngles() + end + if (IsValid(self:GetEnemy()) and self.Ready) then + if (math.random(1,1800) == 1) then + self.CrybabyMode = true + end + end + if (IsValid(self.Path) and self:GetPos():Distance(self.Path:GetPos()) < 200) then + if (!self.Path.Passed) then + self.Path:Fire("inpass","",0) + self.Path.Passed = true + end + end + + for k,v in ipairs(ents.FindByClass("func_capturezone")) do + if (v.TeamNum == TEAM_BLU) then + if (self:GetPos():Distance(v.Pos) < 200) then + if (!self.IsDeployingBomb) then + self:ResetSequence("deploy") + self:StopSound("MVM.TankEngineLoop") + self:EmitSound("MVM.TankDeploy") + + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_Tank_Alert_Deploying") + umsg.End() + end + end + end + end + self:NextThink(CurTime()) + return true +end + +function ENT:HandleStuck() +end + +function ENT:ChaseEnemy( options, pos ) + + local options = options or {} + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, pos ) -- Compute the path towards the enemies position + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() ) do + + self.loco:SetDesiredSpeed(80) + + if ( path:GetAge() > 0.1 ) then -- Since we are following the player we have to constantly remake the path + path:Compute(self, pos)-- Compute the path towards the enemy's position again + end + path:Update( self ) -- This function moves the bot along the path + + if ( options.draw ) then path:Draw() end + -- If we're stuck, then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + self:HandleStuck() + return "stuck" + end + + coroutine.yield() + + end + + return "ok" + +end +function ENT:OnInjured( dmginfo ) + if (dmginfo:IsDamageType(DMG_BULLET)) then + ParticleEffect( "bot_impact_light", dmginfo:GetDamagePosition(), self:GetAngles() ) + self:EmitSound("MVM_Tank.BulletImpact") + end +end +function ENT:OnKilled( dmginfo ) + + hook.Call( "OnNPCKilled", GAMEMODE, self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + self.Ready = false + self:EmitSound("MVM.TankExplodes") + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + if SERVER then + + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_General_Destruction") + umsg.End() + + end + timer.Simple(0.1, function() + + if (!IsValid(self)) then return end + + local pos = self:GetPos() + self:Remove() + + end) +end + +list.Set( "NPC", "tank_boss", { + Name = "Tank", + Class = "tank_boss", + Category = "TFBots: MVM", + AdminOnly = true +}) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/team_control_point/cl_init.lua b/gamemodes/tf/entities/entities/team_control_point/cl_init.lua new file mode 100644 index 000000000..7f6e47607 --- /dev/null +++ b/gamemodes/tf/entities/entities/team_control_point/cl_init.lua @@ -0,0 +1,165 @@ +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +local function UpdateControlPointTexture(cp) + local str + if cp.locked then str = "tex_icon_locked_" + else str = "tex_icon_" + end + + cp.tex_icon = cp[str..cp.owner] or cp[str.."0"] + cp.tex_overlay = cp["tex_overlay_"..cp.owner] or cp["tex_overlay_0"] +end + +local function GetTextureID(tex) + if tex=="" then + return -1 + else + return surface.GetTextureID(tex) + end +end + +usermessage.Hook("TF_SetControlPointLayout", function(msg) + local str = msg:ReadString() + local y = 1 + local m = {{}} + + str=string.gsub(str, "(%S),", "%1 ,") + str=string.gsub(str, ",(%S)", ", %1") + for n in string.gmatch(str, "[0-9,]+") do + if tonumber(n) then + table.insert(m[y], tonumber(n)+1) + else + y = y+1 + m[y] = {} + end + end + + GAMEMODE.ControlPointLayout = m + + for _,v in ipairs(m) do + for _,n in ipairs(v) do + Msg(n.." ") + end + Msg("\n") + end +end) + +usermessage.Hook("TF_AddControlPoint", function(msg) + if not GAMEMODE.ControlPoints then GAMEMODE.ControlPoints = {} end + + local id = msg:ReadChar() + local cp = {} + + cp.name = msg:ReadString() + + cp.icon_neutral = msg:ReadString() + cp.icon_red = msg:ReadString() + cp.icon_blu = msg:ReadString() + cp.tex_icon_0 = GetTextureID(cp.icon_neutral) + cp.tex_icon_2 = GetTextureID(cp.icon_red) + cp.tex_icon_3 = GetTextureID(cp.icon_blu) + cp.tex_icon_locked_0 = GetTextureID(cp.icon_neutral.."_locked") + cp.tex_icon_locked_2 = GetTextureID(cp.icon_red.."_locked") + cp.tex_icon_locked_3 = GetTextureID(cp.icon_blu.."_locked") + + cp.overlay_neutral = msg:ReadString() + cp.overlay_red = msg:ReadString() + cp.overlay_blu = msg:ReadString() + cp.tex_overlay_0 = GetTextureID(cp.overlay_neutral) + cp.tex_overlay_2 = GetTextureID(cp.overlay_red) + cp.tex_overlay_3 = GetTextureID(cp.overlay_blu) + + cp.owner = msg:ReadChar() + cp.locked = false + + UpdateControlPointTexture(cp) + + --MsgN("Control point "..id) + PrintTable(cp) + + GAMEMODE.ControlPoints[id] = cp +end) + +usermessage.Hook("TF_SetControlPointTeam", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.owner = msg:ReadFloat() + + UpdateControlPointTexture(cp) +end) + +usermessage.Hook("TF_LockControlPoint", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.locked = true + UpdateControlPointTexture(cp) +end) +usermessage.Hook("TF_UnLockControlPoint", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.locked = false + UpdateControlPointTexture(cp) +end) + +usermessage.Hook("TF_OpenControlPoint", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.locked = false + UpdateControlPointTexture(cp) +end) + +usermessage.Hook("TF_EnterControlPoint", function(msg) + LocalPlayer().CurrentControlPoint = msg:ReadChar() +end) + +usermessage.Hook("TF_ExitControlPoint", function(msg) + LocalPlayer().CurrentControlPoint = -1 +end) + +usermessage.Hook("TF_SetAndResumeTimer", function(msg) + GAMEMODE.RoundTimeReference = msg:ReadFloat() + + local t = msg:ReadFloat() + if t>0 then GAMEMODE.MaxRoundTime = t end + + GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() + GAMEMODE.RoundTimeLastUpdated = CurTime() + GAMEMODE.RoundTimePaused = nil +end) + +usermessage.Hook("TF_SetAndPauseTimer", function(msg) + GAMEMODE.RoundTimePaused = msg:ReadFloat() + + local t = msg:ReadFloat() + if t>0 then GAMEMODE.MaxRoundTime = t end + + GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() +end) + +usermessage.Hook("TF_PlayGlobalSound", function(msg) + LocalPlayer():EmitSound(msg:ReadString()) +end) + +function ENT:Draw() + -- fuck AutomaticFrameAdvance, this is better + if self.LastDrawn then + self:FrameAdvance(CurTime() - self.LastDrawn) + end + self.LastDrawn = CurTime() + + self:DrawModel() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/team_control_point/init.lua b/gamemodes/tf/entities/entities/team_control_point/init.lua new file mode 100644 index 000000000..31faf6b3d --- /dev/null +++ b/gamemodes/tf/entities/entities/team_control_point/init.lua @@ -0,0 +1,197 @@ +include("shared.lua") +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +function ENT:Initialize() + self.ID = self.Properties.point_index + self.OwnerTeam = self.Properties.point_default_owner + self.Locked = false + self:SetNWInt("Team", self.OwnerTeam) + self:UpdateModel() +end + +function ENT:UpdateModel() + self:SetModel(self.Properties["team_model_"..self.OwnerTeam]) + self:SetBodygroup(0, self.OwnerTeam) + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:DrawShadow(false) +end + +function ENT:InitPostEntity() + if not IsValid(self.TriggerEntity) then + return + end + + --print(self) + + self.Properties.team_previouspoint_2_0 = ents.FindByName(self.Properties.team_previouspoint_2_0 or "")[1] or NULL + self.Properties.team_previouspoint_2_1 = ents.FindByName(self.Properties.team_previouspoint_2_1 or "")[1] or NULL + self.Properties.team_previouspoint_2_2 = ents.FindByName(self.Properties.team_previouspoint_2_2 or "")[1] or NULL + self.Properties.team_previouspoint_3_0 = ents.FindByName(self.Properties.team_previouspoint_3_0 or "")[1] or NULL + self.Properties.team_previouspoint_3_1 = ents.FindByName(self.Properties.team_previouspoint_3_1 or "")[1] or NULL + self.Properties.team_previouspoint_3_2 = ents.FindByName(self.Properties.team_previouspoint_3_2 or "")[1] or NULL + + PrintTable(self.Properties or {}) + + self:SendData() + self.Ready = true +end + +function ENT:SendData(pl) + umsg.Start("TF_AddControlPoint", pl) + umsg.Char(self.Properties.point_index) + umsg.String(self.Properties.point_printname) + + umsg.String(self.Properties.team_icon_0 or "") + umsg.String(self.Properties.team_icon_2 or "") + umsg.String(self.Properties.team_icon_3 or "") + + umsg.String(self.Properties.team_overlay_0 or "") + umsg.String(self.Properties.team_overlay_2 or "") + umsg.String(self.Properties.team_overlay_3 or "") + + umsg.Char(self.Properties.point_default_owner) + umsg.End() +end + +function ENT:SetOwnerTeam(o) + self.OwnerTeam = o + umsg.Start("TF_SetControlPointTeam") + umsg.Char(self.ID) + umsg.Char(self.OwnerTeam) + umsg.End() + self:UpdateModel() +end +function ENT:GetOwnerTeam() + return self.OwnerTeam +end + +function ENT:Open() + self.Locked = false + umsg.Start("TF_OpenControlPoint") + umsg.Char(self.ID) + umsg.End() +end + +function ENT:Lock() + self.Locked = true + umsg.Start("TF_LockControlPoint") + umsg.Char(self.ID) + umsg.End() +end + +function ENT:SetLocked(b) + if b then + self:Lock() + else + self:Open() + end +end + +-- Should this control point be locked or not? +function ENT:ComputeLockStatus() + if self.TeamCanCap then + -- If this point cannot be captured by any team other than its owner, it's definitely locked + local lock = true + for t=2,3 do + if t~=self.OwnerTeam and self.TeamCanCap[t] then + lock = false + break + end + end + if lock then + return true + end + end + + local pt + local lock = true + for t=2,3 do + if self.OwnerTeam ~= t then + local cancap = true + + if self.TeamCanCap and not self.TeamCanCap[t] then + cancap = false + else + for i=0,2 do + pt = self.Properties["team_previouspoint_"..t.."_"..i] + if not IsValid(pt) then + if i==0 then + local cannotcap = false + for _,pt in pairs(ents.FindByClass("team_control_point")) do + if ((t==2 and pt.ID>self.ID) or (t==3 and pt.ID0 then + self.IsSetupPhase = true + if self.StartPaused then + self:SetAndPauseTimer(self.SetupLength, true) + else + self:SetAndResumeTimer(self.SetupLength, true) + end + self:TriggerOutput("OnSetupStart",self) + else + + self.IsSetupPhase = false + timer.Simple(1, function() + if (string.find(game.GetMap(),"mvm")) then + umsg.Start("TF_PlayGlobalSound") + umsg.String("Ambient.Siren") + umsg.End() + else + if (!self.WaitingForPlayers) then + umsg.Start("TF_PlayGlobalSound") + umsg.String("Ambient.Siren") + umsg.End() + end + end + if self.StartPaused then + self:SetAndPauseTimer(self.TimerLength, true) + else + self:SetAndResumeTimer(self.TimerLength, true) + end + if (string.find(game.GetMap(),"mvm")) then + self.StartPaused = true + self:SetAndPauseTimer(0,true) + for k,v in ipairs(ents.FindByClass("func_door")) do + if (v:GetName() == "cave_door") then + v:Fire("Open","",0) + end + end + end + self:TriggerOutput("OnRoundStart",self) + self:TriggerOutput("OnSetupFinished",self) + end) + end +end + +function ENT:RestartTimer2(endsetup) + self.LastPlayedTimeSignal = nil + self.RoundFinished = false + + if not endsetup and self.SetupLength>0 then + self.IsSetupPhase = true + if self.StartPaused then + self:SetAndPauseTimer(self.SetupLength, true) + else + self:SetAndResumeTimer(self.SetupLength, true) + end + self:TriggerOutput("OnSetupStart") + else + + self.IsSetupPhase = false + if (string.find(game.GetMap(),"mvm")) then + umsg.Start("TF_PlayGlobalSound") + umsg.String("MVM.Siren") + umsg.End() + else + umsg.Start("TF_PlayGlobalSound") + umsg.String("Ambient.Siren") + umsg.End() + end + if self.StartPaused then + self:SetAndPauseTimer(self.TimerLength, true) + else + self:SetAndResumeTimer2(self.TimerLength, true) + end + if (string.find(game.GetMap(),"mvm")) then + self.StartPaused = true + self:SetAndPauseTimer(0,true) + for k,v in ipairs(ents.FindByClass("func_door")) do + if (v:GetName() == "cave_door") then + v:Fire("Open","",0) + end + end + end + self:TriggerOutput("OnRoundStart",self) + self:TriggerOutput("OnSetupFinished",self) + + end +end + +function ENT:GetTime() + if not self.TimerReference or not self.TimerLastUpdated then + return 0 + end + + if self.TimerPaused then + return math.Clamp(self.TimerPaused, 0, math.huge) + else + return math.Clamp(self.TimerReference - (CurTime() - self.TimerLastUpdated), 0, math.huge) + end +end + +function ENT:SetTime(sec) + sec = math.Clamp(sec, 0, self.MaxLength) + + if self.TimerPaused then + self:SetAndPauseTimer(sec) + else + self:SetAndResumeTimer(sec) + end +end + +function ENT:SetAndResumeTimer(sec, setmax) + sec = math.Clamp(sec, 0, self.MaxLength) + + self.TimerReference = sec + self.TimerLastUpdated = CurTime() + self.TimerPaused = nil + + if self==GAMEMODE.CurrentHUDTimer then + umsg.Start("TF_SetAndResumeTimer") + umsg.Float(sec) + umsg.Float((setmax and sec) or 0) + umsg.Bool(self.IsSetupPhase) + umsg.End() + end +end +function ENT:SetAndResumeTimer2(sec, setmax) + sec = math.Clamp(sec, 0, self.MaxLength) + + self.TimerReference = sec + self.TimerLastUpdated = CurTime() + self.TimerPaused = nil + + if self==GAMEMODE.CurrentHUDTimer then + umsg.Start("TF_SetAndResumeTimerWaiting") + umsg.Float(sec) + umsg.Float((setmax and sec) or 0) + umsg.Bool(true) + umsg.End() + end +end + +function ENT:SetAndPauseTimer(sec, setmax) + sec = math.Clamp(sec, 0, self.MaxLength) + + self.TimerPaused = sec + + if self==GAMEMODE.CurrentHUDTimer then + umsg.Start("TF_SetAndPauseTimer") + umsg.Float(sec) + umsg.Float((setmax and sec) or 0) + umsg.Bool(self.IsSetupPhase) + umsg.End() + end +end + +function ENT:ResumeTimer() + self:SetAndResumeTimer(self:GetTime()) +end + +function ENT:PauseTimer() + self:SetAndPauseTimer(self:GetTime()) +end + +function ENT:KeyValue(key,value) + if ( string.Left( key, 2 ) == "On" ) then + self:StoreOutput( key, value ) + end + + key = string.lower(key) + + if not self.Properties then + self.Properties = {} + end + if tonumber(value) then value=tonumber(value) end + self.Properties[key] = value +end + +function ENT:Think() + if not GAMEMODE.PostEntityDone then return end + if GAMEMODE.PostEntityDone and not self.PostEntityDone then + self:InitPostEntity() + self.PostEntityDone = true + + -- return (I want you to start thinking, immediately) + end + GAMEMODE.IsSetupPhase = self.IsSetupPhase + local t = self:GetTime() + if t<=0 then + if self.IsSetupPhase then + self:RestartTimer(true) + elseif not self.RoundFinished then + self.RoundFinished = true + self:TriggerOutput("OnFinished") + end + return + end + if (string.find(game.GetMap(),"mvm_")) then + + for k,v in ipairs(TimeRemainingToOutputMVM) do + if k == self.LastPlayedTimeSignal then + break + end + + if t <= v[1] then + self:TriggerOutput(v[2]) + self.LastPlayedTimeSignal = k + if (!self.WaitingForPlayers) then + if self.IsSetupPhase and v[3] then + umsg.Start("TF_PlayGlobalSound") + umsg.String(v[3]) + umsg.End() + elseif not self.IsSetupPhase and self.AutoCountdown and v[4] then + umsg.Start("TF_PlayGlobalSound") + umsg.String(v[4]) + umsg.End() + end + end + break + end + end + + else + for k,v in ipairs(TimeRemainingToOutput) do + if k == self.LastPlayedTimeSignal then + break + end + + if t <= v[1] then + self:TriggerOutput(v[2]) + self.LastPlayedTimeSignal = k + if (!self.WaitingForPlayers) then + if self.IsSetupPhase and v[3] then + umsg.Start("TF_PlayGlobalSound") + umsg.String(v[3]) + umsg.End() + elseif not self.IsSetupPhase and self.AutoCountdown and v[4] then + umsg.Start("TF_PlayGlobalSound") + umsg.String(v[4]) + umsg.End() + end + end + break + end + end + end +end + +function ENT:Input_Pause(activator, caller, data) + self:PauseTimer() +end + +function ENT:Input_Resume(activator, caller, data) + self:ResumeTimer() +end + +function ENT:Input_SetTime(activator, caller, data) + local sec = tonumber(data) + if sec then + self:SetTime(sec) + end +end + +function ENT:Input_AddTime(activator, caller, data) + local sec = tonumber(data) + if sec then + self:SetTime(self:GetTime() + sec) + end +end + +function ENT:Input_AddTeamTime(activator, caller, data) + local t, sec = string.match("(.*)%s+(.*)") + t, sec = tonumber(t), tonumber(sec) + + if t and sec then + --print(Format("Added %d seconds due to team %d", sec, t)) + self:SetTime(self:GetTime() + sec) + end +end + +function ENT:Input_Restart(activator, caller, data) + self:RestartTimer() +end + +function ENT:Input_ShowInHUD(activator, caller, data) + if tonumber(data)==1 then + self.ShowInHUD = true + GAMEMODE.CurrentHUDTimer = self + else + self.ShowInHUD = false + if GAMEMODE.CurrentHUDTimer == self then + GAMEMODE.CurrentHUDTimer = nil + for _,v in pairs(ents.FindByClass("team_round_timer")) do + if v.ShowInHUD then + GAMEMODE.CurrentHUDTimer = v + break + end + end + end + end +end + +function ENT:Input_SetMaxTime(activator, caller, data) + local sec = tonumber(data) + if sec then + self.MaxLength = sec + if self.MaxLength <= 0 then self.MaxLength = math.huge end + + if self:GetTime()>self.MaxLength then + self:SetTime(self.MaxLength) + end + end +end + +function ENT:OnRemove() + umsg.Start("TF_RemoveTimer") + umsg.End() +end +function ENT:Input_AutoCountdown(activator, caller, data) + self.AutoCountdown = (tonumber(data)==1) +end + +function ENT:Input_SetSetupTime(activator, caller, data) + local sec = tonumber(data) + if sec then + self.SetupLength = sec + end +end + +function ENT:AcceptInput(name, activator, caller, data) + --print(self, "received input", name) + local f = self["Input_"..name] + if f then + f(self, activator, caller, data) + end +end diff --git a/gamemodes/tf/entities/entities/team_train_watcher/init.lua b/gamemodes/tf/entities/entities/team_train_watcher/init.lua new file mode 100644 index 000000000..2ebc52e37 --- /dev/null +++ b/gamemodes/tf/entities/entities/team_train_watcher/init.lua @@ -0,0 +1,25 @@ +ENT.Type = "point" + +local team_control_point = "team_train_watcher" + +function ENT:Initialize() + self.Train = self.Train or "" + self.Goal = self.Goal or "" +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="train" then + for k,v in ipairs(ents.FindByName(value)) do + self.Train = v + end + end + if key=="goal_node" then + for k,v in ipairs(ents.FindByName(value)) do + self.Goal = v + end + end + print(key, value, tonumber(value)) +end + \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot.lua b/gamemodes/tf/entities/entities/tf_blue_bot.lua new file mode 100644 index 000000000..4e85a5a4a --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Category = "TFBots" +ENT.Team = "BLU" +ENT.PrintName = "Blue Scout" + +list.Set( "NPC", "tf_blue_bot", { + Name = ENT.PrintName, + Class = "tf_blue_bot", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_civilian.lua b/gamemodes/tf/entities/entities/tf_blue_bot_civilian.lua new file mode 100644 index 000000000..38cb5423d --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_civilian.lua @@ -0,0 +1,18 @@ +if SERVER then AddCSLuaFile() end +if (!file.Exists("models/player/civilian.mdl","WORKSHOP")) then return end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "civilian_" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Civilian" +ENT.Category = "TFBots: Extras" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_civilian", { + Name = ENT.PrintName, + Class = "tf_blue_bot_civilian", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_demo.lua b/gamemodes/tf/entities/entities/tf_blue_bot_demo.lua new file mode 100644 index 000000000..a016fc834 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_demo.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "demoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Demoman" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_demo", { + Name = ENT.PrintName, + Class = "tf_blue_bot_demo", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_engineer.lua b/gamemodes/tf/entities/entities/tf_blue_bot_engineer.lua new file mode 100644 index 000000000..a509972ed --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_engineer.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "engineer" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Engineer" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_engineer", { + Name = ENT.PrintName, + Class = "tf_blue_bot_engineer", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_gmodplayer.lua b/gamemodes/tf/entities/entities/tf_blue_bot_gmodplayer.lua new file mode 100644 index 000000000..f8dd51630 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_gmodplayer.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "gmodplayer" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue GMOD Player" +ENT.Category = "TFBots: Extras" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_gmodplayer", { + Name = ENT.PrintName, + Class = "tf_blue_bot_gmodplayer", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_heavyweapons.lua b/gamemodes/tf/entities/entities/tf_blue_bot_heavyweapons.lua new file mode 100644 index 000000000..828cae31d --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_heavyweapons.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "heavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Heavy" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_heavyweapons", { + Name = ENT.PrintName, + Class = "tf_blue_bot_heavyweapons", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_medic.lua b/gamemodes/tf/entities/entities/tf_blue_bot_medic.lua new file mode 100644 index 000000000..165c1feb4 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_medic.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "medic" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Medic" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_medic", { + Name = ENT.PrintName, + Class = "tf_blue_bot_medic", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_pyro.lua b/gamemodes/tf/entities/entities/tf_blue_bot_pyro.lua new file mode 100644 index 000000000..e4aa626d4 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_pyro.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "pyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Pyro" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_pyro", { + Name = ENT.PrintName, + Class = "tf_blue_bot_pyro", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_sniper.lua b/gamemodes/tf/entities/entities/tf_blue_bot_sniper.lua new file mode 100644 index 000000000..b66d90637 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_sniper.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "sniper" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Sniper" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_sniper", { + Name = ENT.PrintName, + Class = "tf_blue_bot_sniper", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_soldier.lua b/gamemodes/tf/entities/entities/tf_blue_bot_soldier.lua new file mode 100644 index 000000000..958245af7 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_soldier.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "soldier" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Soldier" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_soldier", { + Name = ENT.PrintName, + Class = "tf_blue_bot_soldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_bot_spy.lua b/gamemodes/tf/entities/entities/tf_blue_bot_spy.lua new file mode 100644 index 000000000..da9352255 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_bot_spy.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "spy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Blue Spy" +ENT.Category = "TFBots" +ENT.Team = "BLU" + +list.Set( "NPC", "tf_blue_bot_spy", { + Name = ENT.PrintName, + Class = "tf_blue_bot_spy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_blue_team_spawner.lua b/gamemodes/tf/entities/entities/tf_blue_team_spawner.lua new file mode 100644 index 000000000..a55aafce0 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_blue_team_spawner.lua @@ -0,0 +1,252 @@ +if SERVER then AddCSLuaFile() end +ENT.Base = "base_anim" +ENT.Type = "anim" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.AutomaticFrameAdvance = true +ENT.PrintName = "BLU Spawner" +ENT.Category = "TFBots" +ENT.Team = TEAM_BLU + +list.Set( "NPC", "tf_blue_team_spawner", { + Name = ENT.PrintName, + Class = "tf_blue_team_spawner", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) +local randomNames = +{ + "Chucklenuts", + "CryBaby", + "WITCH", + "ThatGuy", + "Still Alive", + "Hat-Wearing MAN", + "Me", + "Numnutz", + "H@XX0RZ", + "The G-Man", + "Chell", + "The Combine", + "Totally Not A Bot", + "Pow!", + "Zepheniah Mann", + "THEM", + "LOS LOS LOS", + "10001011101", + "DeadHead", + "ZAWMBEEZ", + "MindlessElectrons", + "TAAAAANK!", + "The Freeman", + "Black Mesa", + "Soulless", + "CEDA", + "BeepBeepBoop", + "NotMe", + "CreditToTeam", + "BoomerBile", + "Someone Else", + "Mann Co.", + "Dog", + "Kaboom!", + "AmNot", + "0xDEADBEEF", + "HI THERE", + "SomeDude", + "GLaDOS", + "Hostage", + "Headful of Eyeballs", + "CrySomeMore", + "Aperture Science Prototype XR7", + "Humans Are Weak", + "AimBot", + "C++", + "GutsAndGlory!", + "Nobody", + "Saxton Hale", + "RageQuit", + "Screamin' Eagles", + + "Ze Ubermensch", + "Maggot", + "CRITRAWKETS", + "Herr Doktor", + "Gentlemanne of Leisure", + "Companion Cube", + "Target Practice", + "One-Man Cheeseburger Apocalypse", + "Crowbar", + "Delicious Cake", + "IvanTheSpaceBiker", + "I LIVE!", + "Cannon Fodder", + + "trigger_hurt", + "Nom Nom Nom", + "Divide by Zero", + "GENTLE MANNE of LEISURE", + "MoreGun", + "Tiny Baby Man", + "Big Mean Muther Hubbard", + "Force of Nature", + + "Crazed Gunman", + "Grim Bloody Fable", + "Poopy Joe", + "A Professional With Standards", + "Freakin' Unbelievable", + "SMELLY UNFORTUNATE", + "The Administrator", + "Mentlegen", + + "Archimedes!", + "Ribs Grow Back", + "It's Filthy in There!", + "Mega Baboon", + "Kill Me", + "Glorified Toaster with Legs", + "John Spartan", + "Leeloo Dallas Multipass", + "Sho'nuff", + "Bruce Leroy", + "CAN YOUUUUUUUUU DIG IT?!?!?!?!", + "Big Gulp, Huh?", + "Stupid Hot Dog", + "I'm your huckleberry", + "The Crocketeer" +}; +function ENT:Initialize() + if CLIENT then return end + self:SetModel("models/editor/playerstart.mdl") + self:SetMaterial("models/debug/debugwhite") + self:SetColor(Color(team.GetColor(self.Team).r,team.GetColor(self.Team).g,team.GetColor(self.Team).b,100)) + self:SetRenderMode(RENDERMODE_TRANSCOLOR) + self:SetRenderFX(kRenderFxHologram) + self:SetSolid(SOLID_BBOX) + self:SetModelScale(1.0) + self:SetCollisionGroup(COLLISION_GROUP_WORLD) + self.bots = {} + self.bot = {} + self.spawnsblu = {} + self.spawnsred = {} + self:SetSkin(self.Team - 1) + self:SetUseType(SIMPLE_USE) + if SERVER then + self:EmitSound("MVM.Robot_Engineer_Spawn") + for k, v in pairs(ents.FindByClass("info_player_teamspawn")) do + if v:GetKeyValues()["StartDisabled"] == 0 then + if v:GetKeyValues()["TeamNum"] == 3 then + table.insert(self.spawnsblu, v) + elseif v:GetKeyValues()["TeamNum"] == 2 then + table.insert(self.spawnsred, v) + end + end + end + end +end + +function ENT:OnInjured() + return false +end + +function ENT:OnKilled() + return false +end + +function ENT:IsNPC() + return false +end + +function ENT:IsNextBot() + return true +end + +function ENT:Health() + return nil +end + +function ENT:OnRemove() + if SERVER then + for k,v in ipairs(self.bots) do + v:Remove() + end + end + timer.Stop("BotSpawner"..self:EntIndex()) +end + +function ENT:Think() + + if SERVER then + for k,v in ipairs(self.bots) do + if (!IsValid(v)) then + table.remove(self.bots,k) + end + end + end + self:NextThink(CurTime()) + return true +end + + +function ENT:Use( activator, caller ) + if (!self.WaveStarted) then + activator:PrintMessage(HUD_PRINTTALK,"Bots will now spawn every 5 seconds") + timer.Create("BotSpawner"..self:EntIndex(), 4, 0, function() + if SERVER then + local slef = self + local spawn = self + if (table.Count(team.GetPlayers(self.Team)) < 4) then + local bots = { + "tf_red_bot", + "tf_red_bot_soldier", + "tf_red_bot_pyro", + "tf_red_bot_demo", + "tf_red_bot_heavyweapons", + "tf_red_bot_engineer", + "tf_red_bot_medic", + "tf_red_bot_sniper", + "tf_red_bot_spy" + } + for i=1,1 do + local bot = ents.Create(table.Random(bots)) + if (!IsValid(bot)) then + return + end + bot:SetOwner(self) + bot.PreferredName = table.Random(randomNames) + bot:Spawn() + bot:EmitSound("Building_Teleporter.Receive",70,100) + bot.Bot.Difficulty = math.random(0,3) + bot.Bot:Speak("TLK_ROUND_START") + bot.Bot:SetTeam(self.Team) + bot.Bot:Spawn() + if (table.Count(self.spawnsblu) > 0 and self.Team == TEAM_BLU) then + elseif (table.Count(self.spawnsred) > 0 and self.Team == TEAM_RED) then + else + bot.Bot:SetPos(spawn:GetPos() + Vector(0,0,45)) + end + bot:SetPos(bot.Bot:GetPos()) + if (self.Team == TEAM_BLU) then + ParticleEffect("teleportedin_blue", bot.Bot:GetPos(), bot:GetAngles(), self) + else + ParticleEffect("teleportedin_red", bot.Bot:GetPos(), bot:GetAngles(), self) + end + table.insert(self.bots,bot) + --print("Creating robot #"..bot:EntIndex()) + end + else + --print("We have reached the limits! Not spawning MVM bots...") + end + end + end) + self.WaveStarted = true + self:EmitSound("buttons/lever8.wav") + else + activator:PrintMessage(HUD_PRINTTALK,"Bot spawning is now off") + timer.Stop("BotSpawner"..self:EntIndex()) + self.WaveStarted = false + self:EmitSound("buttons/lever8.wav") + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_drg_rocket/shared.lua b/gamemodes/tf/entities/entities/tf_drg_rocket/shared.lua new file mode 100644 index 000000000..600e73c78 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_drg_rocket/shared.lua @@ -0,0 +1,406 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + ParticleEffectAttach( "drg_cow_rockettrail_normal", PATTACH_POINT_FOLLOW, self, 1 ) + else + ParticleEffectAttach( "drg_cow_rockettrail_normal_blue", PATTACH_POINT_FOLLOW, self, 1 ) + end + if self.dt.Critical then + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + ParticleEffectAttach( "drg_cow_rockettrail_charged", PATTACH_POINT_FOLLOW, self, 1 ) + else + ParticleEffectAttach( "drg_cow_rockettrail_charged_blue", PATTACH_POINT_FOLLOW, self, 1 ) + end + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") +ENT.ExplosionSound2 = Sound("weapons/cow_mangler_explode.wav") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 90 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.25 +ENT.MaxDamageFalloff = 0.53 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + PrecacheParticleSystem("drg_cow_rockettrail_normal_blue") + PrecacheParticleSystem("drg_cow_rockettrail_normal") + + + self:SetMaterial("Models/effects/vol_light001") + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} + +function ENT:DoExplosion(ent) + + local dmginfo = DamageInfo() + self.Touch = nil + + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", "effect") + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + if self.dt.Critical then + self:EmitSound("weapons/cow_mangler_explosion_charge_0"..math.random(1,6)..".wav", 95, 100) + else + sound.Play(self.ExplosionSound, self:GetPos()) + end + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("drg_cow_explosion_sparkles_blue", effectdata, true, true) + + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + + effect = "drg_cow_explosion_flashup" + effect2 = "drg_cow_explosioncore_normal" + effect3 = "drg_cow_explosion_sparkles" + + else + + effect = "drg_cow_explosion_flashup_blue" + effect2 = "drg_cow_explosioncore_normal_blue" + effect3 = "drg_cow_explosion_sparkles_blue" + + end + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + local explosion2 = ents.Create("info_particle_system") + explosion2:SetKeyValue("effect_name", effect2) + explosion2:SetKeyValue("start_active", "1") + explosion2:SetPos(self:GetPos()) + explosion2:SetAngles(self:GetAngles()) + explosion2:Spawn() + explosion2:Activate() + local explosion3 = ents.Create("info_particle_system") + explosion3:SetKeyValue("effect_name", effect2) + explosion3:SetKeyValue("start_active", "1") + explosion3:SetPos(self:GetPos()) + explosion3:SetAngles(self:GetAngles()) + explosion3:Spawn() + explosion3:Activate() + + explosion:Fire("Kill", "", 5) + explosion2:Fire("Kill", "", 5) + explosion3:Fire("Kill", "", 5) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + local dmginfo = DamageInfo() + dmginfo:SetDamage(95) + dmginfo:SetDamageType(DMG_DISSOLVE) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(owner) + util.BlastDamageInfo(dmginfo, self:GetPos(), range) + + local dmginfo = DamageInfo() + dmginfo:SetDamage(80) + dmginfo:SetDamageType(DMG_DISSOLVE) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + + self:Remove() +end + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + +function ENT:Touch(ent) + if ent:IsSolid() then + self:DoExplosion(ent) + end +end + +end + + + +function ENT:TF2BlastDamage(origin, radius, dmg) + + + + + + local expd = DamageInfo() + + + + expd:SetAttacker(self:GetOwner()) + expd:SetDamageType(DMG_DISSOLVE) + + expd:SetDamagePosition(origin) + + + local subjects = ents.FindInSphere(origin, radius) + + for k,v in pairs(subjects) do + + local dist = v:GetPos():Distance(origin) + expd:SetDamage((radius-dist) * (dmg/radius)) + + + + local fvTrace = util.TraceLine({ + start = origin, + endpos = v:GetPos() + }) + + local ForceVector = fvTrace.Normal*((radius-dist) * (40000/radius)) + + expd:SetDamageForce(ForceVector) + + --v:Ignite(4) + + v:TakeDamageInfo(expd) + end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_entitybleed/shared.lua b/gamemodes/tf/entities/entities/tf_entitybleed/shared.lua new file mode 100644 index 000000000..175924706 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_entitybleed/shared.lua @@ -0,0 +1,124 @@ +ENT.Type = "anim" +ENT.Base = "base_anim" + +if CLIENT then + +function ENT:Draw() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +local DamagePeriod = 0.5 +local DamagePerTick = 4 + +function ENT:GetInflictorName(inf) + --[[if inf.GetItemData then + local d = inf:GetItemData() + if d.item_iconname then + return "tf_weapon_"..d.item_iconname + end + end + + return inf:GetClass()]] + + return nil +end + +function ENT:Update(data) + local NameOverride + if IsValid(data.Inflictor) then + NameOverride = self:GetInflictorName(data.Inflictor) + --self.Attributes = data.Inflictor.Attributes + end + + -- Extend the life time + data.LifeTime = data.LifeTime or 8 + self.RemainingDamage = DamagePerTick * (math.floor(data.LifeTime / DamagePeriod) + 1) + + -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) + if NameOverride then + self.NameOverride = NameOverride + end + if IsValid(data.Owner) then + self:SetOwner(data.Owner) + end +end + +function ENT:Initialize() + self:SetNoDraw(true) + self:SetNotSolid(true) + + self.LifeTime = self.LifeTime or 8 + + if IsValid(self.Target) then + self:SetPos(self.Target:GetPos()) + self:SetParent(self.Target) + else + self.Target = self:GetParent() + end + + if IsValid(self.Inflictor) then + self.NameOverride = self:GetInflictorName(self.Inflictor) + --self.Attributes = self.Inflictor.Attributes + end + + if IsValid(self.Target) then + -- If the entity is already bleeding + if IsValid(self.Target.BleedEntity) then + -- Extend the life time + self.Target.BleedEntity.RemainingDamage = DamagePerTick * (math.floor(self.LifeTime / DamagePeriod) + 1) + + -- Update the inflictor and attacker + if self.NameOverride then + self.Target.BleedEntity.NameOverride = self.NameOverride + end + if IsValid(self:GetOwner()) then + self.Target.BleedEntity:SetOwner(self:GetOwner()) + end + + self:Remove() + return + else + self.Target:AddPlayerState(PLAYERSTATE_BLEEDING, false) + self.Target.BleedEntity = self + self.RemainingDamage = DamagePerTick * (math.floor(self.LifeTime / DamagePeriod) + 1) + end + end + + self.NextBleed = CurTime() + 0.5 +end + +function ENT:Think() + if not IsValid(self) or not IsValid(self.Target) then return false end + + if self.RemainingDamage<=0 or self.Target:Health()<=0 then + self:Remove() + return + elseif CurTime()>self.NextBleed then + local dmginfo = DamageInfo() + if IsValid(self:GetOwner()) then + dmginfo:SetAttacker(self:GetOwner()) + else + dmginfo:SetAttacker(self) + end + dmginfo:SetInflictor(self) + dmginfo:SetDamage(4) + dmginfo:SetDamageType(DMG_BUCKSHOT) + dmginfo:SetDamagePosition(self.Target:GetPos()) + self.Target:TakeDamageInfo(dmginfo) + self.NextBleed = CurTime() + DamagePeriod + self.RemainingDamage = self.RemainingDamage - DamagePerTick + end + self:NextThink(CurTime()) + return true +end + +function ENT:OnRemove() + self.Target:RemovePlayerState(PLAYERSTATE_BLEEDING, false) +end + +end diff --git a/gamemodes/tf/entities/entities/tf_entityflame/shared.lua b/gamemodes/tf/entities/entities/tf_entityflame/shared.lua new file mode 100644 index 000000000..c35b6dbdb --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_entityflame/shared.lua @@ -0,0 +1,207 @@ +ENT.Type = "anim" +ENT.Base = "base_anim" + +if CLIENT then + +function ENT:Draw() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.NoDamageCooperation = true + +local DamagePeriod = 0.5 +local DamagePerTick = 4 + +function ENT:ShouldExtinguishInWater() + if not IsValid(self.Target) then return false end + + -- Metallic props that can be ignited are usually oil drums, don't extinguish them when they enter water) + if self.Target:GetClass() == "prop_physics" and self.Target:GetMaterialType() == MAT_METAL then + return false + end + + return true +end + +function ENT:GetInflictorName(inf) + if inf.NameOverride then + return inf.NameOverride + end + + if inf.GetItemData then + local d = inf:GetItemData() + if d.item_iconname then + --return "tf_weapon_"..d.item_iconname + return d.item_iconname + end + end + + return inf:GetClass() +end + +function ENT:TargetIsFireproof() + if IsValid(self.Target) and self.Target:IsPlayer() then + if self.Target.TempAttributes.Fireproof then + return true + end + if (self.Target.playerclass == "Pyro") then + return true + end + local c = self.Target:GetPlayerClassTable() + if c and c.Fireproof then + return true + end + end + return false +end + +function ENT:Update(data) + local NameOverride + if IsValid(data.Inflictor) then + NameOverride = self:GetInflictorName(data.Inflictor) + self.Attributes = data.Inflictor.Attributes + end + + -- Extend the life time + self.LifeTime = data.LifeTime or 10 + if data.Inflictor and data.Inflictor.BurnTimeMultiplier then + self.LifeTime = self.LifeTime * data.Inflictor.BurnTimeMultiplier + end + + self.DamagePerTick = DamagePerTick + if data.Inflictor and data.Inflictor.BurnDamageMultiplier then + self.DamagePerTick = self.DamagePerTick * data.Inflictor.BurnDamageMultiplier + end + + self.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / 0.5) + + -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) + if NameOverride then + self.NameOverride = NameOverride + end + if IsValid(data.Owner) then + self:SetOwner(data.Owner) + end +end + +function ENT:Initialize() + self:SetNoDraw(true) + self:SetNotSolid(true) + + self.LifeTime = self.LifeTime or 10 + if self.Inflictor and self.Inflictor.BurnTimeMultiplier then + self.LifeTime = self.LifeTime * self.Inflictor.BurnTimeMultiplier + end + + self.DamagePerTick = DamagePerTick + if self.Inflictor and self.Inflictor.BurnDamageMultiplier then + self.DamagePerTick = self.DamagePerTick * self.Inflictor.BurnDamageMultiplier + end + + + if IsValid(self.Target) then + self:SetPos(self.Target:GetPos()) + self:SetParent(self.Target) + else + self.Target = self:GetParent() + end + + if IsValid(self.Inflictor) then + self.NameOverride = self:GetInflictorName(self.Inflictor) + self.Attributes = self.Inflictor.Attributes + end + + if IsValid(self.Target) then + -- If the entity is already on fire + if IsValid(self.Target.FireEntity) then + -- Extend the life time + self.Target.FireEntity.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) + + -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) + if self.NameOverride then + self.Target.FireEntity.NameOverride = self.NameOverride + end + if IsValid(self:GetOwner()) then + self.Target.FireEntity:SetOwner(self:GetOwner()) + end + + self:Remove() + return + else + if (self.Target:IsTFPlayer()) then + self.Target:AddPlayerState(PLAYERSTATE_ONFIRE, true) + end + if not self:TargetIsFireproof() then + --self.Target:SetNWBool("ShouldDropBurningRagdoll", true) + self.Target:AddDeathFlag(DF_FIRE) + end + if self.Target:IsPlayer() then + self.Target:Speak("TLK_ONFIRE") + end + + ----print("ignite",self.Target) + self.Target.FireEntity = self + self.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) + end + end + + if self.Target:IsNPC() then + self:EmitSound("General.BurningFlesh") + else + self:EmitSound("General.BurningObject") + end + self.NextBurn = CurTime() + 0.5 + NextBurn = CurTime() + 0.5 +end + +function ENT:Think() + if not IsValid(self) or not IsValid(self.Target) then return false end + if (self.Target:IsPlayer() and self.Target:IsL4D()) then + self.Target:Ignite(10,70) + end + if (self:ShouldExtinguishInWater() and self.Target:WaterLevel()>2) or self.RemainingDamage<=0 or self:TargetIsFireproof() then + self:Remove() + return + elseif CurTime()>self.NextBurn then + local dmginfo = DamageInfo() + if IsValid(self:GetOwner()) then + dmginfo:SetAttacker(self:GetOwner()) + else + dmginfo:SetAttacker(self) + end + dmginfo:SetInflictor(self) + dmginfo:SetDamage(self.DamagePerTick) + if self.Target:IsPlayer() then + dmginfo:SetDamageType(bit.bor(DMG_GENERIC,DMG_DIRECT)) + else + dmginfo:SetDamageType(bit.bor(DMG_BURN,DMG_DIRECT)) + end + dmginfo:SetDamagePosition(self.Target:GetPos()) + self.Target:TakeDamageInfo(dmginfo) + GAMEMODE:AddDamageCooperation(self.Target, dmginfo:GetAttacker(), self.DamagePerTick, ASSIST_FIRE) + + self.NextBurn = CurTime() + 0.5 + self.RemainingDamage = self.RemainingDamage - self.DamagePerTick + end + self:NextThink(CurTime()) + return true +end + +function ENT:OnRemove() + if self.NextBurn and IsValid(self.Target) then + self.Target:Extinguish() + self.Target:RemovePlayerState(PLAYERSTATE_ONFIRE, true) + if self.Target:Health()>0 then + --self.Target:SetNWBool("ShouldDropBurningRagdoll", false) + self.Target:RemoveDeathFlag(DF_FIRE) + end + self:EmitSound("General.StopBurning") + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_entityflame_rainbow/shared.lua b/gamemodes/tf/entities/entities/tf_entityflame_rainbow/shared.lua new file mode 100644 index 000000000..f22a98318 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_entityflame_rainbow/shared.lua @@ -0,0 +1,202 @@ +ENT.Type = "anim" +ENT.Base = "base_anim" + +if CLIENT then + +function ENT:Draw() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.NoDamageCooperation = true + +local DamagePeriod = 0.5 +local DamagePerTick = 1 + +function ENT:ShouldExtinguishInWater() + if not IsValid(self.Target) then return false end + + -- Metallic props that can be ignited are usually oil drums, don't extinguish them when they enter water) + if self.Target:GetClass() == "prop_physics" and self.Target:GetMaterialType() == MAT_METAL then + return false + end + + return true +end + +function ENT:GetInflictorName(inf) + if inf.NameOverride then + return inf.NameOverride + end + + if inf.GetItemData then + local d = inf:GetItemData() + if d.item_iconname then + --return "tf_weapon_"..d.item_iconname + return d.item_iconname + end + end + + return inf:GetClass() +end + +function ENT:TargetIsFireproof() + if IsValid(self.Target) and self.Target:IsPlayer() then + if self.Target.TempAttributes.Fireproof then + return true + end + + local c = self.Target:GetPlayerClassTable() + if c and c.Fireproof then + return true + end + end + return false +end + +function ENT:Update(data) + local NameOverride + if IsValid(data.Inflictor) then + NameOverride = self:GetInflictorName(data.Inflictor) + self.Attributes = data.Inflictor.Attributes + end + + -- Extend the life time + self.LifeTime = data.LifeTime or 10 + if data.Inflictor and data.Inflictor.BurnTimeMultiplier then + self.LifeTime = self.LifeTime * data.Inflictor.BurnTimeMultiplier + end + + self.DamagePerTick = DamagePerTick + if data.Inflictor and data.Inflictor.BurnDamageMultiplier then + self.DamagePerTick = self.DamagePerTick * data.Inflictor.BurnDamageMultiplier + end + + self.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) + + -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) + if NameOverride then + self.NameOverride = NameOverride + end + if IsValid(data.Owner) then + self:SetOwner(data.Owner) + end +end + +function ENT:Initialize() + self:SetNoDraw(true) + self:SetNotSolid(true) + + self.LifeTime = self.LifeTime or 10 + if self.Inflictor and self.Inflictor.BurnTimeMultiplier then + self.LifeTime = self.LifeTime * self.Inflictor.BurnTimeMultiplier + end + + self.DamagePerTick = DamagePerTick + if self.Inflictor and self.Inflictor.BurnDamageMultiplier then + self.DamagePerTick = self.DamagePerTick * self.Inflictor.BurnDamageMultiplier + end + + + if IsValid(self.Target) then + self:SetPos(self.Target:GetPos()) + self:SetParent(self.Target) + else + self.Target = self:GetParent() + end + + if IsValid(self.Inflictor) then + self.NameOverride = self:GetInflictorName(self.Inflictor) + self.Attributes = self.Inflictor.Attributes + end + + if IsValid(self.Target) then + -- If the entity is already on fire + if IsValid(self.Target.FireEntity) then + -- Extend the life time + self.Target.FireEntity.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) + + -- Update the inflictor and attacker (kill credit goes to the last player who ignited this entity) + if self.NameOverride then + self.Target.FireEntity.NameOverride = self.NameOverride + end + if IsValid(self:GetOwner()) then + self.Target.FireEntity:SetOwner(self:GetOwner()) + end + + self:Remove() + return + else + self.Target:AddPlayerState(PLAYERSTATE_ONFIRE_RAINBOW, true) + if not self:TargetIsFireproof() then + --self.Target:SetNWBool("ShouldDropBurningRagdoll", true) + self.Target:AddDeathFlag(DF_FIRE) + end + if self.Target:IsPlayer() then + self.Target:Speak("TLK_ONFIRE",true) + end + + ----print("ignite",self.Target) + self.Target:EmitSound("Fire.Engulf") + self.Target.FireEntity = self + self.RemainingDamage = self.DamagePerTick * math.floor(self.LifeTime / DamagePeriod) + end + end + + if self.Target:IsNPC() or self.Target:IsPlayer() then + self:EmitSound("General.BurningFlesh") + else + self:EmitSound("General.BurningObject") + end + + self.NextBurn = CurTime() + DamagePeriod +end + +function ENT:Think() + if not IsValid(self) or not IsValid(self.Target) then return false end + + if (self:ShouldExtinguishInWater() and self.Target:WaterLevel()>2) or self.RemainingDamage<=0 or self:TargetIsFireproof() then + self:Remove() + return + elseif CurTime()>self.NextBurn then + local dmginfo = DamageInfo() + if IsValid(self:GetOwner()) then + dmginfo:SetAttacker(self:GetOwner()) + else + dmginfo:SetAttacker(self) + end + dmginfo:SetInflictor(self) + dmginfo:SetDamage(self.DamagePerTick) + if self.Target:IsPlayer() then + dmginfo:SetDamageType(bit.bor(DMG_GENERIC,DMG_DIRECT)) + else + dmginfo:SetDamageType(bit.bor(DMG_BURN,DMG_DIRECT)) + end + dmginfo:SetDamagePosition(self.Target:GetPos()) + self.Target:TakeDamageInfo(dmginfo) + GAMEMODE:AddDamageCooperation(self.Target, dmginfo:GetAttacker(), self.DamagePerTick, ASSIST_FIRE) + + self.NextBurn = CurTime() + DamagePeriod + self.RemainingDamage = self.RemainingDamage - self.DamagePerTick + end + self:NextThink(CurTime()) + return true +end + +function ENT:OnRemove() + if self.NextBurn and IsValid(self.Target) then + self.Target:Extinguish() + self.Target:RemovePlayerState(PLAYERSTATE_ONFIRE_RAINBOW, true) + if self.Target:Health()>0 then + --self.Target:SetNWBool("ShouldDropBurningRagdoll", false) + self.Target:RemoveDeathFlag(DF_FIRE) + end + self:EmitSound("General.StopBurning") + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_flame/shared.lua b/gamemodes/tf/entities/entities/tf_flame/shared.lua new file mode 100644 index 000000000..a82197d27 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_flame/shared.lua @@ -0,0 +1,298 @@ +-- Flare + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("new_flame") +PrecacheParticleSystem("drg_phlo_stream_new_flame") +game.AddParticles("particles/flamethrower.pcf") +ENT.IsTFWeapon = true + +ENT.Size = 10 + +function ENT:InitEffects() +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +local function DrawBox(pos, mins, maxs, F, R, U) + local bld = (pos + mins.x*F + mins.y*R + mins.z*U):ToScreen() + local brd = (pos + mins.x*F + maxs.y*R + mins.z*U):ToScreen() + local frd = (pos + maxs.x*F + maxs.y*R + mins.z*U):ToScreen() + local fld = (pos + maxs.x*F + mins.y*R + mins.z*U):ToScreen() + local blu = (pos + mins.x*F + mins.y*R + maxs.z*U):ToScreen() + local bru = (pos + mins.x*F + maxs.y*R + maxs.z*U):ToScreen() + local fru = (pos + maxs.x*F + maxs.y*R + maxs.z*U):ToScreen() + local flu = (pos + maxs.x*F + mins.y*R + maxs.z*U):ToScreen() + + surface.DrawLine(bld.x, bld.y, brd.x, brd.y) + surface.DrawLine(brd.x, brd.y, frd.x, frd.y) + surface.DrawLine(frd.x, frd.y, fld.x, fld.y) + surface.DrawLine(fld.x, fld.y, bld.x, bld.y) + + surface.DrawLine(blu.x, blu.y, bru.x, bru.y) + surface.DrawLine(bru.x, bru.y, fru.x, fru.y) + surface.DrawLine(fru.x, fru.y, flu.x, flu.y) + surface.DrawLine(flu.x, flu.y, blu.x, blu.y) + + surface.DrawLine(blu.x, blu.y, bld.x, bld.y) + surface.DrawLine(bru.x, bru.y, brd.x, brd.y) + surface.DrawLine(flu.x, flu.y, fld.x, fld.y) + surface.DrawLine(fru.x, fru.y, frd.x, frd.y) +end + +function ENT:Draw() + render.SetViewPort(0, 0, ScrW(), ScrH()) + cam.Start2D() + cam.IgnoreZ(true) + surface.SetDrawColor(50, 60, 255, 255) + DrawBox(self:GetPos(), Vector(-self.Size,-self.Size,-self.Size), Vector(self.Size,self.Size,self.Size), Vector(1,0,0), Vector(0,1,0), Vector(0,0,1)) + cam.IgnoreZ(false) + cam.End2D() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.HitSound = Sound("Weapon_FlameThrower.FireHit") +ENT.HitLoopSound = Sound("Weapon_FlameThrower.FireHit") + +ENT.MaxDamage = 4 +ENT.MinDamage = 4 +ENT.CritDamageMultiplier = 3 + +ENT.Force = 800 +ENT.DragCoefficient = 2 +ENT.Buoyancy = 60 +ENT.ThinkTime = 0 + +ENT.BaseLifeTime = 0.28 + +ENT.BackCritAngle = 120 + +tf_debug_flamethrower = CreateConVar("tf_debug_flamethrower", 0, {FCVAR_CHEAT}) + +function ENT:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self:GetOwner()) then return end + + local effect + local t = GAMEMODE:EntityTeam(self:GetOwner()) + effect = "new_flame_core" + + self.LastEffect = i +end +function ENT:Critical(ent) + if self.critical then + return true + end + + if self.CritsFromBehind then + local back_cos = math.cos(math.rad(self.BackCritAngle * 0.5)) + local v1 = ent:GetPos() - self:GetPos() + local v2 = ent:GetAngles():Forward() + + v1.z = 0 + v2.z = 0 + v1:Normalize() + v2:Normalize() + + return v1:Dot(v2) > back_cos + end + + return false +end + +function ENT:CalculateDamage(ownerpos) + local dmg = Lerp((self.NextDie - CurTime()) / self.LifeTime, self.MinDamage, self.MaxDamage) + return dmg +end + +function ENT:Initialize() + local min = Vector(-self.Size, -self.Size, -self.Size) + local max = Vector( self.Size, self.Size, self.Size) + + if tf_debug_flamethrower:GetBool() then + self:DrawShadow(false) + else + self:SetNoDraw(true) + end + + self:SetNotSolid(true) + self:SetMoveType(MOVETYPE_FLY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + self:SetTrigger(true) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.Force * self:GetOwner():GetModelScale()) + + if self:GetOwner():GetActiveWeapon():GetItemData().model_player == "models/workshop/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator.mdl" then + timer.Create("Particle?"..self:EntIndex(), 0.0, 1, function() + if self:IsValid(self.WModel2) then + ParticleEffectAttach( "drg_phlo_stream_new_flame", PATTACH_ABSORIGIN_FOLLOW, self, 0) + else + timer.Stop("Particle?"..self:EntIndex()) + end + end) + timer.Simple(0.2, function() + if (IsValid(self)) then + self:StopParticles() + end + end) + + else + + timer.Create("Particle?"..self:EntIndex(), 0.0, 1, function() + if self:IsValid(self.WModel2) then + --ParticleEffectAttach( "new_flame_core", PATTACH_ABSORIGIN_FOLLOW, self, 0) + else + timer.Stop("Particle?"..self:EntIndex()) + end + end) + timer.Simple(0.2, function() + if CLIENT then + self:StopParticles() + end + end) + + end + self.LifeTime = self.BaseLifeTime + self.NextDie = CurTime() + self.LifeTime + +end + +function ENT:Think() + if (self:WaterLevel() > 1) then + + self:StopParticles() + self:Remove() + return false + + end + if CurTime()>=self.NextDie then + self:StopParticles() + self:Remove() + return false + end + + if GetConVar("tf_pyrovision"):GetBool() then + self.HitSound = Sound("Weapon_Rainblower.FireHit") + self.HitLoopSound = Sound("Weapon_Rainblower.FireHit") + end + + local vel = self:GetVelocity() + -- More like AddVelocity, this adds a vector, it doesn't actually set it + self:SetVelocity(-self.DragCoefficient * self.ThinkTime * vel * 0.6 + Vector(0,0,self.Buoyancy * self.ThinkTime)) + + self:NextThink(CurTime() + 0.2) + return true +end + +function ENT:Hit(ent) + self.Touch = nil + + if self:IsWorld() then return end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel) then owner = self end + + if ent:IsTFPlayer() and !ent:IsFriendly(owner) or (ent:GetClass()=="prop_physics") then + if not ent.FlameBurnSound then + local rf = RecipientFilter() + rf:AddAllPlayers() + ent.FlameBurnSound = CreateSound(ent, self.HitSound,rf) + ent.FlameBurnSound = CreateSound(ent, self.HitLoopSound,rf) + end + + if not ent.NextStopBurnSound or CurTime()>ent.NextStopBurnSound then + ent.FlameBurnSound:Play() + end + ent.NextStopBurnSound = CurTime() + 0.2 + end + + local damage = self:CalculateDamage() + + self:StopParticles() + + if (!ent:IsFriendly(owner)) then + local dmginfo = DamageInfo() + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + if (owner:Nick() == "Giant Airblast Pyro" and owner:IsBot() and owner.TFBot) then + dmginfo:SetDamage(damage * 0.05) + else + dmginfo:SetDamage(damage) + end + if ent:IsTFPlayer() then + if IsValid(self:GetOwner():GetActiveWeapon():GetItemData()) and self:GetOwner():GetActiveWeapon():GetItemData().model_player == "models/workshop/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator.mdl" then + dmginfo:SetDamageType(DMG_DISSOLVE) + else + dmginfo:SetDamageType(DMG_GENERIC) + end + else + dmginfo:SetDamageType(DMG_BURN) + end + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(self:GetVelocity()) + ent:TakeDamageInfo(dmginfo) + if (ent:IsNPC()) then + + local r = ent:GetColor().r + local g = ent:GetColor().g + local b = ent:GetColor().b + local a = ent:GetColor().a + r = r - 5 + g = g - 5 + b = b - 5 + if (r < 4) then + r = 1 + elseif (g < 4) then + g = 1 + elseif (b < 4) then + b = 1 + end + --ent:SetColor(Color(r,g,b,a)) + + end + if (ent:IsTFPlayer() and !ent:IsFriendly(owner)) then + GAMEMODE:IgniteEntity(ent, self, owner, 10) + end + end + + self:StopParticles() + self:Fire("kill", "", 0.01) +end + +function ENT:Touch(ent) + if not ent:IsTrigger() and ent~=self:GetOwner() and gamemode.Call("ShouldCollide",self,ent) then + self:Hit(ent) + end +end + +hook.Add("Think", "FlameBurnSoundThink", function() + for _,v in pairs(ents.GetAll()) do + if v.FlameBurnSound and (not v.NextStopBurnSound or CurTime()>v.NextStopBurnSound) then + v.NextStopBurnSound = nil + v.FlameBurnSound:Stop() + end + end +end) + +hook.Add("EntityRemoved", "FlameBurnSoundRemove", function(ent) + if ent.FlameBurnSound then + ent.FlameBurnSound:Stop() + ent.FlameBurnSound = nil + end +end) + +end diff --git a/gamemodes/tf/entities/entities/tf_flame_pyrovision/shared.lua b/gamemodes/tf/entities/entities/tf_flame_pyrovision/shared.lua new file mode 100644 index 000000000..db32dccc5 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_flame_pyrovision/shared.lua @@ -0,0 +1,273 @@ +-- Flare + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("new_flame") +PrecacheParticleSystem("drg_phlo_stream_new_flame") +game.AddParticles("particles/flamethrower.pcf") +ENT.IsTFWeapon = true + +ENT.Size = 3 + +function ENT:InitEffects() +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +local function DrawBox(pos, mins, maxs, F, R, U) + local bld = (pos + mins.x*F + mins.y*R + mins.z*U):ToScreen() + local brd = (pos + mins.x*F + maxs.y*R + mins.z*U):ToScreen() + local frd = (pos + maxs.x*F + maxs.y*R + mins.z*U):ToScreen() + local fld = (pos + maxs.x*F + mins.y*R + mins.z*U):ToScreen() + local blu = (pos + mins.x*F + mins.y*R + maxs.z*U):ToScreen() + local bru = (pos + mins.x*F + maxs.y*R + maxs.z*U):ToScreen() + local fru = (pos + maxs.x*F + maxs.y*R + maxs.z*U):ToScreen() + local flu = (pos + maxs.x*F + mins.y*R + maxs.z*U):ToScreen() + + surface.DrawLine(bld.x, bld.y, brd.x, brd.y) + surface.DrawLine(brd.x, brd.y, frd.x, frd.y) + surface.DrawLine(frd.x, frd.y, fld.x, fld.y) + surface.DrawLine(fld.x, fld.y, bld.x, bld.y) + + surface.DrawLine(blu.x, blu.y, bru.x, bru.y) + surface.DrawLine(bru.x, bru.y, fru.x, fru.y) + surface.DrawLine(fru.x, fru.y, flu.x, flu.y) + surface.DrawLine(flu.x, flu.y, blu.x, blu.y) + + surface.DrawLine(blu.x, blu.y, bld.x, bld.y) + surface.DrawLine(bru.x, bru.y, brd.x, brd.y) + surface.DrawLine(flu.x, flu.y, fld.x, fld.y) + surface.DrawLine(fru.x, fru.y, frd.x, frd.y) +end + +function ENT:Draw() + render.SetViewPort(0, 0, ScrW(), ScrH()) + cam.Start2D() + cam.IgnoreZ(true) + surface.SetDrawColor(50, 60, 255, 255) + DrawBox(self:GetPos(), Vector(-self.Size,-self.Size,-self.Size), Vector(self.Size,self.Size,self.Size), Vector(1,0,0), Vector(0,1,0), Vector(0,0,1)) + cam.IgnoreZ(false) + cam.End2D() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.HitSound = Sound("Weapon_FlameThrower.FireHit") +ENT.HitLoopSound = Sound("Weapon_FlameThrower.FireHit") + +ENT.MaxDamage = 1 +ENT.MinDamage = 5 +ENT.CritDamageMultiplier = 3 + +ENT.Force = 800 +ENT.DragCoefficient = 2 +ENT.Buoyancy = 60 +ENT.ThinkTime = 0 + +ENT.BaseLifeTime = 0.6 + +ENT.BackCritAngle = 120 + +tf_debug_flamethrower = CreateConVar("tf_debug_flamethrower", 0, {FCVAR_CHEAT}) + +function ENT:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self:GetOwner()) then return end + + local effect + local t = GAMEMODE:EntityTeam(self:GetOwner()) + effect = "new_flame_core" + + self.LastEffect = i +end +function ENT:Critical(ent) + if self.critical then + return true + end + + if self.CritsFromBehind then + local back_cos = math.cos(math.rad(self.BackCritAngle * 0.5)) + local v1 = ent:GetPos() - self:GetPos() + local v2 = ent:GetAngles():Forward() + + v1.z = 0 + v2.z = 0 + v1:Normalize() + v2:Normalize() + + return v1:Dot(v2) > back_cos + end + + return false +end + +function ENT:CalculateDamage(ownerpos) + local dmg = Lerp((self.NextDie - CurTime()) / self.LifeTime, self.MinDamage, self.MaxDamage) + return dmg +end + +function ENT:Initialize() + local min = Vector(-self.Size, -self.Size, -self.Size) + local max = Vector( self.Size, self.Size, self.Size) + + if tf_debug_flamethrower:GetBool() then + self:DrawShadow(false) + else + self:SetNoDraw(true) + end + + self:SetNotSolid(true) + self:SetMoveType(MOVETYPE_FLY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + self:SetTrigger(true) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.Force) + + if self:GetOwner():GetActiveWeapon():GetItemData().model_player == "models/workshop/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator.mdl" then + timer.Create("Particle?"..self:EntIndex(), 0.0, 1, function() + if self:IsValid(self.WModel2) then + ParticleEffectAttach( "drg_phlo_stream_new_flame", PATTACH_ABSORIGIN_FOLLOW, self, 0) + else + timer.Stop("Particle?"..self:EntIndex()) + end + end) + timer.Simple(0.2, function() + if (IsValid(self)) then + self:StopParticles() + end + end) + + else + + timer.Create("Particle?"..self:EntIndex(), 0.0, 1, function() + if self:IsValid(self.WModel2) then + --ParticleEffectAttach( "new_flame_core", PATTACH_ABSORIGIN_FOLLOW, self, 0) + else + timer.Stop("Particle?"..self:EntIndex()) + end + end) + timer.Simple(0.2, function() + if CLIENT then + self:StopParticles() + end + end) + + end + self.LifeTime = self.BaseLifeTime + self.NextDie = CurTime() + self.LifeTime + +end + +function ENT:Think() + if (self:WaterLevel() > 1) then + + self:StopParticles() + self:Remove() + return false + + end + if CurTime()>=self.NextDie then + self:StopParticles() + self:Remove() + return false + end + + if GetConVar("tf_pyrovision"):GetBool() then + self.HitSound = Sound("Weapon_Rainblower.FireHit") + self.HitLoopSound = Sound("Weapon_Rainblower.FireHit") + end + + local vel = self:GetVelocity() + -- More like AddVelocity, this adds a vector, it doesn't actually set it + self:SetVelocity(-self.DragCoefficient * self.ThinkTime * vel * 0.6 + Vector(0,0,self.Buoyancy * self.ThinkTime)) + + self:NextThink(CurTime() + 0.2) + return true +end + +function ENT:Hit(ent) + self.Touch = nil + + if self:IsWorld() then return end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + if ent:IsTFPlayer() and !ent:IsFriendly(owner) or (ent:GetClass()=="prop_physics") then + if not ent.FlameBurnSound then + local rf = RecipientFilter() + rf:AddAllPlayers() + ent.FlameBurnSound = CreateSound(ent, self.HitSound,rf) + ent.FlameBurnSound = CreateSound(ent, self.HitLoopSound,rf) + end + + if not ent.NextStopBurnSound or CurTime()>ent.NextStopBurnSound then + ent.FlameBurnSound:Play() + end + ent.NextStopBurnSound = CurTime() + 0.2 + end + + local damage = self:CalculateDamage() + + self:StopParticles() + + if (!ent:IsFriendly(owner)) then + local dmginfo = DamageInfo() + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(damage) + if ent:IsTFPlayer() then + if IsValid(self:GetOwner():GetActiveWeapon():GetItemData()) and self:GetOwner():GetActiveWeapon():GetItemData().model_player == "models/workshop/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator.mdl" then + dmginfo:SetDamageType(DMG_DISSOLVE) + else + dmginfo:SetDamageType(DMG_GENERIC) + end + else + dmginfo:SetDamageType(DMG_BURN) + end + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(self:GetVelocity()) + ent:TakeDamageInfo(dmginfo) + GAMEMODE:IgniteEntity(ent, self, owner, 10) + end + + self:StopParticles() + self:Fire("kill", "", 0.01) +end + +function ENT:Touch(ent) + if not ent:IsTrigger() and ent~=self:GetOwner() and gamemode.Call("ShouldCollide",self,ent) then + self:Hit(ent) + end +end + +hook.Add("Think", "FlameBurnSoundThink", function() + for _,v in pairs(ents.GetAll()) do + if v.FlameBurnSound and (not v.NextStopBurnSound or CurTime()>v.NextStopBurnSound) then + v.NextStopBurnSound = nil + v.FlameBurnSound:Stop() + end + end +end) + +hook.Add("EntityRemoved", "FlameBurnSoundRemove", function(ent) + if ent.FlameBurnSound then + ent.FlameBurnSound:Stop() + ent.FlameBurnSound = nil + end +end) + +end diff --git a/gamemodes/tf/entities/entities/tf_hat/shared.lua b/gamemodes/tf/entities/entities/tf_hat/shared.lua new file mode 100644 index 000000000..b0a98f486 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_hat/shared.lua @@ -0,0 +1,3844 @@ + +DEFINE_BASECLASS( "base_gmodentity" ) + +local TranslateCModelToVModel = { + ["models/weapons/c_models/c_targe/c_targe.mdl"] = "models/weapons/c_models/c_v_targe/c_v_targe.mdl", +} + +function ENT:GetHatData() + return PlayerHats[self:GetNWString("HatName")] +end + +function ENT:GetHatModel() + local name = self:GetNWString("HatName") + local data = PlayerHats[name] + if data and not data.nomodel then + return "models/player/items/"..(data.model or name)..".mdl" + end +end + +function ENT:SetupSkinAndBodygroups(ent) + local hatdata = self:GetHatData() + + if hatdata then + if hatdata.skin then + ent:SetSkin(hatdata.skin) + else + if self:GetOwner():Team()==TEAM_BLU then + ent:SetSkin(1) + else + ent:SetSkin(0) + end + end + + if hatdata.perclassbodygroup then + local mdlname = self:GetOwner():GetPlayerClassTable().ModelName + if mdlname and ClassToMedalBodygroup[mdlname] then + ent:SetBodygroup(1, ClassToMedalBodygroup[mdlname]) + end + end + + ent:StopParticles() + if hatdata.particles then + for a,p in pairs(hatdata.particles) do + local att = ent:LookupAttachment(a) + if att and att > 0 then + ParticleEffectAttach(p, PATTACH_POINT_FOLLOW, ent, att) + else + ParticleEffectAttach(p, PATTACH_ABSORIGIN_FOLLOW, ent, 0) + end + end + end + end +end + +function ENT:SetupPlayerBodygroups(pl) + local hatdata = self:GetHatData() + + pl = pl or self:GetOwner() + + if hatdata and hatdata.hide then + local mdlname = self:GetOwner():GetPlayerClassTable().ModelName + if PlayerNamedBodygroups[mdlname] then + for _,v in ipairs(hatdata.hide) do + local d = PlayerNamedBodygroups[mdlname][v] + if d then + pl:SetBodygroup(d,1) + end + end + end + end +end + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "ShowInViewModel") +end + +function ENT:ShowsInViewModel() + return self.dt.ShowInViewModel +end + +if CLIENT then + +function ENT:DrawInViewModel(vm, wep) + --print(self:GetOwner()) + if not wep.AddedCModels then + wep.AddedCModels = {} + end + + if not IsValid(wep.AddedCModels[self]) then + local mdlname = TranslateCModelToVModel[self:GetModel()] or self:GetModel() + + cm = ClientsideModel(mdlname) + cm:SetPos(vm:GetPos()) + cm:SetAngles(vm:GetAngles()) + cm:AddEffects(EF_BONEMERGE) + cm:SetParent(vm) + cmself.WModel2:SetNoDraw(true) + + wep.AddedCModels[self] = cm + end + + wep.AddedCModels[self]:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +function ENT:Initialize() + local hatdata + + if self.HatName then + hatdata = PlayerHats[self.HatName] + end + + if hatdata then + self:SetNWString("HatName", self.HatName) + self.Model = self:GetHatModel() + else + self:SetNWString("HatName", "") + end + + if self.Model then + self:SetModel(self.Model) + self:SetKeyValue("effects", "1") + else + self:SetNoDraw(true) + self:DrawShadow(false) + end + + self:SetMoveType(MOVETYPE_NONE) + self:SetSolid(SOLID_NONE) + + local pl = self.Player or player.GetAll()[1] + self:SetPos(pl:GetPos()) + self:SetAngles(pl:GetAngles()) + self:SetParent(pl) + self:SetOwner(pl) + + self:SetupSkinAndBodygroups(self) + self:SetupPlayerBodygroups() + + local att = self.Attributes or {} + if att.show_in_vmodel then + self.dt.ShowInViewModel = true + else + self.dt.ShowInViewModel = false + end +end + +hook.Add("DoPlayerDeath", "TFHatDisable", function(pl) + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner()==pl then + v:SetKeyValue("effects", "0") + v:SetParent() + v:SetNoDraw(true) + v:DrawShadow(false) + v.Dead = true + end + end +end) + +hook.Add("PlayerHurt", "TFHatDisable2", function(pl) + for k,v in pairs(ents.FindByClass("tf_weapon_invis_dringer")) do + if v.Owner == pl then + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner()==pl then + v:SetKeyValue("effects", "0") + v:SetParent() + v:SetNoDraw(true) + v:DrawShadow(false) + v.Dead = true + end + end + end + end +end) + +hook.Add("PlayerSpawn", "TFHatCleanup", function(pl) + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner()==pl and v.Dead then + v:Remove() + end + end +end) + +end + +local ActivityTranslateFixTF2 = {} + +if CLIENT then + + hook.Add("PlayerFireAnimationEvent","OnStepEventPlayStepSound",function( pl, pos, ang, event, name ) + if ((event == 7001 or event == 7002) and !pl:GetNWBool("Taunting",false) and !pl:GetNWBool("Congaing",false) and !pl:GetNWBool("Russian",false)) then + + local tr = util.TraceLine( { + start = pl:GetPos() + Vector(0,0,72), + endpos = pl:GetPos() - Vector(0,0,4) * 8, + mask = MASK_PLAYERSOLID_BRUSHONLY, + collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT + } ) + --debugoverlay.Line( pl:GetPos() + Vector(0,0,72), pl:GetPos() - Vector(0,0,4) * 4, 1, Color(255,255,255) ) + if (pl:GetModel() == "models/bots/headless_hatman.mdl") then + pl:EmitSound("Halloween.HeadlessBossFootfalls") + ParticleEffectAttach("halloween_boss_foot_impact", PATTACH_ABSORIGIN,pl,0) + else + if (tr.MatType == MAT_CONCRETE) then + + pl:EmitSound("Concrete.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_DEFAULT) then + + pl:EmitSound("Default.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_GRASS) then + + pl:EmitSound("Grass.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_DIRT) then + + pl:EmitSound("Dirt.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_METAL) then + + pl:EmitSound("SolidMetal.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_SNOW) then + + pl:EmitSound("Snow.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_PLASTIC) then + + pl:EmitSound("Plastic.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_FLESH || tr.MatType == MAT_BLOODYFLESH) then + + pl:EmitSound("Flesh.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_SAND) then + + pl:EmitSound("Sand.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_SLOSH) then + + pl:EmitSound("Mud.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_TILE) then + + pl:EmitSound("Tile.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_VENT) then + + pl:EmitSound("MetalVent.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_COMPUTER) then + + pl:EmitSound("MetalVent.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_FOLIAGE) then + + pl:EmitSound("Grass.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_WOOD) then + + pl:EmitSound("Wood.Step"..table.Random({"Right","Left"})) + + elseif (tr.MatType == MAT_GRATE) then + + pl:EmitSound("MetalGrate.Step"..table.Random({"Right","Left"})) + + end + end + + end + end) + +end + +hook.Add( "PlayerSwitchWeapon", "SetTF2Hands", function( ply, oldWeapon, newWeapon ) + if SERVER then + if (!ply:IsHL2() and !ply:IsL4D()) then + timer.Simple(0.1, function() + + GAMEMODE:PlayerSetHandsModel( ply, ply:GetHands() ) + + end) + end + end +end) + +hook.Add("EntityTakeDamage", "InfectedHurt", function(ent,dmginfo) + if (ent:IsPlayer()) then + if (dmginfo:GetAttacker():IsPlayer() and dmginfo:GetAttacker():IsL4D() and dmginfo:GetAttacker():EntityTeam(ent) != ent:Team()) then + if (ent:Health() > 0) then + ent:EmitSound("PlayerZombie.AttackHit") + end + end + if (dmginfo:GetAttacker():IsPlayer() and dmginfo:GetAttacker():EntityTeam(ent) == ent:Team()) then + if (ent:IsL4D() and ent:Health() > 0) then + dmginfo:ScaleDamage(0.3) + ent:SetViewPunchAngles(Angle(math.random(-4,4),math.random(-4,4),math.random(-4,4))) + dmginfo:SetDamageForce(Vector(0,0,0)) + timer.Simple(0.0001, function() + ent:SetLocalVelocity(ent:GetAimVector() * ent:GetClassSpeed()) + end) + --[[ + if (ent:GetPlayerClass() == "tank_l4d") then + dmginfo:SetDamageForce(Vector(0,0,0)) + timer.Simple(0.0001, function() + ent:SetLocalVelocity(ent:GetAimVector() * ent:GetClassSpeed()) + end) + else + dmginfo:SetDamageForce(Vector(0,0,0)) + timer.Simple(0.0001, function() + ent:SetLocalVelocity(Vector(0,0,0)) + end) + end + ]] + if (ent:GetPlayerClass() == "boomer") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_BoomerZombie.Pain") + + else + + ent:EmitSound("BoomerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_BoomerZombie.PainShort") + + else + + ent:EmitSound("BoomerZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "smoker") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_SmokerZombie.Pain") + + else + + ent:EmitSound("SmokerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_SmokerZombie.PainShort") + + else + + ent:EmitSound("SmokerZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "hunter") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HunterZombie.Pain") + + else + + ent:EmitSound("HunterZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HunterZombie.PainShort") + + else + + ent:EmitSound("HunterZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "tank_l4d") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HulkZombie.Pain") + + else + + ent:EmitSound("HulkZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HulkZombie.Pain") + + else + + ent:EmitSound("HulkZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "charger") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_ChargerZombie.Pain") + + else + + ent:EmitSound("ChargerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_ChargerZombie.Pain") + + else + + ent:EmitSound("ChargerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "jockey") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_JockeyZombie.Pain") + + else + + ent:EmitSound("JockeyZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_JockeyZombie.PainShort") + + else + + ent:EmitSound("JockeyZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "spitter") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("SpitterZombie.Pain") + + else + + ent:EmitSound("SpitterZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + --ent:Ignite(30,90) + --dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("SpitterZombie.PainShort") + + else + + ent:EmitSound("SpitterZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + --dmginfo:ScaleDamage(1.5) + end + end + end + else + if (ent:IsL4D() and ent:Health() > 0) then + dmginfo:SetDamageForce(Vector(0,0,0)) + ent:SetViewPunchAngles(Angle(math.random(-4,4),math.random(-4,4),math.random(-4,4))) + local oldvelocity = ent:GetVelocity() + if (ent:GetPlayerClass() == "tank_l4d") then + dmginfo:SetDamageForce(Vector(0,0,0)) + timer.Simple(0.0001, function() + ent:SetLocalVelocity(oldvelocity + ent:GetAimVector() * 4) + end) + else + dmginfo:SetDamageForce(Vector(0,0,0)) + timer.Simple(0.0001, function() + ent:SetLocalVelocity(Vector(0,0,0)) + end) + end + if (ent:GetPlayerClass() == "boomer") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_BoomerZombie.Pain") + + else + + ent:EmitSound("BoomerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_BoomerZombie.PainShort") + + else + + ent:EmitSound("BoomerZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.2) + end + elseif (ent:GetPlayerClass() == "smoker") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_SmokerZombie.Pain") + + else + + ent:EmitSound("SmokerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_SmokerZombie.PainShort") + + else + + ent:EmitSound("SmokerZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.2) + end + elseif (ent:GetPlayerClass() == "hunter") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HunterZombie.Pain") + + else + + ent:EmitSound("HunterZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HunterZombie.PainShort") + + else + + ent:EmitSound("HunterZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.2) + end + elseif (ent:GetPlayerClass() == "tank_l4d") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HulkZombie.Pain") + + else + + ent:EmitSound("HulkZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_HulkZombie.Pain") + + else + + ent:EmitSound("HulkZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.5) + end + elseif (ent:GetPlayerClass() == "charger") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_ChargerZombie.Pain") + + else + + ent:EmitSound("ChargerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_ChargerZombie.Pain") + + else + + ent:EmitSound("ChargerZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.2) + end + elseif (ent:GetPlayerClass() == "jockey") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_JockeyZombie.Pain") + + else + + ent:EmitSound("JockeyZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("L4D1_JockeyZombie.PainShort") + + else + + ent:EmitSound("JockeyZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.2) + end + elseif (ent:GetPlayerClass() == "spitter") then + if (dmginfo:IsDamageType(DMG_BURN)) then + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.5) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("SpitterZombie.Pain") + + else + + ent:EmitSound("SpitterZombie.Pain") + + end + ent.NextSpeak = CurTime() + 0.65 + end + ent:Ignite(30,90) + dmginfo:ScaleDamage(3) + else + if (!ent.NextSpeak or CurTime() > ent.NextSpeak) then + timer.Adjust("VoiceL4d"..ent:EntIndex(), 1.0) + if (string.find(ent:GetModel(),"l4d1")) then + + ent:EmitSound("SpitterZombie.PainShort") + + else + + ent:EmitSound("SpitterZombie.PainShort") + + end + ent.NextSpeak = CurTime() + 0.7 + end + dmginfo:ScaleDamage(1.2) + end + end + end + end + end +end) + +hook.Add( "PlayerNoClip", "FriendlyNoclip", function( ply, desiredState ) + if (ply:Team() == TEAM_FRIENDLY) then + return true + end +end) + +-- Porting from Latest TF2 GM Builds, and edited. +hook.Add("EntityEmitSound", "MouthFix", function(snd) + local p = snd.Pitch + + if ( game.GetTimeScale() != 1 ) then + p = p * game.GetTimeScale() + end + + if ( GetConVarNumber( "host_timescale" ) != 1 && GetConVarNumber( "sv_cheats" ) >= 1 ) then + p = p * GetConVarNumber( "host_timescale" ) + end + + if ( p != snd.Pitch ) then + snd.Pitch = math.Clamp( p, 0, 255 ) + return true + end + + if ( CLIENT && engine.GetDemoPlaybackTimeScale() != 1 ) then + snd.Pitch = math.Clamp( snd.Pitch * engine.GetDemoPlaybackTimeScale(), 0, 255 ) + return true + end + + if (IsValid(snd.Entity)) then + if (snd.Entity.TFBot) then + if ( math.random(1,2+(table.Count(player.GetAll())*4))) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),22000)) do + if ((--[[v:IsTFPlayer() || ]]v:IsPlayer() && v.TFBot) and !IsValid(v.TargetEnt) and v:EntIndex( ) != snd.Entity:EntIndex()) then + local oldangles = v:EyeAngles() + + -- for improved npcs only + --[[if (SERVER and v:IsNPC() and !v:IsFriendly(snd.Entity) and snd.Entity:Team() != TEAM_NEUTRAL) then + if (v:GetCurrentSchedule() != SCHED_FORCED_GO_RUN) then + v:AlertSound() + v:SetSaveValue( "m_vecLastPosition", snd.Entity:GetPos() ) + v:SetSchedule( SCHED_FORCED_GO_RUN ) + end + else]] + if (v:IsTFPlayer()) then + snd.Entity.LookAtEntity = v + timer.Stop("Look"..v:EntIndex()) + local discoverychance = 90 + if (snd.Entity.Difficulty == 2) then + discoverychance = 60 + elseif (snd.Entity.Difficulty == 1) then + discoverychance = 30 + elseif (snd.Entity.Difficulty == 0) then + discoverychance = 10 + end + if (discoverychance > math.random(1,100)) then + if (!snd.Entity.LookAtEntity:IsFlagSet(FL_NOTARGET) && snd.Entity.LookAtEntity:EntityTeam() ~= TEAM_NEUTRAL) then + if (!IsValid(snd.Entity.TargetEnt) and snd.Entity.LookAtEntity:GetPos():Distance(v:GetPos()) < 500) then + if (snd.Entity.LookAtEntity:IsTFPlayer() and !snd.Entity.LookAtEntity:IsFriendly(v) and !IsValid(snd.Entity.TargetEnt)) then + snd.Entity.TargetEnt = snd.Entity.LookAtEntity + end + end + end + end + + timer.Stop("GoBack"..v:EntIndex()) + end + end + end + + end + end + if math.random(1,2+(table.Count(player.GetAll())*4)) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),22000)) do + if ((--[[v:IsTFPlayer() || ]]v:IsPlayer() && v.TFBot) and !IsValid(v.TargetEnt) and v:EntIndex( ) != snd.Entity:EntIndex()) then + local oldangles = v:EyeAngles() + + -- for improved npcs only + --[[if (SERVER and v:IsNPC() and !v:IsFriendly(snd.Entity) and snd.Entity:Team() != TEAM_NEUTRAL) then + if (v:GetCurrentSchedule() != SCHED_FORCED_GO_RUN) then + v:AlertSound() + v:SetSaveValue( "m_vecLastPosition", snd.Entity:GetPos() ) + v:SetSchedule( SCHED_FORCED_GO_RUN ) + end + else]] + if (v:IsPlayer()) then + v.LookAtEntity = snd.Entity + timer.Stop("Look"..v:EntIndex()) + local discoverychance = 90 + if (v.Difficulty == 2) then + discoverychance = 60 + elseif (v.Difficulty == 1) then + discoverychance = 30 + elseif (v.Difficulty == 0) then + discoverychance = 10 + end + if (discoverychance > math.random(1,100)) then + if (!v.LookAtEntity:IsFlagSet(FL_NOTARGET) && v.LookAtEntity:EntityTeam() ~= TEAM_NEUTRAL) then + if (!IsValid(v.TargetEnt) and v.LookAtEntity:GetPos():Distance(v:GetPos()) < 500) then + if (v.LookAtEntity:IsTFPlayer() and !v.LookAtEntity:IsFriendly(v) and !IsValid(v.TargetEnt)) then + v.TargetEnt = v.LookAtEntity + end + end + end + end + + timer.Stop("GoBack"..v:EntIndex()) + end + end + end + end + local sound = string.Replace(snd.SoundName, ".mp3", ".wav") + if (file.Exists("sound/"..sound, "WORKSHOP")) then + if (!string.find(snd.SoundName,"announcer_") && !string.find(snd.SoundName,"mvm_")) then + snd.SoundName = string.Replace(snd.SoundName, ".mp3", ".wav") + end + else + if (string.find(snd.SoundName,"vo/")) then + snd.SoundName = string.Replace(snd.SoundName, ".wav", ".mp3") + end + end + if (GetConVar("civ2_randomizer"):GetBool()) then + if (!snd.Entity.IsRandomized) then + for i=0,snd.Entity:GetBoneCount() do + snd.Entity:ManipulateBoneJiggle( i, 1 ) + end + snd.Entity.IsRandomized = true + end + elseif (!GetConVar("civ2_randomizer"):GetBool()) then + if (snd.Entity.IsRandomized) then + for i=0,snd.Entity:GetBoneCount() do + snd.Entity:ManipulateBoneJiggle( i, 0 ) + end + snd.Entity.IsRandomized = false + end + end + end + if (GetConVar("civ2_randomizer"):GetBool()) then + snd.DSP = table.Random({0,0,0,0,134,135}) + if (IsMounted("hl1") and math.random(1,5) == 1) then + if (math.random(1,42) == 1) then + snd.SoundName = table.Random({"agrunt/"..table.Random(file.Find("sound/agrunt/*","hl1"))}) + elseif (math.random(1,42) == 2) then + snd.SoundName = table.Random({"ambience/"..table.Random(file.Find("sound/ambience/*","hl1"))}) + elseif (math.random(1,42) == 3) then + snd.SoundName = table.Random({"apache/"..table.Random(file.Find("sound/apache/*","hl1"))}) + elseif (math.random(1,42) == 4) then + snd.SoundName = table.Random({"aslave/"..table.Random(file.Find("sound/aslave/*","hl1"))}) + elseif (math.random(1,42) == 5) then + snd.SoundName = table.Random({"barnacle/"..table.Random(file.Find("sound/barnacle/*","hl1"))}) + elseif (math.random(1,42) == 6) then + snd.SoundName = table.Random({"barney/"..table.Random(file.Find("sound/barney/*","hl1"))}) + elseif (math.random(1,42) == 7) then + snd.SoundName = table.Random({"boid/"..table.Random(file.Find("sound/boid/*","hl1"))}) + elseif (math.random(1,42) == 8) then + snd.SoundName = table.Random({"bullchicken/"..table.Random(file.Find("sound/bullchicken/*","hl1"))}) + elseif (math.random(1,42) == 9) then + snd.SoundName = table.Random({"buttons/"..table.Random(file.Find("sound/buttons/*","hl1"))}) + elseif (math.random(1,42) == 10) then + snd.SoundName = table.Random({"common/"..table.Random(file.Find("sound/common/*","hl1"))}) + elseif (math.random(1,42) == 11) then + snd.SoundName = table.Random({"controller/"..table.Random(file.Find("sound/controller/*","hl1"))}) + elseif (math.random(1,42) == 12) then + snd.SoundName = table.Random({"debris/"..table.Random(file.Find("sound/debris/*","hl1"))}) + elseif (math.random(1,42) == 13) then + snd.SoundName = table.Random({"doors/"..table.Random(file.Find("sound/doors/*","hl1"))}) + elseif (math.random(1,42) == 14) then + snd.SoundName = table.Random({"fans/"..table.Random(file.Find("sound/fans/*","hl1"))}) + elseif (math.random(1,42) == 15) then + snd.SoundName = table.Random({"fvox/"..table.Random(file.Find("sound/fvox/*","hl1"))}) + elseif (math.random(1,42) == 16) then + snd.SoundName = table.Random({"garg/"..table.Random(file.Find("sound/garg/*","hl1"))}) + elseif (math.random(1,42) == 17) then + snd.SoundName = table.Random({"gman/"..table.Random(file.Find("sound/gman/*","hl1"))}) + elseif (math.random(1,42) == 18) then + snd.SoundName = table.Random({"gonarch/"..table.Random(file.Find("sound/gonarch/*","hl1"))}) + elseif (math.random(1,42) == 19) then + snd.SoundName = table.Random({"hassault/"..table.Random(file.Find("sound/hassault/*","hl1"))}) + elseif (math.random(1,42) == 20) then + snd.SoundName = table.Random({"headcrab/"..table.Random(file.Find("sound/headcrab/*","hl1"))}) + elseif (math.random(1,42) == 21) then + snd.SoundName = table.Random({"hgrunt/"..table.Random(file.Find("sound/hgrunt/*","hl1"))}) + elseif (math.random(1,42) == 22) then + snd.SoundName = table.Random({"holo/"..table.Random(file.Find("sound/holo/*","hl1"))}) + elseif (math.random(1,42) == 23) then + snd.SoundName = table.Random({"hornet/"..table.Random(file.Find("sound/hornet/*","hl1"))}) + elseif (math.random(1,42) == 24) then + snd.SoundName = table.Random({"houndeye/"..table.Random(file.Find("sound/houndeye/*","hl1"))}) + elseif (math.random(1,42) == 25) then + snd.SoundName = table.Random({"ichy/"..table.Random(file.Find("sound/ichy/*","hl1"))}) + elseif (math.random(1,42) == 26) then + snd.SoundName = table.Random({"items/"..table.Random(file.Find("sound/items/*","hl1"))}) + elseif (math.random(1,42) == 27) then + snd.SoundName = table.Random({"misc/"..table.Random(file.Find("sound/misc/*","hl1"))}) + elseif (math.random(1,42) == 28) then + snd.SoundName = table.Random({"plats/"..table.Random(file.Find("sound/plats/*","hl1"))}) + elseif (math.random(1,42) == 29) then + snd.SoundName = table.Random({"player/"..table.Random(file.Find("sound/player/*","hl1"))}) + elseif (math.random(1,42) == 30) then + snd.SoundName = table.Random({"roach/"..table.Random(file.Find("sound/roach/*","hl1"))}) + elseif (math.random(1,42) == 31) then + snd.SoundName = table.Random({"scientist/"..table.Random(file.Find("sound/scientist/*","hl1"))}) + elseif (math.random(1,42) == 32) then + snd.SoundName = table.Random({"squeek/"..table.Random(file.Find("sound/squeek/*","hl1"))}) + elseif (math.random(1,42) == 33) then + snd.SoundName = table.Random({"tentacle/"..table.Random(file.Find("sound/tentacle/*","hl1"))}) + elseif (math.random(1,42) == 34) then + snd.SoundName = table.Random({"tride/"..table.Random(file.Find("sound/tride/*","hl1"))}) + elseif (math.random(1,42) == 35) then + snd.SoundName = table.Random({"turret/"..table.Random(file.Find("sound/turret/*","hl1"))}) + elseif (math.random(1,42) == 36) then + snd.SoundName = table.Random({"ui/"..table.Random(file.Find("sound/ui/*","hl1"))}) + elseif (math.random(1,42) == 37) then + snd.SoundName = table.Random({"vox/"..table.Random(file.Find("sound/vox/*","GAME"))}) + elseif (math.random(1,42) == 38) then + snd.SoundName = table.Random({"weapons/"..table.Random(file.Find("sound/weapons/*","hl1"))}) + elseif (math.random(1,42) == 39) then + snd.SoundName = table.Random({"x/"..table.Random(file.Find("sound/x/*","hl1"))}) + elseif (math.random(1,42) == 40) then + snd.SoundName = table.Random({"zombie/"..table.Random(file.Find("sound/zombie/*","hl1"))}) + else + snd.SoundName = table.Random({"hgrunt/"..table.Random(file.Find("sound/hgrunt/*","hl1"))}) + end + return true + else + local theTable = table.Random(sound.GetTable()) + snd.SoundName = sound.GetProperties(theTable).sound + return true + end + end + if (snd.Entity:IsPlayer() and !snd.Entity:IsHL2()) then + if CLIENT then + if !IsValid(snd.Entity) then return end + local pl = snd.Entity + if (snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + if (!pl:IsL4D() and !pl:IsBot()) then + if (pl:GetPlayerClass() != "gmodplayer") then + --pl:SetModel(pl:GetNWString("PlayerClassModel")) + end + elseif (pl:IsL4D()) then + --pl:SetModel(pl:GetNWString("L4DModel")) + end + end + + end + elseif (snd.Entity:IsPlayer() and snd.Entity:IsHL2()) then + if CLIENT and !snd.Entity:IsBot() then + if !IsValid(snd.Entity) then return end + if (snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + ----snd.Entity:SetModel(snd.Entity:GetNWString("PlayerClassModel")) + end + end + + --[[ +if (IsMounted("left4dead") or IsMounted("left4dead2")) then + local pos = snd.Entity:GetPos() + if (snd.Pos) then + pos = snd.Pos + end + if (snd.Channel == CHAN_BODY) then + if (math.random(1,6) != 1) then + snd.Channel = CHAN_STATIC + return true + end + end + end]] + if (snd.Entity:GetClass() == "infected_this_is_not_needed_anymore_why") then + if (string.find(snd.Entity:GetModel(),"clown")) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + if (IsValid(snd.Entity:GetEnemy())) then + v:SetEnemy(snd.Entity:GetEnemy()) + + end + end + end + + end + end + if (snd.Entity:IsTFPlayer() and GAMEMODE:EntityTeam(snd.Entity) != TEAM_GREEN) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),1800)) do + if ((v:IsPlayer() && v.TFBot) and !IsValid(v.TargetEnt) and v:GetPos():Distance(snd.Entity:GetPos()) < 400) then + --v.TargetEnt = snd.Entity + end + end + + end + if (snd.Entity:IsTFPlayer() and !snd.Entity:IsNextBot()) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),400)) do + + if (v:IsPlayer() and v.TFBot and !v:IsFriendly(snd.Entity) and v.TargetEnt == nil) then + --v.TargetEnt = snd.Entity + elseif (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + v:SetEnemy(snd.Entity) + + + if SERVER then + --[[ +local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true)]] + end + + timer.Stop("IdleExpression"..v:EntIndex()) + timer.Stop("AngryExpression"..v:EntIndex()) + timer.Create("AngryExpression"..v:EntIndex(), 3, 0, function() + + if SERVER then + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true) + end + + timer.Adjust("AngryExpression"..v:EntIndex(),v:SequenceDuration(anim)) + end) + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + elseif (v:IsPlayer() and v.TFBot and !v:IsFriendly(snd.Entity) and v.TargetEnt == nil) then + --v.TargetEnt = snd.Entity + end + end + end + end +end) + +hook.Add( "DrawWorldModel", "DrawWorldModelTF2", function( swep,flags ) + + swep.WModel = ClientsideModel(swep.WorldModel) + + -- Settings... + swep.WModel:SetNoDraw(true) + + function SWEP:DrawWorldModel() + local _Owner = swep:GetOwner() + + if (IsValid(_Owner)) then + -- Specify a good position + swep.WModel:SetSkin(swep.WeaponSkin) + swep.WModel:SetModel(swep.WorldModel) + + local boneid = _Owner:LookupBone("ValveBiped.Bip01_R_Hand") or _Owner:LookupBone("weapon_bone") -- Right Hand + if !boneid then return end + + local matrix = _Owner:GetBoneMatrix(boneid) + if !matrix then return end + + local offsetVec = Vector(0, -2, 0) + local offsetAng = Angle(170, 180, 0) + if (boneid == _Owner:LookupBone("weapon_bone")) then + local offsetVec = Vector(0, -2, 5) + local offsetAng = Angle(-90, -90, 0) + local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles()) + + swep.WModel:SetPos(newPos) + swep.WModel:SetAngles(newAng) + + swep.WModel:SetupBones() + swep.WModel:DrawModel() + end + end + end + +end) + +hook.Add("Think","Bacterias",function() + if SERVER then + for k,v in ipairs(player.GetAll()) do + if (v.Whistle and v.Whistle:IsPlaying() and v.m_flBlastJumpLaunchTime) then + local flTimeAloft = CurTime() - v.m_flBlastJumpLaunchTime; + local flPitch = math.Remap( flTimeAloft, 0.1, 3, 200, 100 ); + local flVolume = math.Remap( flTimeAloft, 0.1, 2, 0.25, 0.95 ); + if (flPitch < 100) then + flPitch = 100 + end + v.Whistle:ChangePitch( flPitch, 0.1 ); + v.Whistle:ChangeVolume( flVolume, 0.1 ) + end + + if (v.Whistle and v.Whistle:IsPlaying() and v:IsOnGround()) then + if (v.Whistle:IsPlaying()) then + v.Whistle:Stop() + v.m_flBlastJumpLaunchTime = nil + end + end + end + end + if (math.random(1,3+(table.Count(player.GetAll())*0.4)) == 1) then + for k,v in ipairs(player.GetAll()) do + + if (v:WaterLevel() > 2 and !v.IsUnderWater) then + PrecacheParticleSystem("water_playerdive") + ParticleEffectAttach("water_playerdive", PATTACH_ABSORIGIN_FOLLOW, v, 0) + v.IsUnderWater = true + elseif (v:WaterLevel() < 2 and v.IsUnderWater) then + PrecacheParticleSystem("water_playeremerge") + ParticleEffectAttach("water_playeremerge", PATTACH_ABSORIGIN_FOLLOW, v, 0) + v.IsUnderWater = false + end + local pl = v + end + end + if (math.random(1,150) == 1 and SERVER) then + for k,v in ipairs(player.GetAll()) do + if (v:Alive()) then + if (v:GetPlayerClass() == "boomer") then + if (math.random(1,5) == 1) then + v:EmitSound(table.Random({"Event.BoomerAlert","Event.BoomerAlert","Event.BoomerAlert","Event.BoomerAlertClose"})) + end + elseif (v:GetPlayerClass() == "charger") then + if (math.random(1,5) == 1) then + v:EmitSound(table.Random({"Event.ChargerAlert","Event.ChargerAlert","Event.ChargerAlert","Event.ChargerAlertClose"})) + end + elseif (v:GetPlayerClass() == "hunter") then + if (math.random(1,5) == 1) then + v:EmitSound(table.Random({"Event.HunterAlert","Event.HunterAlert","Event.HunterAlert","Event.HunterAlertClose"})) + end + elseif (v:GetPlayerClass() == "smoker") then + if (math.random(1,5) == 1) then + v:EmitSound(table.Random({"Event.SmokerAlert","Event.SmokerAlert","Event.SmokerAlert","Event.SmokerAlertClose"})) + end + elseif (v:GetPlayerClass() == "jockey") then + if (math.random(1,5) == 1) then + v:EmitSound(table.Random({"Event.JockeyAlert","Event.JockeyAlert","Event.JockeyAlert","Event.JockeyAlertClose"})) + end + elseif (v:GetPlayerClass() == "spitter") then + if (math.random(1,5) == 1) then + v:EmitSound(table.Random({"Event.SpitterAlert","Event.SpitterAlert","Event.SpitterAlert","Event.SpitterAlertClose"})) + end + end + end + end + end +end) + +timer.Create("FixImprovedNPCsConflict",0.1,0, function() + hook.Remove("Think","DeviantartistThink") + hook.Remove("Think","DeviantartistThink2") + --hook.Remove("EntityTakeDamage", "DamageShit") +end) + +hook.Remove("TranslateActivity", "TF2PMStuff") +hook.Add("TranslateActivity", "TF2PMStuff2", function(pl, act) + local holdtype + if (IsValid(pl:GetActiveWeapon())) then + holdtype = pl:GetActiveWeapon().HoldType or pl:GetActiveWeapon():GetHoldType() + end + if (pl:GetModel() == "models/player/hwm/scout.mdl" || pl:GetModel() == "models/player/hwm/engineer.mdl" || pl:GetModel() == "models/player/scout.mdl" || pl:GetModel() == "models/player/engineer.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "shotgun" || holdtype == "crossbow" || holdtype == "physgun" || holdtype == "rpg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif (holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/soldier.mdl" or pl:GetModel() == "models/player/soldier.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "pistol" || holdtype == "revolver") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_SECONDARY2")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackstand_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackcrouch_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = pl:GetSequenceActivity(pl:LookupSequence("reloadstand_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = pl:GetSequenceActivity(pl:LookupSequence("reloadcrouch_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_JUMP] = pl:GetSequenceActivity(pl:LookupSequence("jump_start_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_SECONDARY2")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_SECONDARY2")) + elseif (holdtype == "rpg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "crossbow" || holdtype == "physgun" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif (holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + end + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/heavy.mdl" or pl:GetModel() == "models/player/heavy.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackCrouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/sniper.mdl" or pl:GetModel() == "models/player/sniper.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackCrouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/demo.mdl" or pl:GetModel() == "models/player/demo.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" || holdtype == "pistol" || holdtype == "smg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "physgun" || holdtype == "revolver" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackCrouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/medic.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "shotgun" || holdtype == "rpg" || holdtype == "crossbow" || holdtype == "pistol" || holdtype == "smg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "physgun" || holdtype == "revolver" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackCrouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/pyro.mdl" or pl:GetModel() == "models/player/pyro.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "pistol" || holdtype == "smg" || holdtype == "physgun" || holdtype == "revolver" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee2" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackCrouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/player/hwm/spy.mdl" or pl:GetModel() == "models/player/spy.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("swim_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" || holdtype == "shotgun" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "knife") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = ACT_MP_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = ACT_MP_ATTACK_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_CROUCH_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("crouch_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("crouch_walk_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("MELEE_ALLCLASS_swing")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("MELEE_ALLCLASS_crouch_swing")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_CROUCH_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_SWIM_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/scout/bot_scout.mdl" || pl:GetModel() == "models/bots/engineer/bot_engineer.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "shotgun" || holdtype == "crossbow" || holdtype == "physgun" || holdtype == "rpg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif (holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/soldier/bot_soldier.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "crossbow" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif (holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/heavy/bot_heavy.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackstand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/sniper/bot_sniper.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackstand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/demo/bot_demo.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" || holdtype == "pistol" || holdtype == "smg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "physgun" || holdtype == "revolver" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackstand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/medic/bot_medic.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "shotgun" || holdtype == "rpg" || holdtype == "crossbow" || holdtype == "pistol" || holdtype == "smg" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "physgun" || holdtype == "revolver" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee2" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackstand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/pyro/bot_pyro.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_PRIMARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_PRIMARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_PRIMARY + elseif (holdtype == "shotgun" || holdtype == "pistol" || holdtype == "smg" || holdtype == "physgun" || holdtype == "revolver" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "melee2" || holdtype == "knife" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_SWIM] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee" || holdtype == "grenade" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_SWIM] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackStand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("attackstand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + elseif (pl:GetModel() == "models/bots/spy/bot_spy.mdl") then + if (IsValid(pl:GetActiveWeapon())) then + if (holdtype == "normal") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + elseif (holdtype == "rpg" || holdtype == "crossbow" || holdtype == "shotgun" || holdtype == "physgun" || holdtype == "pistol" || holdtype == "revolver" || holdtype == "smg" || holdtype == "ar2" || holdtype == "dual" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_RUN_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_SECONDARY + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_SECONDARY + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_SECONDARY + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_SECONDARY + elseif ( holdtype == "knife") then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RUN] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_WALK] = ACT_MP_RUN_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = ACT_MP_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = ACT_MP_CROUCHWALK_MELEE + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = ACT_MP_JUMP_LAND_MELEE + elseif ( holdtype == "melee" || holdtype == "melee2" || holdtype == "grenade" || holdtype == "fist" ) then + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_MELEE_ALLCLASS")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE_ALLCLASS")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("MELEE_ALLCLASS_swing")) + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = pl:GetSequenceActivity(pl:LookupSequence("MELEE_ALLCLASS_stand_swing")) + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_MP_RELOAD_STAND_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = ACT_MP_AIRWALK_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_MELEE_ALLCLASS")) + else + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_RUN] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_WALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_LOSER")) + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("airwalk_LOSER")) + ActivityTranslateFixTF2[ACT_MP_STAND_IDLE] = pl:GetSequenceActivity(pl:LookupSequence("stand_LOSER")) + ActivityTranslateFixTF2[ACT_MP_CROUCHWALK] = pl:GetSequenceActivity(pl:LookupSequence("run_MELEE")) + + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = ACT_MP_ATTACK_STAND_PRIMARYFIRE + ActivityTranslateFixTF2[ACT_MP_RELOAD_STAND] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_RELOAD_CROUCH] = ACT_RELOAD + ActivityTranslateFixTF2[ACT_MP_JUMP] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_AIRWALK] = pl:GetSequenceActivity(pl:LookupSequence("AIRWALK_LOSER")) + ActivityTranslateFixTF2[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_MELEE + ActivityTranslateFixTF2[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_MELEE + ActivityTranslateFixTF2[ACT_LAND] = pl:GetSequenceActivity(pl:LookupSequence("jumpland_LOSER")) + end + + if (!pl:GetActiveWeapon().HoldTypeHL2) then + return ActivityTranslateFixTF2[act] or act + end + end + end +end) +hook.Add("EntityEmitSound", "MVMVoices", function(snd) + + local p = snd.Pitch + + if ( game.GetTimeScale() != 1 ) then + p = p * game.GetTimeScale() + end + + if ( GetConVarNumber( "host_timescale" ) != 1 && GetConVarNumber( "sv_cheats" ) >= 1 ) then + p = p * GetConVarNumber( "host_timescale" ) + end + + if ( p != snd.Pitch ) then + snd.Pitch = math.Clamp( p, 0, 255 ) + end + + if ( CLIENT && engine.GetDemoPlaybackTimeScale() != 1 ) then + snd.Pitch = math.Clamp( snd.Pitch * engine.GetDemoPlaybackTimeScale(), 0, 255 ) + end + + + + if (IsValid(snd.Entity) and snd.Entity:GetModel() and string.find(snd.SoundName,"female") and string.find(snd.Entity:GetModel(),"common_male")) then + snd.SoundName = string.Replace(snd.SoundName, "female", "male") + return true + elseif (IsValid(snd.Entity) and snd.Entity:GetModel() and string.find(snd.SoundName,"male") and string.find(snd.Entity:GetModel(),"common_female")) then + snd.SoundName = string.Replace(snd.SoundName, "male", "female") + return true + end + if string.StartWith(snd.SoundName,"physics/body/") and string.find(snd.SoundName, "impact") and GetConVar("tf_enable_l4d2_ragdoll_sounds"):GetBool() then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "l4d2/physics/body/body_medium_impact_soft"..table.Random({"1","2","5","6","7"})..".wav") + snd.Volume = 0.6 + return true + elseif string.StartWith(snd.SoundName,"physics/body/") and string.find(snd.SoundName, "impact") and GetConVar("tf_enable_hl2_ragdoll_sounds"):GetBool() == false then + snd.SoundName = string.Replace(snd.SoundName, "physics", "tf/physics") + return true + end + --[[ + if (IsMounted("left4dead") or IsMounted("left4dead2")) then + local pos = snd.Entity:GetPos() + if (snd.Pos) then + pos = snd.Pos + end + if (snd.Channel == CHAN_WEAPON) then + if (math.random(1,6) != 1) then + snd.Channel = CHAN_STATIC + return true + end + end + end]] + if (IsValid(snd.Entity) and snd.Entity:IsPlayer()) then + if IsValid(snd.Entity) and snd.Entity:GetModel() and string.find(snd.Entity:GetModel(),"bot_") and !snd.Entity:IsMiniBoss() and string.find(snd.SoundName, "step") then + if (string.find(snd.Entity:GetModel(),"demo") and string.find(snd.Entity:GetModel(),"buster")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/sentrybuster/mvm_sentrybuster_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + snd.Channel = CHAN_STATIC + snd.Pitch = 100 + local speed = snd.Entity:GetVelocity():Length() + local groundspeed = snd.Entity:GetVelocity():Length2DSqr() + if (snd.Entity:IsPlayer()) then + if (snd.Entity:GetMoveType() == MOVETYPE_LADDER) then + snd.Volume = 1 * (groundspeed * 0.000006) + elseif (snd.Entity:IsPlayer() and snd.Entity:Crouching()) then + snd.Volume = 1 * (groundspeed * 0.000006) + else + if (CLIENT and snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + if (LocalPlayer():ShouldDrawLocalPlayer()) then + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + else + snd.Volume = 1 * (groundspeed * 0.00005) + end + else + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000009) + end + end + end + end + else + local speed = snd.Entity:GetVelocity():Length() + local groundspeed = snd.Entity:GetVelocity():Length2DSqr() + snd.Entity:StopSound("mvm/player/footsteps/robostep_01.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_02.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_03.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_04.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_05.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_06.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_07.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_08.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_09.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_10.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_11.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_12.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_13.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_14.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_15.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_16.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_17.wav") + snd.Entity:StopSound("mvm/player/footsteps/robostep_18.wav") + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "mvm/player/footsteps/robostep_"..table.Random({ + "01", + "02", + "03", + "04", + "05", + "06", + "07", + "08", + "09", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + })..".wav") + + snd.Channel = CHAN_STATIC + snd.Pitch = math.random(95,100) + snd.SoundLevel = 87 + if (snd.Entity:IsPlayer()) then + if (snd.Entity:GetMoveType() == MOVETYPE_LADDER) then + snd.Volume = 1 * (groundspeed * 0.000006) + elseif (snd.Entity:IsPlayer() and snd.Entity:Crouching()) then + snd.Volume = 1 * (groundspeed * 0.000006) + else + if (CLIENT and snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + if (LocalPlayer():ShouldDrawLocalPlayer()) then + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + else + snd.Volume = 1 * (groundspeed * 0.00005) + end + else + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000009) + end + end + end + end + snd.Volume = snd.Volume * 0.35 + if (snd.Entity:GetClass() == "infected_this_is_not_needed_anymore_why") then + if (string.find(snd.Entity:GetModel(),"clown")) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + if (IsValid(snd.Entity:GetEnemy())) then + v:SetEnemy(snd.Entity:GetEnemy()) + + end + end + end + + end + end + if (snd.Entity:IsTFPlayer() and GAMEMODE:EntityTeam(snd.Entity) != TEAM_GREEN) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:IsPlayer() and v:IsL4D() and !IsValid(v.TargetEnt) and v.TFBot) then + --v.TargetEnt = snd.Entity + + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + + end + if (snd.Entity:IsTFPlayer() and !snd.Entity:IsNextBot()) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + v:SetEnemy(snd.Entity) + + + if SERVER then + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true) + end + + timer.Stop("IdleExpression"..v:EntIndex()) + timer.Stop("AngryExpression"..v:EntIndex()) + timer.Create("AngryExpression"..v:EntIndex(), 3, 0, function() + + if SERVER then + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true) + end + + timer.Adjust("AngryExpression"..v:EntIndex(),v:SequenceDuration(anim)) + end) + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !v:IsFriendly(npc) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + end + end + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and snd.Entity:IsPlayer() and snd.Entity:IsHL2() and (string.find(snd.SoundName, "fallpain") or string.find(snd.SoundName, "damage")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/pl_fallpain"..table.Random({1,3})..".wav") + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and snd.Entity:IsPlayer() and (snd.Entity:GetPlayerClass() == "hl1scientist" || snd.Entity:GetPlayerClass() == "hl1barney") and (string.find(snd.SoundName, "fallpain") or string.find(snd.SoundName, "damage")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "hl1/player/pl_fallpain"..math.random(1,3)..".wav") + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.find(snd.Entity:GetModel(),"bot_") and string.find(snd.Entity:GetModel(),"buster") and string.find(snd.SoundName, "step") then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/sentrybuster/mvm_sentrybuster_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + snd.Channel = CHAN_BODY + snd.Pitch = 100 + local speed = snd.Entity:GetVelocity():Length() + local groundspeed = snd.Entity:GetVelocity():Length2DSqr() + if (snd.Entity:IsPlayer()) then + if (snd.Entity:GetMoveType() == MOVETYPE_LADDER) then + snd.Volume = 1 * (groundspeed * 0.000006) + elseif (snd.Entity:IsPlayer() and snd.Entity:Crouching()) then + snd.Volume = 1 * (groundspeed * 0.000006) + else + if (CLIENT and snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + if (LocalPlayer():ShouldDrawLocalPlayer()) then + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + else + snd.Volume = 1 * (groundspeed * 0.00005) + end + else + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000009) + end + end + end + end + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.StartWith(snd.Entity:GetModel(), "models/player") and string.find(snd.Entity:GetModel(), "german") and string.find(snd.SoundName, "step") then + snd.SoundName = string.Replace(snd.SoundName, "wade5", "wade5") + snd.SoundName = string.Replace(snd.SoundName, "wade6", "wade6") + snd.SoundName = string.Replace(snd.SoundName, "wade7", "wade3") + snd.SoundName = string.Replace(snd.SoundName, "wade8", "wade4") + snd.Channel = CHAN_STATIC + if (snd.Entity:WaterLevel() < 1) then + snd.SoundName = string.Replace(snd.SoundName, "player/footsteps/", "player/footsteps/male/") + snd.SoundName = string.Replace(snd.SoundName, "4", math.random(4,6)) + elseif (snd.Entity:WaterLevel() < 2) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/footsteps/male/slosh"..math.random(1,6)..".wav") + else + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/footsteps/male/wade"..math.random(1,6)..".wav") + end + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.StartWith(snd.Entity:GetModel(), "models/player") and string.find(snd.Entity:GetModel(), "american") and string.find(snd.SoundName, "step") then + snd.SoundName = string.Replace(snd.SoundName, "wade5", "wade5") + snd.SoundName = string.Replace(snd.SoundName, "wade6", "wade6") + snd.SoundName = string.Replace(snd.SoundName, "wade7", "wade3") + snd.SoundName = string.Replace(snd.SoundName, "wade8", "wade4") + snd.Channel = CHAN_STATIC + if (snd.Entity:WaterLevel() < 1) then + snd.SoundName = string.Replace(snd.SoundName, "player/footsteps/", "player/footsteps/female/") + snd.SoundName = string.Replace(snd.SoundName, "4", math.random(4,6)) + elseif (snd.Entity:WaterLevel() < 2) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/footsteps/female/slosh"..math.random(1,6)..".wav") + else + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/footsteps/female/wade"..math.random(1,6)..".wav") + end + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.StartWith(snd.Entity:GetModel(), "models/player") and !string.find(snd.Entity:GetModel(), "tfc") and snd.Entity:LookupBone("bip_head") and !string.find(snd.Entity:GetModel(), "bot") and string.find(snd.SoundName, "step") then + snd.SoundName = string.Replace(snd.SoundName, "wade5", "wade1") + snd.SoundName = string.Replace(snd.SoundName, "wade6", "wade2") + snd.SoundName = string.Replace(snd.SoundName, "wade7", "wade3") + snd.SoundName = string.Replace(snd.SoundName, "wade8", "wade4") + snd.SoundName = string.Replace(snd.SoundName, "snow5", "snow1") + snd.SoundName = string.Replace(snd.SoundName, "snow6", "snow2") + snd.Channel = CHAN_BODY + local speed = snd.Entity:GetVelocity():Length() + local groundspeed = snd.Entity:GetVelocity():Length2DSqr() + if (snd.Entity:WaterLevel() < 1) then + snd.SoundName = string.Replace(snd.SoundName, "player/footsteps/", "tf/player/footsteps/") + elseif (snd.Entity:WaterLevel() < 2) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "tf/player/footsteps/slosh"..math.random(1,4)..".wav") + else + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "tf/player/footsteps/wade"..math.random(1,4)..".wav") + end + local pl = snd.Entity + + if (CLIENT and snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + if (!pl:IsL4D() and !pl:IsBot()) then + if (pl:GetPlayerClass() != "gmodplayer") then + --pl:SetModel(pl:GetNWString("PlayerClassModel")) + end + elseif (pl:IsL4D()) then + --pl:SetModel(pl:GetNWString("L4DModel")) + end + end + + --[[ + if (IsMounted("left4dead") or IsMounted("left4dead2")) then + local pos = snd.Entity:GetPos() + if (snd.Pos) then + pos = snd.Pos + end + if (snd.Channel == CHAN_BODY) then + if (math.random(1,6) != 1) then + snd.Channel = CHAN_STATIC + return true + end + end + end]] + snd.Pitch = math.random(95,105) + if (snd.Entity:IsPlayer()) then + if (snd.Entity:Crouching()) then + snd.Volume = 1 * (groundspeed * 0.000006) * 4 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + end + if (snd.Entity:GetClass() == "infected_this_is_not_needed_anymore_why") then + if (string.find(snd.Entity:GetModel(),"clown")) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + if (IsValid(snd.Entity:GetEnemy())) then + v:SetEnemy(snd.Entity:GetEnemy()) + + end + end + end + + end + end + if (snd.Entity:IsTFPlayer() and GAMEMODE:EntityTeam(snd.Entity) != TEAM_GREEN) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:IsPlayer() and v:IsL4D() and !IsValid(v.TargetEnt) and v.TFBot) then + --v.TargetEnt = snd.Entity + + + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + + end + if (snd.Entity:IsTFPlayer() and !snd.Entity:IsNextBot()) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),400)) do + + if (v:IsPlayer() and v.TFBot and !v:IsFriendly(snd.Entity) and v.TargetEnt == nil) then + --v.TargetEnt = snd.Entity + elseif (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + v:SetEnemy(snd.Entity) + + + if SERVER then + --[[ + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true)]] + end + + timer.Stop("IdleExpression"..v:EntIndex()) + timer.Stop("AngryExpression"..v:EntIndex()) + timer.Create("AngryExpression"..v:EntIndex(), 3, 0, function() + + if SERVER then + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true) + end + + timer.Adjust("AngryExpression"..v:EntIndex(),v:SequenceDuration(anim)) + end) + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + end + + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and snd.Entity:IsHL2() and snd.Entity:LookupBone("ValveBiped_Bip01.Head1") and string.find(snd.SoundName, "step") then + snd.Channel = CHAN_BODY + local speed = snd.Entity:GetVelocity():Length() + local groundspeed = snd.Entity:GetVelocity():Length2DSqr() + local pl = snd.Entity + if (snd.Entity:IsPlayer()) then + if (snd.Entity:Crouching()) then + snd.Volume = 1 * (groundspeed * 0.000006) * 4 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + end + + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.StartWith(snd.Entity:GetModel(), "models/bots/headless_hatman") and string.find(snd.SoundName, "vo/") and !string.find(snd.SoundName, "knight") then + if (string.find(snd.SoundName,"demoman_") and string.find(snd.SoundName,"Pain") and !string.find(snd.SoundName,"Death")) then + snd.SoundName = string.Replace(snd.SoundName,snd.SoundName,"vo/halloween_boss/knight_pain0"..math.random(1,3)..".mp3") + elseif (string.find(snd.SoundName,"demoman_") and string.find(snd.SoundName,"Death")) then + snd.SoundName = string.Replace(snd.SoundName,snd.SoundName,"vo/halloween_boss/knight_death0"..math.random(1,2)..".mp3") + elseif (string.find(snd.SoundName,"demoman_") and !string.find(snd.SoundName,"Pain") and !string.find(snd.SoundName,"Death")) then + if (string.find(snd.SoundName,"Incoming")) then + snd.SoundName = string.Replace(snd.SoundName,snd.SoundName,"vo/halloween_boss/knight_alert0"..math.random(1,2)..".mp3") + local randomplr = table.Random(player.GetAll()) + if (randomplr:EntIndex() != snd.Entity:EntIndex()) then + snd.Entity:SetPos(randomplr:GetPos() + Vector(0,0,72)) + end + elseif (string.find(snd.SoundName,"Medic")) then + snd.SoundName = string.Replace(snd.SoundName,snd.SoundName,"vo/halloween_boss/knight_alert.mp3") + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),300)) do + if v:IsTFPlayer() and v:EntIndex() != snd.Entity:EntIndex() and v:Team() != snd.Entity:Team() then + if (v:IsPlayer()) then + v:StripWeapons() + v:ConCommand("tf_tp_simulation_toggle") + v:EmitSound("Halloween.PlayerScream") + v:SendLua("surface.PlaySound(\"misc/halloween/hwn_bomb_flash.wav\")") + local attach = v:LookupAttachment("head") or 1 + ParticleEffectAttach("yikes_fx", PATTACH_POINT_FOLLOW, v, attach) + timer.Simple(5,function() + v:StopParticles() + local health = v:Health() + v:SetPlayerClass(v:GetPlayerClass()) + v:ConCommand("tf_tp_simulation_toggle") + timer.Simple(0.1, function() + v:SetHealth(health) + end) + end) + elseif (v:IsNPC()) then + if (IsValid(v:GetActiveWeapon())) then + local weaponname = v:GetActiveWeapon():GetClass() + timer.Simple(0.1, function() + + v:StripWeapons() + + end) + v:EmitSound("Halloween.PlayerScream") + + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_FR,99) + end + end + v.ScaredOfHHH = true + local attach = v:LookupAttachment("head") or 1 + ParticleEffectAttach("yikes_fx", PATTACH_POINT_FOLLOW, v, attach) + + timer.Simple(5,function() + + v:StopParticles() + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + v.ScaredOfHHH = false + + end) + else + + v:EmitSound("Halloween.PlayerScream") + + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_FR,99) + end + end + v.ScaredOfHHH = true + local attach = v:LookupAttachment("head") or 1 + ParticleEffectAttach("yikes_fx", PATTACH_POINT_FOLLOW, v, attach) + + timer.Simple(5,function() + + v:StopParticles() + for k,v in ipairs(ents.GetAll()) do + if v:IsNPC() then + v:AddEntityRelationship(self,D_HT,99) + end + end + v.ScaredOfHHH = false + + end) + end + end + end + end + else + snd.SoundName = string.Replace(snd.SoundName,snd.SoundName,"vo/halloween_boss/knight_laugh0"..math.random(1,4)..".mp3") + end + end + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.StartWith(snd.Entity:GetModel(), "models/player") and string.find(snd.Entity:GetModel(), "tfc") and !string.find(snd.Entity:GetModel(), "bot") and snd.Entity:LookupBone("bip_head") and string.find(snd.SoundName, "step") and (IsMounted("hl1") || IsMounted("hl1mp")) then + snd.SoundName = string.Replace(snd.SoundName, "wade5", "wade1") + snd.SoundName = string.Replace(snd.SoundName, "wade6", "wade2") + snd.SoundName = string.Replace(snd.SoundName, "wade7", "wade3") + snd.SoundName = string.Replace(snd.SoundName, "wade8", "wade4") + snd.Channel = CHAN_BODY + local speed = snd.Entity:GetVelocity():Length() + local groundspeed = snd.Entity:GetVelocity():Length2DSqr() + if (snd.Entity:WaterLevel() < 1) then + snd.SoundName = string.Replace(snd.SoundName, "player/footsteps/", "player/pl_") + snd.SoundName = string.Replace(snd.SoundName, "concrete", "step") + snd.SoundName = string.Replace(snd.SoundName, "grass", "step") + snd.SoundName = string.Replace(snd.SoundName, "sand", "step") + snd.SoundName = string.Replace(snd.SoundName, "metalgrate", "grate") + snd.SoundName = string.Replace(snd.SoundName, "tile4", "tile"..math.random(4,5)) + elseif (snd.Entity:WaterLevel() < 2) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/pl_slosh"..math.random(1,4)..".wav") + else + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "player/pl_wade"..math.random(1,4)..".wav") + end + if (snd.Entity:IsPlayer()) then + if (snd.Entity:GetMoveType() == MOVETYPE_LADDER) then + snd.Volume = 1 * (groundspeed * 0.000006) + elseif (snd.Entity:IsPlayer() and snd.Entity:Crouching()) then + snd.Volume = 1 * (groundspeed * 0.000006) + else + if (snd.Entity:EntIndex() == LocalPlayer():EntIndex()) then + if (LocalPlayer():ShouldDrawLocalPlayer()) then + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + else + if (snd.Entity:GetNWBool("Taunting",false) == true) then + snd.Volume = 0 + else + snd.Volume = 1 * (groundspeed * 0.000006) + end + end + end + end + if (snd.Entity:GetClass() == "infected_this_is_not_needed_anymore_why") then + if (string.find(snd.Entity:GetModel(),"clown")) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + if (IsValid(snd.Entity:GetEnemy())) then + v:SetEnemy(snd.Entity:GetEnemy()) + + end + end + end + + end + end + if (snd.Entity:IsTFPlayer() and GAMEMODE:EntityTeam(snd.Entity) != TEAM_GREEN) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:IsPlayer() and v:IsL4D() and !IsValid(v.TargetEnt) and v.TFBot) then + --v.TargetEnt = snd.Entity + + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + + end + if (snd.Entity:IsTFPlayer() and !snd.Entity:IsNextBot()) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),400)) do + + if (v:IsPlayer() and v.TFBot and !v:IsFriendly(snd.Entity) and v.TargetEnt == nil) then + --v.TargetEnt = snd.Entity + elseif (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + v:SetEnemy(snd.Entity) + + + if SERVER then + --[[ + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true)]] + end + + timer.Stop("IdleExpression"..v:EntIndex()) + timer.Stop("AngryExpression"..v:EntIndex()) + timer.Create("AngryExpression"..v:EntIndex(), 3, 0, function() + + if SERVER then + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true) + end + + timer.Adjust("AngryExpression"..v:EntIndex(),v:SequenceDuration(anim)) + end) + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + end + snd.Pitch = 100 + return true + elseif IsValid(snd.Entity) and snd.Entity:GetModel() and string.find(snd.Entity:GetModel(),"bot_") and snd.Entity:IsMiniBoss() and string.find(snd.SoundName, "step") then + snd.Volume = 1 + snd.Channel = CHAN_BODY + snd.Pitch = 100 + if (GetConVar("tf_enable_unused_mvm_sounds"):GetBool()) then + snd.Entity:StopSound("^mvm/giant_scout/giant_scout_step_01.wav") + snd.Entity:StopSound("^mvm/giant_scout/giant_scout_step_02.wav") + snd.Entity:StopSound("^mvm/giant_scout/giant_scout_step_03.wav") + snd.Entity:StopSound("^mvm/giant_scout/giant_scout_step_04.wav") + snd.Entity:StopSound("^mvm/giant_soldier/giant_soldier_step01.wav") + snd.Entity:StopSound("^mvm/giant_soldier/giant_soldier_step02.wav") + snd.Entity:StopSound("^mvm/giant_soldier/giant_soldier_step03.wav") + snd.Entity:StopSound("^mvm/giant_soldier/giant_soldier_step04.wav") + snd.Entity:StopSound("^mvm/giant_pyro/giant_pyro_step_01.wav") + snd.Entity:StopSound("^mvm/giant_pyro/giant_pyro_step_02.wav") + snd.Entity:StopSound("^mvm/giant_pyro/giant_pyro_step_03.wav") + snd.Entity:StopSound("^mvm/giant_pyro/giant_pyro_step_04.wav") + snd.Entity:StopSound("^mvm/giant_demoman/giant_demoman_step_01.wav") + snd.Entity:StopSound("^mvm/giant_demoman/giant_demoman_step_02.wav") + snd.Entity:StopSound("^mvm/giant_demoman/giant_demoman_step_03.wav") + snd.Entity:StopSound("^mvm/giant_demoman/giant_demoman_step_04.wav") + snd.Entity:StopSound("^mvm/giant_heavy/giant_heavy_step01.wav") + snd.Entity:StopSound("^mvm/giant_heavy/giant_heavy_step02.wav") + snd.Entity:StopSound("^mvm/giant_heavy/giant_heavy_step03.wav") + snd.Entity:StopSound("^mvm/giant_heavy/giant_heavy_step04.wav") + if (string.find(snd.Entity:GetModel(),"scout") || string.find(snd.Entity:GetModel(),"superscout") || string.find(snd.Entity:GetModel(),"superscoutfan") || string.find(snd.Entity:GetModel(),"gianscout")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_scout/giant_scout_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 87 + elseif (string.find(snd.Entity:GetModel(),"soldier")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_soldier/giant_soldier_step0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"pyro")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_pyro/giant_pyro_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"demo") and !string.find(snd.Entity:GetModel(),"buster")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_demoman/giant_demoman_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"demo") and string.find(snd.Entity:GetModel(),"buster")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/sentrybuster/mvm_sentrybuster_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"heavy")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_heavy/giant_heavy_step0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"engineer")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_heavy/giant_heavy_step0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"medic")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_soldier/giant_soldier_step0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"sniper")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_heavy/giant_heavy_step0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"spy")) then + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_scout/giant_scout_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + end + snd.Channel = CHAN_STATIC + else + if (string.find(snd.Entity:GetModel(),"buster")) then + snd.Entity:StopSound("^mvm/sentrybuster/mvm_sentrybuster_step_01.wav") + snd.Entity:StopSound("^mvm/sentrybuster/mvm_sentrybuster_step_02.wav") + snd.Entity:StopSound("^mvm/sentrybuster/mvm_sentrybuster_step_03.wav") + snd.Entity:StopSound("^mvm/sentrybuster/mvm_sentrybuster_step_04.wav") + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/sentrybuster/mvm_sentrybuster_step_0"..math.random(1,4)..".wav") + snd.SoundLevel = 95 + snd.Channel = CHAN_STATIC + else + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_01.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_02.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_03.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_04.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_05.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_06.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_07.wav") + snd.Entity:StopSound("^mvm/giant_common/giant_common_step_08.wav") + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "^mvm/giant_common/giant_common_step_0"..math.random(1,8)..".wav") + if (string.find(snd.Entity:GetModel(),"scout") || string.find(snd.Entity:GetModel(),"scout_boss")) then + snd.SoundLevel = 87 + snd.Volume = snd.Volume * 0.6 + elseif (string.find(snd.Entity:GetModel(),"soldier")) then + snd.SoundLevel = 95 + snd.Volume = snd.Volume * 0.65 + elseif (string.find(snd.Entity:GetModel(),"pyro")) then + snd.SoundLevel = 95 + snd.Volume = snd.Volume * 0.65 + elseif (string.find(snd.Entity:GetModel(),"demo")) then + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"heavy")) then + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"engineer")) then + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"medic")) then + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"sniper")) then + snd.SoundLevel = 95 + elseif (string.find(snd.Entity:GetModel(),"spy")) then + snd.SoundLevel = 87 + end + end + snd.Channel = CHAN_STATIC + end + if (snd.Entity:GetClass() == "infected_this_is_not_needed_anymore_why") then + if (string.find(snd.Entity:GetModel(),"clown")) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + if (IsValid(snd.Entity:GetEnemy())) then + v:SetEnemy(snd.Entity:GetEnemy()) + + end + end + end + + end + end + if (snd.Entity:IsTFPlayer() and GAMEMODE:EntityTeam(snd.Entity) != TEAM_GREEN) then + + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),800)) do + if (v:IsPlayer() and v:IsL4D() and !IsValid(v.TargetEnt) and v.TFBot) then + --v.TargetEnt = snd.Entity + + + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + + end + if (snd.Entity:IsTFPlayer() and !snd.Entity:IsNextBot()) then + for k,v in ipairs(ents.FindInSphere(snd.Entity:GetPos(),400)) do + + if (v:IsPlayer() and v.TFBot and !v:IsFriendly(snd.Entity) and v.TargetEnt == nil) then + --v.TargetEnt = snd.Entity + elseif (v:GetClass() == "infected_this_is_not_needed_anymore_why" and !IsValid(v:GetEnemy()) and v.Ready) then + v:SetEnemy(snd.Entity) + + + if SERVER then + --[[ + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true)]] + end + + timer.Stop("IdleExpression"..v:EntIndex()) + timer.Stop("AngryExpression"..v:EntIndex()) + timer.Create("AngryExpression"..v:EntIndex(), 3, 0, function() + + if SERVER then + local anim = v:LookupSequence("exp_angry_0"..math.random(1,6)) + --v:AddGestureSequence(anim,true) + end + + timer.Adjust("AngryExpression"..v:EntIndex(),v:SequenceDuration(anim)) + end) + + if SERVER then + for _,npc in ipairs(ents.GetAll()) do + if npc:IsNPC() and !npc:IsFriendly(v) then + npc:AddEntityRelationship(v,D_HT,99) + end + end + end + end + end + end + return true + elseif IsValid(snd.Entity) and string.StartWith(snd.SoundName, "player/") and snd.Entity:IsPlayer() then + if (snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1); + return true + end + elseif IsValid(snd.Entity) and string.StartWith(snd.SoundName, "npc/") and snd.Entity:IsPlayer() then + if (snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1); + return true + end + elseif IsValid(snd.Entity) and snd.Entity:IsPlayer() and (snd.Entity:GetInfoNum("tf_robot",0) == 1 and string.StartWith(snd.SoundName, "vo/") or (string.find(snd.Entity:GetModel(),"bot_") and !string.find(snd.Entity:GetModel(),"boss")) and string.StartWith(snd.SoundName, "vo/")) then + if (snd.Entity:IsPlayer() and snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1); + end + + + if (snd.Entity:IsPlayer() and snd.Entity:GetPlayerClass() == "wtfdemoman") then + snd.Pitch = 130 + else + if (GetConVar("tf_pyrovision"):GetBool()) then + snd.SoundName = string.Replace(snd.SoundName, "PainCrticialDeath", "laughlong") + snd.SoundName = string.Replace(snd.SoundName, "PainSharp", "laughshort") + snd.SoundName = string.Replace(snd.SoundName, "PainSevere", "laughhappy") + snd.SoundName = string.Replace(snd.SoundName, "AutoOnFire", "PositiveVocalization") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughshort04", "heavy_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughshort05", "heavy_laughshort02") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughlong03", "heavy_laughlong02") + end + snd.SoundName = string.Replace(snd.SoundName, "vo/scout", "vo/mvm/norm/scout_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/soldier", "vo/mvm/norm/soldier_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/pyro", "vo/mvm/norm/pyro_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/demoman", "vo/mvm/norm/demoman_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/heavy", "vo/mvm/norm/heavy_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/engineer", "vo/mvm/norm/engineer_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/medic", "vo/mvm/norm/medic_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/sniper", "vo/mvm/norm/sniper_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/spy", "vo/mvm/norm/spy_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/scout", "vo/mvm/norm/taunts/scout_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/soldier", "vo/mvm/norm/taunts/soldier_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/pyro", "vo/mvm/norm/taunts/pyro_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/demoman", "vo/mvm/norm/taunts/demoman_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/heavy", "vo/mvm/norm/taunts/heavy_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/engineer", "vo/mvm/norm/taunts/engineer_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/medic", "vo/mvm/norm/taunts/medic_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/sniper", "vo/mvm/norm/taunts/sniper_mvm") + snd.SoundName = string.Replace(snd.SoundName, "vo/taunts/spy", "vo/mvm/norm/taunts/spy_mvm") + end + if (string.find(snd.SoundName,"vo/") || string.find(snd.SoundName,"vo\\")) then + snd.SoundName = string.Replace(snd.SoundName, ".wav", ".mp3") + end + return true + elseif IsValid(snd.Entity) and string.find(snd.SoundName, "vo/") and GetConVar("tf_pyrovision"):GetBool() then + if (snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1); + end + snd.SoundName = string.Replace(snd.SoundName, "PainCrticialDeath", "laughlong") + snd.SoundName = string.Replace(snd.SoundName, "PainSharp", "laughshort") + snd.SoundName = string.Replace(snd.SoundName, "PainSevere", "laughhappy") + snd.SoundName = string.Replace(snd.SoundName, "AutoOnFire", "PositiveVocalization") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughshort02", "pyro_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughshort03", "pyro_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughshort04", "pyro_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughshort05", "pyro_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughshort06", "pyro_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughshort07", "pyro_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughhappy02", "pyro_laughhappy01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughhappy03", "pyro_laughhappy01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughhappy04", "pyro_laughhappy01") + snd.SoundName = string.Replace(snd.SoundName, "pyro_laughhappy05", "pyro_laughhappy01") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughshort04", "heavy_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughshort05", "heavy_laughshort02") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughlong03", "heavy_laughlong02") + snd.Pitch = 100 * 1.3 + return true + elseif IsValid(snd.Entity) and snd.Entity:IsPlayer() and !snd.Entity:IsHL2() and snd.Entity:GetModel() and ((snd.Entity:GetInfoNum("tf_giant_robot",0) == 1 or (string.find(snd.Entity:GetModel(),"bot") and string.find(snd.Entity:GetModel(),"boss")))) and string.StartWith(snd.SoundName, "vo/") then + if (snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1) + end + if (string.find(snd.Entity:GetModel(),"boss") or string.find(snd.Entity:GetModel(),"bot_sentry_buster")) then + snd.SoundName = string.Replace(snd.SoundName, "vo/", "vo/mvm/mght/") + snd.SoundName = string.Replace(snd.SoundName, "scout", "scout_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "soldier", "soldier_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "pyro", "pyro_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "demoman", "demoman_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "heavy", "heavy_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "engineer", "engineer_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "medic", "medic_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "sniper", "sniper_mvm_m") + snd.SoundName = string.Replace(snd.SoundName, "spy", "spy_mvm_m") + if (string.find(snd.SoundName,"vo/")) then + snd.SoundName = string.Replace(snd.SoundName, ".wav", ".mp3") + end + else + snd.SoundName = string.Replace(snd.SoundName, "vo/", "vo/mvm/norm/") + snd.SoundName = string.Replace(snd.SoundName, "scout", "scout_mvm") + snd.SoundName = string.Replace(snd.SoundName, "soldier", "soldier_mvm") + snd.SoundName = string.Replace(snd.SoundName, "pyro", "pyro_mvm") + snd.SoundName = string.Replace(snd.SoundName, "demoman", "demoman_mvm") + snd.SoundName = string.Replace(snd.SoundName, "heavy", "heavy_mvm") + snd.SoundName = string.Replace(snd.SoundName, "engineer", "engineer_mvm") + snd.SoundName = string.Replace(snd.SoundName, "medic", "medic_mvm") + snd.SoundName = string.Replace(snd.SoundName, "sniper", "sniper_mvm") + snd.SoundName = string.Replace(snd.SoundName, "spy", "spy_mvm") + if (string.find(snd.SoundName,"vo/")) then + snd.SoundName = string.Replace(snd.SoundName, ".wav", ".mp3") + end + snd.DSP = 38 + snd.Pitch = 100 * 0.8 + end + return true + elseif IsValid(snd.Entity) and string.StartWith(snd.SoundName, "vo/") and snd.Entity:GetModel() and snd.Entity:IsPlayer() and !snd.Entity:IsHL2() and string.StartWith(snd.Entity:GetModel(),"models/player/") and snd.Entity.playerclass != "spy" then + if (snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1); + end + local tr = snd.Entity:GetEyeTrace() + if (tr.Entity) then + if (tr.Entity:IsPlayer() and tr.Entity:IsHL2()) then + if (string.find(snd.SoundName, "CloakedSpyIdentify")) then + if (snd.Entity.playerclass == "Soldier" || snd.Entity.playerclass == "Spy") then + + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "vo/"..snd.Entity.playerclass.."_cloakedspyidentifygmodplayer.wav") + + else + snd.SoundName = string.Replace(snd.SoundName, snd.SoundName, "vo/"..snd.Entity.playerclass.."_cloakedspyidentifygmod.wav") + end + end + end + end + if (GetConVar("tf_pyrovision"):GetBool()) then + snd.SoundName = string.Replace(snd.SoundName, "PainCrticialDeath", "laughlong") + snd.SoundName = string.Replace(snd.SoundName, "PainSharp", "laughshort") + snd.SoundName = string.Replace(snd.SoundName, "PainSevere", "laughhappy") + snd.SoundName = string.Replace(snd.SoundName, "AutoOnFire", "PositiveVocalization") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughshort04", "heavy_laughshort01") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughshort05", "heavy_laughshort02") + snd.SoundName = string.Replace(snd.SoundName, "heavy_laughlong03", "heavy_laughlong02") + end + if (!string.find(snd.SoundName,"announcer_") && !string.find(snd.SoundName,"/mvm_")) then + + if string.find(snd.Entity:GetModel(),"female") || string.find(snd.Entity:GetModel(),"touhou") then + snd.Pitch = 130 + end + end + return true + elseif IsValid(snd.Entity) and string.StartWith(snd.SoundName, "vo/") and snd.Entity:IsPlayer() and snd.Entity.playerclass == "spy" then + if (string.find(snd.Entity:GetModel(), "scout")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "scout_") + elseif (string.find(snd.Entity:GetModel(), "soldier")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "soldier_") + elseif (string.find(snd.Entity:GetModel(), "pyro")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "pyro_") + elseif (string.find(snd.Entity:GetModel(), "demo")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "demoman_") + elseif (string.find(snd.Entity:GetModel(), "heavy")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "heavy_") + elseif (string.find(snd.Entity:GetModel(), "engineer")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "engineer_") + elseif (string.find(snd.Entity:GetModel(), "medic")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "medic_") + elseif (string.find(snd.Entity:GetModel(), "sniper")) then + snd.SoundName = string.Replace(snd.SoundName, "spy_", "sniper_") + end + if (snd.Entity:GetInfoNum("tf_special_dsp_type",-1) > 0) then + snd.DSP = snd.Entity:GetInfoNum("tf_special_dsp_type",-1); + end + if (GetConVar("tf_pyrovision"):GetBool()) then + snd.SoundName = string.Replace(snd.SoundName, "painsharp", "laughshort") + snd.SoundName = string.Replace(snd.SoundName, "painsevere", "laughhappy") + snd.SoundName = string.Replace(snd.SoundName, "paincrticialdeath", "laughlong") + snd.SoundName = string.Replace(snd.SoundName, "autoonfire", "laughhappy") + end + return true + elseif IsValid(snd.Entity) and string.StartWith(snd.SoundName, "vo/") and snd.Entity:IsPlayer() and snd.Entity:Team() == TEAM_BLU and string.find(game.GetMap(), "mvm") then + snd.SoundName = string.Replace(snd.SoundName, "vo/", "vo/mvm/norm/") + snd.SoundName = string.Replace(snd.SoundName, "scout", "scout_mvm") + snd.SoundName = string.Replace(snd.SoundName, "soldier", "soldier_mvm") + snd.SoundName = string.Replace(snd.SoundName, "pyro", "pyro_mvm") + snd.SoundName = string.Replace(snd.SoundName, "demoman", "demoman_mvm") + snd.SoundName = string.Replace(snd.SoundName, "heavy", "heavy_mvm") + snd.SoundName = string.Replace(snd.SoundName, "engineer", "engineer_mvm") + snd.SoundName = string.Replace(snd.SoundName, "medic", "medic_mvm") + snd.SoundName = string.Replace(snd.SoundName, "sniper", "sniper_mvm") + snd.SoundName = string.Replace(snd.SoundName, "spy", "spy_mvm") + if (string.find(snd.SoundName,"vo/")) then + snd.SoundName = string.Replace(snd.SoundName, ".wav", ".mp3") + end + return true + end + end +end) diff --git a/gamemodes/tf/entities/entities/tf_hl2landmark/init.lua b/gamemodes/tf/entities/entities/tf_hl2landmark/init.lua new file mode 100644 index 000000000..d648f27ba --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_hl2landmark/init.lua @@ -0,0 +1,206 @@ +ENT.Type = "point" + +local AmmoTypes = { +TF_PRIMARY, +TF_SECONDARY, +TF_METAL, +TF_GRENADES1, +TF_GRENADES2 +} + +function ENT:Initialize() + self:Clear() +end + +function ENT:IsValidMap() + return self.Map==game.GetMap() and IsValid(self.LandmarkEntity) +end + +function ENT:GetLandmarkEntity() + if not self.Landmark then return end + + for _,v in pairs(ents.FindByName(self.Landmark)) do + if v:GetClass()=="info_landmark" then + self.LandmarkEntity = v + end + end +end + +function ENT:Clear() + self.Data = {} + self.Map = nil + self.Landmark = nil + self.LandmarkEntity = nil +end + +function ENT:Load() + self:Clear() + if not file.Exists("tf/landmark.txt", "DATA") then return 1 end + local ok, t = pcall(util.JSONToTable, file.Read("tf/landmark.txt", "DATA")) + + if not ok then + ErrorNoHalt(t) + file.Delete("tf/landmark.txt") + return 2 + end + + self.Map = t.map + self.Landmark = t.landmark + self.Data = t.data + + self:GetLandmarkEntity() + file.Delete("tf/landmark.txt") +end + +function ENT:Save() + local t = {map=self.Map, landmark=self.Landmark, data=self.Data} + file.Write("tf/landmark.txt", util.TableToJSON(t)) + file.Write("tf/landmark2.txt", util.TableToJSON(t)) + + file.Append("tf/log.txt", Format("Saving landmark data, map: %s\n", self.Map)) +end + +function ENT:LoadPlayerData(pl) + local data = self.Data[pl:UniqueID()] + if not data then + Msg("Could not find data from player \""..pl:GetName().."\"\n") + return + end + + Msg("Loading data from player \""..pl:GetName().."\"\n") + PrintTable(data) + + pl.CPPos = self.LandmarkEntity:GetPos() + data.pos + pl.CPAng = data.ang + + pl:SetPos(pl.CPPos) + pl:SetEyeAngles(pl.CPAng) + + pl:SetPlayerClass(data.class) + pl:SetHealth(data.health) + + local activeweapon + + pl.ItemLoadout = {} + pl.ItemProperties = {} + + for k,wdata in pairs(data.loadout) do + pl.ItemLoadout[k] = tf_items.ItemsByID[wdata.id].name + pl.ItemProperties[k] = wdata.properties + end + + pl:SetPlayerClass(data.class) + + --pl.TempAttributes = data.tmpattrib + + pl:StripAmmo() + for _,ammotype in ipairs(AmmoTypes) do + pl:GiveAmmo(data.ammo[ammotype], ammotype) + end + + for k,wdata in pairs(data.loadout) do + local weap = pl:GetWeapon(tf_items.ItemsByID[wdata.id].item_class) + if IsValid(weap) then + if wdata.active then + activeweapon = weap:GetClass() + end + + weap:SetClip1(wdata.c1) + weap:SetClip2(wdata.c2) + + if weap.LoadData and wdata.custom then + weap:LoadData(wdata.custom) + end + end + end + + if activeweapon then + pl:SelectWeapon(activeweapon) + end +end + +function ENT:SavePlayerData(pl) + local data = {} + Msg("Saving data from player \""..pl:GetName().."\"\n") + + local id = pl:UniqueID() + + data.class = pl:GetPlayerClass() + data.health = pl:Health() + data.ammo = {} + for _,ammotype in ipairs(AmmoTypes) do + data.ammo[ammotype] = pl:GetAmmoCount(ammotype) + end + + data.loadout = {} + for k,item in pairs(pl.ItemLoadout) do + item = tf_items.Items[item] + + if item then + local wdata = {} + wdata.id = item.id + wdata.properties = pl.ItemProperties[k] + + local weap = pl:GetWeapon(item.item_class) + if IsValid(weap) then + if weap == pl:GetActiveWeapon() then + wdata.active = true + end + + wdata.c1 = weap:Clip1() + wdata.c2 = weap:Clip2() + if weap.SaveData then + wdata.custom = {} + weap:SaveData(wdata.custom) + end + end + + data.loadout[k] = wdata + end + end + + --data.tmpattrib = pl.TempAttributes + + data.pos = pl:GetPos() - self.LandmarkEntity:GetPos() + data.ang = pl:EyeAngles() + + self.Data[id] = data + PrintTable(data) +end + +function ENT:SaveLevelData(caller) + Msg("Changelevel triggered!\n") + + self:Clear() + + self.Map = caller.map + self.Landmark = caller.landmark + + self:GetLandmarkEntity() + + if not self.LandmarkEntity then + Msg("Error, no info_landmark found!\n") + return + end + + Msg("Changing level to "..self.Map.."\n") + for _,v in pairs(player.GetAll()) do + self:SavePlayerData(v) + end + + self:Save() +end + +function ENT:SetCheckpoint(pl) + Msg("Checkpoint reached by player : "..pl:GetName().."\n") + pl.CPPos = pl:GetPos() + pl.CPAng = pl:EyeAngles() +end + +function ENT:AcceptInput(name, activator, caller) + if name=="Trigger" and caller:GetClass()=="trigger_changelevel" then + self:SaveLevelData(caller) + elseif name=="Checkpoint" and caller:GetClass()=="trigger_autosave" then + self:SetCheckpoint(activator) + end +end diff --git a/gamemodes/tf/entities/entities/tf_obj_blueprint/cl_init.lua b/gamemodes/tf/entities/entities/tf_obj_blueprint/cl_init.lua new file mode 100644 index 000000000..e05e690ec --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_obj_blueprint/cl_init.lua @@ -0,0 +1,90 @@ + +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Initialize() + self.Model = ClientsideModel("models/props_junk/watermelon01.mdl") + self.Model:SetNoDraw(true) + self.Model:DrawShadow(false) + + self.CurrentYaw = 0 + self.TargetYaw = 0 + self.Rotation = 0 +end + +function ENT:DrawTranslucent() + if not IsValid(self.Player) then + self.Player = self:GetOwner().Owner + end + + if self.LastDrawn then + local dt = CurTime() - self.LastDrawn + self.Model:FrameAdvance(dt) + + if self.CurrentYaw ~= self.TargetYaw then + local old = self.CurrentYaw + self.CurrentYaw = self.CurrentYaw + self.RotationSpeed * dt + if old < self.TargetYaw and self.CurrentYaw >= self.TargetYaw then + self.CurrentYaw = self.TargetYaw + end + self.CurrentYaw = math.NormalizeAngle(self.CurrentYaw) + end + end + self.LastDrawn = CurTime() + + + if IsValid(self.Player) then + local pos, ang = self:CalcPos(self.Player) + if ang then + ang.y = math.NormalizeAngle(ang.y + self.CurrentYaw) + self.Model:SetModel(self:GetModel()) + self.Model:SetSkin(self:GetSkin()) + self.Model:SetRenderOrigin(pos) + self.Model:SetRenderAngles(ang) + self.Model:DrawModel() + end + end +end + +function ENT:Think() + if not IsValid(self.Player) then + self.Player = self:GetOwner() + end + + if self.LastScale ~= self.dt.Scale then + local s = self.dt.Scale + if s > 0 then + self.Model:SetModelScale( 0.8, 0 ) + end + self.LastScale = s + end + + if self.AllowedState ~= self.dt.Allowed then + self.Model:SetModel(self:GetModel()) + self.Model:SetSkin(self:GetSkin()) + self.AllowedState = self.dt.Allowed + if self.AllowedState then + self.Model:ResetSequence(self.Model:SelectWeightedSequence(ACT_OBJ_PLACING)) + if self.Player == LocalPlayer() then + self.Model:SetBodygroup(1, 1) + else + self.Model:SetBodygroup(1, 0) + end + else + self.Model:ResetSequence(self.Model:SelectWeightedSequence(ACT_OBJ_IDLE)) + self.Model:SetBodygroup(1, 0) + end + end + + if self.Rotation ~= self.dt.Rotation then + self.Rotation = self.dt.Rotation + self.TargetYaw = math.NormalizeAngle(90 * self.Rotation) + end +end + +function ENT:OnRemove() + if IsValid(self.Model) then + self.Model:Remove() + end +end diff --git a/gamemodes/tf/entities/entities/tf_obj_blueprint/init.lua b/gamemodes/tf/entities/entities/tf_obj_blueprint/init.lua new file mode 100644 index 000000000..ae2fd005a --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_obj_blueprint/init.lua @@ -0,0 +1,202 @@ + +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +include("shared.lua") + +function ENT:Initialize() + local owner = self:GetOwner() + if not IsValid(owner) then + self:Remove() return + end + + self.Player = self:GetOwner().Owner + if not IsValid(self.Player) then + self:Remove() return + end + + local obj = owner:GetBuilding() + if not obj then + self:Remove() return + end + + --[[ + local entdata = scripted_ents.Get(obj.class_name) + if not entdata then + self:Remove() return + end]] + + local model = obj.blueprint_model + if not model then + self:Remove() return + end + + self:SetModel(model) + if owner:EntityTeam()==TEAM_BLU then + self:SetSkin(1) + else + self:SetSkin(0) + end + if obj.class_name == "obj_dispenser" and self.Player.TempAttributes.BuildsMiniDispensers then + self:SetModel("models/buildables/mdispenser_blueprint.mdl") + end + if obj.class_name == "obj_dispenser" and self.Player:GetWeapons()[3]:GetClass() == "tf_weapon_engi_fist" then + self:SetModel("models/buildables/repair_level1.mdl") + elseif obj.class_name == "obj_sentrygun" and self.Player:GetWeapons()[3]:GetClass() == "tf_weapon_engi_fist" then + self:SetModel("models/combine_turrets/floor_turret.mdl") + end + self.CurrentYaw = 0 + self.TargetYaw = 0 + self.Rotation = 0 + + self:Think() + --self:SetParent(owner) + owner:DeleteOnRemove(self) + self:SetNotSolid(true) + self:DrawShadow(false) +end + +function ENT:Build() + local pos, ang, valid = self:CalcPos(self.Player) + ang.y = math.NormalizeAngle(ang.y + self.CurrentYaw) + + self:SetPos(pos) + self:SetAngles(ang) + + if not valid then return end + + local obj = self:GetOwner():GetBuilding() + if not obj then return end + + local ent = ents.Create(obj.class_name) + if not IsValid(ent) then return end + + ent.Player = self.Player + ent:SetPos(pos) + ent:SetAngles(ang) + ent:SetTeam(self.Player:EntityTeam()) + ent:SetBuilder(self.Player) + ent:Spawn() + ent:SetAngles(ang) + if (obj.class_name == "obj_sentrygun") then + self.Player.Sentry = ent + elseif (obj.class_name == "obj_dispenser") then + self.Player.Dispenser = ent + elseif (obj.class_name == "obj_teleporter") then + self.Player.Teleporter = ent + end + if self.Player:GetWeapon("tf_weapon_builder").MovedBuildingLevel == 2 and obj.class_name == "obj_sentrygun" and self.Player:GetWeapon("tf_weapon_builder").Moving != false then + + timer.Create("SetModel"..ent:EntIndex(), 0.01, 500, function() + if ent:GetLevel() <= 2 then + ent:AddMetal2(ent, 200) + end + end) + elseif self.Player:GetWeapon("tf_weapon_builder").MovedBuildingLevel == 2 and obj.class_name == "obj_sentrygun" and self.Player:GetWeapon("tf_weapon_builder").Moving != false then + + timer.Create("SetModel"..ent:EntIndex(), 0.01, 500, function() + if ent:GetLevel() <= 2 then + ent:AddMetal2(ent, 200) + end + end) + elseif self.Player:GetWeapon("tf_weapon_builder").MovedBuildingLevel == 2 and obj.class_name == "obj_dispenser" and self.Player:GetWeapon("tf_weapon_builder").Moving != false then + + timer.Create("SetModel"..ent:EntIndex(), 0.01, 500, function() + if ent:GetLevel() <= 2 then + ent:AddMetal2(ent, 200) + end + end) + elseif self.Player:GetWeapon("tf_weapon_builder").MovedBuildingLevel == 3 and obj.class_name == "obj_dispenser" and self.Player:GetWeapon("tf_weapon_builder").Moving != false then + + timer.Create("SEtModel", 0.1, 80, function() + if ent:GetLevel() <= 3 then + ent:AddMetal2(ent, 200) + end + end) + elseif self.Player:GetWeapon("tf_weapon_builder").MovedBuildingLevel == 3 and obj.class_name == "obj_sentrygun" and self.Player:GetWeapon("tf_weapon_builder").Moving != false then + + timer.Create("SEtModel", 0.1, 80, function() + if ent:GetLevel() <= 3 then + ent:AddMetal2(ent, 200) + end + end) + elseif obj.class_name == "obj_sentrygun" and self.Player:GetWeapons()[3]:GetClass() == "tf_weapon_engi_fist" then + + timer.Create("SEtModel", 0.1, 80, function() + ent:SetModel("models/combine_turrets/floor_turret.mdl") + ent.Model:SetModel("models/combine_turrets/floor_turret.mdl") + ent.FireRate = 0.08 + ent.Shoot_Sound = "NPC_CeilingTurret.Shoot" + ent.Idle_Sound = CreateSound(ent, "NPC_Turret.Ping") + ent.Sound_Alert = Sound("NPC_CeilingTurret.Active") + ent.NameOverride = "npc_turret_floor" + ent.AimSpeedMultiplier = 0.7 + + local health_frac = ent:Health() / ent:GetMaxHealth() + ent:SetMaxHealth(ent:GetObjectHealth()) + ent:SetHealth(ent:GetObjectHealth() * health_frac) + + ent.MaxAmmo1 = 144 + ent.MaxAmmo2 = 20 + ent:SetAmmo1(ent.MaxAmmo1) + ent:SetAmmo2(ent.MaxAmmo2) + ent:SetLevel(1) + end) + end + if obj.class_name == "obj_sentrygun" and self.Player.TempAttributes.BuildsMiniSentries then + ent:SetBuildingType(1) + elseif obj.class_name == "obj_dispenser" and self.Player.TempAttributes.BuildsMiniDispensers then + ent:SetBuildingType(1) + elseif obj.class_name == "obj_dispenser" and self.Player:GetWeapons()[3]:GetClass() == "tf_weapon_engi_fist" then + ent:SetBuildingType(2) + elseif obj.class_name == "obj_sentrygun" and self.Player:GetWeapons()[3]:GetClass() == "tf_weapon_engi_fist" then + ent:SetBuildingType(3) + elseif obj.class_name == "obj_sentrygun" and self.Player.TempAttributes.BuildsMegaSentries then + ent:SetBuildingType(2) + elseif obj.class_name == "obj_teleporter" and self.Player:GetInfoNum("tf_robot", 0) == 1 and self.Player:Team() == TEAM_BLU then + ent.Spawnpoint = true + end + ent:SetBuildGroup(self:GetOwner():GetBuildGroup()) + ent:SetBuildMode(self:GetOwner():GetBuildMode()) + + ent.objtype = obj.objtype + + return true +end + +function ENT:Think() + -- Updating target angle + if self.Rotation ~= self.dt.Rotation then + self.Rotation = self.dt.Rotation + self.TargetYaw = math.NormalizeAngle(90 * self.Rotation) + end + + -- Rotating the blueprint + if self.LastThink then + local dt = CurTime() - self.LastThink + + if self.CurrentYaw ~= self.TargetYaw then + local old = self.CurrentYaw + self.CurrentYaw = self.CurrentYaw + self.RotationSpeed * dt + if old < self.TargetYaw and self.CurrentYaw >= self.TargetYaw then + self.CurrentYaw = self.TargetYaw + end + self.CurrentYaw = math.NormalizeAngle(self.CurrentYaw) + end + end + self.LastThink = CurTime() + + -- Calculating the position + local pos, ang, valid = self:CalcPos(self.Player) + self:SetPos(pos) + + ang.y = math.NormalizeAngle(ang.y + self.CurrentYaw) + self:SetAngles(ang) + + if valid ~= self.dt.Allowed then + self.dt.Allowed = valid + end + + self:NextThink(CurTime()) + return true +end diff --git a/gamemodes/tf/entities/entities/tf_obj_blueprint/shared.lua b/gamemodes/tf/entities/entities/tf_obj_blueprint/shared.lua new file mode 100644 index 000000000..ac553a1e5 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_obj_blueprint/shared.lua @@ -0,0 +1,113 @@ + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.AutomaticFrameAdvance = true +ENT.RotationSpeed = 150 + +ENT.BuildHull = {Vector(-28,-28,0), Vector(28,28,94)} +ENT.BuildDistance = 80 +ENT.BuildYOffset = 30 +ENT.BuildYOffsetDuck = 30 +ENT.BuildYOffsetStand = 30 +ENT.BuildYRange = 120 +ENT.HeightTolerancy = 10 +ENT.ModelScale = 1 + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Allowed") + self:DTVar("Int", 0, "Rotation") + self:DTVar("Float", 0, "Scale") + + if SERVER then + self.dt.Allowed = true + end +end + +function ENT:RotateBlueprint() + self.dt.Rotation = (self.dt.Rotation + 1) % 4 +end + +function ENT:CalcPos(pl) + if not self.Building then + self.Building = self:GetOwner():GetBuilding() + if not self.Building then return end + + local tab = scripted_ents.Get(self.Building.class_name) + if tab then + if tab.SetupBlueprint then + tab:SetupBlueprint(self, self:GetOwner():GetBuildMode()) + end + end + + --[[ + if CLIENT then + self.Model:SetModelScale(Vector(self.ModelScale, self.ModelScake, self.ModelScale)) + self.Model:SetupBones() + end]] + end + + --[[ + local entdata = scripted_ents.Get(obj.class_name) + if not entdata then + self:Remove() return + end]] + + local ang = pl:EyeAngles() + ang.p = 0 + local dir = ang:Forward() + + local origin + + if pl:IsFlagSet(FL_DUCKING) then + origin = pl:GetPos() + self.BuildYOffsetDuck * vector_up + else + origin = pl:GetPos() + self.BuildYOffsetStand * vector_up + end + + local pos = origin + self.BuildDistance * dir + local tr = util.TraceHull{ + start = pos + self.BuildYOffset * vector_up, + endpos = pos - self.BuildYRange * vector_up, + mins = self.BuildHull[1], + maxs = self.BuildHull[2], + filter = self, + } + + if tr.Hit and not tr.StartSolid then + pos = tr.HitPos + local p + + p = pos + Vector(self.BuildHull[1].x, self.BuildHull[1].y, 1) + tr = util.TraceLine{ + start = p, endpos = p - self.HeightTolerancy * vector_up, + filter = self, + } + if not tr.Hit then return pos, ang, false end + + p = pos + Vector(self.BuildHull[1].x, self.BuildHull[2].y, 1) + tr = util.TraceLine{ + start = p, endpos = p - self.HeightTolerancy * vector_up, + filter = self, + } + if not tr.Hit then return pos, ang, false end + + p = pos + Vector(self.BuildHull[2].x, self.BuildHull[1].y, 1) + tr = util.TraceLine{ + start = p, endpos = p - self.HeightTolerancy * vector_up, + filter = self, + } + if not tr.Hit then return pos, ang, false end + + p = pos + Vector(self.BuildHull[2].x, self.BuildHull[2].y, 1) + tr = util.TraceLine{ + start = p, endpos = p - self.HeightTolerancy * vector_up, + filter = self, + } + if not tr.Hit then return pos, ang, false end + + return pos, ang, true + end + + return pos, ang, false +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_arrow/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_arrow/shared.lua new file mode 100644 index 000000000..083372ec0 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_arrow/shared.lua @@ -0,0 +1,316 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.IsTFWeapon = true + +local MaxAngCorrection = 45 + +function ENT:InitEffects() + if SERVER then + local mat + if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then + mat = "Effects/arrowtrail_blu.vmt" + else + mat = "Effects/arrowtrail_red.vmt" + end + + self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, + 0.1, 5, 1, 1/(5+1)*0.5, mat) + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +function ENT:Draw() + self:DrawModel() +end + +usermessage.Hook("ArrowHit", function(um) + LocalPlayer():EmitSound("Weapon_Arrow.ImpactFlesh") +end) + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_arrow.mdl" + +ENT.MinDamage = 50 +ENT.MaxDamage = 50 +ENT.DamageRandomize = 0.125 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +ENT.RangedMinDamage = 37.5 +ENT.RangedMaxDamage = 75 +ENT.RangedMinHealing = 75 +ENT.RangedMaxHealing = 150 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 3 + +function ENT:OnInitAttribute(att) + if att.attribute_class == "set_weapon_mode" then + self.NoHeadshots = true + end +end + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self:DrawShadow(false) + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + + self.Charge = self.Charge or 0 + self.BaseDamage = Lerp(self.Charge, self.MinDamage, self.MaxDamage) + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetGravity(Lerp(self.Charge, self.MaxGravity or 1, self.MinGravity or 0.025)) + self:SetLocalVelocity(self:GetForward() * Lerp(self.Charge, self.MinForce or 2400, self.MaxForce or 3500)) + + self.StartPos = self:GetPos() + + self:InitEffects() +end + +function ENT:Think() + self:SetAngles(self:GetVelocity():Angle()) +end + +util.PrecacheSound("Weapon_Arrow.ImpactFlesh") +util.PrecacheSound("Weapon_Arrow.ImpactMetal") +util.PrecacheSound("Weapon_Arrow.ImpactWood") +util.PrecacheSound("Weapon_Arrow.ImpactConcrete") + +local ImpactSounds ={ + [MAT_ALIENFLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_ANTLION] = "Weapon_Arrow.ImpactFlesh", + [MAT_BLOODYFLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_CLIP] = "Weapon_Arrow.ImpactMetal", + [MAT_COMPUTER] = "Weapon_Arrow.ImpactMetal", + [MAT_CONCRETE] = "Weapon_Arrow.ImpactConcrete", + [MAT_DIRT] = "Weapon_Arrow.ImpactConcrete", + [MAT_FLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_FOLIAGE] = "Weapon_Arrow.ImpactWood", + [MAT_GLASS] = "Weapon_Arrow.ImpactMetal", + [MAT_GRATE] = "Weapon_Arrow.ImpactMetal", + [MAT_METAL] = "Weapon_Arrow.ImpactMetal", + [MAT_PLASTIC] = "Weapon_Arrow.ImpactConcrete", + [MAT_SAND] = "Weapon_Arrow.ImpactConcrete", + [MAT_SLOSH] = "Weapon_Arrow.ImpactConcrete", + [MAT_TILE] = "Weapon_Arrow.ImpactConcrete", + [MAT_VENT] = "Weapon_Arrow.ImpactMetal", + [MAT_WOOD] = "Weapon_Arrow.ImpactWood", +} + +local function ArrowBulletCallback(att, tr, dmginfo) + local ent = tr.Entity + local inf = dmginfo:GetInflictor() + + ----print("ArrowBulletCallback", ent) + if ent:IsWorld() then + local effectdata = EffectData() + effectdata:SetEntity(NULL) + effectdata:SetOrigin(tr.HitPos) + effectdata:SetAngles(dmginfo:GetInflictor():GetAngles()) + util.Effect("tf_arrow_stuck", effectdata) + + inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") + elseif ent:IsTFPlayer() then + local bone, hitpos = ent:TranslatePhysBoneToBone(tr.PhysicsBone), tr.HitPos + inf:GetForward() * 5 + local pos = ent:GetBonePosition(bone) + + --inf:SetAngles((pos - hitpos):Angle()) + + local effectdata = EffectData() + effectdata:SetEntity(ent) + effectdata:SetAttachment(tr.PhysicsBone) + effectdata:SetOrigin(hitpos) + effectdata:SetAngles(inf:GetAngles()) + util.Effect("tf_arrow_stuck", effectdata) + + inf.HitPos = hitpos + inf.HitAng = inf:GetAngles() + inf.HitBone = tr.PhysicsBone + + if not inf.NoHeadshots and tr.HitGroup == HITGROUP_HEAD then + inf.critical = true + inf.NameOverride = "tf_projectile_arrow_headshot" + end + inf:EmitSound("Weapon_Arrow.ImpactFlesh") + if att:IsPlayer() then + net.Start("ArrowHit") + net.Send(att) + end + else + inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") + end +end + +function ENT:Hit(ent) + self.Touch = nil + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + if self.IsHealingBolt then + local fraction = math.Clamp(self:GetPos():Distance(self.StartPos) / 1024, 0, 1) + if ent:IsTFPlayer() and ent:IsFriendly(owner) and not ent:IsBuilding() then + GAMEMODE:HealPlayer(owner, ent, Lerp(fraction, self.RangedMinHealing, self.RangedMaxHealing), true, false) + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.5) + + return + else + self.DamageRandomize = 0 + self.MaxDamageRampUp = 0 + self.MaxDamageFalloff = 0 + self.BaseDamage = Lerp(fraction, self.RangedMinDamage, self.RangedMaxDamage) + end + end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetForward() + + local tr = util.QuickTrace(self:GetPos(), 20*dir, self) + + local trtest = util.TraceHull{ + start = self:GetPos(), + endpos = self:GetPos() + 20*dir, + filter = self, + mins = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), + maxs = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), + } + + ----MsgN("Test trace ("..tostring(self)..") : physbone "..tr.PhysicsBone) + + if tr.HitEntity~=ent then + -- Trace towards the nearest bone + if ent:IsTFPlayer() then + local bone, dist, bpos + for i=1,100 do + local b = ent:TranslatePhysBoneToBone(i) + if b==0 then break end + + local pos = ent:GetBonePosition(b) + local d = self:GetPos():Distance(pos) + if not dist or d MaxAngCorrection then new_ang.p = old_ang.p + MaxAngCorrection + elseif diff.p < -MaxAngCorrection then new_ang.p = old_ang.p - MaxAngCorrection + end + if diff.y > MaxAngCorrection then new_ang.y = old_ang.y + MaxAngCorrection + elseif diff.y < -MaxAngCorrection then new_ang.y = old_ang.y - MaxAngCorrection + end + if diff.r > MaxAngCorrection then new_ang.r = old_ang.r + MaxAngCorrection + elseif diff.r < -MaxAngCorrection then new_ang.r = old_ang.r - MaxAngCorrection + end + + self:SetAngles(new_ang) + end + end + + self:FireBullets{ + Src=self:GetPos(), + Attacker=owner, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=damage, + Tracer=0, + Force=Lerp(self.Charge, 1, 50), + Callback=ArrowBulletCallback, + } + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.5) +end + +function ENT:ShouldCollide(ent) + if self.IsHealingBolt and IsValid(self:GetOwner()) and ent:IsTFPlayer() and ent:IsFriendly(self:GetOwner()) and not ent:IsBuilding() then + return true + end +end + +function ENT:Touch(ent) + if ent:IsSolid() then + self:Hit(ent) + end +end + +-- Used for serverside ragdoll pinning (singleplayer only) +hook.Add("PostScaleDamage", "TFArrowPinRegister", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf:GetClass()=="tf_projectile_arrow" and inf.HitPos then + ent.LastArrowHitPos = inf.HitPos + ent.LastArrowHitAng = inf.HitAng + ent.LastArrowHitBone = inf.HitBone + else + ent.LastArrowHitPos = nil + ent.LastArrowHitAng = nil + ent.LastArrowHitBone = nil + end +end) + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_arrow_heal/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_arrow_heal/shared.lua new file mode 100644 index 000000000..1770ce5b8 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_arrow_heal/shared.lua @@ -0,0 +1,261 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.IsTFWeapon = true + +local MaxAngCorrection = 45 + + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +usermessage.Hook("ArrowHit", function(um) + LocalPlayer():EmitSound("Weapon_Arrow.ImpactFlesh") +end) + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_syringe_proj.mdl" + +ENT.MinDamage = 51 +ENT.MaxDamage = 120 +ENT.DamageRandomize = 0.125 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +ENT.RangedMinDamage = 37.5 +ENT.RangedMaxDamage = 75 +ENT.RangedMinHealing = 75 +ENT.RangedMaxHealing = 150 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 3 + +function ENT:OnInitAttribute(att) + if att.attribute_class == "set_weapon_mode" then + self.NoHeadshots = true + end +end + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self:DrawShadow(false) + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + self:SetModelScale( "7.5" ) + + self.Charge = self.Charge or 0 + self.BaseDamage = Lerp(self.Charge, self.MinDamage, self.MaxDamage) + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetGravity(Lerp(self.Charge, self.MaxGravity or 0.001, self.MinGravity or 0.00)) + self:SetLocalVelocity(self:GetForward() * Lerp(self.Charge, self.MinForce or 2400, self.MaxForce or 3500)) + + self.StartPos = self:GetPos() + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + end +end + +function ENT:Think() + self:SetAngles(self:GetVelocity():Angle()) +end + +util.PrecacheSound("Weapon_Arrow.ImpactFlesh") +util.PrecacheSound("Weapon_Arrow.ImpactMetal") +util.PrecacheSound("Weapon_Arrow.ImpactWood") +util.PrecacheSound("Weapon_Arrow.ImpactConcrete") + +local ImpactSounds ={ + [MAT_ALIENFLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_ANTLION] = "Weapon_Arrow.ImpactFlesh", + [MAT_BLOODYFLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_CLIP] = "Weapon_Arrow.ImpactMetal", + [MAT_COMPUTER] = "Weapon_Arrow.ImpactMetal", + [MAT_CONCRETE] = "Weapon_Arrow.ImpactConcrete", + [MAT_DIRT] = "Weapon_Arrow.ImpactConcrete", + [MAT_FLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_FOLIAGE] = "Weapon_Arrow.ImpactWood", + [MAT_GLASS] = "Weapon_Arrow.ImpactMetal", + [MAT_GRATE] = "Weapon_Arrow.ImpactMetal", + [MAT_METAL] = "Weapon_Arrow.ImpactMetal", + [MAT_PLASTIC] = "Weapon_Arrow.ImpactConcrete", + [MAT_SAND] = "Weapon_Arrow.ImpactConcrete", + [MAT_SLOSH] = "Weapon_Arrow.ImpactConcrete", + [MAT_TILE] = "Weapon_Arrow.ImpactConcrete", + [MAT_VENT] = "Weapon_Arrow.ImpactMetal", + [MAT_WOOD] = "Weapon_Arrow.ImpactWood", +} + +local function ArrowBulletCallback(att, tr, dmginfo) + local ent = tr.Entity + local inf = dmginfo:GetInflictor() + + ----print("ArrowBulletCallback", ent) + if ent:IsWorld() then + local effectdata = EffectData() + effectdata:SetEntity(NULL) + effectdata:SetOrigin(tr.HitPos) + effectdata:SetAngles(dmginfo:GetInflictor():GetAngles()) + util.Effect("tf_arrow_stuck_heal", effectdata) + + inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") + elseif ent:IsTFPlayer() then + local bone, hitpos = ent:TranslatePhysBoneToBone(tr.PhysicsBone), tr.HitPos + inf:GetForward() * 5 + local pos = ent:GetBonePosition(bone) + + --inf:SetAngles((pos - hitpos):Angle()) + + local effectdata = EffectData() + effectdata:SetEntity(ent) + effectdata:SetAttachment(tr.PhysicsBone) + effectdata:SetOrigin(hitpos) + effectdata:SetAngles(inf:GetAngles()) + util.Effect("tf_arrow_stuck_heal", effectdata) + + inf.HitPos = hitpos + inf.HitAng = inf:GetAngles() + inf.HitBone = tr.PhysicsBone + + if not inf.NoHeadshots and tr.HitGroup == HITGROUP_HEAD then + inf.critical = true + inf.NameOverride = "tf_projectile_arrow_headshot" + end + else + inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") + end +end + + +function ENT:Hit(ent) + self.Touch = nil + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local fraction = math.Clamp(self:GetPos():Distance(self.StartPos) / 1024, 0, 1) + if ent:IsTFPlayer() and ent:IsFriendly(owner) and not ent:IsBuilding() then + GAMEMODE:HealPlayer(owner, ent, Lerp(fraction, self.RangedMinHealing, self.RangedMaxHealing), true, false) + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + ParticleEffect( "repair_claw_heal_blue", self:GetPos(), self:GetAngles() ) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + ParticleEffect( "repair_claw_heal_blue", self:GetPos(), self:GetAngles() ) + else + ParticleEffect( "repair_claw_heal_red", self:GetPos(), self:GetAngles() ) + end + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + ent:EmitSound("weapons/fx/rics/arrow_impact_crossbow_heal.wav",75,100) + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.5) + + return + else + self.DamageRandomize = 0 + self.MaxDamageRampUp = 0 + self.MaxDamageFalloff = 0 + self.BaseDamage = Lerp(fraction, self.RangedMinDamage, self.RangedMaxDamage) + end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetForward() + + local tr = util.QuickTrace(self:GetPos(), 20*dir, self) + + local trtest = util.TraceHull{ + start = self:GetPos(), + endpos = self:GetPos() + 20*dir, + filter = self, + mins = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), + maxs = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), + } + + ----MsgN("Test trace ("..tostring(self)..") : physbone "..tr.PhysicsBone) + + self:FireBullets{ + Src=self:GetPos(), + Attacker=owner, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=damage, + Tracer=0, + Force=Lerp(self.Charge, 1, 50), + Callback=ArrowBulletCallback, + } + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.5) +end + + +function ENT:ShouldCollide(ent) + if self.IsHealingBolt and IsValid(self:GetOwner()) and ent:IsTFPlayer() and ent:IsFriendly(self:GetOwner()) and not ent:IsBuilding() then + return true + end +end + +function ENT:Touch(ent) + if ent:IsSolid() then + self:Hit(ent) + end +end + +-- Used for serverside ragdoll pinning (singleplayer only) +hook.Add("PostScaleDamage", "TFArrowHealPinRegister", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf:GetClass()=="tf_projectile_arrow_heal" and inf.HitPos then + ent.LastArrowHitPos = inf.HitPos + ent.LastArrowHitAng = inf.HitAng + ent.LastArrowHitBone = inf.HitBone + else + ent.LastArrowHitPos = nil + ent.LastArrowHitAng = nil + ent.LastArrowHitBone = nil + end +end) + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_arrow_heal_building/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_arrow_heal_building/shared.lua new file mode 100644 index 000000000..8cfeba769 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_arrow_heal_building/shared.lua @@ -0,0 +1,287 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.IsTFWeapon = true + +local MaxAngCorrection = 45 + +game.AddParticles( "particles/items_engineer.pcf" ) +PrecacheParticleSystem( "repair_claw_heal_blue" ) +PrecacheParticleSystem( "repair_claw_heal_red" ) + +function ENT:InitEffects() + if SERVER then + local mat + if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then + mat = "Effects/arrowtrail_blu.vmt" + elseif GAMEMODE:EntityTeam(self:GetOwner())==TF_TEAM_PVE_INVADERS then + mat = "Effects/arrowtrail_blu.vmt" + else + mat = "Effects/arrowtrail_red.vmt" + end + + self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, + 0.1, 5, 1, 1/(5+1)*0.5, mat) + end +end + + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +function ENT:Initialize() + self:InitEffects() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_repair_claw.mdl" + +ENT.MinDamage = 51 +ENT.MaxDamage = 120 +ENT.DamageRandomize = 0.125 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +ENT.RangedMinDamage = 37.5 +ENT.RangedMaxDamage = 75 +ENT.RangedMinHealing = 75 +ENT.RangedMaxHealing = 150 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 3 + +function ENT:OnInitAttribute(att) + if att.attribute_class == "set_weapon_mode" then + self.NoHeadshots = true + end +end + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self:DrawShadow(false) + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + + self.Charge = self.Charge or 0 + self.BaseDamage = Lerp(self.Charge, self.MinDamage, self.MaxDamage) + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetGravity(Lerp(self.Charge, self.MaxGravity or 0.001, self.MinGravity or 0.00)) + self:SetLocalVelocity(self:GetForward() * Lerp(self.Charge, self.MinForce or 2400, self.MaxForce or 3500)) + + self.StartPos = self:GetPos() + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + end + self:InitEffects() +end + +function ENT:Think() + self:SetAngles(self:GetVelocity():Angle()) +end + +util.PrecacheSound("Weapon_Arrow.ImpactFlesh") +util.PrecacheSound("Weapon_Arrow.ImpactMetal") +util.PrecacheSound("Weapon_Arrow.ImpactWood") +util.PrecacheSound("Weapon_Arrow.ImpactConcrete") + +local ImpactSounds ={ + [MAT_ALIENFLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_ANTLION] = "Weapon_Arrow.ImpactFlesh", + [MAT_BLOODYFLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_CLIP] = "Weapon_Arrow.ImpactMetal", + [MAT_COMPUTER] = "Weapon_Arrow.ImpactMetal", + [MAT_CONCRETE] = "Weapon_Arrow.ImpactConcrete", + [MAT_DIRT] = "Weapon_Arrow.ImpactConcrete", + [MAT_FLESH] = "Weapon_Arrow.ImpactFlesh", + [MAT_FOLIAGE] = "Weapon_Arrow.ImpactWood", + [MAT_GLASS] = "Weapon_Arrow.ImpactMetal", + [MAT_GRATE] = "Weapon_Arrow.ImpactMetal", + [MAT_METAL] = "Weapon_Arrow.ImpactMetal", + [MAT_PLASTIC] = "Weapon_Arrow.ImpactConcrete", + [MAT_SAND] = "Weapon_Arrow.ImpactConcrete", + [MAT_SLOSH] = "Weapon_Arrow.ImpactConcrete", + [MAT_TILE] = "Weapon_Arrow.ImpactConcrete", + [MAT_VENT] = "Weapon_Arrow.ImpactMetal", + [MAT_WOOD] = "Weapon_Arrow.ImpactWood", +} + +local function ArrowBulletCallback(att, tr, dmginfo) + local ent = tr.Entity + local inf = dmginfo:GetInflictor() + + ----print("ArrowBulletCallback", ent) + if ent:IsSolid() and !ent:IsNPC() or !ent:IsPlayer() then + local effectdata = EffectData() + effectdata:SetEntity(NULL) + effectdata:SetOrigin(tr.HitPos) + effectdata:SetAngles(dmginfo:GetInflictor():GetAngles()) + util.Effect("tf_arrow_stuck_rescue_building", effectdata) + + inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") + elseif ent:IsPlayer() or ent:IsNPC() or ent:IsBuilding() then + local bone, hitpos = ent:TranslatePhysBoneToBone(tr.PhysicsBone), tr.HitPos + inf:GetForward() * 5 + local pos = ent:GetBonePosition(bone) + + --inf:SetAngles((pos - hitpos):Angle()) + + local effectdata = EffectData() + effectdata:SetEntity(ent) + effectdata:SetAttachment(tr.PhysicsBone) + effectdata:SetOrigin(hitpos) + effectdata:SetAngles(inf:GetAngles()) + util.Effect("tf_arrow_stuck_rescue_building", effectdata) + + inf.HitPos = hitpos + inf.HitAng = inf:GetAngles() + inf.HitBone = tr.PhysicsBone + + if not inf.NoHeadshots and tr.HitGroup == HITGROUP_HEAD then + inf.critical = true + inf.NameOverride = "tf_projectile_arrow_headshot" + end + + if att:IsPlayer() then + + net.Start("ArrowHit") + net.Send(att) + end + else + inf:EmitSound(ImpactSounds[tr.MatType] or "Weapon_Arrow.ImpactMetal") + end +end + +function ENT:Hit(ent) + self.Touch = nil + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local fraction = math.Clamp(self:GetPos():Distance(self.StartPos) / 1024, 0, 1) + if ent:IsBuilding() and ent:IsFriendly(owner) then + GAMEMODE:HealPlayer(owner, ent, Lerp(fraction, self.RangedMinHealing, self.RangedMaxHealing), true, false) + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + ParticleEffect( "repair_claw_heal_blue", self:GetPos(), self:GetAngles() ) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + ParticleEffect( "repair_claw_heal_blue", self:GetPos(), self:GetAngles() ) + else + ParticleEffect( "repair_claw_heal_red", self:GetPos(), self:GetAngles() ) + end + self:EmitSound("Weapon_Arrow.ImpactMetal") + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.5) + + return + else + self.DamageRandomize = 0 + self.MaxDamageRampUp = 0 + self.MaxDamageFalloff = 0 + self.BaseDamage = Lerp(fraction, self.RangedMinDamage, self.RangedMaxDamage) + end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetForward() + + local tr = util.QuickTrace(self:GetPos(), 20*dir, self) + + local trtest = util.TraceHull{ + start = self:GetPos(), + endpos = self:GetPos() + 20*dir, + filter = self, + mins = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), + maxs = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize), + } + + ----MsgN("Test trace ("..tostring(self)..") : physbone "..tr.PhysicsBone) + + self:FireBullets{ + Src=self:GetPos(), + Attacker=owner, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=damage, + Tracer=0, + Force=Lerp(self.Charge, 1, 50), + Callback=ArrowBulletCallback, + } + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.5) +end + +function ENT:ShouldCollide(ent) + if self.IsHealingBolt and IsValid(self:GetOwner()) and ent:IsTFPlayer() and ent:IsFriendly(self:GetOwner()) and not ent:IsBuilding() then + return true + end +end + +function ENT:Touch(ent) + if ent:IsSolid() then + self:Hit(ent) + end +end + +-- Used for serverside ragdoll pinning (singleplayer only) +hook.Add("PostScaleDamage", "TFArrowBuildingPinRegister", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf:GetClass()=="tf_projectile_arrow_heal_building" and inf.HitPos then + ent.LastArrowHitPos = inf.HitPos + ent.LastArrowHitAng = inf.HitAng + ent.LastArrowHitBone = inf.HitBone + else + ent.LastArrowHitPos = nil + ent.LastArrowHitAng = nil + ent.LastArrowHitBone = nil + end +end) + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_ball/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_ball/shared.lua new file mode 100644 index 000000000..e1158f571 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_ball/shared.lua @@ -0,0 +1,305 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_baseball.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound2 = Sound("player/pl_impact_stun_range.wav") +ENT.ExplosionSound = Sound("player/pl_impact_stun.wav") +ENT.BounceSound = Sound("Weapon_Baseball.HitWorld") + +ENT.BaseDamage = 25 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 5 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Initialize() + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_VPHYSICS) + self:SetHealth(1) + + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass * 2) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + if (self:GetOwner():Team() == TEAM_RED) then + self.trail = util.SpriteTrail( self, 0, Color( 255, 255, 255 ), false, 9, 0, 0.4, 1 / ( 96 * 1 ), "effects/baseballtrail_red.vmt" ) + else + self.trail = util.SpriteTrail( self, 0, Color( 255, 255, 255 ), false, 9, 0, 0.4, 1 / ( 96 * 1 ), "effects/baseballtrail_blu.vmt" ) + end + timer.Simple(3, function() + self.trail:Remove() + end) + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 20 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","stunballtrail_" .. effect .. "_crit") + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local owner = self:GetOwner() + + local range, damage + + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end +function ENT:Touch(ent) + if ent.Base == "npc_tf2base" or ent.Base == "npc_tf2base_mvm" or ent.Base == "npc_demo_red" or ent.Base == "npc_demo_mvm" or ent.Base == "npc_scout_mvm" or ent.Base == "npc_hwg_red" or ent.Base == "npc_heavy_mvm" or ent.Base == "npc_heavy_mvm_shotgun" or ent.Base == "npc_soldier_red" or ent.Base == "npc_sniper_red" or ent.Base == "npc_spy_red" or ent.Base == "npc_scout_red" or ent.Base == "npc_pyro_red" or ent.Base == "npc_medic_red" or ent.Base == "npc_engineer_red" and !ent:IsFriendly(self:GetOwner()) and ent:Health()>0 and self.critical and !ent.IsStunned then + self:EmitSound(self.ExplosionSound2, 100, 100) + timer.Create("StunRobot25", 0.001, 1, function() + ent:RestartGesture(ACT_MP_STUN_BEGIN,2) + timer.Create("StunRobotloop3", 0.6, 0, function() + if not IsValid(ent) then timer.Stop("StunRobotloop") return end + timer.Create("StunRobotloop4", 0.2, 0, function() + if not IsValid(ent) then timer.Stop("StunRobotloop4") return end + ent:RestartGesture(ACT_MP_STUN_MIDDLE,2) + end) + end) + end) + ent:RestartGesture(ACT_MP_STUN_BEGIN, true) + ent.IsStunned = true + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("head")) + timer.Simple(5, function() + if not IsValid(ent) then return end + timer.Stop("StunRobotloop3") + timer.Stop("StunRobotloop4") + + ent.IsStunned = false + ent:RestartGesture(ACT_MP_STUN_END,2) + end) + elseif ent.Base == "npc_tf2base" or ent.Base == "npc_tf2base_mvm" or ent.Base == "npc_demo_red" or ent.Base == "npc_demo_mvm" or ent.Base == "npc_scout_mvm" or ent.Base == "npc_hwg_red" or ent.Base == "npc_heavy_mvm" or ent.Base == "npc_heavy_mvm_shotgun" or ent.Base == "npc_soldier_red" or ent.Base == "npc_sniper_red" or ent.Base == "npc_spy_red" or ent.Base == "npc_scout_red" or ent.Base == "npc_pyro_red" or ent.Base == "npc_medic_red" or ent.Base == "npc_engineer_red" and !ent:IsFriendly(self:GetOwner()) and ent:Health()>0 and !self.critical then + self:EmitSound(self.ExplosionSound2, 100, 100) + self:DoExplosion() + end +end +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:IsTFPlayer() and !data.HitEntity:IsNPC() and !data.HitEntity:IsFriendly(self:GetOwner()) and data.HitEntity:Health()>0 and self.critical then + self:EmitSound(self.ExplosionSound2, 100, 100) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, data.HitEntity, data.HitEntity:LookupAttachment("head")) + timer.Create("Stunned"..data.HitEntity:EntIndex(), 0.1, 80, function() + data.HitEntity:SetClassSpeed(data.HitEntity:GetPlayerClassTable().Speed * 0.7) + data.HitEntity:AddPlayerState(PLAYERSTATE_STUNNED) + end) + timer.Simple(8, function() + timer.Stop("Stunned"..data.HitEntity:EntIndex()) + data.HitEntity:ResetClassSpeed() + data.HitEntity:RemovePlayerState(PLAYERSTATE_STUNNED) + end) + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:IsTFPlayer() and !data.HitEntity:IsNPC() and !data.HitEntity:IsFriendly(self:GetOwner()) and data.HitEntity:Health()>0 then + sound.Play(self.ExplosionSound, self:GetPos()) + timer.Create("Stunned"..data.HitEntity:EntIndex(), 0.1, 80, function() + data.HitEntity:SetClassSpeed(data.HitEntity:GetPlayerClassTable().Speed * 0.7) + data.HitEntity:AddPlayerState(PLAYERSTATE_STUNNED) + end) + timer.Simple(8, function() + timer.Stop("Stunned"..data.HitEntity:EntIndex()) + data.HitEntity:ResetClassSpeed() + data.HitEntity:RemovePlayerState(PLAYERSTATE_STUNNED) + end) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, data.HitEntity, data.HitEntity:LookupAttachment("head")) + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:GetClass() == "npc_antlionguard" and !data.HitEntity:IsFriendly(self:GetOwner()) and !self.critical and data.HitEntity:Health()>0 then + sound.Play(self.ExplosionSound, self:GetPos()) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, data.HitEntity, data.HitEntity:LookupAttachment("head")) + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:Fire("EnableBark") + data.HitEntity:SetModelScale(data.HitEntity:GetModelScale() + 0.04) + data.HitEntity:SetMaxHealth(data.HitEntity:GetMaxHealth() + 50) + data.HitEntity:SetHealth(data.HitEntity:GetHealth() + 45) + data.HitEntity:Fire("DisableBark", "", 8) + self:GetOwner():Speak("TLK_STUNNED_TARGET") + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:GetClass() == "npc_antlionguard" and !data.HitEntity:IsFriendly(self:GetOwner()) and self.critical and data.HitEntity:Health()>0 then + self:EmitSound(self.ExplosionSound2, 100, 100) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, data.HitEntity, data.HitEntity:LookupAttachment("head")) + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:Fire("EnableBark") + data.HitEntity:SetModelScale(data.HitEntity:GetModelScale() + 0.15) + data.HitEntity:SetMaxHealth(data.HitEntity:GetMaxHealth() + 140) + data.HitEntity:SetHealth(data.HitEntity:GetHealth() + 125) + data.HitEntity:Fire("DisableBark", "", 15) + self:GetOwner():Speak("TLK_STUNNED_TARGET") + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then + if self.BouncesLeft>0 then + if self.critical then + self:EmitSound(self.ExplosionSound2, 100, 100) + else + sound.Play(self.ExplosionSound, self:GetPos()) + end + self:DoExplosion() + self:GetOwner():Speak("TLK_STUNNED_TARGET") + end + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + end + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self.BouncesLeft = self.BouncesLeft - 1 + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_cannonball/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_cannonball/shared.lua new file mode 100644 index 000000000..f1b6583db --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_cannonball/shared.lua @@ -0,0 +1,318 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_cannonball.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound = Sound("Weapon_LooseCannon.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 60 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0.3 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 +ENT.ExplodeTime = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 2.8 + +ENT.Mass = 30 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Initialize() + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + self.ExplosiveHat = true + self.BouncesLeft = 1 + self:SetModel("models/player/items/soldier/soldier_shako.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self.BounceSound = "Flesh.ImpactSoft" + self:SetPos(self:GetPos() - 81 * self:GetUp()) + elseif self.GrenadeMode==-1 then + self:SetModel(self.Model) + self:SetNoDraw(true) + self:DrawShadow(false) + self:SetNotSolid(true) + self:DoExplosion() + return + elseif self.GrenadeMode==1 then + self.BouncesLeft = 2 + self:SetModel(self.Model2) + self:PhysicsInitSphere(8, "metal_bouncy") + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self:SetHealth(1) + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + if self.GrenadeMode==1 then + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + else + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + end + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass * 2) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + self.ExplodeTime + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_timer = ents.Create("info_particle_system") + self.particle_timer:SetPos(self:GetRealPos()) + self.particle_timer:SetParent(self) + self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) + self.particle_timer:SetKeyValue("start_active", "1") + self.particle_timer:Spawn() + self.particle_timer:Activate() + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetRealPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end +end + +function ENT:GravGunPunt( ply ) + self:SetOwner(ply) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:GravGunPickupAllowed( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + sound.Play(self.ExplosionSound, self:GetPos()) + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range, damage + + if self.GrenadeMode==-1 then + range = self.ExplosionRadiusInit + elseif self.BouncesLeft<=0 then + range = self.ExplosionRadiusInit + + self.BaseDamage = 64 + self.DamageRandomize = 0 + self:GetOwner()Damage = 1 + else + range = self.ExplosionRadiusInit * 0.7 + + self.BaseDamage = 100 + self.DamageRandomize = 0.05 + self:GetOwner()Damage = 0.6 + end + + --self.ResultDamage = self.BaseDamage + + --util.BlastDamage(self, owner, self:GetPos(), range, self.BaseDamage) + util.BlastDamage(self, owner, self:GetRealPos(), range, 100) + for k,v in ipairs(ents.FindInSphere(self:GetRealPos(), range)) do + if v:IsTFPlayer() and !v:IsFriendly(self:GetOwner()) and !v:OnGround() and v.HitByCannonball then + v.HitByCannonball = false + ParticleEffectAttach("doubledonk_text", PATTACH_POINT_FOLLOW, v, v:LookupAttachment("head")) + v:EmitSound("player/doubledonk.wav", 95) + local dir = self:GetOwner():GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + v:SetGroundEntity(NULL) + v:SetLocalVelocity(dir2 * 400) + v:SetThrownByExplosion(true) + end + end + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 and !data.HitEntity:IsFriendly(self:GetOwner()) then + local range = self.ExplosionRadiusInit + util.BlastDamage(self, self:GetOwner(), self:GetRealPos(), range, 20) + self:EmitSound("weapons/loose_cannon_ball_impact.wav", 95) + data.HitEntity.HitByCannonball = true + data.HitEntity.readyToDonk = true + local dir = self:GetOwner():GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + data.HitEntity:SetGroundEntity(NULL) + data.HitEntity:SetLocalVelocity(dir2 * 400) + data.HitEntity:SetThrownByExplosion(true) + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + end + + self.BouncesLeft = self.BouncesLeft - 1 + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_capsule/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_capsule/shared.lua new file mode 100644 index 000000000..edbab0e93 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_capsule/shared.lua @@ -0,0 +1,321 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") +PrecacheParticleSystem("spell_fireball_tendril_parent_red") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + ParticleEffectAttach("spell_fireball_small_red", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + + if self.dt.Critical then + ParticleEffectAttach("critical_rocket_"..effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound("misc/halloween/spell_fireball_impact.wav") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 90 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.25 +ENT.MaxDamageFalloff = 0.53 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + self:SetMaterial("models/effects/vol_light001") + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + timer.Create("NearMissDF"..self:EntIndex(), 0.1, 0, function() + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 100)) do + if v:IsPlayer() then + v:EmitSound("weapons/fx/nearmiss/dragons_fury_nearmiss.wav", 50, 100) + end + end + end) + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} + + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + + +function ENT:DoExplosion(ent) + self.Touch = nil + + ParticleEffect("spell_fireball_tendril_parent_red", self:GetPos(), self:GetAngles(), self) + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + self:EmitSound("misc/halloween/spell_fireball_impact.wav", 120) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + + util.BlastDamage(self, owner, self:GetPos(), range, 40) + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 80)) do + if v:IsNPC() or v:IsPlayer() then + GAMEMODE:IgniteEntity(v, self, owner, 10) + v:EmitSound("weapons/dragons_fury_impact_bonus_damage_pain.wav") + end + end + end + + if ForceDamageClasses[ent:GetClass()] then + local dmginfo = DamageInfo() + dmginfo:SetDamage(100) + dmginfo:SetDamageType(DMG_ALWAYSGIB) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + end + + self:Remove() +end + + +function ENT:Touch(ent) + if ent:IsSolid() then + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_cleaver/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_cleaver/shared.lua new file mode 100644 index 000000000..daa2de1b6 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_cleaver/shared.lua @@ -0,0 +1,243 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/c_models/c_sd_cleaver/c_sd_cleaver.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound2 = Sound("Cleaver.HitFlesh") +ENT.ExplosionSound = Sound("Cleaver.HitFlesh") +ENT.BounceSound = Sound("weapons/cleaver_hit_world.wav") + +ENT.BaseDamage = 25 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 5 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end +ENT.Trail = {"peejar_trail_red_glow", "peejar_trail_blu_glow"} + +function ENT:Initialize() + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + self.ExplosiveHat = true + self.BouncesLeft = 1 + self:SetModel("models/player/items/soldier/soldier_shako.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self.BounceSound = "Flesh.ImpactSoft" + self:SetPos(self:GetPos() - 81 * self:GetUp()) + elseif self.GrenadeMode==-1 then + self:SetModel(self.Model) + self:SetNoDraw(true) + self:DrawShadow(false) + self:SetNotSolid(true) + self:DoExplosion() + return + elseif self.GrenadeMode==1 then + self.BouncesLeft = 2 + self:SetModel(self.Model2) + self:PhysicsInitSphere(8, "metal_bouncy") + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_CUSTOM) + self:SetHealth(1) + + if self.GrenadeMode==1 then + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + else + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + end + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass * 2) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 20 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + local trail = self.Trail[self:GetOwner():EntityTeam()-1] or self.Trail[1] + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name",trail) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end +end + +function ENT:DoExplosion() + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.1) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsPlayer() or data.HitEntity:IsNPC() and !data.HitEntity:IsFriendly(self:GetOwner()) then + GAMEMODE:EntityStartBleeding(data.HitEntity, self, self:GetOwner(), 10) + self:EmitSound("Cleaver.ImpactFlesh", 75, 100) + local dmginfo = DamageInfo() + dmginfo:SetDamageType(DMG_SLASH) + dmginfo:SetDamage(math.Rand(35,90)) + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self:GetOwner():GetActiveWeapon()) + data.HitEntity:TakeDamageInfo(dmginfo) + self:DoExplosion() + end + if data.HitEntity and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then + + local dmginfo = DamageInfo() + dmginfo:SetDamageType(DMG_SLASH) + dmginfo:SetDamage(math.random(8,90)) + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self) + local dmginfo = DamageInfo() + dmginfo:SetDamageType(DMG_SLASH) + dmginfo:SetDamage(35) + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self) + data.HitEntity:TakeDamageInfo(dmginfo) + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 and self.BouncesLeft == 1 then + self:EmitSound(self.BounceSound, 75, 100) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self.particle_trail:Remove() + end + + self.BouncesLeft = self.BouncesLeft - 1 + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_flare/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_flare/shared.lua new file mode 100644 index 000000000..26c750fb4 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_flare/shared.lua @@ -0,0 +1,289 @@ +-- Flare + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("flaregun_trail_red") +PrecacheParticleSystem("flaregun_trail_blue") +PrecacheParticleSystem("flaregun_crit_red") +PrecacheParticleSystem("flaregun_crit_blue") +PrecacheParticleSystem("flaregun_destroyed") +ENT.FlareType = "Flare" +ENT.FlareTypeAngle = "FlareAngle" +ENT.IsTFWeapon = true + +ENT.MannMelter = false + +function ENT:InitEffects() + local effect = "flaregun" + + if self.critical then + effect = effect.."_crit_" + else + effect = effect.."_trail_" + end + + effect = effect..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + if self.MannMelter == true then + + ParticleEffectAttach( "drg_manmelter_projectile", PATTACH_ABSORIGIN_FOLLOW, self, 0 ) + + else + + ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) + + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +function ENT:Draw() + self:DrawModel() +end +ENT.AutomaticFrameAdvance = true -- Must be set on client +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_flaregun_shell.mdl" + +ENT.ExplosionSound = "weapons/flare_detonator_explode.wav" + +ENT.BaseDamage = 30 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 2.5 +ENT.ExplosionRadiusMultiplier = 20 +ENT.HitSound = Sound("Default.FlareImpact") +ENT.IsSpecial = false +function ENT:Critical() + return self.critical +end + +function ENT:MiniCrit() + return self.minicrit +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.ModelOverride or self.Model) + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + if self.MannMelter == true then + + self:SetMaterial("Models/effects/vol_light001") + + end + + self:SetLocalVelocity(self:GetForward() * (self.Force or 1650)) + self:SetGravity(0.3) + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + end + + self:InitEffects() +end + +function ENT:Think() + if self.FlareTypeAngle == "ScorchAngle" then + self:SetAngles(self:GetAngles() + Angle(math.random(-20,10), math.random(-20,10), math.random(-20,10))) + else + self:SetAngles(self:GetVelocity():Angle()) + end + if SERVER and not IsValid(self:GetOwner()) then + self:Remove() + end + self:NextThink(CurTime()) + return true +end + +function ENT:Hit(ent) + self.Touch = nil + if ent:IsTFPlayer() then + self:EmitSound("player/pl_impact_flare"..math.random(1,3)..".wav", 85, 100) + else + + if self:GetOwner():GetActiveWeapon():GetItemData().model_player == "models/workshop/weapons/c_models/c_detonator/c_detonator.mdl" then + self.HitWorld = true + self:DoExplosion() + self:Fire("Kill", "", 0.01) + else + self:EmitSound("physics/concrete/concrete_impact_flare"..math.random(1,4)..".wav", 85, 100) + end + end + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", "flaregun_destroyed") + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.5) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetVelocity():GetNormal() + + if ent:IsTFPlayer() and ent:HasPlayerState(PLAYERSTATE_ONFIRE) then + self.critical = true + end + if self.IsSpecial then + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 350)) do + if v:IsFlammable() then + if (v:IsTFPlayer() and v:IsFriendly(self:GetOwner())) then return end + GAMEMODE:IgniteEntity(ent, self, owner, 10) + local dmginfo = DamageInfo() + dmginfo:SetDamageType(DMG_GENERIC) + dmginfo:SetDamage(self.BaseDamage) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + ent:TakeDamageInfo(dmginfo) + end + end + else + if ent:IsFlammable() then + if (ent:IsTFPlayer() and ent:IsFriendly(self:GetOwner())) then return end + GAMEMODE:IgniteEntity(ent, self, owner, 10) + local dmginfo = DamageInfo() + dmginfo:SetDamageType(DMG_GENERIC) + dmginfo:SetDamage(self.BaseDamage) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + ent:TakeDamageInfo(dmginfo) + end + end + self:SetLocalVelocity(Vector(0,0,0)) + + local range = 60 + if self.FlareType == "Scorch" and IsValid(ent) then + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 180)) do + if v:IsValid(self.WModel2) and v:IsTFPlayer() and !v:IsFriendly(owner) then + self:EmitSound("player/pl_impact_flare"..math.random(1,3)..".wav", 85, 100) + GAMEMODE:IgniteEntity(v, self, owner, 10) + util.BlastDamage(self, owner, self:GetPos(), range*1, 20) + end + self:SetVelocity(self:GetVelocity() + Vector(0, 0, 120) + v:GetVelocity()) + self.FlareTypeAngle = "ScorchAngle" + self:SetMoveType(MOVETYPE_FLYGRAVITY) + end + timer.Simple(2, function() + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 180)) do + if v:IsValid(self.WModel2) and v:IsTFPlayer() and !v:IsFriendly(owner) then + self:EmitSound("player/pl_impact_flare"..math.random(1,3)..".wav", 85, 100) + GAMEMODE:IgniteEntity(v, self, owner, 10) + util.BlastDamage(self, owner, self:GetPos(), range*1, 20) + end + end + local flags = 0 + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", "flaregun_destroyed") + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.5) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.1) + end) + else + + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + + self:Fire("kill", "", 0.1) + end +end + + +function ENT:DoExplosion() + self.Touch = nil + + local effect, angle + + if !self.HitWorld then + self:EmitSound("Weapon_Detonator.Detonate") + else + self:EmitSound("Weapon_Detonator.DetonateWorld") + end + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = 60 + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + util.BlastDamage(self, owner, self:GetPos(), range*2, 50) + end + + for k,v in ipairs(ents.FindInSphere(self:GetPos(), range*2)) do + if v:Health() >= 0 and v:IsFlammable() then + GAMEMODE:IgniteEntity(v, self, owner, 10) + end + end + + self:Remove() +end + +function ENT:Touch(ent) + if ent:IsSolid() then + if (ent:IsTFPlayer() and ent:IsFriendly(self:GetOwner())) then return end + self:Hit(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_gas/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_gas/shared.lua new file mode 100644 index 000000000..e5f29f005 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_gas/shared.lua @@ -0,0 +1,224 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("peejar_trail_red") +PrecacheParticleSystem("peejar_trail_blu") +PrecacheParticleSystem("critical_grenade_red") +PrecacheParticleSystem("critical_grenade_blue") +PrecacheParticleSystem("peejar_impact") +PrecacheParticleSystem("peejar_impact_milk") +PrecacheParticleSystem("peejar_impact_small") +PrecacheParticleSystem("gas_can_impact_red") + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/c_models/c_gascan/c_gascan.mdl" +ENT.Model2 = "models/weapons/c_models/c_madmilk/c_madmilk.mdl" + +ENT.Explosive = true +ENT.NoSelfDamage = false +--ENT.NoMiniCrits = true +ENT.ZeroDamageCrits = true +ENT.ExplosionSound = Sound("weapons/gas_can_explode.wav") +ENT.OwnerDamage = 0 + +ENT.Trail = {"gas_can_red", "gas_can_blu"} + +ENT.Mass = 10 + +local bugbait_radius = GetConVar("bugbait_radius") +local bugbait_hear_radius = GetConVar("bugbait_hear_radius") +local bugbait_distract_time = GetConVar("bugbait_distract_time") +local bugbait_grenade_radius = GetConVar("bugbait_grenade_radius") + +function ENT:DoSpecialDamage(ent, dmginfo) + local att = dmginfo:GetAttacker() + + dmginfo:SetDamage(0) + dmginfo:SetDamageType(DMG_GENERIC) + + if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then + if self.JarType == 2 then + ent:AddPlayerState(PLAYERSTATE_MILK, true) + ent.NextEndMilk = CurTime() + 10 + else + ent:AddPlayerState(PLAYERSTATE_JARATED, true) + ent.NextEndJarate = CurTime() + 10 + end + + if ent:IsPlayer() then + -- Jarate? NOOOOOOOOOOOOOOOOOOOOOO!!!! + ent:Speak("TLK_JARATE_HIT") + elseif ent:GetClass()=="npc_combine_s" then + ent:Fire("HitByBugbait", "", math.Rand(0, 0.5)) + end + + -- Since this doesn't actually cause damage, we are adding a cooperation here + -- TODO: code high priority cooperations that remain as long as the effect doesn't wear off + GAMEMODE:AddDamageCooperation(ent, att, 1, ASSIST_JARATE, 10) + elseif ent:GetClass()=="tf_entityflame" and (ent.Target==att or att:IsFriendly(ent.Target)) then + -- Extinguish teammates + GAMEMODE:ExtinguishEntity(ent.Target) + ent:EmitSound("TFPlayer.FlameOut") + end +end + +function ENT:Critical(ent, dmginfo) + return ent~=self:GetOwner() and self.critical +end + +function ENT:Initialize() + if self.JarType == 2 then + self:SetModel(self.Model2) + self:SetSkin(2) + else + self:SetModel(self.Model) + end + + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_CUSTOM) + self:SetHealth(1) + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + + local phys = self:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + phys:SetMass(self.Mass) + phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + local trail = self.Trail[self:GetOwner():EntityTeam()] or self.Trail[1] + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name",trail) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_grenade_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:BugbaitTouch(owner) + self:ActivateBugbaitTargets(owner) + -- Alert any antlions around + local bugbait_sound = ents.Create("ai_sound") + bugbait_sound:SetPos(self:GetPos()) + bugbait_sound:SetKeyValue("volume", bugbait_hear_radius:GetInt()) + bugbait_sound:SetKeyValue("duration", bugbait_distract_time:GetFloat()) + bugbait_sound:SetKeyValue("soundtype", "512") + bugbait_sound:Spawn() + bugbait_sound:Activate() + bugbait_sound:Fire("EmitAISound", "", 0) + bugbait_sound:Fire("Kill", "", 5) + + --[[ Tell all spawners to now fight to this position + g_AntlionMakerManager.BroadcastFightGoal( GetAbsOrigin() );]] +end + +-- Direct port from CGrenadeBugBait::ActivateBugbaitTargets +function ENT:ActivateBugbaitTargets(owner) + --[[ + -- Iterate over all sensors to see if they detected this impact + for _,v in pairs(ents.FindByClass("point_bugbait")) do + -- Make sure we're within range of the sensor + local r = v:GetKeyValues().radius + if r and r > v:GetPos():Distance(self:GetPos()) then + -- Tell the sensor it's been hit + end + end]] + + -- oh fuck this shit +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + sound.Play(self.ExplosionSound, self:GetPos()) + + --[[local effect = "peejar_impact" + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.1)]] + + local flags + if self.JarType == 2 then + flags = 16 + else + flags = 4 + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + local range, damage + range = 140 + self.BaseDamage = 5 + self:GetOwner()Damage = 2 + self.ResultDamage = self.BaseDamage + + self.CalculatedDamage = 0 + -- Yes, I'm using blast damage because it has a complex algorithm that allows explosive damage to get around walls with a certain limit + -- A simple FindInSphere wouldn't be enough since players would be able to get jarated through a wall + util.BlastDamage(self, owner, self:GetPos(), range, 5) + self:BugbaitTouch(owner) + self:Fire("kill", "", 0.2) +end + +function ENT:PhysicsCollide(data, physobj) + ParticleEffect("gas_can_impact_red", self:GetPos(), self:GetAngles(), self) + self:DoExplosion() +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_gibber/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_gibber/shared.lua new file mode 100644 index 000000000..e2712a452 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_gibber/shared.lua @@ -0,0 +1,428 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("eyeboss_projectile") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + ParticleEffectAttach("rockettrail", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + + if self:GetOwner():GetClass() == "eyeball_boss" then + ParticleEffectAttach("eyeboss_projectile", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end + if self.dt.Critical then + ParticleEffectAttach("critical_rocket_"..effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound(")weapons/mlg_explode"..math.random(1,3)..".wav") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 100 +ENT.DamageRandomize = 0.8 +ENT.MaxDamageRampUp = 1.8 +ENT.MaxDamageFalloff = 0.8 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 2500 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +function ENT:Critical() + if self:GetOwner():GetClass() == "eyeball_boss" then + return true + end + return true +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} +function ENT:DoExplosion(ent) + + if ent == self:GetOwner() and self:GetOwner():GetClass() == "eyeball_boss" then return end + self.Touch = nil + + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + self:EmitSound(self.ExplosionSound) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + end + + if SERVER then + local gibmini = ents.Create("tf_projectile_gibber_mini") + gibmini:SetPos(self:GetPos()) + gibmini:Spawn() + gibmini:Activate() + gibmini.critical = true + gibmini:GetPhysicsObject():SetVelocity( Vector(math.random(-40,80), math.random(-40,80), math.random(-40,80)) ) + local vel = self:GetOwner():GetAimVector():Angle() + vel.p = vel.p + vel = vel:Forward() * math.random(-1600,1300) * (gibmini.Mass or 10) + + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-8000,2000),math.random(-6000,2000),math.random(-8000,2000))) + end + gibmini:GetPhysicsObject():ApplyForceCenter(vel) + gibmini:SetOwner(self:GetOwner()) + local gibmini = ents.Create("tf_projectile_gibber_mini") + gibmini:SetPos(self:GetPos()) + gibmini:Spawn() + gibmini:Activate() + gibmini.critical = true + gibmini:GetPhysicsObject():SetVelocity( Vector(math.random(-40,80), math.random(-40,80), math.random(-40,80)) ) + local vel = self:GetOwner():GetAimVector():Angle() + vel.p = vel.p + vel = vel:Forward() * math.random(-1600,1300) * (gibmini.Mass or 10) + + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-8000,2000),math.random(-6000,2000),math.random(-8000,2000))) + end + gibmini:GetPhysicsObject():ApplyForceCenter(vel) + gibmini:SetOwner(self:GetOwner()) + local gibmini = ents.Create("tf_projectile_gibber_mini") + gibmini:SetPos(self:GetPos()) + gibmini:Spawn() + gibmini:Activate() + gibmini.critical = true + gibmini:GetPhysicsObject():SetVelocity( Vector(math.random(-40,80), math.random(-40,80), math.random(-40,80)) ) + local vel = self:GetOwner():GetAimVector():Angle() + vel.p = vel.p + vel = vel:Forward() * math.random(-1600,1300) * (gibmini.Mass or 10) + + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-8000,2000),math.random(-6000,2000),math.random(-8000,2000))) + end + gibmini:GetPhysicsObject():ApplyForceCenter(vel) + gibmini:SetOwner(self:GetOwner()) + local gibmini = ents.Create("tf_projectile_gibber_mini") + gibmini:SetPos(self:GetPos()) + gibmini:Spawn() + gibmini:Activate() + gibmini.critical = true + gibmini:GetPhysicsObject():SetVelocity( Vector(math.random(-40,80), math.random(-40,80), math.random(-40,80)) ) + local vel = self:GetOwner():GetAimVector():Angle() + vel.p = vel.p + vel = vel:Forward() * math.random(-1600,1300) * (gibmini.Mass or 10) + + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-8000,2000),math.random(-6000,2000),math.random(-8000,2000))) + end + gibmini:GetPhysicsObject():ApplyForceCenter(vel) + gibmini:SetOwner(self:GetOwner()) + local gibmini = ents.Create("tf_projectile_gibber_mini") + gibmini:SetPos(self:GetPos()) + gibmini:Spawn() + gibmini:Activate() + gibmini.critical = true + gibmini:GetPhysicsObject():SetVelocity( Vector(math.random(-40,80), math.random(-40,80), math.random(-40,80)) ) + local vel = self:GetOwner():GetAimVector():Angle() + vel.p = vel.p + vel = vel:Forward() * math.random(-1600,1300) * (gibmini.Mass or 10) + + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-8000,2000),math.random(-6000,2000),math.random(-8000,2000))) + end + gibmini:GetPhysicsObject():ApplyForceCenter(vel) + gibmini:SetOwner(self:GetOwner()) + local gibmini = ents.Create("tf_projectile_gibber_mini") + gibmini:SetPos(self:GetPos()) + gibmini:Spawn() + gibmini:Activate() + gibmini.critical = true + gibmini:GetPhysicsObject():SetVelocity( Vector(math.random(-40,80), math.random(-40,80), math.random(-40,80)) ) + local vel = self:GetOwner():GetAimVector():Angle() + vel.p = vel.p + vel = vel:Forward() * math.random(-1600,1300) * (gibmini.Mass or 10) + + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + gibmini:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-8000,2000),math.random(-6000,2000),math.random(-8000,2000))) + end + gibmini:GetPhysicsObject():ApplyForceCenter(vel) + gibmini:SetOwner(self:GetOwner()) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + if owner:IsPlayer() and owner:GetActiveWeapon():GetItemData().model_player == "models/weapons/c_models/c_rocketjumper/c_rocketjumper.mdl" then + util.BlastDamage(self, owner, self:GetPos(), range*1, 0) + for k,v in ipairs(ents.FindInSphere(self:GetPos(), range*1)) do + if v == owner then + v:SetLocalVelocity(v:GetVelocity() * 2.5 + Vector(0, 0, 400)) + end + end + else + util.BlastDamage(self, owner, self:GetPos(), range*1, 100) + end + end + + if ForceDamageClasses[ent:GetClass()] then + local dmginfo = DamageInfo() + dmginfo:SetDamage(100) + dmginfo:SetDamageType(DMG_BLAST) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + end + + self:Remove() +end + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + +function ENT:Touch(ent) + if not ent:IsTrigger() and ent:IsSolid() then + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_gibber_mini/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_gibber_mini/shared.lua new file mode 100644 index 000000000..a44f61fa4 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_gibber_mini/shared.lua @@ -0,0 +1,304 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_bfg_bomblet.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound = Sound("Weapon_Airstrike.Explosion") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 60 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 10 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return true +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Initialize() + if self:GetOwner():IsPlayer() then + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + self.ExplosiveHat = true + self.BouncesLeft = 1 + self:SetModel("models/player/items/soldier/soldier_shako.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self.BounceSound = "Flesh.ImpactSoft" + self:SetPos(self:GetPos() - 81 * self:GetUp()) + elseif self.GrenadeMode==-1 then + self:SetModel(self.Model) + self:SetNoDraw(true) + self:DrawShadow(false) + self:SetNotSolid(true) + self:DoExplosion() + return + elseif self.GrenadeMode==1 then + self.BouncesLeft = 2 + self:SetModel(self.Model2) + self:PhysicsInitSphere(8, "metal_bouncy") + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:PhysicsInit(SOLID_CUSTOM) + self:AddFlags(FL_GRENADE) + self:SetHealth(1) + + if self.GrenadeMode==1 then + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + else + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + end + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 2.3 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_timer = ents.Create("info_particle_system") + self.particle_timer:SetPos(self:GetRealPos()) + self.particle_timer:SetParent(self) + self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) + self.particle_timer:SetKeyValue("start_active", "1") + self.particle_timer:Spawn() + self.particle_timer:Activate() + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetRealPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:GravGunPunt( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:GravGunPickupAllowed( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 50)) do + if ( v:IsValid(self.WModel2) and v:IsTFPlayer() and v:Health() >= 0 and v != self:GetOwner() ) then + self:DoExplosion() + end + end +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + sound.Play(self.ExplosionSound, self:GetPos()) + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range, damage + + if self.GrenadeMode==-1 then + range = self.ExplosionRadiusInit + elseif self.BouncesLeft<=0 then + range = self.ExplosionRadiusInit + + self.BaseDamage = 64 + self.DamageRandomize = 0 + self:GetOwner()Damage = 1 + else + range = self.ExplosionRadiusInit * 0.7 + + self.BaseDamage = 100 + self.DamageRandomize = 0.05 + self:GetOwner()Damage = 0.6 + end + + --self.ResultDamage = self.BaseDamage + + --util.BlastDamage(self, owner, self:GetPos(), range, self.BaseDamage) + util.BlastDamage(self, owner, self:GetRealPos(), range, 100) + + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsTFPlayer()) and data.HitEntity:Health()>0 then + if self.BouncesLeft>0 then + self:DoExplosion() + end + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 100)) do + if v:GetClass() == "npc_metropolice" then + EmitSentence( "METROPOLICE_DANGER_GREN"..math.random(0,2), v:GetPos(), 0.5, CHAN_VOICE, 1, 75, 0, 100 ) + elseif v:GetClass() == "npc_combine_s" then + EmitSentence( "COMBINE_GREN"..math.random(0,1), v:GetPos(), 1, CHAN_VOICE, 0.5, 75, 0, 100 ) + elseif v:GetClass() == "npc_sniper" then + EmitSentence( "METROPOLICE_DANGER_VEHICLE0", v:GetPos(), 1, CHAN_VOICE, 0.5, 75, 0, 100 ) + end + end + end + + self.BouncesLeft = self.BouncesLeft - 1 + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_jar/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_jar/shared.lua new file mode 100644 index 000000000..f6c78b517 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_jar/shared.lua @@ -0,0 +1,223 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("peejar_trail_red") +PrecacheParticleSystem("peejar_trail_blu") +PrecacheParticleSystem("critical_grenade_red") +PrecacheParticleSystem("critical_grenade_blue") +PrecacheParticleSystem("peejar_impact") +PrecacheParticleSystem("peejar_impact_milk") +PrecacheParticleSystem("peejar_impact_small") + +if CLIENT then + +ENT.RenderGroup = RENDERGROUP_BOTH + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/c_models/urinejar.mdl" +ENT.Model2 = "models/weapons/c_models/c_madmilk/c_madmilk.mdl" + +ENT.Explosive = true +ENT.NoSelfDamage = true +--ENT.NoMiniCrits = true +ENT.ZeroDamageCrits = true +ENT.ExplosionSound = Sound("Jar.Explode") +ENT.OwnerDamage = 0 + +ENT.Trail = {"peejar_trail_red", "peejar_trail_blu"} + +ENT.Mass = 10 + +local bugbait_radius = GetConVar("bugbait_radius") +local bugbait_hear_radius = GetConVar("bugbait_hear_radius") +local bugbait_distract_time = GetConVar("bugbait_distract_time") +local bugbait_grenade_radius = GetConVar("bugbait_grenade_radius") + +function ENT:DoSpecialDamage(ent, dmginfo) + local att = dmginfo:GetAttacker() + + dmginfo:SetDamage(0) + dmginfo:SetDamageType(DMG_GENERIC) + + if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then + if self.JarType == 2 then + ent:AddPlayerState(PLAYERSTATE_MILK, true) + ent.NextEndMilk = CurTime() + 10 + else + ent:AddPlayerState(PLAYERSTATE_JARATED, true) + ent.NextEndJarate = CurTime() + 10 + end + + if ent:IsPlayer() then + -- Jarate? NOOOOOOOOOOOOOOOOOOOOOO!!!! + ent:Speak("TLK_JARATE_HIT") + elseif ent:GetClass()=="npc_combine_s" then + ent:Fire("HitByBugbait", "", math.Rand(0, 0.5)) + end + + -- Since this doesn't actually cause damage, we are adding a cooperation here + -- TODO: code high priority cooperations that remain as long as the effect doesn't wear off + GAMEMODE:AddDamageCooperation(ent, att, 1, ASSIST_JARATE, 10) + elseif ent:GetClass()=="tf_entityflame" and (ent.Target==att or att:IsFriendly(ent.Target)) then + -- Extinguish teammates + GAMEMODE:ExtinguishEntity(ent.Target) + ent:EmitSound("TFPlayer.FlameOut") + end +end + +function ENT:Critical(ent, dmginfo) + return ent~=self:GetOwner() and self.critical +end + +function ENT:Initialize() + if self.JarType == 2 then + self:SetModel(self.Model2) + self:SetSkin(2) + else + self:SetModel(self.Model) + end + + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_CUSTOM) + self:SetHealth(1) + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + + local phys = self:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + phys:SetMass(self.Mass) + phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + local trail = self.Trail[self:GetOwner():EntityTeam()-1] or self.Trail[1] + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name",trail) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_grenade_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:BugbaitTouch(owner) + self:ActivateBugbaitTargets(owner) + -- Alert any antlions around + local bugbait_sound = ents.Create("ai_sound") + bugbait_sound:SetPos(self:GetPos()) + bugbait_sound:SetKeyValue("volume", bugbait_hear_radius:GetInt()) + bugbait_sound:SetKeyValue("duration", bugbait_distract_time:GetFloat()) + bugbait_sound:SetKeyValue("soundtype", "512") + bugbait_sound:Spawn() + bugbait_sound:Activate() + bugbait_sound:Fire("EmitAISound", "", 0) + bugbait_sound:Fire("Kill", "", 5) + + --[[ Tell all spawners to now fight to this position + g_AntlionMakerManager.BroadcastFightGoal( GetAbsOrigin() );]] +end + +-- Direct port from CGrenadeBugBait::ActivateBugbaitTargets +function ENT:ActivateBugbaitTargets(owner) + --[[ + -- Iterate over all sensors to see if they detected this impact + for _,v in pairs(ents.FindByClass("point_bugbait")) do + -- Make sure we're within range of the sensor + local r = v:GetKeyValues().radius + if r and r > v:GetPos():Distance(self:GetPos()) then + -- Tell the sensor it's been hit + end + end]] + + -- oh fuck this shit +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + sound.Play(self.ExplosionSound, self:GetPos()) + + --[[local effect = "peejar_impact" + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.1)]] + + local flags + if self.JarType == 2 then + flags = 16 + else + flags = 4 + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range, damage + range = 180 + self.BaseDamage = 1 + self.OwnerDamage = 0 + self.ResultDamage = self.BaseDamage + + self.CalculatedDamage = 0 + -- Yes, I'm using blast damage because it has a complex algorithm that allows explosive damage to get around walls with a certain limit + -- A simple FindInSphere wouldn't be enough since players would be able to get jarated through a wall + util.BlastDamage(self, owner, self:GetPos(), range*1, 0.00001) + self:BugbaitTouch(owner) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + self:DoExplosion() +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_nail/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_nail/shared.lua new file mode 100644 index 000000000..82e00b01e --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_nail/shared.lua @@ -0,0 +1,186 @@ +-- Nail + +ENT.Type = "anim" +ENT.Base = "base_anim" + + PrecacheParticleSystem("nailtrails_medic_red") + PrecacheParticleSystem("nailtrails_medic_blue") + PrecacheParticleSystem("nailtrails_medic_red_crit") + PrecacheParticleSystem("nailtrails_medic_blue_crit") + +PrecacheParticleSystem("stunballtrail_red_crit") +PrecacheParticleSystem("stunballtrail_blue_crit") + +ENT.IsTFWeapon = true + +function ENT:SetupDataTables() + self:DTVar("Int", 0, "ProjectileType") + self:DTVar("Bool", 0, "Critical") +end + +function ENT:SetProjectileType(t) + self.dt.ProjectileType = t +end + +function ENT:ProjectileType() + return self.dt.ProjectileType +end + +function ENT:InitEffects() + if self:ProjectileType()==3 then + if SERVER then + local mat + if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then + mat = "Effects/arrowtrail_blu.vmt" + elseif GAMEMODE:EntityTeam(self:GetOwner())==TF_TEAM_PVE_INVADERS then + mat = "Effects/arrowtrail_blu.vmt" + else + mat = "Effects/arrowtrail_red.vmt" + end + + --self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, + -- 0.1, 5, 0.1, 1/(5+1)*0.5, mat) + end + + if self.dt.Critical then + local effect = "stunballtrail_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())).."_crit" + --ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) + end + return + end + + local effectname = "nailtrails_medic_blue_crit" + + local effect = "nailtrails_medic_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if self.dt.Critical then + effect = effect.."_crit" + end + + ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Models = { + Model("models/weapons/w_models/w_nail.mdl"), +} + +ENT.BaseDamage = 15 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.2 +ENT.MaxDamageFalloff = 0.5 +ENT.DamageModifier = 1 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 3 + +ENT.BaseSpeed = 1750 + + + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Models[self:ProjectileType()] or self.Models[1]) + + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + self:SetTrigger(true) + + --self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + self:SetNotSolid(true) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + self:InitEffects() + + if self:ProjectileType()==3 then + local ang = self:GetAngles() + ang:RotateAroundAxis(ang:Right(), -90) + self:SetAngles(ang) + end +end + +function ENT:Think() + if self:ProjectileType()==3 then + local ang = self:GetVelocity():Angle() + ang:RotateAroundAxis(ang:Right(), -90) + self:SetAngles(ang) + else + self:SetAngles(self:GetVelocity():Angle()) + end +end + +function ENT:Hit(ent) + self.Touch = nil + + if ent:IsWorld() then + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetMagnitude(self:GetSkin()) + effectdata:SetAttachment(self:ProjectileType()-1) + util.Effect("tf_nail_stuck", effectdata) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetVelocity():GetNormal() + + self:FireBullets{ + Src=self:GetPos(), + Attacker=owner, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=damage, + Tracer=0, + HullSize=self.HitboxSize, + } + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:Fire("kill", "", 0.01) +end + +function ENT:Touch(ent) + if not ent:IsTrigger() and GAMEMODE:ShouldCollide(self, ent) then + self:Hit(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_ornament/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_ornament/shared.lua new file mode 100644 index 000000000..abbc6e0ab --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_ornament/shared.lua @@ -0,0 +1,285 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/c_models/c_xms_festive_ornament.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound2 = Sound("BallBuster.OrnamentImpactRange") +ENT.ExplosionSound = Sound("BallBuster.OrnamentImpact") +ENT.BounceSound = Sound("BallBuster.Ball_HitWorld") + +ENT.BaseDamage = 25 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 5 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Initialize() + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_VPHYSICS) + self:SetHealth(1) + + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass * 2) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 20 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if (self:GetOwner():Team() == TEAM_RED) then + self.trail = util.SpriteTrail( self, 0, Color( 255, 255, 255 ), false, 9, 0, 0.4, 1 / ( 96 * 1 ), "effects/baseballtrail_red.vmt" ) + else + self.trail = util.SpriteTrail( self, 0, Color( 255, 255, 255 ), false, 9, 0, 0.4, 1 / ( 96 * 1 ), "effects/baseballtrail_blu.vmt" ) + end + timer.Simple(3, function() + self.trail:Remove() + end) + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","stunballtrail_" .. effect .. "_crit") + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local owner = self:GetOwner() + + local range = 100 + + util.BlastDamage(self, owner, self:GetRealPos(), range, 20) + for k,v in ipairs(ents.FindInSphere(self:GetRealPos(), range)) do + if (v:IsTFPlayer()) then + GAMEMODE:EntityStartBleeding(v, self:GetOwner():GetActiveWeapon(), self:GetOwner(), 10) + end + end + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetRealPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","xms_ornament_smash_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.01) + +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end +function ENT:Touch(ent) + if ent.Base == "npc_tf2base" or ent.Base == "npc_tf2base_mvm" or ent.Base == "npc_demo_red" or ent.Base == "npc_demo_mvm" or ent.Base == "npc_scout_mvm" or ent.Base == "npc_hwg_red" or ent.Base == "npc_heavy_mvm" or ent.Base == "npc_heavy_mvm_shotgun" or ent.Base == "npc_soldier_red" or ent.Base == "npc_sniper_red" or ent.Base == "npc_spy_red" or ent.Base == "npc_scout_red" or ent.Base == "npc_pyro_red" or ent.Base == "npc_medic_red" or ent.Base == "npc_engineer_red" and !ent:IsFriendly(self:GetOwner()) and ent:Health()>0 and self.critical and !ent.IsStunned then + self:EmitSound(self.ExplosionSound2, 100, 100) + elseif ent.Base == "npc_tf2base" or ent.Base == "npc_tf2base_mvm" or ent.Base == "npc_demo_red" or ent.Base == "npc_demo_mvm" or ent.Base == "npc_scout_mvm" or ent.Base == "npc_hwg_red" or ent.Base == "npc_heavy_mvm" or ent.Base == "npc_heavy_mvm_shotgun" or ent.Base == "npc_soldier_red" or ent.Base == "npc_sniper_red" or ent.Base == "npc_spy_red" or ent.Base == "npc_scout_red" or ent.Base == "npc_pyro_red" or ent.Base == "npc_medic_red" or ent.Base == "npc_engineer_red" and !ent:IsFriendly(self:GetOwner()) and ent:Health()>0 and !self.critical then + self:EmitSound(self.ExplosionSound2, 100, 100) + self:DoExplosion() + end +end +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:IsTFPlayer() and !data.HitEntity:IsNPC() and !data.HitEntity:IsFriendly(self:GetOwner()) and data.HitEntity:Health()>0 and self.critical then + self:EmitSound(self.ExplosionSound2, 100, 100) + self:DoExplosion() + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:IsTFPlayer() and !data.HitEntity:IsNPC() and !data.HitEntity:IsFriendly(self:GetOwner()) and data.HitEntity:Health()>0 then + sound.Play(self.ExplosionSound, self:GetPos()) + self:DoExplosion() + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:GetClass() == "npc_antlionguard" and !data.HitEntity:IsFriendly(self:GetOwner()) and !self.critical and data.HitEntity:Health()>0 then + sound.Play(self.ExplosionSound, self:GetPos()) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, data.HitEntity, data.HitEntity:LookupAttachment("head")) + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:Fire("EnableBark") + data.HitEntity:SetModelScale(data.HitEntity:GetModelScale() + 0.04) + data.HitEntity:SetMaxHealth(data.HitEntity:GetMaxHealth() + 50) + data.HitEntity:SetHealth(data.HitEntity:GetHealth() + 45) + data.HitEntity:Fire("DisableBark", "", 8) + self:DoExplosion() + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and data.HitEntity:GetClass() == "npc_antlionguard" and !data.HitEntity:IsFriendly(self:GetOwner()) and self.critical and data.HitEntity:Health()>0 then + self:EmitSound(self.ExplosionSound2, 100, 100) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, data.HitEntity, data.HitEntity:LookupAttachment("head")) + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:EmitSound("NPC_AntlionGuard.FrustratedRoar") + data.HitEntity:Fire("EnableBark") + data.HitEntity:SetModelScale(data.HitEntity:GetModelScale() + 0.15) + data.HitEntity:SetMaxHealth(data.HitEntity:GetMaxHealth() + 140) + data.HitEntity:SetHealth(data.HitEntity:GetHealth() + 125) + data.HitEntity:Fire("DisableBark", "", 15) + self:DoExplosion() + end + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then + if self.BouncesLeft>0 then + if self.critical then + self:EmitSound(self.ExplosionSound2, 100, 100) + else + sound.Play(self.ExplosionSound, self:GetPos()) + end + self:DoExplosion() + end + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + sound.Play(self.ExplosionSound, self:GetPos()) + self:DoExplosion() + end + + self.BouncesLeft = self.BouncesLeft - 1 + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_passtime_ball/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_passtime_ball/shared.lua new file mode 100644 index 000000000..b5572fdce --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_passtime_ball/shared.lua @@ -0,0 +1,191 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/passtime/ball/passtime_ball.mdl" + +ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 90 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 10 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Touch(ent) + if ent:IsPlayer() then + self:Remove() + end +end + +function ENT:Initialize() + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_VPHYSICS) + + self:GetPhysicsObject():Wake() + + if self.GrenadeMode==1 then + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + else + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + end + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass * 2) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 2.3 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_timer = ents.Create("info_particle_system") + self.particle_timer:SetPos(self:GetRealPos()) + self.particle_timer:SetParent(self) + self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) + self.particle_timer:SetKeyValue("start_active", "1") + self.particle_timer:Spawn() + self.particle_timer:Activate() + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetRealPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsNPC() or data.HitEntity:IsPlayer()) and data.HitEntity:Health()>0 then + if self.BouncesLeft>0 then + self:DoExplosion() + end + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + end + + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_pipe/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_pipe/shared.lua new file mode 100644 index 000000000..ca180cf4c --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_pipe/shared.lua @@ -0,0 +1,337 @@ + +if CLIENT then + killicon.Add( "tf_projectile_pipe", "backpack/weapons/w_models/w_grenadelauncher_large", Color( 255, 255, 255, 255 ) ) +end + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_grenade_grenadelauncher.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 100 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 10 + +local BlastForceMultiplier = 16 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Initialize() + if self:GetOwner():IsPlayer() then + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + self.ExplosiveHat = true + self.BouncesLeft = 1 + self:SetModel("models/player/items/soldier/soldier_shako.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self.BounceSound = "Flesh.ImpactSoft" + self:SetPos(self:GetPos() - 81 * self:GetUp()) + elseif self.GrenadeMode==-1 then + self:SetModel(self.Model) + self:SetNoDraw(true) + self:DrawShadow(false) + self:SetNotSolid(true) + self:DoExplosion() + return + elseif self.GrenadeMode==1 then + self.BouncesLeft = 2 + self:SetModel(self.Model2) + self:SetNotSolid(false) + self:PhysicsInitSphere(8, "metal_bouncy") + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self:SetHealth(1) + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + if self.GrenadeMode==1 then + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + elseif self.GrenadeMode==2 then + self:SetMoveCollide(MOVECOLLIDE_DEFAULT) + self.BouncesLeft = 0 + else + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + end + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 2.3 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_timer = ents.Create("info_particle_system") + self.particle_timer:SetPos(self:GetRealPos()) + self.particle_timer:SetParent(self) + self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) + self.particle_timer:SetKeyValue("start_active", "1") + self.particle_timer:Spawn() + self.particle_timer:Activate() + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetRealPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:GravGunPunt( ply ) + self:SetOwner(ply) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:GravGunPickupAllowed( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if SERVER and not IsValid(self:GetOwner()) then + self:Remove() + end + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + sound.Play(self.ExplosionSound, self:GetPos()) + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + if (self:Critical()) then + + ParticleEffect("Explosion_ShockWave_01", self:GetPos(), self:GetAngles()) + + + if self:GetOwner():Team() == TEAM_BLU then + ParticleEffect("drg_cow_explosioncore_charged_blue", self:GetPos(), self:GetAngles()) + elseif self:GetOwner():Team() == TF_TEAM_PVE_INVADERS then + ParticleEffect("drg_cow_explosioncore_charged_blue", self:GetPos(), self:GetAngles()) + else + ParticleEffect("drg_cow_explosioncore_charged", self:GetPos(), self:GetAngles()) + end + + --self:EmitSound("explode_8") + end + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range, damage + + if self.GrenadeMode==-1 then + range = self.ExplosionRadiusInit + elseif self.BouncesLeft<=0 then + range = self.ExplosionRadiusInit + + self.BaseDamage = 64 + self.DamageRandomize = 0 + self:GetOwner()Damage = 1 + else + range = self.ExplosionRadiusInit * 0.7 + + self.BaseDamage = 100 + self.DamageRandomize = 0.05 + self:GetOwner()Damage = 0.6 + end + + --self.ResultDamage = self.BaseDamage + + --util.BlastDamage(self, owner, self:GetPos(), range, self.BaseDamage) + util.BlastDamage(self, owner, self:GetRealPos(), range, 100) + + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsTFPlayer()) and data.HitEntity:Health()>0 then + if self.BouncesLeft>0 then + self:DoExplosion() + end + else + if self.DetonateMode == 2 then + self:Break() + return + end + + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 100)) do + if v:GetClass() == "npc_metropolice" then + EmitSentence( "METROPOLICE_DANGER_GREN"..math.random(0,2), v:GetPos(), v:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + elseif v:GetClass() == "npc_combine_s" then + EmitSentence( "COMBINE_GREN"..math.random(0,1), v:GetPos(), v:EntIndex(), CHAN_VOICE, 0.5, 75, 0, 100 ) + elseif v:GetClass() == "npc_sniper" then + EmitSentence( "METROPOLICE_DANGER_VEHICLE0", v:GetPos(), v:EntIndex(), CHAN_VOICE, 0.5, 75, 0, 100 ) + end + end + end + + self.BouncesLeft = self.BouncesLeft - 1 + + if self.GrenadeMode == 2 then + physobj:SetVelocity( physobj:GetVelocity() * 0.2 ) + + end + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_pipe_remote/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_pipe_remote/shared.lua new file mode 100644 index 000000000..becba85c2 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_pipe_remote/shared.lua @@ -0,0 +1,428 @@ + +if CLIENT then + killicon.Add( "tf_projectile_pipe", "backpack/weapons/w_models/w_stickybomb_launcher_large", Color( 255, 255, 255, 255 ) ) +end + +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +function ENT:SetupDataTables() + self:DTVar("Int", 0, "DetonateMode") +end + +if CLIENT then + +local mat = Material("models/debug/debugwhite") + +function ENT:Draw() + local highlight = false + + if self.dt.DetonateMode == 1 and self:GetOwner() == LocalPlayer() then + for _,v in pairs(LocalPlayer():GetWeapons()) do + if v.IsBombInSensorCone then + w = v + break + end + end + + if IsValid(w) then + if w:IsBombInSensorCone(self) then + highlight = true + end + end + end + + if highlight then + render.MaterialOverride(matShiny) + if LocalPlayer():EntityTeam()==TEAM_BLU then + render.SetColorModulation(0,0,1) + elseif LocalPlayer():EntityTeam()==TF_TEAM_PVE_INVADERS then + render.SetColorModulation(0,0,1) + else + render.SetColorModulation(1,0,0) + end + render.SetBlend(1) + render.SuppressEngineLighting(true) + end + + self:DrawModel() + + if highlight then + render.SuppressEngineLighting(false) + render.SetColorModulation(1,1,1) + render.MaterialOverride(matShiny) + end +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +local GibModels = { +Model("models/weapons/w_models/w_stickybomb_gib1.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib2.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib3.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib4.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib5.mdl"), +Model("models/weapons/w_models/w_stickybomb_gib6.mdl"), +} + +ENT.Model = "models/weapons/w_models/w_stickybomb.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb_d.mdl" +ENT.Model3 = "models/weapons/w_models/w_stickybomb2.mdl" +ENT.Model4 = "models/weapons/w_models/w_stickybomb3.mdl" + + +ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") +--ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 120 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.15 +ENT.MaxDamageFalloff = 0.5 +ENT.DamageModifier = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.StickyDamping=15 +ENT.Mass=30 + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + if self.DetonateMode==1 then + self:SetModel(self.Model2) + self.NameOverride = "tf_projectile_pipe_defender" + elseif self.DetonateMode==2 then + self:SetModel(self.Model3) + self.NameOverride = "tf_projectile_pipe_round" + else + self:SetModel(self.Model) + end + + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_CUSTOM) + self:SetHealth(1) + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.DetonateMode==2 then + -- oh come on + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.DetonateMode==2 then + -- oh come on + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + else + self:SetSkin(1) + end + end + + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + phys:SetMass(self.Mass) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.5) + + self.NextReady = CurTime() + 0.92 + (self.AdditionalArmTime or 0) + self.NextNoFalloff = CurTime() + 5 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","stickybombtrail_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_grenade_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end + + self.FirstLaunch = true +end + +function ENT:OnRemove() + self.ai_sound:Remove() + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:GravGunPunt( ply ) + self:SetOwner(ply) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:GravGunPickupAllowed( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:Think() + if self:GetOwner():IsPlayer() and self:GetOwner():GetActiveWeapon():GetItemData().model_player == "models/weapons/c_models/c_scottish_resistance/c_scottish_resistance.mdl" then + self:SetModel("models/weapons/w_models/w_stickybomb_d.mdl") + end + if self.NextReady and CurTime()>=self.NextReady then + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + self.particle_timer = ents.Create("info_particle_system") + self.particle_timer:SetPos(self:GetPos()) + self.particle_timer:SetParent(self) + self.particle_timer:SetKeyValue("effect_name","stickybomb_pulse_" .. effect) + self.particle_timer:SetKeyValue("start_active", "1") + self.particle_timer:Spawn() + self.particle_timer:Activate() + + self.Ready = true + self.NextReady = nil + + self.dt.DetonateMode = self.DetonateMode or 0 + end + + if self.NextNoFalloff and CurTime()>=self.NextNoFalloff then + self.MaxDamageRampUp = 0 + self.MaxDamageFalloff = 0 + self.NextNoFalloff = nil + end + + if IsValid(self.AttachedEntity) then + if self.AttachedPhysObj and self.AttachedPhysObj:IsValid(self.WModel2) then + if self.AttachedPhysObj:IsMoveable() then + self:Detach() + end + end + end +end + +function ENT:DoExplosion() + if self.Dead then return end + sound.Play(self.ExplosionSound, self:GetPos()) + + --local flags = 0 + local flags = 8 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + if (self:Critical()) then + + ParticleEffect("Explosion_ShockWave_01", self:GetPos(), self:GetAngles()) + + + if self:GetOwner():Team() == TEAM_BLU then + ParticleEffect("drg_cow_explosioncore_charged_blue", self:GetPos(), self:GetAngles()) + elseif self:GetOwner():Team() == TF_TEAM_PVE_INVADERS then + ParticleEffect("drg_cow_explosioncore_charged_blue", self:GetPos(), self:GetAngles()) + else + ParticleEffect("drg_cow_explosioncore_charged", self:GetPos(), self:GetAngles()) + end + + --self:EmitSound("explode_8") + end + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range = 180 + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + + --self.ResultDamage = damage + + --util.BlastDamage(self, owner, self:GetPos(), range, damage) --util.BlastDamage(self, owner, self:GetPos(), range, damage) + if (IsValid(owner)) then + if owner:IsPlayer() and owner:GetActiveWeapon():GetItemData().model_player == "models/weapons/c_models/c_sticky_jumper/c_sticky_jumper.mdl" then + if owner:GetActiveWeapon():GetItemData().model_player == "models/weapons/c_models/c_sticky_jumper/c_sticky_jumper.mdl" then + owner:GetActiveWeapon().ShootSound = "weapons/sticky_jumper_shoot.wav" + owner:GetActiveWeapon().ShootCritSound = "weapons/sticky_jumper_shoot.wav" + end + util.BlastDamage(self, owner, self:GetPos(), range*1, 0) + + + for k,v in ipairs(ents.FindInSphere(self:GetPos(), range*1)) do + if v == owner then + v:SetLocalVelocity(v:GetVelocity() * 1.9 + Vector(0, 0, 250)) + if (owner.m_flBlastJumpLaunchTime == nil) then + local rf = RecipientFilter() + rf:AddAllPlayers() + if (!owner.Whistle) then + owner.Whistle = CreateSound(owner,"BlastJump.Whistle",rf) + owner.Whistle:PlayEx(0.25,200) + end + if (owner.Whistle and !owner.Whistle:IsPlaying()) then + owner.Whistle:PlayEx(0.25,200) + end + owner.m_flBlastJumpLaunchTime = CurTime() + end + end + end + else + util.BlastDamage(self, owner, self:GetPos(), range, 100) + end + end + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + util.Effect("tf_stickybomb_destroyed", effectdata) + + --[[ + for _,v in ipairs(GibModels) do + local drop = ents.Create("item_droppedweapon") + drop:SetSolid(SOLID_VPHYSICS) + drop:SetModel(v) + drop:PhysicsInit(SOLID_VPHYSICS) + drop:SetPos(self:GetPos()) + drop:SetAngles(self:GetAngles()) + drop:Spawn() + drop.AmmoPercent = 0.5 + drop:Activate() + + drop:SetMoveType(MOVETYPE_VPHYSICS) + drop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + + local phys = drop:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:AddAngleVelocity(Vector(math.Rand(-200,200),math.Rand(-200,200),math.Rand(-200,200))) + phys:AddVelocity(Vector(math.random(-100,100),math.random(-100,100),math.random(100,300))) + phys:Wake() + end + end]] + + if IsValid(self:GetOwner()) and self:GetOwner().Bombs then + for k,v in ipairs(self:GetOwner().Bombs) do + if v==self then + table.remove(self:GetOwner().Bombs, k) + break + end + end + self:GetOwner():SetNWInt("NumBombs", #(self:GetOwner().Bombs)) + end + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Detach() + self.Detached = true + self.AttachedEntity = nil + self:GetPhysicsObject():SetDamping(0,self.StickyDamping) + self:GetPhysicsObject():EnableMotion(true) +end + +function ENT:OnTakeDamage(dmginfo) + if not self.FirstLaunch then + if dmginfo:IsExplosionDamage() then + self:Detach() + self:TakePhysicsDamage(dmginfo) + elseif dmginfo:IsDamageType(DMG_BULLET) or dmginfo:IsDamageType(DMG_CLUB) or dmginfo:IsDamageType(DMG_SLASH) then + self:Break() + end + end +end + +function ENT:CanAttach(ent) + if not ent then return false end + + if ent:IsWorld() then return true end + + if string.find(ent:GetClass(),"^prop_dynamic") then return true end + + if ent:GetClass() == "prop_physics" then + local phys = ent:GetPhysicsObject() + if phys:IsValid(self.WModel2) and not phys:IsMoveable() then + return true + end + end +end + +function ENT:PhysicsCollide(data, physobj) + self.FirstLaunch = false + + if self.Detached then + if self:GetPhysicsObject():GetVelocity():Length()<5 then + self.Detached = false + end + end + + if self:CanAttach(data.HitEntity) and not self.Detached then + if self.DetonateMode == 2 then + self:Break() + return + end + + self.AttachedEntity = data.HitEntity + if data.HitEntity:GetClass() == "prop_physics" then + self.AttachedPhysObj = data.HitEntity:GetPhysicsObject() + else + self.AttachedPhysObj = nil + end + if (string.find(self:GetModel(),"w_stickybomb2")) then + self:EmitSound("SolidMetal.ImpactHard") + else + self:EmitSound("Default.ImpactHard") + end + self:GetPhysicsObject():EnableMotion(false) + self:SetCollisionGroup(COLLISION_GROUP_WEAPON) + self:SetSolid(SOLID_VPHYSICS) + end +end + +hook.Add("EntityRemoved", "StickyBombDetach", function(ent) + for _,v in pairs(ents.FindByClass("tf_projectile_pipe_remote")) do + if v.AttachedEntity==ent then + v:Detach() + end + end +end) + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_pomson/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_pomson/shared.lua new file mode 100644 index 000000000..41e8bf0fa --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_pomson/shared.lua @@ -0,0 +1,152 @@ +-- Flare + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("flaregun_trail_red") +PrecacheParticleSystem("flaregun_trail_blue") +PrecacheParticleSystem("flaregun_crit_red") +PrecacheParticleSystem("flaregun_crit_blue") +PrecacheParticleSystem("flaregun_destroyed") + +PrecacheParticleSystem("drg_cow_rockettrail_normal") +PrecacheParticleSystem("drg_cow_rockettrail_normal_blue") +ENT.IsTFWeapon = true + + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + ParticleEffectAttach( "drg_cow_rockettrail_normal", PATTACH_POINT_FOLLOW, self, 1 ) + else + ParticleEffectAttach( "drg_cow_rockettrail_normal_blue", PATTACH_POINT_FOLLOW, self, 1 ) + end + if self.Critical then + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + ParticleEffectAttach( "drg_cow_rockettrail_charged", PATTACH_POINT_FOLLOW, self, 1 ) + else + ParticleEffectAttach( "drg_cow_rockettrail_charged_blue", PATTACH_POINT_FOLLOW, self, 1 ) + end + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_flaregun_shell.mdl" + +ENT.BaseDamage = 15 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 3 + +ENT.HitSound = Sound("Default.FlareImpact") + +function ENT:Critical() + return self.critical +end + +function ENT:MiniCrit() + return self.minicrit +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.ModelOverride or self.Model) + + self:SetMoveType(MOVETYPE_FLY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + self:SetMaterial("Models/effects/vol_light001") + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * (self.Force or 1650)) + self:SetGravity(0.5) + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + end + + self:InitEffects() +end + +function ENT:Think() + self:SetAngles(self:GetVelocity():Angle()) +end + +function ENT:Hit(ent) + self.Touch = nil + if !ent:IsPlayer() and !ent:IsNPC() then + self:EmitSound("physics/concrete/concrete_impact_flare"..math.random(1,4)..".wav", 80, 100) + end + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", "drg_pomson_impact") + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + explosion:Fire("Kill", "", 0.5) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetVelocity():GetNormal() + + if ent:IsPlayer() then + ent:EmitSound("weapons/drg_pomson_drain_01.wav", 90, math.random(90, 100)) + elseif ent:IsNPC() then + ent:EmitSound("weapons/drg_pomson_drain_01.wav", 90, math.random(90, 100)) + end + + self:FireBullets{ + Src=self:GetPos(), + Attacker=owner, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=damage, + Tracer=0, + HullSize=self.HitboxSize*2, + } + + self:SetLocalVelocity(Vector(0,0,0)) + self:SetMoveType(MOVETYPE_NONE) + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.1) +end + +function ENT:Touch(ent) + if not ent:IsTrigger() then + self:Hit(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_rocket/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_rocket/shared.lua new file mode 100644 index 000000000..e0fd0d4cb --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_rocket/shared.lua @@ -0,0 +1,414 @@ + +if CLIENT then + killicon.Add( "tf_projectile_rocket", "backpack/weapons/w_models/w_rocketlauncher_large", Color( 255, 255, 255, 255 ) ) +end + +-- Sticky bomb +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("rockettrail_underwater") +PrecacheParticleSystem("eyeboss_projectile") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") +PrecacheParticleSystem("mvm_soldier_shockwave") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + -- gotta love the accuracy :P + if (GAMEMODE:EntityTeam(self:GetOwner()) != TEAM_RED and GAMEMODE:EntityTeam(self:GetOwner()) != TEAM_BLU) then + ParticleEffectAttach("rockettrail_underwater", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + else + ParticleEffectAttach("rockettrail", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end + + if self.dt.Critical then + if (GAMEMODE:EntityTeam(self:GetOwner()) != TEAM_RED and GAMEMODE:EntityTeam(self:GetOwner()) != TEAM_BLU) then + ParticleEffectAttach("eyeboss_projectile", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + else + ParticleEffectAttach("critical_rocket_"..effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = "TF_BaseExplosionEffect.Sound" +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 95 +ENT.DamageRandomize = 0.8 +ENT.MaxDamageRampUp = 1.2 +ENT.MaxDamageFalloff = 0.8 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +function ENT:Critical() + if self:GetOwner():GetClass() == "eyeball_boss" then + return true + end + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + self:AddEffects(EF_NOSHADOW) + + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetHealth(1) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if SERVER and !IsValid(self:GetOwner()) then + self:Remove() + end + + for k,v in ipairs(ents.FindInSphere(self:GetPos(),200)) do + if (v:IsValid() and v:IsTFPlayer() and v:EntIndex() != self:GetOwner():EntIndex() and !v:IsFriendly(self:GetOwner()) and v:Health() > 0 and self:GetPos():Distance(v:GetPos()) < v:GetModelRadius() + 24) then + self:DoExplosion(v) + end + end + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end + for k,v in ipairs(ents.FindInSphere(self:GetPos(),180)) do + if (IsValid(self:GetOwner())) then + if (v:IsTFPlayer() and !v:IsFriendly(self:GetOwner())) then + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + end + end + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} + +function ENT:DoExplosion(ent) + + if ent == self:GetOwner() and self:GetOwner():GetClass() == "eyeball_boss" then return end + self.Touch = nil + + local effect, angle + if (IsValid(self:GetOwner()) and self:GetOwner():IsPlayer()) then + if (string.find(self:GetOwner():GetModel(),"_boss")) then + if (self.ExplosionSound == "TF_BaseExplosionEffect.Sound") then + self.ExplosionSound = "MVM.GiantSoldierRocketExplode" + end + end + end + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + sound.Play(self.ExplosionSound, self:GetPos()) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + if (self:Critical()) then + + -- lets not do this, please + + --ParticleEffect("Explosion_ShockWave_01", self:GetPos(), self:GetAngles()) + + if self:GetOwner():Team() == TEAM_BLU then + --ParticleEffect("drg_cow_explosioncore_charged_blue", self:GetPos(), self:GetAngles()) + elseif self:GetOwner():Team() == TF_TEAM_PVE_INVADERS then + --ParticleEffect("drg_cow_explosioncore_charged_blue", self:GetPos(), self:GetAngles()) + else + --ParticleEffect("drg_cow_explosioncore_charged", self:GetPos(), self:GetAngles()) + end + + --self:EmitSound("explode_8") + end + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + if (IsValid(owner)) then + if owner:IsPlayer() then + if owner:GetActiveWeapon() ~= nil then + if owner:GetActiveWeapon().dt ~= nil and owner:GetActiveWeapon().dt.ItemID ~= nil then + if owner:GetActiveWeapon():GetItemData().model_player == "models/weapons/c_models/c_rocketjumper/c_rocketjumper.mdl" then + for k,v in ipairs(ents.FindInSphere(self:GetPos(), range*1)) do + if v == owner then + if (owner.m_flBlastJumpLaunchTime == nil) then + owner.m_flBlastJumpLaunchTime = CurTime() + local rf = RecipientFilter() + rf:AddAllPlayers() + if (!owner.Whistle) then + owner.Whistle = CreateSound(owner,"BlastJump.Whistle",rf) + owner.Whistle:PlayEx(0.25,200) + end + if (owner.Whistle and !owner.Whistle:IsPlaying()) then + owner.Whistle:PlayEx(0.25,200) + end + end + end + end + end + end + end + util.BlastDamage(self, owner, self:GetPos(), range, damage) + else + util.BlastDamage(self, owner, self:GetPos(), range, damage) + end + end + + for k,v in ipairs(ents.FindInSphere(self:GetPos(),range)) do + if (v:IsPlayer()) then + if ((string.find(v:GetModel(),"/bot_") or (string.find(game.GetMap(), "mvm_") and self:GetOwner():Team() != TEAM_BLU and v:Team() != self:GetOwner():Team())) and !v:IsFriendly(self:GetOwner())) then + ParticleEffect("mvm_soldier_shockwave", self:GetPos(), self:GetAngles()) + if (!v:HasPlayerState(PLAYERSTATE_STUNNED)) then + --v:EmitSound("TFPlayer.StunImpact") + end + timer.Stop("StunnedReset"..v:EntIndex()) + timer.Stop("Stunned"..v:EntIndex()) + timer.Create("Stunned"..v:EntIndex(), 0.1, 10, function() + v:SetClassSpeed(v:GetPlayerClassTable().Speed * 0.5) + v:AddPlayerState(PLAYERSTATE_STUNNED) + end) + timer.Create("StunnedReset"..v:EntIndex(), 1, 0, function() + v:ResetClassSpeed() + v:RemovePlayerState(PLAYERSTATE_STUNNED) + end) + self.BaseDamage = 95 * 1.2 + end + end + end + if ForceDamageClasses[ent:GetClass()] then + local dmginfo = DamageInfo() + dmginfo:SetDamage(100) + dmginfo:SetDamageType(DMG_BLAST) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + end + + self:Remove() +end + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + +function ENT:Touch(ent) + if not ent:IsTrigger() and ent:IsSolid() then + -- if we're hitting a friendly, don't blow up, that'll be a waste! + if (IsValid(self:GetOwner()) and ent:IsTFPlayer()) then + if (ent:IsFriendly(self:GetOwner())) then + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + return + end + end + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_rocket_airstrike/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_rocket_airstrike/shared.lua new file mode 100644 index 000000000..423b3d2cd --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_rocket_airstrike/shared.lua @@ -0,0 +1,311 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + ParticleEffectAttach("rockettrail", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + + if self.dt.Critical then + ParticleEffectAttach("critical_rocket_"..effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket_airstrike/w_rocket_airstrike.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 90 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.25 +ENT.MaxDamageFalloff = 0.53 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +ENT.AutomaticFrameAdvance = true + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + self:SetSequence("idle") + self:SetPlaybackRate(1) + + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end + self:NextThink(CurTime()) +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} + +function ENT:DoExplosion(ent) + self.Touch = nil + + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + + sound.Play(self.ExplosionSound, self:GetPos()) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + util.BlastDamage(self, owner, self:GetPos(), range, 100) + end + + if ForceDamageClasses[ent:GetClass()] then + local dmginfo = DamageInfo() + dmginfo:SetDamage(100) + dmginfo:SetDamageType(DMG_ALWAYSGIB) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + end + + self:Remove() +end + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + +function ENT:Touch(ent) + if not ent:IsTrigger() then + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_rocket_fireball/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_rocket_fireball/shared.lua new file mode 100644 index 000000000..42b48830b --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_rocket_fireball/shared.lua @@ -0,0 +1,316 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if GetConVar("tf_pyrovision"):GetBool() then + ParticleEffectAttach("projectile_fireball", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + else + ParticleEffectAttach("projectile_fireball", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("trail")) + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound("misc/halloween/spell_fireball_impact.wav") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 100 + +ENT.BaseSpeed = 1200 +ENT.ExplosionRadiusInit = 80 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 1.2 + +ENT.HitboxSize = 10 + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + timer.Simple(0.5, function() + self:Fire("kill") + end) + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + self:SetMaterial("models/effects/vol_light001") + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 100)) do + if v:IsPlayer() then + v:EmitSound("weapons/fx/nearmiss/dragons_fury_nearmiss.wav") + end + end + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} + + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + + +function ENT:DoExplosion(ent) + self.Touch = nil + + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + self:EmitSound(self.ExplosionSound) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local damage = self.BaseDamage + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + + util.BlastDamage(self, owner, self:GetPos(), range*1.5, damage) + for k,v in ipairs(ents.FindInSphere(self:GetPos(), range)) do + if v:IsNPC() or v:IsPlayer() and v:Health() >= 1 then + GAMEMODE:IgniteEntity(v, self, owner, 10) + v:Ignite(10) + v:EmitSound("weapons/dragons_fury_impact_pain.wav") + v:EmitSound("weapons/dragons_fury_impact_bonus_damage_pain.wav") + end + end + end + + if ForceDamageClasses[ent:GetClass()] then + local dmginfo = DamageInfo() + dmginfo:SetDamage(100) + dmginfo:SetDamageType(DMG_ALWAYSGIB) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + end + + self:Remove() +end + + +function ENT:Touch(ent) + if ent:IsSolid() then + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_rocket_flare/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_rocket_flare/shared.lua new file mode 100644 index 000000000..9628a2e8f --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_rocket_flare/shared.lua @@ -0,0 +1,304 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("flaregun_trail_red") +PrecacheParticleSystem("flaregun_trail_blue") +PrecacheParticleSystem("flaregun_crit_red") +PrecacheParticleSystem("flaregun_crit_blue") +PrecacheParticleSystem("flaregun_destroyed") + +PrecacheParticleSystem("ExplosionCore") +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +ENT.IsTFWeapon = true + +function ENT:InitEffects() + local effect = "flaregun" + + if self.critical then + effect = effect.."_crit_" + else + effect = effect.."_trail_" + end + + effect = effect..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_flaregun_shell.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound("Weapon_Grenade_Pipebomb.Explode") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +--ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 15 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.RocketGravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + + self:SetLocalVelocity(self:GetForward() * (self.Force or 1650)) + self:SetGravity(0.5) + + --[[ + if self.FastRocket then + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed * 1.8) + --self.BaseDamage = self.BaseDamage * 1.25 + self.NameOverride = "tf_projectile_rocket_direct" + else + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + end]] + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +function ENT:DoExplosion(ent) + self.Touch = nil + + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + + sound.Play(self.ExplosionSound, self:GetPos()) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + util.BlastDamage(self, owner, self:GetPos(), range, 100) + + if ent:IsFlammable() then + GAMEMODE:IgniteEntity(ent, self, owner, 3) + end + end + + self:Remove() +end + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + +function ENT:Touch(ent) + if not ent:IsTrigger() then + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_sentryrocket/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_sentryrocket/shared.lua new file mode 100644 index 000000000..57f21e3c1 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_sentryrocket/shared.lua @@ -0,0 +1,196 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +ENT.AutomaticFrameAdvance = true + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:InitEffects() +end + +if CLIENT then + +function ENT:Initialize() +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/buildables/sentry3_rockets.mdl") + +ENT.ExplosionSound = Sound("TF_BaseExplosionEffect.Sound") + +ENT.BaseDamage = 100 +ENT.DamageRandomize = 0 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 0 + +ENT.CritDamageMultiplier = 3 + +ENT.Size = 10 + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + local min = Vector(-self.Size, -self.Size, -self.Size) + local max = Vector( self.Size, self.Size, self.Size) + + self:SetModel(self.Model) + + self:SetMoveType(MOVETYPE_FLY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + + self:ResetSequence(self:LookupSequence("idle")) + self:SetPlaybackRate(1) + self:SetCycle(0) + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() +--[[ + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end]] + + self:NextThink(CurTime()) + return true +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +function ENT:DoExplosion(ent) + self.Touch = nil + + local effect, angle + + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + sound.Play(self.ExplosionSound, self:GetPos()) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + self:GetOwner()Damage = 0.8 + + util.BlastDamage(self.Launcher or self, owner, self:GetPos(), range, 100) + + self:Remove() +end + +function ENT:Touch(ent) + if ent:IsSolid() then + self:DoExplosion(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_shortcircuit/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_shortcircuit/shared.lua new file mode 100644 index 000000000..74741bce0 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_shortcircuit/shared.lua @@ -0,0 +1,388 @@ +-- Sticky bomb + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("critical_rocket_red") +PrecacheParticleSystem("critical_rocket_blue") +PrecacheParticleSystem("cinefx_goldrush") + +PrecacheParticleSystem("ExplosionCore_MidAir") +PrecacheParticleSystem("ExplosionCore_MidAir_underwater") +PrecacheParticleSystem("ExplosionCore_Wall") +PrecacheParticleSystem("ExplosionCore_Wall_underwater") + +function ENT:SetupDataTables() + self:DTVar("Bool", 0, "Critical") +end + +function ENT:InitEffects() + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + ParticleEffectAttach( "drg_cow_rockettrail_charged", PATTACH_POINT_FOLLOW, self, 1 ) + else + ParticleEffectAttach( "drg_cow_rockettrail_charged_blue", PATTACH_POINT_FOLLOW, self, 1 ) + end +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() + + local bomb = self:GetNWEntity("Bomb") + if IsValid(bomb) then + bomb:SetModelScale(Vector(0.5, 0.5, 0.5)) + end +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = Model("models/weapons/w_models/w_rocket.mdl") +ENT.ModelNuke = Model("models/props_trainyard/cart_bomb_separate.mdl") + +ENT.ExplosionSound = Sound("misc/halloween/spell_lightning_ball_impact.wav") +ENT.ExplosionSound2 = Sound("misc/halloween/spell_lightning_ball_impact.wav") +ENT.ExplosionSoundFast = Sound("Weapon_RPG_DirectHit.Explode") +ENT.ExplosionSoundNuke = Sound("Cart.Explode") +ENT.BounceSound = Sound("Weapon_Grenade_Pipebomb.Bounce") + +ENT.BaseDamage = 110 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.25 +ENT.MaxDamageFalloff = 0.53 + +ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 150 +ENT.OwnerDamage = 1 + +ENT.CritDamageMultiplier = 3 + +ENT.HitboxSize = 10 + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Model) + if self.Nuke then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel(self.ModelNuke) + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + self:SetNWEntity("Bomb", bomb) + elseif self.Error then + local bomb = ents.Create("prop_dynamic") + bomb:SetModel("models/error.mdl") + bomb:SetPos(self:GetPos()) + bomb:SetAngles((-1 * self:GetForward()):Angle()) + bomb:SetPos(bomb:LocalToWorld(-1 * bomb:OBBCenter())) + bomb:SetNotSolid(true) + bomb:SetParent(self) + bomb:Spawn() + + --self:SetNWEntity("Bomb", bomb) + self:SetColor(255,255,255,0) + self.NameOverride = "have_an_error" + end + + if self.Gravity then + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetGravity(self.Gravity) + else + self:SetMoveType(MOVETYPE_FLY) + end + + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + + self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + PrecacheParticleSystem("drg_cow_rockettrail_normal_blue") + PrecacheParticleSystem("drg_cow_rockettrail_normal") + + + self:SetMaterial("Models/effects/vol_light001") + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + timer.Simple(1.4, function() + self:DoExplosion(self) + end) + + self:InitEffects() +end + +function ENT:FindTarget() + local v1, v2, dot + v1 = self:GetForward() + + local max, target + + for _,v in pairs(ents.GetAll()) do + if (v:IsPlayer() or v:IsNPC()) and v:Health()>0 and GAMEMODE:EntityTeam(v)~=self:GetOwner():Team() then + v2 = (v:GetPos() - self:GetPos()):GetNormal() + dot = v1:DotProduct(v2) + + if not max or dot>max then + max, target = dot, v + end + end + end + + self.Target = target +end + +function ENT:Think() + if not self.Homing then + self:SetAngles(self:GetVelocity():Angle()) + return + end + if not IsValid(self.Target) or self.Target:Health()<=0 then + if (not self.NextTargetSearch or CurTime()>self.NextTargetSearch) then + self:FindTarget() + self.NextTargetSearch = CurTime() + 2 + end + self:SetAngles(self:GetVelocity():Angle()) + return + end +end + +function ENT:OnRemove() + self.ai_sound:Remove() +end + +local ForceDamageClasses = { + npc_combinegunship = true, + npc_helicopter = true, +} + +function ENT:DoExplosion(ent) + self.Touch = nil + + local effect, angle + + if self.Nuke then + self:EmitSound(self.ExplosionSoundNuke) + effect = "cinefx_goldrush" + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", "effect") + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + + explosion:Fire("Kill", "", 5) + else + --[[if self.FastRocket then + self:EmitSound(self.ExplosionSoundFast) + else]] + sound.Play(self.ExplosionSound, self:GetPos()) + --end + + local flags = 0 + + if ent:IsWorld() then + local tr = util.QuickTrace(self:GetPos(), self:GetForward()*10, self) + if tr.HitWorld then + flags = bit.bor(flags, 2) + angle = tr.HitNormal:Angle():Up():Angle() + else + angle = self:GetAngles() + end + else + angle = self:GetAngles() + end + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(angle) + effectdata:SetAttachment(flags) + util.Effect("drg_cow_explosion_sparkles_blue", effectdata, true, true) + + if self:GetOwner():Team() == TEAM_RED or self:GetOwner():Team() == TEAM_NEUTRAL then + + effect = "drg_cow_explosion_flashup" + effect2 = "drg_cow_explosioncore_normal" + effect3 = "drg_cow_explosion_sparkles" + + else + + effect = "drg_cow_explosion_flashup_blue" + effect2 = "drg_cow_explosioncore_normal_blue" + effect3 = "drg_cow_explosion_sparkles_blue" + + end + angle = Angle(0,self:GetAngles().y, 0) + + local explosion = ents.Create("info_particle_system") + explosion:SetKeyValue("effect_name", effect) + explosion:SetKeyValue("start_active", "1") + explosion:SetPos(self:GetPos()) + explosion:SetAngles(self:GetAngles()) + explosion:Spawn() + explosion:Activate() + local explosion2 = ents.Create("info_particle_system") + explosion2:SetKeyValue("effect_name", effect2) + explosion2:SetKeyValue("start_active", "1") + explosion2:SetPos(self:GetPos()) + explosion2:SetAngles(self:GetAngles()) + explosion2:Spawn() + explosion2:Activate() + local explosion3 = ents.Create("info_particle_system") + explosion3:SetKeyValue("effect_name", effect2) + explosion3:SetKeyValue("start_active", "1") + explosion3:SetPos(self:GetPos()) + explosion3:SetAngles(self:GetAngles()) + explosion3:Spawn() + explosion3:Activate() + + explosion:Fire("Kill", "", 5) + explosion2:Fire("Kill", "", 5) + explosion3:Fire("Kill", "", 5) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + --local damage = self:CalculateDamage(owner:GetPos()+Vector(0,0,1)) + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + --[[if self.FastRocket then + range = range * 0.4 + end]] + + --self.ResultDamage = damage + + if self.Nuke then + --util.BlastDamage(self, owner, self:GetPos(), range*6, damage*6) + util.BlastDamage(self, owner, self:GetPos(), range*6, 100) + else + --util.BlastDamage(self, owner, self:GetPos(), range, damage) + util.BlastDamage(self, owner, self:GetPos(), range, 100) + end + + if ForceDamageClasses[ent:GetClass()] then + local dmginfo = DamageInfo() + dmginfo:SetDamage(80) + dmginfo:SetDamageType(DMG_DISSOLVE) + dmginfo:SetAttacker(owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamagePosition(self:GetPos()) + dmginfo:SetDamageForce(vector_up) + ent:TakeDamageInfo(dmginfo) + end + + self:Remove() +end + +--[[ +function ENT:ModifyInitialDamage(ent, dmginfo) + if self.FastRocket and self:GetOwner() ~= ent then + local frac = dmginfo:GetDamage() * 0.01 + local saturate = 1.5 + local range_reduce = 0.7 + local mul = 1.25 + + frac = math.Clamp(saturate * (frac - range_reduce) / (1 - range_reduce), 0, 1) * mul + + return frac * 100 + else + return dmginfo:GetDamage() + end +end]] + +function ENT:Touch(ent) + if ent:IsSolid() then + self:DoExplosion(ent) + end +end + +end + + + +function ENT:TF2BlastDamage(origin, radius, dmg) + + + + + + local expd = DamageInfo() + + + + expd:SetAttacker(self:GetOwner()) + expd:SetDamageType(DMG_DISSOLVE) + + expd:SetDamagePosition(origin) + + + local subjects = ents.FindInSphere(origin, radius) + + for k,v in pairs(subjects) do + + local dist = v:GetPos():Distance(origin) + expd:SetDamage((radius-dist) * (dmg/radius)) + + + + local fvTrace = util.TraceLine({ + start = origin, + endpos = v:GetPos() + }) + + local ForceVector = fvTrace.Normal*((radius-dist) * (40000/radius)) + + expd:SetDamageForce(ForceVector) + + --v:Ignite(4) + + v:TakeDamageInfo(expd) + end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_projectile_syringe/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_syringe/shared.lua new file mode 100644 index 000000000..86865ab8b --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_syringe/shared.lua @@ -0,0 +1,203 @@ +-- Syringe + +ENT.Type = "anim" +ENT.Base = "base_anim" + +PrecacheParticleSystem("nailtrails_medic_red") +PrecacheParticleSystem("nailtrails_medic_blue") +PrecacheParticleSystem("nailtrails_medic_red_crit") +PrecacheParticleSystem("nailtrails_medic_blue_crit") + +PrecacheParticleSystem("stunballtrail_red_crit") +PrecacheParticleSystem("stunballtrail_blue_crit") + +ENT.IsTFWeapon = true + +function ENT:SetupDataTables() + self:DTVar("Int", 0, "ProjectileType") + self:DTVar("Bool", 0, "Critical") +end + +function ENT:SetProjectileType(t) + self.dt.ProjectileType = t +end + +function ENT:ProjectileType() + return self.dt.ProjectileType +end + +function ENT:InitEffects() + if self:ProjectileType()==3 then + if SERVER then + local mat + if GAMEMODE:EntityTeam(self:GetOwner())==TEAM_BLU then + mat = "Effects/arrowtrail_blu.vmt" + elseif GAMEMODE:EntityTeam(self:GetOwner())==TF_TEAM_PVE_INVADERS then + mat = "Effects/arrowtrail_blu.vmt" + else + mat = "Effects/arrowtrail_red.vmt" + end + + self.Trail = util.SpriteTrail(self, 0, Color(255,255,255,200), false, + 0.1, 5, 0.1, 1/(5+1)*0.5, mat) + end + + if self.dt.Critical then + local effect = "stunballtrail_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())).."_crit" + ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) + end + return + end + + local effectname = "nailtrails_medic_blue_crit" + + local effect = "nailtrails_medic_"..ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + if self.dt.Critical then + effect = effect.."_crit" + end + + ParticleEffectAttach(effect, PATTACH_ABSORIGIN_FOLLOW, self, 0) +end + +if CLIENT then + +function ENT:Initialize() + self:InitEffects() +end + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Models = { + Model("models/weapons/w_models/w_syringe_proj.mdl"), + Model("models/weapons/c_models/c_leechgun/c_leech_proj.mdl"), + Model("models/weapons/w_models/w_syringe.mdl"), +} + +ENT.BaseDamage = 10 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0.2 +ENT.MaxDamageFalloff = 0.5 +ENT.DamageModifier = 1 + +ENT.HitboxSize = 0.5 + +ENT.CritDamageMultiplier = 3 + +ENT.BaseSpeed = 1650 + +function ENT:OnInitAttribute(att) + if att.attribute_class == "add_onhit_addhealth" then + self:SetProjectileType(2) + elseif att.attribute_class == "radial_onhit_addhealth" then + self:SetProjectileType(3) + end +end + +function ENT:Critical() + return self.dt.Critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:Initialize() + self.dt.Critical = self.critical + + local min = Vector(-self.HitboxSize, -self.HitboxSize, -self.HitboxSize) + local max = Vector( self.HitboxSize, self.HitboxSize, self.HitboxSize) + + self:SetModel(self.Models[self:ProjectileType()] or self.Models[1]) + + if self:ProjectileType()==2 then + self.NameOverride = "tf_projectile_blutsauger" + end + + self:SetMoveType(MOVETYPE_FLYGRAVITY) + self:SetMoveCollide(MOVECOLLIDE_FLY_CUSTOM) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + self:SetTrigger(true) + + --self:SetCollisionGroup(COLLISION_GROUP_PROJECTILE) + self:SetNotSolid(true) + + self:SetLocalVelocity(self:GetForward() * self.BaseSpeed) + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + end + + self:InitEffects() + + if self:ProjectileType()==3 then + local ang = self:GetAngles() + ang:RotateAroundAxis(ang:Right(), -90) + self:SetAngles(ang) + end +end + +function ENT:Think() + if self:ProjectileType()==3 then + local ang = self:GetVelocity():Angle() + ang:RotateAroundAxis(ang:Right(), -90) + self:SetAngles(ang) + else + self:SetAngles(self:GetVelocity():Angle()) + end +end + +function ENT:Hit(ent) + self.Touch = nil + + if ent:IsWorld() then + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + effectdata:SetAngles(self:GetAngles()) + effectdata:SetMagnitude(self:GetSkin()) + effectdata:SetAttachment(self:ProjectileType()-1) + util.Effect("tf_syringe_stuck", effectdata) + end + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local damage = self:CalculateDamage(owner:GetPos()) + local dir = self:GetVelocity():GetNormal() + + self:FireBullets{ + Src=self:GetPos(), + Attacker=owner, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=damage, + Tracer=0, + HullSize=self.HitboxSize, + } + + if IsValid(self.Trail) then + self.Trail:SetParent() + self.Trail:Fire("kill", "", 1) + end + + self:Fire("kill", "", 0.01) +end + +function ENT:Touch(ent) + if not ent:IsTrigger() and GAMEMODE:ShouldCollide(self, ent) then + self:Hit(ent) + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_projectile_wtf_pipe/shared.lua b/gamemodes/tf/entities/entities/tf_projectile_wtf_pipe/shared.lua new file mode 100644 index 000000000..4cc65294e --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_projectile_wtf_pipe/shared.lua @@ -0,0 +1,304 @@ + +ENT.Type = "anim" +ENT.Base = "base_anim" + +ENT.Explosive = true + +if CLIENT then + +function ENT:Draw() + self:DrawModel() +end + +end + +if SERVER then + +AddCSLuaFile( "shared.lua" ) + +ENT.Model = "models/weapons/w_models/w_grenade_grenadelauncher.mdl" +ENT.Model2 = "models/weapons/w_models/w_stickybomb2.mdl" + +ENT.ExplosionSound = Sound("common/bass.wav") +ENT.BounceSound = "common/null.wav" + +ENT.BaseDamage = 20 +ENT.DamageRandomize = 0.3 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 +ENT.DamageModifier = 1 + +--ENT.BaseSpeed = 1100 +ENT.ExplosionRadiusInit = 180 + +ENT.CritDamageMultiplier = 3 + +ENT.Mass = 5 + +local BlastForceMultiplier = 200 +local BlastForceToVelocityMultiplier = (0.015 / BlastForceMultiplier) + +function ENT:Critical() + return self.critical +end + +function ENT:CalculateDamage(ownerpos) + return tf_util.CalculateDamage(self, self:GetPos(), ownerpos) +end + +function ENT:GetRocketJumpForce(owner, dmginfo) + local ang = dmginfo:GetDamageForce():Angle() + local force = dmginfo:GetDamageForce():Length() * BlastForceToVelocityMultiplier * 600 + ang.p = math.Clamp(ang.p, -70, -89) + + return ang:Forward() * force +end + +function ENT:Reflect(pl, weapon, dir) + +end + +function ENT:GetRealPos() + if self.ExplosiveHat then + return self:GetPos() + 81*self:GetUp() + else + return self:GetPos() + end +end + +function ENT:Initialize() + if self:GetOwner():IsPlayer() then + if self:GetOwner().TempAttributes.ProjectileModelModifier == 1 then + self.ExplosiveHat = true + self.BouncesLeft = 1 + self:SetModel("models/player/items/soldier/soldier_shako.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self.BounceSound = "Flesh.ImpactSoft" + self:SetPos(self:GetPos() - 81 * self:GetUp()) + elseif self.GrenadeMode==-1 then + self:SetModel(self.Model) + self:SetNoDraw(true) + self:DrawShadow(false) + self:SetNotSolid(true) + self:DoExplosion() + return + elseif self.GrenadeMode==1 then + self.BouncesLeft = 2 + self:SetModel(self.Model2) + self:PhysicsInitSphere(8, "metal_bouncy") + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + else + self.BouncesLeft = 1 + self:SetModel(self.Model) + self:PhysicsInit(SOLID_VPHYSICS) + end + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:PhysicsInit(SOLID_CUSTOM) + self:AddFlags(FL_GRENADE) + self:SetHealth(1) + + if self.GrenadeMode==1 then + self:SetMoveCollide(MOVECOLLIDE_FLY_BOUNCE) + else + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) + end + + if GAMEMODE:EntityTeam(self:GetOwner()) == TEAM_BLU then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + end + elseif GAMEMODE:EntityTeam(self:GetOwner()) == TF_TEAM_PVE_INVADERS then + if self.GrenadeMode==1 then + self:SetMaterial("models/weapons/w_stickybomb/w_stickybomb2_blue") + end + end + + self:SetSkin(1) + local phys = self.Entity:GetPhysicsObject() + if phys:IsValid(self.WModel2) then + phys:Wake() + if self.GrenadeMode==1 then + self.Bounciness = 1 + phys:SetMass(self.Mass) + else + phys:SetMass(self.Mass) + end + --phys:EnableDrag(false) + end + + self.ai_sound = ents.Create("ai_sound") + self.ai_sound:SetPos(self:GetRealPos()) + self.ai_sound:SetKeyValue("volume", "80") + self.ai_sound:SetKeyValue("duration", "8") + self.ai_sound:SetKeyValue("soundtype", "8") + self.ai_sound:SetParent(self) + self.ai_sound:Spawn() + self.ai_sound:Activate() + self.ai_sound:Fire("EmitAISound", "", 0.3) + + self.NextExplode = CurTime() + 0.3 + + local effect = ParticleSuffix(GAMEMODE:EntityTeam(self:GetOwner())) + + self.particle_timer = ents.Create("info_particle_system") + self.particle_timer:SetPos(self:GetRealPos()) + self.particle_timer:SetParent(self) + self.particle_timer:SetKeyValue("effect_name","pipebomb_timer_" .. effect) + self.particle_timer:SetKeyValue("start_active", "1") + self.particle_timer:Spawn() + self.particle_timer:Activate() + + self.particle_trail = ents.Create("info_particle_system") + self.particle_trail:SetPos(self:GetRealPos()) + self.particle_trail:SetParent(self) + self.particle_trail:SetKeyValue("effect_name","pipebombtrail_" .. effect) + self.particle_trail:SetKeyValue("start_active", "1") + self.particle_trail:Spawn() + self.particle_trail:Activate() + + if self.critical then + self.particle_crit = ents.Create("info_particle_system") + self.particle_crit:SetPos(self:GetRealPos()) + self.particle_crit:SetParent(self) + self.particle_crit:SetKeyValue("effect_name","critical_pipe_" .. effect) + self.particle_crit:SetKeyValue("start_active", "1") + self.particle_crit:Spawn() + self.particle_crit:Activate() + end +end + +function ENT:GravGunPunt( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:GravGunPickupAllowed( ply ) + self:GetPhysicsObject():EnableMotion( true ) + return true +end + +function ENT:OnRemove() + if self.ai_sound then self.ai_sound:Remove() end + if self.particle_timer and self.particle_timer:IsValid(self.WModel2) then self.particle_timer:Remove() end + if self.particle_trail and self.particle_trail:IsValid(self.WModel2) then self.particle_trail:Remove() end + if self.particle_crit and self.particle_crit:IsValid(self.WModel2) then self.particle_crit:Remove() end +end + +function ENT:Think() + if self.NextExplode and CurTime()>=self.NextExplode then + self:DoExplosion() + self.NextExplode = nil + end + for k,v in ipairs(ents.FindInSphere(self:GetPos(),90)) do + if (v:IsValid() and (v:IsTFPlayer() or v:IsNextBot()) and v:EntIndex() != self:GetOwner():EntIndex() and !v:IsFriendly(self:GetOwner()) and v:Health() > 0) then + self:DoExplosion() + end + end + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 50)) do + if ( v:IsValid(self.WModel2) and v:IsTFPlayer() and v:Health() >= 0 and v != self:GetOwner() ) then + self:DoExplosion() + end + end +end + +function ENT:DoExplosion() + self.PhysicsCollide = nil + + self:EmitSound(self.ExplosionSound, 150, 100) + + local flags = 0 + + if self:WaterLevel()>0 then + flags = bit.bor(flags, 1) + end + + ParticleEffect("Explosion_ShockWave_01", self:GetPos(), self:GetAngles()) + + local owner = self:GetOwner() + if not owner or not owner:IsValid(self.WModel2) then owner = self end + + local range, damage + + if self.GrenadeMode==-1 then + range = self.ExplosionRadiusInit + elseif self.BouncesLeft<=0 then + range = self.ExplosionRadiusInit + + self.BaseDamage = 64 + self.DamageRandomize = 0 + self:GetOwner()Damage = 1 + else + range = self.ExplosionRadiusInit * 0.7 + + self.BaseDamage = 100 + self.DamageRandomize = 0.05 + self:GetOwner()Damage = 0.6 + end + + --self.ResultDamage = self.BaseDamage + + util.BlastDamage(self, owner, self:GetPos(), range, 9999999) + + self:SetNoDraw(true) + self:SetNotSolid(true) + self:Fire("kill", "", 0.01) +end + +function ENT:Break() + if self.Dead then return end + + local effectdata = EffectData() + effectdata:SetOrigin(self:GetRealPos()) + effectdata:SetNormal(Vector(0,0,1)) + effectdata:SetMagnitude(2) + effectdata:SetScale(1) + effectdata:SetRadius(5) + util.Effect("Sparks", effectdata) + + self.Dead = true + self:SetNotSolid(true) + self:SetNoDraw(true) + self:Fire("kill", "", 0.01) +end + +function ENT:PhysicsCollide(data, physobj) + if data.HitEntity and data.HitEntity:IsValid(self.WModel2) and (data.HitEntity:IsTFPlayer()) and data.HitEntity:Health()>0 then + if self.BouncesLeft>0 then + self:DoExplosion() + end + else + if data.Speed > 50 and data.DeltaTime > 0.2 then + self:EmitSound(self.BounceSound, 100, 100) + for k,v in ipairs(ents.FindInSphere(self:GetPos(), 100)) do + if v:GetClass() == "npc_metropolice" then + EmitSentence( "METROPOLICE_DANGER_GREN"..math.random(0,2), v:GetPos(), v:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + elseif v:GetClass() == "npc_combine_s" then + EmitSentence( "COMBINE_GREN"..math.random(0,1), v:GetPos(), v:EntIndex(), CHAN_VOICE, 0.5, 75, 0, 100 ) + elseif v:GetClass() == "npc_sniper" then + EmitSentence( "METROPOLICE_DANGER_VEHICLE0", v:GetPos(), v:EntIndex(), CHAN_VOICE, 0.5, 75, 0, 100 ) + end + end + end + + self.BouncesLeft = self.BouncesLeft - 1 + + if self.Bounciness then + local LastSpeed = math.max( data.OurOldVelocity:Length(), data.Speed ) + local NewVelocity = physobj:GetVelocity() + NewVelocity:Normalize() + + LastSpeed = math.max( NewVelocity:Length(), LastSpeed ) + + local TargetVelocity = NewVelocity * LastSpeed * self.Bounciness + + physobj:SetVelocity( TargetVelocity ) + end + end +end + +end diff --git a/gamemodes/tf/entities/entities/tf_red_bot.lua b/gamemodes/tf/entities/entities/tf_red_bot.lua new file mode 100644 index 000000000..10f8dbf8e --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot.lua @@ -0,0 +1,239 @@ +if SERVER then AddCSLuaFile() end + +ENT.Type = "anim" +ENT.PZClass = "scout" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.Team = "RED" +ENT.PrintName = "Red Scout" +ENT.Category = "TFBots" + +local function LeadBot_S_Add_Zombie(team,class,pos,ent) + if !navmesh.IsLoaded() then + ErrorNoHalt("There is no navmesh! Generate one using \"nav_generate\"!\n") + return + end + + local name = string.upper(string.sub(class,1,1))..string.sub(class,2) + local nickname = ent.PrintName + if (ent.PreferredName ~= nil) then + nickname = ent.PreferredName + end + local bot = player.CreateNextBot(nickname) + local teamv = TEAM_RED + if team == 1 then + teamv = TEAM_BLU + end + + if !IsValid(bot) then ErrorNoHalt("[LeadBot] Player limit reached!\n") return end + bot.LastSegmented = CurTime() + 1 + + bot.ControllerBot = ents.Create("ctf_bot_navigator") + bot.ControllerBot:Spawn() + bot.ControllerBot:SetOwner(bot) + + bot.LastPath = nil + bot.CurSegment = 2 + bot.TFBot = true + bot.IsL4DZombie = true + bot.BotStrategy = math.random(0, 1) + + --timer.Simple(1, function() + ----TalkToMe(bot, "join") + --end) + bot:SetTeam(teamv) + bot:SetPlayerClass(class) + bot:SetPos(pos) + timer.Simple(0.1, function() + if IsValid(bot) then + bot:SetPlayerClass(class) + bot.TFBot = true + + if (bot:GetPlayerClass() == "gmodplayer") then + local primaryweps = { + "weapon_ak47_cstrike", + "weapon_aug_cstrike", + "weapon_famas_cstrike", + "weapon_galil_cstrike", + "weapon_m3_cstrike", + "weapon_mp5_cstrike", + "weapon_p90_cstrike", + "weapon_m4a1_cstrike", + "weapon_sg552_cstrike", + "weapon_tmp_cstrike", + "weapon_xm1014_cstrike", + "weapon_ar2_scripted", + "weapon_shotgun_scripted", + "weapon_smg1_scripted", + "", + "", + "", + } + local secondaryweps = { + "weapon_deagle_cstrike", + "weapon_elite_cstrike", + "weapon_fiveseven_cstrike", + "weapon_glock_cstrike", + "weapon_p228_cstrike", + "weapon_usp_cstrike", + "weapon_pistol_scripted", + "weapon_357_scripted" + } + timer.Simple(0.3, function() + + bot:SetModel(table.Random(player_manager.AllValidModels())) + + bot:StripWeapons() + bot:Give(table.Random(primaryweps)) + bot:Give(table.Random(secondaryweps)) + bot:Give("weapon_knife_cstrike") + bot:SetArmor(math.random(15,250)) + end) + end + end + end) + --MsgN("[LeadBot] Bot " .. name .. " with strategy " .. bot.BotStrategy .. " added!") + return bot +end + +list.Set( "NPC", "tf_red_bot", { + Name = ENT.PrintName, + Class = "tf_red_bot", + Category = ENT.Category, + AdminOnly = true +} ) + + +function ENT:Initialize() + if CLIENT then return end + self:SetModel("models/player/scout.mdl") + self:ResetSequence(self:SelectWeightedSequence(ACT_MP_STAND_MELEE)) + self:SetSolid(SOLID_NONE) + self:SetModelScale(1) + self.bots = {} + self.infected = {} + local team = 0 + if (self.Team == "BLU") then + team = 1 + end + + if (self.PZClass == "civilian_" && !file.Exists("models/player/civilian.mdl","WORKSHOP")) then + self:Remove() + end + local npc = LeadBot_S_Add_Zombie(team,self.PZClass,self:GetPos(),self) + if (!IsValid(npc)) then + ErrorNoHalt("The bot could not spawn because you are in singleplayer!") + return + end + self:SetNoDraw(true) + self:SetModel(npc:GetModel()) + self:ResetSequence(self:SelectWeightedSequence(ACT_MP_STAND_MELEE)) + timer.Simple(0.3, function() + + if (self.Team == "BLU") then + + npc:SetSkin(1) + + end + //RandomWeapon2(npc, "primary") + //RandomWeapon2(npc, "secondary") + //RandomWeapon2(npc, "melee") + //RandomCosmetic(npc, "misc") + //RandomCosmetic(npc, "misc") + //RandomCosmetic(npc, table.Random({"head","hat"})) + local class = npc:GetPlayerClass() + if (class != "scout" and + class != "soldier" and + class != "pyro" and + class != "demoman" and + class != "heavy" and + class != "engineer" and + class != "medic" and + class != "sniper" and + class != "spy" and + class != "gmodplayer") + then + + local class = npc.playerclass + if (string.find(class,"demoman")) then + class = "demo" + elseif (string.find(class,"Demoman")) then + class = "demo" + elseif (string.find(class,"demoknight")) then + class = "demo" + end + else + + local class = npc:GetPlayerClass() + if (string.find(class,"demoman")) then + class = "demo" + elseif (string.find(class,"Demoman")) then + class = "demo" + elseif (string.find(class,"demoknight")) then + class = "demo" + end + + end + + end) + self.Bot = npc +end + +function ENT:Think() + if (!IsValid(self.Bot) and SERVER) then + self:Remove() + end + self:NextThink(CurTime() + 0.5) + return true +end + +function ENT:OnRemove() + if SERVER then + self.Bot:Kick() + end +end + + +function RandomWeapon2(ply, wepslot) + local weps = tf_items.ItemsByID + local class = ply:GetPlayerClass() + local validweapons = {} + for k, v in pairs(weps) do + if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and !string.find(v["name"], "Jumper") and v["prefab"] and v["prefab"] != "weapon_melee_allclass" and v["used_by_classes"] and v["used_by_classes"][class] and v["craft_class"] == "weapon" then + table.insert(validweapons, v["name"]) + end + end + + local wep = table.Random(validweapons) + ply:EquipInLoadout(wep) +end + +function RandomCosmetic(ply, wepslot) + local weps = tf_items.ReturnItems() + local class = ply:GetPlayerClass() + local validweapons = {} + for k, v in pairs(weps) do + if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and v["used_by_classes"] and v["used_by_classes"][class] and v["prefab"] != "tournament_medal" and !string.find(v["item_name"], "Taunt") and v["equip_region"] != "medal" and (v["item_class"] == "tf_wearable" || !IsValid(v["item_class"]) ) then + table.insert(validweapons, v["name"]) + end + end + + local wep = table.Random(validweapons) + ply:EquipInLoadout(wep) +end + +function ENT:SpawnFunction( ply, tr, ClassName ) + + if ( !tr.Hit ) then return end + + local SpawnPos = tr.HitPos + tr.HitNormal * 16 + + local ent = ents.Create( ClassName ) + ent:SetPos( SpawnPos ) + ent:Spawn() + ent:Activate() + + return ent + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_civilian.lua b/gamemodes/tf/entities/entities/tf_red_bot_civilian.lua new file mode 100644 index 000000000..3e56d32aa --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_civilian.lua @@ -0,0 +1,18 @@ +if (!IsMounted("tf")) then return end +if (!file.Exists("models/player/civilian.mdl","WORKSHOP")) then return end +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "civilian_" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Civilian" +ENT.Category = "TFBots: Extras" + +list.Set( "NPC", "tf_red_bot_civilian", { + Name = ENT.PrintName, + Class = "tf_red_bot_civilian", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_demo.lua b/gamemodes/tf/entities/entities/tf_red_bot_demo.lua new file mode 100644 index 000000000..52c56ea4d --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_demo.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "demoman" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Demoman" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_demo", { + Name = ENT.PrintName, + Class = "tf_red_bot_demo", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_engineer.lua b/gamemodes/tf/entities/entities/tf_red_bot_engineer.lua new file mode 100644 index 000000000..e2d313707 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_engineer.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "engineer" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Engineer" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_engineer", { + Name = ENT.PrintName, + Class = "tf_red_bot_engineer", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_gmodplayer.lua b/gamemodes/tf/entities/entities/tf_red_bot_gmodplayer.lua new file mode 100644 index 000000000..f87b28397 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_gmodplayer.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "gmodplayer" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red GMOD Player" +ENT.Category = "TFBots: Extras" + +list.Set( "NPC", "tf_red_bot_gmodplayer", { + Name = ENT.PrintName, + Class = "tf_red_bot_gmodplayer", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_heavyweapons.lua b/gamemodes/tf/entities/entities/tf_red_bot_heavyweapons.lua new file mode 100644 index 000000000..7b2a3b07b --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_heavyweapons.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "heavy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Heavy" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_heavyweapons", { + Name = ENT.PrintName, + Class = "tf_red_bot_heavyweapons", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_medic.lua b/gamemodes/tf/entities/entities/tf_red_bot_medic.lua new file mode 100644 index 000000000..3f8c41b5d --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_medic.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "medic" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Medic" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_medic", { + Name = ENT.PrintName, + Class = "tf_red_bot_medic", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_pyro.lua b/gamemodes/tf/entities/entities/tf_red_bot_pyro.lua new file mode 100644 index 000000000..b8e1af92c --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_pyro.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "pyro" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Pyro" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_pyro", { + Name = ENT.PrintName, + Class = "tf_red_bot_pyro", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_sniper.lua b/gamemodes/tf/entities/entities/tf_red_bot_sniper.lua new file mode 100644 index 000000000..3d189a6cb --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_sniper.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "sniper" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Sniper" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_sniper", { + Name = ENT.PrintName, + Class = "tf_red_bot_sniper", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_soldier.lua b/gamemodes/tf/entities/entities/tf_red_bot_soldier.lua new file mode 100644 index 000000000..8a19d868f --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_soldier.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "soldier" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Soldier" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_soldier", { + Name = ENT.PrintName, + Class = "tf_red_bot_soldier", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_bot_spy.lua b/gamemodes/tf/entities/entities/tf_red_bot_spy.lua new file mode 100644 index 000000000..4c5830523 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_bot_spy.lua @@ -0,0 +1,16 @@ +if SERVER then AddCSLuaFile() end + +ENT.Base = "tf_red_bot" +ENT.PZClass = "spy" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.IsBoss = false +ENT.PrintName = "Red Spy" +ENT.Category = "TFBots" + +list.Set( "NPC", "tf_red_bot_spy", { + Name = ENT.PrintName, + Class = "tf_red_bot_spy", + Category = ENT.Category, + AdminOnly = true +} ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_red_team_spawner.lua b/gamemodes/tf/entities/entities/tf_red_team_spawner.lua new file mode 100644 index 000000000..0ecbcfeeb --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_red_team_spawner.lua @@ -0,0 +1,17 @@ +if SERVER then AddCSLuaFile() end +ENT.Type = "anim" +ENT.Base = "tf_blue_team_spawner" +ENT.Spawnable = false +ENT.AdminOnly = true +ENT.AutomaticFrameAdvance = true +ENT.PrintName = "RED Spawner" +ENT.Category = "TFBots" +ENT.Team = TEAM_RED + +list.Set( "NPC", "tf_red_team_spawner", { + Name = ENT.PrintName, + Class = "tf_red_team_spawner", + Category = ENT.Category, + AdminOnly = true, + AdminOnly = true +} ) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/cl_init.lua b/gamemodes/tf/entities/entities/tf_resupplylocker/cl_init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/cl_init.lua rename to gamemodes/tf/entities/entities/tf_resupplylocker/cl_init.lua diff --git a/gamemodes/tf/entities/entities/tf_resupplylocker/init.lua b/gamemodes/tf/entities/entities/tf_resupplylocker/init.lua new file mode 100644 index 000000000..6dd283b48 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_resupplylocker/init.lua @@ -0,0 +1,96 @@ +function ENT:Initialize() + self:SetModel( "models/props_gameplay/resupply_locker.mdl" ) + self:PhysicsInit( SOLID_VPHYSICS ) + self:SetMoveType( MOVETYPE_VPHYSICS ) + self:SetSolid( SOLID_VPHYSICS ) + + local phys = self:GetPhysicsObject() + if (phys:IsValid(self.WModel2)) then + phys:Wake() + end + + self.Team = 0 + self.Players = {} + self.Opened = false +end + +function ENT:Use( activator, caller ) + return +end + + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + self.Team = tonumber(value) + elseif key=="associatedmodel" then + selfName = value + end +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = -1 + end +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = nil + end +end + +function ENT:Think() + local resupplied + + for pl,last in pairs(self.Players) do + if last==-1 or CurTime()-last>1 then + resupplied = true + GAMEMODE:GiveHealthPercent(pl, 100) + GAMEMODE:GiveAmmoPercent(pl, 100) + if self.Opened then + self:EmitSound("AmmoPack.Touch", 100, 100) + end + self.Players[pl] = CurTime() + end + end + + if resupplied and not self.Opened then + self:EmitSound("Regenerate.Touch", 100, 100) + + if not self and selfName then + self = ents.FindByName(selfName)[1] + ----print("associatedmodel : "..selfName.." : "..tostring(self)) + end + + if self and self:IsValid(self.WModel2) then + --self:ResetSequence(self:LookupSequence("open")) + self:Fire("SetAnimation", "open") + end + + self.Opened = true + self.NextClose = CurTime() + 1.5 + end + + if self.NextClose and CurTime()>=self.NextClose then + if self and self:IsValid(self.WModel2) then + --self:ResetSequence(self:LookupSequence("close")) + --self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + self:Fire("SetAnimation", "close") + self.NextIdle = CurTime() + 1.5 + else + self.NextIdle = CurTime() + 1.5 + end + self.NextClose = nil + end + + if self.NextIdle and CurTime()>=self.NextIdle then + --[[if self and self:IsValid(self.WModel2) then + self:ResetSequence(self:LookupSequence("idle")) + end]] + + self.NextIdle = nil + self.Opened = false + end +end diff --git a/addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/shared.lua b/gamemodes/tf/entities/entities/tf_resupplylocker/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/tf_resupplylocker/shared.lua rename to gamemodes/tf/entities/entities/tf_resupplylocker/shared.lua diff --git a/gamemodes/tf/entities/entities/tf_team_control_point/cl_init.lua b/gamemodes/tf/entities/entities/tf_team_control_point/cl_init.lua new file mode 100644 index 000000000..4422f6516 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_team_control_point/cl_init.lua @@ -0,0 +1,174 @@ +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +local function UpdateControlPointTexture(cp) + local str + if cp.locked then str = "tex_icon_locked_" + else str = "tex_icon_" + end + + cp.tex_icon = cp[str..cp.owner] or cp[str.."0"] + cp.tex_overlay = cp["tex_overlay_"..cp.owner] or cp["tex_overlay_0"] +end + +local function GetTextureID(tex) + if tex=="" then + return -1 + else + return surface.GetTextureID(tex) + end +end + +usermessage.Hook("TF_SetControlPointLayout", function(msg) + local str = msg:ReadString() + local y = 1 + local m = {{}} + + str=string.gsub(str, "(%S),", "%1 ,") + str=string.gsub(str, ",(%S)", ", %1") + for n in string.gmatch(str, "[0-9,]+") do + if tonumber(n) then + table.insert(m[y], tonumber(n)+1) + else + y = y+1 + m[y] = {} + end + end + + GAMEMODE.ControlPointLayout = m + + for _,v in ipairs(m) do + for _,n in ipairs(v) do + Msg(n.." ") + end + Msg("\n") + end +end) + +usermessage.Hook("TF_AddControlPoint", function(msg) + if not GAMEMODE.ControlPoints then GAMEMODE.ControlPoints = {} end + + local id = msg:ReadChar() + local cp = {} + + cp.name = msg:ReadString() + + cp.icon_neutral = msg:ReadString() + cp.icon_red = msg:ReadString() + cp.icon_blu = msg:ReadString() + cp.tex_icon_0 = GetTextureID(cp.icon_neutral) + cp.tex_icon_2 = GetTextureID(cp.icon_red) + cp.tex_icon_3 = GetTextureID(cp.icon_blu) + cp.tex_icon_locked_0 = GetTextureID(cp.icon_neutral.."_locked") + cp.tex_icon_locked_2 = GetTextureID(cp.icon_red.."_locked") + cp.tex_icon_locked_3 = GetTextureID(cp.icon_blu.."_locked") + + cp.overlay_neutral = msg:ReadString() + cp.overlay_red = msg:ReadString() + cp.overlay_blu = msg:ReadString() + cp.tex_overlay_0 = GetTextureID(cp.overlay_neutral) + cp.tex_overlay_2 = GetTextureID(cp.overlay_red) + cp.tex_overlay_3 = GetTextureID(cp.overlay_blu) + + cp.owner = msg:ReadChar() + cp.locked = false + + UpdateControlPointTexture(cp) + + --MsgN("Control point "..id) + PrintTable(cp) + + GAMEMODE.ControlPoints[id] = cp +end) + +usermessage.Hook("TF_SetControlPointTeam", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.owner = msg:ReadChar() + UpdateControlPointTexture(cp) +end) + +usermessage.Hook("TF_LockControlPoint", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.locked = true + UpdateControlPointTexture(cp) +end) + +usermessage.Hook("TF_OpenControlPoint", function(msg) + local id = msg:ReadChar() + local cp = GAMEMODE.ControlPoints[id] + + if not cp then return end + + cp.locked = false + UpdateControlPointTexture(cp) +end) + +usermessage.Hook("TF_EnterControlPoint", function(msg) + LocalPlayer().CurrentControlPoint = msg:ReadChar() +end) + +usermessage.Hook("TF_ExitControlPoint", function(msg) + LocalPlayer().CurrentControlPoint = -1 +end) + +usermessage.Hook("TF_SetAndResumeTimer", function(msg) + GAMEMODE.RoundTimeReference = msg:ReadFloat() + + local t = msg:ReadFloat() + if t>0 then GAMEMODE.MaxRoundTime = t end + + GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() + GAMEMODE.RoundTimeLastUpdated = CurTime() + GAMEMODE.RoundTimePaused = nil +end) + + +usermessage.Hook("TF_SetAndResumeTimerWaiting", function(msg) + GAMEMODE.RoundTimeReference = msg:ReadFloat() + + local t = msg:ReadFloat() + if t>0 then GAMEMODE.MaxRoundTime = t end + + GAMEMODE.RoundTimeIsWaitingForPlayers = msg:ReadBool() + GAMEMODE.RoundTimeLastUpdated = CurTime() + GAMEMODE.RoundTimePaused = nil +end) + +usermessage.Hook("TF_RemoveTimer", function(msg) + GAMEMODE.RoundTimeIsWaitingForPlayers = nil + GAMEMODE.RoundTimeReference = nil + GAMEMODE.RoundTimeLastUpdated = nil + GAMEMODE.RoundTimePaused = nil +end) + +usermessage.Hook("TF_SetAndPauseTimer", function(msg) + GAMEMODE.RoundTimePaused = msg:ReadFloat() + + local t = msg:ReadFloat() + if t>0 then GAMEMODE.MaxRoundTime = t end + + GAMEMODE.RoundTimeIsSetupPhase = msg:ReadBool() +end) + +usermessage.Hook("TF_PlayGlobalSound", function(msg) + LocalPlayer():EmitSound(msg:ReadString()) +end) + +function ENT:Draw() + -- fuck AutomaticFrameAdvance, this is better + if self.LastDrawn then + self:FrameAdvance(CurTime() - self.LastDrawn) + end + self.LastDrawn = CurTime() + + self:DrawModel() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_team_control_point/init.lua b/gamemodes/tf/entities/entities/tf_team_control_point/init.lua new file mode 100644 index 000000000..921d7c0a5 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_team_control_point/init.lua @@ -0,0 +1,179 @@ +include("shared.lua") +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +function ENT:Initialize() + self.ID = self.Properties.point_index + self.OwnerTeam = self.Properties.point_default_owner + self.Locked = false + + self:UpdateModel() +end + +function ENT:UpdateModel() + self:SetModel(self.Properties["team_model_"..self.OwnerTeam]) + self:SetBodygroup(0, self.OwnerTeam) + self:ResetSequence(self:SelectWeightedSequence(ACT_IDLE)) + self:DrawShadow(false) +end + +function ENT:InitPostEntity() + if not IsValid(self.TriggerEntity) then + return + end + + --print(self) + + self.Properties.team_previouspoint_2_0 = ents.FindByName(self.Properties.team_previouspoint_2_0 or "")[1] or NULL + self.Properties.team_previouspoint_2_1 = ents.FindByName(self.Properties.team_previouspoint_2_1 or "")[1] or NULL + self.Properties.team_previouspoint_2_2 = ents.FindByName(self.Properties.team_previouspoint_2_2 or "")[1] or NULL + self.Properties.team_previouspoint_3_0 = ents.FindByName(self.Properties.team_previouspoint_3_0 or "")[1] or NULL + self.Properties.team_previouspoint_3_1 = ents.FindByName(self.Properties.team_previouspoint_3_1 or "")[1] or NULL + self.Properties.team_previouspoint_3_2 = ents.FindByName(self.Properties.team_previouspoint_3_2 or "")[1] or NULL + + PrintTable(self.Properties or {}) + + self:SendData() + self.Ready = true +end + +function ENT:SendData(pl) + umsg.Start("TF_AddControlPoint", pl) + umsg.Char(self.Properties.point_index) + umsg.String(self.Properties.point_printname) + + umsg.String(self.Properties.team_icon_0 or "") + umsg.String(self.Properties.team_icon_2 or "") + umsg.String(self.Properties.team_icon_3 or "") + + umsg.String(self.Properties.team_overlay_0 or "") + umsg.String(self.Properties.team_overlay_2 or "") + umsg.String(self.Properties.team_overlay_3 or "") + + umsg.Char(self.Properties.point_default_owner) + umsg.End() +end + +function ENT:SetOwnerTeam(o) + self.OwnerTeam = o + umsg.Start("TF_SetControlPointTeam") + umsg.Char(self.ID) + umsg.Char(self.OwnerTeam) + umsg.End() + self:UpdateModel() +end + +function ENT:Open() + self.Locked = false + umsg.Start("TF_OpenControlPoint") + umsg.Char(self.ID) + umsg.End() +end + +function ENT:Lock() + self.Locked = true + umsg.Start("TF_LockControlPoint") + umsg.Char(self.ID) + umsg.End() +end + +function ENT:SetLocked(b) + if b then + self:Lock() + else + self:Open() + end +end + +-- Should this control point be locked or not? +function ENT:ComputeLockStatus() + if self.TeamCanCap then + -- If this point cannot be captured by any team other than its owner, it's definitely locked + local lock = true + for t=2,3 do + if t~=self.OwnerTeam and self.TeamCanCap[t] then + lock = false + break + end + end + if lock then + return true + end + end + + local pt + local lock = true + for t=2,3 do + if self.OwnerTeam ~= t then + local cancap = true + + if self.TeamCanCap and not self.TeamCanCap[t] then + cancap = false + else + for i=0,2 do + pt = self.Properties["team_previouspoint_"..t.."_"..i] + if not IsValid(pt) then + if i==0 then + local cannotcap = false + for _,pt in pairs(ents.FindByClass("team_control_point")) do + if ((t==2 and pt.ID>self.ID) or (t==3 and pt.ID 1) + elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then + return ent:GetMaxHealth() > 1 + elseif ent:GetClass() == "func_breakable" then + return true + end + + return false +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + end + self.dt.Cloaking = false + self.dt.Ready = true + self.dt.ChargeCooldownMultiplier = 1 + self:SetModel("models/empty.mdl") +end + +function ENT:SendViewModelAnim( act , index , rate ) + + local vm = self:GetOwner():GetViewModel( index ) + + if ( not IsValid( vm ) ) then + return + end + + local seq = vm:SelectWeightedSequence( act ) + + if ( seq == -1 ) then + return + end + + vm:SendViewModelMatchingSequence( seq ) + vm:SetPlaybackRate( rate or 1 ) +end + +function ENT:StartCloaking() + if self.StopCloakCooldown == true then return end + if not self.ChargeDuration then + self.dt.AdditiveChargeDuration = self:GetOwner().TempAttributes.AdditiveChargeDuration or 0 + self.dt.ChargeCooldownMultiplier = self:GetOwner().TempAttributes.ChargeCooldownMultiplier or 1 + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + local vm = self:GetOwner():GetViewModel(1) + + if ( IsValid( vm ) ) then + --associate its weapon to us + vm:SetWeaponModel( self:GetModel(), self ) + end + self.dt.Ready = false + self.dt.Cloaking = true + self.dt.NextEndCharge = CurTime() + self.ChargeDuration + self:GetOwner():EmitSound("Player.Spy_Cloak") + self:GetOwner():PrintMessage(HUD_PRINTCENTER, "You are now cloaked." ) + self:SendViewModelAnim( ACT_VM_DRAW, 1 ) + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self:GetOwner()) then + v:AddEntityRelationship(self:GetOwner(), D_LI, 99) + end + end + self:GetOwner():SetNWBool("Bonked", true) + local ent = self.Owner + if (ent:Team() == TEAM_BLU) then + ent:SetMaterial("models/shadertest/shader3") + else + ent:SetMaterial("models/props_combine/tprings_globe") + end + timer.Create("Cloak2"..self:GetOwner():EntIndex(), 0.8, 1, function() + self:GetOwner():SetMaterial("color") + ent:AddEffects(EF_NOSHADOW) + + self:GetOwner():SetNWBool("NoWeapon", true) + end) + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner()==self:GetOwner() then + v:SetKeyValue("effects", "0") + v:SetParent(self:GetOwner()) + v:SetNoDraw(true) + v:DrawShadow(true) + v.Dead = true + end + end + for _,v in pairs(ents.FindByClass("tf_wearable_hat")) do + if v:GetOwner()==self:GetOwner() then + v:SetKeyValue("effects", "0") + v:SetParent(self:GetOwner()) + v:SetNoDraw(true) + v:DrawShadow(true) + v.Dead = true + end + end +end + +function ENT:StopCloaking() + if self.StopCloakCooldown == true then return end + self.ChargeDuration = self.ChargeDuration + self.dt.Ready = true + self.dt.Cloaking = false + self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + self.SpeedBonus = nil + self:GetOwner():ResetClassSpeed() + + self:SendViewModelAnim( ACT_VM_HOLSTER, 1 ) + + self:GetOwner():SetNWBool("NoWeapon", false) + + self:GetOwner():PrintMessage(HUD_PRINTCENTER, "You are now decloaked." ) + self:EmitSound("player/spy_uncloak.wav") + local ent = self.Owner + if (ent:Team() == TEAM_BLU) then + ent:SetMaterial("models/shadertest/shader3") + else + ent:SetMaterial("models/props_combine/tprings_globe") + end + timer.Create("Cloak2"..self:GetOwner():EntIndex(), 0.8, 1, function() + self:GetOwner():SetMaterial("") + ent:RemoveEffects(EF_NOSHADOW) + end) + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self:GetOwner()) then + v:AddEntityRelationship(self:GetOwner(), D_HT, 99) + end + end + + self:GetOwner():SetNWBool("Bonked", false) + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner()==self:GetOwner() then + v:SetKeyValue("effects", "0") + v:SetParent(self:GetOwner()) + vself.WModel2:SetNoDraw(false) + v:DrawShadow(false) + v.Dead = false + end + end + for _,v in pairs(ents.FindByClass("tf_wearable_hat")) do + if v:GetOwner()==self:GetOwner() then + v:SetKeyValue("effects", "0") + v:SetParent(self:GetOwner()) + vself.WModel2:SetNoDraw(false) + v:DrawShadow(false) + v.Dead = false + end + end + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Stop() + self.ChargeSoundEnt = nil + end + + if self.ChargeState then + if self.ChargeState == 2 then + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Stop() + self.CritStartSoundEnt = nil + self:GetOwner():EmitSound(self.CritStopSound) + end + end + + self.NextEndCritBoost = CurTime() + 0.4 + end +end + +function ENT:OnMeleeSwing() + if self.dt.Cloaking then + self:StopCloaking() + end +end + +function ENT:OnPrimaryAttack() + if self.dt.Cloaking then + self:StopCloaking() + end +end + +function ENT:Think() + if not IsValid(self:GetOwner()) then return end + + if self.dt.Cloaking then + local vel = self:GetOwner():GetVelocity():LengthSqr() + + if CurTime() > self.dt.NextEndCharge then + self:StopCloaking() + return + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 and self.ChargeState == 1 then + self.ChargeState = 2 + + if not self.CritStartSoundEnt then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.CritStartSoundEnt = CreateSound(self, self.CritStartSound,rf) + end + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Play() + end + elseif p0 < 0.66 and not self.ChargeState then + self.ChargeState = 1 + end + elseif not self.dt.Ready then + if CurTime() > self.dt.NextEndCharge then + self.dt.Ready = true + self:GetOwner():SendLua("surface.PlaySound('player/recharged.wav')") + end + self.ChargeState = nil + end + + if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then + GAMEMODE:StopCritBoost(self:GetOwner()) + self.NextEndCritBoost = nil + end + + if self:GetOwner():KeyDown(IN_ATTACK2) and self.dt.Ready and self.StartCloakCooldown == false then + self:StartCloaking() + self.StartCloakCooldown = true + self.StopCloakCooldown = true + timer.Simple(1.6, function() + self.StopCloakCooldown = false + end) + timer.Simple(1.5, function() + self.StartCloakCooldown = false + end) + + end + + if self:GetOwner():KeyDown(IN_ATTACK2) and not self.dt.Ready and self.StopCloakCooldown == false then + self:StopCloaking() + self.StopCloakCooldown = true + timer.Simple(1.6, function() + self.StopCloakCooldown = false + end) + end + self:NextThink(CurTime()) + return true +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_weapon_invis_dringer/shared.lua b/gamemodes/tf/entities/entities/tf_weapon_invis_dringer/shared.lua new file mode 100644 index 000000000..72f1dc519 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_weapon_invis_dringer/shared.lua @@ -0,0 +1,236 @@ +ENT.Type = "anim" +ENT.Base = "tf_wearable_item" + +ENT.MeleeRange = 0 + +ENT.ForceMultiplier = 0 +ENT.CritForceMultiplier = 0 +ENT.ForceAddPitch = 0 +ENT.CritForceAddPitch = 0 + +ENT.DefaultBaseDamage = 0 +ENT.DamagePerHead = 10 +--ENT.MaxHeads = 5 + +ENT.BaseDamage = 0 +ENT.DamageRandomize = 0 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 + +ENT.HitPlayerSound = Sound("DemoCharge.HitFlesh") +ENT.HitPlayerRangeSound = Sound("DemoCharge.HitFleshRange") +ENT.HitWorldSound = Sound("DemoCharge.HitWorld") + +ENT.CritStartSound = Sound("") +ENT.CritStopSound = Sound("player/spy_uncloak_feigndeath.wav") + +ENT.DefaultChargeDuration = 15 +ENT.ChargeCooldownDuration = 18 + +ENT.ChargeSteerConstraint = GetConVar( "sensitivity" ) + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Bool", 0, "Cloaking") + self:DTVar("Bool", 1, "Ready") + self:DTVar("Float", 0, "NextEndCharge") + self:DTVar("Float", 1, "AdditiveChargeDuration") + self:DTVar("Float", 2, "ChargeCooldownMultiplier") +end + +if CLIENT then + +ENT.GlobalCustomHUD = {HudDemomanCharge = true} + +function ENT:Think() + self.BaseClass.Think(self) + + if not self.Initialized then + self.Initialized = true + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + if self:GetOwner() == LocalPlayer() then + HudDemomanPipes:SetProgress(1) + HudDemomanPipes:SetChargeStatus(0) + end + end + end + + if self:GetOwner() == LocalPlayer() then + if self.dt.Cloaking then + if not self.ChargeDuration then + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 then + HudDemomanPipes:SetChargeStatus(3) + elseif p0 < 0.66 then + HudDemomanPipes:SetChargeStatus(2) + else + HudDemomanPipes:SetChargeStatus(1) + end + + HudDemomanPipes:SetProgress(p) + else + HudDemomanPipes:SetChargeStatus(0) + if self.dt.Ready then + HudDemomanPipes:SetProgress(1) + else + self.ChargeDuration = nil + + local cooldown = self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + local p = 1 - (self.dt.NextEndCharge - CurTime()) / cooldown + HudDemomanPipes:SetProgress(p) + end + end + end +end + +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanChargeThrough(ent) + if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then + return (ent:GetPhysicsObject():IsValid(self.WModel2) and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or + (ent:GetMaxHealth() > 1) + elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then + return ent:GetMaxHealth() > 1 + elseif ent:GetClass() == "func_breakable" then + return true + end + + return false +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + end + self.dt.Cloaking = false + self.dt.Ready = true + self.dt.ChargeCooldownMultiplier = 1 + self:SetModel("models/empty.mdl") +end + +function ENT:StartCloaking() + if not self.ChargeDuration then + self.dt.AdditiveChargeDuration = self:GetOwner().TempAttributes.AdditiveChargeDuration or 0 + self.dt.ChargeCooldownMultiplier = self:GetOwner().TempAttributes.ChargeCooldownMultiplier or 1 + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + self.dt.Ready = false + self.dt.Cloaking = true + self.dt.NextEndCharge = CurTime() + self.ChargeDuration + self:GetOwner():SetNoDraw(true) +end + +function ENT:StopCloaking() + self.ChargeDuration = nil + self.dt.Ready = false + self.dt.Cloaking = false + self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + self.SpeedBonus = nil + self:GetOwner():ResetClassSpeed() + + self:GetOwner():SetMaterial("models/shadertest/predator") + + timer.Simple(1, function() + self:GetOwner():SetMaterial("") + timer.Stop("Decloak") + end) + self:GetOwner():SetNoDraw(false) + self:EmitSound("player/spy_uncloak_feigndeath.wav") + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner()==self:GetOwner() then + v:SetKeyValue("effects", "0") + v:SetParent(self:GetOwner()) + vself.WModel2:SetNoDraw(false) + v:DrawShadow(false) + v.Dead = false + end + end + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Stop() + self.ChargeSoundEnt = nil + end + + if self.ChargeState then + if self.ChargeState == 2 then + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Stop() + self.CritStartSoundEnt = nil + self:GetOwner():EmitSound(self.CritStopSound) + end + end + + self.NextEndCritBoost = CurTime() + 0.4 + end +end + +function ENT:OnMeleeSwing() + if self.dt.Cloaking then + self:StopCloaking() + end +end + +function ENT:OnPrimaryAttack() + if self.dt.Cloaking then + self:StopCloaking() + end +end + +function ENT:Think() + if not IsValid(self:GetOwner()) then return end + + if self.dt.Cloaking then + local vel = self:GetOwner():GetVelocity():LengthSqr() + + if CurTime() > self.dt.NextEndCharge then + self:StopCloaking() + return + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 and self.ChargeState == 1 then + self.ChargeState = 2 + + if not self.CritStartSoundEnt then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.CritStartSoundEnt = CreateSound(self, self.CritStartSound,rf) + end + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Play() + end + elseif p0 < 0.66 and not self.ChargeState then + self.ChargeState = 1 + end + elseif not self.dt.Ready then + if CurTime() > self.dt.NextEndCharge then + self.dt.Ready = true + umsg.Start("PlayChargeReadySound", self:GetOwner()) + umsg.End() + end + self.ChargeState = nil + end + + if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then + GAMEMODE:StopCritBoost(self:GetOwner()) + self.NextEndCritBoost = nil + end + + self:NextThink(CurTime()) + return true +end + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/tf_wearable/shared.lua b/gamemodes/tf/entities/entities/tf_wearable/shared.lua new file mode 100644 index 000000000..416843c78 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable/shared.lua @@ -0,0 +1,267 @@ + +DEFINE_BASECLASS( "base_gmodentity" ) + +ENT.IsTFWearableItem = true + +tf_item.InitializeAsBaseItem(ENT) +ENT.SetupDataTables0 = ENT.SetupDataTables + +function ENT:SetupDataTables() + self:SetupDataTables0() + self:DTVar("Int", 1, "ItemTint") +end + +function ENT:GetItemTint(t) + return self.dt.ItemTint +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:SetItemTint(t) + self.dt.ItemTint = t +end + +end + +if CLIENT then + +function ENT:Draw() + if self:GetOwner() ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer() then + self:StartVisualOverrides() + self:StartItemTint(self:GetItemTint()) + self:GetOwner().RenderingWorldModel = true + self:DrawModel() + self:GetOwner().RenderingWorldModel = false + self:EndItemTint() + self:EndVisualOverrides() + end +end + +-- Called when the player is ragdolled or gibbed (if gibbed, rag = NULL) +function ENT:SetupPlayerRagdoll(rag) + local item = self:GetItemData() + + self.CheckUpdateItem = nil + self:ClearParticles() + + if not self.Model or not util.IsValidModel(self.Model) then return end + + local effectdata = EffectData() + effectdata:SetEntity(self) + + if item.drop_type == "drop" then + local mat = self:GetBoneMatrix(0) + + -- Spawn a hat gib + effectdata:SetMagnitude(GIB_HAT) + if mat then + effectdata:SetOrigin(mat:GetTranslation()) + effectdata:SetAngles(mat:GetAngles()) + else + effectdata:SetOrigin(self:GetOwner():GetPos()) + effectdata:SetAngles(self:GetOwner():GetAngles()) + end + effectdata:SetNormal(Vector(0,0,0.8)) + effectdata:SetRadius(0.8) + util.Effect("tf_gib", effectdata) + else + if IsValid(rag) then + -- This hat doesn't drop, attach it to the player's ragdoll + util.Effect("tf_hat_attached", effectdata) + end + end +end + +end + +function ENT:Think() + + local item = self:GetItemData() + if (IsValid(self.Owner)) then + if (item.visuals) then + if item.visuals.player_bodygroups then + local bodygroups = item.visuals.player_bodygroups + if (bodygroups.hat) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("hat"),1) + elseif (bodygroups.headphones) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("headphones"),1) + elseif (bodygroups.medal) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("medal"),1) + elseif (bodygroups.grenades) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("grenades"),1) + elseif (bodygroups.bullets) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("bullets"),1) + elseif (bodygroups.arrows) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("arrows"),1) + elseif (bodygroups.rightarm) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("rightarm"),1) + elseif (bodygroups.shoes_socks) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("shoes_socks"),1) + end + end + end + if (item and item.visuals) then + if item.visuals.player_bodygroups then + local bodygroups = item.visuals.player_bodygroups + if (bodygroups.hat) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("hat"),bodygroups.hat) + elseif (bodygroups.headphones) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("headphones"),bodygroups.headphones) + elseif (bodygroups.medal) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("medal"),bodygroups.medal) + elseif (bodygroups.grenades) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("grenades"),bodygroups.grenades) + elseif (bodygroups.bullets) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("bullets"),bodygroups.bullets) + elseif (bodygroups.arrows) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("arrows"),bodygroups.arrows) + elseif (bodygroups.rightarm) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("rightarm"),bodygroups.rightarm) + elseif (bodygroups.shoes_socks) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("shoes_socks"),bodygroups.shoe_socks) + end + end + end + end + if IsValid(self.Owner) and self.Model and string.find(self.Model,"_zombie") then + if (self.Owner:GetPlayerClass() == "spy") then + if (self.Owner:Team() == TEAM_BLU) then + self.Owner:SetSkin(23) + self:SetSkin(1) + else + self.Owner:SetSkin(22) + self:SetSkin(0) + end + else + if (self.Owner:Team() == TEAM_BLU) then + self.Owner:SetSkin(5) + self:SetSkin(1) + else + self.Owner:SetSkin(4) + self:SetSkin(0) + end + end + elseif IsValid(self.Owner) and self.Model then + if (self.Owner:Team() == TEAM_BLU) then + self:SetSkin(1) + else + self:SetSkin(0) + end + end + if CLIENT then + self:SetPredictable( true ) + + if self:GetOwner() ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer() then + if self.ShadowCreated ~= true then + self.ShadowCreated = true + self:CreateShadow() + end + else + if self.ShadowCreated ~= false then + self.ShadowCreated = false + self:DestroyShadow() + end + end + end +end +function ENT:Initialize() + self.Owner = self:GetOwner() + self:AddToPlayerItems() + + local item = self:GetItemData() + + if item.model_player then + --print(item.model_player) + if (string.find(item.model_player,"zombie") || (string.find(item.model_player,"/all_class/all_") and !string.find(item.model_player,"all_halo")) || string.find(item.model_player,"ugc_season12") ) then + if (string.find(item.model_player,"/zombie_"..self.Owner:GetPlayerClass()..".mdl")) then + self.Owner:SetSkin(self.Owner:GetSkin()) + end + self.Model = string.Replace(string.Replace(item.model_player,"%s",self.Owner:GetPlayerClass()),"demoman","demo") + else + if (string.find(item.model_player,"zombie")) then + self.Owner:SetSkin(self.Owner:GetSkin()) + end + self.Model = string.Replace(string.Replace(item.model_player,"%s",self.Owner:GetPlayerClass()),"demoman","demo") + end + elseif item.model_player_per_class then + if (item.model_player_per_class[self.Owner:GetPlayerClass()]) then + local modelperclass = item.model_player_per_class[self.Owner:GetPlayerClass()] + modelperclass = string.Replace(modelperclass,"%s",self.Owner:GetPlayerClass()) + + modelperclass = string.Replace(modelperclass,"demoman","demo") + self.Model = modelperclass + else + --print(item.model_player_per_class) + PrintTable(item.model_player_per_class) + local modelperclass = tostring(item.model_player_per_class.basename) + modelperclass = string.Replace(modelperclass,"%s",self.Owner:GetPlayerClass()) + self.Model = string.Replace(modelperclass,"demoman","demo") + end + end + if SERVER then + self:SetMoveType(MOVETYPE_NONE) + self:SetSolid(SOLID_NONE) + self:SetParent(self:GetOwner()) + + if self.Model then + self:SetModel(self.Model) + self:AddEffects(EF_BONEMERGE) + + if item.set_sequence_to_class then + self:AddEffects(EF_NOINTERP) + self:ResetSequence(self:LookupSequence(self.Owner:GetPlayerClass())) + end + else + self:SetNoDraw(true) + self:DrawShadow(false) + end + end +end + +function ENT:OnRemove() + self:RemoveFromPlayerItems() + + local item = self:GetItemData() + + if (item.visuals) then + if item.visuals.player_bodygroups then + local bodygroups = item.visuals.player_bodygroups + if (bodygroups.hat) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("hat"),0) + elseif (bodygroups.headphones) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("headphones"),0) + elseif (bodygroups.headphones) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("headphones"),0) + elseif (bodygroups.medal) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("medal"),0) + elseif (bodygroups.grenades) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("grenades"),0) + elseif (bodygroups.bullets) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("bullets"),0) + elseif (bodygroups.arrows) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("arrows"),0) + elseif (bodygroups.rightarm) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("rightarm"),0) + elseif (bodygroups.shoes_socks) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("shoes_socks"),0) + end + end + end +end + +function ENT:OnOwnerDeath() + self.Dead = true + self:SetNoDraw(true) + self:DrawShadow(false) + SafeRemoveEntityDelayed(self, 1) +end + +hook.Add("DoPlayerDeath", "DetachPlayerHat", function(pl) + for _,v in pairs(pl:GetTFItems()) do + if v.OnOwnerDeath then + v:OnOwnerDeath() + end + end +end) diff --git a/gamemodes/tf/entities/entities/tf_wearable_item/shared.lua b/gamemodes/tf/entities/entities/tf_wearable_item/shared.lua new file mode 100644 index 000000000..8d6c874d6 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable_item/shared.lua @@ -0,0 +1,345 @@ + +DEFINE_BASECLASS( "base_gmodentity" ) + +ENT.IsTFWearableItem = true + +tf_item.InitializeAsBaseItem(ENT) +ENT.SetupDataTables0 = ENT.SetupDataTables + +function ENT:SetupDataTables() + self:SetupDataTables0() + self:DTVar("Int", 1, "ItemTint") + self:NetworkVar("Vector", 1, "CosmeticTint") +end + +function ENT:GetItemTint(t) + return self.dt.ItemTint +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:SetItemTint(t) + self.dt.ItemTint = t +end + +end + +if CLIENT then + +CreateClientConVar( "tf_hatcolor", "0 0 0 255", true, true ) +CreateClientConVar( "tf_misccolor", "0 0 0 255", true, true ) +CreateClientConVar( "tf_hatcolor_rainbow", "0", true, true ) +CreateClientConVar( "tf_misccolor_rainbow", "0", true, true ) + +function ENT:Draw() + if (IsMounted("tf")) then + if self:GetOwner() ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer() then + self:StartVisualOverrides() + self:StartItemTint(self:GetItemTint()) + self:GetOwner().RenderingWorldModel = true + self:DrawModel() + self:GetOwner().RenderingWorldModel = false + self:EndItemTint() + self:EndVisualOverrides() + end + else + self:SetModel("models/empty.mdl") + self:DrawModel() + end +end + +-- Called when the player is ragdolled or gibbed (if gibbed, rag = NULL) +function ENT:SetupPlayerRagdoll(rag) + local item = self:GetItemData() + + self.CheckUpdateItem = nil + self:ClearParticles() + + if not self.Model or not util.IsValidModel(self.Model) then return end + + local effectdata = EffectData() + effectdata:SetEntity(self) + if item.drop_type == "drop" then + local mat = self:GetBoneMatrix(0) + + -- Spawn a hat gib + effectdata:SetMagnitude(GIB_HAT) + if mat then + effectdata:SetOrigin(mat:GetTranslation()) + effectdata:SetAngles(mat:GetAngles()) + else + effectdata:SetOrigin(self:GetOwner():GetPos()) + effectdata:SetAngles(self:GetOwner():GetAngles()) + end + effectdata:SetNormal(Vector(0,0,0.8)) + effectdata:SetRadius(0.8) + util.Effect("tf_gib", effectdata) + else + if IsValid(rag) then + -- This hat doesn't drop, attach it to the player's ragdoll + util.Effect("tf_hat_attached", effectdata) + end + end +end + +function ENT:Think() + + if self:GetOwner() ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer() then + if self.ShadowCreated ~= true then + self.ShadowCreated = true + self:CreateShadow() + end + else + if self.ShadowCreated ~= false then + self.ShadowCreated = false + self:DestroyShadow() + end + end + + + if CLIENT then + if self:GetOwner() ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer() then + if self.ShadowCreated ~= true then + self.ShadowCreated = true + self:CreateShadow() + end + else + if self.ShadowCreated ~= false then + self.ShadowCreated = false + self:DestroyShadow() + end + end + elseif SERVER then + if self:GetOwner():GetNoDraw() == true then + self:SetNoDraw(true) + else + self:SetNoDraw(false) + end + local item = self:GetItemData() + if self:GetItemData()["item_slot"] == "head" then + if self:GetOwner():GetInfoNum("tf_hatcolor_rainbow", 0) == 1 then + self:SetCosmeticTint(Vector(math.random(5, 255)/255, math.random(5, 255)/255, math.random(5, 255)/255)) + else + self:SetCosmeticTint(Vector(string.ToColor(self:GetOwner():GetInfo("tf_hatcolor")).r/255, string.ToColor(self:GetOwner():GetInfo("tf_hatcolor")).g/255, string.ToColor(self:GetOwner():GetInfo("tf_hatcolor")).b/255)) + end + elseif self:GetItemData()["item_slot"] == "misc" then + if self:GetOwner():GetInfoNum("tf_hatcolor_rainbow", 0) == 1 then + self:SetCosmeticTint(Vector(math.random(5, 255)/255, math.random(5, 255)/255, math.random(5, 255)/255)) + else + self:SetCosmeticTint(Vector(string.ToColor(self:GetOwner():GetInfo("tf_misccolor")).r/255, string.ToColor(self:GetOwner():GetInfo("tf_misccolor")).g/255, string.ToColor(self:GetOwner():GetInfo("tf_misccolor")).b/255)) + end + end + end + + if (IsValid(self.Owner) and string.find(self.Owner:GetModel(),"/player/touhou/")) then + if SERVER then + self:Remove() + end + return + end + + if (file.Exists(self:GetModel(),"GAME")) then + local item = self:GetItemData() + if (IsValid(self.Owner)) then + if (item.visuals) then + if item.visuals.player_bodygroups then + local bodygroups = item.visuals.player_bodygroups + if (bodygroups.hat) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("hat"),1) + elseif (bodygroups.head) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("head"),1) + elseif (bodygroups.headphones) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("headphones"),1) + elseif (bodygroups.medal) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("medal"),1) + elseif (bodygroups.grenades) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("grenades"),1) + elseif (bodygroups.bullets) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("bullets"),1) + elseif (bodygroups.arrows) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("arrows"),1) + elseif (bodygroups.rightarm) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("rightarm"),1) + elseif (bodygroups.shoes_socks) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("shoes_socks"),1) + end + end + end + if (item and item.visuals) then + if item.visuals.player_bodygroups then + local bodygroups = item.visuals.player_bodygroups + if (bodygroups.hat) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("hat"),1) + elseif (bodygroups.head) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("head"),1) + elseif (bodygroups.headphones) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("headphones"),1) + elseif (bodygroups.medal) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("medal"),1) + elseif (bodygroups.grenades) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("grenades"),1) + elseif (bodygroups.bullets) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("bullets"),1) + elseif (bodygroups.arrows) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("arrows"),1) + elseif (bodygroups.rightarm) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("rightarm"),1) + elseif (bodygroups.shoes_socks) then + self.Owner:SetBodygroup(self.Owner:FindBodygroupByName("shoes_socks"),1) + end + end + end + end + if self.Model and string.find(self.Model,"_zombie") then + if (IsValid(self.Owner)) then + if (self.Owner:GetPlayerClass() == "spy") then + if (self.Owner:Team() == TEAM_BLU) then + self.Owner:SetSkin(23) + self:SetSkin(1) + else + self.Owner:SetSkin(22) + self:SetSkin(0) + end + else + if (self.Owner:Team() == TEAM_BLU) then + self.Owner:SetSkin(5) + self:SetSkin(1) + else + self.Owner:SetSkin(4) + self:SetSkin(0) + end + end + end + else + if (IsValid(self.Owner)) then + if (self.Owner:GetPlayerClass() == "spy") then + if (self.Owner:Team() == TEAM_BLU) then + self:SetSkin(1) + else + self:SetSkin(0) + end + else + if (self.Owner:Team() == TEAM_BLU) then + self:SetSkin(1) + else + self:SetSkin(0) + end + end + end + end + + else + self.Model = "models/empty.mdl" + self:SetModel(self.Model) + end + +end + +end + +function ENT:Initialize() + self.Owner = self:GetOwner() + self:DrawShadow(false) + self:AddEFlags(EFL_KEEP_ON_RECREATE_ENTITIES) + + if (file.Exists(self:GetModel(),"GAME")) then + self:AddToPlayerItems() + self.ProxyentPaintColor = self + + local item = self:GetItemData() + if item.model_player then + --print(item.model_player) + if (string.find(item.model_player,"zombie") || (string.find(item.model_player,"/all_class/all_") and !string.find(item.model_player,"all_halo")) || string.find(item.model_player,"ugc_season12") ) then + if (string.find(item.model_player,"/zombie_"..self.Owner:GetPlayerClass()..".mdl")) then + self.Owner:SetSkin(self.Owner:GetSkin()) + end + self.Model = string.Replace(string.Replace(item.model_player,"%s",self.Owner.playerclass),"demoman","demo") + else + if (string.find(item.model_player,"zombie")) then + self.Owner:SetSkin(self.Owner:GetSkin()) + end + self.Model = string.Replace(string.Replace(item.model_player,"%s",self.Owner:GetPlayerClass()),"demoman","demo") + end + elseif item.model_player_per_class then + if (item.model_player_per_class[self.Owner:GetPlayerClass()]) then + local modelperclass = item.model_player_per_class[self.Owner:GetPlayerClass()] + modelperclass = string.Replace(modelperclass,"%s",self.Owner.playerclass) + + modelperclass = string.Replace(modelperclass,"demoman","demo") + self.Model = modelperclass + else + --print(item.model_player_per_class) + PrintTable(item.model_player_per_class) + local modelperclass = tostring(item.model_player_per_class.basename) + modelperclass = string.Replace(modelperclass,"%s",self.Owner:GetPlayerClass()) + self.Model = string.Replace(modelperclass,"demoman","demo") + end + end + + if SERVER then + self:SetMoveType(MOVETYPE_NONE) + self:SetSolid(SOLID_NONE) + self:SetParent(self:GetOwner()) + + if self.Model then + self:SetModel(self.Model) + self:SetKeyValue("effects", "1") + + if item.set_sequence_to_class then + self:AddEffects(EF_NOINTERP) + self:ResetSequence(self:LookupSequence(self.Owner:GetPlayerClass())) + end + else + self:SetNoDraw(true) + self:DrawShadow(false) + end + end + end +end + +function ENT:OnRemove() + self:RemoveFromPlayerItems() +end + +function ENT:OnOwnerDeath() + self.Dead = true + self:SetNoDraw(true) + self:DrawShadow(false) + SafeRemoveEntityDelayed(self, 1) +end + + +hook.Add("PlayerHurt", "TFHatDisable2", function(pl) + for k,dringer in pairs(ents.FindByClass("tf_weapon_invis_dringer")) do + if dringer.Owner == pl and dringer.dt.Ready == true then + for _,v in pairs(ents.FindByClass("tf_wearable_item")) do + if v:GetOwner()==pl then + vself.WModel2:SetNoDraw(true) + v:DrawShadow(false) + timer.Create("Decloak", 0.001, 0, function() + if dringer.dt.Charging == false then + vself.WModel2:SetNoDraw(false) + v:DrawShadow(true) + v:SetMaterial("models/shadertest/predator") + timer.Simple(1, function() + v:SetMaterial("") + timer.Stop("Decloak") + end) + end + end) + end + end + end + end +end) + + +hook.Add("DoPlayerDeath", "DetachPlayerHat", function(pl) + for _,v in pairs(pl:GetTFItems()) do + if v.OnOwnerDeath then + v:OnOwnerDeath() + end + end +end) diff --git a/gamemodes/tf/entities/entities/tf_wearable_item_chargintard/shared.lua b/gamemodes/tf/entities/entities/tf_wearable_item_chargintard/shared.lua new file mode 100644 index 000000000..f2a0ace5c --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable_item_chargintard/shared.lua @@ -0,0 +1,488 @@ + +local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) + +ENT.Type = "anim" +ENT.Base = "tf_wearable_item" + +ENT.MeleeRange = 50 + +ENT.ForceMultiplier = 10000 +ENT.CritForceMultiplier = 10000 +ENT.ForceAddPitch = 20 +ENT.CritForceAddPitch = 0 + +ENT.DefaultBaseDamage = 0 +ENT.DamagePerHead = 10 +--ENT.MaxHeads = 5 + +ENT.BaseDamage = 0 +ENT.DamageRandomize = 0 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 + +ENT.HitPlayerSound = Sound("DemoCharge.HitFlesh") +ENT.HitPlayerRangeSound = Sound("DemoCharge.HitFleshRange") +ENT.HitWorldSound = Sound("DemoCharge.HitWorld") + +ENT.CritStartSound = Sound("DemoCharge.ChargeCritOn") +ENT.CritStopSound = Sound("DemoCharge.ChargeCritOff") + +ENT.DefaultChargeDuration = 9999 +ENT.ChargeCooldownDuration = 0 + +ENT.ChargeSteerConstraint = 0.7 + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Bool", 0, "Charging") + self:DTVar("Bool", 1, "Ready") + self:DTVar("Float", 0, "NextEndCharge") + self:DTVar("Float", 1, "AdditiveChargeDuration") + self:DTVar("Float", 2, "ChargeCooldownMultiplier") +end + +if CLIENT then + +ENT.GlobalCustomHUD = {HudDemomanCharge = true} + +function ENT:InitializeCModel(weapon) + local vm = self:GetOwner():GetViewModel() + + if IsValid(vm) then + self.CModel = ClientsideModel(self.Model) + if not IsValid(self.CModel) then return end + + self.CModel:SetPos(vm:GetPos()) + self.CModel:SetAngles(vm:GetAngles()) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) + self.CModel:SetParent(vm) + self.CModelself.WModel2:SetNoDraw(true) + end +end + +function ENT:Think() + if CLIENT then + if (self:GetItemData().image_inventory and self:GetItemData().item_iconname) then + killicon.Add( self:GetItemData().item_iconname, self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + elseif (self:GetItemData().image_inventory) then + killicon.Add( string.Replace(self:GetClass(),"tf_weapon_",""), self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + end + end + self.BaseClass.Think(self) + + if not self.Initialized then + self.Initialized = true + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + if self:GetOwner() == LocalPlayer() then + HudDemomanPipes:SetProgress(1) + HudDemomanPipes:SetChargeStatus(0) + end + end + end + + if self:GetOwner() == LocalPlayer() then + if self.dt.Charging then + if not self.ChargeDuration then + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 then + HudDemomanPipes:SetChargeStatus(3) + elseif p0 < 0.66 then + HudDemomanPipes:SetChargeStatus(2) + else + HudDemomanPipes:SetChargeStatus(1) + end + + HudDemomanPipes:SetProgress(p) + else + HudDemomanPipes:SetChargeStatus(0) + if self.dt.Ready then + HudDemomanPipes:SetProgress(1) + else + self.ChargeDuration = nil + + local cooldown = self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + local p = 1 - (self.dt.NextEndCharge - CurTime()) / cooldown + HudDemomanPipes:SetProgress(p) + end + end + end +end + +hook.Add("PlayerBindPress", "TargeChargeBindPress", function(pl, cmd, down) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + if string.find(cmd, "+duck") then + return true + end + end +end) + +hook.Add("CreateMove", "TargeChargeCreateMove", function(cmd) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + local ang = cmd:GetViewAngles() + if LocalPlayer().SavedTargeAngle then + local oldyaw = LocalPlayer().SavedTargeAngle.y + + ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) + cmd:SetViewAngles(ang) + end + LocalPlayer().SavedTargeAngle = ang + else + LocalPlayer().SavedTargeAngle = nil + end +end) + +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanChargeThrough(ent) + if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then + return (ent:GetPhysicsObject():IsValid(self.WModel2) and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or + (ent:GetMaxHealth() > 1) + elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then + return ent:GetMaxHealth() > 1 + elseif ent:GetClass() == "func_breakable" then + return true + end + + return false +end + +function ENT:MeleeAttack() + if not IsValid(self:GetOwner()) then return end + + local pos = self:GetOwner():GetShootPos() + local ang = self:GetOwner():EyeAngles() + ang.p = 0 + local endpos = pos + ang:Forward() * self.MeleeRange + + local hitent, hitpos, dmginfo + + self:GetOwner():SetJumpPower(self.PlayerJumpPower) + + --self:GetOwner():LagCompensation(true) + + local tr = util.TraceLine { + start = pos, + endpos = endpos, + filter = self:GetOwner() + } + + if not tr.Hit then + local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) + + tr = util.TraceHull { + start = pos, + endpos = endpos, + filter = self:GetOwner(), + + mins = mins, + maxs = maxs, + } + end + + --self:GetOwner():LagCompensation(false) + + if tr.Entity and tr.Entity:IsValid(self.WModel2) then + if self:GetOwner():IsFriendly(tr.Entity) or self:GetOwner():GetSolid() == SOLID_NONE then + return + end + + local ang = self:GetOwner():EyeAngles() + local dir = ang:Forward() + hitpos = tr.Entity:NearestPoint(self:GetOwner():GetShootPos()) - 2 * dir + tr.HitPos = hitpos + + if self:GetOwner():CanDamage(tr.Entity) then + local pitch, mul, dmgtype + + dmgtype = DMG_SLASH + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() + + --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self:GetOwner():GetNWInt("Heads"), self.MaxHeads) + self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self:GetOwner():GetNWInt("Heads") + + local dmg = tf_util.CalculateDamage(self, hitpos) + + dmginfo = DamageInfo() + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce(dmg * force_dir * mul) + tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = tr.Entity:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + tr.Entity:SetPhysicsAttacker(self:GetOwner()) + end + end + + if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then + if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then + sound.Play(self.HitPlayerRangeSound, self:GetOwner():GetPos()) + self.NextRangeSound = CurTime() + 1 + else + sound.Play(self.HitPlayerSound, self:GetOwner():GetPos()) + end + else + sound.Play(self.HitWorldSound, self:GetOwner():GetPos()) + end + elseif tr.HitWorld then + sound.Play(self.HitWorldSound, self:GetOwner():GetPos()) + else + return + end + + util.ScreenShake(self:GetPos(), 10, 5, 1, 512) + + if not tr.HitWorld then + if self:GetOwner().TempAttributes.ChargeIsUnstoppable then + return + end + + if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then + --print("charge hit", tr.Entity, tr.Entity:Health(), tr.Entity:GetMaxHealth(), self:CanChargeThrough(tr.Entity)) + if self:CanChargeThrough(tr.Entity) then + return + --[[elseif tr.Entity:GetClass() == "prop_door_rotating" then + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetBodygroup(1, 1) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + tr.Entity:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return + elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) + and tr.Entity:GetParent():GetClass()=="func_door_rotating" then + local door = tr.Entity:GetParent() + + local p = ents.Create("prop_physics") + p:SetModel(door:GetModel()) + p:SetSkin(door:GetSkin()) + p:SetPos(door:GetPos()) + p:SetAngles(door:GetAngles()) + door:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return]] + end + end + end + + local vel = self:GetOwner():GetVelocity() + local right = self:GetOwner():EyeAngles():Right() + local side = vel:DotProduct(right) + + self:GetOwner():SetVelocity(-side * right) + + self:StopCharging() +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + end + self.dt.Charging = false + self.dt.Ready = true + self.dt.ChargeCooldownMultiplier = 1 +end + +function ENT:StartCharging() + if not self.ChargeDuration then + self.dt.AdditiveChargeDuration = self:GetOwner().TempAttributes.AdditiveChargeDuration or 0 + self.dt.ChargeCooldownMultiplier = self:GetOwner().TempAttributes.ChargeCooldownMultiplier or 1 + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + self.dt.Ready = false + self.dt.Charging = true + self.dt.NextEndCharge = CurTime() + self.ChargeDuration + self.SpeedBonus = 2.69 + self:GetOwner():ResetClassSpeed() + self:GetOwner():SetJumpPower(0) + + if not self.ChargeSoundEnt then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.ChargeSoundEnt = CreateSound(self:GetOwner(), "Heavy.BattleCry05",rf) + end + + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Play() + end +end + +function ENT:StopCharging() + self.ChargeDuration = nil + self.dt.Ready = false + self.dt.Charging = false + self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + self.SpeedBonus = nil + self:GetOwner():ResetClassSpeed() + + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Stop() + self.ChargeSoundEnt = nil + end + + if self.ChargeState then + if self.ChargeState == 2 then + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Stop() + self.CritStartSoundEnt = nil + self:GetOwner():EmitSound(self.CritStopSound) + end + end + + self.NextEndCritBoost = CurTime() + 0.4 + end +end + +function ENT:OnMeleeSwing() + if self.dt.Charging then + self:StopCharging() + end +end + +function ENT:Think() + if not IsValid(self:GetOwner()) then return end + + if self.dt.Charging then + local vel = self:GetOwner():GetVelocity():LengthSqr() + + if self:GetOwner():Crouching() then + self:GetOwner():ConCommand("-duck") + end + + if not self.MaxSpeed or vel > self.MaxSpeed then + self.MaxSpeed = vel + end + + local cap = self.MaxSpeed * 0.8 * 0.8 + + if vel < cap then + ----print("below minimum speed, performing trace check") + self:MeleeAttack() + if not self.dt.Charging then + return + end + end + + if CurTime() > self.dt.NextEndCharge then + self:StopCharging() + return + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 and self.ChargeState == 1 then + GAMEMODE:StartCritBoost(self:GetOwner(), "melee") + GAMEMODE:StartCritBoost(self:GetOwner(), "primary") + self.ChargeState = 2 + + if not self.CritStartSoundEnt then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.CritStartSoundEnt = CreateSound(self, self.CritStartSound,rf) + end + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Play() + end + elseif p0 < 0.66 and not self.ChargeState then + GAMEMODE:StartCritBoost(self:GetOwner(), "melee") + GAMEMODE:StartCritBoost(self:GetOwner(), "primary") + self.ChargeState = 1 + end + elseif not self.dt.Ready then + if CurTime() > self.dt.NextEndCharge then + self.dt.Ready = true + umsg.Start("PlayChargeReadySound", self:GetOwner()) + umsg.End() + end + + self.MaxSpeed = nil + self.ChargeState = nil + end + + if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then + GAMEMODE:StopCritBoost(self:GetOwner()) + self.NextEndCritBoost = nil + end + + if self:GetOwner():KeyDown(IN_ATTACK2) and self.dt.Ready then + if self:GetOwner():OnGround() then + if self:GetOwner():Crouching() then + self:GetOwner():ConCommand("-duck") + end + self:StartCharging() + end + end + + self:NextThink(CurTime()) + return true +end + +end + +hook.Add("Move", "TargeChargeMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + move:SetForwardSpeed(pl:GetRealClassSpeed()) + move:SetSideSpeed(0) + end +end) + +hook.Add("SetupMove", "TargeChargeSetupMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + -- This is already done clientside by CreateMove + if SERVER then + local ang = pl:EyeAngles() + if pl.SavedTargeAngle then + local oldyaw = pl.SavedTargeAngle.y + + ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) + pl:SetEyeAngles(ang) + end + pl.SavedTargeAngle = ang + end + + move:SetSideSpeed(0) + else + pl.SavedTargeAngle = nil + end +end) diff --git a/gamemodes/tf/entities/entities/tf_wearable_item_demoshield/shared.lua b/gamemodes/tf/entities/entities/tf_wearable_item_demoshield/shared.lua new file mode 100644 index 000000000..fa0da5666 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable_item_demoshield/shared.lua @@ -0,0 +1,546 @@ + +local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) + +ENT.Type = "anim" +ENT.Base = "tf_wearable_item" + +ENT.MeleeRange = 50 + +ENT.ForceMultiplier = 10000 +ENT.CritForceMultiplier = 10000 +ENT.ForceAddPitch = 0 +ENT.CritForceAddPitch = 0 + +ENT.DefaultBaseDamage = 50 +ENT.DamagePerHead = 10 +--ENT.MaxHeads = 5 + +ENT.BaseDamage = 50 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 + +ENT.HitPlayerSound = Sound("DemoCharge.HitFlesh") +ENT.HitPlayerRangeSound = Sound("DemoCharge.HitFleshRange") +ENT.HitWorldSound = Sound("DemoCharge.HitWorld") + +ENT.CritStartSound = Sound("DemoCharge.ChargeCritOn") +ENT.CritStopSound = Sound("DemoCharge.ChargeCritOff") + +ENT.DefaultChargeDuration = 1.5 +ENT.ChargeCooldownDuration = 12 + +ENT.ChargeSteerConstraint = 0.7 + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Bool", 0, "Charging") + self:DTVar("Bool", 1, "Ready") + self:DTVar("Float", 0, "NextEndCharge") + self:DTVar("Float", 1, "AdditiveChargeDuration") + self:DTVar("Float", 2, "ChargeCooldownMultiplier") +end + +if CLIENT then + +ENT.GlobalCustomHUD = {HudDemomanCharge = true} + +function ENT:InitializeCModel(weapon) + local vm = self:GetOwner():GetViewModel() + + if IsValid(vm) then + self.CModel = ClientsideModel(self.Model) + if not IsValid(self.CModel) then return end + + self.CModel:SetPos(vm:GetPos()) + self.CModel:SetAngles(vm:GetAngles()) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) + self.CModel:SetParent(vm) + self.CModelself.WModel2:SetNoDraw(true) + end +end + +function ENT:Think() + self.BaseClass.Think(self) + + if not self.Initialized then + self.Initialized = true + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + if self:GetOwner() == LocalPlayer() then + HudDemomanPipes:SetProgress(1) + HudDemomanPipes:SetChargeStatus(0) + end + end + end + + if self:GetOwner() == LocalPlayer() then + if self.dt.Charging then + if not self.ChargeDuration then + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 then + HudDemomanPipes:SetChargeStatus(3) + elseif p0 < 0.66 then + HudDemomanPipes:SetChargeStatus(2) + else + HudDemomanPipes:SetChargeStatus(1) + end + + HudDemomanPipes:SetProgress(p) + else + HudDemomanPipes:SetChargeStatus(0) + if self.dt.Ready then + HudDemomanPipes:SetProgress(1) + else + self.ChargeDuration = nil + + local cooldown = self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + local p = 1 - (self.dt.NextEndCharge - CurTime()) / cooldown + HudDemomanPipes:SetProgress(p) + end + end + end +end + +hook.Add("PlayerBindPress", "TargeChargeBindPress", function(pl, cmd, down) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + if string.find(cmd, "+duck") then + return true + end + end +end) + +hook.Add("CreateMove", "TargeChargeCreateMove", function(cmd) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + local ang = cmd:GetViewAngles() + if LocalPlayer().SavedTargeAngle then + local oldyaw = LocalPlayer().SavedTargeAngle.y + + ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) + cmd:SetViewAngles(ang) + end + LocalPlayer().SavedTargeAngle = ang + else + LocalPlayer().SavedTargeAngle = nil + end +end) + +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanChargeThrough(ent) + if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then + return (ent:GetPhysicsObject():IsValid(self.WModel2) and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or + (ent:GetMaxHealth() > 1) + elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then + return ent:GetMaxHealth() > 1 + elseif ent:GetClass() == "func_breakable" then + return true + end + + return false +end + +-- Open the area portal linked to this door entity +local function OpenLinkedAreaPortal(ent) + local name = ent:GetName() + if not name or name == "" then return end + + for _,v in pairs(ents.FindByClass("func_areaportal")) do + if v.TargetDoorName == name then + v:Fire("Open") + end + end +end + +function ENT:MeleeAttack() + if not IsValid(self:GetOwner()) then return end + + local pos = self:GetOwner():GetShootPos() + local ang = self:GetOwner():EyeAngles() + ang.p = 0 + local endpos = pos + ang:Forward() * self.MeleeRange + + local hitent, hitpos, dmginfo, dir + + --self:GetOwner():LagCompensation(true) + + local tr = util.TraceLine { + start = pos, + endpos = endpos, + filter = self:GetOwner() + } + + if not tr.Hit then + local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) + + tr = util.TraceHull { + start = pos, + endpos = endpos, + filter = self:GetOwner(), + + mins = mins, + maxs = maxs, + } + end + + --self:GetOwner():LagCompensation(false) + + if tr.Entity and tr.Entity:IsValid(self.WModel2) then + if self:GetOwner():IsFriendly(tr.Entity) or self:GetOwner():GetSolid() == SOLID_NONE then + return + end + + local ang = self:GetOwner():EyeAngles() + dir = ang:Forward() + hitpos = tr.Entity:NearestPoint(self:GetOwner():GetShootPos()) - 2 * dir + tr.HitPos = hitpos + + if self:GetOwner():CanDamage(tr.Entity) then + local pitch, mul, dmgtype + + dmgtype = DMG_SLASH + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() + + --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self:GetOwner():GetNWInt("Heads"), self.MaxHeads) + self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self:GetOwner():GetNWInt("Heads") + + local dmg = tf_util.CalculateDamage(self, hitpos) + + dmginfo = DamageInfo() + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce(dmg * force_dir * mul) + tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = tr.Entity:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + tr.Entity:SetPhysicsAttacker(self:GetOwner()) + end + end + + if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then + if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then + sound.Play(self.HitPlayerRangeSound, self:GetOwner():GetPos()) + self.NextRangeSound = CurTime() + 1 + else + sound.Play(self.HitPlayerSound, self:GetOwner():GetPos()) + end + else + sound.Play(self.HitWorldSound, self:GetOwner():GetPos()) + end + elseif tr.HitWorld then + sound.Play(self.HitWorldSound, self:GetOwner():GetPos()) + else + return + end + + util.ScreenShake(self:GetPos(), 10, 5, 1, 512) + + if not tr.HitWorld then + if self:GetOwner().TempAttributes.ChargeIsUnstoppable then + return + end + + if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then + if self:CanChargeThrough(tr.Entity) then + return + elseif tr.Entity:GetClass() == "prop_door_rotating" then + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetBodygroup(1, 1) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + + OpenLinkedAreaPortal(tr.Entity) + tr.Entity:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return + elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) + and tr.Entity:GetParent():GetClass()=="func_door_rotating" then + local door = tr.Entity:GetParent() + + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + + OpenLinkedAreaPortal(door) + door:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return + end + end + end + + local vel = self:GetOwner():GetVelocity() + local right = self:GetOwner():EyeAngles():Right() + local side = vel:DotProduct(right) + + self:GetOwner():SetVelocity(-side * right) + + self:StopCharging() +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + end + self.dt.Charging = false + self.dt.Ready = true + self.dt.ChargeCooldownMultiplier = 1 +end + +function ENT:StartCharging() + if not self.ChargeDuration then + self.dt.AdditiveChargeDuration = self:GetOwner().TempAttributes.AdditiveChargeDuration or 0 + self.dt.ChargeCooldownMultiplier = self:GetOwner().TempAttributes.ChargeCooldownMultiplier or 1 + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + self.dt.Ready = false + self.dt.Charging = true + self.dt.NextEndCharge = CurTime() + self.ChargeDuration + self.SpeedBonus = 2.69 + self:GetOwner():ResetClassSpeed() + self:GetOwner():SetJumpPower(0) + + + if SERVER then + ParticleEffectAttach( 'warp_version', PATTACH_ABSORIGIN_FOLLOW, self.Owner, 0) + + local att = 1 + local att2 = 1 + local att3 = 1 + local att4 = 1 + local att5 = 1 + if (self:GetOwner():LookupAttachment("back_upper")) then + + att = self:GetOwner():LookupAttachment("back_upper") + att2 = self:GetOwner():LookupAttachment("back_lower") + att3 = self:GetOwner():LookupAttachment("foot_R") + att4 = self:GetOwner():LookupAttachment("foot_L") + att5 = self:GetOwner():LookupAttachment("hand_L") + + end + if self:GetOwner():Team() == TEAM_BLU then + self:GetOwner().trail = util.SpriteTrail( self:GetOwner(), att, Color( 255, 255, 255 ), false, 12, 12, 0.5, 1 / ( 96 * 1 ), "effects/beam001_blu" ) + self:GetOwner().trail2 = util.SpriteTrail( self:GetOwner(), att2, Color( 255, 255, 255 ), false, 16, 16, 0.5, 1 / ( 96 * 1 ), "effects/beam001_blu" ) + self:GetOwner().trail3 = util.SpriteTrail( self:GetOwner(), att3, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail4 = util.SpriteTrail( self:GetOwner(), att4, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail5 = util.SpriteTrail( self:GetOwner(), att5, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_blu" ) + else + self:GetOwner().trail = util.SpriteTrail( self:GetOwner(), att, Color( 255, 255, 255 ), false, 12, 12, 0.5, 1 / ( 96 * 1 ), "effects/beam001_red" ) + self:GetOwner().trail2 = util.SpriteTrail( self:GetOwner(), att2, Color( 255, 255, 255 ), false, 16, 16, 0.5, 1 / ( 96 * 1 ), "effects/beam001_red" ) + self:GetOwner().trail3 = util.SpriteTrail( self:GetOwner(), att3, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail4 = util.SpriteTrail( self:GetOwner(), att4, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail5 = util.SpriteTrail( self:GetOwner(), att5, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_red" ) + end + end + if not self.ChargeSoundEnt then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.ChargeSoundEnt = CreateSound(self:GetOwner(), "DemoCharge.Charging",rf) + end + + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Play() + end +end + +function ENT:StopCharging() + self.ChargeDuration = nil + self.dt.Ready = false + self.dt.Charging = false + self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + self.SpeedBonus = nil + self:GetOwner():ResetClassSpeed() + self:GetOwner():SetJumpPower(220) + + self:GetOwner():EmitSound(self.CritStopSound) + self:GetOwner():StopParticles() + + if self.ChargeSoundEnt then + self.ChargeSoundEnt = nil + end + if SERVER then + if (IsValid(self:GetOwner().trail)) then + self:GetOwner().trail:Remove() + self:GetOwner().trail2:Remove() + self:GetOwner().trail3:Remove() + self:GetOwner().trail4:Remove() + self:GetOwner().trail5:Remove() + end + end + if self.ChargeState then + if self.ChargeState == 2 then + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Stop() + self.CritStartSoundEnt = nil + end + end + + self.NextEndCritBoost = CurTime() + 0.4 + end +end + +function ENT:OnMeleeSwing() + if self.dt.Charging then + if (self:GetOwner():GetPlayerClass() != "samuraidemo") then + self:StopCharging() + end + end +end + +function ENT:Think() + if not IsValid(self:GetOwner()) then return end + + if CLIENT then + if (self:GetItemData().image_inventory and self:GetItemData().item_iconname) then + killicon.Add( self:GetItemData().item_iconname, self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + elseif (self:GetItemData().image_inventory) then + killicon.Add( string.Replace(self:GetClass(),"tf_weapon_",""), self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + end + end + self:GetOwner().IsCharging = self.dt.Charging + if self.dt.Charging then + local vel = self:GetOwner():GetVelocity():LengthSqr() + + if self:GetOwner():Crouching() then + self:GetOwner():ConCommand("-duck") + end + if !self:GetOwner():OnGround() then + self:GetOwner():SetVelocity(self:GetOwner():GetAimVector() * 50) + end + if not self.MaxSpeed or vel > self.MaxSpeed then + self.MaxSpeed = vel + end + + local cap = self.MaxSpeed * 0.8 * 0.8 + + if vel < cap then + ----print("below minimum speed, performing trace check") + self:MeleeAttack() + if not self.dt.Charging then + return + end + end + + if CurTime() > self.dt.NextEndCharge then + self:StopCharging() + return + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 and self.ChargeState == 1 then + GAMEMODE:StartCritBoost(self:GetOwner(), "melee") + self.ChargeState = 2 + + if not self.CritStartSoundEnt then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.CritStartSoundEnt = CreateSound(self, self.CritStartSound,rf) + end + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Play() + end + elseif p0 < 0.66 and not self.ChargeState then + GAMEMODE:StartCritBoost(self:GetOwner(), "melee") + self.ChargeState = 1 + end + + elseif not self.dt.Ready then + if CurTime() > self.dt.NextEndCharge then + self.dt.Ready = true + umsg.Start("PlayChargeReadySound", self:GetOwner()) + umsg.End() + end + + self.MaxSpeed = nil + self.ChargeState = nil + end + + if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then + GAMEMODE:StopCritBoost(self:GetOwner()) + self.NextEndCritBoost = nil + end + + if self:GetOwner():KeyDown(IN_ATTACK2) and self.dt.Ready then + if (self:GetOwner():HasPlayerState(PLAYERSTATE_STUNNED)) then return end + if self:GetOwner():Crouching() then + self:GetOwner():ConCommand("-duck") + end + self:StartCharging() + end + + self:NextThink(CurTime()) + return true +end + +end + +hook.Add("Move", "TargeChargeMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + move:SetForwardSpeed(pl:GetRealClassSpeed()) + move:SetSideSpeed(0) + end +end) + +hook.Add("SetupMove", "TargeChargeSetupMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + -- This is already done clientside by CreateMove + if SERVER then + local ang = pl:EyeAngles() + if pl.SavedTargeAngle then + local oldyaw = pl.SavedTargeAngle.y + + ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) + pl:SetEyeAngles(ang) + end + pl.SavedTargeAngle = ang + end + + move:SetSideSpeed(0) + else + pl.SavedTargeAngle = nil + end +end) diff --git a/gamemodes/tf/entities/entities/tf_wearable_item_demoshield_l4d/shared.lua b/gamemodes/tf/entities/entities/tf_wearable_item_demoshield_l4d/shared.lua new file mode 100644 index 000000000..b63ebbccb --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable_item_demoshield_l4d/shared.lua @@ -0,0 +1,685 @@ + +local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) + +ENT.Type = "anim" +ENT.Base = "tf_wearable_item" + +ENT.MeleeRange = 50 + +ENT.ForceMultiplier = 10000 +ENT.CritForceMultiplier = 10000 +ENT.ForceAddPitch = 0 +ENT.CritForceAddPitch = 0 + +ENT.DefaultBaseDamage = 15 +ENT.DamagePerHead = 10 +--ENT.MaxHeads = 5 + +ENT.BaseDamage = 15 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 + +ENT.HitPlayerSound = Sound("DemoCharge.HitFlesh") +ENT.HitPlayerRangeSound = Sound("DemoCharge.HitFleshRange") +ENT.HitWorldSound = Sound("DemoCharge.HitWorld") + +ENT.CritStartSound = "" +ENT.CritStopSound = "" + +ENT.DefaultChargeDuration = 2.5 +ENT.ChargeCooldownDuration = 20 + +ENT.ChargeSteerConstraint = GetConVar( "sensitivity" ) + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Bool", 0, "Charging") + self:DTVar("Bool", 1, "Ready") + self:DTVar("Float", 0, "NextEndCharge") + self:DTVar("Float", 1, "AdditiveChargeDuration") + self:DTVar("Float", 2, "ChargeCooldownMultiplier") +end + +if CLIENT then + +ENT.GlobalCustomHUD = {HudDemomanCharge = true} + +function ENT:InitializeCModel(weapon) + local vm = self:GetOwner():GetViewModel() + + if IsValid(vm) then + self.CModel = ClientsideModel(self.Model) + if not IsValid(self.CModel) then return end + + self.CModel:SetPos(vm:GetPos()) + self.CModel:SetAngles(vm:GetAngles()) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) + self.CModel:SetParent(vm) + self.CModel:SetNoDraw(true) + end +end + +function ENT:Think() + self.BaseClass.Think(self) + + if not self.Initialized then + self.Initialized = true + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + if self:GetOwner() == LocalPlayer() then + HudDemomanPipes:SetProgress(1) + HudDemomanPipes:SetChargeStatus(0) + end + end + end + + if self:GetOwner() == LocalPlayer() then + if self.dt.Charging then + if not self.ChargeDuration then + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 then + HudDemomanPipes:SetChargeStatus(3) + elseif p0 < 0.66 then + HudDemomanPipes:SetChargeStatus(2) + else + HudDemomanPipes:SetChargeStatus(1) + end + + HudDemomanPipes:SetProgress(p) + else + HudDemomanPipes:SetChargeStatus(0) + if self.dt.Ready then + HudDemomanPipes:SetProgress(1) + else + self.ChargeDuration = nil + + local cooldown = self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + local p = 1 - (self.dt.NextEndCharge - CurTime()) / cooldown + HudDemomanPipes:SetProgress(p) + end + end + end +end + +hook.Add("PlayerBindPress", "TargeChargeBindPress", function(pl, cmd, down) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + if string.find(cmd, "+jump") then + return true + elseif string.find(cmd, "+duck") then + return true + end + end +end) + +hook.Add("CreateMove", "TargeChargeCreateMove", function(cmd) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + local ang = cmd:GetViewAngles() + if LocalPlayer().SavedTargeAngle then + local oldyaw = LocalPlayer().SavedTargeAngle.y + end + LocalPlayer().SavedTargeAngle = ang + else + LocalPlayer().SavedTargeAngle = nil + end +end) + +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanChargeThrough(ent) + if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then + return (ent:GetPhysicsObject():IsValid(self.WModel2) and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or + (ent:GetMaxHealth() > 1) + elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then + return ent:GetMaxHealth() > 1 + elseif ent:GetClass() == "func_breakable" then + return true + end + + return false +end + +-- Open the area portal linked to this door entity +local function OpenLinkedAreaPortal(ent) + local name = ent:GetName() + if not name or name == "" then return end + + for _,v in pairs(ents.FindByClass("func_areaportal")) do + if v.TargetDoorName == name then + v:Fire("Open") + end + end +end + +function ENT:MeleeAttack() + if not IsValid(self:GetOwner()) then return end + if self.ChargeState == 3 then return end + + local pos = self:GetOwner():GetShootPos() + local ang = self:GetOwner():EyeAngles() + ang.p = 0 + local endpos = pos + ang:Forward() * self.MeleeRange + + local hitent, hitpos, dmginfo, dir + + --self:GetOwner():LagCompensation(true) + + local tr = util.TraceLine { + start = pos, + endpos = endpos, + filter = self:GetOwner() + } + + if not tr.Hit then + local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) + + tr = util.TraceHull { + start = pos, + endpos = endpos, + filter = self:GetOwner(), + + mins = mins, + maxs = maxs, + } + end + + --self:GetOwner():LagCompensation(false) + + if tr.Entity and tr.Entity:IsValid(self.WModel2) then + if self:GetOwner():IsFriendly(tr.Entity) or self:GetOwner():GetSolid() == SOLID_NONE then + return + end + + local ang = self:GetOwner():EyeAngles() + dir = ang:Forward() + hitpos = tr.Entity:NearestPoint(self:GetOwner():GetShootPos()) - 2 * dir + tr.HitPos = hitpos + + if self:GetOwner():CanDamage(tr.Entity) && !tr.Entity.HitByCharger then + local pitch, mul, dmgtype + + dmgtype = DMG_SLASH + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() + + --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self:GetOwner():GetNWInt("Heads"), self.MaxHeads) + self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self:GetOwner():GetNWInt("Heads") + + local dmg = 20 + + dmginfo = DamageInfo() + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce(dmg * force_dir * mul) + tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = tr.Entity:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + tr.Entity:SetPhysicsAttacker(self:GetOwner()) + end + if (tr.Entity:Health() < 1) then + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end + end + + if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then + if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then + sound.Play("player/charger/hit/charger_smash_0"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + self.NextRangeSound = CurTime() + 1 + else + self.ChargeState = 3 + if (tr.Entity:Health() < 20) then return end + tr.Entity:EmitSound("Event.ChargerHit") + if (tr.Entity:IsPlayer()) then + net.Start("ActivateTauntCam") + net.Send(tr.Entity) + tr.Entity:SendLua('LocalPlayer():EmitSound("Event.ChargerSmash")') + end + sound.Play("player/charger/hit/charger_smash_0"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + tr.Entity:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + local ply = tr.Entity + local ent = tr.Entity + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(self:GetOwner():GetSkin()) + animent:SetPos(self:GetOwner():GetPos()) + animent:SetAngles(self:GetOwner():GetAngles() + Angle(0,180,0)) + animent:Spawn() + animent:Activate() + ply.RagdollEntity = animent + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Charger_carried" ) + animent:SetPlaybackRate( 1 ) + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(ply:GetModel()) + animent2:SetSkin(ply:GetSkin()) + animent2:SetPos(ply:GetPos()) + animent2:SetAngles(ply:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + timer.Create("CheckIfChargerOrVictimDead"..self:GetOwner():EntIndex(), 0, 0, function() + local v = tr.Entity + if v:Health() <= 1 then + timer.Stop("CheckIfChargerOrVictimDead"..self:GetOwner():EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART"..self:GetOwner():EntIndex()) + timer.Stop("ChargerAnimLoop"..self:GetOwner():EntIndex()) + v:StopSound("Event.ChargerSlam") + self:GetOwner():SetNWBool("Taunting", false) + self:GetOwner():SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + v:SetNoDraw(false) + --v:SetParent() + v:SetCollisionGroup(COLLISION_GROUP_PLAYER) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + net.Start("DeActivateTauntCam") + net.Send(v) + if (IsValid(animent)) then + animent:Remove() + end + if (IsValid(animent2)) then + animent2:Remove() + end + return + end + if self:GetOwner():Health() <= 1 then + timer.Stop("CheckIfChargerOrVictimDead"..self:GetOwner():EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART"..self:GetOwner():EntIndex()) + timer.Stop("ChargerAnimLoop"..self:GetOwner():EntIndex()) + v:StopSound("Event.ChargerSlam") + + animent.IsBeingPounded = false + animent:SetParent() + animent:SetCycle( 0 ) + animent:SetSequence( "GetUpFrom_Charger" ) + timer.Simple(2.5, function() + + v:SetNWBool("Taunting", false) + v:SetNoDraw(false) + v:SetCollisionGroup(COLLISION_GROUP_PLAYER) + --v:SetParent() + net.Start("DeActivateTauntCam") + net.Send(v) + if (IsValid(animent)) then + animent:Remove() + end + if (IsValid(animent2)) then + animent2:Remove() + end + + end) + return + end + end) + local wep = self + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + if (self.IsBeingPounded) then + wep.Owner:DoAnimationEvent("Charger_pound") + end + self:SetCycle(0) + end + if (IsValid(wep) and IsValid(wep.Owner)) then + self:SetAngles(wep.Owner:GetAngles() + Angle(0,180,0)) + self:SetPos(wep.Owner:GetPos()) + tr.Entity:SetPos(wep.Owner:GetPos()) + tr.Entity:SetAngles(wep.Owner:GetAngles()) + tr.Entity:SetNoDraw(true) + end + self:NextThink( CurTime() ) + return true + end + ply.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + timer.Simple((self.dt.NextEndCharge - CurTime()) / self.ChargeDuration, function() + timer.Stop("ChargingChargerAnimLoop"..self:GetOwner():EntIndex()) + if (tr.Entity:Health() < 20) then return end + self:StopCharging() + self:GetOwner():DoAnimationEvent("Charger_slam_ground") + sound.Play("physics/concrete/boulder_impact_hard"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + animent:SetSequence( "Charger_slammed_ground" ) + animent:SetCycle(0) + timer.Simple(0.8,function() + + for k,v in pairs(ents.FindInSphere(tr.Entity:GetPos(), 110)) do + if v:Health() >= 0 then + if v:IsTFPlayer() and v:EntIndex() != self:GetOwner():EntIndex() and v:EntIndex() == tr.Entity:EntIndex() and not v:IsFriendly(self:GetOwner()) then + + self:GetOwner():DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED) + if self:GetOwner():WaterLevel() ~= 0 then return end + self:GetOwner():SetNWBool("Taunting", true) + self:GetOwner():SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self:GetOwner()) + v:SetPos(self:GetOwner():GetPos()) + v:SetAngles(self:GetOwner():GetAngles()) + --v:SetParent(self:GetOwner(), self:GetOwner():LookupAttachment("rhand")) + v:SetNWBool("Taunting", true) + animent:SetCycle(0) + animent:SetSequence( "Charger_pounded" ) + animent.IsBeingPounded = true + v.RagdollEntity = animent + v.IsBeingPoundedByCharger = true + if (v:IsPlayer()) then + v:SendLua('LocalPlayer():EmitSound("Event.ChargerSlam")') + end + v:EmitSound("Event.ChargerSlamHit", 85) + self:GetOwner():EmitSound("player/charger/voice/attack/charger_pummel0"..math.random(1,4)..".wav",85) + self:GetOwner():DoAnimationEvent("Charger_pound") + + ent:SetPos(ent:GetPos() + Vector(0,0,30)) + --ent:DoAnimationEvent(ACT_MP_SWIM_IDLE) + ent:SetMoveType(MOVETYPE_FLYGRAVITY) + ent:SetNoDraw(true) + timer.Create("ChargerAnimLoop"..self:GetOwner():EntIndex(), 1.7, 0, function() + end) + timer.Create("RIPTHATASSHOLEAPART"..self:GetOwner():EntIndex(), 0.7, 0, function() + self:GetOwner():EmitSound("player/charger/voice/attack/charger_pummel0"..math.random(1,4)..".wav",85) + timer.Adjust("RIPTHATASSHOLEAPART"..self:GetOwner():EntIndex(), 1.7) + timer.Simple(0.25, function() + v:TakeDamage(15, self:GetOwner(), self) + v:EmitSound("player/charger/hit/charger_smash_0"..math.random(1,3)..".wav", 85, 100) + end) + end) + end + end + end + end) + end) + end + else + timer.Simple(0.8, function() + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end) + self:GetOwner():DoAnimationEvent("Shoved_Backward") + self:GetOwner():EmitSound("ChargerZombie.Stagger") + sound.Play("physics/concrete/boulder_impact_hard"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + self:StopCharging() + timer.Stop("ChargingChargerAnimLoop"..self:GetOwner():EntIndex()) + end + elseif tr.HitWorld then + timer.Simple(0.8, function() + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end) + self:GetOwner():DoAnimationEvent("Shoved_Backward") + self:GetOwner():EmitSound("ChargerZombie.Stagger") + sound.Play("physics/concrete/boulder_impact_hard"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + self:StopCharging() + timer.Stop("ChargingChargerAnimLoop"..self:GetOwner():EntIndex()) + else + return + end + + util.ScreenShake(self:GetPos(), 10, 5, 1, 512) + + if not tr.HitWorld then + if self:GetOwner().TempAttributes.ChargeIsUnstoppable then + return + end + + if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then + if self:CanChargeThrough(tr.Entity) then + return + elseif tr.Entity:GetClass() == "prop_door_rotating" then + timer.Simple(0.8, function() + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end) + self:GetOwner():DoAnimationEvent("Shoved_Backward") + self:GetOwner():EmitSound("ChargerZombie.Stagger") + sound.Play("physics/concrete/boulder_impact_hard"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + self:StopCharging() + timer.Stop("ChargingChargerAnimLoop"..self:GetOwner():EntIndex()) + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetBodygroup(1, 1) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + + OpenLinkedAreaPortal(tr.Entity) + tr.Entity:Remove() + timer.Simple(0.8, function() + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end) + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return + elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) + and tr.Entity:GetParent():GetClass()=="func_door_rotating" then + timer.Simple(0.8, function() + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end) + self:GetOwner():DoAnimationEvent("Shoved_Backward") + self:GetOwner():EmitSound("ChargerZombie.Stagger") + sound.Play("physics/concrete/boulder_impact_hard"..math.random(1,3)..".wav", self:GetOwner():GetPos()) + self:StopCharging() + timer.Stop("ChargingChargerAnimLoop"..self:GetOwner():EntIndex()) + local door = tr.Entity:GetParent() + + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + + OpenLinkedAreaPortal(door) + door:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return + end + end + end + + local vel = self:GetOwner():GetVelocity() + local right = self:GetOwner():EyeAngles():Right() + local side = vel:DotProduct(right) + + self:GetOwner():SetVelocity(-side * right) +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + end + self.dt.Charging = false + self.dt.Ready = true + self.dt.ChargeCooldownMultiplier = 1 +end + +function ENT:StartCharging() + if not self.ChargeDuration then + self.dt.AdditiveChargeDuration = self:GetOwner().TempAttributes.AdditiveChargeDuration or 0 + self.dt.ChargeCooldownMultiplier = self:GetOwner().TempAttributes.ChargeCooldownMultiplier or 1 + self.ChargeDuration = self.DefaultChargeDuration + self.dt.AdditiveChargeDuration + end + + self.dt.Ready = false + self.dt.Charging = true + self.dt.NextEndCharge = CurTime() + self.ChargeDuration + self.SpeedBonus = 1.89 + self:GetOwner():ResetClassSpeed() + self:GetOwner():SetJumpPower(0) + + net.Start("ActivateTauntCam") + net.Send(self:GetOwner()) + self:GetOwner():SetNWBool("Taunting", true) + self:GetOwner():DoAnimationEvent("Charger_charge") + timer.Create("ChargingChargerAnimLoop"..self:GetOwner():EntIndex(), self:GetOwner():SequenceDuration(self:GetOwner():LookupSequence("Charger_Charge") ), 0, function() + self:GetOwner():DoAnimationEvent("Charger_charge") + end) + if not self.ChargeSoundEnt then + self.ChargeSoundEnt = CreateSound(self:GetOwner(), "ChargerZombie.Charge") + end + + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Play() + end +end + +function ENT:StopCharging() + self.ChargeDuration = nil + self.dt.Ready = false + self.dt.Charging = false + self.dt.NextEndCharge = CurTime() + self.ChargeCooldownDuration * self.dt.ChargeCooldownMultiplier + self.SpeedBonus = nil + self:GetOwner():ResetClassSpeed() + self:GetOwner():SetJumpPower(self.PlayerJumpPower) + timer.Stop("ChargingChargerAnimLoop"..self:GetOwner():EntIndex()) + if self.ChargeSoundEnt then + self.ChargeSoundEnt:Stop() + self.ChargeSoundEnt = nil + end + + if self.ChargeState then + if self.ChargeState == 2 then + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Stop() + self.CritStartSoundEnt = nil + self:GetOwner():EmitSound(self.CritStopSound) + end + end + + self.NextEndCritBoost = CurTime() + 0.4 + end +end + +function ENT:OnMeleeSwing() + if self.dt.Charging then + end +end + +function ENT:Think() + if not IsValid(self:GetOwner()) then return end + + if self.dt.Charging then + local vel = self:GetOwner():GetVelocity():LengthSqr() + + if self:GetOwner():Crouching() then + self:GetOwner():ConCommand("-duck") + end + + if not self.MaxSpeed or vel > self.MaxSpeed then + self.MaxSpeed = vel + end + + local cap = self.MaxSpeed * 0.8 * 0.8 + + if vel < cap then + ----print("below minimum speed, performing trace check") + self:MeleeAttack() + if not self.dt.Charging then + return + end + end + + if CurTime() > self.dt.NextEndCharge then + timer.Simple(0.8, function() + self:GetOwner():SetNWBool("Taunting", false) + net.Start("DeActivateTauntCam") + net.Send(self:GetOwner()) + end) + self:StopCharging() + return + end + + local p = (self.dt.NextEndCharge - CurTime()) / self.ChargeDuration + local p0 = p * (self.DefaultChargeDuration / self.ChargeDuration) + + if p0 < 0.33 and self.ChargeState == 1 then + GAMEMODE:StartCritBoost(self:GetOwner()) + self.ChargeState = 2 + + if not self.CritStartSoundEnt then + self.CritStartSoundEnt = CreateSound(self, self.CritStartSound) + end + if self.CritStartSoundEnt then + self.CritStartSoundEnt:Play() + end + elseif p0 < 0.66 and not self.ChargeState then + GAMEMODE:StartCritBoost(self:GetOwner()) + self.ChargeState = 1 + end + elseif not self.dt.Ready then + if CurTime() > self.dt.NextEndCharge then + self.dt.Ready = true + umsg.Start("PlayChargeReadySound", self:GetOwner()) + umsg.End() + end + + self.MaxSpeed = nil + self.ChargeState = nil + end + + if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then + GAMEMODE:StopCritBoost(self:GetOwner()) + self.NextEndCritBoost = nil + end + + if (self:GetOwner():KeyDown(IN_ATTACK) and !self:GetOwner():IsBot()) or (self:GetOwner():KeyDown(IN_ATTACK2) and self:GetOwner():IsBot()) and self.dt.Ready then + if self:GetOwner():OnGround() then + if self:GetOwner():Crouching() then + self:GetOwner():ConCommand("-duck") + end + self:StartCharging() + end + end + + self:NextThink(CurTime()) + return true +end + +end + +hook.Add("Move", "TargeChargeMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + move:SetForwardSpeed(pl:GetRealClassSpeed()) + move:SetSideSpeed(0) + end +end) diff --git a/gamemodes/tf/entities/entities/tf_wearable_item_hylianshield/shared.lua b/gamemodes/tf/entities/entities/tf_wearable_item_hylianshield/shared.lua new file mode 100644 index 000000000..7040fb8f5 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable_item_hylianshield/shared.lua @@ -0,0 +1,352 @@ + +local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) + +ENT.Type = "anim" +ENT.Base = "tf_wearable_item" + +ENT.MeleeRange = 0 + +ENT.ForceMultiplier = 10000 +ENT.CritForceMultiplier = 10000 +ENT.ForceAddPitch = 20 +ENT.CritForceAddPitch = 0 + +ENT.DefaultBaseDamage = 50 +ENT.DamagePerHead = 10 +--ENT.MaxHeads = 5 + +ENT.BaseDamage = 0 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 + +ENT.HitPlayerSound = Sound("") +ENT.HitPlayerRangeSound = Sound("") +ENT.HitWorldSound = Sound("") + +ENT.CritStartSound = Sound("") +ENT.CritStopSound = Sound("") + +ENT.DefaultChargeDuration = 0 +ENT.ChargeCooldownDuration = 0 + +ENT.ChargeSteerConstraint = 9999 + +function ENT:SetupDataTables() + self.BaseClass.SetupDataTables(self) + self:DTVar("Bool", 0, "Charging") + self:DTVar("Bool", 1, "Ready") + self:DTVar("Float", 0, "NextEndCharge") + self:DTVar("Float", 1, "AdditiveChargeDuration") + self:DTVar("Float", 2, "ChargeCooldownMultiplier") +end + +if CLIENT then + +function ENT:InitializeCModel(weapon) + local vm = self:GetOwner():GetViewModel() + + if IsValid(vm) then + self.CModel = ClientsideModel(self.Model) + if not IsValid(self.CModel) then return end + + self.CModel:SetPos(vm:GetPos()) + self.CModel:SetAngles(vm:GetAngles()) + self.CModel:AddEffects(EF_BONEMERGE) + self.CModel:SetParent(vm) + self.CModelself.WModel2:SetNoDraw(true) + end +end + +function ENT:Think() + self.BaseClass.Think(self) + + if not self.Initialized then + self.Initialized = true + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + if self:GetOwner() == LocalPlayer() then + HudDemomanPipes:SetProgress(1) + HudDemomanPipes:SetChargeStatus(0) + end + end + end + + if self:GetOwner() == LocalPlayer() then + if self.dt.Charging then + return nil + end + end +end + +hook.Add("CreateMove", "TargeChargeCreateMove", function(cmd) + local t = LocalPlayer().TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + local ang = cmd:GetViewAngles() + if LocalPlayer().SavedTargeAngle then + local oldyaw = LocalPlayer().SavedTargeAngle.y + + ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) + cmd:SetViewAngles(ang) + end + LocalPlayer().SavedTargeAngle = ang + else + LocalPlayer().SavedTargeAngle = nil + end +end) + +end + +if SERVER then + +AddCSLuaFile("shared.lua") + +function ENT:CanChargeThrough(ent) + if ent:GetClass() == "prop_physics" or ent:GetClass() == "prop_physics_multiplayer" then + return (ent:GetPhysicsObject():IsValid(self.WModel2) and ent:GetPhysicsObject():IsMoveable() and ent:GetPhysicsObject():GetMass() < 200) or + (ent:GetMaxHealth() > 1) + elseif ent:GetClass() == "prop_dynamic" or ent:GetClass() == "prop_dynamic_override" then + return ent:GetMaxHealth() > 1 + elseif ent:GetClass() == "func_breakable" then + return true + end + + return false +end + +function ENT:MeleeAttack() + if not IsValid(self:GetOwner()) then return end + + local pos = self:GetOwner():GetShootPos() + local ang = self:GetOwner():EyeAngles() + ang.p = 0 + local endpos = pos + ang:Forward() * self.MeleeRange + + local hitent, hitpos, dmginfo + + --self:GetOwner():LagCompensation(true) + + local tr = util.TraceLine { + start = pos, + endpos = endpos, + filter = self:GetOwner() + } + + if not tr.Hit then + local mins, maxs = Vector(-20, -20, -40), Vector(20, 20, 20) + + tr = util.TraceHull { + start = pos, + endpos = endpos, + filter = self:GetOwner(), + + mins = mins, + maxs = maxs, + } + end + + --self:GetOwner():LagCompensation(false) + + if tr.Entity and tr.Entity:IsValid(self.WModel2) then + if self:GetOwner():IsFriendly(tr.Entity) or self:GetOwner():GetSolid() == SOLID_NONE then + return + end + + local ang = self:GetOwner():EyeAngles() + local dir = ang:Forward() + hitpos = tr.Entity:NearestPoint(self:GetOwner():GetShootPos()) - 2 * dir + tr.HitPos = hitpos + + if self:GetOwner():CanDamage(tr.Entity) then + local pitch, mul, dmgtype + + dmgtype = DMG_SLASH + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() + + --self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * math.min(self:GetOwner():GetNWInt("Heads"), self.MaxHeads) + self.BaseDamage = self.DefaultBaseDamage + self.DamagePerHead * self:GetOwner():GetNWInt("Heads") + + local dmg = tf_util.CalculateDamage(self, hitpos) + + dmginfo = DamageInfo() + dmginfo:SetAttacker(self:GetOwner()) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce(dmg * force_dir * mul) + tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = tr.Entity:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + tr.Entity:SetPhysicsAttacker(self:GetOwner()) + end + end + + if tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then + if self.ChargeState == 2 and (not self.NextRangeSound or CurTime() > self.NextRangeSound) then + sound.Play(self.HitPlayerRangeSound, self:GetOwner():GetPos()) + self.NextRangeSound = CurTime() + 1 + else + sound.Play(self.HitPlayerSound, self:GetOwner():GetPos()) + end + else + sound.Play(self.HitWorldSound, self:GetOwner():GetPos()) + end + elseif tr.HitWorld then + sound.Play(self.HitWorldSound, self:GetOwner():GetPos()) + else + return + end + + util.ScreenShake(self:GetPos(), 10, 5, 1, 512) + + if not tr.HitWorld then + if self:GetOwner().TempAttributes.ChargeIsUnstoppable then + return + end + + if tf_targe_enhanced_charge:GetBool() and IsValid(tr.Entity) then + --print("charge hit", tr.Entity, tr.Entity:Health(), tr.Entity:GetMaxHealth(), self:CanChargeThrough(tr.Entity)) + if self:CanChargeThrough(tr.Entity) then + return + --[[elseif tr.Entity:GetClass() == "prop_door_rotating" then + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetBodygroup(1, 1) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + tr.Entity:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return + elseif tr.Entity:GetClass() == "prop_dynamic" and IsValid(tr.Entity:GetParent()) + and tr.Entity:GetParent():GetClass()=="func_door_rotating" then + local door = tr.Entity:GetParent() + + local p = ents.Create("prop_physics") + p:SetModel(door:GetModel()) + p:SetSkin(door:GetSkin()) + p:SetPos(door:GetPos()) + p:SetAngles(door:GetAngles()) + door:Remove() + p:Spawn() + + p:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + + local phys = p:GetPhysicsObject() + if phys and phys:IsValid(self.WModel2) then + p:SetPhysicsAttacker(self:GetOwner()) + end + + return]] + end + end + end + + local vel = self:GetOwner():GetVelocity() + local right = self:GetOwner():EyeAngles():Right() + local side = vel:DotProduct(right) + + self:GetOwner():SetVelocity(-side * right) + + self:StopCharging() +end + +function ENT:Initialize() + self.BaseClass.Initialize(self) + if IsValid(self:GetOwner()) then + self:GetOwner().TargeEntity = self + end + self.dt.Charging = false + self.dt.Ready = true + self.dt.ChargeCooldownMultiplier = 1 +end + +function ENT:StartCharging() + if not self.ChargeDuration then + return nil + end + + if not self.ChargeSoundEnt then + return nil + end + + if self.ChargeSoundEnt then + return nil + end +end + +function ENT:StopCharging() + + if self.ChargeSoundEnt then + return nil + end + + if self.ChargeState then + return nil + end +end + +function ENT:OnMeleeSwing() + if self.dt.Charging then + self:StopCharging() + end +end + +function ENT:Think() + if not IsValid(self:GetOwner()) then return end + + if self.dt.Charging then + return nil + end + + if self.NextEndCritBoost and CurTime() > self.NextEndCritBoost then + return nil + end + + self:NextThink(CurTime()) + return true +end + +end + +hook.Add("Move", "TargeChargeMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + move:SetForwardSpeed(pl:GetRealClassSpeed()) + move:SetSideSpeed(0) + end +end) + +hook.Add("SetupMove", "TargeChargeSetupMove", function(pl, move) + local t = pl.TargeEntity + if IsValid(t) and t.dt and t.dt.Charging then + -- This is already done clientside by CreateMove + if SERVER then + local ang = pl:EyeAngles() + if pl.SavedTargeAngle then + local oldyaw = pl.SavedTargeAngle.y + + ang.y = oldyaw + math.Clamp(math.AngleDifference(ang.y, oldyaw), -t.ChargeSteerConstraint, t.ChargeSteerConstraint) + pl:SetEyeAngles(ang) + end + pl.SavedTargeAngle = ang + end + + move:SetSideSpeed(0) + else + pl.SavedTargeAngle = nil + end +end) diff --git a/gamemodes/tf/entities/entities/tf_wearable_item_tideturnr/shared.lua b/gamemodes/tf/entities/entities/tf_wearable_item_tideturnr/shared.lua new file mode 100644 index 000000000..524bea7c7 --- /dev/null +++ b/gamemodes/tf/entities/entities/tf_wearable_item_tideturnr/shared.lua @@ -0,0 +1,33 @@ + +local tf_targe_enhanced_charge = CreateConVar("tf_targe_enhanced_charge", 1, {FCVAR_CHEAT}) + +ENT.Type = "anim" +ENT.Base = "tf_wearable_item_demoshield" + +ENT.MeleeRange = 50 + +ENT.ForceMultiplier = 10000 +ENT.CritForceMultiplier = 10000 +ENT.ForceAddPitch = 0 +ENT.CritForceAddPitch = 0 + +ENT.DefaultBaseDamage = 50 +ENT.DamagePerHead = 10 +--ENT.MaxHeads = 5 + +ENT.BaseDamage = 50 +ENT.DamageRandomize = 0.1 +ENT.MaxDamageRampUp = 0 +ENT.MaxDamageFalloff = 0 + +ENT.HitPlayerSound = Sound("DemoCharge.HitFlesh") +ENT.HitPlayerRangeSound = Sound("DemoCharge.HitFleshRange") +ENT.HitWorldSound = Sound("DemoCharge.HitWorld") + +ENT.CritStartSound = Sound("DemoCharge.ChargeCritOn") +ENT.CritStopSound = Sound("DemoCharge.ChargeCritOff") + +ENT.DefaultChargeDuration = 1.5 +ENT.ChargeCooldownDuration = 12 + +ENT.ChargeSteerConstraint = GetConVar( "sensitivity" ) \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/trace2/cl_init.lua b/gamemodes/tf/entities/entities/trace2/cl_init.lua new file mode 100644 index 000000000..07065ad0a --- /dev/null +++ b/gamemodes/tf/entities/entities/trace2/cl_init.lua @@ -0,0 +1,85 @@ +include('shared.lua') + + + +function ENT:Initialize() + self.matBeam = Material( "cable/cable_red" ) + self.Size = 0 + self.MainStart = self.Entity:GetPos() + self.MainEnd = self:GetEndPos() + self.dAng = (self.MainEnd - self.MainStart):Angle() + self.speed = 5000 + self.startTime = CurTime() + self.endTime = CurTime() + self.speed + self.dt = -1 +end + +function ENT:Think() + + self.Entity:SetRenderBoundsWS( self:GetEndPos(), self.Entity:GetPos(), Vector()*8 ) + self.Size = math.Approach( self.Size, 1, 10*FrameTime() ) +end + +function ENT:DrawMainBeam( StartPos, EndPos, dt, dist ) + + local TexOffset = 0 + + local ca = Color(255,255,255,255) + + EndPos = StartPos + (self.dAng * ((1 - dt)*dist)) + + -- Beam effect + render.SetMaterial( self.matBeam ) + render.DrawBeam( EndPos, StartPos,2,TexOffset*-0.4, TexOffset*-0.4 + StartPos:Distance(EndPos) / 256,ca ) +end + +function ENT:Draw() + + local Owner = self.Entity:GetOwner() + if (!Owner || Owner == NULL) then return end + + local StartPos = self.Entity:GetPos() + local EndPos = self:GetEndPos() + local ViewModel = Owner == LocalPlayer() + + if (EndPos == Vector(0,0,0)) then return end + + if ( ViewModel ) then + + local vm = Owner:GetViewModel() + if (!vm || vm == NULL) then return end + local attachment = vm:GetAttachment( 1 ) + StartPos = attachment.Pos + + else + + local vm = Owner:GetActiveWeapon() + if (!vm || vm == NULL) then return end + local attachment = vm:GetAttachment( 1 ) + StartPos = attachment and attachment.Pos + end + + if not StartPos then return end + + local TexOffset = CurTime() * -2 + + local Distance = EndPos:Distance( StartPos ) * self.Size + + local et = (self.startTime + (Distance/self.speed)) + if(self.dt != 0) then + self.dt = (et - CurTime()) / (et - self.startTime) + end + if(self.dt < 0) then + self.dt = 0 + end + self.dAng = (EndPos - StartPos):Angle():Forward() + + gbAngle = (EndPos - StartPos):Angle() + local Normal = gbAngle:Forward() + + self:DrawMainBeam( StartPos, StartPos + Normal * Distance, self.dt, Distance ) +end +function ENT:IsTranslucent() + return true +end + diff --git a/gamemodes/tf/entities/entities/trace2/init.lua b/gamemodes/tf/entities/entities/trace2/init.lua new file mode 100644 index 000000000..d9edde41c --- /dev/null +++ b/gamemodes/tf/entities/entities/trace2/init.lua @@ -0,0 +1,20 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include('shared.lua') + +local sndOnline = Sound( "common/null.wav" ) + +/*--------------------------------------------------------- + Name: Initialize +---------------------------------------------------------*/ +function ENT:Initialize() + + self.Entity:DrawShadow( false ) + self.Entity:SetSolid( SOLID_NONE ) +end + +function ENT:Think() +end + diff --git a/gamemodes/tf/entities/entities/trace2/shared.lua b/gamemodes/tf/entities/entities/trace2/shared.lua new file mode 100644 index 000000000..7533e91d0 --- /dev/null +++ b/gamemodes/tf/entities/entities/trace2/shared.lua @@ -0,0 +1,18 @@ +ENT.Type = "anim" + + +/*--------------------------------------------------------- +---------------------------------------------------------*/ +function ENT:SetEndPos( endpos ) + + self.Entity:SetNetworkedVector( 0, endpos ) + self.Entity:SetCollisionBoundsWS( self.Entity:GetPos(), endpos, Vector() * 0.25 ) + +end + + +/*--------------------------------------------------------- +---------------------------------------------------------*/ +function ENT:GetEndPos() + return self.Entity:GetNetworkedVector( 0 ) +end diff --git a/gamemodes/tf/entities/entities/trigger_capture_area/init.lua b/gamemodes/tf/entities/entities/trigger_capture_area/init.lua new file mode 100644 index 000000000..3a21ea905 --- /dev/null +++ b/gamemodes/tf/entities/entities/trigger_capture_area/init.lua @@ -0,0 +1,193 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + + +function ENT:Initialize() + self.Players = 0 +end + +function ENT:InitPostEntity() + --print(self) + self.CapturePoint = ents.FindByName(self.Properties.area_cap_point or "")[1] or NULL + + if IsValid(self.CapturePoint) then + self.CapturePoint.TriggerEntity = self + self.CapturePoint.TeamCanCap = { + [2]=(self.Properties.team_cancap_2==1), + [3]=(self.Properties.team_cancap_3==1), + } + end + + PrintTable(self.Properties or {}) +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if not self.Properties then + self.Properties = {} + end + if tonumber(value) then value=tonumber(value) end + self.Properties[key] = value +end + +function ENT:Think() + + local pos = self:GetPos() + local mins, maxs = self:WorldSpaceAABB() -- https://forum.facepunch.com/gmoddev/lmcw/Brush-entitys-ent-GetPos/1/#postdwfmq + pos = (mins + maxs) * 0.5 + if (self.Pos ~= pos) then + self.Pos = pos + end + + for k,v in ipairs(ents.FindByClass("team_train_watcher")) do + if (IsValid(v.Train)) then + self.Train = v.Train + end + if (IsValid(v.Goal)) then + self.Goal = v.Goal + end + end + if GAMEMODE.PostEntityDone and not self.PostEntityDone then + self:InitPostEntity() + self.PostEntityDone = true + end + + if (IsValid(self.Goal)) then + if (self.Pos:Distance(self.Goal:GetPos()) < 180) then + if (!GAMEMODE.RoundHasWinner) then + GAMEMODE:RoundWin(TEAM_BLU) + end + end + end +end + +function ENT:AcceptInput(name, activator, caller, data) + +end + +function ENT:StartTouch(ent) + if (ent:IsPlayer()) then + if (ent:Team() == TEAM_BLU) then + self.Players = self.Players + 1 + end + end + if (IsValid(self.Train)) then + if (ent:IsPlayer()) then + timer.Stop("CartGoesBackwards"..self:EntIndex()) + if (ent:Team() == TEAM_BLU) then + self.Train:Fire("SetSpeedDirAccel",tostring(0.3 * self.Players),0.01) + ent:Speak("TLK_CART_MOVING_FORWARD") + else + self.Train:Fire("Stop","",0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_STOP") + end + end + end + else + if IsValid(self.CapturePoint) and ent:IsPlayer() then + if ent.CurrentControlPoint ~= self.CapturePoint.ID then + ent.CurrentControlPoint = self.CapturePoint.ID + umsg.Start("TF_EnterControlPoint", ent) + umsg.Char(ent.CurrentControlPoint) + umsg.End() + if GAMEMODE:EntityTeam(self.CapturePoint) != ent:Team() then + umsg.Start("TF_PlayGlobalSound", ent) + umsg.String("Announcer.ControlPointContested") + umsg.End() + self.CapturePoint:EmitSound("ControlPoint.Start", 80, 100) + self.CapturePoint:EmitSound("ControlPoint.Move", 80, 100) + timer.Create("CapPoint"..ent.CurrentControlPoint, 10, 1, function() + umsg.Start("TF_SetControlPointTeam", ent) + umsg.Char(ent.CurrentControlPoint) + umsg.Float(tonumber(ent:Team()) + 1) + umsg.End() + umsg.Start("TF_UnLockControlPoint", ent) + umsg.Char(ent.CurrentControlPoint) + umsg.End() + for k,v in ipairs(ents.FindByClass("team_control_point")) do + if GAMEMODE:EntityTeam(v) != GAMEMODE:EntityTeam(self.ControlPoint) then + umsg.Start("TF_UnLockControlPoint", ent) + umsg.Char(v.ID) + umsg.End() + end + end + if ent:Team() == TEAM_RED then + self.CapturePoint:SetBodygroup(0, ent:Team() + 1) + elseif ent:Team() == TEAM_BLU then + self.CapturePoint:SetBodygroup(0, ent:Team() + 1) + end + self.CapturePoint:SetNWInt("Team", ent:Team()) + self.CapturePoint:ResetSequence(self.CapturePoint:SelectWeightedSequence(ACT_IDLE)) + self.CapturePoint:DrawShadow(false) + self.CapturePoint:StopSound("ControlPoint.Move") + self.CapturePoint:EmitSound("ControlPoint.Stop") + end) + end + if GAMEMODE:EntityTeam(self.CapturePoint) == ent:Team() then + timer.Stop("CapPoint"..ent.CurrentControlPoint) + self.CapturePoint:StopSound("ControlPoint.Move") + self.CapturePoint:EmitSound("ControlPoint.Malfunction") + timer.Create("CapPoint"..ent.CurrentControlPoint, 20, 1, function() + self.CapturePoint:StopSound("ControlPoint.Malfunction") + self.CapturePoint:EmitSound("ControlPoint.Stop") + end) + + end + end + end + end +end + +function ENT:EndTouch(ent) + for k,v in ipairs(ents.FindByClass("team_train_watcher")) do + if (IsValid(v.Train)) then + self.Train = v.Train + end + end + + if (ent:IsPlayer()) then + if (ent:Team() == TEAM_BLU) then + self.Players = self.Players - 1 + end + end + if (IsValid(self.Train)) then + if (ent:IsPlayer()) then + if (self.Players == 0) then + self.Train:Fire("Stop","",0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_STOP") + end + + timer.Create("CartGoesBackwards"..self:EntIndex(), 30, 1, function() + self.Train:Fire("SetSpeedDirAccel",tostring(-0.05),0.01) + for k,v in ipairs(player.GetAll()) do + v:Speak("TLK_CART_MOVING_BACKWARD") + end + end) + else + self.Train:Fire("SetSpeedDirAccel",tostring(0.3 * self.Players),0.01) + end + end + else + if IsValid(self.CapturePoint) and ent:IsPlayer() then + if ent.CurrentControlPoint == self.CapturePoint.ID then + timer.Stop("CapPoint"..ent.CurrentControlPoint) + ent.CurrentControlPoint = -1 + umsg.Start("TF_ExitControlPoint", ent) + umsg.End() + + if GAMEMODE:EntityTeam(self.CapturePoint) != ent:Team() then + + timer.Create("CapPoint"..self.CapturePoint, 20, 1, function() + self.CapturePoint:StopSound("ControlPoint.Move") + self.CapturePoint:StopSound("ControlPoint.Malfunction") + self.CapturePoint:EmitSound("ControlPoint.Stop") + end) + + end + end + end + end +end diff --git a/gamemodes/tf/entities/entities/trigger_checkpoint.lua b/gamemodes/tf/entities/entities/trigger_checkpoint.lua new file mode 100644 index 000000000..9efbbd68e --- /dev/null +++ b/gamemodes/tf/entities/entities/trigger_checkpoint.lua @@ -0,0 +1 @@ +-- no \ No newline at end of file diff --git a/gamemodes/tf/entities/entities/trigger_checkpoint/init.lua b/gamemodes/tf/entities/entities/trigger_checkpoint/init.lua new file mode 100644 index 000000000..9131abd96 --- /dev/null +++ b/gamemodes/tf/entities/entities/trigger_checkpoint/init.lua @@ -0,0 +1,79 @@ +// Entity information +ENT.Base = "base_anim" +ENT.Type = "anim" + + +// Called when the entity first spawns +function ENT:Initialize() + self.ipsLocation = Vector(self.pos.x, self.pos.y, self.min.z + 8) + + local w = self.max.x - self.min.x + local l = self.max.y - self.min.y + local h = self.max.z - self.min.z + + local min = Vector(0 - (w / 2), 0 - (l / 2), 0 - (h / 2)) + local max = Vector(w / 2, l / 2, h / 2) + + self:DrawShadow(false) + self:SetCollisionBounds(min, max) + self:SetSolid(SOLID_BBOX) + self:SetCollisionGroup(COLLISION_GROUP_WORLD) + self:SetMoveType(0) + self:SetTrigger(true) +end + + +// Called when an entity touches it +function ENT:StartTouch(ent) + if ent && ent:IsValid(self.WModel2) && ent:IsPlayer() && ent:Team() == TEAM_ALIVE && !self.triggered then + self.triggered = true + + if self.OnTouchRun then + self:OnTouchRun() + end + + local ang = ent:GetAngles() + + if !self.skipSpawnpoint then + GAMEMODE:CreateSpawnPoint(self.ipsLocation, ang.y) + end + + for _, pl in pairs(player.GetAll()) do + if pl && pl:IsValid(self.WModel2) && pl != ent && pl:Team() == TEAM_ALIVE then + if pl:GetVehicle() && pl:GetVehicle():IsValid(self.WModel2) then + // This just causes mayhem. + -- pl:GetVehicle():SetPos(self.ipsLocation) + -- pl:GetVehicle():SetAngles(ang) + pl:ExitVehicle() -- Make the player exit the vehicle and then teleport. + pl:SetPos(self.ipsLocation) + pl:SetAngles(ang) + else + pl:SetPos(self.ipsLocation) + pl:SetAngles(ang) + end + end + end + + // We're going to allow checkpoint respawning now. It gets out of hand when players are dead forever. + if GetConVarNumber("hl2c_classic") == 0 then + GAMEMODE:HL2CForceRespawn() + end + + table.remove(checkpointPositions, 1) + if checkpointPositions[1] then + if GetConVarNumber("hl2c_use_old_umsg") >= 1 then + umsg.Start("SetCheckpointPosition", RecipientFilter():AddAllPlayers()) + umsg.Vector(checkpointPositions[1]) + umsg.End() + elseif GetConVarNumber("hl2c_use_old_umsg") == 0 then + for _, pl in pairs(player.GetAll()) do + net.Start("SetCheckpointPosition") + usermessage.WriteVector(checkpointPositions[1]) + net.Send(pl) + end + end + end + + self:Remove() + end +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/entities/trigger_mp_changelevel/init.lua b/gamemodes/tf/entities/entities/trigger_mp_changelevel/init.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/entities/trigger_mp_changelevel/init.lua rename to gamemodes/tf/entities/entities/trigger_mp_changelevel/init.lua diff --git a/gamemodes/tf/entities/entities/trigger_timer_door/init.lua b/gamemodes/tf/entities/entities/trigger_timer_door/init.lua new file mode 100644 index 000000000..cc79544ef --- /dev/null +++ b/gamemodes/tf/entities/entities/trigger_timer_door/init.lua @@ -0,0 +1,210 @@ +ENT.Base = "base_brush" +ENT.Type = "brush" + +ENT.FullyOpenGate1 = false +ENT.FullyOpenGate2 = false + +function ENT:Initialize() + self.Team = 0 + self.Players = {} + self.Opened = false + local pos = self:GetPos() + local mins, maxs = self:WorldSpaceAABB() -- https://forum.facepunch.com/gmoddev/lmcw/Brush-entitys-ent-GetPos/1/#postdwfmq + pos = (mins + maxs) * 0.5 + + self.Pos = pos +end + +function ENT:KeyValue(key,value) + key = string.lower(key) + + if key=="teamnum" then + self.Team = tonumber(value) + elseif key=="associatedmodel" then + self.ResupplyLockerName = value + end +end + +function ENT:StartTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = -1 + if ent:Team() == TEAM_BLU or ent:Team() == TF_TEAM_PVE_INVADERS then + if self:GetName() == "gate1_door_trigger" then + if self.FullyOpenGate1 != false then return end + for k,v in pairs(ents.FindByName("gate1_spawn_door")) do + v:Fire("SetSpeed", "15") + v:Fire("Open") + for _,alarm in pairs (ents.FindByName("gate1_alarm_yellow_flash")) do + alarm:Fire("Start") + end + for _,light in pairs (ents.FindByName("gate1_emergency_light")) do + light:Fire("Skin", "3") + light:Fire("SetAnimation", "spin") + end + end + timer.Create("CloseGate0Door", 14, 1, function() + ent:EmitSound("mvm/mvm_robo_stun.wav", 0, 100) + + timer.Simple(21.519, function() + ent:EmitSound("misc/cp_harbor_red_whistle.wav", 0, 100) + + for k,v in pairs(ents.FindByName("gate0_entrance_door")) do + v:Fire("SetSpeed", "15") + v:Fire("Close") + end + end) + for k,v in pairs(team.GetPlayers(2)) do + if v:GetNWBool("Taunting") == true then return end + timer.Create("StunRobot100"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN) + timer.Create("StunRobotloop103"..v:EntIndex(), v:SequenceDuration(v:LookupSequence("primary_stun_begin")), 0, function() + timer.Create("StunRobotloop104"..v:EntIndex(), v:SequenceDuration(v:LookupSequence("primary_stun_middle")), 0, function() + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE) + end) + end) + end) + v:SetNWBool("Taunting", true) + v:SetNWBool("NoWeapon", true) + v:Freeze(true) + net.Start("ActivateTauntCam") + net.Send(v) + v:StopParticles() + timer.Simple(21.519, function() + if not IsValid(v) or (not v:Alive() and not v:GetNWBool("Taunting")) then v:Freeze(false) return end + timer.Stop("StunRobotloop103"..v:EntIndex()) + timer.Stop("StunRobotloop104"..v:EntIndex()) + v:DoAnimationEvent(ACT_MP_STUN_END) + net.Start("DeActivateTauntCam") + net.Send(v) + v:Freeze(false) + v:SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + end) + end + for _,alarm in pairs (ents.FindByName("gate1_alarm_yellow_flash")) do + alarm:Fire("Stop") + end + for _,light in pairs (ents.FindByName("gate1_emergency_light")) do + light:Fire("Skin", "1") + light:Fire("SetAnimation", "idle") + end + for _,blockedbitch in pairs (ents.FindByName("gate1_bot_blocker")) do + blockedbitch:Fire("Disable") + end + self.FullyOpenGate1 = true + end) + end + if self:GetName() == "gate2_door_trigger" then + if self.FullyOpenGate2 != false then return end + for k,v in pairs(ents.FindByName("gate2_spawn_door")) do + v:Fire("SetSpeed", "15") + v:Fire("Open") + for _,alarm in pairs (ents.FindByName("gate2_alarm_yellow_flash")) do + alarm:Fire("Start") + end + for _,light in pairs (ents.FindByName("gate2_emergency_light")) do + light:Fire("Skin", "3") + light:Fire("SetAnimation", "spin") + end + end + timer.Create("CloseGate1Door", 14, 1, function() + for k,v in pairs(ents.FindByName("gate1_entrance_door")) do + v:Fire("Close") + end + for _,alarm in pairs (ents.FindByName("gate2_alarm_yellow_flash")) do + alarm:Fire("Stop") + end + ent:EmitSound("mvm/mvm_robo_stun.wav", 0, 100) + + timer.Simple(21.519, function() + ent:EmitSound("misc/cp_harbor_red_whistle.wav", 0, 100) + end) + for k,v in pairs(team.GetPlayers(2)) do + if v:GetNWBool("Taunting") == true then return end + timer.Create("StunRobot100"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN) + timer.Create("StunRobotloop103"..v:EntIndex(), v:SequenceDuration(v:LookupSequence("primary_stun_begin")), 0, function() + timer.Create("StunRobotloop104"..v:EntIndex(), v:SequenceDuration(v:LookupSequence("primary_stun_middle")), 0, function() + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE) + end) + end) + end) + v:SetNWBool("Taunting", true) + v:SetNWBool("NoWeapon", true) + v:StopParticles() + v:Freeze(true) + net.Start("ActivateTauntCam") + net.Send(v) + timer.Simple(21.519, function() + if not IsValid(v) or (not v:Alive() and not v:GetNWBool("Taunting")) then v:Freeze(false) return end + timer.Stop("StunRobotloop103"..v:EntIndex()) + timer.Stop("StunRobotloop104"..v:EntIndex()) + v:DoAnimationEvent(ACT_MP_STUN_END) + net.Start("DeActivateTauntCam") + net.Send(v) + v:Freeze(false) + v:SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + end) + end + for _,light in pairs (ents.FindByName("gate2_emergency_light")) do + light:Fire("Skin", "1") + light:Fire("SetAnimation", "idle") + end + for _,blockedbitch in pairs (ents.FindByName("gate1_bot_blocker")) do + blockedbitch:Fire("Enable") + end + for _,blockedbitch in pairs (ents.FindByName("gate2_bot_blocker")) do + blockedbitch:Fire("Disable") + end + self.FullyOpenGate2 = true + end) + timer.Create("OpenGate4Door", 25, 1, function() + for k,v in pairs(ents.FindByName("gate2_fence_door")) do + v:Fire("SetSpeed", "15") + v:Fire("Open") + end + end) + end + end + end +end + +function ENT:EndTouch(ent) + if ent:IsPlayer() then + self.Players[ent] = nil + if ent:Team() == TEAM_BLU or ent:Team() == TF_TEAM_PVE_INVADERS then + if self:GetName() == "gate1_door_trigger" then + for k,v in pairs(ents.FindByName("gate1_spawn_door")) do + if self.FullyOpenGate1 == true then return end + timer.Stop("CloseGate0Door") + v:Fire("SetSpeed", "15") + v:Fire("Close") + for _,alarm in pairs (ents.FindByName("gate1_alarm_yellow_flash")) do + alarm:Fire("Stop") + end + for _,light in pairs (ents.FindByName("gate1_emergency_light")) do + light:Fire("Skin", "1") + light:Fire("SetAnimation", "idle") + end + end + end + if self:GetName() == "gate2_door_trigger" then + for k,v in pairs(ents.FindByName("gate2_spawn_door")) do + if self.FullyOpenGate2 == true then return end + timer.Stop("CloseGate1Door") + timer.Stop("OpenGate4Door") + v:Fire("SetSpeed", "25") + v:Fire("Close") + for _,alarm in pairs (ents.FindByName("gate2_alarm_yellow_flash")) do + alarm:Fire("Stop") + end + for _,light in pairs (ents.FindByName("gate2_emergency_light")) do + light:Fire("Skin", "1") + light:Fire("SetAnimation", "idle") + end + end + end + end + end +end diff --git a/addon/gamemodes/teamfortress/entities/weapons/gmod_camera.lua b/gamemodes/tf/entities/weapons/gmod_camera.lua similarity index 98% rename from addon/gamemodes/teamfortress/entities/weapons/gmod_camera.lua rename to gamemodes/tf/entities/weapons/gmod_camera.lua index e9a9f3203..902e104d9 100644 --- a/addon/gamemodes/teamfortress/entities/weapons/gmod_camera.lua +++ b/gamemodes/tf/entities/weapons/gmod_camera.lua @@ -24,7 +24,7 @@ SWEP.DrawAmmo = false SWEP.DrawCrosshair = false SWEP.Spawnable = true -SWEP.ShootSound = Sound( "NPC_CScanner.TakePhoto" ) +SWEP.ShootSound = Sound( "misc/freeze_cam_snapshot.wav" ) if ( SERVER ) then diff --git a/gamemodes/tf/entities/weapons/gmod_tool/stools/reprogrammer.lua b/gamemodes/tf/entities/weapons/gmod_tool/stools/reprogrammer.lua new file mode 100644 index 000000000..153a41142 --- /dev/null +++ b/gamemodes/tf/entities/weapons/gmod_tool/stools/reprogrammer.lua @@ -0,0 +1,105 @@ + +TOOL.Category = "Team Fortress 2 Gamemode" +TOOL.Name = "#tool.reprogrammer.name" + +TOOL.LeftClickAutomatic = false +TOOL.RightClickAutomatic = false +TOOL.RequiresTraceHit = true + +TOOL.Information = { + { name = "left" }, + { name = "right" }, +} +--Scale UP +function TOOL:LeftClick( trace ) + + if ( !IsValid( trace.Entity ) ) then return false end + if ( !trace.Entity:IsTFPlayer() ) then return false end + if ( CLIENT ) then return true end + + local tr = trace + local npc = trace.Entity + if (npc:IsPlayer() and npc.TFBot) then + if (trace.Entity:Team() == TEAM_RED) then + npc:SetTeam(TEAM_BLU) + npc:SetSkin(1) + elseif (trace.Entity:Team() == TEAM_BLU) then + npc:SetTeam(TEAM_RED) + npc:SetSkin(0) + elseif (trace.Entity:Team() == TEAM_YELLOW) then + npc:SetTeam(TEAM_GREEN) + npc:SetSkin(0) + elseif (trace.Entity:Team() == TEAM_GREEN) then + npc:SetTeam(TEAM_RED) + npc:SetSkin(0) + elseif (trace.Entity:Team() == TEAM_NEUTRAL) then + npc:SetTeam(math.random(TEAM_RED,TEAM_BLU)) + npc:SetSkin(1) + end + timer.Simple(0.1, function() + + npc:SetPlayerClass(npc:GetPlayerClass()) + for k,v in ipairs(ents.GetAll()) do + if (IsValid(v.Bot) and v.Bot:EntIndex() == npc:EntIndex()) then + npc:SetNWString("PreferredIcon",v.PreferredIcon) + end + end + + end) + elseif (npc:IsNPC()) then + + if (GAMEMODE:EntityTeam(trace.Entity) == TEAM_RED) then + npc:SetEntityTeam(TEAM_BLU) + elseif (GAMEMODE:EntityTeam(trace.Entity) == TEAM_BLU) then + npc:SetEntityTeam(TEAM_RED) + elseif (GAMEMODE:EntityTeam(trace.Entity) == TEAM_YELLOW) then + npc:SetEntityTeam(TEAM_GREEN) + elseif (GAMEMODE:EntityTeam(trace.Entity) == TEAM_GREEN) then + npc:SetEntityTeam(TEAM_RED) + elseif (GAMEMODE:EntityTeam(trace.Entity) == TEAM_NEUTRAL) then + npc:SetEntityTeam(math.random(TEAM_RED,TEAM_BLU)) + end + + end + return true + +end +function TOOL:RightClick( trace ) + + if ( !IsValid( trace.Entity ) ) then return false end + if ( !trace.Entity:IsTFPlayer() ) then return false end + if ( CLIENT ) then return true end + + local tr = trace + local npc = trace.Entity + if (npc:IsPlayer() and npc.TFBot) then + npc:SetTeam(self:GetOwner():Team()) + if (self:GetOwner():Team() == TEAM_RED || self:GetOwner():Team() == TEAM_BLU) then + npc:SetSkin(self:GetOwner():Team() - 2) + elseif (self:GetOwner():Team() == TEAM_YELLOW || self:GetOwner():Team() == TEAM_GREEN) then + npc:SetSkin(self:GetOwner():Team() - 4) + else + npc:SetSkin(0) + end + timer.Simple(0.1, function() + + npc:SetPlayerClass(npc:GetPlayerClass()) + for k,v in ipairs(ents.GetAll()) do + if (IsValid(v.Bot) and v.Bot:EntIndex() == npc:EntIndex()) then + npc:SetNWString("PreferredIcon",v.PreferredIcon) + end + end + + end) + elseif (npc:IsNPC()) then + npc:SetEntityTeam(self:GetOwner():Team()) + end + return true + +end + +function TOOL.BuildCPanel( CPanel ) + + CPanel:AddControl( "Header", { Description = "#tool.reprogrammer.desc" } ) + +end diff --git a/gamemodes/tf/entities/weapons/gmod_tool/stools/turn_into_gatebot.lua b/gamemodes/tf/entities/weapons/gmod_tool/stools/turn_into_gatebot.lua new file mode 100644 index 000000000..9848e2941 --- /dev/null +++ b/gamemodes/tf/entities/weapons/gmod_tool/stools/turn_into_gatebot.lua @@ -0,0 +1,43 @@ + +TOOL.Category = "Team Fortress 2 Gamemode" +TOOL.Name = "#tool.turn_into_gatebot.name" + +TOOL.LeftClickAutomatic = false +TOOL.RightClickAutomatic = false +TOOL.RequiresTraceHit = true + +TOOL.Information = { + { name = "left" } +} +--Scale UP +function TOOL:LeftClick( trace ) + + if ( !IsValid( trace.Entity ) ) then return false end + if ( !trace.Entity:IsPlayer() ) then return false end + if ( !trace.Entity:IsBot() ) then return false end + if (!string.find(trace.Entity:GetModel(),"models/bots")) then return end + if ( CLIENT ) then return true end + + local tr = trace + local npc = trace.Entity + timer.Simple(0.1, function() + + for k,v in ipairs(ents.FindByClass("tf_wearable_item")) do + if (v:GetOwner():EntIndex() == npc:EntIndex() and !string.find(v:GetModel(),"gameplay_cosmetic")) then + v:Remove() + end + end + + end) + + trace.Entity:EquipInLoadout("MvM GateBot Light "..string.upper(string.sub(tr.Entity.playerclass,1,1))..string.sub(tr.Entity.playerclass,2)) + + return true + +end + +function TOOL.BuildCPanel( CPanel ) + + CPanel:AddControl( "Header", { Description = "#tool.turn_into_gatebot.desc" } ) + +end diff --git a/addon/gamemodes/teamfortress/entities/weapons/manhack_welder.lua b/gamemodes/tf/entities/weapons/manhack_welder.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/manhack_welder.lua rename to gamemodes/tf/entities/weapons/manhack_welder.lua diff --git a/gamemodes/tf/entities/weapons/of_weapon_chainsaw/shared.lua b/gamemodes/tf/entities/weapons/of_weapon_chainsaw/shared.lua new file mode 100644 index 000000000..62c876f4c --- /dev/null +++ b/gamemodes/tf/entities/weapons/of_weapon_chainsaw/shared.lua @@ -0,0 +1,411 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Chainsaw" +SWEP.HasCModel = true +SWEP.Slot = 5 + +SWEP.RenderGroup = RENDERGROUP_BOTH +end + + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_chainsaw.mdl" +SWEP.WorldModel = "models/weapons/v_models/v_chainsaw.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "" +SWEP.ShootCritSound = "" +PrecacheParticleSystem("muzzle_minigun") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 13 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 1 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 4 +SWEP.BulletSpread = 0.08 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.05 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ReloadSound = Sound("Weapon_Minigun.Reload") +SWEP.EmptySound = Sound("Weapon_Minigun.ClipEmpty") +SWEP.ShootSound2 = Sound("weapons/chainsaw_attack_crit.wav") +SWEP.SpecialSound1 = Sound("weapons/chainsaw_windup.wav") +SWEP.SpecialSound2 = Sound("weapons/chainsaw_winddown.wav") +SWEP.SpecialSound3 = Sound("weapons/chainsaw_idle.wav") +SWEP.ShootCritSound = Sound("weapons/chainsaw_attack_crit.wav") +SWEP.HitFlesh = Sound("OFWeapon_Chainsaw.MeleeFlesh") +SWEP.HitWorld = Sound("") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +SWEP.DamageType = DMG_ALWAYSGIB +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self, self.SpecialSound1) + self.SpinDownSound = CreateSound(self, self.SpecialSound2) + self.SpinSound = CreateSound(self, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self, self.ShootCritSound) + + self.SoundsCreated = true +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + if self.Owner:GetPlayerClass() != "merc_dm" then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) + end + + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) + + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 1 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 1 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.SpinUpSound:Play() +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + if self.Owner:GetPlayerClass() != "merc_dm" then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_POSTFIRE) + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Spinning = false + + self.SpinUpSound:Stop() + self.SpinSound:Stop() + self.SpinDownSound:Play() +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self.Owner.minigunfiretime = 0 + self.StartTime = nil + self.Owner:SetAnimation(PLAYER_IDLE) + end + + self.SpinSound:Play() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + + return true +end + +function SWEP:PrimaryAttack(vampire) + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Play() + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self.SpinSound:Stop() + self.ShootCritSoundLoop:Stop() + self.ShootSoundLoop:Play() + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:MeleeAttack() + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self.SpinUpSound:Stop() + self.SpinSound:Play() + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if CLIENT then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 2 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and self.Owner:GetViewModel():LookupBone("v_minigun_barrel") then + self:StopSound(self.SpecialSound2) + end + else + --self.Owner:GetViewModel():ManipulateBoneAngles( self.Owner:GetViewModel():LookupBone("v_minigun_barrel"), Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + return + else + //--self.WModel2:ManipulateBoneAngles( self.Owner:GetViewModel():LookupBone("v_minigun_barrel"), Angle(0,self.barrelRotation,0) ) + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self.Owner and IsValid(self.Owner:GetViewModel()) then + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/of_weapon_gib/shared.lua b/gamemodes/tf/entities/weapons/of_weapon_gib/shared.lua new file mode 100644 index 000000000..e2f0628a5 --- /dev/null +++ b/gamemodes/tf/entities/weapons/of_weapon_gib/shared.lua @@ -0,0 +1,92 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "G.I.B." +SWEP.Slot = 3 +SWEP.HasCModel = true +SWEP.RenderGroup = RENDERGROUP_BOTH +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_bfg.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_bfg.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("weapons/mlg_shoot.wav") +SWEP.ShootCritSound = Sound("weapons/mlg_shoot_crit.wav") +SWEP.CustomExplosionSound = Sound("Weapon_QuakeRPG.Reload") +SWEP.ReloadSound = Sound("Weapon_QuakeRPG.Reload") + +SWEP.Primary.ClipSize = 1 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(30, 0, -6) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") +end + +function SWEP:ShootProjectile() + if self:CanPrimaryAttack() == true then + timer.Simple(0.2, function() + + self:EmitSound(")weapons/mlg_charge_up.wav") + self:SendWeaponAnim(ACT_VM_CHARGEUP) + timer.Simple(1, function() + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK) + if SERVER then + self.Owner:EmitSoundEx(")weapons/mlg_shoot.wav") + local rocket = ents.Create("tf_projectile_gibber") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() + end) + end) + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/of_weapon_rocketlauncher/shared.lua b/gamemodes/tf/entities/weapons/of_weapon_rocketlauncher/shared.lua new file mode 100644 index 000000000..b204b44b9 --- /dev/null +++ b/gamemodes/tf/entities/weapons/of_weapon_rocketlauncher/shared.lua @@ -0,0 +1,68 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "DM Rocket Launcher" +SWEP.Slot = 3 +SWEP.RenderGroup = RENDERGROUP_BOTH +SWEP.HasCModel = true +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_rocketlauncher_dm.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_rocketlauncher_dm.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("weapons/rocket_dm_shoot.wav") +SWEP.ShootSoundLevel = 94 +SWEP.ShootCritSound = Sound("weapons/rocket_dm_shoot_crit.wav") +SWEP.ReloadSound = "weapons/quake_rpg_reload_remastered.wav" +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + rocket:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.NameOverride = "env_explosion" + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_airblaster/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_airblaster/shared.lua new file mode 100644 index 000000000..05431e187 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_airblaster/shared.lua @@ -0,0 +1,384 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Flamethrower" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==1 then + effect = "flamethrower" + elseif i>1 then + if t==2 then + effect = "flamethrower_crit_blue" + else + effect = "flamethrower_crit_red" + end + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + + +end + +PrecacheParticleSystem("flamethrower_fire_1") +PrecacheParticleSystem("flamethrower_crit_red") +PrecacheParticleSystem("flamethrower") +PrecacheParticleSystem("flamethrower_crit_blue") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_flamethrower_pyro.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_flamethrower.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_FlameThrower.FireStart") +SWEP.SpecialSound1 = Sound("Weapon_FlameThrower.FireLoop") +SWEP.ShootCritSound = Sound("Weapon_FlameThrower.FireLoopCrit") +SWEP.ShootSoundEnd = Sound("Weapon_FlameThrower.FireEnd") +SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") +SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.04 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.5 +SWEP.AirblastRadius = 80 + +SWEP.BulletSpread = 0.06 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self, self.ShootSound) + self.SpinDownSound = CreateSound(self, self.ShootSoundEnd) + self.FireSound = CreateSound(self, self.SpecialSound1) + self.FireCritSound = CreateSound(self, self.ShootCritSound) + self.PilotSound = CreateSound(self, self.PilotLoop) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + if self:Ammo1()<=200 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextEndSpinUp then + self.SpinUpSound:Stop() + self.FireSound:Play() + self.NextEndSpinUp = nil + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self.NextEndSpinUp = nil + self:SetFlamethrowerEffect(2) + self.FireSound:Stop() + self.FireCritSound:Play() + self.Firing = true + end + self.Critting = true + elseif not self.NextEndSpinUp then + if self.Critting or not self.Firing then + self:SetFlamethrowerEffect(1) + self.FireCritSound:Stop() + self.FireSound:Play() + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + -- Take one ammo every 2 projectiles fired + if not self.ParticleCounter then self.ParticleCounter = 1 end + self.ParticleCounter = self.ParticleCounter + 1 + if self.ParticleCounter>2 then + self.ParticleCounter = 1 + self:TakePrimaryAmmo(1) + end + + self:ShootProjectile() +end + +function SWEP:ShootProjectile() + if SERVER then + local flame = ents.Create("tf_flame") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + flame:SetPos(self:ProjectileShootPos()) + flame:SetAngles(vec:Angle()) + if self:Critical() then + flame.critical = true + end + if self.Force then + flame.Force = self.Force + end + flame:SetOwner(self.Owner) + self:InitProjectileAttributes(flame) + + flame:Spawn() + + flame:SetVelocity(self.Owner:GetVelocity()) + end +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.NoAirblast then return false end + + if self:Ammo1()<0 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then + self:StopFiring() + end +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds() + end + self.PilotSound:Play() + + --MsgN(Format("Flamethrower Deploy %s",tostring(self))) + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if SERVER then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.FireSound:Stop() + self.FireCritSound:Stop() + self.PilotSound:Stop() + end + + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_allclass/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_allclass/shared.lua new file mode 100644 index 000000000..520bbb6e8 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_allclass/shared.lua @@ -0,0 +1,319 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + SWEP.Slot = 2 +if CLIENT then + SWEP.PrintName = "All Class" + + + function SWEP:ResetBackstabState() + self.NextBackstabIdle = nil + self.BackstabState = false + self.NextAllowBackstabAnim = CurTime() + 0.8 + end + + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if IsValid(v) && v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if IsValid(v) && v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_wrench.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Bat.Miss") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") +SWEP.HoldTypeHL2 = "melee" +local SpeedTable = { +{40, 1.6}, +{80, 1.4}, +{120, 1.2}, +{160, 1.1}, +} + +SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") +SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") + +SWEP.MinDamage = 0.5 +SWEP.MaxDamage = 1.75 + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.CriticalChance = 11 +SWEP.NoCModelOnStockWeapon = false + +SWEP.HoldType = "MELEE_ALLCLASS" +SWEP.BackstabAngle = 180 +SWEP.ShouldOccurFists = true +SWEP.DamageType = DMG_CLUB + + +function SWEP:InspectAnimCheck() + if (IsValid(self.Owner)) then + self.Owner:SetPoseParameter("r_hand_grip",0.0) + self.Owner:SetPoseParameter("r_arm",1.5) + end + + self:CallBaseFunction("InspectAnimCheck") +end +function SWEP:ShouldBackstab(ent) + if self.Owner:GetPlayerClass() == "spy" then + self.BaseDamage = 40 + self.CriticalChance = 0 + if not ent then + local tr = self:MeleeAttack(true) + ent = tr.Entity + end + + if not IsValid(ent) or not self.Owner:CanDamage(ent) or ent:Health()<=0 or not ent:CanReceiveCrits() or inspecting == true or inspecting_post == true then + return false + end + + if not self.BackstabCos then + self.BackstabCos = math.cos(math.rad(self.BackstabAngle * 0.5)) + end + + local v1 = ent:GetPos() - self.Owner:GetPos() + local v2 = ent:GetAngles():Forward() + + v1.z = 0 + v2.z = 0 + v1:Normalize() + v2:Normalize() + + return v1:Dot(v2) > self.BackstabCos + end +end + +function SWEP:Think() + if (IsValid(self.Owner)) then + self.Owner:SetPoseParameter("r_arm",1.5) + self.Owner:SetPoseParameter("r_hand_grip",0) + end + if self.Owner:GetPlayerClass() == "scout" then + self.BaseDamage = 35 + self.Primary.Delay = 0.5 + elseif self.Owner:GetPlayerClass() == "spy" then + self.BaseDamage = 40 + self.MeleeAttackDelay = 0 + else + if (!self.Owner:IsHL2() and self.Owner:GetPlayerClass() != "mercenary") then + self.HoldType = "MELEE_ALLCLASS" + self:SetWeaponHoldType("MELEE_ALLCLASS") + else + self.HoldType = "MELEE" + self:SetWeaponHoldType("MELEE") + end + if self.Owner:GetPlayerClass() == "spy" then + self.MeleeAttackDelay = 0 + else + self.MeleeAttackDelay = 0.25 + end + end + + if self.Owner:GetPlayerClass() == "engineer" then + self.NoHitSound = true + self.UpgradeSpeed = 25 + self.GlobalCustomHUD = {HudAccountPanel = true} + end + self.BaseClass.Think(self) +end + + +function SWEP:Critical(ent,dmginfo) + if self.Owner:GetPlayerClass() == "spy" then + if self:ShouldBackstab(ent) then + return true + end + end + + return self:CallBaseFunction("Critical", ent, dmginfo) +end + +function SWEP:PredictCriticalHit() + if self:ShouldBackstab() then + return true + end +end + + +function SWEP:OnMeleeHit(tr) + if self.Owner:GetPlayerClass() == "engineer" then + if tr.Entity and tr.Entity:IsValid() then + if tr.Entity:IsBuilding() then + local ent = tr.Entity + + if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then + if ent.Sapped == true then + self.Owner:EmitSoundEx("Weapon_Sapper.Removed") + ent.Sapped = false + end + if SERVER then + + local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) + if m > 0 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + self.Owner:RemoveAmmo(m, TF_METAL) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-m) + umsg.End() + elseif ent:GetState() == 1 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + else + self.Owner:EmitSoundEx(self.HitBuildingFailure) + end + end + end + end + elseif tr.HitWorld then + self:EmitSound(self.HitWorld) + end + end + + if self.Owner:GetPlayerClass() == "spy" then + if self:Critical() then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + end + end +end + + +function SWEP:SecondaryAttack() + if self.Owner:GetPlayerClass() == "engineer" then + self:SetNextSecondaryFire(CurTime() + 0.5) + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 75)) do + if v:IsBuilding() and v:GetOwner() == self.Owner then + if v:GetClass() == "obj_sentrygun" then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + --print(builder.MovedBuildingLevel) + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 2 0") + end + elseif v:GetClass() == "obj_dispenser" then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 0 0") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != true then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 1 0") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != false then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 1 1") + end + end + end + end + end +end + + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if self:GetItemData().model_player == "models/weapons/c_models/c_frying_pan/c_frying_pan.mdl" then + self.HitRobot = Sound("MVM_FryingPan.HitFlesh") + self.HitFlesh = Sound("FryingPan.HitFlesh") + self.HitWorld = Sound("FryingPan.HitWorld") + end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_ham/c_ham.mdl" then + self.HitFlesh = Sound("Weapon_HolyMackerel.HitFlesh") + self.HitWorld = Sound("Weapon_HolyMackerel.HitWorld") + end + if self:GetItemData().model_player == "models/weapons/c_models/c_saxxy/c_saxxy.mdl" then + self.HitWorld = Sound("Saxxy.HitWorld") + end + self.NameOverride = nil + + if game.SinglePlayer() then + self:CallOnClient("ResetBackstabState", "") + elseif CLIENT then + self:ResetBackstabState() + end + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON") + end + if self.Owner:GetPlayerClass() == "spy" then + if self:Critical() then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_ampgun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_ampgun/shared.lua new file mode 100644 index 000000000..0918dd3e2 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_ampgun/shared.lua @@ -0,0 +1,461 @@ +local function MedigunEffectName(i, t) + if i==2 then + if t==3 then + return "medicgun_beam_blue" + else + return "medicgun_beam_red" + end + elseif i>1 then + if t==2 then + return "medicgun_beam_blue_invun" + else + return "medicgun_beam_red_invun" + end + end +end + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + + self:DTVar("Entity", 0, "BeamEntity") + self:DTVar("Entity", 1, "TargetEntity") +end + +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMedigunEffect(i, target) + if self.LastEffect==i then return end + + if IsValid(self.dt.BeamEntity) then + self.dt.BeamEntity:Remove() + self.dt.BeamEntity = NULL + end + if IsValid(self.InfoTarget) then + self.InfoTarget:Remove() + self.InfoTarget = NULL + end + + if i>0 and IsValid(target) then + local t = GAMEMODE:EntityTeam(self.Owner) + local effect = MedigunEffectName(i, t) + + local tar = ents.Create("info_dummy") + tar:SetPos(target:GetPos() + Vector(0,0,30)) + tar:Spawn() + tar:SetParent(target) + tar:SetName(tostring(tar)) + + self.InfoTarget = tar + + local beam = ents.Create("info_particle_system") + beam:SetPos(self:GetPos()) + beam:SetParent(self) + beam:SetKeyValue("effect_name",effect) + beam:SetKeyValue("cpoint1", tar:GetName()) + beam:SetKeyValue("start_active", "1") + beam:Spawn() + beam:Activate() + + self.dt.TargetEntity = target + self.dt.BeamEntity = beam + else + self.dt.TargetEntity = NULL + end + + self.LastEffect = i +end + +function SWEP:SetMedigunMuzzleEffect(i) + if self.LastEffect2==i then return end + + umsg.Start("SetMedigunMuzzleEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect2 = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Ampgun" +SWEP.Slot = 1 +SWEP.CustomHUD = {HudMedicCharge = true} + +--[[ +function SWEP:SetMedigunEffect(p, t) + if IsValid(p) and IsValid(t) then + self.MedigunBeam = p + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetTargetEntity(t) + HudHealingTargetID:SetVisible(true) + end + else + self.MedigunBeam = nil + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetVisible(false) + end + end +end +]] + +function SWEP:SetMedigunMuzzleEffect(i) + if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then + return + end + + if self.LastEffect2==i then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==2 then + if t==3 then + effect = "medicgun_invulnstatus_fullcharge_blue" + else + effect = "medicgun_invulnstatus_fullcharge_red" + end + end + + self.Owner:GetViewModel():StopParticles() + self:StopParticles() + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect2 = i +end + +usermessage.Hook("SetMedigunMuzzleEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + + if IsValid(w) and w.SetMedigunMuzzleEffect then + w:SetMedigunMuzzleEffect(i) + end +end) + +function SWEP:ModelDrawn(view) + if IsValid(self.dt.BeamEntity) then + local wep, att + if view then + wep = (IsValid(self.CModel) and self.CModel and (IsValid(self.ExtraCModel) and self.ExtraCModel)) or self.Owner:GetViewModel() + else + wep = self + end + att = wep:LookupAttachment("muzzle") + att = wep:GetAttachment(att) + if not att then return end + + self.dt.BeamEntity:SetPos(att.Pos) + self.dt.BeamEntity:SetAngles(att.Ang) + end +end + +end + +PrecacheParticleSystem("medicgun_beam_red") +PrecacheParticleSystem("medicgun_beam_red_invun") +PrecacheParticleSystem("medicgun_beam_blue") +PrecacheParticleSystem("medicgun_beam_blue_invun") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_medigun_medic.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_medigun.mdl" +SWEP.Crosshair = "tf_crosshair5" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("WeaponMedigun.Healing") +SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") +SWEP.ChargedSound = Sound("WeaponMedigun.Charged") + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "SECONDARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) +SWEP.Range = 500 + +SWEP.MinHealRate = 24 +SWEP.MaxHealRate = 72 +SWEP.MinLastDamageTime = 10 +SWEP.MaxLastDamageTime = 15 + +SWEP.UberchargeRate = 2.5 + +function SWEP:CreateSounds() + self.ShootSoundLoop = CreateSound(self, self.ShootSound) + self.ChargedLoop = CreateSound(self, self.ChargedSound) + self.SoundsCreated = true +end + +function SWEP:SetHealTarget(e) + self.Target = e + if SERVER then + self:SetMedigunEffect(1, e) + if IsValid(e) then + GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) + end + end +end + +function SWEP:ClearHealTarget() + local e = self.Target + self.Target = nil + if SERVER then + self:SetMedigunEffect(0) + if IsValid(e) then + GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) + end + end +end + +local function medigun_trace_condition(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsTFPlayer() and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 and + not tr.Entity:HasNPCFlag(NPC_CANNOTHEAL) +end + +function SWEP:PrimaryAttack() + if not self.Firing then + local start = self.Owner:GetShootPos() + local endpos = start + self.Owner:GetAimVector() * self.Range + local tr = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition, self) + + self.CanInspect = false + + if medigun_trace_condition(tr, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) + self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_PREFIRE) + self.ShootSoundLoop:Play() + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then + self:EmitSound(self.ShootSound2) + self.NextDeniedSound = CurTime() + 0.5 + end + end + + self:StopTimers() +end + +function SWEP:Reload() +end + +function SWEP:StopFiring() + if IsValid(self.Target) and not self.Target:IsPlayer() and self.Target:Alive() then + self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") + end + + self.Firing = false + self:ClearHealTarget() + + self.CanInspect = true + + self.ShootSoundLoop:Stop() + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_POSTFIRE) + self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 +end + +function SWEP:Think() + self:TFViewModelFOV() + + if CLIENT then + if self.Owner==LocalPlayer() then + if self.dt.TargetEntity ~= self.LastTargetEntity then + if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.IsDeployed = true + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.NextIdle2 and CurTime()>=self.NextIdle2 then + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.Firing and SERVER then + if not self.Owner:KeyDown(IN_ATTACK) or not IsValid(self.Target) or self.Target:Health()<=0 then + self:StopFiring() + return + elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then + self.NextRangeCheck = CurTime() + 0.2 + if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then + self:StopFiring() + return + end + end + + if IsValid(self.Target) then + local maxhealth = self.Target:GetMaxHealth() + local maxoverheal = self.Target:GetMaxOverheal() + + if self.OverhealMultiplier then + maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) + end + + if not self.NextHeal or CurTime()>self.NextHeal then + if self.NextHeal then + local err = (CurTime() - self.NextHeal) / self.LastHealRate + self.HealErrorCumul = (self.HealErrorCumul or 0) + err + + local add = math.floor(self.HealErrorCumul) + self.HealErrorCumul = self.HealErrorCumul - add + + --[[if self.Target:Health()self.NextCharge then + if self.NextCharge then + local err = (CurTime() - self.NextCharge) / self.LastChargeRate + self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err + + local add = math.floor(self.ChargeErrorCumul) + self.ChargeErrorCumul = self.ChargeErrorCumul - add + + local ch = self.Owner:GetNWInt("Ubercharge") + if ch<100 then + ch = math.Clamp(ch + 1 + add, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + if ch>=100 then + self.Owner:Speak("TLK_PLAYER_CHARGEREADY") + self.ChargedLoop:Play() + self:SetMedigunMuzzleEffect(1) + end + end + end + + local rate = self.UberchargeRate + if self.Target:Health()>maxhealth then + rate = rate * 0.5 + end + + if self.UberchargeRateMultiplier then + rate = rate * self.UberchargeRateMultiplier + end + + self.LastChargeRate = rate + self.NextCharge = CurTime() + 1 / rate + end + end + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.Owner:GetNWInt("Ubercharge")>=100 then + self.ChargedLoop:Play() + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.ShootSoundLoop and self.ChargedLoop then + self.ShootSoundLoop:Stop() + self.ChargedLoop:Stop() + end + + self.Firing = false + + if SERVER then + self:ClearHealTarget() + self:SetMedigunMuzzleEffect(0) + else + if self.Owner == LocalPlayer() then + HudHealingTargetID:SetVisible(false) + self.LastTargetEntity = nil + end + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_base/cl_init.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/cl_init.lua new file mode 100644 index 000000000..b19eb4a00 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_base/cl_init.lua @@ -0,0 +1,398 @@ +AddCSLuaFile() +include('shared.lua') + + +SWEP.PrintName = "Scripted Weapon" + +SWEP.Slot = 0 +SWEP.SlotPos = 10 +SWEP.DrawAmmo = true +SWEP.DrawCrosshair = true +SWEP.DrawWeaponInfoBox = false +SWEP.BounceWeaponIcon = false +SWEP.WepSelectIcon = surface.GetTextureID( "weapons/swep" ) +SWEP.SwayScale = 0 -- 0.5 +SWEP.BobScale = 0 -- formerly 0.35, no more viewbobbing until we port cstrike's viewbob + +--[[ +hook.Add("HUDPaint", "testlol", function() + draw.Text{text="Current sequence = "..LocalPlayer():GetViewModel():GetSequence(),pos={10, 10}} + draw.Text{text="Cycle = "..LocalPlayer():GetViewModel():GetCycle(),pos={10, 40}} +end)]] + +hook.Add("Think", "TFCheckWeaponChanged", function() + for _,v in pairs(player.GetAll()) do + if v:GetActiveWeapon() ~= v.LastActiveWeapon then + if IsValid(v.LastActiveWeapon) and v.LastActiveWeapon.ClearParticles then + v.LastActiveWeapon:ClearParticles() + end + + --MsgFN("Old weapon : %s", tostring(v.LastActiveWeapon)) + if IsValid(v.LastActiveWeapon) and v.LastActiveWeapon.NextDeployed and v.LastActiveWeapon.Holster then + v.LastActiveWeapon:Holster() + end + v.LastActiveWeapon = v:GetActiveWeapon() + if IsValid(v.LastActiveWeapon) and not v.LastActiveWeapon.NextDeployed and v.LastActiveWeapon.Deploy then + v.LastActiveWeapon:Deploy() + end + --MsgFN("New weapon : %s", tostring(v.LastActiveWeapon)) + + if IsValid(v.LastActiveWeapon) and v.LastActiveWeapon.ResetParticles then + v.LastActiveWeapon:ResetParticles() + end + end + end +end) + +function SWEP:InitializeCModel() +end + +function SWEP:InitializeWModel2() + if not self.WorldModelOverride then return end +--Msg("InitializeWModel2\n") + local wmodel = self.WorldModelOverride2 or self.WorldModelOverride or self.WorldModel + + if IsValid(self.WModel2) then + --self.WModel2:SetModel(wmodel) + else + self.WModel2 = ClientsideModel(wmodel) + if not IsValid(self.WModel2) then return end + + --self.WModel2:SetPos(self.Owner:GetPos()) + --self.WModel2:SetAngles(self.Owner:GetAngles()) + --self.WModel2:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) + --self.WModel2:SetParent(self.Owner) + --self.WModel2:SetNoDraw(true) + --self.WModel2:SetColor(Color(255, 255, 255)) + + if wmodel == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" then + --self.WModel2:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") + end + end + + if IsValid(self.WModel2) then + self.WModel2.Player = self.Owner + self.WModel2.Weapon = self + + if self.MaterialOverride then + --self.WModel2:SetMaterial(self.MaterialOverride) + end + end +end + +function SWEP:InitializeAttachedModels() +--Msg("InitializeAttachedModels\n") + if IsValid(self.AttachedWModel) then + if self.AttachedWorldModel then + self.AttachedWModel:SetModel(self.AttachedWorldModel) + else + self.AttachedWModel:Remove() + end + elseif self.AttachedWorldModel then + local ent = (IsValid(self.WModel2) and self.WModel2) or self + + self.AttachedWModel = ClientsideModel(self.AttachedWorldModel) + self.AttachedWModel:SetPos(ent:GetPos()) + self.AttachedWModel:SetAngles(ent:GetAngles()) + self.AttachedWModel:AddEffects(EF_BONEMERGE) + self.AttachedWModel:SetParent(ent) + self.AttachedWModel:SetNoDraw(true) + end + + if IsValid(self.AttachedWModel) then + self.AttachedWModel.Player = self.Owner + self.AttachedWModel.Weapon = self + + if self.MaterialOverride then + self.AttachedWModel:SetMaterial(self.MaterialOverride) + end + end + + if IsValid(self.AttachedVModel) then + if self.AttachedViewModel then + self.AttachedVModel:SetModel(self.AttachedViewModel) + else + self.AttachedVModel:Remove() + end + elseif self.AttachedViewModel then + local ent = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() + + if not IsValid(ent) then return end + + self.AttachedVModel = ClientsideModel(self.AttachedViewModel) + self.AttachedVModel:SetPos(ent:GetPos()) + self.AttachedVModel:SetAngles(ent:GetAngles()) + self.AttachedVModel:AddEffects(EF_BONEMERGE) + self.AttachedVModel:SetParent(ent) + self.AttachedVModel:SetNoDraw(true) + end + + if IsValid(self.AttachedVModel) then + self.AttachedVModel.Player = self.Owner + self.AttachedVModel.Weapon = self + + if self.MaterialOverride then + self.AttachedVModel:SetMaterial(self.MaterialOverride) + end + end +end + +-- Attached viewmodels seem to lose their parent when the player exits a vehicle, we'll force ViewModelDrawn to re-parent them to the player's viewmodel if the player has entered a vehicle +local LastVehicle = NULL +hook.Add("Think", "TFCheckPlayerInVehicle", function() + local v = LocalPlayer():GetVehicle() + + if v ~= LastVehicle then + if IsValid(v) then + for _,w in pairs(LocalPlayer():GetWeapons()) do + w.FixViewModel = true + end + end + LastVehicle = v + end +end) + +function SWEP:RenderCModel() + if IsValid(self.CModel) then + self.CModel:DrawModel() + end + + if IsValid(self.ExtraCModel) then + self.ExtraCModel:DrawModel() + end + + if IsValid(self.AttachedVModel) then + self.AttachedVModel:DrawModel() + end +end + +function SWEP:RenderWModel() + if IsValid(self.WModel2) then + ----self.WModel2:CreateShadow() + --self.WModel2:DrawModel() + end + + if IsValid(self.AttachedWModel) then + --self.AttachedWModel:CreateShadow() + self.AttachedWModel:DrawModel() + end +end + +function SWEP:DrawWeaponSelection(x, y, w, h, alpha) + surface.SetDrawColor(255, 255, 255, alpha) + local tex = self:GetIconTextureID() or nil + if tex == nil then + draw.SimpleText(self.PrintName, "TFHudSelectionText", x + w / 2, y + h * 0.4, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER) + return + end + surface.SetTexture(tex) + local rx, ry = surface.GetTextureSize(tex) + + -- Borders + y = y - 10 + x = x + 50 + w = w - 20 + + -- Draw that mother + surface.DrawTexturedRect( x, y, w * 0.6 , ( w / 1.2 ) ) + + -- Draw weapon info box + self:PrintWeaponInfo( x + w + 20, y + h * 0.95, alpha ) +end + +function SWEP:ViewModelDrawn() + + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat(),2) + local vm = self.Owner:GetViewModel() + vm.Player = self.Owner + + if not self.IsDeployed then + local seq = vm:GetSequence() + if vm:GetSequenceActivity(seq) == self.VM_DRAW then + self.DeploySequence = seq + end + + if self.Owner.TempAttributes and self.Owner.TempAttributes.DeployTimeMultiplier then + vm:SetPlaybackRate(1 / self.Owner.TempAttributes.DeployTimeMultiplier) + else + vm:SetPlaybackRate(1) + end + else + if self.DeploySequence ~= true and vm:GetSequence() ~= self.DeploySequence then + vm:SetPlaybackRate(1) + self.DeploySequence = true + end + end + + if self.FixViewModel then + if IsValid(self.CModel) then + self.CModel:SetParent(vm) + end + self.FixViewModel = false + end + + if self.ViewModelOverride --[[and self:GetModel()~=self.ViewModelOverride]] then + self.ViewModel = self.ViewModelOverride + self:SetModel(self.ViewModelOverride) + vm:SetModel(self.ViewModelOverride) + end + + if self.HasCModel and not IsValid(self.CModel) then + return + end + + self.DrawingViewModel = true + if IsValid(self.CModel) then + self.CModel:SetSkin(self.WeaponSkin or 0) + //self.CModel:SetMaterial(self.WeaponMaterial or 0) + end + if IsValid(self.AttachedVModel) then + self.AttachedVModel:SetSkin(self.WeaponSkin or 0) + //self.AttachedVModel:SetMaterial(self.WeaponMaterial or 0) + end + self.Owner:GetViewModel():SetSkin(self.WeaponSkin or 0) + //self.Owner:GetViewModel():SetMaterial(self.WeaponMaterial or 0) + + if self.ViewModelFlip then + render.CullMode(MATERIAL_CULLMODE_CW) + end + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end + + self:StartVisualOverrides() + + self:RenderCModel() + + self:EndVisualOverrides() + if self.ViewModelFlip then + render.CullMode(MATERIAL_CULLMODE_CCW) + end + + self:ModelDrawn(true) +end + + +-- Instead of using using DrawWorldModel to render the world model, do it here (at least it guarantees that it will be always drawn if the player is visible) +-- any potential problem with this? +hook.Add("PostPlayerDraw", "ForceDrawTFWorldModel", function(pl) + if pl.RenderingWorldModel then + render.SetBlend(1) + return + end + + if IsValid(pl:GetActiveWeapon()) then + end +end) + +-- Drawing the world model seems to redraw the player as well, this is quite annoying when a material is forced on the world model +-- as the player will be redrawn using that material as well +-- Just make players invisible if their world model is being rendered +hook.Add("PrePlayerDraw", "TFWorldModelHidePlayer", function(pl) + if pl.RenderingWorldModel then + render.SetBlend(0) + end +end) + +function SWEP:ModelDrawn(viewmode) + +end + +function SWEP:DoMuzzleFlash() + local betaeffect = self.BetaMuzzle + local ent + + if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then + ent = self.CModel + else + ent = self:GetWorldModelEntity() + end + + self:ResetParticles() + + if betaeffect then + local effectdata = EffectData() + effectdata:SetEntity(self) + util.Effect(betaeffect, effectdata) + else + --ent:MuzzleFlash() + ParticleEffectAttach(self.MuzzleEffect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end +end + +function SWEP:Draw() +end + +usermessage.Hook("DoMuzzleFlash", function(msg) + local w = msg:ReadEntity() + if IsValid(w) and w.DoMuzzleFlash then + w:DoMuzzleFlash() + end +end) + +usermessage.Hook("CallTFWeaponFunction", function(msg) + local w = msg:ReadEntity() + local f = msg:ReadString() + local p = msg:ReadString() + + if IsValid(w) and w[f] then + w[f](w, p) + end +end) + +usermessage.Hook("TF2ShellEject", function(msg) + local w = msg:ReadEntity() + + if IsValid(w) then + if (string.find(w:GetClass(),"smg") or string.find(w:GetClass(),"pistol") or string.find(w:GetClass(),"revolver")) then + --PrintTable(self.CModel:GetAttachments()) + if (IsValid(w.CModel)) then + if (w.CModel:GetAttachment(w.CModel:LookupAttachment("eject_brass"))) then + local effectdata = EffectData() + if (LocalPlayer():ShouldDrawLocalPlayer()) then + + effectdata:SetEntity( w.Owner:GetViewModel() ) + effectdata:SetOrigin( w:GetAttachment(w:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(w:GetAttachment(w:LookupAttachment("eject_brass")).Ang.x,w:GetAttachment(w:LookupAttachment("eject_brass")).Ang.y,w.WModel:GetAttachment(w.CModel:LookupAttachment("eject_brass")).Ang.z) ) + + else + + effectdata:SetEntity( w.Owner:GetViewModel() ) + effectdata:SetOrigin( w.CModel:GetAttachment(w.CModel:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(w.CModel:GetAttachment(w.CModel:LookupAttachment("eject_brass")).Ang.x,w.CModel:GetAttachment(w.CModel:LookupAttachment("eject_brass")).Ang.y,w.CModel:GetAttachment(w.CModel:LookupAttachment("eject_brass")).Ang.z) ) + + end + util.Effect( "ShellEject", effectdata ) + end + end + end + end +end) +usermessage.Hook("PlayTFWeaponWorldReload", function(msg) + local w = msg:ReadEntity() + + if IsValid(w) and w.ReloadSound and (w.Owner ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer()) then + w:StopSound(w.ReloadSound) + w:EmitSound(w.ReloadSound) + end +end) +usermessage.Hook("PlayTFWeaponWorldReloadFinish", function(msg) + local w = msg:ReadEntity() + + if IsValid(w) and w.ReloadSoundFinish and (w.Owner ~= LocalPlayer() or LocalPlayer():ShouldDrawLocalPlayer()) then + w:StopSound(w.ReloadSoundFinish) + w:EmitSound(w.ReloadSoundFinish) + end +end) + +hook.Add("EntityRemoved", "TFWeaponRemoved", function(ent) + if ent.IsTFWeapon then + if IsValid(ent.CModel) then ent.CModel:Remove() end + if IsValid(ent.WModel2) then ent.WModel2:Remove() end + if IsValid(ent.AttachedVModel) then ent.AttachedVModel:Remove() end + if IsValid(ent.AttachedWModel) then ent.AttachedWModel:Remove() end + end +end) diff --git a/gamemodes/tf/entities/weapons/tf_weapon_base/init.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/init.lua new file mode 100644 index 000000000..bd866d3d7 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_base/init.lua @@ -0,0 +1,280 @@ +AddCSLuaFile() +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") +AddCSLuaFile("shd_util.lua") +AddCSLuaFile("shd_anim.lua") +AddCSLuaFile("shd_sound.lua") +AddCSLuaFile("shd_crits.lua") + +include("shared.lua") + +SWEP.Weight = 5 +SWEP.AutoSwitchTo = false +SWEP.AutoSwitchFrom = false +SWEP.HoldType = "IDLE" + +--CreateConVar("tf_weapon_deploy_speed", "0.17", {FCVAR_NOTIFY, FCVAR_SERVER_CAN_EXECUTE}, "The deploy speed of everybody's weapons on the server.") + +hook.Add("PlayerAuthed", "TF_SendAllWeaponData", function(pl, steamid, uniqueid) + for _,v in pairs(ents.GetAll()) do + if v.SendExtraAttributes then + v:SendExtraAttributes(pl) + end + end +end) + +function SWEP:CallOnOwnerClient(func, param) + if not self.Owner or not self.Owner:IsValid() then return end + + umsg.Start("CallTFWeaponFunction", self.Owner) + umsg.Entity(self) + umsg.String(func) + umsg.String(param or "") + umsg.End() +end + +function SWEP:CallOnClients(func, param, rp) + umsg.Start("CallTFWeaponFunction", rp) + umsg.Entity(self) + umsg.String(func) + umsg.String(param or "") + umsg.End() +end + +-- obsolete +function SWEP:GetTextureDecal(trace) + local texture + if trace.MatType == 77 then + texture = "decals/metal/shot" .. math.random(1,5) + sound.Play( "physics/metal/metal_solid_impact_bullet" .. math.random(1,4) .. ".wav", trace.HitPos ) + elseif trace.MatType == 89 then + texture = "decals/glass/shot" .. math.random(1,5) + sound.Play( "physics/glass/glass_impact_bullet" .. math.random(1,4) .. ".wav", trace.HitPos ) + elseif trace.MatType == 87 then + texture = "decals/wood/shot" .. math.random(1,5) + sound.Play( "physics/wood/wood_solid_impact_bullet" .. math.random(1,5) .. ".wav", trace.HitPos ) + elseif trace.MatType == 67 then + texture = "decals/concrete/tf_shot" .. math.random(1,5) + elseif trace.MatType == 68 then + texture = "decals/dirtshot" .. math.random(1,4) + else + texture = "decals/concrete/shot" .. math.random(1,4) + end + local decal = ents.Create( "infodecal" ) + decal:SetPos(trace.HitPos) + decal:SetKeyValue("texture", texture) + decal:Spawn() + decal:Activate() +end + +function SWEP:CalculateAmmoGiven() + if self.Owner.AmmoMax and self.Owner.AmmoMax[self.Primary.Ammo] then + return self:Ammo1() / self.Owner.AmmoMax[self.Primary.Ammo] + else + return 0.5 + end +end + +function SWEP:EmitSound(soundName, soundLevel, pitchPercent, volume, channel, soundFlags, dsp, filter) + if(!soundLevel) then + soundLevel = 75 + end + if(!pitchPercent) then + pitchPercent = 100 + end + if(!volume) then + volume = 1 + end + if(!channel) then + channel = CHAN_AUTO + end + if(!soundFlags) then + soundFlags = 0 + end + if(!dsp) then + dsp = 0 + end + if SERVER then + if(!filter) then + local rf = RecipientFilter() + rf:AddAllPlayers() + filter = rf + end + self:StopSound(soundName) + EmitSound(soundName, self:GetPos(), self:EntIndex(), channel, volume, soundLevel, soundFlags, pitch, dsp, filter) + else + self:StopSound(soundName) + EmitSound(soundName, self:GetPos(), self:EntIndex(), channel, volume, soundLevel, soundFlags, pitch, dsp, nil) + end +end + + +function SWEP:OnDrop() + local mdl + if self.WorldModelOverride2 then + mdl = self.WorldModelOverride2 + else + mdl = (self:GetItemData().model_world or self:GetItemData().model_player) or self.WorldModel + end + + timer.Remove("AutoReload") + --[[ + local drop = ents.Create("prop_physics") + drop:SetSolid(SOLID_VPHYSICS) + drop:SetModel(mdl) + drop:PhysicsInit(SOLID_VPHYSICS) + drop:Spawn() + drop.AmmoPercent = self.AmmoGiven or 100 + drop:Activate() + timer.Simple(15, function() + if (IsValid(drop)) then + drop:Remove() + end + end) + if mdl == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" then + drop:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") + end + + if self.CustomMaterialOverride then + drop:SetMaterial(self.CustomMaterialOverride) + end + + if self.CustomColorOverride then + drop:SetColor(self.CustomColorOverride) + end + + drop:SetSkin(self.WeaponSkin or 0) + drop:SetMaterial(self.WeaponMaterial or 0) + + drop:SetPos(self:GetPos()) + drop:SetAngles(self:GetAngles()) + + drop:SetMoveType(MOVETYPE_VPHYSICS) + drop:SetCollisionGroup(COLLISION_GROUP_WORLD) + + local phys = drop:GetPhysicsObject() + if phys:IsValid() then + phys:SetMass(10) + phys:Wake() + if self.DropVelocity then + phys:SetVelocity(self.DropVelocity) + end + end + + local ammo = ents.Create("item_droppedweapon") + ammo:SetSolid(SOLID_VPHYSICS) + ammo:SetModel("models/items/ammopack_medium.mdl") + ammo:PhysicsInit(SOLID_VPHYSICS) + ammo:Spawn() + ammo.AmmoPercent = self.AmmoGiven or 100 + ammo:Activate() + + if mdl == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" then + ammo:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") + end + + if self.CustomMaterialOverride then + ammo:SetMaterial(self.CustomMaterialOverride) + end + + if self.CustomColorOverride then + ammo:SetColor(self.CustomColorOverride) + end + + ammo:SetSkin(self.WeaponSkin or 0) + ammo:SetMaterial(self.WeaponMaterial or 0) + + ammo:SetPos(self:GetPos()) + ammo:SetAngles(self:GetAngles()) + + ammo:SetMoveType(MOVETYPE_VPHYSICS) + ammo:SetCollisionGroup(COLLISION_GROUP_WORLD) + + timer.Simple(15, function() + if (IsValid(ammo)) then + ammo:Remove() + end + end) + + local phys = ammo:GetPhysicsObject() + if phys:IsValid() then + phys:SetMass(10) + phys:Wake() + if self.ammoVelocity then + phys:SetVelocity(self.ammoVelocity) + end + end + + timer.Stop("AutoReload") + ]] + self:Remove() +end + +function SWEP:DropAsAmmo() + self.AmmoGiven = self:CalculateAmmoGiven() * 100 + self.DropVelocity = self.Owner:GetVelocity() + self.Owner:DropWeapon(self) +end +--[[ +function SWEP:DropAsAmmo() + local mdl + if self.WorldModelOverride2 then + mdl = self.WorldModelOverride2 + else + mdl = (self:GetItemData().model_world or self:GetItemData().model_player) or self.WorldModel + end + + local drop = ents.Create("item_droppedweapon") + drop:SetSolid(SOLID_VPHYSICS) + drop:SetModel(mdl) + drop:PhysicsInit(SOLID_VPHYSICS) + drop:Spawn() + drop.AmmoGiven = self:CalculateAmmoGiven() * 100 + drop:Activate() + + if mdl == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" then + drop:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") + end + drop:SetSkin((self.Owner:Team() == TEAM_BLU and 1) or 0) + + local mat = drop:GetBoneMatrix(0) + local invrot + + if mat then + invrot = mat:GetAngles():GetInverse() + end + + local bonename = drop:GetBoneName(0) + mat = self.Owner:GetBoneMatrix(self.Owner:LookupBone(bonename)) + if mat then + local pos = mat:GetTranslation() + mat:SetTranslation(vector_origin) + + mat:Rotate(invrot) + + local ang = mat:GetAngles() + ang.y = ang.y + self.Owner:EyeAngles().y + + mat = Matrix() + mat:Rotate(Angle(0, self.Owner:EyeAngles().y, 0)) + mat:Translate(pos-self.Owner:GetPos()) + + drop:SetPos(self.Owner:GetPos() + mat:GetTranslation()) + drop:SetAngles(ang) + else + drop:SetPos(self:GetPos() + 40 * vector_up) + drop:SetAngles(self:GetAngles()) + end + + drop:SetMoveType(MOVETYPE_VPHYSICS) + drop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + + local phys = drop:GetPhysicsObject() + if phys:IsValid() then + phys:SetMass(10) + phys:Wake() + phys:SetVelocity(self.Owner:GetVelocity()) + end +end +]] + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_base/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shared.lua new file mode 100644 index 000000000..7066a3f8b --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_base/shared.lua @@ -0,0 +1,2090 @@ +-- Not for use with Sandbox gamemode, so we don't care about this +AddCSLuaFile() + +SWEP.Author = "" +SWEP.Contact = "" +SWEP.Purpose = "" +SWEP.Instructions = "" +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.UseHands = true +SWEP.StartedReloading = false +SWEP.HoldTypeHL2 = "normal" +SWEP.ShootSound = Sound("Weapon_Scatter_Gun.Single") +SWEP.ShootCritSound = Sound("Weapon_Scatter_Gun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Scatter_Gun.WorldReload") +SWEP.ReloadSoundFinish = nil +SWEP.IsMeleeWeapon = false +local defaultdeployspeed = CreateConVar( "tf_default_deploy_speed", "1.34", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "LEGS!" ) +-- Sounds + +if CLIENT then + +function SWEP:DrawWorldModel( ) + local _Owner = self:GetOwner() + + if (!IsValid(self.WModel)) then + self.WModel = ents.CreateClientProp() + self.WModel:Spawn() + self.WModel:SetNoDraw(true) + else + if (IsValid(_Owner)) then + local t2 = _Owner:GetProxyVar("CritTeam") + local s2 = _Owner:GetProxyVar("CritStatus") + self.WModel:SetProxyVar("CritTeam",t2) + self.WModel:SetProxyVar("CritStatus",s2) + -- Specify a good position + + local model = self:GetItemData().model_world or self:GetItemData().model_player or self.WorldModel + if (self.WModel:GetModel() != model) then + self.WModel:SetModel(model) + end + local offsetVec = Vector(4, -2, 0) + local offsetAng = Angle(170, 180, 0) + if (_Owner:IsHL2()) then + local boneid = _Owner:LookupBone("ValveBiped.Bip01_R_Hand") -- Right Hand + if !boneid then return end + + local matrix = _Owner:GetBoneMatrix(boneid) + if !matrix then return end + + local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles()) + + self.WModel:SetPos(newPos) + self.WModel:SetAngles(newAng) + + self.WModel:SetupBones() + end + if (_Owner:GetNWBool("NoWeapon",false) == true) then + self.WModel:SetMaterial("color") + else + local mat = self.CustomMaterialOverride2 or self.MaterialOverride or self.WeaponMaterial or "" + if (self.WModel:GetMaterial() != mat) then + self.WModel:SetMaterial(mat) + end + end + self.WModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + self.WModel:SetPos(self:GetPos()) + self.WModel:SetAngles(self:GetAngles()) + self.WModel:SetParent(self.Owner) + self.WModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + else + self.WModel:SetPos(self:GetPos()) + self.WModel:SetAngles(self:GetAngles()) + end + self.WModel:DrawModel() + self.WModel:DrawShadow(true) + end + +end + +end + +-- Viewmodel FOV should be constant, don't change this + + +SWEP.ViewModelFlip = false +--eugh, another ugly hack. +if GetConVar("tf_righthand") then + if GetConVar("tf_righthand"):GetInt() == 0 then + SWEP.ViewModelFlip = false + else + SWEP.ViewModelFlip = false + end +end + +function SWEP:TranslateFOV( fov ) + return fov +end + +function SWEP:TFViewModelFOV() + if GetConVar("tf_use_viewmodel_fov"):GetInt() > 0 then + self.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() + else + self.ViewModelFOV = GetConVar( "viewmodel_fov" ) + end +end + +function SWEP:TFFlipViewmodel() + if GetConVar("tf_righthand"):GetInt() > 0 then + self.ViewModelFlip = false + else + self.ViewModelFlip = true + end +end +-- View/World model +SWEP.ViewModel = "models/weapons/v_pistol.mdl" +SWEP.WorldModel = "models/weapons/w_357.mdl" + +SWEP.IsTFWeapon = true + +SWEP.HasTeamColouredVModel = true +SWEP.HasTeamColouredWModel = true +SWEP.VMMinOffset = Vector(5, 0, -7) +SWEP.Primary.ClipSize = 8 +SWEP.Primary.DefaultClip = 0 +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0 +SWEP.Primary.QuickDelay = -1 +SWEP.Primary.NoFiringScene = false + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 0 +SWEP.Secondary.QuickDelay = -1 +SWEP.Secondary.NoFiringScene = false + +SWEP.m_WeaponDeploySpeed = 1.4 +SWEP.DeployDuration = 0.8 +SWEP.ReloadTime = 0.5 +SWEP.ReloadType = 0 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.00 + +SWEP.BaseDamage = 0 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.0 +SWEP.MaxDamageFalloff = 0.0 +SWEP.DamageModifier = 0 + +SWEP.IsRapidFire = false +SWEP.CriticalChance = 1 +SWEP.CritSpreadDuration = 2 + +SWEP.HasSecondaryFire = false + +SWEP.ProjectileShootOffset = Vector(0,0,0) + +SWEP.CanInspect = true + +SWEP.LastClass = "scout" + +SWEP.g_lateralBob = 0 +SWEP.g_verticalBob = 0 +CreateClientConVar("viewmodel_fov_tf", "54", true, false) +CreateClientConVar("tf_use_viewmodel_fov", "1", true, false) +CreateClientConVar("tf_righthand", "1", true, true) +CreateClientConVar("tf_sprintinspect", "0", true, true) +CreateClientConVar("tf_reloadinspect", "1", true, true) +CreateClientConVar("tf_use_min_viewmodels", "0", true, false) +local cvar_bob = CreateClientConVar("tf_cl_bob", "0.005", false, false) +local cvar_bobup = CreateClientConVar("tf_cl_bobup", "0.5", false, false) +local cvar_bobcycle = CreateClientConVar("tf_cl_bobcycle", "0.8", false, false) + +-- Initialize the weapon as a TF item +tf_item.InitializeAsBaseItem(SWEP) + +include("shd_util.lua") +include("shd_anim.lua") +include("shd_sound.lua") +include("shd_crits.lua") + +function SWEP:StopTimers() + timer.Stop("StartInspection") + timer.Stop("EndInspection") + timer.Stop("PostInspection") + inspecting = false + inspecting_post = false +end + +local bobtime = 0 +local lastbobtime = 0 +local lastspeed = 0 +local cycle = 0 +local speed = 0 +local flmaxSpeedDelta = 0 +local bob_offset = 0 +local function CalcViewModelBobHelper(self) + local cl_bob = cvar_bob:GetFloat() + local cl_bobcycle = math.max(cvar_bobcycle:GetFloat(), 0.1) + local cl_bobup = cvar_bobup:GetFloat() + + local ply = self.Owner + + if ply:ShouldDrawLocalPlayer() then return 0 end + + local cltime = CurTime() + local cycle = cltime - math.floor(cltime/cl_bobcycle)*cl_bobcycle + cycle = cycle / (cl_bobcycle) + if (cycle < cl_bobup) then + cycle = math.pi * cycle / cl_bobup + else + cycle = math.pi + math.pi*(cycle-cl_bobup)/(1.0 - cl_bobup) + end + + local velocity = ply:GetVelocity() + + //Find the speed of the player + local speed = ply:GetVelocity():Length2D(); + local flmaxSpeedDelta = math.max( 0, (CurTime() - cycle ) * 320.0 ); + + // don't allow too big speed changes + speed = math.Clamp( speed, speed-flmaxSpeedDelta, speed+flmaxSpeedDelta ); + speed = math.Clamp( speed, -320, 320 ); + + self.g_verticalBob = speed * cl_bob + self.g_verticalBob = self.g_verticalBob*0.3 + self.g_verticalBob*0.7*math.sin(cycle) + if (self.g_verticalBob > 4) then + self.g_verticalBob = 4 + elseif (self.g_verticalBob < -7) then + self.g_verticalBob = -7 + end + + local cycle2 = cltime - math.floor(cltime/(cl_bobcycle*2))*(cl_bobcycle*2) + cycle2 = cycle2 / (cl_bobcycle*2) + if (cycle2 < cl_bobup) then + cycle2 = math.pi * cycle2 / cl_bobup + else + cycle2 = math.pi + math.pi*(cycle2-cl_bobup)/(1.0 - cl_bobup) + end + + self.g_lateralBob = speed * cl_bob + self.g_lateralBob = self.g_lateralBob*0.3 + self.g_lateralBob*0.7*math.sin(cycle2) + if (self.g_lateralBob > 4) then + self.g_lateralBob = 4 + elseif (self.g_lateralBob < -7) then + self.g_lateralBob = -7 + end + return 0.0 +end +function SWEP:CalcViewModelBobHelper( ) + local cl_bob = cvar_bob:GetFloat() + local cl_bobcycle = math.max(cvar_bobcycle:GetFloat(), 0.1) + local cl_bobup = cvar_bobup:GetFloat() + + local ply = LocalPlayer() + + if ply:ShouldDrawLocalPlayer() then return 0 end + + local cltime = CurTime() + local cycle = cltime - math.floor(cltime/cl_bobcycle)*cl_bobcycle + cycle = cycle / (cl_bobcycle) + if (cycle < cl_bobup) then + cycle = math.pi * cycle / cl_bobup + else + cycle = math.pi + math.pi*(cycle-cl_bobup)/(1.0 - cl_bobup) + end + + local velocity = ply:GetVelocity() + + //Find the speed of the player + local speed = ply:GetVelocity():Length2D(); + local flmaxSpeedDelta = math.max( 0, (CurTime() - cycle ) * 320.0 ); + + // don't allow too big speed changes + speed = math.Clamp( speed, speed-flmaxSpeedDelta, speed+flmaxSpeedDelta ); + speed = math.Clamp( speed, -320, 320 ); + + self.g_verticalBob = speed * cl_bob + self.g_verticalBob = self.g_verticalBob*0.3 + self.g_verticalBob*0.7*math.sin(cycle) + if (self.g_verticalBob > 4) then + self.g_verticalBob = 4 + elseif (self.g_verticalBob < -7) then + self.g_verticalBob = -7 + end + + local cycle2 = cltime - math.floor(cltime/(cl_bobcycle*2))*(cl_bobcycle*2) + cycle2 = cycle2 / (cl_bobcycle*2) + if (cycle2 < cl_bobup) then + cycle2 = math.pi * cycle2 / cl_bobup + else + cycle2 = math.pi + math.pi*(cycle2-cl_bobup)/(1.0 - cl_bobup) + end + + self.g_lateralBob = speed * cl_bob + self.g_lateralBob = self.g_lateralBob*0.3 + self.g_lateralBob*0.7*math.sin(cycle2) + if (self.g_lateralBob > 4) then + self.g_lateralBob = 4 + elseif (self.g_lateralBob < -7) then + self.g_lateralBob = -7 + end + return 0.0 +end + +function SWEP:VectorMA( start, scale, direction, dest ) + --[[ + dest.x = start.x + scale * direction.x; + dest.y = start.y + scale * direction.y; + dest.z = start.z + scale * direction.z; + ]] + return Vector(start.x + scale * direction.x,start.y + scale * direction.y,start.z + scale * direction.z) +end + +local function VectorMA( start, scale, direction, dest ) + --[[ + dest.x = start.x + scale * direction.x; + dest.y = start.y + scale * direction.y; + dest.z = start.z + scale * direction.z; + ]] + return Vector(start.x + scale * direction.x,start.y + scale * direction.y,start.z + scale * direction.z) +end + +hook.Add("CalcViewModelView","TFViewmodelBob",function(wep, vm, oldpos, oldang, newpos, newang) + if (IsValid(wep.Owner)) then + if (!wep.Owner:IsHL2() and !string.find(wep:GetClass(),"tf_weapon")) then + wep.BobScale = 0 + local self = wep + -- actual code, for reference + --[[ + + Vector forward, right; + AngleVectors( angles, &forward, &right, NULL ); + + CalcViewmodelBob(); + + // Apply bob, but scaled down to 40% + VectorMA( origin, g_verticalBob * 0.4f, forward, origin ); + + // Z bob a bit more + origin[2] += g_verticalBob * 0.1f; + + // bob the angles + angles[ ROLL ] += g_verticalBob * 0.5f; + angles[ PITCH ] -= g_verticalBob * 0.4f; + + angles[ YAW ] -= g_lateralBob * 0.3f; + + // VectorMA( origin, g_lateralBob * 0.2f, right, origin ); + + ]] + if CLIENT then + local forward = wep.Owner:GetForward() + local right = wep.Owner:GetRight() + local origin = oldpos + local angles = oldang + CalcViewModelBobHelper(wep) + + // Apply bob, but scaled down to 40% + origin = VectorMA( origin, wep.g_verticalBob * 0.4, forward, origin ); + + // Z bob a bit more + origin.z = origin.z + wep.g_verticalBob * 0.1; + + // bob the angles + angles.r = angles.r + wep.g_verticalBob * 0.5; + angles.p = angles.p - wep.g_verticalBob * 0.4; + angles.y = angles.y - wep.g_lateralBob * 0.3; + + origin = VectorMA( origin, wep.g_lateralBob * 0.2, right, origin ); + return origin, angles + end + end + end +end) + +function SWEP:CalcViewModelView(vm, oldpos, oldang, newpos, newang) + if not self.VMMinOffset and self:GetItemData() then + local data = self:GetItemData() + if data.static_attrs and data.static_attrs.min_viewmodel_offset then + self.VMMinOffset = Vector(data.static_attrs.min_viewmodel_offset) + end + end + + + if GetConVar("tf_use_min_viewmodels"):GetBool() then -- TODO: Check for inspecting + oldpos = oldpos + (newang:Forward() * self.VMMinOffset.x) + oldpos = oldpos + (newang:Right() * self.VMMinOffset.y) + oldpos = oldpos + (newang:Up() * self.VMMinOffset.z) + end + if (IsValid(self.Owner) and string.StartWith(self.Owner:GetModel(),"models/infected/")) then + return oldpos, oldang + else + -- actual code, for reference + --[[ + + Vector forward, right; + AngleVectors( angles, &forward, &right, NULL ); + + CalcViewmodelBob(); + + // Apply bob, but scaled down to 40% + VectorMA( origin, g_verticalBob * 0.4f, forward, origin ); + + // Z bob a bit more + origin[2] += g_verticalBob * 0.1f; + + // bob the angles + angles[ ROLL ] += g_verticalBob * 0.5f; + angles[ PITCH ] -= g_verticalBob * 0.4f; + + angles[ YAW ] -= g_lateralBob * 0.3f; + + // VectorMA( origin, g_lateralBob * 0.2f, right, origin ); + + ]] + if CLIENT then + local forward = self.Owner:GetForward() + local right = self.Owner:GetRight() + local origin = oldpos + local angles = oldang + self:CalcViewModelBobHelper() + + // Apply bob, but scaled down to 40% + origin = self:VectorMA( origin, self.g_verticalBob * 0.4, forward, origin ); + + // Z bob a bit more + origin.z = origin.z + self.g_verticalBob * 0.1; + + // bob the angles + angles.r = angles.r + self.g_verticalBob * 0.5; + angles.p = angles.p - self.g_verticalBob * 0.4; + angles.y = angles.y - self.g_lateralBob * 0.3; + + origin = self:VectorMA( origin, self.g_lateralBob * 0.2, right, origin ); + return origin, angles + else + return oldpos, oldang + end + end +end + + +function SWEP:ProjectileShootPos() + local pos, ang = self.Owner:GetShootPos(), self.Owner:EyeAngles() + if self then + if self.Owner:GetInfoNum("tf_righthand", 1) == 0 then + return pos + + self.ProjectileShootOffset.x * ang:Forward() - + self.ProjectileShootOffset.y * ang:Right() + + (self.ProjectileShootOffset.z * ang:Up()) + else return pos + + self.ProjectileShootOffset.x * ang:Forward() + + self.ProjectileShootOffset.y * ang:Right() + + (self.ProjectileShootOffset.z * ang:Up()) + end + end +end + +function SWEP:Precache() + if self.MuzzleEffect then + PrecacheParticleSystem(self.MuzzleEffect) + end + + if self.TracerEffect then + PrecacheParticleSystem(self.TracerEffect.."_red") + PrecacheParticleSystem(self.TracerEffect.."_blue") + PrecacheParticleSystem(self.TracerEffect.."_red_crit") + PrecacheParticleSystem(self.TracerEffect.."_blue_crit") + end +end + + + +function SWEP:PreCalculateDamage(ent) + +end + +function SWEP:PostCalculateDamage(dmg, ent) + return dmg +end + +function SWEP:CalculateDamage(hitpos, ent) + return self.BaseDamage +end + +function SWEP:Equip() + self.CurrentOwner = self.Owner + +-- if not inspectMessage and self.Owner:IsPlayer() then + -- self.Owner:ChatPrint("Press 'SHIFT' to Inspect!") + -- inspectMessage = true + -- timer.Simple(30, function() inspectMessage = false end) +-- end + + self:StopTimers() + + if SERVER then + ----MsgN(Format("Equip %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) + + --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then + self:SetItemIndex(self.Owner.WeaponItemIndex) + end]] + --MsgFN("Equip %s", tostring(self)) + + if self.DeployedBeforeEquip then + -- FIXED since gmod update 104, this does not seem to be called anymore + + -- Call the Deploy function again if the weapon is deployed before it has an owner attributed + -- This happens when a player is given a weapon right after the ammo for that weapon has been stripped + self:Deploy() + self.DeployedBeforeEquip = nil + ----MsgN("Deployed before equip!") + elseif _G.TFWeaponItemIndex then + self:SetItemIndex(_G.TFWeaponItemIndex) + end + + -- quickfix for deploy animations since gmod update 104 + --self.NextReplayDeployAnim = CurTime() + 0.1 + end +end + + +hook.Add("EntityRemoved", "TFWeaponRemoved", function(ent) + if ent.IsTFWeapon then + if IsValid(ent.WModel2) then ent.WModel2:Remove() end + if IsValid(ent.AttachedWModel) then ent.AttachedWModel:Remove() end + end +end) + + + +-- Instead of using using DrawWorldModel to render the world model, do it here (at least it guarantees that it will be always drawn if the player is visible) +-- any potential problem with this? +hook.Add("PostPlayerDraw", "ForceDrawTFWorldModel", function(pl) + +end) + +function SWEP:InitializeWModel2() +--Msg("InitializeWModel2\n") + if SERVER then + if self:GetItemData().model_player then + if IsValid(self.WModel2) then + --self.WModel2:SetModel(self:GetItemData().model_player) + else + self.WModel2 = ents.Create( 'base_gmodentity' ) + if not IsValid(self.WModel2) then return end + + --self.WModel2:SetPos(self.Owner:GetPos()) + --self.WModel2:SetModel(self:GetItemData().model_player) + --self.WModel2:SetAngles(self.Owner:GetAngles()) + --self.WModel2:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE)) + --self.WModel2:SetParent(self.Owner) + --self.WModel2:SetColor(Color(255, 255, 255)) + --self.WModel2:DrawShadow( false ) + --self.WModel2:FrameAdvance( 0 ) + function self.WModel2:Think() + --self.WModel2:NextThink(CurTime()) + return true + end + if self:GetClass() == "tf_weapon_rocketpack" then + --self.WModel2:ResetSequence("deploy") + --self.WModel2:SetPlaybackRate(1) + --self.WModel2:SetCycle(0) + end + if wmodel == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" then + --self.WModel2:SetMaterial("models/weapons/w_shotgun_tf/w_shotgun_tf") + end + if self.Owner:GetNWBool("NoWeapon") == true then + --self.WModel2:SetNoDraw(true) + else + --self.WModel2:SetNoDraw(true) + end + end + + if IsValid(self.WModel2) then + self.WModel2.Player = self.Owner + self.WModel2.Weapon = self + + if self.MaterialOverride then + --self.WModel2:SetMaterial(self.MaterialOverride) + end + + end + end + end +end + +function SWEP:InitializeAttachedModels() +--Msg("InitializeAttachedModels\n") + if SERVER then + if IsValid(self.AttachedWModel) then + if self.AttachedWorldModel then + self.AttachedWModel:SetModel(self.AttachedWorldModel) + else + self.AttachedWModel:Remove() + end + elseif self.AttachedWorldModel then + local ent = (IsValid(self.WModel2) and self.WModel2) or self + + self.AttachedWModel = ents.Create( 'base_gmodentity' ) + self.AttachedWModel:SetPos(ent:GetPos()) + self.AttachedWModel:SetModel(self:GetItemData().model_player) + self.AttachedWModel:SetAngles(ent:GetAngles()) + self.AttachedWModel:AddEffects(EF_BONEMERGE) + self.AttachedWModel:SetParent(ent) + end + + if IsValid(self.AttachedWModel) then + self.AttachedWModel.Player = self.Owner + self.AttachedWModel.Weapon = self + + if self.MaterialOverride then + self.AttachedWModel:SetMaterial(self.MaterialOverride) + end + end + end +end + +function SWEP:Deploy() + local vm = self.Owner:GetViewModel() + if (IsValid(vm)) then + if (self.Owner:IsHL2()) then + self.Owner:GetViewModel():SetMaterial("") + else + if (string.find(self.ViewModel,"c_models")) then + self.Owner:GetViewModel():SetMaterial("color") + else + self.Owner:GetViewModel():SetMaterial("") + end + end + end + if (self.Owner.anim_Deployed) then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE) + end + self:TFViewModelFOV() + self:TFFlipViewmodel() + self:InspectAnimCheck() + if (self.MarkForDeath) then + self.Owner:AddPlayerState(PLAYERSTATE_MARKED, true) + end + if CLIENT then + if (self:GetItemData().image_inventory and self:GetItemData().item_iconname) then + killicon.Add( self:GetItemData().item_iconname, ""..self:GetItemData().image_inventory.."_large", Color( 255, 255, 255, 255 ) ) + elseif (self:GetItemData().image_inventory and !self:GetItemData().item_iconname) then + killicon.Add( string.Replace(self:GetClass(),"tf_weapon_",""), ""..self:GetItemData().image_inventory.."_large", Color( 255, 255, 255, 255 ) ) + end + end + if (self:GetItemData().item_name) then + self.PrintName = self:GetItemData().name + end + if (self.Owner:IsHL2()) then + self:SetWeaponHoldType(self.HoldTypeHL2 or self.HoldType) + end + + if (self:GetClass() == "tf_weapon_shotgun") then + if (self.Owner:GetPlayerClass() == "soldier" + || self.Owner:GetPlayerClass() == "heavy" + || self.Owner:GetPlayerClass() == "giantheavyshotgun" + || self.Owner:GetPlayerClass() == "heavyshotgun" + || self.Owner:GetPlayerClass() == "pyro") then + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self:SetHoldType("SECONDARY") + elseif (self.Owner:GetPlayerClass() == "scout" + || self.Owner:GetPlayerClass() == "engineer") then + self.VM_DRAW = ACT_PRIMARY_VM_DRAW + self.VM_IDLE = ACT_PRIMARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH + self.Slot = 0 + self:SetHoldType("PRIMARY") + else + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self:SetHoldType("SECONDARY") + end + end + --MsgFN("Deploy %s", tostring(self)) + local wmodel = self:GetItemData().model_player or self.WorldModel + if (self.Owner:GetNWBool("NoWeapon")) then + --self.WorldModel = "models/empty.mdl" + else + --self.WorldModel = wmodel + end + local vm = self.Owner:GetViewModel() + if (self:GetItemData()) then + if (self:GetItemData().model_player) then + + if (self:GetItemData().model_player == "models/weapons/c_models/c_bigaxe/c_bigaxe.mdl") then + self.HitWorld = "Halloween.HeadlessBossAxeHitWorld" + self.HitFlesh = "Halloween.HeadlessBossAxeHitFlesh" + end + if (self:GetItemData().model_player == "models/workshop/weapons/c_models/c_demo_sultan_sword/c_demo_sultan_sword.mdl") then + self:SetHoldType("MELEE_ALLCLASS") + self.HoldType = "MELEE_ALLCLASS" + local hold = "MELEE_ALLCLASS" + self.VM_DRAW = _G["ACT_"..hold.."_VM_DRAW"] + self.VM_IDLE = _G["ACT_"..hold.."_VM_IDLE"] + self.VM_PRIMARYATTACK = _G["ACT_"..hold.."_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = _G["ACT_"..hold.."_VM_SECONDARYATTACK"] + self.VM_RELOAD = _G["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_START = _G["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD_FINISH = _G["ACT_"..hold.."_RELOAD_FINISH"] + + -- Special activities + self.VM_CHARGE = _G["ACT_"..hold.."_VM_CHARGE"] + self.VM_DRYFIRE = _G["ACT_"..hold.."_VM_DRYFIRE"] + self.VM_IDLE_2 = _G["ACT_"..hold.."_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = _G["ACT_"..hold.."_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = _G["ACT_"..hold.."_VM_IDLE_3"] + self.VM_PULLBACK = _G["ACT_"..hold.."_VM_PULLBACK"] + self.VM_PREFIRE = _G["ACT_"..hold.."_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = _G["ACT_"..hold.."_ATTACK_STAND_POSTFIRE"] + + self.VM_RELOAD_START = getfenv()["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD = getfenv()["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_FINISH = getfenv()["ACT_"..hold.."_RELOAD_FINISH"] + self.VM_INSPECT_START = _G["ACT_"..hold.."_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = _G["ACT_"..hold.."_VM_INSPECT_IDLE"] + self.VM_INSPECT_END = _G["ACT_"..hold.."_VM_INSPECT_END"] + self.BACKSTAB_VM_UP = getfenv()["ACT_"..hold.."_BACKSTAB_VM_UP"] + self.BACKSTAB_VM_DOWN = getfenv()["ACT_"..hold.."_BACKSTAB_VM_DOWN"] + end + + end + end + if (self.Owner:GetPlayerClass() != "combinesoldier") then + if CLIENT then + if (self:GetClass() != "tf_weapon_pda_spy") then + if IsValid(self.CModel) then + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + elseif IsValid(vm) and !IsValid(self.CModel) then + self.CModel = ClientsideModel(wmodel) + if not IsValid(self.CModel) then return end + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:Spawn() + self.CModel:Activate() + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + end + if (self:GetItemData() and self:GetItemData().extra_wearable) then + if IsValid(self.ExtraCModel) then + self.ExtraCModel:SetModel(self:GetItemData().extra_wearable) + self.ExtraCModel:SetNoDraw(true) + self.ExtraCModel:SetParent(self.CModel) + self.ExtraCModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraCModel:DrawModel() + elseif IsValid(vm) and !IsValid(self.ExtraCModel) then + self.ExtraCModel = ClientsideModel(wmodel) + if not IsValid(self.ExtraCModel) then return end + self.ExtraCModel:SetModel(self:GetItemData().extra_wearable) + self.ExtraCModel:SetNoDraw(true) + self.ExtraCModel:SetParent(self.CModel) + self.ExtraCModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraCModel:Spawn() + self.ExtraCModel:Activate() + self.ExtraCModel:DrawModel() + end + if IsValid(self.ExtraWModel) then + self.ExtraWModel:SetModel(self:GetItemData().extra_wearable) + self.ExtraWModel:SetNoDraw(true) + self.ExtraWModel:SetParent(vm) + self.ExtraWModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraWModel:DrawModel() + elseif IsValid(vm) and !IsValid(self.ExtraWModel) then + self.ExtraWModel = ClientsideModel(wmodel) + if not IsValid(self.ExtraWModel) then return end + self.ExtraWModel:SetModel(self:GetItemData().extra_wearable) + self.ExtraWModel:SetNoDraw(false) + self.ExtraWModel:SetParent(self) + self.ExtraWModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraWModel:Spawn() + self.ExtraWModel:Activate() + self.ExtraWModel:DrawModel() + end + end + if (self:GetVisuals() and self:GetVisuals().attached_models and self:GetVisuals().attached_models[0]["model"]) then + if IsValid(self.ExtraCModel) then + self.ExtraCModel:SetModel(self:GetVisuals().attached_models[0]["model"]) + self.ExtraCModel:SetNoDraw(true) + self.ExtraCModel:SetParent(self.CModel) + self.ExtraCModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraCModel:DrawModel() + elseif IsValid(vm) and !IsValid(self.ExtraCModel) then + self.ExtraCModel = ClientsideModel(wmodel) + if not IsValid(self.ExtraCModel) then return end + self.ExtraCModel:SetModel(self:GetVisuals().attached_models[0]["model"]) + self.ExtraCModel:SetNoDraw(true) + self.ExtraCModel:SetParent(self.CModel) + self.ExtraCModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraCModel:Spawn() + self.ExtraCModel:Activate() + self.ExtraCModel:DrawModel() + end + if IsValid(self.ExtraWModel) then + self.ExtraWModel:SetModel(self:GetVisuals().attached_models[0]["model"]) + self.ExtraWModel:SetNoDraw(true) + self.ExtraWModel:SetParent(vm) + self.ExtraWModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraWModel:DrawModel() + elseif IsValid(vm) and !IsValid(self.ExtraWModel) then + self.ExtraWModel = ClientsideModel(wmodel) + if not IsValid(self.ExtraWModel) then return end + self.ExtraWModel:SetModel(self:GetVisuals().attached_models[0]["model"]) + self.ExtraWModel:SetNoDraw(false) + self.ExtraWModel:SetParent(self) + self.ExtraWModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.ExtraWModel:Spawn() + self.ExtraWModel:Activate() + self.ExtraWModel:DrawModel() + end + end + else + if (self:GetClass() != "tf_weapon_pda_spy") then + if IsValid(self.CModel) then + self.CModel:SetModel("models/empty.mdl") + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + elseif IsValid(vm) and !IsValid(self.CModel) then + self.CModel = ClientsideModel(wmodel) + if not IsValid(self.CModel) then return end + self.CModel:SetModel("models/empty.mdl") + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:Spawn() + self.CModel:Activate() + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + end + end + end + end + end + for k, v in pairs(player.GetAll()) do + if v == self.Owner then + if v:IsHL2() then + self:SetHoldType(self.HoldTypeHL2) + if self.DeploySound then + self:EmitSound(self.DeploySound) + end + else + self:SetWeaponHoldType(self.HoldType) + end + end + end + + local hold = self.HoldType + ----MsgN(Format("SetupCModelActivities %s", tostring(self))) + if (self.Owner:GetNWBool("NoWeapon")) then + --self.WorldModel = "models/empty.mdl" + else + --self.WorldModel = wmodel; + end + --self:InitializeWModel2() + --self:InitializeAttachedModels() + if SERVER then + if IsValid(self.WModel) then + --self.WModel:SetSkin(self.WeaponSkin or self.Owner:GetSkin()) + --self.WModel:SetMaterial(self.MaterialOverride or self.WeaponMaterial or 0) + end + end + if self.Owner:IsPlayer() and not self.Owner:IsHL2() and self.Owner:Team() == TEAM_BLU and string.find(game.GetMap(), "mvm_") then + if SERVER then + self.Owner:SetBloodColor(BLOOD_COLOR_MECH) + end + end + if IsValid(self) then + if IsValid(self.Owner) then + if IsValid(self.Owner:GetViewModel()) then + if self.Owner.TempAttributes and self.Owner.TempAttributes.DeployTimeMultiplier then + self:SetDeploySpeed(defaultdeployspeed:GetFloat() / self.Owner.TempAttributes.DeployTimeMultiplier) + elseif self.DeployTimeMultiplier then + self:SetDeploySpeed(defaultdeployspeed:GetFloat() / self.DeployTimeMultiplier) + else + self:SetDeploySpeed(defaultdeployspeed:GetFloat()) + end + end + end + end + if IsValid(self.CModel) then + + local t2 = self.Owner:GetProxyVar("CritTeam") + local s2 = self.Owner:GetProxyVar("CritStatus") + self.CModel:SetProxyVar("CritTeam",t2) + self.CModel:SetProxyVar("CritStatus",s2) + + end + self:StopTimers() + self.DeployPlayed = nil + if GetConVar("tf_righthand") and not self:GetClass() == "tf_weapon_compound_bow" then + if GetConVar("tf_righthand"):GetInt() == 0 then + self.ViewModelFlip = true + else + self.ViewModelFlip = false + end + end + + if GetConVar("tf_use_viewmodel_fov"):GetInt() > 0 then + self.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() + else + self.ViewModelFOV = GetConVar( "viewmodel_fov" ) + end + + if SERVER then + ----MsgN(Format("Deploy %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) + + --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then + self:SetItemIndex(self.Owner.WeaponItemIndex) + end]] + + if not IsValid(self.Owner) then + --MsgFN("Deployed before equip %s",tostring(self)) + self.DeployedBeforeEquip = true + self.NextReplayDeployAnim = nil + --self:SendWeaponAnimEx(ACT_INVALID) + return true + end + + if _G.TFWeaponItemIndex then + self:SetItemIndex(_G.TFWeaponItemIndex) + end + self:CheckUpdateItem() + + self.Owner.weaponmode = string.lower(self.HoldType) + + if self.HasTeamColouredWModel then + if GAMEMODE:EntityTeam(self.Owner)==TEAM_BLU then + self:SetSkin(self.WeaponSkin or 1) + elseif GAMEMODE:EntityTeam(self.Owner)==TF_TEAM_PVE_INVADERS then + self:SetSkin(self.WeaponSkin or 1) + else + self:SetSkin(self.WeaponSkin or 0) + end + else + self:SetSkin(self.WeaponSkin) + end + if !self.Owner:IsHL2() then + self.Owner:ResetClassSpeed() + end + end + + if CLIENT and not self.DoneFirstDeploy then + self.RestartClientsideDeployAnim = true + self.DoneFirstDeploy = true + end + + --MsgFN("SendWeaponAnim %s %d", tostring(self), self.VM_DRAW) + -- --print("DRAW ANIM") + --[[ + if CLIENT and self.DeploySound and not self.DeployPlayed then + self:EmitSound(self.DeploySound) + self.DeployPlayed = true + end]] + + --self.IsDeployed = false + + self:RollCritical() + if self.Owner.ForgetLastWeapon then + self.Owner.ForgetLastWeapon = nil + return false + end + + self:InspectAnimCheck() + local hold = self.HoldType + local drawAnim = self.VM_DRAW + if (self.VM_DRAW != nil) then + local draw_duration = (0.5 / self:GetDeploySpeed()) / 1.34 + local deploy_duration = (0.5 / self:GetDeploySpeed()) / 1.34 + if SERVER then + self:SendWeaponAnim(drawAnim) + self.Owner:GetViewModel():SetPlaybackRate(self:GetDeploySpeed()) + end + + if self.Owner.TempAttributes and self.Owner.TempAttributes.DeployTimeMultiplier then + draw_duration = draw_duration * self.Owner.TempAttributes.DeployTimeMultiplier + deploy_duration = deploy_duration * self.Owner.TempAttributes.DeployTimeMultiplier + end + self.NextIdle = CurTime() + self:SequenceDuration(self:SelectWeightedSequence(self.VM_DRAW)) / self:GetDeploySpeed() + self.NextDeployed = CurTime() + deploy_duration + end + if (IsValid(self.CModel)) then + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + end + return true +end + +function SWEP:InspectAnimCheck() + -- todo: find a better way to do this + -- InspectAnimCheck probably isn't the best place for this... + if (string.StartWith(self.Owner:GetModel(),"models/infected/")) then return end + + if (self:GetItemData()) then + if (self:GetItemData().model_player) then + + if (self:GetItemData().model_player == "models/workshop/weapons/c_models/c_demo_sultan_sword/c_demo_sultan_sword.mdl") then + self:SetWeaponHoldType("MELEE_ALLCLASS") + end + + end + end + if CLIENT then + if (self:GetItemData().image_inventory and self:GetItemData().item_iconname) then + killicon.Add( self:GetItemData().item_iconname, self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + elseif (self:GetItemData().image_inventory) then + killicon.Add( string.Replace(self:GetClass(),"tf_weapon_",""), self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + end + end + if self:GetVisuals() then + local visuals = self:GetVisuals() + if visuals.animation_replacement then + local replace = visuals.animation_replacement + + if replace.act_vm_draw then + self.VM_DRAW = getfenv()[replace.act_vm_draw] + end + + + if replace.act_vm_idle then + self.VM_IDLE = getfenv()[replace.act_vm_idle] + end + + if replace.act_vm_primaryattack then + self.VM_PRIMARYATTACK = getfenv()[replace.act_vm_primaryattack] + end + + if replace.act_vm_reload then + self.VM_RELOAD = getfenv()[replace.act_vm_reload] + end + + if replace.act_reload_start then + self.VM_RELOAD_START = getfenv()[replace.act_reload_start] + end + + if replace.act_reload_finish then + self.VM_RELOAD_FINISH = getfenv()[replace.act_reload_finish] + end + + if replace.act_primary_vm_inspect_end then + self.VM_INSPECT_END = getfenv()[replace.act_primary_vm_inspect_end] + end + + + if replace.act_primary_vm_inspect_start then + self.VM_INSPECT_START = getfenv()[replace.act_primary_vm_inspect_start] + end + + if replace.act_primary_vm_inspect_idle then + self.VM_INSPECT_IDLE = getfenv()[replace.act_primary_vm_inspect_idle] + end + else + + local hold = self.HoldType + self.VM_DRAW = getfenv()["ACT_"..hold.."_VM_DRAW"] + self.VM_IDLE = getfenv()["ACT_"..hold.."_VM_IDLE"] + self.VM_PRIMARYATTACK = getfenv()["ACT_"..hold.."_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = getfenv()["ACT_"..hold.."_VM_SECONDARYATTACK"] + + -- Special activities + self.VM_CHARGE = getfenv()["ACT_"..hold.."_VM_CHARGE"] + self.VM_DRYFIRE = getfenv()["ACT_"..hold.."_VM_DRYFIRE"] + self.VM_IDLE_2 = getfenv()["ACT_"..hold.."_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = getfenv()["ACT_"..hold.."_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = getfenv()["ACT_"..hold.."_VM_IDLE_3"] + self.VM_PULLBACK = getfenv()["ACT_"..hold.."_VM_PULLBACK"] + self.VM_PREFIRE = getfenv()["ACT_"..hold.."_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = getfenv()["ACT_"..hold.."_ATTACK_STAND_POSTFIRE"] + + self.VM_INSPECT_START = getfenv()["ACT_"..hold.."_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = getfenv()["ACT_"..hold.."_VM_INSPECT_IDLE"] + self.VM_INSPECT_END = getfenv()["ACT_"..hold.."_VM_INSPECT_END"] + self.VM_RELOAD_START = getfenv()["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD = getfenv()["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_FINISH = getfenv()["ACT_"..hold.."_RELOAD_FINISH"] + + self.VM_HITLEFT = getfenv()["ACT_"..hold.."_VM_HITLEFT"] + self.VM_HITRIGHT = getfenv()["ACT_"..hold.."_VM_HITRIGHT"] + self.VM_HITCENTER = getfenv()["ACT_"..hold.."_VM_HITCENTER"] + self.VM_SWINGHARD = getfenv()["ACT_"..hold.."_VM_SWINGHARD"] + self.BACKSTAB_VM_UP = getfenv()["ACT_"..hold.."_BACKSTAB_VM_UP"] + self.BACKSTAB_VM_DOWN = getfenv()["ACT_"..hold.."_BACKSTAB_VM_DOWN"] + end + + if visuals.sound_single_shot then + self.ShootSound = Sound(visuals.sound_single_shot) + end + + if visuals.sound_burst then + self.ShootCritSound = Sound(visuals.sound_burst) + end + + if visuals.sound_double_shot then + self.ShootSound2 = Sound(visuals.sound_double_shot) + end + + if visuals.sound_empty then + self.EmptySound = Sound(visuals.sound_empty) + end + + if visuals.sound_reload then + self.ReloadSound = Sound(visuals.sound_reload) + end + + if visuals.sound_special1 then + self.SpecialSound1 = Sound(visuals.sound_special1) + end + + if visuals.sound_special2 then + self.SpecialSound2 = Sound(visuals.sound_special2) + end + + if visuals.sound_special3 then + self.SpecialSound3 = Sound(visuals.sound_special3) + end + end + +end + +function SWEP:ResetInspect() + +end + +function SWEP:Inspect() + if IsValid(self.CModel) then + + local t2 = self.Owner:GetProxyVar("CritTeam") + local s2 = self.Owner:GetProxyVar("CritStatus") + self.CModel:SetProxyVar("CritTeam",t2) + self.CModel:SetProxyVar("CritStatus",s2) + + end + if (self:Ammo1() < 1 and self:Clip1() < 1 and self.Primary.ClipSize > 0 and self.AmmoType != nil || self:Ammo1() < 1 and self.AmmoType != nil) then + if (CurTime() > self:GetNextPrimaryFire()) then + if (self.HoldType == "PRIMARY") then + if (IsValid(self.Owner:GetWeapons()[2])) then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[2]:GetClass()) + end + elseif ((self.HoldType == "SECONDARY" or (self:GetClass() == "tf_weapon_jar" or self:GetClass() == "tf_weapon_jar_milk")) and self.Owner:GetPlayerClass() != "medic") then + if (IsValid(self.Owner:GetWeapons()[3])) then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]:GetClass()) + end + end + end + end + self:InspectAnimCheck() +end + +--[[function SWEP:Inspect() + self:InspectAnimCheck() + + if (self:GetOwner():GetMoveType()==MOVETYPE_NOCLIP) and inspecting == true and GetConVar("tf_haltinspect"):GetBool() or (self:GetOwner():GetMoveType()==MOVETYPE_NOCLIP) and inspecting_post == true and GetConVar("tf_haltinspect"):GetBool() then + self:SendWeaponAnimEx( self.VM_IDLE ) + self:StopTimers() + return false + end + + if ( self:GetOwner():GetNWString("inspect") == "inspecting_start" and inspecting == false and GetConVar("tf_caninspect"):GetBool() ) then + inspecting = true + self:SendWeaponAnimEx( self.VM_INSPECT_START ) + timer.Create("StartInspection", self:SequenceDuration(), 1, function()self:SendWeaponAnimEx( self.VM_INSPECT_IDLE ) end ) + end + + if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() ) then + inspecting_post = true + timer.Create("EndInspection", self:SequenceDuration(), 1, function()self:SendWeaponAnimEx( self.VM_INSPECT_END ) + timer.Create("PostInspection", self:SequenceDuration(), 1, function() + self:SendWeaponAnimEx( self.VM_IDLE ) + inspecting_post = false + inspecting = false + end ) + end) + end +end]] + +function SWEP:Holster() + if (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then + self.Owner:GetViewModel():SetMaterial("") + end + self:StopTimers() + if IsValid(self.Owner) then + if (self.MarkForDeath) then + self.Owner:RemovePlayerState(PLAYERSTATE_MARKED, true) + end + if CLIENT then + if IsValid(self.CModel) then + self.CModel:Remove() + end + if IsValid(self.WModel) then + self.WModel:Remove() + end + if IsValid(self.ExtraCModel) then + self.ExtraCModel:Remove() + end + if IsValid(self.ExtraWModel) then + self.ExtraWModel:Remove() + end + end + end + + self.NextIdle = nil + self.NextReloadStart = nil + self.NextReload = nil + self.NextReload2 = nil + self.Reloading = nil + self.RequestedReload = nil + self.NextDeployed = nil + self.IsDeployed = nil + if SERVER then + if IsValid(self.WModel2) then + --self.WModel2:Remove() + end + end + if IsValid(self.Owner) then + self.Owner.LastWeapon = self:GetClass() + end + + return true +end + +function SWEP:OwnerChanged() + self:Holster() +end + +function SWEP:OnRemove() + self:StopTimers() + if (IsValid(self:GetOwner())) then + local VModel = self:GetOwner():GetViewModel() + if (IsValid(VModel)) then + VModel:SetMaterial("") + end + end + --self:Holster() +end + +function SWEP:CanPrimaryAttack() + if (self.Owner:GetNWBool("Bonked")) then return false end + if (((self.Primary.ClipSize == -1 and self:Ammo1() > 0) or self:Clip1() > 0) and self.Owner:GetNWBool("Bonked",false) == false) then + return true + end + + return false +end + +function SWEP:CanSecondaryAttack() + if (self.Secondary.ClipSize == -1 and self:Ammo2() > 0) or self:Clip2() > 0 then + return true + end + + return false +end + +function SWEP:PrimaryAttack(noscene) + self.Reloading = false + self.NextReload = nil + self.NextReload2 = nil + self.NextReloadStart = nil + return true +end + +function SWEP:RustyBulletHole() + ----print(self.ProjectileShootOffset) + if self.Base ~= "tf_weapon_melee_base" and self.GetClass ~= "tf_weapon_builder" and not self.IsPDA and self.ProjectileShootOffset == Vector(0,0,0) or self.ProjectileShootOffset == Vector(3,8,-5) and self.IsDeployed == true then + --self:ShootBullet(0, self.BulletsPerShot, self.BulletSpread) + if (self.Owner:GetEyeTrace()) then + if (self.Owner:GetEyeTrace().Entity) then + local ent = self.Owner:GetEyeTrace().Entity + if (ent:IsPlayer() and string.find(ent:GetModel(),"/bot_")) then + return + end + end + end + self.Owner:FireBullets({Num = self.BulletsPerShot, Src = self.Owner:GetShootPos(), Dir = self.Owner:GetAimVector(), Spread = Vector(self.BulletSpread, self.BulletSpread, 0), Tracer = 0, Force = 0, Damage = 0, AmmoType = ""}) + end +end + +function SWEP:SecondaryAttack(noscene) + if self.HasSecondaryFire then + if not self.IsDeployed then return false end + if not self:CanSecondaryAttack() or self.Reloading then return false end + + self.NextDeployed = nil + + local Delay = self.Delay or -1 + local QuickDelay = self.QuickDelay or -1 + + if (not(self.Secondary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK2)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK2) and QuickDelay>=0 and CurTime()= 0 and self:Ammo1() > 0 and not self:CanPrimaryAttack() then + --MsgFN("Deployed with empty clip, reloading") + self:Reload() + end + end + end + end +end + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + if CurTime() < self.Primary.Delay then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnimEx(ACT_RELOAD_START) + if self.ReloadTime == 1.1 then + self:SendWeaponAnimEx(self.VM_RELOAD_START) + --[[ + if self.Owner.anim_InSwim then + self.Owner:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_SWIM, true) + elseif self.Owner:Crouching() then + self.Owner:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_CROUCH, true) + else + self.Owner:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_STAND, true) + end]] + self.NextReloadStart = CurTime() + (self.ReloadTime - 0.2 or self.ReloadStartTime ) + if (self:Clip1() == 0) then + self.Reloading = true + end + + else + if SERVER then + self:SendWeaponAnimEx(self.VM_RELOAD_START) + end + --[[ + if self.Owner.anim_InSwim then + self.Owner:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_SWIM, true) + elseif self.Owner:Crouching() then + self.Owner:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_CROUCH, true) + else + self.Owner:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_RELOAD_STAND, true) + end]] + if (self:Clip1() == 0) then + self.Reloading = true + end + if self.FastReloadTime and self.OldReloadTime then + if (!self.ReloadTimeMultiplier) then + self.NextReloadStart = CurTime() + self:SequenceDuration() / self.FastReloadTime + else + self.NextReloadStart = CurTime() + self:SequenceDuration() / self.FastReloadTime / self.ReloadTimeMultiplier + end + else + self.NextReloadStart = CurTime() + self:SequenceDuration() + end + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + end + else + if SERVER then + self:SendWeaponAnimEx(self.VM_RELOAD) + end + self.Owner:SetAnimation(PLAYER_RELOAD) + if (!self.Owner:KeyDown(IN_ATTACK)) then + if self.FastReloadTime and self.OldReloadTime then + if (!self.ReloadTimeMultiplier) then + self:SetNextPrimaryFire(CurTime() + self:SequenceDuration() / self.FastReloadTime) + else + + self:SetNextPrimaryFire(CurTime() + self:SequenceDuration() / self.FastReloadTime / self.ReloadTimeMultiplier) + end + else + + self:SetNextPrimaryFire(CurTime() + self:SequenceDuration()) + end + end + + self.NextIdle = CurTime() + self:SequenceDuration() / self.Owner:GetViewModel():GetPlaybackRate() + self.NextReload = self.NextIdle + self.NextReload2 = CurTime() + self.ReloadTime + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + +function TranslateKilliconName(name) + return KilliconTranslate[name] or "d_"..name +end + + +function SWEP:Think() + self:Inspect() + self:InspectAnimCheck() + if (self:GetNWFloat("ReloadTimeMultiplier",1.0) > 0.0) then + self.ReloadTimeMultiplier = self:GetNWFloat("ReloadTimeMultiplier",1.0) + end + if (string.find(self.Owner:GetModel(),"/bot_")) then + self.CriticalChance = 0 + end + if ((self:GetItemData().model_world or self:GetItemData().model_player) ~= nil) then + self.WorldModel = "models/empty.mdl" + end + if (((self.NextReload and self.NextReload>=CurTime()) or ((self.NextReloadStart and self.NextReloadStart>=CurTime()) or self.Reloading)) and self.ReloadSingle) then + + if self.FastReloadTime and SERVER then + if (!self.ReloadTimeMultiplier) then + + self.Owner:GetViewModel():SetPlaybackRate(1.0 / self.FastReloadTime) + self.ReloadTime = self.FastReloadTime + + else + + self.Owner:GetViewModel():SetPlaybackRate(1.0 / self.FastReloadTime / self.ReloadTimeMultiplier) + self.ReloadTime = self.FastReloadTime / self.ReloadTimeMultiplier + + end + end + + if !self.FastReloadTime and self.ReloadTimeMultiplier and SERVER and self.ReloadTime then + self.Owner:GetViewModel():SetPlaybackRate(1.0 / self.ReloadTimeMultiplier) + if (!self.OriginalReloadTime) then + self.OriginalReloadTime = self.ReloadTime + end + self.ReloadTime = self.OriginalReloadTime * self.ReloadTimeMultiplier + end + + end + if CLIENT then + if (self:GetItemData().item_name) then + self.PrintName = self:GetItemData().name + end + if IsValid(self.CModel) then + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self.Owner:GetSkin()) + end + if IsValid(self.CModel) then + + local t2 = self.Owner:GetProxyVar("CritTeam") + local s2 = self.Owner:GetProxyVar("CritStatus") + self.CModel:SetProxyVar("CritTeam",t2) + self.CModel:SetProxyVar("CritStatus",s2) + + end + if IsValid(self.WModel) then + self.WModel:DrawModel() + local skin = self.WeaponSkin or self.Owner:GetSkin() + if (self.WModel:GetSkin() != skin) then + self.WModel:SetSkin(skin) + end + if (self.WModel:GetMaterial() != self.WeaponMaterial) then + self.WModel:SetMaterial(self.WeaponMaterial) + end + end + if IsValid(self.ExtraCModel) then + self.ExtraCModel:DrawModel() + self.ExtraCModel:SetParent(self.CModel) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + end + end + + local hold = self.HoldType + + + if (!string.StartWith(self.Owner:GetModel(),"models/infected/")) then + if (self:GetClass() == "tf_weapon_shotgun") then + if (self.Owner:GetPlayerClass() == "soldier" + || self.Owner:GetPlayerClass() == "heavy" + || self.Owner:GetPlayerClass() == "pyro") then + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self:SetHoldType("SECONDARY") + elseif (self.Owner:GetPlayerClass() == "scout" + || self.Owner:GetPlayerClass() == "engineer") then + self.VM_DRAW = ACT_PRIMARY_VM_DRAW + self.VM_IDLE = ACT_PRIMARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH + self.Slot = 0 + self:SetHoldType("PRIMARY") + else + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self:SetHoldType("SECONDARY") + end + elseif (self:GetClass() == "tf_weapon_sword" and self.HoldType != "MELEE_ALLCLASS" || self:GetClass() == "tf_weapon_bat_wood" || (self:GetClass() == "tf_weapon_katana" and self.Owner:GetPlayerClass() == "demoman")) then + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL + elseif (self:GetClass() == "tf_weapon_handgun_scout" ) then + + self.VM_DRAW = ACT_SECONDARY_VM_DRAW_2 + self.VM_IDLE = ACT_SECONDARY_VM_IDLE_2 + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK_2 + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD_2 + self.VM_INSPECT_START = ACT_PRIMARY_ALT1_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_PRIMARY_ALT1_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_PRIMARY_ALT1_VM_INSPECT_END + + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + self.VM_DRAW = ACT_BREADSAPPER_VM_DRAW + self.VM_IDLE = ACT_BREADSAPPER_VM_IDLE + elseif self:GetItemData().image_inventory == "backpack/weapons/v_models/v_fist_heavy" then + if self.Owner:GetPlayerClass() == "charger" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("draw")) + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "hunter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomer" || self.Owner:GetPlayerClass() == "boomette" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + else + self.VM_IDLE = ACT_FISTS_VM_IDLE + self.VM_DRAW = ACT_FISTS_VM_DRAW + self.VM_HITLEFT = ACT_FISTS_VM_HITLEFT + self.VM_HITRIGHT = ACT_FISTS_VM_HITRIGHT + self.VM_SWINGHARD = ACT_FISTS_VM_SWINGHARD + end + self.HoldType = "MELEE" + else + if (hold == "PRIMARY2") then + self.VM_DRAW = _G["ACT_PRIMARY_VM_DRAW"] + self.VM_IDLE = _G["ACT_PRIMARY_VM_IDLE"] + self.VM_PRIMARYATTACK = _G["ACT_PRIMARY_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = _G["ACT_PRIMARY_VM_SECONDARYATTACK"] + self.VM_RELOAD = _G["ACT_PRIMARY_VM_RELOAD_3"] + self.VM_RELOAD_START = _G["ACT_PRIMARY_RELOAD_START_3"] + self.VM_RELOAD_FINISH = _G["ACT_PRIMARY_RELOAD_FINISH_3"] + + -- Special activities + self.VM_CHARGE = _G["ACT_PRIMARY_VM_CHARGE"] + self.VM_DRYFIRE = _G["ACT_PRIMARY_VM_DRYFIRE"] + self.VM_IDLE_2 = _G["ACT_PRIMARY_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = _G["ACT_PRIMARY_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = _G["ACT_PRIMARY_VM_IDLE_3"] + self.VM_PULLBACK = _G["ACT_PRIMARY_VM_PULLBACK"] + self.VM_PREFIRE = _G["ACT_PRIMARY_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = _G["ACT_PRIMARY_ATTACK_STAND_POSTFIRE"] + + self.VM_INSPECT_START = _G["ACT_PRIMARY_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = _G["ACT_PRIMARY_VM_INSPECT_IDLE"] + self.VM_INSPECT_END = _G["ACT_PRIMARY_VM_INSPECT_END"] + end + end + end + if (self.HoldType == "PRIMARY2") then + self.ActivityTranslate[ ACT_MP_STAND_IDLE ] = ACT_MP_STAND_PRIMARY + self.ActivityTranslate[ ACT_MP_WALK ] = ACT_MP_RUN_PRIMARY + self.ActivityTranslate[ ACT_MP_RUN ] = ACT_MP_RUN_PRIMARY + self.ActivityTranslate[ ACT_MP_CROUCH_IDLE ] = ACT_MP_CROUCH_PRIMARY + self.ActivityTranslate[ ACT_MP_CROUCHWALK ] = ACT_MP_CROUCHWALK_PRIMARY + self.ActivityTranslate[ ACT_MP_ATTACK_STAND_PRIMARYFIRE ] = _G["ACT_MP_ATTACK_STAND_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_ATTACK_CROUCH_PRIMARYFIRE ] = _G["ACT_MP_ATTACK_CROUCH_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_ATTACK_SWIM_PRIMARYFIRE ] = _G["ACT_MP_ATTACK_CROUCH_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_STAND ] = _G["ACT_MP_RELOAD_STAND_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_CROUCH ] = _G["ACT_MP_RELOAD_CROUCH_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_SWIM ] = _G["ACT_MP_RELOAD_STAND_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_STAND_LOOP ] = _G["ACT_MP_RELOAD_STAND_PRIMARY_LOOP_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_CROUCH_LOOP ] = _G["ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_SWIM_LOOP ] = _G["ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_STAND_END ] = _G["ACT_MP_RELOAD_STAND_PRIMARY_END_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_CROUCH_END ] = _G["ACT_MP_RELOAD_CROUCH_PRIMARY_END_ALT"] + self.ActivityTranslate[ ACT_MP_RELOAD_SWIM_END ] = _G["ACT_MP_RELOAD_CROUCH_PRIMARY_END_ALT"] + self.ActivityTranslate[ ACT_MP_JUMP ] = ACT_MP_JUMP_START_PRIMARY + self.ActivityTranslate[ ACT_RANGE_ATTACK1 ] = _G["ACT_MP_ATTACK_STAND_PRIMARY_ALT"] + self.ActivityTranslate[ ACT_MP_SWIM ] = ACT_MP_SWIM_PRIMARY + self.ActivityTranslate[ACT_MP_JUMP_START] = ACT_MP_JUMP_START_PRIMARY + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = ACT_MP_JUMP_FLOAT_PRIMARY + self.ActivityTranslate[ACT_MP_JUMP_LAND] = ACT_MP_JUMP_LAND_PRIMARY + end + if (self:GetClass() == "tf_weapon_shotgun") then + + if (IsValid(self.Owner)) then + if (self.Owner:GetPlayerClass() == "soldier" + || self.Owner:GetPlayerClass() == "heavy" + || self.Owner:GetPlayerClass() == "pyro") then + self.item_slot = "SECONDARY" + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self.HoldType = "SECONDARY" + self.Primary.Ammo = TF_SECONDARY + self:SetHoldType("SECONDARY") + elseif (self.Owner:GetPlayerClass() == "scout" + || self.Owner:GetPlayerClass() == "engineer") then + self.VM_DRAW = ACT_PRIMARY_VM_DRAW + self.VM_IDLE = ACT_PRIMARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH + self.Slot = 0 + self.Primary.Ammo = TF_PRIMARY + self.HoldType = "PRIMARY" + self:SetHoldType("PRIMARY") + else + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self.Primary.Ammo = TF_SECONDARY + self.HoldType = "PRIMARY" + self:SetHoldType("PRIMARY") + end + end + end + local wmodel = self:GetItemData().model_player or self.WorldModel + if (self.Owner:GetNWBool("NoWeapon")) then + --self.WorldModel = "models/empty.mdl" + else + --self.WorldModel = wmodel; + end + if (self.Owner:IsHL2()) then + self:SetWeaponHoldType(self.HoldTypeHL2 or self.HoldType) + else + self:SetWeaponHoldType(self.HoldType) + end + self:AddFlags(EF_NOSHADOW) + if (self.Owner:GetPlayerClass() == "pyro" and self:GetClass() == "tf_weapon_rocketlauncher_qrl") then + self:SetHoldType("ITEM1") + self.HoldType = "ITEM1" + end + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + self.VM_DRAW = ACT_BREADSAPPER_VM_DRAW + self.VM_IDLE = ACT_BREADSAPPER_VM_IDLE + end + local vm = self.Owner:GetViewModel() + if (self.Owner:GetPlayerClass() != "combinesoldier") then + if CLIENT then + if (self:GetClass() != "tf_weapon_pda_spy") then + if IsValid(self.CModel) then + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + elseif IsValid(vm) and !IsValid(self.CModel) then + self.CModel = ClientsideModel(wmodel) + if not IsValid(self.CModel) then return end + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:Spawn() + self.CModel:Activate() + self.CModel:DrawModel() + self.CModel:SetSkin(self.WeaponSkin or self:GetOwner():GetSkin()) + end + end + end + end + if (IsValid(self.Owner:GetHands())) then + if (self.Owner:Team() == TEAM_BLU) then + self.Owner:GetHands():SetSkin( 1 ) + elseif (self.Owner:Team() == TF_TEAM_PVE_INVADERS) then + self.Owner:GetHands():SetSkin( 1 ) + else + self.Owner:GetHands():SetSkin( 0 ) + end + end + self:InspectAnimCheck() + if (self.Owner:GetPlayerClass() == "superheavyweightchamp") then + self.Primary.Delay = 1.0 * 0.6 + end + if self.NextReload2 and CurTime()>=self.NextReload2 then + self:SetClip1(self:Clip1() + self.AmmoAdded) + if (self:GetClass() != "tf_weapon_particle_launcher") then + if not self.ReloadSingle and self.ReloadDiscardClip then + self.Owner:RemoveAmmo(self.Primary.ClipSize, self.Primary.Ammo, false) + else + self.Owner:RemoveAmmo(self.AmmoAdded, self.Primary.Ammo, false) + end + end + self.NextReload2 = nil + end + if self.NextReload and CurTime()>=self.NextReload then + //self:SetClip1(self:Clip1() + self.AmmoAdded) + + self.Delay = -1 + self.QuickDelay = -1 + + if self:Clip1()>=self.Primary.ClipSize or self.Owner:GetAmmoCount(self.Primary.Ammo)==0 then + -- Stop reloading + self.Reloading = false + self.CanInspect = true + if self.ReloadSingle then + --self:SendWeaponAnimEx(ACT_RELOAD_FINISH) + + if (self:GetClass() == "tf_weapon_grenadelauncher" or self:GetClass() == "tf_weapon_cannon") then + if CLIENT then + self.CModel:SetBodygroup(1,0) + end + end + if SERVER then + self:SendWeaponAnimEx(self.VM_RELOAD_FINISH) + end + self.CanInspect = true + self.StartedReloading = false + --self.Owner:SetAnimation(10001) -- reload finish + if SERVER then + if self.Owner.anim_InSwim then + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_SWIM_END, true) + elseif self.Owner:Crouching() then + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_CROUCH_END, true) + else + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_END, true) + end + end + self.NextIdle = CurTime() + self:SequenceDuration() + else + + local idleAnim = self.VM_IDLE or ACT_VM_IDLE + self:SendWeaponAnimEx(idleAnim) + self.NextIdle = nil + end + self.NextReload = nil + else + if self.FastReloadTime then + self.ReloadTime = self.FastReloadTime + end + if SERVER then + self:SendWeaponAnimEx(self.VM_RELOAD) + end + self.NextReload2 = CurTime() + self.ReloadTime + if CLIENT then + if self:GetItemData().model_player == "models/weapons/c_models/c_scattergun.mdl" then + --PrintTable(self.CModel:GetAttachments()) + local effectdata = EffectData() + effectdata:SetEntity( self.Owner:GetViewModel() ) + effectdata:SetOrigin( self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.x,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.y,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.z) ) + util.Effect( "ShotgunShellEject", effectdata ) + end + end + --self.Owner:SetAnimation(10000) + if (!(self:Clip1()>=self.Primary.ClipSize or self.Owner:GetAmmoCount(self.Primary.Ammo)==0)) then + if SERVER then + if SERVER then + if self.Owner.anim_InSwim then + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_SWIM_LOOP, true) + elseif self.Owner:Crouching() then + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_CROUCH_LOOP, true) + else + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP, true) + end + end + end + end + if self.ReloadTime == 1.1 then + if self:GetItemData().model_player == "models/weapons/c_models/c_dumpster_device/c_dumpster_device.mdl" then + if CLIENT then + self.Owner:EmitSoundEx("Weapon_DumpsterRocket.Reload") + end + end + end + self.NextReload = CurTime() + (self.ReloadTime) + if (self:GetClass() == "tf_weapon_grenadelauncher" or self:GetClass() == "tf_weapon_cannon") then + if CLIENT then + self.CModel:SetBodygroup(1,1) + end + end + if (self:GetClass() == "tf_weapon_particle_launcher") then + + if (self:Clip1()==self.Primary.ClipSize-1) then + if SERVER then + if (IsValid(self.ReloadSoundFinish)) then + self.Owner:EmitSoundEx(self.ReloadSoundFinish) + else + self.Owner:EmitSoundEx(self.ReloadSound) + end + end + else + if SERVER then + self.Owner:EmitSoundEx(self.ReloadSound) + end + end + + else + + if (self:Clip1()==self.Primary.ClipSize-1) then + if (self.ReloadSoundFinish != nil and SERVER) then + umsg.Start("PlayTFWeaponWorldReloadFinish") + umsg.Entity(self) + umsg.End() + elseif (self.ReloadSound and SERVER) then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + else + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + end + end + + end + end + + if self.NextReloadStart and CurTime()>=self.NextReloadStart then + //self:SetClip1(self:Clip1() + self.AmmoAdded) + if self.FastReloadTime then + self.ReloadTime = self.FastReloadTime + end + if SERVER then + self:SendWeaponAnimEx(self.VM_RELOAD) + end + if self.FastReloadTime then + self.Owner:GetViewModel():SetPlaybackRate(1.0 / self.FastReloadTime) + end + if CLIENT then + if self:GetItemData().model_player == "models/weapons/c_models/c_scattergun.mdl" then + --PrintTable(self.CModel:GetAttachments()) + local effectdata = EffectData() + effectdata:SetEntity( self.Owner:GetViewModel() ) + effectdata:SetOrigin( self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.x,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.y,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.z) ) + util.Effect( "ShotgunShellEject", effectdata ) + end + end + --self.Owner:SetAnimation(10000) -- reload loop + if self.ReloadTime == 1.1 then + if self:GetItemData().model_player == "models/weapons/c_models/c_dumpster_device/c_dumpster_device.mdl" then + if CLIENT then + self.Owner:EmitSoundEx("Weapon_DumpsterRocket.Reload") + end + end + end + self.NextReload = CurTime() + (self.ReloadTime) + self.NextReload2 = CurTime() + (self.ReloadTime-(self.Primary.Delay*0.6)) + + self.AmmoAdded = 1 + + + if (!(self:Clip1()>=self.Primary.ClipSize or self.Owner:GetAmmoCount(self.Primary.Ammo)==0)) then + if SERVER then + if self.Owner.anim_InSwim then + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_SWIM, true) + elseif self.Owner:Crouching() then + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_CROUCH, true) + else + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND, true) + end + end + end + if (self:GetClass() == "tf_weapon_grenadelauncher" or self:GetClass() == "tf_weapon_cannon") then + if CLIENT then + self.CModel:SetBodygroup(1,1) + end + end + if (self:GetClass() == "tf_weapon_particle_launcher") then + + if (self:Clip1()==self.Primary.ClipSize-1) then + if SERVER then + if (IsValid(self.ReloadSoundFinish)) then + self.Owner:EmitSoundEx(self.ReloadSoundFinish) + else + self.Owner:EmitSoundEx(self.ReloadSound) + end + end + else + if SERVER then + self.Owner:EmitSoundEx(self.ReloadSound) + end + end + + else + + if (self:Clip1()==self.Primary.ClipSize-1) then + if (self.ReloadSoundFinish != nil and SERVER) then + umsg.Start("PlayTFWeaponWorldReloadFinish") + umsg.Entity(self) + umsg.End() + elseif (self.ReloadSound and SERVER) then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + else + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + end + end + + self.NextReloadStart = nil + end + if SERVER then + if IsValid(self.WModel2) then + if self.Owner:GetNoDraw() == true then + --self.WModel2:SetNoDraw(true) + else + --self.WModel2:SetNoDraw(true) + end + else + + if CLIENT then + self.RenderGroup = RENDERGROUP_BOTH + end + + end + end + if IsValid(self.WModel2) then + if self.Owner:GetNWBool("NoWeapon") == true then + if SERVER then + --self.WModel2:SetNoDraw(true) + end + else + if SERVER then + --self.WModel2:SetNoDraw(true) + end + end + end + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat() - GetConVar("tf_weapon_deploy_speed"):GetInt(), 2) + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat(),2) + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + --timer.Simple(0.1, function() self:SendWeaponAnimEx(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + if SERVER and self.NextIdle and CurTime()>=self.NextIdle and !self.Owner:KeyDown(IN_ATTACK) and !self.Owner:KeyDown(IN_ATTACK2) then + local idleAnim = self.VM_IDLE or ACT_VM_IDLE + self:SendWeaponAnimEx(idleAnim) + if SERVER then + self.NextIdle = CurTime() + self:SequenceDuration(self:SelectWeightedSequence(idleAnim)) + end + end + if self and SERVER then + if self.IsDeployed and self.Owner:GetInfoNum("tf_autoreload", 1) == 1 or self.Owner:IsBot() then + if self.Owner:Alive() then + if (CurTime() > self:GetNextPrimaryFire() and CurTime() > self:GetNextSecondaryFire()) then + self:CheckAutoReload() + end + end + end + end + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed and self:GetClass() != "tf_weapon_grapplinghook" then + self.IsDeployed = true + self.CanInspect = true + end + + if not self.IsDeployed and self:GetClass() == "tf_weapon_grapplinghook" then + + self.IsDeployed = true + self.CanInspect = true + + end + if self.IsDeployed then + self.CanInspect = true + end + + //--print(deployspeed) +end + +function SWEP:Initialize() + self:SetHoldType(self.HoldType) + if (self:GetItemData().item_name) then + self.PrintName = self:GetItemData().name + end + if CLIENT then + if (self:GetItemData().image_inventory and self:GetItemData().item_iconname) then + killicon.Add( self:GetItemData().item_iconname, self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + elseif (self:GetItemData().image_inventory) then + killicon.Add( string.Replace(self:GetClass(),"tf_weapon_",""), self:GetItemData().image_inventory, Color( 255, 255, 255, 255 ) ) + end + end +end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shared_old.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shared_old.lua similarity index 93% rename from addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shared_old.lua rename to gamemodes/tf/entities/weapons/tf_weapon_base/shared_old.lua index cf71e46e6..90b2053c0 100644 --- a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shared_old.lua +++ b/gamemodes/tf/entities/weapons/tf_weapon_base/shared_old.lua @@ -63,6 +63,9 @@ SWEP.VM_SECONDARYATTACK = ACT_VM_SECONDARYATTACK SWEP.VM_RELOAD = ACT_VM_RELOAD SWEP.VM_RELOAD_START = ACT_RELOAD_START SWEP.VM_RELOAD_FINISH = ACT_RELOAD_FINISH +SWEP.BACKSTAB_VM_DOWN = ACT_BACKSTAB_VM_DOWN +SWEP.BACKSTAB_VM_UP = ACT_BACKSTAB_VM_UP +SWEP.BACKSTAB_VM_IDLE = ACT_BACKSTAB_VM_IDLE PrecacheParticleSystem("critgun_weaponmodel_red") PrecacheParticleSystem("critgun_weaponmodel_blu") @@ -131,7 +134,7 @@ end function SWEP:GetAttribute(class) for _,a in pairs(self:GetItemData().attributes or {}) do if a.attribute_class == class then return a end - end + end end function SWEP:IsAttributeEnabled(class) @@ -148,10 +151,10 @@ function SWEP:CheckUpdateItem() if id>-1 and id~=self.CurrentItemID then local item = tf_items.ItemsByID[id] if item then - MsgN(Format("SetupItem [%d] %s", id, tostring(self))) + --MsgN(Format("SetupItem [%d] %s", id, tostring(self))) self:SetupItem(tf_items.ItemsByID[id]) else - MsgN(Format("WARNING: From '%s': Item #%d not found!", self:GetClass(), id)) + --MsgN(Format("WARNING: From '%s': Item #%d not found!", self:GetClass(), id)) end self.CurrentItemID = id end @@ -162,7 +165,7 @@ function SWEP:SetupCModelActivities(item) if item then local hold = item.anim_slot or string.upper(item.item_slot) - MsgN(Format("SetupCModelActivities %s", tostring(self))) + --MsgN(Format("SetupCModelActivities %s", tostring(self))) self.VM_DRAW = _E["ACT_"..hold.."_VM_DRAW"] self.VM_IDLE = _E["ACT_"..hold.."_VM_IDLE"] @@ -171,6 +174,9 @@ function SWEP:SetupCModelActivities(item) self.VM_RELOAD = _E["ACT_"..hold.."_VM_RELOAD"] self.VM_RELOAD_START = _E["ACT_"..hold.."_RELOAD_START"] self.VM_RELOAD_FINISH = _E["ACT_"..hold.."_RELOAD_FINISH"] + self.BACKSTAB_VM_DOWN = ACT_BACKSTAB_VM_DOWN + self.BACKSTAB_VM_UP = ACT_BACKSTAB_VM_UP + self.BACKSTAB_VM_IDLE = ACT_BACKSTAB_VM_IDLE else self.VM_DRAW = ACT_VM_DRAW self.VM_IDLE = ACT_VM_IDLE @@ -225,8 +231,8 @@ function SWEP:InitVisuals(owner, visuals) MsgFN("InitVisuals (%s) %s",tostring(self),tostring(owner)) visuals = visuals or {} - self.WeaponSkin = visuals.skin or ((owner:EntityTeam() == TEAM_BLU and 1) or 0) - self:SetSkin(self.WeaponSkin) + self.WeaponSkin = visuals.skin or (((owner:EntityTeam() == TEAM_BLU or owner:EntityTeam() == TF_TEAM_PVE_INVADERS)) and 1) or 0) + self:SetSkin(self.WeaponSkin or self:GetSkin()) self:SetMaterial(self.WeaponMaterial) if CLIENT then @@ -307,7 +313,7 @@ function SWEP:SendWeaponAnimEx(anim) if t=="number" then self:SendWeaponAnim(anim) elseif t=="string" then - print(anim) + --print(anim) local s = self.Owner:GetViewModel():LookupSequence(anim) self:SetSequence(s) self.Owner:GetViewModel():SetSequence(s) @@ -470,26 +476,6 @@ function SWEP:PreCalculateDamage(ent) end function SWEP:PostCalculateDamage(dmg, ent) - if IsValid(ent) then - for _,a in pairs(self:GetAttributes()) do - if a.attribute_class == "mult_dmg" then - dmg = dmg * a.value - elseif a.attribute_class == "mult_dmg_vs_players" then - if ent:IsTFPlayer() and not ent:IsBuilding() then - dmg = dmg * a.value - end - elseif a.attribute_class == "mult_dmg_vs_buildings" then - if not ent:IsTFPlayer() or ent:IsBuilding() then - dmg = dmg * a.value - end - elseif a.attribute_class == "mult_dmg_vs_nonburning" then - if ent:IsTFPlayer() and not ent:IsBuilding() and not ent:HasPlayerState(PLAYERSTATE_ONFIRE) then - dmg = dmg * a.value - end - end - end - end - return dmg end @@ -499,7 +485,7 @@ end function SWEP:Equip() if SERVER then - MsgN(Format("Equip %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) + --MsgN(Format("Equip %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then self:SetItemIndex(self.Owner.WeaponItemIndex) @@ -518,7 +504,7 @@ end function SWEP:Deploy() if SERVER then - MsgN(Format("Deploy %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) + --MsgN(Format("Deploy %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then self:SetItemIndex(self.Owner.WeaponItemIndex) @@ -539,6 +525,8 @@ function SWEP:Deploy() if self.HasTeamColouredWModel then if GAMEMODE:EntityTeam(self.Owner)==TEAM_BLU then self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self.Owner)==TF_TEAM_PVE_INVADERS then + self:SetSkin(1) else self:SetSkin(0) end @@ -547,7 +535,7 @@ function SWEP:Deploy() end end self:SendWeaponAnimEx(self.VM_DRAW) - self.NextIdle = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 self.NextDeployed = CurTime() + self.DeployDuration self.IsDeployed = false return true @@ -603,11 +591,6 @@ function SWEP:PrimaryAttack() self.NextReload = nil self.NextReloadStart = nil end - - if SERVER then - self.Owner:Speak("TLK_FIREWEAPON", true) - end - return true end @@ -656,10 +639,6 @@ function SWEP:SecondaryAttack() self.Delay = CurTime() + self.Secondary.Delay self.QuickDelay = CurTime() + self.Secondary.QuickDelay - if SERVER then - self.Owner:Speak("TLK_FIREWEAPON", true) - end - return true else for _,w in pairs(self.Owner:GetWeapons()) do @@ -679,12 +658,12 @@ function SWEP:Reload() return false end else - MsgN("Requested reload!") + --MsgN("Requested reload!") self.RequestedReload = true return false end - MsgN("Reload!") + --MsgN("Reload!") self.RequestedReload = false if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then @@ -696,11 +675,11 @@ function SWEP:Reload() if self.ReloadSingle then --self:SendWeaponAnim(ACT_RELOAD_START) self:SendWeaponAnimEx(self.VM_RELOAD_START) - self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + --self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) - else + else self:SendWeaponAnimEx(self.VM_RELOAD) - self.Owner:SetAnimation(PLAYER_RELOAD) + --self.Owner:SetAnimation(PLAYER_RELOAD) self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) self.NextReload = self.NextIdle @@ -752,7 +731,7 @@ function SWEP:Think() self:SendWeaponAnimEx(self.VM_RELOAD_FINISH) --self.Owner:SetAnimation(10001) -- reload finish self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_END, false) - self.NextIdle = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 else self:SendWeaponAnimEx(self.VM_IDLE) self.NextIdle = nil @@ -785,12 +764,11 @@ end function SWEP:SetWeaponHoldType(t) if IsValid(self.Owner) then - MsgN("hi fag") tf_util.ReadActivitiesFromModel(self.Owner) end if not _E["ACT_MP_STAND_"..t] then - MsgN("SWEP:SetWeaponHoldType - Unknown TF2 weapon hold type '"..t.."'! Defaulting to PRIMARY") + --MsgN("SWEP:SetWeaponHoldType - Unknown TF2 weapon hold type '"..t.."'! Defaulting to PRIMARY") t = "PRIMARY" end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_base/shd_anim.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shd_anim.lua new file mode 100644 index 000000000..bdf5f3f9b --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_base/shd_anim.lua @@ -0,0 +1,668 @@ + +--================================================================== +-- FIRSTPERSON ANIMATIONS +--================================================================== + +SWEP.VM_DRAW = ACT_VM_DRAW +SWEP.VM_IDLE = ACT_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK +SWEP.VM_SECONDARYATTACK = ACT_VM_SECONDARYATTACK +SWEP.VM_RELOAD = ACT_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_RELOAD_FINISH + +local ActivityNameTranslate = { + ACT_VM_DRAW = "VM_DRAW", + ACT_VM_IDLE = "VM_IDLE", + ACT_VM_PRIMARYATTACK = "VM_PRIMARYATTACK", + ACT_VM_SECONDARYATTACK = "VM_SECONDARYATTACK", + ACT_VM_RELOAD = "VM_RELOAD", + ACT_RELOAD_START = "VM_RELOAD_START", + ACT_RELOAD_FINISH = "VM_RELOAD_FINISH", + ACT_VM_HITLEFT = "VM_HITLEFT", + ACT_VM_HITRIGHT = "VM_HITRIGHT", + ACT_VM_HITCENTER = "VM_HITCENTER", + ACT_VM_SWINGHARD = "VM_SWINGHARD", +} + +local ActIndex = { + [ "pistol" ] = ACT_HL2MP_IDLE_PISTOL, + [ "smg" ] = ACT_HL2MP_IDLE_SMG1, + [ "grenade" ] = ACT_HL2MP_IDLE_GRENADE, + [ "ar2" ] = ACT_HL2MP_IDLE_AR2, + [ "shotgun" ] = ACT_HL2MP_IDLE_SHOTGUN, + [ "rpg" ] = ACT_HL2MP_IDLE_RPG, + [ "physgun" ] = ACT_HL2MP_IDLE_PHYSGUN, + [ "crossbow" ] = ACT_HL2MP_IDLE_CROSSBOW, + [ "melee" ] = ACT_HL2MP_IDLE_MELEE, + [ "slam" ] = ACT_HL2MP_IDLE_SLAM, + [ "normal" ] = ACT_HL2MP_IDLE, + [ "fist" ] = ACT_HL2MP_IDLE_FIST, + [ "melee2" ] = ACT_HL2MP_IDLE_MELEE2, + [ "passive" ] = ACT_HL2MP_IDLE_PASSIVE, + [ "knife" ] = ACT_HL2MP_IDLE_KNIFE, + [ "duel" ] = ACT_HL2MP_IDLE_DUEL, + [ "camera" ] = ACT_HL2MP_IDLE_CAMERA, + [ "magic" ] = ACT_HL2MP_IDLE_MAGIC, + [ "revolver" ] = ACT_HL2MP_IDLE_REVOLVER +} + +function SWEP:SetupCModelActivities(item, noreplace) + tf_util.ReadActivitiesFromModel(self) + + if item then + local hold = "PRIMARY" + if item.anim_slot then + hold = string.upper(item.anim_slot) + elseif item.item_slot then + hold = string.upper(item.item_slot) + end + ----MsgN(Format("SetupCModelActivities %s", tostring(self))) + + self.VM_DRAW = getfenv()["ACT_"..hold.."_VM_DRAW"] + self.VM_IDLE = getfenv()["ACT_"..hold.."_VM_IDLE"] + self.VM_PRIMARYATTACK = getfenv()["ACT_"..hold.."_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = getfenv()["ACT_"..hold.."_VM_SECONDARYATTACK"] + self.VM_RELOAD = getfenv()["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_START = getfenv()["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD_FINISH = getfenv()["ACT_"..hold.."_RELOAD_FINISH"] + + -- Special activities + self.VM_CHARGE = getfenv()["ACT_"..hold.."_VM_CHARGE"] + self.VM_DRYFIRE = getfenv()["ACT_"..hold.."_VM_DRYFIRE"] + self.VM_IDLE_2 = getfenv()["ACT_"..hold.."_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = getfenv()["ACT_"..hold.."_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = getfenv()["ACT_"..hold.."_VM_IDLE_3"] + self.VM_PULLBACK = getfenv()["ACT_"..hold.."_VM_PULLBACK"] + self.VM_PREFIRE = getfenv()["ACT_"..hold.."_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = getfenv()["ACT_"..hold.."_ATTACK_STAND_POSTFIRE"] + + self.VM_INSPECT_START = getfenv()["ACT_"..hold.."_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = getfenv()["ACT_"..hold.."_VM_INSPECT_IDLE"] + self.VM_INSPECT_END = getfenv()["ACT_"..hold.."_VM_INSPECT_END"] + self.VM_RELOAD_START = getfenv()["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD = getfenv()["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_FINISH = getfenv()["ACT_"..hold.."_RELOAD_FINISH"] + + self.VM_HITLEFT = ACT_VM_HITLEFT + self.VM_HITRIGHT = ACT_VM_HITRIGHT + + -- those melee activities are just so weird, sometimes it's ACT_VM_HITCENTER, sometimes it's ACT_MELEE_VM_HITCENTER + if self:SelectWeightedSequence(ACT_VM_HITCENTER) < 0 then + self.VM_HITCENTER = getfenv()["ACT_"..hold.."_VM_HITCENTER"] or ACT_VM_HITCENTER + self.VM_SWINGHARD = getfenv()["ACT_"..hold.."_VM_SWINGHARD"] or ACT_VM_SWINGHARD + else + self.VM_HITCENTER = ACT_VM_HITCENTER + self.VM_SWINGHARD = ACT_VM_SWINGHARD + end + else + local hold = self.HoldType + self.VM_DRAW = getfenv()["ACT_"..hold.."_VM_DRAW"] + self.VM_IDLE = getfenv()["ACT_"..hold.."_VM_IDLE"] + self.VM_PRIMARYATTACK = getfenv()["ACT_"..hold.."_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = getfenv()["ACT_"..hold.."_VM_SECONDARYATTACK"] + + -- Special activities + self.VM_CHARGE = getfenv()["ACT_"..hold.."_VM_CHARGE"] + self.VM_DRYFIRE = getfenv()["ACT_"..hold.."_VM_DRYFIRE"] + self.VM_IDLE_2 = getfenv()["ACT_"..hold.."_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = getfenv()["ACT_"..hold.."_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = getfenv()["ACT_"..hold.."_VM_IDLE_3"] + self.VM_PULLBACK = getfenv()["ACT_"..hold.."_VM_PULLBACK"] + self.VM_PREFIRE = getfenv()["ACT_"..hold.."_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = getfenv()["ACT_"..hold.."_ATTACK_STAND_POSTFIRE"] + + self.VM_INSPECT_START = getfenv()["ACT_"..hold.."_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = getfenv()["ACT_"..hold.."_VM_INSPECT_IDLE"] + self.VM_INSPECT_END = getfenv()["ACT_"..hold.."_VM_INSPECT_END"] + self.VM_RELOAD_START = getfenv()["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD = getfenv()["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_FINISH = getfenv()["ACT_"..hold.."_RELOAD_FINISH"] + + self.VM_HITLEFT = getfenv()["ACT_"..hold.."_VM_HITCENTER"] + self.VM_HITRIGHT = getfenv()["ACT_"..hold.."_VM_SWINGHARD"] + self.VM_HITCENTER = getfenv()["ACT_"..hold.."_VM_HITCENTER"] + self.VM_SWINGHARD = getfenv()["ACT_"..hold.."_VM_SWINGHARD"] + end + + if self.UsesSpecialAnimations then + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + --self.VM_HITLEFT = ACT_VM_HITLEFT_SPECIAL + --self.VM_HITRIGHT = ACT_VM_HITRIGHT_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL + end + + if not noreplace then + local visuals = self:GetVisuals() + if visuals and visuals.animations then + for act,rep in pairs(visuals.animations) do + if ActivityNameTranslate[act] then + self[ActivityNameTranslate[act]] = getfenv()[rep] + end + end + end + end +end + +function SWEP:SendWeaponAnimEx(anim) + local t = type(anim) + + if t=="string" then + if string.find(anim,",") then + anim = string.Explode(",", anim) + t = "table" + end + end + + if t=="table" then + anim = table.Random(anim) + t = type(anim) + end + + if t=="number" then + self:SendWeaponAnim(anim) + elseif t=="string" then + --print(anim) + local s = self.Owner:GetViewModel():LookupSequence(anim) + self:SetSequence(s) + self.Owner:GetViewModel():ResetSequence(s) + end +end + +--================================================================== +-- THIRDPERSON ANIMATIONS +--================================================================== + +function SWEP:SetWeaponHoldType(t) + if (t == "PRIMARY2") then + t = "PRIMARY" + end + if (t == "ITEM3") then + t = "MELEE" + end + if (t == "FISTS") then + t = "MELEE" + end + for k, v in pairs(player.GetAll()) do + if v == self.Owner then + if v:IsHL2() then + t = string.lower( t ) + local index = ActIndex[ t ] + + if ( index == nil ) then + Msg( "SWEP:SetWeaponHoldType - ActIndex[ \"" .. t .. "\" ] isn't set! (defaulting to normal)\n" ) + t = "normal" + index = ActIndex[ t ] + end + + self.ActivityTranslate = {} + self.ActivityTranslate[ ACT_MP_STAND_IDLE ] = index + self.ActivityTranslate[ ACT_MP_WALK ] = index + 1 + self.ActivityTranslate[ ACT_MP_RUN ] = index + 2 + self.ActivityTranslate[ ACT_MP_CROUCH_IDLE ] = index + 3 + self.ActivityTranslate[ ACT_MP_CROUCHWALK ] = index + 4 + self.ActivityTranslate[ ACT_MP_ATTACK_STAND_PRIMARYFIRE ] = index + 5 + self.ActivityTranslate[ ACT_MP_ATTACK_CROUCH_PRIMARYFIRE ] = index + 5 + self.ActivityTranslate[ ACT_MP_RELOAD_STAND ] = index + 6 + self.ActivityTranslate[ ACT_MP_RELOAD_CROUCH ] = index + 6 + self.ActivityTranslate[ ACT_MP_JUMP ] = index + 7 + self.ActivityTranslate[ ACT_RANGE_ATTACK1 ] = index + 8 + self.ActivityTranslate[ ACT_MP_SWIM ] = index + 9 + + -- "normal" jump animation doesn't exist + if ( t == "normal" ) then + self.ActivityTranslate[ ACT_MP_JUMP ] = ACT_HL2MP_JUMP_SLAM + end + + else + + if IsValid(v) then + tf_util.ReadActivitiesFromModel(v) + end + self.ActivityTranslate = {} + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_MP_STAND_"..t] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_MP_RUN_"..t] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_MP_RUN_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_MP_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_MP_CROUCHWALK_"..t] + self.ActivityTranslate[ACT_MP_SWIM] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_AIRWALK] = getfenv()["ACT_MP_AIRWALK_"..t] + if (t == "MELEE_ALLCLASS") then + + self.ActivityTranslate[ACT_MP_GESTURE_VC_HANDMOUTH] = getfenv()["ACT_MP_GESTURE_VC_HANDMOUTH_MELEE"] + self.ActivityTranslate[ACT_MP_GESTURE_VC_THUMBSUP] = getfenv()["ACT_MP_GESTURE_VC_THUMBSUP_MELEE"] + self.ActivityTranslate[ACT_MP_GESTURE_VC_FINGERPOINT] = getfenv()["ACT_MP_GESTURE_VC_FINGERPOINT_MELEE"] + self.ActivityTranslate[ACT_MP_GESTURE_VC_FISTPUMP] = getfenv()["ACT_MP_GESTURE_VC_FISTPUMP_MELEE"] + + else + self.ActivityTranslate[ACT_MP_GESTURE_VC_HANDMOUTH] = getfenv()["ACT_MP_GESTURE_VC_HANDMOUTH_"..t] + self.ActivityTranslate[ACT_MP_GESTURE_VC_THUMBSUP] = getfenv()["ACT_MP_GESTURE_VC_THUMBSUP_"..t] + self.ActivityTranslate[ACT_MP_GESTURE_VC_FINGERPOINT] = getfenv()["ACT_MP_GESTURE_VC_FINGERPOINT_"..t] + self.ActivityTranslate[ACT_MP_GESTURE_VC_FISTPUMP] = getfenv()["ACT_MP_GESTURE_VC_FISTPUMP_"..t] + end + self.ActivityTranslate[ACT_MP_GESTURE_VC_NODYES] = getfenv()["ACT_MP_GESTURE_VC_NODYES_"..t] + self.ActivityTranslate[ACT_MP_GESTURE_VC_NODNO] = getfenv()["ACT_MP_GESTURE_VC_NODNO_"..t] + if v:GetPlayerClass() == "hl1scientist" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCH"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = v:GetSequenceActivity(v:LookupSequence("fallingloop")) + self.ActivityTranslate[ACT_MP_AIRWALK] = v:GetSequenceActivity(v:LookupSequence("fallingloop")) + self.ActivityTranslate[ACT_MP_SWIM] = v:GetSequenceActivity(v:LookupSequence("fallingloop")) + end + if v:GetPlayerClass() == "zombie" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "antlion" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + end + if v:GetPlayerClass() == "headcrab" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "fastzombie" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_INVALID"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_HL2MP_RUN_ZOMBIE_FAST"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_HL2MP_RUN_ZOMBIE_FAST"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_HL2MP_IDLE_CROUCH_ZOMBIE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_HL2MP_WALK_CROUCH_ZOMBIE_0"..math.random(1,5)] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "poisonzombie" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_RUN"] + end + if v:GetPlayerClass() == "rebel" and v:GetActiveWeapon():GetClass() != "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_RUN_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCH"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "boomer" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "spitter" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "boomette" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "smoker" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if !v:IsHL2() and !v:IsL4D() and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_MP_SWIM_"..t] + end + if v:GetPlayerClass() == "hunter" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "jockey" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "witch" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "charger" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_STAND_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_SWIM_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_TERROR_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_TERROR_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "l4d_zombie" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK2"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK2"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "boomer" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "spitter" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "boomette" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "tank_l4d" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_RUN_CROUCH"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "tank_l4d" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "l4d_zombie" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_CLIMB_UP"] + end + + if v:GetPlayerClass() == "metrocop" and v:GetActiveWeapon():GetClass() == "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "metrocop" and v:GetActiveWeapon():GetClass() == "tf_weapon_pistol_m9" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE_ANGRY_PISTOL"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN_AIM_PISTOL"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK_PISTOL"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "metrocop" and v:GetActiveWeapon():GetClass() == "tf_weapon_wrench_vagineer" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + if v:GetPlayerClass() == "rebel" and v:GetActiveWeapon():GetClass() == "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = getfenv()["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = getfenv()["ACT_RUN_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = getfenv()["ACT_RUN_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = getfenv()["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = getfenv()["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = getfenv()["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_JUMP"] + end + + if t == "PRIMARY" then + self.ActivityTranslate[ACT_MP_DEPLOYED_IDLE] = ACT_MP_DEPLOYED_IDLE + self.ActivityTranslate[ACT_MP_DEPLOYED] = ACT_MP_DEPLOYED_PRIMARY + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED_IDLE] = ACT_MP_CROUCH_DEPLOYED_IDLE + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED] = ACT_MP_CROUCHWALK_DEPLOYED + self.ActivityTranslate[ACT_MP_SWIM_DEPLOYED] = ACT_MP_SWIM_DEPLOYED_PRIMARY + else + self.ActivityTranslate[ACT_MP_DEPLOYED_IDLE] = getfenv()["ACT_MP_DEPLOYED_IDLE_"..t] + self.ActivityTranslate[ACT_MP_DEPLOYED] = getfenv()["ACT_MP_DEPLOYED_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED_IDLE] = getfenv()["ACT_MP_CROUCH_DEPLOYED_IDLE_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED] = getfenv()["ACT_MP_CROUCHWALK_DEPLOYED_"..t] + self.ActivityTranslate[ACT_MP_SWIM_DEPLOYED] = getfenv()["ACT_MP_SWIM_DEPLOYED_"..t] + end + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_STAND_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_SWIM_"..t] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_SECONDARYFIRE] = getfenv()["ACT_MP_ATTACK_STAND_"..t.."_SECONDARY"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_SECONDARYFIRE] = getfenv()["ACT_MP_ATTACK_CROUCH_"..t.."_SECONDARY"] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_SECONDARYFIRE] = getfenv()["ACT_MP_ATTACK_SWIM_"..t.."_SECONDARY"] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED] = getfenv()["ACT_MP_ATTACK_STAND_"..t.."_DEPLOYED"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED] = getfenv()["ACT_MP_ATTACK_CROUCH_"..t.."_DEPLOYED"] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARY_DEPLOYED or 0]= getfenv()["ACT_MP_ATTACK_SWIM_"..t.."_DEPLOYED"] + if (self:GetClass() == "tf_weapon_slap") then + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_STAND_ITEM3"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_CROUCH_ITEM3"] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARYFIRE] = getfenv()["ACT_MP_ATTACK_SWIM_ITEM3"] + end + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PREFIRE] = ACT_MP_ATTACK_STAND_PREFIRE + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PREFIRE] = ACT_MP_ATTACK_CROUCH_PREFIRE + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PREFIRE] = ACT_MP_ATTACK_SWIM_PREFIRE + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_POSTFIRE] = ACT_MP_ATTACK_STAND_POSTFIRE + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_POSTFIRE] = ACT_MP_ATTACK_CROUCH_POSTFIRE + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_POSTFIRE] = ACT_MP_ATTACK_SWIM_POSTFIRE + + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_MP_RELOAD_STAND_"..t] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH] = getfenv()["ACT_MP_RELOAD_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM] = getfenv()["ACT_MP_RELOAD_SWIM_"..t] + + self.ActivityTranslate[ACT_MP_RELOAD_STAND_LOOP] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_LOOP"] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_LOOP] = getfenv()["ACT_MP_RELOAD_CROUCH_"..t.."_LOOP"] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM_LOOP] = getfenv()["ACT_MP_RELOAD_SWIM_"..t.."_LOOP"] + + self.ActivityTranslate[ACT_MP_RELOAD_STAND_END] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_END"] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_END] = getfenv()["ACT_MP_RELOAD_CROUCH_"..t.."_END"] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM_END] = getfenv()["ACT_MP_RELOAD_SWIM_"..t.."_END"] + + self.ActivityTranslate[ACT_MP_JUMP] = getfenv()["ACT_MP_JUMP_START_"..t] + self.ActivityTranslate[ACT_MP_JUMP_START] = getfenv()["ACT_MP_JUMP_START_"..t] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = getfenv()["ACT_MP_JUMP_FLOAT_"..t] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = getfenv()["ACT_MP_JUMP_LAND_"..t] + self.ActivityTranslate[ACT_LAND] = getfenv()["ACT_MP_JUMP_LAND_"..t] + if (v:GetPlayerClass() == "soldier") then + + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = getfenv()["ACT_MP_RELOAD_STAND_"..t] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH] = getfenv()["ACT_MP_RELOAD_STAND_"..t] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM] = getfenv()["ACT_MP_RELOAD_STAND_"..t] + + self.ActivityTranslate[ACT_MP_RELOAD_STAND_LOOP] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_LOOP"] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_LOOP] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_LOOP"] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM_LOOP] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_LOOP"] + + self.ActivityTranslate[ACT_MP_RELOAD_STAND_END] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_END"] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_END] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_END"] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM_END] = getfenv()["ACT_MP_RELOAD_STAND_"..t.."_END"] + + end + end + end + end +end + +function SWEP:TranslateActivity(act) + return self.ActivityTranslate[act] or -1 +end diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_crits.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shd_crits.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_crits.lua rename to gamemodes/tf/entities/weapons/tf_weapon_base/shd_crits.lua diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_itemdata.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shd_itemdata.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_itemdata.lua rename to gamemodes/tf/entities/weapons/tf_weapon_base/shd_itemdata.lua diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_sound.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shd_sound.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_sound.lua rename to gamemodes/tf/entities/weapons/tf_weapon_base/shd_sound.lua diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_util.lua b/gamemodes/tf/entities/weapons/tf_weapon_base/shd_util.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/tf_weapon_base/shd_util.lua rename to gamemodes/tf/entities/weapons/tf_weapon_base/shd_util.lua diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bat/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bat/shared.lua new file mode 100644 index 000000000..e207c9b9c --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bat/shared.lua @@ -0,0 +1,47 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 2 +if CLIENT then + SWEP.PrintName = "Bat" +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Bat.Miss") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Bat.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Bat.HitWorld") + +SWEP.BaseDamage = 35 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.5 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "melee2" + +function SWEP:Deploy() + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_invasion_bat/c_invasion_bat.mdl" then + if SERVER then + self:EmitSound("Weapon_BatSaber.Draw") + end + + self.Swing = Sound("Weapon_BatSaber.Swing") + self.SwingCrit = Sound("Weapon_BatSaber.SwingCrit") + end + return self.BaseClass.Deploy(self) +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bat_fish/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bat_fish/shared.lua new file mode 100644 index 000000000..8c790e131 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bat_fish/shared.lua @@ -0,0 +1,61 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Bat" +SWEP.Slot = 2 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Bat.Miss") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("Weapon_HolyMackerel.HitFlesh") +SWEP.HitWorld = Sound("Weapon_HolyMackerel.HitWorld") + +SWEP.BaseDamage = 35 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.5 + +SWEP.HoldType = "MELEE" + +SWEP.Special_HumiliationCount = "#Humiliation_Count" +SWEP.Special_HumiliationKill = "#Humiliation_Kill" + +function SWEP:OnMeleeHit(tr) + if CLIENT then return end + + local ent = tr.Entity + if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end + + local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) + + umsg.Start("Notice_EntityHumiliationCounter") + umsg.String(GAMEMODE:EntityName(ent)) + umsg.Short(GAMEMODE:EntityTeam(ent)) + umsg.Short(GAMEMODE:EntityID(ent)) + + umsg.String(InflictorClass) + + umsg.String(GAMEMODE:EntityName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + --[[ + umsg.String(GAMEMODE:EntityName(cooperator)) + umsg.Short(GAMEMODE:EntityTeam(cooperator)) + umsg.Short(GAMEMODE:EntityID(cooperator))]] + + umsg.Bool(self.CurrentShotIsCrit) + umsg.End() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bat_giftwrap/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bat_giftwrap/shared.lua new file mode 100644 index 000000000..1f7261fe7 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bat_giftwrap/shared.lua @@ -0,0 +1,87 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Sandman" +end +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_wooden_bat/c_wooden_bat.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Bat.Miss") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("BallBuster.HitFlesh") +SWEP.HitRobot = Sound("BallBuster.HitWorld") +SWEP.HitWorld = Sound("BallBuster.HitWorld") + +SWEP.BaseDamage = 11 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.5 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 10 + +SWEP.HoldType = "MELEE" +SWEP.HasThirdpersonCritAnimation = false + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1500 +SWEP.AddPitch = 1 + +function SWEP:Think() + self.BaseClass.Think(self) + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_HITCENTER_SPECIAL + self.VM_INSPECT_START = ACT_MELEE_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_MELEE_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_MELEE_VM_INSPECT_END +end + + +function SWEP:SecondaryAttack() + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK_SPECIAL) + self:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) + if SERVER then + self.Owner:EmitSoundEx("BallBuster.HitBall") + local grenade = ents.Create("tf_projectile_ornament") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + + self:InitProjectileAttributes(grenade) + + grenade.NameOverride = self:GetItemData().item_iconname + grenade:SetOwner(self.Owner) + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + self:StopTimers() + self:ShootEffects() +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat_uuuuu/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bat_uuuuu/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/tf_weapon_bat_uuuuu/shared.lua rename to gamemodes/tf/entities/weapons/tf_weapon_bat_uuuuu/shared.lua diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bat_wood/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bat_wood/shared.lua new file mode 100644 index 000000000..b1e4ef373 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bat_wood/shared.lua @@ -0,0 +1,93 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Sandman" +end +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_wooden_bat/c_wooden_bat.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.Adminonly = true +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Bat.Miss") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("Weapon_BaseballBat.HitFlesh") +SWEP.HitRobot = Sound("MVM_Weapon_BaseballBat.HitFlesh") +SWEP.HitWorld = Sound("Weapon_BaseballBat.HitWorld") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.5 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 10 + +SWEP.HoldType = "MELEE" +SWEP.HasThirdpersonCritAnimation = false + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1500 +SWEP.AddPitch = 1 + +function SWEP:Think() + self.BaseClass.Think(self) + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_HITCENTER_SPECIAL + self.VM_INSPECT_START = ACT_MELEE_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_MELEE_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_MELEE_VM_INSPECT_END +end + + +function SWEP:SecondaryAttack() + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK_SPECIAL) + self:SetNextPrimaryFire( CurTime() + 0.25 ) + self:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) + if SERVER then + self.Owner:EmitSoundEx("Weapon_BaseballBat.HitBall") + local grenade = ents.Create("tf_projectile_ball") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + + self:InitProjectileAttributes(grenade) + + grenade.NameOverride = self:GetItemData().item_iconname + grenade:SetOwner(self.Owner) + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + self.NextIdle = CurTime() + self:SequenceDuration() + self:StopTimers() + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bat_wood_alt/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bat_wood_alt/shared.lua new file mode 100644 index 000000000..603477eb4 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bat_wood_alt/shared.lua @@ -0,0 +1,85 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Sandman 2" +SWEP.Slot = 3 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_wooden_bat/c_wooden_bat.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.Adminonly = true +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_BaseballBat.HitBall") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("Weapon_BaseballBat.HitFlesh") +SWEP.HitWorld = Sound("Weapon_BaseballBat.HitWorld") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = 1 +SWEP.Primary.Delay = 10 + +SWEP.HoldType = "MELEE" + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1100 +SWEP.AddPitch = -4 +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_HITCENTER_SPECIAL + self.VM_INSPECT_START = ACT_MELEE_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_MELEE_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_MELEE_VM_INSPECT_END +end + + +function SWEP:MeleeAttack() + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK_SPECIAL) + if SERVER then + self.Owner:EmitSoundEx("Weapon_BaseballBat.HitBall") + local grenade = ents.Create("tf_projectile_ball") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + + grenade.NameOverride = self:GetItemData().item_iconname + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + self:StopTimers() + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_berserk/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_berserk/shared.lua new file mode 100644 index 000000000..9b16f93e4 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_berserk/shared.lua @@ -0,0 +1,112 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "TF Player Controller" + SWEP.Slot = 0 +end + +SWEP.Base = "weapon_base" + +SWEP.ViewModel = "models/weapons/c_pistol.mdl" +SWEP.WorldModel = "models/weapons/w_pistol.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.UseHands = true +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2 Gamemode" + +SWEP.Swing = Sound("Weapon_Fist.Miss") +SWEP.SwingCrit = Sound("Weapon_Fist.MissCrit") +SWEP.HitFlesh = Sound("items/powerup_pickup_knockout_melee_hit.wav") +SWEP.HitWorld = Sound("Weapon_Fist.HitWorld") + +SWEP.CritEnabled = Sound("Weapon_BoxingGloves.CritEnabled") +SWEP.CritHit = Sound("Weapon_BoxingGloves.CritHit") + +SWEP.DropPrimaryWeaponInstead = true + +SWEP.BaseDamage = 145 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.5 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 0.5 + +SWEP.CritForceAddPitch = 45 + +SWEP.HoldType = "primary" +SWEP.HoldTypeHL2 = "pistol" +SWEP.HasThirdpersonCritAnimation = false +SWEP.HasSecondaryFire = true +SWEP.UsesLeftRightAnim = true + +SWEP.ShouldOccurFists = true +SWEP.DamageType = DMG_BLAST + +function SWEP:OnCritBoostStarted() + --self.Owner:EmitSoundEx(self.CritEnabled) +end + +function SWEP:OnCritBoostAdded() + --self.Owner:EmitSoundEx(self.CritHit) +end + + +function SWEP:SecondaryAttack() + +end +function SWEP:PrimaryAttack() + if (self.Owner) then + if (self.Owner:GetEyeTrace().Entity && self.Owner:GetEyeTrace().Entity:IsPlayer()) then + self.Owner:GetEyeTrace().Entity.BeingControlled = true + self.Owner:GetEyeTrace().Entity.BeingControlledBy = self.Owner + self.Owner.ControllingPlayer = self.Owner:GetEyeTrace().Entity + if SERVER then + self.Owner:ExitVehicle() + self.Owner:Flashlight(false) + self.Owner:StripWeapons() + self.Owner:Spectate( OBS_MODE_CHASE ) + self.Owner:SpectateEntity(self.Owner:GetEyeTrace().Entity) + + self.Owner:SetNoDraw(true) + self.Owner:SetCollisionGroup(COLLISION_GROUP_IN_VEHICLE) + self.Owner:SetAvoidPlayers(false) + end + self:EmitSound("weapons/stunstick/alyx_stunner2.wav", 80, 110) + self:SetNextPrimaryFire(CurTime() + 1) + elseif (self.Owner:GetEyeTrace().Entity && self.Owner:GetEyeTrace().Entity:IsNPC()) then + self.Owner:GetEyeTrace().Entity.BeingControlled = true + self.Owner:GetEyeTrace().Entity.BeingControlledBy = self.Owner + self.Owner.ControllingPlayer = self.Owner:GetEyeTrace().Entity + if SERVER then + self.Owner:GetEyeTrace().Entity:AddEntityRelationship(self.Owner,D_LI,99) + self.Owner:ExitVehicle() + self.Owner:Flashlight(false) + self.Owner:StripWeapons() + self.Owner:Spectate( OBS_MODE_CHASE ) + self.Owner:SpectateEntity(self.Owner:GetEyeTrace().Entity) + + self.Owner:SetNoDraw(true) + self.Owner:SetCollisionGroup(COLLISION_GROUP_IN_VEHICLE) + self.Owner:SetAvoidPlayers(false) + end + self:EmitSound("weapons/stunstick/alyx_stunner2.wav", 80, 110) + self:SetNextPrimaryFire(CurTime() + 1) + else + self:EmitSound("common/wpn_denyselect.wav", 80, 100) + self:SetNextPrimaryFire(CurTime() + 0.5) + end + else + self:EmitSound("common/wpn_denyselect.wav", 80, 100) + self:SetNextPrimaryFire(CurTime() + 0.5) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bonesaw/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bonesaw/shared.lua new file mode 100644 index 000000000..d66f9ae22 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bonesaw/shared.lua @@ -0,0 +1,67 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Bonesaw" +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/c_models/c_medic_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_bonesaw.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Bonesaw.Miss") +SWEP.SwingCrit = Sound("Weapon_Bonesaw.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Bonesaw.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Bonesaw.HitWorld") +SWEP.CustomSound1 = Sound("Weapon_Ubersaw.HitFlesh") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "melee" + +if CLIENT then + +function SWEP:ViewModelDrawn() + if IsValid(self.CModel) then + self.CModel:SetPoseParameter("syringe_charge_level", self.Owner:GetNWInt("Ubercharge") * 0.01) + end + + self:CallBaseFunction("ViewModelDrawn") +end + +function SWEP:DrawWorldModel(from_postplayerdraw) + if IsValid(self.WModel2) then + --self.WModel2:SetPoseParameter("syringe_charge_level", self.Owner:GetNWInt("Ubercharge") * 0.01) + end + + self:CallBaseFunction("DrawWorldModel", from_postplayerdraw) +end + +end + +function SWEP:MeleeHitSound(tr) + if self:GetItemData().model_player == "models/weapons/c_models/c_ubersaw/c_ubersaw.mdl" and tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then + self:EmitSound(self.CustomSound1) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_uberneedle/c_uberneedle.mdl" and tr.Entity:IsTFPlayer() and not tr.Entity:IsBuilding() then + self:EmitSound(self.CustomSound1) + else + self:BaseCall(tr) + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_bottle/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_bottle/shared.lua new file mode 100644 index 000000000..251a4c248 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_bottle/shared.lua @@ -0,0 +1,142 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Bottle" +end + +sound.Add( { + name = "Taunt.Demo03BottleCatch", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_hand_clap.wav"} +} ) +sound.Add( { + name = "Taunt.Demo03BottleSlosh", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_bottle_slosh.wav"} +} ) +sound.Add( { + name = "Taunt.Demo03BottleAh", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_bottle_ah.wav"} +} ) + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_bottle/c_bottle.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Bottle.Miss") +SWEP.SwingCrit = Sound("Weapon_Bottle.MissCrit") + +SWEP.HitFlesh = Sound("Weapon_Bottle.IntactHitFlesh") +SWEP.HitRobot = Sound("MVM_Weapon_Bottle.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Bottle.IntactHitWorld") + +SWEP.BrokenHitFlesh = Sound("Weapon_Bottle.BrokenHitFlesh") +SWEP.BrokenHitWorld = Sound("Weapon_Bottle.BrokenHitWorld") + +SWEP.BreakSound = Sound("Weapon_Bottle.Break") +SWEP.HasThirdpersonCritAnimation2 = false +SWEP.DamageType = bit.bor(DMG_CLUB,DMG_BULLET) +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.CriticalChance = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" + +SWEP.HoldTypeHL2 = "melee" + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + self:DTVar("Bool", 0, "Broken") +end + +function SWEP:ViewModelDrawn() + if IsValid(self.CModel) then + if self.dt.Broken then + self.CModel:SetBodygroup(0,(self.dt.Broken and 1) or 0) + + self.VBrokenState = self.dt.Broken + end + end + + self:CallBaseFunction("ViewModelDrawn") +end + +function SWEP:DrawWorldModel(from_postplayerdraw) + if IsValid(self.WModel) then + if self.dt.Broken then + self.WModel:SetBodygroup(0,(self.dt.Broken and 1) or 0) + end + end + + self:CallBaseFunction("DrawWorldModel", from_postplayerdraw) +end + +function SWEP:OnMeleeHit(trace) + if self:Critical() and not self.dt.Broken then + if SERVER then + self.dt.Broken = true + + self.Owner:GetViewModel():SetBodygroup(1,1) + end + self.HitFlesh = self.BrokenHitFlesh + self.HitWorld = self.BrokenHitWorld + self.Broken = true + + if CLIENT then + if (IsValid(self.WModel)) then + self.WModel:SetBodygroup(0,(self.Broken and 1) or 0) + end + end + self:EmitSound(self.BreakSound) + end +end + +function SWEP:Deploy() + if SERVER and self.dt.Broken then + self.Owner:GetViewModel():SetBodygroup(1,1) + end + if IsValid(self.WModel) then + if self.dt.Broken then + self.WModel:SetBodygroup(0,(self.dt.Broken and 1) or 0) + self.BrokenState = self.dt.Broken + end + end + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + self:OnRemove() + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + if SERVER and self.dt.Broken then + if IsValid(self.Owner) and self.Owner:GetActiveWeapon()==self then + self.Owner:GetViewModel():SetBodygroup(1,0) + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_buff_item/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_buff_item/shared.lua new file mode 100644 index 000000000..001fdff3d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_buff_item/shared.lua @@ -0,0 +1,93 @@ + if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Horn" +SWEP.Slot = 1 +end + + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_sandwich/c_sandwich.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("weapons/buff_banner_horn_red.wav") +SWEP.SwingCrit = Sound("weapons/buff_banner_horn_blue.wav") +SWEP.Swing2 = Sound("weapons/battalions_backup_red.wav") +SWEP.SwingCrit2 = Sound("weapons/battalions_backup_blue.wav") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("weapons/buff_banner_flag.wav") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 30 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 30 +SWEP.RangedMinHealing = 45 +SWEP.RangedMaxHealing = 85 + +SWEP.HoldType = "MELEE" + +function SWEP:PrimaryAttack() + + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + self:SendWeaponAnim(ACT_ITEM1_VM_SECONDARYATTACK) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_ITEM1, true) + if self:GetItemData().model_player == "models/weapons/c_models/c_battalion_bugle/c_battalion_bugle.mdl" then + if self.Owner:Team() == TEAM_BLU then + self:EmitSound(self.SwingCrit2, 85 ) + elseif self.Owner:Team() == TF_TEAM_PVE_INADERS then + self:EmitSound(self.SwingCrit2, 85 ) + else + self:EmitSound(self.Swing2, 85 ) + end + else + if self.Owner:Team() == TEAM_BLU then + self:EmitSound(self.SwingCrit, 85 ) + elseif self.Owner:Team() == TF_TEAM_PVE_INADERS then + self:EmitSound(self.SwingCrit, 85 ) + else + self:EmitSound(self.Swing, 85 ) + end + end + timer.Simple(3, function() + if SERVER then + self.Owner:EmitSoundEx( self.HitWorld, 85 ) + self.Owner:Speak("TLK_PLAYER_BATTLECRY") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_bbox") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_qrl") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_dh") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_dt") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_airstrike") + self.Owner:SelectWeapon("tf_weapon_particle_launcher") + GAMEMODE:StartMiniCritBoost(self.Owner) + end + end) + timer.Simple(20, function() + GAMEMODE:StopCritBoost(self.Owner) + end) +end + +function SWEP:Deploy() + self:SendWeaponAnim(ACT_ITEM1_VM_DRAW) + + return self:CallBaseFunction("Holster") +end + +function SWEP:Holster() + self.NextMeleeAttack = nil + + self:StopTimers() + + return self:CallBaseFunction("Holster") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_buff_item_conch/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_buff_item_conch/shared.lua new file mode 100644 index 000000000..269a55c5c --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_buff_item_conch/shared.lua @@ -0,0 +1,163 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end +game.AddParticles( "particles/soldierbuff.pcf" ) +PrecacheParticleSystem( "soldierbuff_red_buffed" ) +PrecacheParticleSystem( "soldierbuff_blue_buffed" ) + +if CLIENT then + SWEP.PrintName = "Concheror" + SWEP.Slot = 1 + SWEP.HasCModel = true + + SWEP.RenderGroup = RENDERGROUP_BOTH + +end + + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shogun_warhorn/c_shogun_warhorn.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.SpeedEnabled = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("weapons/samurai/tf_conch.wav") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("weapons/buff_banner_flag.wav") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 28 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 30 +SWEP.RangedMinHealing = 45 +SWEP.RangedMaxHealing = 85 + +SWEP.HoldType = "MELEE" + +SWEP.Ready = true +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_ITEM2_VM_DRAW + self.VM_IDLE = ACT_ITEM2_VM_IDLE +end + +function SWEP:PrimaryAttack() + + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_ITEM2, true) + self:SendWeaponAnim(ACT_ITEM2_VM_SECONDARYATTACK) + self:EmitSound("items/samurai/tf_conch.wav", 90, 100) + timer.Simple(3, function() + if SERVER then + timer.Create("SetFasterSpeed1", 1, 20, function() + self.Owner:SetClassSpeed(self.Owner:GetClassSpeed() * 1.003) + end) + if SERVER then + animent3 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent3:SetAngles(self.Owner:GetAngles()) + animent3:SetPos(self.Owner:GetPos()) + animent3:SetModel("models/workshop_partner/weapons/c_models/c_shogun_warbanner/c_shogun_warbanner.mdl") + animent3:Spawn() + animent3:Activate() + animent3:SetParent(self.Owner) + animent3:AddEffects(EF_BONEMERGE) + animent3:SetName("Cosmetic"..self.Owner:EntIndex()) + + if self.Owner:GetPlayerClass() == "soldierbuffed" then + timer.Create("RemoveBanner"..self.Owner:EntIndex(), 120, 1, function() + animent3:Remove() + end) + else + timer.Create("RemoveBanner"..self.Owner:EntIndex(), 20, 1, function() + animent3:Remove() + end) + end + end + self.Ready = false + timer.Create("HealFor20Secs", 1, 20, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 30, false, false) + self.Owner:SetArmor(120) + end) + for k,v in ipairs(team.GetPlayers(self.Owner:Team())) do + GAMEMODE:StartMiniCritBoost(v) + ParticleEffectAttach("soldierbuff_red_buffed", PATTACH_ABSORIGIN_FOLLOW, v, 0) + timer.Create("HealFor20Secs"..v:EntIndex(), 1, 20, function() + GAMEMODE:HealPlayer(self.Owner, v, 30, false, false) + v:SetArmor(120) + v:SetClassSpeed(v:GetClassSpeed() * 1.003) + end) + end + self.SpeedEnabled = true + self.Owner:Speak("TLK_PLAYER_BATTLECRY") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_bbox") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_qrl") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_dh") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_dt") + self.Owner:SelectWeapon("tf_weapon_rocketlauncher_airstrike") + self.Owner:SelectWeapon("tf_weapon_particle_launcher") + GAMEMODE:StartMiniCritBoost(self.Owner) + ParticleEffectAttach("soldierbuff_red_buffed", PATTACH_ABSORIGIN_FOLLOW, self.Owner, 0) + end + end) + if self.Owner:GetPlayerClass() == "soldierbuffed" then + timer.Simple(120, function() + if SERVER then + for k,v in ipairs(team.GetPlayers(self.Owner:Team())) do + timer.Stop("SetFasterSpeed1"..v:EntIndex()) + GAMEMODE:StopCritBoost(v) + v:ResetClassSpeed() + v:StopParticles() + end + timer.Stop("SetFasterSpeed1") + GAMEMODE:StopCritBoost(self.Owner) + self.Owner:ResetClassSpeed() + + end + self.Owner:StopParticles() + self.SpeedEnabled = false + self.Ready = true + end) + else + timer.Simple(20, function() + if SERVER then + for k,v in ipairs(team.GetPlayers(self.Owner:Team())) do + timer.Stop("SetFasterSpeed1"..v:EntIndex()) + GAMEMODE:StopCritBoost(v) + v:ResetClassSpeed() + v:StopParticles() + end + timer.Stop("SetFasterSpeed1") + GAMEMODE:StopCritBoost(self.Owner) + self.Owner:ResetClassSpeed() + + end + self.Owner:StopParticles() + self.SpeedEnabled = false + self.Ready = true + end) + end +end + +function SWEP:Deploy() + self:SendWeaponAnim(ACT_ITEM2_VM_DRAW) + --MsgFN("Deploy %s", tostring(self)) + self.BaseClass.Deploy(self) +end + +function SWEP:Holster() + self.NextMeleeAttack = nil + return self:CallBaseFunction("Holster") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_builder/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_builder/shared.lua new file mode 100644 index 000000000..18bec274f --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_builder/shared.lua @@ -0,0 +1,1495 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +if CLIENT then + +SWEP.GlobalCustomHUD = {HudBuildingStatus = true} + SWEP.PrintName = "Builder" + SWEP.Slot = 999 +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_sapper/c_sapper.mdl" + +SWEP.HoldType = "BUILDING" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.HoldTypeHL2 = "rpg" + +SWEP.Primary.Delay = 0.1 +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" +SWEP.DeploySound = Sound("weapons/draw_Secondary.wav") + +SWEP.Secondary.Delay = 0.1 +SWEP.Secondary.Automatic = false +SWEP.HasSecondaryFire = true + +SWEP.DeployDuration = 0.1 + +SWEP.Moving = false + +SWEP.MovedBuildingLevel = 1 + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + self:DTVar("Int", 1, "BuildGroup") + self:DTVar("Int", 2, "BuildMode") +end + +function SWEP:GetBuildGroup() + return self.dt.BuildGroup +end + +function SWEP:GetBuildMode() + return self.dt.BuildMode +end + +function SWEP:GetBuilding() + local group, mode = self.dt.BuildGroup, self.dt.BuildMode + if self then + if self.Owner and self.Owner:GetPlayerClass() != "spy" then + if self.Owner.Buildings then + if self.Owner.Buildings[group] and self.Owner.Buildings[group][mode] then + return self.Owner.Buildings[group][mode] + end + end + end + end +end + + + +function SWEP:SetupBuilding(obj) + if obj.v_model and obj.w_model then + self.ViewModelOverride = obj.v_model + self.ViewModel = self.ViewModelOverride + self:SetModel(self.ViewModelOverride) + if IsValid(self.Owner:GetViewModel()) then + self.Owner:GetViewModel():SetModel(self.ViewModelOverride) + end + self.WorldModelOverride = obj.w_model + + if CLIENT then + self.WorldModelOverride2 = obj.w_model + + self:InitializeWModel2() + + self.HasCModel = false + if IsValid(self.CModel) then + self.CModel:Remove() + end + end + + self:SetupCModelActivities(nil, true) + end +end + +function SWEP:Inspect() +end + +function SWEP:Equip() + if SERVER then + if self.Owner:GetPlayerClass() != "spy" then + ----print("Equip building", self.Owner) + --PrintTable(self.Owner.Buildings) + + local group, mode = self.dt.BuildGroup, self.dt.BuildMode + if not self.Owner.Buildings[group] or not self.Owner.Buildings[group][mode] then + ----print("Not a valid building, changing current building mode") + for group=0,tf_objects.NumObjects()-1 do + if self.Owner.Buildings[group] then + self.dt.BuildGroup = group + self.dt.BuildMode = 0 + break + end + end + end + + end + ----print("group",self.dt.BuildGroup,"mode",self.dt.BuildMode) + end + + return self:CallBaseFunction("Equip") +end + +function SWEP:CanPrimaryAttack() + if self.Owner:GetPlayerClass() == "spy" then + self.Slot = 1 + else + self.Slot = 11 + end + return true +end + +function SWEP:CanSecondaryAttack() + return true +end + +function SWEP:PrimaryAttack() + + if self.Owner:GetPlayerClass() == "spy" then + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 120)) do + if v:IsPlayer() and v:GetInfoNum("tf_robot", 0) == 1 and not v:IsFriendly(self.Owner) and v:GetInfoNum("tf_giant_robot",0) != 1 then + self:SetNextPrimaryFire(CurTime() + 10) + if SERVER then + if v:GetNWBool("Taunting") == true then return end + if not v:IsOnGround() then return end + if v:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + v:EmitSound("Weapon_Sapper.Plant") + local seq = v:SelectWeightedSequence( ACT_DOD_SECONDARYATTACK_BOLT ) + local len = v:SequenceDuration( seq ) + local seq2 = v:SelectWeightedSequence( ACT_MP_STUN_MIDDLE ) + local len2 = v:SequenceDuration( v:LookupSequence("primary_stun_middle") ) + timer.Create("StunRobot25"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN,2) + timer.Create("StunRobotloop3"..v:EntIndex(), len, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop") v:Freeze(false) return end + timer.Create("StunRobotloop4"..v:EntIndex(), len2, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop4") v:Freeze(false) return end + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE,2) + end) + end) + end) + v:DoAnimationEvent(ACT_DOD_SECONDARYATTACK_BOLT, true) + v:Freeze(true) + v:EmitSound("SappedRobot") + v:SetNWBool("Taunting", true) + v:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(v) + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + animent:EmitSound("Psap.Hacking") + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + end + timer.Create("EndStunRobot"..v:EntIndex(), 7, 1, function() + if not IsValid(v) or (v:Health() < 1 and v:GetNWBool("Taunting") != true) then v:Freeze(false) v:StopSound("SappedRobot") timer.Stop("EndStunRobot"..v:EntIndex()) timer.Stop("StunRobotloop3"..v:EntIndex()) timer.Stop("StunRobotloop4"..v:EntIndex()) return end + timer.Stop("StunRobotloop3"..v:EntIndex()) + timer.Stop("StunRobotloop4"..v:EntIndex()) + v:StopSound("SappedRobot") + v:EmitSound("Weapon_Sapper.Removed") + net.Start("DeActivateTauntCam") + net.Send(v) + v:Freeze(false) + v:SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + animent:Remove() + end) + end + end + if v:IsPlayer() and not v:IsFriendly(self.Owner) and v:GetInfoNum("tf_giant_robot",0) == 1 then + self:SetNextPrimaryFire(CurTime() + 10) + if SERVER then + if v:GetNWBool("Taunting") == true then return end + if not v:IsOnGround() then return end + if v:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + v:EmitSound("Weapon_Sapper.Plant") + local seq = v:SelectWeightedSequence( ACT_DOD_SECONDARYATTACK_BOLT ) + local len = v:SequenceDuration( seq ) + local seq2 = v:SelectWeightedSequence( ACT_MP_STUN_MIDDLE ) + local len2 = v:SequenceDuration( v:LookupSequence("primary_stun_middle") ) + timer.Create("StunRobot25"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN,2) + timer.Create("StunRobotloop3"..v:EntIndex(), len, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop") v:Freeze(false) return end + timer.Create("StunRobotloop4"..v:EntIndex(), len2, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop4") v:Freeze(false) return end + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE,2) + end) + end) + end) + v:DoAnimationEvent(ACT_DOD_SECONDARYATTACK_BOLT, true) + v:EmitSound("SappedRobot") + v:SetClassSpeed(v:GetClassSpeed() * 0.5) + net.Send(v) + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + self.Owner:EmitSoundEx("Psap.Hacking") + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + end + timer.Create("EndStunRobot"..v:EntIndex(), 7, 1, function() + if not IsValid(v) or (v:Health() < 1 and v:GetNWBool("Taunting") != true) then v:Freeze(false) v:StopSound("SappedRobot") timer.Stop("EndStunRobot"..v:EntIndex()) timer.Stop("StunRobotloop3"..v:EntIndex()) timer.Stop("StunRobotloop4"..v:EntIndex()) return end + timer.Stop("StunRobotloop3"..v:EntIndex()) + timer.Stop("StunRobotloop4"..v:EntIndex()) + v:DoAnimationEvent(ACT_MP_STUN_END,2) + v:StopSound("SappedRobot") + v:EmitSound("Weapon_Sapper.Removed") + net.Send(v) + v:ResetClassSpeed() + animent:Remove() + end) + end + end + if string.find(game.GetMap(), "mvm_") and v:IsPlayer() and v:Team() == TEAM_BLU then + self:SetNextPrimaryFire(CurTime() + 10) + if SERVER then + if v:GetNWBool("Taunting") == true then return end + if not v:IsOnGround() then return end + if v:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + v:EmitSound("Weapon_Sapper.Plant") + + local seq = v:SelectWeightedSequence( ACT_MP_STUN_BEGIN ) + local len = v:SequenceDuration( seq ) + local seq2 = v:SelectWeightedSequence( ACT_MP_STUN_MIDDLE ) + local len2 = v:SequenceDuration( seq2 ) + timer.Create("StunRobot25"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN,true) + timer.Create("StunRobotloop3"..v:EntIndex(), 0.7, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop") v:Freeze(false) return end + timer.Create("StunRobotloop4"..v:EntIndex(), 0.13, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop4") v:Freeze(false) return end + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE,true) + end) + end) + end) + v:Freeze(true) + v:EmitSound("SappedRobot") + v:SetNWBool("Taunting", true) + v:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(v) + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + self.Owner:EmitSoundEx("Psap.Hacking") + animent:SetName("SappedRobot"..v:EntIndex()) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + animent:SetName("SappedRobot"..v:EntIndex()) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + animent:SetName("SappedRobot"..v:EntIndex()) + end + timer.Create("EndStunRobot"..v:EntIndex(), 7, 1, function() + if not IsValid(v) or (v:Health() < 1 and v:GetNWBool("Taunting") != true) then v:Freeze(false) v:StopSound("SappedRobot") timer.Stop("EndStunRobot"..v:EntIndex()) timer.Stop("StunRobotloop3"..v:EntIndex()) timer.Stop("StunRobotloop4"..v:EntIndex()) return end + timer.Stop("StunRobotloop3"..v:EntIndex()) + timer.Stop("StunRobotloop4"..v:EntIndex()) + v:DoAnimationEvent(ACT_MP_STUN_END,2) + v:StopSound("SappedRobot") + v:EmitSound("Weapon_Sapper.Removed") + net.Start("DeActivateTauntCam") + net.Send(v) + v:Freeze(false) + v:SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + for k,v in ipairs(ents.FindByName("SappedRobot"..v:EntIndex())) do + v:Remove() + end + end) + end + end + if v:GetClass() == "prop_vehicle_jeep" then + + v:EmitSound("weapons/sapper_plant.wav") + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("Psap.Hacking") + end + if SERVER then + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetAttachment(1).Pos) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetAttachment(1).Pos) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetAttachment(1).Pos) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + end + v:Fire("AddOutput", "TurnOff") + v:Fire("AddOutput", "Lock") + v:Fire("Kill", "", 5) + end + timer.Simple(5, function() + self.Owner:EmitSoundEx(table.Random({"PSap.Hacked","Psap.HackedFollowup","Psap.HackedLoud"})) + end) + end + if v:GetClass() == "npc_cpt_scp_173" then + + v:EmitSound("weapons/sapper_plant.wav") + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("Psap.Hacking") + end + if SERVER then + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetPos()) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetPos()) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetPos()) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + end + timer.Simple(5, function() + v:TakeDamage(v:Health(), self.Owner, self) + end) + end + timer.Simple(5, function() + self.Owner:EmitSoundEx(table.Random({"PSap.Hacked","Psap.HackedFollowup","Psap.HackedLoud"})) + end) + end + if v:GetClass() == "npc_cpt_scp_049" then + + v:EmitSound("weapons/sapper_plant.wav") + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("Psap.Hacking") + end + if SERVER then + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetPos()) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetPos()) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetPos()) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + end + timer.Simple(5, function() + v:TakeDamage(v:Health(), self.Owner, self) + end) + end + timer.Simple(5, function() + self.Owner:EmitSoundEx(table.Random({"PSap.Hacked","Psap.HackedFollowup","Psap.HackedLoud"})) + end) + end + if v:IsBuilding() and not v:IsFriendly(self.Owner) then + if SERVER then + if v:GetClass() == "obj_sentrygun" and v.Sapped == true then + return + end + self:SetNextPrimaryFire(CurTime() + 2) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE_PRIMARY) + v:EmitSound("weapons/sapper_plant.wav") + + + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("Psap.Hacking") + end + if v:GetClass() == "obj_sentrygun" then + v:GetBuilder():EmitSound("vo/engineer_autoattackedbyspy03.wav", 80, 100) + elseif v:GetClass() == "obj_dispenser" then + v:GetBuilder():EmitSound("vo/engineer_autoattackedbyspy02.wav", 80, 100) + elseif v:GetClass() == "obj_teleporter" then + v:GetBuilder():EmitSound("vo/engineer_autoattackedbyspy01.wav", 80, 100) + end + if v:GetClass() == "npc_manhack" then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("manhack.mh_controlexhaust"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("eye")) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("manhack.mh_controlexhaust")) ) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("eye")) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("manhack.mh_controlexhaust")) ) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("eye")) + end + + for _,ent in ipairs(ents.GetAll()) do + if ent:IsTFPlayer() then + v:AddEntityRelationship(ent, D_ER, 999999) + end + end + v:Fire("AddOutPut", "sleepstate 3") + v:Fire("AddOutPut", "sleepstate 0", 10) + timer.Simple(10, function() + v:EmitSound("Weapon_Sapper.Removed") + animent:Remove() + for _,ent in ipairs(ents.GetAll()) do + if ent:IsTFPlayer() then + v:AddEntityRelationship(ent, D_HT, 999999) + end + end + end) + end + if v:GetClass() == "npc_stalker" then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetAttachment(1).Pos) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetAttachment(1).Pos) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetAttachment(1).Pos) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:GetAttachment(1)) + end + + for _,ent in ipairs(ents.GetAll()) do + if ent:IsTFPlayer() then + v:AddEntityRelationship(ent, D_ER, 999999) + end + end + v:Fire("AddOutPut", "sleepstate 3") + end + if v:GetClass() == "obj_sentrygun" and v:GetLevel() == 1 then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_sentry1.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + end + + end + + if v:GetClass() == "obj_sentrygun" and v:GetLevel() == 2 then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_sentry2.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + end + + end + + + if v:GetClass() == "obj_sentrygun" and v:GetLevel() == 3 then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_sentry3.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + end + + end + if v:GetClass() == "obj_dispenser" then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_dispenser.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + end + + end + if v:GetClass() == "obj_teleporter" then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_teleporter.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("weapon_bone"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("sapper_attach")) + animent:SetName("sentrysapped"..v:EntIndex()) + end + + end + if v:GetClass() == "npc_turret_floor" then + + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/p2rec_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("Barrel"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v) + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/breadmonster_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("Barrel"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v) + else + animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("Barrel"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:AddEffects( EF_BONEMERGE ) + animent:SetParent(v) + end + + + if v:GetClass() == "npc_turret_floor" then + v:Fire("SelfDestruct", "", 4) + end + + end + end + if v:GetClass() == "obj_sentrygun" or v:GetClass() == "obj_dispenser" or v:GetClass() == "obj_teleporter" then + v.Sapped = true + end + + timer.Create("SapSentry2", 0.2, 0, function() + if v:GetClass() != "obj_sentrygun" and v:GetClass() != "obj_dispenser" and v:GetClass() != "obj_teleporter" then + if not v:IsValid() then + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx(table.Random({"PSap.Hacked","Psap.HackedFollowup","Psap.HackedLoud"})) + end + timer.Stop("SapSentry2") + end + else + if v.Sapped == true then + v.Target = nil + if SERVER then + v:TakeDamage(6, self.Owner, self) + end + v.TurretPitch = -15 + v.TurretYaw = 0 + v.TargetPitch = 0 + v.TargetYaw = 0 + v.DPitch = 0 + v.DYaw = 0 + v.SappedBy = self.Owner + v.IdlePitchSpeed = 0.3 + v.IdleYawSpeed = 0.75 + if not v:IsValid() then + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx(table.Random({"PSap.Hacked","Psap.HackedFollowup","Psap.HackedLoud"})) + end + timer.Stop("SapSentry2") + end + else + if animent:IsValid() then + animent:Remove() + end + timer.Stop("SapSentry2") + end + end + end) + timer.Create("SapSentry", 0.1, 0, function() + if SERVER then + if v:GetClass() != "obj_sentrygun" and v:GetClass() != "obj_dispenser" and v:GetClass() != "obj_teleporter" then + if v:GetClass() == "npc_dog" then + v:TakeDamage(10, self.Owner, self) + else + if v:GetClass() != "npc_manhack" then + v:TakeDamage(2, self.Owner, self) + end + end + if v:GetClass() == "npc_turret_floor" then + v:Fire("Disable", "", 0.01) + end + if v:GetClass() == "npc_rollermine" then + v:Fire("TurnOff", "", 0.01) + v:Fire("Ignite", "", 4) + end + else + if v.Sapped == false then + if self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("PSap.Damage") + elseif self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + self.Owner:EmitSoundEx("Weapon_bm_sapper.scream") + end + v.Target = nil + + v.TurretPitch = 0 + v.TurretYaw = 0 + v.TargetPitch = 0 + v.TargetYaw = 0 + v.DPitch = 0 + v.DYaw = 0 + v.IdlePitchSpeed = 1 + if IsValid(animent) then + animent:Remove() + end + timer.Stop("SapSentry") + return + end + end + if not v:IsValid() then + if IsValid(animent) then + animent:Remove() + end + timer.Stop("SapSentry") + end + end + end) + end + end + end + if SERVER then + if IsValid(self.Blueprint) and self.Moving != true then + local ammo = self.Owner:GetAmmoCount(TF_METAL) + if self:GetBuilding().cost > ammo then + return + end + + if self.Blueprint:Build() then + self.Owner.objtype = self:GetBuilding().objtype + self.Owner:Speak("TLK_BUILDING_OBJECT") + if !self.Owner:IsBot() then + self.Owner:RemoveAmmo(self:GetBuilding().cost, TF_METAL) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-self:GetBuilding().cost) + umsg.End() + end + -- temp + self.Owner.ForgetLastWeapon = true + self.Owner:SelectWeapon(self.LastWeapon) + end + end + if IsValid(self.Blueprint) and self.Moving != false then + + if self.Blueprint:Build() then + self.Owner.objtype = self:GetBuilding().objtype + + -- temp + self.Owner.ForgetLastWeapon = true + self.Owner:SelectWeapon(self.LastWeapon) + self.Moving = false + end + if SERVER then + if self.Owner:GetInfoNum("tf_robot", 0) == 1 then + --self.Owner:EmitSoundEx("vo/mvm/norm/engineer_mvm_sentryplanting0"..math.random(1,3)..".wav", 80, 100) + else + --self.Owner:EmitSoundEx("vo/engineer_sentryplanting0"..math.random(1,3)..".wav", 80, 100) + end + end + + end + end + + return true +end + + +function SWEP:Deploy() + --MsgFN("Deploy %s", tostring(self)) + local wmodel = self:GetItemData().model_player or self.WorldModel + if (self.Owner:GetNWBool("NoWeapon")) then + self.WorldModel = "models/empty.mdl" + else + self.WorldModel = wmodel; + end; + local vm = self.Owner:GetViewModel() + if CLIENT then + if IsValid(self.CModel) then + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:DrawModel() + elseif IsValid(vm) and !IsValid(self.CModel) then + self.CModel = ents.CreateClientside( "gmod_button" ) + if not IsValid(self.CModel) then return end + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:Spawn() + self.CModel:Activate() + self.CModel:DrawModel() + end + end + if self.Owner:GetPlayerClass() == "spy" then + + self:InitializeWModel2() + self:InitializeAttachedModels() + if SERVER then + if IsValid(self.WModel2) then + --self.WModel2:SetSkin(self.WeaponSkin or self.Owner:GetSkin()) + --self.WModel2:SetMaterial(self.WeaponMaterial or 0) + end + end + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + + animent2 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + if self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/scout.mdl" then + animent2:SetModel("models/weapons/c_models/c_pistol/c_pistol.mdl") + elseif self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" then + animent2:SetModel("models/weapons/c_models/c_shotgun/c_shotgun.mdl") + elseif self.Owner:GetModel() == "models/player/spy.mdl" then + animent2:SetModel("models/weapons/w_models/w_revolver.mdl") + elseif self.Owner:GetModel() == "models/player/sniper.mdl" then + animent2:SetModel("models/weapons/c_models/c_smg/c_smg.mdl") + elseif self.Owner:GetModel() == "models/player/medic.mdl" then + animent2:SetModel("models/weapons/c_models/c_medigun/c_medigun.mdl") + elseif self.Owner:GetModel() == "models/player/demo.mdl" then + animent2:SetModel("models/weapons/w_models/w_grenadelauncher.mdl") + end + animent2:SetAngles(self.Owner:GetAngles()) + animent2:SetPos(self.Owner:GetPos()) + animent2:Spawn() + animent2:Activate() + animent2:SetParent(self.Owner) + animent2:AddEffects(EF_BONEMERGE) + animent2:SetName("SpyWeaponModel"..self.Owner:EntIndex()) + self:SetHoldType("SECONDARY") + + if SERVER then + timer.Create("SpyCloakDetector"..self.Owner:EntIndex(), 0.01, 0, function() + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetNoDraw() == true then + if IsValid(animent2) then + animent2:SetNoDraw(true) + end + else + if IsValid(animent2) then + animent2:SetNoDraw(false) + end + end + else + timer.Stop("SpyCloakDetector"..self.Owner:EntIndex()) + return + end + end) + end + else + if IsValid(animent2) then + animent2:Remove() + end + end + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" then + self.VM_DRAW = ACT_BREADSAPPER_VM_DRAW + self.VM_IDLE = ACT_BREADSAPPER_VM_IDLE + self.VM_INSPECT_START = ACT_BREADMONSTER_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_BREADMONSTER_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_BREADMONSTER_VM_INSPECT_END + end + end + if self.Owner:GetPlayerClass() == "spy" and self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("PSap.Deploy") + end + if self.Owner:GetPlayerClass() != "spy" then + local result = self:CallBaseFunction("Deploy") + + if SERVER then + if IsValid(self.Blueprint) then + self.Blueprint:Remove() + end + self.Blueprint = ents.Create("tf_obj_blueprint") + self.Blueprint:SetOwner(self) + self.Blueprint:Spawn() + + if self:GetBuildGroup() == 2 and self.Owner.TempAttributes.BuildsMiniSentries then + self.Blueprint.dt.Scale = 0.75 + elseif self:GetBuildGroup() == 1 and self.Owner.TempAttributes.BuildsMiniSentries then + self.Blueprint.dt.Scale = 0.7 + elseif self:GetBuildGroup() == 2 and self.Owner.TempAttributes.BuildsMegaSentries then + self.Blueprint.dt.Scale = 1.2 + end + end + + end + self:StopTimers() + self.DeployPlayed = nil + if self:GetItemData().hide_bodygroups_deployed_only then + local visuals = self:GetVisuals() + local owner = self.Owner + + if visuals.hide_player_bodygroup_names then + for _,group in ipairs(visuals.hide_player_bodygroup_names) do + local b = PlayerNamedBodygroups[owner:GetPlayerClass()] + if b and b[group] then + owner:SetBodygroup(b[group], 1) + end + + b = PlayerNamedViewmodelBodygroups[owner:GetPlayerClass()] + if b and b[group] then + if IsValid(owner:GetViewModel()) then + owner:GetViewModel():SetBodygroup(b[group], 1) + end + end + end + end + end + + for k,v in pairs(self:GetVisuals()) do + if k=="hide_player_bodygroup" then + self.Owner:SetBodygroup(v,1) + end + end + if GetConVar("tf_righthand") and not self:GetClass() == "tf_weapon_compound_bow" then + if GetConVar("tf_righthand"):GetInt() == 0 then + self.ViewModelFlip = true + else + self.ViewModelFlip = false + end + end + + if GetConVar("tf_use_viewmodel_fov"):GetInt() > 0 then + self.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() + else + self.ViewModelFOV = GetConVar( "viewmodel_fov" ) + end + + if SERVER then + ----MsgN(Format("Deploy %s (owner:%s)",tostring(self),tostring(self:GetOwner()))) + + --[[if IsValid(self.Owner) and self.Owner.WeaponItemIndex then + self:SetItemIndex(self.Owner.WeaponItemIndex) + end]] + + if not IsValid(self.Owner) then + --MsgFN("Deployed before equip %s",tostring(self)) + self.DeployedBeforeEquip = true + self.NextReplayDeployAnim = nil + --self:SendWeaponAnim(ACT_INVALID) + return true + end + + if _G.TFWeaponItemIndex then + self:SetItemIndex(_G.TFWeaponItemIndex) + end + self:CheckUpdateItem() + + self.Owner.weaponmode = string.lower(self.HoldType) + + if self.HasTeamColouredWModel then + if GAMEMODE:EntityTeam(self.Owner)==TEAM_BLU then + self:SetSkin(1) + elseif GAMEMODE:EntityTeam(self.Owner)==TF_TEAM_PVE_INVADERS then + self:SetSkin(1) + else + self:SetSkin(0) + end + else + self:SetSkin(0) + end + + self.Owner:ResetClassSpeed() + end + + if CLIENT and not self.DoneFirstDeploy then + self.RestartClientsideDeployAnim = true + self.DoneFirstDeploy = true + end + + --MsgFN("SendWeaponAnim %s %d", tostring(self), self.VM_DRAW) + if SERVER then + self:SendWeaponAnim(self.VM_DRAW) + end + + local draw_duration = self:SequenceDuration() + local deploy_duration = self.DeployDuration + + if self.Owner.TempAttributes and self.Owner.TempAttributes.DeployTimeMultiplier then + draw_duration = draw_duration * self.Owner.TempAttributes.DeployTimeMultiplier + deploy_duration = deploy_duration * self.Owner.TempAttributes.DeployTimeMultiplier + end + + self.NextIdle = CurTime() + draw_duration + self.NextDeployed = CurTime() + deploy_duration + --[[ + if CLIENT and self.DeploySound and not self.DeployPlayed then + self:EmitSound(self.DeploySound) + self.DeployPlayed = true + end]] + + --self.IsDeployed = false + self:RollCritical() + + if self.Owner.ForgetLastWeapon then + self.Owner.ForgetLastWeapon = nil + return false + end + + return true +end + + +function SWEP:SecondaryAttack() + if not self:CallBaseFunction("SecondaryAttack") then return false end + + if SERVER then + if IsValid(self.Blueprint) then + self.Blueprint:RotateBlueprint() + end + end + + return true +end + +function SWEP:Reload() +end + +if SERVER then + +function SWEP:SetBuilding(group, mode) + if self.Owner.Buildings[group] and self.Owner.Buildings[group][mode] then + local cost = self.Owner.Buildings[group][mode].cost + if self.Owner:GetAmmoCount(TF_METAL) < cost then + return false + end + + self.dt.BuildGroup = group + self.dt.BuildMode = mode + return true + end +end + +function SWEP:SetBuilding2(group, mode) + if self.Owner.Buildings[group] and self.Owner.Buildings[group][mode] then + self.dt.BuildGroup = group + self.dt.BuildMode = mode + return true + end +end + +local old_group_translate = { + [0] = {0,0}, + [1] = {1,0}, + [2] = {1,1}, + [3] = {2,0}, + [4] = {3,0}, +} +concommand.Add("build", function(pl, cmd, args) + pl:Build(args[1], args[2]) +end) + +concommand.Add("move", function(pl, cmd, args) + local group = tonumber(args[1]) + local sub = tonumber(args[2]) + if pl:GetInfoNum("tf_robot", 0) == 1 then + --pl:EmitSound("vo/mvm/norm/engineer_mvm_sentrypacking0"..math.random(1,3)..".wav", 80, 100) + else + --pl:EmitSound("vo/engineer_sentrypacking0"..math.random(1,3)..".wav", 80, 100) + end + local builder = pl:GetWeapon("tf_weapon_builder") + + if not IsValid(builder) then return end + if not group then return end + + builder:SetHoldType("BUILDING_DEPLOYED") + + if not sub then + if not old_group_translate[group] then return end + + group, sub = unpack(old_group_translate[group]) + end + + local current = pl:GetActiveWeapon() + if builder:SetBuilding2(group, sub) and current ~= builder then + if current.IsPDA then + local last = pl:GetWeapon(pl.LastWeapon) + if not IsValid(last) or last.IsPDA then + last = pl:GetWeapons()[1] + end + builder.LastWeapon = last:GetClass() + pl:SelectWeapon(last:GetClass()) + else + builder.LastWeapon = current:GetClass() + end + pl:SelectWeapon("tf_weapon_builder") + builder.Moving = true + end +end) + +concommand.Add("destroy", function(pl, cmd, args) + local group = tonumber(args[1]) + local sub = tonumber(args[2]) + + if group == 2 and sub == 0 then + for k, v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetBuilder() == pl then + v:Explode() + end + end + end + if group == 0 and sub == 0 then + for k, v in pairs(ents.FindByClass("obj_dispenser")) do + if v:GetBuilder() == pl then + v:Explode() + end + end + end + if group == 1 and sub == 0 then + for k, v in pairs(ents.FindByClass("obj_teleporter")) do + if v:GetBuilder() == pl and v:IsExit() != true then + v:Explode() + end + end + end + if group == 1 and sub == 1 then + for k, v in pairs(ents.FindByClass("obj_teleporter")) do + if v:GetBuilder() == pl and v:IsExit() != false then + v:Explode() + end + end + end +end) + +function SWEP:Holster() + if self:CallBaseFunction("Holster") == false then return false end + + if self.Owner:GetPlayerClass() == "spy" and self:GetItemData().model_player == "models/weapons/c_models/c_p2rec/c_p2rec.mdl" then + self.Owner:EmitSoundEx("PSap.Holster") + + + end + + + if SERVER then + if IsValid(self.WModel2) then + --self.WModel2:Remove() + end + end + + if IsValid(animent2) then + animent2:Remove() + end + + self:SetHoldType( "BUILDING" ) + self.HoldType = "BUILDING" + if SERVER then + if IsValid(self.Blueprint) then + self.Blueprint:Remove() + end + end + + return true +end + +end + +if CLIENT then + +SWEP.PrintName = "Builder" +SWEP.Crosshair = "tf_crosshair6" + +function SWEP:InitializeBuildings(buildings) + -- Change the slot of the weapon depending on which buildings are available + for _,group in pairs(buildings) do + for _,obj in pairs(group) do + self.Hidden = obj.hidden + end + end + + self.BuildingsInitialized = true + HudWeaponSelection:UpdateLoadout() +end + +hook.Add("Think", "TFBuilderInitialize", function() + for _,v in pairs(ents.FindByClass("tf_weapon_builder")) do + if not v.BuildingsInitialized and IsValid(v.Owner) and v.Owner:IsPlayer() then + if v.Owner.BuilderInit then + v:InitializeBuildings(v.Owner.BuilderInit) + v.Owner.BuilderInit = nil + end + end + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_cannon/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_cannon/shared.lua new file mode 100644 index 000000000..0505ab812 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_cannon/shared.lua @@ -0,0 +1,294 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Loose Cannon" +SWEP.Slot = 0 +SWEP.CustomHUD = {HudBowCharge = true} + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + --[[if IsValid(self.WModel2) then + --self.WModel2:SetBodygroup(1, 1) + end]] +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_grenadelauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +--[[ --Viewmodel Settings Override (left-over from testing; works well) +SWEP.ViewModelFOV = 70 +SWEP.ViewModelFlip = false +]] + +SWEP.MuzzleEffect = "muzzle_grenadelauncher" +PrecacheParticleSystem("muzzle_grenadelauncher") + +SWEP.ChargeSound = Sound("weapons/loose_cannon_charge.wav") +SWEP.ShootSound = Sound("Weapon_LooseCannon.Shoot") +SWEP.ShootCritSound = Sound("Weapon_LooseCannon.ShootCrit") +SWEP.ReloadSound = Sound("Weapon_GrenadeLauncher.WorldReload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.7 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1100 +SWEP.AddPitch = -4 + +SWEP.MinForce = 1.1 +SWEP.MaxForce = 0.02 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.Properties = {} + +SWEP.SpinSound = true + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "mult_clipsize" then + self.SpinSound = false + end +end + +function SWEP:InspectAnimCheck() + self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END + if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_SPEED ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + if ( self:GetOwner():KeyPressed( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_RELOAD ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + --[[ if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() and self.SpinSound == true and !(self.Owner:GetMoveType()==MOVETYPE_NOCLIP) ) then + if CLIENT then + timer.Create("PlaySpin", 2.06, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end]] +end + +function SWEP:StopTimers() + self:CallBaseFunction("StopTimers") + timer.Remove("PlaySpin") +end + +function SWEP:CreateSounds() + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + if self.Reloading then return false end + + self.NextDeployed = nil + + -- Already charging + if self.Charging then return end + + local Delay = self.Delay or -1 + local QuickDelay = self.QuickDelay or -1 + + if (not(self.Primary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK) and QuickDelay>=0 and CurTime() 0.9) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:Play() + end + end + end + self:CallBaseFunction("Think") + self.Owner:SetWalkSpeed(BASESPEED * sp) + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / 0.9) + else + HudBowCharge:SetProgress(0) + end + end + + +end + +function SWEP:ShootProjectile() + if SERVER then + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() self:Reload() end) + end + + local grenade = ents.Create("tf_projectile_cannonball") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + + grenade:Spawn() + if self.Safe == true then + grenade:SetModel("models/weapons/w_models/w_stickybomb2.mdl") + end + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_kingmaker_sticky/c_kingmaker_sticky.mdl" then + grenade:SetModel("models/workshop/weapons/c_models/c_kingmaker_sticky/w_kingmaker_stickybomb.mdl") + grenade.ExplosionSound = Sound("Weapon_TackyGrendadier.Explode") + end + local force = Lerp((CurTime() - self.ChargeStartTime) / 0.8, self.MinForce, self.MaxForce) + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 1100 * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + grenade.NextExplode = CurTime() + force + if (force < 0.03) then + timer.Simple(0.01, function() + + grenade:DoExplosion() + + end) + end + end + self:ShootEffects() + self.Owner:ViewPunch( self.PunchView ) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_capsulelauncher/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_capsulelauncher/shared.lua new file mode 100644 index 000000000..a701baadb --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_capsulelauncher/shared.lua @@ -0,0 +1,157 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "AR2 Versus Mode" +SWEP.RenderGroup = RENDERGROUP_BOTH +SWEP.Slot = 0 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_irifle.mdl" +SWEP.WorldModel = "models/weapons/w_irifle.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_AR2.NPC_Single") +SWEP.ShootCritSound = Sound("Weapon_AR2.NPC_Double") +SWEP.ReloadSound = Sound("Weapon_AR2.NPC_Reload") + +SWEP.Primary.ClipSize = 30 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.09 +SWEP.ReloadTime = 2 +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.08 +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0.4 +SWEP.MaxDamageRampUp = 1.2 +SWEP.MaxDamageFalloff = 0.08 +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "AR2" + +SWEP.Force = 1100 +SWEP.AddPitch = -4 +SWEP.UseHands = true + +SWEP.Properties = {} + + +function SWEP:SecondaryAttack() + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + self:SetNextSecondaryFire( CurTime() + 1.6 ) + self:EmitSound("Weapon_CombineGuard.Special1") + timer.Simple(0.5, function() + self:EmitSound("Weapon_IRifle.Single") + self:SendWeaponAnim(ACT_VM_SECONDARYATTACK) + self.Owner:DoAnimationEvent(ACT_COMBINE_AR2_ALTFIRE) + local vecAiming = self.Owner:GetAimVector()//GetAutoaimVector( AUTOAIM_2DEGREES ); + + local vecVelocity = vecAiming * 1000 + if SERVER then + local grenade = ents.Create("prop_combine_ball") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + + self:InitProjectileAttributes(grenade) + grenade:SetSaveValue( "m_flRadius", 10 ) + grenade:SetSaveValue( "m_flSpeed", vecVelocity:Length() ) + grenade:SetSaveValue( "m_vecAbsVelocity", vecVelocity ) + grenade.NameOverride = self:GetItemData().item_iconname + grenade:SetOwner(self.Owner) + + grenade:Spawn() + grenade:Fire("explode","",4) + grenade:SetSaveValue( "m_bLaunched", true ) + grenade:SetSaveValue( "m_nState", 2 ) + grenade:EmitSound("NPC_CombineBall.Launch") + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + self:StopTimers() + end) +end + + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + --self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + --self.Owner:DoAnimationEvent(ACT_GESTURE_RELOAD, true) + if self.ReloadTime == 1.15 then + self.Owner:GetViewModel():SetPlaybackRate(1.4) + end + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_charged_smg/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_charged_smg/shared.lua new file mode 100644 index 000000000..4d61d5fd0 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_charged_smg/shared.lua @@ -0,0 +1,54 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 1 +if CLIENT then + SWEP.PrintName = "SMG" +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_smg/c_smg.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_smg" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_SMG.Single") +SWEP.ShootCritSound = Sound("Weapon_SMG.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_SMG.WorldReload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("muzzle_smg") +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") + +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.025 + +SWEP.Primary.ClipSize = 25 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.1 +SWEP.ReloadTime = 1.4 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "smg" + +SWEP.AutoReloadTime = 0.10 + +SWEP.IsRapidFire = true \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_cleaver/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_cleaver/shared.lua new file mode 100644 index 000000000..31bd84277 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_cleaver/shared.lua @@ -0,0 +1,111 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Cleaver" +SWEP.HasCModel = true +SWEP.Slot = 1 + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_sd_cleaver/c_sd_cleaver.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("weapons/cleaver_throw.wav") +SWEP.ShootCritSound = Sound("weapons/cleaver_throw.wav") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_GRENADES1 +SWEP.Primary.Delay = 1 + +SWEP.ReloadSingle = false + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.HoldType = "ITEM1" + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Properties = {} +SWEP.Force = 1100 +SWEP.AddPitch = -4 +SWEP.VM_PRIMARYATTACK = ACT_ITEM3_VM_RELOAD +function SWEP:PredictCriticalHit() +end + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_ITEM3_VM_DRAW + self.VM_IDLE = ACT_ITEM3_VM_IDLE +end + +function SWEP:MeleeAttack() + local pos = self.Owner:GetShootPos() + + if SERVER then + local grenade = ents.Create("tf_projectile_cleaver") + grenade:SetPos(pos) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + self:InitProjectileAttributes(grenade) + + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(0,math.random(-2000,2000),0)) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + self.Owner:EmitSoundEx(self.ShootSound) + end +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then + return + end + + if SERVER then + self.Owner:Speak("TLK_JARATE_LAUNCH") + //self.Owner:SelectWeapon("tf_weapon_club") + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + + + self:TakePrimaryAmmo(1) + + self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 5) + self.Owner.NextGiveAmmoType = self.Primary.Ammo + + self.NextIdle = CurTime() + self:SequenceDuration() + + --self.NextMeleeAttack = CurTime() + 0.25 + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + table.insert(self.NextMeleeAttack, CurTime() + 0.25) +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_club/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_club/shared.lua new file mode 100644 index 000000000..0eb2bed49 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_club/shared.lua @@ -0,0 +1,47 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 2 +if CLIENT then + SWEP.PrintName = "Kukri" +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_machete/c_machete.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Machete.Miss") +SWEP.SwingCrit = Sound("Weapon_Machete.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Machete.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Machete.HitWorld") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +-- fixes having to wait for a long time before being able to swing it +SWEP.m_WeaponDeploySpeed = 2 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "melee2" + +SWEP.VM_DRAW = ACT_MELEE_VM_DRAW +SWEP.VM_IDLE = ACT_MELEE_VM_IDLE +SWEP.VM_HITCENTER = ACT_MELEE_VM_HITCENTER +SWEP.VM_SWINGHARD = ACT_MELEE_VM_SWINGHARD +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_compound_bow/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_compound_bow/shared.lua new file mode 100644 index 000000000..8fcaaaf6a --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_compound_bow/shared.lua @@ -0,0 +1,363 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + SWEP.HeadshotScore = 1 +end +SWEP.PrintName = "The Huntsman" +SWEP.Category = "Team Fortress 2" +SWEP.Spawnable = true + +if CLIENT then + +SWEP.HasCModel = true +SWEP.Slot = 0 + +function SWEP:InspectAnimCheck() +inspect_start = NONE +inspect_idle = NONE +inspect_end = NONE +inspect_post = NONE +end + +SWEP.CustomHUD = {HudBowCharge = true} +SWEP.ViewModelFlip = false + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = Model("models/weapons/c_models/c_sniper_arms.mdl") +SWEP.WorldModel = Model("models/weapons/c_models/c_bow/c_bow.mdl") +SWEP.Crosshair = "tf_crosshair1" +SWEP.ViewModelFlip = true + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_CompoundBow.Single") +SWEP.ShootCritSound = Sound("Weapon_CompoundBow.SingleCrit") +SWEP.PullSound = Sound("Weapon_CompoundBow.SinglePull") +SWEP.ReloadSound = Sound("Weapon_CompoundBow.WorldReload") +SWEP.DeniedSound = Sound("Player.UseDeny") + +SWEP.Primary.ClipSize = 1 +SWEP.Primary.DefaultClip = 12 +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 1.94 +SWEP.ReloadTimez = 1.94 + +SWEP.Secondary.Automatic = true + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "ITEM2" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ProjectileShootOffset = Vector(0, 6, -5) + +SWEP.Properties = {} + + +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + self.ViewModelFlip = true + + return self:CallBaseFunction("Deploy") +end + +function SWEP:SendSequence(seq) + local s = self.Owner:GetViewModel():LookupSequence(seq) + self:SetSequence(s) + self.Owner:GetViewModel():SetSequence(s) +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + -- Already charging + if self.Charging or self.NextIdle then return end + + if not self:CanPrimaryAttack() then + return + end + + -- Start charging + self.Charging = true + if SERVER then + self:CallOnClient("ClientStartCharge", "") + end + + self:SendWeaponAnim(self.VM_CHARGE) + --self:SendSequence("bw_charge") + --self.Owner:SetAnimation(PLAYER_PREFIRE) + --self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + self.NextIdle2 = CurTime()+self:SequenceDuration() + self.ChargeStartTime = CurTime() + self:EmitSound(self.PullSound) + --[[ + self:Critical(1) + self:ShootProjectile() + + self:TakePrimaryAmmo(1)]] + + if SERVER then + self.Owner:SetClassSpeed(3 * 45 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0.33) + self.Owner:SetJumpPower(0) + end +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.Charging and not self.NextIdle2 then + self.Charging = false + self:SendWeaponAnim(self.VM_DRYFIRE) + --self:SendSequence("bw_dryfire") + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.NextIdle = CurTime()+self:SequenceDuration() + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end +end + +function SWEP:ShootProjectile() + if SERVER then + local arrow = ents.Create("tf_projectile_arrow") + arrow:SetPos(self:ProjectileShootPos()) + + if CurTime()-self.ChargeStartTime>5 then + arrow:SetAngles(self.Owner:EyeAngles() + Angle(math.Rand(-15,15),math.Rand(-15,15),0)) + else + arrow:SetAngles(self.Owner:EyeAngles()) + end + + --[[ + if arrow:Critical() then + rocket.critical = true + end]] + + for k,v in pairs(self.Properties) do + arrow[k] = v + end + + arrow.Charge = math.Clamp((CurTime()-self.ChargeStartTime) / 1.25, 0, 1) + arrow.MinForce = self.MinForce + arrow.MaxForce = self.MaxForce + arrow.MinGravity = self.MinGravity + arrow.MaxGravity = self.MaxGravity + arrow:SetOwner(self.Owner) + self:InitProjectileAttributes(arrow) + + arrow.NameOverride = self:GetItemData().item_iconname + arrow:Spawn() + arrow:Activate() + end + + self:ShootEffects() +end + + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + self.Owner:SetAnimation(PLAYER_RELOAD) + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + timer.Simple(0.1, function() + if self.ReloadSound and CLIENT then + local w = self + + if IsValid(w) and w.ReloadSound and (w.Owner ~= self.Owner or self.Owner:ShouldDrawLocalPlayer()) then + w.Owner:EmitSound("Weapon_Bow.Draw") + w:EmitSound("Weapon_Bow.ArrowSlide") + end + end + end) + timer.Simple(0.4, function() + if self.ReloadSound and CLIENT then + local w = self + + if IsValid(w) and w.ReloadSound and (w.Owner ~= self.Owner or self.Owner:ShouldDrawLocalPlayer()) then + w:EmitSound("Weapon_Bow.PullShort") + end + end + end) + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / 1.25) + else + HudBowCharge:SetProgress(0) + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + self.CanInspect = true + self:CheckAutoReload() + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + self.NextIdle2 = nil + self.NextCharge3 = nil + self.NextIdle3 = nil + end + + if self.NextIdle2 and CurTime()>=self.NextIdle2 then + self:SendWeaponAnim(self.VM_IDLE_2) + --self:SendSequence("bw_idle2") + self.NextIdle2 = nil + self.NextCharge3 = CurTime()+5 + end + + if self.NextCharge3 and CurTime()>=self.NextCharge3 then + self:SendWeaponAnim(self.VM_CHARGE_IDLE_3) + --self:SendSequence("bw_shake") + self.NextCharge3 = nil + self.NextIdle3 = CurTime()+self:SequenceDuration() + end + + if self.NextIdle3 and CurTime()>=self.NextIdle3 then + self:SendWeaponAnim(self.VM_IDLE_3) + --self:SendSequence("bw_idle3") + self.NextIdle3 = nil + end + + if self.Charging and not self.Idle2 and not self.Owner:KeyDown(IN_ATTACK) and self.Owner:IsOnGround() then + self.Charging = false + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + self.NextIdle = nil + self.NextIdle2 = nil + self.NextCharge3 = nil + self.NextIdle3 = nil + self:ShootProjectile() + self:TakePrimaryAmmo(1) + timer.Simple(0.85, function() + if self.ReloadSound and CLIENT then + local w = self + + if IsValid(w) and w.ReloadSound and (w.Owner ~= self.Owner or self.Owner:ShouldDrawLocalPlayer()) then + w.Owner:EmitSound("Weapon_Bow.Draw") + w:EmitSound("Weapon_Bow.ArrowSlide") + end + end + end) + timer.Simple(1.2, function() + if self.ReloadSound and CLIENT then + local w = self + + if IsValid(w) and w.ReloadSound and (w.Owner ~= self.Owner or self.Owner:ShouldDrawLocalPlayer()) then + w:EmitSound("Weapon_Bow.PullShort") + end + end + end) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + if (self.Owner:GetPlayerClass() == "bowman_rapid_fire") then + self.NextIdle = CurTime()+self:SequenceDuration() * 0.6 + else + self.NextIdle = CurTime()+self:SequenceDuration() + end + if self.Owner:GetAmmoCount(self.Primary.Ammo)>0 then + self.Reloading = true + self.AmmoAdded = 1 + self.NextReload = self.NextIdle-0.1 + end + + if SERVER then + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end + + if self.NextReload and CurTime()>=self.NextReload then + self:SetClip1(self:Clip1() + self.AmmoAdded) + self.Owner:RemoveAmmo(self.AmmoAdded, self.Primary.Ammo, false) + self.NextReload = nil + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_crossbow/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_crossbow/shared.lua new file mode 100644 index 000000000..a0af030e2 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_crossbow/shared.lua @@ -0,0 +1,64 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + SWEP.HeadshotScore = 1 +end + +SWEP.PrintName = "Crusader's Crossbow" +SWEP.Category = "Team Fortress 2" +SWEP.Spawnable = true +if CLIENT then + +SWEP.Slot = 0 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_medic_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_CompoundBow.Single") +SWEP.ShootCritSound = Sound("Weapon_CompoundBow.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_SyringeGun.WorldReload") + +SWEP.Primary.ClipSize = 1 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.15 +SWEP.ReloadTime = 1.45 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ProjectileShootOffset = Vector(0, 8, -4) + +function SWEP:ShootProjectile() + if SERVER then + local syringe = ents.Create("tf_projectile_arrow_heal") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + + --local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(vec:Angle()) + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + --syringe:SetProjectileType(1) + + self:InitProjectileAttributes(syringe) + + syringe.NameOverride = self:GetItemData().item_iconname + syringe:Spawn() + end + + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_engi_fist/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_engi_fist/shared.lua new file mode 100644 index 000000000..35ffc3fb3 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_engi_fist/shared.lua @@ -0,0 +1,214 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "The Gunslinger" + SWEP.Slot = 2 + SWEP.GlobalCustomHUD = {HudAccountPanel = true} +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_gunslinger.mdl" +SWEP.WorldModel = "models/empty.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.DropPrimaryWeaponInstead = true + +SWEP.Swing = Sound("Weapon_Gunslinger.Swing") +SWEP.SwingCrit = Sound("Weapon_Gunslinger.Swing") +SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Wrench.HitWorld") +SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") +SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 +SWEP.IsRoboArm = true + +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "ITEM2" + +SWEP.NoHitSound = true +SWEP.UpgradeSpeed = 25 + +SWEP.AltIdleAnimationProbability = 0.1 + + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + self:DTVar("Int", 1, "Combo") +end + +function SWEP:Equip() -- weird workaround hack for viewmodel bug + if IsValid(self) and IsValid(self.Owner) then + local lastwep = self.Owner:GetActiveWeapon():GetClass() + self.Owner:SelectWeapon(self:GetClass()) + timer.Simple(0.1, function() if IsValid(self) and IsValid(self.Owner) then self.Owner:SelectWeapon(lastwep) end end) + end +end + +function SWEP:OnMeleeAttack(tr) + if SERVER then + local hit = false + + if IsValid(tr.Entity) and tr.Entity:IsTFPlayer() and !tr.Entity:IsBuilding() then + hit = true + end + if IsValid(tr.Entity) and tr.Entity:IsNPC() and !tr.Entity:IsBuilding() then + hit = true + end + if self:CriticalEffect() then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_HARD_ITEM2,true) + end + if hit then + self.HasHit = true + else + self.dt.Combo = 0 + end + end +end + + +function SWEP:OnMeleeHit(tr) + if tr.Entity and tr.Entity:IsValid() then + if tr.Entity:IsBuilding() then + local ent = tr.Entity + + if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then + if ent.Sapped == true then + self.Owner:EmitSoundEx("Weapon_Sapper.Removed") + ent.Sapped = false + end + if SERVER then + + local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) + if m > 0 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + self.Owner:RemoveAmmo(m, TF_METAL) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-m) + umsg.End() + elseif ent:GetState() == 1 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + else + self.Owner:EmitSoundEx(self.HitBuildingFailure) + end + end + else + self:EmitSound(self.HitWorld) + end + elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then + self:EmitSound(self.HitFlesh) + else + self:EmitSound(self.HitWorld) + end + elseif tr.HitWorld then + self:EmitSound(self.HitWorld) + end + + if SERVER then + if self.HasHit then + self.dt.Combo = self.dt.Combo + 1 + self.HasHit = false + end + + if self.dt.Combo > 2 then + self.dt.Combo = 0 + end + end +end + +function SWEP:Critical(ent,dmginfo) + if self.dt.Combo >= 2 then + return true + end + return self:CallBaseFunction("Critical", ent, dmginfo) +end + +function SWEP:PredictCriticalHit() + if self.dt.Combo >= 2 then + self.NameOverride = "robot_arm_combo_kill" + return true + else + self.NameOverride = nil + end +end + +function SWEP:Think() + self.Owner:SetBodygroup( 2, 1 ) + --self.Owner:GetViewModel():SetBodygroup(1, 0) + + if not game.SinglePlayer() or SERVER then + if self.NextIdle and CurTime()>=self.NextIdle then + if self.PlayingIdle2Animation then + self.PlayingIdle2Animation = false + elseif math.Rand(0,1) <= self.AltIdleAnimationProbability and not self.PlayingIdle2Animation then + self:SendWeaponAnim(self.VM_IDLE_2) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + self.PlayingIdle2Animation = true + end + end + end + + if SERVER and not self.Owner:KeyDown(IN_ATTACK) then + self.dt.Combo = 0 + end + + self:CallBaseFunction("Think") +end + + +function SWEP:SecondaryAttack() + self:SetNextSecondaryFire(CurTime() + 0.5) + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 75)) do + if v:IsBuilding() and v:GetOwner() == self.Owner then + if v:GetClass() == "obj_sentrygun" then + if SERVER then + if v:GetLevel() == 3 then + self.DeployedBuildingLevel = 3 + elseif v:GetLevel() == 2 then + self.DeployedBuildingLevel = 2 + end + v:Fire("Kill") + self.Owner:ConCommand("move 2 0") + end + elseif v:GetClass() == "obj_dispenser" then + if SERVER then + if v:GetLevel() == 3 then + self.DeployedBuildingLevel = 3 + elseif v:GetLevel() == 2 then + self.DeployedBuildingLevel = 2 + end + v:Fire("Kill") + self.Owner:ConCommand("move 0 0") + end + elseif v:GetClass() == "obj_teleporter" and self:IsExit() != true then + if SERVER then + if v:GetLevel() == 3 then + self.DeployedBuildingLevel = 3 + elseif v:GetLevel() == 2 then + self.DeployedBuildingLevel = 2 + end + v:Fire("Kill") + self.Owner:ConCommand("move 1 0") + end + elseif v:GetClass() == "obj_teleporter" and self:IsExit() != false then + if SERVER then + if v:GetLevel() == 3 then + self.DeployedBuildingLevel = 3 + elseif v:GetLevel() == 2 then + self.DeployedBuildingLevel = 2 + end + v:Fire("Kill") + self.Owner:ConCommand("move 1 1") + end + end + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_fireaxe/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_fireaxe/shared.lua new file mode 100644 index 000000000..6d74aee57 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_fireaxe/shared.lua @@ -0,0 +1,144 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + + SWEP.PrintName = "Fire Axe" +sound.Add( { + name = "Taunt.Pyro03RockStar", + channel = CHAN_WEAPON, + volume = 1.0, + level = 95, + sound = { "player/taunt_rockstar.wav" } +} ) +sound.Add( { + name = "Taunt.Pyro03RockStarEnd", + channel = CHAN_WEAPON, + volume = 1.0, + level = 95, + sound = { "player/taunt_rockstar_end.wav" } +} ) +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_fireaxe.mdl" +SWEP.Crosshair = "tf_crosshair2" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_FireAxe.Miss") +SWEP.SwingCrit = Sound("Weapon_FireAxe.MissCrit") +SWEP.HitFlesh = Sound("Weapon_FireAxe.HitFlesh") +SWEP.HitRobot = Sound("MVM_Weapon_Sword.HitFlesh") +SWEP.HitWorld = Sound("Weapon_FireAxe.HitWorld") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "MELEE2" + +SWEP.DamageType = bit.bor(DMG_CLUB,DMG_SLASH) +--SWEP.CritDamageType = DMG_SLASH|DMG_CRUSH +SWEP.CritDamageType = DMG_SLASH, DMG_CRUSH + +-- The following weapons should not cut zombies in half +local NoSlashDamage = { + [153] = true, -- Homewrecker + [214] = true, -- Powerjack + [326] = true, -- Back Scratcher +} + +function SWEP:InitAttributes(owner, attributes) + self:CallBaseFunction("InitAttributes", owner, attributes) + + if NoSlashDamage[self:ItemIndex()] then + self.DamageType = DMG_CLUB + self.CritDamageType = DMG_CLUB + end +end +function SWEP:Deploy() + if (self.Owner:GetPlayerClass() == "civilian_") then + self.ViewModel = "models/weapons/v_models/v_umbrella_civilian.mdl" + self.WorldModel = "models/weapons/w_models/w_umbrella.mdl" + self.Owner:GetViewModel():SetModel("models/weapons/v_models/v_umbrella_civilian.mdl") + self:SetModel("models/weapons/v_models/v_umbrella_civilian.mdl") + self.PrintName = "Umbrella" + end + return self:CallBaseFunction("Deploy") +end +function SWEP:Think() + if (self.Owner:GetPlayerClass() == "civilian_") then + self.PrintName = "Umbrella" + self.BounceWeaponIcon = true + self.Icon = "sprites/bucket_fireaxe" + end + return self:CallBaseFunction("Think") +end + +function SWEP:OnMeleeHit(tr) + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_sledgehammer/c_sledgehammer.mdl" then + if tr.Entity and tr.Entity:IsValid() then + if tr.Entity:IsBuilding() then + local ent = tr.Entity + + if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then + if ent.Sapped == true then + self.Owner:EmitSoundEx("Weapon_Sapper.Removed") + ent:StopSound("TappedRobot") + timer.Stop("SapEnd"..ent:EntIndex()) + timer.Stop("SapSentry2"..ent:EntIndex()) + timer.Stop("SapSentry3"..ent:EntIndex()) + ent.Model:SetPlaybackRate(2) + timer.Simple(2, function() + ent.Model:ResetSequence("idle") + ent:ResetSequence("idle") + end) + umsg.Start("Notice_EntityKilledEntity") + umsg.String("Sapper ("..ent.SappedBy:Nick()..")") + umsg.Short(GAMEMODE:EntityTeam(ent.SappedBy)) + umsg.Short(GAMEMODE:EntityID(ent.SappedBy)) + + umsg.String(self:GetItemData().item_iconname) + + umsg.String(GAMEMODE:EntityDeathnoticeName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + + umsg.Bool(self.Owner.LastDamageWasCrit) + umsg.End() + + ent:StopSound("SappedRobot") + if SERVER then + brokensapper = ents.Create("prop_physics") + brokensapper:SetPos(ent:GetPos() + Vector(math.random(10,40), math.random(10,40), math.random(50,70))) + brokensapper:SetModel("models/buildables/gibs/sapper_gib002.mdl") + brokensapper:Spawn() + brokensapper:Activate() + + brokensapper:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + brokensapper2 = ents.Create("prop_physics") + brokensapper2:SetPos(ent:GetPos() + Vector(math.random(10,40), math.random(10,40), math.random(50,70))) + brokensapper2:SetModel("models/buildables/gibs/sapper_gib001.mdl") + brokensapper2:Spawn() + brokensapper2:Activate() + + brokensapper2:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + end + ent.Sapped = false + end + end + end + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_fists/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_fists/shared.lua new file mode 100644 index 000000000..d24764faf --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_fists/shared.lua @@ -0,0 +1,2601 @@ + +PrecacheParticleSystem("boomer_vomit_b") +PrecacheParticleSystem("boomer_vomit_c") + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + + +if CLIENT then + SWEP.PrintName = "Fists" +end +SWEP.ReadyToPounce = true +SWEP.Base = "tf_weapon_melee_base" +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/empty.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Fist.Miss") +SWEP.SwingCrit = Sound("Weapon_Fist.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Fist.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Fist.HitWorld") + +SWEP.CritEnabled = Sound("Weapon_BoxingGloves.CritEnabled") +SWEP.CritHit = Sound("Weapon_BoxingGloves.CritHit") + +SWEP.DropPrimaryWeaponInstead = true + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 0.8 + +SWEP.CritForceAddPitch = 45 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "fist" +SWEP.HasThirdpersonCritAnimation = true +SWEP.HasSecondaryFire = true + +SWEP.ShouldOccurFists = true + +SWEP.Force = 0 +SWEP.AddPitch = -2 + +function SWEP:OnCritBoostStarted() + --self.Owner:EmitSoundEx(self.CritEnabled) +end + +function SWEP:OnCritBoostAdded() + --self.Owner:EmitSoundEx(self.CritHit) +end + +function SWEP:Deploy() + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves.mdl" then + self.Owner:EmitSoundEx("Weapon_bm_gloves.draw") + end + + if self.Owner:GetPlayerClass() == "boomer" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 4 + self.CriticalChance = 0 + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_boomer_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_boomer_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_boomer_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_boomer_l4d1.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_boomer.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_boomer.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "boomette" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.ViewModel = "models/v_models/weapons/v_claw_boomer.mdl" + self:SetModel("models/v_models/weapons/v_claw_boomer.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + end + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "hunter" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.BaseDamage = 7 + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.CriticalChance = 0 + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_hunter_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hunter_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hunter_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hunter_l4d1.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_hunter.mdl" + self:SetModel("models/v_models/weapons/v_claw_hunter.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hunter.mdl") + end + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hunter.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "smoker" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_smoker_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_smoker_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_smoker_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_smoker_l4d1.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_smoker.mdl" + self:SetModel("models/v_models/weapons/v_claw_smoker.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_smoker.mdl") + end + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_smoker.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "spitter" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.ViewModel = "models/weapons/arms/v_spitter_arms.mdl" + self:SetModel("models/weapons/arms/v_spitter_arms.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/weapons/arms/v_spitter_arms.mdl") + end + self.Owner:GetHands():SetModel("models/weapons/arms/v_spitter_arms.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "jockey" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.ViewModel = "models/weapons/arms/v_jockey_arms.mdl" + self:SetModel("models/weapons/arms/v_jockey_arms.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/weapons/arms/v_jockey_arms.mdl") + end + self.Owner:GetHands():SetModel("models/weapons/arms/v_jockey_arms.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "charger" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/charger/hit/charger_punch"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + + self.HasSecondaryFire = false + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.CriticalChance = 0 + self.ViewModel = "models/weapons/arms/v_charger_arms.mdl" + self:SetModel("models/weapons/arms/v_charger_arms.mdl") + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/weapons/arms/v_charger_arms.mdl") + end + self.Owner:GetHands():SetModel("models/weapons/arms/v_charger_arms.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if (self.Owner:IsL4D()) then + self.NameOverride = "hl_zombie" + local VModel = self:GetOwner():GetViewModel() + VModel:SetMaterial("color") + else + local VModel = self:GetOwner():GetViewModel() + VModel:SetMaterial("") + end + if self.Owner:GetPlayerClass() == "L4D1_zombie" then + self.Swing = "vj_l4d_com/attack_miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "vj_l4d_com/attack_miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "vj_l4d_com/attack_hit/punch_boxing_facehit"..math.random(4,6)..".wav" + self.HitRobot = "vj_l4d_com/attack_hit/punch_boxing_facehit"..math.random(4,6)..".wav" + self.HitWorld = "vj_l4d_com/attack_hit/hit_punch_0"..math.random(1,8)..".wav" + self.HasSecondaryFire = false + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.25 + self.BaseDamage = 8 + self.CriticalChance = 0 + end + + if self.Owner:GetPlayerClass() == "tank_l4d" then + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Swing = "L4D1_HulkZombie.Attack" + self.SwingCrit = "L4D1_HulkZombie.Attack" + self.HitFlesh = "L4D1_HulkZombie.Punch" + self.HitWorld = "L4D1_HulkZombie.Punch" + else + self.Swing = "HulkZombie.Attack" + self.SwingCrit = "HulkZombie.Attack" + self.HitFlesh = "HulkZombie.Punch" + self.HitWorld = "HulkZombie.Punch" + end + self.BaseDamage = 30 + self.Primary.Delay = 2 + self.MeleeAttackDelay = 0.4 + self.CriticalChance = 0 + + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_hulk_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hulk_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hulk_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hulk_l4d1.mdl") + elseif (string.find(self.Owner:GetModel(),"dlc3")) then + self.ViewModel = "models/v_models/weapons/v_claw_hulk_dlc3.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hulk_dlc3.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hulk_dlc3.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hulk_dlc3.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_hulk.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hulk.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hulk.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hulk.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "charger" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "hunter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomer" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "smoker" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "spitter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_HITRIGHT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_PRIMARYATTACK = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_SWINGHARD = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + elseif self.Owner:GetPlayerClass() == "jockey" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_HITRIGHT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_PRIMARYATTACK = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_SWINGHARD = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + elseif self.Owner:GetPlayerClass() == "boomette" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + end + self:SetHoldType(self.HoldType) + if self:GetItemData().image_inventory == "backpack/weapons/v_models/v_fist_heavy" then + + if self.Owner:GetPlayerClass() == "charger" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("draw")) + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "hunter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomer" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "smoker" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "spitter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_HITRIGHT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_PRIMARYATTACK = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_SWINGHARD = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + elseif self.Owner:GetPlayerClass() == "jockey" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_HITRIGHT = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_PRIMARYATTACK = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + self.VM_SWINGHARD = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("attack")) + elseif self.Owner:GetPlayerClass() == "boomette" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + else + self.VM_IDLE = ACT_FISTS_VM_IDLE + self.VM_DRAW = ACT_FISTS_VM_DRAW + self.VM_HITLEFT = ACT_FISTS_VM_HITLEFT + self.VM_HITRIGHT = ACT_FISTS_VM_HITRIGHT + self.VM_SWINGHARD = ACT_FISTS_VM_SWINGHARD + end + end + + self.BaseClass.Deploy(self) +end + +function SWEP:Think() + if self.Owner:GetPlayerClass() == "zombie" then + + self.Owner:SetPlayerColor(Vector(230,236,194)) + + end + if (self:GetOwner():IsL4D()) then + self:GetOwner():GetHands():SetModel(self.ViewModel) + end + self.BaseClass.Think(self) + if self:GetItemData().image_inventory == "backpack/weapons/v_models/v_fist_heavy" then + + self.VM_IDLE = ACT_FISTS_VM_IDLE + self.VM_DRAW = ACT_FISTS_VM_DRAW + self.VM_HITLEFT = ACT_FISTS_VM_HITLEFT + self.VM_HITRIGHT = ACT_FISTS_VM_HITRIGHT + self.VM_SWINGHARD = ACT_FISTS_VM_SWINGHARD + + end + if self.Owner:GetPlayerClass() == "charger" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("draw")) + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "hunter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomer" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "smoker" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "jockey" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomette" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + end + if self:GetItemData().image_inventory == "backpack/weapons/v_models/v_fist_heavy" then + + if self.Owner:GetPlayerClass() == "charger" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("draw")) + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "hunter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomer" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomette" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + else + self.VM_IDLE = ACT_FISTS_VM_IDLE + self.VM_DRAW = ACT_FISTS_VM_DRAW + self.VM_HITLEFT = ACT_FISTS_VM_HITLEFT + self.VM_HITRIGHT = ACT_FISTS_VM_HITRIGHT + self.VM_SWINGHARD = ACT_FISTS_VM_SWINGHARD + self.WorldModel = "models/empty.mdl" + end + self:GetItemData().model_player = "models/empty.mdl" + end + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves.mdl" then + self.VM_IDLE = ACT_BREADGLOVES_VM_IDLE + self.VM_DRAW = ACT_BREADGLOVES_VM_DRAW + self.VM_HITLEFT = ACT_BREADGLOVES_VM_HITLEFT + self.VM_HITRIGHT = ACT_BREADGLOVES_VM_HITRIGHT + self.VM_SWINGHARD = ACT_BREADGLOVES_VM_SWINGHARD + self.VM_INSPECT_START = ACT_MELEE_ALT2_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_MELEE_ALT2_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_MELEE_ALT2_VM_INSPECT_END + self.SwingCrit = Sound("Weapon_bm_gloves.attack") + end + + if self:GetItemData().image_inventory == "backpack/weapons/v_models/v_fist_heavy" then + self.VM_IDLE = ACT_FISTS_VM_IDLE + self.VM_DRAW = ACT_FISTS_VM_DRAW + self.VM_HITLEFT = ACT_FISTS_VM_HITLEFT + self.VM_HITRIGHT = ACT_FISTS_VM_HITRIGHT + self.VM_SWINGHARD = ACT_FISTS_VM_SWINGHARD + end + if self.Owner:GetPlayerClass() == "boomer" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.BaseDamage = 5 + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_boomer_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_boomer_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_boomer_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_boomer_l4d1.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_boomer.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_boomer.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + + if self.Owner:GetPlayerClass() == "spitter" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.ViewModel = "models/weapons/arms/v_spitter_arms.mdl" + self:SetModel("models/weapons/arms/v_spitter_arms.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/weapons/arms/v_spitter_arms.mdl") + end + self.Owner:GetHands():SetModel("models/weapons/arms/v_spitter_arms.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "boomette" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.BaseDamage = 5 + self.ViewModel = "models/v_models/weapons/v_claw_boomer.mdl" + self:SetModel("models/v_models/weapons/v_claw_boomer.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + end + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_boomer.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "hunter" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.BaseDamage = 24 + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.CriticalChance = 0 + self.BaseDamage = 7 + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_hunter_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hunter_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hunter_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hunter_l4d1.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_hunter.mdl" + self:SetModel("models/v_models/weapons/v_claw_hunter.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hunter.mdl") + end + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hunter.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "smoker" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 6 + self.CriticalChance = 0 + self.BaseDamage = 6 + + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_smoker_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_smoker_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_smoker_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_smoker_l4d1.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_smoker.mdl" + self:SetModel("models/v_models/weapons/v_claw_smoker.mdl") + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_smoker.mdl") + end + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_smoker.mdl") + end + + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "jockey" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/pz/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.BaseDamage = 4 + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/weapons/arms/v_jockey_arms.mdl") + end + self.Owner:GetHands():SetModel("models/weapons/arms/v_jockey_arms.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "charger" then + self.Swing = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "player/pz/miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "player/charger/hit/charger_punch"..math.random(1,4)..".wav" + self.HitWorld = "player/pz/hit/claw_scrape_"..math.random(1,6)..".wav" + + self.HasSecondaryFire = false + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.1 + self.CriticalChance = 0 + self.BaseDamage = 8 + self.ViewModel = "models/weapons/arms/v_charger_arms.mdl" + self:SetModel("models/weapons/arms/v_charger_arms.mdl") + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/weapons/arms/v_charger_arms.mdl") + end + self.Owner:GetHands():SetModel("models/weapons/arms/v_charger_arms.mdl") + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "L4D1_zombie" then + self.Swing = "vj_l4d_com/attack_miss/claw_miss_"..math.random(1,2)..".wav" + self.SwingCrit = "vj_l4d_com/attack_miss/claw_miss_"..math.random(1,2)..".wav" + self.HitFlesh = "vj_l4d_com/attack_hit/punch_boxing_facehit"..math.random(4,6)..".wav" + self.HitRobot = "vj_l4d_com/attack_hit/punch_boxing_facehit"..math.random(4,6)..".wav" + self.HitWorld = "vj_l4d_com/attack_hit/hit_punch_0"..math.random(1,8)..".wav" + self.HasSecondaryFire = false + self.Primary.Delay = 1 + self.MeleeAttackDelay = 0.25 + self.BaseDamage = 10 + self.CriticalChance = 0 + end + + if self.Owner:GetPlayerClass() == "tank_l4d" then + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Swing = "L4D1_HulkZombie.Attack" + self.SwingCrit = "L4D1_HulkZombie.Attack" + self.HitFlesh = "L4D1_HulkZombie.Punch" + self.HitWorld = "L4D1_HulkZombie.Punch" + else + self.Swing = "HulkZombie.Attack" + self.SwingCrit = "HulkZombie.Attack" + self.HitFlesh = "HulkZombie.Punch" + self.HitWorld = "HulkZombie.Punch" + end + self.BaseDamage = 30 + self.Primary.Delay = 2 + self.MeleeAttackDelay = 0.4 + self.CriticalChance = 0 + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.ViewModel = "models/v_models/weapons/v_claw_hulk_l4d1.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hulk_l4d1.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hulk_l4d1.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hulk_l4d1.mdl") + elseif (string.find(self.Owner:GetModel(),"dlc3")) then + self.ViewModel = "models/v_models/weapons/v_claw_hulk_dlc3.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hulk_dlc3.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hulk_dlc3.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hulk_dlc3.mdl") + else + self.ViewModel = "models/v_models/weapons/v_claw_hulk.mdl" + + if (self.Owner:GetViewModel():GetModel() != self.ViewModel) then + self.Owner:GetViewModel():SetModel("models/v_models/weapons/v_claw_hulk.mdl") + end + self:SetModel("models/v_models/weapons/v_claw_hulk.mdl") + self.Owner:GetHands():SetModel("models/v_models/weapons/v_claw_hulk.mdl") + end + if SERVER and self.ForceReplayDeployAnim then + self:SendWeaponAnim(self.VM_DRAW) + self.ForceReplayDeployAnim = false + end + end + if self.Owner:GetPlayerClass() == "witch" then + self.Swing = "vj_l4d/witch/voice/mad/female_ls_d_madscream0"..math.random(1,3)..".wav" + self.SwingCrit = "vj_l4d/witch/voice/die/headshot_death_3.wav" + self.HitFlesh = "vj_l4d/hit/claw_hit_flesh_"..math.random(1,4)..".wav" + self.HitWorld = "vj_l4d_com/attack_hit/hit_punch_0"..math.random(1,8)..".wav" + self.BaseDamage = 70 + self.CriticalChance = 0 + self.Primary.Delay = 2 + self.MeleeAttackDelay = 0.8 + end + if self.Owner:GetPlayerClass() == "zombie" then + self.Swing = "Zombie.AttackMiss" + self.SwingCrit = "Zombie.AttackMiss" + self.HitFlesh = "Zombie.AttackHit" + self.HitWorld = "Zombie.AttackHit" + self.BaseDamage = 35 + end + if self.Owner:GetPlayerClass() == "fastzombie" then + self.Swing = "" + self.SwingCrit = "" + self.HitFlesh = "Zombie.AttackHit" + self.HitWorld = "Zombie.AttackHit" + self.BaseDamage = 75 + end + if self.Owner:GetPlayerClass() == "poisonzombie" then + self.Swing = "" + self.SwingCrit = "" + self.HitFlesh = "Zombie.AttackHit" + self.HitWorld = "Zombie.AttackHit" + self.BaseDamage = 105 + end + if self.Owner:GetPlayerClass() == "zombine" then + self.Swing = "Zombie.AttackMiss" + self.SwingCrit = "Zombie.AttackMiss" + self.HitFlesh = "Zombie.AttackHit" + self.HitWorld = "Zombie.AttackHit" + self.BaseDamage = 35 + end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_xms_gloves/c_xms_gloves.mdl" then + self.SwingCrit = Sound("Weapon_mittens.CritHit") + self.HitFlesh = Sound("Weapon_mittens.HitFlesh") + self.HitWorld = Sound("Weapon_mittens.HitWorld") + end + + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves.mdl" and self.Owner:KeyDown(IN_ATTACK2) then + + self.Swing = Sound("Weapon_bm_gloves.attack") + self.HitFlesh = Sound("Zombie.AttackHit") + end + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves.mdl" and self:CriticalEffect() then + + self.Swing = Sound("Weapon_bm_gloves.attack") + self.SwingCrit = Sound("Weapon_bm_gloves.attack") + self.HitFlesh = Sound("Zombie.AttackHit") + end + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves.mdl" and self.Owner:KeyDown(IN_ATTACK) and !self:CriticalEffect() then + + self.Swing = Sound("Weapon_BoxingGloves.Miss") + self.HitFlesh = Sound("Weapon_BoxingGloves.HitFlesh") + end + if self.Owner:KeyDown(IN_ATTACK) or self.Owner:KeyDown(IN_ATTACK2) then + if self.ShouldOccurFists == true then + if SERVER then + if self.Owner:GetPlayerClass() == "heavy" and self.Owner:GetInfoNum("jakey_antlionfbii", 0) != 1 and self.Owner:GetInfoNum("dylan_rageheavy", 0) != 1 and self.Owner:GetInfoNum("tf_robot", 0) != 1 then + self.Owner:Speak("TLK_FIREWEAPON",true) + elseif self.Owner:GetPlayerClass() == "heavy" and self.Owner:GetInfoNum("tf_robot", 0) == 1 then + self.Owner:Speak("TLK_FIREWEAPON",true) + self.ShouldOccurFists = false + timer.Simple(4, function() + self.ShouldOccurFists = true + end) + elseif self.Owner:GetPlayerClass() == "merc_dm" then + self.Owner:EmitSoundEx("vo/taunts/spy_taunts1"..math.random(1,8)..".mp3", 80, 100) + self.ShouldOccurFists = false + timer.Simple(8, function() + self.ShouldOccurFists = true + end) + elseif self.Owner:GetInfoNum("jakey_antlionfbii", 0) == 1 then + self.Owner:EmitSoundEx("NPC_AntlionGuard.Roar", 150, 100) + self.ShouldOccurFists = false + self.HitFlesh = Sound("npc/antlion_guard/shove1.wav", 120) + self.HitWorld = Sound("npc/antlion_guard/shove1.wav", 120) + self.BaseDamage = 180 + timer.Simple(0.8, function() + self.ShouldOccurFists = true + end) + elseif self.Owner:GetInfoNum("dylan_rageheavy", 0) == 1 then + self.Owner:EmitSoundEx("vo/heavy_paincrticialdeath0"..math.random(1,3)..".mp3", 150, math.random(70,150)) + self.ShouldOccurFists = false + if self.Owner:GetInfoNum("tf_giant_robot", 0) == 1 then + self.HitFlesh = Sound("ambient/explosions/explode_6.wav", 120) + self.HitWorld = Sound("ambient/explosions/explode_6.wav", 120) + self.DamageType = DMG_BLAST + else + self.HitFlesh = Sound("npc/antlion_guard/shove1.wav", 120) + self.HitWorld = Sound("npc/antlion_guard/shove1.wav", 120) + end + self.BaseDamage = 9999999999999999999999999999 + self.Primary.Delay = 0.2 + timer.Simple(0.2, function() + self.ShouldOccurFists = true + end) + end + end + end + end +end + + +function SWEP:SecondaryAttack() + if (!self:CanPrimaryAttack()) then return end + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON",true) + end + if (!self.Owner:IsBot() && self.Owner:GetPlayerClass() != "tank_l4d") then + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + self:SetNextSecondaryFire(CurTime() + self.Primary.Delay) + if (self.Owner:GetPlayerClass() != "boomer" and self.Owner:GetPlayerClass() != "spitter") then + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + end + self.NextIdle = CurTime() + self:SequenceDuration() + if (IsFirstTimePredicted()) then + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + end + if self.HasCustomMeleeBehaviour then return true end + + local vm = self.Owner:GetViewModel() + if self:CriticalEffect() then + self:EmitSound(self.SwingCrit, 100, 100) + if SERVER then + self:SendWeaponAnimEx(self.VM_SWINGHARD) + end + else + self:EmitSound(self.Swing, 100, 100) + if SERVER then + self:SendWeaponAnim(self.VM_HITRIGHT) + end + end + if self:CriticalEffect() and self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + if self.Owner:GetPlayerClass() == "tank_l4d" or self.Owner:GetPlayerClass() == "boomer"or self.Owner:GetPlayerClass() == "spitter"or self.Owner:GetPlayerClass() == "boomette" or self.Owner:GetPlayerClass() == "smoker" or self.Owner:GetPlayerClass() == "hunter" or self.Owner:GetPlayerClass() == "jockey" or self.Owner:GetPlayerClass() == "witch" then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + self.MeleeRange = 100 + elseif self.Owner:GetPlayerClass() == "charger" then + self.Owner:DoAnimationEvent(ACT_GESTURE_TURN_LEFT90) + elseif self.Owner:GetPlayerClass() == "L4D1_zombie" then + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK2) + end + self.NextIdle = CurTime() + self:SequenceDuration() + if (self.Owner:GetPlayerClass() == "tank_l4d") then + if SERVER then + vm:RestartGesture(vm:GetSequenceActivity(vm:LookupSequence("claw_melee_layer"))) + end + elseif (self.Owner:GetPlayerClass() == "hunter") then + self:SendWeaponAnim(vm:GetSequenceActivity(table.Random({vm:LookupSequence("claw_melee_layer"),vm:LookupSequence("claw_melee_layer2"),vm:LookupSequence("claw_melee_layer3")}))) + end + if self.Owner:GetPlayerClass() == "boomer" then + if (game.IsDedicated()) then + local time = 0.23 + if (self.Owner:KeyDown(IN_ATTACK2)) then + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Attack") + else + self.Owner:EmitSoundEx("BoomerZombie.Attack") + end + end + timer.Create("Growl"..self.Owner:EntIndex(), time, 0, function() + + if (self.Owner:KeyDown(IN_ATTACK2)) then + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Attack") + else + self.Owner:EmitSoundEx("BoomerZombie.Attack") + end + end + end) + else + timer.Stop("Growl"..self.Owner:EntIndex()) + end + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Attack") + else + self.Owner:EmitSoundEx("BoomerZombie.Attack") + end + end + end + if self.Owner:GetPlayerClass() == "smoker" then + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_SmokerZombie.Attack") + else + self.Owner:EmitSoundEx("SmokerZombie.Attack") + end + end + end + if self.Owner:GetPlayerClass() == "hunter" then + if (game.IsDedicated()) then + local time = 0.23 + if (self.Owner:KeyDown(IN_ATTACK2)) then + self.Owner:EmitSoundEx("PlayerZombie.Attack") + end + timer.Create("Growl"..self.Owner:EntIndex(), time, 0, function() + + if (self.Owner:KeyDown(IN_ATTACK2)) then + self.Owner:EmitSoundEx("PlayerZombie.Attack") + end + end) + else + timer.Stop("Growl"..self.Owner:EntIndex()) + end + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + self.Owner:EmitSoundEx("PlayerZombie.Attack") + end + end + if self.Owner:GetPlayerClass() == "tank_l4d" or self.Owner:GetPlayerClass() == "boomer"or self.Owner:GetPlayerClass() == "spitter"or self.Owner:GetPlayerClass() == "boomette" or self.Owner:GetPlayerClass() == "smoker" or self.Owner:GetPlayerClass() == "hunter" or self.Owner:GetPlayerClass() == "jockey" or self.Owner:GetPlayerClass() == "witch" then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK1) + self.MeleeRange = 100 + elseif self.Owner:GetPlayerClass() == "charger" then + self.Owner:DoAnimationEvent(ACT_GESTURE_TURN_LEFT90) + elseif self.Owner:GetPlayerClass() == "L4D1_zombie" then + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK2) + end + elseif (self.Owner:IsBot() && self.Owner:GetPlayerClass() == "smoker" and !self.Smoking) then + self.Owner:EmitSoundEx("SmokerZombie.Warn") + self.Owner:PlaySequence("tongue_attack_antic") + self:SetNextSecondaryFire(CurTime() + 8) + if SERVER then + self.Owner:SetClassSpeed(1) + end + timer.Simple(1.5, function() + self.Owner:EmitSoundEx("SmokerZombie.TongueAttack") + self.Owner:PlaySequence("tongue_attack_grab_survivor") + if (IsValid(self.Owner:GetEyeTrace().Entity) && self.Owner:GetEyeTrace().Entity:IsTFPlayer() && !self.Owner:GetEyeTrace().Entity:IsFriendly(self.Owner)) then + self.Owner:EmitSoundEx("SmokerZombie.TongueRetract") + self.Owner:PlaySequence("tongue_attack_drag_survivor_idle",false) + self.Smoking = true + local enemy = self.Owner:GetEyeTrace().Entity + enemy.IsChoking = false + if SERVER then + enemy:SendLua("surface.PlaySound('@music/terror/TongueTied.wav')") + end + timer.Simple(1.5, function() + if (!enemy.IsChoking) then + enemy:EmitSound("Event.SmokerDragHit") + enemy:SetNWBool("Taunting",true) + if (enemy:IsPlayer()) then + enemy:ConCommand("tf_tp_simulation_toggle") + end + + if SERVER then + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(enemy:GetSkin()) + animent:SetPos(enemy:GetPos()) + animent:SetAngles(enemy:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Idle_Tongued_Dragging_Ground" ) + animent:SetPlaybackRate( 1 ) + enemy.RagdollEntity = animent + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(enemy:GetModel()) + animent2:SetSkin(enemy:GetSkin()) + animent2:SetPos(enemy:GetPos()) + animent2:SetAngles(enemy:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:NextThink( CurTime() ) + return true + end + enemy.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + end + enemy:SetNoDraw(true) + end + end) + timer.Create("TongueAttack"..self.Owner:EntIndex(), 0, 0, function() + if (enemy:Health() < 1 and enemy.IsChoking) then + timer.Stop("TongueAttack"..self.Owner:EntIndex()) + timer.Stop("TongueAttack2"..self.Owner:EntIndex()) + self.Smoking = false + if SERVER then + enemy:SetNoDraw(false) + enemy.RagdollEntity:Remove() + enemy.RagdollEntity2:Remove() + enemy:SendLua("surface.PlaySound('misc/null.wav')") + self.Owner:ResetClassSpeed() + end + self.Owner:SetNWBool("Taunting",false) + if (enemy:IsPlayer()) then + enemy:ConCommand("tf_tp_simulation_toggle") + end + enemy.IsChoking = false + self.Owner:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, self.Owner:LookupSequence("tongue_attack_to_idle"), 0, true ) + elseif (self.Owner:Health() < 1) then + timer.Stop("TongueAttack"..self.Owner:EntIndex()) + timer.Stop("TongueAttack2"..self.Owner:EntIndex()) + self.Smoking = false + if SERVER then + enemy:SendLua("surface.PlaySound('misc/null.wav')") + self.Owner:ResetClassSpeed() + end + self.Owner:SetNWBool("Taunting",false) + if (enemy:IsPlayer()) then + enemy:ConCommand("tf_tp_simulation_toggle") + end + enemy.IsChoking = false + end + if (enemy:Health() > 0 and SERVER and IsValid(enemy.RagdollEntity)) then + enemy.RagdollEntity:SetPos(enemy:GetPos()) + enemy.RagdollEntity:SetAngles(self:GetAngles()) + end + if (self.Owner:GetPos():Distance(enemy:GetPos()) > 70 and enemy:Health() > 0) then + enemy:SetLocalVelocity(self.Owner:GetAimVector() * -130) + else + if (!enemy.IsChoking and enemy:Health() > 0) then + self.Owner:PlaySequence("tongue_attack_incap_survivor_idle",false) + if SERVER then + enemy:TakeDamage(5,self.Owner) + timer.Create("TongueAttack2"..self.Owner:EntIndex(), 1, 0, function() + enemy:TakeDamage(5,self.Owner) + end) + enemy:SendLua("RunConsoleCommand('stopsound')") + timer.Simple(0.1, function() + enemy:SendLua("surface.PlaySound('@music/pzattack/Asphyxiation.wav')") + end) + end + enemy:SetNWBool("Taunting",true) + if (!IsValid(enemy.RagdollEntity)) then + if SERVER then + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(enemy:GetSkin()) + animent:SetPos(enemy:GetPos()) + animent:SetAngles(enemy:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Idle_Tongued_choking_ground" ) + animent:SetPlaybackRate( 1 ) + enemy.RagdollEntity = animent + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(enemy:GetModel()) + animent2:SetSkin(enemy:GetSkin()) + animent2:SetPos(enemy:GetPos()) + animent2:SetAngles(enemy:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:NextThink( CurTime() ) + return true + end + enemy.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + end + enemy:SetNoDraw(true) + else + enemy.RagdollEntity:SetSequence( "Idle_Tongued_choking_ground" ) + end + enemy:EmitSound("Event.SmokerChokeHit") + enemy.IsChoking = true + end + end + end) + self:SetNextSecondaryFire(CurTime() + 120) + elseif (!IsValid(self.Owner:GetEyeTrace().Entity) or (IsValid(self.Owner:GetEyeTrace().Entity) and !self.Owner:GetEyeTrace().Entity:IsTFPlayer())) then + timer.Simple(1, function() + if SERVER then + self.Owner:ResetClassSpeed() + end + end) + end + end) + elseif self.Owner:GetPlayerClass() == "poisonzombie" then + + local pos = self.Owner:GetShootPos() + self:SetNextSecondaryFire(CurTime() + 3) + if SERVER then + self.Owner:EmitSoundEx("NPC_PoisonZombie.ThrowWarn", 125) + self.Owner:SetClassSpeed(1) + self.Owner:DoAnimationEvent(ACT_VM_FIDGET, true) + end + timer.Simple(1, function() + self.Owner:DoAnimationEvent(ACT_RANGE_ATTACK2) + end) + timer.Simple(2.3, function() + if SERVER then + local animent2 = ents.Create( 'npc_headcrab_black' ) -- The entity used for the death animation + self.Owner:EmitSoundEx("NPC_PoisonZombie.Throw", 125) + local headcrab = ents.Create("pill_jumper_headcrab") + local angs = self.Owner:EyeAngles() + angs.p = 0 + headcrab:SetPos(self.Owner:EyePos() + angs:Forward() * 100) + headcrab:SetAngles(angs) + headcrab:Spawn() + headcrab:EmitSound("NPC_BlackHeadcrab.Attack") + headcrab:GetPhysicsObject():SetVelocity(angs:Forward() * 500 + Vector(0, 0, 200)) + self.Owner:ResetClassSpeed() + timer.Create("BlackHeadcrabFriendlyizer", 0.1, 80, function() + for k,v in ipairs(ents.FindInSphere(self.Owner:GetPos(), 1800)) do + if v:GetClass() == "npc_headcrab_black" then + v:AddEntityRelationship(self.Owner, D_LI, 99) + v:SetNWInt("Team", self.Owner:Team()) + for _,teamply in ipairs(team.GetPlayers(self.Owner:Team())) do + v:AddEntityRelationship(teamply, D_LI, 99) + end + end + end + end) + end + end) + elseif self.Owner:GetPlayerClass() == "spitter" and self.Owner:IsBot() then + self.Owner:DoAnimationEvent("spitter_spitting") + self.Owner:SetWalkSpeed(1) + self.Owner:SetRunSpeed(1) + self:SendWeaponAnim(self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("spit"))) + if SERVER then + timer.Simple(0.5, function() + local grenade = ents.Create("obj_vj_l4d_spit") + grenade:SetPos(self.Owner:GetShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + if self:Critical() then + grenade.critical = true + end + + grenade:SetOwner(self.Owner) + + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * 30 + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end) + self.Owner:EmitSoundEx("SpitterZombie.Spit") + timer.Simple(1.0, function() + self.Owner:ResetClassSpeed() + end) + end + self:SetNextSecondaryFire(CurTime() + 30) + self:SetNextPrimaryFire(CurTime() + 1.5) + elseif self.Owner:GetPlayerClass() == "hunter" and self.Owner:IsBot() then + if !self.Owner:Crouching() then + return + end + if self.Owner:IsBot() and !self.ReadyToPounce then + return + end + local vm = self.Owner:GetViewModel() + self:SetNextSecondaryFire(CurTime() + 0.6) + + if (self.Owner:IsOnGround()) then + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("lunge"))) + self.Owner:SetPos(self.Owner:GetPos() + Vector(0,0,30)) + timer.Create("Pounce"..self.Owner:EntIndex(), 0, 2, function() + self.Owner:SetVelocity( self.Owner:GetAimVector() * 300 * 3.1 ) + end) + self.Owner:DoAnimationEvent("Pounce_01") + timer.Simple(self.Owner:SequenceDuration(self.Owner:LookupSequence("Pounce_01")) , function() + /* + if (self.Owner:GetAngles():Up():Length() > 0.7) then + self.Owner:AddVCDSequenceToGestureSlot(GESTURE_SLOT_JUMP, self.Owner:LookupSequence("pounce_idle_high"),0,true) + timer.Create("LoopHunterAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("pounce_idle_high")), 0, function() + --print(self.Owner:GetAimVector():LengthSqr()) + self.Owner:AddVCDSequenceToGestureSlot(GESTURE_SLOT_JUMP, self.Owner:LookupSequence("pounce_idle_high"),0,true) + end) + else*/ + + self.Owner:DoAnimationEvent("pounce_idle_low") + timer.Create("LoopHunterAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("pounce_idle_low")) , 0, function() + //--print(self.Owner:GetAimVector():LengthSqr()) + self.Owner:DoAnimationEvent("Pounce_idle_low") + end) + //end + end) + end + if self.Owner:GetPlayerClass() == "hunter" and self.Owner:IsOnGround() then + if SERVER then + self.Owner:EmitSoundEx( "HunterZombie.Pounce" ) + end + end + + self:TakePrimaryAmmo(1) + + self.NextIdle = CurTime() + self:SequenceDuration() + timer.Simple(0.05, function() + timer.Create("CheckIfOnGround"..self.Owner:EntIndex(), 0, 0, function() + if self.Owner:OnGround() then + timer.Stop("LoopHunterAnim"..self.Owner:EntIndex()) + if SERVER then + if (self.Owner:IsBot()) then + self.Owner:RemoveFlags(FL_DUCKING) + end + if self.Owner:GetPlayerClass() == "hunter" then + local tbl = ents.FindInSphere(self.Owner:GetPos(), 95 ) + for k,v in pairs(tbl) do + if v:IsTFPlayer() and v:Health() > 1 then + if v:IsTFPlayer() and v:EntIndex() != self.Owner:EntIndex() and not v:IsFriendly(self.Owner) then + if (self.Owner:IsBot()) then + self.ReadyToPounce = false + end + v:TakeDamage(15, self.Owner, self) + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED) + if not self.Owner:IsOnGround() then return end + if self.Owner:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + self.Owner:SetNWBool("Taunting", true) + self.Owner:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + net.Start("ActivateTauntCam") + net.Send(v) + v:SetPos(self.Owner:GetPos()) + self.Owner:SetMoveType(MOVETYPE_NONE) + v:SetMoveType(MOVETYPE_NONE) + v:SetNWBool("Taunting", true) + self.Owner:EmitSoundEx("HunterZombie.Pounce.Hit") + local ply = v + local ent = v + ent:SetPos(ent:GetPos() + Vector(0,0,30)) + ent:SetMoveType(MOVETYPE_FLYGRAVITY) + ent:SetNoDraw(true) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(self.Owner:GetSkin()) + animent:SetPos(self.Owner:GetPos()) + animent:SetAngles(self.Owner:GetAngles() + Angle(0,180,0)) + animent:Spawn() + animent:Activate() + ply.RagdollEntity = animent + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Idle_Incap_Pounced" ) + animent:SetPlaybackRate( 1 ) + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(ply:GetModel()) + animent2:SetSkin(ply:GetSkin()) + animent2:SetPos(ply:GetPos()) + animent2:SetAngles(ply:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:NextThink( CurTime() ) + return true + end + ply.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + timer.Simple(0.1, function() + net.Start("ActivateTauntCam") + net.Send(v) + end) + timer.Create("LoopHunterAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("Melee_Pounce")), 0, function() + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED, true) + end) + timer.Create("RIPTHATASSHOLEAPART2"..self.Owner:EntIndex(), 0.5, 0, function() + v:TakeDamage(5, self.Owner, self) + + self.Owner:EmitSoundEx("HunterZombie.Pounce.shred") + end) + timer.Create("RIPTHATASSHOLEAPART"..self.Owner:EntIndex(), 0, 0, function() + if v:Health() <= 1 then + self.Owner:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED_FG42) + timer.Stop("LoopHunterAnim"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART2"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + --v:SetParent() + self.Owner:SetMoveType(MOVETYPE_WALK) + v:SetMoveType(MOVETYPE_WALK) + self.Owner:ResetClassSpeed() + self.Owner:SetPos(v:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + net.Start("DeActivateTauntCam") + net.Send(v) + ent:SetNoDraw(false) + if (IsValid(animent)) then + animent:Remove() + end + if (IsValid(animent2)) then + animent2:Remove() + end + + timer.Simple(20, function() + if (IsValid(self)) then + self.ReadyToPounce = true + end + end) + end + if self.Owner:Health() <= 1 then + self.Owner:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED_FG42) + timer.Stop("LoopHunterAnim"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART2"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + --v:SetParent() + v:ResetClassSpeed() + self.Owner:SetMoveType(MOVETYPE_WALK) + v:SetMoveType(MOVETYPE_WALK) + v:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + net.Start("DeActivateTauntCam") + net.Send(v) + ent:SetNoDraw(false) + if (IsValid(animent)) then + animent:Remove() + end + if (IsValid(animent2)) then + animent2:Remove() + end + end + end) + end + else + self.Owner:EmitSoundEx("HunterZombie.Pounce.Miss") + end + end + elseif self.Owner:GetPlayerClass() == "jockey" then + + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 110)) do + if v:Health() >= 0 then + if v:IsPlayer() and v:Nick() != self.Owner:Nick() and not v:IsFriendly(self.Owner) then + v:TakeDamage(15, self.Owner, self) + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED) + if not self.Owner:IsOnGround() then return end + if self.Owner:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + self.Owner:SetNWBool("Taunting", true) + self.Owner:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + self.Owner:SetParent(v, v:LookupAttachment("head")) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + v:EmitSound("Jockey.Music") + v:EmitSound("music/tags/exenterationhit.wav") + self.Owner:EmitSoundEx("jockey/voice/attack/jockey_attackloop01.wav") + timer.Create("RIPTHATASSHOLEAPART"..self.Owner:EntIndex(), 1, 0, function() + if v:Health() <= 1 then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + v:StopSound("Jockey.Music") + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + if !self.Owner:Alive() then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + v:StopSound("Jockey.Music") + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + v:TakeDamage(15, self.Owner, self) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + end) + end + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:TakeDamage(15, self.Owner, self) + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED) + if not self.Owner:IsOnGround() then return end + if self.Owner:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + self.Owner:SetNWBool("Taunting", true) + self.Owner:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + self.Owner:SetParent(v) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + v:EmitSound("music/tags/exenterationhit.wav") + self.Owner:EmitSoundEx("jockey/voice/attack/jockey_attackloop01.wav") + timer.Create("RIPTHATASSHOLEAPART"..self.Owner:EntIndex(), 1, 0, function() + if v:Health() <= 1 then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + if !self.Owner:Alive() then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + v:TakeDamage(15, self.Owner, self) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + end) + end + end + end + end + end + timer.Stop("CheckIfOnGround"..self.Owner:EntIndex()) + end + end) + end) + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + if (!self.Owner:IsOnGround()) then + self.Owner:EmitSoundEx("HulkZombie.Throw.Fail") + self:SetNextSecondaryFire(CurTime() + 0.8) + return + end + local pos = self.Owner:GetShootPos() + self:SetNextPrimaryFire(CurTime() + 1.5) + self.Owner:DoAnimationEvent(ACT_RANGE_ATTACK1) + if SERVER then + self.Owner:EmitSoundEx("HulkZombie.Throw.Pickup", 125) + self:SetNextSecondaryFire(CurTime() + 5.0) + self.Owner:SetNWBool("Taunting",true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + timer.Simple(0.5, function() + local animent2 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent2:SetModel("models/props_debris/concrete_chunk01a.mdl") + animent2:SetPos(self.Owner:GetAttachment(self.Owner:LookupAttachment("debris")).Pos) + animent2:SetAngles(self.Owner:GetAttachment(self.Owner:LookupAttachment("debris")).Ang) + animent2:Spawn() + animent2:Activate() + animent2:SetParent(self.Owner) + animent2:SetName("DebrisModel"..self.Owner:EntIndex()) + animent2:Fire("SetParentAttachment","debris",0) + local owner = self.Owner + function animent2:Think() + self:SetPos(owner:GetAttachment(owner:LookupAttachment("debris")).Pos) + self:SetAngles(owner:GetAttachment(owner:LookupAttachment("debris")).Ang) + self:NextThink(CurTime()) + return true + end + end) + end + timer.Simple(2.1, function() + if SERVER then + for k,v in ipairs(ents.FindByName("DebrisModel"..self.Owner:EntIndex())) do + v:Remove() + end + if (!self.Owner:IsOnGround()) then + self.Owner:EmitSoundEx("HulkZombie.Throw.Fail") + self:SetNextSecondaryFire(CurTime() + 0.8) + self.Owner:SetNWBool("Taunting",false) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + else + self.Owner:SetNWBool("Taunting",false) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + self.Owner:EmitSoundEx("HulkZombie.Throw", 125) + local grenade = ents.Create("base_anim") + grenade:SetModel("models/props_debris/concrete_chunk01a.mdl") + grenade:SetPos(self.Owner:GetShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + grenade:PhysicsInit(SOLID_VPHYSICS) + grenade:SetPhysicsAttacker(self.Owner) + if self:Critical() then + grenade.critical = true + end + + grenade:SetOwner(self.Owner) + + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 1100 + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-80,80),math.random(-80,80),math.random(-800,80))) + grenade:GetPhysicsObject():AddVelocity(vel) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + + function grenade:PhysicsCollide( data, phys ) + if ( data.Speed > 90 ) then + if (IsValid(data.HitEntity)) then + ParticleEffect("tank_rock_throw_impact_chunks", self:GetPos(), self:GetAngles()) + self:Remove() + self:EmitSound("player/tank/hit/thrown_projectile_hit_01.wav",95) + else + ParticleEffect("tank_rock_throw_impact_chunks", self:GetPos(), self:GetAngles()) + self:Remove() + self:EmitSound("player/tank/hit/thrown_projectile_hit_01.wav",95) + end + + end + end + end + end + end) + elseif self.Owner:GetPlayerClass() == "boomer" and self.Owner:IsBot() then + self.Owner:SetWalkSpeed(1) + self.Owner:SetRunSpeed(1) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Warn") + else + self.Owner:EmitSoundEx("BoomerZombie.Warn") + end + self:SetNextPrimaryFire(CurTime() + 2.5) + self:SetNextSecondaryFire(CurTime() + 30.0) + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 3.0) + timer.Stop("BoomerVomit"..self.Owner:EntIndex()) + timer.Create("BoomerVomit"..self.Owner:EntIndex(), 1.0, 1, function() + + local vm = self.Owner:GetViewModel() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("vomit"))) + self.Owner:DoAnimationEvent(ACT_RANGE_ATTACK1) + if SERVER then + + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_Vomit.Use") + else + self.Owner:EmitSoundEx("Vomit.Use") + end + end + ParticleEffectAttach( "boomer_vomit_b", PATTACH_POINT_FOLLOW, self.Owner, 1 ) + ParticleEffectAttach( "boomer_vomit_c", PATTACH_POINT_FOLLOW, self.Owner, 1 ) + for k,v in ipairs(ents.FindInSphere(self.Owner:GetPos(), 300)) do + if v:IsTFPlayer() and !v:IsFriendly(self.Owner) and v:EntIndex() != self.Owner:EntIndex() then + + if (!v:HasPlayerState(PLAYERSTATE_PUKEDON)) then + if (v:IsPlayer()) then + if SERVER then + v:SendLua("LocalPlayer():EmitSound('Event.VomitInTheFace')") + end + end + v:EmitSound("Event.BoomerHit") + v:AddPlayerState(PLAYERSTATE_PUKEDON, true) + end + timer.Simple(10, function() + if (v:HasPlayerState(PLAYERSTATE_PUKEDON)) then + v:RemovePlayerState(PLAYERSTATE_PUKEDON, false) + end + end) + local ent = v + if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end + + local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) + if v:IsPlayer() then + if SERVER then + v:Speak("TLK_JARATE_HIT") + end + end + if SERVER then + umsg.Start("Notice_EntityHumiliationCounter") + umsg.String(GAMEMODE:EntityName(ent)) + umsg.Short(GAMEMODE:EntityTeam(ent)) + umsg.Short(GAMEMODE:EntityID(ent)) + + umsg.String("deflect_acidball") + + umsg.String(GAMEMODE:EntityName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + --[[ + umsg.String(GAMEMODE:EntityName(cooperator)) + umsg.Short(GAMEMODE:EntityTeam(cooperator)) + umsg.Short(GAMEMODE:EntityID(cooperator))]] + + umsg.Bool(self.CurrentShotIsCrit) + umsg.End() + end + if (v:IsPlayer()) then + if v:GetPlayerClass() == "francis" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/biker/boomerreaction0"..math.random(1,9)..".wav", 85) + end + --v:EmitSound("music/terror/pukricide.wav", 55) + if v:GetPlayerClass() == "zoey" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/teenangst/boomerreaction0"..math.random(1,9)..".wav", 85) + end + if v:GetPlayerClass() == "louis" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/manager/boomerreaction0"..math.random(1,9)..".wav", 85) + end + + if v:GetPlayerClass() == "coach" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/coach/boomerreaction0"..math.random(1,9)..".wav", 85) + end + + if v:GetPlayerClass() == "bill" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/namvet/boomerreaction0"..math.random(1,9)..".wav", 85) + end + end + end + end + timer.Simple(1.5, function() + timer.Simple(0.5, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + if SERVER then + self.Owner:ResetClassSpeed() + end + end) + end) + elseif self.Owner:GetPlayerClass() == "headcrab" then + + local pos = self.Owner:GetShootPos() + self:SetNextSecondaryFire(CurTime() + 1.5) + local angs = self.Owner:EyeAngles() + angs.p = 0 + self.Owner:DoAnimationEvent(ACT_JUMP) + self.Owner:EmitSoundEx("NPC_Headcrab.Attack") + self.Owner:SetRunSpeed(100) + self.NameOverride = "hl_headcrab" + self.Owner:SetLocalVelocity( self.Owner:GetAimVector() + Vector( 0, 0, 280 ) + self.Owner:GetVelocity() * 1 ) + timer.Create("HeadCrabEat"..self.Owner:EntIndex(), 0.01, 0, function() + if self.Owner:OnGround() then timer.Stop("HeadCrabEat"..self.Owner:EntIndex()) return end + for k,v in ipairs(ents.FindInSphere(self.Owner:GetPos(), 80)) do + if v:IsTFPlayer() and v != self.Owner and v:Health() >= 20 then + v:TakeDamage(40, self.Owner, self) + self.Owner:EmitSoundEx("NPC_HeadCrab.Bite") + timer.Stop("HeadCrabEat"..self.Owner:EntIndex()) + elseif v:IsTFPlayer() and v != self.Owner and v:Health() <= 20 then + self.Owner:SetPlayerClass("zombie") + v:TakeDamage(v:Health(), self.Owner, self) + self.Owner:EmitSoundEx("NPC_HeadCrab.Bite") + self:EmitSound("Zombie.Alert") + timer.Stop("HeadCrabEat"..self.Owner:EntIndex()) + end + end + end) + + elseif self.Owner:GetPlayerClass() == "zombie" then + self:SetNextSecondaryFire(CurTime() + 2) + self.Owner:EmitSoundEx("Zombie.Pain") + self.Owner:DoAnimationEvent(ACT_SIGNAL_HALT, true) + self.Owner:SetClassSpeed(0.01) + timer.Simple(1, function() + local angs = self.Owner:EyeAngles() + angs.p = 0 + self.Owner:EmitSoundEx("NPC_Headcrab.Attack") + self.Owner:SetLocalVelocity( self.Owner:GetAimVector() + Vector( 0, 0, 280 ) + self.Owner:GetVelocity() * 4 ) + self.Owner:SetPlayerClass("headcrab") + end) + elseif self.Owner:GetPlayerClass() == "zombine" then + self:SetNextSecondaryFire(CurTime() + 3) + + + timer.Simple(0.6, function() + self.Owner:EmitSoundEx("Zombine.ReadyGrenade") + self:SetHoldType("GRENADE") + if SERVER then + local nade=ents.Create("npc_grenade_frag") + nade:SetPos(self.Owner:GetPos()) + nade:SetParent(self.Owner) + nade:Spawn() + nade:Fire("setparentattachment","grenade_attachment", 0) + nade:Fire("SetTimer","5",0) + nade:CallOnRemove("NadeSplodeKillPlayer",function() + if IsValid(ent) then self.Owner:Kill() end + end) + timer.Simple(5, function() + self:SetHoldType("MELEE") + end) + end + end) + end + self.NextIdle = CurTime() + self:SequenceDuration() +end + +SWEP.Special_HumiliationCount = "#Humiliation_Count" +SWEP.Special_HumiliationKill = "LAUGH KILL!" + +-- Open the area portal linked to this door entity + + +function SWEP:PrimaryAttack() + if (!self:CanPrimaryAttack()) then return end + if self.Owner:KeyDown(IN_ATTACK2) then return end + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON,true") + end + if self.Owner:GetPlayerClass() == "headcrab" then return end + if self.Owner:GetPlayerClass() == "charger" and !self.Owner:IsBot() then return end + if self.Owner:GetPlayerClass() == "spitter" and !self.Owner:IsBot() then + self.Owner:DoAnimationEvent("spitter_spitting") + self.Owner:SetWalkSpeed(1) + self.Owner:SetRunSpeed(1) + self:SendWeaponAnim(self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("spit"))) + if SERVER then + timer.Simple(0.5, function() + local grenade = ents.Create("obj_vj_l4d_spit") + grenade:SetPos(self.Owner:GetShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + if self:Critical() then + grenade.critical = true + end + + grenade:SetOwner(self.Owner) + + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * 30 + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end) + self.Owner:EmitSoundEx("SpitterZombie.Spit") + timer.Simple(1.0, function() + self.Owner:ResetClassSpeed() + end) + end + self:SetNextPrimaryFire(CurTime() + 30) + self:SetNextSecondaryFire(CurTime() + 1.5) + + elseif (!self.Owner:IsBot() && self.Owner:GetPlayerClass() == "smoker") then + + self.Owner:EmitSoundEx("SmokerZombie.TongueAttack") + local VModel = self:GetOwner():GetViewModel() + VModel:SendViewModelMatchingSequence( VModel:LookupSequence("tongue") ) + if SERVER then + self.Owner:SetClassSpeed(1) + end + self:SetNextPrimaryFire(CurTime() + 5) + self.Owner:PlaySequence("tongue_attack_grab_survivor", true ) + if (IsValid(self.Owner:GetEyeTrace().Entity) && self.Owner:GetEyeTrace().Entity:IsTFPlayer() && !self.Owner:GetEyeTrace().Entity:IsFriendly(self.Owner)) then + timer.Simple(0.1, function() + if SERVER then + net.Start("ActivateTauntCam") + net.Send(self.Owner) + end + self.Owner:EmitSoundEx("SmokerZombie.TongueRetract") + end) + self.Owner:PlaySequence("tongue_attack_drag_survivor_idle", false) + local enemy = self.Owner:GetEyeTrace().Entity + enemy.IsChoking = false + timer.Simple(1.5, function() + if (!enemy.IsChoking) then + enemy:EmitSound("Event.SmokerDragHit") + if SERVER then + if (enemy:IsPlayer()) then + enemy:SendLua("surface.PlaySound('@music/terror/TongueTied.wav')") + end + end + enemy:SetNWBool("Taunting",true) + + if SERVER then + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(enemy:GetSkin()) + animent:SetPos(enemy:GetPos()) + animent:SetAngles(enemy:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Idle_Tongued_Dragging_Ground" ) + animent:SetPlaybackRate( 1 ) + enemy.RagdollEntity = animent + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(enemy:GetModel()) + animent2:SetSkin(enemy:GetSkin()) + animent2:SetPos(enemy:GetPos()) + animent2:SetAngles(enemy:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:NextThink( CurTime() ) + return true + end + enemy.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + end + enemy:SetNoDraw(true) + end + end) + timer.Create("TongueAttack"..self.Owner:EntIndex(), 0, 0, function() + if (enemy:Health() < 1 and enemy.IsChoking) then + timer.Stop("TongueAttack"..self.Owner:EntIndex()) + timer.Stop("TongueAttack2"..self.Owner:EntIndex()) + if SERVER then + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + enemy:SetNoDraw(false) + enemy.RagdollEntity:Remove() + enemy.RagdollEntity2:Remove() + if (enemy:IsPlayer()) then + enemy:SendLua("surface.PlaySound('misc/null.wav')") + end + self.Owner:ResetClassSpeed() + end + enemy.IsChoking = false + self.Owner:PlaySequence( "tongue_attack_to_idle", true ) + elseif (self.Owner:Health() < 1) then + timer.Stop("TongueAttack"..self.Owner:EntIndex()) + timer.Stop("TongueAttack2"..self.Owner:EntIndex()) + if SERVER then + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + if (enemy:IsPlayer()) then + enemy:SendLua("surface.PlaySound('misc/null.wav')") + end + self.Owner:ResetClassSpeed() + end + enemy.IsChoking = false + end + if (enemy:Health() > 0 and SERVER and IsValid(enemy.RagdollEntity)) then + enemy.RagdollEntity:SetPos(enemy:GetPos()) + enemy.RagdollEntity:SetAngles(self:GetAngles()) + end + if (self.Owner:GetPos():Distance(enemy:GetPos()) > 70 and enemy:Health() > 0) then + enemy:SetLocalVelocity(self.Owner:GetAimVector() * -130) + else + if (!enemy.IsChoking and enemy:Health() > 0) then + + self.Owner:PlaySequence("tongue_attack_incap_survivor_idle", false) + + if SERVER then + enemy:TakeDamage(8,self.Owner) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_SmokerZombie.Attack") + else + self.Owner:EmitSoundEx("SmokerZombie.Attack") + end + timer.Create("TongueAttack2"..self.Owner:EntIndex(), 1, 0, function() + enemy:TakeDamage(8,self.Owner) + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_SmokerZombie.Attack") + else + self.Owner:EmitSoundEx("SmokerZombie.Attack") + end + end + end) + if (enemy:IsPlayer()) then + enemy:SendLua("surface.PlaySound('@music/pzattack/Asphyxiation.wav')") + end + end + enemy:SetNWBool("Taunting",true) + if (!IsValid(enemy.RagdollEntity)) then + if SERVER then + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(enemy:GetSkin()) + animent:SetPos(enemy:GetPos()) + animent:SetAngles(enemy:GetAngles()) + animent:Spawn() + animent:Activate() + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Idle_Tongued_choking_ground" ) + animent:SetPlaybackRate( 1 ) + enemy.RagdollEntity = animent + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(enemy:GetModel()) + animent2:SetSkin(enemy:GetSkin()) + animent2:SetPos(enemy:GetPos()) + animent2:SetAngles(enemy:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:NextThink( CurTime() ) + return true + end + enemy.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + end + enemy:SetNoDraw(true) + else + enemy.RagdollEntity:SetSequence( "Idle_Tongued_choking_ground" ) + end + enemy:EmitSound("Event.SmokerChokeHit") + enemy.IsChoking = true + end + end + end) + elseif (!IsValid(self.Owner:GetEyeTrace().Entity) or self.Owner:GetEyeTrace().Entity:IsFriendly(self.Owner) or (IsValid(self.Owner:GetEyeTrace().Entity) and !self.Owner:GetEyeTrace().Entity:IsTFPlayer())) then + timer.Simple(1.35, function() + if SERVER then + self.Owner:ResetClassSpeed() + + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + end + end) + end + elseif self.Owner:GetPlayerClass() == "boomer" and !self.Owner:IsBot() then + self.Owner:SetWalkSpeed(1) + self.Owner:SetRunSpeed(1) + self:SetNextSecondaryFire(CurTime() + 1.5) + self:SetNextPrimaryFire(CurTime() + 30.0) + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 2.5) + timer.Stop("BoomerVomit"..self.Owner:EntIndex()) + local vm = self.Owner:GetViewModel() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("vomit"))) + self.Owner:DoAnimationEvent(ACT_RANGE_ATTACK1) + if SERVER then + + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_Vomit.Use") + else + self.Owner:EmitSoundEx("Vomit.Use") + end + end + ParticleEffectAttach( "boomer_vomit_b", PATTACH_POINT_FOLLOW, self.Owner, 1 ) + ParticleEffectAttach( "boomer_vomit_c", PATTACH_POINT_FOLLOW, self.Owner, 1 ) + for k,v in ipairs(ents.FindInSphere(self.Owner:GetPos(), 300)) do + if v:IsTFPlayer() and (!v:IsFriendly(self.Owner) or v:IsL4D()) and v:EntIndex() != self.Owner:EntIndex() then + + if (!v:HasPlayerState(PLAYERSTATE_PUKEDON)) then + if (v:IsPlayer()) then + if SERVER then + v:SendLua("LocalPlayer():EmitSound('Event.VomitInTheFace')") + end + end + v:EmitSound("Event.BoomerHit") + v:AddPlayerState(PLAYERSTATE_PUKEDON, true) + end + timer.Simple(10, function() + if (v:HasPlayerState(PLAYERSTATE_PUKEDON)) then + v:RemovePlayerState(PLAYERSTATE_PUKEDON, false) + end + end) + local ent = v + if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end + + local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) + if v:IsPlayer() then + if SERVER then + v:Speak("TLK_JARATE_HIT") + end + end + if SERVER then + umsg.Start("Notice_EntityHumiliationCounter") + umsg.String(GAMEMODE:EntityName(ent)) + umsg.Short(GAMEMODE:EntityTeam(ent)) + umsg.Short(GAMEMODE:EntityID(ent)) + + umsg.String("deflect_acidball") + + umsg.String(GAMEMODE:EntityName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + --[[ + umsg.String(GAMEMODE:EntityName(cooperator)) + umsg.Short(GAMEMODE:EntityTeam(cooperator)) + umsg.Short(GAMEMODE:EntityID(cooperator))]] + + umsg.Bool(self.CurrentShotIsCrit) + umsg.End() + end + if (v:IsPlayer()) then + if v:GetPlayerClass() == "francis" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/biker/boomerreaction0"..math.random(1,9)..".wav", 85) + end + --v:EmitSound("music/terror/pukricide.wav", 55) + if v:GetPlayerClass() == "zoey" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/teenangst/boomerreaction0"..math.random(1,9)..".wav", 85) + end + if v:GetPlayerClass() == "louis" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/manager/boomerreaction0"..math.random(1,9)..".wav", 85) + end + + if v:GetPlayerClass() == "coach" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/coach/boomerreaction0"..math.random(1,9)..".wav", 85) + end + + if v:GetPlayerClass() == "bill" and v:IsPlayer() then + v:EmitSound("player/survivor/voice/namvet/boomerreaction0"..math.random(1,9)..".wav", 85) + end + end + end + end + timer.Simple(1.5, function() + timer.Simple(0.5, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + if SERVER then + self.Owner:ResetClassSpeed() + end + end) + elseif self.Owner:GetPlayerClass() == "hunter" and !self.Owner:IsBot() then + if !self.Owner:Crouching() then + return + end + if self.Owner:IsBot() and !self.ReadyToPounce then + return + end + local vm = self.Owner:GetViewModel() + self:SetNextSecondaryFire(CurTime() + 0.6) + + if (self.Owner:IsOnGround()) then + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("lunge"))) + self.Owner:SetPos(self.Owner:GetPos() + Vector(0,0,30)) + timer.Create("Pounce"..self.Owner:EntIndex(), 0, 2, function() + self.Owner:SetVelocity( self.Owner:GetAimVector() * 300 * 1.5 ) + end) + self.Owner:DoAnimationEvent("Pounce_01") + timer.Simple(self.Owner:SequenceDuration(self.Owner:LookupSequence("Pounce_01")) , function() + /* + if (self.Owner:GetAngles():Up():Length() > 0.7) then + self.Owner:AddVCDSequenceToGestureSlot(GESTURE_SLOT_JUMP, self.Owner:LookupSequence("pounce_idle_high"),0,true) + timer.Create("LoopHunterAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("pounce_idle_high")), 0, function() + --print(self.Owner:GetAimVector():LengthSqr()) + self.Owner:AddVCDSequenceToGestureSlot(GESTURE_SLOT_JUMP, self.Owner:LookupSequence("pounce_idle_high"),0,true) + end) + else*/ + + self.Owner:DoAnimationEvent("pounce_idle_low") + timer.Create("LoopHunterAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("pounce_idle_low")) , 0, function() + //--print(self.Owner:GetAimVector():LengthSqr()) + self.Owner:DoAnimationEvent("Pounce_idle_low") + end) + //end + end) + end + if self.Owner:GetPlayerClass() == "hunter" and self.Owner:IsOnGround() then + if SERVER then + self.Owner:EmitSoundEx( "HunterZombie.Pounce" ) + end + end + + self:TakePrimaryAmmo(1) + + self.NextIdle = CurTime() + self:SequenceDuration() + timer.Simple(0.05, function() + timer.Create("CheckIfOnGround"..self.Owner:EntIndex(), 0, 0, function() + if self.Owner:OnGround() then + timer.Stop("LoopHunterAnim"..self.Owner:EntIndex()) + if SERVER then + if (self.Owner:IsBot()) then + self.Owner:RemoveFlags(FL_DUCKING) + end + if self.Owner:GetPlayerClass() == "hunter" then + local tbl = ents.FindInSphere(self.Owner:GetPos(), 95 ) + for k,v in pairs(tbl) do + if v:IsTFPlayer() and v:Health() > 1 then + if v:IsTFPlayer() and v:EntIndex() != self.Owner:EntIndex() and not v:IsFriendly(self.Owner) then + if (self.Owner:IsBot()) then + self.ReadyToPounce = false + end + v:TakeDamage(15, self.Owner, self) + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED) + if not self.Owner:IsOnGround() then return end + if self.Owner:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + self.Owner:SetNWBool("Taunting", true) + self.Owner:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + net.Start("ActivateTauntCam") + net.Send(v) + v:SetPos(self.Owner:GetPos()) + self.Owner:SetMoveType(MOVETYPE_NONE) + v:SetMoveType(MOVETYPE_NONE) + v:SetNWBool("Taunting", true) + self.Owner:EmitSoundEx("HunterZombie.Pounce.Hit") + local ply = v + local ent = v + ent:SetPos(ent:GetPos() + Vector(0,0,30)) + ent:SetMoveType(MOVETYPE_FLYGRAVITY) + ent:SetNoDraw(true) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/cpthazama/l4d2/shared/anim_survivor.mdl") + animent:SetSkin(self.Owner:GetSkin()) + animent:SetPos(self.Owner:GetPos()) + animent:SetAngles(self.Owner:GetAngles() + Angle(0,180,0)) + animent:Spawn() + animent:Activate() + ply.RagdollEntity = animent + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetSequence( "Idle_Incap_Pounced" ) + animent:SetPlaybackRate( 1 ) + local animent2 = ents.Create( 'prop_dynamic_override' ) -- The entity used for the death animation + animent2:SetModel(ply:GetModel()) + animent2:SetSkin(ply:GetSkin()) + animent2:SetPos(ply:GetPos()) + animent2:SetAngles(ply:GetAngles()) + animent2:SetParent(animent) + animent2:AddEffects(EF_BONEMERGE) + function animent:Think() -- This makes the animation work + if (self:GetCycle() == 1) then + self:SetCycle(0) + end + self:NextThink( CurTime() ) + return true + end + ply.RagdollEntity2 = animent2 + animent.AutomaticFrameAdvance = true + timer.Simple(0.1, function() + net.Start("ActivateTauntCam") + net.Send(v) + end) + timer.Create("LoopHunterAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("Melee_Pounce")), 0, function() + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED, true) + end) + timer.Create("RIPTHATASSHOLEAPART2"..self.Owner:EntIndex(), 0.5, 0, function() + + v:TakeDamage(5, self.Owner, self) + + self.Owner:EmitSoundEx("HunterZombie.Pounce.shred") + end) + timer.Create("RIPTHATASSHOLEAPART"..self.Owner:EntIndex(), 0, 0, function() + if v:Health() <= 1 then + self.Owner:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED_FG42) + timer.Stop("LoopHunterAnim"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART2"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + --v:SetParent() + self.Owner:SetMoveType(MOVETYPE_WALK) + v:SetMoveType(MOVETYPE_WALK) + self.Owner:ResetClassSpeed() + self.Owner:SetPos(v:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + net.Start("DeActivateTauntCam") + net.Send(v) + ent:SetNoDraw(false) + if (IsValid(animent)) then + animent:Remove() + end + if (IsValid(animent2)) then + animent2:Remove() + end + + timer.Simple(20, function() + if (IsValid(self)) then + self.ReadyToPounce = true + end + end) + end + if self.Owner:Health() <= 1 then + self.Owner:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED_FG42) + timer.Stop("LoopHunterAnim"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + timer.Stop("RIPTHATASSHOLEAPART2"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + --v:SetParent() + v:ResetClassSpeed() + self.Owner:SetMoveType(MOVETYPE_WALK) + v:SetMoveType(MOVETYPE_WALK) + v:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + net.Start("DeActivateTauntCam") + net.Send(v) + ent:SetNoDraw(false) + if (IsValid(animent)) then + animent:Remove() + end + if (IsValid(animent2)) then + animent2:Remove() + end + end + end) + end + else + self.Owner:EmitSoundEx("HunterZombie.Pounce.Miss") + end + end + elseif self.Owner:GetPlayerClass() == "jockey" then + + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 110)) do + if v:Health() >= 0 then + if v:IsPlayer() and v:Nick() != self.Owner:Nick() and not v:IsFriendly(self.Owner) then + v:TakeDamage(15, self.Owner, self) + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED) + if not self.Owner:IsOnGround() then return end + if self.Owner:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + self.Owner:SetNWBool("Taunting", true) + self.Owner:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + self.Owner:SetParent(v, v:LookupAttachment("head")) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + v:EmitSound("Jockey.Music") + v:EmitSound("music/tags/exenterationhit.wav") + self.Owner:EmitSoundEx("jockey/voice/attack/jockey_attackloop01.wav") + timer.Create("RIPTHATASSHOLEAPART"..self.Owner:EntIndex(), 1, 0, function() + if v:Health() <= 1 then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + v:StopSound("Jockey.Music") + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + if !self.Owner:Alive() then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + v:StopSound("Jockey.Music") + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + v:TakeDamage(15, self.Owner, self) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + end) + end + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:TakeDamage(15, self.Owner, self) + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_DEPLOYED) + if not self.Owner:IsOnGround() then return end + if self.Owner:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + self.Owner:SetNWBool("Taunting", true) + self.Owner:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self.Owner) + self.Owner:SetParent(v) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + v:EmitSound("music/tags/exenterationhit.wav") + self.Owner:EmitSoundEx("jockey/voice/attack/jockey_attackloop01.wav") + timer.Create("RIPTHATASSHOLEAPART"..self.Owner:EntIndex(), 1, 0, function() + if v:Health() <= 1 then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + if !self.Owner:Alive() then + timer.Stop("RIPTHATASSHOLEAPART"..self.Owner:EntIndex()) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("NoWeapon", false) + self.Owner:SetParent() + self.Owner:SetPos(self.Owner:GetPos() + Vector(40, 40, 40)) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + return + end + v:TakeDamage(15, self.Owner, self) + v:EmitSound("player/charger/hit/charger_punch"..math.random(1,4)..".wav", 85, 100) + end) + end + end + end + end + end + timer.Stop("CheckIfOnGround"..self.Owner:EntIndex()) + end + end) + end) + if (self.Owner:GetPlayerClass() == "tank_l4d") then + if SERVER then + vm:RestartGesture(vm:GetSequenceActivity(vm:LookupSequence("claw_melee_layer"))) + end + elseif (self.Owner:GetPlayerClass() == "hunter") then + self:SendWeaponAnim(vm:GetSequenceActivity(table.Random({vm:LookupSequence("claw_melee_layer"),vm:LookupSequence("claw_melee_layer2"),vm:LookupSequence("claw_melee_layer3")}))) + end + elseif (self.Owner:IsBot() or self.Owner:GetPlayerClass() == "tank_l4d") then + + + if self.Owner:GetPlayerClass() == "boomer" then + if (game.IsDedicated()) then + local time = 0.23 + if (self.Owner:KeyDown(IN_ATTACK2)) then + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Attack") + else + self.Owner:EmitSoundEx("BoomerZombie.Attack") + end + end + timer.Create("Growl"..self.Owner:EntIndex(), time, 0, function() + + if (self.Owner:KeyDown(IN_ATTACK2)) then + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Attack") + else + self.Owner:EmitSoundEx("BoomerZombie.Attack") + end + end + end) + else + timer.Stop("Growl"..self.Owner:EntIndex()) + end + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_BoomerZombie.Attack") + else + self.Owner:EmitSoundEx("BoomerZombie.Attack") + end + end + end + if self.Owner:GetPlayerClass() == "smoker" then + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + if (string.find(self.Owner:GetModel(),"l4d1")) then + self.Owner:EmitSoundEx("L4D1_SmokerZombie.Attack") + else + self.Owner:EmitSoundEx("SmokerZombie.Attack") + end + end + end + if self.Owner:GetPlayerClass() == "hunter" then + if (game.IsDedicated()) then + local time = 0.25 + if (self.Owner:KeyDown(IN_ATTACK2)) then + self.Owner:EmitSoundEx("PlayerZombie.Attack") + end + timer.Create("Growl"..self.Owner:EntIndex(), time, 0, function() + + if (self.Owner:KeyDown(IN_ATTACK2)) then + self.Owner:EmitSoundEx("PlayerZombie.Attack") + end + end) + else + timer.Stop("Growl"..self.Owner:EntIndex()) + end + if (math.random(1,3) == 1) then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + self.Owner:EmitSoundEx("PlayerZombie.Attack") + end + end + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + self:SetNextSecondaryFire(CurTime() + self.Primary.Delay) + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + if (self.Owner:GetPlayerClass() != "boomer" && self.Owner:GetPlayerClass() != "spitter") then + self:SetNextSecondaryFire(CurTime() + self.Primary.Delay) + end + self.NextIdle = CurTime() + self:SequenceDuration() + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + if self.HasCustomMeleeBehaviour then return true end + + local vm = self.Owner:GetViewModel() + if self:CriticalEffect() then + self:EmitSound(self.SwingCrit, 100, 100) + if SERVER then + self:SendWeaponAnimEx(self.VM_SWINGHARD) + end + else + self:EmitSound(self.Swing, 100, 100) + self:SendWeaponAnim(self.VM_HITLEFT) + end + if self:CriticalEffect() and self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + if self.Owner:GetPlayerClass() == "tank_l4d" or self.Owner:GetPlayerClass() == "boomer"or self.Owner:GetPlayerClass() == "spitter"or self.Owner:GetPlayerClass() == "boomette" or self.Owner:GetPlayerClass() == "smoker" or self.Owner:GetPlayerClass() == "hunter" or self.Owner:GetPlayerClass() == "jockey" or self.Owner:GetPlayerClass() == "witch" then + timer.Adjust("VoiceL4d"..self.Owner:EntIndex(), 1.5) + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK1) + self.MeleeRange = 100 + elseif self.Owner:GetPlayerClass() == "charger" then + self.Owner:DoAnimationEvent(ACT_GESTURE_TURN_LEFT90) + elseif self.Owner:GetPlayerClass() == "L4D1_zombie" then + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK2) + end + self.NextIdle = CurTime() + self:SequenceDuration() + if (self.Owner:GetPlayerClass() == "tank_l4d") then + if SERVER then + vm:RestartGesture(vm:GetSequenceActivity(vm:LookupSequence("claw_melee_layer"))) + end + elseif (self.Owner:GetPlayerClass() == "hunter") then + self:SendWeaponAnim(vm:GetSequenceActivity(table.Random({vm:LookupSequence("claw_melee_layer"),vm:LookupSequence("claw_melee_layer2"),vm:LookupSequence("claw_melee_layer3")}))) + end + else + if self:CriticalEffect() and self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + if self.Owner:GetPlayerClass() == "zombie" then + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK1) + self.Owner:EmitSoundEx("Zombie.Attack") + self.MeleeAttackDelay = 0.75 + self.Owner:SetBodygroup(1,1) + self.Primary.Delay = 1.6 + self.NameOverride = "hl_zombie" + end + if self.Owner:GetPlayerClass() == "fastzombie" then + self.Owner:DoAnimationEvent(ACT_GMOD_GESTURE_RANGE_ZOMBIE_SPECIAL) + self.Owner:EmitSoundEx("NPC_FastZombie.Attack") + self.MeleeAttackDelay = 0.5 + self.Owner:SetBodygroup(1,1) + self.Primary.Delay = 1 + self.NameOverride = "hl_zombie" + end + if self.Owner:GetPlayerClass() == "poisonzombie" then + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK1) + self.Owner:EmitSoundEx("NPC_PoisonZombie.Attack") + self.MeleeAttackDelay = 1 + self.Owner:SetBodygroup(1,1) + self.Owner:SetBodygroup(2,1) + self.Owner:SetBodygroup(3,1) + self.Owner:SetBodygroup(4,1) + self.Primary.Delay = 2 + self.NameOverride = "hl_zombie" + end + if self.Owner:GetPlayerClass() == "zombine" then + self:SetWeaponHoldType("MELEE") + self.Owner:EmitSoundEx("Zombine.Charge") + self.Owner:DoAnimationEvent(ACT_VM_UNLOAD, true) + self.MeleeAttackDelay = 0.1 + self.Owner:SetBodygroup(1,0) + self.Primary.Delay = 0.8 + self.NameOverride = "hl_zombie" + end + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + self:SetNextSecondaryFire(CurTime() + self.Primary.Delay) + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + self.NextIdle = CurTime() + self:SequenceDuration() + if (IsFirstTimePredicted()) then + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + end + if self.HasCustomMeleeBehaviour then return true end + + if self:CriticalEffect() then + self:EmitSound(self.SwingCrit, 100, 100) + + if SERVER then + self:SendWeaponAnimEx(self.VM_SWINGHARD) + end + if self:CriticalEffect() and self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + else + self:EmitSound(self.Swing, 100, 100) + if SERVER then + self:SendWeaponAnim(self.VM_HITLEFT) + end + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower/shared.lua new file mode 100644 index 000000000..c716ced26 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower/shared.lua @@ -0,0 +1,411 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) +include("sv_airblast.lua") + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Flamethrower" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self.Owner) then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + if GetConVar("tf_pyrovision"):GetBool() then + if i==1 then + effect = "flamethrower_rainbow" + elseif i>1 then + if t==2 then + effect = "flamethrower_rainbow" + else + effect = "flamethrower_rainbow" + end + end + else + if (self.Owner:WaterLevel() > 1) then + + effect = "flamethrower_underwater" + + else + if i==1 then + effect = "flamethrower" + elseif i>1 then + if t==3 then + effect = "flamethrower_crit_blue" + else + effect = "flamethrower_crit_red" + end + end + end + end + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + +usermessage.Hook("TFAirblastImpact", function(msg) + LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") +end) + +end + +PrecacheParticleSystem("flamethrower_fire_1") +PrecacheParticleSystem("flamethrower_crit_red") +PrecacheParticleSystem("flamethrower") +PrecacheParticleSystem("flamethrower_crit_blue") +PrecacheParticleSystem("flamethrower_underwater") +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_FlameThrower.FireStart") +SWEP.SpecialSound1 = Sound("Weapon_FlameThrower.FireLoop") +SWEP.ShootCritSound = Sound("Weapon_FlameThrower.FireLoopCrit") +SWEP.ShootSoundEnd = Sound("Weapon_FlameThrower.FireEnd") +SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") +SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.8 +SWEP.AirblastRadius = 80 + +SWEP.BulletSpread = 0.1 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) + +function SWEP:CreateSounds(owner) + if SERVER then + if not IsValid(owner) then return end + + if (IsValid(self.Owner) and string.find(self.Owner:GetModel(),"_boss.mdl")) then + + self.ShootSound = Sound("MVM.GiantPyro_FlameStart") + self.SpecialSound1 = Sound("MVM.GiantPyro_FlameLoop") + self.ShootCritSound = Sound("MVM.GiantPyro_FlameLoop") + + end + + local rf = RecipientFilter() + rf:AddAllPlayers() + self.SpinUpSound = CreateSound(owner, self.ShootSound,rf) + self.SpinDownSound = CreateSound(owner, self.ShootSoundEnd,rf) + self.FireSound = CreateSound(owner, self.SpecialSound1,rf) + self.FireCritSound = CreateSound(owner, self.ShootCritSound,rf) + self.PilotSound = CreateSound(owner, self.PilotLoop,rf) + + self.SoundsCreated = true + end +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return false end + if self:Ammo1()<=0 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextEndSpinUp then + self.SpinUpSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.NextEndSpinUp = nil + end + + if self:RollCritical() and not self.NextEndSpinUp then + if not self.Critting or not self.Firing then + self.NextEndSpinUp = nil + self:SetFlamethrowerEffect(2) + self.FireSound:Stop() + self.FireCritSound:Play() + if self.Primary.Delay == 0.015 then + self.FireCritSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + elseif not self.NextEndSpinUp then + if self.Critting or not self.Firing then + self:SetFlamethrowerEffect(1) + self.FireCritSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + end + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON") + end + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + -- Take one ammo every 2 projectiles fired + if not self.ParticleCounter then self.ParticleCounter = 1 end + self.ParticleCounter = self.ParticleCounter + 1 + if self.ParticleCounter>2 then + self.ParticleCounter = 1 + self:TakePrimaryAmmo(1) + end + + self:ShootProjectile() +end + +function SWEP:ShootProjectile() + if SERVER then + if (self.Owner:WaterLevel() > 1) then + return + end + local flame = ents.Create("tf_flame") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + flame:SetPos(self:ProjectileShootPos()) + flame:SetAngles(vec:Angle()) + if self:Critical() then + flame.critical = true + end + if self.Force then + flame.Force = self.Force + end + flame:SetOwner(self.Owner) + self:InitProjectileAttributes(flame) + + local d = self:GetItemData() + if d.item_iconname then + flame.NameOverride = d.item_iconname + end + + flame:Spawn() + + flame:SetVelocity(self.Owner:GetVelocity()) + end +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.NoAirblast then return false end + + if self:Ammo1()<20 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime() self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then + self:StopFiring() + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.SoundsCreated then + self.PilotSound:Play() + end + + ----MsgN(Format("Flamethrower Deploy %s",tostring(self))) + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.FireSound:Stop() + self.FireCritSound:Stop() + self.PilotSound:Stop() + end + + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + + --self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower/sv_airblast.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower/sv_airblast.lua new file mode 100644 index 000000000..61e83cb04 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower/sv_airblast.lua @@ -0,0 +1,329 @@ + +local function minicrit_true() return true end + +local AirblastFunc = { + ["grenade_spit"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_spit_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["grenade_ar2"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_ar2_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["crossbow_bolt"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "crossbow_bolt_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["npc_grenade_frag"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "npc_grenade_frag_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["prop_combine_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + + if phys:HasGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) then + -- The combine ball was fired by a NPC, and simply dissolves stuff without damaging them + -- Convert it into a player combine ball when it is airblasted + phys:ClearGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) + phys:AddGameFlag(FVPHYSICS_DMG_DISSOLVE) + phys:AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + end + return true + end, + ["tf_projectile_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["rpg_missile"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + local dmginfo = DamageInfo() + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "rpg_missile_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airblast"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldierbot_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_weapon_flamethrower" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldier_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airstrike"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + + ["tf_projectile_sentryrocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_cleaver"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_flare"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe_remote"] = function(self, ent, dir) + ent:Detach() + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_remote_deflect" + ent:SetOwner(self.Owner) + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_arrow"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_arrow_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end +} + +function SWEP:DoAirblast() + local r = self.AirblastRadius + local dir = self.Owner:GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + local pos = self.Owner:GetShootPos() + r * 1.5 * dir + local reflect + for _,v in pairs(ents.FindInBox(pos-Vector(r,r,r),pos+Vector(r,r,r))) do + c = v:GetClass() + ----print(v) + if v~=self.Owner then + if v:IsTFPlayer() or v:GetClass() == "tf_projectile_pipe" or v:GetClass() == "prop_physics" or v:GetClass() == "tf_projectile_ball" or v:GetClass() == "tf_projectile_cleaver" and self.Owner:IsValidEnemy(v) and v:ShouldReceiveDamageForce() then + if v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + if v:GetClass() == "tf_projectile_pipe" or v:GetClass() == "tf_projectile_ball" or v:GetClass() == "tf_projectile_cleaver" then + local phys = v:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + v:SetOwner(self.Owner) + v:SetPhysicsAttacker(self.Owner) + v.AttackerOverride = self.Owner + v.NameOverride = "env_explosion" + v.MiniCrit = minicrit_true + v:EmitSound(self.AirblastDeflectSound) + else + local phys = v:GetPhysicsObject() + if not phys:IsValid() then return false end + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),3000,100000) - vel) + v:SetPhysicsAttacker(self.Owner) + v.AttackerOverride = self.Owner + v.NameOverride = "prop_physics" + v.MiniCrit = minicrit_true + v:EmitSound(self.AirblastDeflectSound) + end + end + else + if(v:EntIndex()~=self.Owner:EntIndex()) then + if (v.TFBot) then -- bots HATE getting airblasted + v.TargetEnt = self.Owner + end + if v:IsPlayer() and !v:IsFriendly(self.Owner) then + --v:SetVelocity(((((-v:GetAimVector() * 45) * 10) + Vector(0,0,245)) * 45) * 245) + --The above is the old code, which does not account for player weight, fungus. + + local pushdir = (dir + Vector(0,0,0.9)):Angle():Forward()*6 -- Adjust aimdirection to push players off ground, while preventing inverted pushing, fungus. + v:SetVelocity( pushdir * v:GetPhysicsObject():GetMass() ) -- Account for player weight because we push all twinks equally, fungus. + + local ve,vi,bt = v,v:UserID(),GetConVar("tf_airblast_bustertimer"):GetFloat() + do + if bt == 0 then continue end + local Buststring = "TF_AIRBLAST_BUSTERTIMER" .. ve:UserID() + if timer.Exists( Buststring ) then + timer.Adjust( Buststring, bt, nil, nil ) + continue -- If blasted again, reset the time, fungus. + end + + ve:AddPlayerState(PLAYERSTATE_STUNNED) + ve:SetViewPunchAngles(Angle(4,0,0)) + ve:SetNWFloat("BusterFriction",ve:GetFriction()) + ve:SetFriction(0.25) -- Encourage sliding, fungus. + timer.Create( Buststring, bt, 1, function() + ve:RemovePlayerState(PLAYERSTATE_STUNNED) + ve:SetFriction(ve:GetNWFloat("BusterFriction",nil)) + ve:SetNWFloat("BusterFriction",0) + end) + end + + + umsg.Start("TFAirblastImpact", v) + umsg.End() + end + end + end + elseif v.Reflect then + v:Reflect(self.Owner, self, dir) + reflect = true + elseif AirblastFunc[c] then + if AirblastFunc[c](self, v, dir, dir2) then + reflect = true + end + elseif v:IsTFPlayer() and self.Owner:IsFriendly(v) and v:EntIndex() != self.Owner:EntIndex() then + GAMEMODE:ExtinguishEntity(v) + v:EmitSound("player/flame_out.wav", 90) + + GAMEMODE:HealPlayer(self.Owner, self.Owner, 20, true, false) -- Pat on the back, good job for saving your teammates, fungus. + end + end + end + + if reflect then + self:EmitSound(self.AirblastDeflectSound) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_bb/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_bb/shared.lua new file mode 100644 index 000000000..f6616fdfa --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_bb/shared.lua @@ -0,0 +1,347 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) +include("sv_airblast.lua") + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Degreaser" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self.Owner) then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==1 then + effect = "flamethrower" + elseif i>1 then + if t==2 then + effect = "flamethrower_crit_blue" + else + effect = "flamethrower_crit_red" + end + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + +usermessage.Hook("TFAirblastImpact", function(msg) + LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") +end) + +end + +PrecacheParticleSystem("flamethrower_rainbow") +PrecacheParticleSystem("new_flame_crit_red") +PrecacheParticleSystem("new_flame_crit_blue") +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_degreaser/c_degreaser.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_BackBurner.FireStart") +SWEP.SpecialSound1 = Sound("Weapon_BackBurner.FireLoop") +SWEP.ShootCritSound = Sound("Weapon_BackBurner.FireCritLoop") +SWEP.ShootSoundEnd = Sound("Weapon_BackBurner.FireEnd") +SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") +SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.04 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.8 +SWEP.AirblastRadius = 80 + +SWEP.BulletSpread = 0.06 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) + +function SWEP:CreateSounds(owner) + if not IsValid(owner) then return end + local rf = RecipientFilter() + rf:AddAllPlayers() + self.SpinUpSound = CreateSound(owner, self.ShootSound,rf) + self.SpinDownSound = CreateSound(owner, self.ShootSoundEnd,rf) + self.FireSound = CreateSound(owner, self.SpecialSound1,rf) + self.FireCritSound = CreateSound(owner, self.ShootCritSound,rf) + self.PilotSound = CreateSound(owner, self.PilotLoop,rf) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + if self:Ammo1()<=0 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextEndSpinUp then + self.SpinUpSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.NextEndSpinUp = nil + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self.NextEndSpinUp = nil + self:SetFlamethrowerEffect(2) + self.FireSound:Stop() + self.FireCritSound:Play() + if self.Primary.Delay == 0.015 then + self.FireCritSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + elseif not self.NextEndSpinUp then + if self.Critting or not self.Firing then + self:SetFlamethrowerEffect(1) + self.FireCritSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + -- Take one ammo every 2 projectiles fired + if not self.ParticleCounter then self.ParticleCounter = 1 end + self.ParticleCounter = self.ParticleCounter + 1 + if self.ParticleCounter>2 then + self.ParticleCounter = 1 + self:TakePrimaryAmmo(1) + end + + self:ShootProjectile() +end + +function SWEP:ShootProjectile() + if SERVER then + local flame = ents.Create("tf_flame") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + flame:SetPos(self:ProjectileShootPos()) + flame:SetAngles(vec:Angle()) + if self:Critical() then + flame.critical = true + end + if self.Force then + flame.Force = self.Force + end + flame:SetOwner(self.Owner) + flame.CritsFromBehind = true + self:InitProjectileAttributes(flame) + + local d = self:GetItemData() + if d.item_iconname then + flame.NameOverride = d.item_iconname + end + + flame:Spawn() + + flame:SetVelocity(self.Owner:GetVelocity()) + end +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.NoAirblast then return false end + + if self:Ammo1()<20 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime() self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then + self:StopFiring() + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.SoundsCreated then + self.PilotSound:Play() + end + + ----MsgN(Format("Flamethrower Deploy %s",tostring(self))) + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.FireSound:Stop() + self.FireCritSound:Stop() + self.PilotSound:Stop() + end + + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_bb/sv_airblast.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_bb/sv_airblast.lua new file mode 100644 index 000000000..c2a979b20 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_bb/sv_airblast.lua @@ -0,0 +1,242 @@ + +local function minicrit_true() return true end + +local AirblastFunc = { + ["grenade_spit"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_spit_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["grenade_ar2"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_ar2_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["crossbow_bolt"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "crossbow_bolt_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["npc_grenade_frag"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "npc_grenade_frag_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["prop_combine_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + + if phys:HasGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) then + -- The combine ball was fired by a NPC, and simply dissolves stuff without damaging them + -- Convert it into a player combine ball when it is airblasted + phys:ClearGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) + phys:AddGameFlag(FVPHYSICS_DMG_DISSOLVE) + phys:AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + end + return true + end, + ["rpg_missile"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + local dmginfo = DamageInfo() + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "rpg_missile_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldierbot_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_weapon_flamethrower" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldier_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airstrike"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + + ["tf_projectile_sentryrocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_cleaver"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_flare"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_ball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe_remote"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:Detach() + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_remote_deflect" + ent:SetOwner(self.Owner) + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_arrow"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_arrow_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, +} + +function SWEP:DoAirblast() + local r = self.AirblastRadius + local dir = self.Owner:GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + local pos = self.Owner:GetShootPos() + r * 1.5 * dir + local reflect + + for _,v in pairs(ents.FindInBox(pos-Vector(r,r,r),pos+Vector(r,r,r))) do + c = v:GetClass() + ----print(v) + if v:GetOwner()~=self.Owner then + if v:IsTFPlayer() and self.Owner:IsValidEnemy(v) and v:ShouldReceiveDamageForce() then + if v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + v:GetPhysicsObjectNum(i):ApplyForceCenter(18000*dir) + end + else + v:SetGroundEntity(NULL) + v:SetLocalVelocity(dir2 * 400) + v:SetThrownByExplosion(true) + + if v:IsPlayer() then + umsg.Start("TFAirblastImpact", v) + umsg.End() + end + end + elseif v.Reflect then + v:Reflect(self.Owner, self, dir) + reflect = true + elseif AirblastFunc[c] then + if AirblastFunc[c](self, v, dir, dir2) then + reflect = true + end + elseif v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + v:GetPhysicsObjectNum(i):ApplyForceCenter(18000*dir) + end + elseif v:IsTFPlayer() and self.Owner:IsFriendly(v) then + GAMEMODE:ExtinguishEntity(v) + v:EmitSound("player/flame_out.wav", 90) + end + end + end + + if reflect then + self:EmitSound(self.AirblastDeflectSound) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_degreaser/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_degreaser/shared.lua new file mode 100644 index 000000000..2bb11d5ec --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_degreaser/shared.lua @@ -0,0 +1,346 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) +include("sv_airblast.lua") + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Degreaser" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self.Owner) then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==1 then + effect = "flamethrower" + elseif i>1 then + if t==2 then + effect = "flamethrower_crit_blue" + else + effect = "flamethrower_crit_red" + end + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + +usermessage.Hook("TFAirblastImpact", function(msg) + LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") +end) + +end + +PrecacheParticleSystem("flamethrower_rainbow") +PrecacheParticleSystem("new_flame_crit_red") +PrecacheParticleSystem("new_flame_crit_blue") +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_degreaser/c_degreaser.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_Degreaser.FireStart") +SWEP.SpecialSound1 = Sound("Weapon_Degreaser.FireLoop") +SWEP.ShootCritSound = Sound("Weapon_Degreaser.FireLoopCrit") +SWEP.ShootSoundEnd = Sound("Weapon_Degreaser.FireEnd") +SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") +SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.04 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.5 +SWEP.AirblastRadius = 80 + +SWEP.BulletSpread = 0.06 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) + +function SWEP:CreateSounds(owner) + if not IsValid(owner) then return end + + self.SpinUpSound = CreateSound(owner, self.ShootSound) + self.SpinDownSound = CreateSound(owner, self.ShootSoundEnd) + self.FireSound = CreateSound(owner, self.SpecialSound1) + self.FireCritSound = CreateSound(owner, self.ShootCritSound) + self.PilotSound = CreateSound(owner, self.PilotLoop) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + if self:Ammo1()<=0 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextEndSpinUp then + self.SpinUpSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.NextEndSpinUp = nil + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self.NextEndSpinUp = nil + self:SetFlamethrowerEffect(2) + self.FireSound:Stop() + self.FireCritSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + elseif not self.NextEndSpinUp then + if self.Critting or not self.Firing then + self:SetFlamethrowerEffect(1) + self.FireCritSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + -- Take one ammo every 2 projectiles fired + if not self.ParticleCounter then self.ParticleCounter = 1 end + self.ParticleCounter = self.ParticleCounter + 1 + if self.ParticleCounter>2 then + self.ParticleCounter = 1 + self:TakePrimaryAmmo(1) + end + + self:ShootProjectile() +end + +function SWEP:ShootProjectile() + if SERVER then + local flame = ents.Create("tf_flame") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + flame:SetPos(self:ProjectileShootPos()) + flame:SetAngles(vec:Angle()) + if self:Critical() then + flame.critical = true + end + if self.Force then + flame.Force = self.Force + end + flame:SetOwner(self.Owner) + self:InitProjectileAttributes(flame) + + local d = self:GetItemData() + if d.item_iconname then + flame.NameOverride = d.item_iconname + end + + flame:Spawn() + + flame:SetVelocity(self.Owner:GetVelocity()) + end +end + + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.NoAirblast then return false end + + if self:Ammo1()<20 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime() self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then + self:StopFiring() + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.SoundsCreated then + self.PilotSound:Play() + end + + ----MsgN(Format("Flamethrower Deploy %s",tostring(self))) + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.FireSound:Stop() + self.FireCritSound:Stop() + self.PilotSound:Stop() + end + + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_degreaser/sv_airblast.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_degreaser/sv_airblast.lua new file mode 100644 index 000000000..c2a979b20 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_degreaser/sv_airblast.lua @@ -0,0 +1,242 @@ + +local function minicrit_true() return true end + +local AirblastFunc = { + ["grenade_spit"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_spit_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["grenade_ar2"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_ar2_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["crossbow_bolt"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "crossbow_bolt_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["npc_grenade_frag"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "npc_grenade_frag_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["prop_combine_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + + if phys:HasGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) then + -- The combine ball was fired by a NPC, and simply dissolves stuff without damaging them + -- Convert it into a player combine ball when it is airblasted + phys:ClearGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) + phys:AddGameFlag(FVPHYSICS_DMG_DISSOLVE) + phys:AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + end + return true + end, + ["rpg_missile"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + local dmginfo = DamageInfo() + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "rpg_missile_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldierbot_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_weapon_flamethrower" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldier_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airstrike"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + + ["tf_projectile_sentryrocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_cleaver"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_flare"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_ball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe_remote"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:Detach() + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_remote_deflect" + ent:SetOwner(self.Owner) + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_arrow"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_arrow_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, +} + +function SWEP:DoAirblast() + local r = self.AirblastRadius + local dir = self.Owner:GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + local pos = self.Owner:GetShootPos() + r * 1.5 * dir + local reflect + + for _,v in pairs(ents.FindInBox(pos-Vector(r,r,r),pos+Vector(r,r,r))) do + c = v:GetClass() + ----print(v) + if v:GetOwner()~=self.Owner then + if v:IsTFPlayer() and self.Owner:IsValidEnemy(v) and v:ShouldReceiveDamageForce() then + if v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + v:GetPhysicsObjectNum(i):ApplyForceCenter(18000*dir) + end + else + v:SetGroundEntity(NULL) + v:SetLocalVelocity(dir2 * 400) + v:SetThrownByExplosion(true) + + if v:IsPlayer() then + umsg.Start("TFAirblastImpact", v) + umsg.End() + end + end + elseif v.Reflect then + v:Reflect(self.Owner, self, dir) + reflect = true + elseif AirblastFunc[c] then + if AirblastFunc[c](self, v, dir, dir2) then + reflect = true + end + elseif v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + v:GetPhysicsObjectNum(i):ApplyForceCenter(18000*dir) + end + elseif v:IsTFPlayer() and self.Owner:IsFriendly(v) then + GAMEMODE:ExtinguishEntity(v) + v:EmitSound("player/flame_out.wav", 90) + end + end + end + + if reflect then + self:EmitSound(self.AirblastDeflectSound) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_mvm/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_mvm/shared.lua new file mode 100644 index 000000000..420ed1857 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_mvm/shared.lua @@ -0,0 +1,331 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) +include("sv_airblast.lua") + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Flamethrower MVM" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self.Owner) then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==1 then + effect = "flamethrower" + elseif i>1 then + if t==2 then + effect = "flamethrower" + else + effect = "flamethrower" + end + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + +usermessage.Hook("TFAirblastImpact", function(msg) + LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") +end) + +end + +PrecacheParticleSystem("flamethrower_giant_mvm") +PrecacheParticleSystem("flamethrower_crit_giant_mvm") +PrecacheParticleSystem("new_flame_crit_blue") +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("MVM.GiantPyro_FlameStart") +SWEP.SpecialSound1 = Sound("MVM.GiantPyro_FlameLoop") +SWEP.ShootCritSound = Sound("MVM.GiantPyro_FlameLoop") +SWEP.ShootSoundEnd = Sound("MVM.GiantPyro_FlameEnd") +SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") +SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.04 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.25 +SWEP.AirblastRadius = 120 + +SWEP.BulletSpread = 0.06 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) + +function SWEP:CreateSounds(owner) + if not IsValid(owner) then return end + + self.SpinUpSound = CreateSound(owner, self.ShootSound) + self.SpinDownSound = CreateSound(owner, self.ShootSoundEnd) + self.FireSound = CreateSound(owner, self.SpecialSound1) + self.FireCritSound = CreateSound(owner, self.ShootCritSound) + self.PilotSound = CreateSound(owner, self.PilotLoop) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + if self:Ammo1()<=0 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextEndSpinUp then + self.FireSound:Play() + self.NextEndSpinUp = nil + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self.NextEndSpinUp = nil + self:SetFlamethrowerEffect(2) + self.FireSound:Stop() + self.FireCritSound:Play() + self.Firing = true + end + self.Critting = true + elseif not self.NextEndSpinUp then + if self.Critting or not self.Firing then + self:SetFlamethrowerEffect(1) + self.FireCritSound:Stop() + self.FireSound:Play() + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + -- Take one ammo every 2 projectiles fired + if not self.ParticleCounter then self.ParticleCounter = 1 end + self.ParticleCounter = self.ParticleCounter + 1 + if self.ParticleCounter>2 then + self.ParticleCounter = 1 + self:TakePrimaryAmmo(1) + end + + self:ShootProjectile() +end + +function SWEP:ShootProjectile() + if SERVER then + local flame = ents.Create("tf_flame") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + flame:SetPos(self:ProjectileShootPos()) + flame:SetAngles(vec:Angle()) + if self:Critical() then + flame.critical = true + end + if self.Force then + flame.Force = self.Force + end + flame:SetOwner(self.Owner) + self:InitProjectileAttributes(flame) + + local d = self:GetItemData() + if d.item_iconname then + flame.NameOverride = d.item_iconname + end + + flame:Spawn() + + flame:SetVelocity(self.Owner:GetVelocity()) + end +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.NoAirblast then return false end + + if self:Ammo1()<20 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime() self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then + self:StopFiring() + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.SoundsCreated then + self.PilotSound:Play() + end + + ----MsgN(Format("Flamethrower Deploy %s",tostring(self))) + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.FireSound:Stop() + self.FireCritSound:Stop() + self.PilotSound:Stop() + end + + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_mvm/sv_airblast.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_mvm/sv_airblast.lua new file mode 100644 index 000000000..5fa4da209 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_mvm/sv_airblast.lua @@ -0,0 +1,300 @@ + +local function minicrit_true() return true end + +local AirblastFunc = { + ["grenade_spit"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_spit_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["grenade_ar2"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_ar2_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["crossbow_bolt"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "crossbow_bolt_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["npc_grenade_frag"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "npc_grenade_frag_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["prop_combine_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + + if phys:HasGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) then + -- The combine ball was fired by a NPC, and simply dissolves stuff without damaging them + -- Convert it into a player combine ball when it is airblasted + phys:ClearGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) + phys:AddGameFlag(FVPHYSICS_DMG_DISSOLVE) + phys:AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + end + return true + end, + ["tf_projectile_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["rpg_missile"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + local dmginfo = DamageInfo() + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "rpg_missile_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airblast"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldierbot_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_weapon_flamethrower" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldier_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airstrike"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + + ["tf_projectile_sentryrocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_cleaver"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_flare"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe_remote"] = function(self, ent, dir) + ent:Detach() + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_remote_deflect" + ent:SetOwner(self.Owner) + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_arrow"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_arrow_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end +} + +function SWEP:DoAirblast() + local r = self.AirblastRadius + local dir = self.Owner:GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + local pos = self.Owner:GetShootPos() + r * 1.5 * dir + local reflect + + for _,v in pairs(ents.FindInBox(pos-Vector(r,r,r),pos+Vector(r,r,r))) do + c = v:GetClass() + ----print(v) + if v:GetOwner()~=self.Owner then + if v:IsTFPlayer() or v:GetClass() == "tf_projectile_pipe" or v:GetClass() == "prop_physics" or v:GetClass() == "tf_projectile_ball" or v:GetClass() == "tf_projectile_cleaver" and self.Owner:IsValidEnemy(v) and v:ShouldReceiveDamageForce() then + if v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + if v:GetClass() == "tf_projectile_pipe" or v:GetClass() == "tf_projectile_ball" or v:GetClass() == "tf_projectile_cleaver" then + local phys = v:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + v:SetOwner(self.Owner) + v:SetPhysicsAttacker(self.Owner) + v.AttackerOverride = self.Owner + v.NameOverride = "env_explosion" + v.MiniCrit = minicrit_true + v:EmitSound(self.AirblastDeflectSound) + else + local phys = v:GetPhysicsObject() + if not phys:IsValid() then return false end + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),3000,100000) - vel) + v:SetPhysicsAttacker(self.Owner) + v.AttackerOverride = self.Owner + v.NameOverride = "prop_physics" + v.MiniCrit = minicrit_true + v:EmitSound(self.AirblastDeflectSound) + end + end + else + v:SetGroundEntity(NULL) + v:SetLocalVelocity(dir2 * 400) + v:SetThrownByExplosion(true) + + if v:IsPlayer() then + umsg.Start("TFAirblastImpact", v) + umsg.End() + end + end + elseif v.Reflect then + v:Reflect(self.Owner, self, dir) + reflect = true + elseif AirblastFunc[c] then + if AirblastFunc[c](self, v, dir, dir2) then + reflect = true + end + elseif v:IsTFPlayer() and self.Owner:IsFriendly(v) == true and v:Nick() != self.Owner:Nick() then + GAMEMODE:ExtinguishEntity(v) + v:EmitSound("player/flame_out.wav", 90) + end + end + end + + if reflect then + self:EmitSound(self.AirblastDeflectSound) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_rb/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_rb/shared.lua new file mode 100644 index 000000000..727b130fb --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_rb/shared.lua @@ -0,0 +1,115 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Rainblower" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self.Owner) then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==1 then + effect = "flamethrower_rainbow" + elseif i>1 then + if t==2 then + effect = "flamethrower_rainbow" + else + effect = "flamethrower_rainbow" + end + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + +usermessage.Hook("TFAirblastImpact", function(msg) + LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") +end) + +end + +PrecacheParticleSystem("flamethrower_rainbow") +PrecacheParticleSystem("new_flame_crit_red") +PrecacheParticleSystem("new_flame_crit_blue") +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_flamethrower" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rainblower/c_rainblower.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_Rainblower.FireStart") +SWEP.SpecialSound1 = Sound("Weapon_Rainblower.FireLoop") +SWEP.ShootCritSound = Sound("Weapon_Rainblower.FireLoop") +SWEP.ShootSoundEnd = Sound("Weapon_Rainblower.FireEnd") +SWEP.FireHit = Sound("Weapon_Rainblower.FireHit") +SWEP.PilotLoop = Sound("Weapon_Rainblower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.04 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.8 +SWEP.AirblastRadius = 80 + +SWEP.BulletSpread = 0.06 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_rb/sv_airblast.lua b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_rb/sv_airblast.lua new file mode 100644 index 000000000..5fa4da209 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flamethrower_rb/sv_airblast.lua @@ -0,0 +1,300 @@ + +local function minicrit_true() return true end + +local AirblastFunc = { + ["grenade_spit"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_spit_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["grenade_ar2"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "grenade_ar2_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["crossbow_bolt"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "crossbow_bolt_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["npc_grenade_frag"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "npc_grenade_frag_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["prop_combine_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + + if phys:HasGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) then + -- The combine ball was fired by a NPC, and simply dissolves stuff without damaging them + -- Convert it into a player combine ball when it is airblasted + phys:ClearGameFlag(FVPHYSICS_NO_NPC_IMPACT_DMG) + phys:AddGameFlag(FVPHYSICS_DMG_DISSOLVE) + phys:AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + end + return true + end, + ["tf_projectile_ball"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.MiniCrit = minicrit_true + ent.NameOverride = "prop_combine_ball_deflect" + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["rpg_missile"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + local dmginfo = DamageInfo() + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "rpg_missile_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airblast"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldierbot_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_fireball"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_weapon_flamethrower" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["soldier_rocket_launched"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_rocket_airstrike"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + + ["tf_projectile_sentryrocket"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_rocket_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_cleaver"] = function(self, ent, dir) + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + + ent:SetOwner(self.Owner) + ent:SetPhysicsAttacker(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_flare"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_pipe_remote"] = function(self, ent, dir) + ent:Detach() + local phys = ent:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_pipe_remote_deflect" + ent:SetOwner(self.Owner) + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end, + ["tf_projectile_arrow"] = function(self, ent, dir) + ent:SetLocalVelocity(dir * 2000) + ent:SetOwner(self.Owner) + ent.AttackerOverride = self.Owner + ent.NameOverride = "tf_projectile_arrow_deflect" + ent.MiniCrit = minicrit_true + ent:EmitSound(self.AirblastDeflectSound) + return true + end +} + +function SWEP:DoAirblast() + local r = self.AirblastRadius + local dir = self.Owner:GetAimVector() + local dir2 = dir:Angle() + dir2.p = math.Clamp(dir2.p - 45,-90,90) + dir2 = dir2:Forward() + + local pos = self.Owner:GetShootPos() + r * 1.5 * dir + local reflect + + for _,v in pairs(ents.FindInBox(pos-Vector(r,r,r),pos+Vector(r,r,r))) do + c = v:GetClass() + ----print(v) + if v:GetOwner()~=self.Owner then + if v:IsTFPlayer() or v:GetClass() == "tf_projectile_pipe" or v:GetClass() == "prop_physics" or v:GetClass() == "tf_projectile_ball" or v:GetClass() == "tf_projectile_cleaver" and self.Owner:IsValidEnemy(v) and v:ShouldReceiveDamageForce() then + if v:GetMoveType()==MOVETYPE_VPHYSICS then + for i=0,v:GetPhysicsObjectCount()-1 do + if v:GetClass() == "tf_projectile_pipe" or v:GetClass() == "tf_projectile_ball" or v:GetClass() == "tf_projectile_cleaver" then + local phys = v:GetPhysicsObject() + if not phys:IsValid() then return false end + + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),1000,100000) - vel) + v:SetOwner(self.Owner) + v:SetPhysicsAttacker(self.Owner) + v.AttackerOverride = self.Owner + v.NameOverride = "env_explosion" + v.MiniCrit = minicrit_true + v:EmitSound(self.AirblastDeflectSound) + else + local phys = v:GetPhysicsObject() + if not phys:IsValid() then return false end + local vel = phys:GetVelocity() + phys:AddVelocity(dir * math.Clamp(vel:Length(),3000,100000) - vel) + v:SetPhysicsAttacker(self.Owner) + v.AttackerOverride = self.Owner + v.NameOverride = "prop_physics" + v.MiniCrit = minicrit_true + v:EmitSound(self.AirblastDeflectSound) + end + end + else + v:SetGroundEntity(NULL) + v:SetLocalVelocity(dir2 * 400) + v:SetThrownByExplosion(true) + + if v:IsPlayer() then + umsg.Start("TFAirblastImpact", v) + umsg.End() + end + end + elseif v.Reflect then + v:Reflect(self.Owner, self, dir) + reflect = true + elseif AirblastFunc[c] then + if AirblastFunc[c](self, v, dir, dir2) then + reflect = true + end + elseif v:IsTFPlayer() and self.Owner:IsFriendly(v) == true and v:Nick() != self.Owner:Nick() then + GAMEMODE:ExtinguishEntity(v) + v:EmitSound("player/flame_out.wav", 90) + end + end + end + + if reflect then + self:EmitSound(self.AirblastDeflectSound) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flarecannon/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flarecannon/shared.lua new file mode 100644 index 000000000..e66497be2 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flarecannon/shared.lua @@ -0,0 +1,101 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "The Flare Gun" +SWEP.HasCModel = true +SWEP.Slot = 1 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + if IsValid(self.WModel2) then + --self.WModel2:SetBodygroup(1, 1) + end +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound(")weapons/flaregun_shoot.wav") +SWEP.ShootSoundLevel = 94 +SWEP.ShootCritSound = Sound("Weapon_FlareGun.SingleCrit") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 2.02 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "ITEM1" + +SWEP.ProjectileShootOffset = Vector(0, 8, -5) + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_ITEM1_VM_RELOAD + +function SWEP:PrimaryAttack() + if self.NextIdle then return end + + if not self:CanPrimaryAttack() then + return + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile() + + self.NextIdle = CurTime()+self:SequenceDuration() + + self:TakePrimaryAmmo(1) + + self:RollCritical() +end + +function SWEP:ShootProjectile() + if SERVER then + local syringe = ents.Create("tf_projectile_rocket_flare") + local ang = self.Owner:EyeAngles() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(ang) + syringe.Inflictor = self + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + syringe:Spawn() + end + + self:ShootEffects() +end + +function SWEP:Think() + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flaregun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flaregun/shared.lua new file mode 100644 index 000000000..81a8631e1 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flaregun/shared.lua @@ -0,0 +1,254 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.PrintName = "The Flare Gun" +SWEP.Category = "Team Fortress 2" +SWEP.Spawnable = true +if CLIENT then + +SWEP.HasCModel = true + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("weapons/flaregun_shoot.wav") +SWEP.ShootCritSound = Sound("TFWeapon_FlareGun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_FlareGun.WorldReload") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 2.02 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "ITEM1" +SWEP.HoldTypeHL2 = "revolver" +SWEP.BaseDamage = 25 +SWEP.ProjectileShootOffset = Vector(0, 8, -5) + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_ITEM1_VM_RELOAD + +function SWEP:PrimaryAttack() + if self.NextIdle then return end + if SERVER and self:Ammo1() != 0 then + timer.Simple(0.7, function() + --self.WModel2:SetBodygroup(1, 1) + end) + timer.Simple(1.1, function() + --self.WModel2:SetBodygroup(1, 0) + end) + end + if CLIENT and self:Ammo1() != 0 then + if self:GetClass() == "tf_weapon_flaregun" then + timer.Simple(0.7, function() + self.CModel:SetBodygroup(1, 1) + end) + timer.Simple(1.1, function() + self.CModel:SetBodygroup(1, 0) + end) + end + end + + if not self:CanPrimaryAttack() then + return + end + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile() + + + + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + if self.Primary.Delay == 0.5 then + self.Owner:GetViewModel():SetPlaybackRate(2.5) + end + + self:TakePrimaryAmmo(1) + + self:StopTimers() + + self.Owner:ViewPunch( self.PunchView ) + + self:RollCritical() +end + + +function SWEP:Inspect() + self:InspectAnimCheck() + + if (self:GetOwner():GetMoveType()==MOVETYPE_NOCLIP) and GetConVar("tf_haltinspect"):GetBool() and self.CanInspect == true then + //self.CanInspect = false + //self:StopTimers() + return false + --[[else + if self.Owner:OnGround() and self.IsDeployed and self.Reloading == false then + self.CanInspect = true + end]] + end + + //if self:GetSequenceActivity(self:GetSequence()) == self.VM_INSPECT_IDLE then + + if self.IsDeployed and self.CanInspect then + if self.Owner ~= nil then + if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + inspecting = true + self:SendWeaponAnim( self.VM_INSPECT_START ) + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_SPEED ) then + self:SendWeaponAnim( self.VM_INSPECT_IDLE ) + inspecting_idle = true + else + self:SendWeaponAnim( ACT_BUILDING_VM_INSPECT_END ) + inspecting_post = false + inspecting = false + timer.Create("PostInspection", self:SequenceDuration(), 1, function() + if !self:GetOwner():KeyDown( IN_SPEED ) then + self:SendWeaponAnim( self.VM_IDLE ) + end + end ) + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + self:SendWeaponAnim( ACT_BUILDING_VM_INSPECT_END ) + inspecting_post = false + inspecting_idle = false + inspecting = false + timer.Create("PostInspection", self:SequenceDuration(), 1, function() + if !self:GetOwner():KeyDown( IN_SPEED ) then + self:SendWeaponAnim( self.VM_IDLE ) + end + end ) + end + + if ( self:GetOwner():KeyPressed( IN_RELOAD ) and ((self.Base ~= "tf_weapon_melee_base") or self.Base == "tf_weapon_melee_base") and inspecting == false and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + inspecting = true + self:SendWeaponAnim( self.VM_INSPECT_START ) + timer.Create("StartInspection", self:SequenceDuration(), 1, function() + if self:GetOwner():KeyDown( IN_RELOAD ) then + self:SendWeaponAnim( self.VM_INSPECT_IDLE ) + inspecting_idle = true + else + self:SendWeaponAnim( ACT_BUILDING_VM_INSPECT_END ) + inspecting_post = false + inspecting = false + timer.Create("PostInspection", self:SequenceDuration(), 1, function() + if !self:GetOwner():KeyDown( IN_RELOAD ) then + self:SendWeaponAnim( self.VM_IDLE ) + end + end ) + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_RELOAD ) and inspecting_idle == true and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + self:SendWeaponAnim( ACT_BUILDING_VM_INSPECT_END) + inspecting_post = false + inspecting_idle = false + inspecting = false + timer.Create("PostInspection", self:SequenceDuration(), 1, function() + if !self:GetOwner():KeyDown( IN_RELOAD ) then + self:SendWeaponAnim( self.VM_IDLE ) + end + end ) + end + end + end +end + +function SWEP:SecondaryAttack() + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_detonator/c_detonator.mdl" then + for k,v in ipairs(ents.FindByClass("tf_projectile_flare")) do + if v:GetOwner() == self.Owner then + if SERVER then + self.Owner:EmitSoundEx("Weapon_FlareGun.ModeSwitch") + v:DoExplosion() + v:Fire("Kill", "", 0.01) + end + end + end + end +end + +function SWEP:ShootProjectile() + + if SERVER then + -- lol syringe + + local syringe = ents.Create("tf_projectile_flare") + local ang = self.Owner:EyeAngles() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(ang) + syringe.Inflictor = self + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + self:InitProjectileAttributes(syringe) + + syringe.NameOverride = self:GetItemData().item_iconname + syringe:Spawn() + end + + self:ShootEffects() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + self.IsDeployed = true + end + if (IsValid(self.Owner) and self.Owner:GetPlayerClass() == "giantflarepyro") then + if (!self.Primary.OldDelay) then + self.Primary.OldDelay = self.Primary.Delay + end + self.Primary.Delay = self.Primary.OldDelay * 0.3 + end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_scorch_shot/c_scorch_shot.mdl" then + for k,v in ipairs(ents.FindByClass("tf_projectile_flare")) do + if v:GetOwner() == self.Owner then + v.FlareType = "Scorch" + end + end + end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_scorch_shot/c_scorch_shot.mdl" then + self.ShootSound = Sound("Weapon_ScorchShot.Single") + self.ShootCritSound = Sound("Weapon_ScorchShot.SingleCrit") + end + self:Inspect() +end + +local WeaponBodygroups = { + shell = 1, +} + +function SWEP:FireAnimationEvent(pos, ang, event, options) + if event == 37 then + local bodygroup, set = string.match(options, "(.-)%s+(%d+)") + bodygroup = WeaponBodygroups[bodygroup or ""] + set = tonumber(set) + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_flaregun_revenge/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_flaregun_revenge/shared.lua new file mode 100644 index 000000000..0a67ff27a --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_flaregun_revenge/shared.lua @@ -0,0 +1,122 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Mannmelter" +SWEP.HasCModel = true +SWEP.Slot = 1 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_drg_manmelter/c_drg_manmelter.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("weapons/man_melter_fire.wav") +SWEP.ShootCritSound = Sound("weapons/man_melter_fire_crit.wav") +SWEP.ReloadSound = Sound("Weapon_FlareGun.WorldReload") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 4 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "ITEM1" + +SWEP.ProjectileShootOffset = Vector(0, 8, -5) + +SWEP.PunchView = Angle( -2, 0, 0 ) + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_SECONDARY2_VM_DRAW + self.VM_IDLE = ACT_SECONDARY2_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY2_VM_PRIMARYATTACK + self.VM_RELOAD = ACT_SECONDARY2_VM_RELOAD +end + +function SWEP:PrimaryAttack() + if self.NextIdle then return end + + if not self:CanPrimaryAttack() then + return + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile() + + self.NextIdle = CurTime()+self.Primary.Delay + + self:TakePrimaryAmmo(1) + + self:StopTimers() + + self.Owner:ViewPunch( self.PunchView ) + + self:RollCritical() +end + +function SWEP:ShootProjectile() + if SERVER then + -- lol syringe + + local syringe = ents.Create("tf_projectile_flare") + local ang = self.Owner:EyeAngles() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(ang) + syringe.Inflictor = self + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + self:InitProjectileAttributes(syringe) + + syringe.MannMelter = true + + syringe.NameOverride = self:GetItemData().item_iconname + syringe:Spawn() + end + + self:ShootEffects() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + self.IsDeployed = true + end + + self:Inspect() +end + +local WeaponBodygroups = { + shell = 1, +} + +function SWEP:FireAnimationEvent(pos, ang, event, options) + if event == 37 then + local bodygroup, set = string.match(options, "(.-)%s+(%d+)") + bodygroup = WeaponBodygroups[bodygroup or ""] + set = tonumber(set) + + if bodygroup and set and IsValid(self.CModel) then + self.CModel:SetBodygroup(bodygroup, set) + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_fryingpan/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_fryingpan/shared.lua new file mode 100644 index 000000000..b00ba180e --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_fryingpan/shared.lua @@ -0,0 +1,104 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Frying Pan" + SWEP.Slot = 2 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Swing = Sound("Weapon_Shovel.Miss") +SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") +SWEP.HitFlesh = Sound("FryingPan.HitFlesh") +SWEP.HitWorld = Sound("FryingPan.HitWorld") + +local SpeedTable = { +{40, 1.6}, +{80, 1.4}, +{120, 1.2}, +{160, 1.1}, +} + +SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") +SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") + +SWEP.MinDamage = 0.5 +SWEP.MaxDamage = 1.75 + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.NoCModelOnStockWeapon = false + +SWEP.HoldType = "MELEE_ALLCLASS" + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = ACT_MELEE_ALLCLASS_VM_DRAW +self.VM_IDLE = ACT_MELEE_ALLCLASS_VM_IDLE +self.VM_HITCENTER = ACT_MELEE_ALLCLASS_VM_HITCENTER +self.VM_SWINGHARD = ACT_MELEE_ALLCLASS_VM_HITCENTER +self.VM_INSPECT_START = ACT_MELEE_ALLCLASS_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_MELEE_ALLCLASS_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_MELEE_ALLCLASS_VM_INSPECT_END +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.Owner:GetPlayerClass() == "scout" then + self.Primary.Delay = 0.5 + else + self.Primary.Delay = 0.80 + end + + if self.Owner:GetPlayerClass() == "engineer" then + self.NoHitSound = false + self.UpgradeSpeed = 25 + self.GlobalCustomHUD = {HudAccountPanel = true} + end +end + +function SWEP:OnMeleeHit(tr) + if self.Owner:GetPlayerClass() == "engineer" then + if tr.Entity and tr.Entity:IsValid() then + if tr.Entity:IsBuilding() then + local ent = tr.Entity + + if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then + if SERVER then + local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) + if m > 0 then + self:EmitSound(self.HitBuildingSuccess) + self.Owner:RemoveAmmo(m, TF_METAL) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-m) + umsg.End() + elseif ent:GetState() == 1 then + self:EmitSound(self.HitBuildingSuccess) + else + self:EmitSound(self.HitBuildingFailure) + end + end + else + //self:EmitSound(self.HitWorld) + end + elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then + //self:EmitSound(self.HitFlesh) + else + //self:EmitSound(self.HitWorld) + end + elseif tr.HitWorld then + //self:EmitSound(self.HitWorld) + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_gatlinggun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_gatlinggun/shared.lua new file mode 100644 index 000000000..c03e58e7d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_gatlinggun/shared.lua @@ -0,0 +1,509 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Gatling Gun" +SWEP.Slot = 4 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 0 +SWEP.barrelValue1 = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self:GetOwner()==LocalPlayer() and IsValid(self:GetOwner():GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") +end + +function SWEP:MinigunViewmodelReset() + if self:GetOwner()==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_minigun_dm.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_minigun_dm.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun_constant" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun_constant") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") + +SWEP.BaseDamage = 4 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 4 +SWEP.BulletSpread = 0.08 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ReloadSound = Sound("Weapon_Minigun.Reload") +SWEP.EmptySound = Sound("Weapon_Minigun.ClipEmpty") +SWEP.ShootSound2 = Sound("weapons/chaingun_fire.wav") +SWEP.SpecialSound1 = Sound("weapons/chaingun_windup.wav") +SWEP.SpecialSound2 = Sound("weapons/chaingun_winddown.wav") +SWEP.SpecialSound3 = Sound("Weapon_Minigun.Spin") +SWEP.ShootCritSound = Sound("weapons/chaingun_fire_crit.wav") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self:GetOwner(), self.SpecialSound1) + self.SpinDownSound = CreateSound(self:GetOwner(), self.SpecialSound2) + self.SpinSound = CreateSound(self:GetOwner(), self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self:GetOwner(), self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self:GetOwner(), self.ShootCritSound) + + self.SoundsCreated = true +end + +function SWEP:SpinUp() + if SERVER then + self:GetOwner().minigunfiretime = 0 + self:GetOwner():Speak("TLK_WINDMINIGUN", true) + end + + --self:GetOwner():SetAnimation(10004) + + if self:GetOwner():GetPlayerClass() != "merc_dm" then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) + end + + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_PREFIRE) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 0.5 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.5 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.SpinUpSound:Play() +end + +function SWEP:SpinDown() + --self:GetOwner():SetAnimation(10005) + if self:GetOwner():GetPlayerClass() != "merc_dm" then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + self:SendWeaponAnim(ACT_MP_ATTACK_STAND_POSTFIRE) + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + + --self:GetOwner():DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self.SpinUpSound:Stop() + self.SpinSound:Stop() + self.SpinDownSound:Play() +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self:GetOwner().minigunfiretime = 0 + self.StartTime = nil + self:GetOwner():SetAnimation(PLAYER_IDLE) + end + + self.SpinSound:Play() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self:GetOwner():GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self:GetOwner():IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self:GetOwner():SelectWeapon(self:GetOwner():GetWeapons()[3]) + return + end + + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self:GetOwner():Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Play() + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.SpinSound:Stop() + self.ShootCritSoundLoop:Stop() + self.ShootSoundLoop:Play() + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK) + self:GetOwner():SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 0 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if self:GetOwner():GetPlayerClass() == "merc_dm" then + self.Primary.Ammo = TF_SECONDARY + self:SetHoldType("ITEM2") + else + self.Primary.Ammo = TF_PRIMARY + end + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self.SpinUpSound:Stop() + self.SpinSound:Play() + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + ----self:GetOwner():DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self:GetOwner():KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self:GetOwner():KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self:GetOwner():KeyDown(IN_ATTACK) and not self:GetOwner():KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if CLIENT then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 2 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and self:GetOwner():GetViewModel():LookupBone("v_minigun_barrel") then + self:StopSound(self.SpecialSound2) + end + else + self:GetOwner():GetViewModel():ManipulateBoneAngles( self:GetOwner():GetViewModel():LookupBone("v_minigun_barrel"), Angle(0,0,0) ) + end + end + + if ( CLIENT ) then + if self:GetOwner():GetViewModel():LookupBone("v_minigun_barrel") then + self:GetOwner():GetViewModel():ManipulateBoneAngles( self:GetOwner():GetViewModel():LookupBone("v_minigun_barrel"), Angle(0,0,0) ) + self:GetOwner():GetViewModel():ManipulateBoneAngles( self:GetOwner():GetViewModel():LookupBone("v_minigun_barrel"), Angle(0,0,0) ) + else + return + end + else + //:ManipulateBoneAngles( self:GetOwner():GetViewModel():LookupBone("v_minigun_barrel"), Angle(0,0,0) ) + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self:GetOwner()) and self:GetNetworkedBool("Spinning") then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self:GetOwner()) then + --self:GetOwner():DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:GetOwner():ResetClassSpeed() + end + + if CLIENT then + if self:GetOwner()==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self:GetOwner() and IsValid(self:GetOwner():GetViewModel()) then + self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_gmod_tool/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_gmod_tool/shared.lua new file mode 100644 index 000000000..868756171 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_gmod_tool/shared.lua @@ -0,0 +1,688 @@ +SWEP.Base = "gmod_tool" + +SWEP.ViewModel = "models/weapons/v_models/v_revolver_spy.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_revolver/c_revolver.mdl" +SWEP.ShootSound = Sound("Weapon_Revolver.Single") +SWEP.Primary.Automatic = true + +--================================================================== +-- FIRSTPERSON ANIMATIONS +--================================================================== + +SWEP.VM_DRAW = ACT_VM_DRAW +SWEP.VM_IDLE = ACT_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK +SWEP.VM_SECONDARYATTACK = ACT_VM_SECONDARYATTACK +SWEP.VM_RELOAD = ACT_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_RELOAD_FINISH +SWEP.HoldType = "SECONDARY" + +local ActivityNameTranslate = { + ACT_VM_DRAW = "VM_DRAW", + ACT_VM_IDLE = "VM_IDLE", + ACT_VM_PRIMARYATTACK = "VM_PRIMARYATTACK", + ACT_VM_SECONDARYATTACK = "VM_SECONDARYATTACK", + ACT_VM_RELOAD = "VM_RELOAD", + ACT_RELOAD_START = "VM_RELOAD_START", + ACT_RELOAD_FINISH = "VM_RELOAD_FINISH", + ACT_VM_HITLEFT = "VM_HITLEFT", + ACT_VM_HITRIGHT = "VM_HITRIGHT", + ACT_VM_HITCENTER = "VM_HITCENTER", + ACT_VM_SWINGHARD = "VM_SWINGHARD", +} + +local ActIndex = { + [ "pistol" ] = ACT_HL2MP_IDLE_PISTOL, + [ "smg" ] = ACT_HL2MP_IDLE_SMG1, + [ "grenade" ] = ACT_HL2MP_IDLE_GRENADE, + [ "ar2" ] = ACT_HL2MP_IDLE_AR2, + [ "shotgun" ] = ACT_HL2MP_IDLE_SHOTGUN, + [ "rpg" ] = ACT_HL2MP_IDLE_RPG, + [ "physgun" ] = ACT_HL2MP_IDLE_PHYSGUN, + [ "crossbow" ] = ACT_HL2MP_IDLE_CROSSBOW, + [ "melee" ] = ACT_HL2MP_IDLE_MELEE, + [ "slam" ] = ACT_HL2MP_IDLE_SLAM, + [ "normal" ] = ACT_HL2MP_IDLE, + [ "fist" ] = ACT_HL2MP_IDLE_FIST, + [ "melee2" ] = ACT_HL2MP_IDLE_MELEE2, + [ "passive" ] = ACT_HL2MP_IDLE_PASSIVE, + [ "knife" ] = ACT_HL2MP_IDLE_KNIFE, + [ "duel" ] = ACT_HL2MP_IDLE_DUEL, + [ "camera" ] = ACT_HL2MP_IDLE_CAMERA, + [ "magic" ] = ACT_HL2MP_IDLE_MAGIC, + [ "revolver" ] = ACT_HL2MP_IDLE_REVOLVER +} + +function SWEP:SetupCModelActivities(item, noreplace) + tf_util.ReadActivitiesFromModel(self) + + if item then + local hold = self.HoldType + ----MsgN(Format("SetupCModelActivities %s", tostring(self))) + if (hold == "PRIMARY2") then + self.VM_DRAW = _G["ACT_PRIMARY_VM_DRAW"] + self.VM_IDLE = _G["ACT_PRIMARY_VM_IDLE"] + self.VM_PRIMARYATTACK = _G["ACT_PRIMARY_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = _G["ACT_PRIMARY_VM_SECONDARYATTACK"] + self.VM_RELOAD = _G["ACT_PRIMARY_VM_RELOAD"] + self.VM_RELOAD_START = _G["ACT_PRIMARY_RELOAD_START"] + self.VM_RELOAD_FINISH = _G["ACT_PRIMARY_RELOAD_FINISH"] + + -- Special activities + self.VM_CHARGE = _G["ACT_PRIMARY_VM_CHARGE"] + self.VM_DRYFIRE = _G["ACT_PRIMARY_VM_DRYFIRE"] + self.VM_IDLE_2 = _G["ACT_PRIMARY_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = _G["ACT_PRIMARY_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = _G["ACT_PRIMARY_VM_IDLE_3"] + self.VM_PULLBACK = _G["ACT_PRIMARY_VM_PULLBACK"] + self.VM_PREFIRE = _G["ACT_PRIMARY_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = _G["ACT_PRIMARY_ATTACK_STAND_POSTFIRE"] + + self.VM_INSPECT_START = _G["ACT_PRIMARY_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = _G["ACT_PRIMARY_VM_INSPECT_IDLE"] + self.VM_INSPECT_GND = _G["ACT_PRIMARY_VM_INSPECT_GND"] + else + self.VM_DRAW = _G["ACT_"..hold.."_VM_DRAW"] + self.VM_IDLE = _G["ACT_"..hold.."_VM_IDLE"] + self.VM_PRIMARYATTACK = _G["ACT_"..hold.."_VM_PRIMARYATTACK"] + self.VM_SECONDARYATTACK = _G["ACT_"..hold.."_VM_SECONDARYATTACK"] + self.VM_RELOAD = _G["ACT_"..hold.."_VM_RELOAD"] + self.VM_RELOAD_START = _G["ACT_"..hold.."_RELOAD_START"] + self.VM_RELOAD_FINISH = _G["ACT_"..hold.."_RELOAD_FINISH"] + + -- Special activities + self.VM_CHARGE = _G["ACT_"..hold.."_VM_CHARGE"] + self.VM_DRYFIRE = _G["ACT_"..hold.."_VM_DRYFIRE"] + self.VM_IDLE_2 = _G["ACT_"..hold.."_VM_IDLE_2"] + self.VM_CHARGE_IDLE_3 = _G["ACT_"..hold.."_VM_CHARGE_IDLE_3"] + self.VM_IDLE_3 = _G["ACT_"..hold.."_VM_IDLE_3"] + self.VM_PULLBACK = _G["ACT_"..hold.."_VM_PULLBACK"] + self.VM_PREFIRE = _G["ACT_"..hold.."_ATTACK_STAND_PREFIRE"] + self.VM_POSTFIRE = _G["ACT_"..hold.."_ATTACK_STAND_POSTFIRE"] + + self.VM_INSPECT_START = _G["ACT_"..hold.."_VM_INSPECT_START"] + self.VM_INSPECT_IDLE = _G["ACT_"..hold.."_VM_INSPECT_IDLE"] + self.VM_INSPECT_GND = _G["ACT_"..hold.."_VM_INSPECT_GND"] + end + + self.VM_HITLEFT = ACT_VM_HITLEFT + self.VM_HITRIGHT = ACT_VM_HITRIGHT + + -- those melee activities are just so weird, sometimes it's ACT_VM_HITCENTER, sometimes it's ACT_MELEE_VM_HITCENTER + if self:SelectWeightedSequence(ACT_VM_HITCENTER) < 0 then + self.VM_HITCENTER = _G["ACT_"..hold.."_VM_HITCENTER"] or ACT_VM_HITCENTER + self.VM_SWINGHARD = _G["ACT_"..hold.."_VM_SWINGHARD"] or ACT_VM_SWINGHARD + else + self.VM_HITCENTER = ACT_VM_HITCENTER + self.VM_SWINGHARD = ACT_VM_SWINGHARD + end + else + self.VM_DRAW = ACT_VM_DRAW + self.VM_IDLE = ACT_VM_IDLE + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SECONDARYATTACK = ACT_VM_SECONDARYATTACK + self.VM_RELOAD = ACT_VM_RELOAD + self.VM_RELOAD_START = ACT_RELOAD_START + self.VM_RELOAD_FINISH = ACT_RELOAD_FINISH + + self.VM_CHARGE = ACT_INVALID + self.VM_DRYFIRE = ACT_INVALID + self.VM_IDLE_2 = ACT_INVALID + self.VM_CHARGE_IDLE_3 = ACT_INVALID + self.VM_IDLE_3 = ACT_INVALID + self.VM_PULLBACK = ACT_VM_PULLBACK + self.VM_PREFIRE = ACT_MP_ATTACK_STAND_PREFIRE + self.VM_POSTFIRE = ACT_MP_ATTACK_STAND_POSTFIRE + + self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE + self.VM_INSPECT_GND = ACT_PRIMARY_VM_INSPECT_GND + + self.VM_HITLEFT = ACT_VM_HITLEFT + self.VM_HITRIGHT = ACT_VM_HITRIGHT + self.VM_HITCENTER = ACT_VM_HITCENTER + self.VM_SWINGHARD = ACT_VM_SWINGHARD + end + + if self.UsesSpecialAnimations then + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + --self.VM_HITLEFT = ACT_VM_HITLEFT_SPECIAL + --self.VM_HITRIGHT = ACT_VM_HITRIGHT_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL + end + + if not noreplace then + local visuals = self:GetVisuals() + if visuals and visuals.animations then + for act,rep in pairs(visuals.animations) do + if ActivityNameTranslate[act] then + self[ActivityNameTranslate[act]] = _G[rep] + end + end + end + end +end + +function SWEP:SendWeaponAnimEx(anim) + local t = type(anim) + + if t=="string" then + if string.find(anim,",") then + anim = string.Explode(",", anim) + t = "table" + end + end + + if t=="table" then + anim = table.Random(anim) + t = type(anim) + end + + if t=="number" then + self:SendWeaponAnim(anim) + elseif t=="string" then + --print(anim) + local s = self.Owner:GetViewModel():LookupSequence(anim) + self:SetSequence(s) + self.Owner:GetViewModel():ResetSequence(s) + end +end + +--================================================================== +-- THIRDPERSON ANIMATIONS +--================================================================== + +function SWEP:SetWeaponHoldType(t) + for k, v in pairs(player.GetAll()) do + if v == self.Owner then + if v:IsHL2() then + t = string.lower( t ) + local index = ActIndex[ t ] + + if ( index == nil ) then + Msg( "SWEP:SetWeaponHoldType - ActIndex[ \"" .. t .. "\" ] isn't set! (defaulting to normal)\n" ) + t = "normal" + index = ActIndex[ t ] + end + + self.ActivityTranslate = {} + self.ActivityTranslate[ ACT_MP_STAND_IDLE ] = index + self.ActivityTranslate[ ACT_MP_WALK ] = index + 1 + self.ActivityTranslate[ ACT_MP_RUN ] = index + 2 + self.ActivityTranslate[ ACT_MP_CROUCH_IDLE ] = index + 3 + self.ActivityTranslate[ ACT_MP_CROUCHWALK ] = index + 4 + self.ActivityTranslate[ ACT_MP_ATTACK_STAND_PRIMARYFIRE ] = index + 5 + self.ActivityTranslate[ ACT_MP_ATTACK_CROUCH_PRIMARYFIRE ] = index + 5 + self.ActivityTranslate[ ACT_MP_RELOAD_STAND ] = index + 6 + self.ActivityTranslate[ ACT_MP_RELOAD_CROUCH ] = index + 6 + self.ActivityTranslate[ ACT_MP_JUMP ] = index + 7 + self.ActivityTranslate[ ACT_RANGE_ATTACK1 ] = index + 8 + self.ActivityTranslate[ ACT_MP_SWIM ] = index + 9 + + -- "normal" jump animation doesn't exist + if ( t == "normal" ) then + self.ActivityTranslate[ ACT_MP_JUMP ] = ACT_HL2MP_JUMP_SLAM + end + + else + if IsValid(v) then + tf_util.ReadActivitiesFromModel(self.Owner) + end + + self.ActivityTranslate = {} + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_MP_STAND_"..t] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_MP_RUN_"..t] + if v:GetInfoNum("tf_robot",0) == 1 then + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_MP_STAND_"..t] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_MP_RUN_"..t] + self.ActivityTranslate[ACT_MP_SWIM] = _G["ACT_MP_RUN_"..t] + else + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_MP_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_MP_CROUCHWALK_"..t] + self.ActivityTranslate[ACT_MP_SWIM] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_AIRWALK] = _G["ACT_MP_AIRWALK_"..t] + end + if v:GetPlayerClass() == "combinesoldier" and v:GetActiveWeapon():GetClass() != "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "zombie" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "headcrab" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_HL2MP_WALK_ZOMBIE_0"..math.random(1,6)] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_HL2MP_IDLE_CROUCH_ZOMBIE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_HL2MP_WALK_CROUCH_ZOMBIE_0"..math.random(1,5)] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "fastzombie" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_INVALID"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_HL2MP_RUN_ZOMBIE_FAST"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_HL2MP_RUN_ZOMBIE_FAST"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_HL2MP_IDLE_CROUCH_ZOMBIE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_HL2MP_WALK_CROUCH_ZOMBIE_0"..math.random(1,5)] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "poisonzombie" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_RUN"] + end + if v:GetPlayerClass() == "zombine" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" and self:GetHoldType() == "MELEE" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "zombine" and v:GetActiveWeapon():GetClass() == "tf_weapon_fists" and self:GetHoldType() == "GRENADE" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_ZOMBINE_GRENADE_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "combinesoldier" and v:GetActiveWeapon():GetClass() == "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "combinesoldier" and v:GetActiveWeapon():GetClass() == "tf_weapon_tranqulizer" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY_SHOTGUN"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_AIM_SHOTGUN"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_AIM_SHOTGUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE_SHOTGUN"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_SHOTGUN"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SHOTGUN"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SHOTGUN"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "rebel" and v:GetActiveWeapon():GetClass() != "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_ANGRY_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "boomer" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "boomette" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "smoker" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if !v:IsHL2() and !v:IsL4D() and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_MP_SWIM_"..t] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_MP_SWIM_"..t] + end + if v:GetPlayerClass() == "hunter" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "jockey" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "witch" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "charger" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MP_ATTACK_STAND_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MP_ATTACK_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARYFIRE] = _G["ACT_MP_ATTACK_SWIM_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_TERROR_ATTACK1"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_TERROR_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "l4d_zombie" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK2"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK2"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "boomer" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "boomette" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "tank_l4d" and self.Owner:GetMoveType() != MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_RUN_CROUCH"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "tank_l4d" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + if v:GetPlayerClass() == "l4d_zombie" and self.Owner:GetMoveType() == MOVETYPE_LADDER then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_CLIMB_UP"] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_CLIMB_UP"] + end + + if v:GetPlayerClass() == "metrocop" and v:GetActiveWeapon():GetClass() == "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_AIM_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "metrocop" and v:GetActiveWeapon():GetClass() == "tf_weapon_pistol_m9" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY_PISTOL"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_AIM_PISTOL"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_PISTOL"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "metrocop" and v:GetActiveWeapon():GetClass() == "tf_weapon_wrench_vagineer" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MELEE_ATTACK1"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + if v:GetPlayerClass() == "rebel" and v:GetActiveWeapon():GetClass() == "tf_weapon_trenchknife" then + self.ActivityTranslate[ACT_MP_STAND_IDLE] = _G["ACT_IDLE_ANGRY_SMG1"] + self.ActivityTranslate[ACT_MP_RUN] = _G["ACT_RUN_RIFLE"] + self.ActivityTranslate[ACT_MP_WALK] = _G["ACT_WALK_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCH_IDLE] = _G["ACT_CROUCHIDLE_RIFLE"] + self.ActivityTranslate[ACT_MP_CROUCHWALK] = _G["ACT_WALK_CROUCH_RIFLE"] + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_RANGE_ATTACK_SMG1_LOW"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_JUMP"] + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_RELOAD"] + self.ActivityTranslate[ACT_MP_JUMP] = _G["ACT_JUMP"] + end + + + if t == "PRIMARY" then + self.ActivityTranslate[ACT_MP_DEPLOYED_IDLE] = ACT_MP_DEPLOYED_IDLE + self.ActivityTranslate[ACT_MP_DEPLOYED] = ACT_MP_DEPLOYED_PRIMARY + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED_IDLE] = ACT_MP_CROUCH_DEPLOYED_IDLE + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED] = ACT_MP_CROUCHWALK_DEPLOYED + self.ActivityTranslate[ACT_MP_SWIM_DEPLOYED] = ACT_MP_SWIM_DEPLOYED_PRIMARY + else + self.ActivityTranslate[ACT_MP_DEPLOYED_IDLE] = _G["ACT_MP_DEPLOYED_IDLE_"..t] + self.ActivityTranslate[ACT_MP_DEPLOYED] = _G["ACT_MP_DEPLOYED_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED_IDLE] = _G["ACT_MP_CROUCH_DEPLOYED_IDLE_"..t] + self.ActivityTranslate[ACT_MP_CROUCH_DEPLOYED] = _G["ACT_MP_CROUCHWALK_DEPLOYED_"..t] + self.ActivityTranslate[ACT_MP_SWIM_DEPLOYED] = _G["ACT_MP_SWIM_DEPLOYED_"..t] + end + + if t == "ITEM4" then + self.ActivityTranslate[ ACT_MP_STAND_IDLE ] = _G["ACT_MP_STAND_ITEM4"] + self.ActivityTranslate[ ACT_MP_RUN ] = _G["ACT_MP_RUN_ITEM4"] + self.ActivityTranslate[ ACT_MP_CROUCH_IDLE ] = _G["ACT_MP_CROUCH_ITEM4"] + self.ActivityTranslate[ ACT_MP_CROUCHWALK ] = _G["ACT_MP_CROUCHWALK_ITEM4"] + self.ActivityTranslate[ ACT_MP_JUMP ] = _G["ACT_MP_JUMP_START_ITEM4"] + self.ActivityTranslate[ ACT_MP_SWIM ] = _G["ACT_MP_SWIM_ITEM4"] + end + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARYFIRE] = _G["ACT_MP_ATTACK_STAND_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARYFIRE] = _G["ACT_MP_ATTACK_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARYFIRE] = _G["ACT_MP_ATTACK_SWIM_"..t] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_SECONDARYFIRE] = _G["ACT_MP_ATTACK_STAND_"..t.."_SECONDARY"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_SECONDARYFIRE] = _G["ACT_MP_ATTACK_CROUCH_"..t.."_SECONDARY"] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_SECONDARYFIRE] = _G["ACT_MP_ATTACK_SWIM_"..t.."_SECONDARY"] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED] = _G["ACT_MP_ATTACK_STAND_"..t.."_DEPLOYED"] + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED] = _G["ACT_MP_ATTACK_CROUCH_"..t.."_DEPLOYED"] + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PRIMARY_DEPLOYED or 0]= _G["ACT_MP_ATTACK_SWIM_"..t.."_DEPLOYED"] + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_PREFIRE] = ACT_MP_ATTACK_STAND_PREFIRE + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_PREFIRE] = ACT_MP_ATTACK_CROUCH_PREFIRE + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_PREFIRE] = ACT_MP_ATTACK_SWIM_PREFIRE + + self.ActivityTranslate[ACT_MP_ATTACK_STAND_POSTFIRE] = ACT_MP_ATTACK_STAND_POSTFIRE + self.ActivityTranslate[ACT_MP_ATTACK_CROUCH_POSTFIRE] = ACT_MP_ATTACK_CROUCH_POSTFIRE + self.ActivityTranslate[ACT_MP_ATTACK_SWIM_POSTFIRE] = ACT_MP_ATTACK_SWIM_POSTFIRE + + self.ActivityTranslate[ACT_MP_RELOAD_STAND] = _G["ACT_MP_RELOAD_STAND_"..t] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH] = _G["ACT_MP_RELOAD_CROUCH_"..t] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM] = _G["ACT_MP_RELOAD_SWIM_"..t] + + self.ActivityTranslate[ACT_MP_RELOAD_STAND_LOOP] = _G["ACT_MP_RELOAD_STAND_"..t.."_LOOP"] + self.ActivityTranslate[ACT_MP_RELOAD_CROUCH_LOOP] = _G["ACT_MP_RELOAD_CROUCH_"..t.."_LOOP"] + self.ActivityTranslate[ACT_MP_RELOAD_SWIM_LOOP] = _G["ACT_MP_RELOAD_SWIM_"..t.."_LOOP"] + + self.ActivityTranslate[ACT_MP_JUMP_START] = _G["ACT_MP_JUMP_START_"..t] + self.ActivityTranslate[ACT_MP_JUMP_FLOAT] = _G["ACT_MP_JUMP_FLOAT_"..t] + self.ActivityTranslate[ACT_MP_JUMP_LAND] = _G["ACT_MP_JUMP_LAND_"..t] + end + end + end +end + +function SWEP:TranslateActivity(act) + return self.ActivityTranslate[act] or -1 +end + +-- Trace a line then send the result to a mode function +function SWEP:PrimaryAttack() + + local mode = self:GetMode() + local tr = util.GetPlayerTrace( self.Owner ) + tr.mask = bit.bor( CONTENTS_SOLID, CONTENTS_MOVEABLE, CONTENTS_MONSTER, CONTENTS_WINDOW, CONTENTS_DEBRIS, CONTENTS_GRATE, CONTENTS_AUX ) + local trace = util.TraceLine( tr ) + if ( !trace.Hit ) then return end + + local tool = self:GetToolObject() + if ( !tool ) then return end + + tool:CheckObjects() + + -- Does the server setting say it's ok? + if ( !tool:Allowed() ) then return end + + -- Ask the gamemode if it's ok to do this + if ( !gamemode.Call( "CanTool", self.Owner, trace, mode ) ) then return end + + if ( !tool:LeftClick( trace ) ) then return end + + self:DoShootEffect( trace.HitPos, trace.HitNormal, trace.Entity, trace.PhysicsBone, IsFirstTimePredicted() ) + self:SetNextPrimaryFire(CurTime() + 0.5) + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_grapplinghook/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_grapplinghook/shared.lua new file mode 100644 index 000000000..63e184c33 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_grapplinghook/shared.lua @@ -0,0 +1,414 @@ +-- todo: rewrite this +-- this was shamelessly used from another addon with formerly no credit what so ever, i plan to rewrite this using leaked tf2 code and no longer base it off of kurome's weapon + + + +-- credit to https://steamcommunity.com/sharedfiles/filedetails/?id=1696595790 + +if CLIENT then + SWEP.PrintName = "Grappling Hook" +end + +SWEP.Slot = 6 +SWEP.Base = "tf_weapon_melee_base" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Category = "Team Fortress 2" +SWEP.PrintName = "Grappling Hook" +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_grappling_hook/c_grappling_hook.mdl" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.AdminOnly = true +SWEP.jumped = false + +SWEP.HoldType = "MELEE_ALLCLASS" +SWEP.HoldTypeHL2 = "slam" +local sndGrappleHitPlayer = Sound("weapons/grappling_hook_impact_flesh.wav") +local sndGrappleHit = Sound("weapons/grappling_hook_impact_default.wav") +local sndGrappleShoot = Sound("weapons/grappling_hook_shoot.wav") +local sndGrappleReel = Sound("weapons/grappling_hook_reel_start.wav") +local sndGrappleAbort = Sound("weapons/grappling_hook_reel_stop.wav") + + +local VM_FIRESTART = ACT_GRAPPLE_FIRE_START +local VM_FIREIDLE = ACT_GRAPPLE_FIRE_IDLE +local VM_PULLSTART = ACT_GRAPPLE_PULL_START +local VM_PULLIDLE = ACT_GRAPPLE_PULL_IDLE +local VM_PULLEND = ACT_GRAPPLE_PULL_END + +function SWEP:Think() + + if (!self.Owner || self.Owner == NULL) then return end + + + if (self.Owner:IsHL2()) then + self.Slot = 5 + end + nextshottime = CurTime() + self.zoomed = false + + if ( self.Owner:KeyPressed( IN_ATTACK ) and CurTime() > self:GetNextPrimaryFire() or (self.jumped and CurTime() > self:GetNextPrimaryFire() and self.Owner:KeyDown( IN_ATTACK ) && inRange && self.grappleData < 0) ) then + self:StartAttack() + + elseif ( self.Owner:KeyDown( IN_ATTACK ) and CurTime() > self:GetNextPrimaryFire() && inRange && !self.jumped) then + if (self.jumped) then + self:StartAttack() + else + self:UpdateAttack() + end + + elseif ( (self.Owner:KeyReleased( IN_ATTACK ) && inRange && !self.jumped) ) then + + self:EndAttack( true ) + + end + + self.VM_DRAW = ACT_GRAPPLE_DRAW + + self.VM_IDLE = ACT_GRAPPLE_IDLE + if self.Owner:GetPlayerClass() == "engineer" then + self.HoldType = "SECONDARY" + elseif (!self.Owner:IsHL2() and self.Owner:GetPlayerClass() != "engineer") then + self.HoldType = "MELEE_ALLCLASS" + else + self.HoldTypeHL2 = "slam" + end + +end + +function SWEP:DoTrace( endpos ) + local trace = {} + trace.start = self.Owner:GetShootPos() + trace.endpos = trace.start + (self.Owner:GetAimVector() * 32768) --14096 is length modifier. + if(endpos) then trace.endpos = (endpos - self.Tr.HitNormal * 7) end + trace.filter = { self.Owner, self.Weapon } + + self.Tr = nil + self.Tr = util.TraceLine( trace ) +end +function SWEP:CalcViewModelView(vm, oldpos, oldang, newpos, newang) + if not self.VMMinOffset and self:GetItemData() then + local data = self:GetItemData() + if data.static_attrs and data.static_attrs.min_viewmodel_offset then + self.VMMinOffset = Vector(data.static_attrs.min_viewmodel_offset) + end + end + + if GetConVar("tf_use_min_viewmodels"):GetBool() then -- TODO: Check for inspecting + newpos = newpos + (newang:Forward() * 10) + newpos = newpos + (newang:Right() * 0) + newpos = newpos + (newang:Up() * -6) + end + + return newpos, newang +end + +function SWEP:Initialize() + + timer.Simple(0.2, function() + + if (self.Slot > 5 and IsValid(self.Owner) and self.Owner:IsHL2()) then + self.Slot = 5 + end + + end) + + self:CallBaseFunction("Initialize") +end + +function SWEP:StartAttack() + -- Get begining and end poins of trace. + if (self:GetNextPrimaryFire() > CurTime()) then return end + local gunPos = self.Owner:GetShootPos() -- Start of distance trace. + local disTrace = self.Owner:GetEyeTrace() -- Store all results of a trace in disTrace. + local hitPos = disTrace.HitPos -- Stores Hit Position of disTrace. + + -- Calculate Distance + -- Thanks to rgovostes for this code. + local x = (gunPos.x - hitPos.x)^2; + local y = (gunPos.y - hitPos.y)^2; + local z = (gunPos.z - hitPos.z)^2; + local distance = math.sqrt(x + y + z); + + -- Only latches if distance is less than distance CVAR, or CVAR negative + local distanceCvar = GetConVarNumber("grapple_distance") + inRange = false + if distanceCvar < 0 or distance <= distanceCvar then + inRange = true + end + + + if inRange then + if (SERVER) then + + if (!self.Beam) then -- If the beam does not exist, draw the beam. + -- grapple_beam + self.Beam = ents.Create( "trace2" ) + self.Beam:SetPos( self.Owner:GetShootPos() ) + self.Beam:Spawn() + if CLIENT then + if self.Owner:Team() == TEAM_BLU then + self.Beam.matBeam = Material( "cable/cable_blue" ) + else + self.Beam.matBeam = Material( "cable/cable_red" ) + end + end + end + + self.Beam:SetParent( self.Owner ) + self.Beam:SetOwner( self.Owner ) + + end + + self:DoTrace() + self.speed = 3500 -- Rope latch speed. Was 3000. + self.startTime = CurTime() + self.endTime = CurTime() + self.speed + self.grappleData = -1 + + if (SERVER && self.Beam) then + self.Beam:GetTable():SetEndPos( self.Tr.HitPos ) + end + + self:UpdateAttack() + self:SendWeaponAnim(ACT_GRAPPLE_FIRE_START) + timer.Simple(0.15, function() + if (!self.Owner:KeyDown( IN_ATTACK ) || (self.jumped)) then return end + self:SendWeaponAnim(ACT_GRAPPLE_FIRE_IDLE) + end) + self:EmitSound( sndGrappleShoot ) + if (self.Owner:IsHL2()) then + self.Owner:SetAnimation(PLAYER_ATTACK1) + else + self.Owner:DoAnimationEvent(ACT_DOD_CROUCH_ZOOMED,true) + end + end +end + +function SWEP:UpdateAttack() + + --self.Owner:LagCompensation( true ) + + if (self:GetNextPrimaryFire() > CurTime()) then return end + if (!endpos) then endpos = self.Tr.HitPos end + + if (SERVER && self.Beam) then + self.Beam:GetTable():SetEndPos( endpos ) + end + + lastpos = endpos + + + if (!self.Beam) then + + -- Get begining and end poins of trace. + local gunPos = self.Owner:GetShootPos() -- Start of distance trace. + local disTrace = self.Owner:GetEyeTrace() -- Store all results of a trace in disTrace. + local hitPos = disTrace.HitPos -- Stores Hit Position of disTrace. + + -- Calculate Distance + -- Thanks to rgovostes for this code. + local x = (gunPos.x - hitPos.x)^2; + local y = (gunPos.y - hitPos.y)^2; + local z = (gunPos.z - hitPos.z)^2; + local distance = math.sqrt(x + y + z); + + -- Only latches if distance is less than distance CVAR, or CVAR negative + local distanceCvar = GetConVarNumber("grapple_distance") + inRange = false + if distanceCvar < 0 or distance <= distanceCvar then + inRange = true + end + + end + + if ( self.Tr.Entity:IsValid() ) then + + endpos = self.Tr.Entity:GetPos() + if ( SERVER ) then + self.Beam:GetTable():SetEndPos( endpos ) + end + + end + + local vVel = (endpos - self.Owner:GetPos()) + local Distance = endpos:Distance(self.Owner:GetPos()) + + local et = (self.startTime + (Distance/self.speed)) + if(self.grappleData != 0) then + self.grappleData = (et - CurTime()) / (et - self.startTime) + end + if(self.grappleData < 0) then + + if !self.Owner:KeyDown( IN_JUMP ) then + if SERVER then + self.Owner:EmitSoundEx("Grappling") + end + end + if self.Tr.Entity:IsTFPlayer() then + self.Tr.Entity:EmitSound( ")weapons/fx/rics/arrow_impact_flesh.wav", 95 ) + self.Tr.Entity:EmitSound( sndGrappleHitPlayer ) + self.Tr.Entity:EmitSound( "GrappledFlesh" ) + if !self.Tr.Entity:IsFriendly(self.Owner) then + self.Tr.Entity:TakeDamage(5, self.Owner, self) + end + timer.Create("Bleed"..self.Owner:EntIndex(), 0.5, 0, function() + if self.Tr.Entity:Health() <= 1 then self.Tr.Entity:StopSound("GrappledFlesh") timer.Stop("Bleed"..self.Owner:EntIndex()) return end + if !self.Owner:Alive() then self.Tr.Entity:StopSound("GrappledFlesh") timer.Stop("Bleed"..self.Owner:EntIndex()) return end + if !self.Owner:KeyDown( IN_ATTACK ) || (self.jumped) then self.Tr.Entity:StopSound("GrappledFlesh") timer.Stop("Bleed"..self.Owner:EntIndex()) return end + if !IsValid(self) then self.Tr.Entity:StopSound("GrappledFlesh") timer.Stop("Bleed"..self.Owner:EntIndex()) return end + if !self.Tr.Entity:IsFriendly(self.Owner) then + self.Tr.Entity:TakeDamage(5, self.Owner, self) + end + end) + else + if self.Owner:KeyDown( IN_JUMP ) then + self:DoTrace() + endpos = self.Tr.HitPos + yVel = self.Owner:GetVelocity().y + vVel = vVel:GetNormalized()*2000 + if( SERVER ) then + local gravity = GetConVarNumber("sv_Gravity") + vVel:Add(Vector(0,0,(50/20)*2.0)) -- Player speed. DO NOT MESS WITH THIS VALUE! + if(yVel < 0) then + vVel:Sub(Vector(0,0,yVel)) + end + + self.Owner:SetVelocity(vVel * self.Owner:GetWalkSpeed() * 0.0001 + Vector(0,0,50)) + end + + zVel = self.Owner:GetVelocity().z + vVel = vVel:GetNormalized()*1000 + if( SERVER ) then + local gravity = GetConVarNumber("sv_Gravity") + vVel:Add(Vector(0,0,(50/20)*1.5)) -- Player speed. DO NOT MESS WITH THIS VALUE! + if(zVel < 0) then + vVel:Sub(Vector(0,0,zVel/10)) + end + + self.Owner:SetLocalVelocity(vVel) + end + if (self.Beam != nil and !CLIENT) then + self.Beam:Remove() + self.Beam = nil + end + self.Owner:StopSound("Grappling") + self:EndAttack(true) + self.jumped = true + timer.Simple(0.502, function() + self.jumped = false + end) + self:SetNextPrimaryFire(CurTime() + 0.5) + self.grappleData = -1 + self:SendWeaponAnim(ACT_GRAPPLE_IDLE) + self.Owner:DoAnimationEvent(ACT_DOD_CROUCHWALK_ZOOMED,true) + if SERVER then + self.Owner:EmitSoundEx( sndGrappleHit ) + end + else + if (self.Beam) then + self.Beam:EmitSound( sndGrappleHit ) + end + end + end + if (self.jumped) then return end + self:SendWeaponAnim(ACT_GRAPPLE_PULL_START) + self.Owner:DoAnimationEvent(ACT_DOD_CROUCHWALK_ZOOMED,true) + timer.Simple(0.3, function() + if !self.Owner:KeyDown( IN_ATTACK ) or (self.jumped) then return end + self:SendWeaponAnim(ACT_GRAPPLE_PULL_IDLE) + end) + timer.Create("AirWalkAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("a_grapple_pull_idle")), 0, function() + if !self.Owner:KeyDown( IN_ATTACK ) or (self.jumped) then self.Tr.Entity:StopSound("GrappledFlesh") timer.Stop("AirWalkAnim"..self.Owner:EntIndex()) return end + if !IsValid(self) then self.Tr.Entity:StopSound("GrappledFlesh") timer.Stop("AirWalkAnim"..self.Owner:EntIndex()) return end + self.Owner:DoAnimationEvent(ACT_DOD_WALK_ZOOMED,true) + end) + if (self.jumped) then + self.grappleData = 1 + return + else + self.grappleData = 0 + + end + end + + if(self.grappleData == 0 and !self.jumped) then + zVel = self.Owner:GetVelocity().z + vVel = vVel:GetNormalized()*1000 + if( SERVER ) then + local gravity = GetConVarNumber("sv_Gravity") + vVel:Add(Vector(0,0,(50/20)*1.65)) -- Player speed. DO NOT MESS WITH THIS VALUE! + if(zVel < 0) then + vVel:Sub(Vector(0,0,zVel/10)) + end + + self.Owner:SetLocalVelocity(vVel * self.Owner:GetWalkSpeed() * 0.003) + end + end + + endpos = nil + + --self.Owner:LagCompensation( false ) + +end + +function SWEP:EndAttack( shutdownsound ) + + if ( shutdownsound ) then + if SERVER then + self.Owner:EmitSoundEx( sndGrappleAbort ) + end + self.Owner:StopSound("Grappling") + end + + if ( CLIENT ) then return end + if ( !self.Beam ) then return end + + self.Beam:Remove() + self.Beam = nil + inRange = false + self.jumped = false + self:SetNextPrimaryFire(CurTime() + 0.5) + self:SendWeaponAnim(ACT_GRAPPLE_PULL_END) +end + +function SWEP:Holster() + self:EndAttack( false ) + self.jumped = false + self.grappleData = 1 + if SERVER then + --self.WModel2:Remove() + end + self.BaseClass.Holster(self) + return true +end +function SWEP:Deploy() + self:EndAttack( false ) + self.jumped = false + self.grappleData = 1 + timer.Simple(0.03,function() + self.IsDeployed = true + end) + timer.Simple(0.12,function() + self:SendWeaponAnim(ACT_GRAPPLE_DRAW) + self:SetNextPrimaryFire(CurTime() + 0.01) + end) + self.BaseClass.Deploy(self) + return true +end + +function SWEP:OnRemove() + self:EndAttack( false ) + self.jumped = false + self.BaseClass.OnRemove(self) + return true +end + + +function SWEP:PrimaryAttack() +end + +function SWEP:SecondaryAttack() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher/shared.lua new file mode 100644 index 000000000..604eaaf72 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher/shared.lua @@ -0,0 +1,228 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.Slot = 0 +if CLIENT then + +SWEP.PrintName = "Grenade Launcher" + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + --[[if IsValid(self.WModel2) then + --self.WModel2:SetBodygroup(1, 1) + end]] +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +--[[ --Viewmodel Settings Override (left-over from testing; works well) +SWEP.ViewModelFOV = 70 +SWEP.ViewModelFlip = false +]] + +SWEP.MuzzleEffect = "muzzle_grenadelauncher" +PrecacheParticleSystem("muzzle_grenadelauncher") + +SWEP.ShootSound = Sound("Weapon_GrenadeLauncher.Single") +SWEP.ShootCritSound = Sound("Weapon_GrenadeLauncher.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_GrenadeLauncher.WorldReload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.6 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "shotgun" + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1100 +SWEP.AddPitch = -4 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.Properties = {} + +SWEP.SpinSound = true + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "mult_clipsize" then + self.SpinSound = false + end +end + + +function SWEP:ShootProjectile() + if SERVER then + grenade = ents.Create("tf_projectile_pipe") + grenade:SetPos(self:ProjectileShootPos()) + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade.Model = "models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl" + end + + if self:Critical() then + grenade.critical = true + end + local ang = self.Owner:EyeAngles() + grenade:SetAngles(ang) + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + grenade.NameOverride = self:GetItemData().item_iconname + grenade:Spawn() + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade:SetModel("models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl") + grenade.GrenadeMode = 2 + grenade.ExplosionSound = Sound("Weapon_Airstrike.Explosion") + grenade:SetMoveCollide(MOVECOLLIDE_DEFAULT) + grenade.BouncesLeft = 1 + grenade.Mass = 11 + end + if self.VM_RELOAD == ACT_PRIMARY_VM_RELOAD_2 then + grenade.DetonateMode = 2 + else + grenade.DetonateMode = 0 + end + + local vel = self.Owner:GetAimVector():Angle() + if (self.Owner.TFBot and self.Owner:Nick() == "Giant Burst Fire Demo") then + vel = self.Owner:GetAimVector():Angle() + Angle(math.random(-5,5),math.random(-5,5),0) + end + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + + + self:StopTimers() + self:ShootEffects() +end + +function SWEP:InspectAnimCheck() +self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD_2 + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootSoundCrit = Sound("weapons/loch_n_load_shoot_crit.wav") + self.Primary.ClipSize = 3 + end + if self:GetItemData().model_player == "models/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootCritSound = Sound("weapons/loch_n_load_shoot_crit.wav") + end + if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + if ( self:GetOwner():KeyPressed( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_RELOAD ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + --[[ if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() and self.SpinSound == true and !(self.Owner:GetMoveType()==MOVETYPE_NOCLIP) ) then + if CLIENT then + timer.Create("PlaySpin", 2.06, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end]] + self.BaseClass.InspectAnimCheck(self) +end + +function SWEP:StopTimers() + self:CallBaseFunction("StopTimers") + timer.Remove("PlaySpin") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher_burstfire b/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher_burstfire new file mode 100644 index 000000000..60d44635d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher_burstfire @@ -0,0 +1,228 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.Slot = 0 +if CLIENT then + +SWEP.PrintName = "Burst Fire Grenade Launcher For Giant Denoman" + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + --[[if IsValid(self.WModel2) then + --self.WModel2:SetBodygroup(1, 1) + end]] +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +--[[ --Viewmodel Settings Override (left-over from testing; works well) +SWEP.ViewModelFOV = 70 +SWEP.ViewModelFlip = false +]] + +SWEP.MuzzleEffect = "muzzle_grenadelauncher" +PrecacheParticleSystem("muzzle_grenadelauncher") + +SWEP.ShootSound = Sound("Weapon_GrenadeLauncher.Single") +SWEP.ShootCritSound = Sound("Weapon_GrenadeLauncher.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_GrenadeLauncher.WorldReload") + +SWEP.Primary.ClipSize = 4 + 7 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 * 0.1 +SWEP.ReloadTime = 0.6 * 0.65 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "shotgun" + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1100 * 1.1 +SWEP.AddPitch = -4 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.Properties = {} + +SWEP.SpinSound = true + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "mult_clipsize" then + self.SpinSound = false + end +end + + +function SWEP:ShootProjectile() + if SERVER then + grenade = ents.Create("tf_projectile_pipe") + grenade:SetPos(self:ProjectileShootPos()) + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade.Model = "models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl" + end + + if self:Critical() then + grenade.critical = true + end + local ang = self.Owner:EyeAngles() + grenade:SetAngles(ang) + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + grenade.NameOverride = self:GetItemData().item_iconname + grenade:Spawn() + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade:SetModel("models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl") + grenade.GrenadeMode = 2 + grenade.ExplosionSound = Sound("Weapon_Airstrike.Explosion") + grenade:SetMoveCollide(MOVECOLLIDE_DEFAULT) + grenade.BouncesLeft = 1 + grenade.Mass = 11 + end + if self.VM_RELOAD == ACT_PRIMARY_VM_RELOAD_2 then + grenade.DetonateMode = 2 + else + grenade.DetonateMode = 0 + end + + local vel = self.Owner:GetAimVector():Angle() + if (self.Owner.TFBot and self.Owner:Nick() == "Giant Burst Fire Demo") then + vel = self.Owner:GetAimVector():Angle() + Angle(math.random(-5,5),math.random(-5,5),0) + end + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + + + self:StopTimers() + self:ShootEffects() +end + +function SWEP:InspectAnimCheck() +self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD_2 + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootSoundCrit = Sound("weapons/loch_n_load_shoot_crit.wav") + self.Primary.ClipSize = 3 + end + if self:GetItemData().model_player == "models/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootCritSound = Sound("weapons/loch_n_load_shoot_crit.wav") + end + if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + if ( self:GetOwner():KeyPressed( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_RELOAD ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + --[[ if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() and self.SpinSound == true and !(self.Owner:GetMoveType()==MOVETYPE_NOCLIP) ) then + if CLIENT then + timer.Create("PlaySpin", 2.06, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end]] + self.BaseClass.InspectAnimCheck(self) +end + +function SWEP:StopTimers() + self:CallBaseFunction("StopTimers") + timer.Remove("PlaySpin") +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher_rapidfire b/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher_rapidfire new file mode 100644 index 000000000..0ce7b5199 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_grenadelauncher_rapidfire @@ -0,0 +1,228 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.Slot = 0 +if CLIENT then + +SWEP.PrintName = "Rapid Fire Grenade Launcher For Giant Demoman" + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + --[[if IsValid(self.WModel2) then + --self.WModel2:SetBodygroup(1, 1) + end]] +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = true +SWEP.Category = "Team Fortress 2" + +--[[ --Viewmodel Settings Override (left-over from testing; works well) +SWEP.ViewModelFOV = 70 +SWEP.ViewModelFlip = false +]] + +SWEP.MuzzleEffect = "muzzle_grenadelauncher" +PrecacheParticleSystem("muzzle_grenadelauncher") + +SWEP.ShootSound = Sound("Weapon_GrenadeLauncher.Single") +SWEP.ShootCritSound = Sound("Weapon_GrenadeLauncher.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_GrenadeLauncher.WorldReload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 * 0.75 +SWEP.ReloadTime = 0.6 * -0.4 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "shotgun" + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1100 +SWEP.AddPitch = -4 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.Properties = {} + +SWEP.SpinSound = true + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "mult_clipsize" then + self.SpinSound = false + end +end + + +function SWEP:ShootProjectile() + if SERVER then + grenade = ents.Create("tf_projectile_pipe") + grenade:SetPos(self:ProjectileShootPos()) + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade.Model = "models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl" + end + + if self:Critical() then + grenade.critical = true + end + local ang = self.Owner:EyeAngles() + grenade:SetAngles(ang) + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + grenade.NameOverride = self:GetItemData().item_iconname + grenade:Spawn() + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade:SetModel("models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl") + grenade.GrenadeMode = 2 + grenade.ExplosionSound = Sound("Weapon_Airstrike.Explosion") + grenade:SetMoveCollide(MOVECOLLIDE_DEFAULT) + grenade.BouncesLeft = 1 + grenade.Mass = 11 + end + if self.VM_RELOAD == ACT_PRIMARY_VM_RELOAD_2 then + grenade.DetonateMode = 2 + else + grenade.DetonateMode = 0 + end + + local vel = self.Owner:GetAimVector():Angle() + if (self.Owner.TFBot and self.Owner:Nick() == "Giant Burst Fire Demo") then + vel = self.Owner:GetAimVector():Angle() + Angle(math.random(-5,5),math.random(-5,5),0) + end + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + + + self:StopTimers() + self:ShootEffects() +end + +function SWEP:InspectAnimCheck() +self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD_2 + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootSoundCrit = Sound("weapons/loch_n_load_shoot_crit.wav") + self.Primary.ClipSize = 3 + end + if self:GetItemData().model_player == "models/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootCritSound = Sound("weapons/loch_n_load_shoot_crit.wav") + end + if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + if ( self:GetOwner():KeyPressed( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_RELOAD ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + --[[ if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() and self.SpinSound == true and !(self.Owner:GetMoveType()==MOVETYPE_NOCLIP) ) then + if CLIENT then + timer.Create("PlaySpin", 2.06, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end]] + self.BaseClass.InspectAnimCheck(self) +end + +function SWEP:StopTimers() + self:CallBaseFunction("StopTimers") + timer.Remove("PlaySpin") +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_gun_base/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_gun_base/shared.lua new file mode 100644 index 000000000..b3c782042 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_gun_base/shared.lua @@ -0,0 +1,343 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Gun" +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/v_models/v_scattergun_scout.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_scattergun.mdl" + +SWEP.MuzzleEffect = "muzzle_flash" +SWEP.MuzzleOffset = Vector(0,0,0) + +SWEP.ShootSound = Sound("") +SWEP.ShootCritSound = Sound("") +SWEP.ReloadSound = Sound("") +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_flash") + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.2 + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.HoldType = "PRIMARY" + +SWEP.AutoReloadTime = 0.01 + +SWEP.CriticalChance = 1.5 +SWEP.IsProjectileWeapon = true +idle_timer = 1 +end_timer = 1 +post_timer = 5.30 + +inspecting = false +inspecting_post = false + +CreateClientConVar("tf_autoreload", "1", true, true) + +function SWEP:ShootPos() + --local vm = self.Owner:GetViewModel() + --return vm:GetAttachment(vm:LookupAttachment("muzzle")) + + return self:GetAttachment(self:LookupAttachment("muzzle")).Pos +end + +function SWEP:PrimaryAttack() + if (!self:CanPrimaryAttack()) then + if (!self.Reloading and SERVER) then + self:SetNextPrimaryFire(CurTime()) + self:SetNextSecondaryFire(CurTime()) + end + return + end + if not self.IsDeployed then return false end + self:StopTimers() + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + + self.Reloading = false + self.NextReload = nil + self.NextReload2 = nil + self.NextReloadStart = nil + + if (!self.Reloading and self:Clip1() >= 0) then + + if (self.Primary.FastDelay) then + self:SetNextPrimaryFire(CurTime() + self.Primary.FastDelay) + self:SetNextSecondaryFire(CurTime() + self.Primary.FastDelay) + else + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + self:SetNextSecondaryFire(CurTime() + self.Primary.Delay) + end + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + if SERVER then + self.Owner:DoAttackEvent() + end + self:ShootEffects() + self:RustyBulletHole() + + end + if (self.FastDelay) then + self.NextIdle = CurTime() + self:SequenceDuration(self:SelectWeightedSequence(self.VM_PRIMARYATTACK)) / self.Primary.FastDelay + else + self.NextIdle = CurTime() + self:SequenceDuration(self:SelectWeightedSequence(self.VM_PRIMARYATTACK)) + end + --if ( IsFirstTimePredicted() ) then + if self:GetVisuals() and self:GetVisuals()["sound_single_shot"] then + self.ShootSound = self:GetVisuals()["sound_single_shot"] + self.ShootCritSound = self:GetVisuals()["sound_burst"] + end + timer.Simple(0.35 * self.Owner:GetViewModel():GetPlaybackRate(), function() + if CLIENT then + if (self:GetItemData().model_player == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" || self:GetItemData().model_player == "models/workshop/weapons/c_models/c_russian_riot/c_russian_riot.mdl" || self:GetItemData().model_player == "models/workshop/weapons/c_models/c_reserve_shooter/c_reserve_shooter.mdl") then + ----PrintTable(self.CModel:GetAttachments()) + local effectdata = EffectData() + effectdata:SetEntity( self.Owner:GetViewModel() ) + effectdata:SetOrigin( self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.x,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.y,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.z) ) + util.Effect( "ShotgunShellEject", effectdata ) + end + end + end) + --end + + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if SERVER then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + if SERVER then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + local ply = self.Owner + if (ply:GetModel() == "models/player/scout.mdl") then + ply.playerclass = "Scout" + elseif (ply:GetModel() == "models/player/soldier.mdl") then + ply.playerclass = "Soldier" + elseif (self:GetModel() == "models/player/pyro.mdl") then + ply.playerclass = "Pyro" + elseif (ply:GetModel() == "models/player/demo.mdl") then + ply.playerclass = "Demoman" + elseif (ply:GetModel() == "models/player/heavy.mdl") then + ply.playerclass = "Heavy" + elseif (ply:GetModel() == "models/player/engineer.mdl") then + ply.playerclass = "Engineer" + elseif (ply:GetModel() == "models/player/medic.mdl") then + ply.playerclass = "Medic" + elseif (ply:GetModel() == "models/player/sniper.mdl") then + ply.playerclass = "Medic" + else + local class = ply:GetPlayerClass() + ply.playerclass = string.upper(string.sub(class,1,1))..string.sub(class,2) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + end + end + end + + self:TakePrimaryAmmo(1) + self:RollCritical() -- Roll and check for criticals first + + self.Owner:ViewPunch( self.PunchView ) + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + + return true +end + +local function TFBulletCallback(attacker, trace, dmginfo) + if CLIENT then return {effects=true} end + + local self = dmginfo:GetInflictor() + local dmg = self.TempDamageInfo + if dmg then + if trace.Entity and trace.Entity:IsValid() then + dmg.HitPos = trace.HitPos + --local damage = tf_util.CalculateDamage(dmg) + --local dir = (trace.HitPos - dmg.Src):GetNormal() + + -- Some NPCs such as the combine gunship completely ignore bullet damage, so let's force the gamemode to process this damage + if (trace.Entity:GetClass() == "npc_helicopter") then + trace.Entity:TakeDamageInfo(dmginfo) + end + if (trace.Entity:IsPlayer() or trace.Entity:IsNPC()) and dmg.Critical then + if attacker:EntityTeam()==TEAM_BLU or attacker:EntityTeam()==TF_TEAM_PVE_INVADERS then + ParticleEffect("bullet_impact1_blue_crit", trace.HitPos, Angle(0,0,0)) + else + ParticleEffect("bullet_impact1_red_crit", trace.HitPos, Angle(0,0,0)) + end + end + end + + if dmg.Tracer>0 and math.random(1,dmg.Tracer)==1 then + local tracer = dmg.TracerName + PrecacheParticleSystem(dmg.TracerName.."_red") + PrecacheParticleSystem(dmg.TracerName.."_blue") + + if attacker:EntityTeam()==TEAM_BLU or attacker:EntityTeam()==TF_TEAM_PVE_INVADERS then + tracer = tracer.."_blue" + else + tracer = tracer.."_red" + end + + if dmg.Critical then + tracer = tracer.."_crit" + end + + umsg.Start("DoBulletTracer") + umsg.String(tracer) + umsg.Vector(trace.HitPos) + umsg.Entity(self:GetActiveWeapon()) + umsg.End() + end + end + + return {effects=true} +end + +--local force_bullets_lagcomp = CreateConVar("force_bullets_lagcomp", 0, {FCVAR_REPLICATED}) + +function SWEP:ShootProjectile(num_bullets, aimcone) + self:StopTimers() + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + --local b = force_bullets_lagcomp:GetBool() + + --if b then + --self.Owner:LagCompensation(true) + --end + local b = { + Num = num_bullets, + Src = self.Owner:GetShootPos(), + --Src = self:ShootPos(), + Dir = self.Owner:GetAimVector(), + Spread = Vector(aimcone, aimcone, 0), + Attacker = self.Owner, + + Team = GAMEMODE:EntityTeam(self.Owner), + Damage = self.BaseDamage, + Critical = self:Critical(), + CritMultiplier = 0, + + Tracer = 1, + TracerName = self.TracerEffect, + Force = 1, + Callback = TFBulletCallback + } + self.TempDamageInfo = { + BaseDamage = b.Damage, + Src = b.Src, + Critical = b.Critical, + Tracer = b.Tracer or 1, + TracerName = b.TracerName or "bullet_tracer01", + Force = b.Force or 1, + } + + self.Owner.TempDamageInfo = { + BaseDamage = b.Damage, + Src = b.Src, + Critical = b.Critical, + Tracer = b.Tracer or 1, + TracerName = b.TracerName or "bullet_tracer01", + Force = b.Force or 1, + } + self.Owner:FireBullets(b) + + --if b then + --self.Owner:LagCompensation(false) + --end + +end + +function SWEP:ShootEffects() + if (!self:CanPrimaryAttack()) then return end + local wmodel = self:GetItemData().model_player or self.WorldModelOverride or self.WorldModel + if (self.Owner:GetNWBool("NoWeapon")) then + --self.WorldModel = "models/empty.mdl" + else + --self.WorldModel = wmodel; + end + local vm = self.Owner:GetViewModel() + if (!self:CanPrimaryAttack()) then return end + for k,v in ipairs(player.GetAll()) do + if SERVER then + + if (self:Critical()) then + v:SendLua("Entity("..self.Owner:EntIndex().."):EmitSound(\""..self.ShootCritSound.."\")") + else + v:SendLua("Entity("..self.Owner:EntIndex().."):EmitSound(\""..self.ShootSound.."\")") + end + + end + end + + if SERVER then + umsg.Start("TF2ShellEject") + umsg.Entity(self) + umsg.End() + end + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON") + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + self.Reloading = false + self.NextReload = nil + self.NextReload2 = nil + self.NextReloadStart = nil + if CLIENT then + if IsValid(self.CModel) then + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + elseif IsValid(vm) and !IsValid(self.CModel) then + self.CModel = ClientsideModel(wmodel) + if not IsValid(self.CModel) then return end + self.CModel:SetModel(wmodel) + self.CModel:SetNoDraw(true) + self.CModel:SetParent(vm) + self.CModel:AddEffects(bit.bor(EF_BONEMERGE,EF_BONEMERGE_FASTCULL)) + self.CModel:Spawn() + self.CModel:Activate() + end + end + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + if SERVER then + if self.MuzzleEffect and self.MuzzleEffect~="" then + umsg.Start("DoMuzzleFlash") + umsg.Entity(self) + umsg.End() + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_handgun_scout/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_handgun_scout/shared.lua new file mode 100644 index 000000000..8880d6602 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_handgun_scout/shared.lua @@ -0,0 +1,147 @@ +-- Real class name: tf_weapon_handgun_scout_primary (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) + include("sv_airblast.lua") +end + +if CLIENT then + SWEP.PrintName = "Scattergun" + SWEP.Slot = 0 +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_pistol_scout.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shortstop/c_shortstop.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_scattergun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("Weapon_Short_Stop.Single") +SWEP.ShootCritSound = Sound("Weapon_Short_Stop.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Short_Stop.Reload") +SWEP.AirblastDeflectSound = Sound("weapons/push_impact.wav") + +SWEP.TracerEffect = "bullet_scattergun_tracer01" + +SWEP.BaseDamage = 12 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 4 +SWEP.BulletSpread = 0.035 + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.36 +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 1.5 +SWEP.AirblastRadius = 80 + +SWEP.AutoReloadTime = 0.21 + +--SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "revolver" +SWEP.IsRapidFire = true +SWEP.ReloadTime = 1.5 + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + self.Owner:GetViewModel():SetPlaybackRate(0.7) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_SECONDARY) + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound then + self:EmitSound(self.ReloadSound) + end + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + + + + if self.NoAirblast then return false end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextWhisper then + if self.WhisperType == 2 then + if not self.Owner.NextSpeak or CurTime()>self.Owner.NextSpeak then + umsg.Start("SwordWhisper", self.Owner) + umsg.Char(2) + umsg.End() + self.WhisperType = 1 + self.NextWhisper = CurTime() + math.Rand(self.WhisperIdleMinDelay, self.WhisperIdleMaxDelay) + else + self.NextWhisper = CurTime() + math.Rand(self.WhisperKillMinDelay, self.WhisperKillMaxDelay) + end + else + if not self.Owner.NextSpeak or CurTime()>self.Owner.NextSpeak then + umsg.Start("SwordWhisper", self.Owner) + umsg.Char(1) + umsg.End() + end + self.NextWhisper = CurTime() + math.Rand(self.WhisperIdleMinDelay, self.WhisperIdleMaxDelay) + end + end + end +end + +function SWEP:OnRemove() + if SERVER then + --self.Owner:SetNWInt("Heads", 0) + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_jar/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_jar/shared.lua new file mode 100644 index 000000000..9317e9b89 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_jar/shared.lua @@ -0,0 +1,145 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Jarate" +SWEP.HasCModel = true +SWEP.Slot = 1 + +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/urinejar.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "" +SWEP.ShootCritSound = "" + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_GRENADES1 +SWEP.Primary.Delay = 0.8 + +SWEP.ReloadSingle = false + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.HoldType = "ITEM1" +SWEP.HoldTypeHL2 = "grenade" + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Properties = {} +SWEP.Force = 800 +SWEP.AddPitch = -4 + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_RELOAD + +function SWEP:InspectAnimCheck() + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster/c_breadmonster.mdl" then + self.VM_DRAW = _G["ACT_BREADMONSTER_VM_DRAW"] + self.VM_IDLE = _G["ACT_BREADMONSTER_VM_IDLE"] + self.VM_PRIMARYATTACK = _G["ACT_BREADMONSTER_VM_PRIMARYATTACK"] + self.VM_HITCENTER = _G["ACT_BREADMONSTER_VM_PRIMARYATTACK"] + self.VM_SWINGHARD = _G["ACT_BREADMONSTER_VM_PRIMARYATTACK"] + self.HoldType = "MELEE_ALLCLASS" + if (IsValid(self.Owner)) then + self.Owner:SetPoseParameter("r_hand_grip",13.0) + self.Owner:SetPoseParameter("r_arm",0) + end + end + self.VM_HITCENTER = self.VM_PRIMARYATTACK + self.VM_SWINGHARD = self.VM_PRIMARYATTACK + self:CallBaseFunction("InspectAnimCheck") +end +function SWEP:PredictCriticalHit() +end + +function SWEP:MeleeAttack() + local pos = self.Owner:GetShootPos() + local wmodel = self:GetItemData().model_player or self.WorldModel + if SERVER then + local grenade = ents.Create("tf_projectile_jar") + grenade:SetPos(pos) + grenade:SetAngles(self.Owner:EyeAngles()) + if self:Critical() then + grenade.critical = true + end + + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + self:InitProjectileAttributes(grenade) + + grenade:Spawn() + grenade:EmitSound(self.ShootSound) + grenade:SetModel(wmodel) + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster/c_breadmonster.mdl" then + grenade.ExplosionSound = "Weapon_bm_throwable.smash" + end + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end +end + +function SWEP:PrimaryAttack() + if (!self:CanPrimaryAttack()) then return end + + if self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then + return + end + + if SERVER then + self.Owner:Speak("TLK_JARATE_LAUNCH") + //self.Owner:SelectWeapon("tf_weapon_club") + end + self:SetNextPrimaryFire(CurTime() + 0.8) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster/c_breadmonster.mdl" then + self.ShootSound = Sound("Weapon_bm_throwable.throw") + self.ShootCritSound = Sound("Weapon_bm_throwable.throw") + self.Owner:DoAnimationEvent(ACT_MP_THROW) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + + + self:TakePrimaryAmmo(1) + + self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) + self.Owner.NextGiveAmmoType = self.Primary.Ammo + + + --self.NextMeleeAttack = CurTime() + 0.25 + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + table.insert(self.NextMeleeAttack, CurTime() + 0.25) + self.NextIdle = CurTime() + 0.8 + timer.Simple(0.8, function() + if (self.Owner:GetActiveWeapon():GetClass() == self:GetClass()) then + self:SendWeaponAnim(self.VM_DRAW) + self.Owner:GetViewModel():SetPlaybackRate(1.3) + self.NextIdle = CurTime() + self:SequenceDuration() * 0.7 + end + end) +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_jar_gas/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_jar_gas/shared.lua new file mode 100644 index 000000000..9767ba290 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_jar_gas/shared.lua @@ -0,0 +1,121 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Gas Passer" +SWEP.HasCModel = true +SWEP.Slot = 1 + +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_gascan/c_gascan.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "weapons/gas_can_throw.wav" +SWEP.ShootCritSound = "weapons/gas_can_throw.wav" + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 1 + +SWEP.ReloadSingle = false + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.HoldType = "ITEM1" + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Force = 800 +SWEP.AddPitch = -4 + +SWEP.HoldType = "MELEE_ALLCLASS" + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = ACT_ITEM2_VM_DRAW +self.VM_IDLE = ACT_ITEM2_VM_IDLE +self.VM_PRIMARYATTACK = ACT_ITEM2_VM_FIRE +self.VM_INSPECT_START = ACT_ITEM2_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_ITEM2_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_ITEM2_VM_INSPECT_END +end + +function SWEP:Think() + self.BaseClass.Think(self) + self.Owner:SetPoseParameter("r_arm", 2.2) + self.Owner:SetPoseParameter("r_hand_grip", 10.8) +end + +function SWEP:PredictCriticalHit() +end + +function SWEP:MeleeAttack() + local pos = self.Owner:GetShootPos() + + local wmodel = self:GetItemData().model_player or self.WorldModel + if SERVER then + local grenade = ents.Create("tf_projectile_gas") + grenade:SetPos(pos) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + grenade:SetOwner(self.Owner) + + grenade:Spawn() + grenade:SetModel(wmodel) + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end +end + +function SWEP:PrimaryAttack() + if self:Ammo1() == 0 then + return + end + + if SERVER then + self.Owner:Speak("TLK_JARATE_LAUNCH") + //self.Owner:SelectWeapon("tf_weapon_club") + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + + + + self:TakePrimaryAmmo(1) + + self.Owner.NextGiveAmmo = CurTime() + (20) + self.Owner.NextGiveAmmoType = self.Primary.Ammo + self:EmitSound("Weapon_GasCan.Throw") + if CLIENT then + self.Owner:DoTauntEvent("attackstand_gascan", true) + end + self:SetNextPrimaryFire(CurTime() + 0.8) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + --self.NextMeleeAttack = CurTime() + 0.25 + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + table.insert(self.NextMeleeAttack, CurTime() + 0.25) +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_jar_milk/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_jar_milk/shared.lua new file mode 100644 index 000000000..00a06d2df --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_jar_milk/shared.lua @@ -0,0 +1,171 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Mad Milk" +SWEP.HasCModel = true +SWEP.Slot = 1 + +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ResetParticles(state_override) + self:CallBaseFunction("ResetParticles", state_override) + + if not self.DoneDeployParticle then + if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then + local ent = self:GetViewModelEntity() + if IsValid(ent) then + ParticleEffectAttach("energydrink_milk_splash", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("drink_spray")) + end + end + + self.DoneDeployParticle = true + end +end + +end + +PrecacheParticleSystem("energydrink_milk_splash") + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_madmilk/c_madmilk.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "" +SWEP.ShootCritSound = "" + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_GRENADES1 +SWEP.Primary.Delay = 0.8 + +SWEP.ReloadSingle = false + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.HoldType = "ITEM1" + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Properties = {} +SWEP.Force = 800 +SWEP.AddPitch = -4 + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_PRIMARYATTACK + +function SWEP:InspectAnimCheck() + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster/c_breadmonster_milk.mdl" then + self.VM_DRAW = _G["ACT_BREADMONSTER_VM_DRAW"] + self.VM_IDLE = _G["ACT_BREADMONSTER_VM_IDLE"] + self.VM_PRIMARYATTACK = _G["ACT_BREADMONSTER_VM_PRIMARYATTACK"] + self.VM_HITCENTER = _G["ACT_BREADMONSTER_VM_PRIMARYATTACK"] + self.VM_SWINGHARD = _G["ACT_BREADMONSTER_VM_PRIMARYATTACK"] + if (IsValid(self.Owner)) then + self.Owner:SetPoseParameter("r_hand_grip",13.0) + self.Owner:SetPoseParameter("r_arm",0.0) + end + end + self.VM_HITCENTER = self.VM_PRIMARYATTACK + self.VM_SWINGHARD = self.VM_PRIMARYATTACK + self:CallBaseFunction("InspectAnimCheck") +end + +function SWEP:PredictCriticalHit() +end + +function SWEP:MeleeAttack() + local pos = self.Owner:GetShootPos() + local wmodel = self:GetItemData().model_player or self.WorldModel + if SERVER then + local grenade = ents.Create("tf_projectile_jar") + grenade:SetPos(pos) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + grenade.JarType = 2 + self:InitProjectileAttributes(grenade) + + grenade:Spawn() + grenade:EmitSound(self.ShootSound) + grenade:SetModel(wmodel) + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster/c_breadmonster_milk.mdl" then + grenade.ExplosionSound = "Weapon_bm_throwable.smash" + end + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + if self:GetItemData().model_player == "models/weapons/c_models/c_breadmonster/c_breadmonster_milk.mdl" then + grenade:SetModel("models/weapons/c_models/c_breadmonster/c_breadmonster_milk.mdl") + self:SetHoldType("MELEE_ALLCLASS") + self.Owner:DoAnimationEvent(ACT_DOD_PRIMARYATTACK_BOLT,true) + self.ShootSound = Sound("Weapon_bm_throwable.throw") + self.ShootCritSound = Sound("Weapon_bm_throwable.throw") + self.Owner:EmitSoundEx(self.ShootSound) + end + end +end + +function SWEP:PrimaryAttack() + if (self:Ammo1() < 1) then return end + + if SERVER then + self.Owner:Speak("TLK_JARATE_LAUNCH") + end + + self:SetNextPrimaryFire(CurTime() + 0.8) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + if self:GetItemData().model_player != "models/weapons/c_models/c_breadmonster/c_breadmonster_milk.mdl" then + self.Owner:SetAnimation(PLAYER_ATTACK1) + else + self.Owner:DoAnimationEvent(ACT_MP_THROW) + end + + self:TakePrimaryAmmo(1) + + self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) + self.Owner.NextGiveAmmoType = self.Primary.Ammo + + self.NextIdle = CurTime() + 0.8 + + --self.NextMeleeAttack = CurTime() + 0.25 + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + table.insert(self.NextMeleeAttack, CurTime() + 0.25) + timer.Simple(0.8, function() + if (self.Owner:GetActiveWeapon():GetClass() == self:GetClass()) then + self:SendWeaponAnim(self.VM_DRAW) + self.Owner:GetViewModel():SetPlaybackRate(1.3) + self.NextIdle = CurTime() + self:SequenceDuration() * 0.7 + end + end) +end + +function SWEP:Holster() + if CLIENT then + self.DoneDeployParticle = false + end + + return self:CallBaseFunction("Holster") +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_karate/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_karate/shared.lua new file mode 100644 index 000000000..93ab395ad --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_karate/shared.lua @@ -0,0 +1,34 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Karate" +SWEP.Slot = 2 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_karatae_sniper.mdl" +--SWEP.WorldModel = "models/weapons/w_models/w_null.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Fist.Miss") +SWEP.SwingCrit = Sound("Weapon_Fist.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Fist.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Fist.HitWorld") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.3 + +-- fixes having to wait for a long time before being able to swing it +SWEP.m_WeaponDeploySpeed = 2 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "fist" diff --git a/gamemodes/tf/entities/weapons/tf_weapon_katana/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_katana/shared.lua new file mode 100644 index 000000000..2468147f3 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_katana/shared.lua @@ -0,0 +1,122 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "The Katana" +SWEP.HasCModel = true + +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.Slot = 2 +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shogun_katana/c_shogun_katana.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Katana.Miss") +SWEP.SwingCrit = Sound("Weapon_Katana.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Katana.HitFlesh") +SWEP.HitRobot = Sound("MVM_Weapon_Sword.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Katana.HitWorld") + +SWEP.WhisperKillProbabilityPlayer = 0.5 +SWEP.WhisperKillProbabilityNPC = 0.2 + +SWEP.WhisperIdleMinDelay = 10 +SWEP.WhisperIdleMaxDelay = 60 +SWEP.WhisperKillMinDelay = 2 +SWEP.WhisperKillMaxDelay = 4 + +SWEP.MeleeRange = 100 +SWEP.HealthBonus = 15 + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +--SWEP.CriticalChance = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" + + +function SWEP:Think() + if self.Owner:GetPlayerClass() == "demoman" or self.Owner:GetPlayerClass() == "demoknight" or self.Owner:GetPlayerClass() == "samuraidemo" or self.Owner:GetPlayerClass() == "giantdemoknight" then + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL + self.HoldType = "ITEM1" + self:SetHoldType("ITEM1") + else + self.VM_DRAW = ACT_MELEE_VM_DRAW + self.VM_IDLE = ACT_MELEE_VM_IDLE + self.VM_HITCENTER = ACT_MELEE_VM_HITCENTER + self.VM_SWINGHARD = ACT_MELEE_VM_SWINGHARD + self.HoldType = "MELEE" + self:SetWeaponHoldType("MELEE") + end + return self.BaseClass.Think(self) +end + +function SWEP:OnPlayerKilled(ent) + --ent:SetNWBool("ShouldDropDecapitatedRagdoll", true) + ent:AddDeathFlag(DF_DECAP) +end + +function SWEP:Deploy() + if self.Owner:GetPlayerClass() == "demoman" or self.Owner:GetPlayerClass() == "demoknight" or self.Owner:GetPlayerClass() == "samuraidemo" or self.Owner:GetPlayerClass() == "giantdemoknight" then + self:GetItemData().model_player = "models/weapons/c_models/c_shogun_katana/c_shogun_katana.mdl" + self.VM_DRAW = ACT_VM_DRAW_SPECIAL + self.VM_IDLE = ACT_VM_IDLE_SPECIAL + self.VM_HITCENTER = ACT_VM_HITCENTER_SPECIAL + self.VM_SWINGHARD = ACT_VM_SWINGHARD_SPECIAL + self.HoldType = "ITEM1" + self:SetWeaponHoldType("ITEM1") + else + self:GetItemData().model_player = "models/weapons/c_models/c_shogun_katana/c_shogun_katana_soldier.mdl" + self.VM_DRAW = ACT_MELEE_VM_DRAW + self.VM_IDLE = ACT_MELEE_VM_IDLE + self.VM_HITCENTER = ACT_MELEE_VM_HITCENTER + self.VM_SWINGHARD = ACT_MELEE_VM_SWINGHARD + end + + self:CallBaseFunction("Deploy") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_knife/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_knife/shared.lua new file mode 100644 index 000000000..677841541 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_knife/shared.lua @@ -0,0 +1,343 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +if CLIENT then + +SWEP.PrintName = "Knife" + +function SWEP:ResetBackstabState() + self.NextBackstabIdle = nil + self.BackstabState = false + self.NextAllowBackstabAnim = CurTime() + 0.8 +end + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_spy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_knife/c_knife.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Slot = 2 +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Knife.Miss") +SWEP.SwingCrit = Sound("Weapon_Knife.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Knife.HitFlesh") +SWEP.HitRobot = Sound("MVM_Weapon_Knife.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Knife.HitWorld") + +SWEP.BaseDamage = 40 +SWEP.ResetBaseDamage = 40 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 +SWEP.DamageType = bit.bor(DMG_CLUB,DMG_BULLET) + +SWEP.CriticalChance = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 +SWEP.HoldTypeHL2 = "knife" +SWEP.HasThirdpersonCritAnimation = true + +SWEP.MeleeAttackDelay = -1 +SWEP.MeleePredictTolerancy = 0.1 +SWEP.BackstabAngle = 180 +SWEP.ShouldOccurFists = true +-- ACT_MELEE_VM_STUN + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") +end + +function SWEP:ShouldBackstab(ent) + if not ent then + local tr = self:MeleeAttack(true) + ent = tr.Entity + end + + if not IsValid(ent) or not self.Owner:CanDamage(ent) or ent:Health()<=0 or not ent:CanReceiveCrits() or inspecting == true or inspecting_post == true then + return false + end + + if not self.BackstabCos then + self.BackstabCos = math.cos(math.rad(self.BackstabAngle * 0.5)) + end + + local v1 = ent:GetPos() - self.Owner:GetPos() + local v2 = ent:GetAngles():Forward() + + v1.z = 0 + v2.z = 0 + v1:Normalize() + v2:Normalize() + + return v1:Dot(v2) > self.BackstabCos +end + +function SWEP:Critical(ent,dmginfo) + if self:ShouldBackstab(ent) then + return true + end + + return self:CallBaseFunction("Critical", ent, dmginfo) +end + +function SWEP:OnMeleeHit(tr) + if CLIENT then return end + + local ent = tr.Entity + + if self.ShouldBackstab and self:ShouldBackstab(ent) then + if self:GetItemData().model_player == "models/weapons/c_models/c_eternal_reward/c_eternal_reward.mdl" then + if ent:IsPlayer() and !ent:IsHL2() and not ent:IsFriendly(self.Owner) and not ent:HasGodMode() then + ent:SetMaterial("models/shadertest/predator") + ent:GetRagdollEntity():SetMaterial("models/shadertest/predator") + ent:TakeDamage(ent:Health() * 2, self.Owner, self) + timer.Simple(0.2, function() + self.Owner:SetModel(ent:GetModel()) + self.Owner:SetSkin(ent:GetSkin()) + end) + end + end + end +end + +function SWEP:PredictCriticalHit() + if self:ShouldBackstab() then + return true + end +end + + +function SWEP:Think() + + if self.IsDeployed and CurTime() > self:GetNextPrimaryFire() and self.Owner:GetEyeTrace().Entity:Health() > 0 then + local shouldbackstab = self:ShouldBackstab() + + if shouldbackstab and not self.BackstabState then + self:SendWeaponAnimEx(self.BACKSTAB_VM_UP) + self.NextBackstabIdle = CurTime() + self:SequenceDuration() + self.NextIdle = nil + elseif not shouldbackstab and self.BackstabState then + if self.Primary.Delay and CurTime() >= self.Primary.Delay then + self:SendWeaponAnimEx(self.BACKSTAB_VM_DOWN) + self.NextBackstabIdle = nil + self.NextIdle = CurTime() + self:SequenceDuration() + end + end + self.BackstabState = shouldbackstab + + if self.NextBackstabIdle and CurTime()>=self.NextBackstabIdle then + self:SendWeaponAnimEx(self.BACKSTAB_VM_IDLE) + self.NextBackstabIdle = nil + self.NextIdle = nil + end + + self.NextAllowBackstabAnim = nil + end + self:CallBaseFunction("Think") + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + + self.Owner:SetNWBool("NoWeapon", true) + else + if IsValid(animent2) then + animent2:Fire("Kill", "", 0.1) + end + self.Owner:SetNWBool("NoWeapon", false) + end + end +end + +function SWEP:Deploy() + --MsgFN("Deploy %s", tostring(self)) + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + + if SERVER then + animent2 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + if self.Owner:GetModel() == "models/player/engineer.mdl" then + animent2:SetModel("models/weapons/c_models/c_wrench/c_wrench.mdl") + elseif self.Owner:GetModel() == "models/player/scout.mdl" then + animent2:SetModel("models/weapons/c_models/c_bat.mdl") + elseif self.Owner:GetModel() == "models/player/soldier.mdl" then + animent2:SetModel("models/weapons/c_models/c_shovel/c_shovel.mdl") + elseif self.Owner:GetModel() == "models/player/pyro.mdl" then + animent2:SetModel("models/weapons/w_models/w_fireaxe.mdl") + elseif self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + animent2:SetModel("models/weapons/c_models/c_knife/c_knife.mdl") + elseif self.Owner:GetModel() == "models/player/sniper.mdl" then + animent2:SetModel("models/weapons/c_models/c_machete/c_machete.mdl") + elseif self.Owner:GetModel() == "models/player/medic.mdl" then + animent2:SetModel("models/weapons/c_models/c_bonesaw/c_bonesaw.mdl") + elseif self.Owner:GetModel() == "models/player/demo.mdl" then + animent2:SetModel("models/weapons/w_models/w_bottle.mdl") + end + animent2:SetAngles(self.Owner:GetAngles()) + animent2:SetPos(self.Owner:GetPos()) + animent2:Spawn() + animent2:Activate() + animent2:SetParent(self.Owner) + animent2:AddEffects(EF_BONEMERGE) + animent2:SetName("SpyWeaponModel"..self.Owner:EntIndex()) + animent2:SetSkin(self.Owner:GetSkin()) + timer.Create("SpyCloakDetector"..self.Owner:EntIndex(), 0.01, 0, function() + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetNoDraw() == true then + if IsValid(animent2) then + animent2:SetNoDraw(true) + end + else + if IsValid(animent2) then + animent2:SetNoDraw(false) + end + end + else + timer.Stop("SpyCloakDetector"..self.Owner:EntIndex()) + return + end + end) + end + else + if IsValid(animent2) then + animent2:Remove() + end + self:SetHoldType("MELEE") + end + end + return self:CallBaseFunction("Deploy") +end +function SWEP:Holster() + self:StopTimers() + if IsValid(self.Owner) then + timer.Simple(0.1, function() + if IsValid(self.CModel3) then + self.CModel3:Remove() + end + end) + if self:GetItemData().hide_bodygroups_deployed_only then + local visuals = self:GetVisuals() + local owner = self.Owner + + if visuals.hide_player_bodygroup_names then + for _,group in ipairs(visuals.hide_player_bodygroup_names) do + local b = PlayerNamedBodygroups[owner:GetPlayerClass()] + if b and b[group] then + owner:SetBodygroup(b[group], 0) + end + + b = PlayerNamedViewmodelBodygroups[owner:GetPlayerClass()] + if b and b[group] then + if IsValid(owner:GetViewModel()) then + owner:GetViewModel():SetBodygroup(b[group], 0) + end + end + end + end + end + + for k,v in pairs(self:GetVisuals()) do + if k=="hide_player_bodygroup" then + self.Owner:SetBodygroup(v,0) + end + end + end + if IsValid(animent2) then + animent2:Fire("Kill", "", 0.1) + end + self.NextIdle = nil + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = nil + self.RequestedReload = nil + self.NextDeployed = nil + self.IsDeployed = nil + if SERVER then + if IsValid(self.WModel2) then + --self.WModel2:Remove() + end + end + if IsValid(self.Owner) then + self.Owner.LastWeapon = self:GetClass() + end + + return true +end + + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + self.NameOverride = nil + + if game.SinglePlayer() then + self:CallOnClient("ResetBackstabState", "") + elseif CLIENT then + self:ResetBackstabState() + end +end + +if SERVER then + +hook.Add("PreScaleDamage", "BackstabSetDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + if inf.ShouldBackstab and inf:ShouldBackstab(ent) and inf:GetClass() != "tf_weapon_knife_icicle" then + inf.ResetBaseDamage = inf.BaseDamage + if ent:IsPlayer() and ent:IsMiniBoss() then + inf.BaseDamage = ent:GetMaxHealth() * 0.12 + inf.BaseDamage = 195 + inf.NextIdle = CurTime() + 5 + timer.Simple(0.04, function() + inf:SendWeaponAnimEx(ACT_MELEE_VM_STUN) + inf.Owner:GetViewModel():SetPlaybackRate(0.5) + inf:SetNextPrimaryFire(CurTime() + 2) + end) + elseif ent:IsNPC() and ent:GetClass() == "npc_antlionguard" then + inf.BaseDamage = ent:GetMaxHealth() * 0.15 + inf.Owner:EmitSound("physics/body/body_medium_break2.wav", 120, math.random(50,60)) + inf.NextIdle = CurTime() + 5 + ent:EmitSound("npc/antlion_guard/antlion_guard_pain"..math.random(1,2)..".wav", 100, math.random(93, 102)) + inf.Owner:GetViewModel():SetPlaybackRate(1) + timer.Simple(0.04, function() + inf:SendWeaponAnimEx(ACT_MELEE_VM_STUN) + inf:SetNextPrimaryFire(CurTime() + 2) + end) + else + inf.BaseDamage = ent:Health() * 2 + ent:AddDeathFlag(DF_BACKSTAB) + end + inf.NameOverride = "tf_weapon_knife_backstab" + dmginfo:SetDamage(inf.BaseDamage) + else + if (string.find(inf:GetClass(),"tf_weapon_knife")) then + inf.BaseDamage = 45 + end + end +end) + +hook.Add("PostScaleDamage", "BackstabResetDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + if inf:GetClass() == "tf_weapon_shotgun_imalreadywidowmaker" then + + inf.Owner:GiveTFAmmo(25, TF_METAL) + umsg.Start("PlayerMetalBonus", inf.Owner) + umsg.Short(25) + umsg.End() + + end + if inf.ResetBaseDamage then + inf.BaseDamage = 45 + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_knife_icicle/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_knife_icicle/shared.lua new file mode 100644 index 000000000..4857c61cd --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_knife_icicle/shared.lua @@ -0,0 +1,41 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +if CLIENT then + +SWEP.PrintName = "Icicle" +SWEP.Slot = 2 + +function SWEP:ResetBackstabState() + self.NextBackstabIdle = nil + self.BackstabState = false + self.NextAllowBackstabAnim = CurTime() + 0.8 +end + +end + +SWEP.Base = "tf_weapon_knife" + +SWEP.ViewModel = "models/weapons/c_models/c_spy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_xms_cold_shoulder/c_xms_cold_shoulder.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitRobot = Sound("MVM_Weapon_Knife.HitFlesh") +SWEP.HitWorld = Sound("Icicle.HitWorld") + +SWEP.HoldType = "MELEE" + + +if SERVER then + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_knife_sh/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_knife_sh/shared.lua new file mode 100644 index 000000000..4867e61ce --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_knife_sh/shared.lua @@ -0,0 +1,142 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +if CLIENT then + +SWEP.PrintName = "Knife" +SWEP.Slot = 2 + +function SWEP:ResetBackstabState() + self.NextBackstabIdle = nil + self.BackstabState = false + self.NextAllowBackstabAnim = CurTime() + 0.8 +end + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_knife_spy.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_knife.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Knife.Miss") +SWEP.SwingCrit = Sound("Weapon_Knife.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Knife.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Knife.HitWorld") + +SWEP.BaseDamage = 40 +SWEP.DamageRandomize = 1.35 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.CriticalChance = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "ITEM1" +SWEP.HasThirdpersonCritAnimation = true + +SWEP.MeleePredictTolerancy = 0.1 +SWEP.MeleeAttackDelay = 0 +SWEP.BackstabAngle = 180 +SWEP.ShouldOccurFists = true +-- ACT_MELEE_VM_STUN + +function SWEP:ShouldBackstab(ent) + if not ent then + local tr = self:MeleeAttack(true) + ent = tr.Entity + end + + if not IsValid(ent) or not self.Owner:CanDamage(ent) or ent:Health()<=0 or not ent:CanReceiveCrits() or inspecting == true or inspecting_post == true then + return false + end + + if not self.BackstabCos then + self.BackstabCos = math.cos(math.rad(self.BackstabAngle * 0.5)) + end + + local v1 = ent:GetPos() - self.Owner:GetPos() + local v2 = ent:GetAngles():Forward() + + v1.z = 0 + v2.z = 0 + v1:Normalize() + v2:Normalize() + + return v1:Dot(v2) > self.BackstabCos +end + +function SWEP:Critical(ent,dmginfo) + if self:ShouldBackstab(ent) then + return true + end + + return self:CallBaseFunction("Critical", ent, dmginfo) +end + +function SWEP:PredictCriticalHit() + if self:ShouldBackstab() then + return true + end +end + +function SWEP:Think() + self:CallBaseFunction("Think") + if self.Owner:KeyDown(IN_ATTACK) or self.Owner:KeyDown(IN_ATTACK2) then + if self.ShouldOccurFists == true then + if SERVER then + if self.Owner:GetPlayerClass() == "spy" and self.Owner:GetInfoNum("hahahahahahahahaowneronly_ragespy", 0) == 1 then + self.Owner:EmitSoundEx("vo/spy_paincrticialdeath0"..math.random(1,3)..".mp3", 80, math.random(80,130)) + self.ShouldOccurFists = false + self.HitFlesh = Sound("NPC_AttackHelicopter.Crash") + self.BaseDamage = 1000000000000000000000000000000000000000000000000 + self.Primary.Delay = 0.1 + timer.Simple(0.1, function() + self.ShouldOccurFists = true + end) + end + end + end + end + if CLIENT and self.IsDeployed then + if not self.NextAllowBackstabAnim or CurTime() >= self.NextAllowBackstabAnim then + local shouldbackstab = self:ShouldBackstab() + + if shouldbackstab and not self.BackstabState then + self:SendWeaponAnim(ACT_ITEM1_BACKSTAB_VM_UP) + self.NextBackstabIdle = CurTime() + self:SequenceDuration() + elseif not shouldbackstab and self.BackstabState then + self:SendWeaponAnim(ACT_ITEM1_BACKSTAB_VM_DOWN) + self.NextBackstabIdle = nil + end + self.BackstabState = shouldbackstab + + if self.NextBackstabIdle and CurTime()>=self.NextBackstabIdle then + self:SendWeaponAnim(ACT_ITEM1_BACKSTAB_VM_IDLE) + self.NextBackstabIdle = nil + end + + self.NextAllowBackstabAnim = nil + end + end +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + self.NameOverride = nil + + if game.SinglePlayer() then + self:CallOnClient("ResetBackstabState", "") + elseif CLIENT then + self:ResetBackstabState() + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_laser_pointer/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_laser_pointer/shared.lua new file mode 100644 index 000000000..3550aa502 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_laser_pointer/shared.lua @@ -0,0 +1,169 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Wrangler" + SWEP.RenderGroup = RENDERGROUP_BOTH +end + +heavysandvichtaunt = { "vo/heavy_sandwichtaunt01.wav", "vo/heavy_sandwichtaunt02.wav", "vo/heavy_sandwichtaunt03.wav", "vo/heavy_sandwichtaunt04.wav", "vo/heavy_sandwichtaunt05.wav", "vo/heavy_sandwichtaunt06.wav", "vo/heavy_sandwichtaunt07.wav", "vo/heavy_sandwichtaunt08.wav", "vo/heavy_sandwichtaunt09.wav", "vo/heavy_sandwichtaunt10.wav", "vo/heavy_sandwichtaunt11.wav", "vo/heavy_sandwichtaunt12.wav", "vo/heavy_sandwichtaunt13.wav", "vo/heavy_sandwichtaunt14.wav", "vo/heavy_sandwichtaunt15.wav", "vo/heavy_sandwichtaunt16.wav", "vo/heavy_sandwichtaunt17.wav" } + +SWEP.Base = "tf_weapon_base" + +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_wrangler.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 30 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 30 +SWEP.RangedMinHealing = 45 +SWEP.RangedMaxHealing = 85 + +SWEP.HoldType = "ITEM1" +SWEP.HoldTypeHL2 = "pistol" +SWEP.NextFireRocket = 1 +SWEP.NextFireBullets = 0 +SWEP.NextOuch = 3 + +function SWEP:PrimaryAttack() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if not self.NextFireBullets or CurTime()>=self.NextFireBullets then + v.TargetPos = self.Owner:GetEyeTrace().HitPos + if SERVER then + if v:GetLevel() == 1 then + v:RestartGesture(ACT_RANGE_ATTACK1, true) + --v.Model:RestartGesture(ACT_RANGE_ATTACK1, true) + else + v:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + --v.Model:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + end + local ok = v:TakeAmmo1(1) + if ok then + v:ShootBullets() + else + v:EmitSound(v.Sound_Empty) + if not self.NextOuch or CurTime()>=self.NextOuch then + self.Owner:EmitSoundEx("Weapon_Wrangler.Ouch") + self.NextOuch = CurTime() + 3 + end + end + end + if v:GetLevel() >= 2 then + + --v.Model:RestartGesture(ACT_RANGE_ATTACK1, true) + self.NextFireBullets = CurTime() + 0.1 + else + + --v.Model:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + self.NextFireBullets = CurTime() + 0.13 + end + end + end + end +end + +function SWEP:Think() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + v.Target = nil + if SERVER then + v:SetPoseParameter("aim_pitch", -self.Owner:GetPoseParameter("body_pitch")) + v:SetPoseParameter("aim_yaw", self.Owner:GetPoseParameter("body_yaw")) + v.Model:SetPoseParameter("aim_pitch", -self.Owner:GetPoseParameter("body_pitch")) + v.Model:SetPoseParameter("aim_yaw", self.Owner:GetPoseParameter("body_yaw")) + end + end + end + return self.BaseClass.Think(self) +end + +function SWEP:Holster() + + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if v:GetLevel() == 1 then + v.Shoot_Sound = Sound("Building_Sentrygun.Fire") + elseif v:GetLevel() == 2 then + v.Shoot_Sound = Sound("Building_Sentrygun.Fire2") + elseif v:GetLevel() == 3 then + v.Shoot_Sound = Sound("Building_Sentrygun.Fire3") + end + if SERVER then + v.Wrangled = false + end + if IsValid(animent3) then + animent3:Fire("Kill", "", 0.01) + end + end + end + + + return self.BaseClass.Holster(self) + +end + +function SWEP:Deploy() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if v:GetLevel() == 1 then + v.Shoot_Sound = Sound("Building_Sentrygun.ShaftFire") + elseif v:GetLevel() == 2 then + v.Shoot_Sound = Sound("Building_Sentrygun.ShaftFire2") + elseif v:GetLevel() == 3 then + v.Shoot_Sound = Sound("Building_Sentrygun.ShaftFire3") + end + v.Wrangled = true + if SERVER then + animent3 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent3:SetAngles(v:GetAngles()) + animent3:SetPos(v:GetPos()) + animent3:SetModel("models/buildables/sentry_shield.mdl") + animent3:Spawn() + animent3:SetSkin(v:GetSkin()) + animent3:Activate() + animent3:SetParent(v) + end + end + end + return self.BaseClass.Deploy(self) +end + +function SWEP:SecondaryAttack() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if not self.NextFireRocket or CurTime()>=self.NextFireRocket then + v.TargetPos = self.Owner:GetEyeTrace().HitPos + if SERVER then + local ok = v:TakeAmmo2(1) + if ok then + v:ShootRocket() + self.NextFireRocket = CurTime() + 3 + v:RestartGesture(ACT_RANGE_ATTACK2, true) + v.Model:RestartGesture(ACT_RANGE_ATTACK2, true) + else + v:EmitSound(v.Sound_Empty) + self.NextFireRocket = CurTime() + 0.25 + self:SendWeaponAnim(ACT_ITEM1_VM_IDLE_2) + end + end + end + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_leadpipe/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_leadpipe/shared.lua new file mode 100644 index 000000000..d3ea77635 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_leadpipe/shared.lua @@ -0,0 +1,325 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Leadpipe" + SWEP.Slot = 2 + + function SWEP:ResetBackstabState() + self.NextBackstabIdle = nil + self.BackstabState = false + self.NextAllowBackstabAnim = CurTime() + 0.8 + end + + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_leadpipe_heavy.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_leadpipe.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Bat.Miss") +SWEP.SwingCrit = Sound("Weapon_Bat.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") + +local SpeedTable = { +{40, 1.6}, +{80, 1.4}, +{120, 1.2}, +{160, 1.1}, +} + +SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") +SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") + +SWEP.MinDamage = 0.5 +SWEP.MaxDamage = 1.75 + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.NoCModelOnStockWeapon = false + +SWEP.HoldType = "MELEE_ALLCLASS" +SWEP.BackstabAngle = 180 +SWEP.ShouldOccurFists = true + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") + +end + + + +function SWEP:ShouldBackstab(ent) + if self.Owner:GetPlayerClass() == "spy" then + if not ent then + local tr = self:MeleeAttack(true) + ent = tr.Entity + end + + if not IsValid(ent) or not self.Owner:CanDamage(ent) or ent:Health()<=0 or not ent:CanReceiveCrits() or inspecting == true or inspecting_post == true then + return false + end + + if not self.BackstabCos then + self.BackstabCos = math.cos(math.rad(self.BackstabAngle * 0.5)) + end + + local v1 = ent:GetPos() - self.Owner:GetPos() + local v2 = ent:GetAngles():Forward() + + v1.z = 0 + v2.z = 0 + v1:Normalize() + v2:Normalize() + + return v1:Dot(v2) > self.BackstabCos + end +end + +function SWEP:Think() + self:CallBaseFunction("Think") + if self:GetItemData().model_player == "models/weapons/c_models/c_frying_pan/c_frying_pan.mdl" then + self.HitRobot = Sound("MVM_FryingPan.HitFlesh") + end + if self:GetItemData().model_player == "models/weapons/c_models/c_slapping_glove/c_slapping_glove.mdl" then + self.Owner:SetPoseParameter("r_hand_grip", 15) + end + if self.Owner:GetPlayerClass() == "scout" or self.Owner:GetPlayerClass() == "heavy" then + self.Owner:SetPoseParameter("r_arm", 0) + else + self.Owner:SetPoseParameter("r_arm", 3) + end + if self.Owner:GetPlayerClass() == "heavy" then + if self.Owner:KeyDown(IN_ATTACK) then + if self.ShouldOccurFists == true then + if SERVER then + self.Owner:EmitSoundEx("vo/heavy_meleeing0"..math.random(1,6)..".mp3", 80, 100) + self.ShouldOccurFists = false + end + timer.Simple(4, function() + self.ShouldOccurFists = true + end) + end + end + end + if self.Owner:GetPlayerClass() == "scout" then + self.Primary.Delay = 0.5 + else + self.Primary.Delay = 0.80 + self:SetWeaponHoldType("MELEE_ALLCLASS") + if self.Owner:GetPlayerClass() == "spy" then + self.MeleeAttackDelay = 0 + else + self.MeleeAttackDelay = 0.25 + end + end + + if self.Owner:GetPlayerClass() == "engineer" then + self.NoHitSound = true + self.UpgradeSpeed = 25 + self.GlobalCustomHUD = {HudAccountPanel = true} + end + if CLIENT and self.IsDeployed then + if not self.NextAllowBackstabAnim or CurTime() >= self.NextAllowBackstabAnim then + local shouldbackstab = self:ShouldBackstab() + + if shouldbackstab and not self.BackstabState then + self:SendWeaponAnim(ACT_BACKSTAB_VM_UP) + self.NextBackstabIdle = CurTime() + self:SequenceDuration() + elseif not shouldbackstab and self.BackstabState then + self:SendWeaponAnim(ACT_BACKSTAB_VM_DOWN) + self.NextBackstabIdle = nil + end + self.BackstabState = shouldbackstab + + if self.NextBackstabIdle and CurTime()>=self.NextBackstabIdle then + self:SendWeaponAnim(ACT_BACKSTAB_VM_IDLE) + self.NextBackstabIdle = nil + end + + self.NextAllowBackstabAnim = nil + end + end +end + + +function SWEP:Critical(ent,dmginfo) + if self.Owner:GetPlayerClass() == "spy" then + if self:ShouldBackstab(ent) then + return true + end + end + + return self:CallBaseFunction("Critical", ent, dmginfo) +end + +function SWEP:PredictCriticalHit() + if self:ShouldBackstab() then + return true + end +end + + +function SWEP:OnMeleeHit(tr) + if self.Owner:GetPlayerClass() == "engineer" then + if tr.Entity and tr.Entity:IsValid() then + if tr.Entity:IsBuilding() then + local ent = tr.Entity + + if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then + if ent.Sapped == true then + self.Owner:EmitSoundEx("Weapon_Sapper.Removed") + ent.Sapped = false + end + if SERVER then + + local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) + if m > 0 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + self.Owner:RemoveAmmo(m, TF_METAL) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-m) + umsg.End() + elseif ent:GetState() == 1 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + else + self.Owner:EmitSoundEx(self.HitBuildingFailure) + end + end + else + self:EmitSound(self.HitWorld) + end + elseif tr.Entity:IsPlayer() or tr.Entity:IsNPC() then + self:EmitSound(self.HitFlesh) + else + self:EmitSound(self.HitWorld) + end + elseif tr.HitWorld then + self:EmitSound(self.HitWorld) + end + end +end + + +function SWEP:SecondaryAttack() + if self.Owner:GetPlayerClass() == "engineer" then + self:SetNextSecondaryFire(CurTime() + 0.5) + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 75)) do + if v:IsBuilding() and v:GetOwner() == self.Owner then + if v:GetClass() == "obj_sentrygun" then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + --print(builder.MovedBuildingLevel) + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 2 0") + end + elseif v:GetClass() == "obj_dispenser" then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 0 0") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != true then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 1 0") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != false then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 1 1") + end + end + end + end + end +end + + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + self.NameOverride = nil + + if game.SinglePlayer() then + self:CallOnClient("ResetBackstabState", "") + elseif CLIENT then + self:ResetBackstabState() + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_lever_rifle/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_lever_rifle/shared.lua new file mode 100644 index 000000000..2a644533c --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_lever_rifle/shared.lua @@ -0,0 +1,104 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Lever Rifle" +SWEP.Slot = 0 +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_leverrifle_scout.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_leverrifle.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_scattergun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("Weapon_Scatter_Gun.Single") +SWEP.ShootCritSound = Sound("Weapon_Scatter_Gun.SingleCrit") +SWEP.ReloadSound = Sound("TF_Weapon_Shotgun.Reload") + +SWEP.TracerEffect = "bullet_scattergun_tracer01" + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.75 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.625 + +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.KnockbackForceOwner = 225 + +SWEP.KnockbackMaxForce = 600 +SWEP.MinKnockbackDistance = 512 +SWEP.KnockbackAddPitch = -30 + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_scattergun_no_reload_single" then + self.ReloadSingle = false + self.ReloadDiscardClip = true + elseif a.attribute_class == "set_scattergun_has_knockback" then + self.ScattergunHasKnockback = true + end +end + +function SWEP:SetupCModelActivities(item) + if item then + for _,a in pairs(item.attributes or {}) do + if a.attribute_class == "set_scattergun_no_reload_single" and a.value == 1 then + item = table.Copy(item) + item.anim_slot = "ITEM2" + self.HoldType = "ITEM2" + self:SetWeaponHoldType("ITEM2") + break + end + end + end + + return self:CallBaseFunction("SetupCModelActivities", item) +end + +if SERVER then + +function SWEP:DoOwnerKnockback() + if self.Owner:OnGround() then return end + if self.Owner.KnockbackJumpsRemaining and self.Owner.KnockbackJumpsRemaining <= 0 then return end + + local vel = self.Owner:GetVelocity() + local dir = self.Owner:GetAimVector() + local work = vel:Dot(dir) + --if work < 0 then work = 0 end + + local force = self.KnockbackForceOwner + work + if force < 0 then force = 0 end + + self.Owner:SetVelocity(-force * dir) + + self.Owner.KnockbackJumpsRemaining = (self.Owner.KnockbackJumpsRemaining or 1) - 1 + self.Owner:SetThrownByExplosion(true) +end + +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return end + + if SERVER and self.ScattergunHasKnockback then + self:DoOwnerKnockback() + end + + return +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_lunchbox/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_lunchbox/shared.lua new file mode 100644 index 000000000..1535fa134 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_lunchbox/shared.lua @@ -0,0 +1,192 @@ + if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Sandvich" +end + +heavysandwichtaunt = { "scenes/player/heavy/low/sandwichtaunt01.vcd", "scenes/player/heavy/low/sandwichtaunt02.vcd", "scenes/player/heavy/low/sandwichtaunt03.vcd", "scenes/player/heavy/low/sandwichtaunt04.vcd", "scenes/player/heavy/low/sandwichtaunt05.vcd", "scenes/player/heavy/low/sandwichtaunt06.vcd", "scenes/player/heavy/low/sandwichtaunt07.vcd", "scenes/player/heavy/low/sandwichtaunt08.vcd", "scenes/player/heavy/low/sandwichtaunt09.vcd", "scenes/player/heavy/low/sandwichtaunt10.vcd", "scenes/player/heavy/low/sandwichtaunt11.vcd", "scenes/player/heavy/low/sandwichtaunt12.vcd", "scenes/player/heavy/low/sandwichtaunt13.vcd", "scenes/player/heavy/low/sandwichtaunt14.vcd", "scenes/player/heavy/low/sandwichtaunt15.vcd", "scenes/player/heavy/low/sandwichtaunt16.vcd", "scenes/player/heavy/low/sandwichtaunt01.vcd", "scenes/player/heavy/low/sandwichtaunt17.vcd" } + +SWEP.Base = "tf_weapon_base" + +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_sandwich/c_sandwich.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 30 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 30 +SWEP.RangedMinHealing = 45 +SWEP.RangedMaxHealing = 85 + +SWEP.Force = 80 +SWEP.AddPitch = -4 +SWEP.HoldType = "ITEM1" + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_RELOAD + +function SWEP:PrimaryAttack() + if self.Owner:Health() <= self.Owner:GetMaxHealth() - 1 || self:GetItemData().name == "Buffalo Steak Sandvich" then + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + else + self:SetNextPrimaryFire( CurTime() + 5 ) + end + if SERVER then + net.Start("ActivateTauntCam") + net.Send(self.Owner) + end + self.Owner:DoTauntEvent("taunt04", true) + self.Owner:SetNWBool("Taunting", true) + + if SERVER then + + if (self:GetItemData().name != "Buffalo Steak Sandvich") then + timer.Simple(1, function() + --self.WModel2:SetBodygroup(0, 1) + if self.Owner:GetInfoNum("tf_giant_robot",0) == 1 then + return + elseif self.Owner:GetInfoNum("tf_robot",0) == 1 then + return + else + self.Owner:EmitSoundEx("Heavy.SandwichEat") + self:SetBodygroup(0, 1) + GAMEMODE:HealPlayer(self.Owner, self.Owner, 50, true, false) + end + end) + timer.Simple(2, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 100, true, false) + end) + timer.Simple(3, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 100, true, false) + end) + timer.Simple(4, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 100, true, false) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + self.Owner:SetNWBool("Taunting", false) + if self.Owner:Health() <= self.Owner:GetMaxHealth() - 1 then + self.Owner:SendLua("RunConsoleCommand('lastinv')") + end + end) + timer.Simple(5, function() + + if (self.Owner:Health() <= self.Owner:GetMaxHealth() - 1) then + + timer.Simple(self.Primary.Delay, function() + self:SetBodygroup(0, 0) + end) + else + self:SetBodygroup(0, 0) + end + if self.Owner:GetInfoNum("tf_giant_robot",0) == 1 then + self.Owner:EmitSoundEx("vo/mvm/mght/heavy_mvm_m_sandwichtaunt"..math.random(10,17)..".wav", 80, 100) + elseif self.Owner:GetInfoNum("tf_robot",0) == 1 then + self.Owner:EmitSoundEx("vo/mvm/norm/heavy_mvm_sandwichtaunt"..math.random(10,17)..".wav", 80, 100) + else + self.Owner:PlayScene(table.Random(heavysandwichtaunt)) + end + end) + else + + timer.Simple(1, function() + --self.WModel2:SetBodygroup(0, 1) + if self.Owner:GetInfoNum("tf_giant_robot",0) == 1 then + return + elseif self.Owner:GetInfoNum("tf_robot",0) == 1 then + return + else + self.Owner:EmitSoundEx("Heavy.SandwichEat") + self:SetBodygroup(0, 1) + GAMEMODE:StartMiniCritBoost(self.Owner) + GAMEMODE:HealPlayer(self.Owner, self.Owner, 50, true, false) + end + end) + timer.Simple(2, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 100, true, false) + end) + timer.Simple(3, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 100, true, false) + end) + timer.Simple(4, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 100, true, false) + net.Start("DeActivateTauntCam") + net.Send(self.Owner) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SendLua("RunConsoleCommand('lastinv')") + end) + timer.Simple(5, function() + + timer.Simple(self.Primary.Delay, function() + self:SetBodygroup(0, 0) + end) + if self.Owner:GetInfoNum("tf_giant_robot",0) == 1 then + self.Owner:EmitSoundEx("vo/mvm/mght/heavy_mvm_m_sandwichtaunt"..math.random(10,17)..".wav", 80, 100) + elseif self.Owner:GetInfoNum("tf_robot",0) == 1 then + self.Owner:EmitSoundEx("vo/mvm/norm/heavy_mvm_sandwichtaunt"..math.random(10,17)..".wav", 80, 100) + else + self.Owner:PlayScene(table.Random(heavysandwichtaunt)) + end + end) + + + timer.Simple(15, function() + if SERVER then + timer.Simple(20, function() + self.Owner:ResetClassSpeed() + end) + self.Owner:StopParticles() + GAMEMODE:StopMiniCritBoost(self.Owner) + self.Owner:StopSound("Weapon_General.CritPower") + end + end) + + end + end +end + +function SWEP:SecondaryAttack() + self:SetNextSecondaryFire( CurTime() + 20 ) + if SERVER then + local healthkit = ents.Create("item_healthkit_small") + healthkit:SetPos(self.Owner:GetEyeTrace().StartPos) + healthkit:SetOwner(self.Owner) + healthkit.RespawnTime = -1 + healthkit:Spawn() + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_chocolate/c_chocolate.mdl" or self:GetItemData().model_player == "models/weapons/c_models/c_chocolate/c_chocolate.mdl" then + healthkit:SetModel("models/workshop/weapons/c_models/c_chocolate/plate_chocolate.mdl") + elseif self:GetItemData().model_player == "models/workshop/weapons/c_models/c_chocolate/c_chocolate.mdl" or self:GetItemData().model_player == "models/weapons/c_models/c_chocolate/c_chocolate.mdl" then + healthkit:SetModel("models/items/banana/plate_banana.mdl") + elseif self:GetItemData().model_player == "models/weapons/c_models/c_sandwich/c_robo_sandwich.mdl" then + healthkit:SetModel("models/items/plate_robo_sandwich.mdl") + else + healthkit:SetModel("models/items/plate.mdl") + end + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * 10 + + healthkit:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + healthkit:GetPhysicsObject():ApplyForceCenter(vel) + healthkit.HealthPercentage = 40.5 + healthkit:DropWithGravity(vel) + self.Owner:SelectWeapon(self.Owner:GetWeapons()[1]) + end +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_lunchbox_drink/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_lunchbox_drink/shared.lua new file mode 100644 index 000000000..af2495728 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_lunchbox_drink/shared.lua @@ -0,0 +1,173 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Bonk! Atomic Punch" +SWEP.Slot = 1 + +function SWEP:ResetParticles(state_override) + self:CallBaseFunction("ResetParticles", state_override) + + if not self.DoneDeployParticle then + if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then + local ent = self:GetViewModelEntity() + if IsValid(ent) then + ParticleEffectAttach("energydrink_splash", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("drink_spray")) + end + end + + self.DoneDeployParticle = true + end +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") + + ParticleEffectAttach("energydrink_splash", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("drink_spray")) +end + +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 40 +SWEP.RangedMinHealing = 45 +SWEP.RangedMaxHealing = 85 + +SWEP.HoldType = "ITEM1" + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_ITEM1_VM_RELOAD + +function SWEP:Deploy() + self.BaseClass.Deploy(self) +end + +function SWEP:PrimaryAttack() + self:SetNextPrimaryFire(CurTime() + 40) + self.Owner:DoTauntEvent("taunt04", true) + self.Owner:SetNWBool("Taunting", true) + if SERVER then + self.Owner:ConCommand("tf_tp_simulation_toggle") + end + if (self:GetItemData().name != "Crit-a-Cola") then + timer.Simple(1.2, function() + self.Owner:DoTauntEvent("a_flinch01", true) + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("Bonked", true) + if SERVER then + ParticleEffectAttach( 'warp_version', PATTACH_ABSORIGIN_FOLLOW, self.Owner, 0) + local att = 1 + local att2 = 1 + local att3 = 1 + local att4 = 1 + local att5 = 1 + if (self:GetOwner():LookupAttachment("back_upper")) then + + att = self:GetOwner():LookupAttachment("back_upper") + att2 = self:GetOwner():LookupAttachment("back_lower") + att3 = self:GetOwner():LookupAttachment("foot_R") + att4 = self:GetOwner():LookupAttachment("foot_L") + att5 = self:GetOwner():LookupAttachment("hand_L") + + end + if self:GetOwner():Team() == TEAM_BLU then + self:GetOwner().trail = util.SpriteTrail( self:GetOwner(), att, Color( 255, 255, 255 ), false, 12, 12, 0.5, 1 / ( 96 * 1 ), "effects/beam001_blu" ) + self:GetOwner().trail2 = util.SpriteTrail( self:GetOwner(), att2, Color( 255, 255, 255 ), false, 16, 16, 0.5, 1 / ( 96 * 1 ), "effects/beam001_blu" ) + self:GetOwner().trail3 = util.SpriteTrail( self:GetOwner(), att3, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail4 = util.SpriteTrail( self:GetOwner(), att4, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail5 = util.SpriteTrail( self:GetOwner(), att5, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_blu" ) + else + self:GetOwner().trail = util.SpriteTrail( self:GetOwner(), att, Color( 255, 255, 255 ), false, 12, 12, 0.5, 1 / ( 96 * 1 ), "effects/beam001_red" ) + self:GetOwner().trail2 = util.SpriteTrail( self:GetOwner(), att2, Color( 255, 255, 255 ), false, 16, 16, 0.5, 1 / ( 96 * 1 ), "effects/beam001_red" ) + self:GetOwner().trail3 = util.SpriteTrail( self:GetOwner(), att3, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail4 = util.SpriteTrail( self:GetOwner(), att4, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_white" ) + self:GetOwner().trail5 = util.SpriteTrail( self:GetOwner(), att5, Color( 255, 255, 255 ), false, 8, 8, 0.5, 1 / ( 96 * 1 ), "effects/beam001_red" ) + end + end + end) + timer.Simple(10, function() + if SERVER then + self.Owner:EmitSoundEx("TFPlayer.StunImpact") + self.Owner:SetClassSpeed(self.Owner:GetClassSpeed() * 0.75) + ParticleEffectAttach("bonk_text", PATTACH_POINT_FOLLOW, self.Owner, self.Owner:LookupAttachment("head")) + timer.Simple(10, function() + self.Owner:ResetClassSpeed() + end) + self.Owner:ConCommand("tf_firstperson") + self.Owner:StopParticles() + if SERVER then + if (IsValid(self:GetOwner().trail)) then + self:GetOwner().trail:Remove() + self:GetOwner().trail2:Remove() + self:GetOwner().trail3:Remove() + self:GetOwner().trail4:Remove() + self:GetOwner().trail5:Remove() + end + end + self.Owner:SetNWBool("Bonked", false) + end + end) + timer.Simple(3, function() + if SERVER then + self:EmitSound( "Scout.Invincible0"..math.random(1,4)) + end + end) + + else + timer.Simple(0.92, function() + if SERVER then + if (self.Owner:GetWeapons()[1] == self) then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[2]) + else + self.Owner:SelectWeapon(self.Owner:GetWeapons()[1]) + end + end + self.Owner:ConCommand("tf_firstperson") + self.Owner:SetNWBool("Taunting", false) + self.Owner:SetNWBool("Bonked", false) + self.Owner:AddPlayerState(PLAYERSTATE_MARKED,true) + if SERVER then + GAMEMODE:StartMiniCritBoost(self.Owner) + self.Owner:StopSound("Weapon_General.CritPower") + self.Owner:EmitSoundEx("Weapon_General.CritPower") + end + end) + timer.Simple(10, function() + if SERVER then + timer.Simple(20, function() + self.Owner:ResetClassSpeed() + end) + self.Owner:StopParticles() + timer.Simple(5, function() + self.Owner:RemovePlayerState(PLAYERSTATE_MARKED) + end) + GAMEMODE:StopMiniCritBoost(self.Owner) + self.Owner:StopSound("Weapon_General.CritPower") + end + end) + end + timer.Simple(40, function() + if CLIENT then + self.Owner:EmitSoundEx("player/recharged.wav", 95) + end + end) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_mannmelter/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_mannmelter/shared.lua new file mode 100644 index 000000000..0b8885512 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_mannmelter/shared.lua @@ -0,0 +1,117 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Mannmelter" +SWEP.HasCModel = true +SWEP.Slot = 1 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("weapons/mannmelter_shoot.wav") +SWEP.ShootCritSound = Sound("TFWeapon_FlareGun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_FlareGun.WorldReload") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 2.02 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "ITEM1" + +SWEP.ProjectileShootOffset = Vector(0, 8, -5) + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.VM_DRAW = ACT_SECONDARY2_VM_DRAW +SWEP.VM_IDLE = ACT_SECONDARY2_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_SECONDARY2_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_SECONDARY2_VM_RELOAD + +function SWEP:PrimaryAttack() + if self.NextIdle then return end + + if not self:CanPrimaryAttack() then + return + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile() + + self.NextIdle = CurTime()+self.Primary.Delay + + self:TakePrimaryAmmo(1) + + self:StopTimers() + + self.Owner:ViewPunch( self.PunchView ) + + self:RollCritical() +end + +function SWEP:ShootProjectile() + if SERVER then + -- lol syringe + + local syringe = ents.Create("tf_projectile_flare") + local ang = self.Owner:EyeAngles() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(ang) + syringe.Inflictor = self + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + self:InitProjectileAttributes(syringe) + + syringe.NameOverride = self:GetItemData().item_iconname + syringe:Spawn() + end + + self:ShootEffects() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + self.IsDeployed = true + end + + self:Inspect() +end + +local WeaponBodygroups = { + shell = 1, +} + +function SWEP:FireAnimationEvent(pos, ang, event, options) + if event == 37 then + local bodygroup, set = string.match(options, "(.-)%s+(%d+)") + bodygroup = WeaponBodygroups[bodygroup or ""] + set = tonumber(set) + + if bodygroup and set and IsValid(self.CModel) then + self.CModel:SetBodygroup(bodygroup, set) + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_master_sword/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_master_sword/shared.lua new file mode 100644 index 000000000..6ea6a169e --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_master_sword/shared.lua @@ -0,0 +1,238 @@ +if CLIENT then + SWEP.WepSelectIcon = surface.GetTextureID( "vgui/hud/weapon_l4d2_chainsaw" ) + SWEP.DrawWeaponInfoBox = false + SWEP.BounceWeaponIcon = false + SWEP.RenderGroup = RENDERGROUP_BOTH + killicon.Add( "weapon_l4d2_chainsaw", "vgui/hud/weapon_l4d2_chainsaw", Color( 0, 0, 0, 255 ) ) + end + + SWEP.Base = "tf_weapon_gun_base" + + SWEP.PrintName = "Texan Chainsaw" + + SWEP.ViewModel = "models/weapons/melee/v_chainsaw.mdl" + SWEP.WorldModel = "models/weapons/c_models/c_shotgun/c_shotgun.mdl" + + SWEP.ViewModelFlip = false + + SWEP.SwayScale = 0.5 + SWEP.BobScale = 0.5 + + SWEP.AutoSwitchTo = false + SWEP.AutoSwitchFrom = false + SWEP.Weight = 5 + + SWEP.Slot = 0 + SWEP.SlotPos = 0 + + SWEP.UseHands = false + SWEP.HoldType = "PRIMARY" + SWEP.FiresUnderwater = false + SWEP.DrawCrosshair = true + SWEP.DrawAmmo = true + SWEP.CSMuzzleFlashes = 1 + + SWEP.WalkSpeed = 250 + SWEP.RunSpeed = 500 + + SWEP.Cut = 0 + + SWEP.Idle = 0 + SWEP.IdleTimer = CurTime() + + SWEP.Primary.Sound = Sound( "Chainsaw.FullThrottle" ) + SWEP.Primary.ClipSize = -1 + SWEP.Primary.DefaultClip = 128 + SWEP.Primary.MaxAmmo = 200 + SWEP.Primary.Automatic = true + SWEP.Primary.Ammo = TF_METAL + SWEP.Primary.Damage = 36 + SWEP.Primary.TakeAmmo = 1 + SWEP.Primary.Recoil = 2 + SWEP.Primary.Delay = 0.1 + SWEP.Primary.Force = 5000 + + SWEP.Secondary.Sound = Sound( "Weapon.Swing" ) + SWEP.Secondary.ClipSize = -1 + SWEP.Secondary.DefaultClip = -1 + SWEP.Secondary.Automatic = false + SWEP.Secondary.Ammo = "none" + SWEP.Secondary.Damage = 10 + SWEP.Secondary.Delay = 0.73 + SWEP.Secondary.Force = 5000 + + function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) + self.Idle = 0 + self.IdleTimer = CurTime() + 3 + end + + function SWEP:Deploy() + self.ChainsawHighSpeed = CreateSound( self.Owner, self.Primary.Sound ) + self:SetWeaponHoldType( self.HoldType ) + self.Weapon:SendWeaponAnim( ACT_VM_DRAW ) + self:SetNextPrimaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration() ) + self:SetNextSecondaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration() ) + self.Cut = 0 + self.Idle = 0 + self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration() + if SERVER then + self.Owner:EmitSoundEx("weapons/chainsaw/chainsaw_start_0"..math.random(1,2)..".wav") + end + end + + function SWEP:Holster() + self.Cut = 0 + self.Idle = 0 + self.IdleTimer = CurTime() + self.Owner:SetWalkSpeed( 200 ) + self.Owner:SetRunSpeed( 400 ) + if SERVER then + self.Owner:StopSound( "Chainsaw.Start" ) + self.Owner:StopSound( "Chainsaw.Idle" ) + self.ChainsawHighSpeed:StopSound() + self.Owner:StopSound( self.Primary.Sound ) + self.Owner:EmitSoundEx( "Chainsaw.Stop" ) + end + return true + end + + function SWEP:PrimaryAttack() + if self.Weapon:Ammo1() <= 0 then return end + if self.FiresUnderwater == false and self.Owner:WaterLevel() == 3 then return end + self.Owner:StopSound("Chainsaw.Idle") + self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + self.Owner:DoAnimationEvent( ACT_MP_ATTACK_STAND_SECONDARY ) + self.ChainsawHighSpeed:Play() + self.Owner:ViewPunch( Angle( -1 * self.Primary.Recoil, 0, 0 ) ) + self:TakePrimaryAmmo( self.Primary.TakeAmmo ) + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + self:SetNextSecondaryFire( CurTime() + self.Primary.Delay ) + self.Cut = 1 + self.Idle = 0 + self.IdleTimer = CurTime() + 0.2 + --self.Owner:LagCompensation( true ) + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 80, + filter = self.Owner, + mask = MASK_SHOT_HULL, + } ) + if !IsValid( tr.Entity ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 80, + filter = self.Owner, + mins = Vector( -16, -16, 0 ), + maxs = Vector( 16, 16, 0 ), + mask = MASK_SHOT_HULL, + } ) + end + if SERVER and IsValid( tr.Entity ) then + local dmginfo = DamageInfo() + local attacker = self.Owner + if !IsValid( attacker ) then + attacker = self + end + dmginfo:SetAttacker( attacker ) + dmginfo:SetInflictor( self ) + dmginfo:SetDamageType(DMG_ALWAYSGIB) + dmginfo:SetDamage( self.Primary.Damage ) + dmginfo:SetDamageForce( self.Owner:GetForward() * self.Primary.Force ) + tr.Entity:TakeDamageInfo( dmginfo ) + if tr.Hit then + if tr.Entity:IsNPC() || tr.Entity:IsPlayer() || tr.Entity:Health() > 0 then + self.Owner:EmitSoundEx( "Chainsaw.Gore"..math.random( 1, 6 ) ) + end + end + end + end + + function SWEP:SecondaryAttack() + self.Owner:EmitSoundEx( self.Secondary.Sound ) + --self.Owner:LagCompensation( true ) + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 75, + filter = self.Owner, + mask = MASK_SHOT_HULL, + } ) + if !IsValid( tr.Entity ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 75, + filter = self.Owner, + mins = Vector( -16, -16, 0 ), + maxs = Vector( 16, 16, 0 ), + mask = MASK_SHOT_HULL, + } ) + end + if SERVER and tr.Hit and !( tr.Entity:IsNPC() || tr.Entity:IsPlayer() || tr.Entity:Health() > 0 ) then + self.Owner:EmitSoundEx( "Weapon.HitWorld" ) + end + if SERVER and IsValid( tr.Entity ) then + local dmginfo = DamageInfo() + local attacker = self.Owner + if !IsValid( attacker ) then + attacker = self + end + dmginfo:SetAttacker( attacker ) + dmginfo:SetInflictor( self ) + dmginfo:SetDamage( self.Secondary.Damage ) + dmginfo:SetDamageForce( self.Owner:GetForward() * self.Secondary.Force ) + tr.Entity:TakeDamageInfo( dmginfo ) + if tr.Hit then + if tr.Entity:IsNPC() or tr.Entity:IsPlayer() and GAMEMODE:EntityTeam(tr.Entity) != self.Owner:Team() and tr.Entity:Health() > 0 then + self.Owner:EmitSoundEx( "Weapon.HitInfected" ) + end + if tr.Entity:IsNPC() or tr.Entity:IsPlayer() and GAMEMODE:EntityTeam(tr.Entity) == self.Owner:Team() and tr.Entity:Health() > 0 then + self.Owner:EmitSoundEx( "player/survivor/hit/rifle_swing_hit_survivor"..math.random(1,2)..".wav" ) + end + if !( tr.Entity:IsNPC() || tr.Entity:IsPlayer() || tr.Entity:Health() > 0 ) then + self.Owner:EmitSoundEx( "Weapon.HitWorld" ) + end + end + end + self.Weapon:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:DoAnimationEvent( ACT_MP_ATTACK_STAND_MELEE ) + self:SetNextPrimaryFire( CurTime() + self.Secondary.Delay ) + self:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) + self.Idle = 0 + self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration() + end + + function SWEP:Reload() + end + + function SWEP:Think() + if self.Cut == 1 and self.Owner:KeyReleased( IN_ATTACK ) then + if SERVER then + self.ChainsawHighSpeed:Stop() + self.Owner:EmitSoundEx( "Chainsaw.Stop" ) + end + self.Cut = 0 + end + if self.Cut == 1 and self.Weapon:Ammo1() <= 0 then + if SERVER then + self.Owner:StopSound( self.Primary.Sound ) + self.Owner:EmitSoundEx( "Chainsaw.Stop" ) + end + self.Cut = 0 + end + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 75, + filter = self.Owner, + mask = MASK_SHOT_HULL, + } ) + if self.Idle == 0 and self.IdleTimer > CurTime() and self.IdleTimer < CurTime() + 0.1 and self:Ammo1() >= 1 then + self.Weapon:SendWeaponAnim( ACT_VM_IDLE ) + if SERVER then + self.Owner:EmitSoundEx("Chainsaw.Idle") + end + self.Idle = 1 + end + if self.Weapon:Ammo1() > self.Primary.MaxAmmo then + self.Owner:SetAmmo( self.Primary.MaxAmmo, self.Primary.Ammo ) + end + end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_mechanical_arm/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_mechanical_arm/shared.lua new file mode 100644 index 000000000..e6790eeb5 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_mechanical_arm/shared.lua @@ -0,0 +1,224 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Short Circuit" +SWEP.Slot = 1 +SWEP.RenderGroup = RENDERGROUP_BOTH +end + +SWEP.Base = "tf_weapon_pistol" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_dex_arm/c_dex_arm.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pistol" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_BarretsArm.Zap") +SWEP.SecondaryShootSound = Sound("Weapon_BarretsArm.Shot") +SWEP.ShootCritSound = Sound("Weapon_BarretsArm.Zap") +SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_pistol") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 1 +SWEP.MaxDamageRampUp = 2 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.04 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Ammo = TF_METAL +SWEP.Primary.Delay = 0.15 +SWEP.Secondary.Delay = 0.7 +SWEP.ReloadTime = 1.2 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "pistol" + +SWEP.IsRapidFire = true +SWEP.ProjectileShootOffset = Vector(0, 13, -12) + +-- thanks lead + +function SWEP:Think() + self:CallBaseFunction("Think") +end + +function SWEP:CanPrimaryAttack(ent) + if self.Owner:KeyDown(IN_ATTACK2) then + return false + end + return self:Ammo1() > 0 +end + +function SWEP:PreDrawViewModel(vm, vpn, ply) + self.Owner:GetHands():SetBodygroup(1, 1) +end + +function SWEP:Deploy() + self.BaseClass.Deploy(self) + if IsValid(self.Owner) then + self.Owner:SetBodygroup(2, 2) + end +end + +function SWEP:Holster() + if IsValid(self.Owner) then + self.Owner:SetBodygroup(2, 0) + if self.Owner:HasWeapon("tf_weapon_robot_arm") then + self.Owner:SetBodygroup(2, 1) + end + end + + self.Owner:GetHands():SetBodygroup(1, 0) + return self.BaseClass.Holster(self) +end + +function SWEP:OnRemove() + self:Holster() + + return self.BaseClass.OnRemove(self) +end + +function SWEP:InspectAnimCheck() + self.VM_INSPECT_START = ACT_SECONDARY_ALT2_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_SECONDARY_ALT2_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_SECONDARY_ALT2_VM_INSPECT_END +end + +function SWEP:SecondaryShootEffects() + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + if self:GetVisuals() and self:GetVisuals()["sound_single_shot"] then + self.ShootSound = self:GetVisuals()["sound_single_shot"] + self.ShootCritSound = self:GetVisuals()["sound_burst"] + end + if self:Critical() then + self:EmitSound(self.SecondaryShootSound) + else + self:EmitSound(self.SecondaryShootSound, self.ShootSoundLevel, self.ShootSoundPitch) + end + + if SERVER then + if self.MuzzleEffect and self.MuzzleEffect~="" then + umsg.Start("DoMuzzleFlash") + umsg.Entity(self) + umsg.End() + end + end +end + +function SWEP:CanSecondaryAttack() + if (self:Ammo2() > 0) then + return true + end + + return false +end +function SWEP:SecondaryAttack() + self:StopTimers() + if self:Ammo1() < 1 then if SERVER then self.Owner:EmitSoundEx("Weapon_BarretsArm.Fizzle") self:SetNextSecondaryFire(CurTime() + self.Secondary.Delay) end return end + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + self:SetNextSecondaryFire(CurTime() + self.Secondary.Delay) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + if SERVER then + self.Owner:RemoveAmmo(65, self.Primary.Ammo, false) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-65) + umsg.End() + end + + self.NextIdle = CurTime() + self:SequenceDuration() + if self then + if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) + end + end + end + self:ShootProjectile2(self.BulletsPerShot, self.BulletSpread) + + if self:Clip1() <= 0 then + self:Reload() + end + + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + end + end + end + + self:RollCritical() -- Roll and check for criticals first + + self.Owner:ViewPunch( self.PunchView ) + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + + return true +end + +function SWEP:ShootProjectile2() + if SERVER then + local rocket = ents.Create("tf_projectile_shortcircuit") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:SecondaryShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_medigun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_medigun/shared.lua new file mode 100644 index 000000000..67e62e79f --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_medigun/shared.lua @@ -0,0 +1,592 @@ + + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + + self:DTVar("Entity", 0, "BeamEntity") + self:DTVar("Entity", 1, "TargetEntity") +end + +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMedigunEffect(i, target) + if self.LastEffect==i then return end + + if IsValid(self.dt.BeamEntity) then + self.dt.BeamEntity:Remove() + self.dt.BeamEntity = NULL + end + if IsValid(self.InfoTarget) then + self.InfoTarget:Remove() + self.InfoTarget = NULL + end + + if i>0 and IsValid(target) then + local t = GAMEMODE:EntityTeam(self.Owner) + local effect + if t==3 then + effect = "medicgun_beam_blue" + else + effect = "medicgun_beam_red" + end + + local tar = ents.Create("info_dummy") + tar:SetPos(target:GetPos() + Vector(0,0,30)) + tar:Spawn() + tar:SetParent(target) + tar:SetName(tostring(tar)) + + self.InfoTarget = tar + + local beam = ents.Create("info_particle_system") + beam:SetPos(self:GetPos()) + beam:SetParent(self) + beam:SetKeyValue("effect_name",effect) + beam:SetKeyValue("cpoint1", tar:GetName()) + beam:SetKeyValue("start_active", "1") + beam:Spawn() + beam:Activate() + + self.dt.TargetEntity = target + self.dt.BeamEntity = beam + else + self.dt.TargetEntity = NULL + end + + self.LastEffect = i +end + +function SWEP:SetMedigunMuzzleEffect(i) + if self.LastEffect2==i then return end + + umsg.Start("SetMedigunMuzzleEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect2 = i +end + +end + +SWEP.Category = "Team Fortress 2" +SWEP.PrintName = "Medigun" +SWEP.Spawnable = true +if CLIENT then + +SWEP.CustomHUD = {HudMedicCharge = true} + +--[[ +function SWEP:SetMedigunEffect(p, t) + if IsValid(p) and IsValid(t) then + self.MedigunBeam = p + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetTargetEntity(t) + HudHealingTargetID:SetVisible(true) + end + else + self.MedigunBeam = nil + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetVisible(false) + end + end +end +]] + +function SWEP:SetMedigunMuzzleEffect(i) + if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then + return + end + + if self.LastEffect2==i then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==2 then + if t==3 then + effect = "medicgun_invulnstatus_fullcharge_blue" + else + effect = "medicgun_invulnstatus_fullcharge_red" + end + end + + self.Owner:GetViewModel():StopParticles() + self:StopParticles() + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect2 = i +end + +usermessage.Hook("SetMedigunMuzzleEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + + if IsValid(w) and w.SetMedigunMuzzleEffect then + w:SetMedigunMuzzleEffect(i) + end +end) + +function SWEP:ModelDrawn(view) + if IsValid(self.dt.BeamEntity) then + local wep, att + if view then + wep = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() + else + wep = self.WModel + end + att = wep:LookupAttachment("muzzle") + att = wep:GetAttachment(att) + if not att then return end + + self.dt.BeamEntity:SetPos(att.Pos) + self.dt.BeamEntity:SetAngles(att.Ang) + end +end + +end + +PrecacheParticleSystem("medicgun_beam_red") +PrecacheParticleSystem("medicgun_beam_red_invun") +PrecacheParticleSystem("medicgun_beam_blue") +PrecacheParticleSystem("medicgun_beam_blue_invun") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/c_models/c_medic_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_medigun/c_medigun.mdl" +SWEP.Crosshair = "tf_crosshair5" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("WeaponMedigun.HealingWorld") +SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") +SWEP.ChargedSound = Sound("WeaponMedigun.Charged") + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "shotgun" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) +SWEP.Range = 500 + +SWEP.MinHealRate = 24 +SWEP.MaxHealRate = 72 +SWEP.MinLastDamageTime = 10 +SWEP.MaxLastDamageTime = 15 + +SWEP.UberchargeRate = 5 + +tf2heavyuberchargesound = { + "vo/heavy_specialcompleted05.wav", + "vo/heavy_specialcompleted06.wav", + "vo/heavy_specialcompleted03.wav", + "vo/taunts/heavy_taunts01.wav", + "vo/taunts/heavy_taunts02.wav", + "vo/taunts/heavy_taunts03.wav", + "vo/taunts/heavy_taunts04.wav" +} + +tf2engineeruberchargesound = { + "vo/taunts/engineer_taunts01.wav", + "vo/taunts/engineer_taunts01.wav", + "vo/taunts/engineer_mvm_taunt01.wav", + "vo/taunts/engineer_mvm_taunt02.wav", + "vo/taunts/engineer_taunts02.wav", + "vo/taunts/engineer_taunts03.wav", + "vo/taunts/engineer_taunts04.wav", + "vo/taunts/engineer_taunts05.wav", + "vo/taunts/engineer_taunts06.wav", + "vo/taunts/engineer_taunts08.wav", +} + + + + + +function SWEP:CreateSounds() + if SERVER then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.ShootSoundLoop = CreateSound(self, self.ShootSound,rf) + self.ChargedLoop = CreateSound(self, self.ChargedSound,rf) + self.SoundsCreated = true + else + self.ShootSoundLoop = CreateSound(self, self.ShootSound) + self.ChargedLoop = CreateSound(self, self.ChargedSound) + self.SoundsCreated = true + end +end + +function SWEP:SetHealTarget(e) + self.Target = e + + if SERVER then + self:SetMedigunEffect(1, e) + if IsValid(e) then + GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + + if e:IsPlayer() and e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end +end + end + end +end + +function SWEP:ClearHealTarget() + local e = self.Target + + + + self.Target = nil + if SERVER then + self:SetMedigunEffect(0) + if IsValid(e) and e:IsPlayer() then + GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + end + end + end +end + +local function medigun_trace_condition(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsTFPlayer() and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 and + not tr.Entity:HasNPCFlag(NPC_CANNOTHEAL) or wep.Owner:EntityTeam() == TEAM_FRIENDLY and tr.Entity:EntityTeam() != TEAM_FRIENDLY and tr.Entity != wep.Owner and tr.Entity:IsTFPlayer() +end + + +local function medigun_trace_condition_reviver(tr, wep) + return IsValid(tr.Entity) and tr.Entity.IsReviveMark and tr.Entity:EntityTeam()==wep.Owner:EntityTeam() +end + +function SWEP:PrimaryAttack() + if not self.Firing then + local start = self.Owner:GetShootPos() + local endpos = start + self.Owner:GetAimVector() * self.Range + local tr = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition, self) + + local tr2 = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition_reviver, self) + + self.CanInspect = false + if medigun_trace_condition_reviver(tr2, self) then + + self.Firing = true + self:SetHealTarget(tr.Entity) + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if self.Owner:IsValid() and !self.Owner:KeyDown(IN_ATTACK) then self.Owner:AnimRestartGesture( GESTURE_SLOT_JUMP, ACT_MP_ATTACK_STAND_PREFIRE, true ) timer.Stop("LoopPlayerAttack1") return end + timer.Simple(0.01, function() + if self.Owner:IsValid() and !self.Owner:KeyDown(IN_ATTACK) then self.Owner:AnimRestartGesture( GESTURE_SLOT_JUMP, ACT_MP_ATTACK_STAND_PREFIRE, true ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + end) + self.Owner:AnimRestartGesture( GESTURE_SLOT_JUMP, ACT_MP_ATTACK_STAND_PREFIRE, true ) + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.ShootSoundLoop:Play() + timer.Simple(0.8, function() + if tr.Entity:GetClass() == "reviver" then + tr.Entity:GetOwner():Spawn() + tr.Entity:GetOwner():SetPos(tr.Entity:GetPos()) + tr.Entity:GetOwner():EmitSound("mvm/mvm_revive.wav", 90) + tr.Entity:GetOwner():SetModel("models/player/"..tr.Entity:GetOwner():GetPlayerClassTable().ModelName..".mdl") + if tr.Entity:GetOwner():GetPlayerClass() == "heavy" then + tr.Entity:GetOwner():EmitSound("vo/heavy_mvm_resurrect0"..math.random(1,7)..".wav") + elseif tr.Entity:GetPlayerClass() == "scout" then + tr.Entity:GetOwner():EmitSound("vo/scout_mvm_resurrect0"..math.random(1,8)..".wav") + elseif tr.Entity:GetOwner():GetPlayerClass() == "spy" then + tr.Entity:GetOwner():EmitSound("vo/spy_mvm_resurrect0"..math.random(1,9)..".mp3") + elseif tr.Entity:GetOwner():GetPlayerClass() == "soldier" then + tr.Entity:GetOwner():EmitSound("vo/soldier_mvm_resurrect0"..math.random(1,6)..".mp3") + elseif tr.Entity:GetOwner():GetPlayerClass() == "sniper" then + tr.Entity:GetOwner():EmitSound("vo/sniper_mvm_resurrect0"..math.random(1,4)..".mp3") + elseif tr.Entity:GetOwner():GetPlayerClass() == "engineer" then + tr.Entity:GetOwner():EmitSound("vo/engineer_mvm_resurrect0"..math.random(1,3)..".mp3") + elseif tr.Entity:GetOwner():GetPlayerClass() == "demoman" then + tr.Entity:GetOwner():EmitSound("vo/demoman_mvm_resurrect0"..math.random(1,9)..".mp3") + elseif tr.Entity:GetOwner():GetPlayerClass() == "pyro" then + tr.Entity:GetOwner():EmitSound("vo/pyro_laughevil0"..math.random(2,3)..".mp3") + end + timer.Simple(0.1, function() + + tr.Entity:GetOwner():SetPlayerClass(tr.Entity:GetOwner():GetPlayerClass()) + tr.Entity:Remove() + end) + end + end) + elseif medigun_trace_condition(tr, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + timer.Simple(3, function() + if tr.Entity:GetClass() == "reviver" then + tr.Entity:GetOwner():Spawn() + tr.Entity:GetOwner():SetPos(tr.Entity:GetPos()) + tr.Entity:Remove() + end + end) + + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if self.Owner:IsValid() and !self.Owner:KeyDown(IN_ATTACK) then self.Owner:AnimRestartGesture( GESTURE_SLOT_CUSTOM , ACT_MP_ATTACK_STAND_PREFIRE, true ) timer.Stop("LoopPlayerAttack1") return end + timer.Simple(0.01, function() + if self.Owner:IsValid() and !self.Owner:KeyDown(IN_ATTACK) then self.Owner:AnimRestartGesture( GESTURE_SLOT_CUSTOM , ACT_MP_ATTACK_STAND_PREFIRE, true ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + end) + self.Owner:AnimRestartGesture( GESTURE_SLOT_CUSTOM , ACT_MP_ATTACK_STAND_PREFIRE, true ) + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.ShootSoundLoop:Play() + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then + self:EmitSound(self.ShootSound2) + self.NextDeniedSound = CurTime() + 0.5 + end + end + + self:StopTimers() +end + +--if self.Owner:GetNWInt("Ubercharge")>=100 then +function SWEP:SecondaryAttack() +end + + +function SWEP:Reload() +end + +function SWEP:StopFiring() + if IsValid(self.Target) and self.Target:IsPlayer() and self.Target:Alive() then + self.Target:EmitSound("WeaponMedigun.HealingDetachTarget") + self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") + end + + self.Firing = false + self:ClearHealTarget() + + self.CanInspect = true + + self.ShootSoundLoop:Stop() + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_POSTFIRE) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE) + + self.Owner:EmitSoundEx("WeaponMedigun.HealingDetachHealer") + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 +end + +function SWEP:Think() + --self.BaseClass.Think(self) + self:TFViewModelFOV() + + if CLIENT then + if self.Owner==LocalPlayer() then + if self.dt.TargetEntity ~= self.LastTargetEntity then + if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.NextIdle2 and CurTime()>=self.NextIdle2 then + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.Firing and SERVER then + if not self.Owner:KeyDown(IN_ATTACK) or not IsValid(self.Target) or self.Target:Health()<=0 then + self:StopFiring() + return + elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then + self.NextRangeCheck = CurTime() + 0.2 + if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then + self:StopFiring() + return + end + end + + if IsValid(self.Target) then + local maxhealth = self.Target:GetMaxHealth() + local maxoverheal = self.Target:GetMaxOverheal() + + if self.OverhealMultiplier then + maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) + end + + if not self.NextHeal or CurTime()>self.NextHeal then + if self.NextHeal then + local err = (CurTime() - self.NextHeal) / self.LastHealRate + self.HealErrorCumul = (self.HealErrorCumul or 0) + err + + local add = math.floor(self.HealErrorCumul) + self.HealErrorCumul = self.HealErrorCumul - add + + --[[if self.Target:Health()self.NextCharge then + if self.NextCharge then + local err = (CurTime() - self.NextCharge) / self.LastChargeRate + self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err + + local add = math.floor(self.ChargeErrorCumul) + self.ChargeErrorCumul = self.ChargeErrorCumul - add + + local ch = self.Owner:GetNWInt("Ubercharge") + if ch<100 then + ch = math.Clamp(ch + 1 + add, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + if ch>=100 then + self.Owner:Speak("TLK_PLAYER_CHARGEREADY") + self.ChargedLoop:Play() + self:SetMedigunMuzzleEffect(1) + end + end + end + + local rate = self.UberchargeRate + if self.Target:Health()>maxhealth then + rate = rate * 0.5 + end + + if self.UberchargeRateMultiplier then + rate = rate * self.UberchargeRateMultiplier + end + + self.LastChargeRate = rate + self.NextCharge = CurTime() + 1 / rate + end + end + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.Owner:GetNWInt("Ubercharge")>=100 then + self.ChargedLoop:Play() + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.ShootSoundLoop and self.ChargedLoop then + self.ShootSoundLoop:Stop() + self.ChargedLoop:Stop() + end + + self.Firing = false + + if SERVER then + self:ClearHealTarget() + self:SetMedigunMuzzleEffect(0) + else + if self.Owner == LocalPlayer() then + HudHealingTargetID:SetVisible(false) + self.LastTargetEntity = nil + end + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_medigun_machinery/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_medigun_machinery/shared.lua new file mode 100644 index 000000000..cb2849797 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_medigun_machinery/shared.lua @@ -0,0 +1,740 @@ +local function MedigunEffectName(i, t) + if i==2 then + if t==3 then + return "medicgun_beam_machinery" + else + return "medicgun_beam_machinery" + end + elseif i>1 then + if t==2 then + return "medicgun_beam_machinery" + else + end + return "medicgun_beam_machinery" + end +end + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + + self:DTVar("Entity", 0, "BeamEntity") + self:DTVar("Entity", 1, "TargetEntity") +end + +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMedigunEffect(i, target) + if self.LastEffect==i then return end + + if IsValid(self.dt.BeamEntity) then + self.dt.BeamEntity:Remove() + self.dt.BeamEntity = NULL + end + if IsValid(self.InfoTarget) then + self.InfoTarget:Remove() + self.InfoTarget = NULL + end + + if i>0 and IsValid(target) then + local t = GAMEMODE:EntityTeam(self.Owner) + local effect = MedigunEffectName(i, t) + + local tar = ents.Create("info_dummy") + tar:SetPos(target:GetPos() + Vector(0,0,30)) + tar:Spawn() + tar:SetParent(target) + tar:SetName(tostring(tar)) + + self.InfoTarget = tar + + local beam = ents.Create("info_particle_system") + beam:SetPos(self:GetPos()) + beam:SetParent(self) + beam:SetKeyValue("effect_name",effect) + beam:SetKeyValue("cpoint1", tar:GetName()) + beam:SetKeyValue("start_active", "1") + beam:Spawn() + beam:Activate() + + self.dt.TargetEntity = target + self.dt.BeamEntity = beam + else + self.dt.TargetEntity = NULL + end + + self.LastEffect = i +end + +function SWEP:SetMedigunMuzzleEffect(i) + if self.LastEffect2==i then return end + + umsg.Start("SetMedigunMuzzleEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect2 = i +end + +end + +SWEP.PrintName = "Machinery Medigun" +SWEP.Spawnable = true +SWEP.Category = "Team Fortress 2" +if CLIENT then + +SWEP.Slot = 1 +SWEP.CustomHUD = {HudMedicChargeMachinery = true} +SWEP.RenderGroup = RENDERGROUP_BOTH + +--[[ +function SWEP:SetMedigunEffect(p, t) + if IsValid(p) and IsValid(t) then + self.MedigunBeam = p + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetTargetEntity(t) + HudHealingTargetID:SetVisible(true) + end + else + self.MedigunBeam = nil + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetVisible(false) + end + end +end +]] + +function SWEP:SetMedigunMuzzleEffect(i) + if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then + return + end + + if self.LastEffect2==i then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==2 then + if t==3 then + effect = "medicgun_invulnstatus_fullcharge_blue" + else + effect = "medicgun_invulnstatus_fullcharge_red" + end + end + + self.Owner:GetViewModel():StopParticles() + self:StopParticles() + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect2 = i +end + +usermessage.Hook("SetMedigunMuzzleEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + + if IsValid(w) and w.SetMedigunMuzzleEffect then + w:SetMedigunMuzzleEffect(i) + end +end) + +function SWEP:ModelDrawn(view) + if IsValid(self.dt.BeamEntity) then + local wep, att + if view then + wep = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() + else + wep = self + end + att = wep:LookupAttachment("muzzle") + att = wep:GetAttachment(att) + if not att then return end + + self.dt.BeamEntity:SetPos(att.Pos) + self.dt.BeamEntity:SetAngles(att.Ang) + end +end + +end + +PrecacheParticleSystem("medicgun_beam_red") +PrecacheParticleSystem("medicgun_beam_red_invun") +PrecacheParticleSystem("medicgun_beam_blue") +PrecacheParticleSystem("medicgun_beam_blue_invun") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_medic_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_medigun_defense/c_medigun_defense.mdl" +SWEP.Crosshair = "tf_crosshair5" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("WeaponMedigun_Vaccinator.Healing") +SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") +SWEP.ChargedSound = Sound("WeaponMedigun.Charged") + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "SECONDARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) +SWEP.Range = 800 + +SWEP.MinHealRate = 70 +SWEP.MaxHealRate = 100 +SWEP.MinLastDamageTime = 10 +SWEP.MaxLastDamageTime = 15 + +SWEP.UberchargeRate = 0.5 + +tf2heavyuberchargesound = { + "vo/heavy_specialcompleted05.mp3", + "vo/heavy_specialcompleted06.mp3", + "vo/heavy_specialcompleted03.mp3", + "vo/taunts/heavy_taunts01.mp3", + "vo/taunts/heavy_taunts02.mp3", + "vo/taunts/heavy_taunts03.mp3", + "vo/taunts/heavy_taunts04.mp3" +} + +tf2engineeruberchargesound = { + "vo/taunts/engineer_taunts01.mp3", + "vo/taunts/engineer_taunts01.mp3", + "vo/taunts/engineer_mvm_taunt01.mp3", + "vo/taunts/engineer_mvm_taunt02.mp3", + "vo/taunts/engineer_taunts02.mp3", + "vo/taunts/engineer_taunts03.mp3", + "vo/taunts/engineer_taunts04.mp3", + "vo/taunts/engineer_taunts05.mp3", + "vo/taunts/engineer_taunts06.mp3", + "vo/taunts/engineer_taunts08.mp3", +} + + + + + +function SWEP:CreateSounds() + self.ShootSoundLoop = CreateSound(self, self.ShootSound) + self.ChargedLoop = CreateSound(self, self.ChargedSound) + self.SoundsCreated = true +end + +function SWEP:SetHealTarget(e) + self.Target = e + + if SERVER then + self:SetMedigunEffect(1, e) + if IsValid(e) then + GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + + if e:IsPlayer() and e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end +end + end + end +end + +function SWEP:ClearHealTarget() + local e = self.Target + + + + self.Target = nil + if SERVER then + self:SetMedigunEffect(0) + if IsValid(e) and e:IsPlayer() then + GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + end + end + end +end + +local function medigun_trace_condition(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsBuilding() and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 +end +local function medigun_trace_condition_robots(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsPlayer() and + !tr.Entity:IsHL2() and + tr.Entity:GetInfoNum("tf_robot", 0) == 1 and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 +end +local function medigun_trace_condition_mighty_robots(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsPlayer() and + !tr.Entity:IsHL2() and + tr.Entity:GetInfoNum("tf_giant_robot", 0) == 1 and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 +end + +function SWEP:PrimaryAttack() + if not self.Firing then + local start = self.Owner:GetShootPos() + local endpos = start + self.Owner:GetAimVector() * self.Range + local tr = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition, self) + + local tr2 = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition_robots, self) + + self.CanInspect = false + + if medigun_trace_condition(tr, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PREFIRE, true ) + tr.Entity:SetHealth(math.Clamp(tr.Entity:Health() + 5, 0, tr.Entity:GetMaxHealth())) + timer.Simple(0.01, function() + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if self.Firing != true then self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + timer.Create("LoopPlayerAttack2", 1, 0, function() + if self.Firing != true then timer.Stop("LoopPlayerAttack2") return end + if SERVER then + tr.Entity:AddMetal(self.Owner, 2) + if tr.Entity:NeedsResupply() and tr.Entity:GetLevel() >= 2 then + self.Owner:EmitSoundEx("items/gift_pickup.wav", 60, 100) + elseif tr.Entity:GetLevel() <= 3 and tr.Entity:GetBuildingType() != 1 then + self.Owner:EmitSoundEx("items/gift_pickup.wav", 60, 100) + end + end + end) + end) + self.ShootSoundLoop:Play() + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + elseif medigun_trace_condition_robots(tr2, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PREFIRE, true ) + timer.Simple(0.01, function() + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if self.Firing != true then self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + end) + self.ShootSoundLoop:Play() + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + elseif medigun_trace_condition_mighty_robots(tr2, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PREFIRE, true ) + timer.Simple(0.01, function() + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if self.Firing != true then self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + end) + self.ShootSoundLoop:Play() + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then + self:EmitSound(self.ShootSound2) + self.NextDeniedSound = CurTime() + 0.5 + end + end + + self:StopTimers() +end + +--if self.Owner:GetNWInt("Ubercharge")>=100 then +function SWEP:SecondaryAttack() +self:SetNextSecondaryFire( 15 ) +if self.Owner:GetNWInt("Ubercharge")>=200 then +charge = 1 + +--self.Owner:EmitSoundEx("weapons/weapon_crit_charged_on.wav") -- You can remove the arguments that have default values. +self.ChargedASound = Sound("player/invulnerable_on.wav") +self.ChargedOffSoundA = Sound("player/invulnerable_off.wav") + self.ChargedALoop = CreateSound(self, self.ChargedASound) + self.ChargedOffASound = CreateSound(self, self.ChargedOffSoundA) +self.ChargedALoop:Play() +--surface.PlaySound( "weapons/weapon_crit_charged_on.wav" ) + +--[[timer.Create("Test", 0.1, 90,function() + e = self.Target + if IsValid(e) and e:IsPlayer() and e:Alive() then + --blegh = self.LastTargetEntity + --if self.Target:IsPlayer() ~= true then return end + --[[ if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + e = "" + if charge == 1 then + self.Target:AddFlags(FL_GODMODE) + + if self.Target:Team() == TEAM_RED or self.Target:Team() == TEAM_NEUTRAL then + self.Target:SetSkin( 2 ) + else + self.Target:SetSkin( 3 ) + end +else + self.Target:RemoveFlags(FL_GODMODE) + + if self.Target:Team() == TEAM_RED or self.Target:Team() == TEAM_NEUTRAL then + self.Target:SetMaterial("models/effects/invulnfx_red2") + else + self.Target:SetMaterial("models/effects/invulnfx_blue) + end +end +--[[if self.Target == nil then + blegh:RemoveFlags(FL_GODMODE) + + blegh:SetSkin( 0 ) +end +else + +end + + end)]]-- + timer.Create( "UniqueName1", 1, 9, function() + + if self.Owner:GetNWInt("Ubercharge")>=-1 then + ch = self.Owner:GetNWInt("Ubercharge") + ch = math.Clamp(ch - 14, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + --print(ch) + + + --if IsValid(e) and e:IsPlayer() and e:Alive() then + --blegh = self.LastTargetEntity + --if self.Target:IsPlayer() ~= true then return end + --[[ if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity]] + + if self.Target ~= nil then + if charge == 1 then + e = self.Target + self.Target:AddFlags(FL_GODMODE) + + if self.Target:Team() == TEAM_RED or self.Target:Team() == TEAM_NEUTRAL then + self.Target:SetSkin( 2 ) + else + self.Target:SetSkin( 3 ) + end +else + self.Target:RemoveFlags(FL_GODMODE) + + if self.Target:Team() == TEAM_RED or self.Target:Team() == TEAM_NEUTRAL then + self.Target:SetMaterial("") + else + self.Target:SetMaterial("") + end +end +else + e:RemoveFlags(FL_GODMODE) + + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + self.Target:SetMaterial("") + else + self.Target:SetMaterial("") + end +end +--[[if self.Target == nil then + blegh:RemoveFlags(FL_GODMODE) + + if blegh:Team() == TEAM_RED or blegh:Team() == TEAM_NEUTRAL then + self.Target:SetMaterial("") + else + self.Target:SetMaterial("") + end +end]] + +--end + + if ch == 0 then + charge = 0 + self:SetMedigunMuzzleEffect(0) + self.ChargedLoop:Stop() + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + self.Owner:SetSkin( 0 ) + else + self.Owner:SetSkin( 1 ) + end + self.Owner:RemoveFlags(FL_GODMODE) + --self.Owner:EmitSoundEx("weapons/weapon_crit_charged_off.wav") + self.ChargedOffASound:Play() + self.ChargedALoop:Stop() + --self:SetMedigunMuzzleEffect(0) + --self.Owner:SendLua( surface.PlaySound( "weapons/weapon_crit_charged_off.wav" ) ) + if self.Target:Team() == TEAM_RED or self.Target:Team() == TEAM_NEUTRAL then + self.Target:SetSkin( 0 ) + else + self.Target:SetSkin( 1 ) + end + + end + --self.Owner:GetNWInt("Ubercharge") = self.Owner:GetNWInt("Ubercharge") - 1 + --print( "uberdrop" ) + else + --print("Whewh, Thanks doc!") + charge = 0 + end + + end ) +end + end + + +function SWEP:Reload() +end + +function SWEP:StopFiring() + if IsValid(self.Target) and self.Target:IsPlayer() and self.Target:Alive() then + self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") + end + + self.Firing = false + self:ClearHealTarget() + self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE, true ) + + self.CanInspect = true + timer.Stop("LoopPlayerAttack1") + self.ShootSoundLoop:Stop() + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_POSTFIRE) + self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 +end + +function SWEP:Think() + self:TFViewModelFOV() + + if CLIENT then + if self.Owner==LocalPlayer() then + if self.dt.TargetEntity ~= self.LastTargetEntity then + if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.IsDeployed = true + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.NextIdle2 and CurTime()>=self.NextIdle2 then + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.Firing and SERVER then + if not self.Owner:KeyDown(IN_ATTACK) or not IsValid(self.Target) or self.Target:Health()<=0 then + self:StopFiring() + return + elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then + self.NextRangeCheck = CurTime() + 0.2 + if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then + self:StopFiring() + return + end + end + + if IsValid(self.Target) then + local maxhealth = self.Target:GetMaxHealth() + local maxoverheal = self.Target:GetMaxOverheal() + + if self.OverhealMultiplier then + maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) + end + + if not self.NextHeal or CurTime()>self.NextHeal then + if self.NextHeal then + local err = (CurTime() - self.NextHeal) / self.LastHealRate + self.HealErrorCumul = (self.HealErrorCumul or 0) + err + + local add = math.floor(self.HealErrorCumul) + self.HealErrorCumul = self.HealErrorCumul - add + + --[[if self.Target:Health()self.NextCharge then + if self.NextCharge then + local err = (CurTime() - self.NextCharge) / self.LastChargeRate + self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err + + local add = math.floor(self.ChargeErrorCumul) + self.ChargeErrorCumul = self.ChargeErrorCumul - add + + local ch = self.Owner:GetNWInt("Ubercharge") + if ch<200 then + ch = math.Clamp(ch + 1 + add, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + if ch>=200 then + self.Owner:Speak("TLK_PLAYER_CHARGEREADY") + self.ChargedLoop:Play() + self:SetMedigunMuzzleEffect(1) + end + end + end + + local rate = self.UberchargeRate + if self.Target:Health()>maxhealth then + rate = rate * 0.5 + end + + if self.UberchargeRateMultiplier then + rate = rate * self.UberchargeRateMultiplier + end + + self.LastChargeRate = rate + self.NextCharge = CurTime() + 1 / rate + end + end + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.Owner:GetNWInt("Ubercharge")>=200 then + self.ChargedLoop:Play() + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.ShootSoundLoop and self.ChargedLoop then + self.ShootSoundLoop:Stop() + self.ChargedLoop:Stop() + end + + self.Firing = false + + if SERVER then + self:ClearHealTarget() + self:SetMedigunMuzzleEffect(0) + else + if self.Owner == LocalPlayer() then + HudHealingTargetID:SetVisible(false) + self.LastTargetEntity = nil + end + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_medigun_qf/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_medigun_qf/shared.lua new file mode 100644 index 000000000..2d66caf6d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_medigun_qf/shared.lua @@ -0,0 +1,640 @@ +local function MedigunEffectName(i, t) + if i==2 then + if t==3 then + return "medicgun_beam_blue" + else + return "medicgun_beam_red" + end + elseif i>1 then + if t==2 then + return "medicgun_beam_blue_invun" + else + return "medicgun_beam_red_invun" + end + end +end + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + + self:DTVar("Entity", 0, "BeamEntity") + self:DTVar("Entity", 1, "TargetEntity") +end + +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMedigunEffect(i, target) + if self.LastEffect==i then return end + + if IsValid(self.dt.BeamEntity) then + self.dt.BeamEntity:Remove() + self.dt.BeamEntity = NULL + end + if IsValid(self.InfoTarget) then + self.InfoTarget:Remove() + self.InfoTarget = NULL + end + + if i>0 and IsValid(target) then + local t = GAMEMODE:EntityTeam(self.Owner) + local effect = MedigunEffectName(i, t) + + local tar = ents.Create("info_dummy") + tar:SetPos(target:GetPos() + Vector(0,0,30)) + tar:Spawn() + tar:SetParent(target) + tar:SetName(tostring(tar)) + + self.InfoTarget = tar + + local beam = ents.Create("info_particle_system") + beam:SetPos(self:GetPos()) + beam:SetParent(self) + beam:SetKeyValue("effect_name",effect) + beam:SetKeyValue("cpoint1", tar:GetName()) + beam:SetKeyValue("start_active", "1") + beam:Spawn() + beam:Activate() + + self.dt.TargetEntity = target + self.dt.BeamEntity = beam + else + self.dt.TargetEntity = NULL + end + + self.LastEffect = i +end + +function SWEP:SetMedigunMuzzleEffect(i) + if self.LastEffect2==i then return end + + umsg.Start("SetMedigunMuzzleEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect2 = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Medigun" +SWEP.CustomHUD = {HudMedicCharge = true} + +--[[ +function SWEP:SetMedigunEffect(p, t) + if IsValid(p) and IsValid(t) then + self.MedigunBeam = p + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetTargetEntity(t) + HudHealingTargetID:SetVisible(true) + end + else + self.MedigunBeam = nil + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetVisible(false) + end + end +end +]] + +function SWEP:SetMedigunMuzzleEffect(i) + if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then + return + end + + if self.LastEffect2==i then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==2 then + if t==3 then + effect = "medicgun_invulnstatus_fullcharge_blue" + else + effect = "medicgun_invulnstatus_fullcharge_red" + end + end + + self.Owner:GetViewModel():StopParticles() + self:StopParticles() + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect2 = i +end + +usermessage.Hook("SetMedigunMuzzleEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + + if IsValid(w) and w.SetMedigunMuzzleEffect then + w:SetMedigunMuzzleEffect(i) + end +end) + +function SWEP:ModelDrawn(view) + if IsValid(self.dt.BeamEntity) then + local wep, att + if view then + wep = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() + else + wep = self + end + att = wep:LookupAttachment("muzzle") + att = wep:GetAttachment(att) + if not att then return end + + self.dt.BeamEntity:SetPos(att.Pos) + self.dt.BeamEntity:SetAngles(att.Ang) + end +end + +end + +PrecacheParticleSystem("medicgun_beam_red") +PrecacheParticleSystem("medicgun_beam_red_invun") +PrecacheParticleSystem("medicgun_beam_blue") +PrecacheParticleSystem("medicgun_beam_blue_invun") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") + +SWEP.Base = "tf_weapon_gun_base" +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/v_models/v_medigun_medic.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_medigun.mdl" +SWEP.Crosshair = "tf_crosshair5" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_Quick_Fix.Healing") +SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") +SWEP.ChargedSound = Sound("WeaponMedigun.Charged") + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "SECONDARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) +SWEP.Range = 500 + +SWEP.MinHealRate = 100 +SWEP.MaxHealRate = 200 +SWEP.MinLastDamageTime = 10 +SWEP.MaxLastDamageTime = 15 + +SWEP.UberchargeRate = 8 + +tf2heavyuberchargesound = { + "vo/heavy_specialcompleted05.wav", + "vo/heavy_specialcompleted06.wav", + "vo/heavy_specialcompleted03.wav", + "vo/taunts/heavy_taunts01.wav", + "vo/taunts/heavy_taunts02.wav", + "vo/taunts/heavy_taunts03.wav", + "vo/taunts/heavy_taunts04.wav" +} + +tf2engineeruberchargesound = { + "vo/taunts/engineer_taunts01.wav", + "vo/taunts/engineer_taunts01.wav", + "vo/taunts/engineer_mvm_taunt01.wav", + "vo/taunts/engineer_mvm_taunt02.wav", + "vo/taunts/engineer_taunts02.wav", + "vo/taunts/engineer_taunts03.wav", + "vo/taunts/engineer_taunts04.wav", + "vo/taunts/engineer_taunts05.wav", + "vo/taunts/engineer_taunts06.wav", + "vo/taunts/engineer_taunts08.wav", +} + + + + + +function SWEP:CreateSounds() + if SERVER then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.ShootSoundLoop = CreateSound(self, self.ShootSound,rf) + self.ChargedLoop = CreateSound(self, self.ChargedSound,rf) + self.SoundsCreated = true + end +end + +function SWEP:SetHealTarget(e) + self.Target = e + + if SERVER then + self:SetMedigunEffect(1, e) + if IsValid(e) then + GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + + if e:IsPlayer() and e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end +end + end + end +end + +function SWEP:ClearHealTarget() + local e = self.Target + + + + self.Target = nil + if SERVER then + self:SetMedigunEffect(0) + if IsValid(e) and e:IsPlayer() then + GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + end + end + end +end + +local function medigun_trace_condition(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsTFPlayer() and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 and + not tr.Entity:HasNPCFlag(NPC_CANNOTHEAL) +end + +function SWEP:PrimaryAttack() + if not self.Firing then + local start = self.Owner:GetShootPos() + local endpos = start + self.Owner:GetAimVector() * self.Range + local tr = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition, self) + + self.CanInspect = false + + if medigun_trace_condition(tr, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + + self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PREFIRE, true ) + timer.Simple(0.01, function() + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if self.Firing != true then self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + end) + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.ShootSoundLoop:Play() + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + + timer.Simple(3, function() + if tr.Entity:GetClass() == "reviver" then + tr.Entity:GetOwner():Spawn() + tr.Entity:GetOwner():SetPlayerClass(tr.Entity:GetOwner():GetPlayerClass()) + tr.Entity:GetOwner():SetPos(tr.Entity:GetPos()) + tr.Entity:GetOwner():EmitSound("mvm/mvm_revive.wav", 90) + tr.Entity:Remove() + end + end) + elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then + self:EmitSound(self.ShootSound2) + self.NextDeniedSound = CurTime() + 0.5 + end + end + + self:StopTimers() +end + +--if self.Owner:GetNWInt("Ubercharge")>=100 then +function SWEP:SecondaryAttack() +self:SetNextSecondaryFire( 15 ) +if self.Owner:GetNWInt("Ubercharge")>=100 then +charge = 1 + +--self.Owner:EmitSoundEx("weapons/weapon_crit_charged_on.wav") -- You can remove the arguments that have default values. +self.ChargedASound = Sound("player/quickfix_invulnerable_on.wav") +self.ChargedOffSoundA = Sound("player/invulnerable_off.wav") + self.ChargedALoop = CreateSound(self, self.ChargedASound) + self.ChargedOffASound = CreateSound(self, self.ChargedOffSoundA) +self.ChargedALoop:Play() + timer.Create("NowGo!", 0.4, 1, function() + self:EmitSound( "vo/medic_specialcompleted0"..math.random(4,7)..".wav", 80, 100, 1, CHAN_VOICE) + end) +timer.Create("IamBulletproof!", 4.5, 1, function() + if self.Target:GetPlayerClass() == "heavy" then + self.Target:EmitSound( table.Random( tf2heavyuberchargesound ), 80, 100, 1, CHAN_VOICE) + elseif self.Target:GetPlayerClass() == "scout" then + self.Target:EmitSound( "vo/taunts/scout_taunts0"..math.random(4,9)..".wav", 80, 100, 1, CHAN_VOICE) + elseif self.Target:GetPlayerClass() == "engineer" then + self.Target:EmitSound( table.Random( tf2engineeruberchargesound ), 80, 100, 1, CHAN_VOICE) + elseif self.Target:GetPlayerClass() == "soldier" then + self.Target:EmitSound( "vo/taunts/soldier_taunts0"..math.random(6,8)..".wav", 80, 100, 1, CHAN_VOICE) + elseif self.Target:IsHL2() then + self.Target:EmitSound( "vo/taunts/sniper_taunts0"..math.random(4,7)..".wav", 80, 100, 1, CHAN_VOICE) + end +end) +timer.Create("IamBulletproof2!", 0.08, 0, function() + GAMEMODE:HealPlayer(self.Owner, self.Owner, 50, false, true) + GAMEMODE:HealPlayer(self.Target, self.Owner, 50, false, true) +end) +--surface.PlaySound( "weapons/weapon_crit_charged_on.wav" ) + +--[[timer.Create("Test", 0.1, 90,function() + e = self.Target + if IsValid(e) and e:IsPlayer() and e:Alive() then + --blegh = self.LastTargetEntity + --if self.Target:IsPlayer() ~= true then return end + --[[ if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + e = "" + if charge == 1 then +else +end +--[[if self.Target == nil then + blegh:SetSkin( 0 ) +end +else + +end + + end)]]-- + timer.Create( "UniqueName1", 1, 9, function() + + if self.Owner:GetNWInt("Ubercharge")>=-1 then + ch = self.Owner:GetNWInt("Ubercharge") + ch = math.Clamp(ch - 14, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + --print(ch) + + + --if IsValid(e) and e:IsPlayer() and e:Alive() then + --blegh = self.LastTargetEntity + --if self.Target:IsPlayer() ~= true then return end + --[[ if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity]] +--[[if self.Target == nil then +end]] + +--end + + if ch == 0 then + charge = 0 + self:SetMedigunMuzzleEffect(0) + self.ChargedLoop:Stop() + --self.Owner:EmitSoundEx("weapons/weapon_crit_charged_off.wav") + self.ChargedOffASound:Play() + self.ChargedALoop:Stop() + --self:SetMedigunMuzzleEffect(0) + --self.Owner:SendLua( surface.PlaySound( "weapons/weapon_crit_charged_off.wav" ) ) + timer.Stop("IamBulletproof2!") + + end + --self.Owner:GetNWInt("Ubercharge") = self.Owner:GetNWInt("Ubercharge") - 1 + --print( "uberdrop" ) + else + --print("Whewh, Thanks doc!") + charge = 0 + end + + end ) +end + end + + +function SWEP:Reload() +end + +function SWEP:StopFiring() + if IsValid(self.Target) and self.Target:IsPlayer() and self.Target:Alive() then + self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") + end + + self.Firing = false + self:ClearHealTarget() + + self.CanInspect = true + + self.ShootSoundLoop:Stop() + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_POSTFIRE) + self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 +end + +function SWEP:Think() + self:TFViewModelFOV() + + if CLIENT then + if self.Owner==LocalPlayer() then + if self.dt.TargetEntity ~= self.LastTargetEntity then + if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.IsDeployed = true + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.NextIdle2 and CurTime()>=self.NextIdle2 then + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.Firing and SERVER then + if not self.Owner:KeyDown(IN_ATTACK) or not IsValid(self.Target) or self.Target:Health()<=0 then + self:StopFiring() + return + elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then + self.NextRangeCheck = CurTime() + 0.2 + if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then + self:StopFiring() + return + end + end + + if IsValid(self.Target) then + local maxhealth = self.Target:GetMaxHealth() + local maxoverheal = self.Target:GetMaxOverheal() + + if self.OverhealMultiplier then + maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) + end + + if not self.NextHeal or CurTime()>self.NextHeal then + if self.NextHeal then + local err = (CurTime() - self.NextHeal) / self.LastHealRate + self.HealErrorCumul = (self.HealErrorCumul or 0) + err + + local add = math.floor(self.HealErrorCumul) + self.HealErrorCumul = self.HealErrorCumul - add + + --[[if self.Target:Health()self.NextCharge then + if self.NextCharge then + local err = (CurTime() - self.NextCharge) / self.LastChargeRate + self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err + + local add = math.floor(self.ChargeErrorCumul) + self.ChargeErrorCumul = self.ChargeErrorCumul - add + + local ch = self.Owner:GetNWInt("Ubercharge") + if ch<100 then + ch = math.Clamp(ch + 1 + add, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + if ch>=100 then + self.Owner:Speak("TLK_PLAYER_CHARGEREADY") + self.ChargedLoop:Play() + self:SetMedigunMuzzleEffect(1) + end + end + end + + local rate = self.UberchargeRate + if self.Target:Health()>maxhealth then + rate = rate * 0.5 + end + + if self.UberchargeRateMultiplier then + rate = rate * self.UberchargeRateMultiplier + end + + self.LastChargeRate = rate + self.NextCharge = CurTime() + 1 / rate + end + end + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.Owner:GetNWInt("Ubercharge")>=100 then + self.ChargedLoop:Play() + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.ShootSoundLoop and self.ChargedLoop then + self.ShootSoundLoop:Stop() + self.ChargedLoop:Stop() + end + + self.Firing = false + + if SERVER then + self:ClearHealTarget() + self:SetMedigunMuzzleEffect(0) + else + if self.Owner == LocalPlayer() then + HudHealingTargetID:SetVisible(false) + self.LastTargetEntity = nil + end + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_medigun_vaccinator/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_medigun_vaccinator/shared.lua new file mode 100644 index 000000000..e8236635c --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_medigun_vaccinator/shared.lua @@ -0,0 +1,748 @@ +local function MedigunEffectName(i, t) + if i==2 then + if t==3 then + return "medicgun_beam_blue_invun" + else + return "medicgun_beam_red_invun" + end + elseif i>1 then + if t==2 then + return "medicgun_beam_blue_invun" + else + return "medicgun_beam_red_invun" + end + end +end + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + + self:DTVar("Entity", 0, "BeamEntity") + self:DTVar("Entity", 1, "TargetEntity") +end + +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMedigunEffect(i, target) + if self.LastEffect==i then return end + + if IsValid(self.dt.BeamEntity) then + self.dt.BeamEntity:Remove() + self.dt.BeamEntity = NULL + end + if IsValid(self.InfoTarget) then + self.InfoTarget:Remove() + self.InfoTarget = NULL + end + + if i>0 and IsValid(target) then + local t = GAMEMODE:EntityTeam(self.Owner) + local effect = MedigunEffectName(i, t) + + local tar = ents.Create("info_dummy") + tar:SetPos(target:GetPos() + Vector(0,0,30)) + tar:Spawn() + tar:SetParent(target) + tar:SetName(tostring(tar)) + + self.InfoTarget = tar + + local beam = ents.Create("info_particle_system") + beam:SetPos(self:GetPos()) + beam:SetParent(self) + beam:SetKeyValue("effect_name",effect) + beam:SetKeyValue("cpoint1", tar:GetName()) + beam:SetKeyValue("start_active", "1") + beam:Spawn() + beam:Activate() + + self.dt.TargetEntity = target + self.dt.BeamEntity = beam + else + self.dt.TargetEntity = NULL + end + + self.LastEffect = i +end + +function SWEP:SetMedigunMuzzleEffect(i) + if self.LastEffect2==i then return end + + umsg.Start("SetMedigunMuzzleEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect2 = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Medigun" +SWEP.Slot = 1 +SWEP.CustomHUD = {HudMedicCharge = true} + +--[[ +function SWEP:SetMedigunEffect(p, t) + if IsValid(p) and IsValid(t) then + self.MedigunBeam = p + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetTargetEntity(t) + HudHealingTargetID:SetVisible(true) + end + else + self.MedigunBeam = nil + if self.Owner==LocalPlayer() then + HudHealingTargetID:SetVisible(false) + end + end +end +]] + +function SWEP:SetMedigunMuzzleEffect(i) + if not (IsValid(self.Owner) and IsValid(self.Owner:GetViewModel())) then + return + end + + if self.LastEffect2==i then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==2 then + if t==3 then + effect = "medicgun_invulnstatus_fullcharge_blue" + else + effect = "medicgun_invulnstatus_fullcharge_red" + end + end + + self.Owner:GetViewModel():StopParticles() + self:StopParticles() + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect2 = i +end + +usermessage.Hook("SetMedigunMuzzleEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + + if IsValid(w) and w.SetMedigunMuzzleEffect then + w:SetMedigunMuzzleEffect(i) + end +end) + +function SWEP:ModelDrawn(view) + if IsValid(self.dt.BeamEntity) then + local wep, att + if view then + wep = (IsValid(self.CModel) and self.CModel) or self.Owner:GetViewModel() + else + wep = self + end + att = wep:LookupAttachment("muzzle") + att = wep:GetAttachment(att) + if not att then return end + + self.dt.BeamEntity:SetPos(att.Pos) + self.dt.BeamEntity:SetAngles(att.Ang) + end +end + +end + +PrecacheParticleSystem("medicgun_beam_red") +PrecacheParticleSystem("medicgun_beam_red_invun") +PrecacheParticleSystem("medicgun_beam_blue") +PrecacheParticleSystem("medicgun_beam_blue_invun") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_red") +PrecacheParticleSystem("medicgun_invulnstatus_fullcharge_blue") + +SWEP.Base = "tf_weapon_gun_base" +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/v_models/v_medigun_medic.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_medigun_defense/c_medigun_defense.mdl" +SWEP.Crosshair = "tf_crosshair5" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("WeaponMedigun_Vaccinator.Healing") +SWEP.ShootSound3 = Sound("ambient/levels/labs/teleport_rings_loop2.wav") +SWEP.ShootSound4 = Sound("ambient/levels/labs/teleport_malfunctioning.wav") +SWEP.ShootSound2 = Sound("WeaponMedigun.NoTarget") +SWEP.ChargedSound = Sound("WeaponMedigun_Vaccinator.Charged_tier_04") + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "SECONDARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) +SWEP.Range = 500 + +SWEP.MinHealRate = 24 +SWEP.MaxHealRate = 72 +SWEP.MinLastDamageTime = 10 +SWEP.MaxLastDamageTime = 15 + +SWEP.UberchargeRate = 6 + +SWEP.Overpowered = false + +tf2heavyuberchargesound = { + "vo/heavy_specialcompleted05.wav", + "vo/heavy_specialcompleted06.wav", + "vo/heavy_specialcompleted03.wav", + "vo/taunts/heavy_taunts01.wav", + "vo/taunts/heavy_taunts02.wav", + "vo/taunts/heavy_taunts03.wav", + "vo/taunts/heavy_taunts04.wav" +} + +tf2engineeruberchargesound = { + "vo/taunts/engineer_taunts01.wav", + "vo/taunts/engineer_taunts01.wav", + "vo/taunts/engineer_mvm_taunt01.wav", + "vo/taunts/engineer_mvm_taunt02.wav", + "vo/taunts/engineer_taunts02.wav", + "vo/taunts/engineer_taunts03.wav", + "vo/taunts/engineer_taunts04.wav", + "vo/taunts/engineer_taunts05.wav", + "vo/taunts/engineer_taunts06.wav", + "vo/taunts/engineer_taunts08.wav", +} + + + + + +function SWEP:CreateSounds() + if SERVER then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.ShootSoundLoop = CreateSound(self, self.ShootSound,rf) + self.ShootSoundLoop2 = CreateSound(self, self.ShootSound3,rf) + self.ShootSoundLoop3 = CreateSound(self, self.ShootSound4,rf) + self.ChargedLoop = CreateSound(self, self.ChargedSound,rf) + self.SoundsCreated = true + else + + self.ShootSoundLoop = CreateSound(self, self.ShootSound) + self.ShootSoundLoop2 = CreateSound(self, self.ShootSound3) + self.ShootSoundLoop3 = CreateSound(self, self.ShootSound4) + self.ChargedLoop = CreateSound(self, self.ChargedSound) + self.SoundsCreated = true + + end +end + +function SWEP:SetHealTarget(e) + self.Target = e + + if SERVER then + self:SetMedigunEffect(1, e) + if IsValid(e) then + GAMEMODE:AddGlobalAssistant(e, self.Owner, 1, ASSIST_HEAL) + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + + if e:IsPlayer() and e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end +end + end + end +end + +function SWEP:ClearHealTarget() + local e = self.Target + + + + self.Target = nil + if SERVER then + self:SetMedigunEffect(0) + if IsValid(e) and e:IsPlayer() then + GAMEMODE:RemoveGlobalAssistant(e, self.Owner, ASSIST_HEAL) + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + if charge == 1 then + e:RemoveFlags(FL_GODMODE) + if e:Team() == TEAM_RED or e:Team() == TEAM_NEUTRAL then + e:SetSkin( 0 ) + else + e:SetSkin( 1 ) + end + end + end + end +end + +local function medigun_trace_condition(tr, wep) + return + IsValid(tr.Entity) and + tr.Entity:IsTFPlayer() and + tr.Entity:EntityTeam()==wep.Owner:EntityTeam() and + tr.Entity:Health()>0 and + not tr.Entity:HasNPCFlag(NPC_CANNOTHEAL) or wep.Owner:EntityTeam() == TEAM_FRIENDLY and tr.Entity:EntityTeam() != TEAM_FRIENDLY and tr.Entity != wep.Owner and tr.Entity:IsTFPlayer() +end + + +function SWEP:PrimaryAttack() + if not self.Firing then + local start = self.Owner:GetShootPos() + local endpos = start + self.Owner:GetAimVector() * self.Range + local tr = tf_util.MixedTrace({ + start = start, + endpos = endpos, + filter = self.Owner, + mins = Vector(-5, -5, -5), + maxs = Vector(5, 5, 5), + }, medigun_trace_condition, self) + + self.CanInspect = false + + if medigun_trace_condition(tr, self) then + self.Firing = true + self:SetHealTarget(tr.Entity) + + self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_PREFIRE, true ) + timer.Simple(0.01, function() + timer.Create("LoopPlayerAttack1", 0.2, 0, function() + if !self.Owner:KeyDown(IN_ATTACK) then self.Owner:AnimRestartGesture( GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_MP_ATTACK_STAND_POSTFIRE, true ) timer.Stop("LoopPlayerAttack1") return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end) + end) + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_PREFIRE) + self.ShootSoundLoop:Play() + timer.Create("ChangeMedigunPitch", 0.1, 20, function() + if self.Overpowered == true then + self.ShootSoundLoop:ChangePitch(self.ShootSoundLoop:GetPitch() + 2) + end + end) + self.NextIdle = nil + self.NextIdle2 = CurTime() + self:SequenceDuration() + timer.Simple(3, function() + if tr.Entity:GetClass() == "reviver" then + tr.Entity:GetOwner():Spawn() + tr.Entity:GetOwner():SetPlayerClass(tr.Entity:GetOwner():GetPlayerClass()) + tr.Entity:GetOwner():SetPos(tr.Entity:GetPos()) + tr.Entity:GetOwner():EmitSound("mvm/mvm_revive.wav", 90) + tr.Entity:Remove() + end + end) + elseif not self.NextDeniedSound or CurTime()>self.NextDeniedSound then + self:EmitSound(self.ShootSound2) + self.NextDeniedSound = CurTime() + 0.5 + end + end + + self:StopTimers() +end + +--if self.Owner:GetNWInt("Ubercharge")>=100 then +function SWEP:SecondaryAttack() +self:SetNextSecondaryFire( 15 ) +if self.Owner:GetNWInt("Ubercharge")>=100 then +charge = 1 + +--self.Owner:EmitSoundEx("weapons/weapon_crit_charged_on.wav") -- You can remove the arguments that have default values. +self.ChargedASound = Sound("WeaponMedigun_Vaccinator.InvulnerableOn") +self.ChargedOffSoundA = Sound("WeaponMedigun_Vaccinator.InvulnerableOff") + self.ChargedALoop = CreateSound(self, self.ChargedASound) + self.ChargedOffASound = CreateSound(self, self.ChargedOffSoundA) +self.Owner:AddFlags(FL_GODMODE) +self.ChargedALoop:Play() + if SERVER then + timer.Create("NowGo!", 0.01, 1, function() + self:EmitSound( "vo/medic_specialcompleted0"..math.random(4,7)..".wav", 80, 100, 1, CHAN_VOICE) + end) + local shield = ents.Create("prop_dynamic") + shield:SetPos(self.Target:GetPos()) + shield:SetAngles(self.Target:GetAngles()) + shield:SetModel("models/effects/resist_shield/resist_shield.mdl") + if self.Target:Team() == TEAM_BLU then + shield:SetSkin(1) + elseif self.Target:Team() == TF_TEAM_PVE_INVADERS then + shield:SetSkin(1) + else + shield:SetSkin(0) + end + shield:Spawn() + shield:SetName("medigunshield") + shield:SetParent(self.Target) + end +--surface.PlaySound( "weapons/weapon_crit_charged_on.wav" ) + +--[[timer.Create("Test", 0.1, 90,function() + e = self.Target + if IsValid(e) and e:IsPlayer() and e:Alive() then + --blegh = self.LastTargetEntity + --if self.Target:IsPlayer() ~= true then return end + --[[ if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + e = "" + if charge == 1 then + self.Target:AddFlags(FL_GODMODE) +else + self.Target:RemoveFlags(FL_GODMODE) +end +--[[if self.Target == nil then + blegh:RemoveFlags(FL_GODMODE) + + blegh:SetSkin( 0 ) +end +else + +end + + end)]]-- + timer.Create( "UniqueName1", 1, 9, function() + + if self.Owner:GetNWInt("Ubercharge")>=-1 then + ch = self.Owner:GetNWInt("Ubercharge") + ch = math.Clamp(ch - 16, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + --print(ch) + + + --if IsValid(e) and e:IsPlayer() and e:Alive() then + --blegh = self.LastTargetEntity + --if self.Target:IsPlayer() ~= true then return end + --[[ if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity]] + + if self.Target ~= nil then + if charge == 1 then + e = self.Target + self.Target:AddFlags(FL_GODMODE) + +else + self.Target:RemoveFlags(FL_GODMODE) + +end +else + e:RemoveFlags(FL_GODMODE) + +end +--[[if self.Target == nil then + blegh:RemoveFlags(FL_GODMODE) + +end]] + +--end + + if ch == 0 then + charge = 0 + self:SetMedigunMuzzleEffect(0) + self.ChargedLoop:Stop() + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + self.Owner:SetSkin( 0 ) + else + self.Owner:SetSkin( 1 ) + end + self.Owner:RemoveFlags(FL_GODMODE) + --self.Owner:EmitSoundEx("weapons/weapon_crit_charged_off.wav") + self.ChargedOffASound:Play() + self.ChargedALoop:Stop() + --self:SetMedigunMuzzleEffect(0) + --self.Owner:SendLua( surface.PlaySound( "weapons/weapon_crit_charged_off.wav" ) ) + for k,v in ipairs(ents.FindByName("medigunshield")) do + if v:IsValid() then + v:Remove() + end + end + + end + --self.Owner:GetNWInt("Ubercharge") = self.Owner:GetNWInt("Ubercharge") - 1 + --print( "uberdrop" ) + else + --print("Whewh, Thanks doc!") + charge = 0 + end + + end ) +end + end + + +function SWEP:Reload() +end + +function SWEP:StopFiring() + if IsValid(self.Target) and self.Target:IsPlayer() and self.Target:Alive() then + self.Target:Speak("TLK_HEALTARGET_STOPPEDHEALING") + for k,v in ipairs(ents.FindByName("medigunshield")) do + if v:IsValid() then + v:Remove() + end + end + end + + self.Firing = false + self:ClearHealTarget() + + self.CanInspect = true + + self.ShootSoundLoop:Stop() + if self.Overpowered == true then + self.ShootSoundLoop2:Stop() + self:EmitSound("Weapon_Physgun.Off") + end + self:SendWeaponAnim(ACT_SECONDARY_ATTACK_STAND_POSTFIRE) + self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 +end + +function SWEP:Think() + self:TFViewModelFOV() + + + if CLIENT then + if self.Owner==LocalPlayer() then + if self.dt.TargetEntity ~= self.LastTargetEntity then + if IsValid(self.dt.BeamEntity) and IsValid(self.dt.TargetEntity) then + HudHealingTargetID:SetTargetEntity(self.dt.TargetEntity) + HudHealingTargetID:SetVisible(true) + else + HudHealingTargetID:SetVisible(false) + end + self.LastTargetEntity = self.dt.TargetEntity + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.IsDeployed = true + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.NextIdle2 and CurTime()>=self.NextIdle2 then + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.NextIdle = nil + self.NextIdle2 = nil + end + + if self.Firing and SERVER then + if not self.Owner:KeyDown(IN_ATTACK) or not IsValid(self.Target) or self.Target:Health()<=0 then + self:StopFiring() + return + elseif not self.NextRangeCheck or CurTime()>self.NextRangeCheck then + self.NextRangeCheck = CurTime() + 0.2 + if self.Owner:GetShootPos():Distance(self.Target:GetPos())>self.Range then + self:StopFiring() + return + end + end + + if IsValid(self.Target) then + local maxhealth = self.Target:GetMaxHealth() + local maxoverheal = self.Target:GetMaxOverheal() + + if self.OverhealMultiplier then + maxoverheal = math.Round(maxoverheal * self.OverhealMultiplier) + end + + if not self.NextHeal or CurTime()>self.NextHeal then + if self.NextHeal then + local err = (CurTime() - self.NextHeal) / self.LastHealRate + self.HealErrorCumul = (self.HealErrorCumul or 0) + err + + local add = math.floor(self.HealErrorCumul) + self.HealErrorCumul = self.HealErrorCumul - add + + --[[if self.Target:Health()self.NextCharge then + if self.NextCharge then + local err = (CurTime() - self.NextCharge) / self.LastChargeRate + self.ChargeErrorCumul = (self.ChargeErrorCumul or 0) + err + + local add = math.floor(self.ChargeErrorCumul) + self.ChargeErrorCumul = self.ChargeErrorCumul - add + + local ch = self.Owner:GetNWInt("Ubercharge") + if self.Owner:GetNWInt("Ubercharge")==24 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_01") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_01") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_01") + elseif self.Owner:GetNWInt("Ubercharge")==44 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + elseif self.Owner:GetNWInt("Ubercharge")==64 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + end + if ch<100 then + ch = math.Clamp(ch + 1 + add, 0, 100) + self.Owner:SetNWInt("Ubercharge", ch) + if ch>=100 then + self.Owner:Speak("TLK_PLAYER_CHARGEREADY") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + self:SetMedigunMuzzleEffect(1) + end + end + end + + local rate = self.UberchargeRate + if self.Target:Health()>maxhealth then + rate = rate * 0.5 + end + + if self.UberchargeRateMultiplier then + rate = rate * self.UberchargeRateMultiplier + end + + self.LastChargeRate = rate + self.NextCharge = CurTime() + 1 / rate + end + end + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds() + end + + if self.Owner:GetNWInt("Ubercharge")==25 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + if self.Owner:GetNWInt("Ubercharge")==45 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_02") + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + if self.Owner:GetNWInt("Ubercharge")==65 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_03") + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + if self.Owner:GetNWInt("Ubercharge")==100 then + self.Owner:EmitSoundEx("WeaponMedigun_Vaccinator.Charged_tier_04") + if SERVER then + self:SetMedigunMuzzleEffect(1) + end + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.ShootSoundLoop and self.ChargedLoop then + self.ShootSoundLoop:Stop() + self.ChargedLoop:Stop() + end + + self.Firing = false + + if SERVER then + self:ClearHealTarget() + self:SetMedigunMuzzleEffect(0) + else + if self.Owner == LocalPlayer() then + HudHealingTargetID:SetVisible(false) + self.LastTargetEntity = nil + end + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_melee_base/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_melee_base/shared.lua new file mode 100644 index 000000000..12ab9e886 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_melee_base/shared.lua @@ -0,0 +1,998 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Melee" +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" + +SWEP.Primary.Ammo = "none" + +SWEP.HoldType = "MELEE" +SWEP.IsMeleeWeapon = true +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitRobot = Sound("MVM_Weapon_Default.HitFlesh") +SWEP.HitWorld = Sound("") + +SWEP.MeleeAttackDelay = 0.2 +--SWEP.MeleeAttackDelayCritical = 0.25 +SWEP.MeleeRange = 66 + +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.CriticalChance = 4 +SWEP.HasThirdpersonCritAnimation = false +SWEP.NoHitSound = false + +SWEP.ForceMultiplier = 1000 +SWEP.CritForceMultiplier = 1000 +SWEP.ForceAddPitch = 0 +SWEP.CritForceAddPitch = 0 + +SWEP.DamageType = DMG_CLUB +SWEP.CritDamageType = DMG_CLUB + +SWEP.MeleePredictTolerancy = 0.5 + +SWEP.HasCustomMeleeBehaviour = false + +SWEP.VM_HITCENTER = ACT_VM_HITCENTER +SWEP.VM_SWINGHARD = ACT_VM_SWINGHARD + +SWEP.CriticalChance = 18 +SWEP.HullAttackVector = Vector(10, 10, 15) + +local FleshMaterials = { + [MAT_ANTLION] = true, + [MAT_BLOODYFLESH] = true, + [MAT_FLESH] = true, + [MAT_ALIENFLESH] = true, +} + +function SWEP:GetPrimaryFireActivity() + if self.UsesLeftRightAnim then + return self.VM_HITLEFT + else + return self.VM_HITCENTER + end +end + +function SWEP:GetSecondaryFireActivity() + if self.UsesLeftRightAnim then + return self.VM_HITRIGHT + else + return ACT_INVALID + end +end + +function SWEP:CanPrimaryAttack() + if (self.Owner:GetNWBool("Bonked")) then return false end + return true +end + +function SWEP:CanSecondaryAttack() + if (self.Owner:GetNWBool("Bonked")) then return false end + return true +end + +function SWEP:OnMeleeAttack(tr) +end + + +function SWEP:InspectAnimCheck() + -- todo: find a better way to do this + -- InspectAnimCheck probably isn't the best place for this... + if (string.StartWith(self.Owner:GetModel(),"models/infected/")) then return end + if self:GetVisuals() then + if self:GetItemData().image_inventory == "backpack/weapons/v_models/v_fist_heavy" then + if self.Owner:GetPlayerClass() == "charger" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "tank_l4d" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = self.Owner:GetViewModel():GetSequenceActivity(self.Owner:GetViewModel():LookupSequence("draw")) + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "hunter" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DRAW + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + elseif self.Owner:GetPlayerClass() == "boomer" then + self.VM_IDLE = ACT_VM_IDLE + self.VM_DRAW = ACT_VM_DEPLOY + self.VM_HITLEFT = ACT_VM_PRIMARYATTACK + self.VM_HITRIGHT = ACT_VM_PRIMARYATTACK + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK + self.VM_SWINGHARD = ACT_VM_PRIMARYATTACK + else + self.VM_IDLE = ACT_FISTS_VM_IDLE + self.VM_DRAW = ACT_FISTS_VM_DRAW + self.VM_HITLEFT = ACT_FISTS_VM_HITLEFT + self.VM_HITRIGHT = ACT_FISTS_VM_HITRIGHT + self.VM_SWINGHARD = ACT_FISTS_VM_SWINGHARD + end + self.HoldType = "FISTS" + self:SetHoldType("MELEE") + else + local visuals = self:GetVisuals() + if visuals.animation_replacement then + local replace = visuals.animation_replacement + + if replace.act_vm_draw then + self.VM_DRAW = getfenv()[replace.act_vm_draw] + end + + + if replace.act_vm_idle then + self.VM_IDLE = getfenv()[replace.act_vm_idle] + end + + if replace.act_vm_primaryattack then + self.VM_PRIMARYATTACK = getfenv()[replace.act_vm_primaryattack] + end + + if replace.act_vm_hitcenter then + self.VM_HITCENTER = getfenv()[replace.act_vm_hitcenter] + end + if replace.act_vm_hitcenter2 then + self.VM_HITCENTER2 = getfenv()[replace.act_vm_hitcenter2] + end + if replace.act_vm_hitleft then + self.VM_HITLEFT = getfenv()[replace.act_vm_hitleft] + end + + if replace.act_vm_hitright then + self.VM_HITRIGHT = getfenv()[replace.act_vm_hitright] + end + + if replace.act_vm_swinghard then + self.VM_SWINGHARD = getfenv()[replace.act_vm_swinghard] + end + + if replace.act_vm_reload then + self.VM_RELOAD = getfenv()[replace.act_vm_reload] + end + + if replace.act_primary_vm_inspect_end then + self.VM_INSPECT_END = getfenv()[replace.act_primary_vm_inspect_end] + end + + + if replace.act_primary_vm_inspect_start then + self.VM_INSPECT_START = getfenv()[replace.act_primary_vm_inspect_start] + end + + if replace.act_primary_vm_inspect_idle then + self.VM_INSPECT_IDLE = getfenv()[replace.act_primary_vm_inspect_idle] + end + + if replace.act_backstab_vm_down then + self.BACKSTAB_VM_DOWN = getfenv()[replace.act_backstab_vm_down] + end + + if replace.act_backstab_vm_idle then + self.BACKSTAB_VM_IDLE = getfenv()[replace.act_backstab_vm_idle] + end + + if replace.act_backstab_vm_up then + self.BACKSTAB_VM_UP = getfenv()[replace.act_backstab_vm_up] + end + end + + if visuals.sound_single_shot then + self.ShootSound = Sound(visuals.sound_single_shot) + end + + if visuals.sound_melee_miss then + self.Swing = Sound(visuals.sound_melee_miss) + end + + if visuals.sound_melee_hit then + self.HitFlesh = Sound(visuals.sound_melee_hit) + end + if visuals.sound_melee_hit_world then + self.HitWorld = Sound(visuals.sound_melee_hit_world) + end + + + if visuals.sound_burst then + self.SwingCrit = Sound(visuals.sound_burst) + end + + if visuals.sound_double_shot then + self.ShootSound2 = Sound(visuals.sound_double_shot) + end + + if visuals.sound_empty then + self.EmptySound = Sound(visuals.sound_empty) + end + + if visuals.sound_reload then + self.ReloadSound = Sound(visuals.sound_reload) + end + + if visuals.sound_special1 then + self.SpecialSound1 = Sound(visuals.sound_special1) + end + + if visuals.sound_special2 then + self.SpecialSound2 = Sound(visuals.sound_special2) + end + + if visuals.sound_special3 then + self.SpecialSound3 = Sound(visuals.sound_special3) + end + end + end + + if (self:GetItemData().name == "Your Eternal Reward" or self:GetItemData().name == "Wanga Prick" ) then + + self.VM_DRAW = ACT_ITEM2_VM_DRAW + self.VM_IDLE = ACT_ITEM2_VM_IDLE + self.VM_HITCENTER = ACT_ITEM2_VM_HITCENTER + self.VM_SWINGHARD = ACT_ITEM2_VM_SWINGHARD + self.BACKSTAB_VM_DOWN = ACT_ITEM2_BACKSTAB_VM_DOWN + self.BACKSTAB_VM_IDLE = ACT_ITEM2_BACKSTAB_VM_IDLE + self.BACKSTAB_VM_UP = ACT_ITEM2_BACKSTAB_VM_UP + + end + self.BACKSTAB_VM_UP = getfenv()["ACT_"..self.HoldType.."_BACKSTAB_VM_UP"] + self.BACKSTAB_VM_DOWN = getfenv()["ACT_"..self.HoldType.."_BACKSTAB_VM_DOWN"] + self:CallBaseFunction("InspectAnimCheck") +end + +local function OpenLinkedAreaPortal(ent) + local name = ent:GetName() + if not name or name == "" then return end + + for _,v in pairs(ents.FindByClass("func_areaportal")) do + if v.TargetDoorName == name then + v:Fire("Open") + end + end +end +function SWEP:OnMeleeHit(tr) + if CLIENT then return end + if (tr.Entity:GetModel() and string.find(tr.Entity:GetModel(),"door")) then + local ang = self.Owner:EyeAngles() + dir = ang:Forward() + if (!self.HitDoor) then + self.HitDoor = 1 + else + self.HitDoor = self.HitDoor + 1 + end + if (self.Owner:GetPlayerClass() != "tank") then + if (self.HitDoor > 2) then + self.HitDoor = 0 + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetBodygroup(1, 1) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + + OpenLinkedAreaPortal(tr.Entity) + tr.Entity:Remove() + p:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 1000 * 100 + local phys = p:GetPhysicsObject() + if phys and phys:IsValid() then + phys:ApplyForceCenter(vel) + p:SetPhysicsAttacker(self.Owner) + end + end + else + if (self.HitDoor > 0) then + self.HitDoor = 0 + local p = ents.Create("prop_physics") + p:SetModel(tr.Entity:GetModel()) + p:SetBodygroup(1, 1) + p:SetSkin(tr.Entity:GetSkin()) + p:SetPos(tr.Entity:GetPos()) + p:SetAngles(tr.Entity:GetAngles()) + + OpenLinkedAreaPortal(tr.Entity) + tr.Entity:Remove() + p:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * 100 + local phys = p:GetPhysicsObject() + if phys and phys:IsValid() then + phys:ApplyForceCenter(vel) + p:SetPhysicsAttacker(self.Owner) + end + end + end + + end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_xms_gloves/c_xms_gloves.mdl" then + local ent = tr.Entity + if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end + + local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) + + umsg.Start("Notice_EntityHumiliationLaughCounter") + umsg.String(GAMEMODE:EntityName(ent)) + umsg.Short(GAMEMODE:EntityTeam(ent)) + umsg.Short(GAMEMODE:EntityID(ent)) + + umsg.String(InflictorClass) + + umsg.String(GAMEMODE:EntityName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + --[[ + umsg.String(GAMEMODE:EntityName(cooperator)) + umsg.Short(GAMEMODE:EntityTeam(cooperator)) + umsg.Short(GAMEMODE:EntityID(cooperator))]] + + umsg.Bool(self.CurrentShotIsCrit) + umsg.End() + end +end + +function SWEP:MeleeHitSound(tr) + --MsgFN("MeleeHitSound %f", CurTime()) + if CLIENT then + return + end + + if tr.Entity and IsValid(tr.Entity) then + if tr.Entity:IsTFPlayer() then + if tr.Entity:IsBuilding() and (!tr.Entity:IsFriendly(self.Owner) && self.Owner.playerclass == "Engineer" || self.Owner.playerclass != "Engineer") then + --self.Owner:EmitSoundEx(self.HitWorld) + --sound.Play(self.HitWorld, tr.HitPos) + if SERVER then + sound.Play(self.HitWorld, self:GetPos()) + end + else + if tr.Entity:IsBuilding() and (tr.Entity:IsFriendly(self.Owner) && self.Owner.playerclass == "Engineer") then return end + if string.find(tr.Entity:GetModel(),"/bot_") then + self.Owner:EmitSound("MVM_"..self.HitFlesh) + else + self.Owner:EmitSound(self.HitFlesh) + end + + end + else + if tr.Entity:IsBuilding() and (tr.Entity:IsFriendly(self.Owner) && self.Owner.playerclass == "Engineer") then return end + if not self.NoHitSound then + if FleshMaterials[tr.Entity:GetMaterialType()] then + --self.Owner:EmitSoundEx(self.HitFlesh) + --sound.Play(self.HitFlesh, tr.HitPos) + self.Owner:EmitSoundEx(self.HitFlesh) + else + --self.Owner:EmitSoundEx(self.HitWorld) + --sound.Play(self.HitWorld, tr.HitPos) + + if (string.find(tr.Entity:GetModel(),"door")) then + self.Owner:EmitSoundEx(self.HitWorld) + self.Owner:EmitSoundEx("physics/wood/wood_panel_impact_hard1.wav",95) + else + self.Owner:EmitSoundEx(self.HitWorld) + end + end + end + end + else + if tr.Entity:IsBuilding() and (!tr.Entity:IsFriendly(self.Owner) && self.Owner.playerclass == "Engineer") then return end + if not self.NoHitSound then + --self.Owner:EmitSoundEx(self.HitWorld) + --sound.Play(self.HitWorld, tr.HitPos) + self.Owner:EmitSoundEx(self.HitWorld) + end + end +end + +function SWEP:MeleeCritical(tr) + local b = gamemode.Call("ShouldCrit", tr.Entity, self, self.Owner) + + if b ~= nil and b ~= self.CurrentShotIsCrit then + self.CurrentShotIsCrit = b + self.CritTime = CurTime() + return b + end +end + +function SWEP:MeleeAttack(dummy) + local pos = self.Owner:GetShootPos() + local ang = self.Owner:GetAimVector() + local endpos + + if SERVER and not dummy and game.SinglePlayer() then + self:CallOnClient("MeleeAttack","") + end + + if self.Owner:GetInfoNum("tf_giant_robot",0) == 1 then + self.MeleeRange = 200 + end + + if CLIENT and dummy=="" then + dummy = false + end + + local scanmul = 1 + self.MeleePredictTolerancy + + if dummy then + -- When doing a dummy melee attack, perform a wider scan for better prediction + endpos = pos + self.Owner:GetAimVector() * (self.MeleeRange * self.Owner:GetModelScale()) * scanmul + else + endpos = pos + self.Owner:GetAimVector() * (self.MeleeRange * self.Owner:GetModelScale()) + end + + local hitent, hitpos + + if not dummy then + self.Owner:LagCompensation(true) + end + + local tr = util.TraceLine { + start = pos, + endpos = endpos, + filter = self.Owner + } + + if not tr.Hit then + local mins, maxs + local v = self.HullAttackVector + if dummy then + mins, maxs = scanmul * Vector(-v.x, -v.y, -v.z), scanmul * Vector(v.x, v.y, v.z) + else + mins, maxs = Vector(-v.x, -v.y, -v.z), Vector(v.x, v.y, v.z) + end + + tr = util.TraceHull { + start = pos, + endpos = endpos, + filter = self.Owner, + + mins = mins, + maxs = maxs, + } + end + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if SERVER then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + if SERVER then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + + local ply = self.Owner + if (ply:GetModel() == "models/player/scout.mdl") then + ply.playerclass = "Scout" + elseif (ply:GetModel() == "models/player/soldier.mdl") then + ply.playerclass = "Soldier" + elseif (self:GetModel() == "models/player/pyro.mdl") then + ply.playerclass = "Pyro" + elseif (ply:GetModel() == "models/player/demo.mdl") then + ply.playerclass = "Demoman" + elseif (ply:GetModel() == "models/player/heavy.mdl") then + ply.playerclass = "Heavy" + elseif (ply:GetModel() == "models/player/engineer.mdl") then + ply.playerclass = "Engineer" + elseif (ply:GetModel() == "models/player/medic.mdl") then + ply.playerclass = "Medic" + elseif (ply:GetModel() == "models/player/sniper.mdl") then + ply.playerclass = "Medic" + else + local class = ply:GetPlayerClass() + ply.playerclass = string.upper(string.sub(class,1,1))..string.sub(class,2) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + end + end + + if not dummy then + self.Owner:LagCompensation(false) + end + + ----MsgN(Format("HELLO %s",tostring(dummy))) + if dummy then return tr end + + self:OnMeleeAttack(tr) + + local damagedself = false + if self.MeleeHitSelfOnMiss and not tr.HitWorld and not IsValid(tr.Entity) then + damagedself = true + tr.Entity = self.Owner + end + local l4dRange = (90 * self.Owner:GetModelScale()) + if (self.Owner:GetPlayerClass() == "tank_l4d") then + l4dRange = (118 * self.Owner:GetModelScale()) + end + for k,v in ipairs(ents.FindInSphere(self.Owner:GetPos(), l4dRange)) do + if (v and v:IsValid() and self.Owner:IsL4D() and v:IsTFPlayer() and v:EntIndex() != self.Owner:EntIndex() and v:Health() > 0) then + + --local ang = (endpos - pos):GetNormal():Angle() + local ang = self.Owner:EyeAngles() + local dir = ang:Forward() + hitpos = v:NearestPoint(self.Owner:GetShootPos()) - 2 * dir + tr.HitPos = hitpos + + if SERVER then + local mcrit = self:MeleeCritical(tr) + + local pitch, mul, dmgtype + if self.CurrentShotIsCrit then + dmgtype = self.CritDamageType + pitch, mul = self.CritForceAddPitch, self.CritForceMultiplier + else + dmgtype = self.DamageType + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + end + + + if v:ShouldReceiveDefaultMeleeType() then + dmgtype = DMG_CLUB + end + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() * 0.2 + + self:PreCalculateDamage(v) + local dmg = self:CalculateDamage(nil, v) + --dmg = self:PostCalculateDamage(dmg, v) + + local dmginfo = DamageInfo() + dmginfo:SetAttacker(self.Owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce((self.BaseDamage * force_dir * (mul)) * 0.2) + if damagedself then + force_dir.x = -force_dir.x + force_dir.y = -force_dir.y + dmginfo:SetDamageForce((self.BaseDamage * force_dir * (mul)) * 0.5) + v:DispatchBloodEffect() + v:TakeDamageInfo(dmginfo) + else + v:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + if (self.Owner:GetPlayerClass() == "tank_l4d") then + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 1000 + v:SetVelocity(vel) + end + end + + local phys = v:GetPhysicsObject() + if phys and phys:IsValid() then + v:SetPhysicsAttacker(self.Owner) + if (self.Owner:GetPlayerClass() == "tank_l4d") then + + if phys and phys:IsValid() then + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 4000 * 100 * (phys:GetMass() * 0.004) + phys:ApplyForceCenter(vel) + end + end + end + -- Fire a bullet clientside, just for decals and blood effects + + if util.TraceLine({start=hitpos,endpos=hitpos+4*dir}).Entity == v then + if CLIENT then + self:FireBullets{ + Src=hitpos, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=1, + Tracer=0, + } + end + end + end + + if SERVER then + if v:IsBuilding() and (v:IsFriendly(self.Owner) && v.playerclass == "Engineer") then return end + if string.find(v:GetModel(),"/bot_") == true then + self.Owner:EmitSoundEx("MVM_"..self.HitFlesh) + else + v:EmitSound(self.HitFlesh) + end + if (self.Owner:GetPlayerClass() == "charger") then + v:EmitSound(self.HitFlesh) + end + end + + end + end + if tr.Entity and tr.Entity:IsValid() then + --local ang = (endpos - pos):GetNormal():Angle() + local ang = self.Owner:EyeAngles() + local dir = ang:Forward() + hitpos = tr.Entity:NearestPoint(self.Owner:GetShootPos()) - 2 * dir + tr.HitPos = hitpos + if (tr.Entity:IsTFPlayer() and self.Owner:IsL4D()) then return end + if SERVER then + local mcrit = self:MeleeCritical(tr) + + local pitch, mul, dmgtype + if self.CurrentShotIsCrit then + dmgtype = self.CritDamageType + pitch, mul = self.CritForceAddPitch, self.CritForceMultiplier + else + dmgtype = self.DamageType + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + end + + + if tr.Entity:ShouldReceiveDefaultMeleeType() then + dmgtype = DMG_CLUB + end + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() + + self:PreCalculateDamage(tr.Entity) + local dmg = self:CalculateDamage(nil, tr.Entity) + --dmg = self:PostCalculateDamage(dmg, tr.Entity) + + local dmginfo = DamageInfo() + dmginfo:SetAttacker(self.Owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce(self.BaseDamage * force_dir * (mul) * 0.2) + if damagedself then + force_dir.x = -force_dir.x + force_dir.y = -force_dir.y + dmginfo:SetDamageForce(self.BaseDamage * force_dir * (mul) * 0.5) + tr.Entity:DispatchBloodEffect() + tr.Entity:TakeDamageInfo(dmginfo) + else + tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + if (self.Owner:GetPlayerClass() == "tank_l4d") then + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 1000 + tr.Entity:SetVelocity(vel) + end + end + + local phys = tr.Entity:GetPhysicsObject() + if phys and phys:IsValid() then + tr.Entity:SetPhysicsAttacker(self.Owner) + if (self.Owner:GetPlayerClass() == "tank_l4d") then + + if phys and phys:IsValid() then + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * 4000 * 100 * (phys:GetMass() * 0.004) + phys:ApplyForceCenter(vel) + end + end + end + -- Fire a bullet clientside, just for decals and blood effects + + if util.TraceLine({start=hitpos,endpos=hitpos+4*dir}).Entity == tr.Entity then + if CLIENT then + self:FireBullets{ + Src=hitpos, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=1, + Tracer=0, + } + end + end + end + local range = (self.MeleeRange * self.Owner:GetModelScale()) + 18 + local dir = self.Owner:GetAimVector() + + if not util.TraceLine({start=pos,endpos=pos+range*dir}).Hit then + local ang = self.Owner:EyeAngles() + ang.y = ang.y + 25 + local dir1 = ang:Forward() + ang.y = ang.y - 50 + local dir2 = ang:Forward() + + local tr1 = util.TraceLine({start=pos,endpos=pos+range*dir1}) + local tr2 = util.TraceLine({start=pos,endpos=pos+range*dir2}) + + if not tr1.Hit and not tr2.Hit then + dir = nil + elseif tr1.Fraction > tr2.Fraction then + dir = dir2 + tr.HitPos = tr2.HitPos + else + dir = dir1 + tr.HitPos = tr1.HitPos + end + end + if dir and !self.Owner:IsL4D() then + if CLIENT then + if (!tr.Entity:IsFriendly(self.Owner)) then + self:FireBullets{ + Src=pos, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=1, + Tracer=0, + } + end + end + end + self:MeleeHitSound(tr) + self:OnMeleeHit(tr) + elseif tr.HitWorld then + local range = (self.MeleeRange * self.Owner:GetModelScale()) + 18 + local dir = self.Owner:GetAimVector() + + if not util.TraceLine({start=pos,endpos=pos+range*dir}).Hit then + local ang = self.Owner:EyeAngles() + ang.y = ang.y + 25 + local dir1 = ang:Forward() + ang.y = ang.y - 50 + local dir2 = ang:Forward() + + local tr1 = util.TraceLine({start=pos,endpos=pos+range*dir1}) + local tr2 = util.TraceLine({start=pos,endpos=pos+range*dir2}) + + if not tr1.Hit and not tr2.Hit then + dir = nil + elseif tr1.Fraction > tr2.Fraction then + dir = dir2 + tr.HitPos = tr2.HitPos + else + dir = dir1 + tr.HitPos = tr1.HitPos + end + end + if dir and !self.Owner:IsL4D() then + if CLIENT then + self:FireBullets{ + Src=pos, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=1, + Tracer=0, + } + end + end + + self:MeleeHitSound(tr) + self:OnMeleeHit(tr) + end +end + +--[[ +usermessage.Hook("DoMeleeSwing", function(msg) + local wp = msg:ReadEntity() + local crit = msg:ReadBool() + + if crit then + wp:EmitSound(wp.SwingCrit, 100, 100) + else + wp:EmitSound(wp.Swing, 100, 100) + end +end)]] + +function SWEP:PrimaryAttack() + if (!self:CanPrimaryAttack()) then return end + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + local vm = self.Owner:GetViewModel() + if self:CriticalEffect() then + ----MsgN(Format("[%f] From SWEP:PrimaryAttack (%s) : Critical hit!", CurTime(), tostring(self))) + self:EmitSound(self.SwingCrit, 100, 100) + --[[if SERVER then + self:EmitSound(self.SwingCrit, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(true) + umsg.End() + end]] + + if IsValid(vm) then + if SERVER then + if (self:SelectWeightedSequence(self.VM_SWINGHARD) != -1) then + self:SendWeaponAnimEx(self.VM_SWINGHARD) + else + self:SendWeaponAnimEx(self.VM_HITCENTER) + end + end + end + if self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + else + self:EmitSound(self.Swing, 100, 100) + --[[if SERVER then + self:EmitSound(self.Swing, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(false) + umsg.End() + end]] + + if self.UsesLeftRightAnim then + if IsValid(vm) then + if SERVER then + self:SendWeaponAnimEx(self.VM_HITLEFT) + end + end + else + if IsValid(vm) then + if SERVER then + self:SendWeaponAnimEx(self.VM_HITCENTER) + end + end + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + if self.HasCustomMeleeBehaviour then return true end + + if SERVER and IsValid(self.Owner.TargeEntity) then + self.Owner.TargeEntity:OnMeleeSwing() + end + + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self.NextIdle = CurTime() + self:SequenceDuration() + + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + self:StopTimers() + + if IsFirstTimePredicted() then + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + end + return true +end + +function SWEP:SecondaryAttack() + if not self:CallBaseFunction("SecondaryAttack") then return false end + + if self.HasCustomMeleeBehaviour then return true end + + if self:CriticalEffect() then + self:EmitSound(self.SwingCrit, 100, 100) + --[[if SERVER then + self:EmitSound(self.SwingCrit, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(true) + umsg.End() + end]] + self:SendWeaponAnimEx(self.VM_SWINGHARD) + if self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + elseif self.HasThirdpersonCritAnimation2 then + self.Owner:DoAnimationEvent(_G["ACT_MP_THROW"], true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + else + self:EmitSound(self.Swing, 100, 100) + --[[if SERVER then + self:EmitSound(self.Swing, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(false) + umsg.End() + end]] + + self:SendWeaponAnim(self.VM_HITRIGHT) + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + if IsFirstTimePredicted() then + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + end +end + +function SWEP:CanPrimaryAttack() + if (self.Owner:GetNWBool("Bonked")) then return false end + return true +end + +function SWEP:CanSecondaryAttack() + return true +end + +function SWEP:ShootEffects() +end + +function SWEP:Deploy() + self:StopTimers() + + return self:CallBaseFunction("Deploy") +end + +function SWEP:OnRemove() + self:StopTimers() + + return self:CallBaseFunction("OnRemove") +end + +function SWEP:Think() + if self.WorldModel == "models/weapons/c_models/c_headtaker/c_headtaker.mdl" then + self.HitFlesh = Sound("Halloween.HeadlessBossAxeHitFlesh") + self.HitWorld = Sound("Halloween.HeadlessBossAxeHitWorld") + end + + while self.NextMeleeAttack and self.NextMeleeAttack[1] and CurTime() > self.NextMeleeAttack[1] and IsFirstTimePredicted() do + self:MeleeAttack() + table.remove(self.NextMeleeAttack, 1) + + self:RollCritical() + end + self:CallBaseFunction("Think") + + --if self.NextMeleeAttack and CurTime()>=self.NextMeleeAttack then +end + +function SWEP:Holster() + self.NextMeleeAttack = nil + + self:StopTimers() + + return self:CallBaseFunction("Holster") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_melee_base_secondary/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_melee_base_secondary/shared.lua new file mode 100644 index 000000000..747d0c357 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_melee_base_secondary/shared.lua @@ -0,0 +1,513 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Melee" +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_bat.mdl" + +SWEP.Primary.Ammo = "none" + +SWEP.HoldType = "MELEE" + +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("") + +SWEP.MeleeAttackDelay = 0.25 +--SWEP.MeleeAttackDelayCritical = 0.25 +SWEP.MeleeRange = 50 + +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.CriticalChance = 15 +SWEP.HasThirdpersonCritAnimation = false +SWEP.NoHitSound = false + +SWEP.ForceMultiplier = 5000 +SWEP.CritForceMultiplier = 10000 +SWEP.ForceAddPitch = 0 +SWEP.CritForceAddPitch = 0 + +SWEP.DamageType = DMG_CLUB +SWEP.CritDamageType = DMG_CLUB + +SWEP.MeleePredictTolerancy = 0.5 + +SWEP.HasCustomMeleeBehaviour = false + +SWEP.VM_HITCENTER = ACT_VM_HITCENTER +SWEP.VM_SWINGHARD = ACT_VM_SWINGHARD + +SWEP.HullAttackVector = Vector(10, 10, 15) + +function SWEP:InspectAnimCheck() + +end + +local FleshMaterials = { + [MAT_ANTLION] = true, + [MAT_BLOODYFLESH] = true, + [MAT_FLESH] = true, + [MAT_ALIENFLESH] = true, +} + +function SWEP:GetPrimaryFireActivity() + if self.UsesLeftRightAnim then + return self.VM_HITLEFT + else + return self.VM_HITCENTER + end +end + +function SWEP:GetSecondaryFireActivity() + if self.UsesLeftRightAnim then + return self.VM_HITRIGHT + else + return ACT_INVALID + end +end + +function SWEP:CanPrimaryAttack() + return true +end + +function SWEP:CanSecondaryAttack() + return true +end + +function SWEP:OnMeleeAttack(tr) + +end + +function SWEP:OnMeleeHit(tr) + +end + +function SWEP:MeleeHitSound(tr) + --MsgFN("MeleeHitSound %f", CurTime()) + if CLIENT then + return + end + + if tr.Entity and IsValid(tr.Entity) then + if tr.Entity:IsTFPlayer() then + if tr.Entity:IsBuilding() then + --self:EmitSound(self.HitWorld) + --sound.Play(self.HitWorld, tr.HitPos) + sound.Play(self.HitWorld, self:GetPos()) + else + --self:EmitSound(self.HitFlesh) + --sound.Play(self.HitFlesh, tr.HitPos) + sound.Play(self.HitFlesh, self:GetPos()) + end + else + if not self.NoHitSound then + if FleshMaterials[tr.Entity:GetMaterialType()] then + --self:EmitSound(self.HitFlesh) + --sound.Play(self.HitFlesh, tr.HitPos) + sound.Play(self.HitFlesh, self:GetPos()) + else + --self:EmitSound(self.HitWorld) + --sound.Play(self.HitWorld, tr.HitPos) + sound.Play(self.HitWorld, self:GetPos()) + end + end + end + else + if not self.NoHitSound then + --self:EmitSound(self.HitWorld) + --sound.Play(self.HitWorld, tr.HitPos) + sound.Play(self.HitWorld, self:GetPos()) + end + end +end + +function SWEP:MeleeCritical(tr) + local b = gamemode.Call("ShouldCrit", tr.Entity, self, self.Owner) + + if b ~= nil and b ~= self.CurrentShotIsCrit then + self.CurrentShotIsCrit = b + self.CritTime = CurTime() + return b + end +end + +function SWEP:MeleeAttack(dummy) + local pos = self.Owner:GetShootPos() + local ang = self.Owner:GetAimVector() + local endpos + + if SERVER and not dummy and game.SinglePlayer() then + self:CallOnClient("MeleeAttack","") + end + + if CLIENT and dummy=="" then + dummy = false + end + + local scanmul = 1 + self.MeleePredictTolerancy + + if dummy then + -- When doing a dummy melee attack, perform a wider scan for better prediction + endpos = pos + self.Owner:GetAimVector() * self.MeleeRange * scanmul + else + endpos = pos + self.Owner:GetAimVector() * self.MeleeRange + end + + local hitent, hitpos + + if not dummy then + self.Owner:LagCompensation(true) + end + + local tr = util.TraceLine { + start = pos, + endpos = endpos, + filter = self.Owner + } + + if not tr.Hit then + local mins, maxs + local v = self.HullAttackVector + if dummy then + mins, maxs = scanmul * Vector(-v.x, -v.y, -v.z), scanmul * Vector(v.x, v.y, v.z) + else + mins, maxs = Vector(-v.x, -v.y, -v.z), Vector(v.x, v.y, v.z) + end + + tr = util.TraceHull { + start = pos, + endpos = endpos, + filter = self.Owner, + + mins = mins, + maxs = maxs, + } + end + + if not dummy then + self.Owner:LagCompensation(false) + end + + ----MsgN(Format("HELLO %s",tostring(dummy))) + if dummy then return tr end + + self:OnMeleeAttack(tr) + + local damagedself = false + if self.MeleeHitSelfOnMiss and not tr.HitWorld and not IsValid(tr.Entity) then + damagedself = true + tr.Entity = self.Owner + end + + if tr.Entity and tr.Entity:IsValid() then + --local ang = (endpos - pos):GetNormal():Angle() + local ang = self.Owner:EyeAngles() + local dir = ang:Forward() + hitpos = tr.Entity:NearestPoint(self.Owner:GetShootPos()) - 2 * dir + tr.HitPos = hitpos + + if self.Owner:CanDamage(tr.Entity) then + if SERVER then + local mcrit = self:MeleeCritical(tr) + + local pitch, mul, dmgtype + if self.CurrentShotIsCrit then + dmgtype = self.CritDamageType + pitch, mul = self.CritForceAddPitch, self.CritForceMultiplier + else + dmgtype = self.DamageType + pitch, mul = self.ForceAddPitch, self.ForceMultiplier + end + + if tr.Entity:ShouldReceiveDefaultMeleeType() then + dmgtype = DMG_CLUB + end + + ang.p = math.Clamp(math.NormalizeAngle(ang.p - pitch), -90, 90) + local force_dir = ang:Forward() + + self:PreCalculateDamage(tr.Entity) + local dmg = self:CalculateDamage(nil, tr.Entity) + --dmg = self:PostCalculateDamage(dmg, tr.Entity) + + local dmginfo = DamageInfo() + dmginfo:SetAttacker(self.Owner) + dmginfo:SetInflictor(self) + dmginfo:SetDamage(dmg) + dmginfo:SetDamageType(dmgtype) + dmginfo:SetDamagePosition(hitpos) + dmginfo:SetDamageForce(dmg * force_dir * mul) + if damagedself then + force_dir.x = -force_dir.x + force_dir.y = -force_dir.y + dmginfo:SetDamageForce(dmg * force_dir * (mul * 0.5)) + tr.Entity:DispatchBloodEffect() + tr.Entity:TakeDamageInfo(dmginfo) + else + tr.Entity:DispatchTraceAttack(dmginfo, hitpos, hitpos + 5*dir) + end + + local phys = tr.Entity:GetPhysicsObject() + if phys and phys:IsValid() then + tr.Entity:SetPhysicsAttacker(self.Owner) + end + elseif CLIENT then + -- Fire a bullet clientside, just for decals and blood effects + if util.TraceLine({start=hitpos,endpos=hitpos+4*dir}).Entity == tr.Entity then + self:FireBullets{ + Src=hitpos, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=1, + Tracer=0, + } + end + end + end + + self:MeleeHitSound(tr) + self:OnMeleeHit(tr) + elseif tr.HitWorld then + local range = self.MeleeRange + 18 + local dir = self.Owner:GetAimVector() + + if not util.TraceLine({start=pos,endpos=pos+range*dir}).Hit then + local ang = self.Owner:EyeAngles() + ang.y = ang.y + 25 + local dir1 = ang:Forward() + ang.y = ang.y - 50 + local dir2 = ang:Forward() + + local tr1 = util.TraceLine({start=pos,endpos=pos+range*dir1}) + local tr2 = util.TraceLine({start=pos,endpos=pos+range*dir2}) + + if not tr1.Hit and not tr2.Hit then + dir = nil + elseif tr1.Fraction > tr2.Fraction then + dir = dir2 + tr.HitPos = tr2.HitPos + else + dir = dir1 + tr.HitPos = tr1.HitPos + end + end + + if CLIENT then + if dir then + self:FireBullets{ + Src=pos, + Dir=dir, + Spread=Vector(0,0,0), + Num=1, + Damage=1, + Tracer=0, + } + end + end + + self:MeleeHitSound(tr) + self:OnMeleeHit(tr) + end +end + +--[[ +usermessage.Hook("DoMeleeSwing", function(msg) + local wp = msg:ReadEntity() + local crit = msg:ReadBool() + + if crit then + wp:EmitSound(wp.SwingCrit, 100, 100) + else + wp:EmitSound(wp.Swing, 100, 100) + end +end)]] + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if self.HasCustomMeleeBehaviour then return true end + + if SERVER and IsValid(self.Owner.TargeEntity) then + self.Owner.TargeEntity:OnMeleeSwing() + end + + if self:CriticalEffect() then + ----MsgN(Format("[%f] From SWEP:PrimaryAttack (%s) : Critical hit!", CurTime(), tostring(self))) + self:EmitSound(self.SwingCrit, 100, 100) + --[[if SERVER then + self:EmitSound(self.SwingCrit, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(true) + umsg.End() + end]] + self:SendWeaponAnimEx(self.VM_SWINGHARD) + if self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + else + self:EmitSound(self.Swing, 100, 100) + --[[if SERVER then + self:EmitSound(self.Swing, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(false) + umsg.End() + end]] + + if self.UsesLeftRightAnim then + self:SendWeaponAnim(self.VM_HITLEFT) + else + self:SendWeaponAnim(self.VM_HITCENTER) + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + self:StopTimers() + + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + return true +end + +function SWEP:SecondaryAttack() + if not self:CallBaseFunction("Attack") then return false end + + if self.HasCustomMeleeBehaviour then return true end + + if self:CriticalEffect() then + self:EmitSound(self.SwingCrit, 100, 100) + --[[if SERVER then + self:EmitSound(self.SwingCrit, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(true) + umsg.End() + end]] + self:SendWeaponAnimEx(self.VM_SWINGHARD) + if self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + else + self:EmitSound(self.Swing, 100, 100) + --[[if SERVER then + self:EmitSound(self.Swing, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(false) + umsg.End() + end]] + + self:SendWeaponAnim(self.VM_HITRIGHT) + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) +end + +function SWEP:ShootProjectile(num_bullets, aimcone) + self:StopTimers() + --local b = force_bullets_lagcomp:GetBool() + + --if b then + self.Owner:LagCompensation(true) + --end + + self:FireTFBullets{ + Num = num_bullets, + Src = self.Owner:GetShootPos(), + --Src = self:ShootPos(), + Dir = self.Owner:GetAimVector(), + Spread = Vector(aimcone, aimcone, 0), + Attacker = self.Owner, + + Team = GAMEMODE:EntityTeam(self.Owner), + Damage = self.BaseDamage, + RampUp = self.MaxDamageRampUp, + Falloff = self.MaxDamageFalloff, + Critical = self:Critical(), + CritMultiplier = self.CritDamageMultiplier, + DamageModifier = self.DamageModifier, + DamageRandomize = self.DamageRandomize, + + Tracer = 1, + TracerName = self.TracerEffect, + Force = 1, + } + + --if b then + self.Owner:LagCompensation(false) + --end + + self:ShootEffects() +end + + +function SWEP:CanPrimaryAttack() + return true +end + +function SWEP:CanSecondaryAttack() + return true +end + +function SWEP:ShootEffects() +end + +function SWEP:Deploy() + self:StopTimers() + + return self:CallBaseFunction("Deploy") +end + +function SWEP:OnRemove() + self:StopTimers() + + return self:CallBaseFunction("OnRemove") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + --if self.NextMeleeAttack and CurTime()>=self.NextMeleeAttack then + + while self.NextMeleeAttack and self.NextMeleeAttack[1] and CurTime() > self.NextMeleeAttack[1] do + self:MeleeAttack() + table.remove(self.NextMeleeAttack, 1) + + self:RollCritical() + end +end + +function SWEP:Holster() + self.NextMeleeAttack = nil + + self:StopTimers() + + return self:CallBaseFunction("Holster") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minifun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minifun/shared.lua new file mode 100644 index 000000000..924fd745f --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minifun/shared.lua @@ -0,0 +1,607 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + + +if CLIENT then + +SWEP.PrintName = "Natascha" +SWEP.Slot = 0 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +PrecacheParticleSystem("eject_minigunbrass") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_minigun/c_minigun_natascha.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 5 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 1 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.1 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ReloadSound = Sound("Weapon_Minifun.Reload") +SWEP.EmptySound = Sound("Weapon_Minifun.ClipEmpty") +SWEP.ShootSound2 = Sound("Weapon_Minifun.Fire") +SWEP.SpecialSound1 = Sound("Weapon_Minifun.WindUp") +SWEP.SpecialSound2 = Sound("Weapon_Minifun.WindDown") +SWEP.SpecialSound3 = Sound("Weapon_Minifun.Spin") +SWEP.ShootCritSound = Sound("Weapon_Minifun.FireCrit") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self, self.SpecialSound1) + self.SpinDownSound = CreateSound(self, self.SpecialSound2) + self.SpinSound = CreateSound(self, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self, self.ShootCritSound) + + self.SoundsCreated = true +end + +if SERVER then + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + if IsValid(self.WModel2) then + if string.lower(self.WModel2:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.WModel2.LeviathanBarrelFix = true + end + end +end + +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + self.Owner:GetViewModel():SetPlaybackRate(0.8) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 1 + self.NextEndSpinUpSound = CurTime() + 1 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound1) + if self.Primary.Delay == 0.06 then + self.SpinUpSound:ChangePitch(120) + end +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() + + timer.Stop("AttackAnim"..self.Owner:EntIndex()) + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self:StopSound(self.ShootSound2) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound2) + if SERVER then + --self.WModel2:StopParticles() + end + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self.Owner.minigunfiretime = 0 + self.StartTime = nil + self.Owner:SetAnimation(PLAYER_IDLE) + end + self:EmitSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:StopSound(self.ShootCritSound) + if SERVER then + --self.WModel2:StopParticles() + end + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + if (self.Slot == 0) then + local wpn = self.Owner:GetWeapons()[2] or self.Owner:GetWeapons()[3] + self.Owner:SelectWeapon(wpn:GetClass()) + elseif (self.Slot == 1) then + local wpn = self.Owner:GetWeapons()[3] + self.Owner:SelectWeapon(wpn:GetClass()) + end + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:EmitSound(self.ShootCritSound) + + if SERVER then + ParticleEffectAttach("eject_minigunbrass", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("eject_brass")) + end + if self.Primary.Delay == 0.06 then + self.ShootCritSoundLoop:ChangePitch(120) + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + timer.Create("AttackAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("attackStand_PRIMARY")), 0,function() + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + end) + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootCritSound) + self:EmitSound(self.ShootSound2) + + if SERVER then + ParticleEffectAttach("eject_minigunbrass", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("eject_brass")) + end + if self.Primary.Delay == 0.06 then + self.ShootSoundLoop:ChangePitch(120) + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + timer.Create("AttackAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("attackStand_PRIMARY")), 0,function() + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + end) + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0) + end + else + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self:StopSound(self.SpecialSound1) + self:EmitSound(self.SpecialSound3) + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) and self.CModel:LookupBone("barrel") then + self:StopSound(self.SpecialSound2) + end + else + --self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) then + self:StopSound(self.SpecialSound2) + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then + bone = self.CModel:LookupBone("barrel") + if bone then + self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( bone, Angle(0,0,self.barrelRotation) ) + end + end + + + local barrel = self:LookupBone("barrel") + if (barrel) then + self:ManipulateBoneAngles( barrel, Angle(0,self.barrelRotation,0) ) + end + if CLIENT then + if (IsValid(self.FakeWorldModel)) then + + local barrel = self.FakeWorldModel:LookupBone("barrel") + self.FakeWorldModel:ManipulateBoneAngles( barrel, Angle(0,self.barrelRotation,0) ) + + end + end + if CLIENT then + if (IsValid(self.FakeWorldModel)) then + + local barrel = self.FakeWorldModel:LookupBone("barrel") + self.FakeWorldModel:ManipulateBoneAngles( barrel, Angle(0,self.barrelRotation,0) ) + + end + end + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + timer.Stop("AttackAnim"..self.Owner:EntIndex()) + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self.Owner and IsValid(self.Owner:GetViewModel()) then + --self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun/shared.lua new file mode 100644 index 000000000..fe864872e --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun/shared.lua @@ -0,0 +1,646 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + + +if CLIENT then + +SWEP.PrintName = "Minigun" +SWEP.Slot = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +PrecacheParticleSystem("eject_minigunbrass") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_minigun/c_minigun.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.1 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ReloadSound = Sound("Weapon_Minigun.Reload") +SWEP.EmptySound = Sound("Weapon_Minigun.ClipEmpty") +SWEP.ShootSound2 = Sound("Weapon_Minigun.Fire") +SWEP.SpecialSound1 = Sound("Weapon_Minigun.WindUp") +SWEP.SpecialSound2 = Sound("Weapon_Minigun.WindDown") +SWEP.SpecialSound3 = Sound("Weapon_Minigun.Spin") +SWEP.ShootCritSound = Sound("Weapon_Minigun.FireCrit") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +function SWEP:CreateSounds() + if SERVER then + local rf = RecipientFilter() + rf:AddAllPlayers() + self.SpinUpSound = CreateSound(self, self.SpecialSound1,rf) + self.SpinDownSound = CreateSound(self, self.SpecialSound2,rf) + self.SpinSound = CreateSound(self, self.SpecialSound3,rf) + self.ShootSoundLoop = CreateSound(self, self.ShootSound2,rf) + self.ShootCritSoundLoop = CreateSound(self, self.ShootCritSound,rf) + + self.SoundsCreated = true + end +end + +if SERVER then + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + if IsValid(self.WModel2) then + if string.lower(self.WModel2:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.WModel2.LeviathanBarrelFix = true + end + end +end + +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + + self:SendWeaponAnim(self.VM_PREFIRE) + self:GetOwner():GetViewModel():SetPlaybackRate(1 / 0.85 / (self.MinigunSpinupMultiplier or 1)) + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + self.NextEndSpinUp = CurTime() + 0.75 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.75 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinDown = nil + self.NextIdle = nil + + self.Owner:StopSound(self.SpecialSound2) + self.Owner:StopSound(self.SpecialSound3) + if SERVER then + self.Owner:EmitSoundEx(self.SpecialSound1) + end + + if self.Primary.Delay != 0.08 then + self.SpinUpSound:ChangePitch(100 * self.Primary.Delay) + end +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + timer.Stop("AttackAnim"..self.Owner:EntIndex()) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() + + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self.Owner:StopSound(self.ShootSound2) + self.Owner:StopSound(self.ShootCritSound) + self.Owner:StopSound(self.SpecialSound1) + if SERVER then + self.Owner:EmitSoundEx(self.SpecialSound2) + end + self.Owner:StopSound(self.SpecialSound3) + if SERVER then + --self.WModel2:StopParticles() + end + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self.Owner.minigunfiretime = 0 + self.StartTime = nil + self.Owner:SetAnimation(PLAYER_IDLE) + end + timer.Stop("AttackAnim"..self.Owner:EntIndex()) + if SERVER then + self.Owner:EmitSoundEx(self.SpecialSound3) + end + self.Owner:StopSound(self.ShootSound2) + self.Owner:StopSound(self.ShootCritSound) + if SERVER then + --self.WModel2:StopParticles() + end + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if (self.Owner:GetNWBool("Bonked")) then return false end + if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then + + if SERVER then + self.Owner:EmitSoundEx("weapons/shotgun_empty.wav", 80, 100) + end + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if (!self:CanPrimaryAttack()) then return end + if not self.IsDeployed then return false end + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN",true) + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.Owner:StopSound(self.SpecialSound3) + self.Owner:StopSound(self.ShootSound2) + if SERVER then + self.Owner:EmitSoundEx(self.ShootCritSound) + end + + if self.Primary.Delay != 0.08 then + self.ShootCritSoundLoop:ChangePitch(100 * self.Primary.Delay) + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + timer.Create("AttackAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("attackStand_PRIMARY")), 0,function() + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + end) + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.Owner:StopSound(self.SpecialSound3) + self.Owner:StopSound(self.ShootCritSound) + if SERVER then + self.Owner:EmitSoundEx(self.ShootSound2) + end + + if self.Primary.Delay != 0.08 then + self.ShootSoundLoop:ChangePitch(100 * self.Primary.Delay) + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + timer.Create("AttackAnim"..self.Owner:EntIndex(), self.Owner:SequenceDuration(self.Owner:LookupSequence("attackStand_PRIMARY")), 0,function() + if (!IsValid(self.Owner)) then return end + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + end) + self.Firing = true + end + self.Critting = false + end + self:GetOwner():GetViewModel():SetPlaybackRate(1 / self.Primary.Delay * 0.1) + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + if SERVER then + self.Owner:Speak("TLK_FIREWEAPON", false) + end + if CLIENT then + ----PrintTable(self.CModel:GetAttachments()) + local effectdata = EffectData() + effectdata:SetEntity( self.Owner:GetViewModel() ) + effectdata:SetOrigin( self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.x,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.y,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.z) ) + util.Effect( "RifleShellEject", effectdata ) + end + + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + if (self:Ammo1() < 1 and self:Clip1() < 1 and self.Primary.ClipSize ~= -1) then + if (CurTime() > self:GetNextPrimaryFire()) then + if (self.HoldType == "PRIMARY") then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[2]:GetClass()) + elseif ((self.HoldType == "SECONDARY" or (self:GetClass() == "tf_weapon_jar" or self:GetClass() == "tf_weapon_jar_milk")) and self.Owner:GetPlayerClass() != "medic") then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]:GetClass()) + end + end + end + if (self.Owner:IsMiniBoss() and (self:GetItemData().name == "Deflector" or string.find(self:GetItemData().model_player,"/c_minigun.mdl"))) then + self.ShootSound2 = Sound("MVM.GiantHeavyGunFire") + self.SpecialSound1 = Sound("MVM.GiantHeavyGunWindUp") + self.SpecialSound2 = Sound("MVM.GiantHeavyGunWindDown") + self.SpecialSound3 = Sound("MVM.GiantHeavyGunSpin") + self.ShootCritSound = Sound("MVM.GiantHeavyGunFire") + end + local barrel = self:LookupBone("barrel") + if (barrel) then + if (IsValid(self.WModel)) then + local barrel = self.WModel:LookupBone("barrel") + if (barrel) then + self.WModel:ManipulateBoneAngles( barrel, Angle(0,self.barrelRotation,0) ) + end + end + self:SetSkin(self.WeaponSkin or self.Owner:GetSkin()) + else + self.Owner:GetWeapons()[1]:ManipulateBoneAngles( 1, Angle(0,self.barrelRotation,0) ) + + end + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if !self.Owner:IsMiniBoss() then + self.Owner:SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0) + else + self.Owner:ResetClassSpeed() + end + else + self.Owner:ResetClassSpeed() + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self.Owner:StopSound(self.SpecialSound1) + if SERVER then + self.Owner:EmitSoundEx(self.SpecialSound3) + end + if self.Primary.Delay != 0.08 then + self.SpinSound:ChangePitch(100 * self.Primary.Delay) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Spinning then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if !self.Spinning then + if SERVER then + self.Owner:SetJumpPower(self.Owner.PlayerJumpPower) + end + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 10 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + if (self.Spinning or self.Firing) then + self.Owner:SetJumpPower(0) + end + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) and !self.Owner:ShouldDrawLocalPlayer() then + self.Owner:StopSound(self.SpecialSound2) + end + else + --self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + --self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) and !self.Owner:ShouldDrawLocalPlayer() then + self.Owner:StopSound(self.SpecialSound2) + end + else + --self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then + bone = self.CModel:LookupBone("barrel") + if bone then + self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + end + if self:GetItemData().attach_to_hands == 1 and IsValid(self.WModel) then + bone = self.WModel:LookupBone("barrel") + if bone then + self.WModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + end + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + timer.Stop("AttackAnim"..self.Owner:EntIndex()) + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + if IsValid(self.Owner) then + self.Owner:StopSound(self.ShootSound2) + self.Owner:StopSound(self.ShootCritSound) + self.Owner:StopSound(self.SpecialSound1) + self.Owner:StopSound(self.SpecialSound2) + self.Owner:StopSound(self.SpecialSound3) + end + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self.Owner and IsValid(self.Owner:GetViewModel()) then + --self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + if IsValid(self.Owner) then + self.Owner:StopSound(self.ShootSound2) + self.Owner:StopSound(self.ShootCritSound) + self.Owner:StopSound(self.SpecialSound1) + self.Owner:StopSound(self.SpecialSound2) + self.Owner:StopSound(self.SpecialSound3) + end + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_assaultcannon/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_assaultcannon/shared.lua new file mode 100644 index 000000000..72e61bc74 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_assaultcannon/shared.lua @@ -0,0 +1,120 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + + +if CLIENT then + +SWEP.PrintName = "Assault Cannon" +SWEP.Slot = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +PrecacheParticleSystem("eject_minigunbrass") + +SWEP.Base = "tf_weapon_minigun" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_minigun/c_minigun.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 5 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 1 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.1 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_bb/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_bb/shared.lua new file mode 100644 index 000000000..c47818802 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_bb/shared.lua @@ -0,0 +1,614 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Minigun" +SWEP.Slot = 0 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +PrecacheParticleSystem("eject_minigunbrass") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_minigun.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 3 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 1 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 4 +SWEP.BulletSpread = 0.08 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.1 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ReloadSound = Sound("Weapon_Gatling.Reload") +SWEP.EmptySound = Sound("Weapon_Gatling.ClipEmpty") +SWEP.ShootSound2 = Sound("Weapon_Gatling.Fire") +SWEP.SpecialSound1 = Sound("Weapon_Gatling.WindUp") +SWEP.SpecialSound2 = Sound("Weapon_Gatling.WindDown") +SWEP.SpecialSound3 = Sound("Weapon_Gatling.Spin") +SWEP.ShootCritSound = Sound("Weapon_Gatling.FireCrit") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self, self.SpecialSound1) + self.SpinDownSound = CreateSound(self, self.SpecialSound2) + self.SpinSound = CreateSound(self, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self, self.ShootCritSound) + + self.SoundsCreated = true +end + +if SERVER then + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + if IsValid(self.WModel2) then + end +end + +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 1.4 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 1.4 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound1) + if self.Primary.Delay == 0.06 then + self.SpinUpSound:ChangePitch(120) + end +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() + + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self:StopSound(self.ShootSound2) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound2) + if SERVER then + --self.WModel2:StopParticles() + end + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self.Owner.minigunfiretime = 0 + self.StartTime = nil + self.Owner:SetAnimation(PLAYER_IDLE) + end + self:EmitSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:StopSound(self.ShootCritSound) + if SERVER then + --self.WModel2:StopParticles() + end + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:EmitSound(self.ShootCritSound) + + if SERVER then + ParticleEffectAttach("eject_minigunbrass", PATTACH_POINT_FOLLOW, self.WModel2, self:LookupAttachment("eject_brass")) + end + if self.Primary.Delay == 0.06 then + self.ShootCritSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootCritSound) + self:EmitSound(self.ShootSound2) + + if SERVER then + ParticleEffectAttach("eject_minigunbrass", PATTACH_POINT_FOLLOW, self.WModel2, self:LookupAttachment("eject_brass")) + end + if self.Primary.Delay == 0.06 then + self.ShootSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0) + end + else + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self:StopSound(self.SpecialSound1) + self:EmitSound(self.SpecialSound3) + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if SERVER then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 4 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + if CLIENT then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 4 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) and self.CModel:LookupBone("barrel") then + self:StopSound(self.SpecialSound2) + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then + bone = self.CModel:LookupBone("barrel") + if bone then + self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + end + if SERVER then + if IsValid(self) then + self:ManipulateBoneAngles( 1, Angle(0,self.barrelRotation,0) ) + end + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self:StopSound(self.ShootSound2) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:StopSound(self.SpecialSound1) + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self.Owner and IsValid(self.Owner:GetViewModel()) then + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_burner/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_burner/shared.lua new file mode 100644 index 000000000..12be01c88 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_burner/shared.lua @@ -0,0 +1,602 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + + +sound.Add( +{ +name = "Weapon_Tomislav.ShootLoop", +channel = "CHAN_AUTO", +pitch = 95, +volume = "VOL_NORM", +level = 95, +sound = ")weapons/tomislav_shoot.wav" +} ) + +if CLIENT then + +SWEP.PrintName = "Tomislav " +SWEP.Slot = 0 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_canton/c_canton.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.MuzzleEffect = "muzzle_minigun_constant" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +PrecacheParticleSystem("muzzle_minigun_constant") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") + +SWEP.BaseDamage = 9 +SWEP.DamageRandomize = 2 +SWEP.MaxDamageRampUp = 1.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.1 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ReloadSound = Sound("Dragon_Minigun.Reload") +SWEP.EmptySound = Sound("Dragon_Minigun.ClipEmpty") +SWEP.ShootSound2 = Sound("Dragon_Minigun.Fire") +SWEP.SpecialSound1 = Sound("Dragon_Minigun.WindUp") +SWEP.SpecialSound2 = Sound("Dragon_Minigun.WindDown") +SWEP.SpecialSound3 = Sound("Dragon_Minigun.Spin") +SWEP.ShootCritSound = Sound("Dragon_Minigun.FireCrit") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self.Owner, self.SpecialSound1) + self.SpinDownSound = CreateSound(self.Owner, self.SpecialSound2) + self.SpinSound = CreateSound(self.Owner, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self.Owner, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self.Owner, self.ShootCritSound) + + self.SoundsCreated = true +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 0.95 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.95 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.SpinUpSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinUpSound:ChangePitch(120) + end +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self.SpinUpSound:Stop() + self.SpinSound:Stop() + self.SpinDownSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self.Owner.minigunfiretime = 0 + self.StartTime = nil + self.Owner:SetAnimation(PLAYER_IDLE) + end + + self.SpinSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Play() + + if self.Primary.Delay == 0.06 then + self.ShootCritSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.SpinSound:Stop() + self.ShootCritSoundLoop:Stop() + self.ShootSoundLoop:Play( "Weapon_Tomislav.ShootLoop", self.Owner:GetPos(), 95, 95, "VOL_NORM") + + if self.Primary.Delay == 0.06 then + self.ShootSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0) + end + else + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self.SpinUpSound:Stop() + self.SpinSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + if SERVER then + if (self.Spinning or self.Firing) then + for k,v in ipairs(ents.FindInSphere(self.Owner:GetPos(),120)) do + if (v:IsTFPlayer() and !v:IsFriendly(self.Owner)) then + GAMEMODE:IgniteEntity(v, self, self.Owner, 10) + end + end + end + end + if CLIENT then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if SERVER then + + if self.Spinning then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self.Spinning then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and self.CModel:LookupBone("barrel") then + self:StopSound(self.SpecialSound2) + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then + bone = self.CModel:LookupBone("barrel") + if bone then + self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + end + if SERVER then + --self.WModel2:ManipulateBoneAngles( --self.WModel2:LookupBone("barrel"), Angle(0,self.barrelRotation,0) ) + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:StopSound(self.ShootSound2) + self:StopSound(self.ShootCritSound) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_flare/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_flare/shared.lua new file mode 100644 index 000000000..1bcbe7720 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_flare/shared.lua @@ -0,0 +1,507 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "L4D Minigun" +SWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 0 +SWEP.MinigunSpinAcceleration = 0 + +local function MinigunBuildBoneW(ent) + if IsValid(ent.MinigunEntity) and ent.MinigunEntity==ent.MinigunEntity.Owner:GetActiveWeapon() then + local bone = ent:LookupBone("barrel") + + local mat = ent:GetBoneMatrix(bone) + + if mat then + mat:Rotate(Angle(0, ent.MinigunEntity.BarrelAngle or 0, 0)) + ent:SetBoneMatrix(bone, mat) + end + end +end + +local function MinigunBuildBoneV(ent) + if IsValid(ent.MinigunEntity) and ent.MinigunEntity==ent.MinigunEntity.Owner:GetActiveWeapon() then + local bone = ent:LookupBone("v_minigun_barrel") + + local mat = ent:GetBoneMatrix(bone) + + if mat then + mat:Rotate(Angle(0, 0, ent.MinigunEntity.BarrelAngle or 0)) + ent:SetBoneMatrix(bone, mat) + end + end +end + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel.MinigunEntity = self + self.CModel:AddBuildBoneHook("MinigunBarrel", MinigunBuildBoneW) + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + if IsValid(self.WModel2) then + self.WModel2.MinigunEntity = self + --self.WModel2:AddBuildBoneHook("MinigunBarrel", MinigunBuildBoneW) + end +end + +function SWEP:ViewModelDrawn() + if not self.ViewmodelInitialized then + self:MinigunViewmodelSpin() + end + + self:CallBaseFunction("ViewModelDrawn") +end + +--[[ +function SWEP:BuildBonePositions() + local bone = self:LookupBone("barrel") + + local mat = self:GetBoneMatrix(bone) + mat:Rotate(Angle(0, self.BarrelAngle or 0, 0)) + self:SetBoneMatrix(bone, mat) +end]] + +function SWEP:MinigunViewmodelSpin() + --Msg("MinigunViewmodelSpin\n") + if self.Owner==LocalPlayer() then + if self:GetItemData().attach_to_hands == 1 then + return + end + + local vm = self.Owner:GetViewModel() + if vm and vm:IsValid() then + vm.MinigunEntity = self + vm:AddBuildBoneHook("MinigunBarrel", MinigunBuildBoneV) + + vm:InvalidateBoneCache() + vm:SetupBones() + self.ViewmodelInitialized = true + end + end +end + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_minigun.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.MuzzleEffect = "muzzle_minigun_constant" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" + +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.9 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 4 +SWEP.BulletSpread = 0.08 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.07 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ReloadSound = Sound("Weapon_Minigun.Reload") +SWEP.EmptySound = Sound("Weapon_Minigun.ClipEmpty") +SWEP.ShootSound2 = Sound("weapons/minigun/gunfire/minigun_fire.wav") +SWEP.SpecialSound1 = Sound("weapons/minigun/gunother/minigun_wind_up.wav") +SWEP.SpecialSound2 = Sound("weapons/minigun/gunother/minigun_wind_down.wav") +SWEP.SpecialSound3 = Sound("Weapon_Minigun.Spin") +SWEP.ShootCritSound = Sound("weapons/minigun/gunfire/minigun_fire.wav") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self.Owner, self.SpecialSound1) + self.SpinDownSound = CreateSound(self.Owner, self.SpecialSound2) + self.SpinSound = CreateSound(self.Owner, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self.Owner, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self.Owner, self.ShootCritSound) + + self.SoundsCreated = true +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 0.87 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.87 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.SpinUpSound:Play() +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self.SpinUpSound:Stop() + self.SpinSound:Stop() + self.SpinDownSound:Play() +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self.Owner.minigunfiretime = 0 + self.StartTime = nil + end + + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Play() + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.ShootCritSoundLoop:Stop() + self.ShootSoundLoop:Play() + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + self:TakePrimaryAmmo(1) +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if CLIENT and self.Owner==LocalPlayer() then + if not self.BarrelAngle then self.BarrelAngle = 0 end + + if not self.SpinSpeed then self.SpinSpeed = 0 end + + self.BarrelAngle = self.BarrelAngle + self.SpinSpeed + while self.BarrelAngle>360 do + self.BarrelAngle = self.BarrelAngle - 360 + end + + local Spinning = self:GetNetworkedBool("Spinning") + + if Spinning and self.SpinSpeed0 then + self.SpinSpeed = self.SpinSpeed - self.MinigunSpinAcceleration + if self.SpinSpeed<0 then self.SpinSpeed = 0 end + end + + --[[self.BarrelAngle = self.BarrelAngle + 1 + while self.BarrelAngle>360 do + self.BarrelAngle = self.BarrelAngle - 360 + end]] + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0) + end + else + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self.SpinUpSound:Stop() + self.SpinSound:Play() + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.SpinDownSound:Stop() + self.NextEndSpinDown = nil + end + + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end +end + +function SWEP:Holster() + if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_ic/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_ic/shared.lua new file mode 100644 index 000000000..5e525afdd --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_ic/shared.lua @@ -0,0 +1,570 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + + +sound.Add( +{ +name = "Weapon_IronCurtain.ShootLoop", +channel = "CHAN_AUTO", +pitch = 95, +volume = "VOL_NORM", +level = 95, +sound = ")weapons/iron_curtain_shoot.wav" +} ) +sound.Add( +{ +name = "Weapon_IronCurtain.ShootLoopCrit", +channel = "CHAN_AUTO", +pitch = 95, +volume = "VOL_NORM", +level = 95, +sound = ")weapons/iron_curtain_shoot_crit.wav" +} ) +sound.Add( +{ +name = "Weapon_IronCurtain.SpinUp", +channel = "CHAN_AUTO", +pitch = 95, +volume = "VOL_NORM", +level = 95, +sound = ")weapons/iron_curtain_wind_up.wav" +} ) +sound.Add( +{ +name = "Weapon_IronCurtain.SpinDown", +channel = "CHAN_AUTO", +pitch = 95, +volume = "VOL_NORM", +level = 95, +sound = ")weapons/iron_curtain_wind_down.wav" +} ) + +if CLIENT then + +SWEP.PrintName = "Tomislav " +SWEP.Slot = 0 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self:GetOwner()==LocalPlayer() and IsValid(self:GetOwner():GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") +end + +function SWEP:MinigunViewmodelReset() + if self:GetOwner()==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_minigun/c_minigun_natascha.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.MuzzleEffect = "muzzle_minigun_constant" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun_constant") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") + +SWEP.BaseDamage = 9 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 6 +SWEP.BulletSpread = 0.08 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.1 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ReloadSound = Sound("Weapon_Minifun.Reload") +SWEP.EmptySound = Sound("Weapon_Minifun.ClipEmpty") +SWEP.ShootSound2 = Sound("Weapon_IronCurtain.ShootLoop") +SWEP.SpecialSound1 = Sound("Weapon_IronCurtain.SpinUp") +SWEP.SpecialSound2 = Sound("Weapon_IronCurtain.SpinDown") +SWEP.SpecialSound3 = Sound("Weapon_Minigun.Spin") +SWEP.ShootCritSound = Sound("Weapon_IronCurtain.ShootLoopCrit") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self:GetOwner(), self.SpecialSound1) + self.SpinDownSound = CreateSound(self:GetOwner(), self.SpecialSound2) + self.SpinSound = CreateSound(self:GetOwner(), self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self:GetOwner(), self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self:GetOwner(), self.ShootCritSound) + + self.SoundsCreated = true +end + +function SWEP:SpinUp() + if SERVER then + self:GetOwner().minigunfiretime = 0 + self:GetOwner():Speak("TLK_WINDMINIGUN", true) + end + + --self:GetOwner():SetAnimation(10004) + + if SERVER then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 0.8 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.8 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.SpinUpSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinUpSound:ChangePitch(120) + end +end + +function SWEP:SpinDown() + --self:GetOwner():SetAnimation(10005) + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:GetOwner():SetNWBool("MinigunReady", false) + --self:GetOwner():DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self.SpinUpSound:Stop() + self.SpinSound:Stop() + self.SpinDownSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self:GetOwner().minigunfiretime = 0 + self.StartTime = nil + self:GetOwner():SetAnimation(PLAYER_IDLE) + end + + self.SpinSound:Play() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self:GetOwner():GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self:GetOwner():IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self:GetOwner():SelectWeapon(self:GetOwner():GetWeapons()[3]) + return + end + + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self:GetOwner():Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Play() + if self.Primary.Delay == 0.06 then + self.ShootCritSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self.SpinSound:Stop() + self.ShootCritSoundLoop:Stop() + self.ShootSoundLoop:Play( "Weapon_Tomislav.ShootLoop", self:GetOwner():GetPos(), 95, 95, "VOL_NORM") + if self.Primary.Delay == 0.06 then + self.ShootSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self:GetOwner():SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self:GetOwner():GetInfoNum("tf_giant_robot",0) != 1 then + self:GetOwner():SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self:GetOwner():SetCrouchedWalkSpeed(0) + end + else + if self:GetOwner():GetInfoNum("tf_giant_robot",0) != 1 then + self:GetOwner():ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self.SpinUpSound:Stop() + self.SpinSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self:GetOwner():SetNWBool("MinigunReady", true) + ----self:GetOwner():DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self:GetOwner():KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self:GetOwner():KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self:GetOwner():KeyDown(IN_ATTACK) and not self:GetOwner():KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if CLIENT then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and self.CModel:LookupBone("barrel") then + self:StopSound(self.SpecialSound2) + end + else + self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 then + bone = self.CModel:LookupBone("barrel") + if bone then + self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + :ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + else + self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + + else + //:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self:GetOwner()) and self:GetNetworkedBool("Spinning") then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self:GetOwner()) then + self:GetOwner():SetNWBool("MinigunReady", false) + --self:GetOwner():DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:GetOwner():ResetClassSpeed() + end + + if CLIENT then + if self:GetOwner()==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + else + self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_mvm/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_mvm/shared.lua new file mode 100644 index 000000000..241456cb8 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_mvm/shared.lua @@ -0,0 +1,593 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Deflector" +SWEP.Slot = 0 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + + +function SWEP:MinigunViewmodelReset() + if self.Owner==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_minigun.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun_constant" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun_constant") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 5 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 1 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 4 +SWEP.BulletSpread = 0.08 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.1 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ShootSound2 = Sound("MVM.GiantHeavyGunFire") +SWEP.SpecialSound1 = Sound("MVM.GiantHeavyGunWindUp") +SWEP.SpecialSound2 = Sound("MVM.GiantHeavyGunWindDown") +SWEP.SpecialSound3 = Sound("MVM.GiantHeavyGunSpin") +SWEP.ShootCritSound = Sound("MVM.GiantHeavyGunFire") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self, self.SpecialSound1) + self.SpinDownSound = CreateSound(self, self.SpecialSound2) + self.SpinSound = CreateSound(self, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self, self.ShootCritSound) + + self.SoundsCreated = true +end + +if SERVER then + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") +end + +end + +function SWEP:SpinUp() + if SERVER then + self.Owner.minigunfiretime = 0 + self.Owner:Speak("TLK_WINDMINIGUN", true) + end + + --self.Owner:SetAnimation(10004) + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 0.87 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.87 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound1) + if self.Primary.Delay == 0.06 then + self.SpinUpSound:ChangePitch(120) + end +end + +function SWEP:SpinDown() + --self.Owner:SetAnimation(10005) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self:StopSound(self.ShootSound2) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound2) + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self.Owner.minigunfiretime = 0 + self.StartTime = nil + self.Owner:SetAnimation(PLAYER_IDLE) + end + self:EmitSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:StopSound(self.ShootCritSound) + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self.Owner:GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self.Owner:IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self.Owner:SelectWeapon(self.Owner:GetWeapons()[3]) + return + end + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self.Owner:Speak("TLK_FIREMINIGUN") + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:EmitSound(self.ShootCritSound) + if self.Primary.Delay == 0.06 then + self.ShootCritSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootCritSound) + self:EmitSound(self.ShootSound2) + if self.Primary.Delay == 0.06 then + self.ShootSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0) + end + else + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self:StopSound(self.SpecialSound1) + self:EmitSound(self.SpecialSound3) + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self.Owner:SetNWBool("MinigunReady", true) + ----self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self.Owner:KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self.Owner:KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self.Owner:KeyDown(IN_ATTACK) and not self.Owner:KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if SERVER then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + if CLIENT then + + if self:GetNetworkedBool("Spinning") then + --[[if self:GetItemData().attach_to_hands == 1 then + return + end]] + + if self.barrelSpeed <= 12 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed + ( CurTime() - self.barrelValue1 ) * 22 + + end + + if self.barrelSpeed > 12 then + + self.barrelSpeed = 12 + + end + + if self.barrelRotation > 360 then + + self.barrelRotation = self.barrelRotation - 360 + + end + + end + + if not self:GetNetworkedBool("Spinning") then + + if self.barrelSpeed > 0 then + + self.barrelRotation = self.barrelRotation + self.barrelSpeed + self.barrelSpeed = self.barrelSpeed - ( CurTime() - self.barrelValue1 ) * 30 + + end + + if self.barrelSpeed < 0 then + + self.barrelSpeed = 0 + + end + + end + + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) and self.CModel:LookupBone("barrel") then + self:StopSound(self.SpecialSound2) + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then + bone = self.CModel:LookupBone("barrel") + if bone then + self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + else + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + end + if SERVER then + if IsValid(self.WModel2) then + --self.WModel2:ManipulateBoneAngles( --self.WModel2:LookupBone("barrel"), Angle(0,self.barrelRotation,0) ) + end + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self.Owner) and self:GetNetworkedBool("Spinning") then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self.Owner) then + self.Owner:SetNWBool("MinigunReady", false) + --self.Owner:DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self.Owner:ResetClassSpeed() + end + + if CLIENT then + if self.Owner==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self.Owner and IsValid(self.Owner:GetViewModel()) then + self.Owner:GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:StopSound(self.ShootSound2) + self:StopSound(self.ShootCritSound2) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:StopSound(self.SpinSound) + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_minigun_tomislav/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_minigun_tomislav/shared.lua new file mode 100644 index 000000000..451be6d52 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_minigun_tomislav/shared.lua @@ -0,0 +1,520 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetMinigunEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + + +if CLIENT then + +SWEP.PrintName = "Tomislav" +SWEP.Slot = 0 +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 + +function SWEP:SetMinigunEffect(i) + if self.LastEffect==i then return end + + local effect + + if i==1 then + effect = "muzzle_minigun_constant" + end + + if self:GetOwner()==LocalPlayer() and IsValid(self:GetOwner():GetViewModel()) and self.DrawingViewModel then + local vm = self:GetViewModelEntity() + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + local ent = self:GetWorldModelEntity() + ent:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetMinigunEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetMinigunEffect then + w:SetMinigunEffect(i) + end +end) + + +SWEP.MinigunMaxSpinSpeed = 10 +SWEP.MinigunSpinAcceleration = 0.07 + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + if string.lower(self.CModel:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.CModel.LeviathanBarrelFix = true + end + end +end + + +function SWEP:MinigunViewmodelReset() + if self:GetOwner()==LocalPlayer() then + self:GetViewModelEntity():RemoveBuildBoneHook("MinigunSpin") + end +end + +end + +PrecacheParticleSystem("eject_minigunbrass") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_tomislav/c_tomislav.mdl" +SWEP.Crosshair = "tf_crosshair4" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_minigun" +SWEP.MuzzleOffset = Vector(20, 3, -10) +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_minigun") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") +SWEP.barrelRotation = 0 +SWEP.barrelSpeed = 1 +SWEP.barrelValue1 = 0 +SWEP.BaseDamage = 5 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 1 +SWEP.MaxDamageFalloff = 0.2 + +SWEP.BulletsPerShot = 2 +SWEP.BulletSpread = 0.1 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.08 + +SWEP.Secondary.Delay = 0.1 + +SWEP.IsRapidFire = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "crossbow" + +SWEP.ReloadSound = Sound("Weapon_Tomislav.Reload") +SWEP.EmptySound = Sound("Weapon_Tomislav.ClipEmpty") +SWEP.ShootSound2 = Sound("Weapon_Tomislav.Fire") +SWEP.SpecialSound1 = Sound("Weapon_Tomislav.WindUp") +SWEP.SpecialSound2 = Sound("") +SWEP.SpecialSound3 = Sound("Weapon_Tomislav.WindDown") +SWEP.ShootCritSound = Sound("Weapon_Tomislav.FireCrit") +SWEP.DeploySound = Sound("weapons/draw_default.wav") + +function SWEP:CreateSounds() + self.SpinUpSound = CreateSound(self, self.SpecialSound1) + self.SpinDownSound = CreateSound(self, self.SpecialSound2) + self.SpinSound = CreateSound(self, self.SpecialSound3) + self.ShootSoundLoop = CreateSound(self, self.ShootSound2) + self.ShootCritSoundLoop = CreateSound(self, self.ShootCritSound) + + self.SoundsCreated = true +end + +if SERVER then + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + if IsValid(self.WModel2) then + if string.lower(self.WModel2:GetModel()) == "models/weapons/c_models/c_leviathan/c_leviathan.mdl" then + self.WModel2.LeviathanBarrelFix = true + end + end +end + +end + +function SWEP:SpinUp() + if SERVER then + self:GetOwner().minigunfiretime = 0 + self:GetOwner():Speak("TLK_WINDMINIGUN", true) + end + + --self:GetOwner():SetAnimation(10004) + + if SERVER then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + end + + self:SendWeaponAnim(self.VM_PREFIRE) + self:GetOwner():GetViewModel():SetPlaybackRate(1 + (self.MinigunSpinupMultiplier or 0)) + + self:SetNetworkedBool("Spinning", true) + + self.Spinning = true + + self.NextEndSpinUp = CurTime() + 0.75 * (self.MinigunSpinupMultiplier or 1) + self.NextEndSpinUpSound = CurTime() + 0.75 + self.NextEndSpinDown = nil + self.NextIdle = nil + + self:StopSound(self.SpecialSound2) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound1) + if self.Primary.Delay == 0.06 then + self.SpinUpSound:ChangePitch(120) + end +end + +function SWEP:SpinDown() + --self:GetOwner():SetAnimation(10005) + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + self:SendWeaponAnim(self.VM_POSTFIRE) + + self.Ready = false + self.NextEndSpinUp = nil + self.NextEndSpinUpSound = nil + self.NextEndSpinDown = CurTime() + self:SequenceDuration() + self.NextIdle = CurTime() + self:SequenceDuration() + + self:GetOwner():SetNWBool("MinigunReady", false) + --self:GetOwner():DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:SetNetworkedBool("Spinning", false) + self.Spinning = false + + self:StopSound(self.ShootSound2) + self:StopSound(self.SpecialSound1) + self:StopSound(self.SpecialSound3) + self:EmitSound(self.SpecialSound2) + if SERVER then + --self.WModel2:StopParticles() + end + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end +end + +function SWEP:ShootEffects() +end + +function SWEP:StopFiring() + if SERVER then + self:SetMinigunEffect(0) + self:GetOwner().minigunfiretime = 0 + self.StartTime = nil + self:GetOwner():SetAnimation(PLAYER_IDLE) + end + self:EmitSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:StopSound(self.ShootCritSound) + if SERVER then + --self.WModel2:StopParticles() + end + self.Firing = false +end + +function SWEP:CanPrimaryAttack() + if self:GetOwner():GetAmmoCount(self.Primary.Ammo) <= 0 then + + self:EmitSound("weapons/shotgun_empty.wav", 80, 100) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true +end + +function SWEP:PrimaryAttack(vampire) + if not self.IsDeployed then return false end + if self:GetOwner():IsBot() and GetConVar("tf_bot_melee_only"):GetBool() then + self:GetOwner():SelectWeapon(self:GetOwner():GetWeapons()[3]) + return + end + if not self.Spinning then + self.IsVampire = vampire + self:SpinUp() + end + + if not self.Ready then return end + + if not self:CanPrimaryAttack() then + if self.Firing then self:StopFiring() end + return + end + + local Delay = self.Delay or -1 + + if Delay>=0 and CurTime()self.NextPlayerTalk then + self:GetOwner():Speak("TLK_FIREMINIGUN",true) + self.NextPlayerTalk = CurTime() + 1 + end + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootSound2) + self:EmitSound(self.ShootCritSound) + + if SERVER then + ParticleEffectAttach("eject_minigunbrass", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("eject_brass")) + end + if self.Primary.Delay == 0.06 then + self.ShootCritSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + else + if self.Critting or not self.Firing then + self:SetMinigunEffect(1) + self:StopSound(self.SpecialSound3) + self:StopSound(self.ShootCritSound) + self:EmitSound(self.ShootSound2) + + if SERVER then + ParticleEffectAttach("eject_minigunbrass", PATTACH_POINT_FOLLOW, self, self:LookupAttachment("eject_brass")) + end + if self.Primary.Delay == 0.06 then + self.ShootSoundLoop:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self:GetOwner():SetAnimation(PLAYER_ATTACK1) + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + + self:TakePrimaryAmmo(1) + self:RustyBulletHole() +end + +function SWEP:SecondaryAttack() + if self.AltFireMode == 1 then + return self:PrimaryAttack(true) + end + + if not self.IsDeployed then return false end + + if not self.Spinning then + self:SpinUp() + end +end + +function SWEP:Reload() +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if SERVER then + if self.Spinning then + if self:GetOwner():GetInfoNum("tf_giant_robot",0) != 1 then + self:GetOwner():SetClassSpeed(3 * 37 * (self.DeployMoveSpeedMultiplier or 1)) + self:GetOwner():SetCrouchedWalkSpeed(0) + end + else + if self:GetOwner():GetInfoNum("tf_giant_robot",0) != 1 then + self:GetOwner():ResetClassSpeed() + end + end + end + + if not self.SoundsCreated then + self:CreateSounds() + end + + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextEndSpinUpSound and CurTime()>=self.NextEndSpinUpSound then + self:StopSound(self.SpecialSound1) + self:EmitSound(self.SpecialSound3) + if self.Primary.Delay == 0.06 then + self.SpinSound:ChangePitch(120) + end + self.NextEndSpinUpSound = nil + end + + if self.NextEndSpinUp and CurTime()>=self.NextEndSpinUp then + self.Ready = true + self:GetOwner():SetNWBool("MinigunReady", true) + ----self:GetOwner():DoAnimationEvent(ACT_MP_DEPLOYED, true) + self.NextEndSpinUp = nil + end + + if self.NextEndSpinDown and CurTime()>=self.NextEndSpinDown then + self.NextEndSpinDown = nil + end + + if self.Firing and not self:GetOwner():KeyDown(IN_ATTACK) and (self.AltFireMode ~= 1 or not self:GetOwner():KeyDown(IN_ATTACK2)) then + self:StopFiring() + self:SendWeaponAnim(self.VM_SECONDARYATTACK) + end + + if self.Spinning and not self.NextEndSpinDown and not self:GetOwner():KeyDown(IN_ATTACK) and not self:GetOwner():KeyDown(IN_ATTACK2) then + if not self.NextEndSpinUp or CurTime() > self.NextEndSpinUp then + self:SpinDown() + end + end + + if self.barrelSpeed == 0 then + if self:GetItemData().attach_to_hands == 1 then + if CLIENT and IsValid(self.CModel) and self.CModel:LookupBone("barrel") then + self:StopSound(self.SpecialSound2) + end + else + --self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,self.barrelRotation) ) + end + end + + if ( CLIENT ) then + if self:GetItemData().attach_to_hands == 1 and IsValid(self.CModel) then + bone = self.CModel:LookupBone("barrel") + if bone then + //self.CModel:ManipulateBoneAngles( bone, Angle(0,self.barrelRotation,0) ) + else + return + end + else + --self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + end + if SERVER then + if IsValid(self.WModel2) then + ----self.WModel2:ManipulateBoneAngles( --self.WModel2:LookupBone("barrel"), Angle(0,self.barrelRotation,0) ) + end + end + + self.barrelValue1 = CurTime() + + self:Inspect() + +end + +function SWEP:Holster() + if IsValid(self:GetOwner()) and self:GetNetworkedBool("Spinning") then + self:GetOwner():DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + if not self.Removed and (self.Spinning or (self.NextEndSpinDown and CurTime() < self.NextEndSpinDown)) then + return false + end + + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.SpinSound:Stop() + self.ShootSoundLoop:Stop() + self.ShootCritSoundLoop:Stop() + end + + self.Spinning = nil + self.Ready = nil + self.NextEndSpinUp = nil + self.NextEndSpinDown = nil + + if SERVER and IsValid(self:GetOwner()) then + self:GetOwner():SetNWBool("MinigunReady", false) + --self:GetOwner():DoAnimationEvent(ACT_MP_STAND_PRIMARY, true) + self:GetOwner():ResetClassSpeed() + end + + if CLIENT then + if self:GetOwner()==LocalPlayer() then + self.ViewmodelInitialized = false + self:MinigunViewmodelReset() + end + end + + if self:GetItemData().attach_to_hands == 1 then + + elseif self:GetOwner() and IsValid(self:GetOwner():GetViewModel()) then + --self:GetOwner():GetViewModel():ManipulateBoneAngles( 2, Angle(0,0,0) ) + end + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self.Owner = self.CurrentOwner + self.Removed = true + self:Holster() +end + +if SERVER then + +hook.Add("PreScaleDamage", "MinigunVampirePreDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.IsVampire and ent ~= att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + if not att.LastHealthBuffTime or CurTime() ~= att.LastHealthBuffTime then + GAMEMODE:HealPlayer(att, att, 3, true, false) + att.LastHealthBuffTime = CurTime() + end + end +end) + +hook.Add("PostScaleDamage", "MinigunVampirePostDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + + if inf.IsVampire then + dmginfo:ScaleDamage(0.25) + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_nailgun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_nailgun/shared.lua new file mode 100644 index 000000000..03c59a825 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_nailgun/shared.lua @@ -0,0 +1,129 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Nailgun" +SWEP.Slot = 0 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_nailgun_scout.mdl" +SWEP.WorldModel = "models/advancedweaponiser/nailgun/c_nailgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_pistol" + +SWEP.ShootSound = Sound("weapons/nail_gun_shoot.wav") +SWEP.ShootCritSound = Sound("weapons/nail_gun_shoot_crit.wav") +SWEP.ReloadSound = Sound("weapons/pistol_worldreload.wav") + +SWEP.Primary.ClipSize = 40 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_METAL +SWEP.Primary.Delay = 0.1 + +SWEP.BulletSpread = 0.01 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.ReloadTime = 1.5 + +SWEP.HoldType = "SECONDARY2" + +SWEP.ProjectileShootOffset = Vector(0, 8, -5) + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_SECONDARY) + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end +function SWEP:Deploy() + if not self:CallBaseFunction("Deploy") then return end + if SERVER then + self.Owner:EmitSoundEx("weapons/nail_gun_draw.wav", 90) + end +end + +function SWEP:ShootProjectile() + if SERVER then + local syringe = ents.Create("tf_projectile_nail") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(vec:Angle()) + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + --syringe:SetProjectileType(1) + + self:InitProjectileAttributes(syringe) + + syringe:Spawn() + end + + if self.Owner:GetInfoNum("tf_robot", 0) == 1 then + self:SetHoldType("SECONDARY") + end + if self.Owner:GetInfoNum("tf_giant_robot", 0) == 1 then + self:SetHoldType("SECONDARY") + end + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_neonsign/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_neonsign/shared.lua new file mode 100644 index 000000000..7a93e675b --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_neonsign/shared.lua @@ -0,0 +1,43 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Neon Sign" +SWEP.Slot = 2 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_fireaxe_pyro.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_fireaxe.mdl" +SWEP.Crosshair = "tf_crosshair2" + +SWEP.Swing = Sound("Weapon_FireAxe.Miss") +SWEP.SwingCrit = Sound("Weapon_FireAxe.MissCrit") +SWEP.HitFlesh = Sound("Neon_Sign.ImpactFlesh") +SWEP.HitWorld = Sound("Neon_Sign.ImpactWorld") + +SWEP.BaseDamage = 95 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "MELEE2" + +SWEP.DamageType = DMG_DISSOLVE +SWEP.CritDamageType = DMG_DISSOLVE + +function SWEP:Critical(ent,dmginfo) + if self.Owner:WaterLevel() >= 2 then + return true + end + + return self:CallBaseFunction("Critical", ent, dmginfo) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_particle_launcher/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_particle_launcher/shared.lua new file mode 100644 index 000000000..c2653bc9f --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_particle_launcher/shared.lua @@ -0,0 +1,230 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Cow Mangler" +SWEP.Slot = 0 +SWEP.HasCModel = true + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_drg_cowmangler/c_drg_cowmangler.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_CowMangler.Single") +SWEP.ShootCritSound = Sound("Weapon_CowMangler.Single") +SWEP.CustomExplosionSound = Sound("Weapon_CowMangler.Explode") +SWEP.Primary.Reload = Sound("Weapon_CowMangler.Reload") +SWEP.ReloadSoundFinish = Sound("Weapon_CowMangler.ReloadFinal") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:ShootProjectile() + self.ShootCritSound = Sound("Weapon_CowMangler.Single") + self.Owner:DoAnimationEvent(self.Owner:LookupSequence("AttackStand_PRIMARY2"),true) + if SERVER then + local rocket = ents.Create("tf_drg_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = false + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = "weapons/cow_mangler_explosion_normal_0"..math.random(1,6)..".wav" + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + + +function SWEP:SecondaryAttack() + if (self:Clip1() < 4) then return end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_russian_riot/c_russian_riot.mdl" then + self.ShootSound = Sound(")weapons/family_business_shoot.wav") + self.ShootCritSound = Sound(")weapons/family_business_shoot.wav") + self.Primary.ClipSize = 8 + self.Primary.DefaultClip = 8 + self.Primary.Delay = 0.5 + end + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_reserve_shooter/c_reserve_shooter.mdl" then + self.Primary.ClipSize = 3 + self.Primary.DefaultClip = 3 + end + self:StopTimers() + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + + if self:Clip1() >= 1 then + self:SendWeaponAnim(ACT_PRIMARY_VM_PRIMARYATTACK_3) + end + self.ShootCritSound = Sound("Weapon_CowMangler.Single") + if not self:CallBaseFunction("PrimaryAttack") then return false end + if ( IsFirstTimePredicted() ) then + if SERVER then + self:GetOwner():SetClassSpeed(self:GetOwner():GetClassSpeed() * 0.25) + self.Owner:DoAnimationEvent(self.Owner:LookupSequence("AttackStand_PRIMARY2_SUPER"),true) + end + self:SetNextPrimaryFire(CurTime() + 2.8) + self:SetNextSecondaryFire(CurTime() + 2.8) + end + if ( IsFirstTimePredicted() ) then + self:ShootProjectile2() + if self:GetVisuals() and self:GetVisuals()["sound_single_shot"] then + self.ShootSound = self:GetVisuals()["sound_single_shot"] + self.ShootCritSound = self:GetVisuals()["sound_burst"] + end + timer.Simple(0.35 * self.Owner:GetViewModel():GetPlaybackRate(), function() + if CLIENT then + if (self:GetItemData().model_player == "models/weapons/c_models/c_shotgun/c_shotgun.mdl" || self:GetItemData().model_player == "models/workshop/weapons/c_models/c_russian_riot/c_russian_riot.mdl" || self:GetItemData().model_player == "models/workshop/weapons/c_models/c_reserve_shooter/c_reserve_shooter.mdl") then + ----PrintTable(self.CModel:GetAttachments()) + local effectdata = EffectData() + effectdata:SetEntity( self.Owner:GetViewModel() ) + effectdata:SetOrigin( self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Pos ) + effectdata:SetAngles( Angle(self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.x,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.y,self.CModel:GetAttachment(self.CModel:LookupAttachment("eject_brass")).Ang.z) ) + util.Effect( "ShotgunShellEject", effectdata ) + end + end + end) + end + + + if self then + if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) + end + end + end + + + if self:Clip1() <= 0 then + self:Reload() + end + + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + if SERVER then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + end + end + end + timer.Simple(2.1, function() + if (self:Clip1() == self.Primary.ClipSize) then + self:TakePrimaryAmmo(4) + end + self.Owner:ViewPunch( self.PunchView ) + + end) + self:RollCritical() -- Roll and check for criticals first + + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + + return true +end + +function SWEP:ShootProjectile2() + if (self:Clip1() < 4) then return end + if SERVER then + self.Owner:EmitSoundEx("Weapon_CowMangler.Charging") + end + timer.Simple(2.1,function() + if SERVER then + self.Owner:ResetClassSpeed() + local rocket = ents.Create("tf_drg_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + rocket.critical = true + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = "weapons/cow_mangler_explosion_normal_0"..math.random(1,6)..".wav" + + rocket:Spawn() + rocket:Activate() + end + end) + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_passtime_gun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_passtime_gun/shared.lua new file mode 100644 index 000000000..847e207bf --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_passtime_gun/shared.lua @@ -0,0 +1,151 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Jack" +SWEP.Slot = 5 +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" +SWEP.WorldModel = "models/passtime/ball/passtime_ball.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Shovel.Miss") +SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Shovel.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") + +local SpeedTable = { +{40, 1.6}, +{80, 1.4}, +{120, 1.2}, +{160, 1.1}, +} + +SWEP.MinDamage = 0.5 +SWEP.MaxDamage = 1.75 + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 +SWEP.Ball = 1 + +SWEP.CanInspect = false + +SWEP.VM_DRAW = ACT_BALL_VM_PICKUP +SWEP.VM_IDLE = ACT_BALL_VM_IDLE +SWEP.VM_THROWBALL = ACT_BALL_VM_THROW_START +SWEP.VM_RELOAD = ACT_BALL_VM_CATCH + +SWEP.AddPitch = 0 +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 1100 + +SWEP.CriticalChance = 0 + +SWEP.HoldType = "PASSTIME" + +function SWEP:InspectAnimCheck() + + self.VM_DRAW = ACT_BALL_VM_PICKUP + self.VM_IDLE = ACT_BALL_VM_IDLE + self.VM_HITCENTER = ACT_BALL_VM_THROW_START + self.VM_SWINGHARD = ACT_BALL_VM_THROW_END + self:CallBaseFunction("InspectAnimCheck") +end +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.Owner:GetPlayerClass() == "scout" then + self.Primary.Delay = 0.5 + else + self.Primary.Delay = 0.80 + end +end + +function SWEP:PrimaryAttack() + if self.Ball == 0 then + return + end + + self:SendWeaponAnim(self.VM_HITCENTER) + self.Owner:DoAttackEvent() + self.Owner:SetAnimation(PLAYER_ATTACK1) + + self.NextIdle = ni + + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + + self:StopTimers() + + self.Ball = 0 + + return true +end + +function SWEP:ShootProjectile() + timer.Simple(0.26, function() + if IsValid(self) then + self:SendWeaponAnim(self.VM_SWINGHARD) + end + end) + + timer.Simple(0.46, function() + if IsValid(self) then + if SERVER then + local grenade = ents.Create("tf_projectile_passtime_ball") + grenade:SetModel("models/passtime/ball/passtime_ball.mdl") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + + self:InitProjectileAttributes(grenade) + + grenade.NameOverride = self:GetItemData().item_iconname + grenade:Spawn() + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + + grenade:GetPhysicsObject():ApplyForceCenter(vel) + self.Owner:EmptyLoadoutSlot("pda2") + end + end + end) +end + +function SWEP:OnDrop() + self.Ball = 1 + //self:Remove() + + //self:SetPos(self:ProjectileShootPos()) + //self:SetAngles(self.Owner:EyeAngles()) + + //local vel = self.Owner:GetAimVector():Angle() + //vel.p = vel.p + self.AddPitch + //vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + self:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + + self:GetPhysicsObject():ApplyForceCenter(Vector(math.random(-2000,2000))) + + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_CUSTOM) + self:SetMoveCollide(MOVECOLLIDE_FLY_SLIDE) +end + +function SWEP:OnRemove() + +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pda_engineer_build/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pda_engineer_build/shared.lua new file mode 100644 index 000000000..72a22db96 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pda_engineer_build/shared.lua @@ -0,0 +1,46 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_builder.mdl" + +SWEP.HoldType = "PDA" +SWEP.IsPDA = true +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" + +if CLIENT then + +SWEP.PrintName = "Build PDA" +SWEP.Slot = 3 +SWEP.Crosshair = "tf_crosshair6" + +SWEP.CustomHUD = {HudEngyMenuBuild = true} + +local BuilderParams = { + {2,0}, + {0,0}, + {1,0}, + {1,1}, +} + +hook.Add("PlayerBindPress", "TFBuildPDASlot", function(pl, bind) + if IsValid(LocalPlayer():GetActiveWeapon()) and LocalPlayer():GetActiveWeapon():GetClass() == "tf_weapon_pda_engineer_build" then + local num = tonumber(string.match(bind, "^slot(%d)") or "") + if num then + local param = BuilderParams[num] + + if param then + RunConsoleCommand("build", unpack(param)) + return true + end + end + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pda_engineer_destroy/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pda_engineer_destroy/shared.lua new file mode 100644 index 000000000..ef8db2c20 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pda_engineer_destroy/shared.lua @@ -0,0 +1,53 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_pda_engineer.mdl" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.HoldType = "PDA" +SWEP.HoldTypeHL2 = "slam" +SWEP.IsPDA = true + +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" + + +if CLIENT then + +SWEP.PrintName = "Demolish PDA" +SWEP.Slot = 4 +SWEP.Crosshair = "tf_crosshair6" + +SWEP.CustomHUD = {HudEngyMenuDestroy = true} + +local BuilderParams2 = { + {2,0}, + {0,0}, + {1,0}, + {1,1}, +} + +hook.Add("PlayerBindPress", "TFBuildPDASlot2", function(pl, bind) + if IsValid(LocalPlayer():GetActiveWeapon()) and LocalPlayer():GetActiveWeapon():GetClass() == "tf_weapon_pda_engineer_destroy" then + local num = tonumber(string.match(bind, "^slot(%d)") or "") + if num then + local param = BuilderParams2[num] + + if param then + RunConsoleCommand("destroy", unpack(param)) + return true + end + end + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pda_spy/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pda_spy/shared.lua new file mode 100644 index 000000000..b6d2ab926 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pda_spy/shared.lua @@ -0,0 +1,127 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/v_models/v_pda_spy.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_cigarette_case.mdl" + +SWEP.HoldType = "PDA" +SWEP.UseHands = false +SWEP.IsPDA = true +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 1 +SWEP.Slot = 3 +SWEP.Secondary.Delay = 5 + +if CLIENT then + +SWEP.PrintName = "Disguise PDA" + +SWEP.Crosshair = "" + +end + +function SWEP:SecondaryAttack() +end + +function SWEP:Think() + self.Owner:PrintMessage(HUD_PRINTCENTER,"Press MOUSE1 to disguise as a random class.") + return self.BaseClass.Think(self) +end +function SWEP:PrimaryAttack() + self:SetNextPrimaryFire( CurTime() + 1 ) + self.Owner:ConCommand("tf_spydisguise") + local ply = self.Owner + if SERVER then + ply:SelectWeapon("tf_weapon_knife") + end + ply:EmitSound("player/spy_disguise.wav", 65, 100) + local tbl = table.Random({"scout","soldier","pyro","demo","heavy","engineer","medic","sniper","hwm/spy"}) + timer.Simple(2, function() + if SERVER then + if SERVER then + ply:SetModel("models/player/"..tbl..".mdl") + end + + if (ply:GetModel() == "models/player/scout.mdl") then + ply.playerclass = "Scout" + elseif (ply:GetModel() == "models/player/soldier.mdl") then + ply.playerclass = "Soldier" + elseif (self:GetModel() == "models/player/pyro.mdl") then + ply.playerclass = "Pyro" + elseif (ply:GetModel() == "models/player/demo.mdl") then + ply.playerclass = "Demoman" + elseif (ply:GetModel() == "models/player/heavy.mdl") then + ply.playerclass = "Heavy" + elseif (ply:GetModel() == "models/player/engineer.mdl") then + ply.playerclass = "Engineer" + elseif (ply:GetModel() == "models/player/medic.mdl") then + ply.playerclass = "Medic" + elseif (ply:GetModel() == "models/player/sniper.mdl") then + ply.playerclass = "Sniper" + else + ply.playerclass = string.upper(string.sub(class,1,1))..string.sub(class,2) + end + if ply:Team() != TEAM_RED then + ply:SetSkin(0) + else + ply:SetSkin(1) + end + timer.Create("RemoveDisguise"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then + if SERVER then + ply:SetModel("models/player/spy.mdl") + end + if ply:Team() == TEAM_BLU then + ply:SetSkin(1) + elseif ply:Team() == TF_TEAM_PVE_INVADERS then + ply:SetSkin(1) + else + ply:SetSkin(0) + end + if (ply:GetModel() == "models/player/scout.mdl") then + ply.playerclass = "Scout" + elseif (ply:GetModel() == "models/player/soldier.mdl") then + ply.playerclass = "Soldier" + elseif (self:GetModel() == "models/player/pyro.mdl") then + ply.playerclass = "Pyro" + elseif (ply:GetModel() == "models/player/demo.mdl") then + ply.playerclass = "Demoman" + elseif (ply:GetModel() == "models/player/heavy.mdl") then + ply.playerclass = "Heavy" + elseif (ply:GetModel() == "models/player/engineer.mdl") then + ply.playerclass = "Engineer" + elseif (ply:GetModel() == "models/player/medic.mdl") then + ply.playerclass = "Medic" + elseif (ply:GetModel() == "models/player/sniper.mdl") then + ply.playerclass = "Sniper" + else + local class = ply:GetPlayerClass() + ply.playerclass = string.upper(string.sub(class,1,1))..string.sub(class,2) + end + ply:EmitSound("player/spy_disguise.wav", 65, 100) + timer.Stop("RemoveDisguise"..ply:EntIndex()) + end + end) + end + end) + timer.Simple(3, function() + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + if SERVER then + v:AddEntityRelationship(self.Owner, D_LI, 99) + end + end + end + end) + if self.Owner:GetNoDraw() == false then + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + ParticleEffectAttach( "spy_start_disguise_red", PATTACH_ABSORIGIN_FOLLOW, self.Owner, 1 ) + else + ParticleEffectAttach( "spy_start_disguise_blue", PATTACH_ABSORIGIN_FOLLOW, self.Owner, 1 ) + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_phlogistinator/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_phlogistinator/shared.lua new file mode 100644 index 000000000..fd6a01438 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_phlogistinator/shared.lua @@ -0,0 +1,308 @@ +if SERVER then +AddCSLuaFile( "shared.lua" ) + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + + umsg.Start("SetFlamethrowerEffect") + umsg.Entity(self) + umsg.Char(i) + umsg.End() + + self.LastEffect = i +end + +end + +if CLIENT then + +SWEP.PrintName = "Degreaser" +SWEP.Slot = 0 + +function SWEP:SetFlamethrowerEffect(i) + if self.LastEffect==i then return end + if not IsValid(self.Owner) then return end + + local effect + local t = GAMEMODE:EntityTeam(self.Owner) + + if i==1 then + effect = "drg_phlo_stream" + elseif i>1 then + if t==2 then + effect = "drg_phlo_stream_crit" + else + effect = "drg_phlo_stream_crit" + end + end + + if self.Owner==LocalPlayer() and IsValid(self.Owner:GetViewModel()) and self.DrawingViewModel then + local vm = self.Owner:GetViewModel() + if IsValid(self.CModel) then + vm = self.CModel + end + + vm:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, vm, vm:LookupAttachment("muzzle")) + end + else + self:StopParticles() + if effect then + ParticleEffectAttach(effect, PATTACH_POINT_FOLLOW, self, self:LookupAttachment("muzzle")) + end + end + + self.LastEffect = i +end + +usermessage.Hook("SetFlamethrowerEffect", function(msg) + local w = msg:ReadEntity() + local i = msg:ReadChar() + if IsValid(w) and w.SetFlamethrowerEffect then + w:SetFlamethrowerEffect(i) + end +end) + +usermessage.Hook("TFAirblastImpact", function(msg) + LocalPlayer():EmitSound("TFPlayer.AirBlastImpact") +end) + +end + +PrecacheParticleSystem("drg_phlo_stream") +PrecacheParticleSystem("drg_phlo_stream_crit") +PrecacheParticleSystem("new_flame_crit_blue") +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound("Weapon_Phlog.Start") +SWEP.SpecialSound1 = Sound("Weapon_Phlog.Fire") +SWEP.ShootCritSound = Sound("Weapon_Phlog.FireCrit") +SWEP.ShootSoundEnd = Sound("Weapon_phlogistinator.WindDown") +SWEP.FireHit = Sound("Weapon_FlameThrower.FireHit") +SWEP.PilotLoop = Sound("Weapon_FlameThrower.PilotLoop") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.04 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 0.8 +SWEP.AirblastRadius = 80 + +SWEP.BulletSpread = 0.06 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) + +function SWEP:CreateSounds(owner) + if not IsValid(owner) then return end + + self.SpinUpSound = CreateSound(owner, self.ShootSound) + self.SpinDownSound = CreateSound(owner, self.ShootSoundEnd) + self.FireSound = CreateSound(owner, self.SpecialSound1) + self.FireCritSound = CreateSound(owner, self.ShootCritSound) + self.PilotSound = CreateSound(owner, self.PilotLoop) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + + if self:Ammo1()<=0 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime()self.NextEndSpinUp then + self.SpinUpSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.NextEndSpinUp = nil + end + + if self:RollCritical() then + if not self.Critting or not self.Firing then + self.NextEndSpinUp = nil + self:SetFlamethrowerEffect(2) + self.FireSound:Stop() + self.FireCritSound:Play() + if self.Primary.Delay == 0.015 then + self.FireCritSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = true + elseif not self.NextEndSpinUp then + if self.Critting or not self.Firing then + self:SetFlamethrowerEffect(1) + self.FireCritSound:Stop() + self.FireSound:Play() + if self.Primary.Delay == 0.015 then + self.FireSound:ChangePitch(120) + end + self.Firing = true + end + self.Critting = false + end + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:SetAnimation(PLAYER_ATTACK1) + + -- Take one ammo every 2 projectiles fired + if not self.ParticleCounter then self.ParticleCounter = 1 end + self.ParticleCounter = self.ParticleCounter + 1 + if self.ParticleCounter>2 then + self.ParticleCounter = 1 + self:TakePrimaryAmmo(1) + end + + self:ShootProjectile() +end + +function SWEP:ShootProjectile() + if SERVER then + local flame = ents.Create("tf_flame") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + flame:SetPos(self:ProjectileShootPos()) + flame:SetAngles(vec:Angle()) + if self:Critical() then + flame.critical = true + end + if self.Force then + flame.Force = self.Force + end + flame:SetOwner(self.Owner) + self:InitProjectileAttributes(flame) + + local d = self:GetItemData() + if d.item_iconname then + flame.NameOverride = d.item_iconname + end + + flame:Spawn() + + flame:SetVelocity(self.Owner:GetVelocity()) + end +end + +function SWEP:Reload() +end + +function SWEP:StopFiring() + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + self.SpinUpSound:Stop() + self.SpinDownSound:Play() + if self.Primary.Delay == 0.06 then + self.SpinDownSound:ChangePitch(120) + end + self.FireSound:Stop() + self.FireCritSound:Stop() + self.Owner:SetAnimation(ACT_MP_ATTACK_STAND_POSTFIRE) + self.NextIdle = CurTime() + 0.04 +end + +function SWEP:Think() + self:TFViewModelFOV() + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.Firing and (not self.Owner:KeyDown(IN_ATTACK) or self:Ammo1()<=0) then + self:StopFiring() + end + + self:Inspect() +end + +function SWEP:Deploy() + if not self.SoundsCreated then + self:CreateSounds(self.Owner) + end + + if self.SoundsCreated then + self.PilotSound:Play() + end + + ----MsgN(Format("Flamethrower Deploy %s",tostring(self))) + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if self.SoundsCreated then + self.SpinUpSound:Stop() + self.SpinDownSound:Stop() + self.FireSound:Stop() + self.FireCritSound:Stop() + self.PilotSound:Stop() + end + + self.Firing = false + self.Critting = false + self:SetFlamethrowerEffect(0) + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_physcannon/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_physcannon/shared.lua new file mode 100644 index 000000000..29de63f2d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_physcannon/shared.lua @@ -0,0 +1,1578 @@ +-- taken from https://steamcommunity.com/sharedfiles/filedetails/?id=1641305846 + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Gravity Gun" +SWEP.Slot = 6 +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false + +--SWEP.ViewModel = "models/weapons/errolliamp/c_superphyscannon.mdl" +SWEP.ViewModel = "models/weapons/v_physcannon.mdl" + +--SWEP.WorldModel = "models/weapons/errolliamp/w_superphyscannon.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_scattergun.mdl" + +SWEP.HoldType = "SECONDARY" + +SWEP.PuntForce = 300 +SWEP.HL2PuntForce = 500 +SWEP.PuntMultiply = 900 +SWEP.PullForce = 300 +SWEP.HL2PullForce = 300 +SWEP.HL2PullForceRagdoll = 10000 +SWEP.MaxMass = 300 +SWEP.HL2MaxMass = 300 +SWEP.MaxPuntRange = 450 +SWEP.HL2MaxPuntRange = 450 +SWEP.MaxPickupRange = 350--; The cone detection is not as range-perfect as traces. It will cause the weapon to fail grabbing an object! +SWEP.HL2MaxPickupRange = 350 +SWEP.ConeWidth = 0.88 -- Higher numbers make it thinner, lower numbers widen it. +SWEP.MaxTargetHealth = 125 +SWEP.GrabDistance = 45 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "" + +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = false +SWEP.Secondary.Ammo = "" + +local HoldSound = Sound("Weapon_PhysCannon.HoldSound") + +util.PrecacheModel("models/weapons/v_PhysCannon.mdl") +util.PrecacheModel("models/weapons/w_models/w_PhysCannon_dm.mdl") +util.PrecacheModel("models/props_junk/PopCan01a.mdl") + +function SWEP:Initialize() + self:CallBaseFunction("Initialize") + self:SetSkin(1) + self.ClawOpenState = false + self.Fade = true + self.Fading = false + self.RagdollRemoved = false + self.CoreAllowRemove = true + self.GlowAllowRemove = true + self.MuzzleAllowRemove = true + self.PrimaryFired = false + self.HPCollideG = COLLISION_GROUP_NONE + if SERVER then + --util.AddNetworkString( "PlayerKilledNPC" ) + --util.AddNetworkString( "PlayerKilledByPlayer" ) + --util.AddNetworkString( "gg_OpenClaws_Client" ) + --util.AddNetworkString( "gg_Holster_EnableGrav" ) + util.AddNetworkString( "gg_Ragdoll_GetPlayerColor" ) + end + --[[if CLIENT then + usermessage.Receive( "gg_OpenClaws_Client", function() + + end ) + end--]] + end + +function SWEP:TimerDestroyAll() + timer.Remove("deploy_idle") + timer.Remove("attack_idle") + timer.Remove("gg_move_claws_open") + timer.Remove("gg_move_claws_close") + timer.Remove("gg_claw_close_delay") + timer.Remove("gg_primaryfired_timer") +end + +function SWEP:OwnerChanged() + self:SetSkin(1) + self:TPrem() + if self.HP and IsValid(self.HP) then + self.HP = nil + end + end + +function SWEP:PuntCheck(tgt) + local DistancePunt_Test = 0 + if tgt and IsValid(tgt) then + DistancePunt_Test = (tgt:GetPos()-self.Owner:GetPos()):Length() + else + DistancePunt_Test = self.MaxPuntRange+10 + end + if tgt and IsValid(tgt) and self.Fading != true and + ( ( (self:AllowedClass(tgt) and tgt:GetMoveType() == MOVETYPE_VPHYSICS ) and + GetConVar("gg_style"):GetInt() <= 0 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.HL2MaxMass) + or GetConVar("gg_style"):GetInt() > 0 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.MaxMass) ) + or ( ( tgt:IsNPC() and (GetConVar("gg_friendly_fire"):GetInt() > 0 or !self:FriendlyNPC( tgt ) ) ) or tgt:IsPlayer() or tgt:IsRagdoll() ) + and !self:NotAllowedClass(tgt) ) + and + ( (GetConVar("gg_style"):GetInt() <= 0 and DistancePunt_Test < self.HL2MaxPuntRange) + or (GetConVar("gg_style"):GetInt() > 0 and DistancePunt_Test < self.MaxPuntRange) ) + --and !self.Owner:KeyDown(IN_ATTACK) + then + return true + end + return false +end + +function SWEP:PickupCheck(tgt) + local Distance_Test = 0 + if tgt and IsValid(tgt) then + Distance_Test = (tgt:GetPos()-self.Owner:GetPos()):Length() + else + Distance_Test = self.MaxPickupRange+10 + end + if tgt and IsValid(tgt) and self.Fading != true and + ( ( (self:AllowedClass(tgt) and tgt:GetMoveType() == MOVETYPE_VPHYSICS ) and + GetConVar("gg_style"):GetInt() <= 0 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.HL2MaxMass) + or GetConVar("gg_style"):GetInt() > 0 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.MaxMass) ) + or ( ( tgt:IsNPC() and (GetConVar("gg_friendly_fire"):GetInt() >= 1 or !self:FriendlyNPC( tgt ) ) ) or tgt:IsPlayer() or tgt:IsRagdoll() ) + and !self:NotAllowedClass(tgt) ) + and + ( (GetConVar("gg_style"):GetInt() <= 0 and Distance_Test < self.HL2MaxPickupRange) + or (GetConVar("gg_style"):GetInt() > 0 and Distance_Test < self.MaxPickupRange) ) + then + return true + else + return false + end +end + +function SWEP:GetConeEnt(trace) + local PickupRange = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + PickupRange = self.HL2MaxPickupRange + elseif GetConVar("gg_style"):GetInt() > 0 then + PickupRange = self.MaxPickupRange + end + --[[local tracerange = (trace.HitPos-trace.StartPos):Length() + if tracerange < PickupRange then + PickupRange = tracerange+30 + end--]] + + local cone = ents.FindInCone( self.Owner:EyePos(), self.Owner:GetAimVector(), PickupRange, self.ConeWidth ) + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ent:GetClass() == "prop_combine_ball" then + return ent + end + if (ent:IsNPC() and ent:Health() > 0) or (ent:IsPlayer() and ent:Alive()) then + return ent + end + if ent:IsRagdoll() or ( self:AllowedClass(ent) and !self:NotAllowedClass(ent) ) then + return ent + end + if ent:GetMoveType() == MOVETYPE_VPHYSICS then + return ent + end + end + end + return nil +end + +function SWEP:Discharge() + self:EmitSound("Weapon_Physgun.Off", 75, 100, 0.6) + + --[[self.FadeCore = ents.Create("PhyscannonFade") + timer.Create("gg_FadeCore_Position", 0.10, 0, function() + if !IsValid(self.FadeCore) then + timer.Remove("gg_FadeCore_Position") + return + end + self.FadeCore:SetPos( self.Owner:GetShootPos() ) + end ) + self.FadeCore:Spawn() + self.FadeCore:SetParent(self.Owner) + self.FadeCore:SetOwner(self.Owner)--]] + + --[[timer.Simple( 0.40, function() + if !IsValid(self) and !IsValid(self) then return end + self:SendWeaponAnim(ACT_VM_HOLSTER) + end )--]] + timer.Simple( 0.90, function() + if !IsValid(self) then return end + --[[if IsValid(self.FadeCore) then + self.FadeCore:Remove() + end--]] + if IsValid(self.Owner) and self.Owner:Alive() then + if !self.Owner:HasWeapon( "weapon_physcannon" ) then + self.Owner:Give("weapon_physcannon") + end + if self.Owner:HasWeapon( "weapon_physcannon" ) and self.Owner:GetActiveWeapon() == self then + self.Owner:SelectWeapon("weapon_physcannon") + end + end + self:Remove() + end ) +end + + +function SWEP:OpenClaws( boolean ) +----print("Open Claws!") +if !IsValid(self.Owner) or !self.Owner:Alive() then return end + local ViewModel = self.Owner:GetViewModel() + local WorldModel = self + timer.Remove("gg_claw_close_delay") + + --[[local prong_1 = WorldModel:LookupBone("ValveBiped.Prong1")-- -- This has been creating lua errors whenever the function is run, with me unable to locate the cause, it JUST ISN'T FUNNY ANYMORE. + local prong_2 = WorldModel:LookupBone("ValveBiped.Prong2") + local prong_3 = WorldModel:LookupBone("ValveBiped.Prong3") + + local prong_a = ViewModel:LookupBone("Prong_A") + local prong_b = ViewModel:LookupBone("Prong_B") + + local pro_a1_ang_r = -40 + local pro_b_ang_pr = 20 + local pro_23_ang_r = 60-- + --]] + if (ViewModel and ViewModel:GetPoseParameter("active") < 1) or (WorldModel and WorldModel:GetPoseParameter("active") < 1) then + -- ^ We replace the 'active' parameter with 'active' in the model's qc file or else it will not work if the normal gravity gun is in player's inventory. + --[[if (ViewModel and -- + ViewModel:GetManipulateBoneAngles(prong_a).roll > pro_a1_ang_r and + (ViewModel:GetManipulateBoneAngles(prong_b).pitch < pro_b_ang_pr and ViewModel:GetManipulateBoneAngles(prong_b).roll < pro_b_ang_pr) + ) or + (WorldModel and + WorldModel:GetManipulateBoneAngles(prong_1).roll > pro_a1_ang_r and + WorldModel:GetManipulateBoneAngles(prong_2).roll < pro_23_ang_r and + WorldModel:GetManipulateBoneAngles(prong_3).roll < pro_23_ang_r ) -- + then --]] + + local frame = ViewModel:GetPoseParameter("active") + local worldframe = WorldModel:GetPoseParameter("active") + --[[local frame_a = ViewModel:GetManipulateBoneAngles(prong_a)-- + local frame_b = ViewModel:GetManipulateBoneAngles(prong_b) + local frame_1 = WorldModel:GetManipulateBoneAngles(prong_1) + local frame_2 = WorldModel:GetManipulateBoneAngles(prong_2) + local frame_3 = WorldModel:GetManipulateBoneAngles(prong_3)-- + --]] + timer.Remove("gg_claw_close_delay") + if !timer.Exists("gg_move_claws_open") and !timer.Exists("gg_move_claws_close") then + timer.Remove("gg_move_claws_close") + + timer.Create( "gg_move_claws_open", 0.02, 20, function() + if !IsValid(self) or !IsValid(self.Owner) or !self.Owner:Alive() then timer.Remove("gg_move_claws_open") return end + if IsValid(ViewModel) then + if frame > 1 then ViewModel:SetPoseParameter("active", 1) end + --if frame >= 1 then timer.Remove("gg_move_claws_open") return end + frame = frame+0.1 + ViewModel:SetPoseParameter("active", frame) + + --[[if frame_a.roll < pro_a1_ang_r then ViewModel:ManipulateBoneAngles(prong_a, Angle(frame_a.pitch, frame_a.yaw, pro_a1_ang_r)) end-- + if frame_b.pitch > pro_b_ang_pr then ViewModel:ManipulateBoneAngles(prong_b, Angle(frame_b.pitch, frame_b.yaw, pro_b_ang_pr)) end + if frame_b.roll > pro_b_ang_pr then ViewModel:ManipulateBoneAngles(prong_b, Angle(pro_b_ang_pr, frame_b.yaw, frame_b.roll)) end + if frame_a.roll <= pro_a1_ang_r and + frame_b.pitch >= pro_b_ang_pr and frame_b.roll >= pro_b_ang_pr + then + timer.Remove("gg_move_claws_open") return end + frame_a.roll = frame_a.roll+0.1 + frame_b.pitch = frame_b.pitch+0.1 + frame_b.roll = frame_b.roll+0.1 + ViewModel:ManipulateBoneAngles(prong_a, frame_a) + ViewModel:ManipulateBoneAngles(prong_b, frame_b)--]] + end + --net.Start("gg_OpenClaws_Client") + --net.Send(self.Owner) + if IsValid(WorldModel) then + if worldframe > 1 then WorldModel:SetPoseParameter("active", 1) end + --if worldframe >= 1 then timer.Remove("gg_move_claws_open") return end + worldframe = worldframe+0.1 + WorldModel:SetPoseParameter("active", worldframe) + if WorldModel:GetPoseParameter("active") >= 0.5 then + self.ClawOpenState = true + end + --[[if frame_1.roll < pro_a1_ang_r then WorldModel:ManipulateBoneAngles(prong_1, Angle(frame_1.pitch, frame_1.yaw, pro_a1_ang_r)) end-- + if frame_2.roll > pro_23_ang_r then WorldModel:ManipulateBoneAngles(prong_2, Angle(frame_2.pitch, frame_2.yaw, pro_23_ang_r)) end + if frame_3.roll > pro_23_ang_r then WorldModel:ManipulateBoneAngles(prong_3, Angle(frame_3.pitch, frame_3.yaw, pro_23_ang_r)) end + frame_1.roll = frame_1.roll+0.1 + frame_2.roll = frame_2.roll+0.1 + frame_3.roll = frame_3.roll+0.1 + WorldModel:ManipulateBoneAngles(prong_1, frame_1) + WorldModel:ManipulateBoneAngles(prong_2, frame_2) + WorldModel:ManipulateBoneAngles(prong_3, frame_3)-- + --]] + end + end ) + if (!IsValid(self.Owner) or !self.Owner:Alive()) or (!IsValid(ViewModel) and !IsValid(WorldModel)) then timer.Remove("gg_move_claws_open") return end + if (frame <= 0 or worldframe <= 0) and (!self.TP or !IsValid(self.TP)) and boolean == true then + --[[if ( (frame_a.roll <= pro_a1_ang_r and frame_b.pitch >= pro_b_ang_pr and frame_b.roll >= pro_b_ang_pr) or -- + (frame_1.roll <= pro_a1_ang_r and frame_2.roll >= pro_23_ang_r and frame_3.roll >= pro_23_ang_r ) ) + then --]] + + if (!self.TP or !IsValid(self.TP)) and boolean == true then + self.Owner:StopSound("Weapon_PhysCannon.CloseClaws") + self.Owner:EmitSoundEx("Weapon_PhysCannon.OpenClaws") + end + end--+ + end-- +end + +end + +function SWEP:CloseClaws( boolean ) +----print("Close Claws!") +if !IsValid(self.Owner) or !self.Owner:Alive() then return end + local ViewModel = self.Owner:GetViewModel() + local WorldModel = self + --if ViewModel and self.ClawOpenState == true then + if (ViewModel) or (WorldModel) then + local frame = ViewModel:GetPoseParameter("active") + local worldframe = WorldModel:GetPoseParameter("active") + if !timer.Exists("gg_move_claws_close") and !timer.Exists("gg_move_claws_open") then + timer.Remove("gg_move_claws_open") + timer.Create( "gg_move_claws_close", 0.02, 20, function() + if !IsValid(self.Owner) or !self.Owner:Alive() then timer.Remove("gg_move_claws_close") return end + if IsValid(ViewModel) then + if frame < 0 then ViewModel:SetPoseParameter("active", 0) end + --if frame <= 0 then --print("doh2") timer.Remove("gg_move_claws_close") return end + frame = frame-0.05 + ViewModel:SetPoseParameter("active", frame) + end + if IsValid(WorldModel) then + if worldframe < 0 then WorldModel:SetPoseParameter("active", 0) end + --if worldframe <= 0 then --print("doh3") timer.Remove("gg_move_claws_close") return end + worldframe = worldframe-0.05 + WorldModel:SetPoseParameter("active", worldframe) + end + if WorldModel:GetPoseParameter("active") < 0.5 then + self.ClawOpenState = false + end + end ) + if (!IsValid(self.Owner) or !self.Owner:Alive()) or (!IsValid(ViewModel) and !IsValid(WorldModel)) then timer.Remove("gg_move_claws_close") return end + if (frame >= 1 or worldframe >= 1) and (!self.TP or !IsValid(self.TP)) and boolean == true then + self.Owner:StopSound("Weapon_PhysCannon.OpenClaws") + self.Owner:EmitSoundEx("Weapon_PhysCannon.CloseClaws") + end + end + end +end + +function SWEP:Think() + local plytrace = self.Owner:GetEyeTrace() + if plytrace.Entity:GetClass() == "prop_physics" then + self:OpenClaws( true ) + elseif !IsValid(plytrace.Entity) then + self:CloseClaws( true ) + end + if CLIENT then + if !self:GetNWBool("Glow") then + if !self.Owner:LookupBone("ValveBiped.Bip01_R_Hand") then return end + local dlight = DynamicLight("lantern_"..self:EntIndex()) + if dlight then + dlight.Pos = self.Owner:GetBonePosition(self.Owner:LookupBone("ValveBiped.Bip01_R_Hand")) + dlight.r = 200 + dlight.g = 255 + dlight.b = 255 + dlight.Brightness = 0.1 + dlight.Size = 70 + dlight.DieTime = CurTime() + .0001 + --dlight.Style = 0 + end + else + if !self.Owner:LookupBone("ValveBiped.Bip01_R_Hand") then return end + local dlight = DynamicLight("lantern_"..self:EntIndex()) + if dlight then + dlight.Pos = self.Owner:GetBonePosition(self.Owner:LookupBone("ValveBiped.Bip01_R_Hand")) + dlight.r = 255 + dlight.g = 255 + dlight.b = 255 + dlight.Brightness = 0.3 + dlight.Size = 100 + dlight.DieTime = CurTime() + .0001 + --dlight.Style = 0 + end + end + end + if GetConVar("gg_enabled"):GetInt() <= 0 and self.Fade == true then + self.Fade = false + self.Fading = true + self:Discharge() + end + + if (SERVER) then + local PickupRange = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + PickupRange = self.HL2MaxPickupRange + elseif GetConVar("gg_style"):GetInt() > 0 then + PickupRange = self.MaxPickupRange + end + --if GetConVar("gg_cone"):GetInt() <= 0 then + for _,ent in pairs(ents.FindInSphere( self.Owner:GetShootPos(), PickupRange )) do + if ( self:AllowedClass(ent) and !self:NotAllowedClass(ent) and ent:GetMoveType() == MOVETYPE_VPHYSICS) and ent:GetCollisionGroup() == COLLISION_GROUP_DEBRIS then -- For some reason, ragdolls that are debris cannot be targeted by the weapon, so this converts them to a targetable version. + ent:SetCollisionGroup(COLLISION_GROUP_DEBRIS_TRIGGER) + end + end + --end + end + if IsValid(self.Core) then + self.Core:SetPos( self.Owner:GetShootPos() ) + end + if !IsValid(self.Core) and self.CoreAllowRemove == false then + end + if IsValid(self.Glow) then + self.Glow:SetPos( self.Owner:GetShootPos() ) + end + + local trace = self.Owner:GetEyeTrace() + local tracetgt = trace.Entity + local tgt = NULL + + if GetConVar("gg_cone"):GetInt() > 0 and self:PickupCheck(tracetgt)==false then--and (!self.HP or !self.HP:IsValid()) then + tgt = self:GetConeEnt(trace) + ----print(tgt) + else + tgt = tracetgt + end + + + --if ( !self.TP or !IsValid(self.TP) ) and !self.Owner:KeyDown(IN_ATTACK2) then + --end + + if SERVER then + + local Distance_Test = 0 + local clawcvar = GetConVar("gg_claw_mode"):GetInt() + + if IsValid(tgt) then + Distance_Test = (tgt:GetPos()-self.Owner:GetPos()):Length() + else + Distance_Test = self.MaxPickupRange+10 + + end + + end + + if math.random( 6, 98 ) == 16 and (!self.TP or !IsValid(self.TP)) and !self.Owner:KeyDown(IN_ATTACK2) and !self.Owner:KeyDown(IN_ATTACK) + --and !IsValid(self.Zap1) and !IsValid(self.Zap2) and !IsValid(self.Zap3) + then + end + + if self.Owner:KeyPressed(IN_ATTACK2) then + if self.Fading == true then return end + elseif self.Owner:KeyReleased(IN_ATTACK2) and (!self.TP or !IsValid(self.TP)) then + if self.Fading == true then return end + + end + + if !self.Owner:KeyDown(IN_ATTACK) then + if GetConVar("gg_style"):GetInt() > 0 then + self:SetNextPrimaryFire( CurTime() + 0.5 ) + end + end + + if self.Owner:KeyPressed(IN_ATTACK2) then + if self.Fading == true then return end + --if self.HP then return end This fixes the secondary dryfire not playing + + if !tgt or !tgt:IsValid() then + --self:EmitSound("Weapon_PhysCannon.TooHeavy", 75, 100, 1) + self:EmitSound("Weapon_PhysCannon.TooHeavy") + return + end + + if (SERVER) then + if tgt:GetMoveType() == MOVETYPE_VPHYSICS then + local getstyle = GetConVar("gg_style"):GetInt() + local Mass = tgt:GetPhysicsObject():GetMass() + if ( getstyle <= 0 and Mass >= (self.HL2MaxMass+1) ) or ( getstyle > 0 and Mass >= (self.MaxMass+1) ) then + --if GetConVar("gg_style"):GetInt() <= 0 then + self:EmitSound("Weapon_PhysCannon.TooHeavy") + return + --end + end + else + self:EmitSound("Weapon_PhysCannon.TooHeavy") + return + end + end + end + + if self.TP then + if !IsValid(self.Owner) or !self.Owner:Alive() then + self:Drop() + end + if self.HP and IsValid(self.HP) then + if (SERVER) then + if !IsValid(self.TP) then self.TP = nil if self.HP and IsValid(self.HP) then self:Drop() end return end + if !IsValid(self.HP) then self.HP = nil self:Drop() return end + HPrad = self.HP:BoundingRadius()--/1.5 + if !IsValid(self.Owner) then return end + if !IsValid(self.TP) then return end + local grabpos = self.Owner:GetShootPos()+self.Owner:GetAimVector()*(self.GrabDistance+HPrad) + --local grabspeedpos = self.HP:GetPos()+( grabpos/5 ) + --[[local grabspeedpos = self.HP:GetPos():Cross( grabpos ) + local function FindTP( entity ) + local grabpos_sphere = ents.FindInSphere( grabpos, 5 ) + for _,ent in pairs(grabpos_sphere) do + if ent == entity then return true end + end + return false + end + if GetConVar("gg_style"):GetInt() <= 0 and FindTP( self.TP ) == false then + self.TP:SetPos(grabspeedpos) + else--]] + self.TP:SetPos(grabpos) + --end + + self.TP:PointAtEntity(self.Owner) + --if self.HP:GetPhysicsObject() == nil then return end + --if IsValid(phys) then + if self.HP and IsValid(self.HP) and IsValid(self.HP:GetPhysicsObject()) then + self.HP:GetPhysicsObject():Wake() + end + end --end + else + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self:SetNextSecondaryFire( CurTime() + 0.5 ); + self:EmitSound("Weapon_PhysCannon.Drop") + + timer.Simple( 0.4, + function() + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self:SendWeaponAnim(ACT_VM_IDLE) + end + end ) + + if self.TP and IsValid(self.TP) then + self.TP:Remove() + self.TP = nil + end + if self.TP and IsValid(self.TP) then + self.HP = nil + end + + self:StopSound(HoldSound) + end + + if CurTime() >= PropLockTime then + if (!self.HP or !IsValid(self.HP)) then self.HP = nil return end + if (self.HP:GetPos()-(self.Owner:GetShootPos()+self.Owner:GetAimVector()*(self.GrabDistance+HPrad))):Length() >= 80 then + self:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self:Drop() + end + end + if (!self.TP or !IsValid(self.TP)) then return end + for _, child in pairs(self.TP:GetChildren()) do + if child:GetClass() == "env_entity_dissolver" then + child:Remove() + end + end + end + end + +function SWEP:NotAllowedClass(ent) + local class = ent:GetClass() + if class == "npc_strider" + or class == "npc_helicopter" + or class == "npc_combinedropship" + or class == "npc_antliongrub" + or class == "npc_turret_ceiling" + or class == "npc_sniper" + or class == "npc_combine_camera" + or class == "npc_combinegunship" + or class == "npc_bullseye" then + return true + else + return false + end + end + +function SWEP:AllowedClass(ent) + --local trace = self.Owner:GetEyeTrace() + local class = ent:GetClass() + for _,child in pairs(ent:GetChildren()) do + if child:GetClass() == "env_entity_dissolver" then + return false + end + end -- Not yet fully tested + if class == "npc_manhack" + or class == "npc_turret_floor" + or class == "npc_sscanner" + or class == "npc_cscanner" + or class == "npc_clawscanner" + or class == "npc_rollermine" + or class == "npc_grenade_frag" + or class == "item_ammo_357" + or class == "item_ammo_ar2_altfire" + or class == "item_ammo_crossbow" + or class == "item_ammo_pistol" + or class == "item_ammo_smg1" + or class == "item_ammo_smg1_grenade" + or class == "item_battery" + or class == "item_box_buckshot" + or class == "item_healthvial" + or class == "item_healthkit" + or class == "item_rpg_round" + or class == "item_ammo_ar2" + or class == "item_item_crate" + or ent:IsWeapon() and !IsValid(ent:GetOwner()) + or class == "PhysCannon" + or class == "weapon_striderbuster" + or class == "combine_mine" + or class == "gmod_camera" + or class == "gmod_cameraprop" + or class == "helicopter_chunk" + or class == "func_physbox" + or class == "grenade_helicopter" + or class == "prop_combine_ball" + or class == "gmod_wheel" + or class == "prop_vehicle_prisoner_pod" + or class == "prop_physics_respawnable" + or class == "prop_physics_multiplayer" + or class == "prop_physics_override" + or class == "prop_physics" + or class == "prop_dynamic" + or class == "grenade_helicopter" + or class == "weapon_striderbuster" + or class == "npc_grenade_frag" + or class == "grenade_ar2" + or class == "rpg_missile" + or class == "tf_projectile_rocket" + or class == "tf_projectile_sentryrocket" + or class == "tf_projectile_arrow" + or class == "func_brush" then + return true + elseif !ent:IsNPC() and !ent:IsPlayer() and !ent:IsRagdoll() and GetConVar("gg_allow_others"):GetInt() > 0 and !self:NotAllowedClass(ent) then + return true + else + return false + end + end + +function SWEP:FriendlyNPC( npc ) + if SERVER then + if !IsValid(npc) then return false end + if !npc:IsNPC() then return false end + + if npc:Disposition( self.Owner ) == (D_LI or D_NU or D_ER) then + return true + else + return false + end +end +end + +function SWEP:AllowedCenterPhysicsClass() + local trace = self.Owner:GetEyeTrace() + local class = trace.Entity:GetClass() + if !IsValid(trace.Entity) then return false end + if class == "gmod_wheel" + or class == "prop_vehicle_prisoner_pod" + or class == "prop_physics_respawnable" + or class == "prop_physics_multiplayer" + or class == "prop_physics" + or class == "prop_physics_override" + or class == "prop_dynamic" + or class == "gmod_cameraprop" + or class == "helicopter_chunk" + or class == "func_physbox" + or class == "grenade_helicopter" + or class == "func_brush" + or class == "npc_manhack" + or class == "npc_turret_floor" + or class == "npc_sscanner" + or class == "npc_cscanner" + or class == "npc_clawscanner" + or class == "npc_rollermine" + or class == "npc_grenade_frag" + or class == "item_ammo_357" + or class == "item_ammo_ar2_altfire" + or class == "item_ammo_crossbow" + or class == "item_ammo_pistol" + or class == "item_ammo_smg1" + or class == "item_ammo_smg1_grenade" + or class == "item_battery" + or class == "item_box_buckshot" + or class == "item_healthvial" + or class == "item_healthkit" + or class == "item_rpg_round" + or class == "item_ammo_ar2" + or class == "item_item_crate" + or trace.Entity:IsWeapon() + or class == "weapon_striderbuster" + or class == "combine_mine" + or class == "PhysCannon" then + return true + else + return false + end +end + +function SWEP:PrimaryAttack() + if self.Fading == true or self.PrimaryFired == true then return end + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + local primaryfire_delay = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + self:SetNextPrimaryFire( CurTime() + 0.5 ) + primaryfire_delay = 0.5 + elseif GetConVar("gg_style"):GetInt() > 0 then + self:SetNextPrimaryFire( CurTime() + 0.5 ) + primaryfire_delay = 0.5 + end + if self:PuntCheck(self.Owner:GetEyeTrace().Entity)==true or (self.HP and self.HP:IsValid()) then + self.PrimaryFired = true + timer.Create( "gg_primaryfired_timer", primaryfire_delay, 1, function() + if IsValid(self.Owner) and IsValid(self) and self.Owner:Alive() and self.Owner:GetActiveWeapon() == self then + self.PrimaryFired = false + end + end) + end + self:SetNextSecondaryFire( CurTime() + 0.3 ) + + local vm = self.Owner:GetViewModel() + timer.Create( "attack_idle" .. self:EntIndex(), 0.4, 1, function() + if !IsValid( self ) then return end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self:SendWeaponAnim( ACT_VM_IDLE ) + end + end) + + if self.TP and IsValid(self.TP) then + self:DropAndShoot() + return + end + + local function FadeScreen() + self.Owner:ScreenFade( SCREENFADE.IN, Color( 255, 255, 255, 40 ), 0.1, 0 ) + end + + local trace = self.Owner:GetEyeTrace() + local tgt = trace.Entity + + local getstyle = GetConVar("gg_style"):GetInt() + if !tgt or !tgt:IsValid() or + ( getstyle <= 0 and (self.Owner:GetShootPos()-tgt:GetPos()):Length() > self.HL2MaxPuntRange ) + or + ( getstyle > 0 and (self.Owner:GetShootPos()-tgt:GetPos()):Length() > self.MaxPuntRange ) + or self:NotAllowedClass(tgt) + or ( tgt:IsNPC() and GetConVar("gg_friendly_fire"):GetInt()<=0 and self:FriendlyNPC(tgt) ) then + self:EmitSound("Weapon_PhysCannon.DryFire") + return + end + + if tgt:IsNPC() and !self:AllowedClass(tgt) and !self:NotAllowedClass(tgt) or tgt:IsPlayer() then + local ragdoll = nil + if SERVER then + local dmginfo = DamageInfo() + dmginfo:SetDamage( 20 ) + dmginfo:SetDamageType( DMG_DISSOLVE ) + dmginfo:SetDamageForce( self.Owner:GetPos() ) + dmginfo:SetReportedPosition( self.Owner:GetPos() ) + dmginfo:SetAttacker( self.Owner ) + dmginfo:SetInflictor( self ) + tgt:TakeDamageInfo(dmginfo) + end + self:Visual() + FadeScreen() + end + if tgt:GetClass() == "npc_antlion_grub" then + tgt:Fire("Squash","",0) + end + + if tgt:GetMoveType() == MOVETYPE_VPHYSICS and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():IsMotionEnabled() == false then + tgt:GetPhysicsObject():EnableMotion( true ) + end + + --if self:AllowedClass(tgt) or tgt:GetClass() == "prop_vehicle_airboat" or tgt:GetClass() == "prop_vehicle_jeep" and tgt:GetPhysicsObject():IsMoveable() then + if self:AllowedClass(tgt) or tgt:GetClass() == "prop_vehicle_airboat" or tgt:GetClass() == "prop_vehicle_jeep" then + self:Visual() + FadeScreen() + if tgt:GetClass() == "prop_combine_ball" then + self.Owner:SimulateGravGunPickup( tgt ) + timer.Simple( 0.01, function() + if IsValid(tgt) then + self.Owner:SimulateGravGunDrop( tgt ) + end + end) + end + if (SERVER) then + if !IsValid(tgt) or !IsValid(tgt:GetPhysicsObject()) then return end + local position = trace.HitPos + if GetConVar("gg_style"):GetInt() <= 0 then --Prop Punting + + if tgt:GetClass() == "prop_combine_ball" or tgt:GetClass() == "npc_grenade_frag" then + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*480000) -- 100 + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*480000, position ) + tgt:SetOwner(self.Owner) + else + + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*(tgt:GetPhysicsObject():GetMass()*self.PuntMultiply)) --1000000 + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*(tgt:GetPhysicsObject():GetMass()*self.PuntMultiply), position ) + end + + else + + if tgt:GetClass() == "prop_combine_ball" then + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()) + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector(), position ) + tgt:SetOwner(self.Owner) + else + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*(tgt:GetPhysicsObject():GetMass()*self.PuntMultiply)) + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*(tgt:GetPhysicsObject():GetMass()*self.PuntMultiply), position ) + end + + end + tgt:SetPhysicsAttacker(self.Owner, 10) + tgt:Fire("physdamagescale","99999",0) + + end + + local function gg_Collide_Damage( entity, data ) + if ( data.OurOldVelocity:Length() > 250 ) then + local dmginfo = DamageInfo(); + dmginfo:SetDamage( data.OurOldVelocity:Length()/76 ); + dmginfo:SetDamageForce( self.Owner:GetPos() ) + dmginfo:SetReportedPosition( self.Owner:GetPos() ) + dmginfo:SetAttacker( self.Owner ); + dmginfo:SetInflictor( self ); + entity:TakeDamageInfo(dmginfo) + end + --local callbackget = self:GetCallbacks("PhysicsCollide") + ----print("me is here") + end + if tgt:GetClass() == "npc_manhack" then + local callback = tgt:AddCallback("PhysicsCollide", gg_Collide_Damage) + --[[timer.Simple( 3.5, function() + if IsValid(tgt) then + tgt:RemoveCallback("PhysicsCollide", callback ) + end + end)--]] + end + end + + if tgt:IsRagdoll() then + self:Visual() + FadeScreen() + if (SERVER) then + + --[[for i = 1, tgt:GetPhysicsObjectCount() do + local bone = tgt:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + bone:SetPhysicsAttacker(self.Owner, 4) + tgt:GetPhysicsObject():SetPhysicsAttacker(self.Owner, 4) + end + end--]] + tgt:SetPhysicsAttacker(self.Owner, 10) + end + end + + if self:AllowedClass(tgt) and !tgt:IsRagdoll() and !CLIENT then + local damageinfo = DamageInfo() + damageinfo:SetDamage( 10 ) + damageinfo:SetDamageForce( self.Owner:GetShootPos() ) + damageinfo:SetDamagePosition( tgt:GetPos() ) + damageinfo:SetDamageType( DMG_SHOCK ) + damageinfo:SetAttacker( self.Owner ) + damageinfo:SetInflictor( self ) + damageinfo:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo(damageinfo) + end + + end + +function SWEP:DropAndShoot() + if (!self.HP or !IsValid(self.HP)) then self.HP = nil return end + self.HP:Fire("EnablePhyscannonPickup","",1) + if self.HP:IsRagdoll() then + self.HP:SetCollisionGroup( COLLISION_GROUP_NONE ) + else + self.HP:SetCollisionGroup( self.HPCollideG ) + end + self.HP:SetPhysicsAttacker(self.Owner, 10) + --self.HP:SetNWBool("launched_by_gg", true) + self.Owner:SimulateGravGunDrop( self.HP ) + self.Owner:ScreenFade( SCREENFADE.IN, Color( 255, 255, 255, 40 ), 0.1, 0 ) + local function gg_Collide_Damage( entity, data ) + if ( data.OurOldVelocity:Length() > 250 ) then + local dmginfo = DamageInfo(); + dmginfo:SetDamage( data.OurOldVelocity:Length()/62 ); + dmginfo:SetDamageForce( self.Owner:GetPos() ) + dmginfo:SetReportedPosition( self.Owner:GetPos() ) + dmginfo:SetAttacker( self.Owner ); + dmginfo:SetInflictor( self.Owner:GetWeapon( "weapon_superphyscannon" ) ); + entity:TakeDamageInfo(dmginfo) + end + --local callbackget = self:GetCallbacks("PhysicsCollide") + ----print("me is here") + end + if self.HP:GetClass() == "npc_manhack" then + local callback = self.HP:AddCallback("PhysicsCollide", gg_Collide_Damage) + timer.Simple( 3.5, function() + if self.HP and IsValid(self.HP) then + self.HP:RemoveCallback("PhysicsCollide", callback ) + end + end) + end + + self.Secondary.Automatic = true + if GetConVar("gg_style"):GetInt() > 0 then + self:SetNextSecondaryFire( CurTime() + 0.5 ); + self:SetNextPrimaryFire( CurTime() + 0.5 ); end + + self:Visual() + self:TPrem() + + self:StopSound(HoldSound) + + if self.HP:IsRagdoll() then + + --timer.Create( "zap2", 0.1, 5, function() + --local e = EffectData() + --local trace = self.Owner:GetEyeTrace() + --e:SetEntity(trace.Entity) + --e:SetMagnitude(30) + --e:SetScale(30) + --e:SetRadius(30) + --util.Effect("TeslaHitBoxes", e) + --trace.Entity:EmitSound("Weapon_StunStick.Activate") end) + local tr = self.Owner:GetEyeTrace() + + --timer.Remove( "gg_Ragdoll_Collision_Timer" ) + --[[timer.Create( "gg_Ragdoll_Collision_Timer", 2, 1, function() + if self.HP == nil then + + else + self.HP:SetCollisionGroup(COLLISION_GROUP_WEAPON) + end + end )--]] + + local dmginfo = DamageInfo() + dmginfo:SetDamage( 500 ) + dmginfo:SetAttacker( self:GetOwner() ) + dmginfo:SetInflictor( self ) + + --local dissolver = ents.Create("env_entity_dissolver") + --dissolver:SetKeyValue("magnitude",0) + --local trace = self.Owner:GetEyeTrace() + --local tgt = trace.Entity + --dissolver:SetPos(tgt) + --dissolver:SetKeyValue("target",targname) + --dissolver:Spawn() + --dmginfo:SetDamageType( DMG_SHOCK ) + --dmginfo:SetDamagePosition( tr.HitPos ) + + if GetConVar("gg_zap"):GetInt() > 0 then + self.HP:Fire("StartRagdollBoogie","",0) end + --RagdollVisual(self.HP, 1) + + for i = 1, self.HP:GetPhysicsObjectCount() do + local bone = self.HP:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + if GetConVar("gg_zap"):GetInt() > 0 then + end + self.HP:gg_RagdollCollideTimer() + --timer.Simple( 0.02, + --function() + if IsValid(bone) then + if GetConVar("gg_style"):GetInt() <= 0 then + bone:AddVelocity(self.Owner:GetAimVector()*(20000/8))--/(self.HP:GetPhysicsObject():GetMass()/200)) else + else + bone:AddVelocity(self.Owner:GetAimVector()*(self.HP:GetPhysicsObject():GetMass()*self.PuntMultiply)) + end + end + --end ) + end + end + else + local trace = self.Owner:GetEyeTrace() + local position = trace.HitPos + + timer.Simple( 0.02, + function() + if GetConVar("gg_style"):GetInt() <= 0 then --Prop Throwing + + if self.HP:GetClass() == "prop_combine_ball" then + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*480000) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*480000,position ) + self.HP:SetOwner(self.Owner) + else + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*(self.HP:GetPhysicsObject():GetMass()*self.PuntMultiply)) --3500000 --500*( self.HP:GetPhysicsObject():GetMass() ) ) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*(self.HP:GetPhysicsObject():GetMass()*self.PuntMultiply) ,position ) + end + + else + + if self.HP:GetClass() == "prop_combine_ball" then + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.PuntForce/0.125) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.PuntForce/0.125,position ) + self.HP:SetOwner(self.Owner) + else + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.PuntForce) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.PuntForce,position ) + end + + end + end ) + end + + self.HP:Fire("physdamagescale","999",0) + + timer.Simple( 0.04, + function() + --self.HP = nil + end ) + + if self.HPCollideG then + self.HPCollideG = COLLISION_GROUP_NONE + end + + end + + +function SWEP:SecondaryAttack() + if self.Fading == true then return end + if self.TP and IsValid(self.TP) then + self:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self:Drop() + return + end + + local trace = self.Owner:GetEyeTrace() + local tracetgt = trace.Entity + local tgt = NULL + + if GetConVar("gg_cone"):GetInt() > 0 and self:PickupCheck(tracetgt)==false then--and (!self.HP or !self.HP:IsValid()) then + tgt = self:GetConeEnt(trace) + ----print(tgt) + --[[if !tgt or !tgt:IsValid() then return end + local utiltrace = util.TraceLine( { + start = trace.StartPos, + endpos = tgt:GetPos(), + filter = {tgt} + } ) + if (utiltrace.FractionLeftSolid > 0) then + return + end--]] + else--if GetConVar("gg_cone"):GetInt() <= 0 then + tgt = tracetgt + end + + -- + + if !tgt or !tgt:IsValid() then + self.Owner:EmitSoundEx("Weapon_PhysCannon.TooHeavy") + return + end + local getstyle = GetConVar("gg_style"):GetInt() + if ( getstyle <= 0 ) + and + ( ( tgt:IsNPC() or tgt:IsPlayer() ) and tgt:Health() > self.MaxTargetHealth ) + or ( tgt:IsNPC() and tgt:GetClass() == "npc_bullseye" ) + or ( (tgt:IsNPC() or tgt:IsPlayer() or tgt:IsRagdoll() ) and !util.IsValidRagdoll(tgt:GetModel()) and !util.IsValidProp(tgt:GetModel()) ) + --or ( tgt:IsNPC() or tgt:IsPlayer() or tgt:IsRagdoll() ) and ( getstyle <= 0 and tgt:GetMass() > self.HL2MaxMass or getstyle > 0 and tgt:GetMass() > self.MaxMass ) -- Non-functioning + then return end + + if !self:NotAllowedClass(tgt) and !self:AllowedClass(tgt) then + if (SERVER) then + local Dist = (tgt:GetPos()-self.Owner:GetPos()):Length() + if GetConVar("gg_style"):GetInt() <= 0 and Dist >= self.HL2MaxPickupRange + or GetConVar("gg_style"):GetInt() > 0 and Dist >= self.MaxPickupRange + then return end + if tgt:IsPlayer() and tgt:HasGodMode() == true then return end + --if tgt:IsPlayer() and server_settings.Int( "sbox_plpldamage" ) == 1 then + --self:EmitSound("Weapon_PhysCannon.TooHeavy") + --return + --end + + if tgt:IsNPC() or tgt:IsPlayer() then + self:EmitSound("Weapon_PhysCannon.TooHeavy") + end + end + end + + if !tgt:IsValid() then + self:EmitSound("Weapon_PhysCannon.TooHeavy") + end + + if tgt:GetMoveType() == MOVETYPE_VPHYSICS then + if (SERVER) then + if tgt:GetPhysicsObject():IsMotionEnabled() == false then + tgt:GetPhysicsObject():EnableMotion( true ) + end + local Mass = tgt:GetPhysicsObject():GetMass() + local Dist = (tgt:GetPos()-self.Owner:GetPos()):Length() + local GetPullForce = {} + if GetConVar("gg_style"):GetInt() <= 0 then + GetPullForce = self.HL2PullForce + else + GetPullForce = self.PullForce + end + local vel = GetPullForce/(Dist*0.002) + local ragvel = self.HL2PullForceRagdoll/(Dist*0.001) + + if GetConVar("gg_style"):GetInt() <= 0 then + local getstyle = GetConVar("gg_style"):GetInt() + if ( ( getstyle <= 0 and Mass >= (self.HL2MaxMass+1) ) or ( getstyle > 0 and Mass >= (self.MaxMass+1) ) ) and tgt:GetClass() != "prop_combine_ball" then + return + end end + + if self:AllowedClass(tgt) and tgt:GetPhysicsObject():IsMoveable() then--and ( !constraint.HasConstraints( tgt ) ) then + if GetConVar("gg_style"):GetInt() <= 0 and Dist < self.HL2MaxPickupRange + or GetConVar("gg_style"):GetInt() > 0 and Dist < self.MaxPickupRange then + self:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self.HP = tgt + self.Owner:SimulateGravGunPickup( self.HP ) + self.HPCollideG = tgt:GetCollisionGroup() + self.HP.EmergencyHPCollide = tgt:GetCollisionGroup() + tgt:SetCollisionGroup(COLLISION_GROUP_WEAPON) + + self:Pickup() + self:SetNextSecondaryFire( CurTime() + 0.2 ); + if GetConVar("gg_style"):GetInt() > 0 then + self:SetNextPrimaryFire( CurTime() + 0.1 ); end + self.Secondary.Automatic = false + --[[elseif GetConVar("gg_style"):GetInt() <= 0 and tgt:IsRagdoll() then + for d = 1, ent:GetPhysicsObjectCount() do + local bone = ent:GetPhysicsObjectNum(d) + + if bone and bone.IsValid and bone:IsValid() then + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*-ragvel ) + bone:ApplyForceCenter(self.Owner:GetAimVector()*-ragvel ) + --print("bruhto") + end + end--]] + else + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*-vel ) + end + end + end + else + self:EmitSound("Weapon_PhysCannon.TooHeavy") + end + end + +function SWEP:Pickup() + if !self.HP or !self.HP:IsValid() then self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) return end + self.Owner:EmitSoundEx("Weapon_PhysCannon.Pickup") + self.Owner:StopSound("Weapon_PhysCannon.OpenClaws") + self.Owner:StopSound("Weapon_PhysCannon.CloseClaws") + self.Owner:EmitSoundEx(HoldSound) + + PropLockTime = CurTime()+1 + + timer.Simple( 0.4, + function() + if IsValid(self.Owner) and IsValid(self) and self.Owner:Alive() and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self:SendWeaponAnim(ACT_VM_RELOAD) + end + end ) + + local trace = self.Owner:GetEyeTrace() + + self.HP:Fire("DisablePhyscannonPickup","",0) + + if !IsValid(self.HP:GetPhysicsObject()) then return end + if self.HP:GetClass()=="prop_combine_ball" or self.HP:GetClass()=="npc_manhack" then + self.TP = ents.Create("prop_dynamic") + else + self.TP = ents.Create("prop_physics") + end + if self:AllowedCenterPhysicsClass() then + self.TP:SetPos(self.HP:LocalToWorld(self.HP:OBBCenter())) -- Doesn't affect much + else + self.TP:SetPos(self.HP:GetPhysicsObject():GetMassCenter()) + end + if (!self.HP or !IsValid(self.HP)) then self.HP = nil return end + if IsValid(self.HP:GetPhysicsObject()) then + self.TP:SetPos(self.HP:GetPhysicsObject():GetPos()) + --self.TP:SetPos(self.HP:GetNetworkOrigin()) + self.TP:SetModel("models/props_junk/PopCan01a.mdl") + self.TP:Spawn() + self.TP:SetCollisionGroup(COLLISION_GROUP_WORLD) + self.TP:SetColor(Color(255,255,255,1)) + self.TP:SetRenderMode(RENDERMODE_TRANSCOLOR) + self.TP:PointAtEntity(self.Owner) + if self.TP:GetClass() == "prop_physics" then + self.TP:GetPhysicsObject():SetMass(50000) + self.TP:GetPhysicsObject():EnableMotion(false) + end + + --if constraint.FindConstraints(self.HP, Weld) == nil then + local bone = math.Clamp(trace.PhysicsBone,0,1) + --[[if self.HP:IsRagdoll() then + --self.Const = constraint.Ballsocket(self.TP, self.HP, 0, bone,trace.HitNormal, 0, 0,1) + self.Const = constraint.AdvBallsocket(self.TP, self.HP, 0, bone,trace.HitNormal, self.TP:GetPos(), + 0, -- Break Limit + 0, -- Torque Break Limit + 0, -- X Min + 0, -- Y Min + 0, -- Z Min + 500, -- X Max + 500, -- Y Max + 500, -- Z Max + 10, -- X Friction + 10, -- Y Friction + 10, -- Z Friction + 0, -- Don't Limit Rotation Only + 1) -- No Collide + else--]] + self.Const = constraint.Weld(self.TP, self.HP, 0, bone,0,1) + --end + --end + + if self.HP:IsRagdoll() then + self.HP:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + end + + if self.HP:GetClass() == "prop_combine_ball" then + self.HP:SetOwner(self.Owner) + self.HP:GetPhysicsObject():AddGameFlag( FVPHYSICS_WAS_THROWN ) + end + + --self:EmitSound(HoldSound) + end +end + +function SWEP:Drop() + if !IsValid(self) then return end + if !IsValid(self.HP) then return end + self.HP:Fire("EnablePhyscannonPickup","",1) + if self.HP:IsRagdoll() then + self.HP:SetCollisionGroup(COLLISION_GROUP_WEAPON) + else + self.HP:SetCollisionGroup( self.HPCollideG ) + end + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + + self.Secondary.Automatic = true + self.Owner:EmitSoundEx("Weapon_PhysCannon.Drop") + self:SetNextSecondaryFire( CurTime() + 0.5 ); + if self.HP:GetClass() == "prop_combine_ball" then + self.Owner:SimulateGravGunPickup( self.HP ) + timer.Simple( 0.01, function() + if self.HP and IsValid(self.HP) then + self.Owner:SimulateGravGunDrop( self.HP ) + end + end) + else + self.Owner:SimulateGravGunDrop( self.HP ) + end + + timer.Simple( 0.4, + function() + if !IsValid( self ) then return end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self:SendWeaponAnim(ACT_VM_IDLE) + end + end ) + + + + + self:TPrem() + if self.HP and IsValid(self.HP) then + --self.HP = nil + end + if self.HPCollideG then + self.HPCollideG = COLLISION_GROUP_NONE + end + + self:StopSound(HoldSound) + + end + +function SWEP:Visual() + self:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self.Owner:EmitSoundEx( "Weapon_PhysCannon.Launch" ) + if SERVER then + if GetConVar("gg_muzzle_flash"):GetInt() > 0 then + local Light = ents.Create("light_dynamic") + Light:SetKeyValue("brightness", "5") + Light:SetKeyValue("distance", "200") + Light:SetLocalPos(self.Owner:GetShootPos()) + Light:SetLocalAngles(self:GetAngles()) + Light:Fire("Color", "255 255 255") + Light:SetParent(self) + Light:Spawn() + Light:Activate() + Light:Fire("TurnOn", "", 0) + self:DeleteOnRemove(Light) + timer.Simple(0.1,function() if self:IsValid() and Light:IsValid() then Light:Remove() end end) + end + end + if GetConVar("gg_style"):GetInt() <= 0 then + self.Owner:ViewPunch( Angle( -5, 2, 0 ) ) + else + self.Owner:ViewPunch( Angle( -5, 2, 0 ) ) + end + + local trace = self.Owner:GetEyeTrace() + + if (SERVER) then + if GetConVar("gg_no_effects"):GetInt() > 0 then return end + self.MuzzleAllowRemove = false + if IsValid(self.Muzzle) then + self.Muzzle:SetParent(self.Owner) + self.Muzzle:SetOwner(self.Owner) + end + + timer.Simple( 0.12, + function() + if IsValid(self.Muzzle) then + self:RemoveMuzzle() + end + end ) + end + end +local entmeta = FindMetaTable( "Entity" ) + +function entmeta:gg_RagdollCollideTimer() + local name = "gg_collidecheck_"..self:EntIndex() + if timer.Exists(name) then timer.Adjust(name,2.0,1) return end + + local function CollisionCheck( ent ) + if !IsValid(ent) then return false end + local collision = ent:GetCollisionGroup() + if collision!=COLLISION_GROUP_WEAPON + or collision!=COLLISION_GROUP_DEBRIS + or collision!=COLLISION_GROUP_DEBRIS_TRIGGER + or collision!=COLLISION_GROUP_WORLD + then + return true + else + return false + end + end + + timer.Create( name, 4.5, 1, function() + if !IsValid(self) then return end + local collision = self:GetCollisionGroup() + --if GetConVar("gg_cone"):GetInt() <= 0 and CollisionCheck(self)==true then + self:SetCollisionGroup(COLLISION_GROUP_WEAPON) + --end + end) +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") + if self.Owner:GetPlayerClass() == "engineer" then + self:SetHoldType( "PRIMARY" ) + elseif self.Owner:GetPlayerClass() == "medic" then + self:SetHoldType( "PRIMARY" ) + elseif self.Owner:GetPlayerClass() == "scout" then + self:SetHoldType( "PRIMARY" ) + else + self:SetHoldType( "SECONDARY" ) + end + self.ClawOpenState = false + self.Fade = true + self.Fading = false + self.RagdollRemoved = false + self.CoreAllowRemove = true + self.GlowAllowRemove = true + self.MuzzleAllowRemove = true + self.PrimaryFired = false + --self:SetNextPrimaryFire( CurTime() + 5 ) + self:SetNextSecondaryFire( CurTime() + 5 ) + --[[if self.Owner:GetWeapon("weapon_physcannon"):IsValid() then + ----print("yeah") + net.Start("gg_Deploy_DisableGrav") + net.Send( self.Owner ) + end--]] + + self:TimerDestroyAll() + + local claw_mode_cvar = GetConVar("gg_claw_mode"):GetInt() + if claw_mode_cvar <= 0 then + + elseif (claw_mode_cvar > 0 and claw_mode_cvar < 2) then + + end + if GetConVar("gg_style"):GetInt() <= 0 then + self:SendWeaponAnim( ACT_VM_DRAW ) + if GetConVar("gg_equip_sound"):GetInt() > 0 and GetConVar("gg_enabled"):GetInt() > 0 then + self:EmitSound("weapons/physcannon/physcannon_charge.wav") + end + end + local vm = self.Owner:GetViewModel() + local duration = 0 + --if GetConVar("gg_style"):GetInt() <= 0 then + duration = vm:SequenceDuration() + --else + --duration = GetConVar("sv_defaultdeployspeed"):GetInt() + --end + timer.Create( "deploy_idle"..self:EntIndex(), duration, 1, function() + if !IsValid( self ) then return true end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self:SendWeaponAnim( ACT_VM_IDLE ) + end + --self:SetNextPrimaryFire( CurTime() + 0.01 ) + self:SetNextSecondaryFire( CurTime() + 0.01 ) + end) + return true +end + +function SWEP:Holster() +self:CallBaseFunction("Holster") +if self.TP and self.TP:IsValid() then + +if SERVER then +local index = self.Owner:EntIndex() +local TPIndex = self.TP:EntIndex() +local HPIndex = TPIndex +if self.HP and self.HP:IsValid() then +HPIndex = self.HP:EntIndex() +end +timer.Simple( 0.01, function() + local ply = ents.GetByIndex(index) + local TP = ents.GetByIndex(TPIndex) + local HP = ents.GetByIndex(HPIndex) + local CollideG = HP.EmergencyHPCollide + if IsValid(ply) and ply:IsPlayer() and !ply:Alive() then + if TP and TP:IsValid() then + + if HP != TP then + HP:Fire("EnablePhyscannonPickup","",1) + if HP:IsRagdoll() then + HP:SetCollisionGroup(COLLISION_GROUP_WEAPON) + else + HP:SetCollisionGroup( CollideG ) + end + --HP:SetCollisionGroup(COLLISION_GROUP_NONE) + + if HP:IsRagdoll() then + if GetConVar("gg_zap"):GetInt() > 0 then + end + HP:gg_RagdollCollideTimer() + if GetConVar("gg_zap"):GetInt() > 0 then + HP:Fire("StartRagdollBoogie","",0) + end + end + + if HP:GetClass() == "prop_combine_ball" then + ply:SimulateGravGunPickup( HP ) + timer.Simple( 0.01, function() + if HP and IsValid(HP) then + ply:SimulateGravGunDrop( HP ) + end + end) + else + ply:SimulateGravGunDrop( HP ) + end + + if HP and IsValid(HP) then + --HP = nil + end + if CollideG then + CollideG = COLLISION_GROUP_NONE + end + TP:Remove() + + end + + end + end +end) +end + +end + +self:TimerDestroyAll() +--[[if SERVER then + if self.Owner:GetWeapon("weapon_physcannon"):IsValid() then + local ply = self.Owner + ----print("yeah2") + net.Start("gg_Holster_EnableGrav") + net.Send( ply ) + end +end--]] +self:StopSound(HoldSound) +self:SetPoseParameter("active", 0) +--if self.TP then +--self:Drop() +--end +self.HP = nil + if self.TP and IsValid(self.TP) then + return false + else + self:RemoveFX() + self:TPrem() + if self.HP and IsValid(self.HP) then + self.HP = nil + end + return true + end +end + +function SWEP:OnDrop() + if GetConVar("gg_no_effects"):GetInt() <= 0 then + self:RemoveFX() + self:TPrem() + end + timer.Simple( 0.02, function() + if IsValid(self) then + self:Remove() + end + end ) + --grav_entity:GetPhysicsObject():SetVelocity( Vector( 0, 350, 0 ) ) + --grav_entity:GetPhysicsObject():ApplyForceCenter( Vector( 0, 0, -100 ) ) + --grav_entity:GetPhysicsObject():ApplyForceOffset( Vector( 0, 3500, 0 ) , self:GetPos() ) + grav_entity.Planted = false + if self.HP and IsValid(self.HP) then + self.HP = nil + end + end + +function SWEP:TPrem() + if self.TP then + if !IsValid(self.TP) then return end + self.TP:Remove() + self.TP = nil + end + + if self.Const then + if !IsValid(self.Const) then return end + self.Const:Remove() + self.Const = nil + end + end + +function SWEP:RemoveMuzzle() + if self.Muzzle then + if !IsValid(self.Muzzle) then return end + self.MuzzleAllowRemove = true + self.Muzzle:Remove() + self.Muzzle = nil + end + end + +function SWEP:RemoveFX() + if self.Core then + if !IsValid(self.Core) then return end + self.CoreAllowRemove = true + self.Core:Remove() + self.Core = nil + end + if self.Glow then + self.GlowAllowRemove = true + self.Glow:Remove() + self.Glow = nil + end + end + +function SWEP:CoreEffect() + if SERVER then + if GetConVar("gg_no_effects"):GetInt() > 0 then return end + if !IsValid(self.Core) then + --self.Core:AddEFlags(EFL_KEEP_ON_RECREATE_ENTITIES) + end + self.CoreAllowRemove = false + if !IsValid(self.Core) then return end + self.Core:SetParent(self.Owner) + self.Core:SetOwner(self.Owner) + end + end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pickaxe/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pickaxe/shared.lua new file mode 100644 index 000000000..add029eca --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pickaxe/shared.lua @@ -0,0 +1,54 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +if CLIENT then + +SWEP.PrintName = "Knife" + +function SWEP:ResetBackstabState() + self.NextBackstabIdle = nil + self.BackstabState = false + self.NextAllowBackstabAnim = CurTime() + 0.8 +end + +end + +SWEP.Slot = 2 +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_shovel_soldier.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_pickaxe/c_pickaxe.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_PickAxe.Swing") +SWEP.SwingCrit = Sound("Weapon_PickAxe.SwingCrit") +SWEP.HitFlesh = Sound("Weapon_PickAxe.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") + +SWEP.BaseDamage = 80 +SWEP.DamageRandomize = 1.35 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.CriticalChance = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" + +function SWEP:Deploy() + return self:CallBaseFunction("Deploy") +end +function SWEP:Holster() + if SERVER then + timer.Stop("SetFasterSpeed2") + end + + return self:CallBaseFunction("Holster") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pipebomblauncher/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pipebomblauncher/shared.lua new file mode 100644 index 000000000..02431ee1a --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pipebomblauncher/shared.lua @@ -0,0 +1,435 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Stickybomb Launcher" + +SWEP.GlobalCustomHUD = {HudDemomanPipes = true} +SWEP.CustomHUD = {HudBowCharge = true} +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +sound.Add( { + name = "Taunt.Demo01FootSpin", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_foot_spin.wav"} +} ) +sound.Add( { + name = "Weapon_Sticky_Jumper.Single", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"weapons/sticky_jumper_shoot.wav"} +} ) +sound.Add( { + name = "Taunt.Demo01HandClap", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_hand_clap.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers11", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers11.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers10", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers10.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers09", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers09.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers08", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers08.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers07", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers07.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers06", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers06.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers05", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers05.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers04", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers04.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers03", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers03.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers02", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers02.wav"} +} ) +sound.Add( { + name = "Demoman.Jeers01", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"vo/demoman_jeers01.wav"} +} ) +sound.Add( { + name = "Taunt.Demo01HandClap2", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_hand_clap.wav"} +} ) + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.Slot = 1 +SWEP.HasTeamColouredVModel = false +SWEP.HasTeamColouredWModel = false + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.ChargeTime = 4 +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("Weapon_StickyBombLauncher.Single") +SWEP.ShootCritSound = Sound("Weapon_StickyBombLauncher.SingleCrit") +SWEP.DetonateSound = Sound("Weapon_StickyBombLauncher.ModeSwitch") +SWEP.ChargeSound = Sound("weapons/stickybomblauncher_charge_up.wav") +SWEP.ReloadSound = Sound("Weapon_StickyBombLauncher.WorldReload") +SWEP.Primary.ClipSize = 8 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.7 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "ar2" + +SWEP.MaxBombs = 8 +SWEP.Bombs = {} + +SWEP.ProjectileShootOffset = Vector(0, 13, -10) +SWEP.MinForce = 805 +SWEP.MaxForce = 805*2.3 +SWEP.AddPitch = -4 + +SWEP.SensorCone = 30 +SWEP.NoSensorDetonateRadius = 100 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + if self.Owner:IsPlayer() and not self.Owner:IsHL2() and self.Owner:Team() == TEAM_BLU and string.find(game.GetMap(), "mvm_") then + timer.Create("Unstuck"..self.Owner:EntIndex(), 0.01, 0, function() + if SERVER then + if self.Owner:IsInWorld() == false then + self.Owner:Spawn() + end + end + end) + self.Owner:SetBloodColor(BLOOD_COLOR_MECH) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "mult_maxammo_secondary" then + self.Safe = true + end +end + +function SWEP:IsBombInSensorCone(ent) + local dot = self.Owner:GetAimVector():Dot((ent:GetPos() - self.Owner:GetShootPos()):GetNormal()) + + if not self.SensorCos then + self.SensorCos = math.cos(math.rad(self.SensorCone * 0.5)) + end + + return dot >= self.SensorCos +end + +function SWEP:InitOwner() + self.Owner:SetNWInt("NumBombs", 0) + self.Owner.Bombs = {} +end + +function SWEP:CreateSounds() + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + + self.SoundsCreated = true +end + +function SWEP:PrimaryAttack() + if not self.IsDeployed then return false end + if self.Reloading then return false end + + self.NextDeployed = nil + + -- Already charging + if self.Charging then return end + + local Delay = self.Delay or -1 + local QuickDelay = self.QuickDelay or -1 + + if (not(self.Primary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK) and QuickDelay>=0 and CurTime() self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:Play() + end + end + end + self:CallBaseFunction("Think") + self.Owner:SetWalkSpeed(BASESPEED * sp) + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + +end + +function SWEP:GlobalSecondaryAttack() + if SERVER then + self:DetonateProjectiles() + end +end + +function SWEP:ShootProjectile() + if SERVER then + if not self.Owner.Bombs then + self:InitOwner() + end + + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() self:Reload() end) + end + + local grenade = ents.Create("tf_projectile_pipe_remote") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + + grenade:Spawn() + if self.Safe == true then + grenade:SetModel("models/weapons/w_models/w_stickybomb2.mdl") + end + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_kingmaker_sticky/c_kingmaker_sticky.mdl" then + grenade:SetModel("models/workshop/weapons/c_models/c_kingmaker_sticky/w_kingmaker_stickybomb.mdl") + grenade.ExplosionSound = Sound("Weapon_TackyGrendadier.Explode") + end + local force = Lerp((CurTime() - self.ChargeStartTime) / self.ChargeTime, self.MinForce, self.MaxForce) + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * force * (grenade.Mass or 10) + + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + grenade:GetPhysicsObject():ApplyForceCenter(vel) + + table.insert(self.Owner.Bombs, grenade) + if #self.Owner.Bombs>self.MaxBombs then + table.remove(self.Owner.Bombs, 1):DoExplosion() + end + + self.Owner:SetNWInt("NumBombs", #self.Owner.Bombs) + if self:GetItemData().model_player == "models/weapons/c_models/c_sticky_jumper/c_sticky_jumper.mdl" then + grenade:SetModel("models/weapons/w_models/w_stickybomb2.mdl") + self.CriticalChance = 0 + self.MaxBombs = 2 + grenade.ExplosionSound = Sound("weapons/sticky_jumper_explode1.wav") + end + end + self:ShootEffects() + self.Owner:ViewPunch( self.PunchView ) +end + +function SWEP:DetonateProjectiles(nosound, noexplode) + if SERVER then + local owner = (IsValid(self.Owner) and self.Owner) or self.CurrentOwner + + if not self or not self:IsValid() then return end + + if not owner.Bombs then + self:InitOwner() + end + + local det = false + + if not owner.Bombs then return end + + for k=#owner.Bombs,1,-1 do + local bomb = owner.Bombs[k] + local ready = bomb and (bomb.Ready or noexplode) + + if ready and bomb.DetonateMode == 1 and not noexplode then + if bomb:GetPos():Distance(owner:GetShootPos()) > self.NoSensorDetonateRadius and not self:IsBombInSensorCone(bomb) then + ready = false + end + end + + if ready then + if noexplode then + bomb:Break() + else + bomb:DoExplosion() + det = true + end + table.remove(owner.Bombs, k) + end + end + + if det and not nosound then + self.Owner:EmitSoundEx(self.DetonateSound, 100, 100) + end + + owner:SetNWInt("NumBombs", #owner.Bombs) + end +end + +function SWEP:OnRemove() + self:DetonateProjectiles(true, true) + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + end +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pistol/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pistol/shared.lua new file mode 100644 index 000000000..5bcc77e1a --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pistol/shared.lua @@ -0,0 +1,78 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Pistol" +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_pistol/c_pistol.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pistol" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_Pistol.TF_Single") +SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_pistol") + +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.04 + +SWEP.Primary.ClipSize = 12 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.15 +SWEP.ReloadTime = 1.2 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "pistol" + +SWEP.IsRapidFire = true + +function SWEP:InspectAnimCheck() + self.BaseClass.InspectAnimCheck(self) + if self.Owner:GetPlayerClass() == "scout" then + self.ReloadSound = Sound("Weapon_Pistol.WorldReload") + end + if self.Owner:GetPlayerClass() == "merc_dm" then + self:SetHoldType("SECONDARY2") + self.ReloadTime = 2 + self.Primary.ClipSize = 15 + self.ShootSound = Sound("weapons/pistol_dm_shoot.wav") + self.ShootCritSound = Sound("weapons/pistol_dm_shoot_crit.wav") + self.ReloadSound = Sound("weapons/pistol_worldreload_merc.wav") + if CLIENT then + self.RenderGroup = RENDERGROUP_BOTH + + self.ViewModel = "models/weapons/v_models/v_pistol_mercenary.mdl" + self.WorldModel = "models/weapons/w_models/w_pistol_mercenary.mdl" + self:SetModel("models/weapons/v_models/v_pistol_mercenary.mdl") + end + + self.ViewModel = "models/weapons/v_models/v_pistol_mercenary.mdl" + self.WorldModel = "models/weapons/w_models/w_pistol_mercenary.mdl" + self:SetModel("models/weapons/v_models/v_pistol_mercenary.mdl") + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pistol_m9/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pistol_m9/shared.lua new file mode 100644 index 000000000..abba3b2b7 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pistol_m9/shared.lua @@ -0,0 +1,110 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "USP Pistol" + SWEP.Slot = 2 + SWEP.RenderGroup = RENDERGROUP_BOTH +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_pistol.mdl" +SWEP.WorldModel = "models/weapons/w_pistol.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_pistol" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_Pistol.Single") +SWEP.ShootCritSound = Sound("Weapon_Pistol.Single") +SWEP.ReloadSound = Sound("Weapon_Pistol.Reload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_pistol") + +SWEP.BaseDamage = 15 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.04 + +SWEP.Primary.ClipSize = 18 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.25 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "pistol" + +SWEP.IsRapidFire = true +SWEP.ReloadTime = 1.6 +SWEP.UseHands = true +function SWEP:InspectAnimCheck() + +end + + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + self.Owner:SetAnimation(PLAYER_RELOAD) + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound then + if SERVER then + self.Owner:EmitSoundEx(self.ReloadSound) + end + end + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pistol_scout/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pistol_scout/shared.lua new file mode 100644 index 000000000..58c443a1f --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pistol_scout/shared.lua @@ -0,0 +1,52 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 1 +if CLIENT then + SWEP.PrintName = "Pistol" +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_pistol/c_pistol.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pistol" +--SWEP.BetaMuzzle = "tf_muzzleflash_beta" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_Pistol.TF_Single") +SWEP.ShootCritSound = Sound("Weapon_Pistol.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_pistol") + +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.04 + +SWEP.Primary.ClipSize = 12 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.15 +SWEP.ReloadTime = 1.2 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "pistol" +SWEP.IsRapidFire = true \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_pomson/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_pomson/shared.lua new file mode 100644 index 000000000..36d17fcb5 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_pomson/shared.lua @@ -0,0 +1,291 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Pomson 6000" +SWEP.Slot = 0 +SWEP.HasCModel = true +SWEP.RenderGroup = RENDERGROUP_BOTH + + + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_drg_pomson/c_drg_pomson.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_Pomson.Single") +SWEP.ShootCritSound = Sound("Weapon_Pomson.SingleCrit") +SWEP.CustomExplosionSound = Sound("Weapon_CowMangler.Explode") +SWEP.Primary.Reload = Sound("Weapon_CowMangler.Reload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.5 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = ACT_SECONDARY2_VM_DRAW +self.VM_IDLE = ACT_SECONDARY2_VM_IDLE +end +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(ACT_SECONDARY2_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(ACT_SECONDARY2_VM_RELOAD) + self.Owner:SetAnimation(PLAYER_RELOAD) + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + +function SWEP:Think() + self:TFViewModelFOV() + self:TFFlipViewmodel() + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat() - GetConVar("tf_weapon_deploy_speed"):GetInt(), 2) + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat(),2) + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not game.SinglePlayer() or SERVER then + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.RequestedReload then + self:Reload() + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + self.CanInspect = true + self:CheckAutoReload() + end + + if self.IsDeployed then + self.CanInspect = true + end + + //--print(deployspeed) + + if self.NextReload and CurTime()>=self.NextReload then + self:SetClip1(self:Clip1() + self.AmmoAdded) + + if not self.ReloadSingle and self.ReloadDiscardClip then + self.Owner:RemoveAmmo(self.Primary.ClipSize, self.Primary.Ammo, false) + else + self.Owner:RemoveAmmo(self.AmmoAdded, self.Primary.Ammo, false) + end + + self.Delay = -1 + self.QuickDelay = -1 + + + if self:Clip1()>=self.Primary.ClipSize or self.Owner:GetAmmoCount(self.Primary.Ammo)==0 then + -- Stop reloading + self.Reloading = false + self.CanInspect = true + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_FINISH) + self:SendWeaponAnim(ACT_SECONDARY2_RELOAD_FINISH) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_END) + self.CanInspect = true + --self.Owner:SetAnimation(10001) -- reload finish + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + else + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + self.NextReload = nil + else + self:SendWeaponAnim(ACT_SECONDARY2_VM_RELOAD) + --self.Owner:SetAnimation(10000) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP) + self.Owner:EmitSoundEx("Weapon_Pomson.Reload") + self.NextReload = CurTime() + (self.ReloadTime or self:SequenceDuration()) + + end + end + + if self.NextReloadStart and CurTime()>=self.NextReloadStart then + self:SendWeaponAnim(ACT_SECONDARY2_VM_RELOAD) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP) + --self.Owner:SetAnimation(10000) -- reload loop + self.NextReload = CurTime() + (self.ReloadTime or self:SequenceDuration()) + + self.AmmoAdded = 1 + self.Owner:EmitSoundEx("Weapon_Pomson.Reload") + + self.NextReloadStart = nil + end + + self:Inspect() +end + + +function SWEP:PrimaryAttack() + self:StopTimers() + + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + + self:SendWeaponAnim(ACT_SECONDARY2_VM_PRIMARYATTACK) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + if self then + if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) + end + end + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + end + end + end + + self:RollCritical() -- Roll and check for criticals first + + self.Owner:ViewPunch( self.PunchView ) + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + return true +end + + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_pomson") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = self.CustomExplosionSound + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_raygun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_raygun/shared.lua new file mode 100644 index 000000000..9d6beca23 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_raygun/shared.lua @@ -0,0 +1,291 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Raygun" +SWEP.Slot = 1 +SWEP.HasCModel = true +SWEP.RenderGroup = RENDERGROUP_BOTH + + + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_shotgun_soldier.mdl" +SWEP.WorldModel = "models/workshop/weapons/c_models/c_drg_righteousbison/c_drg_righteousbison.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_Bison.Single") +SWEP.ShootCritSound = Sound("Weapon_Bison.SingleCrit") +SWEP.CustomExplosionSound = Sound("Weapon_CowMangler.Explode") +SWEP.Primary.Reload = Sound("Weapon_Bison.Reload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_METAL +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.3 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY2" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = ACT_SECONDARY2_VM_DRAW +self.VM_IDLE = ACT_SECONDARY2_VM_IDLE +end +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(ACT_SECONDARY2_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(ACT_SECONDARY2_VM_RELOAD) + self.Owner:SetAnimation(PLAYER_RELOAD) + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + +function SWEP:Think() + self:TFViewModelFOV() + self:TFFlipViewmodel() + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat() - GetConVar("tf_weapon_deploy_speed"):GetInt(), 2) + //deployspeed = math.Round(GetConVar("tf_weapon_deploy_speed"):GetFloat(),2) + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if not game.SinglePlayer() or SERVER then + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.RequestedReload then + self:Reload() + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + self.CanInspect = true + self:CheckAutoReload() + end + + if self.IsDeployed then + self.CanInspect = true + end + + //--print(deployspeed) + + if self.NextReload and CurTime()>=self.NextReload then + self:SetClip1(self:Clip1() + self.AmmoAdded) + + if not self.ReloadSingle and self.ReloadDiscardClip then + self.Owner:RemoveAmmo(self.Primary.ClipSize, self.Primary.Ammo, false) + else + self.Owner:RemoveAmmo(self.AmmoAdded, self.Primary.Ammo, false) + end + + self.Delay = -1 + self.QuickDelay = -1 + + + if self:Clip1()>=self.Primary.ClipSize or self.Owner:GetAmmoCount(self.Primary.Ammo)==0 then + -- Stop reloading + self.Reloading = false + self.CanInspect = true + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_FINISH) + self:SendWeaponAnim(ACT_SECONDARY2_RELOAD_FINISH) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_END) + self.CanInspect = true + --self.Owner:SetAnimation(10001) -- reload finish + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + else + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + self.NextReload = nil + else + self:SendWeaponAnim(ACT_SECONDARY2_VM_RELOAD) + --self.Owner:SetAnimation(10000) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP) + self.Owner:EmitSoundEx("Weapon_Pomson.Reload") + self.NextReload = CurTime() + (self.ReloadTime or self:SequenceDuration()) + + end + end + + if self.NextReloadStart and CurTime()>=self.NextReloadStart then + self:SendWeaponAnim(ACT_SECONDARY2_VM_RELOAD) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_LOOP) + --self.Owner:SetAnimation(10000) -- reload loop + self.NextReload = CurTime() + (self.ReloadTime or self:SequenceDuration()) + + self.AmmoAdded = 1 + self.Owner:EmitSoundEx("Weapon_Pomson.Reload") + + self.NextReloadStart = nil + end + + self:Inspect() +end + + +function SWEP:PrimaryAttack() + self:StopTimers() + + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + + self:SendWeaponAnim(ACT_SECONDARY2_VM_PRIMARYATTACK) + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + if self then + if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) + end + end + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + end + end + end + + self:RollCritical() -- Roll and check for criticals first + + self.Owner:ViewPunch( self.PunchView ) + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + return true +end + + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_pomson") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = self.CustomExplosionSound + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_revolver/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_revolver/shared.lua new file mode 100644 index 000000000..2e4fc6859 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_revolver/shared.lua @@ -0,0 +1,270 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + + + +if CLIENT then + +SWEP.PrintName = "Revolver" + + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_spy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_revolver/c_revolver.mdl" +SWEP.Crosshair = "tf_crosshair2" +SWEP.Slot = 0 +SWEP.MuzzleEffect = "muzzle_revolver" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_Revolver.Single") +SWEP.ShootCritSound = Sound("Weapon_Revolver.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Revolver.WorldReload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_revolver") + +SWEP.BaseDamage = 40 +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.0125 * 3 +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.5 +SWEP.ReloadTime = 1.2 + +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "revolver" + +SWEP.DeploySound = Sound("weapons/draw_secondary.wav") + +SWEP.AutoReloadTime = 0.10 + +SWEP.IsRapidFire = false + +-- Ambassador properties +SWEP.AccuracyRecoveryStartDelay = 0.5 +SWEP.AccuracyRecoveryDelay = 0.5 + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MinSpread = 0 +SWEP.MaxSpread = 0.06 +SWEP.CrosshairMaxScale = 3 + + +function SWEP:Deploy() + --MsgFN("Deploy %s", tostring(self)) + + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + self:SetWeaponHoldType("PRIMARY") + self.HoldType = "PRIMARY" + end + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + if SERVER then + animent2 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + if self.Owner:GetModel() == "models/player/engineer.mdl" then + animent2:SetModel("models/weapons/c_models/c_shotgun/c_shotgun.mdl") + elseif self.Owner:GetModel() == "models/player/scout.mdl" then + animent2:SetModel("models/weapons/c_models/c_scattergun.mdl") + elseif self.Owner:GetModel() == "models/player/soldier.mdl" then + animent2:SetModel("models/weapons/w_models/w_rocketlauncher.mdl") + elseif self.Owner:GetModel() == "models/player/pyro.mdl" then + animent2:SetModel("models/weapons/c_models/c_flamethrower/c_flamethrower.mdl") + elseif self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + animent2:SetModel("models/weapons/c_models/c_revolver/c_revolver.mdl") + elseif self.Owner:GetModel() == "models/player/sniper.mdl" then + animent2:SetModel("models/weapons/c_models/c_sniperrifle/c_sniperrifle.mdl") + elseif self.Owner:GetModel() == "models/player/medic.mdl" then + animent2:SetModel("models/weapons/c_models/c_syringegun/c_syringegun.mdl") + elseif self.Owner:GetModel() == "models/player/heavy.mdl" then + animent2:SetModel("models/weapons/c_models/c_minigun/c_minigun.mdl") + elseif self.Owner:GetModel() == "models/player/demo.mdl" then + animent2:SetModel("models/weapons/w_models/w_stickybomb_launcher.mdl") + end + animent2:SetAngles(self.Owner:GetAngles()) + animent2:SetPos(self.Owner:GetPos()) + animent2:Spawn() + animent2:Activate() + animent2:SetParent(self.Owner) + animent2:AddEffects(EF_BONEMERGE) + animent2:SetName("SpyWeaponModel"..self.Owner:EntIndex()) + animent2:SetSkin(self.Owner:GetSkin()) + timer.Create("SpyCloakDetector"..self.Owner:EntIndex(), 0.01, 0, function() + if IsValid(self.Owner) and self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetNoDraw() == true then + if IsValid(animent2) then + animent2:SetNoDraw(true) + end + else + if IsValid(animent2) then + animent2:SetNoDraw(false) + end + end + else + timer.Stop("SpyCloakDetector"..self.Owner:EntIndex()) + return + end + end) + end + end + end + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + if (IsValid(self.Owner)) then + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + self:SetWeaponHoldType("PRIMARY") + self.HoldType = "PRIMARY" + else + self:SetWeaponHoldType("SECONDARY") + self.HoldType = "SECONDARY" + end + end + else + + self:SetWeaponHoldType("SECONDARY") + self.HoldType = "SECONDARY" + + end + self:StopTimers() + if IsValid(self.Owner) then + timer.Simple(0.1, function() + if IsValid(self.CModel3) then + self.CModel3:Remove() + end + end) + if self:GetItemData().hide_bodygroups_deployed_only then + local visuals = self:GetVisuals() + local owner = self.Owner + + if visuals.hide_player_bodygroup_names then + for _,group in ipairs(visuals.hide_player_bodygroup_names) do + local b = PlayerNamedBodygroups[owner:GetPlayerClass()] + if b and b[group] then + owner:SetBodygroup(b[group], 0) + end + + b = PlayerNamedViewmodelBodygroups[owner:GetPlayerClass()] + if b and b[group] then + if IsValid(owner:GetViewModel()) then + owner:GetViewModel():SetBodygroup(b[group], 0) + end + end + end + end + end + + for k,v in pairs(self:GetVisuals()) do + if k=="hide_player_bodygroup" then + self.Owner:SetBodygroup(v,0) + end + end + end + if IsValid(animent2) then + animent2:Fire("Kill", "", 0.1) + end + self.NextIdle = nil + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = nil + self.RequestedReload = nil + self.NextDeployed = nil + self.IsDeployed = nil + if SERVER then + if IsValid(self.WModel2) then + --self.WModel2:Remove() + end + end + if IsValid(self.Owner) then + self.Owner.LastWeapon = self:GetClass() + end + + return true +end + +if CLIENT then + + usermessage.Hook("AmbassadorFired", function(msg) + local self = msg:ReadEntity() + + self.CrosshairScale = self.CrosshairMaxScale + self.NextStartRecovery = CurTime() + self.AccuracyRecoveryStartDelay + self.NextEndRecovery = nil + end) + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + self.CriticalChance = 0 + self.CritsOnHeadshot = true + self.BulletSpread = 0 + self.HeadshotName = "tf_weapon_sniperrifle_headshot" + self.PredictCritServerside = true + self.AutoReloadTime = 0.21 + end + end +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + + if self.WeaponMode == 1 then + self.CritsOnHeadshot = false + self.NameOverride = nil + + self.BulletSpread = self.MaxSpread + + self.NextStartRecovery = CurTime() + self.AccuracyRecoveryStartDelay + self.NextEndRecovery = nil + + if SERVER then + umsg.Start("AmbassadorFired", self.Owner) + umsg.Entity(self) + umsg.End() + end + end + + return true +end + +function SWEP:Think() + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" then + self:SetWeaponHoldType("PRIMARY") + self.HoldType = "PRIMARY" + end + if self.WeaponMode == 1 then + if self.NextStartRecovery and CurTime()>self.NextStartRecovery then + self.NextStartRecovery = nil + self.NextEndRecovery = CurTime() + self.AccuracyRecoveryDelay + end + + if self.NextEndRecovery then + local diff = self.NextEndRecovery - CurTime() + local r = math.Clamp(diff/self.AccuracyRecoveryDelay, 0, 1) + self.CrosshairScale = 1 + self.BulletSpread = Lerp(r, self.MinSpread, self.MaxSpread) + + if diff<=0 then + self.CritsOnHeadshot = true + self.NextEndRecovery = nil + end + end + end + return self:CallBaseFunction("Think") +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_revolver_engy/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_revolver_engy/shared.lua new file mode 100644 index 000000000..9ec579023 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_revolver_engy/shared.lua @@ -0,0 +1,155 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Engy Revolver" +SWEP.Slot = 1 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/workshop/weapons/c_models/c_engy_revolver/c_engy_revolver.mdl" +SWEP.Crosshair = "tf_crosshair2" + +SWEP.MuzzleEffect = "muzzle_revolver" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_Revolver.Single") +SWEP.ShootCritSound = Sound("Weapon_Revolver.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Tranq.Reload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_revolver") + +SWEP.BaseDamage = 30 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 2 +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.025 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.5 +SWEP.ReloadTime = 1.3 + +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "revolver" + +SWEP.DeploySound = Sound("weapons/draw_secondary.wav") + +SWEP.AutoReloadTime = 0.10 + +SWEP.IsRapidFire = false + +-- Ambassador properties +SWEP.AccuracyRecoveryStartDelay = 0.5 +SWEP.AccuracyRecoveryDelay = 0.75 + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MinSpread = 0 +SWEP.MaxSpread = 0.06 +SWEP.CrosshairMaxScale = 3 + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_ENGINEER_REVOLVER_DRAW + self.VM_IDLE = ACT_ENGINEER_REVOLVER_IDLE + self.VM_PRIMARYATTACK = ACT_ENGINEER_REVOLVER_PRIMARYATTACK + self.VM_RELOAD = ACT_ENGINEER_REVOLVER_RELOAD +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") + + if self.Owner:GetPlayerClass() == "merc_dm" then + self:SetHoldType("MELEE_ALLCLASS") + self.Primary.Ammo = TF_SECONDARY + end +end +function SWEP:Reload() + self:CallBaseFunction("Reload") + if self.Owner:GetPlayerClass() == "merc_dm" then + self.Owner:SetAnimation(PLAYER_RELOAD1) + end +end + +if CLIENT then + + usermessage.Hook("AmbassadorFired", function(msg) + local self = msg:ReadEntity() + + self.CrosshairScale = self.CrosshairMaxScale + self.NextStartRecovery = CurTime() + self.AccuracyRecoveryStartDelay + self.NextEndRecovery = nil + end) + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + self.CriticalChance = 0 + self.CritsOnHeadshot = true + self.BulletSpread = 0 + self.HeadshotName = "tf_weapon_ambassador_headshot" + self.PredictCritServerside = true + self.AutoReloadTime = 0.21 + end + end +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + if self.WeaponMode == 1 then + self.CritsOnHeadshot = false + self.NameOverride = nil + + self.BulletSpread = self.MaxSpread + + self.NextStartRecovery = CurTime() + self.AccuracyRecoveryStartDelay + self.NextEndRecovery = nil + + if SERVER then + umsg.Start("AmbassadorFired", self.Owner) + umsg.Entity(self) + umsg.End() + end + end + + return true +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode == 1 then + if self.NextStartRecovery and CurTime()>self.NextStartRecovery then + self.NextStartRecovery = nil + self.NextEndRecovery = CurTime() + self.AccuracyRecoveryDelay + end + + if self.NextEndRecovery then + local diff = self.NextEndRecovery - CurTime() + local r = math.Clamp(diff/self.AccuracyRecoveryDelay, 0, 1) + self.CrosshairScale = Lerp(r, 1, self.CrosshairMaxScale) + self.BulletSpread = Lerp(r, self.MinSpread, self.MaxSpread) + + if diff<=0 then + self.CritsOnHeadshot = true + self.NextEndRecovery = nil + end + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_robot_arm/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_robot_arm/shared.lua new file mode 100644 index 000000000..7174594a9 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_robot_arm/shared.lua @@ -0,0 +1,50 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + + SWEP.Slot = 2 +if CLIENT then + SWEP.PrintName = "The Gunslinger" + SWEP.GlobalCustomHUD = {HudAccountPanel = true} +end + +SWEP.Base = "tf_weapon_wrench" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_gunslinger.mdl" +SWEP.WorldModel = "models/empty.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.DropPrimaryWeaponInstead = true + +SWEP.Swing = Sound("Weapon_Wrench.Miss") +SWEP.SwingCrit = Sound("Weapon_Wrench.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Wrench.HitWorld") +SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") +SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 +SWEP.IsRoboArm = true + +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "ITEM2" + +SWEP.NoHitSound = true +SWEP.UpgradeSpeed = 25 + +SWEP.AltIdleAnimationProbability = 0.1 + +function SWEP:Initialize() + timer.Simple(0.1, function() + if (IsValid(self.Owner)) then + + self.Owner:GetHands():SetModel("models/weapons/c_models/c_engineer_gunslinger.mdl") + + end + end) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher/shared.lua new file mode 100644 index 000000000..8ff7f5281 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher/shared.lua @@ -0,0 +1,295 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.Slot = 0 + +if CLIENT then + +SWEP.PrintName = "Rocket Launcher" + + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "rocketbackblast" +PrecacheParticleSystem("rocketbackblast") + +SWEP.ShootSound = Sound("TF_Weapon_RPG.Single") +SWEP.ShootCritSound = Sound("Weapon_RPG.SingleCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY + +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(23.5, 12.0, -3.0) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 + +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 + +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH + +function SWEP:DoMuzzleFlash() + local betaeffect = self.BetaMuzzle + local ent + + if self.Owner==LocalPlayer() and not LocalPlayer():ShouldDrawLocalPlayer() then + ent = self.CModel + else + ent = self:GetWorldModelEntity() + end + + self:ResetParticles() + + if betaeffect then + local effectdata = EffectData() + effectdata:SetEntity(self) + util.Effect(betaeffect, effectdata) + else + --ent:MuzzleFlash() + ParticleEffectAttach(self.MuzzleEffect, PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("backblast")) + end +end + + +function SWEP:CreateSounds(owner) + if not IsValid(owner) then return end + + self.RocketJumpLoop = CreateSound(owner, "RocketJumpLoop") + +end +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + self:CreateSounds(self.Owner) + return self:CallBaseFunction("Deploy") +end + +function SWEP:PrimaryAttack() + if self.WeaponMode ~= 1 then + return self:CallBaseFunction("PrimaryAttack") + end + + if not self.IsDeployed then return false end + if self.Reloading then return false end + + self.NextDeployed = nil + + -- Already charging + if self.Charging or self.LockAttackKey then return end + + local Delay = self.Delay or -1 + local QuickDelay = self.QuickDelay or -1 + + if (not(self.Primary.QuickDelay>=0 and self.Owner:KeyPressed(IN_ATTACK)) and Delay>=0 and CurTime()=0 and self.Owner:KeyPressed(IN_ATTACK) and QuickDelay>=0 and CurTime() self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + if self:GetItemData().model_player == "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" then + if (IsValid(self.Owner) and string.find(self.Owner:GetModel(),"_boss.mdl")) then + + --rocket.ExplosionSound = "MVM.GiantSoldierRocketExplode" + + end + end + if (self:GetVisuals() != nil and self:GetVisuals().sound_special1) then + rocket.ExplosionSound = self:GetVisuals().sound_special1 + end + if (self.ProjectileDamageMultiplier) then + rocket.OldBaseDamage = rocket.BaseDamage + rocket.BaseDamage = rocket.OldBaseDamage * self.ProjectileDamageMultiplier + end + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket.NameOverride = self:GetItemData().item_iconname or self.NameOverride + rocket:Spawn() + rocket:Activate() + end + + if CLIENT then + self:ShootEffects() + end +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_airstrike/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_airstrike/shared.lua new file mode 100644 index 000000000..bdf4fc7b3 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_airstrike/shared.lua @@ -0,0 +1,94 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "The Air Strike" +SWEP.Slot = 0 +SWEP.HasCModel = true + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/workshop/weapons/c_models/c_atom_launcher/c_atom_launcher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("Weapon_Airstrike.AltFire") +SWEP.ShootCritSound = Sound("Weapon_Airstrike.CritFire") +SWEP.CustomExplosionSound = Sound("Weapon_Airstrike.Explosion") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 8 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") + timer.Create("CheckIfPlayerIsAirborne", 0.001, 0, function() + if not self.Owner:Alive() then timer.Stop("CheckIfPlayerIsAirborne") return end + if self.Owner:IsOnGround() != true then + self.Primary.Delay = 0.30 + else + self.Primary.Delay = 0.8 + end + end) +end + +function SWEP:ShootProjectile() + self.ShootCritSound = Sound("Weapon_Airstrike.CritFire") + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = self.CustomExplosionSound + + rocket:Spawn() + rocket:SetModel("models/weapons/w_models/w_rocket_airstrike/w_rocket_airstrike.mdl") + rocket:Activate() + end + + self:ShootEffects() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_bbox/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_bbox/shared.lua new file mode 100644 index 000000000..930954005 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_bbox/shared.lua @@ -0,0 +1,88 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "The Black Box" +SWEP.Slot = 0 +SWEP.HasCModel = true + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("Weapon_RPG_BlackBox.Single") +SWEP.ShootCritSound = Sound("Weapon_RPG_BlackBox.SingleCrit") +SWEP.CustomExplosionSound = Sound("Weapon_RPG_BlackBox.Explode") +SWEP.ReloadSound = Sound("Weapon_RPG.WorldReload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START_2 + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD_2 + self.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH_2 +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = self.CustomExplosionSound + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_dh/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_dh/shared.lua new file mode 100644 index 000000000..405d8f823 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_dh/shared.lua @@ -0,0 +1,75 @@ +-- Real class name: tf_weapon_rocketlauncher_directhit (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "The Direct Hit" +SWEP.Slot = 0 +SWEP.HasCModel = true + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_directhit/c_directhit.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("Weapon_RPG_DirectHit.Single") +SWEP.ShootCritSound = Sound("Weapon_RPG_DirectHit.SingleCrit") +SWEP.ReloadSound = Sound("") +SWEP.CustomExplosionSound = Sound("Weapon_RPG_DirectHit.Explode") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + rocket:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + rocket.critical = true + end + + --rocket.FastRocket = true + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket.NameOverride = self:GetItemData().item_iconname or self.NameOverride + rocket.ExplosionSound = self.CustomExplosionSound + + if (self.ProjectileDamageMultiplier) then + rocket.OldBaseDamage = rocket.BaseDamage + rocket.BaseDamage = rocket.OldBaseDamage * self.ProjectileDamageMultiplier + end + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_dt/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_dt/shared.lua new file mode 100644 index 000000000..ee893e7f8 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_dt/shared.lua @@ -0,0 +1,66 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Rocket Launcher" +SWEP.Slot = 0 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/v_models/v_rocketlauncher_soldier.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("weapons/rocket_shoot.wav") +SWEP.ShootSoundLevel = 94 +SWEP.ShootCritSound = Sound("Weapon_RPG.SingleCrit") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + rocket:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.NameOverride = "tf_projectile_rocket_trolling" + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_fireball/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_fireball/shared.lua new file mode 100644 index 000000000..9562558d5 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_fireball/shared.lua @@ -0,0 +1,147 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) + include("sv_airblast.lua") + +end + +if CLIENT then + +SWEP.PrintName = "The Dragon's Fury" +SWEP.Slot = 0 +SWEP.HasCModel = true + +end + +PrecacheParticleSystem("pyro_blast") +PrecacheParticleSystem("pyro_blast_flash") +PrecacheParticleSystem("pyro_blast_lines") +PrecacheParticleSystem("pyro_blast_warp") +PrecacheParticleSystem("pyro_blast_warp2") + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/workshop/weapons/c_models/c_atom_launcher/c_atom_launcher.mdl" +SWEP.Crosshair = "tf_crosshair3" + + +SWEP.MuzzleEffect = "pyro_blast" + +SWEP.ShootSound = Sound(")weapons/dragons_fury_shoot.wav") +SWEP.ShootCritSound = Sound(")weapons/dragons_fury_shoot_crit.wav") +SWEP.CustomExplosionSound = Sound("") + +SWEP.AirblastSound = Sound("Weapon_FlameThrower.AirBurstAttack") +SWEP.AirblastDeflectSound = Sound("Weapon_FlameThrower.AirBurstAttackDeflect") +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.Secondary.Automatic = true +SWEP.Secondary.Delay = 1.8 +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.AirblastRadius = 120 +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( -6, 0, 0 ) + +SWEP.Properties = {} + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = ACT_PRIMARY_VM_DRAW +self.VM_IDLE = ACT_PRIMARY_VM_IDLE +self.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK_3 +self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_PRIMARY_M_INSPECT_END +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket_fireball") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + self.Owner:EmitSoundEx(")weapons/dragons_fury_shoot_crit.wav") + rocket.critical = true + else + self.Owner:EmitSoundEx(")weapons/dragons_fury_shoot.wav") + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = self.CustomExplosionSound + + rocket:Spawn() + rocket:Activate() + end + + +end + + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + + if self.NoAirblast then return false end + + if self:Ammo1()<20 then + return + end + + local Delay = self.Delay or -1 + if Delay>=0 and CurTime() self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang + Angle(math.Rand(-4,4),math.Rand(-4,4),0)) + if self:Critical() then + rocket.critical = true + end + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + rocket.BaseDamage = 95 * (0.75 * 0.75) + rocket.BaseSpeed = 1100 + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_qrl/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_qrl/shared.lua new file mode 100644 index 000000000..eba37ebab --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_qrl/shared.lua @@ -0,0 +1,124 @@ +-- Real class name: tf_weapon_bet_rocketlauncher (see shd_items.lua) + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "The Original" +SWEP.Slot = 0 +SWEP.HasCModel = true + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.Adminonly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" + +SWEP.ShootSound = Sound("Weapon_QuakeRPG.Single") +SWEP.ShootCritSound = Sound("Weapon_QuakeRPG.SingleCrit") +SWEP.CustomExplosionSound = Sound("Weapon_QuakeRPG.Reload") +SWEP.ReloadSound = Sound("Weapon_QuakeRPG.Reload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(30, 0, -6) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.VM_DRAW = ACT_VM_DRAW_QRL +SWEP.VM_IDLE = ACT_VM_IDLE_QRL +SWEP.VM_PULLBACK = ACT_VM_PULLBACK_QRL +SWEP.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK_QRL +SWEP.VM_RELOAD = ACT_VM_RELOAD_QRL +SWEP.VM_RELOAD_START = ACT_VM_RELOAD_START_QRL +SWEP.VM_RELOAD_FINISH = ACT_VM_RELOAD_FINISH_QRL + +function SWEP:Think() + if (self.Owner:GetPlayerClass() == "pyro") then + self:SetHoldType("ITEM1") + end + self.VM_DRAW = ACT_VM_DRAW_QRL + self.VM_IDLE = ACT_VM_IDLE_QRL + self.VM_PULLBACK = ACT_VM_PULLBACK_QRL + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK_QRL + self.VM_RELOAD = ACT_VM_RELOAD_QRL + self.VM_RELOAD_START = ACT_VM_RELOAD_START_QRL + self.VM_RELOAD_FINISH = ACT_VM_RELOAD_FINISH_QRL + self.BaseClass.Think(self) +end +function SWEP:Deploy() + self.BaseClass.Deploy(self) + if (self.Owner:GetPlayerClass() == "pyro" and self:GetClass() == "tf_weapon_rocketlauncher_qrl") then + self:SetHoldType("ITEM1") + end + self.VM_DRAW = ACT_VM_DRAW_QRL + self.VM_IDLE = ACT_VM_IDLE_QRL + self.VM_PULLBACK = ACT_VM_PULLBACK_QRL + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK_QRL + self.VM_RELOAD = ACT_VM_RELOAD_QRL + self.VM_RELOAD_START = ACT_VM_RELOAD_START_QRL + self.VM_RELOAD_FINISH = ACT_VM_RELOAD_FINISH_QRL + if (self.Owner:GetPlayerClass() == "giantchargedsoldier") then + self.Primary.Delay = self.Primary.Delay * 0.2 + self.ReloadTimeMultiplier = 0.2 + end +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + rocket.ExplosionSound = "Weapon_QuakeRPG.Explode" + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + rocket:SetOwner(self.Owner) + rocket.NameOverride = self:GetItemData().item_iconname or self.NameOverride + self:InitProjectileAttributes(rocket) + + if (self.Owner:GetPlayerClass() == "giantsoldiercharged") then + rocket.BaseSpeed = 1100 * 0.5 + end + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire/shared.lua new file mode 100644 index 000000000..317807c59 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire/shared.lua @@ -0,0 +1,184 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Beggar's Bazooka" +SWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_dumpster_device/c_dumpster_device.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = false +SWEP.AdminOnly = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("Weapon_Does_Dumpster.Single") +SWEP.ShootCritSound = Sound("Weapon_Does_Dumpster.SingleCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("Weapon_DumpsterRocket.Reload") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = 0 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 + +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 +SWEP.ReloadTime = 0.8 +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode ~= 1 then return end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + self:RollCritical() + + if self.Charging then + if (not self.Owner:KeyDown(IN_ATTACK) or CurTime() - self.ChargeStartTime > self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang + Angle(math.random(-3,3),math.random(-3,3),0)) + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire2/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire2/shared.lua new file mode 100644 index 000000000..972ba9245 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire2/shared.lua @@ -0,0 +1,184 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Rapid Fire Rocket Launcher for Giant Soldier" +SWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("MVM.GiantSoldierRocketShoot") +SWEP.ShootCritSound = Sound("MVM.GiantSoldierRocketShootCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Delay = 0.4 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 + +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 +SWEP.BulletSpread = 7 +SWEP.ReloadTime = 0.8 +SWEP.OldReloadTime = 0.8 +SWEP.FastReloadTime = -1.6 +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode ~= 1 then return end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + if self.Charging then + if (not self.Owner:KeyDown(IN_ATTACK) or CurTime() - self.ChargeStartTime > self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang--[[ + Angle(math.Rand(-1.6,1.6),math.Rand(-1.6,1.6),0)]]) + --rocket.ExplosionSound = "MVM.GiantSoldierRocketExplode" + if self:Critical() then + rocket.critical = true + end + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket.BaseSpeed = 1100 * 0.65 + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire3/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire3/shared.lua new file mode 100644 index 000000000..13bba7e5c --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire3/shared.lua @@ -0,0 +1,183 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Colonel Barrage Rocket Launcher" +SWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("MVM.GiantSoldierRocketShoot") +SWEP.ShootCritSound = Sound("MVM.GiantSoldierRocketShootCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 30 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Delay = 0.8 * 0.2 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 * 0.4 + +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 +SWEP.BulletSpread = 7 +SWEP.ReloadTime = 0.8 * 0.22 +SWEP.ReloadStartTime = 0.8 * 0.22 +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode ~= 1 then return end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + if self.Charging then + if (not self.Owner:KeyDown(IN_ATTACK) or CurTime() - self.ChargeStartTime > self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang + Angle(math.random(-5,5),math.random(-5,5),0)) + --rocket.ExplosionSound = "MVM.GiantSoldierRocketExplode" + if self:Critical() then + rocket.critical = true + end + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + rocket.BaseDamage = 95 * 1.5 + rocket.BaseSpeed = 1100 * 0.4 + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire4/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire4/shared.lua new file mode 100644 index 000000000..ba882886d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire4/shared.lua @@ -0,0 +1,182 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Giant Burst Fire Rocket Launcher" +SWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("MVM.GiantSoldierRocketShoot") +SWEP.ShootCritSound = Sound("MVM.GiantSoldierRocketShootCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 9 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Delay = 0.8 * 0.1 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 * 0.65 + +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 +SWEP.BulletSpread = 7 +SWEP.ReloadTime = 0.8 * 0.6 +SWEP.ReloadStartTime = 0.8 * 0.6 +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode ~= 1 then return end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + if self.Charging then + if (not self.Owner:KeyDown(IN_ATTACK) or CurTime() - self.ChargeStartTime > self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang--[[ + Angle(math.Rand(-1.6,1.6),math.Rand(-1.6,1.6),0)]]) + --rocket.ExplosionSound = "MVM.GiantSoldierRocketExplode" + if self:Critical() then + rocket.critical = true + end + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + rocket.BaseSpeed = 1100 * 0.65 + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire5/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire5/shared.lua new file mode 100644 index 000000000..f9b700279 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire5/shared.lua @@ -0,0 +1,181 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Giant Burst Fire 2 Rocket Launcher" +SWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargeStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("MVM.GiantSoldierRocketShoot") +SWEP.ShootCritSound = Sound("MVM.GiantSoldierRocketShootCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 9 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Delay = 0.8 * 0.2 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 * 0.65 +SWEP.CriticalChance = 100 +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 +SWEP.BulletSpread = 7 +SWEP.ReloadTime = 0.8 * 0.4 +SWEP.ReloadStartTime = 0.8 * 0.4 +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode ~= 1 then return end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + if self.Charging then + if (not self.Owner:KeyDown(IN_ATTACK) or CurTime() - self.ChargeStartTime > self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang + Angle(math.Rand(-1.6,1.6),math.Rand(-1.6,1.6),0)) + --rocket.ExplosionSound = "MVM.GiantSoldierRocketExplode" + rocket.critical = true + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + rocket.BaseDamage = 95 * 2.0 + rocket.BaseSpeed = 1100 * 0.9 + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire6 b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire6 new file mode 100644 index 000000000..442a87bbd --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketlauncher_rapidfire6 @@ -0,0 +1,181 @@ +if SERVER then + AddCSLuaFile( "shared.lua") + +end + +if ClIENT then + +SWEP.PrintName ="Major Crits Rocket Launcher" +SWWEP.Slot = 0 +SWEP.RenderGroup = RENDERGROUP_BOTH + +function SWEP:ClientStartCharge() + self.ClientCharging = true + self.ClientChargingStart = CurTime() +end + +function SWEP:ClientEndCharge() + self.ClientCharging = false +end + +end + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_weapon_mode" then + if a.value == 1 then + if CLIENT then + self.CustomHUD = {HudBowCharge = true} + end + end + end +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pipelauncher" +PrecacheParticleSystem("muzzle_pipelauncher") + +SWEP.ShootSound = Sound("MVM.GiantSoldierRocketShoot") +SWEP.ShootCritSound = Sound("MVM.GiantSoldierRocketShootCrit") +SWEP.ChargeSound = Sound("Weapon_StickyBombLauncher.ChargeUp") +SWEP.ReloadSound = Sound("") + +SWEP.Primary.ClipSize = 30 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Delay = 0.8 * 0.2 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" +SWEP.HoldTypeHL2 = "rpg" + +SWEP.ProjectileShootOffset = Vector(0, 13, -4) + +SWEP.PunchView = Angle( 0, 0, 0 ) + +SWEP.Properties = {} + +SWEP.ChargeTime = 2 +SWEP.MinForce = 150 +SWEP.MaxForce = 2800 * 0.65 +SWEP.CriticalChance = 100 +SWEP.MinAddPitch = -1 +SWEP.MaxAddPitch = -6 + +SWEP.MinGravity = 1 +SWEP.MaxGravity = 1 +SWEP.BulletSpread = 7 +SWEP.ReloadTime = 0.8 * 0.22 +SWEP.ReloadStartTime = 0.8 * 0.22 +SWEP.VM_DRAW = ACT_PRIMARY_VM_DRAW +SWEP.VM_IDLE = ACT_PRIMARY_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK +SWEP.VM_RELOAD = ACT_PRIMARY_VM_RELOAD +SWEP.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START +SWEP.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH +function SWEP:Deploy() + if CLIENT then + HudBowCharge:SetProgress(0) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + self:CallBaseFunction("Think") + + if self.WeaponMode ~= 1 then return end + + if CLIENT then + if self.ClientCharging and self.ClientChargeStart then + HudBowCharge:SetProgress((CurTime()-self.ClientChargeStart) / self.ChargeTime) + else + HudBowCharge:SetProgress(0) + end + end + + if self.Charging then + if (not self.Owner:KeyDown(IN_ATTACK) or CurTime() - self.ChargeStartTime > self.ChargeTime) then + self.Charging = false + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + self:ShootProjectile() + self:TakePrimaryAmmo(1) + + self.Delay = CurTime() + self.Primary.Delay + self.QuickDelay = CurTime() + self.Primary.QuickDelay + + if SERVER then + self:CallOnClient("ClientEndCharge", "") + end + + if self:Clip1() <= 0 then + self:Reload() + end + + if SERVER and not self.Primary.NoFiringScene then + self.Owner:Speak("TLK_FIREWEAPON") + end + + self:RollCritical() -- Roll and check for criticals first + + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end + + self.LockAttackKey = true + else + if (game.SinglePlayer() or CLIENT) and not self.ChargeUpSound then + self.ChargeUpSound = CreateSound(self, self.ChargeSound) + self.ChargeUpSound:PlayEx(1, 400 / self.ChargeTime) + end + end + end + self:Inspect() +end + +function SWEP:ShootProjectile() + if SERVER then + local rocket = ents.Create("tf_projectile_rocket") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang + Angle(math.Rand(-1.6,1.6),math.Rand(-1.6,1.6),0)) + --rocket.ExplosionSound = "MVM.GiantSoldierRocketExplode" + rocket.critical = true + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + rocket.BaseDamage = 95 * 2.0 + rocket.BaseSpeed = 1100 * 0.3 + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:ShootEffects() +end + +function SWEP:OnRemove() + if (game.SinglePlayer() or CLIENT) and self.ChargeUpSound then + self.ChargeUpSound:Stop() + self.ChargeUpSound = nil + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketpack/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketpack/shared.lua new file mode 100644 index 000000000..21865be56 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketpack/shared.lua @@ -0,0 +1,158 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Thermal Thruster" +SWEP.HasCModel = true +SWEP.Slot = 1 + +end + +sound.Add( { + name = "RocketJumpLoop", + channel = CHAN_VOICE, + volume = 1.0, + level = 95, + sound = { "misc/grenade_jump_lp_01.wav" } +} ) +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_rocketpack/c_rocketpack.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "" +SWEP.ShootCritSound = "" + +SWEP.Primary.ClipSize = 2 +SWEP.Primary.DefaultClip = 2 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 1.5 + +SWEP.ReloadSingle = true + +SWEP.ReloadTime = 8 + +SWEP.ReloadSound = "" + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Force = 800 +SWEP.AddPitch = -4 + +SWEP.HoldType = "ITEM4" + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = ACT_ITEM4_VM_DRAW +self.VM_IDLE = ACT_ITEM4_VM_IDLE +self.VM_PRIMARYATTACK = ACT_ITEM4_VM_PRIMARYATTACK +self.VM_RELOAD_START = ACT_ITEM4_VM_HOLSTER +self.VM_RELOAD_LOOP = ACT_ITEM4_VM_HOLSTER +self.VM_RELOAD_END = ACT_ITEM4_VM_DRAW +self.VM_INSPECT_START = ACT_ITEM4_VM_IDLE +self.VM_INSPECT_IDLE = ACT_ITEM4_VM_IDLE +self.VM_INSPECT_END = ACT_ITEM4_VM_IDLE +end + +function SWEP:Think() + self:CallBaseFunction("Think") +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") + self:CreateSounds(self.Owner) + self.Owner:SetPoseParameter("r_arm", 0) + self.Owner:SetPoseParameter("r_hand_grip", 0) + self:EmitSound("Weapon_RocketPack.BoostersExtend", 85) +end +function SWEP:Holster() + if SERVER then + --self.WModel2:ResetSequence("undeploy") + --self.WModel2:SetPlaybackRate(1) + --self.WModel2:SetCycle(0) + end + self:EmitSound("Weapon_RocketPack.BoostersRetract", 85) + return self.BaseClass.Holster(self) +end + +function SWEP:PredictCriticalHit() +end +function SWEP:CreateSounds(owner) + if not IsValid(owner) then return end + + self.RocketJumpLoop = CreateSound(owner, "RocketJumpLoop") + +end +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + self:SetNextPrimaryFire(CurTime() + 1.5) + if self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then + return + end + + self.Owner:SetLocalVelocity( Vector( 0, 0, 300 ) + self.Owner:GetVelocity() * 1 ) + + self:SendWeaponAnimEx(ACT_ITEM4_VM_PRIMARYATTACK) + + self:EmitSound( "Weapon_RocketPack.BoostersCharge", 85 ) + + self:TakePrimaryAmmo(1) + + self.Owner.NextGiveAmmo = CurTime() + (20) + self.Owner.NextGiveAmmoType = self.Primary.Ammo + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + self.Owner:DoAnimationEvent(ACT_DOD_PRONE_ZOOMED, true) + + self.Owner:AddPlayerState(PLAYERSTATE_STUNNED) + timer.Simple(0.55, function() + self.Owner:SetLocalVelocity( self.Owner:GetAimVector() + Vector( 0, 0, 700 ) + self.Owner:GetVelocity() * 4 ) + self:EmitSound( "Weapon_RocketPack.BoostersFire", 85 ) + self.Owner:RemovePlayerState(PLAYERSTATE_STUNNED) + self.RocketJumpLoop:Play() + timer.Create("CheckIfOnGround", 0.001, 0, function() + + self.RocketJumpLoop:ChangePitch(math.Clamp(100, 100, 250), 0) + if self.Owner:OnGround() then + self:EmitSound( "Weapon_RocketPack.BoostersShutdown", 85 ) + if SERVER then + self.Owner:EmitSoundEx( "Weapon_RocketPack.Land", 85 ) + self.Owner:StopSound("RocketJumpLoop") + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 110)) do + if v:Health() >= 0 then + if v:IsPlayer() and v:Nick() != self.Owner:Nick() and not v:IsFriendly(self.Owner) then + v:TakeDamage(45, self.Owner, self) + v:EmitSound("weapons/mantreads.wav", 85, 100) + v:EmitSound("player/fall_damage_dealt.wav", 85, 100) + timer.Create("Stomp", 0.001, 30, function() + self.Owner:DoAnimationEvent(ACT_SIGNAL1) + end) + v:AddPlayerState(PLAYERSTATE_STUNNED) + timer.Simple(3, function() + + v:RemovPlayerState(PLAYERSTATE_STUNNED) + end) + end + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:TakeDamage(45, self.Owner, self) + v:EmitSound("weapons/mantreads.wav", 85, 100) + v:EmitSound("player/fall_damage_dealt.wav", 85, 100) + timer.Create("Stomp", 0.001, 30, function() + self.Owner:DoAnimationEvent(ACT_SIGNAL1) + end) + end + end + end + end + timer.Stop("CheckIfOnGround") + end + end) + end) +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rocketpack_hunter/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rocketpack_hunter/shared.lua new file mode 100644 index 000000000..6f807bf0a --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rocketpack_hunter/shared.lua @@ -0,0 +1,55 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Thermal Thruster" +SWEP.HasCModel = true +SWEP.Slot = 1 + +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/arms/v_jockey_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_flaregun_shell.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "" +SWEP.ShootCritSound = "" + +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 1.5 + +SWEP.ReloadSingle = true + +SWEP.ReloadTime = 0.1 + +SWEP.ReloadSound = "" + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Force = 800 +SWEP.AddPitch = -4 + +function SWEP:Think() + self:CallBaseFunction("Think") +end + +function SWEP:PredictCriticalHit() +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + self:SetNextPrimaryFire(CurTime() + 1.5) + if self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then + return + end + + -- Obsolete +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_rtr/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_rtr/shared.lua new file mode 100644 index 000000000..6d6561e90 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_rtr/shared.lua @@ -0,0 +1,420 @@ +if SERVER then + +AddCSLuaFile("shared.lua") + +end + +if CLIENT then + +SWEP.GlobalCustomHUD = {HudBuildingStatus = true} + SWEP.PrintName = "Red-Tape Recorder" +SWEP.Slot = 1 +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + +SWEP.Base = "tf_weapon_base" + +SWEP.ViewModel = "models/weapons/c_models/c_spy_arms.mdl" +SWEP.WorldModel = "models/workshop_partner/weapons/c_models/c_sd_sapper/c_sd_sapper.mdl" + +SWEP.HoldType = "BUILDING" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.HoldTypeHL2 = "rpg" + +SWEP.Primary.Delay = 0.1 +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" +SWEP.DeploySound = Sound("weapons/draw_Secondary.wav") + +SWEP.Secondary.Delay = 0.1 +SWEP.Secondary.Automatic = false +SWEP.HasSecondaryFire = true + +SWEP.DeployDuration = 0.1 + +function SWEP:CanPrimaryAttack() + return true +end + +function SWEP:CanSecondaryAttack() + return true +end + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_ITEM3_VM_DRAW + self.VM_IDLE = ACT_ITEM3_VM_IDLE +end + +function SWEP:PrimaryAttack() + + if self.Owner:GetPlayerClass() == "spy" or self.Owner:GetPlayerClass() == "gmodplayer" then + for k,v in pairs(ents.FindInSphere(self.Owner:GetPos(), 120)) do + if v:IsPlayer() and v:GetInfoNum("tf_robot", 0) == 1 and not v:IsFriendly(self.Owner) and v:GetInfoNum("tf_giant_robot",0) != 1 then + self:SetNextPrimaryFire(CurTime() + 10) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + if SERVER then + if v:GetNWBool("Taunting") == true then return end + if not v:IsOnGround() then return end + if v:WaterLevel() ~= 0 then return end + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + v:EmitSound("Weapon_Sapper.Plant") + timer.Create("StunRobot25"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN,2) + timer.Create("StunRobotloop3"..v:EntIndex(), 0.6, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop") v:Freeze(false) return end + timer.Create("StunRobotloop4"..v:EntIndex(), 0.2, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop4") v:Freeze(false) return end + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE,2) + end) + end) + end) + v:Freeze(true) + v:EmitSound("TappedRobot") + v:SetNWBool("Taunting", true) + v:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(v) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sd_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + timer.Create("EndStunRobot"..v:EntIndex(), 7, 1, function() + if not IsValid(v) or (v:Health() < 1 and v:GetNWBool("Taunting") != true) then v:Freeze(false) v:StopSound("TappedRobot") timer.Stop("EndStunRobot"..v:EntIndex()) timer.Stop("StunRobotloop3"..v:EntIndex()) timer.Stop("StunRobotloop4"..v:EntIndex()) return end + timer.Stop("StunRobotloop3"..v:EntIndex()) + timer.Stop("StunRobotloop4"..v:EntIndex()) + v:StopSound("TappedRobot") + v:EmitSound("Weapon_Sapper.Removed") + net.Start("DeActivateTauntCam") + net.Send(v) + v:Freeze(false) + v:SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + animent:Remove() + end) + end + end + if v:IsPlayer() and not v:IsFriendly(self.Owner) and v:GetInfoNum("tf_giant_robot",0) == 1 then + self:SetNextPrimaryFire(CurTime() + 10) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + if SERVER then + if v:GetNWBool("Taunting") == true then return end + if not v:IsOnGround() then return end + if v:WaterLevel() ~= 0 then return end + v:EmitSound("Weapon_Sapper.Plant") + timer.Create("StunRobot25"..v:EntIndex(), 0.001, 1, function() + timer.Create("StunRobotloop3"..v:EntIndex(), 0.6, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop") v:Freeze(false) return end + timer.Create("StunRobotloop4"..v:EntIndex(), 0.000000001, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop4") v:Freeze(false) return end + v:SetClassSpeed(27) + end) + end) + end) + v:DoAnimationEvent(ACT_DOD_SECONDARYATTACK_BOLT, true) + v:EmitSound("TappedRobot") + net.Send(v) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sd_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + timer.Create("EndStunRobot"..v:EntIndex(), 7, 1, function() + if not IsValid(v) or (v:Health() < 1 and v:GetNWBool("Taunting") != true) then v:Freeze(false) v:StopSound("TappedRobot") timer.Stop("EndStunRobot"..v:EntIndex()) timer.Stop("StunRobotloop3"..v:EntIndex()) timer.Stop("StunRobotloop4"..v:EntIndex()) return end + timer.Stop("StunRobotloop3"..v:EntIndex()) + timer.Stop("StunRobotloop4"..v:EntIndex()) + v:DoAnimationEvent(ACT_MP_STUN_END,2) + v:StopSound("TappedRobot") + v:EmitSound("Weapon_Sapper.Removed") + net.Send(v) + v:SetClassSpeed(57) + animent:Remove() + end) + end + end + if v:IsPlayer() and string.find(game.GetMap(), "mvm_") and v:Team() == TEAM_BLU and self.Owner:Team() != TEAM_BLU and v:GetInfoNum("tf_giant_robot",0) != 1 then + self:SetNextPrimaryFire(CurTime() + 10) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + if SERVER then + if v:GetNWBool("Taunting") == true then return end + if not v:IsOnGround() then return end + if v:WaterLevel() ~= 0 then return end + v:EmitSound("Weapon_Sapper.Plant") + timer.Create("StunRobot25"..v:EntIndex(), 0.001, 1, function() + v:DoAnimationEvent(ACT_MP_STUN_BEGIN,2) + timer.Create("StunRobotloop3"..v:EntIndex(), 0.6, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop") v:Freeze(false) return end + timer.Create("StunRobotloop4"..v:EntIndex(), 0.2, 0, function() + if not v:Alive() then timer.Stop("StunRobotloop4") v:Freeze(false) return end + v:DoAnimationEvent(ACT_MP_STUN_MIDDLE,2) + end) + end) + end) + v:DoAnimationEvent(ACT_DOD_SECONDARYATTACK_BOLT, true) + v:Freeze(true) + v:EmitSound("TappedRobot") + v:SetNWBool("Taunting", true) + v:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(v) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent:SetModel("models/buildables/sd_sapper_placed.mdl") + animent:SetSkin(v:GetSkin()) + animent:SetPos(v:GetBonePosition(v:LookupBone("bip_head"))) + animent:SetAngles(v:GetAngles()) + animent:Spawn() + animent:Activate() + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:SetParent(v, v:LookupAttachment("head")) + timer.Create("EndStunRobot"..v:EntIndex(), 7, 1, function() + if not IsValid(v) or (v:Health() < 1 and v:GetNWBool("Taunting") != true) then v:Freeze(false) v:StopSound("TappedRobot") timer.Stop("EndStunRobot"..v:EntIndex()) timer.Stop("StunRobotloop3"..v:EntIndex()) timer.Stop("StunRobotloop4"..v:EntIndex()) return end + timer.Stop("StunRobotloop3"..v:EntIndex()) + timer.Stop("StunRobotloop4"..v:EntIndex()) + v:DoAnimationEvent(ACT_MP_STUN_END,2) + v:StopSound("TappedRobot") + v:EmitSound("Weapon_Sapper.Removed") + net.Start("DeActivateTauntCam") + net.Send(v) + v:Freeze(false) + v:SetNWBool("NoWeapon", false) + v:SetNWBool("Taunting", false) + animent:Remove() + end) + end + end + if v:IsBuilding() and not v:IsFriendly(self.Owner) then + self:SetNextPrimaryFire(CurTime() + 2) + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_GRENADE) + v:EmitSound("weapons/sapper_plant.wav") + v.Sapped = true + v.SappedBy = self.Owner + if SERVER then + if v:GetClass() == "obj_sentrygun" then + v:GetOwner():EmitSound("vo/engineer_autoattackedbyspy03.wav", 80, 100) + if v.Model:GetModel() == "models/buildables/sentry1.mdl" then + v:SetModel("models/buildables/sentry1_heavy.mdl") + v:ResetSequence("build") + v:SetCycle(1) + v:SetPlaybackRate(-0.5) + v.Model:SetModel("models/buildables/sentry1_heavy.mdl") + v.Model:ResetSequence("build") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.5) + timer.Create("SapEnd"..v:EntIndex(), 11, 1, function() + v:StopSound("TappedRobot") + v:Explode() + end) + end + if v.Model:GetModel() == "models/buildables/sentry2.mdl" then + v:SetModel("models/buildables/sentry2_heavy.mdl") + v:ResetSequence("upgrade") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/sentry2_heavy.mdl") + v.Model:ResetSequence("upgrade") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapSentry3"..v:EntIndex(), 4, 1, function() + if v:GetClass() == "obj_sentrygun" then + v:SetLevel(1) + v:SetModel("models/buildables/sentry1_heavy.mdl") + v:ResetSequence("build") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/sentry1_heavy.mdl") + v.Model:ResetSequence("build") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapEnd"..v:EntIndex(), 11, 1, function() + v:StopSound("TappedRobot") + v:Explode() + end) + end + end) + end + if v.Model:GetModel() == "models/buildables/sentry3.mdl" then + v:SetModel("models/buildables/sentry3_heavy.mdl") + v:ResetSequence("upgrade") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/sentry3_heavy.mdl") + v.Model:ResetSequence("upgrade") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapSentry2", 4, 1, function() + if v:GetClass() == "obj_sentrygun" then + v:SetLevel(2) + v:SetModel("models/buildables/sentry2.mdl") + v.Model:SetModel("models/buildables/sentry2.mdl") + if v:GetModel() == "models/buildables/sentry2.mdl" then + v:SetModel("models/buildables/sentry2_heavy.mdl") + v:ResetSequence("upgrade") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/sentry2_heavy.mdl") + v.Model:ResetSequence("upgrade") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapSentry3"..v:EntIndex(), 4, 1, function() + if v:GetClass() == "obj_sentrygun" then + v:SetLevel(1) + v:SetModel("models/buildables/sentry1_heavy.mdl") + v:ResetSequence("build") + v:SetCycle(0) + v:SetPlaybackRate(-0.5) + v.Model:SetModel("models/buildables/sentry1_heavy.mdl") + v.Model:ResetSequence("build") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.5) + timer.Create("SapEnd"..v:EntIndex(), 11, 1, function() + v:StopSound("TappedRobot") + v:Explode() + end) + end + end) + end + end + end) + end + elseif v:GetClass() == "obj_dispenser" then + v:GetOwner():EmitSound("vo/engineer_autoattackedbyspy02.wav", 80, 100) + if v.Model:GetModel() == "models/buildables/dispenser_light.mdl" then + v:SetModel("models/buildables/dispenser.mdl") + v:ResetSequence("build") + v:SetCycle(0) + v:SetPlaybackRate(-0.5) + v.Model:SetModel("models/buildables/dispenser.mdl") + v.Model:ResetSequence("build") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.5) + timer.Simple(22, function() + v:StopSound("TappedRobot") + v:Explode() + end) + end + if v.Model:GetModel() == "models/buildables/dispenser_lvl2_light.mdl" then + v:SetModel("models/buildables/dispenser_lvl2.mdl") + v:ResetSequence("upgrade") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/dispenser_lvl2.mdl") + v.Model:ResetSequence("upgrade") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapDispenser3", 4, 1, function() + if v:GetClass() == "obj_dispenser" then + v:SetLevel(1) + v:SetModel("models/buildables/dispenser.mdl") + v:ResetSequence("build") + v:SetCycle(0) + v:SetPlaybackRate(-0.5) + v.Model:SetModel("models/buildables/dispenser.mdl") + v.Model:ResetSequence("build") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.5) + timer.Simple(22, function() + v:StopSound("TappedRobot") + v:Explode() + end) + end + end) + end + if v.Model:GetModel() == "models/buildables/dispenser_lvl3_light.mdl" then + v:SetModel("models/buildables/dispenser_lvl3.mdl") + v:ResetSequence("upgrade") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/dispenser_lvl3.mdl") + v.Model:ResetSequence("upgrade") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapDispenser2", 4, 1, function() + if v:GetClass() == "obj_dispenser" then + v:SetLevel(2) + v:SetModel("models/buildables/dispenser_lvl2.mdl") + v.Model:SetModel("models/buildables/dispenser_lvl2.mdl") + if v:GetModel() == "models/buildables/dispenser_lvl2.mdl" then + v:SetModel("models/buildables/dispenser_lvl2.mdl") + v:ResetSequence("upgrade") + v:SetCycle(0) + v:SetPlaybackRate(-0.4) + v.Model:SetModel("models/buildables/dispenser_lvl2.mdl") + v.Model:ResetSequence("upgrade") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.4) + timer.Create("SapDispenser3", 4, 1, function() + if v:IsBuilding() and not v:IsFriendly(self.Owner) then + if v:GetClass() == "obj_dispenser" then + v:SetLevel(1) + v:SetModel("models/buildables/dispenser.mdl") + v:ResetSequence("build") + v:SetCycle(0) + v:SetPlaybackRate(-0.5) + v.Model:SetModel("models/buildables/dispenser.mdl") + v.Model:ResetSequence("build") + v.Model:SetCycle(1) + v.Model:SetPlaybackRate(-0.5) + timer.Simple(22, function() + v:StopSound("TappedRobot") + v:Explode() + end) + end + end + end) + end + end + end) + end + elseif v:GetClass() == "obj_teleporter" then + v:GetOwner():EmitSound("vo/engineer_autoattackedbyspy01.wav", 80, 100) + end + end + + v:EmitSound("TappedRobot") + timer.Create("SapSentry"..v:EntIndex(), 0.001, 0, function() + v.Target = nil + + v.TurretPitch = 0 + v.TurretYaw = 0 + v.TargetPitch = 0 + v.TargetYaw = 0 + v.DPitch = 0 + v.DYaw = 0 + + v.IdlePitchSpeed = 0.3 + v.IdleYawSpeed = 0.75 + if not v:IsValid() then + v:StopSound("TappedRobot") + timer.Stop("SapSentry") + end + if v.Sapped == false then + timer.Stop("SapSentry"..v:EntIndex()) + end + end) + end + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_sapper.lua b/gamemodes/tf/entities/weapons/tf_weapon_sapper.lua new file mode 100644 index 000000000..66483f59c --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_sapper.lua @@ -0,0 +1,5 @@ +if CLIENT then + SWEP.PrintName = "Sapper" +end +SWEP.Base = "tf_weapon_builder" +SWEP.Slot = 1 \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_scattergun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_scattergun/shared.lua new file mode 100644 index 000000000..66fa24a8a --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_scattergun/shared.lua @@ -0,0 +1,152 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Scattergun" +SWEP.Slot = 0 +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_scattergun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_scattergun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("Weapon_Scatter_Gun.Single") +SWEP.ShootCritSound = Sound("Weapon_Scatter_Gun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Scatter_Gun.WorldReload") +SWEP.DeploySound = Sound("weapons/draw_secondary.wav") + +SWEP.TracerEffect = "bullet_scattergun_tracer01" +PrecacheParticleSystem("bullet_scattergun_tracer01_red") +PrecacheParticleSystem("bullet_scattergun_tracer01_red_crit") +PrecacheParticleSystem("bullet_scattergun_tracer01_blue") +PrecacheParticleSystem("bullet_scattergun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_scattergun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.625 +SWEP.ReloadTime = 0.5 + +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.HoldTypeHL2 = "shotgun" + +SWEP.KnockbackForceOwner = 225 + +SWEP.KnockbackMaxForce = 600 +SWEP.MinKnockbackDistance = 512 +SWEP.KnockbackAddPitch = -30 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "set_scattergun_no_reload_single" then + self.ReloadSingle = false + self.ReloadDiscardClip = true + elseif a.attribute_class == "set_scattergun_has_knockback" then + self.ScattergunHasKnockback = true + end +end + + +function SWEP:CanPrimaryAttack() + if (self.Primary.ClipSize == -1 and self:Ammo1() > 0) or self:Clip1() > 0 then + return true + end + return false +end + +function SWEP:SetupCModelActivities(item) + if item then + for _,a in pairs(item.attributes or {}) do + if a.attribute_class == "set_scattergun_no_reload_single" and a.value == 1 then + item = table.Copy(item) + if (self.ReloadTimeMultiplier) then + self.ReloadTime = 1.6 * self.ReloadTimeMultiplier + else + self.ReloadTime = 1.6 + end + self.HoldType = "ITEM2" + self:SetHoldType(self.HoldType) + break + end + end + end + + return self:CallBaseFunction("SetupCModelActivities", item) +end + +if SERVER then + +function SWEP:DoOwnerKnockback() + if self.Owner:OnGround() then return end + if self.Owner.KnockbackJumpsRemaining and self.Owner.KnockbackJumpsRemaining <= 0 then return end + + local vel = self.Owner:GetVelocity() + local dir = self.Owner:GetAimVector() + local work = vel:Dot(dir) + --if work < 0 then work = 0 end + + local force = self.KnockbackForceOwner + work + if force < 0 then force = 0 end + + self.Owner:SetVelocity(-force * dir) + + self.Owner.KnockbackJumpsRemaining = (self.Owner.KnockbackJumpsRemaining or 1) - 1 + self.Owner:SetThrownByExplosion(true) +end + +hook.Add("OnPlayerHitGround", "TFKnockbackJumpsReset", function(pl) + pl.KnockbackJumpsRemaining = 1 +end) + +hook.Add("PostScaleDamage", "TFKnockbackDamage", function(ent, hitgroup, dmginfo) + local inf = dmginfo:GetInflictor() + local att = dmginfo:GetAttacker() + + if inf.ScattergunHasKnockback then + local dist = inf:GetPos():Distance(ent:GetPos()) + if dist < inf.MinKnockbackDistance then + + local dir = self.Owner:GetAimVector() + local pushdir = (dir + Vector(0,0,0.9)):Angle():Forward()*6 -- Adjust aimdirection to push players off ground, while preventing inverted pushing, fungus. + ent:SetVelocity( pushdir * ent:GetPhysicsObject():GetMass() ) -- Account for player weight because we push all twinks equally, fungus. + ent:SetViewPunchAngles(Angle(4,0,0)) + end + end +end) + +end + + + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return end + + if SERVER and self.ScattergunHasKnockback then + self:DoOwnerKnockback() + end + + return +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_scientist_syringe/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_scientist_syringe/shared.lua new file mode 100644 index 000000000..b6b508c87 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_scientist_syringe/shared.lua @@ -0,0 +1,187 @@ + +PrecacheParticleSystem("boomer_vomit_b") + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + + +if CLIENT then + SWEP.PrintName = "Healing Syringe" +end +SWEP.ReadyToPounce = true +SWEP.Base = "tf_weapon_base" +SWEP.Slot = 0 +SWEP.UseHands = false +SWEP.ViewModel = Model( "models/weapons/cstrike/c_medkit.mdl" ) +SWEP.WorldModel = Model( "models/empty.mdl" ) +SWEP.Crosshair = "tf_crosshair3" + +SWEP.DeployedSyringe = false +SWEP.VM_DRAW = ACT_IDLE +SWEP.VM_IDLE = ACT_IDLE +SWEP.HoldType = "melee" + + +SWEP.HealAmount = 20 -- Maximum heal amount per use +SWEP.MaxAmmo = 100 -- Maxumum ammo + +local HealSound = Sound( "items/medshot4.wav" ) +local DenySound = Sound( "WallHealth.Deny" ) + +function SWEP:Initialize() + + self:SetHoldType( "slam" ) + + if ( CLIENT ) then return end + + + return self.BaseClass.Initialize(self) +end + +function SWEP:PrimaryAttack() + + if ( CLIENT ) then return end + if (!self.DeployedSyringe) then + self:SendWeaponAnim( ACT_VM_DRAW ) + self.Owner:DoAnimationEvent(ACT_ARM,true) + self.VM_IDLE = ACT_VM_IDLE + self.DeployedSyringe = true + self:SetNextPrimaryFire(CurTime() + 2) + self.Owner:DrawViewModel(true) + + EmitSentence( "SC_HEAL" .. math.random( 1, 7 ), self.Owner:GetPos(), self.Owner:EntIndex() , CHAN_VOICE, 1, 75, 0, 100 ) + timer.Simple(1.0, function() + timer.Create( "medkit_ammo" .. self:EntIndex(), 1, 0, function() + if ( self:Clip1() < self.MaxAmmo ) then self:SetClip1( math.min( self:Clip1() + 2, self.MaxAmmo ) ) end + end ) + + self.Owner:SetBodygroup(2,1) + end) + return + else + if ( self.Owner:IsPlayer() ) then + self.Owner:LagCompensation( true ) + end + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * 64, + filter = self.Owner + } ) + + if ( self.Owner:IsPlayer() ) then + self.Owner:LagCompensation( false ) + end + + local ent = tr.Entity + + local need = self.HealAmount + if ( IsValid( ent ) ) then need = math.min( ent:GetMaxHealth() - ent:Health(), self.HealAmount ) end + + if ( IsValid( ent ) && self:Clip1() >= need && ( ent:IsPlayer() or ent:IsNPC() ) && ent:Health() < ent:GetMaxHealth() ) then + + self:TakePrimaryAmmo( need ) + + ent:SetHealth( math.min( ent:GetMaxHealth(), ent:Health() + need ) ) + ent:EmitSound( HealSound ) + + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK1,true) + self:SetNextPrimaryFire( CurTime() + self:SequenceDuration() + 0.5 ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + + -- Even though the viewmodel has looping IDLE anim at all times, we need this to make fire animation work in multiplayer + timer.Create( "weapon_idle" .. self:EntIndex(), self:SequenceDuration(), 1, function() if ( IsValid( self ) ) then self:SendWeaponAnim( ACT_VM_IDLE ) end end ) + + else + + self:SendWeaponAnim( ACT_VM_HOLSTER ) + self.Owner:DoAnimationEvent(ACT_DISARM,true) + self.DeployedSyringe = false + self:SetNextPrimaryFire( CurTime() + 2 ) + timer.Stop( "medkit_ammo" .. self:EntIndex() ) + timer.Stop( "weapon_idle" .. self:EntIndex() ) + timer.Simple(0.6, function() + self.Owner:DrawViewModel(false) + end) + timer.Simple(1.0, function() + self.Owner:SetBodygroup(2,0) + end) + return + + end + end + +end + +function SWEP:SecondaryAttack() + + if ( CLIENT ) then return end + + if (!self.DeployedSyringe) then + self:SendWeaponAnim( ACT_VM_DRAW ) + self.VM_IDLE = ACT_VM_IDLE + self.DeployedSyringe = true + return + end + + local ent = self.Owner + + local need = self.HealAmount + if ( IsValid( ent ) ) then need = math.min( ent:GetMaxHealth() - ent:Health(), self.HealAmount ) end + + if ( IsValid( ent ) && self:Clip1() >= need && ent:Health() < ent:GetMaxHealth() ) then + + self:TakePrimaryAmmo( need ) + + ent:SetHealth( math.min( ent:GetMaxHealth(), ent:Health() + need ) ) + ent:EmitSound( HealSound ) + + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + + self:SetNextSecondaryFire( CurTime() + self:SequenceDuration() + 0.5 ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + + timer.Create( "weapon_idle" .. self:EntIndex(), self:SequenceDuration(), 1, function() if ( IsValid( self ) ) then self:SendWeaponAnim( ACT_VM_IDLE ) end end ) + + else + + ent:EmitSound( DenySound ) + self:SetNextSecondaryFire( CurTime() + 1 ) + + end + +end + +function SWEP:OnRemove() + + timer.Stop( "medkit_ammo" .. self:EntIndex() ) + timer.Stop( "weapon_idle" .. self:EntIndex() ) + + self.Owner:SetBodygroup(1,0) + return self.BaseClass.OnRemove(self) +end + +function SWEP:Holster() + + self.Owner:DrawViewModel(true) + timer.Stop( "weapon_idle" .. self:EntIndex() ) + self.DeployedSyringe = false + self.VM_IDLE = ACT_IDLE + self.Owner:SetBodyGroup(2,0) + + return self.BaseClass.Holster(self) + +end + +function SWEP:CustomAmmoDisplay() + + self.AmmoDisplay = self.AmmoDisplay or {} + self.AmmoDisplay.Draw = true + self.AmmoDisplay.PrimaryClip = self:Clip1() + + return self.AmmoDisplay + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_sentry_revenge/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_sentry_revenge/shared.lua new file mode 100644 index 000000000..6979a70b9 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_sentry_revenge/shared.lua @@ -0,0 +1,75 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Shotgun" + SWEP.Slot = 0 +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_frontierjustice.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("Weapon_FrontierJustice.Single") +SWEP.ShootCritSound = Sound("Weapon_FrontierJustice.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +function SWEP:Deploy() + + for k,v in ipairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if v:Health() <= 80 then + if SERVER then + GAMEMODE:StartCritBoost(self.Owner) + + ParticleEffectAttach("soldierbuff_red_buffed", PATTACH_ABSORIGIN_FOLLOW, self.Owner, 0) + end + end + end + end + + if self:CanPrimaryAttack() == false then + if SERVER then + if GAMEMODE:StopCritBoost(self.Owner) then + + self.Owner:StopParticlesNamed("soldierbuff_red_buffed") + self.Owner:StopParticlesNamed("soldierbuff_blue_buffed") + + end + end + end + return self:CallBaseFunction("Deploy") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shortcircuit/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shortcircuit/shared.lua new file mode 100644 index 000000000..67c892e5b --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shortcircuit/shared.lua @@ -0,0 +1,233 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Pistol" +SWEP.Slot = 1 +SWEP.RenderGroup = RENDERGROUP_BOTH +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_dex_arm/c_dex_arm.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_pistol" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_BarretsArm.Zap") +SWEP.SecondaryShootSound = Sound("Weapon_BarretsArm.Shot") +SWEP.ShootCritSound = Sound("Weapon_BarretsArm.Zap") +SWEP.ReloadSound = Sound("Weapon_Pistol.WorldReloadEngineer") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_pistol") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 1 +SWEP.MaxDamageRampUp = 2 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.04 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Ammo = TF_METAL +SWEP.Primary.Delay = 0.15 +SWEP.Secondary.Delay = 0.7 +SWEP.ReloadTime = 1.2 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "pistol" + +SWEP.IsRapidFire = true +SWEP.ProjectileShootOffset = Vector(0, 13, -12) + +-- thanks lead + +function SWEP:Think() + self:CallBaseFunction("Think") +end + +function SWEP:CanPrimaryAttack(ent) + if self.Owner:KeyDown(IN_ATTACK2) then + return false + end + return self:CallBaseFunction("CanPrimaryAttack") +end + +function SWEP:PreDrawViewModel(vm, vpn, ply) + vm:SetBodygroup(1, 1) +end + +function SWEP:Deploy() + self.BaseClass.Deploy(self) + if IsValid(self.Owner) then + self.Owner:SetBodygroup(2, 2) + end +end + +function SWEP:Holster() + if IsValid(self.Owner) then + self.Owner:SetBodygroup(2, 0) + if self.Owner:HasWeapon("tf_weapon_robot_arm") then + self.Owner:SetBodygroup(2, 1) + end + end + return self.BaseClass.Holster(self) +end + +function SWEP:OnRemove() + self:Holster() + + return self.BaseClass.OnRemove(self) +end + +function SWEP:InspectAnimCheck() + self.VM_INSPECT_START = ACT_SECONDARY_ALT2_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_SECONDARY_ALT2_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_SECONDARY_ALT2_VM_INSPECT_END +end + +function SWEP:SecondaryShootEffects() + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + if self:GetVisuals() and self:GetVisuals()["sound_single_shot"] then + self.ShootSound = self:GetVisuals()["sound_single_shot"] + self.ShootCritSound = self:GetVisuals()["sound_burst"] + end + if self:Critical() then + self:EmitSound(self.SecondaryShootSound) + else + self:EmitSound(self.SecondaryShootSound, self.ShootSoundLevel, self.ShootSoundPitch) + end + + if SERVER then + if self.MuzzleEffect and self.MuzzleEffect~="" then + umsg.Start("DoMuzzleFlash") + umsg.Entity(self) + umsg.End() + end + end +end + +function SWEP:CanSecondaryAttack() + if (self:Ammo2() > 0) then + return true + end + + return false +end +function SWEP:PrimaryAttack() + if self:Ammo1() < 1 then if SERVER then self.Owner:EmitSoundEx("Weapon_BarretsArm.Fizzle") self:SetNextPrimaryFire(CurTime() + self.Secondary.Delay) end return end + if SERVER then + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + self.Owner:RemoveAmmo(5, self.Primary.Ammo, false) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-5) + umsg.End() + end + return self:CallBaseFunction("PrimaryAttack") +end + +function SWEP:SecondaryAttack() + self:StopTimers() + if self:Ammo1() < 1 then if SERVER then self.Owner:EmitSoundEx("Weapon_BarretsArm.Fizzle") self:SetNextSecondaryFire(CurTime() + self.Secondary.Delay) end return end + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + self:SetNextSecondaryFire(CurTime() + self.Secondary.Delay) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + if SERVER then + self.Owner:RemoveAmmo(65, self.Primary.Ammo, false) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-65) + umsg.End() + end + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + if self then + if self.Owner:GetInfoNum("tf_autoreload", 1) == 1 then + if auto_reload then + timer.Create("AutoReload", (self:SequenceDuration() + self.AutoReloadTime), 1, function() if IsValid(self) and IsValid(self.Owner) and isfunction(self:Reload()) then self:Reload() end end) + end + end + end + self:ShootProjectile2(self.BulletsPerShot, self.BulletSpread) + + if self:Clip1() <= 0 then + self:Reload() + end + + if self.Owner:GetPlayerClass() == "spy" then + if self.Owner:GetModel() == "models/player/scout.mdl" or self.Owner:GetModel() == "models/player/soldier.mdl" or self.Owner:GetModel() == "models/player/pyro.mdl" or self.Owner:GetModel() == "models/player/demo.mdl" or self.Owner:GetModel() == "models/player/heavy.mdl" or self.Owner:GetModel() == "models/player/engineer.mdl" or self.Owner:GetModel() == "models/player/medic.mdl" or self.Owner:GetModel() == "models/player/sniper.mdl" or self.Owner:GetModel() == "models/player/hwm/spy.mdl" or self.Owner:GetModel() == "models/player/kleiner.mdl" then + if self.Owner:KeyDown( IN_ATTACK ) then + if self.Owner:GetInfoNum("tf_robot", 0) == 0 then + self.Owner:SetModel("models/player/spy.mdl") + else + self.Owner:SetModel("models/bots/spy/bot_spy.mdl") + end + if IsValid( button) then + button:Remove() + end + for _,v in pairs(ents.GetAll()) do + if v:IsNPC() and not v:IsFriendly(self.Owner) then + v:AddEntityRelationship(self.Owner, D_HT, 99) + end + end + if self.Owner:Team() == TEAM_BLU then + self.Owner:SetSkin(1) + elseif self.Owner:Team() == TF_TEAM_PVE_INVADERS then + self.Owner:SetSkin(1) + else + self.Owner:SetSkin(0) + end + self.Owner:EmitSoundEx("player/spy_disguise.wav", 65, 100) + end + end + end + + self:RollCritical() -- Roll and check for criticals first + + self.Owner:ViewPunch( self.PunchView ) + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + + return true +end + +function SWEP:ShootProjectile2() + if SERVER then + local rocket = ents.Create("tf_projectile_shortcircuit") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + rocket:SetAngles(ang) + + if self:Critical() then + rocket.critical = true + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + + rocket:Spawn() + rocket:Activate() + end + + self:SecondaryShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun/shared.lua new file mode 100644 index 000000000..d98b38c6e --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun/shared.lua @@ -0,0 +1,114 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 1 +SWEP.PrintName = "Shotgun" + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shotgun/c_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("Weapon_Shotgun.TF_Single") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + + +SWEP.HoldType = "PRIMARY" + +SWEP.HoldTypeHL2 = "shotgun" +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.625 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +function SWEP:InspectAnimCheck() + if (IsValid(self.Owner)) then + if (self.Owner:GetPlayerClass() == "heavyshotgun") then + self.Primary.Delay = 0.6 * 2.5 + self.ReloadTime = 0.5 * 0.1 + self.BulletsPerShot = 10 + 3 + self.HoldType = "SECONDARY" + self.Primary.Ammo = TF_SECONDARY + self:SetHoldType("SECONDARY") + end + if (self.Owner:GetPlayerClass() == "giantheavyshotgun") then + self.Primary.Delay = 0.6 * 2.5 + self.ReloadTime = 0.5 * 0.1 + self.BulletsPerShot = 10 + 10 + self.BaseDamage = 6 * 0.5 + self.HoldType = "SECONDARY" + self.Primary.Ammo = TF_SECONDARY + self:SetHoldType("SECONDARY") + end + if (self.Owner:GetPlayerClass() == "soldier" + || self.Owner:GetPlayerClass() == "heavy" + || self.Owner:GetPlayerClass() == "heavyshotgun" + || self.Owner:GetPlayerClass() == "giantheavyshotgun" + || self.Owner:GetPlayerClass() == "pyro") then + self.item_slot = "SECONDARY" + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self.HoldType = "SECONDARY" + self.Primary.Ammo = TF_SECONDARY + self:SetHoldType("SECONDARY") + elseif (self.Owner:GetPlayerClass() == "scout" + || self.Owner:GetPlayerClass() == "engineer") then + self.VM_DRAW = ACT_PRIMARY_VM_DRAW + self.VM_IDLE = ACT_PRIMARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_PRIMARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_PRIMARY_RELOAD_START + self.VM_RELOAD = ACT_PRIMARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_PRIMARY_RELOAD_FINISH + self.Slot = 0 + self.Primary.Ammo = TF_PRIMARY + self.HoldType = "PRIMARY" + self:SetHoldType("PRIMARY") + else + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Slot = 1 + self.Primary.Ammo = TF_SECONDARY + self.HoldType = "PRIMARY" + self:SetHoldType("PRIMARY") + end + end + return self.BaseClass.InspectAnimCheck(self) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun_building_rescue/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_building_rescue/shared.lua new file mode 100644 index 000000000..e92820efc --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_building_rescue/shared.lua @@ -0,0 +1,173 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + SWEP.HeadshotScore = 1 +end + +PrecacheParticleSystem( "teleportedin_red" ) +PrecacheParticleSystem( "teleported_red" ) +PrecacheParticleSystem( "teleportedin_blue" ) +PrecacheParticleSystem( "teleported_blue" ) +PrecacheParticleSystem( "teleported_flash" ) + +if CLIENT then + +SWEP.PrintName = "Rescue Ranger" +SWEP.Slot = 0 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_tele_shotgun/c_tele_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = Sound("Weapon_RescueRanger.Single") +SWEP.ShootCritSound = Sound("Weapon_RescueRanger.SingleCrit") +SWEP.ReloadSound = Sound("weapons/shotgun_reload.wav") + +SWEP.Primary.ClipSize = 4 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.5 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.ProjectileShootOffset = Vector(0, 8, -5) + +function SWEP:ShootProjectile() + if SERVER then + local syringe = ents.Create("tf_projectile_arrow_heal_building") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + + --local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(vec:Angle()) + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + --syringe:SetProjectileType(1) + + self:InitProjectileAttributes(syringe) + + syringe.NameOverride = self:GetItemData().item_iconname + syringe:Spawn() + end + + self:ShootEffects() +end + +function SWEP:SecondaryAttack() + self:SetNextSecondaryFire(CurTime() + 0.5) + local v = self.Owner:GetEyeTrace().Entity + local pos = self.Owner:GetEyeTrace().HitPos + if v:IsBuilding() and v:GetOwner() == self.Owner then + if v:GetClass() == "obj_sentrygun" then + v:EmitSound("weapons/rescue_ranger_teleport_receive_0"..math.random(1,2)..".wav") + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + ParticleEffect("teleportedin_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + else + ParticleEffect("teleportedin_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + end + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + --print(builder.MovedBuildingLevel) + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 2 0") + self.Owner:EmitSoundEx("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav") + end + elseif v:GetClass() == "obj_dispenser" then + v:EmitSound("weapons/rescue_ranger_teleport_receive_0"..math.random(1,2)..".wav") + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + ParticleEffect("teleportedin_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + else + ParticleEffect("teleportedin_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + end + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.) + self.Owner:ConCommand("move 0 0") + self.Owner:EmitSoundEx("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != true then + v:EmitSound("weapons/rescue_ranger_teleport_receive_0"..math.random(1,2)..".wav") + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + ParticleEffect("teleportedin_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + else + ParticleEffect("teleportedin_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + end + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 1 0") + self.Owner:EmitSoundEx("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != false then + v:EmitSound("weapons/rescue_ranger_teleport_receive_0"..math.random(1,2)..".wav") + if self.Owner:Team() == TEAM_RED or self.Owner:Team() == TEAM_NEUTRAL then + ParticleEffect("teleportedin_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_red", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + else + ParticleEffect("teleportedin_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 ) ) + ParticleEffect("teleported_blue", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + ParticleEffect("teleported_flash", self.Owner:GetEyeTrace().HitPos, Angle( 0, 0, 0 )) + end + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill", "", 0.1) + self.Owner:ConCommand("move 1 1") + self.Owner:EmitSoundEx("weapons/rescue_ranger_teleport_send_0"..math.random(1,2)..".wav") + end + end + end +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun_hwg/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_hwg/shared.lua new file mode 100644 index 000000000..ab5c3c9b1 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_hwg/shared.lua @@ -0,0 +1,48 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end +SWEP.Slot = 1 +if CLIENT then + SWEP.PrintName = "Shotgun" + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_heavy_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shotgun/c_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.625 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun_imalreadywidowmaker/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_imalreadywidowmaker/shared.lua new file mode 100644 index 000000000..016a563a9 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_imalreadywidowmaker/shared.lua @@ -0,0 +1,95 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Widowmaker" +SWEP.Slot = 0 +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/workshop_partner/weapons/c_models/c_dex_shotgun/c_dex_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_WidowMaker.Cock_Forward") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_METAL +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +function SWEP:CanPrimaryAttack() + if (self:Ammo1() > 0) then + return true + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:EmitSound("Weapon_WidowMaker.Empty") + return false +end + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_PRIMARYATTACK = ACT_VM_PRIMARYATTACK_SPECIAL +end + +function SWEP:PrimaryAttack() + self:StopTimers() + + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if self.Owner:GetMaterial() == "models/shadertest/predator" then return end + + auto_reload = self.Owner:GetInfoNum("tf_righthand", 1) + + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAttackEvent() + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + if self then + end + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + if SERVER then + self.Owner:RemoveAmmo(40, self.Primary.Ammo, false) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-40) + umsg.End() + end + + self:RollCritical() -- Roll and check for criticals first + + self.Owner:ViewPunch( self.PunchView ) + + self.NextReloadStart = nil + self.NextReload = nil + self.Reloading = false + + return true +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun_primary/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_primary/shared.lua new file mode 100644 index 000000000..cd4cbc6ed --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_primary/shared.lua @@ -0,0 +1,67 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 0 +if CLIENT then + SWEP.PrintName = "Shotgun" +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shotgun/c_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.6 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +SWEP.HoldType = "PRIMARY" + +SWEP.HoldTypeHL2 = "shotgun" + +function SWEP:Think() + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_trenchgun/c_trenchgun.mdl" then + if self:Health() <= self.Owner:GetMaxHealth() then + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay - self.Owner:Health() / 4 ) + end + end + self:CallBaseFunction("Think") +end + +function SWEP:PrimaryAttack() + self:CallBaseFunction("PrimaryAttack") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun_pyro/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_pyro/shared.lua new file mode 100644 index 000000000..77807ba3d --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_pyro/shared.lua @@ -0,0 +1,137 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 1 +if CLIENT then + SWEP.PrintName = "Shotgun" +end + +SWEP.Base = "tf_weapon_gun_base" +SWEP.HasCModel = true +SWEP.ViewModel = "models/weapons/c_models/c_pyro_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shotgun/c_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.625 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" +function SWEP:PrimaryAttack() + + if self.Owner:GetInfoNum("tf_robot", 0) == 1 then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARY) + end + return self:CallBaseFunction("PrimaryAttack") +end +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + self.Owner:DoAnimationEvent(ACT_MP_RELOAD_STAND_PRIMARY) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + self.Owner:SetAnimation(PLAYER_RELOAD) + if self.ReloadTime == 1.15 then + self.Owner:GetViewModel():SetPlaybackRate(1.4) + end + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") +end + +function SWEP:Think() + if self.Owner:GetInfoNum("tf_robot", 0) == 1 then + self:SetHoldType("ITEM1") + end + if self.Owner:GetPlayerClass() == "medicshotgun" then + self.Slot = 0 + self.VM_DRAW = ACT_SECONDARY_VM_DRAW + self.VM_IDLE = ACT_SECONDARY_VM_IDLE + self.VM_PRIMARYATTACK = ACT_SECONDARY_VM_PRIMARYATTACK + self.VM_RELOAD_START = ACT_SECONDARY_RELOAD_START + self.VM_RELOAD = ACT_SECONDARY_VM_RELOAD + self.VM_RELOAD_FINISH = ACT_SECONDARY_RELOAD_FINISH + self.Owner:GetViewModel():SetBodygroup(0,0) + self.Owner:GetViewModel():SetBodygroup(1,0) + end + return self.BaseClass.Think(self) +end + + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shotgun_soldier/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_soldier/shared.lua new file mode 100644 index 000000000..1a8242836 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shotgun_soldier/shared.lua @@ -0,0 +1,48 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end +SWEP.Slot = 1 +if CLIENT then + SWEP.PrintName = "Shotgun" + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shotgun/c_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.MuzzleEffect = "muzzle_shotgun" +SWEP.MuzzleOffset = Vector(20, 4, -3) + +SWEP.ShootSound = Sound("weapons/shotgun_shoot.wav") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_Shotgun.WorldReload") + +SWEP.TracerEffect = "bullet_shotgun_tracer01" +PrecacheParticleSystem("bullet_shotgun_tracer01_red") +PrecacheParticleSystem("bullet_shotgun_tracer01_red_crit") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue") +PrecacheParticleSystem("bullet_shotgun_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_shotgun") + +SWEP.BaseDamage = 6 +SWEP.DamageRandomize = 4 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 10 +SWEP.BulletSpread = 0.0675 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.625 +SWEP.ReloadTime = 0.5 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_shovel/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_shovel/shared.lua new file mode 100644 index 000000000..2e23dd95b --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_shovel/shared.lua @@ -0,0 +1,125 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 2 +if CLIENT then + SWEP.PrintName = "Shovel" +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_soldier_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_shovel/c_shovel.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.Swing = Sound("Weapon_Shovel.Miss") +SWEP.SwingCrit = Sound("Weapon_Shovel.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Shovel.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Shovel.HitWorld") +SWEP.DamageType = bit.bor(DMG_CLUB,DMG_BULLET) + +local SpeedTable = { +{40, 1.6}, +{80, 1.4}, +{120, 1.2}, +{160, 1.1}, +} + +SWEP.MinDamage = 0.5 +SWEP.MaxDamage = 1.75 + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.NoCModelOnStockWeapon = true + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "MELEE" + +function SWEP:Think() + self:CallBaseFunction("Think") + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_riding_crop/c_riding_crop.mdl" then + self.Swing = Sound("DisciplineDevice.Swing") + + self.MeleeRange = 90 + self.MeleeAttackDelay = 0.2 + self.HitFlesh = Sound("DisciplineDevice.Impact") + self.HitWorld = Sound("DisciplineDevice.HitWorld") + end + if SERVER and self.WeaponMode == 1 and (not self.NextHealthCheck or CurTime()>=self.NextHealthCheck) then + if not self.InitialBaseDamage then + self.InitialBaseDamage = self.BaseDamage + end + + self.BaseDamage = self.InitialBaseDamage * Lerp((self.Owner:GetMaxHealth()-self.Owner:Health()) / self.Owner:GetMaxHealth(), self.MinDamage, self.MaxDamage) + + local sp + for _,v in ipairs(SpeedTable) do + if self.Owner:Health()<=v[1] then + sp = v[2] + break + end + end + + if sp~=self.LastSpeed then + if sp then + self.LocalSpeedBonus = sp + else + self.LocalSpeedBonus = nil + end + if self.Owner:GetInfoNum("tf_giant_robot",0) != 1 then + self.Owner:ResetClassSpeed() + end + self.LastSpeed = sp + end + + self.NextHealthCheck = CurTime() + 0.1 + end +end + +function SWEP:Deploy() + if SERVER and self.WeaponMode == 1 then + self.NameOverride = "pickaxe" + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Critical() + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_market_gardener/c_market_gardener.mdl" then + if self.Owner:GetWeapons()[1].GetRocketJumpForce then + return true + else + return false + end + end + if self:GetItemData().model_player == "models/weapons/c_models/c_market_gardener/c_market_gardener.mdl" then + if self.Owner:GetWeapons()[1].GetRocketJumpForce then + return true + else + return false + end + end + return self:CallBaseFunction("Critical") +end + +function SWEP:Holster() + if SERVER and self.WeaponMode == 1 then + self.LastSpeed = nil + end + + return self:CallBaseFunction("Holster") +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_slap/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_slap/shared.lua new file mode 100644 index 000000000..026074ffe --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_slap/shared.lua @@ -0,0 +1,152 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Hot Hand" +SWEP.Slot = 2 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_models/v_bat_scout.mdl" +SWEP.WorldModel = "models/empty.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("weapons/slap_swing.wav") -- Sound("Weapon_Slap.Swing") +SWEP.SwingCrit = Sound("weapons/slap_swing_crit.wav") -- Sound("Weapon_Slap.Swing") +SWEP.HitFlesh = Sound("Weapon_Slap.OpenHand") -- Sound("Weapon_Slap.Swing") +SWEP.HitWorld = Sound("weapons/slap_hit_world1.wav") -- Sound("Weapon_Slap.Swing") + +SWEP.BaseDamage = 35 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 1.0 + +SWEP.HoldType = "MELEE_ALLCLASS" + +SWEP.Special_HumiliationCount = "#Humiliation_Count" +SWEP.Special_HumiliationKill = "#Humiliation_Kill" + +function SWEP:InspectAnimCheck() +self:CallBaseFunction("InspectAnimCheck") +self.VM_DRAW = _G["ACT_ITEM3_VM_DRAW"] +self.VM_IDLE = _G["ACT_ITEM3_VM_IDLE"] +self.VM_HITCENTER = _G["ACT_ITEM3_VM_PRIMARYATTACK"] +self.VM_SWINGHARD = _G["ACT_ITEM3_VM_PRIMARYATTACK"] +self.VM_INSPECT_START = _G["ACT_ITEM3_VM_INSPECT_START"] +self.VM_INSPECT_IDLE = _G["ACT_ITEM3_VM_INSPECT_IDLE"] +self.VM_INSPECT_END = _G["ACT_ITEM3_VM_INSPECT_END"] +self.Owner:SetPoseParameter("r_hand_grip",15.0) +self.Owner:SetPoseParameter("r_arm",3) +end + +function SWEP:PrimaryAttack() + self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) + if self:CriticalEffect() then + ----MsgN(Format("[%f] From SWEP:PrimaryAttack (%s) : Critical hit!", CurTime(), tostring(self))) + self:EmitSound(self.SwingCrit, 100, 100) + --[[if SERVER then + self:EmitSound(self.SwingCrit, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(true) + umsg.End() + end]] + self:SendWeaponAnim(self.VM_SWINGHARD) + if self.HasThirdpersonCritAnimation then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_SECONDARYFIRE, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + else + self:EmitSound(self.Swing, 100, 100) + --[[if SERVER then + self:EmitSound(self.Swing, 100, 100) + umsg.Start("DoMeleeSwing",self.Owner) + umsg.Entity(self) + umsg.Bool(false) + umsg.End() + end]] + + if self.UsesLeftRightAnim then + self:SendWeaponAnim(self.VM_HITLEFT) + else + self:SendWeaponAnim(self.VM_HITCENTER) + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + + if self.HasCustomMeleeBehaviour then return true end + + if SERVER and IsValid(self.Owner.TargeEntity) then + self.Owner.TargeEntity:OnMeleeSwing() + end + + + self.NextIdle = CurTime() + self:SequenceDuration() + + --self.NextMeleeAttack = CurTime() + self.MeleeAttackDelay + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + if not self.NextMeleeAttack2 then + self.NextMeleeAttack2 = {} + end + + self:StopTimers() + self.CriticalChance = 20 + self.HitFlesh = Sound("Weapon_Slap.OpenHand") + self.HitWorld = Sound("Weapon_Slap.OpenHandHitWorld") + if (IsFirstTimePredicted()) then + table.insert(self.NextMeleeAttack, CurTime() + self.MeleeAttackDelay) + table.insert(self.NextMeleeAttack2, CurTime() + self.MeleeAttackDelay + 0.3) + end + + return true +end + +function SWEP:Think() + self:CallBaseFunction("Think") + while self.NextMeleeAttack2 and self.NextMeleeAttack2[1] and CurTime() > self.NextMeleeAttack2[1] and IsFirstTimePredicted() do + self.HitFlesh = Sound("Weapon_Slap.BackHand") + self.HitWorld = Sound("Weapon_Slap.BackHandHitWorld") + self.CriticalChance = 0 + self:MeleeAttack() + table.remove(self.NextMeleeAttack2, 1) + + self:RollCritical() + end +end +function SWEP:OnMeleeHit(tr) + if CLIENT then return end + + local ent = tr.Entity + if not (ent:IsTFPlayer() and self.Owner:CanDamage(ent) and not ent:IsBuilding()) then return end + + local InflictorClass = gamemode.Call("GetInflictorClass", ent, self.Owner, self) + + umsg.Start("Notice_EntityHumiliationCounter") + umsg.String(GAMEMODE:EntityName(ent)) + umsg.Short(GAMEMODE:EntityTeam(ent)) + umsg.Short(GAMEMODE:EntityID(ent)) + + umsg.String(InflictorClass) + + umsg.String(GAMEMODE:EntityName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + --[[ + umsg.String(GAMEMODE:EntityName(cooperator)) + umsg.Short(GAMEMODE:EntityTeam(cooperator)) + umsg.Short(GAMEMODE:EntityID(cooperator))]] + + umsg.Bool(self.CurrentShotIsCrit) + umsg.End() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_smg/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_smg/shared.lua new file mode 100644 index 000000000..4d61d5fd0 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_smg/shared.lua @@ -0,0 +1,54 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 1 +if CLIENT then + SWEP.PrintName = "SMG" +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_smg/c_smg.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_smg" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_SMG.Single") +SWEP.ShootCritSound = Sound("Weapon_SMG.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_SMG.WorldReload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("muzzle_smg") +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") + +SWEP.BaseDamage = 8 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.025 + +SWEP.Primary.ClipSize = 25 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.1 +SWEP.ReloadTime = 1.4 + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "smg" + +SWEP.AutoReloadTime = 0.10 + +SWEP.IsRapidFire = true \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_sniperrifle/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_sniperrifle/shared.lua new file mode 100644 index 000000000..640af5b78 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_sniperrifle/shared.lua @@ -0,0 +1,473 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.Slot = 0 +if CLIENT then + +SWEP.PrintName = "Sniper Rifle" + +usermessage.Hook("ClearZoomStatus",function(msg) + local pl = msg:ReadEntity() + + if IsValid(pl) and pl:IsPlayer() then + pl.TargetZoom = 1 + if pl==LocalPlayer() then + HudSniperChargeMeter:SetVisible(false) + end + end +end) + +usermessage.Hook("SetZoomStatus",function(msg) + local self = msg:ReadEntity() + local b = msg:ReadBool() + self.ZoomStatus = b + if b and IsValid(self.Owner) then + self.Owner.TargetZoom = 3 * (self.ZoomMultiplier or 1) + if self.Owner==LocalPlayer() then + HudSniperChargeMeter:SetVisible(true) + if self.DisableSniperCharge then + HudSniperChargeMeter:SetProgress(-1) -- hide the charge meter + else + HudSniperChargeMeter:SetProgress(0) + end + end + self.ChargeTimerStart = CurTime() + self.Time0 = 0 + self.Rate = 1 + self.DrawCrosshair = false + else + if self and IsValid(self.Owner) then + self.Owner.TargetZoom = 1 + if self.Owner==LocalPlayer() then + HudSniperChargeMeter:SetVisible(false) + end + end + + self.ChargeTimerStart = nil + self.DrawCrosshair = true + end +end) + +usermessage.Hook("SynchronizeSniperCharge", function(msg) + local self = msg:ReadEntity() + if not IsValid(self) then return end + + self.Time0 = self.Time0 + (CurTime() - self.ChargeTimerStart) * self.Rate + if self.Time0==0 then return end + self.Rate = msg:ReadFloat() / self.Time0 + self.ChargeTimerStart = CurTime() +end) + +local W = ScrW() +local H = ScrH() +local Scale = H/480 + +local sniperdot_red = surface.GetTextureID("effects/sniperdot_red") +local sniperdot_blue = surface.GetTextureID("effects/sniperdot_blue") + +function SWEP:DrawHUD() + if self.ChargeTimerStart then + local charge + + if self.DisableSniperCharge then + charge = 0 + else + charge = self.Time0 + (CurTime() - self.ChargeTimerStart) * self.Rate + local chargetime = self.ChargeTime / (self.SniperChargeRateMultiplier or 1) + + charge = math.Clamp(100*charge/chargetime, 0, 100) + HudSniperChargeMeter:SetProgress(charge) + end + + local tex + if self.Owner:EntityTeam()==TEAM_BLU then + tex = sniperdot_blue + elseif self.Owner:EntityTeam()==TF_TEAM_PVE_INVADERS then + tex = sniperdot_blue + else + tex = sniperdot_red + end + + local tr = util.TraceLine{ + start=self.Owner:GetShootPos(), + endpos=self.Owner:GetShootPos()+10000*self.Owner:GetAimVector(), + filter=self.Owner, + mask=MASK_SHOT, + } + local dist = tr.Fraction * 10000 + + local s = math.floor(math.Clamp(2000*Scale/(dist+1), 4*Scale, 24*Scale)) + + surface.SetDrawColor(255,255,255,100) + surface.SetTexture(tex) + + local cx, cy = math.floor(W/2), math.floor(H/2) + + surface.DrawTexturedRect(cx - s, cy - s, 2*s, 2*s) + s = math.floor(Lerp(charge*0.01, 0.2, 1) * s) + + if s>0 then + surface.SetDrawColor(255,255,255,255) + surface.DrawTexturedRect(cx - s, cy - s, 2*s, 2*s) + end + end +end +--[[ +function SWEP:ModelDrawn(v) + if self.ZoomStatus then + local start = self.Owner:GetShootPos() + local endpos = start + 10000*self.Owner:GetAimVector() + local tr = util.TraceLine{ + start=start, + endpos=endpos, + filter=self.Owner, + } + + if tr.Hit and not tr.HitSky then + + end + end +end]] + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_sniper_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_sniperrifle/c_sniperrifle.mdl" +SWEP.Crosshair = "tf_crosshair2" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_sniperrifle" + +SWEP.ShootSound = Sound("weapons/sniper_shoot.wav") +SWEP.ShootCritSound = Sound("weapons/sniper_shoot_crit.wav") +SWEP.ReloadSound = Sound("Weapon_SniperRifle.WorldReload") + +SWEP.TracerEffect = "bullet_tracer01" +PrecacheParticleSystem("muzzle_sniperrifle") +PrecacheParticleSystem("bullet_tracer01_red") +PrecacheParticleSystem("bullet_tracer01_red_crit") +PrecacheParticleSystem("bullet_tracer01_blue") +PrecacheParticleSystem("bullet_tracer01_blue_crit") + +SWEP.BaseDamage = 50 +SWEP.MinDamage = 50 +SWEP.MaxDamage = 150 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.CriticalChance = 0 +SWEP.CritsOnHeadshot = true +SWEP.HeadshotName = "tf_weapon_sniperrifle_headshot" + +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 1.5 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.HoldTypeHL2 = "smg" + +SWEP.ProjectileShootOffset = Vector(3, 8, -5) +SWEP.ChargeTime = 4 + +SWEP.PredictCritServerside = true + +function SWEP:ZoomIn() + if CLIENT then + return + end + + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PREFIRE, true) + self.NextAutoZoomIn = nil + if not self.ZoomStatus then + self.ViewModelFOV = 0 + self.LaserDot:Enable() + self.ZoomStatus = true + umsg.Start("SetZoomStatus") + umsg.Entity(self) + umsg.Bool(true) + umsg.End() + self.Owner:DoAnimationEvent(ACT_MP_DEPLOYED, true) + --self.Owner:DrawViewModel(false) + self.ChargeTimerStart = CurTime() + self.Owner:SetFOV(20, 0.1) + end + + if not self.DisableZoomSpeedPenalty then + self.Owner:SetClassSpeed(3 * 27 * (self.DeployMoveSpeedMultiplier or 1)) + self.Owner:SetCrouchedWalkSpeed(0.33) + end + +end + +function SWEP:AdjustMouseSensitivity() + if self.ZoomStatus then + return 0.35 + end +end + +function SWEP:ZoomOut() + if CLIENT then + return + end + + if (self.Owner:GetVelocity():Length() != 0) then + + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + + end + self.NextAutoZoomOut = nil + if self.ZoomStatus then + self.ViewModelFOV = GetConVar( "viewmodel_fov_tf" ):GetInt() + self.LaserDot:Disable() + self.ZoomStatus = false + umsg.Start("SetZoomStatus") + umsg.Entity(self) + umsg.Bool(false) + umsg.End() + + self.Owner:SetFOV(0, 0.1) + --self.Owner:DrawViewModel(true) + self.ChargeTimerStart = nil + end + + if not self.DisableZoomSpeedPenalty then + local owner = self.CurrentOwner or self.Owner + owner:ResetClassSpeed() + end +end + +function SWEP:ToggleZoom() + if self.ZoomStatus then self:ZoomOut() + else self:ZoomIn() + end +end + +function SWEP:PrimaryAttack() + + if not self.IsDeployed then return false end + + if self:Ammo1() >= 1 then + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self:ShootProjectile(self.BulletsPerShot, self.BulletSpread) + self:TakePrimaryAmmo(1) + self:RustyBulletHole() + end + if not self:CanPrimaryAttack() then + return + end + + --self.Owner:DrawViewModel(true) + + if self.ZoomStatus then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED, true) + else + self.Owner:SetAnimation(PLAYER_ATTACK1) + end + self:ShootEffects() + self.NextAllowZoom = CurTime() + self:SequenceDuration() + if self.ZoomStatus then self.NextAutoZoomIn = CurTime()+self:SequenceDuration() - 0.1 end + + self.CritsOnHeadshot = self.ZoomStatus + + self:RollCritical() + ----print(self.BaseDamage) + + timer.Simple(0.7, function() + if CLIENT then + if (self.CModel:GetAttachment(2)) then + local effectdata = EffectData() + effectdata:SetOrigin( self.CModel:GetAttachment(2).Pos ) + util.Effect( "RifleShellEject", effectdata ) + end + end + end) + + if SERVER then + self.NextAutoZoomOut = CurTime()+0.6 + end + + self.NextIdle = CurTime()+self:SequenceDuration() + self.AmmoAdded = 1 +end + +function SWEP:SecondaryAttack() + if not self.IsDeployed then return false end + if (!self.ZoomStatus) then + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + + end + if SERVER then + if (not self.NextAllowZoom or CurTime()>self.NextAllowZoom) and self.Owner:IsOnGround() then + self:ToggleZoom() + self.NextAllowZoom = CurTime() + 0.4 + elseif self.NextAutoZoomIn then -- No, don't zoom me in automatically after that + self.NextAutoZoomIn = nil + end + end +end + +function SWEP:UpdateLaserDotPosition(dot) + local tr = util.TraceLine{ + start=self.Owner:GetShootPos(), + endpos=self.Owner:GetShootPos()+10000*self.Owner:GetAimVector(), + filter=self.Owner, + mask=MASK_SHOT, + } + + if tr.Hit then + dot:SetNoDraw(false) + dot:SetPos(tr.HitPos - 2*self.Owner:GetAimVector()) + dot:SetHitEntity(tr.Entity) + else + dot:SetNoDraw(true) + dot:SetHitEntity(NULL) + end +end + +function SWEP:Think() + self:InspectAnimCheck() + self:TFViewModelFOV() + if (self:GetItemData()) then + if (self:GetItemData().name) then + if (self:GetItemData().name == "Machina" or self:GetItemData().name == "Shooting Star") then + self.TracerEffect = "sniper_dxhr_rail" + end + end + end + if (self.ZoomStatus) then + self.NameOverride = "headshot" + else + self.NameOverride = nil + end + for k, v in pairs(player.GetAll()) do + if v == self.Owner then + if v:IsHL2() then + if self.ZoomStatus then + self:SetHoldType( "rpg" ) + else + self:SetHoldType( "smg" ) + end + end + end + end + + if self.ChargeTimerStart and not self.DisableSniperCharge then + local chargetime = self.ChargeTime / (self.SniperChargeRateMultiplier or 1) + self.BaseDamage = math.Clamp((CurTime()-self.ChargeTimerStart)/chargetime, 50, 150) + else + self.BaseDamage = 50 + end + + if SERVER and self.NextReplayDeployAnim then + if CurTime() > self.NextReplayDeployAnim then + --MsgFN("Replaying deploy animation %d", self.VM_DRAW) + timer.Simple(0.1, function() self:SendWeaponAnim(self.VM_DRAW) end) + self.NextReplayDeployAnim = nil + end + end + + if SERVER then + if not self.LastOwner then + self.LastOwner = self.Owner + end + + if not IsValid(self.LaserDot) then + self.LaserDot = ents.Create("sniper_dot") + self.LaserDot:SetPos(self:GetPos()) + self.LaserDot:SetOwner(self) + self.LaserDot:Spawn() + end + + if self.ChargeTimerStart and (not self.NextClientChargeUpdate or CurTime()>self.NextClientChargeUpdate) then + umsg.Start("SynchronizeSniperCharge") + umsg.Entity(self) + umsg.Float(CurTime() - self.ChargeTimerStart) + umsg.End() + self.NextClientChargeUpdate = CurTime() + 0.1 + end + + if self.ZoomStatus and not self.Owner:IsOnGround() then + self:ZoomOut() + self.NextAllowZoom = CurTime() + 0.4 + end + end + + if not self.IsDeployed and self.NextDeployed and CurTime()>=self.NextDeployed then + self.IsDeployed = true + end + + if self.NextIdle and CurTime()>=self.NextIdle then + self:SendWeaponAnim(self.VM_IDLE) + self.NextIdle = nil + end + + if self.NextAutoZoomOut and CurTime()>=self.NextAutoZoomOut then + self:ZoomOut() + end + + if self.NextAutoZoomIn and CurTime()>=self.NextAutoZoomIn then + self:ZoomIn() + end + + self:Inspect() +end + +function SWEP:Holster() + if SERVER then + umsg.Start("ClearZoomStatus") + umsg.Entity(self.LastOwner) + umsg.End() + + self.NextAutoZoomIn = nil + end + + if SERVER then + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + end + self:ZoomOut() + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + self:Holster() +end + + + +if SERVER then + +hook.Add("EntityTakeDamage", "BackstabSetDamage2", function(ent, dmginfo) + + if (dmginfo:GetInflictor().IsTFWeapon and dmginfo:GetInflictor().GetItemData and dmginfo:GetInflictor():GetItemData().model_player ~= nil) then + if dmginfo:GetInflictor():GetItemData().model_player == "models/weapons/c_models/c_tfc_sniperrifle/c_tfc_sniperrifle.mdl" or + dmginfo:GetInflictor():GetItemData().model_player == "models/workshop/weapons/c_models/c_sr3_punch/c_sr3_punch.mdl" then + ent:AddDeathFlag(DF_GIB) + elseif dmginfo:GetInflictor():GetItemData().model_player == "models/workshop/weapons/c_models/c_pro_rifle/c_pro_rifle.mdl" then + if (dmginfo:GetInflictor().ZoomStatus) then + ent:AddDeathFlag(DF_DECAP) + end + end + end +end) + +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_stickbomb/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_stickbomb/shared.lua new file mode 100644 index 000000000..990236885 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_stickbomb/shared.lua @@ -0,0 +1,171 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Bottle" +SWEP.Slot = 2 +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_caber/c_caber.mdl" +SWEP.ExplodedModel = "models/weapons/c_models/c_caber/c_caber_exploded.mdl" + +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_FireAxe.Miss") +SWEP.SwingCrit = Sound("Weapon_FireAxe.MissCrit") + +SWEP.HitFlesh = Sound("Weapon_FireAxe.HitFlesh") +SWEP.HitWorld = Sound("Weapon_FireAxe.HitWorld") + +SWEP.BaseDamage = 35 +SWEP.DamageRandomize = 0.15 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.ExplosionBaseDamage = 150 +SWEP.ExplosionDamageRandomize = 0 +SWEP.ExplosionRadiusInit = 180 +SWEP.ExplosionCritDamageMultiplier = 2 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 +SWEP.ReloadTime = 0.8 + +SWEP.HoldType = "MELEE" + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + self:DTVar("Bool", 0, "Broken") +end + +function SWEP:ViewModelDrawn() + if IsValid(self.CModel) then + if self.dt.Broken ~= self.VBrokenState then + if self.dt.Broken then + self.CModel:SetModel(self.ExplodedModel) + else + self.CModel:SetModel(self.WorldModel) + end + + self.VBrokenState = self.dt.Broken + end + end + + self:CallBaseFunction("ViewModelDrawn") +end + +function SWEP:DrawWorldModel(from_postplayerdraw) + if IsValid(self.WModel2) then + if self.dt.Broken ~= self.BrokenState then + if self.dt.Broken then + --self.WModel2:SetModel(self.ExplodedModel) + else + --self.WModel2:SetModel(self.WorldModel) + end + + self.BrokenState = self.dt.Broken + end + end + + self:CallBaseFunction("DrawWorldModel", from_postplayerdraw) +end + +function SWEP:MeleeAttack(dummy) + if SERVER then + if self.dt.Broken then + self.NameOverride = nil + else + self.NameOverride = "ullapool_caber_explosion" + end + end + + return self:CallBaseFunction("MeleeAttack", dummy) +end + +function SWEP:OnMeleeHit(trace) + if IsValid(trace.Entity) and self.Owner:IsFriendly(trace.Entity) then + return + end + + if not self.dt.Broken then + if SERVER then + self.dt.Broken = true + self.WorldModelOverride2 = self.ExplodedModel + self.Owner:GetViewModel():SetBodygroup(1,1) + + local pos = trace.HitPos + + -- KA BEWM + + --[[local flags = 0 + if self.Owner:WaterLevel()>0 then + flags = flags | 1 + end + + local effectdata = EffectData() + effectdata:SetOrigin(pos) + effectdata:SetAngles(angle_zero) + effectdata:SetAttachment(flags) + util.Effect("tf_explosion", effectdata, true, true) + + local range = self.ExplosionRadiusInit + if self.ExplosionRadiusMultiplier and self.ExplosionRadiusMultiplier>1 then + range = range * self.ExplosionRadiusMultiplier + end + + self.OwnerDamage = 0.85 + util.BlastDamage(self, self.Owner, pos, range, 200) + + sound.Play(self.ExplosionSound, pos)]] + + -- Use an invisible grenade instead + local grenade = ents.Create("tf_projectile_pipe") + grenade:SetPos(pos) + + if self:Critical() then + grenade.critical = true + end + + grenade:SetOwner(self.Owner) + grenade.BaseDamage = self.ExplosionBaseDamage + grenade.DamageRandomize = self.ExplosionDamageRandomize + grenade.ExplosionRadiusInit = self.ExplosionRadiusInit + grenade.CritDamageMultiplier = self.ExplosionCritDamageMultiplier + + self:InitProjectileAttributes(grenade) + + grenade.NameOverride = "ullapool_caber_explosion" + grenade.GrenadeMode = -1 -- invisible, instantly explodes + grenade:Spawn() + end + + self.Broken = true + end +end + +function SWEP:Deploy() + if SERVER and self.dt.Broken then + self.Owner:GetViewModel():SetBodygroup(1,1) + end + + return self:CallBaseFunction("Deploy") +end + +function SWEP:Holster() + self:OnRemove() + + return self:CallBaseFunction("Holster") +end + +function SWEP:OnRemove() + if SERVER and self.dt.Broken then + if IsValid(self.Owner) and self.Owner:GetActiveWeapon()==self then + self.Owner:GetViewModel():SetBodygroup(1,0) + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/cl_init.lua b/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/cl_init.lua new file mode 100644 index 000000000..c9bd87f91 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/cl_init.lua @@ -0,0 +1 @@ +include ("shared.lua") \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/init.lua b/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/init.lua new file mode 100644 index 000000000..91dff6e5e --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/init.lua @@ -0,0 +1,4 @@ +AddCSLuaFile ("cl_init.lua"); +AddCSLuaFile ("shared.lua"); + +include ("shared.lua"); \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/shared.lua new file mode 100644 index 000000000..0c4b873aa --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_superphyscannon/shared.lua @@ -0,0 +1,2306 @@ +-- taken from https://steamcommunity.com/sharedfiles/filedetails/?id=1641305846 + +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Super Gravity Gun" +SWEP.Slot = 3 +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + +SWEP.Base = "tf_weapon_gun_base" + +--SWEP.ViewModel = "models/weapons/errolliamp/c_superphyscannon.mdl" +SWEP.ViewModel = "models/weapons/v_superphyscannon.mdl" + +--SWEP.WorldModel = "models/weapons/errolliamp/w_superphyscannon.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_scattergun.mdl" + +SWEP.UseHands = true +SWEP.ViewModelFlip = false +SWEP.ViewModelFOV = 54 +SWEP.Weight = 42 +SWEP.AutoSwitchTo = true +SWEP.AutoSwitchFrom = true +SWEP.HoldType = "SECONDARY" + +SWEP.PuntForce = 1000000 +SWEP.HL2PuntForce = 280000 +SWEP.PullForce = 8000 +SWEP.HL2PullForce = 800 +SWEP.HL2PullForceRagdoll = 10000 +SWEP.MaxMass = 16500 +SWEP.HL2MaxMass = 5500 +SWEP.MaxPuntRange = 1650 +SWEP.HL2MaxPuntRange = 550 +SWEP.MaxPickupRange = 2550--; The cone detection is not as range-perfect as traces. It will cause the weapon to fail grabbing an object! +SWEP.HL2MaxPickupRange = 850 +SWEP.ConeWidth = 0.88 -- Higher numbers make it thinner, lower numbers widen it. +SWEP.MaxTargetHealth = 125 +SWEP.Distance = 45 + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "" + +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "" + +local HoldSound = Sound("Weapon_MegaPhysCannon.HoldSound") + +util.PrecacheModel("models/weapons/v_superphyscannon.mdl") +util.PrecacheModel("models/weapons/w_models/w_physcannon_dm.mdl") +util.PrecacheModel("models/props_junk/PopCan01a.mdl") + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) + self:SetSkin(1) + self.ClawOpenState = false + self.Fade = true + self.Fading = false + self.RagdollRemoved = false + self.CoreAllowRemove = true + self.GlowAllowRemove = true + self.MuzzleAllowRemove = true + self.PrimaryFired = false + self.HPCollideG = COLLISION_GROUP_NONE + --if SERVER then + --util.AddNetworkString( "PlayerKilledNPC" ) + --util.AddNetworkString( "PlayerKilledByPlayer" ) + --util.AddNetworkString( "gg_OpenClaws_Client" ) + --util.AddNetworkString( "gg_Holster_EnableGrav" ) + --end + --[[if CLIENT then + usermessage.Receive( "gg_OpenClaws_Client", function() + + end ) + end--]] + end + +function SWEP:OpenClaws( boolean ) +----print("Open Claws!") +if !IsValid(self.Owner) or !self.Owner:Alive() then return end + local ViewModel = self.Owner:GetViewModel() + local WorldModel = self + + timer.Remove("gg_claw_close_delay") + + --[[local prong_1 = WorldModel:LookupBone("ValveBiped.Prong1")-- -- This has been creating lua errors whenever the function is run, with me unable to locate the cause, it JUST ISN'T FUNNY ANYMORE. + local prong_2 = WorldModel:LookupBone("ValveBiped.Prong2") + local prong_3 = WorldModel:LookupBone("ValveBiped.Prong3") + + local prong_a = ViewModel:LookupBone("Prong_A") + local prong_b = ViewModel:LookupBone("Prong_B") + + local pro_a1_ang_r = -40 + local pro_b_ang_pr = 20 + local pro_23_ang_r = 60-- + --]] + if (ViewModel and ViewModel:GetPoseParameter("super_active") < 1) or (WorldModel and WorldModel:GetPoseParameter("super_active") < 1) then + -- ^ We replace the 'active' parameter with 'super_active' in the model's qc file or else it will not work if the normal gravity gun is in player's inventory. + --[[if (ViewModel and -- + ViewModel:GetManipulateBoneAngles(prong_a).roll > pro_a1_ang_r and + (ViewModel:GetManipulateBoneAngles(prong_b).pitch < pro_b_ang_pr and ViewModel:GetManipulateBoneAngles(prong_b).roll < pro_b_ang_pr) + ) or + (WorldModel and + WorldModel:GetManipulateBoneAngles(prong_1).roll > pro_a1_ang_r and + WorldModel:GetManipulateBoneAngles(prong_2).roll < pro_23_ang_r and + WorldModel:GetManipulateBoneAngles(prong_3).roll < pro_23_ang_r ) -- + then --]] + + local frame = ViewModel:GetPoseParameter("super_active") + local worldframe = WorldModel:GetPoseParameter("super_active") + --[[local frame_a = ViewModel:GetManipulateBoneAngles(prong_a)-- + local frame_b = ViewModel:GetManipulateBoneAngles(prong_b) + local frame_1 = WorldModel:GetManipulateBoneAngles(prong_1) + local frame_2 = WorldModel:GetManipulateBoneAngles(prong_2) + local frame_3 = WorldModel:GetManipulateBoneAngles(prong_3)-- + --]] + timer.Remove("gg_claw_close_delay") + if !timer.Exists("gg_move_claws_open") and !timer.Exists("gg_move_claws_close") then + timer.Remove("gg_move_claws_close") + + timer.Create( "gg_move_claws_open", 0, 20, function() + if !IsValid(self) or !IsValid(self.Owner) or !self.Owner:Alive() then timer.Remove("gg_move_claws_open") return end + if IsValid(ViewModel) then + if frame > 1 then ViewModel:SetPoseParameter("super_active", 1) end + --if frame >= 1 then timer.Remove("gg_move_claws_open") return end + frame = frame+0.1 + ViewModel:SetPoseParameter("super_active", frame) + + --[[if frame_a.roll < pro_a1_ang_r then ViewModel:ManipulateBoneAngles(prong_a, Angle(frame_a.pitch, frame_a.yaw, pro_a1_ang_r)) end-- + if frame_b.pitch > pro_b_ang_pr then ViewModel:ManipulateBoneAngles(prong_b, Angle(frame_b.pitch, frame_b.yaw, pro_b_ang_pr)) end + if frame_b.roll > pro_b_ang_pr then ViewModel:ManipulateBoneAngles(prong_b, Angle(pro_b_ang_pr, frame_b.yaw, frame_b.roll)) end + if frame_a.roll <= pro_a1_ang_r and + frame_b.pitch >= pro_b_ang_pr and frame_b.roll >= pro_b_ang_pr + then + timer.Remove("gg_move_claws_open") return end + frame_a.roll = frame_a.roll+0.1 + frame_b.pitch = frame_b.pitch+0.1 + frame_b.roll = frame_b.roll+0.1 + ViewModel:ManipulateBoneAngles(prong_a, frame_a) + ViewModel:ManipulateBoneAngles(prong_b, frame_b)--]] + end + --net.Start("gg_OpenClaws_Client") + --net.Send(self.Owner) + if IsValid(WorldModel) then + if worldframe > 1 then WorldModel:SetPoseParameter("super_active", 1) end + --if worldframe >= 1 then timer.Remove("gg_move_claws_open") return end + worldframe = worldframe+0.1 + WorldModel:SetPoseParameter("super_active", worldframe) + if WorldModel:GetPoseParameter("super_active") >= 0.5 then + self.ClawOpenState = true + end + --[[if frame_1.roll < pro_a1_ang_r then WorldModel:ManipulateBoneAngles(prong_1, Angle(frame_1.pitch, frame_1.yaw, pro_a1_ang_r)) end-- + if frame_2.roll > pro_23_ang_r then WorldModel:ManipulateBoneAngles(prong_2, Angle(frame_2.pitch, frame_2.yaw, pro_23_ang_r)) end + if frame_3.roll > pro_23_ang_r then WorldModel:ManipulateBoneAngles(prong_3, Angle(frame_3.pitch, frame_3.yaw, pro_23_ang_r)) end + frame_1.roll = frame_1.roll+0.1 + frame_2.roll = frame_2.roll+0.1 + frame_3.roll = frame_3.roll+0.1 + WorldModel:ManipulateBoneAngles(prong_1, frame_1) + WorldModel:ManipulateBoneAngles(prong_2, frame_2) + WorldModel:ManipulateBoneAngles(prong_3, frame_3)-- + --]] + end + end ) + if (!IsValid(self.Owner) or !self.Owner:Alive()) or (!IsValid(ViewModel) and !IsValid(WorldModel)) then timer.Remove("gg_move_claws_open") return end + if (frame <= 0 or worldframe <= 0) and (!self.TP or !IsValid(self.TP)) and boolean == true then + --[[if ( (frame_a.roll <= pro_a1_ang_r and frame_b.pitch >= pro_b_ang_pr and frame_b.roll >= pro_b_ang_pr) or -- + (frame_1.roll <= pro_a1_ang_r and frame_2.roll >= pro_23_ang_r and frame_3.roll >= pro_23_ang_r ) ) + then --]] + + if (!self.TP or !IsValid(self.TP)) and boolean == true then + self.Weapon:StopSound("Weapon_PhysCannon.CloseClaws") + self.Weapon:EmitSound("Weapon_PhysCannon.OpenClaws") + end + end--+ + end-- +end + +end + +function SWEP:CloseClaws( boolean ) +----print("Close Claws!") +if !IsValid(self.Owner) or !self.Owner:Alive() then return end + local ViewModel = self.Owner:GetViewModel() + local WorldModel = self + --if ViewModel and self.ClawOpenState == true then + if (ViewModel and ViewModel:GetPoseParameter("super_active") > 0) or (WorldModel and WorldModel:GetPoseParameter("super_active") > 0) then + local frame = ViewModel:GetPoseParameter("super_active") + local worldframe = WorldModel:GetPoseParameter("super_active") + if !timer.Exists("gg_move_claws_close") and !timer.Exists("gg_move_claws_open") then + timer.Remove("gg_move_claws_open") + + timer.Create( "gg_move_claws_close", 0.02, 20, function() + if !IsValid(self.Owner) or !self.Owner:Alive() then timer.Remove("gg_move_claws_close") return end + if IsValid(ViewModel) then + if frame < 0 then ViewModel:SetPoseParameter("super_active", 0) end + --if frame <= 0 then --print("doh2") timer.Remove("gg_move_claws_close") return end + frame = frame-0.05 + ViewModel:SetPoseParameter("super_active", frame) + end + if IsValid(WorldModel) then + if worldframe < 0 then WorldModel:SetPoseParameter("super_active", 0) end + --if worldframe <= 0 then --print("doh3") timer.Remove("gg_move_claws_close") return end + worldframe = worldframe-0.05 + WorldModel:SetPoseParameter("super_active", worldframe) + end + if WorldModel:GetPoseParameter("super_active") < 0.5 then + self.ClawOpenState = false + end + end ) + if (!IsValid(self.Owner) or !self.Owner:Alive()) or (!IsValid(ViewModel) and !IsValid(WorldModel)) then timer.Remove("gg_move_claws_close") return end + if (frame >= 1 or worldframe >= 1) and (!self.TP or !IsValid(self.TP)) and boolean == true then + self.Weapon:StopSound("Weapon_PhysCannon.OpenClaws") + self.Weapon:EmitSound("Weapon_PhysCannon.CloseClaws") + end + end + end +end + +function SWEP:TimerDestroyAll() + timer.Remove("deploy_idle") + timer.Remove("attack_idle") + timer.Remove("gg_move_claws_open") + timer.Remove("gg_move_claws_close") + timer.Remove("gg_claw_close_delay") + timer.Remove("gg_primaryfired_timer") +end + +function SWEP:OwnerChanged() + self:SetSkin(1) + self:TPrem() + if self.HP and IsValid(self.HP) then + self.HP = nil + end + end + +function SWEP:PuntCheck(tgt) + local DistancePunt_Test = 0 + if tgt and IsValid(tgt) then + DistancePunt_Test = (tgt:GetPos()-self.Owner:GetPos()):Length() + else + DistancePunt_Test = self.MaxPickupRange+10 + end + if tgt and IsValid(tgt) and self.Fading != true and + ( ( (self:AllowedClass(tgt) and tgt:GetMoveType() == MOVETYPE_VPHYSICS ) and + GetConVar("gg_style"):GetInt() <= 0 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.HL2MaxMass) + or GetConVar("gg_style"):GetInt() >= 1 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.MaxMass) ) + or ( ( tgt:IsNPC() and (GetConVar("gg_friendly_fire"):GetInt() >= 1 or !self:FriendlyNPC( tgt ) ) ) or tgt:IsPlayer() or tgt:IsRagdoll() ) + and !self:NotAllowedClass(tgt) ) + and + ( (GetConVar("gg_style"):GetInt() <= 0 and DistancePunt_Test < self.HL2MaxPuntRange) + or (GetConVar("gg_style"):GetInt() >= 1 and DistancePunt_Test < self.MaxPuntRange) ) + --and !self.Owner:KeyDown(IN_ATTACK) + then + return true + end + return false +end + +function SWEP:Think() +if GetConVar("gg_style"):GetInt() <= 0 then + self.SwayScale = 3 + self.BobScale = 1 + else + self.SwayScale = 1 + self.BobScale = 1 +end + if CLIENT then + if GetConVar("gg_light"):GetInt() <= 0 then return end + if !self.Weapon:GetNWBool("Glow") then + if !self.Owner:LookupBone("ValveBiped.Bip01_R_Hand") then return end + local dlight = DynamicLight("lantern_"..self:EntIndex()) + if dlight then + dlight.Pos = self.Owner:GetBonePosition(self.Owner:LookupBone("ValveBiped.Bip01_R_Hand")) + dlight.r = 200 + dlight.g = 255 + dlight.b = 255 + dlight.Brightness = 0.1 + dlight.Size = 70 + dlight.DieTime = CurTime() + .0001 + --dlight.Style = 0 + end + else + if !self.Owner:LookupBone("ValveBiped.Bip01_R_Hand") then return end + local dlight = DynamicLight("lantern_"..self:EntIndex()) + if dlight then + dlight.Pos = self.Owner:GetBonePosition(self.Owner:LookupBone("ValveBiped.Bip01_R_Hand")) + dlight.r = 255 + dlight.g = 255 + dlight.b = 255 + dlight.Brightness = 0.3 + dlight.Size = 100 + dlight.DieTime = CurTime() + .0001 + --dlight.Style = 0 + end + end + end + if GetConVar("gg_enabled"):GetInt() <= 0 and self.Fade == true then + self.Fade = false + self.Fading = true + self.Weapon:EmitSound("Weapon_Physgun.Off", 75, 100, 0.6) + self:CloseClaws( false ) + --[[self.FadeCore = ents.Create("PhyscannonFade") + timer.Create("gg_FadeCore_Position", 0.10, 0, function() + if !IsValid(self.FadeCore) then + timer.Remove("gg_FadeCore_Position") + return + end + self.FadeCore:SetPos( self.Owner:GetShootPos() ) + end ) + self.FadeCore:Spawn() + self.FadeCore:SetParent(self.Owner) + self.FadeCore:SetOwner(self.Owner)--]] + + --[[timer.Simple( 0.40, function() + if !IsValid(self) and !IsValid(self.Weapon) then return end + self.Weapon:SendWeaponAnim(ACT_VM_HOLSTER) + end )--]] + timer.Simple( 0.90, function() + if !IsValid(self) then return end + --[[if IsValid(self.FadeCore) then + self.FadeCore:Remove() + end--]] + if !self.Owner:HasWeapon( "weapon_physcannon" ) then + self.Owner:Give("weapon_physcannon") + end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self then + self.Owner:SelectWeapon("weapon_physcannon") + end + self:Remove() + end ) + end + + if (SERVER) then + if !IsValid(self.Muzzle) and self.MuzzleAllowRemove == false then + self.Muzzle = ents.Create("PhyscannonMuzzle") + self.Muzzle:SetPos( self.Owner:GetShootPos() ) + self.Muzzle:Spawn() + self.Muzzle:SetParent(self.Owner) + self.Muzzle:SetOwner(self.Owner) + end + if IsValid(self.Muzzle) and self.MuzzleAllowRemove == true then + self.Muzzle:Remove() + self.Muzzle = nil + end + local PickupRange = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + PickupRange = self.HL2MaxPickupRange + elseif GetConVar("gg_style"):GetInt() >= 1 then + PickupRange = self.MaxPickupRange + end + --if GetConVar("gg_cone"):GetInt() <= 0 then + for _,ent in pairs(ents.FindInSphere( self.Owner:GetShootPos(), PickupRange )) do + if ( self:AllowedClass(ent) and !self:NotAllowedClass(ent) and ent:GetMoveType() == MOVETYPE_VPHYSICS) and ent:GetCollisionGroup() == COLLISION_GROUP_DEBRIS then -- For some reason, ragdolls that are debris cannot be targeted by the weapon, so this converts them to a targetable version. + ent:SetCollisionGroup(COLLISION_GROUP_DEBRIS_TRIGGER) + end + end + --end + end + if IsValid(self.Core) then + self.Core:SetPos( self.Owner:GetShootPos() ) + end + if !IsValid(self.Core) and self.CoreAllowRemove == false then + -- Required to directly include the code, not as a function or else it becomes a lua-error minigun. + self.Core = ents.Create("PhyscannonCore") + self.Core:SetPos( self.Owner:GetShootPos() ) + self.Core:Spawn() + self.Core:SetParent(self.Owner) + self.Core:SetOwner(self.Owner) + end + if IsValid(self.Glow) then + self.Glow:SetPos( self.Owner:GetShootPos() ) + end + if !IsValid(self.Glow) and self.GlowAllowRemove == false then + -- Required to directly include the code, not as a function or else it becomes a lua-error minigun. + self.Glow = ents.Create("PhyscannonGlow") + self.Weapon:SetNetworkedBool("Glow", true) + self.Glow:SetPos( self.Owner:GetShootPos() ) + self.Glow:Spawn() + self.Glow:SetParent(self.Owner) + self.Glow:SetOwner(self.Owner) + end + + local trace = self.Owner:GetEyeTrace() + local tracetgt = trace.Entity + local tgt = NULL + + if GetConVar("gg_cone"):GetInt() >= 1 and (!tracetgt or !tracetgt:IsValid() or tracetgt == NULL) then--(!tgt or !tgt:IsValid() or tgt == NULL) and GetConVar("gg_cone"):GetInt() >= 1 then + local function GetConeEntForClaw() -- There are actually two local functions (the other being GetConeEntForClaw), as the SWEP function would glitch out. Again, sorry for making this swep a mess :( + local PickupRange = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + PickupRange = self.HL2MaxPickupRange + elseif GetConVar("gg_style"):GetInt() >= 1 then + PickupRange = self.MaxPickupRange + end + local tracerange = (trace.HitPos-trace.StartPos):Length() + if tracerange < PickupRange then + PickupRange = tracerange + end + local cone = ents.FindInCone( self.Owner:EyePos(), self.Owner:GetAimVector(), PickupRange, self.ConeWidth ) + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ent:GetClass() == "prop_combine_ball" then + tgt = ent + return + end + end + end + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ( (ent:IsNPC() and ent:Health() > 0) or (ent:IsPlayer() and ent:Alive()) ) then + tgt = ent + return + end + end + end + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ( self:AllowedClass(ent) and !self:NotAllowedClass(ent) ) then + tgt = ent + return + end + end + end + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ( ent:IsRagdoll() or ent:GetMoveType() == MOVETYPE_VPHYSICS ) then + tgt = ent + return + end + end + end + if tgt and IsValid(tgt) and tgt:IsValid() then + local tr_hull = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + ( self.Owner:GetAimVector() ), + mask = MASK_SHOT, + collisiongroup = COLLISION_GROUP_WORLD + } ) + if ( tr_hull.StartSolid or tr_hull.AllSolid ) then--tr_hull.fraction > 1.0 or tr_hull.StartSolid or tr_hull.AllSolid ) then + tgt = nil + end + end + end + GetConeEntForClaw() + else--if GetConVar("gg_cone"):GetInt() <= 0 then + tgt = tracetgt + end + + if ( !self.TP or !IsValid(self.TP) ) and !self.Owner:KeyDown(IN_ATTACK2) then + + if self:PuntCheck(tracetgt)==true then + self.Weapon:SetNextPrimaryFire( CurTime() ) + end + + end + + if SERVER then + + local Distance_Test = 0 + local clawcvar = GetConVar("gg_claw_mode"):GetInt() + if clawcvar >= 2 then + + if IsValid(tgt) then + Distance_Test = (tgt:GetPos()-self.Owner:GetPos()):Length() + else + Distance_Test = self.MaxPickupRange+10 + end + if IsValid(tgt) and self.Fading != true and + ( ( (self:AllowedClass(tgt) and tgt:GetMoveType() == MOVETYPE_VPHYSICS ) and + GetConVar("gg_style"):GetInt() <= 0 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.HL2MaxMass) + or GetConVar("gg_style"):GetInt() >= 1 and IsValid(tgt:GetPhysicsObject()) and tgt:GetPhysicsObject():GetMass() < (self.MaxMass) ) + or ( (tgt:IsNPC() and (GetConVar("gg_friendly_fire"):GetInt() >= 1 or !self:FriendlyNPC( tgt ) ) and tgt:Health() <= self.MaxTargetHealth) or tgt:IsPlayer() or tgt:IsRagdoll() ) + and !self:NotAllowedClass(tgt) ) + and + ( (GetConVar("gg_style"):GetInt() <= 0 and Distance_Test < self.HL2MaxPickupRange) + or (GetConVar("gg_style"):GetInt() >= 1 and Distance_Test < self.MaxPickupRange) ) + then + self:OpenClaws( true ) + elseif self.TP and IsValid(self.TP) and self.Fading != true then + timer.Remove("gg_move_claws_close") + self:OpenClaws( false ) + else + if !timer.Exists("gg_claw_close_delay") and IsValid(self) then + timer.Create( "gg_claw_close_delay", 0.6, 1, function() + if IsValid(self) and IsValid(self.Owner) and self.Owner:Alive() and IsValid(self.Owner:GetViewModel()) then + self:CloseClaws( true ) + end + end ) + end + end + + end + + end + + if math.random( 6, 98 ) == 16 and (!self.TP or !IsValid(self.TP)) and !self.Owner:KeyDown(IN_ATTACK2) and !self.Owner:KeyDown(IN_ATTACK) + --and !IsValid(self.Zap1) and !IsValid(self.Zap2) and !IsValid(self.Zap3) + then + if self.Fading == true then return end + self:ZapEffect() + end + + if self.Owner:KeyPressed(IN_ATTACK2) then + if self.Fading == true then return end + self:GlowEffect() + self:RemoveCore() + if IsValid(self.Zap1) then + self.Zap1:Remove() + self.Zap1 = nil + end + if IsValid(self.Zap2) then + self.Zap2:Remove() + self.Zap2 = nil + end + if IsValid(self.Zap3) then + self.Zap3:Remove() + self.Zap3 = nil + end + elseif self.Owner:KeyReleased(IN_ATTACK2) and (!self.TP or !IsValid(self.TP)) then + if self.Fading == true then return end + self:RemoveGlow() + self:RemoveCore() + self:CoreEffect() + end + + if !self.Owner:KeyDown(IN_ATTACK) then + if GetConVar("gg_style"):GetInt() >= 1 then + self.Weapon:SetNextPrimaryFire( CurTime() - 0.55 ) + end + end + + if self.Owner:KeyPressed(IN_ATTACK2) then + if self.Fading == true then return end + --if self.HP then return end This fixes the secondary dryfire not playing + + if !tgt or !tgt:IsValid() then + --self.Weapon:EmitSound("Weapon_PhysCannon.TooHeavy", 75, 100, 1) + self.Owner:EmitSoundEx("Weapon_PhysCannon.TooHeavy") + return + end + + if (SERVER) then + if tgt:GetMoveType() == MOVETYPE_VPHYSICS then + local getstyle = GetConVar("gg_style"):GetInt() + local Mass = tgt:GetPhysicsObject():GetMass() + if ( getstyle == 0 and Mass >= (self.HL2MaxMass+1) ) or ( getstyle != 0 and Mass >= (self.MaxMass+1) ) then + --if GetConVar("gg_style"):GetInt() <= 0 then + self.Owner:EmitSoundEx("Weapon_PhysCannon.TooHeavy") + return + --end + end + else + self.Owner:EmitSoundEx("Weapon_PhysCannon.TooHeavy") + return + end + end + end + + if self.TP then + if self.HP and IsValid(self.HP) then + if (SERVER) then + if !IsValid(self.TP) then self.TP = nil if self.HP and IsValid(self.HP) then self:Drop() end return end + if !IsValid(self.HP) then self.HP = nil self:Drop() return end + HPrad = self.HP:BoundingRadius()--/1.5 + if !IsValid(self.Owner) then return end + if !IsValid(self.TP) then return end + local grabpos = self.Owner:GetShootPos()+self.Owner:GetAimVector()*(self.Distance+HPrad) + --local grabspeedpos = self.HP:GetPos()+( grabpos/5 ) + --[[local grabspeedpos = self.HP:GetPos():Cross( grabpos ) + local function FindTP( entity ) + local grabpos_sphere = ents.FindInSphere( grabpos, 5 ) + for _,ent in pairs(grabpos_sphere) do + if ent == entity then return true end + end + return false + end + if GetConVar("gg_style"):GetInt() <= 0 and FindTP( self.TP ) == false then + self.TP:SetPos(grabspeedpos) + else--]] + self.TP:SetPos(grabpos) + --end + + self.TP:PointAtEntity(self.Owner) + --if self.HP:GetPhysicsObject() == nil then return end + --if IsValid(phys) then + if self.HP and IsValid(self.HP) and IsValid(self.HP:GetPhysicsObject()) then + self.HP:GetPhysicsObject():Wake() + end + end --end + else + self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + + self.Secondary.Automatic = true + self.Weapon:SetNextSecondaryFire( CurTime() + 0.5 ); + self.Weapon:EmitSound("Weapon_MegaPhysCannon.Drop") + + timer.Simple( 0.4, + function() + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self.Weapon:SendWeaponAnim(ACT_VM_IDLE) + end + end ) + + self:CoreEffect() + self:RemoveGlow() + + if self.TP and IsValid(self.TP) then + self.TP:Remove() + self.TP = nil + end + if self.TP and IsValid(self.TP) then + self.HP = nil + end + + self.Weapon:StopSound(HoldSound) + end + + if CurTime() >= PropLockTime then + if (!self.HP or !IsValid(self.HP)) then self.HP = nil return end + if (self.HP:GetPos()-(self.Owner:GetShootPos()+self.Owner:GetAimVector()*(self.Distance+HPrad))):Length() >= 80 then + self.Weapon:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self:Drop() + end + end + if (!self.TP or !IsValid(self.TP)) then return end + for _, child in pairs(self.TP:GetChildren()) do + if child:GetClass() == "env_entity_dissolver" then + child:Remove() + end + end + end + end + +function SWEP:ZapEffect() + if self.Fading == true then return end + if SERVER then + if GetConVar("gg_no_effects"):GetInt() >= 1 then return end + --if GetConVar("gg_style"):GetInt() <= 1 then return end + if IsValid(self.Zap1) and IsValid(self.Zap2) and IsValid(self.Zap3) then return end + local zap_math = table.Random( { 1, 2, 3 } ) + if zap_math == 1 and !IsValid(self.Zap1) then + self.Zap = ents.Create("PhyscannonZap1") + self.Zap1 = self.Zap + elseif zap_math == 2 and !IsValid(self.Zap2) then + self.Zap = ents.Create("PhyscannonZap2") + self.Zap2 = self.Zap + elseif zap_math == 3 and !IsValid(self.Zap3) then + self.Zap = ents.Create("PhyscannonZap3") + self.Zap3 = self.Zap + end + if IsValid(self.Zap) then + self.Zap:SetPos( self.Owner:GetShootPos() ) + self.Zap:Spawn() + self.Zap:SetParent(self.Owner) + self.Zap:SetOwner(self.Owner) + end + end + end + +function SWEP:NotAllowedClass(ent) + local class = ent:GetClass() + if class == "npc_strider" + or class == "npc_helicopter" + or class == "npc_combinedropship" + or class == "npc_antliongrub" + or class == "npc_turret_ceiling" + or class == "npc_sniper" + or class == "npc_combine_camera" + or class == "npc_combinegunship" + or class == "npc_bullseye" then + return true + else + return false + end + end + +function SWEP:AllowedClass(ent) + --local trace = self.Owner:GetEyeTrace() + local class = ent:GetClass() + for _,child in pairs(ent:GetChildren()) do + if child:GetClass() == "env_entity_dissolver" then + return false + end + end -- Not yet fully tested + if class == "npc_manhack" + or class == "npc_turret_floor" + or class == "npc_sscanner" + or class == "npc_cscanner" + or class == "npc_clawscanner" + or class == "npc_rollermine" + or class == "npc_grenade_frag" + or class == "item_ammo_357" + or class == "item_ammo_ar2_altfire" + or class == "item_ammo_crossbow" + or class == "item_ammo_pistol" + or class == "item_ammo_smg1" + or class == "item_ammo_smg1_grenade" + or class == "item_battery" + or class == "item_box_buckshot" + or class == "item_healthvial" + or class == "item_healthkit" + or class == "item_rpg_round" + or class == "item_ammo_ar2" + or class == "item_item_crate" + or ent:IsWeapon() and !IsValid(ent:GetOwner()) + or class == "megaphyscannon" + or class == "weapon_striderbuster" + or class == "combine_mine" + or class == "gmod_camera" + or class == "gmod_cameraprop" + or class == "helicopter_chunk" + or class == "func_physbox" + or class == "grenade_helicopter" + or class == "prop_combine_ball" + or class == "gmod_wheel" + or class == "prop_vehicle_prisoner_pod" + or class == "prop_physics_respawnable" + or class == "prop_physics_multiplayer" + or class == "prop_physics_override" + or class == "prop_physics" + or class == "prop_dynamic" + or class == "func_brush" then + return true + elseif !ent:IsNPC() and !ent:IsPlayer() and !ent:IsRagdoll() and GetConVar("gg_allow_others"):GetInt() >= 1 and !self:NotAllowedClass(ent) then + return true + else + return false + end + end + +function SWEP:FriendlyNPC( npc ) + if SERVER then + if !IsValid(npc) then return false end + if !npc:IsNPC() then return false end + + if npc:Disposition( self.Owner ) == (D_LI or D_NU or D_ER) then + return true + else + return false + end +end +end + +function SWEP:AllowedCenterPhysicsClass() + local trace = self.Owner:GetEyeTrace() + local class = trace.Entity:GetClass() + if !IsValid(trace.Entity) then return false end + if class == "gmod_wheel" + or class == "prop_vehicle_prisoner_pod" + or class == "prop_physics_respawnable" + or class == "prop_physics_multiplayer" + or class == "prop_physics" + or class == "prop_physics_override" + or class == "prop_dynamic" + or class == "gmod_cameraprop" + or class == "helicopter_chunk" + or class == "func_physbox" + or class == "grenade_helicopter" + or class == "func_brush" + or class == "npc_manhack" + or class == "npc_turret_floor" + or class == "npc_sscanner" + or class == "npc_cscanner" + or class == "npc_clawscanner" + or class == "npc_rollermine" + or class == "npc_grenade_frag" + or class == "item_ammo_357" + or class == "item_ammo_ar2_altfire" + or class == "item_ammo_crossbow" + or class == "item_ammo_pistol" + or class == "item_ammo_smg1" + or class == "item_ammo_smg1_grenade" + or class == "item_battery" + or class == "item_box_buckshot" + or class == "item_healthvial" + or class == "item_healthkit" + or class == "item_rpg_round" + or class == "item_ammo_ar2" + or class == "item_item_crate" + or trace.Entity:IsWeapon() + or class == "weapon_striderbuster" + or class == "combine_mine" + or class == "megaphyscannon" then + return true + else + return false + end +end + +function SWEP:PrimaryAttack() + if self.Fading == true or self.PrimaryFired == true then return end + self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + local primaryfire_delay = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ) + primaryfire_delay = 0.5 + elseif GetConVar("gg_style"):GetInt() >= 1 then + self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ) + primaryfire_delay = 0.55 + end + if self:PuntCheck(self.Owner:GetEyeTrace().Entity)==true then + self.PrimaryFired = true + timer.Create( "gg_primaryfired_timer", primaryfire_delay, 1, function() + if IsValid(self.Owner) and IsValid(self.Weapon) and self.Owner:Alive() and self.Owner:GetActiveWeapon() == self then + self.PrimaryFired = false + end + end) + end + self.Weapon:SetNextSecondaryFire( CurTime() + 0.3 ) + + local vm = self.Owner:GetViewModel() + timer.Create( "attack_idle" .. self:EntIndex(), 0.4, 1, function() + if !IsValid( self.Weapon ) then return end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self.Weapon:SendWeaponAnim( ACT_VM_IDLE ) + end + end) + + if self.TP and IsValid(self.TP) then + self:DropAndShoot() + return + end + + local function FadeScreen() + self.Owner:ScreenFade( SCREENFADE.IN, Color( 255, 255, 255, 40 ), 0.1, 0 ) + end + + local trace = self.Owner:GetEyeTrace() + local tgt = trace.Entity + + local getstyle = GetConVar("gg_style"):GetInt() + if !tgt or !tgt:IsValid() or + ( getstyle == 0 and (self.Owner:GetShootPos()-tgt:GetPos()):Length() > self.HL2MaxPuntRange ) + or + ( getstyle != 0 and (self.Owner:GetShootPos()-tgt:GetPos()):Length() > self.MaxPuntRange ) + or self:NotAllowedClass(tgt) + or ( tgt:IsNPC() and GetConVar("gg_friendly_fire"):GetInt()<=0 and self:FriendlyNPC(tgt) ) then + self.Weapon:EmitSound("Weapon_MegaPhysCannon.DryFire") + return + end + + if tgt:GetClass()=="prop_physics" then + tgt:GetPhysicsObject():EnableMotion(true) + end + if !tgt:IsFriendly(self.Owner) and tgt:IsNPC() or tgt:IsPlayer() then + local ragdoll = nil + if (SERVER) then + if tgt:IsPlayer() and tgt:HasGodMode() == true then return end + if tgt:IsPlayer() and tgt:IsFriendly(self.Owner) then return end + --if (tgt:IsPlayer() and server_settings.Int( "sbox_plpldamage" ) == 1) then + --self.Weapon:EmitSound("Weapon_MegaPhysCannon.DryFire") + --return + --end + if ( GetConVar("gg_style"):GetInt() <= 0 and ( tgt:IsNPC() and tgt:Health() > self.MaxTargetHealth or tgt:IsPlayer() and tgt:Health()+tgt:Armor() > self.MaxTargetHealth ) ) or ( !util.IsValidRagdoll(tgt:GetModel()) ) then + local dmginfo = DamageInfo() + dmginfo:SetDamage( self.MaxTargetHealth ) + dmginfo:SetDamageForce( self.Owner:GetShootPos() ) + dmginfo:SetDamagePosition( trace.HitPos ) + dmginfo:SetDamageType( DMG_SHOCK ) + dmginfo:SetAttacker( self.Owner ) + dmginfo:SetInflictor( self.Weapon ) + dmginfo:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo( dmginfo ) + else + + if tgt:IsPlayer() then + --[[net.Start( "PlayerKilledByPlayer" ) + usermessage.WriteEntity( tgt ) + usermessage.WriteString( "weapon_superphyscannon" ) + usermessage.WriteEntity( self.Owner ) + usermessage.Broadcast()--]] + elseif tgt:IsNPC() then + if tgt:GetShouldServerRagdoll() != true then + tgt:SetShouldServerRagdoll( true ) + end + if tgt:Health() >= 1 then + --tgt:Fire( "AddOutput", "health 0", 0 ) + tgt:SetHealth( 0 ) + end + if tgt:GetClass() != "npc_antlion_worker" then + local dmg = DamageInfo() + dmg:SetDamage( tgt:Health() ) + dmg:SetDamageForce( self.Owner:GetShootPos() ) + dmg:SetDamagePosition( trace.HitPos ) + dmg:SetDamageType( DMG_SHOCK ) + dmg:SetAttacker( self.Owner ) + dmg:SetInflictor( self.Weapon ) + dmg:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo( dmg ) + end + + for _,rag in pairs( ents.FindInSphere( tgt:GetPos(), tgt:GetModelRadius() ) ) do + if rag:IsRagdoll() and rag:GetModel() == tgt:GetModel() and rag:GetCreationTime() == CurTime() and self.RagdollRemoved != true then + self.RagdollRemoved = true + --rag:Remove() + ragdoll = rag + end + end + + self.RagdollRemoved = false + end + + if !IsValid(ragdoll) then + local newragdoll = ents.Create( "prop_ragdoll" ) + newragdoll:SetPos( tgt:GetPos()) + newragdoll:SetAngles(tgt:GetAngles()-Angle(tgt:GetAngles().p,0,0)) + newragdoll:SetModel( tgt:GetModel() ) + newragdoll:SetSkin( tgt:GetSkin() ) + newragdoll:SetColor( tgt:GetColor() ) + newragdoll:SetName( pickedupragdoll ) + for k,v in pairs(tgt:GetBodyGroups()) do + newragdoll:SetBodygroup(v.id,tgt:GetBodygroup(v.id)) + end + newragdoll:SetMaterial( tgt:GetMaterial() ) + newragdoll:SetKeyValue("spawnflags",8192) + newragdoll:Spawn() + ragdoll = newragdoll + self.ggNewRagdollFormed = true + end + + -- Just in case the NPC is scripted like VJ Base + if tgt:GetActiveWeapon():IsValid() then + local wep = tgt:GetActiveWeapon() + --local model = wep:GetModel() + local wepclass = wep:GetClass() + + if tgt:IsNPC() then + if GetConVar("gg_weapon_vaporize"):GetInt() <= 0 then + local weaponmodel = ents.Create( wepclass ) + weaponmodel:SetPos( tgt:GetShootPos() ) + weaponmodel:SetAngles(wep:GetAngles()-Angle(wep:GetAngles().p,0,0)) + weaponmodel:SetSkin( wep:GetSkin() ) + weaponmodel:SetColor( wep:GetColor() ) + weaponmodel:SetKeyValue("spawnflags","2") + weaponmodel:Spawn() + weaponmodel:Fire("Addoutput","spawnflags 0",1) + elseif GetConVar("gg_weapon_vaporize"):GetInt() >= 1 then + local weaponmodel = ents.Create( "prop_physics_override" ) + weaponmodel:SetPos( tgt:GetShootPos() ) + weaponmodel:SetAngles(wep:GetAngles()-Angle(wep:GetAngles().p,0,0)) + weaponmodel:SetModel( wep:GetModel() ) + weaponmodel:SetSkin( wep:GetSkin() ) + weaponmodel:SetColor( wep:GetColor() ) + weaponmodel:SetCollisionGroup( COLLISION_GROUP_WEAPON ) + weaponmodel:Spawn() + + + local dissolver = ents.Create( "env_entity_dissolver" ) + dissolver:SetPos( weaponmodel:LocalToWorld(weaponmodel:OBBCenter()) ) + dissolver:SetKeyValue( "dissolvetype", 0 ) + dissolver:Spawn() + dissolver:Activate() + local name = "Dissolving_"..math.random() + weaponmodel:SetName( name ) + dissolver:Fire( "Dissolve", name, 0 ) + dissolver:Fire( "Kill", name, 0.10 ) + end + + end + end + + if GetConVar("gg_zap"):GetInt() >= 1 then + --[[local effect = EffectData() + if !IsValid(ragdoll) then return end + effect:SetOrigin(ragdoll:GetPos()) + effect:SetStart(ragdoll:GetPos()) + effect:SetMagnitude(5) + effect:SetEntity(ragdoll) + util.Effect("teslaHitBoxes",effect) + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + ragdoll:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end--]] + --[[timer.Create( "zapper", 0.3, 16, function() + local effect2 = EffectData() + if !IsValid(ragdoll) then return end + effect2:SetOrigin(ragdoll:GetPos()) + effect2:SetStart(ragdoll:GetPos()) + effect2:SetMagnitude(5) + effect2:SetEntity(ragdoll) + util.Effect("teslaHitBoxes",effect2) + if !IsValid(ragdoll) then return end + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + ragdoll:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end + end) --]] + ragdoll:gg_RagdollZapper() + --ragdoll:SetNWInt("gg_zapper_timer", 16) + end + ragdoll:gg_RagdollCollideTimer() + + --tgt:DropWeapon( tgt:GetActiveWeapon() ) + --if tgt:HasWeapon() + ragdoll:SetMaterial( tgt:GetMaterial() ) + + --if server_settings.Int( "ai_keepragdolls" ) == 0 then + --ragdoll.Entity:Fire("FadeAndRemove","",0.3) + --else + ragdoll:Fire("FadeAndRemove","",120) + --end + + if self.ggNewRagdollFormed == true then + cleanup.Add (self.Owner, "props", ragdoll); + undo.Create ("Ragdoll"); + undo.AddEntity (ragdoll); + undo.SetPlayer (self.Owner); + undo.Finish(); + + --[[if !tgt:IsPlayer() and tgt:Health() <= 0 and tgt:IsValid() then + net.Start( "PlayerKilledNPC" ) + usermessage.WriteString( tgt:GetClass() ) + usermessage.WriteString( self.Weapon:GetClass() ) + usermessage.WriteEntity( self.Owner ) + usermessage.Broadcast() + end--]] + end + + if tgt:IsPlayer() then + --tgt:KillSilent() + --ragdoll:SetPlayerColor( tgt:GetPlayerColor() ) + --tgt:AddDeaths(1) + local dmg = DamageInfo() + dmg:SetDamage( tgt:Health() ) + dmg:SetDamageForce( self.Owner:GetShootPos() ) + dmg:SetDamagePosition( trace.HitPos ) + dmg:SetDamageType( DMG_SHOCK ) + dmg:SetAttacker( self.Owner ) + dmg:SetInflictor( self.Weapon ) + dmg:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo( dmg ) + if tgt:GetRagdollEntity():IsValid() then + tgt:GetRagdollEntity():Remove() + end + tgt:SpectateEntity(ragdoll) + tgt:Spectate(OBS_MODE_CHASE) + + elseif tgt:IsNPC() then + --if tgt:Health() >= 1 then + tgt:Fire("Kill","",0) + --net.Start( "PlayerKilledNPC" ) + --usermessage.WriteString( tgt:GetClass() ) + --usermessage.WriteString( "weapon_superphyscannon" ) + --usermessage.WriteEntity( self.Owner ) + --usermessage.Broadcast() + --end + end + + self.Owner:AddFrags(1) + + if GetConVar("gg_zap"):GetInt() >= 1 then + ragdoll:Fire("StartRagdollBoogie","",0) end + --ragdoll:Fire("SetBodygroup","15",0) + --timer.Remove( "gg_Ragdoll_Collision_Timer" ) + ragdoll:SetCollisionGroup( self.HPCollideG ) + --timer.Create( "gg_Ragdoll_Collision_Timer", 2, 1, function() + --if ragdoll:IsValid() then + --ragdoll:SetCollisionGroup(COLLISION_GROUP_WEAPON) + --end + --end ) + ragdoll:SetPhysicsAttacker(self.Owner, 10) + + --RagdollVisual(ragdoll, 1) + for i = 1, ragdoll:GetPhysicsObjectCount() do + local bone = ragdoll:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + local bonepos, boneang = tgt:GetBonePosition(ragdoll:TranslatePhysBoneToBone(i)) + + if self.ggNewRagdollFormed == true then + bone:SetPos(bonepos) + bone:SetAngles(boneang) + end + timer.Simple( 0.01, + function() + if IsValid(bone) then + if GetConVar("gg_style"):GetInt() <= 0 then --Ragdoll Thrown + + bone:AddVelocity(self.Owner:GetAimVector()*(13000/8))--/(ragdoll:GetPhysicsObject():GetMass()/200)) + else + bone:AddVelocity(self.Owner:GetAimVector()*self.PuntForce/(ragdoll:GetPhysicsObject():GetMass()/200)) + end + end + end ) + end + end + end + + end + + local ragdoll = ragdoll + ragdoll = nil + self.ggNewRagdollFormed = nil + self:Visual() + FadeScreen() + --self:DoSparks() + end + + --if self:AllowedClass(tgt) or tgt:GetClass() == "prop_vehicle_airboat" or tgt:GetClass() == "prop_vehicle_jeep" and tgt:GetPhysicsObject():IsMoveable() then + if self:AllowedClass(tgt) or tgt:GetClass() == "prop_vehicle_airboat" or tgt:GetClass() == "prop_vehicle_jeep" then + self:Visual() + FadeScreen() + if tgt:GetClass() == "prop_combine_ball" then + self.Owner:SimulateGravGunPickup( tgt ) + timer.Simple( 0.01, function() + if IsValid(tgt) then + self.Owner:SimulateGravGunDrop( tgt ) + end + end) + end + if (SERVER) then + if !IsValid(tgt) or !IsValid(tgt:GetPhysicsObject()) then return end + local position = trace.HitPos + if GetConVar("gg_style"):GetInt() <= 0 then --Prop Punting + + if tgt:GetClass() == "prop_combine_ball" or tgt:GetClass() == "npc_grenade_frag" then + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*480000) -- 100 + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*480000, position ) + tgt:SetOwner(self.Owner) + else + + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.HL2PuntForce/(tgt:GetPhysicsObject():GetMass()/400)) --1000000 + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.HL2PuntForce/(tgt:GetPhysicsObject():GetMass()/400), position ) + end + + else + + if tgt:GetClass() == "prop_combine_ball" then + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()) + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector(), position ) + tgt:SetOwner(self.Owner) + else + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.PuntForce/8) + tgt:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.PuntForce/8, position ) + end + + end + tgt:SetPhysicsAttacker(self.Owner, 10) + tgt:Fire("physdamagescale","99999",0) + + end + + local function gg_Collide_Damage( entity, data ) + if ( data.OurOldVelocity:Length() > 250 ) then + local dmginfo = DamageInfo(); + dmginfo:SetDamage( data.OurOldVelocity:Length()/76 ); + dmginfo:SetDamageForce( self.Owner:GetPos() ) + dmginfo:SetReportedPosition( self.Owner:GetPos() ) + dmginfo:SetAttacker( self.Owner ); + dmginfo:SetInflictor( self.Owner:GetWeapon( "weapon_superphyscannon" ) ); + entity:TakeDamageInfo(dmginfo) + end + --local callbackget = self:GetCallbacks("PhysicsCollide") + ----print("me is here") + end + if tgt:GetClass() == "npc_manhack" then + local callback = tgt:AddCallback("PhysicsCollide", gg_Collide_Damage) + --[[timer.Simple( 3.5, function() + if IsValid(tgt) then + tgt:RemoveCallback("PhysicsCollide", callback ) + end + end)--]] + end + end + + if tgt:IsRagdoll() then + self:Visual() + FadeScreen() + if (SERVER) then + + --[[for i = 1, tgt:GetPhysicsObjectCount() do + local bone = tgt:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + bone:SetPhysicsAttacker(self.Owner, 4) + tgt:GetPhysicsObject():SetPhysicsAttacker(self.Owner, 4) + end + end--]] + tgt:SetPhysicsAttacker(self.Owner, 10) + + if GetConVar("gg_zap"):GetInt() >= 1 then + tgt:Fire("StartRagdollBoogie","",0) end + --RagdollVisual(tgt, 1) + + if GetConVar("gg_zap"):GetInt() >= 1 then + --[[local effect = EffectData() + if !IsValid(tgt) then return end + effect:SetOrigin(tgt:GetPos()) + effect:SetStart(tgt:GetPos()) + effect:SetMagnitude(5) + effect:SetEntity(tgt) + util.Effect("teslaHitBoxes",effect) + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + tgt:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end--]] + --[[timer.Create( "zapper", 0.3, 16, function() + if IsValid(tgt) then + local effect2 = EffectData() + effect2:SetOrigin(tgt:GetPos()) + effect2:SetStart(tgt:GetPos()) + effect2:SetMagnitude(5) + effect2:SetEntity(tgt) + util.Effect("teslaHitBoxes",effect2) + end + if !IsValid(tgt) then return end + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + tgt:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end + end) --]] + tgt:gg_RagdollZapper() + end + tgt:gg_RagdollCollideTimer() + + for i = 1, tgt:GetPhysicsObjectCount() do + local bone = tgt:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + if GetConVar("gg_style"):GetInt() <= 0 then + bone:AddVelocity(self.Owner:GetAimVector()*(10000/8)) else--/(tgt:GetPhysicsObject():GetMass()/200)) else + bone:AddVelocity(self.Owner:GetAimVector()*self.PuntForce/8) + end + end + end + + --timer.Remove( "gg_Ragdoll_Collision_Timer" ) + tgt:SetCollisionGroup( self.HPCollideG ) + --[[timer.Create( "gg_Ragdoll_Collision_Timer", 2, 1, function() + if tgt:IsValid() then + tgt:SetCollisionGroup(COLLISION_GROUP_WEAPON) + end + end )--]] + end + end + + if self:AllowedClass(tgt) and !tgt:IsRagdoll() and !CLIENT then + local damageinfo = DamageInfo() + damageinfo:SetDamage( 10 ) + damageinfo:SetDamageForce( self.Owner:GetShootPos() ) + damageinfo:SetDamagePosition( tgt:GetPos() ) + damageinfo:SetDamageType( DMG_SHOCK ) + damageinfo:SetAttacker( self.Owner ) + damageinfo:SetInflictor( self.Weapon ) + damageinfo:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo(damageinfo) + end + + end + +function SWEP:DropAndShoot() + if (!self.HP or !IsValid(self.HP)) then self.HP = nil return end + self.HP:Fire("EnablePhyscannonPickup","",1) + if self.HP:IsRagdoll() then + self.HP:SetCollisionGroup( COLLISION_GROUP_NONE ) + else + self.HP:SetCollisionGroup( self.HPCollideG ) + end + self.HP:SetPhysicsAttacker(self.Owner, 10) + --self.HP:SetNWBool("launched_by_gg", true) + self.Owner:SimulateGravGunDrop( self.HP ) + self.Owner:ScreenFade( SCREENFADE.IN, Color( 255, 255, 255, 40 ), 0.1, 0 ) + local function gg_Collide_Damage( entity, data ) + if ( data.OurOldVelocity:Length() > 250 ) then + local dmginfo = DamageInfo(); + dmginfo:SetDamage( data.OurOldVelocity:Length()/62 ); + dmginfo:SetDamageForce( self.Owner:GetPos() ) + dmginfo:SetReportedPosition( self.Owner:GetPos() ) + dmginfo:SetAttacker( self.Owner ); + dmginfo:SetInflictor( self.Owner:GetWeapon( "weapon_superphyscannon" ) ); + entity:TakeDamageInfo(dmginfo) + end + --local callbackget = self:GetCallbacks("PhysicsCollide") + ----print("me is here") + end + if self.HP:GetClass() == "npc_manhack" then + local callback = self.HP:AddCallback("PhysicsCollide", gg_Collide_Damage) + timer.Simple( 3.5, function() + if self.HP and IsValid(self.HP) then + self.HP:RemoveCallback("PhysicsCollide", callback ) + end + end) + end + + self.Secondary.Automatic = true + if GetConVar("gg_style"):GetInt() >= 1 then + self.Weapon:SetNextSecondaryFire( CurTime() + 0.5 ); + self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ); end + + self:CoreEffect() + self:RemoveGlow() + self:Visual() + self:TPrem() + + self.Weapon:StopSound(HoldSound) + + if self.HP:IsRagdoll() then + + --timer.Create( "zap2", 0.1, 5, function() + --local e = EffectData() + --local trace = self.Owner:GetEyeTrace() + --e:SetEntity(trace.Entity) + --e:SetMagnitude(30) + --e:SetScale(30) + --e:SetRadius(30) + --util.Effect("TeslaHitBoxes", e) + --trace.Entity:EmitSound("Weapon_StunStick.Activate") end) + local tr = self.Owner:GetEyeTrace() + + --timer.Remove( "gg_Ragdoll_Collision_Timer" ) + --[[timer.Create( "gg_Ragdoll_Collision_Timer", 2, 1, function() + if self.HP == nil then + + else + self.HP:SetCollisionGroup(COLLISION_GROUP_WEAPON) + end + end )--]] + + local dmginfo = DamageInfo() + dmginfo:SetDamage( 500 ) + dmginfo:SetAttacker( self:GetOwner() ) + dmginfo:SetInflictor( self ) + + --local dissolver = ents.Create("env_entity_dissolver") + --dissolver:SetKeyValue("magnitude",0) + --local trace = self.Owner:GetEyeTrace() + --local tgt = trace.Entity + --dissolver:SetPos(tgt) + --dissolver:SetKeyValue("target",targname) + --dissolver:Spawn() + --dmginfo:SetDamageType( DMG_SHOCK ) + --dmginfo:SetDamagePosition( tr.HitPos ) + + if GetConVar("gg_zap"):GetInt() >= 1 then + self.HP:Fire("StartRagdollBoogie","",0) end + --RagdollVisual(self.HP, 1) + + for i = 1, self.HP:GetPhysicsObjectCount() do + local bone = self.HP:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + if GetConVar("gg_zap"):GetInt() >= 1 then + --[[local effect = EffectData() + if !IsValid(self.HP) then return end + effect:SetOrigin(self.HP:GetPos()) + effect:SetStart(self.HP:GetPos()) + effect:SetMagnitude(5) + effect:SetEntity(self.HP) + util.Effect("teslaHitBoxes",effect)--]] + --self.HP:EmitSound("Weapon_StunStick.Activate") + --[[timer.Create( "zapper", 0.3, 16, function() + util.Effect("teslaHitBoxes",effect) + if !IsValid(self.HP) then self.HP = nil return end + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + self.HP:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end + end) --]] + self.HP:gg_RagdollZapper() + end + self.HP:gg_RagdollCollideTimer() + --timer.Simple( 0.02, + --function() + if IsValid(bone) then + if GetConVar("gg_style"):GetInt() <= 0 then + bone:AddVelocity(self.Owner:GetAimVector()*(20000/8))--/(self.HP:GetPhysicsObject():GetMass()/200)) else + else + bone:AddVelocity(self.Owner:GetAimVector()*self.PuntForce/8) + end + end + --end ) + end + end + else + local trace = self.Owner:GetEyeTrace() + local position = trace.HitPos + + timer.Simple( 0.02, + function() + if GetConVar("gg_style"):GetInt() <= 0 then --Prop Throwing + + if self.HP:GetClass() == "prop_combine_ball" then + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*480000) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*480000,position ) + self.HP:SetOwner(self.Owner) + else + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.HL2PuntForce/(self.HP:GetPhysicsObject():GetMass()/400)) --3500000 --500*( self.HP:GetPhysicsObject():GetMass() ) ) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.HL2PuntForce/(self.HP:GetPhysicsObject():GetMass()/400) ,position ) + end + + else + + if self.HP:GetClass() == "prop_combine_ball" then + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.PuntForce/0.25) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.PuntForce/0.25,position ) + self.HP:SetOwner(self.Owner) + else + self.HP:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*self.PuntForce) + self.HP:GetPhysicsObject():ApplyForceOffset(self.Owner:GetAimVector()*self.PuntForce,position ) + end + + end + end ) + end + + self.HP:Fire("physdamagescale","999",0) + + timer.Simple( 0.04, + function() + --self.HP = nil + end ) + + if self.HPCollideG then + self.HPCollideG = COLLISION_GROUP_NONE + end + + end + + +function SWEP:SecondaryAttack() + if self.Fading == true then return end + if self.TP and IsValid(self.TP) then + self.Weapon:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self:Drop() + return + end + + local trace = self.Owner:GetEyeTrace() + local tracetgt = trace.Entity + local tgt = NULL + + if GetConVar("gg_cone"):GetInt() >= 1 then--(!tgt or !tgt:IsValid() or tgt == NULL) and GetConVar("gg_cone"):GetInt() >= 1 then + local function GetConeEnt() -- There are actually two local functions (the other being GetConeEntForClaw), as the SWEP function would glitch out. Again, sorry for making this swep a mess :( + local PickupRange = 0 + if GetConVar("gg_style"):GetInt() <= 0 then + PickupRange = self.HL2MaxPickupRange + elseif GetConVar("gg_style"):GetInt() >= 1 then + PickupRange = self.MaxPickupRange + end + local tracerange = (trace.HitPos-trace.StartPos):Length() + if tracerange < PickupRange then + PickupRange = tracerange+30 + end + + local cone = ents.FindInCone( self.Owner:EyePos(), self.Owner:GetAimVector(), PickupRange, self.ConeWidth ) + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ent:GetClass() == "prop_combine_ball" then + tgt = ent + return + end + end + end + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ( (ent:IsNPC() and ent:Health() > 0) or (ent:IsPlayer() and ent:Alive()) ) then + tgt = ent + return + end + end + end + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ( self:AllowedClass(ent) and !self:NotAllowedClass(ent) ) then + tgt = ent + return + end + end + end + for T,ent in pairs( cone ) do + if IsValid(ent) and ent:IsValid() and ent != self.Owner then + if ( ent:IsRagdoll() or ent:GetMoveType() == MOVETYPE_VPHYSICS ) then + tgt = ent + return + end + end + end + if tgt and IsValid(tgt) and tgt:IsValid() then + local tr_hull = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + ( self.Owner:GetAimVector() ), + mask = MASK_SHOT, + collisiongroup = COLLISION_GROUP_WORLD + } ) + if ( tr_hull.StartSolid or tr_hull.AllSolid ) then--tr_hull.fraction > 1.0 or tr_hull.StartSolid or tr_hull.AllSolid ) then + tgt = nil + end + end + end + GetConeEnt() + + --[[if !tgt or !tgt:IsValid() then return end + local utiltrace = util.TraceLine( { + start = trace.StartPos, + endpos = tgt:GetPos(), + filter = {tgt} + } ) + if (utiltrace.FractionLeftSolid > 0) then + return + end--]] + + elseif GetConVar("gg_cone"):GetInt() <= 0 then + tgt = tracetgt + end + + --self:CloseClaws( false ) + + if !tgt or !tgt:IsValid() then + return + end + local getstyle = GetConVar("gg_style"):GetInt() + if ( getstyle <= 0 ) + and + ( ( tgt:IsNPC() or tgt:IsPlayer() ) and tgt:Health() > self.MaxTargetHealth ) + or ( tgt:IsNPC() and tgt:GetClass() == "npc_bullseye" ) + or ( (tgt:IsNPC() or tgt:IsPlayer() or tgt:IsRagdoll() ) and !util.IsValidRagdoll(tgt:GetModel()) and !util.IsValidProp(tgt:GetModel()) ) + --or ( tgt:IsNPC() or tgt:IsPlayer() or tgt:IsRagdoll() ) and ( getstyle <= 0 and tgt:GetMass() > self.HL2MaxMass or getstyle >= 1 and tgt:GetMass() > self.MaxMass ) -- Non-functioning + then return end + + if !self:NotAllowedClass(tgt) and !self:AllowedClass(tgt) then + if (SERVER) then + local Dist = (tgt:GetPos()-self.Owner:GetPos()):Length() + if GetConVar("gg_style"):GetInt() <= 0 and Dist >= self.HL2MaxPickupRange + or GetConVar("gg_style"):GetInt() >= 1 and Dist >= self.MaxPickupRange + then return end + if tgt:IsPlayer() and tgt:HasGodMode() == true then return end + --if tgt:IsPlayer() and server_settings.Int( "sbox_plpldamage" ) == 1 then + --self.Weapon:EmitSound("Weapon_PhysCannon.TooHeavy") + --return + --end + + if tgt:IsNPC() or tgt:IsPlayer() and !tgt:IsFriendly(self.Owner) then + + if tgt:IsPlayer() then + if tgt:Health() > 0 then + --tgt:Fire( "AddOutput", "health 0", 0 ) + tgt:SetHealth( 0 ) + end + local dmg = DamageInfo() + dmg:SetDamage( tgt:Health() ) + dmg:SetDamageForce( self.Owner:GetShootPos() ) + dmg:SetDamageType( DMG_SHOCK ) + dmg:SetAttacker( self.Owner ) + dmg:SetInflictor( self.Weapon ) + dmg:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo( dmg ) + --[[net.Start( "PlayerKilledByPlayer" ) + usermessage.WriteEntity( tgt ) + usermessage.WriteString( "weapon_superphyscannon" ) + usermessage.WriteEntity( self.Owner ) + usermessage.Broadcast()--]] + elseif tgt:IsNPC() then + if tgt:GetShouldServerRagdoll() != true then + tgt:SetShouldServerRagdoll( true ) + end + if tgt:Health() >= 1 then + tgt:SetHealth( 0 ) + end + if tgt:GetClass() != "npc_antlion_worker" then + local dmg = DamageInfo() + dmg:SetDamage( tgt:Health() ) + dmg:SetDamageForce( self.Owner:GetShootPos() ) + dmg:SetDamageType( DMG_SHOCK ) + dmg:SetAttacker( self.Owner ) + dmg:SetInflictor( self.Weapon ) + dmg:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo( dmg ) + end + + for _,rag in pairs( ents.FindInSphere( tgt:GetPos(), tgt:GetModelRadius() ) ) do + if rag:IsRagdoll() and rag:GetModel() == tgt:GetModel() and rag:GetCreationTime() == CurTime() and self.RagdollRemoved != true then + self.RagdollRemoved = true + --rag:Remove() + ragdoll = rag + end + end + + self.RagdollRemoved = false + end + + if tgt:Health() >= 1 then return end + if !IsValid(ragdoll) then + local newragdoll = ents.Create( "prop_ragdoll" ) + newragdoll:SetPos( tgt:GetPos()) + newragdoll:SetAngles(tgt:GetAngles()-Angle(tgt:GetAngles().p,0,0)) + newragdoll:SetModel( tgt:GetModel() ) + newragdoll:SetSkin( tgt:GetSkin() ) + newragdoll:SetColor( tgt:GetColor() ) + for k,v in pairs(tgt:GetBodyGroups()) do + newragdoll:SetBodygroup(v.id,tgt:GetBodygroup(v.id)) + end + newragdoll:SetMaterial( tgt:GetMaterial() ) + newragdoll:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + newragdoll:SetKeyValue("spawnflags",8192) + newragdoll:Spawn() + ragdoll = newragdoll + self.ggNewRagdollFormed = true + end + + if tgt:GetActiveWeapon():IsValid() then + local wep = tgt:GetActiveWeapon() + --local model = wep:GetModel() + local wepclass = wep:GetClass() + + if tgt:IsNPC() then + if GetConVar("gg_weapon_vaporize"):GetInt() <= 0 then + local weaponmodel = ents.Create( wepclass ) + weaponmodel:SetPos( tgt:GetShootPos() ) + weaponmodel:SetAngles(wep:GetAngles()-Angle(wep:GetAngles().p,0,0)) + --if model:IsValid() then + --weaponmodel:SetModel( model ) + --end + weaponmodel:SetSkin( wep:GetSkin() ) + weaponmodel:SetColor( wep:GetColor() ) + weaponmodel:SetKeyValue("spawnflags","2") + weaponmodel:Spawn() + weaponmodel:Fire("Addoutput","spawnflags 0",1) + + elseif GetConVar("gg_weapon_vaporize"):GetInt() >= 1 then + local weaponmodel = ents.Create( "prop_physics_override" ) + weaponmodel:SetPos( tgt:GetShootPos() ) + weaponmodel:SetAngles(wep:GetAngles()-Angle(wep:GetAngles().p,0,0)) + weaponmodel:SetModel( wep:GetModel() ) + weaponmodel:SetSkin( wep:GetSkin() ) + weaponmodel:SetColor( wep:GetColor() ) + weaponmodel:SetCollisionGroup( COLLISION_GROUP_WEAPON ) + weaponmodel:Spawn() + + local dissolver = ents.Create( "env_entity_dissolver" ) + dissolver:SetPos( weaponmodel:LocalToWorld(weaponmodel:OBBCenter()) ) + dissolver:SetKeyValue( "dissolvetype", 0 ) + dissolver:Spawn() + dissolver:Activate() + local name = "Dissolving_"..math.random() + weaponmodel:SetName( name ) + dissolver:Fire( "Dissolve", name, 0 ) + dissolver:Fire( "Kill", name, 0.10 ) + end + end + end + + if self.ggNewRagdollFormed == true then + cleanup.Add (self.Owner, "props", ragdoll); + undo.Create ("Ragdoll"); + undo.AddEntity (ragdoll); + undo.SetPlayer (self.Owner); + undo.SetCustomUndoText( "Undone Ragdoll" ) + undo.Finish(); + + --[[if !tgt:IsPlayer() and tgt:Health() <= 0 and tgt:IsValid() then + net.Start( "PlayerKilledNPC" ) + usermessage.WriteString( tgt:GetClass() ) + usermessage.WriteString( self.Weapon:GetClass() ) + usermessage.WriteEntity( self.Owner ) + usermessage.Broadcast() + end--]] + end + + if tgt:IsPlayer() then + --tgt:KillSilent() + --ragdoll:SetColor( tgt:GetPlayerColor() ) + --tgt:AddDeaths(1) + --self.Owner:AddFrags(1) + local dmg = DamageInfo() + dmg:SetDamage( tgt:Health() ) + dmg:SetDamageForce( self.Owner:GetShootPos() ) + dmg:SetDamageType( DMG_SHOCK ) + dmg:SetAttacker( self.Owner ) + dmg:SetInflictor( self.Weapon ) + dmg:SetReportedPosition( self.Owner:GetShootPos() ) + tgt:TakeDamageInfo( dmg ) + if tgt:GetRagdollEntity():IsValid() then + tgt:GetRagdollEntity():Remove() + end + tgt:SpectateEntity(ragdoll) + tgt:Spectate(OBS_MODE_CHASE) + elseif tgt:IsNPC() then + tgt:Fire("Kill","",0) + end + + --ragdoll:Fire("SetBodygroup","15",0) + self.HP = ragdoll + + self.Weapon:SetNextSecondaryFire( CurTime() + 0.2 ); + if GetConVar("gg_style"):GetInt() >= 1 then + self.Weapon:SetNextPrimaryFire( CurTime() + 0.1 ); end + self.Secondary.Automatic = false + + self.Weapon:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + + if self.ggNewRagdollFormed == true then + for i = 1, ragdoll:GetPhysicsObjectCount() do + local bone = ragdoll:GetPhysicsObjectNum(i) + + if bone and bone.IsValid and bone:IsValid() then + local bonepos, boneang = tgt:GetBonePosition(ragdoll:TranslatePhysBoneToBone(i)) + + bone:SetPos(bonepos) + bone:SetAngles(boneang) + end + end + end + ragdoll = nil + self.ggNewRagdollFormed = nil + timer.Simple( 0.01, + function() + self:Pickup() + end ) + end + end + end + + if tgt:GetMoveType() == MOVETYPE_VPHYSICS then + if (SERVER) then + local Mass = tgt:GetPhysicsObject():GetMass() + local Dist = (tgt:GetPos()-self.Owner:GetPos()):Length() + local GetPullForce = {} + if GetConVar("gg_style"):GetInt() <= 0 then + GetPullForce = self.HL2PullForce + else + GetPullForce = self.PullForce + end + local vel = GetPullForce/(Dist*0.002) + local ragvel = self.HL2PullForceRagdoll/(Dist*0.001) + + if GetConVar("gg_style"):GetInt() <= 0 then + local getstyle = GetConVar("gg_style"):GetInt() + if ( ( getstyle == 0 and Mass >= (self.HL2MaxMass+1) ) or ( getstyle != 0 and Mass >= (self.MaxMass+1) ) ) and tgt:GetClass() != "prop_combine_ball" then + return + end end + + if tgt:IsRagdoll() or self:AllowedClass(tgt) and tgt:GetPhysicsObject():IsMoveable() then--and ( !constraint.HasConstraints( tgt ) ) then + if GetConVar("gg_style"):GetInt() <= 0 and Dist < self.HL2MaxPickupRange + or GetConVar("gg_style"):GetInt() >= 1 and Dist < self.MaxPickupRange then + self.Weapon:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self.HP = tgt + self.Owner:SimulateGravGunPickup( self.HP ) + self.HPCollideG = tgt:GetCollisionGroup() + tgt:SetCollisionGroup(COLLISION_GROUP_WEAPON) + + self:Pickup() + self.Weapon:SetNextSecondaryFire( CurTime() + 0.2 ); + if GetConVar("gg_style"):GetInt() >= 1 then + self.Weapon:SetNextPrimaryFire( CurTime() + 0.1 ); end + self.Secondary.Automatic = false + --[[elseif GetConVar("gg_style"):GetInt() <= 0 and tgt:IsRagdoll() then + for d = 1, ent:GetPhysicsObjectCount() do + local bone = ent:GetPhysicsObjectNum(d) + + if bone and bone.IsValid and bone:IsValid() then + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*-ragvel ) + bone:ApplyForceCenter(self.Owner:GetAimVector()*-ragvel ) + --print("bruhto") + end + end--]] + else + tgt:GetPhysicsObject():ApplyForceCenter(self.Owner:GetAimVector()*-vel ) + end + end + end + else + + end + end + +function SWEP:Pickup() + self.Owner:EmitSoundEx("Weapon_MegaPhysCannon.Pickup") + self.Owner:StopSound("Weapon_PhysCannon.OpenClaws") + self.Owner:StopSound("Weapon_PhysCannon.CloseClaws") + self.Owner:EmitSoundEx(HoldSound) + self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + + PropLockTime = CurTime()+1 + + timer.Simple( 0.4, + function() + if IsValid(self.Owner) and IsValid(self.Weapon) and self.Owner:Alive() and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self.Weapon:SendWeaponAnim(ACT_VM_RELOAD) + end + end ) + + local trace = self.Owner:GetEyeTrace() + + self.HP:Fire("DisablePhyscannonPickup","",0) + + if !IsValid(self.HP:GetPhysicsObject()) then return end + if self.HP:GetClass()=="prop_combine_ball" or self.HP:GetClass()=="npc_manhack" then + self.TP = ents.Create("prop_dynamic") + else + self.TP = ents.Create("prop_physics") + end + if self:AllowedCenterPhysicsClass() then + self.TP:SetPos(self.HP:LocalToWorld(self.HP:OBBCenter())) -- Doesn't affect much + else + self.TP:SetPos(self.HP:GetPhysicsObject():GetMassCenter()) + end + if self.HP:GetClass()=="prop_physics" then + self.HP:GetPhysicsObject():EnableMotion(true) + end + if (!self.HP or !IsValid(self.HP)) then self.HP = nil return end + if IsValid(self.HP:GetPhysicsObject()) then + self.TP:SetPos(self.HP:GetPhysicsObject():GetPos()) + --self.TP:SetPos(self.HP:GetNetworkOrigin()) + self.TP:SetModel("models/props_junk/PopCan01a.mdl") + self.TP:Spawn() + self.TP:SetCollisionGroup(COLLISION_GROUP_WORLD) + self.TP:SetColor(Color(255,255,255,1)) + self.TP:SetRenderMode(RENDERMODE_TRANSCOLOR) + self.TP:PointAtEntity(self.Owner) + if self.TP:GetClass() == "prop_physics" then + self.TP:GetPhysicsObject():SetMass(50000) + self.TP:GetPhysicsObject():EnableMotion(false) + end + + --if constraint.FindConstraints(self.HP, Weld) == nil then + local bone = math.Clamp(trace.PhysicsBone,0,1) + --[[if self.HP:IsRagdoll() then + --self.Const = constraint.Ballsocket(self.TP, self.HP, 0, bone,trace.HitNormal, 0, 0,1) + self.Const = constraint.AdvBallsocket(self.TP, self.HP, 0, bone,trace.HitNormal, self.TP:GetPos(), + 0, -- Break Limit + 0, -- Torque Break Limit + 0, -- X Min + 0, -- Y Min + 0, -- Z Min + 500, -- X Max + 500, -- Y Max + 500, -- Z Max + 10, -- X Friction + 10, -- Y Friction + 10, -- Z Friction + 0, -- Don't Limit Rotation Only + 1) -- No Collide + else--]] + self.Const = constraint.Weld(self.TP, self.HP, 0, bone,0,1) + --end + --end + + if self.HP:IsRagdoll() then + self.HP:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + end + + if self.HP:GetClass() == "prop_combine_ball" then + self.HP:SetOwner(self.Owner) + self.HP:GetPhysicsObject():AddGameFlag( FVPHYSICS_WAS_THROWN ) + end + + --self.Weapon:EmitSound(HoldSound) + end +end + +function SWEP:Drop() + if !IsValid(self) then return end + if !IsValid(self.HP) then return end + self.HP:Fire("EnablePhyscannonPickup","",1) + if self.HP:IsRagdoll() then + self.HP:SetCollisionGroup(COLLISION_GROUP_WEAPON) + else + self.HP:SetCollisionGroup( self.HPCollideG ) + end + self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) + + if self.HP:IsRagdoll() then + --RagdollVisual(self.HP, 1) + if GetConVar("gg_zap"):GetInt() <= 1 then + --[[local effect = EffectData() + if !IsValid(self.HP) then return end + effect:SetOrigin(self.HP:GetPos()) + effect:SetStart(self.HP:GetPos()) + effect:SetMagnitude(5) + effect:SetEntity(self.HP) + util.Effect("teslaHitBoxes",effect) + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + self.HP:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end--]] + --[[timer.Create( "zapper", 0.3, 16, function() + util.Effect("teslaHitBoxes",effect) + if !IsValid(self.HP) then self.HP = nil return end + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + self.HP:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end + end) --]] + self.HP:gg_RagdollZapper() + end + self.HP:gg_RagdollCollideTimer() + if GetConVar("gg_zap"):GetInt() >= 1 then + self.HP:Fire("StartRagdollBoogie","",0) + end + end + + self.Secondary.Automatic = true + self.Owner:EmitSoundEx("Weapon_MegaPhysCannon.Drop") + self.Weapon:SetNextSecondaryFire( CurTime() + 0.5 ); + if self.HP:GetClass() == "prop_combine_ball" then + self.Owner:SimulateGravGunPickup( self.HP ) + timer.Simple( 0.01, function() + if self.HP and IsValid(self.HP) then + self.Owner:SimulateGravGunDrop( self.HP ) + end + end) + else + self.Owner:SimulateGravGunDrop( self.HP ) + end + + timer.Simple( 0.4, + function() + if !IsValid( self.Weapon ) then return end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self.Weapon:SendWeaponAnim(ACT_VM_IDLE) + end + end ) + + self:CoreEffect() + self:RemoveGlow() + + self:TPrem() + if self.HP and IsValid(self.HP) then + --self.HP = nil + end + if self.HPCollideG then + self.HPCollideG = COLLISION_GROUP_NONE + end + + self.Weapon:StopSound(HoldSound) + + end + +function SWEP:Visual() + self:SendWeaponAnim( ACT_VM_SECONDARYATTACK ) + self.Owner:SetAnimation( PLAYER_ATTACK1 ) + self:EmitSound( "Weapon_MegaPhysCannon.Launch" ) + if SERVER then + if GetConVar("gg_muzzle_flash"):GetInt() >= 1 then + local Light = ents.Create("light_dynamic") + Light:SetKeyValue("brightness", "5") + Light:SetKeyValue("distance", "200") + Light:SetLocalPos(self.Owner:GetShootPos()) + Light:SetLocalAngles(self:GetAngles()) + Light:Fire("Color", "255 255 255") + Light:SetParent(self) + Light:Spawn() + Light:Activate() + Light:Fire("TurnOn", "", 0) + self:DeleteOnRemove(Light) + timer.Simple(0.1,function() if self:IsValid() and Light:IsValid() then Light:Remove() end end) + end + end + if GetConVar("gg_style"):GetInt() <= 0 then + self.Owner:ViewPunch( Angle( -5, 2, 0 ) ) + else + self.Owner:ViewPunch( Angle( -5, 2, 0 ) ) + end + + local trace = self.Owner:GetEyeTrace() + + local effectdata = EffectData() + effectdata:SetOrigin( trace.HitPos ) + effectdata:SetStart( self.Owner:GetShootPos() ) + effectdata:SetAttachment( 1 ) + effectdata:SetEntity( self.Weapon ) + util.Effect( "PhyscannonTracer", effectdata ) + --local e = EffectData() + --e:SetEntity(trace.Entity) + --e:SetMagnitude(30) + --e:SetScale(30) + --e:SetRadius(30) + --util.Effect("TeslaHitBoxes", e) + --trace.Entity:EmitSound("Weapon_StunStick.Activate") + + if (SERVER) then + if GetConVar("gg_no_effects"):GetInt() >= 1 then return end + if !IsValid(self.Muzzle) then + self.Muzzle = ents.Create("PhyscannonMuzzle") + self.Muzzle:SetPos( self.Owner:GetShootPos() ) + self.Muzzle:Spawn() + end + self.MuzzleAllowRemove = false + if IsValid(self.Muzzle) then + self.Muzzle:SetParent(self.Owner) + self.Muzzle:SetOwner(self.Owner) + end + + timer.Simple( 0.12, + function() + if IsValid(self.Muzzle) then + self:RemoveMuzzle() + end + end ) + end + + local e = EffectData() + e:SetMagnitude(30) + e:SetScale(30) + e:SetRadius(30) + e:SetOrigin(trace.HitPos) + e:SetNormal(trace.HitNormal) + --util.Effect("PhyscannonImpact", e) + util.Effect("ManhackSparks", e) + end + +--[[function SWEP:DoSparks() + local trace = self.Owner:GetEyeTrace() + local e = EffectData() + e:SetMagnitude(30) + e:SetScale(30) + e:SetRadius(30) + e:SetOrigin(trace.HitPos) + e:SetNormal(trace.HitNormal) + util.Effect("PhyscannonImpact", e) + --util.Effect("ManhackSparks", e) +end--]] + +--[[function RagdollVisual(ent, val) -- RagdollVisual does not seem to do anything. +if !IsValid(ent) then return end + if ent:IsValid() then + + val = val+1 + + --local effect = EffectData() + --effect:SetEntity(ent) + --effect:SetMagnitude(30) + --effect:SetScale(30) + --effect:SetRadius(30) + --util.Effect("TeslaHitBoxes", effect) + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + ent:EmitSound("Weapon_StunStick.Activate", 75, 100, 0.3) + end + + if val <= 26 then + timer.Simple((math.random(8,20)/100), RagdollVisual, ent, val) + end + end + end--]] + +local entmeta = FindMetaTable( "Entity" ) +function entmeta:gg_RagdollZapper() + if GetConVar("gg_zap"):GetInt() >= 1 then + local name = "gg_zapper_"..self:EntIndex() + local ZapRepeats = 16 + if self.gg_IsBeingZapped == true then timer.Adjust(self.gg_TimerName,0.3,ZapRepeats) return end + self.gg_IsBeingZapped = true + self.gg_TimerName = name + + local effect2 = EffectData() + if !IsValid(self) then timer.Remove(name) return end + effect2:SetOrigin(self:GetPos()) + effect2:SetStart(self:GetPos()) + effect2:SetMagnitude(5) + effect2:SetEntity(self) + util.Effect("teslaHitBoxes",effect2) + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + self:EmitSound("Weapon_StunStick.Activate", 75, math.Rand(99, 101), 0.1) + end + + --[[local function CollisionCheck( ent ) + if !IsValid(ent) then return false end + local collision = ent:GetCollisionGroup() + if collision!=COLLISION_GROUP_WEAPON + or collision!=COLLISION_GROUP_DEBRIS + or collision!=COLLISION_GROUP_DEBRIS_TRIGGER + or collision!=COLLISION_GROUP_WORLD + then + return true + else + return false + end + end--]] + + timer.Create( name, 0.3, ZapRepeats, function() + ----print(name, timer.RepsLeft(name)) + local effect2 = EffectData() + if !IsValid(self) then timer.Remove(name) return end + effect2:SetOrigin(self:GetPos()) + effect2:SetStart(self:GetPos()) + effect2:SetMagnitude(5) + effect2:SetEntity(self) + util.Effect("teslaHitBoxes",effect2) + if GetConVar("gg_zap_sound"):GetInt() >= 1 then + self:EmitSound("Weapon_StunStick.Activate", 75, math.Rand(99, 101), 0.1) + end + if !IsValid(self) then timer.Remove(name) return end + if timer.RepsLeft(name) <= 0 then + + local collision = self:GetCollisionGroup() + --if CollisionCheck(self)==true then + --self:SetCollisionGroup(COLLISION_GROUP_WEAPON) + --end + + self.gg_TimerName = nil + self.gg_IsBeingZapped = nil + timer.Remove(name) + return end + end) + end +end + +function entmeta:gg_RagdollCollideTimer() + local name = "gg_collidecheck_"..self:EntIndex() + if timer.Exists(name) then timer.Adjust(name,2.0,1) return end + + local function CollisionCheck( ent ) + if !IsValid(ent) then return false end + local collision = ent:GetCollisionGroup() + if collision!=COLLISION_GROUP_WEAPON + or collision!=COLLISION_GROUP_DEBRIS + or collision!=COLLISION_GROUP_DEBRIS_TRIGGER + or collision!=COLLISION_GROUP_WORLD + then + return true + else + return false + end + end + + timer.Create( name, 4.5, 1, function() + if !IsValid(self) then return end + local collision = self:GetCollisionGroup() + --if GetConVar("gg_cone"):GetInt() <= 0 and CollisionCheck(self)==true then + self:SetCollisionGroup(COLLISION_GROUP_WEAPON) + --end + end) +end + +function SWEP:Deploy() + self:CallBaseFunction("Deploy") + if self.Owner:GetPlayerClass() == "engineer" then + self:SetHoldType( "PRIMARY" ) + elseif self.Owner:GetPlayerClass() == "medic" then + self:SetHoldType( "PRIMARY" ) + elseif self.Owner:GetPlayerClass() == "scout" then + self:SetHoldType( "PRIMARY" ) + else + self:SetHoldType( "SECONDARY" ) + end + self.ClawOpenState = false + self.Fade = true + self.Fading = false + self.RagdollRemoved = false + self.CoreAllowRemove = true + self.GlowAllowRemove = true + self.MuzzleAllowRemove = true + self.PrimaryFired = false + --self.Weapon:SetNextPrimaryFire( CurTime() + 5 ) + self.Weapon:SetNextSecondaryFire( CurTime() + 5 ) + --[[if self.Owner:GetWeapon("weapon_physcannon"):IsValid() then + ----print("yeah") + net.Start("gg_Deploy_DisableGrav") + net.Send( self.Owner ) + end--]] + self:CoreEffect() + self:TimerDestroyAll() + + local claw_mode_cvar = GetConVar("gg_claw_mode"):GetInt() + if claw_mode_cvar <= 0 then + self:CloseClaws( false ) + elseif claw_mode_cvar == 1 then + self:OpenClaws( false ) + end + if GetConVar("gg_style"):GetInt() <= 0 then + self.Weapon:SendWeaponAnim( ACT_VM_DRAW ) + if GetConVar("gg_equip_sound"):GetInt() >= 1 and GetConVar("gg_enabled"):GetInt() >= 1 then + self.Weapon:EmitSound("weapons/physcannon/physcannon_charge.wav") + end + end + local vm = self.Owner:GetViewModel() + local duration = 0 + --if GetConVar("gg_style"):GetInt() <= 0 then + duration = vm:SequenceDuration() + --else + --duration = GetConVar("sv_defaultdeployspeed"):GetInt() + --end + timer.Create( "deploy_idle"..self:EntIndex(), duration, 1, function() + if !IsValid( self.Weapon ) then return true end + if IsValid(self.Owner) and IsValid(self) and self.Owner:GetActiveWeapon() == self and self.Fading == false then + self.Weapon:SendWeaponAnim( ACT_VM_IDLE ) + end + --self.Weapon:SetNextPrimaryFire( CurTime() + 0.01 ) + self.Weapon:SetNextSecondaryFire( CurTime() + 0.01 ) + end) + return true +end + +function SWEP:Holster() +self:CallBaseFunction("Holster") +self:TimerDestroyAll() +--[[if SERVER then + if self.Owner:GetWeapon("weapon_physcannon"):IsValid() then + local ply = self.Owner + ----print("yeah2") + net.Start("gg_Holster_EnableGrav") + net.Send( ply ) + end +end--]] +self.Weapon:StopSound(HoldSound) +self:SetPoseParameter("super_active", 0) +--if self.TP then +--self:Drop() +--end +self.HP = nil + if self.TP and IsValid(self.TP) then + return false + else + self:RemoveFX() + self:TPrem() + if self.HP and IsValid(self.HP) then + self.HP = nil + end + return true + end +end + + +function SWEP:TPrem() + if self.TP then + if !IsValid(self.TP) then return end + self.TP:Remove() + self.TP = nil + end + + if self.Const then + if !IsValid(self.Const) then return end + self.Const:Remove() + self.Const = nil + end + end + +function SWEP:RemoveMuzzle() + if self.Muzzle then + if !IsValid(self.Muzzle) then return end + self.MuzzleAllowRemove = true + self.Muzzle:Remove() + self.Muzzle = nil + end + end + +function SWEP:RemoveFX() + if self.Core then + if !IsValid(self.Core) then return end + self.CoreAllowRemove = true + self.Core:Remove() + self.Core = nil + end + if self.Glow then + self.GlowAllowRemove = true + self.Glow:Remove() + self.Glow = nil + end + end + +function SWEP:CoreEffect() + if SERVER then + if GetConVar("gg_no_effects"):GetInt() >= 1 then return end + if !IsValid(self.Core) then + self.Core = ents.Create("PhyscannonCore") + self.Core:SetPos( self.Owner:GetShootPos() ) + self.Core:Spawn() + --self.Core:AddEFlags(EFL_KEEP_ON_RECREATE_ENTITIES) + end + self.CoreAllowRemove = false + if !IsValid(self.Core) then return end + self.Core:SetParent(self.Owner) + self.Core:SetOwner(self.Owner) + end + end + +function SWEP:GlowEffect() + if SERVER then + if GetConVar("gg_no_effects"):GetInt() >= 1 then return end + if !IsValid(self.Glow) then + self.Glow = ents.Create("PhyscannonGlow") + self.Weapon:SetNetworkedBool("Glow", true) + self.Glow:SetPos( self.Owner:GetShootPos() ) + self.Glow:Spawn() + end + self.GlowAllowRemove = false + self.Glow:SetParent(self.Owner) + self.Glow:SetOwner(self.Owner) + end + end + +function SWEP:RemoveCore() + if CLIENT then return end + if !self.Core then return end + if !IsValid(self.Core) then return end + self.CoreAllowRemove = true + self.Core:Remove() + self.Core = nil + end + +function SWEP:RemoveGlow() + if CLIENT then return end + if !self.Glow then return end + if !IsValid(self.Glow) then return end + self.GlowAllowRemove = true + self.Weapon:SetNetworkedBool("Glow", false) + self.Glow:Remove() + self.Glow = nil + end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_sword/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_sword/shared.lua new file mode 100644 index 000000000..2664a6371 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_sword/shared.lua @@ -0,0 +1,199 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.PrintName = "Eyelander" +SWEP.Slot = 2 + +if CLIENT then + +SWEP.HasCModel = true + +local WhisperIdle = Sound("Sword.Idle") +local WhisperKill = Sound("Sword.Hit") + +usermessage.Hook("SwordWhisper", function(msg) + local t = msg:ReadChar() + if t==2 then LocalPlayer():EmitSound(WhisperKill) + else LocalPlayer():EmitSound(WhisperIdle) + end +end) + +SWEP.GlobalCustomHUD = {HudItemEffectMeter_Demoman = function(self) return self.dt.IsEyelander end} + +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_claymore/c_claymore.mdl" +SWEP.Crosshair = "tf_crosshair3" +SWEP.ItemName = "Unique Achievement Sword" + +SWEP.Swing = Sound("Weapon_Sword.Swing") +SWEP.SwingCrit = Sound("Weapon_Sword.SwingCrit") +SWEP.HitFlesh = Sound("Weapon_Sword.HitFlesh") +SWEP.HitRobot = Sound("MVM_Weapon_Sword.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Sword.HitWorld") +SWEP.CriticalChance = 20 + +SWEP.WhisperKillProbabilityPlayer = 0.5 +SWEP.WhisperKillProbabilityNPC = 0.2 + +SWEP.WhisperIdleMinDelay = 10 +SWEP.WhisperIdleMaxDelay = 60 +SWEP.WhisperKillMinDelay = 2 +SWEP.WhisperKillMaxDelay = 4 + +SWEP.MeleeRange = 100 +SWEP.HealthBonus = 15 + +SWEP.MeleeAttackDelay = 0.15 +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +--SWEP.CriticalChance = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 0.8 + +SWEP.HoldType = "ITEM1" + +SWEP.UsesSpecialAnimations = true + +--[[ +SWEP.VM_DRAW = "cm_draw" +SWEP.VM_IDLE = "cm_idle" +SWEP.VM_HITCENTER = "cm_swing_a,cm_swing_b" +SWEP.VM_SWINGHARD = "cm_swing_c"]] + +function SWEP:SetupDataTables() + self:CallBaseFunction("SetupDataTables") + self:DTVar("Bool", 0, "IsEyelander") +end + +-- The following weapons should not collect heads + +local NoHeadCollecting = { + [172] = true, -- Scotsman's Skullcutter + [327] = true, -- Claidheamohmor +} + +function SWEP:InitAttributes(owner, attributes) + self:CallBaseFunction("InitAttributes", owner, attributes) + + + if NoHeadCollecting[self:ItemIndex()] then + return + end + + self.dt.IsEyelander = true +end + +function SWEP:OnPlayerKilled(ent) + --ent:SetNWBool("ShouldDropDecapitatedRagdoll", true) + ent:AddDeathFlag(DF_DECAP) + + if self.dt.IsEyelander and ent:CanGiveHead() then + self.Owner:SetNWInt("Heads", self.Owner:GetNWInt("Heads") + 1) + self.Owner:AddPlayerState(PLAYERSTATE_EYELANDER) + self.Owner:UpdateState(0.1) + + if self.Owner:GetNWInt("Heads")<=4 then + --self.Owner:SetClassSpeed(self.Owner:GetClassSpeed() + self.SpeedBonus) + self.Owner.TempAttributes.AdditiveSpeedBonus = (self.Owner.TempAttributes.AdditiveSpeedBonus or 0) + 7.5 + self.Owner:ResetClassSpeed() + + self.Owner:SetMaxHealth(self.Owner:GetMaxHealth() + self.HealthBonus) + --self.Owner:SetNWInt("PlayerMaxHealthBuff", self.HealthBonus * self:GetNWInt("Heads")) + end + self.Owner:SetHealth(self.Owner:Health() + self.HealthBonus) + + local prob + if ent:IsPlayer() then prob = self.WhisperKillProbabilityPlayer + else prob = self.WhisperKillProbabilityNPC + end + + if math.random()self.NextWhisper then + if self.WhisperType == 2 then + if not self.Owner.NextSpeak or CurTime()>self.Owner.NextSpeak then + umsg.Start("SwordWhisper", self.Owner) + umsg.Char(2) + umsg.End() + self.WhisperType = 1 + self.NextWhisper = CurTime() + math.Rand(self.WhisperIdleMinDelay, self.WhisperIdleMaxDelay) + else + self.NextWhisper = CurTime() + math.Rand(self.WhisperKillMinDelay, self.WhisperKillMaxDelay) + end + else + if not self.Owner.NextSpeak or CurTime()>self.Owner.NextSpeak then + umsg.Start("SwordWhisper", self.Owner) + umsg.Char(1) + umsg.End() + end + self.NextWhisper = CurTime() + math.Rand(self.WhisperIdleMinDelay, self.WhisperIdleMaxDelay) + end + end + end +end + +function SWEP:OnRemove() + if SERVER then + --self.Owner:SetNWInt("Heads", 0) + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_syringegun_medic/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_syringegun_medic/shared.lua new file mode 100644 index 000000000..57b5df914 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_syringegun_medic/shared.lua @@ -0,0 +1,72 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Syringe Gun" +SWEP.Slot = 0 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_medic_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_syringegun/c_syringegun.mdl" +SWEP.Crosshair = "tf_crosshair1" + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" + +SWEP.MuzzleEffect = "muzzle_syringe" +PrecacheParticleSystem("muzzle_syringe") + +SWEP.ShootSound = Sound("Weapon_SyringeGun.Single") +SWEP.ShootCritSound = Sound("Weapon_SyringeGun.SingleCrit") +SWEP.ReloadSound = Sound("Weapon_SyringeGun.WorldReload") + +SWEP.BaseDamage = 15 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0.7 +SWEP.MaxDamageFalloff = 0.5 + +SWEP.Primary.ClipSize = 40 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.1 +SWEP.ReloadTime = 1.5 + +SWEP.BulletSpread = 0.02 + +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false + +SWEP.HoldType = "PRIMARY" + +SWEP.HoldTypeHL2 = "ar2" + +SWEP.ProjectileShootOffset = Vector(40, 8, -5) + +function SWEP:ShootProjectile() + if SERVER then + local syringe = ents.Create("tf_projectile_syringe") + local ang = self.Owner:EyeAngles() + local vec = ang:Forward() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Right() + math.Rand(-self.BulletSpread,self.BulletSpread) * ang:Up() + + syringe:SetPos(self:ProjectileShootPos()) + syringe:SetAngles(vec:Angle()) + if self:Critical() then + syringe.critical = true + end + syringe:SetOwner(self.Owner) + --syringe:SetProjectileType(1) + syringe.BaseDamage = self.BaseDamage + self:InitProjectileAttributes(syringe) + + syringe:Spawn() + end + + self:ShootEffects() +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_tranqulizer/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_tranqulizer/shared.lua new file mode 100644 index 000000000..ce7a140e1 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_tranqulizer/shared.lua @@ -0,0 +1,70 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + +SWEP.PrintName = "Shotgun Versus Mode" +SWEP.Slot = 2 +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_shotgun.mdl" +SWEP.WorldModel = "models/weapons/w_shotgun.mdl" +SWEP.Crosshair = "tf_crosshair2" + +SWEP.MuzzleEffect = "muzzle_revolver" +SWEP.MuzzleOffset = Vector(20, 4, -2) + +SWEP.ShootSound = Sound("Weapon_Shotgun.Single") +SWEP.ShootCritSound = Sound("Weapon_Shotgun.Double") +SWEP.ReloadSound = Sound("Weapon_Shotgun.Reload") + +SWEP.TracerEffect = "bullet_pistol_tracer01" +PrecacheParticleSystem("bullet_pistol_tracer01_red") +PrecacheParticleSystem("bullet_pistol_tracer01_blue") +PrecacheParticleSystem("bullet_pistol_tracer01_red_crit") +PrecacheParticleSystem("bullet_pistol_tracer01_blue_crit") +PrecacheParticleSystem("muzzle_revolver") + +SWEP.BaseDamage = 9 +SWEP.DamageRandomize = 0 +SWEP.MaxDamageRampUp = 0.5 +SWEP.MaxDamageFalloff = 0.52 +SWEP.BulletsPerShot = 6 +SWEP.BulletSpread = 0.1 + +SWEP.Primary.ClipSize = 6 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.9 +SWEP.ReloadTime = 0.4 + +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "revolver" + +SWEP.DeploySound = Sound("weapons/draw_secondary.wav") + + +SWEP.IsRapidFire = false + +-- Ambassador properties +SWEP.AccuracyRecoveryStartDelay = 0.5 +SWEP.AccuracyRecoveryDelay = 0.75 + +SWEP.MinSpread = 0 +SWEP.MaxSpread = 0.06 +SWEP.CrosshairMaxScale = 3 +SWEP.ReloadSingle = true +SWEP.UseHands = true +function SWEP:PrimaryAttack() + self:SetNextPrimaryFire(CurTime() + 0.9) + timer.Simple(0.25, function() + self:SendWeaponAnim( ACT_SHOTGUN_PUMP ) + self:EmitSound("Weapon_Shotgun.Special1") + end) + return self:CallBaseFunction("PrimaryAttack") +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_trash/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_trash/shared.lua new file mode 100644 index 000000000..d7d6047b0 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_trash/shared.lua @@ -0,0 +1,120 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "Fireball Spell" +SWEP.HasCModel = true +SWEP.Slot = 5 + +SWEP.RenderGroup = RENDERGROUP_BOTH + +end + + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_scout_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "" + +SWEP.ShootSound = "" +SWEP.ShootCritSound = "" + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.8 +SWEP.ReloadSingle = false + +SWEP.HasCustomMeleeBehaviour = true + +SWEP.HoldType = "MELEE_ALLCLASS" +SWEP.HoldTypeHL2 = "grenade" + +SWEP.ProjectileShootOffset = Vector(0, 0, 0) + +SWEP.Properties = {} +SWEP.Force = 800 +SWEP.AddPitch = -4 + +SWEP.VM_DRAW = ACT_ITEM1_VM_DRAW +SWEP.VM_IDLE = ACT_ITEM1_VM_IDLE +SWEP.VM_PRIMARYATTACK = ACT_SPELL_VM_FIRE + +function SWEP:InspectAnimCheck() + self:CallBaseFunction("InspectAnimCheck") + self.VM_DRAW = ACT_SPELL_VM_DRAW + self.VM_IDLE = ACT_SPELL_VM_IDLE + self.VM_HITCENTER = ACT_SPELL_VM_FIRE + self.VM_SWINGHARD = ACT_SPELL_VM_FIRE + self.VM_INSPECT_START = ACT_ITEM3_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_ITEM3_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_ITEM3_VM_INSPECT_END + + end + +function SWEP:PredictCriticalHit() +end + +function SWEP:MeleeAttack() + if SERVER then + local rocket = ents.Create("tf_projectile_capsule") + rocket:SetPos(self:ProjectileShootPos()) + local ang = self.Owner:EyeAngles() + + if self.WeaponMode == 1 then + local charge = (CurTime() - self.ChargeStartTime) / self.ChargeTime + rocket.Gravity = Lerp(1 - charge, self.MinGravity, self.MaxGravity) + rocket.BaseSpeed = Lerp(charge, self.MinForce, self.MaxForce) + ang.p = ang.p + Lerp(1 - charge, self.MinAddPitch, self.MaxAddPitch) + end + + rocket:SetAngles(ang) + + + for k,v in pairs(self.Properties) do + rocket[k] = v + end + + rocket:SetOwner(self.Owner) + self:InitProjectileAttributes(rocket) + rocket.ExplosionSound = self.CustomExplosionSound + + rocket:Spawn() + rocket:Activate() + end +end + +function SWEP:PrimaryAttack() + if not self:CallBaseFunction("PrimaryAttack") then return false end + + if SERVER then + self.Owner:Speak("TLK_JARATE_LAUNCH") + end + + self.VM_DRAW = ACT_SPELL_VM_DRAW + self.VM_IDLE = ACT_SPELL_VM_IDLE + self.VM_HITCENTER = ACT_SPELL_VM_FIRE + self.VM_SWINGHARD = ACT_SPELL_VM_FIRE + self.VM_INSPECT_START = ACT_ITEM3_VM_INSPECT_START + self.VM_INSPECT_IDLE = ACT_ITEM3_VM_INSPECT_IDLE + self.VM_INSPECT_END = ACT_ITEM3_VM_INSPECT_END + self:SendWeaponAnim(self.VM_PRIMARYATTACK) + self.Owner:DoAnimationEvent(ACT_MP_THROW,true) + self.Owner:EmitSoundEx("misc/halloween/spell_fireball_cast.wav") + self.Owner.NextGiveAmmo = CurTime() + (self.Properties.ReloadTime or 20) + self.Owner.NextGiveAmmoType = self.Primary.Ammo + + self.NextIdle = CurTime() + self:SequenceDuration() - 0.2 + + --self.NextMeleeAttack = CurTime() + 0.25 + if not self.NextMeleeAttack then + self.NextMeleeAttack = {} + end + + table.insert(self.NextMeleeAttack, CurTime() + 0.01) +end diff --git a/gamemodes/tf/entities/weapons/tf_weapon_trenchknife/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_trenchknife/shared.lua new file mode 100644 index 000000000..c76cb4876 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_trenchknife/shared.lua @@ -0,0 +1,150 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +if CLIENT then + +SWEP.PrintName = "SMG1 Versus Mode" +SWEP.RenderGroup = RENDERGROUP_BOTH +SWEP.Slot = 1 + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_smg1.mdl" +SWEP.WorldModel = "models/weapons/w_smg1.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.MuzzleEffect = "muzzle_smg" + +SWEP.ShootSound = Sound("Weapon_SMG1.NPC_Single") +SWEP.ShootCritSound = Sound("Weapon_SMG1.Burst") +SWEP.ReloadSound = Sound("Weapon_SMG1.NPC_Reload") + +SWEP.Primary.ClipSize = 45 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_SECONDARY +SWEP.Primary.Delay = 0.07 +SWEP.ReloadTime = 1.4 +SWEP.BulletsPerShot = 1 +SWEP.BulletSpread = 0.05 +SWEP.IsRapidFire = true +SWEP.ReloadSingle = false +SWEP.BaseDamage = 5 +SWEP.DamageRandomize = 0.4 +SWEP.MaxDamageRampUp = 1.2 +SWEP.MaxDamageFalloff = 0.08 +SWEP.HoldType = "SECONDARY" +SWEP.HoldTypeHL2 = "AR2" + +SWEP.Force = 1100 +SWEP.AddPitch = -4 +SWEP.UseHands = true +SWEP.Properties = {} + + +function SWEP:SecondaryAttack() + self.Owner:DoAnimationEvent(ACT_MP_ATTACK_STAND_MELEE_SECONDARY) + self:SetNextSecondaryFire( CurTime() + 1 ) + self:EmitSound("Weapon_AR2.Double") + self:SendWeaponAnim(ACT_VM_SECONDARYATTACK) + self.Owner:GetViewModel():SetPlaybackRate(1) + self.Owner:DoAnimationEvent(ACT_COMBINE_AR2_ALTFIRE) + local vecAiming = self.Owner:GetAimVector()//GetAutoaimVector( AUTOAIM_2DEGREES ); + + local vecVelocity = vecAiming * 1000 + if SERVER then + local grenade = ents.Create("grenade_ar2") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + + self:InitProjectileAttributes(grenade) + grenade:SetSaveValue( "m_flRadius", 10 ) + grenade:SetSaveValue( "m_flSpeed", vecVelocity:Length() ) + grenade:SetSaveValue( "m_vecAbsVelocity", vecVelocity ) + grenade.NameOverride = self:GetItemData().item_iconname + grenade:SetOwner(self.Owner) + + grenade:Spawn() + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + self:StopTimers() +end + + +function SWEP:Reload() + self:StopTimers() + if CLIENT and _G.NOCLIENTRELOAD then return end + + if self.NextReloadStart or self.NextReload or self.Reloading then return end + + if self.RequestedReload then + if self.Delay and CurTime() < self.Delay then + return false + end + else + ----MsgN("Requested reload!") + self.RequestedReload = true + return false + end + + self.CanInspect = false + + ----MsgN("Reload!") + self.RequestedReload = false + + if self.Primary and self.Primary.Ammo and self.Primary.ClipSize ~= -1 then + local available = self.Owner:GetAmmoCount(self.Primary.Ammo) + local ammo = self:Clip1() + + if ammo < self.Primary.ClipSize and available > 0 then + self.NextIdle = nil + if self.ReloadSingle then + --self:SendWeaponAnim(ACT_RELOAD_START) + self:SendWeaponAnimEx(self.VM_RELOAD_START) + self.Owner:SetAnimation(PLAYER_RELOAD) -- reload start + self.NextReloadStart = CurTime() + (self.ReloadStartTime or self:SequenceDuration()) + else + self:SendWeaponAnimEx(self.VM_RELOAD) + self.Owner:DoAnimationEvent(ACT_GESTURE_RELOAD, true) + if self.ReloadTime == 1.15 then + self.Owner:GetViewModel():SetPlaybackRate(1.4) + end + self.NextIdle = CurTime() + (self.ReloadTime or self:SequenceDuration()) + self.NextReload = self.NextIdle + + self.AmmoAdded = math.min(self.Primary.ClipSize - ammo, available) + self.Reloading = true + + if self.ReloadSound and SERVER then + umsg.Start("PlayTFWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + + --self.reload_cur_start = CurTime() + end + --self:SetNextPrimaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + --self:SetNextSecondaryFire( CurTime() + ( self.Primary.Delay || 0.25 ) + 1.4 ) + return true + end + end +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_wrangler/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_wrangler/shared.lua new file mode 100644 index 000000000..cf514b530 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_wrangler/shared.lua @@ -0,0 +1,169 @@ + if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Wrangler" + SWEP.RenderGroup = RENDERGROUP_BOTH +end + +heavysandvichtaunt = { "vo/heavy_sandwichtaunt01.wav", "vo/heavy_sandwichtaunt02.wav", "vo/heavy_sandwichtaunt03.wav", "vo/heavy_sandwichtaunt04.wav", "vo/heavy_sandwichtaunt05.wav", "vo/heavy_sandwichtaunt06.wav", "vo/heavy_sandwichtaunt07.wav", "vo/heavy_sandwichtaunt08.wav", "vo/heavy_sandwichtaunt09.wav", "vo/heavy_sandwichtaunt10.wav", "vo/heavy_sandwichtaunt11.wav", "vo/heavy_sandwichtaunt12.wav", "vo/heavy_sandwichtaunt13.wav", "vo/heavy_sandwichtaunt14.wav", "vo/heavy_sandwichtaunt15.wav", "vo/heavy_sandwichtaunt16.wav", "vo/heavy_sandwichtaunt17.wav" } + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.Slot = 1 +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_wrangler.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("") +SWEP.SwingCrit = Sound("") +SWEP.HitFlesh = Sound("") +SWEP.HitWorld = Sound("") + +SWEP.BaseDamage = 45 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" +SWEP.Primary.Delay = 30 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" +SWEP.Secondary.Delay = 30 +SWEP.RangedMinHealing = 45 +SWEP.RangedMaxHealing = 85 + +SWEP.HoldType = "ITEM1" +SWEP.HoldTypeHL2 = "pistol" +SWEP.NextFireRocket = 1 +SWEP.NextFireBullets = 0 +SWEP.NextOuch = 3 + +function SWEP:PrimaryAttack() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if not self.NextFireBullets or CurTime()>=self.NextFireBullets then + v.TargetPos = self.Owner:GetEyeTrace().HitPos + if SERVER then + if v:GetLevel() == 1 then + v:RestartGesture(ACT_RANGE_ATTACK1, true) + --v.Model:RestartGesture(ACT_RANGE_ATTACK1, true) + else + v:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + --v.Model:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + end + local ok = v:TakeAmmo1(1) + if ok then + v:ShootBullets() + else + v:EmitSound(v.Sound_Empty) + if not self.NextOuch or CurTime()>=self.NextOuch then + self.Owner:EmitSoundEx("Weapon_Wrangler.Ouch") + self.NextOuch = CurTime() + 3 + end + end + end + if v:GetLevel() >= 2 then + + --v.Model:RestartGesture(ACT_RANGE_ATTACK1, true) + self.NextFireBullets = CurTime() + 0.1 + else + + --v.Model:RestartGesture(ACT_RANGE_ATTACK1_LOW, true) + self.NextFireBullets = CurTime() + 0.13 + end + end + end + end +end + +function SWEP:Think() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + v.Target = nil + if SERVER then + v:SetPoseParameter("aim_pitch", -self.Owner:GetPoseParameter("body_pitch")) + v:SetPoseParameter("aim_yaw", self.Owner:GetPoseParameter("body_yaw")) + v.Model:SetPoseParameter("aim_pitch", -self.Owner:GetPoseParameter("body_pitch")) + v.Model:SetPoseParameter("aim_yaw", self.Owner:GetPoseParameter("body_yaw")) + end + end + end + return self.BaseClass.Think(self) +end + +function SWEP:Holster() + + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if v:GetLevel() == 1 then + v.Shoot_Sound = Sound("Building_Sentrygun.Fire") + elseif v:GetLevel() == 2 then + v.Shoot_Sound = Sound("Building_Sentrygun.Fire2") + elseif v:GetLevel() == 3 then + v.Shoot_Sound = Sound("Building_Sentrygun.Fire3") + end + if SERVER then + v.Wrangled = false + end + if IsValid(animent3) then + animent3:Fire("Kill", "", 0.01) + end + end + end + + + return self.BaseClass.Holster(self) + +end + +function SWEP:Deploy() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if v:GetLevel() == 1 then + v.Shoot_Sound = Sound("Building_Sentrygun.ShaftFire") + elseif v:GetLevel() == 2 then + v.Shoot_Sound = Sound("Building_Sentrygun.ShaftFire2") + elseif v:GetLevel() == 3 then + v.Shoot_Sound = Sound("Building_Sentrygun.ShaftFire3") + end + v.Wrangled = true + if SERVER then + animent3 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent3:SetAngles(v:GetAngles()) + animent3:SetPos(v:GetPos()) + animent3:SetModel("models/buildables/sentry_shield.mdl") + animent3:Spawn() + animent3:SetSkin(v:GetSkin()) + animent3:Activate() + animent3:SetParent(v) + end + end + end + return self.BaseClass.Deploy(self) +end + +function SWEP:SecondaryAttack() + for k,v in pairs(ents.FindByClass("obj_sentrygun")) do + if v:GetOwner() == self.Owner then + if not self.NextFireRocket or CurTime()>=self.NextFireRocket then + v.TargetPos = self.Owner:GetEyeTrace().HitPos + if SERVER then + local ok = v:TakeAmmo2(1) + if ok then + v:ShootRocket() + self.NextFireRocket = CurTime() + 3 + v:RestartGesture(ACT_RANGE_ATTACK2, true) + v.Model:RestartGesture(ACT_RANGE_ATTACK2, true) + else + v:EmitSound(v.Sound_Empty) + self.NextFireRocket = CurTime() + 0.25 + self:SendWeaponAnim(ACT_ITEM1_VM_IDLE_2) + end + end + end + end + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_wrench/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_wrench/shared.lua new file mode 100644 index 000000000..25b4655e7 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_wrench/shared.lua @@ -0,0 +1,185 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +SWEP.Slot = 2 +if CLIENT then + SWEP.GlobalCustomHUD = {HudAccountPanel = true} +end + +SWEP.Spawnable = true +SWEP.AdminSpawnable = false +SWEP.Category = "Team Fortress 2" +SWEP.PrintName = "Wrench" +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/c_models/c_engineer_arms.mdl" +SWEP.WorldModel = "models/weapons/w_models/w_wrench.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_Wrench.Miss") +SWEP.SwingCrit = Sound("Weapon_Wrench.MissCrit") +SWEP.HitFlesh = Sound("Weapon_Wrench.HitFlesh") +SWEP.HitWorld = Sound("Weapon_Wrench.HitWorld") +SWEP.HitBuildingSuccess = Sound("Weapon_Wrench.HitBuilding_Success") +SWEP.HitBuildingFailure = Sound("Weapon_Wrench.HitBuilding_Failure") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Delay = 0.8 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "melee" + +SWEP.NoHitSound = true +SWEP.UpgradeSpeed = 25 + +function SWEP:OnMeleeHit(tr) + if tr.Entity and tr.Entity:IsValid() then + if tr.Entity:IsBuilding() then + local ent = tr.Entity + + if ent.IsTFBuilding and ent:IsFriendly(self.Owner) then + if ent.Sapped == true then + self.Owner:EmitSoundEx("Weapon_Sapper.Removed") + ent:StopSound("TappedRobot") + timer.Stop("SapEnd"..ent:EntIndex()) + timer.Stop("SapSentry2"..ent:EntIndex()) + timer.Stop("SapSentry3"..ent:EntIndex()) + ent.Model:SetPlaybackRate(2) + timer.Simple(2, function() + ent.Model:ResetSequence("idle") + ent:ResetSequence("idle") + end) + umsg.Start("Notice_EntityKilledEntity") + umsg.String("Sapper ("..ent.SappedBy:Nick()..")") + umsg.Short(GAMEMODE:EntityTeam(ent.SappedBy)) + umsg.Short(GAMEMODE:EntityID(ent.SappedBy)) + + umsg.String(self:GetItemData().item_iconname) + + umsg.String(GAMEMODE:EntityDeathnoticeName(self.Owner)) + umsg.Short(GAMEMODE:EntityTeam(self.Owner)) + umsg.Short(GAMEMODE:EntityID(self.Owner)) + + + umsg.Bool(self.Owner.LastDamageWasCrit) + umsg.End() + + ent:StopSound("SappedRobot") + if SERVER then + brokensapper = ents.Create("prop_physics") + brokensapper:SetPos(ent:GetPos() + Vector(math.random(10,40), math.random(10,40), math.random(50,70))) + brokensapper:SetModel("models/buildables/gibs/sapper_gib002.mdl") + brokensapper:Spawn() + brokensapper:Activate() + + brokensapper:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + brokensapper2 = ents.Create("prop_physics") + brokensapper2:SetPos(ent:GetPos() + Vector(math.random(10,40), math.random(10,40), math.random(50,70))) + brokensapper2:SetModel("models/buildables/gibs/sapper_gib001.mdl") + brokensapper2:Spawn() + brokensapper2:Activate() + + brokensapper2:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + end + ent.Sapped = false + end + if SERVER then + + if ent.Sapped == true then return end + local m = ent:AddMetal(self.Owner, self.Owner:GetAmmoCount(TF_METAL)) + if m > 0 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + self.Owner:RemoveAmmo(m, TF_METAL) + umsg.Start("PlayerMetalBonus", self.Owner) + umsg.Short(-m) + umsg.End() + elseif ent:GetState() == 1 then + self.Owner:EmitSoundEx(self.HitBuildingSuccess) + else + self.Owner:EmitSoundEx(self.HitBuildingFailure) + end + end + elseif tr.Entity:IsTFPlayer() and !tr.Entity:IsBuilding() then + + if tr.Entity:IsBuilding() and (tr.Entity:IsFriendly(self.Owner) && self.Owner.playerclass == "Engineer") then return end + self:EmitSound(self.HitFlesh) + + end + end + elseif tr.HitWorld then + if tr.Entity:IsBuilding() and (tr.Entity:IsFriendly(self.Owner) && self.Owner.playerclass == "Engineer") then return end + self:EmitSound(self.HitWorld) + end +end + +function SWEP:SecondaryAttack() + self:SetNextSecondaryFire(CurTime() + 0.5) + local v = self.Owner:GetEyeTrace().Entity + + if v:IsBuilding() and v:GetBuilder() == self.Owner then + if v:GetClass() == "obj_sentrygun" then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + --print(builder.MovedBuildingLevel) + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill") + self.Owner:Move(2, 0) + builder:SetWeaponHoldType("BUILDING_DEPLOYED") + end + elseif v:GetClass() == "obj_dispenser" then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill") + self.Owner:Move(0, 0) + builder:SetWeaponHoldType("BUILDING_DEPLOYED") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != true then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill") + self.Owner:Move(1, 0) + builder:SetWeaponHoldType("BUILDING_DEPLOYED") + end + elseif v:GetClass() == "obj_teleporter" and v:IsExit() != false then + if SERVER then + local builder = self.Owner:GetWeapon("tf_weapon_builder") + if v:GetLevel()==2 then + builder.MovedBuildingLevel = 2 + elseif v:GetLevel()==1 then + builder.MovedBuildingLevel = 1 + elseif v:GetLevel() == 3 then + builder.MovedBuildingLevel = 3 + end + v:Fire("Kill") + self.Owner:Move(1, 1) + builder:SetWeaponHoldType("BUILDING_DEPLOYED") + end + end + end +end + diff --git a/gamemodes/tf/entities/weapons/tf_weapon_wrench_vagineer/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_wrench_vagineer/shared.lua new file mode 100644 index 000000000..164093417 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_wrench_vagineer/shared.lua @@ -0,0 +1,36 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) +end + +if CLIENT then + SWEP.PrintName = "Wrench" +SWEP.Slot = 0 +SWEP.GlobalCustomHUD = {HudAccountPanel = true} +SWEP.RenderGroup = RENDERGROUP_BOTH +end + +SWEP.Base = "tf_weapon_melee_base" + +SWEP.ViewModel = "models/weapons/v_stunbaton.mdl" +SWEP.WorldModel = "models/weapons/w_stunbaton.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Swing = Sound("Weapon_StunStick.Melee_Miss") +SWEP.SwingCrit = Sound("Weapon_StunStick.Melee_Miss") +SWEP.HitFlesh = Sound("Weapon_StunStick.Melee_Hit") +SWEP.HitWorld = Sound("Weapon_StunStick.Melee_HitWorld") + +SWEP.BaseDamage = 65 +SWEP.DamageRandomize = 0.1 +SWEP.MaxDamageRampUp = 0 +SWEP.MaxDamageFalloff = 0 + +SWEP.Primary.Delay = 0.7 +SWEP.ReloadTime = 0.7 + +SWEP.HoldType = "MELEE" +SWEP.HoldTypeHL2 = "melee" +SWEP.UseHands = true +function SWEP:OnMeleeAttack() + self.Owner:DoAnimationEvent(ACT_MELEE_ATTACK_SWING_GESTURE) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/tf_weapon_wtf_launcher/shared.lua b/gamemodes/tf/entities/weapons/tf_weapon_wtf_launcher/shared.lua new file mode 100644 index 000000000..04541e173 --- /dev/null +++ b/gamemodes/tf/entities/weapons/tf_weapon_wtf_launcher/shared.lua @@ -0,0 +1,209 @@ +if SERVER then + AddCSLuaFile( "shared.lua" ) + +end + +SWEP.Slot = 0 +if CLIENT then + +SWEP.PrintName = ":trollface:" + +function SWEP:InitializeCModel() + self:CallBaseFunction("InitializeCModel") + + if IsValid(self.CModel) then + self.CModel:SetBodygroup(1, 1) + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_demoshield" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end + + for _,v in pairs(self.Owner:GetTFItems()) do + if v:GetClass() == "tf_wearable_item_tideturnr" then + self.ShieldEntity = v + v:InitializeCModel(self) + end + end +end + + +function SWEP:ViewModelDrawn() + self:CallBaseFunction("ViewModelDrawn") + + if IsValid(self.ShieldEntity) and IsValid(self.ShieldEntity.CModel) then + self.ShieldEntity:StartVisualOverrides() + self.ShieldEntity.CModel:DrawModel() + self.ShieldEntity:EndVisualOverrides() + end +end + +function SWEP:InitializeWModel2() + self:CallBaseFunction("InitializeWModel2") + + --[[if IsValid(self.WModel2) then + --self.WModel2:SetBodygroup(1, 1) + end]] +end + +end + +SWEP.Base = "tf_weapon_gun_base" + +SWEP.ViewModel = "models/weapons/c_models/c_demo_arms.mdl" +SWEP.WorldModel = "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl" +SWEP.Crosshair = "tf_crosshair3" + +SWEP.Spawnable = false +SWEP.AdminSpawnable = false + +--[[ --Viewmodel Settings Override (left-over from testing; works well) +SWEP.ViewModelFOV = 70 +SWEP.ViewModelFlip = false +]] + +SWEP.MuzzleEffect = "muzzle_grenadelauncher" +PrecacheParticleSystem("muzzle_grenadelauncher") + +SWEP.ShootSound = "common/null.wav" +SWEP.ShootCritSound = "common/null.wav" +SWEP.ReloadSound = "common/null.wav" + +SWEP.Primary.ClipSize = 100000 +SWEP.Primary.DefaultClip = SWEP.Primary.ClipSize +SWEP.Primary.Ammo = TF_PRIMARY +SWEP.Primary.Delay = 0.06 +SWEP.ReloadTime = -1.6 + +SWEP.IsRapidFire = false +SWEP.ReloadSingle = true + +SWEP.HoldType = "SECONDARY" + +SWEP.HoldTypeHL2 = "shotgun" + +SWEP.ProjectileShootOffset = Vector(0, 7, -6) +SWEP.Force = 9900 +SWEP.AddPitch = -4 + +SWEP.PunchView = Angle( -2, 0, 0 ) + +SWEP.Properties = {} + +SWEP.SpinSound = true + +function SWEP:OnEquipAttribute(a, owner) + if a.attribute_class == "mult_clipsize" then + self.SpinSound = false + end +end + + +function SWEP:ShootProjectile() + if SERVER then + grenade = ents.Create("tf_projectile_wtf_pipe") + grenade:SetPos(self:ProjectileShootPos()) + grenade:SetAngles(self.Owner:EyeAngles()) + + if self:Critical() then + grenade.critical = true + end + + for k,v in pairs(self.Properties) do + grenade[k] = v + end + + grenade:SetOwner(self.Owner) + + self:InitProjectileAttributes(grenade) + grenade.NameOverride = self:GetItemData().item_iconname + grenade:Spawn() + + if self:GetItemData().model_player == "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" then + grenade:SetModel("models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl") + grenade.ExplosionSound = Sound("Weapon_Airstrike.Explosion") + end + if self.VM_RELOAD == ACT_PRIMARY_VM_RELOAD_2 then + grenade.DetonateMode = 2 + else + grenade.DetonateMode = 0 + end + + local vel = self.Owner:GetAimVector():Angle() + vel.p = vel.p + self.AddPitch + vel = vel:Forward() * self.Force * (grenade.Mass or 10) + + if self.Owner.TempAttributes.ProjectileModelModifier == 1 then + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-800,800),math.random(-800,800),math.random(-800,800))) + else + grenade:GetPhysicsObject():AddAngleVelocity(Vector(math.random(-2000,2000),math.random(-2000,2000),math.random(-2000,2000))) + end + grenade:GetPhysicsObject():ApplyForceCenter(vel) + end + + + + self:StopTimers() + self:ShootEffects() +end + +function SWEP:InspectAnimCheck() +self.VM_INSPECT_START = ACT_PRIMARY_VM_INSPECT_START +self.VM_INSPECT_IDLE = ACT_PRIMARY_VM_INSPECT_IDLE +self.VM_INSPECT_END = ACT_PRIMARY_VM_INSPECT_END + if self:GetItemData().model_player == "models/weapons/c_models/c_lochnload/c_lochnload.mdl" then + self.ShootSound = Sound("weapons/loch_n_load_shoot.wav") + self.ShootCritSound = Sound("weapons/loch_n_load_shoot_crit.wav") + end + if ( self:GetOwner():KeyPressed( IN_SPEED ) and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_SPEED ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_SPEED ) and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_sprintinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + if ( self:GetOwner():KeyPressed( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting == false and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + timer.Create("StartInspection", self:SequenceDuration(), 1,function() + if self:GetOwner():KeyDown( IN_RELOAD ) then + inspecting_idle = true + else + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + inspecting_idle = false + end + end ) + end + + if ( self:GetOwner():KeyReleased( IN_RELOAD ) and self:Clip1() == self:GetMaxClip1() and inspecting_idle == true and GetConVar("tf_caninspect"):GetBool() and self.Owner:GetInfoNum("tf_reloadinspect", 1) == 1 ) then + if CLIENT then + timer.Create("PlaySpin", 1.07, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end + + --[[ if ( self:GetOwner():GetNWString("inspect") == "inspecting_released" and inspecting_post == false and GetConVar("tf_caninspect"):GetBool() and self.SpinSound == true and !(self.Owner:GetMoveType()==MOVETYPE_NOCLIP) ) then + if CLIENT then + timer.Create("PlaySpin", 2.06, 1, function() surface.PlaySound( "player/taunt_clip_spin_long.wav" ) end) + end + end]] +end + +function SWEP:StopTimers() + self:CallBaseFunction("StopTimers") + timer.Remove("PlaySpin") +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/entities/weapons/unlockables/weapon_alyxgun/shared.lua b/gamemodes/tf/entities/weapons/unlockables/weapon_alyxgun/shared.lua similarity index 100% rename from addon/gamemodes/teamfortress/entities/weapons/unlockables/weapon_alyxgun/shared.lua rename to gamemodes/tf/entities/weapons/unlockables/weapon_alyxgun/shared.lua diff --git a/gamemodes/tf/entities/weapons/weapon_amerknife.lua b/gamemodes/tf/entities/weapons/weapon_amerknife.lua new file mode 100644 index 000000000..8e111a8d0 --- /dev/null +++ b/gamemodes/tf/entities/weapons/weapon_amerknife.lua @@ -0,0 +1,274 @@ + +if (!IsMounted("dod")) then return end +AddCSLuaFile() +SWEP.Base = "weapon_dod_base_gun" +SWEP.Category = "Day of Defeat" +SWEP.PrintName = "Knife" +SWEP.Author = "Daisreich" + +SWEP.Slot = 2 +SWEP.SlotPos = 0 + +SWEP.Spawnable = true + +--SWEP.ViewModel = Model( "models/v_models/v_huntingrifle.mdl" ) +SWEP.ViewModel = Model( "models/weapons/v_amerk.mdl" ) +SWEP.WorldModel = "models/weapons/w_amerk.mdl" +SWEP.UseHands = false +SWEP.HoldType = "knife" +SWEP.Primary.Delay = 0.5 +SWEP.Primary.Ammo = "none" +SWEP.Secondary.Ammo = "none" +SWEP.Primary.Recoil = 0.25 +SWEP.Primary.Automatic = true +SWEP.Secondary.Automatic = true +SWEP.DeployAfterPickup = false +SWEP.HitDistance = 48 +SWEP.IsTryingToBackstab = false +SWEP.SwayScale = 2.6 +SWEP.BobScale = 0 +function SWEP:Deploy() + self:SetWeaponHoldType( self.HoldType ) + local vm = self:GetOwner():GetViewModel() + if SERVER then + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("draw"))) + end + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + local vm = self:GetOwner():GetViewModel() + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("draw")) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + return true +end + +local phys_pushscale = GetConVar( "phys_pushscale" ) + +function SWEP:DealDamage() + + local anim = self:GetSequenceName(self.Owner:GetViewModel():GetSequence()) + + self.Owner:LagCompensation( true ) + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + + -- We need the second part for single player because SWEP:Think is ran shared in SP + if ( (IsValid(tr.Entity) and !tr.Entity:IsTFPlayer()) or tr.HitWorld ) then + if SERVER then + if (!self.IsTryingToBackstab) then + self.Owner:EmitSoundEx( "Weapon_Punch.HitWorld", 75, 100 ) + else + self.Owner:EmitSoundEx( "Weapon_Knife.SlashWorld", 75, 100 ) + end + end + end + + local hit = false + local scale = phys_pushscale:GetFloat() + if ( SERVER && IsValid( tr.Entity ) && ( tr.Entity:IsNPC() || tr.Entity:IsPlayer() || tr.Entity:Health() > 0 ) ) then + if (!self.IsTryingToBackstab) then + self.Owner:EmitSoundEx( "Weapon_Punch.HitPlayer", 75, 100 ) + else + self.Owner:EmitSoundEx( "Weapon_Knife.SlashPlayer", 75, 100 ) + end + + local dmginfo = DamageInfo() + + local attacker = self.Owner + if ( !IsValid( attacker ) ) then attacker = self end + dmginfo:SetAttacker( attacker ) + + dmginfo:SetDamageType(bit.bor(DMG_SLASH,DMG_BLAST)) + dmginfo:SetInflictor( self ) + if (!self.IsTryingToBackstab) then + dmginfo:SetDamage( 60 ) + else + dmginfo:SetDamage( 100 ) + end + SuppressHostEvents( NULL ) -- Let the breakable gibs spawn in multiplayer on client + tr.Entity:TakeDamageInfo( dmginfo ) + SuppressHostEvents( self.Owner ) + + hit = true + + end + + if ( IsValid( tr.Entity ) ) then + local phys = tr.Entity:GetPhysicsObject() + if ( IsValid( phys ) ) then + phys:ApplyForceOffset( self.Owner:GetAimVector() * 80 * phys:GetMass() * scale, tr.HitPos ) + end + end + + if ( SERVER ) then + if ( hit && anim != "fists_uppercut" ) then + self:SetCombo( self:GetCombo() + 1 ) + else + self:SetCombo( 0 ) + end + end + + self.Owner:LagCompensation( false ) + +end + +function SWEP:Think() + + local vm = self.Owner:GetViewModel() + local curtime = CurTime() + + local meleetime = self:GetNextMeleeAttack() + + if ( meleetime > 0 && CurTime() > meleetime ) then + + self:DealDamage() + + self:SetNextMeleeAttack( 0 ) + + end +end + + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + + return true + +end + +function SWEP:SetupDataTables() + + self:NetworkVar( "Float", 0, "NextMeleeAttack" ) + self:NetworkVar( "Float", 1, "NextIdle" ) + self:NetworkVar( "Int", 2, "Combo" ) + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + timer.Stop("Idle2"..self.Owner:EntIndex()) + + return true + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:PrimaryAttack() + self:MeleeAttack(false) +end +function SWEP:SecondaryAttack() + self:MeleeAttack(true) +end + +function SWEP:MeleeAttack( right ) + + if ( !self:CanPrimaryAttack() ) then return end + + if (self.Owner:KeyDown(IN_WALK)) then return end + if (self.ZoomStatus) then + self:ZoomOut() + return + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:EmitSound("Weapon_Knife.Swing",75,100,CHAN_WEAPON) + local anim = "slash2" + if (!right) then + anim = "punch"..math.random(1,2) + end + + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + local vm = self.Owner:GetViewModel() + if SERVER then + if (!right) then + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK) + else + vm:SendViewModelMatchingSequence(vm:LookupSequence(anim)) + end + end + + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence( anim )) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + if (!right) then + self:SetNextMeleeAttack( CurTime() + 0.1 ) + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + self:SetNextPrimaryFire( CurTime() + 0.4 ) + self:SetNextSecondaryFire( CurTime() + 0.4 ) + self.IsTryingToBackstab = false + else + self:SetNextMeleeAttack( CurTime() + 0.3 ) + self:SetNextPrimaryFire( CurTime() + 1.0 ) + self:SetNextSecondaryFire( CurTime() + 1.0 ) + self.IsTryingToBackstab = true + end + +end +function SWEP:Reload() +end + diff --git a/gamemodes/tf/entities/weapons/weapon_dod_base_gun.lua b/gamemodes/tf/entities/weapons/weapon_dod_base_gun.lua new file mode 100644 index 000000000..51791bf8b --- /dev/null +++ b/gamemodes/tf/entities/weapons/weapon_dod_base_gun.lua @@ -0,0 +1,687 @@ + +if (!IsMounted("dod")) then return end +AddCSLuaFile() +SWEP.Author = "Daisreich" +SWEP.IsL4DWeapon = true +SWEP.Slot = 0 +SWEP.SlotPos = 4 +SWEP.BobScale = 0 +SWEP.Spawnable = false +SWEP.SwayScale = 2.6 + +SWEP.ViewModel = Model( "models/v_models/v_silenced_smg.mdl" ) +SWEP.WorldModel = "models/w_models/weapons/w_smg_a.mdl" +SWEP.HoldType = "AR2" +SWEP.Primary.Delay = 0.06 +SWEP.Primary.ClipSize = 50 -- How much bullets are in the mag +SWEP.Primary.DefaultClip = 150 -- How much bullets preloaded when spawned +SWEP.Primary.Damage = 28 +SWEP.Primary.TakeAmmo = 1 +SWEP.Primary.Spread = 0.9 +SWEP.Primary.NumberofShots = 1 +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.Recoil = 0.25 +SWEP.Primary.Automatic = true +SWEP.Secondary.Automatic = true +SWEP.WeaponSkin = 0 + +SWEP.HitDistance = 48 +SWEP.ShootSound = Sound("SMG_Silenced.Fire") +if CLIENT then + local WorldModel = ClientsideModel(SWEP.WorldModel) + + -- Settings... + WorldModel:SetNoDraw(true) + + function SWEP:DrawWorldModel() + local _Owner = self:GetOwner() + + if (IsValid(_Owner)) then + -- Specify a good position + WorldModel:SetSkin(self.WeaponSkin) + WorldModel:SetModel(self.WorldModel) + + local boneid = _Owner:LookupBone("ValveBiped.Bip01_R_Hand") or _Owner:LookupBone("weapon_bone") -- Right Hand + if !boneid then return end + + local matrix = _Owner:GetBoneMatrix(boneid) + if !matrix then return end + + local offsetVec = Vector(0, -2, 0) + local offsetAng = Angle(170, 180, 0) + if (boneid == _Owner:LookupBone("weapon_bone")) then + local offsetVec = Vector(0, -2, 5) + local offsetAng = Angle(-90, -90, 0) + local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles()) + + WorldModel:SetPos(newPos) + WorldModel:SetAngles(newAng) + + WorldModel:SetupBones() + + else + local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles()) + + WorldModel:SetPos(newPos) + WorldModel:SetAngles(newAng) + + WorldModel:SetupBones() + end + else + WorldModel:SetPos(self:GetPos()) + WorldModel:SetAngles(self:GetAngles()) + end + + WorldModel:DrawModel() + end +end + +function SWEP:Deploy() + self:SetWeaponHoldType( self.HoldType ) + if SERVER then + self:SendWeaponAnim(ACT_VM_DEPLOY) + end + local vm = self:GetOwner():GetViewModel() + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:SelectWeightedSequence(ACT_VM_DEPLOY)) , 1, function() + self:SendWeaponAnim(ACT_VM_IDLE) + end) + return true +end + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + + return true + +end + +function SWEP:SetupDataTables() + + self:NetworkVar( "Float", 0, "NextMeleeAttack" ) + self:NetworkVar( "Float", 1, "NextIdle" ) + self:NetworkVar( "Int", 2, "Combo" ) + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:PrimaryAttack() + + if ( !self:CanPrimaryAttack() ) then return end + + local bullet = {} + bullet.Num = self.Primary.NumberofShots + bullet.Src = self.Owner:GetShootPos() + bullet.Dir = self.Owner:GetAimVector() + bullet.Spread = Vector( self.Primary.Spread * 0.1 , self.Primary.Spread * 0.1, 0) + bullet.Tracer = 1 + bullet.Force = self.Primary.Force + bullet.Damage = self.Primary.Damage + bullet.AmmoType = self.Primary.Ammo + + local rnda = self.Primary.Recoil * -1 + local rndb = self.Primary.Recoil * math.random(-1, 1) + + self:ShootEffects() + + self.Owner:FireBullets( bullet ) + self:EmitSound(self.ShootSound, 75) + self.Owner:ViewPunch( Angle( rnda,0,0 ) ) + self:TakePrimaryAmmo(self.Primary.TakeAmmo) + + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + timer.Stop("Idle"..self.Owner:EntIndex()) + local vm = self:GetOwner():GetViewModel() + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:SelectWeightedSequence(ACT_VM_PRIMARYATTACK)) , 1, function() + self:SendWeaponAnim(ACT_VM_IDLE) + end) +end + +local function CopyPoseParams(pEntityFrom, pEntityTo) + if (SERVER) then + for i = 0, pEntityFrom:GetNumPoseParameters() - 1 do + local sPose = pEntityFrom:GetPoseParameterName(i) + pEntityTo:SetPoseParameter(sPose, pEntityFrom:GetPoseParameter(sPose)) + end + else + for i = 0, pEntityFrom:GetNumPoseParameters() - 1 do + local flMin, flMax = pEntityFrom:GetPoseParameterRange(i) + local sPose = pEntityFrom:GetPoseParameterName(i) + pEntityTo:SetPoseParameter(sPose, math.Remap(pEntityFrom:GetPoseParameter(sPose), 0, 1, flMin, flMax)) + end + end +end + +function SWEP:SecondaryAttack( right ) + if SERVER then + self.Owner:DoAnimationEvent( ACT_GMOD_GESTURE_MELEE_SHOVE_2HAND,true,true ) + end + + local anim = "melee" + + local vm = self.Owner:GetViewModel() + vm:SendViewModelMatchingSequence( vm:LookupSequence( anim ) ) + + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("melee")) , 1, function() + self:SendWeaponAnim(ACT_VM_IDLE) + end) + self:SetNextMeleeAttack( CurTime() + 0.1 ) + + self:SetNextPrimaryFire( CurTime() + 0.7 ) + self:SetNextSecondaryFire( CurTime() + 0.7 ) + +end + +local phys_pushscale = GetConVar( "phys_pushscale" ) + +function SWEP:DealDamage() + + local anim = self:GetSequenceName(self.Owner:GetViewModel():GetSequence()) + + self.Owner:LagCompensation( true ) + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + + -- We need the second part for single player because SWEP:Think is ran shared in SP + if ( (IsValid(tr.Entity) and !tr.Entity:IsTFPlayer()) or tr.HitWorld ) then + if SERVER then + self.Owner:EmitSoundEx( "Weapon_Punch.HitWorld" ) + end + end + + local hit = false + local scale = phys_pushscale:GetFloat() + + if ( SERVER && IsValid( tr.Entity ) && ( tr.Entity:IsNPC() || tr.Entity:IsPlayer() || tr.Entity:Health() > 0 ) ) then + self.Owner:EmitSoundEx( "Weapon_Punch.HitPlayer" ) + local dmginfo = DamageInfo() + + local attacker = self.Owner + if ( !IsValid( attacker ) ) then attacker = self end + dmginfo:SetAttacker( attacker ) + + dmginfo:SetInflictor( self ) + dmginfo:SetDamage( 25 ) + dmginfo:SetDamageType(DMG_CLUB) + dmginfo:SetDamageForce( self.Owner:GetRight() * 4912 * scale + self.Owner:GetForward() * 9998 * scale ) -- Yes we need those specific numbers + SuppressHostEvents( NULL ) -- Let the breakable gibs spawn in multiplayer on client + tr.Entity:TakeDamageInfo( dmginfo ) + SuppressHostEvents( self.Owner ) + if (!hit) then + + if (tr.Entity:IsNPC()) then + if (string.find(tr.Entity:GetClass(),"l4d")) then + if SERVER then + if (string.find(tr.Entity:GetModel(),"boomer") or string.find(tr.Entity:GetModel(),"hunter") or string.find(tr.Entity:GetModel(),"common")) then + if (string.find(tr.Entity:GetModel(),"common")) then + + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward_"..table.Random({"01","02","03","04e","04g","04i","04j","04m","04o"})) or (pos == posB && "Shoved_Forward_01") or (pos == posC && "Shoved_Rightward_01") or (pos == posD && "Shoved_Leftward_01") + tr.Entity.Flinching = true + tr.Entity.PlayingAttackAnimation = false + tr.Entity:EmitSound("Zombie.Shoved") + tr.Entity:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity:SequenceDuration(tr.Entity:LookupSequence(anim)), function() + tr.Entity.Flinching = false + end) + else + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward_01") or (pos == posB && "Shoved_Forward") or (pos == posC && "Shoved_Rightward") or (pos == posD && "Shoved_Leftward") + tr.Entity.Flinching = true + tr.Entity.PlayingAttackAnimation = false + tr.Entity:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity:SequenceDuration(tr.Entity:LookupSequence(anim)) - 0.2, function() + tr.Entity.Flinching = false + end) + end + else + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward") or (pos == posB && "Shoved_Forward") or (pos == posC && "Shoved_Rightward") or (pos == posD && "Shoved_Leftward") + tr.Entity.Flinching = true + tr.Entity.PlayingAttackAnimation = false + tr.Entity:EmitSound("Zombie.Shoved") + tr.Entity:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)) - 0.2, function() + tr.Entity.ShovedAnimation.Flinching = false + end) + end + end + end + end + if (tr.Entity:IsPlayer()) then + if (tr.Entity:GetPlayerClass() == "boomer" or tr.Entity:GetPlayerClass() == "hunter") then + if (!tr.Entity.Shoved) then + local ang = self.Owner:GetAngles() + ang.z = 0 + --tr.Entity:SetAngles(ang + Angle(0,180,0)) + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward_01") or (pos == posB && "Shoved_Forward") or (pos == posC && "Shoved_Rightward") or (pos == posD && "Shoved_Leftward") + if SERVER then + local animGuy = ents.Create("npc_vj_creature_base") + animGuy:SetPos(tr.Entity:GetPos()) + animGuy:SetAngles(tr.Entity:GetAngles()) + animGuy:SetOwner(tr.Entity) + tr.Entity:SetParent(animGuy) + animGuy:SetModel(tr.Entity:GetModel()) + animGuy:Spawn() + animGuy:Activate() + animGuy.HasMeleeAttack = false + tr.Entity.ShovedAnimation = animGuy + timer.Stop("ShoveAnimation"..tr.Entity:EntIndex()) + timer.Create("ShoveAnimation"..tr.Entity:EntIndex(), 0.12, 0, function() + animGuy.ShovedAnimation.Flinching = true + animGuy.IsVJBaseSNPC = false + tr.Entity.ShovedAnimation.PlayingAttackAnimation = false + tr.Entity.ShovedAnimation:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)) - 0.2, function() + tr.Entity.ShovedAnimation.Flinching = false + end) + end) + end + tr.Entity.Shoved = true + end + if (IsValid(tr.Entity.ShovedAnimation)) then + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward_01") or (pos == posB && "Shoved_Forward") or (pos == posC && "Shoved_Rightward") or (pos == posD && "Shoved_Leftward") + if SERVER then + timer.Stop("ShoveAnimation"..tr.Entity:EntIndex()) + timer.Create("ShoveAnimation"..tr.Entity:EntIndex(), 0.12, 0, function() + tr.Entity.ShovedAnimation.IsVJBaseSNPC = false + end) + tr.Entity.ShovedAnimation.IsVJBaseSNPC = false + tr.Entity.ShovedAnimation.Flinching = true + tr.Entity.ShovedAnimation.PlayingAttackAnimation = false + tr.Entity.ShovedAnimation:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)) - 0.2, function() + tr.Entity.ShovedAnimation.Flinching = false + end) + end + end + tr.Entity:SetNoDraw(true) + tr.Entity:SetMoveType(MOVETYPE_NONE) + tr.Entity:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED_FG42) + tr.Entity:SetNWBool("Taunting",true) + if SERVER then + net.Start("ActivateTauntCam") + net.Send(tr.Entity) + end + timer.Stop("Shoved"..tr.Entity:EntIndex()) + timer.Stop("BoomerVomit"..tr.Entity:EntIndex()) + timer.Create("Shoved"..tr.Entity:EntIndex(), tr.Entity:SequenceDuration(tr.Entity:LookupSequence("Shoved_Backward_01")) + 0.8 , 1, function() + tr.Entity:SetNWBool("Taunting", false) + tr.Entity:SetMoveType(MOVETYPE_WALK) + if SERVER then + tr.Entity:SetParent() + tr.Entity:SetNoDraw(false) + tr.Entity.ShovedAnimation:Remove() + net.Start("DeActivateTauntCam") + net.Send(tr.Entity) + tr.Entity.Shoved = false + end + end) + else + if (!string.find(tr.Entity:GetModel(),"hulk") && !string.find(tr.Entity:GetModel(),"charger")) then + if (!tr.Entity.Shoved) then + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward") or (pos == posB && "Shoved_Forward") or (pos == posC && "Shoved_Rightward") or (pos == posD && "Shoved_Leftward") + if SERVER then + local animGuy = ents.Create("npc_vj_creature_base") + animGuy:SetPos(tr.Entity:GetPos()) + --animGuy:SetAngles(ang + Angle(0,180,0)) + animGuy:SetAngles(tr.Entity:GetAngles()) + animGuy:SetOwner(tr.Entity) + tr.Entity:SetParent(animGuy) + animGuy:SetModel(tr.Entity:GetModel()) + animGuy:Spawn() + animGuy:Activate() + animGuy.IsVJBaseSNPC = false + animGuy.HasMeleeAttack = false + tr.Entity.ShovedAnimation = animGuy + timer.Stop("ShoveAnimation"..tr.Entity:EntIndex()) + timer.Create("ShoveAnimation"..tr.Entity:EntIndex(), 0.12, 0, function() + animGuy.IsVJBaseSNPC = false + end) + tr.Entity.ShovedAnimation.Flinching = true + tr.Entity.ShovedAnimation.PlayingAttackAnimation = false + tr.Entity.ShovedAnimation:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)), function() + tr.Entity.ShovedAnimation.Flinching = false + end) + end + tr.Entity.Shoved = true + end + if (IsValid(tr.Entity.ShovedAnimation)) then + local posA = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * 115 + local posB = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetForward() * -115 + local posC = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * -115 + local posD = (tr.Entity:GetPos() + tr.Entity:OBBCenter()) + tr.Entity:GetRight() * 115 + local posTable = {posA,posB,posC,posD} + local dist = 99999999999 + local pos = nil + for _,v in ipairs(posTable) do + if (v:Distance(self.Owner:GetPos()) < dist) then + dist = v:Distance(self.Owner:GetPos()) + pos = v + end + end + if pos == nil then return end + local anim = (pos == posA && "Shoved_Backward") or (pos == posB && "Shoved_Forward") or (pos == posC && "Shoved_Rightward") or (pos == posD && "Shoved_Leftward") + if SERVER then + timer.Stop("ShoveAnimation"..tr.Entity:EntIndex()) + timer.Create("ShoveAnimation"..tr.Entity:EntIndex(), 0.12, 0, function() + tr.Entity.ShovedAnimation.IsVJBaseSNPC = false + end) + tr.Entity.ShovedAnimation.IsVJBaseSNPC = false + tr.Entity.ShovedAnimation.Flinching = true + tr.Entity.ShovedAnimation.PlayingAttackAnimation = false + tr.Entity.ShovedAnimation:VJ_ACT_PLAYACTIVITY(anim,true,tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)),true) + timer.Simple(tr.Entity.ShovedAnimation:SequenceDuration(tr.Entity:LookupSequence(anim)), function() + tr.Entity.ShovedAnimation.Flinching = false + end) + end + end + tr.Entity:SetNoDraw(true) + tr.Entity:SetMoveType(MOVETYPE_NONE) + tr.Entity:DoAnimationEvent(ACT_DOD_DEPLOYED) + tr.Entity:SetNWBool("Taunting",true) + if SERVER then + net.Start("ActivateTauntCam") + net.Send(tr.Entity) + end + timer.Stop("Shoved"..tr.Entity:EntIndex()) + timer.Stop("BoomerVomit"..tr.Entity:EntIndex()) + timer.Stop("TongueAttack"..tr.Entity:EntIndex()) + timer.Create("Shoved"..tr.Entity:EntIndex(), tr.Entity:SequenceDuration(tr.Entity:LookupSequence("Shoved_Backward")) + 0.8 , 1, function() + tr.Entity:SetNWBool("Taunting", false) + tr.Entity:SetMoveType(MOVETYPE_WALK) + if SERVER then + tr.Entity:SetParent() + tr.Entity:SetNoDraw(false) + tr.Entity.ShovedAnimation:Remove() + net.Start("DeActivateTauntCam") + net.Send(tr.Entity) + tr.Entity.Shoved = false + end + end) + end + end + end + hit = true + end + + end + + if ( IsValid( tr.Entity ) ) then + local phys = tr.Entity:GetPhysicsObject() + if ( IsValid( phys ) ) then + phys:ApplyForceOffset( self.Owner:GetAimVector() * 80 * phys:GetMass() * scale, tr.HitPos ) + end + end + + if ( SERVER ) then + if ( hit && anim != "fists_uppercut" ) then + self:SetCombo( self:GetCombo() + 1 ) + else + self:SetCombo( 0 ) + end + end + + self.Owner:LagCompensation( false ) + +end + +function SWEP:Think() + + local vm = self.Owner:GetViewModel() + local curtime = CurTime() + + local meleetime = self:GetNextMeleeAttack() + + if ( meleetime > 0 && CurTime() > meleetime ) then + + self:DealDamage() + + self:SetNextMeleeAttack( 0 ) + + end + if SERVER then + CopyPoseParams(self.Owner,vm) + end +end + + +function SWEP:Reload() + local vm = self:GetOwner():GetViewModel() + self:DefaultReload(ACT_VM_RELOAD) + if SERVER then + if (string.find(self:GetClass(),"smg") or string.find(self:GetClass(),"rifle")) then + self.Owner:DoAnimationEvent( ACT_HL2MP_GESTURE_RELOAD_SMG1,true,true ) + umsg.Start("PlaySMGWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + end + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:SelectWeightedSequence(ACT_VM_RELOAD)) , 1, function() + self:SendWeaponAnim(ACT_VM_IDLE) + end) +end + +local cvar_bob = GetConVar("tf_cl_bob") +local cvar_bobup = GetConVar("tf_cl_bobup") +local cvar_bobcycle = GetConVar("tf_cl_bobcycle") + +local bobtime = 0 +local lastbobtime = 0 +local lastspeed = 0 +local cycle = 0 +local speed = 0 +local flmaxSpeedDelta = 0 +local bob_offset = 0 + +function SWEP:CalcViewModelBobHelper( ) + local cl_bob = cvar_bob:GetFloat() + local cl_bobcycle = math.max(cvar_bobcycle:GetFloat(), 0.1) + local cl_bobup = cvar_bobup:GetFloat() + + local ply = LocalPlayer() + + if ply:ShouldDrawLocalPlayer() then return 0 end + + local cltime = CurTime() + local cycle = cltime - math.floor(cltime/cl_bobcycle)*cl_bobcycle + cycle = cycle / cl_bobcycle + if (cycle < cl_bobup) then + cycle = math.pi * cycle / cl_bobup + else + cycle = math.pi + math.pi*(cycle-cl_bobup)/(1.0 - cl_bobup) + end + + local velocity = ply:GetVelocity() + + self.g_verticalBob = math.Clamp(math.sqrt(velocity[1]*velocity[1] + velocity[2]*velocity[2]),-320.0,320.0) * cl_bob + self.g_verticalBob = self.g_verticalBob*0.3 + self.g_verticalBob*0.7*math.sin(cycle) + if (self.g_verticalBob > 4) then + self.g_verticalBob = 4 + elseif (self.g_verticalBob < -7) then + self.g_verticalBob = -7 + end + + local cycle2 = cltime - math.floor(cltime/(cl_bobcycle*2))*(cl_bobcycle*2) + cycle2 = cycle2 / cl_bobcycle*0.5 + if (cycle2 < cl_bobup) then + cycle2 = math.pi * cycle2 / cl_bobup + else + cycle2 = math.pi + math.pi*(cycle2-cl_bobup)/(1.0 - cl_bobup) + end + + self.g_lateralBob = math.Clamp(math.sqrt(velocity[1]*velocity[1] + velocity[2]*velocity[2]),-320.0,320.0) * cl_bob + self.g_lateralBob = self.g_lateralBob*0.3 + self.g_lateralBob*0.7*math.sin(cycle2) + if (self.g_lateralBob > 4) then + self.g_lateralBob = 4 + elseif (self.g_lateralBob < -7) then + self.g_lateralBob = -7 + end + return 0.0 +end + +function SWEP:VectorMA( start, scale, direction, dest ) + --[[ + dest.x = start.x + scale * direction.x; + dest.y = start.y + scale * direction.y; + dest.z = start.z + scale * direction.z; + ]] + return Vector(start.x + scale * direction.x,start.y + scale * direction.y,start.z + scale * direction.z) +end + +function SWEP:CalcViewModelView(vm, oldpos, oldang, newpos, newang) + if (IsValid(self.Owner) and string.StartWith(self.Owner:GetModel(),"models/infected/")) then + return oldpos, oldang + else + -- actual code, for reference + --[[ + + Vector forward, right; + AngleVectors( angles, &forward, &right, NULL ); + + CalcViewmodelBob(); + + // Apply bob, but scaled down to 40% + VectorMA( origin, g_verticalBob * 0.4f, forward, origin ); + + // Z bob a bit more + origin[2] += g_verticalBob * 0.1f; + + // bob the angles + angles[ ROLL ] += g_verticalBob * 0.5f; + angles[ PITCH ] -= g_verticalBob * 0.4f; + + angles[ YAW ] -= g_lateralBob * 0.3f; + + // VectorMA( origin, g_lateralBob * 0.2f, right, origin ); + + ]] + if CLIENT then + local forward = self.Owner:GetForward() + local right = self.Owner:GetRight() + local origin = newpos + local angles = newang + self:CalcViewModelBobHelper() + + // Apply bob, but scaled down to 40% + origin = self:VectorMA( origin, self.g_verticalBob * 0.4, forward, origin ); + + // Z bob a bit more + origin.z = origin.z + self.g_verticalBob * 0.1; + + // bob the angles + angles.r = angles.r + self.g_verticalBob * 0.5; + angles.p = angles.p - self.g_verticalBob * 0.4; + angles.y = angles.y - self.g_lateralBob * 0.3; + + --origin = self:VectorMA( origin, self.g_lateralBob * 0.2, right, origin ); + return origin, angles + else + return oldpos, oldang + end + end +end + diff --git a/gamemodes/tf/entities/weapons/weapon_gmod_hands.lua b/gamemodes/tf/entities/weapons/weapon_gmod_hands.lua new file mode 100644 index 000000000..5c988ca2e --- /dev/null +++ b/gamemodes/tf/entities/weapons/weapon_gmod_hands.lua @@ -0,0 +1,85 @@ + +--if (!IsMounted("cstrike")) then return end +AddCSLuaFile() +SWEP.Base = "weapon_csbase" +SWEP.Category = "Team Fortress 2 Gamemode" +SWEP.PrintName = "Hands" +SWEP.Author = "Daisreich" + +SWEP.Slot = 1 +SWEP.SlotPos = 0 + +SWEP.Spawnable = true +SWEP.ViewModelFOV = 90 + +--SWEP.ViewModel = Model( "models/v_models/v_huntingrifle.mdl" ) +SWEP.ViewModel = Model( "models/weapons/c_arms.mdl" ) +SWEP.WorldModel = "models/empty.mdl" +SWEP.UseHands = true +SWEP.HoldType = "normal" +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Automatic = false +SWEP.Primary.Ammo = "none" + +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = false +SWEP.Secondary.Ammo = "none" + +local weaponSelectionColor = Color( 255, 220, 0, 255 ) +function SWEP:DrawWeaponSelection( x, y, w, t, a ) + weaponSelectionColor.a = a + draw.SimpleText( "C", "creditslogo", x + w / 2, y, weaponSelectionColor, TEXT_ALIGN_CENTER ) + + --baseClass.PrintWeaponInfo( self, x + w + 20, y + t * 0.95, alpha ) +end + +function SWEP:Deploy() + self:SetWeaponHoldType( self.HoldType ) + local vm = self:GetOwner():GetViewModel() + if SERVER then + vm:SendViewModelMatchingSequence(vm:LookupSequence("seq_admire")) + end + return true +end + +local phys_pushscale = GetConVar( "phys_pushscale" ) + +function SWEP:DealDamage() +end + +function SWEP:Think() +end + + +function SWEP:Holster() + + return true + +end + +function SWEP:SetupDataTables() +end + +function SWEP:Initialize() + self:DrawShadow( false ) +end + +function SWEP:Holster() + return true + +end +function SWEP:PrimaryAttack() +end +function SWEP:SecondaryAttack() +end + +function SWEP:Reload() +end + +function SWEP:OnDrop() + if SERVER then + self:Remove() + end +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/weapon_mp44.lua b/gamemodes/tf/entities/weapons/weapon_mp44.lua new file mode 100644 index 000000000..f7184b9b5 --- /dev/null +++ b/gamemodes/tf/entities/weapons/weapon_mp44.lua @@ -0,0 +1,130 @@ + +if (!IsMounted("dod")) then return end +AddCSLuaFile() +SWEP.Base = "weapon_dod_base_gun" +SWEP.Category = "Day of Defeat" +SWEP.PrintName = "MP44" +SWEP.Author = "Daisreich" + +SWEP.Slot = 0 +SWEP.SlotPos = 4 + +SWEP.Spawnable = true + +SWEP.ViewModel = Model( "models/weapons/v_mp44.mdl" ) +SWEP.WorldModel = "models/weapons/w_mp44.mdl" +SWEP.UseHands = false +SWEP.HoldType = "ar2" +SWEP.Primary.Delay = 0.12 +SWEP.Primary.ClipSize = 30 -- How much bullets are in the mag +SWEP.Primary.DefaultClip = 30 -- How much bullets preloaded when spawned +SWEP.Primary.Damage = 50 +SWEP.Primary.TakeAmmo = 1 +SWEP.Primary.Spread = 0.75 +SWEP.Primary.NumberofShots = 1 +SWEP.Primary.Ammo = "SMG1" +SWEP.Secondary.Ammo = "none" +SWEP.Primary.Recoil = 1 +SWEP.Primary.Automatic = true +SWEP.Secondary.Automatic = true +SWEP.DeployAfterPickup = false +SWEP.HitDistance = 48 +SWEP.ShootSound = Sound("Weapon_MP44.Shoot") + +function SWEP:Deploy() + self:SetWeaponHoldType( self.HoldType ) + local vm = self:GetOwner():GetViewModel() + local deploy = "draw" + if SERVER then + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("draw"))) + end + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence(deploy)), 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + return true +end + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + timer.Stop("Idle2"..self.Owner:EntIndex()) + + return true + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:PrimaryAttack() + + if ( !self:CanPrimaryAttack() ) then return end + + local vm = self:GetOwner():GetViewModel() + local bullet = {} + bullet.Num = self.Primary.NumberofShots + bullet.Src = self.Owner:GetShootPos() + bullet.Dir = self.Owner:GetAimVector() + bullet.Spread = Vector( self.Primary.Spread * 0.1 , self.Primary.Spread * 0.1, 0) + bullet.Tracer = 1 + bullet.Force = self.Primary.Force + bullet.Damage = self.Primary.Damage + bullet.AmmoType = self.Primary.Ammo + + local rnda = self.Primary.Recoil * -1 + local rndb = self.Primary.Recoil * math.random(-1, 1) + + self:ShootEffects() + + self.Owner:FireBullets( bullet ) + self:EmitSound(self.ShootSound, 95) + self.Owner:ViewPunch( Angle( rndb,rnda,rndb ) ) + self:TakePrimaryAmmo(self.Primary.TakeAmmo) + + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("shoot"..math.random(1,3)))) + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + local vm = self:GetOwner():GetViewModel() + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("shoot1")) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) +end + +function SWEP:SecondaryAttack( right ) + return false +end +function SWEP:Reload() + local vm = self:GetOwner():GetViewModel() + local reload = "reload" + if (self:Clip1() < 1) then + reload = 'reload' + self:DefaultReload(vm:GetSequenceActivity(vm:LookupSequence("reload"))) + else + self:DefaultReload(vm:GetSequenceActivity(vm:LookupSequence("reload"))) + end + if SERVER then + if (string.find(self:GetClass(),"smg") or string.find(self:GetClass(),"m16a1")) then + self.Owner:DoAnimationEvent( ACT_HL2MP_GESTURE_RELOAD_SMG1,true,true ) + umsg.Start("PlaySMGNormalWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + end + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence(reload)) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/weapon_spade.lua b/gamemodes/tf/entities/weapons/weapon_spade.lua new file mode 100644 index 000000000..48991becb --- /dev/null +++ b/gamemodes/tf/entities/weapons/weapon_spade.lua @@ -0,0 +1,265 @@ + +if (!IsMounted("dod")) then return end +AddCSLuaFile() +SWEP.Base = "weapon_dod_base_gun" +SWEP.Category = "Day of Defeat" +SWEP.PrintName = "Spade" +SWEP.Author = "Daisreich" + +SWEP.Slot = 2 +SWEP.SlotPos = 0 + +SWEP.Spawnable = true + +--SWEP.ViewModel = Model( "models/v_models/v_huntingrifle.mdl" ) +SWEP.ViewModel = Model( "models/weapons/v_spade.mdl" ) +SWEP.WorldModel = "models/weapons/w_spade.mdl" +SWEP.UseHands = false +SWEP.HoldType = "melee2" +SWEP.Primary.Delay = 0.5 +SWEP.Primary.Ammo = "none" +SWEP.Secondary.Ammo = "none" +SWEP.Primary.Recoil = 0.25 +SWEP.Primary.Automatic = true +SWEP.Secondary.Automatic = true +SWEP.DeployAfterPickup = false +SWEP.HitDistance = 48 +SWEP.IsTryingToBackstab = false +SWEP.SwayScale = 2.6 +SWEP.BobScale = 0.35 +function SWEP:Deploy() + self:SetWeaponHoldType( self.HoldType ) + local vm = self:GetOwner():GetViewModel() + if SERVER then + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("draw"))) + end + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + local vm = self:GetOwner():GetViewModel() + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("draw")) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + return true +end + +local phys_pushscale = GetConVar( "phys_pushscale" ) + +function SWEP:DealDamage() + + local anim = self:GetSequenceName(self.Owner:GetViewModel():GetSequence()) + + self.Owner:LagCompensation( true ) + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + + -- We need the second part for single player because SWEP:Think is ran shared in SP + if ( (IsValid(tr.Entity) and !tr.Entity:IsTFPlayer()) or tr.HitWorld ) then + if SERVER then + self.Owner:EmitSoundEx( "Weapon_Spade.HitWorld", 75, 100 ) + end + end + + local hit = false + local scale = phys_pushscale:GetFloat() + if ( SERVER && IsValid( tr.Entity ) && ( tr.Entity:IsNPC() || tr.Entity:IsPlayer() || tr.Entity:Health() > 0 ) ) then + if (!self.IsTryingToBackstab) then + self.Owner:EmitSoundEx( "Weapon_Spade.HitPlayer", 75, 100 ) + else + self.Owner:EmitSoundEx( "Weapon_Knife.SlashPlayer", 75, 100 ) + end + + local dmginfo = DamageInfo() + + local attacker = self.Owner + if ( !IsValid( attacker ) ) then attacker = self end + dmginfo:SetAttacker( attacker ) + + dmginfo:SetDamageType(bit.bor(DMG_SLASH,DMG_BLAST)) + dmginfo:SetInflictor( self ) + if (!self.IsTryingToBackstab) then + dmginfo:SetDamage( 60 ) + else + dmginfo:SetDamage( 100 ) + end + SuppressHostEvents( NULL ) -- Let the breakable gibs spawn in multiplayer on client + tr.Entity:TakeDamageInfo( dmginfo ) + SuppressHostEvents( self.Owner ) + + hit = true + + end + + if ( IsValid( tr.Entity ) ) then + local phys = tr.Entity:GetPhysicsObject() + if ( IsValid( phys ) ) then + phys:ApplyForceOffset( self.Owner:GetAimVector() * 80 * phys:GetMass() * scale, tr.HitPos ) + end + end + + if ( SERVER ) then + if ( hit && anim != "fists_uppercut" ) then + self:SetCombo( self:GetCombo() + 1 ) + else + self:SetCombo( 0 ) + end + end + + self.Owner:LagCompensation( false ) + +end + +function SWEP:Think() + + local vm = self.Owner:GetViewModel() + local curtime = CurTime() + + local meleetime = self:GetNextMeleeAttack() + + if ( meleetime > 0 && CurTime() > meleetime ) then + + self:DealDamage() + + self:SetNextMeleeAttack( 0 ) + + end +end + + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + + return true + +end + +function SWEP:SetupDataTables() + + self:NetworkVar( "Float", 0, "NextMeleeAttack" ) + self:NetworkVar( "Float", 1, "NextIdle" ) + self:NetworkVar( "Int", 2, "Combo" ) + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + timer.Stop("Idle2"..self.Owner:EntIndex()) + + return true + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:PrimaryAttack() + self:MeleeAttack(false) +end +function SWEP:SecondaryAttack() + self:MeleeAttack(true) +end + +function SWEP:MeleeAttack( right ) + + if ( !self:CanPrimaryAttack() ) then return end + + if (self.Owner:KeyDown(IN_WALK)) then return end + if (self.ZoomStatus) then + self:ZoomOut() + return + end + self.Owner:SetAnimation(PLAYER_ATTACK1) + self:EmitSound("Weapon_Knife.Swing",75,100,CHAN_WEAPON) + local anim = "uberswing" + if (!right) then + anim = "slash"..math.random(1,2) + end + + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + local vm = self.Owner:GetViewModel() + if SERVER then + vm:SendViewModelMatchingSequence( vm:LookupSequence( anim ) ) + end + + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence( anim )) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + if (!right) then + self:SetNextMeleeAttack( CurTime() + 0.1 ) + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + self:SetNextPrimaryFire( CurTime() + 0.4 ) + self:SetNextSecondaryFire( CurTime() + 0.4 ) + self.IsTryingToBackstab = false + else + self:SetNextMeleeAttack( CurTime() + 0.4 ) + self:SetNextPrimaryFire( CurTime() + 1.0 ) + self:SetNextSecondaryFire( CurTime() + 1.0 ) + self.IsTryingToBackstab = true + end + +end +function SWEP:Reload() +end \ No newline at end of file diff --git a/gamemodes/tf/entities/weapons/weapon_thompson.lua b/gamemodes/tf/entities/weapons/weapon_thompson.lua new file mode 100644 index 000000000..cc6119c40 --- /dev/null +++ b/gamemodes/tf/entities/weapons/weapon_thompson.lua @@ -0,0 +1,151 @@ + +if (!IsMounted("dod")) then return end +AddCSLuaFile() +SWEP.Base = "weapon_dod_base_gun" +SWEP.Category = "Day of Defeat" +SWEP.PrintName = "Thompson" +SWEP.Author = "Daisreich" + +SWEP.Slot = 0 +SWEP.SlotPos = 4 + +SWEP.Spawnable = true + +SWEP.ViewModel = Model( "models/weapons/v_thompson.mdl" ) +SWEP.WorldModel = "models/weapons/w_thompson.mdl" +SWEP.UseHands = false +SWEP.HoldType = "ar2" +SWEP.Primary.Delay = 0.085 +SWEP.Primary.ClipSize = 30 -- How much bullets are in the mag +SWEP.Primary.DefaultClip = 30 -- How much bullets preloaded when spawned +SWEP.Primary.Damage = 40 +SWEP.Primary.TakeAmmo = 1 +SWEP.Primary.Spread = 0.955 +SWEP.Primary.NumberofShots = 1 +SWEP.Primary.Ammo = "SMG1" +SWEP.Secondary.Ammo = "none" +SWEP.Primary.Recoil = 2 +SWEP.Primary.Automatic = true +SWEP.Secondary.Automatic = true +SWEP.DeployAfterPickup = false +SWEP.HitDistance = 48 +SWEP.ShootSound = Sound("Weapon_Thompson.Shoot") + +function SWEP:Deploy() + self:SetWeaponHoldType( self.HoldType ) + local vm = self:GetOwner():GetViewModel() + local deploy = "draw" + if SERVER then + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("draw"))) + end + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence(deploy)), 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + return true +end + +function SWEP:Holster() + + self:SetNextMeleeAttack( 0 ) + timer.Stop("Idle2"..self.Owner:EntIndex()) + + return true + +end + +function SWEP:Initialize() + self:SetWeaponHoldType( self.HoldType ) +end + +function SWEP:PrimaryAttack() + + if ( !self:CanPrimaryAttack() ) then return end + + local vm = self:GetOwner():GetViewModel() + local bullet = {} + bullet.Num = self.Primary.NumberofShots + bullet.Src = self.Owner:GetShootPos() + bullet.Dir = self.Owner:GetAimVector() + bullet.Spread = Vector( self.Primary.Spread * 0.1 , self.Primary.Spread * 0.1, 0) + bullet.Tracer = 1 + bullet.Force = self.Primary.Force + bullet.Damage = self.Primary.Damage + bullet.AmmoType = self.Primary.Ammo + + local rnda = self.Primary.Recoil * -1 + local rndb = self.Primary.Recoil * math.random(-1, 1) + + self:ShootEffects() + + self.Owner:FireBullets( bullet ) + self:EmitSound(self.ShootSound, 95) + self.Owner:ViewPunch( Angle( rndb,0,0 ) ) + self:TakePrimaryAmmo(self.Primary.TakeAmmo) + + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("shoot"..math.random(1,3)))) + self:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + local vm = self:GetOwner():GetViewModel() + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("shoot1")) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) +end + +function SWEP:SecondaryAttack( right ) + if SERVER then + self.Owner:DoAnimationEvent( ACT_GMOD_GESTURE_MELEE_SHOVE_2HAND,true,true ) + end + + local anim = "punch" + + local vm = self.Owner:GetViewModel() + vm:SendViewModelMatchingSequence( vm:LookupSequence( anim ) ) + + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("punch")) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) + self:SetNextMeleeAttack( CurTime() + 0.1 ) + + self:SetNextPrimaryFire( CurTime() + 0.4 ) + self:SetNextSecondaryFire( CurTime() + 0.4 ) + +end +function SWEP:Reload() + local vm = self:GetOwner():GetViewModel() + local reload = "reload" + if (self:Clip1() < 1) then + reload = 'reload' + self:DefaultReload(vm:GetSequenceActivity(vm:LookupSequence("reload"))) + else + self:DefaultReload(vm:GetSequenceActivity(vm:LookupSequence("reload"))) + end + if SERVER then + if (string.find(self:GetClass(),"smg") or string.find(self:GetClass(),"m16a1")) then + self.Owner:DoAnimationEvent( ACT_HL2MP_GESTURE_RELOAD_SMG1,true,true ) + umsg.Start("PlaySMGNormalWeaponWorldReload") + umsg.Entity(self) + umsg.End() + end + end + timer.Stop("Idle"..self.Owner:EntIndex()) + timer.Stop("Idle2"..self.Owner:EntIndex()) + timer.Create("Idle"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence(reload)) , 1, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + timer.Create("Idle2"..self.Owner:EntIndex(), vm:SequenceDuration(vm:LookupSequence("idle")) , 0, function() + self:SendWeaponAnim(vm:GetSequenceActivity(vm:LookupSequence("idle"))) + end) + end) +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_camera.lua b/gamemodes/tf/gamemode/cl_camera.lua similarity index 79% rename from addon/gamemodes/teamfortress/gamemode/cl_camera.lua rename to gamemodes/tf/gamemode/cl_camera.lua index b449d139d..5d96e4382 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_camera.lua +++ b/gamemodes/tf/gamemode/cl_camera.lua @@ -16,7 +16,7 @@ local deathcam_rot_approach_speed = CreateConVar("deathcam_rot_approach_speed" , local freezecam_dist = CreateConVar("freezecam_dist" , 100) local freezecam_dist_variation = CreateConVar("freezecam_dist_variation" , 0.5) -local freezecam_delay = CreateConVar("freezecam_delay" , 2.5) +local freezecam_delay = CreateConVar("freezecam_delay" , 2.0) local freezecam_timetoarrive = CreateConVar("freezecam_timetoarrive" , 0.5) local tf_thirdperson = CreateConVar("cam_thirdperson" , 0) @@ -24,7 +24,7 @@ local tf_thirdperson = CreateConVar("cam_thirdperson" , 0) local taunt_angles = Angle(0, 0, 0) local lockangle = nil -ThirdpersonEndDelay = 0.3 +ThirdpersonEndDelay = 0 SensitivityMultiplier = 0.0032 LagMultiplier = 2 @@ -55,7 +55,7 @@ end) --[[ hook.Add("DoPlayerDeath", "SetPlayerKiller", function(pl, attacker) - print("penis", attacker) + --print("penis", attacker) if pl==attacker or attacker:IsWorld() or not attacker:IsPlayer() or not attacker:IsNPC() then pl.Killer = nil else @@ -67,12 +67,30 @@ hook.Add("CreateMove", "TauntMove", function(cmd) local s = SensitivityMultiplier * sensitivity:GetFloat() taunt_angles.pitch = taunt_angles.pitch + cmd:GetMouseY() * GetConVar("m_pitch"):GetFloat() taunt_angles.yaw = taunt_angles.yaw - cmd:GetMouseX() * GetConVar("m_yaw"):GetFloat() - if LocalPlayer():GetNWBool("Taunting") then + + if (LocalPlayer():GetNWBool("Congaing")) then + cmd:SetForwardMove(50) + cmd:SetSideMove(0) + end + + if (LocalPlayer():GetNWBool("Bonked")) then + cmd:RemoveKey(IN_ATTACK) + end + if (LocalPlayer():GetNWBool("Taunting") or LocalPlayer():IsPlayingTaunt()) and !LocalPlayer().CameraTest then if lockangle == nil then lockangle = taunt_angles * 1 end - - cmd:SetViewAngles(lockangle) + + if (LocalPlayer():GetPlayerClass() != "tank_l4d" and !LocalPlayer():IsPlayingTaunt() and LocalPlayer().IsThirdperson) then + cmd:SetViewAngles(lockangle) + elseif (LocalPlayer():GetPlayerClass() != "tank_l4d" and !LocalPlayer():IsPlayingTaunt() and !LocalPlayer().IsThirdperson) then + cmd:SetViewAngles(LocalPlayer():EyeAngles()) + end + cmd:ClearButtons() + cmd:ClearMovement() + return true + + elseif (LocalPlayer():GetNWBool("Taunting") or LocalPlayer():IsPlayingTaunt()) and LocalPlayer().CameraTest then cmd:ClearButtons() cmd:ClearMovement() return true @@ -151,8 +169,12 @@ function SetDesiredCenteredView(pl, origin, ang, tbl) else pl.CurrentView.distance = Lerp(lag, pl.CurrentView.distance, pl.TargetView.distance) end - if pl.FirstReality then - return {angles = pl.CurrentView.angles, origin = origin, drawviewer = true} + if pl.FirstReality or pl.CameraTest then + if (pl.CameraTest) then + return {angles = pl.CurrentView.angles, origin = origin, drawviewer = false} + else + return {angles = pl.CurrentView.angles, origin = origin, drawviewer = true} + end else return {angles = pl.CurrentView.angles, origin = origin - pl.CurrentView.distance * pl.CurrentView.angles:Forward(), drawviewer = true} end @@ -163,50 +185,28 @@ hook.Add("CalcView", "TFCalcView", function(pl, pos, ang, fov) return end - if IsValid(GetViewEntity()) and GetViewEntity() ~= pl then - return - end - - -------------------------------------------------------------------------------------------- - -- FREEZECAM - if pl.FrozenScreen then - return {origin = pl.FreezeCamPos, angles = pl.FreezeCamAng} - end - - if pl.FreezeCam then - local targetpos - if IsValid(pl.FreezeCamTarget) then - targetpos = ViewTarget(pl.FreezeCamTarget) - elseif pl.FreezeCamDefaultTargetPos then - targetpos = pl.FreezeCamDefaultTargetPos - else - return StopFreezeCam() - end - - local targetang = (targetpos-pl.FreezeCamPos):Angle() - targetang.p = 0 - - local tr = util.TraceLine{ - start = targetpos, - endpos = targetpos - targetang:Forward() * pl.FreezeCamDistance, - filter = pl.FreezeCamTarget, - } - - targetpos = tr.HitPos - - local d = pl.FreezeCamPos:Distance(targetpos) - pl.FreezeCamSpeed = math.Clamp(FreezecamSpeedMultiplier * pl.FreezeCamStartPos:Distance(targetpos) / freezecam_timetoarrive:GetFloat(), - FreezecamMinSpeed, FreezecamMaxSpeed) - if dpl.NextFreezeCam then - local viewpos = pl.DeathCamPos - pl.CurrentView.distance * pl.CurrentView.angles:Forward() + if pl.NextFreezeCam and CurTime()>pl.NextFreezeCam && IsValid(killer) then pl.NextFreezeCam = nil - StartFreezeCam(viewpos, killer, pl.LastKillerPos) - return SetDesiredCenteredView(pl, pl.DeathCamPos, pl.CurrentDeathcamAngle, { - dist=dist, - defaultdist=10, - lag=deathcam_lag:GetFloat() - }) + StartFreezeCam(pos, killer, pl.LastKillerPos) end local dist @@ -244,7 +238,7 @@ hook.Add("CalcView", "TFCalcView", function(pl, pos, ang, fov) dist = deathcam_dist:GetFloat() end - local rag = pl:GetRagdollEntity() + local rag = pl:GetRagdollEntity() or pl.RagdollEntity if IsValid(rag) then local origin local bone = rag:GetPhysicsObjectNum(0) @@ -271,16 +265,6 @@ hook.Add("CalcView", "TFCalcView", function(pl, pos, ang, fov) else pl.CurrentDeathcamAngle.y = targetang.y end - - return SetDesiredCenteredView(pl, pl.DeathCamPos, pl.CurrentDeathcamAngle, { - dist=dist, - lag=deathcam_lag:GetFloat() - }) - else - return SetDesiredCenteredView(pl, pl.DeathCamPos, ang, { - dist=dist, - lag=deathcam_lag:GetFloat() - }) end else if pl.LastDead then @@ -295,10 +279,19 @@ hook.Add("CalcView", "TFCalcView", function(pl, pos, ang, fov) -------------------------------------------------------------------------------------------- -- THIRD PERSON - if not pl.IsThirdperson and not tf_thirdperson:GetBool() then - return + if not pl.IsThirdperson and not tf_thirdperson:GetBool() and not pl:IsPlayingTaunt() then + if (!pl.CameraTest) then + return + end + end + -------------------------------------------------------------------------------------------- + -- FREEZECAM + if pl.FrozenScreen then + return {origin = pl.FreezeCamPos, angles = pl.FreezeCamAng} end + + if pl.SimulatedCamera and pl.CameraAngles then ang = pl.CameraAngles end @@ -307,26 +300,46 @@ hook.Add("CalcView", "TFCalcView", function(pl, pos, ang, fov) if pl:IsHL2() then pos = pl:GetBonePosition(pl:LookupBone("ValveBiped.Bip01_Head1"))+(ang:Up()*10)+(ang:Forward()*5) pl:ManipulateBoneScale(pl:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0)) - pos = pl:GetBonePosition(pl:LookupBone("ValveBiped.Bip01_Head1"))+(ang:Up()*10)+(ang:Forward()*5) + elseif (pl:IsL4D()) then + pl:ManipulateBoneScale(0, Vector(0,0,0)) + pos = pl:GetBonePosition(0)+(ang:Up()*10)+(ang:Forward()*5) - pl:EyeAngles():Forward() else pl:ManipulateBoneScale(pl:LookupBone("bip_head"), Vector(0,0,0)) - pos = pl:GetBonePosition(pl:LookupBone("bip_head"))+(ang:Up()*10)+(ang:Forward()*5) + if (pl:LookupBone( "prp_helmet" ) != nil) then + pl:ManipulateBoneScale(pl:LookupBone("prp_helmet"), Vector(0,0,0)) + elseif (pl:LookupBone( "prp_hat" ) != nil) then + pl:ManipulateBoneScale(pl:LookupBone("prp_hat"), Vector(0,0,0)) + end + pos = pl:GetBonePosition(pl:LookupBone("bip_head"))+(ang:Up()*10) +(ang:Forward()*5) end - end + else - if pl.TauntingCam then + if pl:IsHL2() then + pl:ManipulateBoneScale(pl:LookupBone("ValveBiped.Bip01_Head1"), Vector(1,1,1)) -- we can't let them see a shrunk head when transferring back! + elseif pl:IsL4D() then + pl:ManipulateBoneScale(0, Vector(1,1,1)) -- we can't let them see a shrunk head when transferring back! + else + pl:ManipulateBoneScale(pl:LookupBone("bip_head"), Vector(1,1,1)) + end + + if (pl:LookupBone( "prp_helmet" ) != nil) then + pl:ManipulateBoneScale(pl:LookupBone("prp_helmet"), Vector(1,1,1)) + elseif (pl:LookupBone( "prp_hat" ) != nil) then + pl:ManipulateBoneScale(pl:LookupBone("prp_hat"), Vector(1,1,1)) + end + + end + + if pl.TauntingCam and !pl.CameraTest then ang = taunt_angles else ang = taunt_angles + pl:GetViewPunchAngles() ang = Angle(Angle(math.Clamp(ang.p, -80, 80), ang.y, ang.r)) local angle = (util.QuickTrace(pos, ang:Forward() * 5024, pl).HitPos - pl:GetShootPos()):Angle() pl:SetEyeAngles(Angle(angle.p, angle.y, ang.r)) - if !pl.FirstReality and !pl.SimulatedCamera then - pos = pl:GetPos() + pl:GetViewOffset() + ang:Forward() * 75 + ang:Right() * 25 - end end - if pl.NextEndThirdperson then + if pl.NextEndThirdperson and !pl.CameraTest then if CurTime()>pl.NextEndThirdperson then pl.NextEndThirdperson = nil pl.IsThirdperson = false @@ -343,12 +356,7 @@ hook.Add("CalcView", "TFCalcView", function(pl, pos, ang, fov) pl:SetEyeAngles(taunt_angles) end pl.CurrentView.angles = ang - pl.CurrentView.distance = Lerp((pl.NextEndThirdperson - CurTime())/ThirdpersonEndDelay, 0, pl.TargetView.distance) - if pl:IsHL2() then - pl:ManipulateBoneScale(pl:LookupBone("ValveBiped.Bip01_Head1"), Vector(1,1,1)) -- we can't let them see a shrunk head when transferring back! - else - pl:ManipulateBoneScale(pl:LookupBone("bip_head"), Vector(1,1,1)) - end + pl.CurrentView.distance = GetConVar("fov_desired"):GetFloat() return {angles = pl.CurrentView.angles, origin = pos - pl.CurrentView.distance * pl.CurrentView.angles:Forward(), drawviewer = true} end end @@ -392,8 +400,9 @@ function GM:RenderScreenspaceEffects() end end -function GM:ShouldDrawLocalPlayer() - return LocalPlayer().IsThirdperson +function GM:ShouldDrawLocalPlayer() + if ( LocalPlayer():IsPlayingTaunt() ) then return true end + return LocalPlayer().IsThirdperson and !LocalPlayer().CameraTest end function StartThirdperson() @@ -410,7 +419,9 @@ function EndThirdperson(immediate) LocalPlayer().NextEndThirdperson = nil LocalPlayer().IsThirdperson = false else - LocalPlayer().NextEndThirdperson = CurTime() + ThirdpersonEndDelay + if (LocalPlayer().IsThirdperson) then + LocalPlayer().NextEndThirdperson = CurTime() + ThirdpersonEndDelay + end end end @@ -419,23 +430,31 @@ net.Receive("ActivateTauntCam", function() LocalPlayer().IsThirdperson = true LocalPlayer().CurrentView = nil LocalPlayer().TauntingCam = true + LocalPlayer().NextEndThirdperson = nil lockangle = LocalPlayer():GetAngles() taunt_angles = LocalPlayer():GetAngles() end) net.Receive("DeActivateTauntCam", function() if LocalPlayer().FirstReality == true then return end - LocalPlayer().NextEndThirdperson = CurTime() + ThirdpersonEndDelay + if (LocalPlayer().IsThirdperson) then + LocalPlayer().NextEndThirdperson = CurTime() + ThirdpersonEndDelay + end +end) +net.Receive("DeActivateTauntCamImmediate", function() + if LocalPlayer().FirstReality == true then return end + LocalPlayer().NextEndThirdperson = nil + LocalPlayer().IsThirdperson = false end) function StartSimulatedCamera() LocalPlayer().SimulatedCamera = true - print(LocalPlayer().CameraAngles) + --print(LocalPlayer().CameraAngles) LocalPlayer().CameraAngles = nil end function PrintSimulatedCamera() - print(LocalPlayer().CameraAngles) + --print(LocalPlayer().CameraAngles) end function EndSimulatedCamera() @@ -481,7 +500,7 @@ function StartFreezeCam(startpos, target, defaultpos) LocalPlayer().FreezeCamSpeed = math.Clamp(FreezecamSpeedMultiplier * startpos:Distance(targetpos) / freezecam_timetoarrive:GetFloat(), FreezecamMinSpeed, FreezecamMaxSpeed) - LocalPlayer():EmitSound("misc/freeze_cam.wav") + --LocalPlayer():EmitSound("misc/freeze_cam.wav") end function StopFreezeCam() @@ -612,4 +631,12 @@ concommand.Add("tf_tp_immersive_toggle", function(pl) else EndFirstReality() end +end) + +concommand.Add("tf_camera_test_toggle", function(pl) + if not pl.CameraTest then + LocalPlayer().CameraTest = true + else + LocalPlayer().CameraTest = false + end end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_chatprefix.lua b/gamemodes/tf/gamemode/cl_chatprefix.lua similarity index 92% rename from addon/gamemodes/teamfortress/gamemode/cl_chatprefix.lua rename to gamemodes/tf/gamemode/cl_chatprefix.lua index cac4b953d..8e9828d6c 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_chatprefix.lua +++ b/gamemodes/tf/gamemode/cl_chatprefix.lua @@ -15,8 +15,8 @@ local Tags = isDev = false function DevDetector(ply) - if ply:SteamID() == "STEAM_0:0:36452708" or ply:SteamID() == "STEAM_0:0:35652170" then - isDev = true + if ply:SteamID() == "STEAM_0:0:36452708" or ply:SteamID() == "STEAM_0:0:35652170" or ply:SteamID() == "STEAM_0:1:120914933" then + isDev = true else isDev = false end @@ -24,7 +24,7 @@ end concommand.Add("getweapon", DevDetector) hook.Add("OnPlayerChat", "Tags", function(ply, strText, bTeamOnly) - if IsValid(ply) and ply:SteamID() == "STEAM_0:0:36452708" or ply:SteamID() == "STEAM_0:0:35652170" then + if IsValid(ply) and ply:SteamID() == "STEAM_0:0:36452708" or ply:SteamID() == "STEAM_0:0:35652170" or ply:SteamID() == "STEAM_0:1:120914933" then isDev = true else isDev = false diff --git a/gamemodes/tf/gamemode/cl_conflict.lua b/gamemodes/tf/gamemode/cl_conflict.lua new file mode 100644 index 000000000..477bfbcf1 --- /dev/null +++ b/gamemodes/tf/gamemode/cl_conflict.lua @@ -0,0 +1,134 @@ +for k, v in pairs(engine.GetAddons()) do + --print("addon "..v.wsid.." aka "..v.title.." has been detected!") + if v.wsid == "347309307" and v.mounted == true then + if not game.SinglePlayer() then if not LocalPlayer():IsListenServerHost() then return end end + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("!!CONFLICT!!") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("A addon named "..v.title.." (id "..v.wsid..") has been detected. The addon is conflicting with many core features and other things that is part of Team Fortress 2 Gamemode. Agrimar's Team Fortress 2 Gamemode is not compatible with this version. Please uninstall/disable the addon and reload the map.") + + local conflictbut = vgui.Create("DButton", conflict_help_frame) + conflictbut:SetSize(100, 30) + conflictbut:SetPos(0, 145) + conflictbut:CenterHorizontal(0.5) + conflictbut:SetText("Open Page") + + function conflictbut.DoClick() + steamworks.ViewFile(347309307) + end + elseif v.wsid == "423461816" and v.mounted == true then + if not game.SinglePlayer() then if not LocalPlayer():IsListenServerHost() then return end end + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("!!CONFLICT!!") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("A addon named "..v.title.." (id "..v.wsid..") has been detected. The addon is conflicting with many core features and other things that is part of Team Fortress 2 Gamemode. Please uninstall/disable the addon and reload the map.") + + local conflictbut = vgui.Create("DButton", conflict_help_frame) + conflictbut:SetSize(100, 30) + conflictbut:SetPos(0, 145) + conflictbut:CenterHorizontal(0.5) + conflictbut:SetText("Open Page") + + function conflictbut.DoClick() + steamworks.ViewFile(423461816) + end + elseif v.wsid == "949733637" and v.mounted == true then + if not game.SinglePlayer() then if not LocalPlayer():IsListenServerHost() then return end end + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("!!CONFLICT!!") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("A addon named "..v.title.." (id "..v.wsid..") has been detected. The addon is conflicting with many core features and other things that is part of Team Fortress 2 Gamemode. Please uninstall/disable the addon and reload the map.") + + local conflictbut = vgui.Create("DButton", conflict_help_frame) + conflictbut:SetSize(100, 30) + conflictbut:SetPos(0, 145) + conflictbut:CenterHorizontal(0.5) + conflictbut:SetText("Open Page") + + function conflictbut.DoClick() + steamworks.ViewFile(949733637) + end + elseif v.wsid == "174375624" and v.mounted == true then + if not game.SinglePlayer() then if not LocalPlayer():IsListenServerHost() then return end end + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("!!CONFLICT!!") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("A addon named "..v.title.." (id "..v.wsid..") has been detected. The addon is conflicting with many core features and other things that is part of Team Fortress 2 Gamemode. Please uninstall/disable the addon and reload the map.") + + local conflictbut = vgui.Create("DButton", conflict_help_frame) + conflictbut:SetSize(100, 30) + conflictbut:SetPos(0, 145) + conflictbut:CenterHorizontal(0.5) + conflictbut:SetText("Open Page") + + function conflictbut.DoClick() + steamworks.ViewFile(174375624) + end + elseif v.wsid == "2828787576" and v.mounted == true then + if not game.SinglePlayer() then if not LocalPlayer():IsListenServerHost() then return end end + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("!!CONFLICT!!") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("A addon named "..v.title.." (id "..v.wsid..") has been detected. The addon is conflicting with many core features and other things that is part of Team Fortress 2 Gamemode. Please uninstall/disable the addon and reload the map.") + + local conflictbut = vgui.Create("DButton", conflict_help_frame) + conflictbut:SetSize(100, 30) + conflictbut:SetPos(0, 145) + conflictbut:CenterHorizontal(0.5) + conflictbut:SetText("Open Page") + + function conflictbut.DoClick() + steamworks.ViewFile(2828787576) + end + end +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_crosshairs.lua b/gamemodes/tf/gamemode/cl_crosshairs.lua similarity index 91% rename from addon/gamemodes/teamfortress/gamemode/cl_crosshairs.lua rename to gamemodes/tf/gamemode/cl_crosshairs.lua index e4fbf30b2..7af3cb3e0 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_crosshairs.lua +++ b/gamemodes/tf/gamemode/cl_crosshairs.lua @@ -56,7 +56,7 @@ local function DrawCrosshair(crosshair, scale) end function GM:DrawCrosshair() - if GetConVarNumber("crosshair")==0 or LocalPlayer():GetNWBool("Taunting") then return end + if GetConVarNumber("crosshair")==0 or LocalPlayer():GetNWBool("Taunting") or !file.Exists("gamemodes/tf/content/materials/sprites/tf_crosshairs.vtf","WORKSHOP") then return end local w = LocalPlayer():GetActiveWeapon() -- false is not nil, this will exclude HL2 weapons, which do not have this property, but still have a crosshair diff --git a/gamemodes/tf/gamemode/cl_deathnotice.lua b/gamemodes/tf/gamemode/cl_deathnotice.lua new file mode 100644 index 000000000..8c9c298ce --- /dev/null +++ b/gamemodes/tf/gamemode/cl_deathnotice.lua @@ -0,0 +1,628 @@ +include("cl_killicons.lua") + +local W = ScrW() +local H = ScrH() +local WScale = W/640 +local Scale = H/480 + +surface.CreateFont("TF_Deathnotice", {font = "Verdana", size = 16, weight = 900}) + +Neutral_Color = Color(128, 128, 128, 255) +Red_Color = Color(163, 87, 74) +Blu_Color = Color(85, 124, 131) +--Spectator_Color = Color(128, 128, 128, 255) + +DefaultMessage_Color = Color(251, 235, 202, 255) +DefaultMessageNeg_Color = Color(0, 0, 0, 196) + +local hud_deathnotice_time = GetConVar("hud_deathnotice_time") +local hud_deathnotice_time_local = CreateClientConVar("hud_deathnotice_time_local", 12) + +local Deaths = {} + +local NOTICE_NORMAL = 1 +local NOTICE_HUMILIATION = 2 +local NOTICE_DOMINATION = 3 +local NOTICE_HUMILIATION2 = 4 + +function TranslateKilliconName(name) + if (LocalPlayer():GetPlayerClass() == "gmodplayer") then + if (!string.find(name,"weapon_") && !string.find(name,"grenade_") && !string.find(name,"npc_") && !string.find(name,"monster_") && !string.find(name,"prop_") && !string.find(name,"combine_mine")) then + return KilliconTranslate[name] or "d_"..name + else + return name + end + else + return KilliconTranslate[name] or "d_"..name + end +end + +local function IsHidden(name) + -- Name doesn't start with # + if string.byte(name, 1)~=35 then return false end + + name = string.sub(name, 2) + if NPCData[name] and NPCData[name].team==TEAM_HIDDEN then + return true + else + return false + end +end + +local function GetDeathNoticeID(victim_id, attacker_id, cooperator_id, inflictor) + return util.CRC(Format("%d_%d_%d_%s", victim_id or 0, attacker_id or 0, --[[cooperator_id or 0]] 0, inflictor or "")) +end + +usermessage.Hook("Notice_EntityKilledEntity", function(msg) + if (LocalPlayer() and LocalPlayer():GetPlayerClass() == "gmodplayer") then + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local inflictor = msg:ReadString() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + local cooperator_name = msg:ReadString() + local cooperator_team = msg:ReadShort() + local cooperator_id = msg:ReadShort() + + if (LocalPlayer():GetPlayerClass() == "gmodplayer" and !string.StartWith(inflictor,"weapon_") && !string.find(inflictor,"grenade_") && !string.find(inflictor,"npc_") && !string.find(inflictor,"monster_") && !string.find(inflictor,"prop_") && !string.find(inflictor,"combine_mine")) then + GAMEMODE:AddDeathNotice( attacker_name, attacker_team, inflictor, victim_name, victim_team ) + else + GAMEMODE:AddDeathNotice( attacker_name, attacker_team, string.Replace(string.Replace(TranslateKilliconName(inflictor),"d_",""),"hl_","weapon_"), victim_name, victim_team ) + end + else + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local inflictor = msg:ReadString() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + local cooperator_name = msg:ReadString() + local cooperator_team = msg:ReadShort() + local cooperator_id = msg:ReadShort() + + if cooperator_name=="" then cooperator_name = nil end + + local critical = msg:ReadBool() + + if victim_team ~= TEAM_HIDDEN then + GAMEMODE:TFAddDeathNotice( + attacker_name, + attacker_team, + inflictor, + victim_name, + victim_team, + cooperator_name, + cooperator_team, + nil, + critical, + pid==attacker_id or pid==victim_id or pid==cooperator_id, + GetDeathNoticeID(victim_id, attacker_id, cooperator_id, inflictor) + ) + end + end +end) + +usermessage.Hook("Notice_EntityHumiliationCounter", function(msg) + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local inflictor = msg:ReadString() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + --[[ + local cooperator_name = msg:ReadString() + local cooperator_team = msg:ReadShort() + local cooperator_id = msg:ReadShort() + + if cooperator_name=="" then cooperator_name = nil end]] + + local critical = msg:ReadBool() + + if victim_team ~= TEAM_HIDDEN then + GAMEMODE:TFAddDeathNotice( + attacker_name, + attacker_team, + inflictor, + victim_name, + victim_team, + nil, + 0, + nil, + critical, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, attacker_id, 0, inflictor), + NOTICE_HUMILIATION + ) + end +end) + +usermessage.Hook("Notice_EntityHumiliationLaughCounter", function(msg) + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local inflictor = msg:ReadString() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + --[[ + local cooperator_name = msg:ReadString() + local cooperator_team = msg:ReadShort() + local cooperator_id = msg:ReadShort() + + if cooperator_name=="" then cooperator_name = nil end]] + + local critical = msg:ReadBool() + + if victim_team ~= TEAM_HIDDEN then + GAMEMODE:TFAddDeathNotice( + attacker_name, + attacker_team, + inflictor, + victim_name, + victim_team, + nil, + 0, + nil, + critical, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, attacker_id, 0, inflictor), + NOTICE_HUMILIATION2 + ) + end +end) + +usermessage.Hook("Notice_EntityFinishedOffEntity", function(msg) + if (LocalPlayer() and LocalPlayer():GetPlayerClass() == "gmodplayer") then + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + GAMEMODE:AddDeathNotice( attacker_name, attacker_team, "skull", victim_name, victim_team ) + else + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + GAMEMODE:TFAddDeathNotice( + attacker_name, + attacker_team, + "skull", + victim_name, + victim_team, + nil, + 0, + "finished off ", + false, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, attacker_id, 0, "__finish") + ) + end +end) + +usermessage.Hook("Notice_EntityFell", function(msg) + + if (LocalPlayer() and LocalPlayer():GetPlayerClass() == "gmodplayer") then + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + GAMEMODE:AddDeathNotice( victim_name, victim_team, "skull", victim_name, victim_team ) + else + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + GAMEMODE:TFAddDeathNotice( + victim_name, + victim_team, + "skull", + "", + 0, + nil, + 0, + "fell to a clumsy, painful death", + false, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, 0, 0, "__falldamage") + ) + end +end) + +usermessage.Hook("Notice_EntitySuicided", function(msg) + + if (LocalPlayer() and LocalPlayer():GetPlayerClass() == "gmodplayer") then + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + GAMEMODE:AddDeathNotice( victim_name, victim_team, "skull", victim_name, victim_team ) + else + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + GAMEMODE:TFAddDeathNotice( + victim_name, + victim_team, + "skull", + "", + 0, + nil, + 0, + "bid farewell, cruel world!", + false, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, 0, 0, "__suicide") + ) + end +end) + +usermessage.Hook("Notice_EntityDominatedEntity", function(msg) + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + GAMEMODE:TFAddDeathNotice( + attacker_name, + attacker_team, + "domination", + victim_name, + victim_team, + nil, + 0, + tf_lang.GetRaw("#Msg_Dominating").." ", + false, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, attacker_id, 0, "__domination"), + NOTICE_DOMINATION + ) +end) + +usermessage.Hook("Notice_EntityRevengeEntity", function(msg) + local pid = LocalPlayer():UserID() + + local victim_name = msg:ReadString() + local victim_team = msg:ReadShort() + local victim_id = msg:ReadShort() + + local attacker_name = msg:ReadString() + local attacker_team = msg:ReadShort() + local attacker_id = msg:ReadShort() + + GAMEMODE:TFAddDeathNotice( + attacker_name, + attacker_team, + "domination", + victim_name, + victim_team, + nil, + 0, + tf_lang.GetRaw("#Msg_Revenge").." ", + false, + pid==attacker_id or pid==victim_id, + GetDeathNoticeID(victim_id, attacker_id, 0, "__revenge"), + NOTICE_DOMINATION + ) +end) + +function GM:TFAddDeathNotice(Attacker, team1, Inflictor, Victim, team2, Cooperator, team3, Message, Critical, Highlight, UniqueId, NoticeType) +--print(Attacker, Attacker, Attacker, team1) + if string.find(Attacker, "\1") then + local obj, owner = unpack(string.Explode("\1", Attacker)) + if obj and owner then + Attacker = Format("%s (%s)", tf_lang.GetRaw(obj), tf_lang.GetRaw(owner)) + end + end + + if string.find(Victim, "\1") then + local obj, owner = unpack(string.Explode("\1", Victim)) + if obj and owner then + Victim = Format("%s (%s)", tf_lang.GetRaw(obj), tf_lang.GetRaw(owner)) + end + end + + NoticeType = NoticeType or NOTICE_NORMAL + + if Inflictor then + Inflictor = TranslateKilliconName(Inflictor) + end + + for _,v in ipairs(Deaths) do + if v.id == UniqueId then + local quit = false + + if NoticeType == NOTICE_HUMILIATION then + if v.hitcount and v.hitcount > 0 then + -- Hit counter message received after a hit counter message on the same entity, increase the hit counter + v.hitcount = v.hitcount + 1 + v.right2 = tf_lang.GetFormatted("#Humiliation_Count", v.hitcount).." " + v.time = CurTime() + else + -- Hit counter message received after kill message, update the kill message with a funny comment + v.hitcount = -1 + v.right2 = tf_lang.GetFormatted("#Humiliation_Kill").." " + v.time = CurTime() + end + + quit = true + elseif NoticeType == NOTICE_HUMILIATION2 then + if v.hitcount and v.hitcount > 0 then + -- Hit counter message received after a hit counter message on the same entity, increase the hit counter + v.hitcount = v.hitcount + 1 + v.right2 = tf_lang.GetFormatted("#Humiliation_Count", v.hitcount).." " + v.time = CurTime() + else + -- Hit counter message received after kill message, update the kill message with a funny comment + v.hitcount = -1 + v.right2 = "LAUGH KILL!".." " + v.time = CurTime() + end + + quit = true + elseif v.hitcount then + -- Kill message received after hit counter message, turn the hit counter into a kill message + v.hitcount = -1 + v.right2 = tf_lang.GetFormatted("#Humiliation_Kill").." " + v.time = CurTime() + + quit = true + end + + if quit then + if Critical and not v.critical then + v.critical = true + end + + return + end + end + end + + if NoticeType == NOTICE_HUMILIATION then + Message = tf_lang.GetFormatted("#Humiliation_Count", 1).." " + end + + if Message then + --print(Attacker.." "..Message..Victim) + else + local InflictorName = string.gsub(Inflictor, "^tf_weapon_", "") + if Critical then + --print(Attacker.." killed "..Victim.." using "..InflictorName.." (crit)") + else + --print(Attacker.." killed "..Victim.." using "..InflictorName) + end + end + + local Death = {} + Death.time = CurTime() + Death.id = UniqueId + + if team1 ~= TEAM_HIDDEN then + Death.left = Attacker + end + + if team3 ~= TEAM_HIDDEN then + Death.left2 = Cooperator + end + + if Death.left2 and not Death.left then + Death.left = Death.left2 + Death.left2 = nil + end + + Death.right = Victim + Death.right2 = Message + + Death.icon = Inflictor + + Death.critical = Critical + Death.highlight = Highlight + + if NoticeType == NOTICE_DOMINATION then + if Highlight then + Death.color1 = table.Copy(DefaultMessageNeg_Color) + Death.color2 = table.Copy(DefaultMessageNeg_Color) + Death.color3 = table.Copy(DefaultMessageNeg_Color) + else + Death.color1 = table.Copy(DefaultMessage_Color) + Death.color2 = table.Copy(DefaultMessage_Color) + Death.color3 = table.Copy(DefaultMessage_Color) + end + else + if team1 == -1 or team1 == 1002 then Death.color1 = table.Copy(Neutral_Color) + elseif team1 == 2 then Death.color1 = table.Copy(Red_Color) + elseif team1 == 3 then Death.color1 = table.Copy(Blu_Color) + else Death.color1 = table.Copy(GetTeamSecondaryColor(team1)) end + + if team2 == -1 or team2 == 1002 then Death.color2 = table.Copy(Neutral_Color) + elseif team2 == 2 then Death.color2 = table.Copy(Red_Color) + elseif team2 == 3 then Death.color2 = table.Copy(Blu_Color) + else Death.color2 = table.Copy(GetTeamSecondaryColor(team2)) end + + if team3 == -1 or team3 == 1002 then Death.color3 = table.Copy(Neutral_Color) + elseif team3 == 2 then Death.color3 = table.Copy(Red_Color) + elseif team3 == 3 then Death.color3 = table.Copy(Blu_Color) + else Death.color3 = table.Copy(GetTeamSecondaryColor(team3)) end + end + + if Highlight then Death.color4 = table.Copy(DefaultMessageNeg_Color) + else Death.Color4 = table.Copy(DefaultMessage_Color) end + + if Death.left == Death.right then + Death.left = nil + end + + if NoticeType == NOTICE_HUMILIATION then + Death.hitcount = 1 + end + + table.insert(Deaths, Death) +end + +local function DrawDeath(x, y, death) + local _, _, d_texture_tf = GetKilliconData("d_skull", death.highlight) + local K, color, d_texture = GetKilliconData(death.icon, death.highlight) + local w, h = K.w, K.h + local box_x, box_width, box_height + local x_attacker, x_coop, x_plus + + + box_height = 15 * Scale + local ks = box_height / h + w,h = w*ks, h*ks + + surface.SetFont("TFDefault") + local l_victim, h_text = surface.GetTextSize(death.right) + + local x_victim = x - l_victim - 4 + local x_icon, x_message + + if death.right2 then + local l_message = surface.GetTextSize(death.right2) + x_message = x_victim - l_message + x_icon = x_message - w - 4 + else + x_icon = x_victim - w - 4 + end + + if death.left then + if death.left2 then + local l_coop = surface.GetTextSize(death.left2) + local l_plus = surface.GetTextSize("+") + local l_attacker = surface.GetTextSize(death.left) + + x_coop = x_icon - l_coop - 4 + x_plus = x_coop - l_plus - 4 + x_attacker = x_plus - l_attacker - 4 + else + local l_attacker = surface.GetTextSize(death.left) + x_attacker = x_icon - l_attacker - 4 + end + + box_x = x_attacker-20 + box_width = x-x_attacker+30 + else + box_x = x_icon-20 + box_width = x-x_icon+30 + end + + local y_text = y + math.ceil((box_height-h_text)/2) + 1 + + draw.RoundedBox(4, box_x, y, box_width, box_height, color) + + surface.SetDrawColor(255,255,255,255) + local tex + if death.critical then + tex = surface.GetTextureID(d_texture_tf) + tf_draw.ModTexture(tex, x_icon, y, w, h, Killicons["_images"].d_crit) + end + tex = surface.GetTextureID(d_texture) + tf_draw.ModTexture(tex, x_icon, y, w, h, K) + + // Draw KILLER + if death.left then + draw.SimpleText(death.left, "TFDefault", x_attacker, y_text, death.color1, TEXT_ALIGN_LEFT) + if death.left2 then + draw.SimpleText("+", "TFDefault", x_plus, y_text, death.color3, TEXT_ALIGN_LEFT) + draw.SimpleText(death.left2, "TFDefault", x_coop, y_text, death.color3, TEXT_ALIGN_LEFT) + end + end + + // Draw VICTIM + draw.SimpleText(death.right, "TFDefault", x_victim, y_text, death.color2, TEXT_ALIGN_LEFT) + if death.right2 then + draw.SimpleText(death.right2, "TFDefault", x_message, y_text, death.color4, TEXT_ALIGN_LEFT) + end + + return y + box_height + 5*Scale +end + + +function GM:DrawDeathNotice(x, y) + if (LocalPlayer():GetPlayerClass() == "gmodplayer") then + return self.BaseClass.DrawDeathNotice(self,x,y) + end + if LocalPlayer().InScreenshot then return end + + local hud_deathnotice_time = hud_deathnotice_time:GetFloat() + local hud_deathnotice_time_local = hud_deathnotice_time_local:GetFloat() + --local cleared = true + + x = ScrW() - 25 + y = y * ScrH() + 60 + + -- Draw + local size = #Deaths + local i = 1 + local Death + + while i <= size do + Death = Deaths[i] + + local maxtime = (Death.highlight and hud_deathnotice_time_local) or hud_deathnotice_time + + if Death.time + maxtime > CurTime() then + if (i <= 3) then + y = DrawDeath(x, y, Death) + end + --cleared = false + i = i + 1 + else + table.remove(Deaths, i) + size = size - 1 + end + end + + --[[ + // We want to maintain the order of the table so instead of removing + // expired entries one by one we will just clear the entire table + // once everything is expired. + + -- fucking bullshit garry go suk dik ok + + if cleared then + Deaths = {} + end]] +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_entclientinit.lua b/gamemodes/tf/gamemode/cl_entclientinit.lua similarity index 92% rename from addon/gamemodes/teamfortress/gamemode/cl_entclientinit.lua rename to gamemodes/tf/gamemode/cl_entclientinit.lua index fe07ee829..65b955883 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_entclientinit.lua +++ b/gamemodes/tf/gamemode/cl_entclientinit.lua @@ -19,7 +19,7 @@ end function scripted_ents.Register(tbl, name, reload) if tbl.Type == "ai" then forced_client_class[name] = true - MsgN("Registered clientside functions for class \""..name.."\"") + //--MsgN("Registered clientside functions for class \""..name.."\"") tf_util.SaveFullDebugInfo("clinit_"..name) end @@ -40,7 +40,7 @@ function GM:LoadEntityClientFunctions() if ENT.Type == "ai" then scripted_ents.Register(ENT, class, false) forced_client_class[class] = true - MsgN("Registered clientside functions for class \""..class.."\"") + //--MsgN("Registered clientside functions for class \""..class.."\"") end end end @@ -60,7 +60,7 @@ local function meta_init(ent) local newmeta = class_meta[class] setmetatable(ent:GetTable(), {__index = newmeta}) ent.__metainit = true - MsgFN("Initialized clientside metatable for %s", tostring(ent)) + //MsgFN("Initialized clientside metatable for %s", tostring(ent)) end end end diff --git a/addon/gamemodes/teamfortress/gamemode/cl_hud.lua b/gamemodes/tf/gamemode/cl_hud.lua similarity index 80% rename from addon/gamemodes/teamfortress/gamemode/cl_hud.lua rename to gamemodes/tf/gamemode/cl_hud.lua index b48075a2f..5b3df530a 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_hud.lua +++ b/gamemodes/tf/gamemode/cl_hud.lua @@ -1,3 +1,5 @@ + + function IsCustomHUDVisible(name) for _,v in pairs(LocalPlayer():GetTFItems()) do local gch = v.GlobalCustomHUD @@ -55,6 +57,8 @@ local VGUIFiles = { "hud_weaponselection"; "hud_inspectpanel"; "hud_objectiveflagpanel"; + "hud_objectiveflagpanel_blue"; + "hud_objectivebombpanel"; "hud_demomanpipes"; "hud_mediccharge"; @@ -75,7 +79,8 @@ local VGUIFiles = { "menu_charinfoloadoutsubpanel"; "menu_fullloadoutpanel"; - "scoreboard_playerlist"; + "scoreboard_playerlist"; + "mvmbotlist"; "scoreboard_localstats"; "scoreboard_main"; } @@ -102,11 +107,11 @@ LoadVGUI() include("cl_crosshairs.lua") include("cl_scoreboard.lua") include("cl_chatprefix.lua") - + local W = ScrW() local H = ScrH() -local WScale = W/640 -local Scale = H/480 +local WScale = ScrW()/640 +local Scale = ScrH()/480 if T then T:Remove() end --[[ @@ -125,7 +130,7 @@ T:SetQuality("rarity3")]] local hud_targetid_anyteam = CreateConVar("hud_targetid_anyteam", "0", {FCVAR_CHEAT}) local hud_defaultweaponselect = CreateConVar("hud_defaultweaponselect", "0") -local hl2hudtf = CreateConVar("hud_forcehl2hud", "0") +local hl2hudtf = CreateConVar("tf_forcehl2hud", "0") local HiddenHudElements = { CHudDamageIndicator = 1, @@ -156,7 +161,7 @@ end net.Receive("UpdateLoadout", function() HudWeaponSelection:UpdateLoadout() - print("kk") + --print("kk") end) -- Weapon selection @@ -174,7 +179,7 @@ end concommand.Add("tf_selectslot", function(pl, cmd, args) GAMEMODE:ShowWeaponSelection() - LocalPlayer():EmitSound("Player.WeaponSelectionMoveSlot") + pl:EmitSound("Player.WeaponSelectionMoveSlot") HudWeaponSelection:Select(tonumber(args[1])) end) @@ -188,6 +193,7 @@ function GM:PlayerSlotSelected(slot) end function GM:PlayerBindPress(pl, cmd, down) + if ( string.find( cmd, "gmod_undo" ) ) then return true end if pl:IsHL2() or hud_defaultweaponselect:GetBool() or hl2hudtf:GetBool() or GetConVar("hud_fastswitch"):GetBool() then return end if not down then return end @@ -290,15 +296,67 @@ end -- Using a custom TargetID system function GM:HUDDrawTargetID() - if LocalPlayer():IsHL2() then - return self.BaseClass:HUDDrawTargetID() + if (LocalPlayer():IsHL2()) then + + local tr = util.GetPlayerTrace( LocalPlayer() ) + local trace = util.TraceLine( tr ) + if ( !trace.Hit ) then return end + if ( !trace.HitNonWorld ) then return end + + local text = "ERROR" + local font = "TargetID" + + if ( trace.Entity:IsTFPlayer() ) then + text = GAMEMODE:EntityTargetIDName(trace.Entity) + else + return + --text = trace.Entity:GetClass() + end + + surface.SetFont( font ) + local w, h = surface.GetTextSize( text ) + + local MouseX, MouseY = gui.MousePos() + + if ( MouseX == 0 && MouseY == 0 ) then + + MouseX = ScrW() / 2 + MouseY = ScrH() / 2 + + end + + local x = MouseX + local y = MouseY + + x = x - w / 2 + y = y + 30 + + -- The fonts internal drop shadow looks lousy with AA on + draw.SimpleText( text, font, x + 1, y + 1, Color( 0, 0, 0, 120 ) ) + draw.SimpleText( text, font, x + 2, y + 2, Color( 0, 0, 0, 50 ) ) + draw.SimpleText( text, font, x, y, team.GetColor( GAMEMODE:EntityTeam(trace.Entity) ) ) + + y = y + h + 5 + + local text = trace.Entity:Health() .. "%" + local font = "TargetIDSmall" + + surface.SetFont( font ) + local w, h = surface.GetTextSize( text ) + local x = MouseX - w / 2 + + draw.SimpleText( text, font, x + 1, y + 1, Color( 0, 0, 0, 120 ) ) + draw.SimpleText( text, font, x + 2, y + 2, Color( 0, 0, 0, 50 ) ) + draw.SimpleText( text, font, x, y, team.GetColor( GAMEMODE:EntityTeam(trace.Entity) ) ) + + else + return false end - return false end -local function targetid_trace_condition(tr, ply) +local function targetid_trace_condition(tr,ply) ply = ply or LocalPlayer() - return !ply:IsHL2() and IsValid(tr.Entity) and (tr.Entity:IsPlayer() or tr.Entity:IsNPC()) and (GAMEMODE:EntityTeam(tr.Entity)==ply:Team() or hud_targetid_anyteam:GetBool()) + return !ply:IsHL2() and IsValid(tr.Entity) and (tr.Entity:IsTFPlayer() ) and (GAMEMODE:EntityTeam(tr.Entity)==LocalPlayer():Team()) and tr.Entity:GetMaterial() != "color" and tr.Entity:GetMaterial() != "models/shadertest/shader3" and tr.Entity:GetMaterial() != "models/props_combine/tprings_globe" end function GM:TargetIDThink() @@ -355,6 +413,18 @@ function GM:Think() self.BaseClass:Think() self:TargetIDThink() self:WeaponSelectionThink() + + hook.Add( "PreDrawHalos", "AddWeaponHalos", function() + if (LocalPlayer():GetNWBool("SpawnGlows",false) == true) then + for k,v in ipairs(player.GetAll()) do + if (v:IsFriendly(LocalPlayer()) or LocalPlayer():Team() == TEAM_NEUTRAL) then + local theplrtable = {} + table.insert(theplrtable,v) + halo.Add( theplrtable, team.GetColor(v:Team()), 0, 0, 2, true, true ) + end + end + end + end) end @@ -365,13 +435,13 @@ local indicator_tex = surface.GetTextureID("vgui/damageindicator") local W = ScrW() local H = ScrH() -local WScale = W/640 -local Scale = H/480 +local WScale = ScrW()/640 +local Scale = ScrH()/480 BaseScaleX = 16 BaseScaleY = 16 MaxScale = 6 -MaxDamage = 150 +MaxDamage = 150 function GM:DrawDamageIndicators() --local radius = ScrH() * indicator_radius:GetFloat() diff --git a/gamemodes/tf/gamemode/cl_init.lua b/gamemodes/tf/gamemode/cl_init.lua new file mode 100644 index 000000000..d674f550b --- /dev/null +++ b/gamemodes/tf/gamemode/cl_init.lua @@ -0,0 +1,3187 @@ + + +local LOGFILE = "tf/log_client.txt" +file.Delete(LOGFILE) +file.Append(LOGFILE, "Loading clientside script\n") +local load_time = SysTime() +local blacklist = {["Frying Pan"] = true, ["Golden Frying Pan"] = true, ["The PASSTIME Jack"] = true, ["TTG Max Pistol"] = true, ["Sexo de Pene Gay"] = true, ["Team Spirit"] = true,} -- Items that should NEVER show, must be their item.name if a hat/weapon! +local name_blacklist = {["The AK47"] = true,} -- Weapons that have names of other weapons must have their item.name put in here + +include("cl_hud.lua") +include("tf_lang_module.lua") +include("shd_items.lua") +tf_lang.Load("tf_english.txt") + +include("cl_proxies.lua") +include("cl_pickteam.lua") + +include("cl_conflict.lua") + +include("shared.lua") +include("cl_entclientinit.lua") +include("cl_deathnotice.lua") +include("cl_scheme.lua") + +include("cl_player_other.lua") + +include("cl_camera.lua") + +include("tf_draw_module.lua") + +include("cl_materialfix.lua") + +include("cl_pac.lua") + +include("cl_loadout.lua") + +include("proxies/itemtintcolor.lua") + +include("proxies/sniperriflecharge.lua") +include("proxies/weapon_invis.lua") +include("shd_gravitygun.lua") + + +hook.Add( "PopulateToolMenu", "Civ2Settings1", function() + spawnmenu.AddToolMenuOption( "Options", "Team Fortress 2 Gamemode", "TF2GMCiv2Options", "#Settings", "", "", function( panel ) + panel:ClearControls() + panel:CheckBox( "TF2 CLASSES: Use Minimized Viewmodels", "tf_use_min_viewmodels" ) + panel:CheckBox( "TF2 CLASSES: Give Extra Weapons on Spawn", "tf_give_hl2_weapons" ) + panel:CheckBox( "Enable Pyrovision", "tf_pyrovision" ) + panel:NumSlider( "TF2 SWEPS: Viewmodel FOV", "viewmodel_fov_tf", 52, 120 ) + panel:CheckBox( "TF2 CLASSES: Force HEV Hud", "tf_forcehl2hud" ) + panel:CheckBox( "Enable Debugging for TF Bots", "z_debug" ) + if (IsMounted("left4dead2")) then + panel:CheckBox( "Enable L4D2 Footsteps for GMOD Player", "civ2_enable_survivor_steps" ) + end + panel:Button("Toggle Thirdperson","tf_tp_simulation_toggle","") + panel:Button("Toggle Shoulder Thirdperson","tf_tp_thirdperson_toggle","") + panel:Button("Toggle Immersive View","tf_tp_immersive_toggle","") + panel:NumSlider( "SPECIAL: Voice DSP Type", "tf_special_dsp_type", 1, 135 ) + panel:CheckBox( "Right Handed", "tf_righthand" ) + -- Add stuff here + end ) + spawnmenu.AddToolMenuOption( "Options", "Team Fortress 2 Gamemode", "TF2GMCiv2Customization", "#Customization Settings", "", "", function( panel ) + panel:ClearControls() + panel:CheckBox( "Become a Robot", "tf_robot" ) + panel:CheckBox( "Become a Skeleton", "tf_skeleton" ) + panel:CheckBox( "Become an Ordinary Yeti", "tf_yeti" ) + panel:CheckBox( "Use HWM Models", "tf_usehwmmodels" ) + panel:CheckBox( "Use Advanced Character Models (requires an addon)", "tf_useadvhwmmodels" ) + end ) +end ) + +local function VectorMA( start, scale, direction, dest ) + --[[ + dest.x = start.x + scale * direction.x; + dest.y = start.y + scale * direction.y; + dest.z = start.z + scale * direction.z; + ]] + return Vector(start.x + scale * direction.x,start.y + scale * direction.y,start.z + scale * direction.z) +end + +hook.Add( "CalcView", "SetPosToRagdoll", function( ply, pos, angles, fov ) + physenv.SetGravity( Vector(0,0,-386) ) + if (!ply:Alive()) then + if (IsValid(ply:GetNWEntity("RagdollEntity"))) then + if ((ply:GetObserverMode() == OBS_MODE_DEATHCAM)) then + local ragdoll = ply:GetNWEntity("RagdollEntity") + local newdist = 115 + local origin = ragdoll:GetPos() + if GetConVar("cam_collision"):GetBool() then + local tr = util.TraceHull{ + start = origin, + endpos = origin - newdist * angles:Forward(), + filter = {ply,ragdoll}, + mins = Vector(-3,-3,-3), + maxs = Vector( 3, 3, 3) + } + newdist = 115 * tr.Fraction + local view = { + origin = ragdoll:GetPos() - ( angles:Forward() * newdist ), + fov = fov, + drawviewer = true + } + return view + end + end + end + end +end ) + +if (IsValid(LocalPlayer())) then + EmitSound("replay/downloadcomplete.wav",Vector(0,0,0),0,CHAN_REPLACE,1,0,0,100,0,nil) + LocalPlayer():PrintMessage(HUD_PRINTTALK, "SERVER IS RELOADING THE GAMEMODE DUE TO AN EDIT IN THE GAMEMODE'S CLIENTSIDE CODE - GRAPHICAL OR GAME-BREAKING GLITCHES MAY OCCUR") + LocalPlayer():PrintMessage(HUD_PRINTCENTER, "SERVER IS RELOADING THE GAMEMODE DUE TO AN EDIT IN THE GAMEMODE'S CLIENTSIDE CODE - GRAPHICAL OR GAME-BREAKING GLITCHES MAY OCCUR") +end + +CreateClientConVar("civ2_enable_survivor_steps", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}) +CreateClientConVar("civ2_first_person_deathcam", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}) +CreateClientConVar( "tf_haltinspect", "1", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Whether or not players can inspect while no-clipping." ) +CreateClientConVar( "tf_maxhealth_hud", "1", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Enable maxhealth above health when hurt." ) +CreateClientConVar( "tf_robot", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a robot after respawning." ) +CreateClientConVar( "tf_usehwmmodels", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a higher quality version of your current playermodel after respawning." ) +CreateClientConVar( "tf_usehwmvcds", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "tf_useadvhwmmodels", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a advanced, higher quality version of your current playermodel after respawning." ) +CreateClientConVar( "tank_l4d1_skin", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "tank_dlc3_skin", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "tank_use_dark_carnival_finale_music", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "boomer_l4d1_skin", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "hunter_l4d1_skin", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "smoker_l4d1_skin", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE} ) +CreateClientConVar( "tf_special_dsp_type", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Set your DSP for your Voice - Example: 154 - Engineer Fly Voice" ) +CreateClientConVar( "tf_tfc_model_override", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, /*FCVAR_ARCHIVE*/ FCVAR_DEVELOPMENTONLY}, "Become a TFC Merc after respawning." ) +CreateClientConVar( "tf_giant_robot", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a mighty robot after respawning." ) +CreateClientConVar( "tf_sentrybuster", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a mighty bustah after respawning." ) +CreateClientConVar( "tf_skeleton", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Spooky... https://youtu.be/fPRMLk3jHX4" ) +CreateClientConVar( "tf_yeti", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a ordinary yeti after respawning." ) +CreateClientConVar( "tf_hhh", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become HHH Jr. after respawning." ) +CreateClientConVar( "tf_player_use_female_models", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "For testing. Appends '_female' to the model filename loaded." ) +CreateClientConVar( "civ2_touhou", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Touhou?" ) +CreateClientConVar( "tf_give_hl2_weapons", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE}, "If set to 1, HL2 Weapons will be given to you as an TF2 Class when spawned." ) +--CreateClientConVar( "civ2_bootleg_charger", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Become a bootleg charger after respawning." ) +CreateClientConVar( "tf_dingalingaling_sound", "", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Ding Dong!" ) +CreateClientConVar( "tf_dingalingaling_killsound", "", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Diiinnng...." ) +CreateClientConVar( "civ2_playermodel_reference_pose_prevention", "0", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE}, "Use Animated Props for fixing broken playermodel animations." ) + + +concommand.Add("tf_upgradewep03clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.3 +end) +concommand.Add("check_save_table", function(ply) + PrintTable(ply:GetSaveTable()) +end) +concommand.Add("tf_upgradewep05clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.5 +end) +concommand.Add("tf_upgradewep04clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.4 +end) +concommand.Add("tf_upgradeweprapidfireclientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.15 +end) +concommand.Add("tf_upgradeweprapidfire2clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.07 +end) +concommand.Add("l4d_changeclass", L4DClassSelection) +concommand.Add("l4d2_changeclass", L4DClassSelection) +concommand.Add("tf_changeclass", ClassSelection) +concommand.Add("tf_door", DoorClose) +concommand.Add("tf_hatpainter", HatPicker) +concommand.Add("tf_menu", ClassSelection) + + + + +--[[ +timer.Create("lol",0.2,0,function() m=T:GetBoneMatrix(T:LookupBone("bip_head")) m:Translate(Vector(0,-5,0)) local e=EffectData() e:SetOrigin(m:GetTranslation()) e:SetAngles(Angle(180,0,0)) util.Effect("BloodImpact",e) end) + +LocalPlayer().BuildBonePositions=function(pl) local m = pl:GetBoneMatrix(pl:LookupBone("bip_neck")) m:Scale(Vector(0,0,0)) m:Translate(Vector(0,0,0)) pl:SetBoneMatrix(pl:LookupBone("bip_neck"),m) end + +TBB=function() local m=P:GetBoneMatrix(P:LookupBone("bip_spine_3")) m:Rotate(Angle(-10,0,-20)) m:Translate(Vector(0,-8,-3.5)) T:SetBoneMatrix(T:LookupBone("bip_head"),m) end + +]] + +--include("vgui/vgui_teammenubg.lua") + +--[[ +tf_util.AddDebugInfo("move_x", function() + return "forward : "..tostring(LocalPlayer():GetNWFloat("MoveForward")) +end) + +tf_util.AddDebugInfo("move_y", function() + return "side : "..tostring(LocalPlayer():GetNWFloat("MoveSide")) +end) + +tf_util.AddDebugInfo("move_z", function() + return "up : "..tostring(LocalPlayer():GetNWFloat("MoveUp")) +end)]] + +hook.Add("RenderScreenspaceEffects", "RenderPlayerStateOverlay", function() + if IsValid(LocalPlayer()) then + LocalPlayer():DrawStateOverlay() + end +end) + +concommand.Add("muzzlepos", function(pl) + local att = pl:GetViewModel():GetAttachment(pl:GetViewModel():LookupAttachment("muzzle")) + if not att then return end + + --print(att.Pos - pl:GetShootPos()) +end) + +function GetPlayerByUserID(id) + for _,v in pairs(player.GetAll()) do + if v:UserID()==id then + return v + end + end + return NULL +end + +-- Spawn player gibs +usermessage.Hook("GibPlayer", function(um) + local pl = GetPlayerByUserID(um:ReadLong()) + if not IsValid(pl) then return end + + pl.DeathFlags = um:ReadShort() + + local effectdata = EffectData() + effectdata:SetEntity(pl) + util.Effect("tf_player_gibbed", effectdata) +end) + + +usermessage.Hook("GibPlayerHead", function(um) + local pl = GetPlayerByUserID(um:ReadLong()) + if not IsValid(pl) then return end + + pl.DeathFlags = um:ReadShort() + + local effectdata = EffectData() + effectdata:SetEntity(pl) + util.Effect("tf_tf2_head_gib", effectdata) +end) + +usermessage.Hook("GibNPCHead", function(um) + local npc = um:ReadEntity() + if not IsValid(npc) then return end + + npc.DeathFlags = um:ReadShort() + + local effectdata = EffectData() + effectdata:SetEntity(npc) + effectdata:SetOrigin(npc:GetPos()) + util.Effect("tf_hl2_head_gib", effectdata) +end) + +usermessage.Hook("GibNPC", function(um) + local npc = um:ReadEntity() + if not IsValid(npc) then return end + + npc.DeathFlags = um:ReadShort() + + local effectdata = EffectData() + effectdata:SetEntity(npc) + util.Effect("tf_player_gibbed", effectdata) +end) + +usermessage.Hook("SilenceNPC", function(um) + local npc = um:ReadEntity() + if not IsValid(npc) then return end + + timer.Simple(0, function() npc:EmitSound("AI_BaseNPC.SentenceStop") end) + timer.Simple(0.1, function() npc:EmitSound("AI_BaseNPC.SentenceStop") end) +end) + +-- Critical hit notifications +usermessage.Hook("CriticalHit", function(um) + local pos = um:ReadVector() + ParticleEffect("crit_text", pos, Angle(0,0,0)) +end) + +usermessage.Hook("CriticalHitMini", function(um) + local pos = um:ReadVector() + ParticleEffect("minicrit_text", pos, Angle(0,0,0)) +end) + +usermessage.Hook("CriticalHitMiniOther", function(um) + local pos = um:ReadVector() + sound.Play("TFPlayer.CritHitMini", pos) + ParticleEffect("minicrit_text", pos, Angle(0,0,0)) +end) + +usermessage.Hook("CriticalHitReceived", function(um) + LocalPlayer():EmitSound("TFPlayer.CritPain", 100, 100) +end) + +-- Domination notifications +usermessage.Hook("PlayerDomination", function(um) + local victim = um:ReadEntity() + local attacker = um:ReadEntity() + if not IsValid(victim) or not IsValid(attacker) then + return + end + + if victim == LocalPlayer() then + local data = EffectData() + data:SetOrigin(attacker:GetPos()) + data:SetEntity(attacker) + util.Effect("tf_nemesis_icon", data) + LocalPlayer():EmitSound("Game.Nemesis") + elseif attacker == LocalPlayer() then + LocalPlayer():EmitSound("Game.Domination") + end + + if not victim.NemesisesList then victim.NemesisesList = {} end + if not attacker.DominationsList then attacker.DominationsList = {} end + + victim.NemesisesList[attacker] = true + attacker.DominationsList[victim] = true +end) + +usermessage.Hook("PlayerRevenge", function(um) + local victim = um:ReadEntity() + local attacker = um:ReadEntity() + if not IsValid(victim) or not IsValid(attacker) then + return + end + + if attacker == LocalPlayer() then + if IsValid(victim.NemesisEffect) and victim.NemesisEffect.Destroy then + victim.NemesisEffect:Destroy() + end + LocalPlayer():EmitSound("Game.Revenge") + elseif victim == LocalPlayer() then + LocalPlayer():EmitSound("Game.Revenge") + end + + if attacker.NemesisesList then + attacker.NemesisesList[victim] = nil + end + + if victim.DominationsList then + victim.DominationsList[attacker] = nil + end +end) + +concommand.Add("joinclass", function(pl, cmd, args) + RunConsoleCommand("changeclass "..args) +end, function() return GAMEMODE.PlayerClassesAutoComplete end) +--RunConsoleCommand("snd_restart") +RunConsoleCommand("hud_showloadout","0") +RunConsoleCommand("spawnmenu_reload") +physenv.SetGravity(Vector(0,0,-386)) +usermessage.Hook("PlayerResetDominations", function(um) + local pl = um:ReadEntity() + if not IsValid(pl) then return end + + pl.NemesisesList = nil + pl.DominationsList = nil + + if IsValid(pl.NemesisEffect) and pl.NemesisEffect.Destroy then + pl.NemesisEffect:Destroy() + end + + for _,v in pairs(player.GetAll()) do + if v ~= pl then + if v.NemesisesList then + v.NemesisesList[pl] = nil + end + if v.DominationsList then + v.DominationsList[pl] = nil + end + end + end +end) + +usermessage.Hook("SendPlayerDominations", function(um) + local pl = um:ReadEntity() + if not IsValid(pl) then return end + + local num = um:ReadChar() + if num <= 0 then return end + + pl.DominationsList = {} + for i=1,num do + local k = um:ReadEntity() + if IsValid(pl) then + pl.DominationsList[k] = true + end + end +end) + +local function DoHealthBonusEffect(ent, positive, islargerthan100) + if not IsValid(ent) then return end + if (!islargerthan100) then + islargerthan100 = false + end + + local col = "red" + if ent:EntityTeam()==TEAM_BLU then col = "blu" end + if ent:EntityTeam()==TF_TEAM_PVE_INVADERS then col = "blu" end + + local pos = ent:GetPos() + Vector(0,0,75) + math.Rand(0,4) * Angle(math.Rand(-180,180),math.Rand(-180,180),0):Forward() + if (ent:IsPlayer()) then + pos = ent:GetPos() + ent:GetCurrentViewOffset() + end + + if (ent:IsMiniBoss()) then + if positive then + if (islargerthan100) then + ParticleEffect("healthgained_"..col.."_giant", pos, Angle(0,0,0)) + else + ParticleEffect("healthgained_"..col.."_large", pos, Angle(0,0,0)) + end + else + if (islargerthan100) then + ParticleEffect("healthlost_"..col.."_giant", pos, Angle(0,0,0)) + else + ParticleEffect("healthlost_"..col.."_large", pos, Angle(0,0,0)) + end + end + else + if positive then + ParticleEffect("healthgained_"..col, pos, Angle(0,0,0)) + else + ParticleEffect("healthlost_"..col, pos, Angle(0,0,0)) + end + end +end + +local function TransferBones( base, ragdoll ) -- Transfers the bones of one entity to a ragdoll's physics bones (modified version of some of RobotBoy655's code) + if !IsValid( base ) or !IsValid( ragdoll ) then return end + for i = 0, ragdoll:GetPhysicsObjectCount() - 1 do + local bone = ragdoll:GetPhysicsObjectNum( i ) + if ( IsValid( bone ) ) then + local pos, ang = base:GetBonePosition( ragdoll:TranslatePhysBoneToBone( i ) ) + if ( pos ) then bone:SetPos( pos ) end + if ( ang ) then bone:SetAngles( ang ) end + end + end +end + +net.Receive("TauntAnim", function() + local ply = net.ReadEntity() + local anim = net.ReadInt(32) + local autokill = net.ReadBool() + + ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_VCD, anim, 0, autokill ) +end) +net.Receive("TFGestureAnim", function() + local ply = net.ReadEntity() + local anim = net.ReadInt(32) + local autokill = net.ReadBool() + + ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_FLINCH, anim, 0, autokill ) +end) +net.Receive("TFRagdollCreate", function() + local ply = net.ReadEntity() + local ragdoll = ClientsideRagdoll( ply:GetModel() ) + if (!IsValid(ragdoll)) then return end + ply:SetNWEntity("RagdollEntity",ragdoll) + ply.RagdollEntity = ragdoll + ragdoll:SetSkin(ply:GetSkin()) + ragdoll:SetNoDraw( false ) + ragdoll:DrawShadow( true ) + if (IsValid(ragdoll:GetPhysicsObject())) then + local phys = ragdoll:GetPhysicsObject() + phys:SetPos(ply:GetPos()) + phys:AddVelocity(net.ReadVector() * 10) + end + timer.Simple(15, function() + ragdoll:SetSaveValue( "m_bFadingOut", true ) + end) + TransferBones(ply,ragdoll) + gamemode.Call("SetupPlayerRagdoll", ply, ragdoll) +end) +usermessage.Hook("PlayerHealthBonusEffect", function(um) + local ent = GetPlayerByUserID(um:ReadLong()) + local positive = um:ReadBool() + local healnumber = um:ReadBool() + + if ent ~= LocalPlayer() or ent:ShouldDrawLocalPlayer() then + DoHealthBonusEffect(ent, positive, healnumber) + end +end) + +usermessage.Hook("EntityHealthBonusEffect", function(um) + local ent = um:ReadEntity() + local positive = um:ReadBool() + DoHealthBonusEffect(ent, positive) +end) + +usermessage.Hook("PlayerRocketJumpEffect", function(um) + local ent = GetPlayerByUserID(um:ReadLong()) + + if ent ~= LocalPlayer() or ent:ShouldDrawLocalPlayer() then + ParticleEffectAttach("rocketjump_smoke", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("foot_L")) + ParticleEffectAttach("rocketjump_smoke", PATTACH_POINT_FOLLOW, ent, ent:LookupAttachment("foot_R")) + end +end) + +usermessage.Hook("PlayChargeReadySound", function(um) + LocalPlayer():EmitSound("TFPlayer.ReCharged") +end) + + +function GetImprovedItemName(name) +for k, v in pairs(tf_items.ReturnItems()) do + if v and istable(v) and v["used_by_classes"] and v["name"] and v["name"] == name and v["used_by_classes"][LocalPlayer():GetPlayerClass()] and v["item_slot"] and not blacklist[v["name"]] and v["prefab"] ~= "tournament_medal" then + if (v["item_slot"] == "primary" or v["item_slot"] == "secondary" or v["item_slot"] == "melee") then + if name_blacklist[v["name"]] then + return "wep"..v["name"] + elseif string.sub(v["name"], 1, 10) == "Australium" then + return "wep".."Australium "..tf_lang.GetRaw(v["item_name"]) or v["name"] + elseif v["item_name"] and string.sub(v["item_name"], 1, 10) == "#TF_Weapon" and string.sub(v["name"], 1, 9) ~= "TF_WEAPON" then + return "wep"..v["name"] + else + return "wep"..tf_lang.GetRaw(v["item_name"]) or v["name"] + end + elseif v and v["item_slot"] and v["item_slot"] == "head" then + return "hat"..v["name"] + elseif v and v["item_slot"] and v["item_slot"] == "misc" then + return "hat"..v["name"] + end + end +end +end + +function GetImprovedItemName(name) +for k, v in pairs(tf_items.ReturnItems()) do + if v and istable(v) and v["used_by_classes"] and v["name"] and v["name"] == name and v["used_by_classes"][LocalPlayer():GetPlayerClass()] and v["item_slot"] and not blacklist[v["name"]] and v["prefab"] ~= "tournament_medal" then + if (v["item_slot"] == "primary" or v["item_slot"] == "secondary" or v["item_slot"] == "melee") then + if name_blacklist[v["name"]] then + return "wep"..v["name"] + elseif string.sub(v["name"], 1, 10) == "Australium" then + return "wep".."Australium "..tf_lang.GetRaw(v["item_name"]) or v["name"] + elseif v["item_name"] and string.sub(v["item_name"], 1, 10) == "#TF_Weapon" and string.sub(v["name"], 1, 9) ~= "TF_WEAPON" then + return "wep"..v["name"] + else + return "wep"..tf_lang.GetRaw(v["item_name"]) or v["name"] + end + elseif v and v["item_slot"] and v["item_slot"] == "head" then + return "hat"..v["name"] + elseif v and v["item_slot"] and v["item_slot"] == "misc" then + return "hat"..v["name"] + end + end +end +end + +-- USELESS! + +--[[ +function L4DClassSelection() + + + local ply = LocalPlayer() + local ClassFrame = vgui.Create("DFrame") --create a frame + ClassFrame:SetSize(ScrW() * 1, ScrH() * 1 ) --set its size + ClassFrame:Center() --position it at the center of the screen + ClassFrame:SetTitle("L4D Menu") --set the title of the menu + ClassFrame:SetDraggable(true) --can you move it around + ClassFrame:SetSizable(false) --can you resize it? + if ply:GetPlayerClass() ~= "" then + ClassFrame:ShowCloseButton(true) --can you close it + else + ClassFrame:ShowCloseButton(false) + end + + ClassFrame.OnClose = function() + LocalPlayer():StopSound("ClassSelection.ThemeMVM") + LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") + if string.find(game.GetMap(), "mvm_") then + LocalPlayer():EmitSound("music/mvm_class_select.wav") + end + end + LocalPlayer():EmitSound("ClassSelection.ThemeL4D") + + + local iconC = vgui.Create( "DModelPanel", ClassFrame ) + iconC:SetSize( ScrW() * 1, ScrH() * 1 ) + + iconC:SetCamPos( Vector( 90, 0, 40 ) ) + iconC:SetPos( 0, 0) + iconC:SetModel( "models/vgui/ui_class01.mdl" ) -- you can only change colors on playermodels + iconC:SetZPos(-4) + function iconC:LayoutEntity( Entity ) return end + local icon = vgui.Create( "DModelPanel", ClassFrame ) + icon:SetSize(ScrW() * 0.412, ScrH() * 0.571) + icon:SetPos(ScrW() * 0.012, ScrH() * 0.301) + icon:SetCamPos( Vector( 90, 0, 45 ) ) + icon:SetModel( "models/infected/hulk.mdl" ) -- you can only change colors on playermodels + icon:SetZPos(-8) + icon:SetAnimated(true) + icon.AutomaticFrameAdvance = true + + local icon2 = vgui.Create( "DModelPanel", ClassFrame ) + icon2:SetSize(ScrW() * 0.412, ScrH() * 0.571) + icon2:SetPos(ScrW() * 0.012, ScrH() * 0.301) + icon2:SetCamPos( Vector( 90, 0, 45 ) ) + icon2:SetModel( "models/props_debris/concrete_chunk01a.mdl" ) -- you can only change colors on playermodels + icon2:SetZPos(-8) + icon2:SetAnimated(true) + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + + + local spectate = vgui.Create("DModelPanel", ClassFrame) + spectate:SetPos( 625, 65 ) + spectate:SetSize( 75, 100 ) + spectate:SetModel( "models/vgui/ui_team01_spectate.mdl" ) + + spectate:SetFOV(75) + icon2:SetZPos( 8) + spectate:SetCamPos(Vector(90, 50, 35)) + spectate:SetLookAt(Vector(-1.883671, -12.644326, 30.984015)) + + function spectate.DoClick() RunConsoleCommand( "tf_spectate" ) ClassFrame:Close() end + + function spectate:LayoutEntity() + self.Hov = self.Hov or false + if self:IsHovered() and !self.Hov then + self.Entity:SetBodygroup(1, 1) + local random = math.random(3) + if random == 1 then + surface.PlaySound("ui/tv_tune.wav") + else + surface.PlaySound("ui/tv_tune"..random..".wav") + end + self.Hov = true + elseif !self:IsHovered() and self.Hov then + self.Entity:SetBodygroup(1, 0) + self.Hov = false + end + end + + function icon:LayoutEntity( ent ) + self:RunAnimation() + end + function icon2:LayoutEntity( ent ) + return + end + local dance = icon:GetEntity():LookupSequence( "throw_02" ) + icon:GetEntity():SetSequence( dance ) + + ClassFrame.OnClose = function() + LocalPlayer():StopSound("ClassSelection.ThemeMVM") + LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") + LocalPlayer():StopSound("ClassSelection.ThemeL4D") + end + ClassFrame:MakePopup() --make it appear + + local TankButton = vgui.Create("DImageButton", ClassFrame) + TankButton:SetSize(100, 30) + TankButton:SetPos(10, 35) + TankButton:SetText("Tank") + TankButton.OnCursorEntered = function() icon:SetModel( "models/infected/hulk.mdl" ) icon2:GetEntity():SetParent(icon:GetEntity()) icon2:GetEntity():AddEffects(EF_BONEMERGE) icon2:GetEntity():SetModel("models/props_debris/concrete_chunk01a.mdl") local dance = icon:GetEntity():LookupSequence( "throw_02" ) icon:GetEntity():SetSequence( dance ) icon:GetEntity():SetModelScale(1.2) end + TankButton.DoClick = function() RunConsoleCommand("changeclass", "tank") LocalPlayer():EmitSound("music/safe/themonsterswithout.wav") LocalPlayer():StopSound("ClassSelection.ThemeL4D") ClassFrame:Close() end + + local BoomerButton = vgui.Create("DImageButton", ClassFrame) + BoomerButton:SetSize(100, 30) + BoomerButton:SetPos(100, 35) + BoomerButton:SetText("Boomer") --Set the name of the button + BoomerButton.OnCursorEntered = function() icon:SetModel( "models/infected/boomer_l4d.mdl" ) icon2:GetEntity():SetParent(icon:GetEntity()) icon2:GetEntity():AddEffects(EF_BONEMERGE) local dance = icon:GetEntity():LookupSequence( "Run_Upper_KNIFE" ) icon:GetEntity():SetSequence( dance ) icon:GetEntity():SetModelScale(1.2) end + BoomerButton.DoClick = function() RunConsoleCommand("changeclass", "boomer") ClassFrame:Close() LocalPlayer():EmitSound("music/safe/themonsterswithout.wav") LocalPlayer():StopSound("ClassSelection.ThemeL4D") end + + local L4DZombie = vgui.Create("DImageButton", ClassFrame) + L4DZombie:SetSize(100, 30) + L4DZombie:SetPos(190, 35) + L4DZombie:SetText("Male Zombie") --Set the name of the button + L4DZombie.DoClick = function() RunConsoleCommand("changeclass", "l4d_zombie") ClassFrame:Close() LocalPlayer():EmitSound("music/safe/themonsterswithout.wav") LocalPlayer():StopSound("ClassSelection.ThemeL4D") LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + + L4DZombie.OnCursorEntered = function() icon:SetModel( "models/cpthazama/l4d1/common/male_01.mdl" ) icon2:GetEntity():SetParent(icon:GetEntity()) icon2:GetEntity():AddEffects(EF_BONEMERGE)icon2:GetEntity():SetModel("models/empty.mdl") local dance = icon:GetEntity():LookupSequence( "Run_01" ) icon:GetEntity():SetSequence( dance ) icon:GetEntity():SetModelScale(1.2) end + +end]] +function DoorClose() +local ply = LocalPlayer() +local ClassFrame = vgui.Create("DFrame") --create a frame +ClassFrame:SetSize( ScrW() * 1, ScrH() * 1 ) --set its size +ClassFrame:Center() --position it at the center of the screen +ClassFrame:SetTitle("TF2 Door") --set the title of the menu +ClassFrame:SetDraggable(false) --can you move it around +ClassFrame:SetSizable(false) --can you resize it? +ClassFrame:ShowCloseButton(true) --can you close it +ClassFrame:MakePopup() --make it appear +--models/vgui/ui_class01.mdl +local iconC = vgui.Create( "DModelPanel", ClassFrame ) +icon:SetSize(ScrW() * 0.412, ScrH() * 0.571) + +iconC:SetCamPos( Vector( 90, 0, 40 ) ) +iconC:SetPos(ScrW() * 0.012, ScrH() * 0.301) +iconC:SetModel( "models/vgui/versus_doors.mdl" ) -- you can only change colors on playermodels +iconC:SetZPos(-1) +iconC:SetAnimated(true) +function iconC:LayoutEntity( Entity ) return end +local dance = iconC:GetEntity():LookupSequence( "close" ) +iconC:GetEntity():SetSequence( dance ) +surface.PlaySound("ui/mm_door_close.wav") +end +function ClassSelection() + + +local ply = LocalPlayer() +local ClassFrame = vgui.Create("DFrame") --create a frame +ClassFrame:SetSize(ScrW() * 1, ScrH() * 1 ) --set its size +ClassFrame:Center() --position it at the center of the screen +ClassFrame:SetTitle("") --set the title of the menu +ClassFrame:SetDraggable(true) --can you move it around +ClassFrame:SetSizable(true) --can you resize it? +ClassFrame:ShowCloseButton(false) +ClassFrame:MakePopup() --make it appear + local self = ClassFrame + local WScale = ScrW()/640 + local Scale = ScrH()/480 +ClassFrame.OnClose = function() + LocalPlayer():StopSound("ClassSelection.ThemeMVM") + LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") + if string.find(game.GetMap(), "mvm_") then + LocalPlayer():EmitSound("music/mvm_class_select.wav") + end +end +if string.find(game.GetMap(), "mvm_") then + LocalPlayer():EmitSound("ClassSelection.ThemeMVM") +else + LocalPlayer():EmitSound("ClassSelection.ThemeNonMVM") +end +local iconC = vgui.Create( "DModelPanel", ClassFrame ) +iconC:SetSize( ScrW() * 1, ScrH() * 1 ) + +iconC:SetCamPos( Vector( 90, 0, 40 ) ) +iconC:SetPos( 0, 0) +iconC:SetModel( "models/vgui/ui_class01.mdl" ) -- you can only change colors on playermodels +iconC:SetZPos(-2) +iconC:SetFOV(70) + +local loadout_header = surface.GetTextureID("vgui/loadout_header") +local loadout_bottom_gradient = surface.GetTextureID("vgui/loadout_bottom_gradient") +local loadout_solid_line = surface.GetTextureID("vgui/loadout_solid_line") + +local loadout_round_rect = surface.GetTextureID("vgui/loadout_round_rect") +local loadout_round_rect_selected = surface.GetTextureID("vgui/loadout_round_rect_selected") + +function iconC:Paint() + + if ( !IsValid( self.Entity ) ) then return end + + local x, y = self:LocalToScreen( 0, 0 ) + + self:LayoutEntity( self.Entity ) + + local ang = self.aLookAngle + if ( !ang ) then + ang = ( self.vLookatPos - self.vCamPos ):Angle() + end + + cam.Start3D( self.vCamPos, ang, self.fFOV, x, y, w, h, 5, self.FarZ ) + + render.SuppressEngineLighting( true ) + render.SetLightingOrigin( self.Entity:GetPos() ) + render.ResetModelLighting( self.colAmbientLight.r / 255, self.colAmbientLight.g / 255, self.colAmbientLight.b / 255 ) + render.SetColorModulation( self.colColor.r / 255, self.colColor.g / 255, self.colColor.b / 255 ) + render.SetBlend( ( self:GetAlpha() / 255 ) * ( self.colColor.a / 255 ) ) -- * surface.GetAlphaMultiplier() + + for i = 0, 6 do + local col = self.DirectionalLight[ i ] + if ( col ) then + render.SetModelLighting( i, col.r / 255, col.g / 255, col.b / 255 ) + end + end + + self:DrawModel() + + render.SuppressEngineLighting( false ) + cam.End3D() + + self.LastPaint = RealTime() + + -- Footer separation line + surface.SetDrawColor(255,255,255,255) + + tf_draw.TexturedQuadTiled(loadout_bottom_gradient, 0, 422*Scale, ScrW(), 60*Scale) + surface.SetTexture(loadout_solid_line) + surface.DrawTexturedRect(0, 422*Scale, ScrW(), 10*Scale) + + +end +function iconC:LayoutEntity( Entity ) return end +local icon = vgui.Create( "DModelPanel", ClassFrame ) +icon:SetSize(ScrW() * 0.412, ScrH() * 1) +icon:SetPos(ScrW() * 0.012, ScrH() * 0.301) +if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_heavy.mdl" ) -- you can only change colors on playermodels +elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/heavy/bot_heavy.mdl" ) -- you can only change colors on playermodels +elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/heavy.mdl" ) -- you can only change colors on playermodels +else + icon:SetModel( "models/player/heavy.mdl" ) -- you can only change colors on playermodels +end +LocalPlayer():EmitSound( "/music/class_menu_05.wav", 100, 100, 1, CHAN_VOICE ) +icon:GetEntity():SetModelScale(1.2) +icon:SetCamPos( Vector( 180, 0, 40 ) ) +icon:SetFOV(50) +icon:SetLookAt(Vector(-90,0,-15)) +icon:SetAnimated(true) +icon.AutomaticFrameAdvance = true + +local icon2 = vgui.Create( "DModelPanel", ClassFrame ) +icon2:SetSize(ScrW() * 0.412, ScrH() * 1) +icon2:SetPos(ScrW() * 0.012, ScrH() * 0.301) +icon2:SetCamPos( Vector( 180, 0, 40 ) ) +icon2:SetFOV(50) +icon2:SetZPos(-0.01) +icon2:SetLookAt(Vector(-90,0,-15)) +icon2:SetModel( "models/weapons/w_models/w_minigun.mdl" ) -- you can only change colors on playermodels +local icon3 = vgui.Create( "DModelPanel", ClassFrame ) +icon3:SetSize(ScrW() * 0.412, ScrH() * 1) +icon3:SetPos(ScrW() * 0.012, ScrH() * 0.301) +icon3:SetCamPos( Vector( 180, 0, 40 ) ) +icon3:SetFOV(50) +icon3:SetZPos(-0.01) +icon3:SetLookAt(Vector(-90,0,-15)) +icon3:SetModel( "models/empty.mdl" ) -- you can only change colors on playermodels +local icon4 = vgui.Create( "DModelPanel", ClassFrame ) +icon4:SetSize(ScrW() * 0.412, ScrH() * 1) +icon4:SetPos(ScrW() * 0.012, ScrH() * 0.301) +icon4:SetCamPos( Vector( 180, 0, 40 ) ) +icon4:SetFOV(50) +icon4:SetZPos(-0.01) +icon4:SetLookAt(Vector(-90,0,-15)) +icon4:SetModel( "models/empty.mdl" ) -- you can only change colors on playermodels +local icon5 = vgui.Create( "DModelPanel", ClassFrame ) +icon5:SetSize(ScrW() * 0.412, ScrH() * 1) +icon5:SetPos(ScrW() * 0.012, ScrH() * 0.301) +icon5:SetCamPos( Vector( 180, 0, 40 ) ) +icon5:SetFOV(50) +icon5:SetZPos(-0.01) +icon5:SetLookAt(Vector(-90,0,-15)) +icon5:SetModel( "models/empty.mdl" ) -- you can only change colors on playermodels +local convar = GetConVar("loadout_heavy") +local split = string.Split(convar:GetString(), ",") +--print(split[1]) +for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[1])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end +end +icon2:SetAnimated(true) +icon3:SetAnimated(true) +icon4:SetAnimated(true) +icon5:SetAnimated(true) +icon2:GetEntity():SetNoDraw(false) +icon2:GetEntity():SetParent(icon:GetEntity()) +icon2:GetEntity():AddEffects(EF_BONEMERGE) +icon3:GetEntity():SetNoDraw(false) +icon3:GetEntity():SetParent(icon:GetEntity()) +icon3:GetEntity():AddEffects(EF_BONEMERGE) +icon4:GetEntity():SetNoDraw(false) +icon4:GetEntity():SetParent(icon:GetEntity()) +icon4:GetEntity():AddEffects(EF_BONEMERGE) +icon5:GetEntity():SetNoDraw(false) +icon5:GetEntity():SetParent(icon:GetEntity()) +icon5:GetEntity():AddEffects(EF_BONEMERGE) + +function icon:LayoutEntity( ent ) + self:RunAnimation() +end +function icon2:LayoutEntity( ent ) + return +end + timer.Create("SetSkinForClassModels", 0.01, 0, function() + if LocalPlayer():Team() == TEAM_BLU or LocalPlayer():Team() == TF_TEAM_PVE_INVADERS then + if (IsValid(icon) and IsValid(icon2)) then + icon:GetEntity():SetSkin(1) + icon2:GetEntity():SetSkin(1) + else + return + end + end + end) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/heavy/low/class_select.vcd") + + + -- Close button + if (!self.CloseButton) then + self.CloseButton = vgui.Create("TFButton") + self.CloseButton:SetParent(self) + self.CloseButton:SetPos(ScrW()/2 + 200*Scale,437*Scale) + self.CloseButton:SetSize(100*Scale,25*Scale) + self.CloseButton.labelText = "CLOSE" + self.CloseButton.font = "HudFontSmallBold" + function self.CloseButton:DoClick() + ClassFrame:Close() + end + end + if (!self.LoadoutButton) then + self.LoadoutButton = vgui.Create("TFButton") + self.LoadoutButton:SetParent(self) + self.LoadoutButton:SetPos(ScrW()/2 + 80*Scale,437*Scale) + self.LoadoutButton:SetSize(100*Scale,25*Scale) + self.LoadoutButton.labelText = "LOADOUT" + self.LoadoutButton.font = "HudFontSmallBold" + function self.LoadoutButton:DoClick() + ClassFrame:Close() + RunConsoleCommand("open_charinfo_direct") + end + end + +local ScoutButton = vgui.Create("DImageButton", ClassFrame) +ScoutButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +ScoutButton:SetPos(ScrW() * 0.128, ScrH() * -0.015) --ScrW() * 0.088, ScrH() * 0.002 +--ScoutButton:SetText("Scout") +ScoutButton.DoClick = function() RunConsoleCommand("changeclass", "scout") LocalPlayer():EmitSound( "/music/class_menu_01.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() end +ScoutButton:SetAlpha(255) +local scout_img = vgui.Create( "DImage", ScoutButton ) -- Add image to Frame +scout_img:SetPos( 0, 0 ) -- Move it into frame +scout_img:SetSize( ScoutButton:GetSize() ) -- Size it to 150x150 +ScoutButton:SetImage( "vgui/class_sel_sm_scout_inactive" ) +local SoldierButton = vgui.Create("DImageButton", ClassFrame) +SoldierButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +SoldierButton:SetPos(ScrW() * 0.178, ScrH() * -0.015) --ScrW() * 0.088, ScrH() * 0.002 +--SoldierButton:SetText("Soldier") --Set the name of the button +local sol_img = vgui.Create( "DImage", SoldierButton ) -- Add image to Frame +sol_img:SetPos( 0, 0 ) -- Move it into frame +sol_img:SetSize( SoldierButton:GetSize() ) -- Size it to 150x150 +SoldierButton:SetImage( "vgui/class_sel_sm_soldier_inactive" ) +SoldierButton:SetAlpha(255) +SoldierButton.DoClick = function() RunConsoleCommand("changeclass", "soldier") LocalPlayer():EmitSound( "/music/class_menu_02.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +local PyroButton = vgui.Create("DImageButton", ClassFrame) +PyroButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +PyroButton:SetPos(ScrW() * 0.248, ScrH() * -0.015) +--PyroButton:SetText("Pyro") --Set the name of the button +local py_img = vgui.Create( "DImage", PyroButton ) -- Add image to Frame +py_img:SetPos( 0, 0 ) -- Move it into frame +py_img:SetSize( PyroButton:GetSize() ) -- Size it to 150x150 +PyroButton:SetImage( "vgui/class_sel_sm_pyro_inactive" ) +PyroButton:SetAlpha(255) +PyroButton.DoClick = function() RunConsoleCommand("changeclass", "pyro") LocalPlayer():EmitSound( "/music/class_menu_03.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +local DemomanButton = vgui.Create("DImageButton", ClassFrame) +DemomanButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +DemomanButton:SetPos(ScrW() * 0.368, ScrH() * -0.015) +--DemomanButton:SetText("Demoman") --Set the name of the button +DemomanButton.DoClick = function() RunConsoleCommand("changeclass", "demoman") LocalPlayer():EmitSound( "/music/class_menu_04.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end +local de_img = vgui.Create( "DImage", DemomanButton ) -- Add image to Frame +de_img:SetPos( 0, 0 ) -- Move it into frame +de_img:SetSize( DemomanButton:GetSize() ) -- Size it to 150x150 +DemomanButton:SetImage( "vgui/class_sel_sm_demo_inactive" ) +DemomanButton:SetAlpha(255) +local HeavyButton = vgui.Create("DImageButton", ClassFrame) +HeavyButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +HeavyButton:SetPos(ScrW() * 0.428, ScrH() * -0.015) +--HeavyButton:SetText("Heavy") --Set the name of the button +HeavyButton.DoClick = function() RunConsoleCommand("changeclass", "heavy") LocalPlayer():EmitSound( "/music/class_menu_05.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end +local he_img = vgui.Create( "DImage", HeavyButton ) -- Add image to Frame +he_img:SetPos( 0, 0 ) -- Move it into frame +he_img:SetSize( HeavyButton:GetSize() ) -- Size it to 150x150 +if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + he_img:SetImage( "vgui/class_sel_sm_heavy_red" ) +elseif LocalPlayer():Team()==TEAM_BLU then + he_img:SetImage( "vgui/class_sel_sm_heavy_blu" ) +else + he_img:SetImage("vgui/class_sel_sm_heavy_inactive") +end +HeavyButton:SetAlpha(255) +local EngineerButton = vgui.Create("DImageButton", ClassFrame) +EngineerButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +EngineerButton:SetPos(ScrW() * 0.478, ScrH() * -0.015) +--EngineerButton:SetText("Engineer") --Set the name of the button +EngineerButton.DoClick = function() RunConsoleCommand("changeclass", "engineer") LocalPlayer():EmitSound( "/music/class_menu_06.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end +local en_img = vgui.Create( "DImage", EngineerButton ) -- Add image to Frame +en_img:SetPos( 0, 0 ) -- Move it into frame +en_img:SetSize( EngineerButton:GetSize() ) -- Size it to 150x150 +en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) +EngineerButton:SetAlpha(255) + +local MedicButton = vgui.Create("DImageButton", ClassFrame) +MedicButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +MedicButton:SetPos(ScrW() * 0.598, ScrH() * -0.015) +--MedicButton:SetText("Medic") --Set the name of the button +local me_img = vgui.Create( "DImage", MedicButton ) -- Add image to Frame +me_img:SetPos( 0, 0 ) -- Move it into frame +me_img:SetSize( MedicButton:GetSize() ) -- Size it to 150x150 +MedicButton:SetImage( "vgui/class_sel_sm_medic_inactive" ) +MedicButton:SetAlpha(255) +MedicButton.DoClick = function() RunConsoleCommand("changeclass", "medic") LocalPlayer():EmitSound( "/music/class_menu_07.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +local SniperButton = vgui.Create("DImageButton", ClassFrame) +SniperButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +SniperButton:SetPos(ScrW() * 0.658, ScrH() * -0.015) +--SniperButton:SetText("Sniper") --Set the name of the button +local sn_img = vgui.Create( "DImage", SniperButton ) -- Add image to Frame +sn_img:SetPos( 0, 0 ) -- Move it into frame +sn_img:SetSize( SniperButton:GetSize() ) -- Size it to 150x150 +SniperButton:SetImage( "vgui/class_sel_sm_sniper_inactive" ) +SniperButton:SetAlpha(255) +SniperButton.DoClick = function() RunConsoleCommand("changeclass", "sniper") LocalPlayer():EmitSound( "/music/class_menu_08.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +local SpyButton = vgui.Create("DImageButton", ClassFrame) +SpyButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) +SpyButton:SetPos(ScrW() * 0.718, ScrH() * -0.015) +--SpyButton:SetText("Spy") --Set the name of the button +local sp_img = vgui.Create( "DImage", SpyButton ) -- Add image to Frame +sp_img:SetPos( 0, 0 ) -- Move it into frame +sp_img:SetSize( SpyButton:GetSize() ) -- Size it to 150x150 +SpyButton:SetImage( "vgui/class_sel_sm_spy_inactive" ) +SpyButton.DoClick = function() RunConsoleCommand("changeclass", "spy") LocalPlayer():EmitSound( "/music/class_menu_09.wav", 100, 100, 1, CHAN_VOICE ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end +scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) +sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) +py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) +de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) +if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + he_img:SetImage( "vgui/class_sel_sm_heavy_red" ) +elseif LocalPlayer():Team()==TEAM_BLU then + he_img:SetImage( "vgui/class_sel_sm_heavy_blu" ) +else + he_img:SetImage("vgui/class_sel_sm_heavy_inactive") +end +en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) +me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) +sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) +sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) +local Hint = vgui.Create( "DLabel", ClassFrame ) +Hint:SetPos( ScrW() * 0.129, ScrH() * 0.18 ) +Hint:SetSize(90,12) +Hint:SetZPos(2) +Hint:SetText( "OFFENSE" ) +Hint:SetFont( "MenuClassBuckets" ) +Hint:SetColor( Color(117,107,94,255) ) +Hint:SizeToContents() +local numscout = vgui.Create( "DLabel", ClassFrame ) +numscout:SetPos( ScrW() * 0.131, ScrH() * 0.16 ) +numscout:SetSize(90,12) +numscout:SetZPos(2) +numscout:SetText( "1" ) +numscout:SetFont( "MenuClassBuckets" ) +numscout:SetColor( Color(117,107,94,255) ) +numscout:SizeToContents() + +local numsoldier = vgui.Create( "DLabel", ClassFrame ) +numsoldier:SetPos( ScrW() * 0.181, ScrH() * 0.16 ) +numsoldier:SetSize(90,12) +numsoldier:SetZPos(2) +numsoldier:SetText( "2" ) +numsoldier:SetFont( "MenuClassBuckets" ) +numsoldier:SetColor( Color(117,107,94,255) ) +numsoldier:SizeToContents() +local numpyro = vgui.Create( "DLabel", ClassFrame ) +numpyro:SetPos( ScrW() * 0.251, ScrH() * 0.16 ) +numpyro:SetSize(90,12) +numpyro:SetZPos(2) +numpyro:SetText( "3" ) +numpyro:SetFont( "MenuClassBuckets" ) +numpyro:SetColor( Color(117,107,94,255) ) +numpyro:SizeToContents() +local numdemo = vgui.Create( "DLabel", ClassFrame ) +numdemo:SetPos( ScrW() * 0.366, ScrH() * 0.16 ) +numdemo:SetSize(90,12) +numdemo:SetZPos(2) +numdemo:SetText( "4" ) +numdemo:SetFont( "MenuClassBuckets" ) +numdemo:SetColor( Color(117,107,94,255) ) +numdemo:SizeToContents() +local numheavy = vgui.Create( "DLabel", ClassFrame ) +numheavy:SetPos( ScrW() * 0.428, ScrH() * 0.16 ) +numheavy:SetSize(90,12) +numheavy:SetZPos(2) +numheavy:SetText( "5" ) +numheavy:SetFont( "MenuClassBuckets" ) +numheavy:SetColor( Color(117,107,94,255) ) +numheavy:SizeToContents() +local numengy = vgui.Create( "DLabel", ClassFrame ) +numengy:SetPos( ScrW() * 0.478, ScrH() * 0.16 ) +numengy:SetSize(90,12) +numengy:SetZPos(2) +numengy:SetText( "6" ) +numengy:SetFont( "MenuClassBuckets" ) +numengy:SetColor( Color(117,107,94,255) ) +numengy:SizeToContents() +local nummedic = vgui.Create( "DLabel", ClassFrame ) +nummedic:SetPos( ScrW() * 0.598, ScrH() * 0.16 ) +nummedic:SetSize(90,12) +nummedic:SetZPos(2) +nummedic:SetText( "7" ) +nummedic:SetFont( "MenuClassBuckets" ) +nummedic:SetColor( Color(117,107,94,255) ) +nummedic:SizeToContents() +local numsniper = vgui.Create( "DLabel", ClassFrame ) +numsniper:SetPos( ScrW() * 0.658, ScrH() * 0.16 ) +numsniper:SetSize(90,12) +numsniper:SetZPos(2) +numsniper:SetText( "8" ) +numsniper:SetFont( "MenuClassBuckets" ) +numsniper:SetColor( Color(117,107,94,255) ) +numsniper:SizeToContents() +local numspy = vgui.Create( "DLabel", ClassFrame ) +numspy:SetPos( ScrW() * 0.718, ScrH() * 0.16 ) +numspy:SetSize(90,12) +numspy:SetZPos(2) +numspy:SetText( "9" ) +numspy:SetFont( "MenuClassBuckets" ) +numspy:SetColor( Color(117,107,94,255) ) +numspy:SizeToContents() +local numrandom = vgui.Create( "DLabel", ClassFrame ) +numrandom:SetPos( ScrW() * 0.818, ScrH() * 0.16 ) +numrandom:SetSize(90,12) +numrandom:SetZPos(2) +numrandom:SetText( "10" ) +numrandom:SetFont( "MenuClassBuckets" ) +numrandom:SetColor( Color(117,107,94,255) ) +numrandom:SizeToContents() +local Hint2 = vgui.Create( "DLabel", ClassFrame ) +Hint2:SetPos( ScrW() * 0.362, ScrH() * 0.18 ) +Hint2:SetSize(90,12) +Hint2:SetZPos(2) +Hint2:SetText( "DEFENSE" ) +Hint2:SetFont( "MenuClassBuckets" ) +Hint2:SetColor( Color(117,107,94,255) ) +Hint2:SizeToContents() + +local Hint3 = vgui.Create( "DLabel", ClassFrame ) +Hint3:SetPos( ScrW() * 0.595, ScrH() * 0.18 ) +Hint3:SetSize(90,12) +Hint3:SetZPos(2) +Hint3:SetText( "SUPPORT" ) +Hint3:SetFont( "MenuClassBuckets" ) +Hint3:SetColor( Color(117,107,94,255) ) +Hint3:SizeToContents() + + +local menuname = vgui.Create( "DLabel", ClassFrame ) +menuname:SetPos( ScrW() * 0.545, ScrH() * 0.33 ) +menuname:SetZPos(2) +menuname:SetText( "HEAVY" ) +menuname:SetFont( "ChalkboardTitle" ) +menuname:SizeToContents() + +local menutext = vgui.Create( "DLabel", ClassFrame ) +menutext:SetPos( ScrW() * 0.545, ScrH() * 0.43 ) +menutext:SetZPos(2) +menutext:SetText( [[Spin your minigun without firing to be ready +for approaching enemies!]] ) +menutext:SetFont( "ChalkboardText" ) +menutext:SetColor( Color(178,178,178,255) ) +menutext:SizeToContents() + +local GmodButton +local gm_img +if (!GetConVar("tf_disable_fun_classes"):GetBool()) then + GmodButton = vgui.Create("DImageButton", ClassFrame) + GmodButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) + GmodButton:SetPos(ScrW() * 0.814, ScrH() * -0.015) --ScrW() * 0.088, ScrH() * 0.002 + --GmodButton:SetText("GMod Player") --Set the name of the button + GmodButton:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + GmodButton:SetAlpha(255) + GmodButton.DoClick = function() LocalPlayer():EmitSound( "ui/buttonclick.wav", 100, 100, 1, CHAN_VOICE ) RunConsoleCommand("changeclass", "gmodplayer") ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + + gm_img = vgui.Create( "DImage", GmodButton ) -- Add image to Frame + gm_img:SetPos( 0, 0 ) -- Move it into frame + gm_img:SetSize( SpyButton:GetSize() ) -- Size it to 150x150 + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + GmodButton.OnCursorEntered = function() + icon2:GetEntity():SetModel("models/weapons/w_physics.mdl") + icon3:SetModel( "models/empty.mdl" ) -- you can only change colors on playermodels + icon4:SetModel( "models/empty.mdl" ) -- you can only change colors on playermodels + icon5:SetModel( "models/empty.mdl" ) -- you can only change colors on playermodels + if LocalPlayer():IsHL2() then + icon:SetModel( LocalPlayer():GetModel() ) + else + icon:SetModel(player_manager.TranslatePlayerModel(GetConVar("cl_playermodel"):GetString())) + end + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + LocalPlayer():EmitSound( "ui/buttonrollover.wav", 100, 100, 1, CHAN_VOICE ) + local dance = icon:GetEntity():LookupSequence( "idle_physgun" ) + icon:GetEntity():SetSequence( dance ) + icon:GetEntity():SetModelScale(1.2) + icon:GetEntity():SetPoseParameter("move_x",1) + + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + gm_img:SetImage( "vgui/class_sel_sm_gmodplayer_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + gm_img:SetImage( "vgui/class_sel_sm_gmodplayer_blu" ) + else + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + end + + menuname:SetText( "GMOD PLAYER" ) + menutext:SetText( [[Become any character you'd like! + Use Half-Life 2, Day of Defeat, Left 4 Dead + and Counter-Strike weapons! + Do more damage towards TF2 Mercenaries! + Hold SHIFT to move faster! + Be mostly resistant to damage from TF2 Mercs!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + end +else + GmodButton = vgui.Create("DImageButton", ClassFrame) + GmodButton:SetSize(ScrW() * 0.056, ScrH() * 0.195) + GmodButton:SetPos(ScrW() * 0.814, ScrH() * -0.015) --ScrW() * 0.088, ScrH() * 0.002 + --GmodButton:SetText("GMod Player") --Set the name of the button + GmodButton:SetImage("vgui/class_sel_sm_random_inactive") + GmodButton:SetAlpha(255) + GmodButton.DoClick = function() + LocalPlayer():EmitSound( "ui/buttonclick.wav", 100, 100, 1, CHAN_VOICE ) + ClassFrame:Close() + if string.find(game.GetMap(), "mvm_") then + LocalPlayer():EmitSound("music/mvm_class_select.wav") + end + LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") + LocalPlayer():StopSound("ClassSelection.ThemeMVM") + local random = math.random(1,9) + if (random == 1) then + RunConsoleCommand("changeclass", "scout") + elseif (random == 2) then + RunConsoleCommand("changeclass", "soldier") + elseif (random == 3) then + RunConsoleCommand("changeclass", "pyro") + elseif (random == 4) then + RunConsoleCommand("changeclass", "demoman") + elseif (random == 5) then + RunConsoleCommand("changeclass", "heavy") + elseif (random == 6) then + RunConsoleCommand("changeclass", "engineer") + elseif (random == 7) then + RunConsoleCommand("changeclass", "medic") + elseif (random == 8) then + RunConsoleCommand("changeclass", "sniper") + elseif (random == 9) then + RunConsoleCommand("changeclass", "spy") + end + end + + gm_img = vgui.Create( "DImage", GmodButton ) -- Add image to Frame + gm_img:SetPos( 0, 0 ) -- Move it into frame + gm_img:SetSize( SpyButton:GetSize() ) -- Size it to 150x150 + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + GmodButton.OnCursorEntered = function() + icon2:GetEntity():SetModel("models/empty.mdl") + icon3:GetEntity():SetModel("models/empty.mdl") + icon4:GetEntity():SetModel("models/empty.mdl") + icon5:GetEntity():SetModel("models/empty.mdl") + icon:SetModel( "models/class_menu/random_class_icon.mdl" ) + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + LocalPlayer():EmitSound( "ui/buttonrollover.wav", 100, 100, 1, CHAN_VOICE ) + local dance = icon:GetEntity():LookupSequence( "selection" ) + icon:GetEntity():SetSequence( dance ) + + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + gm_img:SetImage( "vgui/class_sel_sm_random_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + gm_img:SetImage( "vgui/class_sel_sm_random_blu" ) + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + menuname:SetText( "RANDOM" ) + menutext:SetText( [[Let the game pick a class for you.]] ) + menuname:SizeToContents() + menutext:SizeToContents() + end +end +ScoutButton.OnCursorEntered = function() + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_scout.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/scout/bot_scout.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/scout.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/scout.mdl" ) -- you can only change colors on playermodels + end + menuname:SetText( "SCOUT" ) + menutext:SetText( [[You capture points faster than other classes! +double jump while in the air!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/w_models/w_scattergun.mdl") + + local convar = GetConVar("loadout_scout") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[1])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_01.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/scout/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + scout_img:SetImage( "vgui/class_sel_sm_scout_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + scout_img:SetImage( "vgui/class_sel_sm_scout_blu" ) + else + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + end + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +SoldierButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_soldier.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/soldier/bot_soldier.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/soldier.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/soldier.mdl" ) -- you can only change colors on playermodels + end + menuname:SetText( "SOLDIER" ) + menutext:SetText( [[Shoot your rocket launcher at enemy's feet! +Use your rocket launcher to rocket jump!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + icon:GetEntity():SetModelScale(1.23) + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/w_models/w_rocketlauncher.mdl") + local convar = GetConVar("loadout_soldier") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[1])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_02.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/soldier/low/class_select.vcd") + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + sol_img:SetImage( "vgui/class_sel_sm_soldier_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + sol_img:SetImage( "vgui/class_sel_sm_soldier_blu" ) + else + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + end + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +PyroButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_pyro.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/pyro/bot_pyro.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/pyro.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/pyro.mdl" ) -- you can only change colors on playermodels + end + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_flamethrower/c_flamethrower.mdl") + local convar = GetConVar("loadout_pyro") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[1])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_03.wav", 100, 100, 1, CHAN_VOICE ) + menuname:SetText( "PYRO" ) + menutext:SetText( [[Ambush enemies at corners! +Your flamethrower is more effective the +closer you are to your target!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/pyro/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + py_img:SetImage( "vgui/class_sel_sm_pyro_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + py_img:SetImage( "vgui/class_sel_sm_pyro_blu" ) + else + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + end + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +DemomanButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_demo.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/demo/bot_demo.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/demo.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/demo.mdl" ) -- you can only change colors on playermodels + end + menuname:SetText( "DEMOMAN" ) + menutext:SetText( [[Remote detonate your stickybombs +when enemies are near them! +Stickybomb jump by standing on +a stickybomb and jumping as you detonate it!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl") + local convar = GetConVar("loadout_demoman") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[2])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_04.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/demoman/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + de_img:SetImage( "vgui/class_sel_sm_demo_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + de_img:SetImage( "vgui/class_sel_sm_demo_blu" ) + else + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + end + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +HeavyButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_heavy.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/heavy/bot_heavy.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/heavy.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/heavy.mdl" ) -- you can only change colors on playermodels + end + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_minigun/c_minigun.mdl") + + local convar = GetConVar("loadout_heavy") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[1])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + + LocalPlayer():EmitSound( "/music/class_menu_05.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/heavy/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + menuname:SetText( "HEAVY" ) + menutext:SetText( [[Spin your minigun without firing to be ready +for approaching enemies!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + he_img:SetImage( "vgui/class_sel_sm_heavy_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + he_img:SetImage( "vgui/class_sel_sm_heavy_blu" ) + else + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + end + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +EngineerButton.DoClick = function() RunConsoleCommand("changeclass", "engineer") LocalPlayer():EmitSound( "/music/class_menu_06.wav" ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +EngineerButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_engineer.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/engineer/bot_engineer.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/engineer.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/engineer.mdl" ) -- you can only change colors on playermodels + end + menuname:SetText( "ENGINEER" ) + menutext:SetText( [[Collect metal from fallen weapons to build with! +Build sentryguns to defend your base! +Upgrade them to level 3! +Build dispensers to supply your +teammates with health & ammo! +Build teleporters to help +team mates get to the front lines!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_wrench/c_wrench.mdl") + local convar = GetConVar("loadout_engineer") + local split = string.Split(convar:GetString(), ",") + --print(split[3]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[3])) then + local model = wep.model_world or wep.model_player + if (model ~= nil) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_06.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/engineer/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + en_img:SetImage( "vgui/class_sel_sm_engineer_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + en_img:SetImage( "vgui/class_sel_sm_engineer_blu" ) + else + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + end + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +MedicButton.DoClick = function() RunConsoleCommand("changeclass", "medic") LocalPlayer():EmitSound( "/music/class_menu_07.wav" ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +MedicButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_medic.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/medic/bot_medic.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/medic.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/medic.mdl" ) -- you can only change colors on playermodels + end + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_medigun/c_medigun.mdl") + + local convar = GetConVar("loadout_medic") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[2])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_07.wav", 100, 100, 1, CHAN_VOICE ) + menuname:SetText( "MEDIC" ) + menutext:SetText( [[Fill your ÜberCharge by + healing your team mates! +Use a full ÜberCharge to +gain invulnerability for you and +your medi gun target!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/medic/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + me_img:SetImage( "vgui/class_sel_sm_medic_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + me_img:SetImage( "vgui/class_sel_sm_medic_blu" ) + else + sn_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + end + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +SniperButton.DoClick = function() RunConsoleCommand("changeclass", "sniper") LocalPlayer():EmitSound( "/music/class_menu_08.wav" ) ClassFrame:Close() if string.find(game.GetMap(), "mvm_") then LocalPlayer():EmitSound("music/mvm_class_select.wav") end LocalPlayer():StopSound("ClassSelection.ThemeNonMVM") LocalPlayer():StopSound("ClassSelection.ThemeMVM") end + +SniperButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_sniper.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/sniper/bot_sniper.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/sniper.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/sniper.mdl" ) -- you can only change colors on playermodels + end + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_sniperrifle/c_sniperrifle.mdl") + local convar = GetConVar("loadout_sniper") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[1])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_08.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/sniper/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + menuname:SetText( "SNIPER" ) + menutext:SetText( [[Your sniper rifle will power up + to do more damage while you are zoomed in! +aim for the head to do critical hits!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + sn_img:SetImage( "vgui/class_sel_sm_sniper_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + sn_img:SetImage( "vgui/class_sel_sm_sniper_blu" ) + else + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + end + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + if (IsValid(GmodButton)) then + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +SpyButton.OnCursorEntered = function() + + if (LocalPlayer():GetInfoNum("tf_tfc_model_override",0) == 1 and file.Exists("models/player/tfc_"..(c.ModelName or "scout")..".mdl", "WORKSHOP") ) then + icon:SetModel( "models/player/tfc_spy.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("tf_robot",0) == 1) then + icon:SetModel( "models/bots/spy/bot_spy.mdl" ) -- you can only change colors on playermodels + elseif (LocalPlayer():GetInfoNum("civ2_touhou",0) == 1) then + icon:SetModel( "models/player/touhou/spy.mdl" ) -- you can only change colors on playermodels + else + icon:SetModel( "models/player/spy.mdl" ) -- you can only change colors on playermodels + end + icon2:GetEntity():SetParent(icon:GetEntity()) + icon2:GetEntity():AddEffects(EF_BONEMERGE) + icon2:GetEntity():SetModel("models/weapons/c_models/c_knife/c_knife.mdl") + local convar = GetConVar("loadout_spy") + local split = string.Split(convar:GetString(), ",") + --print(split[1]) + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if (wep.id == tonumber(split[3])) then + icon2:GetEntity():SetModel(wep.model_world or wep.model_player) + end + end + end + LocalPlayer():EmitSound( "/music/class_menu_09.wav", 100, 100, 1, CHAN_VOICE ) + + icon:GetEntity():SetSequence("selectionmenu_startpose") + icon:StartScene("scenes/player/spy/low/class_select.vcd") + icon:GetEntity():SetModelScale(1.2) + menuname:SetText( "SPY" ) + menutext:SetText( [[Disguise yourself as a enemy and +infiltrate the enemy base! +cloak yourself to avoid being seen! +Backstab your enemies with +your knife for an instant kill! +Plant sappers on enemy sentryguns +to destroy them!]] ) + menuname:SizeToContents() + menutext:SizeToContents() + scout_img:SetImage( "vgui/class_sel_sm_scout_inactive" ) + sol_img:SetImage( "vgui/class_sel_sm_soldier_inactive" ) + py_img:SetImage( "vgui/class_sel_sm_pyro_inactive" ) + de_img:SetImage( "vgui/class_sel_sm_demo_inactive" ) + he_img:SetImage( "vgui/class_sel_sm_heavy_inactive" ) + en_img:SetImage( "vgui/class_sel_sm_engineer_inactive" ) + me_img:SetImage( "vgui/class_sel_sm_medic_inactive" ) + sn_img:SetImage( "vgui/class_sel_sm_sniper_inactive" ) + if LocalPlayer():Team()==2 or LocalPlayer():Team()==6 then + sp_img:SetImage( "vgui/class_sel_sm_spy_red" ) + elseif LocalPlayer():Team()==TEAM_BLU then + sp_img:SetImage( "vgui/class_sel_sm_spy_blu" ) + else + sp_img:SetImage( "vgui/class_sel_sm_spy_inactive" ) + end + if (IsValid(GmodButton)) then + + if !GetConVar("tf_disable_fun_classes"):GetBool() then + gm_img:SetImage("vgui/class_sel_sm_gmodplayer_inactive") + else + gm_img:SetImage("vgui/class_sel_sm_random_inactive") + end + + end +end +--[[ +local Hint = vgui.Create( "DLabel", ClassFrame ) +Hint:SetPos( 10, 70 ) +Hint:SetText( ("Press the key ".. string.upper(",").." to open this menu" ) ) +Hint:SizeToContents() + +local Hint = vgui.Create( "DLabel", ClassFrame ) +Hint:SetPos( 10, 82 ) +Hint:SetText( ( string.upper(input.LookupBinding( "gm_showspare1" )) or "F3" ).." to open the hat picker" ) +Hint:SizeToContents() + +local Hint = vgui.Create( "DLabel", ClassFrame ) +Hint:SetPos( 10, 94 ) +Hint:SetText( ( string.upper(input.LookupBinding( "gm_showspare2" )) or "F4" ).." to open the weapon picker" ) +Hint:SizeToContents() + +local Option1 = vgui.Create( "DCheckBox", ClassFrame ) +Option1:SetPos( 10, 110 ) +Option1:SetValue( GetConVar("tf_righthand"):GetInt() ) + +function Option1:OnChange(new) + if new == false then + RunConsoleCommand("tf_righthand", 0) + else + RunConsoleCommand("tf_righthand", 1) + end +end + +local Option1text = vgui.Create( "DLabel", ClassFrame ) +Option1text:SetPos( 30, 110 ) +Option1text:SetText( "Right handed" ) +Option1text:SizeToContents() + +local Option2 = vgui.Create( "DCheckBox", ClassFrame ) +Option2:SetPos( 100, 110 ) +Option2:SetValue( GetConVar("tf_autoreload"):GetInt() ) +function Option2:OnChange(new) + if new == false then + RunConsoleCommand("tf_autoreload", 0) + else + RunConsoleCommand("tf_autoreload", 1) + end +end + +local Option2text = vgui.Create( "DLabel", ClassFrame ) +Option2text:SetPos( 120, 110 ) +Option2text:SetText( "Autoreload" ) +Option2text:SizeToContents() + +local Option3 = vgui.Create( "DCheckBox", ClassFrame ) +Option3:SetPos( 180, 110 ) +Option3:SetValue( GetConVar("tf_robot"):GetInt() ) + +local Option5 = vgui.Create( "DCheckBox", ClassFrame ) +Option5:SetPos( 180, 170 ) +Option5:SetValue( GetConVar("cl_hud_playerclass_use_playermodel"):GetInt() ) + +function Option3:OnChange(new) + RunConsoleCommand("kill") + if new == false then + RunConsoleCommand("tf_robot", 0) + else + RunConsoleCommand("tf_robot", 1) + end +end + +local Option3text = vgui.Create( "DLabel", ClassFrame ) +Option3text:SetPos( 200, 110 ) +Option3text:SetText( "Become a Robot" ) +Option3text:SizeToContents() + +local Option5text = vgui.Create( "DLabel", ClassFrame ) +Option5text:SetPos( 200, 170 ) +Option5text:SetText( "Toggle 3D Class Icon" ) +Option5text:SizeToContents() + +function Option5:OnChange(new) + if new == false then + RunConsoleCommand("cl_hud_playerclass_use_playermodel", 0) + else + RunConsoleCommand("cl_hud_playerclass_use_playermodel", 1) + end +end +]] + +--[[ +local tauntlaugh = vgui.Create( "DButton", ClassFrame ) +function tauntlaugh.DoClick() RunConsoleCommand( "tf_taunt_laugh" ) ClassFrame:Close() end +tauntlaugh:SetPos( 430, 107 ) +tauntlaugh:SetSize( 90, 20 ) +tauntlaugh:SetText( "Schadenfreude" ) + +local taunt1 = vgui.Create( "DButton", ClassFrame ) +function taunt1.DoClick() RunConsoleCommand( "tf_taunt", "1" ) ClassFrame:Close() end +taunt1:SetPos( 310, 107 ) +taunt1:SetSize( 20, 20 ) +taunt1:SetText( "1" ) + +local taunt2 = vgui.Create( "DButton", ClassFrame ) +function taunt2.DoClick() RunConsoleCommand( "tf_taunt", "2" ) ClassFrame:Close() end +taunt2:SetPos( 340, 107 ) +taunt2:SetSize( 20, 20 ) +taunt2:SetText( "2" ) + +local taunt3 = vgui.Create( "DButton", ClassFrame ) +function taunt3.DoClick() RunConsoleCommand( "tf_taunt", "3" ) ClassFrame:Close() end +taunt3:SetPos( 380, 107 ) +taunt3:SetSize( 20, 20 ) +taunt3:SetText( "3" ) +]] + +--[[local tauntlaugh = vgui.Create( "DButton", ClassFrame ) +function tauntlaugh.DoClick() RunConsoleCommand( "tf_tp_immersive_toggle" ) ClassFrame:Close() end +tauntlaugh:SetPos( 590, 107 ) +tauntlaugh:SetSize( 90, 20 ) +tauntlaugh:SetText( "Immersive Toggle" )]] +--[[ +local tauntlaugh = vgui.Create( "DButton", ClassFrame ) +function tauntlaugh.DoClick() RunConsoleCommand( "tf_hatpainter" ) end +tauntlaugh:SetPos( 430, 107 ) +tauntlaugh:SetSize( 90, 20 ) +tauntlaugh:SetText( "Hat Painter" ) +]] +--[[local function select_item(selector, data, item) + --print(item) + if data and selector:GetOptionData(data) then + ply:ConCommand( "giveitem "..selector:GetOptionData(data) ) + else + ply:ConCommand( "giveitem "..item ) + end +end + +local weaponselector = vgui.Create( "DComboBox", ClassFrame ) +weaponselector:SetValue( "Weapons" ) +weaponselector:Center() +weaponselector:SetPos( 590, 107 ) +weaponselector:SetSize( 100, 20 ) +function weaponselector.OnSelect( _, data, weapon ) + select_item( weaponselector, data, weapon ) + + weaponselector:CloseMenu() + weaponselector:SetValue( "Weapons" ) + weaponselector:SetTooltip("test") +end + +local miscselector = vgui.Create( "DComboBox", ClassFrame ) +miscselector:SetValue( "Miscs" ) +miscselector:Center() +miscselector:SetPos( 590, 86 ) +miscselector:SetSize( 100, 20 ) +function miscselector.OnSelect( _, data, misc ) + select_item( miscselector, data, misc ) + + miscselector:CloseMenu() + miscselector:SetValue( "Miscs" ) +end + +local hatselector = vgui.Create( "DComboBox", ClassFrame ) +hatselector:SetValue( "Hats" ) +hatselector:Center() +hatselector:SetPos( 590, 65 ) +hatselector:SetSize( 100, 20 ) +function hatselector.OnSelect( _, data, hat ) + select_item( hatselector, data, hat ) + + hatselector:CloseMenu() + hatselector:SetValue( "Hats" ) +end + +for k, v in pairs(tf_items.ReturnItems()) do + if v and istable(v) and v["name"] and GetImprovedItemName(v["name"]) then + if string.sub(GetImprovedItemName(v["name"]), 1, 3) == "wep" then + weaponselector:AddChoice(string.sub(GetImprovedItemName(v["name"]), 4), v["name"]) + elseif string.sub(GetImprovedItemName(v["name"]), 1, 3) == "hat" then + hatselector:AddChoice(string.sub(GetImprovedItemName(v["name"]), 4), v["name"]) + end + end +end]] + +end + +--[[function GM:PlayerBindPress(pl, bind, pressed) + if (bind == "+menu") then + RunConsoleCommand("lastinv") + end +end]] + +function paintcanTohex(dec) -- code from https://stackoverflow.com/a/37797380 + return string.sub(string.format("%x", dec * 256), 1, 6) +end + +function hex2color(hex) -- code from https://gist.github.com/jasonbradley/4357406 + hex = hex:gsub("#","") + local r, g, b = tonumber("0x"..hex:sub(1,2)), tonumber("0x"..hex:sub(3,4)), tonumber("0x"..hex:sub(5,6)) + return string.ToColor(r.." "..g.." "..b.." 255") +end + +function itemSelector(type, weapons) + local Scale = ScrH() / 480 + local loadout_rect = surface.GetTextureID("vgui/loadout_rect") + local loadout_rect_mouseover = surface.GetTextureID("vgui/loadout_rect_mouseover") + + local frame = vgui.Create("DFrame") + frame:SetTitle("Item Picker") + frame:SetSize(1300, 650) + frame:Center() + frame:SetDraggable(true) + frame:SetMouseInputEnabled(true) + frame:MakePopup() + + local scroll = vgui.Create("DScrollPanel", frame) + scroll:Dock(FILL) + + local itemicons = vgui.Create("DIconLayout", scroll) + itemicons:Dock(FILL) + + local attr = vgui.Create("ItemAttributePanel") + attr:SetSize(168 * Scale, 300 * Scale) + attr:SetPos(0, 0) + attr.text_ypos = 20 + attr:SetMouseInputEnabled(false) + + for k, v in pairs(weapons) do + local model = vgui.Create("ItemModelPanel", frame) + model:SetSize(140 * Scale, 75 * Scale) + model:SetCursor("hand") + model:SetQuality(v.item_quality and string.upper(string.sub(v.item_quality, 1, 1)) .. string.sub(v.item_quality, 2) or 0) + model.activeImage = loadout_rect_mouseover + model.inactiveImage = loadout_rect + model.number = type + model.model_xpos = 0 + model.model_ypos = 5 + model.model_tall = 55 + model.text_xpos = -5 + model.text_wide = 150 + model.text_ypos = 60 + model.itemImage_low = nil + model.text = tf_lang.GetRaw(v.item_name) or v.name + model.centerytext = true + model.disabled = false + if !isstring(v.image_inventory) or Material(v.image_inventory):IsError() then + model.FallbackModel = v.model_player + model.itemImage = surface.GetTextureID("backpack/weapons/c_models/c_bat") + elseif isstring(v.image_inventory) then + model.itemImage = surface.GetTextureID(v.image_inventory) + end + + if v.attributes and v.attributes["material override"] and v.attributes["material override"].value then + model.overridematerial = v.attributes["material override"].value + end + + model.DoClick = function() + nextLoadoutUpdate = 0 + updateLoadout(type, v.id) + surface.PlaySound(v.mouse_pressed_sound or "ui/item_hat_pickup.wav") + frame:Close() + end + + if istable(v.attributes) then + model.attributes = v.attributes + end + + itemicons:Add(model) + end + + attr:MoveToFront() +end + +-- wouldn't mind a hex to rgb in glua by default + +local function HatPicker() -- inb4 someone modifies this menu without using #suggestions in the first place +-- lol ~ Seamus +local ply = LocalPlayer() +local Frame = vgui.Create( "DFrame" ) +Frame:SetTitle( "Hat Painter" ) +Frame:SetSize( 300, 385 ) +Frame:Center() +Frame:MakePopup() + +local function add_hats(paintlist, convar, colorpicker) + local paintlistc = paintlist:AddNode("None") + paintlistc:SetIcon("icon16/cancel.png") + paintlistc.DoClick = function() + local color = Color(0, 0, 0, 255) + colorpicker:SetColor(Color(0, 0, 0)) -- hack!! + ply:ConCommand(convar.." "..tostring(color)) + end + for k, v in pairs(tf_items.ReturnItems()) do + if v and istable(v) and v["name"] and v["item_name"] and v["item_class"] and v["attributes"] and v["attributes"]["set item tint rgb"] and v["attributes"]["set item tint rgb"]["value"] and not blacklist[tf_lang.GetRaw(v["item_name"])] then + if (v["item_class"] == "tool" and string.sub(v["name"], 1, 5) == "Paint") then + local paintlistn = paintlist:AddNode(tf_lang.GetRaw(v["item_name"])) --.." ("..v["attributes"]["set item tint rgb"]["value"]..")") + paintlistn:SetIcon("backpack/player/items/crafting/paintcan") + paintlistn:SetTooltip(tf_lang.GetRaw(v["item_name"]).." ("..tostring(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"])))..")") + if ply:GetInfo(convar) == tostring(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"]))) then + paintlist:SetSelectedItem(paintlistn) + end + paintlistn.DoClick = function() + local color = tostring(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"]))) + colorpicker:SetColor(hex2color(paintcanTohex(v["attributes"]["set item tint rgb"]["value"]))) -- hack!! + ply:ConCommand(convar.." "..color) + end + end + end + end + if not paintlist:GetSelectedItem() then + paintlist:SetSelectedItem(paintlistc) + end +end + +local ColorPicker = vgui.Create( "DColorMixer", Frame ) +ColorPicker:SetSize( 150, 150 ) +ColorPicker:SetPos( 5, 30 ) +ColorPicker:SetPalette( false ) +ColorPicker:SetAlphaBar( false ) +ColorPicker:SetWangs( true ) +ColorPicker:SetColor(string.ToColor(ply:GetInfo("tf_hatcolor"))) +ColorPicker.ValueChanged = function() + local ChosenColor = ColorPicker:GetColor() + local color = Color(ChosenColor.r, ChosenColor.g, ChosenColor.b, ChosenColor.a) + ply:ConCommand("tf_hatcolor "..tostring(color)) +end + +local ColorPicker2 = vgui.Create( "DColorMixer", Frame ) +ColorPicker2:SetSize( 150, 150 ) +ColorPicker2:SetPos( 5, 230 ) +ColorPicker2:SetPalette( false ) +ColorPicker2:SetAlphaBar( false ) +ColorPicker2:SetWangs( true ) +ColorPicker2:SetColor(string.ToColor(ply:GetInfo("tf_misccolor"))) +ColorPicker2.ValueChanged = function() + local ChosenColor = ColorPicker2:GetColor() + local color = Color(ChosenColor.r, ChosenColor.g, ChosenColor.b, ChosenColor.a) + ply:ConCommand("tf_misccolor "..tostring(color)) +end + +local paintlist = vgui.Create( "DTree", Frame ) +paintlist:SetPos( 170, 30 ) +paintlist:SetSize( 125, 150 ) + +local paintlist2 = vgui.Create( "DTree", Frame ) +paintlist2:SetPos( 170, 230 ) +paintlist2:SetSize( 125, 150 ) + +add_hats(paintlist, "tf_hatcolor", ColorPicker) +add_hats(paintlist2, "tf_misccolor", ColorPicker2) +end + + +concommand.Add("tf_upgradewep03clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.3 +end) +concommand.Add("check_save_table", function(ply) + PrintTable(ply:GetSaveTable()) +end) +concommand.Add("tf_upgradewep05clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.5 +end) +concommand.Add("tf_upgradewep04clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.4 +end) +concommand.Add("tf_upgradeweprapidfireclientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.15 +end) +concommand.Add("tf_upgradeweprapidfire2clientonly", function(ply) + ply:GetActiveWeapon().Primary.Delay = 0.07 +end) +concommand.Add("l4d_changeclass", L4DClassSelection) +concommand.Add("l4d2_changeclass", L4DClassSelection) +concommand.Add("tf_changeclass", ClassSelection) +concommand.Add("tf_door", DoorClose) +concommand.Add("tf_hatpainter", HatPicker) +concommand.Add("tf_menu", ClassSelection) +--spawnmenu.AddCreationTab( "Team Fortress 2", function() + + --local ctrl = vgui.Create( "SpawnmenuContentPanel" ) + --return ctrl + +--end, "icon16/control_repeat_blue.png", 200 ) + +--[[function GM:OnSpawnMenuOpen() + return --ply:IsAdmin() +end]] + +hook.Add("Think","Phonemes",function() +end) +hook.Add( "PlayerSay", "Change class", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass" ) then + RunConsoleCommand("tf_changeclass") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Scout", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass scout" ) then + RunConsoleCommand("changeclass", "scout") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Soldier", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass soldier" ) then + RunConsoleCommand("changeclass", "soldier") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Pyro", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass pyro" ) then + RunConsoleCommand("changeclass", "pyro") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Demoman", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass demoman" ) then + RunConsoleCommand("changeclass", "demoman") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Heavy", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass heavy" ) then + RunConsoleCommand("changeclass", "heavy") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Engineer", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass engineer" ) then + RunConsoleCommand("changeclass", "engineer") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Medic", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass medic" ) then + RunConsoleCommand("changeclass", "medic") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Sniper", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass sniper" ) then + RunConsoleCommand("changeclass", "sniper") + return false + end +end ) + +hook.Add( "PlayerSay", "Class Spy", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeclass spy" ) then + RunConsoleCommand("changeclass", "spy") + return false + end +end ) + +hook.Add( "PlayerSay", "Change Team Red", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeteam red" ) then + RunConsoleCommand("changeteam", "1") + return false + end +end ) + +hook.Add( "PlayerSay", "Change Team Blu", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeteam blu" ) then + RunConsoleCommand("changeteam", "2") + return false + end +end ) + +hook.Add( "PlayerSay", "Change Team Blu", function( ply, text, public ) + text = string.lower( text ) -- Make the chat message entirely lowercase + if ( string.sub( text, 1 ) == "!changeteam blu" ) then + RunConsoleCommand("changeteam", "2") + return false + end +end ) + + +include("cl_hud.lua") +include("tf_lang_module.lua") +include("shd_items.lua") + +include("cl_proxies.lua") +include("cl_pickteam.lua") + +include("cl_conflict.lua") + +include("shared.lua") +include("cl_entclientinit.lua") +include("cl_deathnotice.lua") +include("cl_scheme.lua") + +include("cl_player_other.lua") + +include("cl_camera.lua") + +include("tf_draw_module.lua") + +include("cl_materialfix.lua") + +include("cl_pac.lua") + +include("cl_loadout.lua") + +include("proxies/itemtintcolor.lua") +include("proxies/yellowlevel.lua") +include("proxies/modelglowcolor.lua") +include("proxies/burnlevel.lua") + +include("proxies/sniperriflecharge.lua") +include("proxies/weapon_invis.lua") +include("shd_gravitygun.lua") + + +list.Set( + "DesktopWindows", + "TauntMenu", + { + title = "TF2 Taunt Menu (BETA!)", + icon = "backpack/player/items/all_class/taunt_russian_large", + width = 960, + height = 700, + onewindow = true, + init = function(icn, pnl) + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 25 ) + DImageButton:SetTooltip( "Taunt: Conga (Start)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_conga_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_conga_start" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 105 ) + DImageButton:SetTooltip( "Taunt: Conga (Stop)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_conga_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_conga_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 105, 25 ) + DImageButton:SetTooltip( "Taunt: Square Dance" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_dosido_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_squaredance_intro" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 105, 105 ) + DImageButton:SetTooltip( "Taunt: Square Dance ( Undo )" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_dosido_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_squaredance_intro_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 205, 25 ) + DImageButton:SetTooltip( "Taunt: Skullcracker" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_skullcracker_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_skullcracker" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 305, 25 ) + DImageButton:SetTooltip( "Taunt: Rock, Paper, Scissors!" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_rps_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_rockpaperscissors_intro" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 305, 105 ) + DImageButton:SetTooltip( "Taunt: Rock, Paper, Scissors! ( Undo )" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_rps_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_rockpaperscissors_intro_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 405, 25 ) + DImageButton:SetTooltip( "Taunt: Flippin' Awesome" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_flip_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_flipping_intro" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 405, 105 ) + DImageButton:SetTooltip( "Taunt: Flippin' Awesome ( Undo )" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_flip_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_squaredance_intro_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 505, 25 ) + DImageButton:SetTooltip( "Taunt: Kazotsky Kick (Start)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_russian_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_russian_start" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 505, 105 ) + DImageButton:SetTooltip( "Taunt: Kazotsky Kick (Stop)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_russian_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_russian_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 605, 25 ) + DImageButton:SetTooltip( "Taunt: Thriller (Scream Fortress)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/sniper/sniper_zombie_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_thriller" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 705, 25 ) + DImageButton:SetTooltip( "Taunt: High Five!" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_highfive_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_highfive_success" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 805, 25 ) + DImageButton:SetTooltip( "Taunt: Bumpkins Banjo (Start)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/workshop/player/items/engineer/taunt_bumpkins_banjo/taunt_bumpkins_banjo_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_banjo_start" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 805, 105 ) + DImageButton:SetTooltip( "Taunt: Bumpkins Banjo (Stop)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/workshop/player/items/engineer/taunt_bumpkins_banjo/taunt_bumpkins_banjo_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_banjo_stop" ) + end + + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 205 ) + DImageButton:SetTooltip( "Taunt: Party Trick" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_party_trick_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_pyro_partytrick" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 105, 205 ) + DImageButton:SetTooltip( "Taunt: Schadenfreude" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/all_laugh_taunt_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_laugh" ) + end + + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 205, 205 ) + DImageButton:SetTooltip( "Taunt: Meet the Medic" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/medic/medic_heroic_taunt_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_heroric" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 305, 205 ) + DImageButton:SetTooltip( "Taunt: Introduction" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/weapons/w_models/w_minigun_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_introduction" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 405, 205 ) + DImageButton:SetTooltip( "Taunt: Brutal Legend" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_brutallegend" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 505, 205 ) + DImageButton:SetTooltip( "Taunt: Luxury Lounge (Start)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/workshop/player/items/spy/taunt_luxury_lounge/taunt_luxury_lounge_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_chair" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 505, 305 ) + DImageButton:SetTooltip( "Taunt: Luxury Lounge (Stop)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/workshop/player/items/spy/taunt_luxury_lounge/taunt_luxury_lounge_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_chair_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 605, 205 ) + DImageButton:SetTooltip( "Taunt: Yeti Smash" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_yeti_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_yeti" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 705, 205 ) + DImageButton:SetTooltip( "Taunt: Rancho Relaxo (Start)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_rancho_relaxo_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_chair2" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 705, 305 ) + DImageButton:SetTooltip( "Taunt: Rancho Relaxo (Stop)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_rancho_relaxo_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_chair2_stop" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 805, 205 ) + DImageButton:SetTooltip( "Taunt: Oblooterated" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_oblooterated_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_woohoo" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 305 ) + DImageButton:SetTooltip( "Taunt: Maggot's Condolence" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/workshop/player/items/soldier/taunt_maggots_condolence/taunt_maggots_condolence_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_rip_rick_may_you_will_be_forever_missed" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 105, 305 ) + DImageButton:SetTooltip( "Taunt: Director's Vision" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/taunt_replay_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_directors_vision" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 205, 305 ) + DImageButton:SetTooltip( "Taunt: Gimmie 20" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/weapons/w_models/w_rocketlauncher_large" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_gimme20" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 305, 305 ) + DImageButton:SetTooltip( "Taunt: Slit Throat" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "sprites/bucket_knife" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_slit_throat" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 405, 305 ) + DImageButton:SetTooltip( "Taunt: Come and Get Me" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "vgui/achievements/tf_scout_first_blood" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_taunt_come_and_get_me" ) + end + local Hint = pnl:Add( "DLabel" ) + Hint:SetPos( 0, 605 ) + Hint:SetText( ("Taunts in this gamemode are in WIP stages and may not work properly. Make sure you hover over the icons for information." ) ) + Hint:SizeToContents() + local Hint2 = pnl:Add( "DLabel" ) + Hint2:SetPos( 0, 625 ) + Hint2:SetText( ("To stop looping taunts, press the button below the one you've just pressed." ) ) + Hint2:SizeToContents() + end + } +) + +timer.Stop("ForceBosses") +timer.Create("ForceBosses",0,0,function() + + if (GetConVar("civ2_enable_be_the_bosses"):GetBool()) then + list.Set( + "DesktopWindows", + "BeTheBosses", + { + title = "Be the Bosses", + icon = "backpack/player/items/all_class/pumkin_hat", + width = 1024, + height = 768, + onewindow = true, + init = function(icn, pnl) + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 25 ) + DImageButton:SetTooltip( "Horseless Headless Horsemann" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/pumkin_hat" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass","headless_hatman" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 128, 25 ) + DImageButton:SetTooltip( "Sentry Buster" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/leaderboard_class_sentry_buster" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass","sentrybuster" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 256, 25 ) + DImageButton:SetTooltip( "Giant Robot (Toggle ON)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/mvm_loot/soldier/robot_helmet" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_giant_robot","1" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 384, 25 ) + DImageButton:SetTooltip( "Giant Robot (Toggle OFF)" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "vgui/achievements/tf_mvm_spy_sap_robots" ) + DImageButton.DoClick = function() + RunConsoleCommand( "tf_giant_robot","0" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 512, 25 ) + DImageButton:SetTooltip( "Saxton Hale" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_saxtonred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "saxton" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 128 ) + DImageButton:SetTooltip( "Telecon" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_teleconred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "telecon" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 128, 128 ) + DImageButton:SetTooltip( "Mercenary" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_mercenaryred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "mercenary" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 256, 128 ) + DImageButton:SetTooltip( "Enforcer" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_zombiefastred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "zombine" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 384, 128 ) + DImageButton:SetTooltip( "John" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_rebelred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "rebel" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 512, 128 ) + DImageButton:SetTooltip( "Jerry" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_antlionred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "antlion" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 0, 256 ) + DImageButton:SetTooltip( "Merasmus" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "backpack/player/items/all_class/merasmus_skull" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "merasmus" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 128, 256 ) + DImageButton:SetTooltip( "Repressor" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_combinered" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "combinesoldier" ) + end + local DImageButton = pnl:Add( "DImageButton" ) + DImageButton:SetPos( 256, 256 ) + DImageButton:SetTooltip( "Civilian" ) + DImageButton:SetSize( 128, 128 ) + DImageButton:SetImage( "hud/class_civred" ) + DImageButton.DoClick = function() + RunConsoleCommand( "changeclass", "civilian_" ) + end + end + } + ) + end + +end) +include("cl_hud.lua") + +file.Append(LOGFILE, Format("Done loading, time = %f\n", SysTime() - load_time)) + +hook.Add( "SpawnMenuEnabled", "BlockThisShit", function( ) + if ( GetConVar("tf_competitive"):GetBool() and !LocalPlayer():IsAdmin() ) then + return false + else + return true + end +end ) + +local function MergeSteamInventory(ply) + --Send request to the SteamDEV API with the SteamID64 of the player who has just connected. + http.Fetch( + string.format("https://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?steamid=%s&key=EFC1DC87C314EAD8164899A6AAEEC6F8&format=json", + ply:SteamID64() + ), + function(body) + file.Write("tf_loadout.json", body) + timer.Simple(1.5, function() + + local json = util.JSONToTable(file.Read( "tf_loadout.json", "DATA" )) + timer.Simple(0.5, function() + + file.Write("tf_loadout_table.json", table.ToString(json)) + + + --If the response does not contain the following table items. + + local status = json.status + local item1scout = 200 + local item2scout = 209 + local item3scout = 190 + local item4scout = -1 + local item5scout = -1 + local item6scout = -1 + local item1soldier = 205 + local item2soldier = 10 + local item3soldier = 196 + local item4soldier = -1 + local item5soldier = -1 + local item6soldier = -1 + local item1pyro = 208 + local item2pyro = 12 + local item3pyro = 192 + local item4pyro = -1 + local item5pyro = -1 + local item6pyro = -1 + local item1demoman = 206 + local item2demoman = 207 + local item3demoman = 191 + local item4demoman = -1 + local item5demoman = -1 + local item6demoman = -1 + local item1heavy = 202 + local item2heavy = 11 + local item3heavy = 195 + local item4heavy = -1 + local item5heavy = -1 + local item6heavy = -1 + local item1engineer = 9 + local item2engineer = 209 + local item3engineer = 197 + local item4engineer = -1 + local item5engineer = -1 + local item6engineer = -1 + local item1medic = 204 + local item2medic = 211 + local item3medic = 198 + local item4medic = -1 + local item5medic = -1 + local item6medic = -1 + local item1sniper = 201 + local item2sniper = 203 + local item3sniper = 193 + local item4sniper = -1 + local item5sniper = -1 + local item6sniper = -1 + local item1spy = 210 + local item2spy = 736 + local item3spy = 194 + local item4spy = -1 + local item5spy = -1 + local item6spy = -1 + if (json.result) then + local items = json.result.items + for tbl1,tbl2 in ipairs(items) do + local v = items[tbl1] + if (v["equipped"]) then + for a,b in ipairs(v["equipped"]) do + PrintTable(v["equipped"][a]) + local classes = v["equipped"][a] + -- scout + if (classes["class"] == 1) then + if (classes["slot"] == 0) then + item1scout = v.defindex + elseif (classes["slot"] == 1) then + item2scout = v.defindex + elseif (classes["slot"] == 2) then + item3scout = v.defindex + elseif (classes["slot"] == 7) then + item4scout = v.defindex + elseif (classes["slot"] == 8) then + item5scout = v.defindex + elseif (classes["slot"] == 10) then + item6scout = v.defindex + end + + -- soldier + elseif (classes["class"] == 3) then + if (classes["slot"] == 0) then + if (v.defindex == 199 or v.defindex == 1141 or v.defindex == 9 or v.defindex == 12 or v.defindex == 10 or v.defindex == 415 or v.defindex == 1153 or v.defindex == 199) then + item2soldier = v.defindex + else + item1soldier = v.defindex + end + elseif (classes["slot"] == 1) then + item2soldier = v.defindex + elseif (classes["slot"] == 2) then + item3soldier = v.defindex + elseif (classes["slot"] == 7) then + item4soldier = v.defindex + elseif (classes["slot"] == 8) then + item5soldier = v.defindex + elseif (classes["slot"] == 10) then + item6soldier = v.defindex + end + + -- pyro + elseif (classes["class"] == 7) then + if (classes["slot"] == 0) then + if (v.defindex == 199 or v.defindex == 1141 or v.defindex == 9 or v.defindex == 12 or v.defindex == 10 or v.defindex == 415 or v.defindex == 1153 or v.defindex == 199) then + item2pyro = v.defindex + else + item1pyro = v.defindex + end + elseif (classes["slot"] == 1) then + item2pyro = v.defindex + elseif (classes["slot"] == 2) then + item3pyro = v.defindex + elseif (classes["slot"] == 7) then + item4pyro = v.defindex + elseif (classes["slot"] == 8) then + item5pyro = v.defindex + elseif (classes["slot"] == 10) then + item6pyro = v.defindex + end + + -- demoman + elseif (classes["class"] == 4) then + if (classes["slot"] == 0) then + item1demoman = v.defindex + elseif (classes["slot"] == 1) then + item2demoman = v.defindex + elseif (classes["slot"] == 2) then + item3demoman = v.defindex + elseif (classes["slot"] == 7) then + item4demoman = v.defindex + elseif (classes["slot"] == 8) then + item5demoman = v.defindex + elseif (classes["slot"] == 10) then + item6demoman = v.defindex + end + + -- heavy + elseif (classes["class"] == 6) then + if (classes["slot"] == 0) then + if (v.defindex == 199 or v.defindex == 1141 or v.defindex == 9 or v.defindex == 12 or v.defindex == 10 or v.defindex == 415 or v.defindex == 1153 or v.defindex == 199) then + item2heavy = v.defindex + else + item1heavy = v.defindex + end + elseif (classes["slot"] == 1) then + item2heavy = v.defindex + elseif (classes["slot"] == 2) then + item3heavy = v.defindex + elseif (classes["slot"] == 7) then + item4heavy = v.defindex + elseif (classes["slot"] == 8) then + item5heavy = v.defindex + elseif (classes["slot"] == 10) then + item6heavy = v.defindex + end + + -- engineer + elseif (classes["class"] == 9) then + if (classes["slot"] == 0) then + item1engineer = v.defindex + elseif (classes["slot"] == 1) then + item2engineer = v.defindex + elseif (classes["slot"] == 2) then + item3engineer = v.defindex + elseif (classes["slot"] == 7) then + item4engineer = v.defindex + elseif (classes["slot"] == 8) then + item5engineer = v.defindex + elseif (classes["slot"] == 10) then + item6engineer = v.defindex + end + + -- medic + elseif (classes["class"] == 5) then + if (classes["slot"] == 0) then + item1medic = v.defindex + elseif (classes["slot"] == 1) then + item2medic = v.defindex + elseif (classes["slot"] == 2) then + item3medic = v.defindex + elseif (classes["slot"] == 7) then + item4medic = v.defindex + elseif (classes["slot"] == 8) then + item5medic = v.defindex + elseif (classes["slot"] == 10) then + item6medic = v.defindex + end + + -- sniper + elseif (classes["class"] == 2) then + if (classes["slot"] == 0) then + item1sniper = v.defindex + elseif (classes["slot"] == 1) then + item2sniper = v.defindex + elseif (classes["slot"] == 2) then + item3sniper = v.defindex + elseif (classes["slot"] == 7) then + item4sniper = v.defindex + elseif (classes["slot"] == 8) then + item5sniper = v.defindex + elseif (classes["slot"] == 10) then + item6sniper = v.defindex + end + -- spy + elseif (classes["class"] == 8) then + if (classes["slot"] == 1) then + item1spy = v.defindex + elseif (classes["slot"] == 4) then + item2spy = v.defindex + elseif (classes["slot"] == 2) then + item3spy = v.defindex + elseif (classes["slot"] == 7) then + item4spy = v.defindex + elseif (classes["slot"] == 8) then + item5spy = v.defindex + elseif (classes["slot"] == 10) then + item6spy = v.defindex + end + end + end + end + end + timer.Simple(2.0, function() + -- scout + local convar = GetConVar("loadout_scout") + local split = {-1,-1,-1,-1,-1,-1} + --print(item1scout,item2scout,item3scout,item4scout,item5scout,item6scout) + + split[1] = item1scout + split[2] = item2scout + split[3] = item3scout + split[4] = item4scout + split[5] = item5scout + split[6] = item6scout + convar:SetString(table.concat(split, ",")) + + -- soldier + convar = GetConVar("loadout_soldier") + split = {-1,-1,-1,-1,-1,-1} + --print(item1soldier,item2soldier,item3soldier,item4soldier,item5soldier,item6soldier) + split[1] = item1soldier + split[2] = item2soldier + split[3] = item3soldier + split[4] = item4soldier + split[5] = item5soldier + split[6] = item6soldier + + convar:SetString(table.concat(split, ",")) + + -- pyro + convar = GetConVar("loadout_pyro") + split = {-1,-1,-1,-1,-1,-1} + --print(item1pyro,item2pyro,item3pyro,item4pyro,item5pyro,item6pyro) + split[1] = item1pyro + split[2] = item2pyro + split[3] = item3pyro + split[4] = item4pyro + split[5] = item5pyro + split[6] = item6pyro + + convar:SetString(table.concat(split, ",")) + + -- demoman + convar = GetConVar("loadout_demoman") + split = {-1,-1,-1,-1,-1,-1} + --print(item1demoman,item2demoman,item3demoman,item4demoman,item5demoman,item6demoman) + split[2] = item1demoman + split[1] = item2demoman + split[3] = item3demoman + split[4] = item4demoman + split[5] = item5demoman + split[6] = item6demoman + convar:SetString(table.concat(split, ",")) + + -- heavy + convar = GetConVar("loadout_heavy") + split = {-1,-1,-1,-1,-1,-1} + --print(item1heavy,item2heavy,item3heavy,item4heavy,item5heavy,item6heavy) + split[1] = item1heavy + split[2] = item2heavy + split[3] = item3heavy + split[4] = item4heavy + split[5] = item5heavy + split[6] = item6heavy + + convar:SetString(table.concat(split, ",")) + + -- engineer + convar = GetConVar("loadout_engineer") + split = {-1,-1,-1,-1,-1,-1} + --print(item1engineer,item2engineer,item3engineer,item4engineer,item5engineer,item6engineer) + split[1] = item1engineer + split[2] = item2engineer + split[3] = item3engineer + split[4] = item4engineer + split[5] = item5engineer + split[6] = item6engineer + + convar:SetString(table.concat(split, ",")) + + -- medic + convar = GetConVar("loadout_medic") + split = {-1,-1,-1,-1,-1,-1} + --print(item1medic,item2medic,item3medic,item4medic,item5medic,item6medic) + split[1] = item1medic + split[2] = item2medic + split[3] = item3medic + split[4] = item4medic + split[5] = item5medic + split[6] = item6medic + + convar:SetString(table.concat(split, ",")) + + -- sniper + convar = GetConVar("loadout_sniper") + split = {-1,-1,-1,-1,-1,-1} + --print(item1sniper,item2sniper,item3sniper,item4sniper,item5sniper,item6sniper) + split[1] = item1sniper + split[2] = item2sniper + split[3] = item3sniper + split[4] = item4sniper + split[5] = item5sniper + split[6] = item6sniper + convar:SetString(table.concat(split, ",")) + + -- spy + convar = GetConVar("loadout_spy") + split = {-1,-1,-1,-1,-1,-1} + --print(item1spy,item2spy,item3spy,item4spy,item5spy,item6spy) + split[2] = item1spy + split[1] = item2spy + split[3] = item3spy + split[4] = item4spy + split[5] = item5spy + split[6] = item6spy + + convar:SetString(table.concat(split, ",")) + RunConsoleCommand("loadout_update") + end) + else + error("JSON returned nothing! Try again later") + end + end) + end) + end, + + function(code) + error(string.format("IEconItems_440: Failed API call for %s | %s (Error: %s)\n", ply:Nick(), ply:SteamID(), code)) + end + ) +end + +concommand.Add("tf_merge_loadout_ask", function(ply) + if CLIENT then + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("Steam Inventory Integration") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("Would you like to integrate your TF2 Inventory with this gamemode? Click the close button if you don't want to. It will not work if your inventory is private. Alternatively, you can type 'tf_merge_loadout' in console.") + local conflictbut2 = vgui.Create("DButton", conflict_help_frame) + conflictbut2:SetSize(100, 30) + conflictbut2:SetPos(0, 125) + conflictbut2:CenterHorizontal(0.5) + conflictbut2:SetText("Yes") + + function conflictbut2.DoClick() + conflict_help_frame:Close() + MergeSteamInventory(LocalPlayer()) + end + end +end) + +concommand.Add("tf_merge_loadout", function(ply) + MergeSteamInventory(ply) +end) + +if not util.IsBinaryModuleInstalled("steamrichpresencer") then +else + + require("steamrichpresencer") -- module adds steamworks.SetRichPresence function on load + + for i = 0, 90 do + timer.Simple(120*i,function() + steamworks.SetRichPresence("generic", "Playing Team Fortress 2 - "..game.GetMap()) + end) + end +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/cl_killicons.lua b/gamemodes/tf/gamemode/cl_killicons.lua new file mode 100644 index 000000000..42b0e144f --- /dev/null +++ b/gamemodes/tf/gamemode/cl_killicons.lua @@ -0,0 +1,1725 @@ +function GetKilliconData(name, highlight) + local icon = Killicons["_images"]["d_skull"] + local group = "_images" + + for k,v in pairs(Killicons) do + if v[name] then + icon = v[name] + group = k + break + end + end + + local path + + if string.sub(group, 1, 1)=="!" then + path = "HUD/"..string.sub(group, 2) + else + path = (highlight and ("HUD/dneg"..group)) or ("HUD/d"..group) + end + + if highlight then + return icon, Color(245, 229, 196, 200), path + else + return icon, Color(46, 43, 42, 220), path + end +end + +KilliconTranslate = { +-- HL2 +weapon_pistol = "d_hl_pistol", +weapon_357 = "d_hl_357", +weapon_crossbow = "d_hl_crossbow", +weapon_smg1 = "d_hl_smg", +weapon_shotgun = "d_hl_shotgun", +weapon_ar2 = "d_hl_ar2", +weapon_crowbar = "d_hl_crowbar", +weapon_stunstick = "d_hl_stunstick", +weapon_rpg = "d_hl_rpg", +weapon_annabelle = "d_sniperrifle", +-- lua hl2 +weapon_hl2_pistol = "d_hl_pistol", +weapon_hl2_357 = "d_hl_357", +weapon_hl2_crossbow = "d_hl_crossbow", +weapon_hl2_smg1 = "d_hl_smg", +weapon_hl2_shotgun = "d_hl_shotgun", +weapon_hl2_ar2 = "d_hl_ar2", +weapon_hl2_crowbar = "d_hl_crowbar", +weapon_hl2_stunstick = "d_hl_stunstick", +weapon_hl2_rpg = "d_hl_rpg", +weapon_hl2_annabelle = "d_sniperrifle", +-- L4D +weapon_l4d_smg = "d_hl_smg", +weapon_l4d_pistol = "d_hl_357", +weapon_l4d_dual_pistol = "d_hl_357", +weapon_l4d_rifle = "d_hl_smg", +weapon_l4d_pumpshotgun = "d_hl_shotgun", +weapon_l4d_autoshotgun = "d_hl_shotgun", +-- Continue HL2 +crossbow_bolt = "d_hl_crossbow", +crossbow_bolt_deflect = "d_deflect_crossbowbolt", +rpg_missile = "d_hl_rpg", +rpg_missile_deflect = "d_deflect_rpg", +weapon_frag = "d_hl_frag", +m9k_proxy = "d_bomb_head", +npc_grenade_frag = "d_hl_frag", +npc_grenade_frag_deflect = "d_deflect_frag", +prop_combine_ball = "d_hl_combine_ball", +npc_headless_hatman = "d_headtaker", +prop_combine_ball_deflect = "d_deflect_combineball", +grenade_ar2 = "d_hl_ar2_grenade", +grenade_ar2_deflect = "d_deflect_ar2grenade", +grenade_spit = "d_hl_acidball", +grenade_spit_deflect = "d_deflect_acidball", +hunter_flechette = "d_hl_flechette", +simfphys_tankprojectile = "d_hl_rpg", + +weapon_braaains = "d_hl_zombie", +weapon_cpt_spell_base = "d_hl_zombie", +player = "d_hl_zombie", +pill_puppet = "d_hl_zombie", +npc_zombie = "d_hl_zombie", +npc_zombie_torso = "d_hl_zombie", +npc_fastzombie = "d_hl_zombie", +npc_fastzombie_torso = "d_hl_zombie", +npc_poisonzombie = "d_hl_zombie", +npc_zombine = "d_hl_zombie", + +tf_weapon_grapplinghook = "d_hl_crowbar", +tf_projectile_shortcircuit = "d_shortcircuit_ball", + +npc_headcrab = "d_hl_headcrab", +npc_headcrab_fast = "d_hl_headcrab", +npc_headcrab_poison = "d_hl_headcrab", +npc_headcrab_black = "d_hl_headcrab", + +npc_antlion = "d_hl_antlion", +npc_antlion_worker = "d_hl_antlion", +npc_antlion_worker_explosion = "d_hl_antworker_explosion", +npc_antlionguard = "d_hl_antlionguard", +tf_projectile_rocket_fireball = "d_dragons_fury", + +npc_hunter = "d_hl_hunter_charge", +npc_hunter_pound = "d_hl_hunter_pound", +npc_hunter_skewer = "d_hl_hunter_skewer", + +npc_vortigaunt_beam = "d_hl_vortigaunt_beam", +npc_vortigaunt = "d_hl_vortigaunt", + +npc_helicopter = "d_hl_airboat_gun", +npc_combinegunship = "d_hl_airboat_gun", +npc_combinedropship = "d_hl_airboat_gun", +npc_strider_minigun = "d_hl_strider_minigun", +concussiveblast = "d_hl_strider_beam", +tf_weapon_superphyscannon = "d_hl_strider_beam", +npc_strider = "d_hl_strider_minigun", +rocketpack = "d_boot", + +npc_rollermine = "d_hl_rollermine", +npc_manhack = "d_hl_manhack", +npc_turret_floor = "d_hl_floorturret", + +have_an_error = "d_have_an_error", + +-- Scout +tf_weapon_scattergun = "d_scattergun", +tf_weapon_pistol_scout = "d_pistol_scout", +tf_weapon_bat = "d_bat", +unarmed_combat = "d_hl_zombie", + +-- Heavy +tf_weapon_minigun = "d_minigun", +tf_weapon_shotgun_hwg = "d_shotgun_hwg", +reserve_kill = "d_shotgun_hwg", +tf_weapon_fists = "d_fists", +weapon_fists = "d_fists", +weapon_hwg_boxinggloves = "d_gloves", +tf_weapon_minigun_tomislav = "d_tomislav", + +-- Demoman +tf_projectile_pipe = "d_tf_projectile_pipe", +loose_cannon_explosion = "d_loose_cannon_explosion", +weapon_demo_scottishresistance = "d_sticky_resistance", +tf_projectile_pipe_remote = "d_tf_projectile_pipe_remote", +weapon_demo_quickielauncher = "d_tf_projectile_pipe_remote", +tf_projectile_pipe_defender = "d_sticky_resistance", +tf_projectile_pipe_round = "d_tf_projectile_pipe_remote", +tf_weapon_bottle = "d_bottle", +tf_weapon_sword = "d_sword", +tf_wearable_item_demoshield = "d_demoshield", + +-- Soldier +tf_projectile_rocket = "d_tf_projectile_rocket", +monoculus = "d_monoculus", +tf_weapon_rocketlauncher = "d_taunt_scout", +tf_projectile_rocket_direct = "d_rocketlauncher_directhit", +tf_weapon_shotgun_soldier = "d_shotgun_soldier", +tf_weapon_shotgun = "d_shotgun_primary", +tf_weapon_shovel = "d_shovel", + +-- Engineer +tf_weapon_shotgun_primary = "d_shotgun_primary", +tf_weapon_pistol = "d_pistol", +tf_weapon_wrench = "d_wrench", +obj_sentrygun = "d_obj_sentrygun", +npc_sentry_red = "d_obj_sentrygun", +npc_sentry_blue = "d_obj_sentrygun", +obj_sentrygun2 = "d_obj_sentrygun2", +obj_sentrygun3 = "d_obj_sentrygun3", +tf_projectile_sentryrocket = "d_obj_sentrygun3", + +-- Pyro +tf_flame = "d_flamethrower", +tf_weapon_shotgun_pyro = "d_shotgun_pyro", +tf_weapon_fireaxe = "d_fireaxe", +tf_projectile_flare = "d_flaregun", + +-- Medic +tf_projectile_syringe = "d_syringegun_medic", +tf_projectile_blutsauger = "d_blutsauger", +tf_weapon_bonesaw = "d_bonesaw", + +-- Sniper +tf_weapon_sniperrifle = "d_sniperrifle", +tf_weapon_sniperrifle_headshot = "d_headshot", +tf_weapon_smg = "d_smg", +tf_weapon_club = "d_club", +tf_projectile_arrow = "d_huntsman", +tf_projectile_arrow_headshot = "d_huntsman_headshot", +tf_projectile_arrow_burning = "d_huntsman_burning", +tf_projectile_arrow_flyingburn = "d_huntsman_flyingburn", + +-- Spy +tf_weapon_revolver = "d_revolver", +tf_weapon_knife = "d_knife", +tf_weapon_builder = "d_obj_attachment_sapper", +tf_weapon_knife_backstab = "d_backstab", +tf_weapon_ambassador_headshot = "d_ambassador_headshot", + +-- Vehicles +prop_vehicle_jeep_old = "d_vehicle", +prop_vehicle_jeep = "d_vehicle", +prop_vehicle_airboat = "d_vehicle", +tf_wearable_item_demoshield_l4d = "d_vehicle", +gmod_sent_vehicle_fphysics_base = "d_vehicle", + +-- Other +entityflame = "d_firedeath", +tf_entityflame = "d_firedeath", +env_fire = "d_firedeath", +tf_entitybleed = "d_bleed_kill", +env_explosion = "d_explosion", +env_physexplosion = "d_explosion", +combine_mine = "d_hl_combine_mine", +weapon_l4d_first_aid_kit = "d_hl_combine_mine", +prop_physics = "d_hl_physics", + +-- STOP MAKING THESE MOTHERFUCKING NEXTBOTS YOU FAHGET!!! (no homophobia, just mocking those idiots) +npc_obunga = "d_vehicle", +npc_quandale = "d_vehicle", +npc_sanic = "d_vehicle", +npc_lwsky = "d_mannpower_plague", +} + +function TranslateKilliconName(name) + return KilliconTranslate[name] or "d_"..name +end + +function RegisterKillicon(name, texture, data) + if not Killicons[texture] then Killicons[texture] = {} end + Killicons[texture][name] = data +end + +Killicons = { + +["!leaderboard_dominated"] = { +d_domination={ + x=0, + y=0, + w=64, + h=64, +}, +}, + +["_images"]={ +d_obj_sentrygun={ + x=96, + y=160, + w=64, + h=32, +}, +d_obj_sentrygun2={ + x=256, + y=0, + w=96, + h=32, +}, +d_obj_sentrygun3={ + x=256, + y=32, + w=96, + h=32, +}, +d_bat={ + x=0, + y=0, + w=96, + h=32, +}, +d_pistol={ + x=0, + y=32, + w=96, + h=32, +}, +d_pistol_scout={ + x=0, + y=32, + w=96, + h=32, +}, +d_nailgun={ + x=0, + y=64, + w=64, + h=32, +}, +d_sniperrifle={ + x=16, + y=96, + w=32, + h=32, +}, +d_smg={ + x=0, + y=128, + w=96, + h=32, +}, +d_club={ + x=0, + y=160, + w=96, + h=32, +}, +d_shovel={ + x=0, + y=192, + w=96, + h=32, +}, +d_tf_projectile_rocket={ + x=0, + y=224, + w=96, + h=32, +}, +d_tf_projectile_rocket_deflect={ + x=176, + y=128, + w=88, + h=32, +}, +d_shotgun_primary={ + x=0, + y=256, + w=96, + h=32, +}, +d_shotgun_soldier={ + x=0, + y=256, + w=96, + h=32, +}, +d_shotgun_hwg={ + x=0, + y=256, + w=96, + h=32, +}, +d_shotgun_pyro={ + x=0, + y=256, + w=96, + h=32, +}, +d_tf_projectile_pipe={ + x=0, + y=288, + w=96, + h=32, +}, +d_bottle={ + x=0, + y=320, + w=96, + h=32, +}, +d_syringegun_medic={ + x=0, + y=352, + w=96, + h=32, +}, +d_minigun={ + x=0, + y=384, + w=96, + h=32, +}, +d_pipe={ + x=0, + y=448, + w=96, + h=32, +}, +d_flamethrower={ + x=0, + y=416, + w=96, + h=32, +}, +d_fists={ + x=191, + y=446, + w=64, + h=32, +}, +d_fireaxe={ + x=0, + y=480, + w=96, + h=32, +}, +d_bonesaw={ + x=96, + y=128, + w=96, + h=32, +}, +d_knife={ + x=96, + y=0, + w=96, + h=32, +}, +d_revolver={ + x=96, + y=32, + w=96, + h=32, +}, +d_flaregun={ + x=96, + y=64, + w=96, + h=32, +}, +d_wrench={ + x=96, + y=96, + w=96, + h=32, +}, +d_scattergun={ + x=96, + y=192, + w=96, + h=32, +}, +d_tf_projectile_pipe_remote={ + x=96, + y=224, + w=96, + h=32, +}, +d_vehicle={ + x=96, + y=256, + w=96, + h=32, +}, +d_skull={ + x=116, + y=288, + w=52, + h=32, +}, +d_explosion={ + x=116, + y=320, + w=52, + h=32, +}, +d_headshot={ + x=120, + y=352, + w=42, + h=32, +}, +d_backstab={ + x=116, + y=384, + w=48, + h=32, +}, +d_ubersaw={ + x=96, + y=416, + w=96, + h=32, +}, +d_axtinguisher={ + x=96, + y=448, + w=96, + h=32, +}, +d_taunt_pyro={ + x=96, + y=480, + w=96, + h=32, +}, +d_bluedefend={ + x=194, + y=0, + w=32, + h=32, +}, +d_bluecapture={ + x=194, + y=32, + w=32, + h=32, +}, +d_reddefend={ + x=226, + y=0, + w=32, + h=32, +}, +d_redcapture={ + x=226, + y=32, + w=32, + h=32, +}, +d_obj_attachment_sapper={ + x=0, + y=64, + w=96, + h=32, +}, +d_deflect_promode={ + x=194, + y=64, + w=64, + h=32, +}, +d_deflect_sticky={ + x=194, + y=96, + w=64, + h=32, +}, +d_deflect_rocket={ + x=194, + y=128, + w=64, + h=32, +}, +d_deflect_flare={ + x=194, + y=160, + w=64, + h=32, +}, +d_bat_wood={ + x=0, + y=0, + w=96, + h=32, +}, +d_ball={ + x=192, + y=192, + w=64, + h=32, +}, +d_taunt_heavy={ + x=191, + y=479, + w=64, + h=32, +}, +d_taunt_scout={ + x=192, + y=224, + w=64, + h=64, +}, +d_gloves={ + x=0, + y=448, + w=96, + h=32, +}, +d_crit={ + x=192, + y=409, + w=64, + h=34, +}, +d_ambassador={ + x=263, + y=67, + w=92, + h=32, +}, +d_huntsman={ + x=263, + y=98, + w=96, + h=32, +}, +d_huntsman_burning={ + x=263, + y=190, + w=68, + h=33, +}, +d_huntsman_flyingburn={ + x=263, + y=223, + w=103, + h=32, +}, +d_taunt_spy={ + x=263, + y=129, + w=92, + h=32, +}, +d_huntsman_headshot={ + x=192, + y=289, + w=64, + h=32, +}, +d_ambassador_headshot={ + x=192, + y=322, + h=32, +}, +d_taunt_sniper={ + x=368, + y=197, + w=128, + h=32, +}, +d_taunt_medic={ + x=263, + y=161, + w=94, + h=27, +}, +d_saw_kill={ + x=192, + y=359, + w=64, + h=32, +}, +d_deflect_arrow={ + x=360, + y=0, + w=64, + h=30, +}, +d_firedeath={ + x=263, + y=256, + w=64, + h=32, +}, +d_pumpkindeath={ + x=263, + y=358, + w=96, + h=32, +}, +d_taunt_soldier={ + x=323, + y=446, + w=64, + h=32, +}, +d_taunt_demoman={ + x=323, + y=479, + w=64, + h=32, +}, +d_sword={ + x=258, + y=464, + w=64, + h=32, +}, +d_demoshield={ + x=258, + y=398, + w=64, + h=32, +}, +d_pickaxe={ + x=258, + y=431, + w=64, + h=32, +}, +d_rocketlauncher_directhit={ + x=368, + y=263, + w=92, + h=32, +}, +d_sticky_resistance={ + x=323, + y=413, + w=64, + h=32, +}, +d_player_sentry={ + x=388, + y=446, + w=64, + h=32, +}, +d_battleaxe={ + x=368, + y=164, + w=64, + h=32, +}, +d_tribalkukri={ + x=368, + y=65, + w=92, + h=32, +}, +d_sledgehammer={ + x=368, + y=98, + w=64, + h=32, +}, +d_paintrain={ + x=368, + y=131, + w=64, + h=32, +}, +d_samrevolver={ + x=368, + y=230, + w=98, + h=32, +}, +d_natascha={ + x=368, + y=297, + w=98, + h=32, +}, +d_maxgun={ + x=368, + y=330, + w=98, + h=32, +}, +d_force_a_nature={ + x=368, + y=363, + w=128, + h=32, +}, + +}, -- ["_images"] + +["_images_v3"]={ + +d_sharp_dresser={ + x=0, + y=288, + w=96, + h=32, +}, + +d_spycicle={ + x=0, + y=512, + w=96, + h=32, +}, + +d_wrap_assassin={ + x=256, + y=96, + w=128, + h=32, +}, + +d_blackrose={ + x=0, + y=576, + w=96, + h=32, +}, + +d_lollichop={ + x=0, + y=608, + w=96, + h=32, +}, + +d_pro_smg={ + x=0, + y=705, + w=64, + h=31, +}, + +d_pep_pistol={ + x=0, + y=737, + w=48, + h=31, +}, + +d_pro_rifle={ + x=256, + y=128, + w=128, + h=32, +}, + +d_pep_brawlerblaster={ + x=256, + y=160, + w=128, + h=32, +}, + +d_dumpster_device={ + x=256, + y=192, + w=128, + h=32, +}, + +d_long_heatmaker={ + x=0, + y=800, + w=96, + h=31, +}, + +d_annihilator={ + x=0, + y=832, + w=96, + h=31, +}, + +d_guillotine={ + x=0, + y=864, + w=96, + h=31, +}, + +d_freedom_staff={ + x=256, + y=224, + w=128, + h=32, +}, + +d_airstrike={ + x=256, + y=545, + w=128, + h=32, +}, + +d_ai_flamethrower={ + x=256, + y=640, + w=128, + h=32, +}, + +d_quickiebomb_launcher={ + x=256, + y=704, + w=128, + h=32, +}, + +d_nonnonviolent_protest={ + x=0, + y=0, + w=96, + h=32, +}, + +d_batsaber={ + x=256, + y=768, + w=128, + h=32, +}, + +d_the_capper={ + x=256, + y=800, + w=128, + h=32, +}, + +d_shooting_star={ + x=256, + y=832, + w=128, + h=32, +}, + +d_hot_hand={ + x=256, + y=928, + w=64, + h=32, +}, + +d_tide_turner={ + x=192, + y=545, + w=64, + h=32, +}, + +d_mannpower_plague={ + x=128, + y=32, + w=40, + h=32 +}, +d_necro_smasher={ + x=192, + y=608, + w=64, + h=32, +}, +d_rescue_ranger={ + x=256, + y=416, + w=128, + h=32, +}, +d_monoculus={ + x=0, + y=159, + w=88, + h=32, +}, +d_apocofists={ + x=5, + y=256, + w=82, + h=31, +}, +d_ham_shank={ + x=187, + y=91, + w=76, + h=39, +}, +d_scorch_shot={ + x=0, + y=640, + w=96, + h=32, +}, + +d_shortcircuit_ball={ + x=226, + y=322, + w=29, + h=29 +}, + +d_prinny_machete={ + x=100, + y=859, + w=93, + h=41 +}, + +d_bomb_head={ + x=270, + y=351, + w=106, + h=36 +}, + +d_loose_cannon_explosion={ + x=259, + y=387, + w=119, + h=29 +}, + +d_panic_attack={ + x=258, + y=736, + w=124, + h=32, +}, + +d_iron_bomber={ + x=259, + y=673, + w=122, + h=32, +}, + +d_psapper={ + x=278, + y=480, + w=83, + h=33 +}, + +d_lollichop={ + x=16, + y=609, + w=65, + h=30, +}, + +d_rainblower={ + x=7, + y=673, + w=89, + h=31, +}, + +d_holiday_punch={ + x=0, + y=481, + w=90, + h=31, +}, + +d_dragons_fury={ + x=257, + y=992, + w=127, + h=32, +}, + +d_phlogistinator={ + x=260, + y=1, + w=120, + h=31, +} + + +}, + +["_images_v2"]={ + +d_battleneedle={ + x=256, + y=640, + w=96, + h=32, +}, + +d_demokatana={ + x=384, + y=128, + w=96, + h=32, +}, + +d_fryingpan={ + x=96, + y=768, + w=96, + h=32, +}, + +d_atomizer={ + x=384, + y=416, + w=96, + h=32, +}, + +d_bazaar_bargain={ + x=384, + y=448, + w=96, + h=32, +}, + +d_bushwacka={ + x=256, + y=608, + w=96, + h=32, +}, + +d_eviction_notice={ + x=384, + y=544, + w=96, + h=32, +}, + +d_crossing_guard={ + x=0, + y=960, + w=96, + h=32, +}, + +d_nessieclub={ + x=384, + y=928, + w=128, + h=32, +}, + +d_kunai={ + x=384, + y=64, + w=96, + h=32, +}, + +d_big_earner={ + x=384, + y=480, + w=96, + h=32, +}, + +d_family_business={ + x=384, + y=576, + w=96, + h=32, +}, + +d_persian_prusader={ + x=384, + y=672, + w=96, + h=32, +}, + +d_shahanshah={ + x=384, + y=736, + w=96, + h=32, +}, + +d_enforcer={ + x=384, + y=768, + w=96, + h=32, +}, + +d_disciplinary_action={ + x=384, + y=800, + w=96, + h=32, +}, + +d_mantreads={ + x=384, + y=864, + w=64, + h=32, +}, + +d_solemn_vow={ + x=384, + y=896, + w=96, + h=32, +}, + +d_mailbox={ + x=384, + y=960, + w=128, + h=32, +}, + +d_quake_rl={ + x=384, + y=992, + w=128, + h=32, +}, + +d_diamondback={ + x=320, + y=896, + w=64, + h=32, +}, + +d_machina={ + x=256, + y=288, + w=128, + h=32, +}, + + +d_warfan={ + x=384, + y=96, + w=64, + h=32, +}, + +d_splendid_screen={ + x=384, + y=832, + w=96, + h=32, +}, + +d_wrench_golden={ + x=0, + y=736, + w=96, + h=32, +}, + +d_market_gardener={ + x=386, + y=288, + w=87, + h=32, +}, +d_saxxy={ + x=392, + y=255, + w=77, + h=33, +}, + +d_tomislav={ + x=385, + y=350, + w=84, + h=35 +}, + +d_short_circuit={ + x=322, + y=929, + w=55, + h=35 +}, + +d_iron_curtain={ + x=260, + y=706, + w=89, + h=28, +}, + +d_boot={ + x=394, + y=867, + w=46, + y=27, +}, + +d_building_carried_destroyed={ + x=0, + y=768, + w=96, + h=32, +}, +d_taunt_guitar_kill={ + x=0, + y=704, + w=96, + h=32, +}, +d_frontier_kill={ + x=256, + y=96, + w=128, + h=32, +}, +d_wrench_golden={ + x=0, + y=736, + w=96, + h=32, +}, +d_southern_comfort_kill={ + x=256, + y=992, + w=64, + h=32, +}, +d_bleed_kill={ + x=256, + y=928, + w=32, + h=32, +}, +d_wrangler_kill={ + x=256, + y=960, + w=32, + h=32, +}, +d_robot_arm_kill={ + x=0, + y=800, + w=96, + h=32, +}, +d_robot_arm_combo_kill={ + x=0, + y=832, + w=96, + h=32, +}, +d_robot_arm_blender_kill={ + x=0, + y=864, + w=96, + h=32, +}, +d_degreaser={ + x=0, + y=896, + w=96, + h=32, +}, +d_powerjack={ + x=0, + y=928, + w=96, + h=32, +}, +d_eternal_reward={ + x=0, + y=960, + w=96, + h=32, +}, +d_letranger={ + x=0, + y=992, + w=96, + h=32, +}, +d_short_stop={ + x=256, + y=896, + w=64, + h=32, +}, +d_holy_mackerel={ + x=96, + y=992, + w=96, + h=32, +}, +d_headtaker={ + x=256, + y=128, + w=128, + h=32, +}, + +}, -- ["_images_v2"] + +["_images_custom"]={ +d_blutsauger={ + x=0, + y=0, + w=96, + h=32, +}, +d_crotchshot={ + x=24, + y=96, + w=42, + h=32, +}, + +-- CUSTOM WEAPONS +d_firecannone={ + x=0, + y=128, + w=96, + h=32, +}, +d_leviathan={ + x=0, + y=160, + w=96, + h=32, +}, +d_bofors={ + x=0, + y=192, + w=96, + h=32, +}, +-- /CUSTOM WEAPONS + +d_amputator={ + x=96, + y=0, + w=96, + h=32, +}, +d_back_scratcher={ + x=96, + y=32, + w=96, + h=32, +}, +d_boston_basher={ + x=96, + y=64, + w=96, + h=32, +}, +d_ullapool_caber_explosion={ + x=96, + y=96, + w=96, + h=32, +}, +d_ullapool_caber={ + x=96, + y=128, + w=96, + h=32, +}, +d_claidheamohmor={ + x=96, + y=160, + w=96, + h=32, +}, +d_lochnload={ + x=96, + y=192, + w=96, + h=32, +}, +d_steel_fists={ + x=96, + y=224, + w=78, + h=32, +}, +d_bear_claws={ + x=96, + y=256, + w=78, + h=32, +}, +d_candy_cane={ + x=96, + y=288, + w=96, + h=32, +}, +d_gatling={ + x=96, + y=320, + w=96, + h=32, +}, +d_wrench_jag={ + x=96, + y=352, + w=96, + h=32, +}, +d_crusaders_crossbow={ + x=96, + y=384, + w=96, + h=32, +}, +}, -- ["_images_custom"] + +["_images_hl2"]={ +d_hl_crossbow={ + x=0, + y=0, + w=96, + h=32, +}, +d_hl_shotgun={ + x=0, + y=32, + w=96, + h=32, +}, +d_hl_ar2={ + x=0, + y=64, + w=96, + h=32, +}, +d_hl_frag={ + x=0, + y=96, + w=96, + h=32, +}, +d_hl_crowbar={ + x=0, + y=128, + w=96, + h=32, +}, +d_hl_pistol={ + x=0, + y=160, + w=96, + h=32, +}, +d_hl_357={ + x=0, + y=192, + w=96, + h=32, +}, +d_hl_smg={ + x=0, + y=224, + w=96, + h=32, +}, +d_hl_stunstick={ + x=0, + y=256, + w=96, + h=32, +}, +d_hl_physics={ + x=0, + y=288, + w=96, + h=32, +}, +d_hl_combine_ball={ + x=0, + y=320, + w=96, + h=32, +}, +d_hl_rpg={ + x=0, + y=352, + w=96, + h=32, +}, +d_hl_ar2_grenade={ + x=0, + y=384, + w=96, + h=32, +}, +d_deflect_frag={ + x=0, + y=416, + w=64, + h=32, +}, +d_deflect_ar2grenade={ + x=0, + y=448, + w=64, + h=32, +}, +d_deflect_rpg={ + x=0, + y=480, + w=64, + h=32, +}, +d_hl_zombie={ + x=96, + y=0, + w=96, + h=32, +}, +d_hl_antlion={ + x=96, + y=32, + w=96, + h=32, +}, +d_hl_headcrab={ + x=96, + y=64, + w=96, + h=32, +}, +d_hl_hunter_pound={ + x=96, + y=96, + w=96, + h=32, +}, +d_hl_hunter_skewer={ + x=96, + y=128, + w=96, + h=32, +}, +d_hl_antlionguard={ + x=96, + y=160, + w=96, + h=32, +}, +d_hl_hunter_charge={ + x=96, + y=192, + w=96, + h=32, +}, +d_hl_acidball={ + x=96, + y=224, + w=96, + h=32, +}, +d_hl_flechette={ + x=96, + y=256, + w=96, + h=32, +}, +d_hl_antworker_explosion={ + x=96, + y=288, + w=96, + h=32, +}, +d_hl_vortigaunt_beam={ + x=96, + y=320, + w=96, + h=32, +}, +d_hl_vortigaunt={ + x=96, + y=352, + w=96, + h=32, +}, +d_deflect_crossbowbolt={ + x=96, + y=416, + w=64, + h=32, +}, +d_deflect_combineball={ + x=96, + y=448, + w=64, + h=32, +}, +d_deflect_acidball={ + x=96, + y=480, + w=64, + h=32, +}, +d_hl_rollermine={ + x=192, + y=0, + w=96, + h=32, +}, +d_hl_manhack={ + x=192, + y=32, + w=96, + h=32, +}, +d_hl_floorturret={ + x=192, + y=64, + w=96, + h=32, +}, +d_hl_combine_mine={ + x=192, + y=96, + w=96, + h=32, +}, +d_hl_airboat_gun={ + x=192, + y=128, + w=96, + h=32, +}, +d_hl_strider_minigun={ + x=192, + y=160, + w=96, + h=32, +}, +d_hl_strider_beam={ + x=192, + y=192, + w=96, + h=32, +}, +d_hl_strider_skewer={ + x=192, + y=224, + w=96, + h=32, +}, +d_have_an_error={ + x=192, + y=480, + w=96, + h=32, +}, +} -- ["_images_hl2"] +} -- Killicons diff --git a/gamemodes/tf/gamemode/cl_loadout.lua b/gamemodes/tf/gamemode/cl_loadout.lua new file mode 100644 index 000000000..dd73a631c --- /dev/null +++ b/gamemodes/tf/gamemode/cl_loadout.lua @@ -0,0 +1,526 @@ +-- should be made into a tf2 styled panel and a vgui thing later +-- needs a class picker +-- loadout should be done through data rather than convars, some custom classes may not work with convars +-- should probably open a list of weapons like before but only for the selected thing + +CreateConVar("loadout_scout", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_soldier", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_pyro", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_demoman", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_heavy", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_engineer", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_sniper", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_medic", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") +CreateConVar("loadout_spy", "-1,-1,-1,-1,-1,-1", {FCVAR_ARCHIVE,FCVAR_USERINFO}, "") + +local nextLoadoutUpdate = 0 + +local function updateLoadout(type, id, update) + local convar = GetConVar("loadout_" .. LocalPlayer():GetPlayerClass()) + local split = string.Split(convar:GetString(), ",") + + if #split == 6 then + split[type] = id + else + split = {-1, -1, -1, -1, -1, -1} + split[type] = id + end + + convar:SetString(table.concat(split, ",")) + if update then + timer.Simple(0.3, function() + RunConsoleCommand("loadout_update") + end) + end +end + +local function select(self, i, val, update) + local type = self.type + local id = self:GetOptionData(i) + local convar = GetConVar("loadout_" .. LocalPlayer():GetPlayerClass()) + local split = string.Split(convar:GetString(), ",") + + if #split == 6 then + split[type] = id + else + split = {-1, -1, -1, -1, -1, -1} + split[type] = id + end + + convar:SetString(table.concat(split, ",")) + timer.Simple(0.3, function() + RunConsoleCommand("loadout_update") + end) +end + +local itemSelector + +concommand.Add("open_charinfo_direct", function(ply, _, args) + --[[local ply = LocalPlayer() + local oldclass = ply:GetPlayerClass() + local convar = GetConVar("loadout_" .. oldclass) + if !convar then --print("You're a class without a loadout?!") return end + local class = string.upper(string.sub(oldclass, 1, 1)) .. string.sub(oldclass, 2) -- where's the function for class names? + local loadout = string.Split(convar:GetString(), ",") + local loadout_rect = surface.GetTextureID("vgui/loadout_rect") + local loadout_rect_mouseover = surface.GetTextureID("vgui/loadout_rect_mouseover") + + if loadout[1] == "" then + convar:SetString("-1,-1,-1,-1,-1") + loadout = {-1, -1, -1, -1, -1} + end + + nextLoadoutUpdate = 0 + + local frame = vgui.Create("DFrame") + frame:SetSize(450, 300) + frame:Center() + frame:SetTitle("Loadout (" .. class .. ")") + frame:MakePopup() + frame.OnClose = function() + if (!GetConVar("tf_competitive"):GetBool()) then + RunConsoleCommand("loadout_update") + + if (GetConVar("tf_grapplinghook_enable"):GetBool()) then + ply:ConCommand("__svgiveitem Grappling Hook") + end + end + end + + local classmodel = vgui.Create("DAdjustableModelPanel", frame) + classmodel:SetSize(225, 250) + classmodel:Center() + classmodel:SetFOV(120) + classmodel.LayoutEntity = function(self, ent) + self:RunAnimation() + ent:FrameAdvance() + -- --print(classmodel:GetCamPos(), classmodel:GetFOV(), classmodel:GetLookAt(), classmodel:GetLookAng()) + + if !IsValid(ent.Weapon) and IsValid(ply:GetWeapons()[1]) then + local wmodel = ply:GetWeapons()[1]:GetWorldModelEntity():GetModel() + ent.Weapon = ClientsideModel(wmodel) + ent.Weapon:SetParent(ent) + ent.Weapon:AddEffects(EF_BONEMERGE) + ent.Weapon:SetNoDraw(false) + end + end + classmodel:SetCamPos(Vector(105, 0, 45)) + classmodel:SetFOV(50) + classmodel:SetLookAt(Vector(0, 0, 40)) + classmodel:SetLookAng(Angle(0, 180, 0)) + classmodel:SetAnimated(true) + local mdl = LocalPlayer():GetPlayerClassTable().Model or LocalPlayer():GetModel() + classmodel:SetModel(mdl) + classmodel.oldDrawModel = classmodel.DrawModel + classmodel.DrawModel = function(self) + self:oldDrawModel() + local ent = self:GetEntity() + if IsValid(ent.Weapon) then + ent.Weapon:DrawModel() + end + + if IsValid(ent.Hat1) then + ent.Hat1:DrawModel() + end + + if IsValid(ent.Hat2) then + ent.Hat2:DrawModel() + end + end + classmodel.OnClose = function(self) + local ent = self:GetEntity() + if IsValid(ent.Weapon) then + ent.Weapon:Remove() + end + + if IsValid(ent.Hat1) then + ent.Hat1:Remove() + end + + if IsValid(ent.Hat2) then + ent.Hat2:Remove() + end + end + classmodel.OnRemove = classmodel.OnClose + + --[[local weapon1 = vgui.Create("DComboBox", frame) + weapon1.type = 1 + weapon1:SetSize(150, 40) + weapon1:SetValue(loadout[1]) + weapon1:AddChoice("Stock", -1) + weapon1:SetPos(15, 35) + weapon1.OnSelect = select + local weapon2 = vgui.Create("DComboBox", frame) + weapon2.type = 2 + weapon2:SetSize(150, 40) + weapon2:SetValue(loadout[2]) + weapon2:AddChoice("Stock", -1) + weapon2:SetPos(15, 130) + weapon2.OnSelect = select + local weapon3 = vgui.Create("DComboBox", frame) + weapon3.type = 3 + weapon3:SetSize(150, 40) + weapon3:SetValue(loadout[3]) + weapon3:AddChoice("Stock", -1) + weapon3:SetPos(15, 235) + weapon3.OnSelect = select]] +--[[ + + local weapons = {{}, {}, {}} + + for id, item in pairs(tf_items.Items) do + if istable(item) and item.used_by_classes and item.used_by_classes[oldclass] == 1 then + if ply:GetPlayerClass() != "demoman" then + if item.item_slot == "primary" then + weapons[1][id] = item -- table.insert(weapons[1], ) --id) -- weapon1:AddChoice(item.name, item.id) + elseif item.item_slot == "secondary" then + weapons[2][id] = item -- weapon2:AddChoice(item.name, item.id) + elseif item.item_slot == "melee" then + weapons[3][id] = item -- weapon3:AddChoice(item.name, item.id) + end + else + if item.item_slot == "primary" then + weapons[2][id] = item -- table.insert(weapons[1], ) --id) -- weapon1:AddChoice(item.name, item.id) + elseif item.item_slot == "secondary" then + weapons[1][id] = item -- weapon2:AddChoice(item.name, item.id) + elseif item.item_slot == "melee" then + weapons[3][id] = item -- weapon3:AddChoice(item.name, item.id) + end + end + end + end + if (IsValid(ply:GetWeapons()[1])) then + classmodel:GetEntity():SetSequence("stand_"..ply:GetWeapons()[1]:GetHoldType()) + else + classmodel:GetEntity():SetSequence("competitive_loserstate_idle") + end + local weapon1 = vgui.Create("DButton", frame) + weapon1:SetSize(150, 80) + weapon1:SetText("") + weapon1:SetTextColor(Color(255, 255, 0)) + weapon1:SetPos(15, 35) + if ply:GetPlayerClass() != "demoman" then + weapon1.DoClick = function(self) surface.PlaySound("ui/buttonclick.wav") itemSelector(1, weapons[1]) end + else + weapon1.DoClick = function(self) surface.PlaySound("ui/buttonclick.wav") itemSelector(2, weapons[1]) end + end + weapon1.OnCursorEntered = function() + local standAnim + if (IsValid(ply:GetWeapons()[1])) then + standAnim = "stand_"..ply:GetWeapons()[1]:GetHoldType() + else + standAnim = "competitive_loserstate_idle" + end + classmodel:GetEntity():SetSequence(standAnim) + local wmodel = ply:GetWeapons()[1]:GetWorldModelEntity():GetModel() + classmodel:GetEntity().Weapon:SetModel(wmodel) + classmodel:GetEntity().Weapon:SetParent(classmodel:GetEntity()) + classmodel:GetEntity().Weapon:AddEffects(EF_BONEMERGE) + end + + local weapon2 = vgui.Create("DButton", frame) + weapon2:SetSize(150, 80) + weapon2:SetText("") + weapon2:SetTextColor(Color(255, 255, 0)) + weapon2:SetPos(15, 120) + if ply:GetPlayerClass() != "demoman" then + weapon2.DoClick = function(self) surface.PlaySound("ui/buttonclick.wav") itemSelector(2, weapons[2]) end + else + weapon2.DoClick = function(self) surface.PlaySound("ui/buttonclick.wav") itemSelector(1, weapons[2]) end + end + -- Ensure font and text color changes are applied + weapon2.OnCursorEntered = function() + local standAnim + if (IsValid(ply:GetWeapons()[2])) then + standAnim = "stand_"..ply:GetWeapons()[2]:GetHoldType() + else + standAnim = "competitive_loserstate_idle" + end + classmodel:GetEntity():SetSequence(standAnim) + local wmodel = ply:GetWeapons()[2]:GetWorldModelEntity():GetModel() + classmodel:GetEntity().Weapon:SetModel(wmodel) + classmodel:GetEntity().Weapon:SetParent(classmodel:GetEntity()) + classmodel:GetEntity().Weapon:AddEffects(EF_BONEMERGE) + + end + local weapon3 = vgui.Create("DButton", frame) + weapon3:SetSize(150, 80) + weapon3:SetText("") + weapon3:SetTextColor(Color(255, 255, 0)) + weapon3:SetPos(15, 205) + weapon3.DoClick = function(self) surface.PlaySound("ui/buttonclick.wav") itemSelector(3, weapons[3]) end + weapon3.OnCursorEntered = function() + local standAnim + if (IsValid(ply:GetWeapons()[3])) then + standAnim = "stand_"..ply:GetWeapons()[3]:GetHoldType() + else + standAnim = "competitive_loserstate_idle" + end + classmodel:GetEntity():SetSequence(standAnim) + local wmodel = ply:GetWeapons()[3]:GetWorldModelEntity():GetModel() + classmodel:GetEntity().Weapon:SetModel(wmodel) + classmodel:GetEntity().Weapon:SetParent(classmodel:GetEntity()) + classmodel:GetEntity().Weapon:AddEffects(EF_BONEMERGE) + end + local hat1 = vgui.Create("DImageButton", frame) + hat1:SetSize(128, 128) + hat1:SetText("Open Hat Menu") + hat1:SetTextColor(Color(255, 255, 0)) + hat1:SetPos(305, 35) + hat1:SetImage( "backpack/player/items/spy/firesuit" ) + hat1.DoClick = function(self) surface.PlaySound("ui/buttonclick.wav") hatSelector("hat") end + hat1.OnCursorEntered = function() + classmodel:GetEntity():SetSequence("competitive_loserstate_idle") + classmodel:GetEntity().Weapon:SetNoDraw(true) + end + weapon3.PaintOver = function() + if nextLoadoutUpdate < CurTime() then + nextLoadoutUpdate = CurTime() + 5 + loadout = string.Split(convar:GetString(), ",") + -- oh no + --print(":O") + if ply:GetPlayerClass() != "demoman" then + + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if wep.id == tonumber(loadout[1]) then + weapon1.text = name + if wep.image_inventory then + weapon1.icon = surface.GetTextureID(wep.image_inventory) + end + elseif wep.id == tonumber(loadout[2]) then + weapon2.text = name + if wep.image_inventory then + weapon2.icon = surface.GetTextureID(wep.image_inventory) + end + elseif wep.id == tonumber(loadout[3]) then + weapon3.text = name + if wep.image_inventory then + weapon3.icon = surface.GetTextureID(wep.image_inventory) + end + end + end + end + else + + for name, wep in pairs(tf_items.Items) do + if istable(wep) then + if wep.id == tonumber(loadout[2]) then + weapon1.text = name + if wep.image_inventory then + weapon1.icon = surface.GetTextureID(wep.image_inventory) + end + elseif wep.id == tonumber(loadout[1]) then + weapon2.text = name + if wep.image_inventory then + weapon2.icon = surface.GetTextureID(wep.image_inventory) + end + elseif wep.id == tonumber(loadout[3]) then + weapon3.text = name + if wep.image_inventory then + weapon3.icon = surface.GetTextureID(wep.image_inventory) + end + end + end + end + end + end + + local paintf = function(self, w, h) + if self:IsHovered() then + surface.SetTexture(loadout_rect_mouseover) + else + surface.SetTexture(loadout_rect) + end + + surface.SetDrawColor(255, 255, 255) + surface.DrawTexturedRect(0, 0, w, h) + + if self.icon then + surface.SetTexture(self.icon) + surface.SetDrawColor(255, 255, 255) + surface.DrawTexturedRect(25, 0, 95, 80) + end + + if self.text then + --[[surface.SetFont("ItemFontNameSmall") + surface.SetTextP]]--[[ + draw.SimpleTextOutlined(self.text, "TFDefaultSmall", w / 2, h / 2, Colors.White, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 1, Colors.TanDarker) + end + end + + weapon1.Paint = paintf + weapon2.Paint = paintf + weapon3.Paint = paintf + end]] + LocalPlayer():ConCommand("hud_showloadout 1") +end) + +function itemSelector(type, weapons) + local Scale = ScrH() / 480 + local loadout_rect = surface.GetTextureID("vgui/loadout_rect") + local loadout_rect_mouseover = surface.GetTextureID("vgui/loadout_rect_mouseover") + + local frame = vgui.Create("DFrame") + frame:SetTitle("Item Picker") + frame:SetSize(1300, 650) + frame:Center() + frame:SetDraggable(true) + frame:SetMouseInputEnabled(true) + frame:MakePopup() + + local scroll = vgui.Create("DScrollPanel", frame) + scroll:Dock(FILL) + + local itemicons = vgui.Create("DIconLayout", scroll) + itemicons:Dock(FILL) + + local attr = vgui.Create("ItemAttributePanel") + attr:SetSize(168 * Scale, 300 * Scale) + attr:SetPos(0, 0) + attr.text_ypos = 20 + attr:SetMouseInputEnabled(false) + + for k, v in pairs(weapons) do + local model = vgui.Create("ItemModelPanel", frame) + model:SetSize(140 * Scale, 75 * Scale) + model:SetCursor("hand") + model:SetQuality(v.item_quality and string.upper(string.sub(v.item_quality, 1, 1)) .. string.sub(v.item_quality, 2) or 0) + model.activeImage = loadout_rect_mouseover + model.inactiveImage = loadout_rect + model.number = type + model.model_xpos = 0 + model.model_ypos = 5 + model.model_tall = 55 + model.text_xpos = -5 + model.text_wide = 150 + model.text_ypos = 60 + model.itemImage_low = nil + model.text = tf_lang.GetRaw(v.item_name) or v.name + model.centerytext = true + model.disabled = false + if !isstring(v.image_inventory) or Material(v.image_inventory):IsError() then + model.FallbackModel = v.model_player + model.itemImage = surface.GetTextureID("backpack/weapons/c_models/c_bat") + elseif isstring(v.image_inventory) then + model.itemImage = surface.GetTextureID(v.image_inventory) + end + + if v.attributes and v.attributes["material override"] and v.attributes["material override"].value then + model.overridematerial = v.attributes["material override"].value + end + + model.DoClick = function() + nextLoadoutUpdate = 0 + updateLoadout(type, v.id) + surface.PlaySound(v.mouse_pressed_sound or "ui/item_hat_pickup.wav") + frame:Close() + end + + if istable(v.attributes) then + model.attributes = v.attributes + end + + itemicons:Add(model) + end + + attr:MoveToFront() +end +function hatSelector(type) + local Scale = ScrH()/480 + + local loadout_rect = surface.GetTextureID("vgui/loadout_rect") + local loadout_rect_mouseover = surface.GetTextureID("vgui/loadout_rect_mouseover") + local color_panel = surface.GetTextureID("hud/color_panel_browner") + local c_boxing_gloves = surface.GetTextureID("backpack/weapons/c_models/c_boxing_gloves/c_boxing_gloves") + local Frame = vgui.Create("DFrame") + Frame:SetTitle("Item Picker") + Frame:SetSize(1300, 650) + Frame:Center() + Frame:SetDraggable(true) + Frame:SetMouseInputEnabled(true) + Frame:MakePopup() + --gui.EnableScreenClicker(true) + + local scroll = vgui.Create("DScrollPanel", Frame) + scroll:Dock(FILL) + + local itemicons = vgui.Create("DIconLayout", scroll) + itemicons:Dock(FILL) + + local att = vgui.Create("ItemAttributePanel") + att:SetSize(168*Scale,300*Scale) + att:SetPos(0, 0) + att.text_ypos = 20 + att:SetMouseInputEnabled(false) + + local attributes_xoffset1 = 30 + local attributes_xoffset2 = -168 + local attributes_yoffset = 120 + local xoffset, yoffset = attributes_xoffset1 * Scale, attributes_yoffset * Scale + + --Frame.OnClose = function() gui.EnableScreenClicker(false) att:Remove() end + + -- ugly code ahead + for k, v in pairs(tf_items.ReturnItems()) do + if v and istable(v) and v["name"] and GetImprovedItemName(v["name"]) and string.sub(GetImprovedItemName(v["name"]), 1, 3) == type then + local t = vgui.Create("ItemModelPanel", Frame) + t:SetSize(140 * Scale, 75 * Scale) + itemicons:Add(t) + t.activeImage = loadout_rect_mouseover + t.inactiveImage = loadout_rect + + t.RealName = v["name"] + t.centerytext = true + t.disabled = false + if !isstring(v["image_inventory"]) or Material(v["image_inventory"]):IsError() then + t.FallbackModel = v["model_player"] + t.itemImage = surface.GetTextureID("backpack/weapons/c_models/c_bat") + elseif isstring(v["image_inventory"]) then + -- t.FallbackModel = v["model_player"] + t.itemImage = surface.GetTextureID(v["image_inventory"]) + end + + --[[if v["item_class"] ~= "tf_wearable_item" and tonumber(v["id"]) > 6000 then + t.FallbackModel = v["model_player"] + end]] + + if v["attributes"] and v["attributes"]["material override"] and v["attributes"]["material override"]["value"] then + t.overridematerial = v["attributes"]["material override"]["value"] + end + + t.itemImage_low = nil + + t.text = string.sub(GetImprovedItemName(v["name"]), 4) + --t.text = tf_lang.GetRaw(v["item_name"]) or v["name"] + local quality = 0 + if v["item_quality"] then + quality = string.upper(string.sub(v["item_quality"], 1, 1)) .. string.sub(v["item_quality"], 2) + end + t:SetQuality(quality) + + t.model_xpos = 0 + t.model_ypos = 5 + t.model_tall = 55 + t.text_xpos = -5 + t.text_wide = 150 + t.text_ypos = 60 + t.DoClick = function() LocalPlayer():ConCommand("giveitem " .. t.RealName) surface.PlaySound(v["mouse_pressed_sound"] or "ui/item_hat_pickup.wav") Frame:Close() end + t:SetCursor("hand") + + if istable(v["attributes"]) then + t.attributes = v["attributes"] + end + + if v["item_slot"] == "primary" then + t.number = 1 + elseif v["item_slot"] == "secondary" then + t.number = 2 + elseif v["item_slot"] == "melee" then + t.number = 3 + end + end + end + + att:MoveToFront() +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_materialfix.lua b/gamemodes/tf/gamemode/cl_materialfix.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/cl_materialfix.lua rename to gamemodes/tf/gamemode/cl_materialfix.lua diff --git a/addon/gamemodes/teamfortress/gamemode/cl_pac.lua b/gamemodes/tf/gamemode/cl_pac.lua similarity index 92% rename from addon/gamemodes/teamfortress/gamemode/cl_pac.lua rename to gamemodes/tf/gamemode/cl_pac.lua index 79f9e0541..bc6e3ab39 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_pac.lua +++ b/gamemodes/tf/gamemode/cl_pac.lua @@ -2,7 +2,7 @@ if !pac or !isfunction(pac.RegisterEvent) then return end local plyMeta = FindMetaTable('Player') local gamemode = engine.ActiveGamemode -local IsTF = function() return gamemode() == 'teamfortress' end +local IsTF = function() return gamemode() == 'tf' end local function try_viewmodel(ent) return ent == pac.LocalPlayer:GetViewModel() and pac.LocalPlayer or ent end diff --git a/gamemodes/tf/gamemode/cl_pickteam.lua b/gamemodes/tf/gamemode/cl_pickteam.lua new file mode 100644 index 000000000..27f751716 --- /dev/null +++ b/gamemodes/tf/gamemode/cl_pickteam.lua @@ -0,0 +1,98 @@ + +function TeamSelection() + + + local ply = LocalPlayer() + local teamframe = vgui.Create("DFrame") --create a frame + teamframe:SetTitle("Pick Team") --set the title of the menu + local TeamRed = vgui.Create( "DButton", teamframe ) + function TeamRed.DoClick() RunConsoleCommand( "changeteam", 2 ) teamframe:Close() end + TeamRed:SetPos( 10, 65 ) + TeamRed:SetSize( 130, 20 ) + TeamRed:SetText( "RED Team" ) + local TeamBlu = vgui.Create( "DButton", teamframe ) + function TeamBlu.DoClick() RunConsoleCommand( "changeteam", 3 ) teamframe:Close() end + TeamBlu:SetPos( 10, 105 ) + TeamBlu:SetSize( 130, 20 ) + TeamBlu:SetText( "BLU Team" ) + --[[ + local TeamSpectate = vgui.Create( "DButton", teamframe ) + function TeamSpectate.DoClick() RunConsoleCommand( "tf_spectate" ) teamframe:Close() end + TeamSpectate:SetPos( 10, 45 ) + TeamSpectate:SetSize( 130, 20 ) + TeamSpectate:SetText( "Spectate Team" ) + TeamSpectate.OnCursorEntered = function() + + LocalPlayer():StopSound("TV.Tune") + LocalPlayer():EmitSound("TV.Tune") + + end]] + local TeamNeutral = vgui.Create( "DButton", teamframe ) + function TeamNeutral.DoClick() RunConsoleCommand( "changeteam", 6 ) teamframe:Close() end + TeamNeutral:SetPos( 10, 85 ) + TeamNeutral:SetSize( 130, 20 ) + TeamNeutral:SetText( "Neutral Team" ) + local TeamFriendly = vgui.Create( "DButton", teamframe ) + function TeamFriendly.DoClick() RunConsoleCommand( "random_team" ) teamframe:Close() end + TeamFriendly:SetPos( 10, 125 ) + TeamFriendly:SetSize( 130, 20 ) + TeamFriendly:SetText( "Random Team" ) + teamframe:SetSize(150,150) --set its size + teamframe:Center() --position it at the center of the screen CheckUpdateItem + teamframe:SetDraggable(false) --can you move it around + teamframe:SetSizable(false) --can you resize it? + teamframe:ShowCloseButton(false) --can you close it + teamframe:MakePopup() --make it appear + teamframe:SetKeyboardInputEnabled( false ) + --[[ + + local ClassFrame = vgui.Create("DFrame") --create a frame + ClassFrame:SetSize(ScrW() * 1, ScrH() * 1 ) --set its size + ClassFrame:Center() --position it at the center of the screen + ClassFrame:SetTitle("Team Menu") --set the title of the menu + ClassFrame:SetDraggable(true) --can you move it around + ClassFrame:SetSizable(false) --can you resize it? + ClassFrame:ShowCloseButton(true) --can you close it + ClassFrame:MakePopup() + + local iconC = vgui.Create( "DModelPanel", ClassFrame ) + iconC:SetSize( ScrW() * 1, ScrH() * 1 ) + + iconC:SetCamPos( Vector( 90, 0, 40 ) ) + iconC:SetPos( 0, 0) + iconC:SetModel( "models/vgui/ui_team01.mdl" ) -- you can only change colors on playermodels + iconC:SetZPos(-4) + + local spectate = vgui.Create("DModelPanel", ClassFrame) + spectate:SetPos( 0, 0 ) + spectate:SetModel( "models/vgui/ui_team01_spectate.mdl" ) + spectate:SetSize(ScrW(), ScrH()) + spectate:SetCamPos( Vector( 90, 0, 40 ) ) + spectate:SetZPos(0) + + function spectate:LayoutEntity() + self:RunAnimation() + end + + local teambutton3 = vgui.Create("DButton", iconC) + teambutton3:SetPos(0 - 140, 232) + teambutton3:SetZPos(3) + teambutton3:SetSize(82,57) + --teambutton3:SetAlpha(0) + teambutton3.OnCursorEntered = function() + + spectate.Entity:SetBodygroup(1, 1) + LocalPlayer():EmitSound("TV.Tune") + + end + + function teambutton3.DoClick() RunConsoleCommand( "tf_spectate" ) ClassFrame:Close() end + + function iconC:LayoutEntity( ent ) + return + end]] + +end + + +concommand.Add("tf_changeteam", TeamSelection) \ No newline at end of file diff --git a/gamemodes/tf/gamemode/cl_player_other.lua b/gamemodes/tf/gamemode/cl_player_other.lua new file mode 100644 index 000000000..c3028f56b --- /dev/null +++ b/gamemodes/tf/gamemode/cl_player_other.lua @@ -0,0 +1,43 @@ +local neutralinstalled = false +for k, v in pairs(engine.GetAddons()) do + if v.wsid == "501783258" and v.mounted == true then + neutralinstalled = true + end +end + +if not neutralinstalled then return end +CreateClientConVar("tf_neutralmodel", 1, true, true) +CreateClientConVar("tf_neutralmodel_skin", 1, true, true, "The skin for the model, 0 for red 1 for blu") +CreateClientConVar("tf_neutralmodels_all", 1) + +hook.Add("PostPlayerDraw", "NeutralModels", function(ply) -- Experimental and WIP, Sorry for the strange and messy code! + /* + if ((ply:Team() == TEAM_YELLOW or ply:Team() == TEAM_GREEN) and not ply:IsHL2() and !ply:IsL4D() and ply:Alive() and ply:GetInfoNum("tf_robot", 0) == 0 and neutralinstalled and ply:GetInfoNum("tf_neutralmodel", 1) == 1 and LocalPlayer():GetInfoNum("tf_neutralmodels_all", 1) == 1) then + local model = "models/lkskin/hwm/"..(string.sub(string.gsub(ply:GetPlayerClass(), "man", ""), 1) or "scout")..".mdl" + + if ply:GetPlayerClass() == "civilian" then + model = "models/lkskin/hwm/scout.mdl" + end + + if not IsValid(ply.NeutralModel) then + ply.NeutralModel = ClientsideModel(model) + end + + ply.NeutralModel:SetModel(model) + ply.NeutralModel:AddEffects(bit.bor(EF_BONEMERGE, EF_BONEMERGE_FASTCULL)) + ply.NeutralModel:SetParent(ply) + ply.NeutralModel:SetSkin(ply:GetSkin()) + ply:SetMaterial("color") + + for k, v in pairs(ply.NeutralModel:GetBodyGroups()) do + ply.NeutralModel:SetBodygroup(k, ply:GetBodygroup(k)) + end + else + ply:SetMaterial("") + + if IsValid(ply.NeutralModel) then + ply.NeutralModel:Remove() + end + end + */ +end) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/cl_proxies.lua b/gamemodes/tf/gamemode/cl_proxies.lua similarity index 97% rename from addon/gamemodes/teamfortress/gamemode/cl_proxies.lua rename to gamemodes/tf/gamemode/cl_proxies.lua index 18ded9ab1..93a36a255 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_proxies.lua +++ b/gamemodes/tf/gamemode/cl_proxies.lua @@ -14,14 +14,14 @@ function META:SetProxyVar(k, v) end function META:ClearProxyVars() - self.__ProxyVars = {} + self.__ProxyVars = {} end if true then MsgN("Skipping Material Proxies") return end if not matproxy then MsgN("gmcl_matproxy module not found, not installing TF2 proxies") return end - + function GM:LoadTFProxies() local path = string.Replace(self.Folder, "gamemodes/", "").."/gamemode/proxies/" for _,f in pairs(file.Find(path.."*.lua", "LUA")) do diff --git a/addon/gamemodes/teamfortress/gamemode/cl_scheme.lua b/gamemodes/tf/gamemode/cl_scheme.lua similarity index 96% rename from addon/gamemodes/teamfortress/gamemode/cl_scheme.lua rename to gamemodes/tf/gamemode/cl_scheme.lua index 646138d86..5fc3fe469 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_scheme.lua +++ b/gamemodes/tf/gamemode/cl_scheme.lua @@ -29,6 +29,8 @@ surface.CreateFont("ChalkboardTitleBig", {font = "TF2 Professor", size = 40*Scal surface.CreateFont("ChalkboardTitleMedium", {font = "TF2 Professor", size = 24*Scale}) surface.CreateFont("ChalkboardText", {font = "TF2 Professor", size = 14*Scale}) +surface.CreateFont("MenuMainTitle", {font = "TF2", size = 24*Scale}) +surface.CreateFont("MenuClassBuckets", {font = "TF2 Secondary", size = 11*Scale}) surface.CreateFont("ScoreboardSmallest", {font = "Verdana", size = 7*Scale, weight = 400}) surface.CreateFont("ScoreboardVerySmall", {font = "Verdana", size = 8*Scale, weight = 400}) surface.CreateFont("ScoreboardSmall", {font = "TF2 Secondary", size = 10*Scale, weight = 400}) @@ -186,6 +188,10 @@ Colors = { QualityColorDeveloper=Color(165,15,121,255), QualityColorSelfMade=Color(112,176,74,255), QualityColorCustomized=Color(71,98,145,255), + QualityColorStrange=Color(207, 106, 50,255), + QualityColorHaunted=Color(56, 243, 171,255), + QualityColorCollectors=Color(170, 0, 0,255), + QualityColorCompleted=Color(134,80,172,255), QualityColorGey=Color(255,117,207,255), TeamSpec=Color(204,204,204,255), diff --git a/addon/gamemodes/teamfortress/gamemode/cl_scoreboard.lua b/gamemodes/tf/gamemode/cl_scoreboard.lua similarity index 99% rename from addon/gamemodes/teamfortress/gamemode/cl_scoreboard.lua rename to gamemodes/tf/gamemode/cl_scoreboard.lua index 975c128b2..5d9b80818 100644 --- a/addon/gamemodes/teamfortress/gamemode/cl_scoreboard.lua +++ b/gamemodes/tf/gamemode/cl_scoreboard.lua @@ -31,7 +31,7 @@ function GM:ScoreboardHide() if Scoreboard then Scoreboard:SetVisible(false) end -end +end function GM:HUDDrawScoreBoard() end diff --git a/gamemodes/tf/gamemode/contents/game_sounds.lua b/gamemodes/tf/gamemode/contents/game_sounds.lua new file mode 100644 index 000000000..bfe1abb44 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds.lua @@ -0,0 +1,3760 @@ +// Channels +// CHAN_AUTO = 0, +// CHAN_WEAPON = 1, +// CHAN_VOICE = 2, +// CHAN_ITEM = 3, +// CHAN_BODY = 4, +// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area +// CHAN_STATIC = 6, // allocate channel from the static area +// these can be set with "channel" "2" or "channel" "chan_voice" + +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- + +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, // 3.9 +// SNDLVL_55dB = 55, // 3.0 +// SNDLVL_IDLE = 60, // 2.0 +// SNDLVL_TALKING = 60, // 2.0 +// SNDLVL_60dB = 60, // 2.0 +// SNDLVL_65dB = 65, // 1.5 +// SNDLVL_STATIC = 66, // 1.25 +// SNDLVL_70dB = 70, // 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, // 0.8 +// SNDLVL_80dB = 80, // 0.7 +// SNDLVL_85dB = 85, // 0.6 +// SNDLVL_90dB = 90, // 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, // 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, // 0.27 +// SNDLVL_140dB = 140, // 0.2 +// SNDLVL_150dB = 150, // 0.2 + +"vox/null" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "vo/null.mp3" +} + +// ------------------------------------------------------------------------------------ // +// HEALTH KIT +// ------------------------------------------------------------------------------------ // +"HealthKit.Touch" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "items/smallmedkit1.wav" +} + +// ------------------------------------------------------------------------------------ // +// AMMO PACK +// ------------------------------------------------------------------------------------ // +"AmmoPack.Touch" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "items/gunpickup2.wav" +} + +// ------------------------------------------------------------------------------------ // +// GRENADE PACK +// ------------------------------------------------------------------------------------ // +"GrenadePack.Touch" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "items/gunpickup2.wav" +} + +// ------------------------------------------------------------------------------------ // +// REGENERATE +// ------------------------------------------------------------------------------------ // +"Regenerate.Touch" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "items/regenerate.wav" +} + +// ------------------------------------------------------------------------------------ // +// CHANGE CLASS +// ------------------------------------------------------------------------------------ // +"ChangeClass.Touch" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "items/r_item1.wav" +} + +"BaseCombatCharacter.CorpseGib" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "rndwave" + { + "wave" "physics/flesh/flesh_squishy_impact_hard2.wav" + } +} + +"BaseCombatCharacter.StopWeaponSounds" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + + "wave" "common/null.wav" +} + +"BaseCombatCharacter.AmmoPickup" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + + "wave" "items/ammo_pickup.wav" +} + +"General.BurningFlesh" +{ + "channel" "CHAN_WEAPON" + "volume" "0.45" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "npc/headcrab/headcrab_burning_loop2.wav" +} + +"General.BurningObject" +{ + "channel" "CHAN_WEAPON" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "ambient/fire/fire_small_loop2.wav" +} + +"General.StopBurning" +{ + "channel" "CHAN_WEAPON" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "common/null.wav" +} + +"BaseCombatWeapon.WeaponDrop" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_75dB" + "pitch" "95,110" + "rndwave" + { + "wave" "physics/metal/weapon_impact_hard1.wav" + "wave" "physics/metal/weapon_impact_hard2.wav" + "wave" "physics/metal/weapon_impact_hard3.wav" + } +} + +"BaseCombatWeapon.WeaponMaterialize" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_75dB" + "pitch" "150" + + "wave" "items/suitchargeok1.wav" +} + +"HudChat.Message" +{ + "channel" "CHAN_STREAM" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "vo/null.mp3" +} + +"Hud.Hint" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/hint.wav" +} + +"Hud.ItemAcquired" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/item_acquired.wav" +} + +"Hud.ProjectorScreenUp" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/projector_screen_up.wav" +} + +"Hud.ProjectorScreenUpLong" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/projector_screen_up_long.wav" +} + +"Hud.ProjectorScreenDown" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/projector_screen_down.wav" +} + +"Hud.ProjectorMovie" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/projector_movie.wav" +} + +"Hud.EndRoundScored" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/scored.wav" +} + +"Hud.PointCaptured" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/scored.wav" +} + +"Hud.Warning" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "misc/hud_warning.wav" +} + +"Hud.TrainingPointSmall" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/training_point_small.wav" +} + +"Hud.TrainingPointBig" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/training_point_big.wav" +} + +"Hud.TrainingMsgUpdate" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/hint.wav" +} + + +"SprayCan.Paint" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "player/sprayer.wav" +} + + + +"DoorSound.Null" +{ + "channel" "CHAN_BODY" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "common/null.wav" +} + +"DoorSound.DefaultMove" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "doors/door_metal_rusty_move1.wav" +} + +"DoorSound.DefaultArrive" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "doors/metal_stop1.wav" +} + +"DoorSound.DefaultLocked" +{ + "channel" "CHAN_BODY" + "volume" "0.2" + "soundlevel" "SNDLVL_75dB" + "wave" "doors/default_locked.wav" +} + +"RotDoorSound.DefaultMove" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "doors/door_metal_rusty_move1.wav" +} + +"RotDoorSound.DefaultArrive" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "doors/metal_stop1.wav" +} + +"RotDoorSound.DefaultLocked" +{ + "channel" "CHAN_BODY" + "volume" "0.2" + "soundlevel" "SNDLVL_75dB" + "wave" "doors/default_locked.wav" +} + +"Item.Materialize" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_75dB" + "wave" "items/spawn_item.wav" +} + +"PropaneTank.Burst" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "pitch" "95,105" + "soundlevel" "SNDLVL_90db" + "wave" "ambient/fire/gascan_ignite1.wav" +} + +"NPC_CombineS.ElectrocuteScream" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "common/null.wav" +} + + +"npc_citizen.die" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "*vo/npc/$gender01/pain01.wav" + "wave" "*vo/npc/$gender01/pain02.wav" + "wave" "*vo/npc/$gender01/pain03.wav" + "wave" "*vo/npc/$gender01/pain04.wav" + "wave" "*vo/npc/$gender01/pain05.wav" + "wave" "*vo/npc/$gender01/pain06.wav" + "wave" "*vo/npc/$gender01/pain07.wav" + "wave" "*vo/npc/$gender01/pain08.wav" + "wave" "*vo/npc/$gender01/pain09.wav" + } +} + +"Panel.SlideDown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "ui/slide_down.wav" +} + +"Panel.SlideUp" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "ui/slide_up.wav" +} + + +// ------------------------------------------------------------------------------------ // +// AMBIENT +// ------------------------------------------------------------------------------------ // + +"Ambient.Drips1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_74dB" + "wave" ")ambient/drips1.wav" +} + +"Ambient.Drips2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_74dB" + "wave" ")ambient/drips2.wav" +} + +"Ambient.Drips3" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_74dB" + "wave" ")ambient/drips3.wav" +} + +"Sawmill.Waterfall" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + "wave" "ambient/waterfall.wav" +} + +"Ambient.MachineHum" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/machine_hum.wav" +} + +"Ambient.MachineHum2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/machine_hum2.wav" +} + +"Ambient.MachineWorking" +{ + "channel" "CHAN_STATIC" + "volume" ".50" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/train_engine_idle.wav" +} + + + +"Ambient.ComputerWorking" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/computer_working.wav" +} + +"Ambient.ComputerTape" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/computer_tape.wav" +} + +"Ambient.ComputerTape3" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_70dB" + "wave" "ambient/computer_tape3.wav" +} + +"Ambient.ComputerTape4" +{ + "channel" "CHAN_STATIC" + "volume" "0" + "pitch" "100" + "soundlevel" "SNDLVL_70dB" + "wave" "ambient/computer_tape4.wav" +} + +"Ambient.CommandCenter" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/command_center.wav" +} + +"Ambient.CommandCenter2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" ")ambient/command_center2.wav" +} + +"Ambient.Factory" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/factory_outdoor.wav" +} + +"Ambient.Generator" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" ")ambient/generator.wav" +} + +"Ambient.SteamDrum" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_80dB" + "wave" ")ambient/steam_drum.wav" +} + +"Ambient.TrainApproachAndPass" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "wave" ")ambient_mp3/train_approach_and_pass.mp3" +} + + +"Ambient.Train" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "wave" ")ambient/train.wav" +} + +"Ambient.LairTramCap2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "wave" ")ambient/lair/cap_2_tram.wav" +} + +"Ambient.LairTramCap3" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "wave" ")ambient/lair/cap_3_tram.wav" +} + +"Ambient.LairTramDoorOpen" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient/lair/cap_2_tram_door_open.wav" +} + +"Ambient.LairTramDoorClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient/lair/cap_2_tram_door_open.wav" +} + +"Ambient.RailroadBells" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "wave" ")ambient/railroad_bells.wav" +} + +"Ambient.SlowTrain" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")ambient/slow_train.wav" +} + +"Ambient.SlowTrainLeadIn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")ambient_mp3/slow_train_lead_in.mp3" +} + +"Ambient.LightHum" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_75dB" + "wave" "ambient/lighthum.wav" +} + +"Ambient.LightHum" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_65dB" + "wave" "ambient/lighthum.wav" +} + +"Ambient.Siren" +{ + "channel" "CHAN_AUTO" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ambient_mp3/siren.mp3" +} + +"Ambient.Cliff" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_87dB" + "pitch" "PITCH_NORM" + "wave" ")ambient/forest_cliff.wav" +} + +"Ambient.Fireball" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_97dB" + "pitch" "PITCH_NORM" + "wave" ")ambient/fireball.wav" +} + +"Game.SuddenDeath" +{ + "channel" "CHAN_AUTO" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "wave" "#misc/your_team_suddendeath.mp3" [$WIN32] + "wave" "#misc/your_team_suddendeath.wav" [$X360] +} + +"Game.Stalemate" +{ + "channel" "CHAN_AUTO" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "wave" "#misc/your_team_stalemate.mp3" [$WIN32] + "wave" "#misc/your_team_stalemate.wav" [$X360] +} + +"Game.Overtime" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/announcer_overtime.mp3" + "wave" "vo/announcer_overtime2.mp3" + "wave" "vo/announcer_overtime3.mp3" + "wave" "vo/announcer_overtime4.mp3" + } +} + +"Game.YourTeamLost" +{ + "channel" "CHAN_AUTO" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "wave" "#misc/your_team_lost.mp3" [$WIN32] + "wave" "#misc/your_team_lost.wav" [$X360] +} + +"Game.YourTeamWon" +{ + "channel" "CHAN_AUTO" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "wave" "#misc/your_team_won.mp3" [$WIN32] + "wave" "#misc/your_team_won.wav" [$X360] +} + +"Game.Revenge" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "#misc/tf_revenge.wav" +} + +"Game.Domination" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "#misc/tf_domination.wav" +} + +"Game.Nemesis" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "#misc/tf_nemesis.wav" +} +"Game.KillStreak" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "#misc/killstreak.wav" +} + +"Game.PenetrationKill" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "misc\sniper_railgun_double_kill.wav" +} + +"Game.HappyBirthday" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_87dB" + "wave" "misc/happy_birthday.wav" +} + +"Game.HappyBirthdayNoiseMaker" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_87dB" + "rndwave" + { + "wave" ")misc\happy_birthday_tf_01.wav" + "wave" ")misc\happy_birthday_tf_02.wav" + "wave" ")misc\happy_birthday_tf_03.wav" + "wave" ")misc\happy_birthday_tf_04.wav" + "wave" ")misc\happy_birthday_tf_05.wav" + "wave" ")misc\happy_birthday_tf_06.wav" + "wave" ")misc\happy_birthday_tf_07.wav" + "wave" ")misc\happy_birthday_tf_08.wav" + "wave" ")misc\happy_birthday_tf_09.wav" + "wave" ")misc\happy_birthday_tf_10.wav" + "wave" ")misc\happy_birthday_tf_11.wav" + "wave" ")misc\happy_birthday_tf_12.wav" + "wave" ")misc\happy_birthday_tf_13.wav" + "wave" ")misc\happy_birthday_tf_14.wav" + "wave" ")misc\happy_birthday_tf_15.wav" + "wave" ")misc\happy_birthday_tf_16.wav" + "wave" ")misc\happy_birthday_tf_17.wav" + "wave" ")misc\happy_birthday_tf_18.wav" + "wave" ")misc\happy_birthday_tf_19.wav" + "wave" ")misc\happy_birthday_tf_20.wav" + "wave" ")misc\happy_birthday_tf_21.wav" + "wave" ")misc\happy_birthday_tf_22.wav" + "wave" ")misc\happy_birthday_tf_23.wav" + "wave" ")misc\happy_birthday_tf_24.wav" + "wave" ")misc\happy_birthday_tf_25.wav" + "wave" ")misc\happy_birthday_tf_26.wav" + "wave" ")misc\happy_birthday_tf_27.wav" + "wave" ")misc\happy_birthday_tf_28.wav" + "wave" ")misc\happy_birthday_tf_29.wav" + } +} + +"DoSpark" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc/null.wav" +} + + +// ------------------------------------------------------------------------------------ // +// MISC +// ------------------------------------------------------------------------------------ // + +"Door.Open" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" "doors/generic_door_open.wav" +} + +"Door.Close" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" "doors/generic_door_close.wav" +} + +"TV.Static" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" "misc/null.wav" +} + +"TV.Tune" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "rndwave" [$WIN32] + { + "wave" "ui/tv_tune.mp3" + "wave" "ui/tv_tune2.mp3" + "wave" "ui/tv_tune3.mp3" + } + + "rndwave" [$X360] + { + "wave" "ui/tv_tune.wav" + "wave" "ui/tv_tune2.wav" + "wave" "ui/tv_tune3.wav" + } +} + +"Hologram.Start" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_73dB" + "wave" "misc/hologram_start.wav" +} + +"Hologram.Move" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_73dB" + "wave" "misc/hologram_move.wav" +} + +"Hologram.Stop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_73dB" + "wave" "misc/hologram_stop.wav" +} + +"Hologram.Interrupted" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_73dB" + "wave" "misc/hologram_malfunction.wav" +} + + +"Fire.Engulf" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" ")misc/flame_engulf.wav" +} + +"Camera.SnapShot" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "wave" "misc/freeze_cam_snapshot.wav" +} + +"Camera.SnapShotMultiple" +{ + "channel" "CHAN_STATIC" + "volume" ".95, 1.0" + "pitch" "95, 105" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "misc\tf_camera_01.wav" + "wave" "misc\tf_camera_02.wav" + "wave" "misc\tf_camera_03.wav" + "wave" "misc\tf_camera_04.wav" + "wave" "misc\tf_camera_05.wav" + "wave" "misc\tf_camera_06.wav" + "wave" "misc\tf_camera_07.wav" + "wave" "misc\tf_camera_08.wav" + "wave" "misc\tf_camera_09.wav" + "wave" "misc\tf_camera_10.wav" + "wave" "misc\tf_camera_11.wav" + } +} + +"Achievement.Earned" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_94dB" + "wave" ")misc/achievement_earned.wav" +} + + +"Cart.Roll" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + "wave" ")items/cart_rolling.wav" +} + +"Cart.Grind" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + "rndwave" + { + "wave" "items/cart_rolling_back_grind1.wav" + "wave" "items/cart_rolling_back_grind2.wav" + "wave" "items/cart_rolling_back_grind3.wav" + "wave" "items/cart_rolling_back_grind4.wav" + } +} + +"Cart.RollStart" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + "wave" ")items/cart_rolling_start.wav" +} + +"Cart.RollStop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + "wave" ")items/cart_rolling_stop.wav" +} + +"Cart.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" ")items/cart_explode.wav" +} + +"Cart.Trigger" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")items/cart_explode_trigger.wav" +} + +"Cart.Falling" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_110dB" + "wave" "items/cart_explode_falling.wav" +} + +"Cart.Warning" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_104dB" + "wave" ")items/cart_warning.wav" +} + +"Cart.WarningSingle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_104dB" + "wave" ")items/cart_warning_single.wav" +} + +"Hud.AchievementIncremented" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_NONE" + "pitch" "160" + + "wave" "ui/scored.wav" +} + + +"SawMill.BladeImpact" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "95,105" + "rndwave" + { + "wave" ")ambient_mp3/sawblade_impact1.mp3" + "wave" ")ambient_mp3/sawblade_impact2.mp3" + } +} + +"SawMill.Blade" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient/sawblade.wav" +} + +"Ambient.NucleusElectricity" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient/nucleus_electricity.wav" +} + +"Nucleus.WalkWayMove" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient_mp3/walkway_move.mp3" +} + +"Nucleus.ChamberOpen" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient/chamber_open.wav" +} + +"Medieval.DoorOpen" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ambient_mp3/medieval_dooropen.mp3" +} + +"Medieval.DoorClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ambient_mp3/medieval_doorclose.mp3" +} + +"Medieval.DoorOpenRaise" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ambient_mp3/medieval_dooropenraise.mp3" +} + +"Medieval.DoorOpenLower" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ambient_mp3/medieval_dooropenlower.mp3" +} + +"Medieval.Flag" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "ambient/medieval_flag.wav" +} + +"Medieval.Brazier" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" ")ambient/medieval_brazier.wav" +} + +"ArrowLight" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" ")ambient_mp3/arrowlight.mp3" +} + +"Yeti.StatueGrowl" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")ambient/lair/yeti_statue_growl1.wav" + "wave" ")ambient/lair/yeti_statue_growl2.wav" + "wave" ")ambient/lair/yeti_statue_growl3.wav" + "wave" ")ambient/lair/yeti_statue_growl4.wav" + "wave" ")ambient/lair/yeti_statue_growl5.wav" + "wave" ")ambient/lair/yeti_statue_growl6.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// REPLAY +// ------------------------------------------------------------------------------------ // + +"Replay.Saved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" "replay/saved.wav" +} + + +"Halloween.PumpkinExplode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")items/pumpkin_explode1.wav" + "wave" ")items/pumpkin_explode2.wav" + "wave" ")items/pumpkin_explode3.wav" + } +} + +"Halloween.PumpkinDrop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "wave" "items/pumpkin_drop.wav" +} + +"Halloween.PumpkinPickup" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "PITCH_NORM" + + + "wave" "items/pumpkin_pickup.wav" +} + +"Halloween.LightsOn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient_mp3/lightson.mp3" +} + +"Halloween.LightsOff" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")ambient_mp3/lightsoff.mp3" +} + +"Halloween.MerasmusLoop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "ambient/hallowloop.wav" +} + +"Vote.Created" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/vote_started.wav" +} + +"Vote.Passed" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/vote_success.wav" +} + +"Vote.Failed" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/vote_failure.wav" +} + +"Vote.Cast.Yes" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/vote_yes.wav" +} + +"Vote.Cast.No" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/vote_no.wav" +} + + +// +// Eyeball boss vortex +// +"Halloween.TeleportVortex.EyeballMovedVortex" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "misc/halloween_eyeball/vortex_eyeball_moved.wav" +} + +"Halloween.TeleportVortex.EyeballDiedVortex" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "misc/halloween_eyeball/vortex_eyeball_died.wav" +} + +"Halloween.TeleportVortex.BookSpawn" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "misc/halloween_eyeball/book_spawn.wav" +} + +"Halloween.TeleportVortex.BookExit" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "misc/halloween_eyeball/book_exit.wav" +} + +"Christmas.GiftDrop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "wave" "items/gift_drop.wav" +} + +"Christmas.GiftPickup" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "PITCH_NORM" + + "wave" "items/gift_pickup.wav" +} + +"harbor_furnace_1shots" +{ + "channel" "CHAN_STATIC" + "volume" ".6" + "pitch" "100" + "soundlevel" "SNDLVL_80dB" + "rndwave" + { + "wave" "ambient_mp3\cp_harbor\furnace_1_shot_01.mp3" + "wave" "ambient_mp3\cp_harbor\furnace_1_shot_02.mp3" + "wave" "ambient_mp3\cp_harbor\furnace_1_shot_03.mp3" + "wave" "ambient_mp3\cp_harbor\furnace_1_shot_04.mp3" + "wave" "ambient_mp3\cp_harbor\furnace_1_shot_05.mp3" + } +} + +"harbor_furnace_lp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_80dB" + "wave" "ambient\cp_harbor\cauldron_lp_main.wav" +} + +"harbor.blue_whistle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\cp_harbor_blue_whistle.wav" +} + +"harbor.red_whistle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\cp_harbor_red_whistle.wav" +} + +"Tournament.PlayerReady" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/vote_started.wav" +} + +// ------------------------------------------------------------------------------------ // +// DOOMSDAY +// ------------------------------------------------------------------------------------ // + +"doomsday.alarm" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ambient_mp3\alarms\doomsday_lift_alarm.mp3" +} + +"doomsday.lift_start" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" "misc\doomsday_lift_start.wav" +} + +"doomsday.lift_loop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" "misc\doomsday_lift_loop.wav" +} + +"doomsday.lift_stop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" "misc\doomsday_lift_stop.wav" +} + + +"doomsday.cap_spinstart" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_spin_start.wav" +} + +"doomsday.cap_spinloop" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_spin_loop.wav" +} + +"doomsday.cap_spin_end" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_spin_end.wav" +} + +"doomsday.cap_open_start" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_open_start.wav" +} + +"doomsday.cap_open_end" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_open_end.wav" +} + +"doomsday.cap_close_start" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_close_start.wav" +} + +"doomsday.cap_close_end" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_cap_close_end.wav" +} + +"doomsday.cap_close_quick" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" "misc\doomsday_cap_close_quick.wav" +} + +"doomsday.warhead" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" "misc\doomsday_warhead.wav" +} + +"doomsday.pickupwarhead" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_30dB" + "pitch" "PITCH_NORM" + + "wave" "misc\doomsday_pickup.wav" +} + +"doomsday.radiation" +{ + "channel" "CHAN_STATIC" + "volume" "0.3" + "soundlevel" "SNDLVL_50dB" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_radiation.wav" +} + +"doomsday.blank" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "wave" "misc\blank.wav" +} + +"doomsday.launch" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_missile_launch.wav" +} + +"doomsday.launch_exp" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")misc\doomsday_missile_explosion.wav" +} + +// ------------------------------------------------------------------------------------ // +// Halloween 2012 +// ------------------------------------------------------------------------------------ // + +"Halloween.WheelofFate" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_wheel_of_fate.wav" +} +"Halloween.WheelofFateQuiet" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_40dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_wheel_of_fate.wav" +} + +"Halloween.Merasmus_Spell" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/merasmus_spell.wav" +} +"Halloween.Merasmus_TP_In" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/merasmus_appear.wav" +} + +"Halloween.Merasmus_TP_Out" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/merasmus_disappear.wav" +} + +"Halloween.Merasmus_Float" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/merasmus_float.wav" +} + +"Halloween.Merasmus_Hiding_Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_110dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/merasmus_hiding_explode.wav" +} + +"Halloween.Merasmus_Stun" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/merasmus_stun.wav" +} + + +"Halloween.Merasmus_Death" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/merasmus_death.wav" +} + +"Halloween.dance_loop" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_dance_loop.wav" +} + +"Halloween.dance_howl" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_dance_howl.wav" +} + +"Halloween.plumes_long" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_plumes_capture.wav" +} + +"Halloween.plumes_short" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_plumes_short.wav" +} + +// ------------------------------------------------------------------------------------ // +// Halloween 2013 +// ------------------------------------------------------------------------------------ // + + +"Halloween.ClockTick" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" ")misc/halloween/clock_tick.wav" +} + +"Halloween.hellride" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/gotohell.wav" +} + +"Halloween.spell_pickup" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_pickup.wav" +} + +"Halloween.spell_pickup_rare" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_pickup_rare.wav" +} + +"Halloween.spelltick_a" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/spelltick_01.wav" +} + +"Halloween.spelltick_b" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/spelltick_02.wav" +} + +"Halloween.spelltick_set" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/spelltick_set.wav" +} + +"Halloween.skeleton_break" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/skeleton_break.wav" +} + +"Halloween.skeleton_laugh_small" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "misc\halloween\skeletons\skelly_small_01.wav" + "wave" "misc\halloween\skeletons\skelly_small_02.wav" + "wave" "misc\halloween\skeletons\skelly_small_03.wav" + "wave" "misc\halloween\skeletons\skelly_small_04.wav" + "wave" "misc\halloween\skeletons\skelly_small_05.wav" + "wave" "misc\halloween\skeletons\skelly_small_06.wav" + "wave" "misc\halloween\skeletons\skelly_small_07.wav" + "wave" "misc\halloween\skeletons\skelly_small_08.wav" + "wave" "misc\halloween\skeletons\skelly_small_09.wav" + "wave" "misc\halloween\skeletons\skelly_small_10.wav" + "wave" "misc\halloween\skeletons\skelly_small_11.wav" + "wave" "misc\halloween\skeletons\skelly_small_12.wav" + "wave" "misc\halloween\skeletons\skelly_small_13.wav" + "wave" "misc\halloween\skeletons\skelly_small_14.wav" + "wave" "misc\halloween\skeletons\skelly_small_15.wav" + "wave" "misc\halloween\skeletons\skelly_small_16.wav" + "wave" "misc\halloween\skeletons\skelly_small_17.wav" + "wave" "misc\halloween\skeletons\skelly_small_18.wav" + "wave" "misc\halloween\skeletons\skelly_small_19.wav" + "wave" "misc\halloween\skeletons\skelly_small_20.wav" + "wave" "misc\halloween\skeletons\skelly_small_21.wav" + "wave" "misc\halloween\skeletons\skelly_small_22.wav" + } +} + +"Halloween.skeleton_laugh_medium" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_110dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "misc\halloween\skeletons\skelly_medium_01.wav" + "wave" "misc\halloween\skeletons\skelly_medium_02.wav" + "wave" "misc\halloween\skeletons\skelly_medium_03.wav" + "wave" "misc\halloween\skeletons\skelly_medium_04.wav" + } +} + +"Halloween.skeleton_laugh_giant" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "misc\halloween\skeletons\skelly_giant_01.wav" + "wave" "misc\halloween\skeletons\skelly_giant_02.wav" + "wave" "misc\halloween\skeletons\skelly_giant_03.wav" + } + +} + + +"Halloween.spell_athletic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_athletic.wav" +} + +"Halloween.spell_bat_cast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_bat_cast.wav" +} + +"Halloween.spell_bat_impact" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_bat_impact.wav" +} + +"Halloween.spell_blastjump" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_blast_jump.wav" +} + +"Halloween.spell_fireball_cast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_fireball_cast.wav" +} + +"Halloween.spell_fireball_impact" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_fireball_impact.wav" +} + +"Halloween.spell_lightning_cast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_lightning_ball_cast.wav" +} + +"Halloween.spell_lightning_impact" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_lightning_ball_impact.wav" +} + +"Halloween.spell_meteor_cast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_meteor_cast.wav" +} + +"Halloween.spell_meteor_impact" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_meteor_impact.wav" +} + +"Halloween.spell_mirv_cast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_mirv_cast.wav" +} + +"Halloween.spell_mirv_explode_primary" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_mirv_explode_primary.wav" +} + +"Halloween.spell_mirv_explode_secondary" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_mirv_explode_secondary.wav" +} + +"Halloween.spell_overheal" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_overheal.wav" +} + +"Halloween.spell_skeleton_horde_cast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_skeleton_horde_cast.wav" +} + +"Halloween.spell_skeleton_horde_rise" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_skeleton_horde_rise.wav" +} + +"Halloween.spell_spawn_boss" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_spawn_boss.wav" +} + +"Halloween.spell_spawn_boss_disappear" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_spawn_boss_disappear.wav" +} + +"Halloween.spell_stealth" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_stealth.wav" +} + +"Halloween.spell_teleport" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" ")misc/halloween/spell_teleport.wav" +} + + +// Misc + +"Ambient.metrotrain_passby" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "ambient_mp3/metrotrain_passby_01.mp3" + "wave" "ambient_mp3/metrotrain_passby_02.mp3" + } +} + +"General.banana_slip" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" ")misc/banana_slip.wav" + +} + + +// Rottenburg map - Large metal door sounds + +"Hugedoor.openstart" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_140dB" + "wave" ")ambient_mp3/rottenburg/tunneldoor_open.mp3" +} + +"Hugedoor.opencomplete" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_100dB" + "wave" ")ambient_mp3/rottenburg/tunneldoor_open_complete.mp3" +} + +"Hugedoor.closedloud" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_140dB" + "wave" ")ambient_mp3/rottenburg/tunneldoor_closed_loud.mp3" +} + +"Hugedoor.closedsoft" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_100dB" + "wave" ")ambient_mp3/rottenburg/tunneldoor_closed_quiet.mp3" +} + +// Rottenburg map - Portcullis over upgrades shop + +"Portcullis.down_start" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" ")ambient_mp3/rottenburg/portcullis_down.mp3" +} + +"Portcullis.down_slam" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" ")ambient_mp3/rottenburg/portcullis_slam.mp3" +} + +"Portcullis.up_start" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" ")ambient_mp3/rottenburg/portcullis_up.mp3" +} + +// Rottenburg map - Bomb carrier pushed into pit under bell tower + +"Belltower.Ring" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" ")ambient_mp3/rottenburg/rottenburg_belltower.mp3" +} + +// Rottenburg map - Palisade barrier smash + +"MVM.BarrierSmash" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" ")ambient_mp3/rottenburg/barrier_smash.mp3" +} + +// New item drop crates + +"ui.crate_open_short" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/item_open_crate_short.wav" +} + + +"ui.cratesmash_common" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/itemcrate_smash_common.wav" +} + +"ui.cratesmash_rare_long" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/itemcrate_smash_mid.wav" +} + +"ui.cratesmash_ultrarare_short" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/itemcrate_smash_ultrarare_short.wav" +} + +"ui.cratesmash_ultrarare_long" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/itemcrate_smash_ultrarare.wav" +} + +"ui.cratesmash_ultrarare_long_fireworks" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/itemcrate_smash_ultrarare_fireworks.wav" +} + +"Equipment.RocketPack_Activate" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_ll_shoot.wav" +} +"Parachute_open" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "wave" ")items/para_open.wav" +} +"Parachute_close" +{ + "channel" "CHAN_WEAPON" + "volume" "0.3" + "soundlevel" "SNDLVL_75dB" + "wave" ")items/para_close.wav" +} + +// ------------------------------------------------------------------------------------ // +// Halloween 2014 +// ------------------------------------------------------------------------------------ // + +"Halloween.CarCheer" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" ")ambient_mp3/bumper_car_cheer1.mp3" + "wave" ")ambient_mp3/bumper_car_cheer2.mp3" + "wave" ")ambient_mp3/bumper_car_cheer3.mp3" + } +} + +"Halloween.CarBoo" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" ")ambient_mp3/bumper_car_boo1.mp3" + "wave" ")ambient_mp3/bumper_car_boo2.mp3" + "wave" ")ambient_mp3/bumper_car_boo3.mp3" + } +} + +"Halloween.Quack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "pitch" "90, 110" + "rndwave" + { + "wave" ")ambient_mp3/bumper_car_quack1.mp3" + "wave" ")ambient_mp3/bumper_car_quack2.mp3" + "wave" ")ambient_mp3/bumper_car_quack3.mp3" + "wave" ")ambient_mp3/bumper_car_quack4.mp3" + "wave" ")ambient_mp3/bumper_car_quack5.mp3" + "wave" ")ambient_mp3/bumper_car_quack9.mp3" + "wave" ")ambient_mp3/bumper_car_quack11.mp3" + } +} + +"Halloween.FloorBreak" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_110dB" + "volume" "1" + "wave" ")ambient_mp3/bumper_car_floor_break.mp3" +} +"Halloween.FloorBreakReverse" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_110dB" + "volume" "1" + "wave" ")ambient_mp3/bumper_car_floor_break_reverse.mp3" +} + +"Halloween.HammerGearCrankSlow" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient_mp3/puthammerhere.mp3" +} + +"Halloween.HammerGearCrankFast" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient_mp3/puthammerhere.mp3" +} + +"Halloween.HammerImpactLarge" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient_mp3/puthammerhere.mp3" +} + +"Halloween.HammerImpactSmall" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient_mp3/puthammerhere.mp3" +} + +"Halloween.HammerImpactSmall2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient_mp3/puthammerhere.mp3" +} + +"Halloween.HammerImpactBloodyBoneCrunch" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient_mp3/puthammerhere.mp3" +} + +"Halloween.PlatformAlarm" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "ambient/alarms/klaxon1.wav" +} + +"Halloween.BellRing.Scout" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" +} + +"Halloween.BellRing.Heman" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" +} + +"Halloween.BellRing.PushOver" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" +} + +"Halloween.BellRing.Wizard" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" +} + +"Halloween.BellRing.WoodImpact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" +} + +"Halloween.DuckPickup.Pos" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "misc/halloween/duck_pickup_pos_01.wav" +} + +"Halloween.DuckPickup.Neg" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_148dB" + "volume" "1" + "wave" "misc/halloween/duck_pickup_neg_01.wav" +} +"Halloween.HammerImpact" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_150dB" + "volume" "1" + "wave" "misc/halloween/strongman_fast_impact_01.wav" +} + +"Duck.Quack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "0.75" + "pitch" "85, 105" + "rndwave" + { + "wave" ")ambient_mp3/bumper_car_quack1.mp3" + "wave" ")ambient_mp3/bumper_car_quack2.mp3" + "wave" ")ambient_mp3/bumper_car_quack3.mp3" + "wave" ")ambient_mp3/bumper_car_quack4.mp3" + "wave" ")ambient_mp3/bumper_car_quack5.mp3" + "wave" ")ambient_mp3/bumper_car_quack9.mp3" + "wave" ")ambient_mp3/bumper_car_quack11.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// Powerups +// ------------------------------------------------------------------------------------ // + +"Mannpower.InvulnerableOn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/mannpower_invulnerable.wav" +} + +"Powerup.PickUpTemp.Crit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_crits.wav" +} + +"Powerup.PickUpTemp.Uber" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_uber.wav" +} + +"Powerup.PickUpKnockout" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_knockout.wav" +} + +"Powerup.Knockout_Melee_Hit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + "wave" ")items/powerup_pickup_knockout_melee_hit.wav" +} + +"Powerup.Volume.Use" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_team_revenge.wav" +} + +"Powerup.PickUpBase" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_base.wav" +} + +"Powerup.PickUpAgility" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_agility.wav" +} + +"Powerup.PickUpHaste" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_haste.wav" +} + +"Powerup.PickUpPrecision" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_precision.wav" +} + +"Powerup.PickUpRegeneration" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_regeneration.wav" +} + +"Powerup.PickUpResistance" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_resistance.wav" +} + +"Powerup.PickUpStrength" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_strength.wav" +} + +"Powerup.PickUpVampire" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_vampire.wav" +} + +"Powerup.PickUpSupernova" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_supernova.wav" +} + +"Powerup.PickUpSupernovaActivate" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_supernova_activate.wav" +} + +"Powerup.PickUpPlague" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_plague.wav" +} + +"Powerup.PickUpPlagueInfected" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_plague_infected.wav" +} + +"Powerup.PickUpPlagueInfectedLoop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_105dB" + + "wave" ")items/powerup_pickup_plague_infected_loop.wav" +} + +"Powerup.PickUpThorns" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "wave" ")items/powerup_pickup_warlock.wav" +} + +"Powerup.PickUpReflect" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" ")items/powerup_pickup_reflect.wav" +} + +"Powerup.Reflect.Reflect" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "wave" ")items/powerup_pickup_reflect_reflect_damage.wav" +} + +"Powerup.PickUpKing" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_120dB" + "pitch" "PITCH_NORM" + "wave" ")items/powerup_pickup_king.wav" +} + +"Powerup.ReducedDamage" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "95,100" + "wave" ")items/powerup_pickup_reduced_damage.wav" +} + +"Mannpower.PlayerIsDominant" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "wave" ")misc/killstreak.wav" +} + +"Mannpower.DominantPlayerOtherTeam" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "wave" ")misc/tf_revenge.wav" +} + +"Mannpower.PlayerIsNoLongerDominant" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "wave" ")misc/hologram_stop.wav" +} + +// ------------------------------------------------------------------------------------ // +// Quests +// ------------------------------------------------------------------------------------ // + +"Quest.Alert" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_alert.wav" +} + +"Quest.StatusTickNovice" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_novice.wav" +} + +"Quest.StatusTickNoviceFriend" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_novice_friend.wav" +} + +"Quest.StatusTickNovicePDA" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_novice_PDA.wav" +} + +"Quest.StatusTickAdvanced" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_advanced.wav" +} + +"Quest.StatusTickAdvancedFriend" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_advanced_friend.wav" +} + +"Quest.StatusTickAdvancedPDA" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_advanced_PDA.wav" +} + +"Quest.StatusTickExpert" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_expert.wav" +} + +"Quest.StatusTickExpertFriend" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_expert_friend.wav" +} + +"Quest.StatusTickExpertPDA" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_expert_PDA.wav" +} + +"Quest.StatusTickNoviceComplete" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_novice_complete.wav" +} + +"Quest.StatusTickAdvancedComplete" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_advanced_complete.wav" +} + +"Quest.StatusTickExpertComplete" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_expert_complete.wav" +} + +"Quest.StatusTickNoviceCompletePDA" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" ")ui/quest_status_tick_novice_complete_pda.wav" +} + +"Quest.StatusTickAdvancedCompletePDA" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" ")ui/quest_status_tick_advanced_complete_pda.wav" +} + +"Quest.StatusTickExpertCompletePDA" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" ")ui/quest_status_tick_expert_complete_pda.wav" +} + +"Quest.StatusComplete" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_complete.wav" +} + +"Quest.Decode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_decode.wav" +} + +"Quest.FolderOpen" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_folder_open.wav" +} + +"Quest.FolderClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_folder_close.wav" +} + +"Quest.TurnInDecode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_turn_in_decode.wav" +} + +"Quest.TurnInAccepted" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_turn_in_accepted.wav" +} + +"Quest.TurnInAcceptedLight" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_turn_in_accepted_light.wav" +} + +"Quest.OperationPassUse" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_operation_pass_use.wav" +} + +"Quest.OperationPassBuy" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_operation_pass_buy.wav" +} + +// ------------------------------------------------------------------------------------ // +// Halloween 2015 +// ------------------------------------------------------------------------------------ // + +"Quest.StatusTickCompleteHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_complete_halloween.wav" +} + +"Quest.StatusTickBonusCompleteHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_status_tick_bonus_complete_halloween.wav" +} + +"Quest.DecodeHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_decode_halloween.wav" +} + +"Quest.FolderOpenHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_folder_open_halloween.wav" +} + +"Quest.FolderCloseHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_folder_close_halloween.wav" +} + +"Quest.TurnInDecodeHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_turn_in_decode_halloween.wav" +} + + +"Quest.TurnInAcceptedHalloween" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "ui/quest_turn_in_accepted_halloween.wav" +} + +// ------------------------------------------------------------------------------------ // +// MATCHMAKING +// ------------------------------------------------------------------------------------ // + +"MatchMaking.RoundStart" +{ + "channel" "CHAN_STATIC" + "volume" ".4" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_round_start.wav" +} + +"MatchMaking.RoundStartCasual" +{ + "channel" "CHAN_STATIC" + "volume" ".4" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_round_start_casual.wav" +} + +"MatchMaking.MatchEndBlueWinMusic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_match_end_blue_win_music.wav" +} + +"MatchMaking.MatchEndRedWinMusic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_match_end_red_win_music.wav" +} + +"MatchMaking.MatchEndWinMusicCasual" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_match_end_win_music_casual.wav" +} + +"MatchMaking.MatchEndLoseMusicCasual" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_match_end_lose_music_casual.wav" +} + +"MatchMaking.RoundEndBlueWinMusic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_round_end_blue_win_music.wav" +} + +"MatchMaking.RoundEndRedWinMusic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_round_end_red_win_music.wav" +} + +"MatchMaking.RoundEndStalemateMusic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_round_end_stalemate_music.wav" +} + +"MatchMaking.DoorOpen" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_door_open.wav" +} + +"MatchMaking.DoorOpenUnlock" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_door_open_unlock.wav" +} + +"MatchMaking.DoorClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_door_close.wav" +} + +"MatchMaking.DoorCloseLock" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_door_close_lock.wav" +} + +"MatchMaking.ScoreboardPanelSlide" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_scoreboardpanel_slide.wav" +} + +"MatchMaking.None" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_none.wav" +} + +"MatchMaking.Bronze" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_bronze.wav" +} + +"MatchMaking.Silver" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_silver.wav" +} + +"MatchMaking.Gold" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_gold.wav" +} + +"MatchMaking.XPChime" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_xp_chime.wav" +} + +"MatchMaking.RankUp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_up.wav" +} + +"MatchMaking.RankDownMedalShoot" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "wave" ")ui/mm_rank_down_medal_shoot.wav" +} + +"MatchMaking.RankDownMedalShootImpact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "pitch" "PITCH_NORM" + "volume" "1" + "wave" ")ui/mm_rank_down_medal_shoot_impact.wav" +} + +"MatchMaking.MedalSpinHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "pitch" "PITCH_NORM" + "volume" "1" + "wave" ")ui/mm_medal_spin_hit.wav" +} + +"MatchMaking.RankOneAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_one_achieved.wav" +} + +"MatchMaking.RankTwoAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_two_achieved.wav" +} + +"MatchMaking.RankThreeAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_three_achieved.wav" +} + +"MatchMaking.RankFourAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_four_achieved.wav" +} + +"MatchMaking.RankFiveAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_five_achieved.wav" +} + + +"MatchMaking.LevelOneAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_level_one_achieved.wav" +} + +"MatchMaking.LevelTwoAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_level_two_achieved.wav" +} + +"MatchMaking.LevelThreeAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_level_three_achieved.wav" +} + +"MatchMaking.LevelFourAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_level_four_achieved.wav" +} + +"MatchMaking.LevelFiveAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_level_five_achieved.wav" +} + +"MatchMaking.LevelSixAchieved" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_level_six_achieved.wav" +} + +"MatchMaking.RankProgressTickUp" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_progress_tick_up.wav" +} + +"MatchMaking.RankProgressTickDown" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_rank_progress_tick_down.wav" +} + +"MatchMaking.MedalClick" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_click.wav" +} + +"MatchMaking.MedalClickRare" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_click_rare.wav" +} + +"MatchMaking.MedalClickRareYeti" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "ui/mm_medal_click_rare_yeti.wav" + "wave" "ui/mm_medal_click_rare_yeti1.wav" + "wave" "ui/mm_medal_click_rare_yeti2.wav" + "wave" "ui/mm_medal_click_rare_yeti3.wav" + "wave" "ui/mm_medal_click_rare_yeti4.wav" + } +} + +"MatchMaking.MedalClickRankUnknown" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_click_rank_unknown.wav" +} + +"MatchMaking.MedalClickRankUnknownRare" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_medal_click_rank_unknown_rare.wav" +} + + +"MatchMaking.CompBanner" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_comp_banner.wav" +} + +"MatchMaking.CompBannerUp" +{ + "channel" "CHAN_STATIC" + "volume" ".55" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_comp_banner_up.wav" +} + +"MatchMaking.CompBannerDown" +{ + "channel" "CHAN_STATIC" + "volume" ".7" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/mm_comp_banner_down.wav" +} + +"MatchMaking.Queue" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + + "wave" "ui/mm_queue.wav" +} + +"MatchMaking.Join" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + + "wave" "ui/mm_join.wav" +} + +"DemoSupport.StartRecording" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/demosupport_start.wav" +} + +"DemoSupport.EndRecording" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/demosupport_stop.wav" +} + +"CYOA.MenuMusic" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + "rndwave" + { + "wave" "ui/cyoa_musicdrunkenpipebomb_tv.mp3" + "wave" "ui/cyoa_musicfasterthanaspeedingbullet_tv.mp3" + "wave" "ui/cyoa_musicintruderalert_tv.mp3" + "wave" "ui/cyoa_musicmedic_tv.mp3" + "wave" "ui/cyoa_musicmoregun_tv.mp3" + "wave" "ui/cyoa_musicmoregun2_tv.mp3" + "wave" "ui/cyoa_musicplayingwithdanger_tv.mp3" + "wave" "ui/cyoa_musicrightbehindyou_tv.mp3" + "wave" "ui/cyoa_musictf2_tv.mp3" + } +} + +"CYOA.PingInProgress" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_ping_in_progress.wav" +} + +"CYOA.PingAvailable" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_ping_available.wav" +} + +"CYOA.StaticFade" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_map_open.wav" +} + +"CYOA.MapOpen" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_map_open.wav" +} + +"CYOA.MapClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_map_close.wav" +} + +"CYOA.OrangePanelCollapse" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_orange_panel_collapse.wav" +} + +"CYOA.ObjectivePanelExpand" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_objective_panel_expand.wav" +} + +"CYOA.ObjectivePanelCollapse" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_objective_panel_collapse.wav" +} + +"CYOA.NodeLocked" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_node_locked.wav" +} + +"CYOA.NodeAbsent" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_node_absent.wav" +} + +"CYOA.NodeActivate" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_node_activate.wav" +} + +"CYOA.NodeDeactivate" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_node_deactivate.wav" +} + +"CYOA.KeyGiven" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_key_given.wav" +} + +"CYOA.KeyMinimize" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_key_minimize.wav" +} + +"CYOA.Switch" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_84dB" + + "wave" "ui/cyoa_switch.wav" +} + +"Chat.DisplayText" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + + "wave" "ui/chat_display_text.wav" +} + +"UI.WarPaintApplyStart" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/item_warpaint_apply_start.wav" +} + + +"UI.WarPaintApplyStop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/item_warpaint_apply_stop.wav" +} diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_manifest.txt b/gamemodes/tf/gamemode/contents/game_sounds_manifest.lua similarity index 100% rename from addon/gamemodes/teamfortress/content/scripts/game_sounds_manifest.txt rename to gamemodes/tf/gamemode/contents/game_sounds_manifest.lua diff --git a/gamemodes/tf/gamemode/contents/game_sounds_music.lua b/gamemodes/tf/gamemode/contents/game_sounds_music.lua new file mode 100644 index 000000000..a05228265 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_music.lua @@ -0,0 +1,334 @@ +"music.class_menu" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_bg.wav" +} + +"music.class_menu_01" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_01.wav" +} + +"music.class_menu_02" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_08.wav" +} + +"music.class_menu_03" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_02.wav" +} + +"music.class_menu_04" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_04.wav" +} + +"music.class_menu_05" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_07.wav" +} + +"music.class_menu_06" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_05.wav" +} + +"music.class_menu_07" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_03.wav" +} + +"music.class_menu_08" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_09.wav" +} + +"music.class_menu_09" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/class_menu_06.wav" +} + +"music.mvm_class_menu" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.45" + "wave" "#*music/mvm_class_menu_bg.wav" +} + +"music.mvm_class_menu_01" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_01.wav" +} + +"music.mvm_class_menu_02" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_08.wav" +} + +"music.mvm_class_menu_03" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_02.wav" +} + +"music.mvm_class_menu_04" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_04.wav" +} + +"music.mvm_class_menu_05" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_07.wav" +} + +"music.mvm_class_menu_06" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_05.wav" +} + +"music.mvm_class_menu_07" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_03.wav" +} + +"music.mvm_class_menu_08" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_09.wav" +} + +"music.mvm_class_menu_09" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.28" + "wave" "#*music/mvm_class_menu_06.wav" +} + +"music.mvm_upgrade_machine" +{ + "channel" "CHAN_STATIC" + "soundlevel" "77" + "volume" "1.00" + "wave" ")items\tf_music_upgrade_machine.wav" +} + +"music.mvm_class_select" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.25" + "wave" "#*music/mvm_class_select.wav" +} + +"music.mvm_start_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.48" + "wave" "#*music/mvm_start_wave.wav" +} + +"music.mvm_start_mid_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.58" + "wave" "#*music/mvm_start_mid_wave.wav" +} +"music.mvm_start_tank_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.39" + "wave" "#*music/mvm_start_tank_wave.wav" +} + +"music.mvm_start_last_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.58" + "wave" "#*music/mvm_start_last_wave.wav" +} + +"music.mvm_end_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.55" + "wave" "#*music/mvm_end_wave.wav" +} + +"music.mvm_end_tank_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.36" + "wave" "#*music/mvm_end_tank_wave.wav" +} + +"music.mvm_end_mid_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.58" + "wave" "#*music/mvm_end_mid_wave.wav" +} + +"music.mvm_end_last_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.6" + "wave" "#*music/mvm_end_last_wave.wav" +} + +"music.mvm_lost_wave" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "0.35" + "wave" "#*music/mvm_lost_wave.wav" +} + +"music.fortress_reel" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_110dB" + "volume" "1.0" + "wave" ")*music/fortress_reel.wav" +} +"music.fortress_reel_intro" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "volume" "1.0" + "wave" ")*music/fortress_reel_intro.wav" +} +"music.fortress_reel_loop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "volume" "1.0" + "wave" ")*music/fortress_reel_loop.wav" +} +"music.fortress_reel_intro2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "volume" "1.0" + "wave" ")*music/fortress_reel_intro2.wav" +} + +"music.fortress_reel_loop2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "volume" "1.0" + "wave" ")*music/fortress_reel_loop2.wav" +} + +"music.conga_loop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1.0" + "wave" ")*music/conga_sketch_167bpm_01-04.wav" +} + +"music.carousel_of_curses" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "#*music/carousel_of_curses.wav" +} +"music.kart_football" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "#*music/misfortune_teller.wav" +} +"music.kart_racetrack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "#*music/misfortune_teller.wav" +} +"music.kart_platform" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "#*music/bump_in_the_night.wav" +} +"music.russian" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_70dB" + "volume" "1.0" + "wave" ")*music/cossack_sandvich.wav" +} +"music.aerobic_loop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1.0" + "wave" ")*music/mannrobics.wav" +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_mvm.lua b/gamemodes/tf/gamemode/contents/game_sounds_mvm.lua new file mode 100644 index 000000000..e39870155 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_mvm.lua @@ -0,0 +1,1854 @@ +// ------------------------------------------------------------------------------------ // +// Mann vs Machine +// ------------------------------------------------------------------------------------ // +"MVM.Siren" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "wave" "mvm/ambient_mp3/mvm_siren.mp3" +} + +"MVM.MoneyPickup" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_90dB" + + "wave" "mvm/mvm_money_pickup.wav" +} + +"MVM.MoneyVanish" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_90dB" + + "wave" ")mvm/mvm_money_vanish.wav" +} + +"MVM.PlayerUpgraded" +{ + "channel" "CHAN_STATIC" + "volume" "0.25" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + + "wave" ")mvm/mvm_bought_upgrade.wav" +} + +"MVM.PlayerBoughtIn" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_90dB" + + "wave" "mvm/mvm_bought_in.wav" +} + +"MVM.PlayerUsedPowerup" +{ + "channel" "CHAN_STATIC" + "volume" "0.13" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_90dB" + + "wave" ")mvm/mvm_used_powerup.wav" +} + +"MVM.PlayerDied" +{ + "channel" "CHAN_STATIC" + "volume" "0.600" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "wave" "*#mvm/mvm_player_died.wav" +} + +"MVM.PlayerDiedScout" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"MVM.PlayerDiedSniper" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/sniper_PainCrticialDeath01.mp3" + "wave" "vo/sniper_PainCrticialDeath02.mp3" + "wave" "vo/sniper_PainCrticialDeath03.mp3" + "wave" "vo/sniper_PainCrticialDeath04.mp3" + } +} + +"MVM.PlayerDiedSoldier" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/soldier_PainCrticialDeath01.mp3" + "wave" "vo/soldier_PainCrticialDeath02.mp3" + "wave" "vo/soldier_PainCrticialDeath03.mp3" + "wave" "vo/soldier_PainCrticialDeath04.mp3" + } +} + +"MVM.PlayerDiedDemoman" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/demoman_PainCrticialDeath01.mp3" + "wave" "vo/demoman_PainCrticialDeath02.mp3" + "wave" "vo/demoman_PainCrticialDeath03.mp3" + "wave" "vo/demoman_PainCrticialDeath04.mp3" + "wave" "vo/demoman_PainCrticialDeath05.mp3" + } +} + +"MVM.PlayerDiedMedic" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/medic_PainCrticialDeath01.mp3" + "wave" "vo/medic_PainCrticialDeath02.mp3" + "wave" "vo/medic_PainCrticialDeath03.mp3" + "wave" "vo/medic_PainCrticialDeath04.mp3" + } +} + +"MVM.PlayerDiedHeavy" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/heavy_PainCrticialDeath01.mp3" + "wave" "vo/heavy_PainCrticialDeath02.mp3" + "wave" "vo/heavy_PainCrticialDeath03.mp3" + } +} + +"MVM.PlayerDiedPyro" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/pyro_PainCrticialDeath01.mp3" + "wave" "vo/pyro_PainCrticialDeath02.mp3" + "wave" "vo/pyro_PainCrticialDeath03.mp3" + } +} + +"MVM.PlayerDiedSpy" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/Spy_PainCrticialDeath01.mp3" + "wave" "vo/Spy_PainCrticialDeath02.mp3" + "wave" "vo/Spy_PainCrticialDeath03.mp3" + } +} + +"MVM.PlayerDiedEngineer" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_120dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"MVM.Mothership" +{ + "channel" "CHAN_STATIC" + "volume" "0.0" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_85dB" + + "wave" "misc/null.wav" +} + + +// ------------------------------------------------------------------------------------ // +// Tank +// ------------------------------------------------------------------------------------ // + +"MVM.TankStart" +{ + "channel" "CHAN_STATIC" + "volume" "0.6" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" "*#mvm/mvm_tank_start.wav" +} +"MVM.TankEnd" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" "*#mvm/mvm_tank_end.wav" +} +"MVM.TankPing" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")mvm/mvm_tank_horn.wav" +} + +"MVM.TankEngineLoop" +{ + "channel" "CHAN_STATIC" + "volume" "0.89" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" "^mvm/mvm_tank_loop.wav" +} + +"MVM.TankSmash" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")mvm/mvm_tank_smash.wav" +} + +"MVM.TankDeploy" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_140dB" + "wave" "mvm/mvm_tank_deploy.wav" +} + +"MVM.TankExplodes" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" ")mvm/mvm_tank_explode.wav" +} + +// ------------------------------------------------------------------------------------ // +// Bomb +// ------------------------------------------------------------------------------------ // + +"MVM.BombWarning" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_104dB" + "wave" ")mvm\mvm_bomb_warning.wav" +} + +"MVM.BombExplodes" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NONE" + "wave" "mvm/mvm_bomb_explode.wav" +} + +"MVM.Warning" +{ + "channel" "CHAN_STATIC" + "volume" "0.500" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "wave" "#*mvm/mvm_warning.wav" +} + +"MVM.BombResetExplode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "wave" "weapons/bombinomicon_explode1.wav" +} + +// ------------------------------------------------------------------------------------ // +// For bomb deploy animations based on robot size +// ------------------------------------------------------------------------------------ // + +"MVM.DeployBombGiant" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_90dB" + "wave" "mvm/mvm_deploy_giant.wav" +} + +"MVM.DeployBombSmall" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_90dB" + "wave" "mvm/mvm_deploy_small.wav" +} + +// ------------------------------------------------------------------------------------ // +// Sentry Buster +// ------------------------------------------------------------------------------------ // + +"MVM.SentryBusterExplode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_130dB" + "wave" ")mvm/sentrybuster/mvm_sentrybuster_explode.wav" +} + +"MVM.SentryBusterSpin" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_130dB" + "wave" ")mvm/sentrybuster/mvm_sentrybuster_spin.wav" +} + +"MVM.SentryBusterLoop" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_100dB" + "wave" "mvm/sentrybuster/mvm_sentrybuster_loop.wav" +} + +"MVM.SentryBusterIntro" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_140dB" + "wave" ")mvm/sentrybuster/mvm_sentrybuster_intro.wav" +} + +"MVM.SentryBusterStep" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "^mvm/sentrybuster/mvm_sentrybuster_step_01.wav" + "wave" "^mvm/sentrybuster/mvm_sentrybuster_step_02.wav" + "wave" "^mvm/sentrybuster/mvm_sentrybuster_step_03.wav" + "wave" "^mvm/sentrybuster/mvm_sentrybuster_step_04.wav" + } +} + + +// ------------------------------------------------------------------------------------ // +// Giant Heavy +// ------------------------------------------------------------------------------------ // +"MVM.GiantHeavyEntrance" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_90dB" + "wave" ")mvm/giant_heavy/giant_heavy_entrance.wav" +} + +"MVM.GiantHeavyExplodes" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_125dB" + "rndwave" + { +// "wave" ")mvm/giant_common/giant_common_explodes_01.wav" +// "wave" ")mvm/giant_common/giant_common_explodes_02.wav" + "wave" "mvm/sentrybuster/mvm_sentrybuster_explode.wav" + } +} + +"MVM.GiantHeavyGunWindDown" +{ + "channel" "CHAN_WEAPON" + "volume" "0.9" + "pitch" "100" + "soundlevel" "SNDLVL_120dB" + "wave" ")mvm/giant_heavy/giant_heavy_gunwinddown.wav" +} + +"MVM.GiantHeavyGunWindUp" +{ + "channel" "CHAN_WEAPON" + "volume" "0.9" + "pitch" "100" + "soundlevel" "SNDLVL_120dB" + "wave" ")mvm/giant_heavy/giant_heavy_gunwindup.wav" +} + +"MVM.GiantHeavyGunFire" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_120dB" + "wave" ")mvm/giant_heavy/giant_heavy_gunfire.wav" +} + +"MVM.GiantHeavyGunSpin" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_120dB" + "wave" ")mvm/giant_heavy/giant_heavy_gunspin.wav" +} + +"MVM.GiantHeavyLoop" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_83dB" + "wave" ")mvm/giant_heavy/giant_heavy_loop.wav" +} + +"MVM.GiantHeavyStep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "^mvm/giant_common/giant_common_step_01.wav" + "wave" "^mvm/giant_common/giant_common_step_02.wav" + "wave" "^mvm/giant_common/giant_common_step_03.wav" + "wave" "^mvm/giant_common/giant_common_step_04.wav" + "wave" "^mvm/giant_common/giant_common_step_05.wav" + "wave" "^mvm/giant_common/giant_common_step_06.wav" + "wave" "^mvm/giant_common/giant_common_step_07.wav" + "wave" "^mvm/giant_common/giant_common_step_08.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Giant Common - explosion common to all non-Heavy giants +// ------------------------------------------------------------------------------------ // + +"MVM.GiantCommonExplodes" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_125dB" + "rndwave" + { +// "wave" ")mvm/giant_common/giant_common_explodes_01.wav" +// "wave" ")mvm/giant_common/giant_common_explodes_02.wav" + "wave" "mvm/sentrybuster/mvm_sentrybuster_explode.wav" + + } +} + +// ------------------------------------------------------------------------------------ // +// Giant Soldier +// ------------------------------------------------------------------------------------ // +"MVM.GiantSoldierLoop" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_82dB" + "wave" "mvm/giant_soldier/giant_soldier_loop.wav" +} + +"MVM.GiantSoldierStep" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "^mvm/giant_common/giant_common_step_01.wav" + "wave" "^mvm/giant_common/giant_common_step_02.wav" + "wave" "^mvm/giant_common/giant_common_step_03.wav" + "wave" "^mvm/giant_common/giant_common_step_04.wav" + "wave" "^mvm/giant_common/giant_common_step_05.wav" + "wave" "^mvm/giant_common/giant_common_step_06.wav" + "wave" "^mvm/giant_common/giant_common_step_07.wav" + "wave" "^mvm/giant_common/giant_common_step_08.wav" + } +} + +"MVM.GiantSoldierRocketShoot" +{ + "channel" "CHAN_WEAPON" + "volume" "0.65, 0.75" + "pitch" "95, 105" + "soundlevel" "SNDLVL_90dB" + "wave" "mvm/giant_soldier/giant_soldier_rocket_shoot.wav" +} + +"MVM.GiantSoldierRocketShootCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "0.75" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" "mvm/giant_soldier/giant_soldier_rocket_shoot_crit.wav" +} + +"MVM.GiantSoldierRocketExplode" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_90dB" + "wave" "mvm/giant_soldier/giant_soldier_rocket_explode.wav" +} + +// ------------------------------------------------------------------------------------ // +// Giant Demoman +// ------------------------------------------------------------------------------------ // +"MVM.GiantDemomanLoop" +{ + "channel" "CHAN_STATIC" + "volume" "0.6" + "pitch" "100" + "soundlevel" "SNDLVL_82dB" + "wave" "mvm/giant_demoman/giant_demoman_loop.wav" +} + +"MVM.GiantWTFDemomanLoop" +{ + "channel" "CHAN_STATIC" + "volume" "0.6" + "pitch" "100" + "soundlevel" "SNDLVL_82dB" + "wave" "music/conga_sketch_167bpm_01-04.wav" +} + +"MVM.GiantDemomanStep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "^mvm/giant_common/giant_common_step_01.wav" + "wave" "^mvm/giant_common/giant_common_step_02.wav" + "wave" "^mvm/giant_common/giant_common_step_03.wav" + "wave" "^mvm/giant_common/giant_common_step_04.wav" + "wave" "^mvm/giant_common/giant_common_step_05.wav" + "wave" "^mvm/giant_common/giant_common_step_06.wav" + "wave" "^mvm/giant_common/giant_common_step_07.wav" + "wave" "^mvm/giant_common/giant_common_step_08.wav" + } +} + +"MVM.GiantDemoman_Grenadeshoot" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" "^mvm/giant_demoman/giant_demoman_grenade_shoot.wav" +} + +// ------------------------------------------------------------------------------------ // +// Giant Scout +// ------------------------------------------------------------------------------------ // +"MVM.GiantScoutLoop" +{ + "channel" "CHAN_STATIC" + "volume" "0.3" + "pitch" "100" + "soundlevel" "SNDLVL_85dB" + "wave" "mvm/giant_scout/giant_scout_loop.wav" +} + +"MVM.GiantScoutStep" +{ + "channel" "CHAN_STATIC" + "volume" "0.6" + "pitch" "100" + "soundlevel" "SNDLVL_87dB" + "rndwave" + { + "wave" "^mvm/giant_common/giant_common_step_01.wav" + "wave" "^mvm/giant_common/giant_common_step_02.wav" + "wave" "^mvm/giant_common/giant_common_step_03.wav" + "wave" "^mvm/giant_common/giant_common_step_04.wav" + "wave" "^mvm/giant_common/giant_common_step_05.wav" + "wave" "^mvm/giant_common/giant_common_step_06.wav" + "wave" "^mvm/giant_common/giant_common_step_07.wav" + "wave" "^mvm/giant_common/giant_common_step_08.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Giant Pyro +// ------------------------------------------------------------------------------------ // +"MVM.GiantPyroLoop" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "100" + "soundlevel" "SNDLVL_83dB" + "wave" "mvm/giant_pyro/giant_pyro_loop.wav" +} + +"MVM.GiantPyroStep" +{ + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "^mvm/giant_common/giant_common_step_01.wav" + "wave" "^mvm/giant_common/giant_common_step_02.wav" + "wave" "^mvm/giant_common/giant_common_step_03.wav" + "wave" "^mvm/giant_common/giant_common_step_04.wav" + "wave" "^mvm/giant_common/giant_common_step_05.wav" + "wave" "^mvm/giant_common/giant_common_step_06.wav" + "wave" "^mvm/giant_common/giant_common_step_07.wav" + "wave" "^mvm/giant_common/giant_common_step_08.wav" + } +} + +"MVM.GiantPyro_FlameStart" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" "^mvm/giant_pyro/giant_pyro_flamethrower_start.wav" +} + +"MVM.GiantPyro_FlameLoop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" "^mvm/giant_pyro/giant_pyro_flamethrower_loop.wav" +} + + +// ------------------------------------------------------------------------------------ // +// regular bots +// ------------------------------------------------------------------------------------ // +"MVM.BotStep" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "pitch" "95,100" + "soundlevel" "SNDLVL_87dB" + "rndwave" + { + "wave" "mvm/player/footsteps/robostep_01.wav" + "wave" "mvm/player/footsteps/robostep_02.wav" + "wave" "mvm/player/footsteps/robostep_03.wav" + "wave" "mvm/player/footsteps/robostep_04.wav" + "wave" "mvm/player/footsteps/robostep_05.wav" + "wave" "mvm/player/footsteps/robostep_06.wav" + "wave" "mvm/player/footsteps/robostep_07.wav" + "wave" "mvm/player/footsteps/robostep_08.wav" + "wave" "mvm/player/footsteps/robostep_09.wav" + "wave" "mvm/player/footsteps/robostep_10.wav" + "wave" "mvm/player/footsteps/robostep_11.wav" + "wave" "mvm/player/footsteps/robostep_12.wav" + "wave" "mvm/player/footsteps/robostep_13.wav" + "wave" "mvm/player/footsteps/robostep_14.wav" + "wave" "mvm/player/footsteps/robostep_15.wav" + "wave" "mvm/player/footsteps/robostep_16.wav" + "wave" "mvm/player/footsteps/robostep_17.wav" + "wave" "mvm/player/footsteps/robostep_18.wav" + } +} +// ------------------------------------------------------------------------------------ // +// Fall damage for robots +// ------------------------------------------------------------------------------------ // +"MVM.FallDamageBots" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_60dB" + "rndwave" + { + "wave" "mvm/mvm_fallpain01.wav" + "wave" "mvm/mvm_fallpain02.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Melee impact replacements Use instead of flesh impact sounds +// ------------------------------------------------------------------------------------ // +"MVM_Weapon_Default.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +// "wave" ")weapons/bat_baseball_hit_flesh.wav" + +} + +"MVM_Weapon_FireAxe.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Shovel.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_3rd_degree.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_BaseballBat.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "mvm/melee_impacts/bat_baseball_hit_robo01.wav" +} + +"MVM_Weapon_Knife.HitFlesh" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "mvm/melee_impacts/blade_hit_robo01.wav" + "wave" "mvm/melee_impacts/blade_hit_robo02.wav" + "wave" "mvm/melee_impacts/blade_hit_robo03.wav" + "wave" "mvm/melee_impacts/blade_hit_robo04.wav" + } +} + +"MVM_Weapon_PickAxe.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "pitch" "100" + "rndwave" + { + "wave" "mvm/melee_impacts/blade_slice_robo01.wav" + "wave" "mvm/melee_impacts/blade_slice_robo02.wav" + "wave" "mvm/melee_impacts/blade_slice_robo03.wav" + } +} + +"MVM_Weapon_Sword.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "pitch" "100" + "rndwave" + { + "wave" "mvm/melee_impacts/blade_slice_robo01.wav" + "wave" "mvm/melee_impacts/blade_slice_robo02.wav" + "wave" "mvm/melee_impacts/blade_slice_robo03.wav" + } +} + +"MVM_Weapon_Katana.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "pitch" "100" + "rndwave" + { + "wave" "mvm/melee_impacts/blade_slice_robo01.wav" + "wave" "mvm/melee_impacts/blade_slice_robo02.wav" + "wave" "mvm/melee_impacts/blade_slice_robo03.wav" + } +} + +"MVM_Weapon_Bottle.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/bottle_hit_robo01.wav" + "wave" "mvm/melee_impacts/bottle_hit_robo02.wav" + "wave" "mvm/melee_impacts/bottle_hit_robo03.wav" + } +} + +"MVM_Weapon_Bottle.IntactHitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/bottle_hit_robo01.wav" + "wave" "mvm/melee_impacts/bottle_hit_robo02.wav" + "wave" "mvm/melee_impacts/bottle_hit_robo03.wav" + } +} + +"MVM_Weapon_Bottle.BrokenHitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/bottle_hit_robo01.wav" + "wave" "mvm/melee_impacts/bottle_hit_robo02.wav" + "wave" "mvm/melee_impacts/bottle_hit_robo03.wav" + } +} + +"MVM_Weapon_Crowbar.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Machete.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Fist.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_BoneSaw.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Club.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Flag.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Medikit.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Pipe.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Wrench.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_Weapon_Bat.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/cbar_hitbod_robo01.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo02.wav" + "wave" "mvm/melee_impacts/cbar_hitbod_robo03.wav" + } +} + +"MVM_EvictionNotice.Impact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/metal_gloves_hit_robo01.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo03.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo04.wav" + } +} + +"MVM_EvictionNotice.ImpactCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/metal_gloves_hit_robo01.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo03.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo04.wav" + } +} + +"MVM_BostonBasher.Impact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\eviction_notice_01.wav" + "wave" ")weapons\eviction_notice_02.wav" + "wave" ")weapons\eviction_notice_03.wav" + "wave" ")weapons\eviction_notice_04.wav" + } +} + +"MVM_BostonBasher.ImpactCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\eviction_notice_01_crit.wav" + "wave" ")weapons\eviction_notice_02_crit.wav" + "wave" ")weapons\eviction_notice_03_crit.wav" + "wave" ")weapons\eviction_notice_04_crit.wav" + } +} + +"MVM_Weapon_MetalGloves.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/metal_gloves_hit_robo01.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo03.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo04.wav" + } +} + +"MVM_Weapon_MetalGloves.CritHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/metal_gloves_hit_robo01.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo02.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo03.wav" + "wave" "mvm/melee_impacts/metal_gloves_hit_robo04.wav" + } +} + +"MVM_Weapon_Assassin_Knife.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts\spyassassinknife_impact_robo01.wav" + "wave" "mvm/melee_impacts\spyassassinknife_impact_robo02.wav" + } +} + +"MVM_Weapon_Assassin_Knife.Backstab" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts\spyassassinknife_impact_robo01.wav" + "wave" "mvm/melee_impacts\spyassassinknife_impact_robo02.wav" + } +} + +"MVM_Weapon_Arrow.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "mvm\melee_impacts\arrow_impact_robo01.wav" + "wave" "mvm\melee_impacts\arrow_impact_robo02.wav" + "wave" "mvm\melee_impacts\arrow_impact_robo03.wav" + } +} + +"MVM_FryingPan.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "mvm/melee_impacts/pan_impact_robo01.wav" + "wave" "mvm/melee_impacts/pan_impact_robo02.wav" + "wave" "mvm/melee_impacts/pan_impact_robo03.wav" + } +} + +"MVM_Weapon_mittens.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.8" + "wave" ")weapons\mittens_punch.wav" +} + +"MVM_Weapon_BoxingGloves.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/boxing_gloves_hit1.wav" + "wave" "weapons/boxing_gloves_hit2.wav" + "wave" "weapons/boxing_gloves_hit3.wav" + "wave" "weapons/boxing_gloves_hit4.wav" + } +} + +"MVM_Weapon_HolyMackerel.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/holy_mackerel1.wav" + "wave" "weapons/holy_mackerel2.wav" + "wave" "weapons/holy_mackerel3.wav" + } +} + +"MVM_BallBuster.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons\ball_buster_hit_01.wav" +} + +"MVM_Weapon_UberSaw.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/ubersaw_hit1.wav" + "wave" "weapons/ubersaw_hit2.wav" + "wave" "weapons/ubersaw_hit3.wav" + "wave" "weapons/ubersaw_hit4.wav" + } +} + + + +// ------------------------------------------------------------------------------------ // +// Physics Robot Body Sounds +// ------------------------------------------------------------------------------------ // +"MVM.RobotImpactSoft" +{ + "soundlevel" "SNDLVL_75dB" + "volume" "0.4" + "rndwave" + { + "wave" "mvm/physics/robo_impact_soft_01.wav" + "wave" "mvm/physics/robo_impact_soft_02.wav" + "wave" "mvm/physics/robo_impact_soft_03.wav" + "wave" "mvm/physics/robo_impact_soft_04.wav" + "wave" "mvm/physics/robo_impact_soft_05.wav" + "wave" "mvm/physics/robo_impact_soft_06.wav" + "wave" "mvm/physics/robo_impact_soft_07.wav" + } +} + +"MVM.RobotImpactHard" +{ + "soundlevel" "SNDLVL_85dB" + "volume" "0.5, 1.0" + "rndwave" + { + "wave" "mvm/physics/robo_impact_hard_01.wav" + "wave" "mvm/physics/robo_impact_hard_02.wav" + "wave" "mvm/physics/robo_impact_hard_03.wav" + "wave" "mvm/physics/robo_impact_hard_04.wav" + "wave" "mvm/physics/robo_impact_hard_05.wav" + "wave" "mvm/physics/robo_impact_hard_06.wav" + } +} + +"MVM.RobotImpactBullet" +{ + "soundlevel" "SNDLVL_80dB" + "volume" "0.90" + "rndwave" + { + "wave" "mvm/physics/robo_impact_bullet01.wav" + "wave" "mvm/physics/robo_impact_bullet02.wav" + "wave" "mvm/physics/robo_impact_bullet03.wav" + "wave" "mvm/physics/robo_impact_bullet04.wav" + } +} + +"MVM.RobotScrape" +{ + "soundlevel" "SNDLVL_70dB" + "volume" "0.6" + "wave" "mvm/physics/robo_scrape_loop.wav" +} + +// Not currently used...added to suppress console warnings +"Spy.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_PainSevere01.mp3" + "wave" "vo/Spy_PainSevere02.mp3" + "wave" "vo/Spy_PainSevere03.mp3" + "wave" "vo/Spy_PainSevere04.mp3" + "wave" "vo/Spy_PainSevere05.mp3" + } +} + +"Spy.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/Spy_PainCrticialDeath01.mp3" + "wave" "vo/Spy_PainCrticialDeath02.mp3" + "wave" "vo/Spy_PainCrticialDeath03.mp3" + } +} + +"Spy.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/Spy_PainCrticialDeath01.mp3" + "wave" "vo/Spy_PainCrticialDeath02.mp3" + "wave" "vo/Spy_PainCrticialDeath03.mp3" + } +} + +"Spy.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_PainSevere01.mp3" + "wave" "vo/Spy_PainSevere02.mp3" + "wave" "vo/Spy_PainSevere03.mp3" + "wave" "vo/Spy_PainSevere04.mp3" + "wave" "vo/Spy_PainSevere05.mp3" + } +} + +"Engineer.MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainSevere01.mp3" + "wave" "vo/engineer_PainSevere02.mp3" + "wave" "vo/engineer_PainSevere03.mp3" + "wave" "vo/engineer_PainSevere04.mp3" + "wave" "vo/engineer_PainSevere05.mp3" + "wave" "vo/engineer_PainSevere06.mp3" + "wave" "vo/engineer_PainSevere07.mp3" + } +} + +"Engineer.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainSevere01.mp3" + "wave" "vo/engineer_PainSevere02.mp3" + "wave" "vo/engineer_PainSevere03.mp3" + "wave" "vo/engineer_PainSevere04.mp3" + "wave" "vo/engineer_PainSevere05.mp3" + "wave" "vo/engineer_PainSevere06.mp3" + "wave" "vo/engineer_PainSevere07.mp3" + } +} + +"Engineer.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Civilian.MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainSevere01.mp3" + "wave" "vo/scout_PainSevere02.mp3" + "wave" "vo/scout_PainSevere03.mp3" + "wave" "vo/scout_PainSevere04.mp3" + "wave" "vo/scout_PainSevere05.mp3" + "wave" "vo/scout_PainSevere06.mp3" + } +} + +"Civilian.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainSevere01.mp3" + "wave" "vo/scout_PainSevere02.mp3" + "wave" "vo/scout_PainSevere03.mp3" + "wave" "vo/scout_PainSevere04.mp3" + "wave" "vo/scout_PainSevere05.mp3" + "wave" "vo/scout_PainSevere06.mp3" + } +} + +"Civilian.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// Melee impact replacements Use instead of flesh impact sounds +// ------------------------------------------------------------------------------------ // +"MVM_Robot.BulletImpact" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_80dB" + "pitch" "PITCH_NORM" + "volume" "0.90" + "rndwave" + { + "wave" "physics/metal/metal_solid_impact_bullet1.wav" + "wave" "physics/metal/metal_solid_impact_bullet2.wav" + "wave" "physics/metal/metal_solid_impact_bullet3.wav" + "wave" "physics/metal/metal_solid_impact_bullet4.wav" + } + +} +"MVM_Giant.BulletImpact" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_80dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "physics/metal/metal_solid_impact_bullet1.wav" + "wave" "physics/metal/metal_solid_impact_bullet2.wav" + "wave" "physics/metal/metal_solid_impact_bullet3.wav" + "wave" "physics/metal/metal_solid_impact_bullet4.wav" + } + +} +"MVM_Tank.BulletImpact" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_80dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "physics/metal/metal_solid_impact_bullet1.wav" + "wave" "physics/metal/metal_solid_impact_bullet2.wav" + "wave" "physics/metal/metal_solid_impact_bullet3.wav" + "wave" "physics/metal/metal_solid_impact_bullet4.wav" + } + +} + +// ------------------------------------------------------------------------------------ // +// Weapon Upgrades +// ------------------------------------------------------------------------------------ // +"Weapon_Upgrade.ExplosiveHeadshot" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons\upgrade_explosive_headshot.wav" +} + +"Weapon_Upgrade.DamageBonus1" +{ + "channel" "CHAN_AUTO" + "volume" "0.55" + "soundlevel" "SNDLVL_74dB" + "wave" "misc/null.wav" +} + +"Weapon_Upgrade.DamageBonus2" +{ + "channel" "CHAN_AUTO" + "volume" "0.7" + "soundlevel" "SNDLVL_74dB" + "wave" "misc/null.wav" +} + +"Weapon_Upgrade.DamageBonus3" +{ + "channel" "CHAN_AUTO" + "volume" "0.85" + "soundlevel" "SNDLVL_74dB" + "wave" "misc/null.wav" +} + +"Weapon_Upgrade.DamageBonus4" +{ + "channel" "CHAN_AUTO" + "volume" "1.000" + "soundlevel" "SNDLVL_74dB" + "wave" "misc/null.wav" +} + +"MVM.PlayerRevived" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_90dB" + + "wave" "mvm\mvm_revive.wav" +} + +// ------------------------------------------------------------------------------------ // +// MVM Engineer and Teleporter +// ------------------------------------------------------------------------------------ // + +"MVM.Robot_Engineer_Spawn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")weapons/guitar_strum.wav" +} + +"MVM.Robot_Teleporter_Deliver" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + "soundlevel" "SNDLVL_150dB" + "wave" ")mvm/mvm_tele_deliver.wav" +} + +// Level Specific + +"grinder_loop" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_70dB" + "pitch" "PITCH_NORM" + "wave" ")ambient/grinder/grinderloop_01.wav" +} + +"grinder_human" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")ambient_mp3/grinder/grinderhuman_01.mp3" + "wave" ")ambient_mp3/grinder/grinderhuman_02.mp3" + } +} + +"grinder_bot" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")ambient_mp3/grinder/grinderbot_01.mp3" + "wave" ")ambient_mp3/grinder/grinderbot_02.mp3" + "wave" ")ambient_mp3/grinder/grinderbot_03.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// MVM klaxon +// ------------------------------------------------------------------------------------ // + + +"mvm.cpoint_alarm" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "mvm\mvm_cpoint_klaxon.wav" +} + + +// ------------------------------------------------------------------------------------ // +// MVM robotstun +// ------------------------------------------------------------------------------------ // + + +"mvm.robo_stun_lp" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")mvm\mvm_robo_stun.wav" + + +} + +// ------------------------------------------------------------------------------------ // +// MVM upgrade refund +// ------------------------------------------------------------------------------------ // +"MVM.RespecAwarded" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "100" + "soundlevel" "SNDLVL_105dB" + "wave" ")mvm/mvm_tank_horn.wav" +} diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_physics.txt b/gamemodes/tf/gamemode/contents/game_sounds_physics.lua similarity index 100% rename from addon/gamemodes/teamfortress/content/scripts/game_sounds_physics.txt rename to gamemodes/tf/gamemode/contents/game_sounds_physics.lua diff --git a/gamemodes/tf/gamemode/contents/game_sounds_player.lua b/gamemodes/tf/gamemode/contents/game_sounds_player.lua new file mode 100644 index 000000000..c5b350b37 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_player.lua @@ -0,0 +1,5061 @@ +// Channels +// CHAN_AUTO = 0, +// CHAN_WEAPON = 1, +// CHAN_VOICE = 2, +// CHAN_ITEM = 3, +// CHAN_BODY = 4, +// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area +// CHAN_STATIC = 6, // allocate channel from the static area +// these can be set with "channel" "2" or "channel" "chan_voice" + +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- + +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f + +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, // 3.9 +// SNDLVL_55dB = 55, // 3.0 +// SNDLVL_IDLE = 60, // 2.0 +// SNDLVL_TALKING = 60, // 2.0 +// SNDLVL_60dB = 60, // 2.0 +// SNDLVL_65dB = 65, // 1.5 +// SNDLVL_STATIC = 66, // 1.25 +// SNDLVL_70dB = 70, // 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, // 0.8 +// SNDLVL_80dB = 80, // 0.7 +// SNDLVL_85dB = 85, // 0.6 +// SNDLVL_90dB = 90, // 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, // 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, // 0.27 +// SNDLVL_140dB = 140, // 0.2 +// SNDLVL_150dB = 150, // 0.2 + + +"Scout.DodgeCanOpen" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_scout_dodge_can_open.wav" +} + +"Scout.DodgeCanDrinkFast" +{ + "channel" "CHAN_WEAPON" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_scout_dodge_can_drink_fast.wav" +} + +"Scout.DodgeCanDrink" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_scout_dodge_can_drink.wav" +} + +"Scout.DodgeCanCrush" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_scout_dodge_can_crush.wav" +} + +"Scout.DodgeCanPitch" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_scout_dodge_can_pitch.wav" +} + + +"Scout.DodgeTired" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_scout_dodge_tired.wav" +} + +"Player.Spawn" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "misc/null.wav" +} + +"Player.UseDeny" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + + "wave" "common/wpn_denyselect.wav" +} + +"Player.WeaponSelected" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "common/wpn_select.wav" +} + +"Player.DenyWeaponSelection" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + + "wave" "common/wpn_denyselect.wav" +} + +"Player.WeaponSelectionOpen" +{ + "channel" "CHAN_BODY" + "volume" "0.32" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "common/null.wav" +} + +"Player.WeaponSelectionClose" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "common/null.wav" +} + +"Player.WeaponSelectionMoveSlot" +{ + "channel" "CHAN_BODY" + "volume" "0.5" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "common/wpn_moveselect.wav" +} + +"Player.FallGib" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "92,96" + "soundlevel" "SNDLVL_NORM" + "wave" "player/pl_fleshbreak.wav" +} + +"Player.FallDamage" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "wave" "player/pl_fallpain.wav" +} + +"Player.PlasmaDamage" +{ + "channel" "CHAN_BODY" + "volume" "0.5" + "soundlevel" "SNDLVL_75dB" + + "wave" "player/general/flesh_burn.wav" +} + +"Player.SonicDamage" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "wave" "player/pain.wav" +} + +"Player.DrownStart" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + + "wave" "player/pl_drown1.wav" +} + +"Player.DrownContinue" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "pitch" "95,105" + + "rndwave" + { + "wave" "player/pl_drown1.wav" + "wave" "player/pl_drown2.wav" + "wave" "player/pl_drown3.wav" + } +} + +"Player.AmbientUnderWater" +{ + "channel" "CHAN_STATIC" + "volume" "0.22" + "soundlevel" "SNDLVL_75dB" + + "wave" "ambient/water/underwater.wav" +} + +"Player.PickupWeapon" +{ + "channel" "CHAN_BODY" + "volume" "0.8" + "soundlevel" "SNDLVL_75dB" + "pitch" "95,105" + "wave" "items/ammo_pickup.wav" +} + + +"Geiger.BeepLow" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/geiger1.wav" + "wave" "player/geiger2.wav" + } +} + +"Player.OnFire" +{ + "channel" "CHAN_BODY" + "volume" "0.8" + "soundlevel" "SNDLVL_75dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "ambient/fire/fire_small_loop1.wav" + "wave" "ambient/fire/fire_small_loop2.wav" + } +} + +"Player.ReceiveSouls" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/souls_receive1.wav" + "wave" "player/souls_receive2.wav" + "wave" "player/souls_receive3.wav" + } +} + +"Player.ResistanceLight" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "90, 110" + + "rndwave" + { + "wave" ")player/resistance_light1.wav" + "wave" ")player/resistance_light2.wav" + "wave" ")player/resistance_light3.wav" + "wave" ")player/resistance_light4.wav" + } +} + +"Player.ResistanceMedium" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "90, 110" + + "rndwave" + { + "wave" ")player/resistance_medium1.wav" + "wave" ")player/resistance_medium2.wav" + "wave" ")player/resistance_medium3.wav" + "wave" ")player/resistance_medium4.wav" + } +} + +"Player.ResistanceHeavy" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "90, 110" + + "rndwave" + { + "wave" ")player/resistance_heavy1.wav" + "wave" ")player/resistance_heavy2.wav" + "wave" ")player/resistance_heavy3.wav" + "wave" ")player/resistance_heavy4.wav" + } +} + +//========================================================================= + + +"TFPlayer.Decapitated" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" ")player/flow.wav" +} + +"TFPlayer.StunImpact" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_impact_stun.wav" +} + +"TFPlayer.StunImpactRange" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + "wave" "player/pl_impact_stun_range.wav" +} + +"TFPlayer.AirBlastImpact" +{ + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "player/pl_impact_airblast1.wav" + "wave" "player/pl_impact_airblast2.wav" + "wave" "player/pl_impact_airblast3.wav" + "wave" "player/pl_impact_airblast4.wav" + } +} + +"TFPlayer.FlareImpact" +{ + "soundlevel" "SNDLVL_75dB" + "volume" "0.7" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "player/pl_impact_flare1.wav" + "wave" "player/pl_impact_flare2.wav" + "wave" "player/pl_impact_flare3.wav" + } +} + +"TFPlayer.Drown" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + + "rndwave" + { + "wave" "player/drown1.wav" + "wave" "player/drown2.wav" + "wave" "player/drown3.wav" + } +} + +"TFPlayer.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "92,96" + "wave" "player/pain.wav" +} + +"TFPlayer.FlameOut" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCh_NORM" + "wave" ")player/flame_out.wav" +} + + +"TFPlayer.AttackerPain" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "92,96" + "wave" "player/death.wav" +} + +"TFPlayer.FirePain" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "92,96" + "wave" "player/fire.wav" +} + +"TFPlayer.CritPain" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + + "rndwave" + { + "wave" "player/crit_received1.wav" + "wave" "player/crit_received2.wav" + "wave" "player/crit_received3.wav" + + } +} + +"TFPlayer.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + "wave" "player/death.wav" +} + +"TFPlayer.MedicChargedDeath" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + "wave" "player/medic_charged_death.wav" +} + +"Player.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "92,96" + "wave" "player/pain.wav" +} + +"Player.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "92,96" + "wave" "player/death.wav" + +} + +"Player.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "92,96" + "wave" "player/pain.wav" +} + +"TFPlayer.GrenadeTimer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/timer.wav" +} + +"Player.Spy_Disguise" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_65dB" + "wave" "player/spy_disguise.wav" +} + +"Player.Spy_Shield_Break" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/spy_shield_break.wav" +} + +"Player.Spy_Cloak" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" "player/spy_cloak.wav" +} + +"Player.Spy_UnCloakReduced" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "soundlevel" "SNDLVL_40dB" + "wave" "player/spy_uncloak.wav" +} + +"Player.Spy_UnCloak" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" "player/spy_uncloak.wav" +} + +"Player.Spy_UnCloakFeignDeath" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "wave" "player/spy_uncloak_feigndeath.wav" +} + +"Player.ScoutShove" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "rndwave" + { + "wave" "player/shove1.wav" + "wave" "player/shove2.wav" + "wave" "player/shove3.wav" + "wave" "player/shove4.wav" + "wave" "player/shove5.wav" + "wave" "player/shove6.wav" + "wave" "player/shove7.wav" + "wave" "player/shove8.wav" + "wave" "player/shove9.wav" + "wave" "player/shove10.wav" + } +} + +"TFPlayer.SaveMe" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_86dBM" + + "rndwave" + { + "wave" "vo/medic1.mp3" + "wave" "vo/medic2.mp3" + } +} + +"TFPlayer.InvulnerableOn" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_86dB" + "wave" "player/invulnerable_on.wav" +} + +"TFPlayer.QuickFixInvulnerableOn" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_86dB" + "wave" "player/quickfix_invulnerable_on.wav" +} + +"TFPlayer.InvulnerableOff" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_86dB" + "wave" "player/invulnerable_off.wav" +} + +"TFPlayer.MegaHealOn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/weapon_crit_charged_on.wav" +} + +"TFPlayer.MegaHealOff" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/weapon_crit_charged_off.wav" +} + +"TFPlayer.CritHit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "player/crit_hit.wav" + "wave" "player/crit_hit2.wav" + "wave" "player/crit_hit3.wav" + "wave" "player/crit_hit4.wav" + "wave" "player/crit_hit5.wav" + } +} + +"TFPlayer.CritHitMini" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "player/crit_hit_mini.wav" + "wave" "player/crit_hit_mini2.wav" + "wave" "player/crit_hit_mini3.wav" + "wave" "player/crit_hit_mini4.wav" + "wave" "player/crit_hit_mini5.wav" + } +} + +"TFPlayer.DoubleDonk" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")player\doubledonk.wav" +} + +"TFPlayer.FreezeCam" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "misc/freeze_cam.wav" +} + +"TFPlayer.ReCharged" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "wave" "player/recharged.wav" +} + +"TFPlayer.Dissolve" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "wave" "player/dissolve.wav" +} + +//----------------------------------------------------------------------------- +//Taunts and Selection Menu +//----------------------------------------------------------------------------- +"Taunt.EngineerGunSlinger" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" ")player/taunt_eng_gunslinger.wav" +} + +"Taunt.EngineerSwoosh" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" ")player/taunt_eng_swoosh.wav" +} + +"Taunt.EngineerSmash" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "rndwave" + { + "wave" ")player/taunt_eng_smash1.wav" + "wave" ")player/taunt_eng_smash2.wav" + "wave" ")player/taunt_eng_smash3.wav" + } +} + +"Taunt.EngineerStrum" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" ")player/taunt_eng_strum.wav" +} + +"Taunt.Engineer01HandClap" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap.wav" +} + +"Taunt.Engineer01HandClap2" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap2.wav" +} + +"Taunt.Engineer01FootStomp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Engineer01FootStompLight" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp_light.wav" +} + +"Taunt.Engineer02PistolTwirl" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_pistol_twirl.wav" +} + +"Taunt.Engineer_Western_Shoot1" +{ + "channel" "CHAN_STATIC" + "volume" "1,0" + "soundlevel" "SNDLVL_75dB" + "wave" ")player/taunt_western_shoot1.wav" +} + +"Taunt.Engineer_Western_Shoot2" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "wave" ")player/taunt_western_shoot2.wav" +} + +"Selection.EngineerWrenchShoulder" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_shotgun_shoulder.wav" +} + +"Selection.EngineerFootStomp" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_foot_stomp.wav" +} + +"Selection.EngineerClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Demo01FootStompLight" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp_light.wav" +} + +"Taunt.Demo01FootSpin" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_spin.wav" +} + +"Taunt.Demo01HandClap" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap.wav" +} + +"Taunt.Demo01HandClap2" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap2.wav" +} + +"Taunt.Demo02EquipmentJingle" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle.wav" +} + +"Taunt.Demo02EquipmentJingle2" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle2.wav" +} + +"Taunt.Demo02EquipmentJingle3" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Taunt.Demo02EquipmentJingle4" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle4.wav" +} + +"Taunt.Demo03BottleCatch" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap.wav" +} + +"Taunt.Demo03BottleSlosh" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_bottle_slosh.wav" +} + +"Taunt.Demo03BottleAh" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_bottle_ah.wav" +} + +"Selection.DemoEquipment1" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_gun2.wav" +} + +"Selection.DemoEquipment2" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_gun1.wav" +} + +"Selection.DemoClipSpin" +{ + "channel" "CHAN_WEAPON" + "volume" ".5" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clip_spin.wav" +} + +"Selection.DemoClipSpinLong" +{ + "channel" "CHAN_WEAPON" + "volume" ".5" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clip_spin_long.wav" +} + +"Taunt.DemoShakeIt" +{ + "channel" "CHAN_BODY" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_shake_it.wav" +} + +"Taunt.Demo_Burp" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_burp.wav" +} + +"Taunt.MedicGloveStretch" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + + "wave" "player/taunt_rubberglove_stretch.wav" +} + +"Taunt.MedicHardClap1" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + + "wave" ")player/taunt_hard_clap1.wav" +} + +"Taunt.MedicHardClap2" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + + "wave" ")player/taunt_hard_clap2.wav" +} + +"Taunt.MedicHardClap3" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + + "wave" ")player/taunt_hard_clap3.wav" +} + +"Taunt.MedicHardClap4" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_75dB" + + "wave" ")player/taunt_hard_clap1.wav" +} + +"Taunt.MedicHardClap5" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_75dB" + + "wave" ")player/taunt_hard_clap2.wav" +} + +"Taunt.MedicHardClap6" +{ + "channel" "CHAN_STATIC" + "volume" ".05" + "soundlevel" "SNDLVL_75dB" + + "wave" ")player/taunt_hard_clap3.wav" +} + +"Taunt.MedicGloveSnap" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + + "wave" "player/taunt_rubberglove_snap.wav" +} + +"Taunt.MedicViolin" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "soundlevel" "SNDLVL_75dB" + + "rndwave" + { + "wave" "player/taunt_v01.wav" + "wave" "player/taunt_v02.wav" + "wave" "player/taunt_v03.wav" + "wave" "player/taunt_v04.wav" + "wave" "player/taunt_v05.wav" + "wave" "player/taunt_v06.wav" + "wave" "player/taunt_v07.wav" + } +} +"Taunt.MedicViolinUber" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "soundlevel" "SNDLVL_75dB" + + "rndwave" + { + "wave" "player/uberTaunt_v01.wav" + "wave" "player/uberTaunt_v02.wav" + "wave" "player/uberTaunt_v03.wav" + "wave" "player/uberTaunt_v04.wav" + "wave" "player/uberTaunt_v05.wav" + "wave" "player/uberTaunt_v06.wav" + "wave" "player/uberTaunt_v07.wav" + } +} + +"Taunt.MedicHeroic" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + + "wave" ")player/taunt_medic_heroic.wav" +} + +"Taunt.GuitarRiff" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + + "wave" ")player\brutal_legend_taunt.wav" +} + +"Taunt.WormsHHG" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + + "rndwave" + { + "wave" "player/taunt_wormsHHG.wav" + } +} + +"Selection.MedicHeelClick" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + + "wave" "player/taunt_heel_click.wav" +} + +"Selection.MedicFootStomp" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + + "wave" "player/taunt_foot_stomp.wav" +} + +"Selection.MedicFootSlide" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + + "wave" "player/taunt_foot_spin.wav" +} + +"Taunt.Scout01Run" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_75dB" + + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Scout01HandSmack" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + + "wave" "player/taunt_hand_clap.wav" +} + +"Taunt.Scout02Run" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Scout03Run" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Selection.ScoutShotgunShoulder" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_shotgun_shoulder.wav" +} + +"Selection.ScoutShotgunTwirl" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_shotgun_twirl.wav" +} + +"Taunt.Sniper02HealClick" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Sniper02FootStomp" +{ + "channel" "CHAN_STATIC" + "volume" ".50" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Sniper02FootSlide" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_spin.wav" +} + +"Taunt.Sniper03MacheteUnsheath" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_machete_draw.wav" +} + +"Taunt.Sniper03MacheteCatch" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_machete_catch.wav" +} + +"Selection.SniperHatTip" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_swipe.wav" +} + +"Taunt.Spy01TieFix" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_tie_fix.wav" +} + +"Taunt.Spy03FootStomp" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Spy03KnifeCatch" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_grenade_catch.wav" +} + +"Taunt.Spy04CigFlick" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_cig_flick.wav" +} + +"Taunt.SpyCigCaseClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_cig_case_close.wav" +} + +"Selection.SpyClothesRustle1" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_swipe.wav" +} + +"Selection.SpyClothesRustle2" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_swipe2.wav" +} + +"Taunt.SoldierClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_clothes_swipe2.wav" +} + +"Selection.SpyPuff" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_puff.wav" +} + +"Selection.SpyPuffAh" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_puff_ah.wav" +} + +"Taunt.Soldier01HeelClick" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Soldier01ClothesSwipe" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_swipe.wav" +} + +"Taunt.Soldier01ClothesRustle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Soldier01HelmetJostle" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Taunt.SoldierKnuckleCrack" +{ + "channel" "CHAN_STATIC" + "volume" "0.25" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_knuckle_crack.wav" +} + +"Taunt.TauntChestThumpYell" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/soldier_DirectHitTaunt02.mp3" +} + +"Taunt.SoldierChestThump" +{ + "channel" "CHAN_STATIC" + "volume" "0.25" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_chest_thump.wav" +} + +"Taunt.SoldierChestThumpAlt" +{ + "channel" "CHAN_STATIC" + "volume" "0.25" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_chest_thump_alt.wav" +} + +"Taunt.SoldierChestThumpLow" +{ + "channel" "CHAN_STATIC" + "volume" "0.1" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_chest_thump.wav" +} + + +"Taunt.SoldierGrenadePull" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Taunt.SoldierShotgunFire" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/shotgun_shoot.wav" +} + +"Taunt.SoldierShotgunCockBack" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/shotgun_cock_back.wav" +} + +"Taunt.SoldierShotgunCockForward" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/shotgun_cock_forward.wav" +} + +"Taunt.SoldierSaluteSwish" +{ + "channel" "CHAN_BODY" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" "player/taunt_clothes_swipe2.wav" +} + +"Taunt.SoldierTaps" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")misc/taps_02.wav" +} + +"Taunt.Soldier02GrenadeCatch" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_grenade_catch.wav" +} + +"Taunt.Soldier02ClothesRustle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Soldier02ShovelCatch" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap.wav" +} + +"Taunt.Soldier03FootStomp" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Soldier03HelmetHit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_helmet_hit.wav" +} + +"Taunt.Soldier03ClothesSwipe" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_swipe.wav" +} + +"Taunt.Soldier03ClothesRustle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Soldier03HelmetJostle" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Selection.SoldierLauncherGrab" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_grenade_catch.wav" +} + +"Selection.SoldierClothesRustle" +{ + "channel" "CHAN_ITEM" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Selection.SoldierEquipment" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Selection.SoldierLauncherSetStart" +{ + "channel" "CHAN_STATIC" + "volume" ".55" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_gun2.wav" +} + +"Selection.SoldierLauncherHitGround" +{ + "channel" "CHAN_BODY" + "volume" ".25" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_launcher_hit.wav" +} + +"Selection.SoldierLauncherSetStop" +{ + "channel" "CHAN_STATIC" + "volume" ".55" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_gun1.wav" +} + +"Taunt.HeavyUpperCut" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_heavy_upper_cut.wav" +} + +"Taunt.HeavyBell" +{ + "channel" "CHAN_ITEM" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_bell.wav" +} + +"Taunt.Heavy01HoldGun" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_grenade_catch.wav" +} + +"Taunt.Heavy01HoldGunLight" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap2.wav" +} + +"Taunt.Heavy01ClothesRustle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Heavy01EquipmentGun" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_gun1.wav" +} + +"Taunt.Heavy01EquipmentGun2" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_gun2.wav" +} + +"Taunt.Heavy01EquipmentRustleHeavy" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle2.wav" +} + +"Taunt.Heavy02ShotgunSpin" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_shotgun_spin.wav" +} + + +"Taunt.Heavy02ShotgunGrab" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_hand_clap.wav" +} + +"Taunt.Heavy02EquipmentJingle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Taunt.Heavy03ClothesRustle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Heavy03ClothesSwipe" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_clothes_swipe.wav" +} + +"Taunt.Heavy03EquipmentJingle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Taunt.Heavy03EquipmentJingleShort" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_jingle3short.wav" +} + +"Selection.HeavyFootStomp" +{ + "channel" "CHAN_ITEM" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_foot_stomp.wav" +} + +"Selection.HeavyEquipment1" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_gun2.wav" +} + +"Selection.HeavyEquipment2" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_gun1.wav" +} + +"Selection.HeavyClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.Pyro01FootStomp" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.Pyro01Equipment1" +{ + "channel" "CHAN_STATIC" + "volume" ".20" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_gun2.wav" +} + +"Taunt.Pyro01Equipment2" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_equipment_gun1.wav" +} + +"Taunt.Pyro02Fire" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_fire.wav" +} + +"Taunt.Pyro03RockStar" +{ + "channel" "CHAN_VOICE" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_rockstar.wav" +} + +"Taunt.Pyro03RockStarEnd" +{ + "channel" "CHAN_VOICE" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_rockstar_end.wav" +} + +"Selection.PyroClothesRustle" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Selection.PyroEquipment1" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_jingle3.wav" +} + +"Selection.PyroEquipment2" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_equipment_jingle2.wav" +} + + +"Selection.PyroFootStomp" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_NONE" + "wave" "player/taunt_foot_stomp.wav" +} +"Taunt.PyroBalloonicorn" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_pyro_balloonicorn.wav" + +} +"Taunt.PyroHellicorn" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_75dB" + "wave" "player/taunt_pyro_hellicorn.wav" +} + + + +"Taunt.SpringRiderSit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_sit.wav" +} + +"Taunt.Taunt.SpringRiderSqueak1" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_squeak1.wav" +} + +"Taunt.Taunt.SpringRiderSqueak2" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_squeak2.wav" +} + +"Taunt.Taunt.SpringRiderSqueak3" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_squeak3.wav" +} + +"Taunt.Taunt.SpringRiderSqueak4" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_squeak4.wav" +} + +"Taunt.Taunt.SpringRiderSqueak5" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_squeak5.wav" +} + +"Taunt.Taunt.SpringRiderGetUp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/taunt_springrider_getup.wav" +} + +//----------------------------------------------------------------------------- +//End Taunts +//----------------------------------------------------------------------------- + +"Medic.AutoCallerAnnounce" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_86dBM" + "wave" ")ui/medic_alert.wav" +} + +"Halloween.CrazyLaugh" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/halloween/crazy01.wav" + "wave" "items/halloween/crazy02.wav" + "wave" "items/halloween/crazy03.wav" + } +} +"Halloween.BlackCat" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/halloween/cat01.wav" + "wave" "items/halloween/cat02.wav" + "wave" "items/halloween/cat03.wav" + } +} +"Halloween.Gremlin" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/halloween/gremlin01.wav" + "wave" "items/halloween/gremlin02.wav" + "wave" "items/halloween/gremlin03.wav" + } +} +"Halloween.Werewolf" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/halloween/werewolf01.wav" + "wave" "items/halloween/werewolf02.wav" + "wave" "items/halloween/werewolf03.wav" + } +} +"Halloween.Banshee" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "items/halloween/banshee01.wav" + "wave" "items/halloween/banshee02.wav" + "wave" "items/halloween/banshee03.wav" + } +} +"Halloween.SFX" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/halloween/spooky01.wav" + "wave" "items/halloween/spooky02.wav" + "wave" "items/halloween/spooky03.wav" + } +} +"Halloween.Stabby" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_90dB" + "wave" "items/halloween/stabby.wav" +} +"Halloween.Witch" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/halloween/witch01.wav" + "wave" "items/halloween/witch02.wav" + "wave" "items/halloween/witch03.wav" + } +} + +"Player.YouAreIt" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/halloween_boss_chosen_it.wav" +} + +"Player.TaggedOtherIT" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/halloween_boss_tagged_other_it.wav" +} + +"Player.IsNowIT" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + "wave" "ui/halloween_boss_player_becomes_it.wav" +} + +"Samurai.Exaltation" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "90, 110" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" ")items\samurai\TF_samurai_noisemaker_setA_01.wav" + "wave" ")items\samurai\TF_samurai_noisemaker_setA_02.wav" + "wave" ")items\samurai\TF_samurai_noisemaker_setA_03.wav" + } +} + +"Samurai.Koto" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" ")items\samurai\TF_samurai_noisemaker_setB_01.wav" + "wave" ")items\samurai\TF_samurai_noisemaker_setB_02.wav" + "wave" ")items\samurai\TF_samurai_noisemaker_setB_03.wav" + } +} + +"Samurai.Conch" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "wave" ")items\samurai\TF_conch.wav" +} + +"Fundraiser.Bell" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" ")items\japan_fundraiser\TF_zen_bell_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_bell_02.wav" + "wave" ")items\japan_fundraiser\TF_zen_bell_03.wav" + "wave" ")items\japan_fundraiser\TF_zen_bell_04.wav" + "wave" ")items\japan_fundraiser\TF_zen_bell_05.wav" + } +} + +"Fundraiser.Tingsha" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" ")items\japan_fundraiser\TF_zen_tingsha_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_tingsha_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_tingsha_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_tingsha_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_tingsha_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_tingsha_01.wav" + } +} + +"Fundraiser.PrayerBowl" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_130dB" + "rndwave" + { + "wave" ")items\japan_fundraiser\TF_zen_prayer_bowl_01.wav" + "wave" ")items\japan_fundraiser\TF_zen_prayer_bowl_02.wav" + "wave" ")items\japan_fundraiser\TF_zen_prayer_bowl_03.wav" + } +} + +"Summer.Fireworks" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "rndwave" + { + "wave" ")items/summer/summer_fireworks1.wav" + "wave" ")items/summer/summer_fireworks2.wav" + "wave" ")items/summer/summer_fireworks3.wav" + "wave" ")items/summer/summer_fireworks4.wav" + } +} + +"TFPlayer.HighFive" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "wave" ")misc\high_five.wav" +} + +"soccer.vuvezela" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" ")items\football_manager\vuvezela_01.wav" + "wave" ")items\football_manager\vuvezela_02.wav" + "wave" ")items\football_manager\vuvezela_03.wav" + "wave" ")items\football_manager\vuvezela_04.wav" + "wave" ")items\football_manager\vuvezela_05.wav" + "wave" ")items\football_manager\vuvezela_06.wav" + "wave" ")items\football_manager\vuvezela_07.wav" + "wave" ")items\football_manager\vuvezela_08.wav" + "wave" ")items\football_manager\vuvezela_09.wav" + "wave" ")items\football_manager\vuvezela_10.wav" + "wave" ")items\football_manager\vuvezela_11.wav" + "wave" ")items\football_manager\vuvezela_12.wav" + "wave" ")items\football_manager\vuvezela_13.wav" + "wave" ")items\football_manager\vuvezela_14.wav" + "wave" ")items\football_manager\vuvezela_15.wav" + "wave" ")items\football_manager\vuvezela_16.wav" + "wave" ")items\football_manager\vuvezela_17.wav" + } +} + +"halloween.wolf_01" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")misc\wolf_howl_01.wav" +} + +"halloween.wolf_02" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")misc\wolf_howl_02.wav" +} + +"halloween.wolf_03" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")misc\wolf_howl_03.wav" +} + +"xmas.jingle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_01.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_02.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_03.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_04.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_05.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_06.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_07.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_08.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_09.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_10.wav" + } +} + +"xmas.jingle_higher" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "115" + "rndwave" + { + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_11.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_12.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_13.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_14.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_15.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_16.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_17.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_18.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_19.wav" + "wave" ")player\sleigh_bells\tf_xmas_sleigh_bells_20.wav" + } +} + +"pyro.guitar_shred_01" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" "items\pyro_guitar_solo_no_verb.wav" +} + +"pyro.guitar_shred_02" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")items\pyro_guitar_solo_with_verb.wav" +} + +"xmas.jingle_noisemaker" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "100,105" + "rndwave" + { + "wave" "misc\jingle_bells\jingle_bells_nm_01.wav" + "wave" "misc\jingle_bells\jingle_bells_nm_02.wav" + "wave" "misc\jingle_bells\jingle_bells_nm_03.wav" + "wave" "misc\jingle_bells\jingle_bells_nm_04.wav" + "wave" "misc\jingle_bells\jingle_bells_nm_05.wav" + } +} + +"scout.boombox" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items\scout_boombox_02.wav" + "wave" "items\scout_boombox_03.wav" + "wave" "items\scout_boombox_04.wav" + "wave" "items\scout_boombox_05.wav" + } +} + +"BlastJump.Whistle" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "0.8" + "wave" "misc/grenade_jump_lp_01.wav" +} + +// ------------------------------------------------------------------------------------ // +// Ready Sounds +// ------------------------------------------------------------------------------------ // +"Demoman.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_Go01.mp3" + "wave" "vo/demoman_Go02.mp3" + "wave" "vo/demoman_Go03.mp3" + } +} + +"Engineer.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_mvm_ask_ready01.mp3" + "wave" "vo/engineer_mvm_ask_ready02.mp3" + "wave" "vo/engineer_mvm_say_ready01.mp3" + "wave" "vo/engineer_mvm_say_ready02.mp3" + } +} + +"Heavy.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_mvm_ask_ready01.mp3" + "wave" "vo/heavy_mvm_ask_ready02.mp3" + "wave" "vo/heavy_mvm_ask_ready03.mp3" + "wave" "vo/heavy_mvm_ask_ready04.mp3" + "wave" "vo/heavy_mvm_say_ready01.mp3" + "wave" "vo/heavy_mvm_say_ready02.mp3" + "wave" "vo/heavy_mvm_say_ready04.mp3" + } +} + +"Medic.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_mvm_ask_ready01.mp3" + "wave" "vo/medic_mvm_say_ready01.mp3" + "wave" "vo/medic_mvm_say_ready02.mp3" + } +} + +"Pyro.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Go01.mp3" +} + +"Scout.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_Go01.mp3" + "wave" "vo/scout_Go02.mp3" + "wave" "vo/scout_Go03.mp3" + } +} + +"Sniper.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_Go01.mp3" + "wave" "vo/sniper_Go02.mp3" + "wave" "vo/sniper_Go03.mp3" + } +} + +"Soldier.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_mvm_ask_ready01.mp3" + "wave" "vo/soldier_mvm_ask_ready02.mp3" + "wave" "vo/soldier_mvm_ask_ready03.mp3" + "wave" "vo/soldier_mvm_say_ready01.mp3" + "wave" "vo/soldier_mvm_say_ready02.mp3" + } +} + +"Spy.Ready" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_Go01.mp3" + "wave" "vo/spy_Go02.mp3" + "wave" "vo/spy_Go03.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// MvM Ready Sounds +// ------------------------------------------------------------------------------------ // +"Demoman.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_Go01.mp3" + "wave" "vo/demoman_Go02.mp3" + "wave" "vo/demoman_Go03.mp3" + } +} + +"Engineer.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_mvm_ask_ready01.mp3" + "wave" "vo/engineer_mvm_ask_ready02.mp3" + "wave" "vo/engineer_mvm_say_ready01.mp3" + "wave" "vo/engineer_mvm_say_ready02.mp3" + } +} + +"Heavy.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_mvm_ask_ready01.mp3" + "wave" "vo/heavy_mvm_ask_ready02.mp3" + "wave" "vo/heavy_mvm_ask_ready03.mp3" + "wave" "vo/heavy_mvm_ask_ready04.mp3" + "wave" "vo/heavy_mvm_say_ready01.mp3" + "wave" "vo/heavy_mvm_say_ready02.mp3" + "wave" "vo/heavy_mvm_say_ready03.mp3" + "wave" "vo/heavy_mvm_say_ready04.mp3" + "wave" "vo/heavy_mvm_say_ready05.mp3" + } +} + +"Medic.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_mvm_ask_ready01.mp3" + "wave" "vo/medic_mvm_say_ready01.mp3" + "wave" "vo/medic_mvm_say_ready02.mp3" + } +} + +"Pyro.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Go01.mp3" +} + +"Scout.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_Go01.mp3" + "wave" "vo/scout_Go02.mp3" + "wave" "vo/scout_Go03.mp3" + } +} + +"Sniper.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_Go01.mp3" + "wave" "vo/sniper_Go02.mp3" + "wave" "vo/sniper_Go03.mp3" + } +} + +"Soldier.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_mvm_ask_ready01.mp3" + "wave" "vo/soldier_mvm_ask_ready02.mp3" + "wave" "vo/soldier_mvm_ask_ready03.mp3" + "wave" "vo/soldier_mvm_say_ready01.mp3" + "wave" "vo/soldier_mvm_say_ready02.mp3" + } +} + +"Spy.ReadyMvM" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_Go01.mp3" + "wave" "vo/spy_Go02.mp3" + "wave" "vo/spy_Go03.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// Comp Ready Sounds +// ------------------------------------------------------------------------------------ // +"Demoman.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_Go01.mp3" + "wave" "vo/demoman_Go02.mp3" + "wave" "vo/demoman_Go03.mp3" + } +} + +"Engineer.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_mvm_ask_ready01.mp3" + "wave" "vo/engineer_mvm_ask_ready02.mp3" + "wave" "vo/engineer_mvm_say_ready01.mp3" + "wave" "vo/engineer_mvm_say_ready02.mp3" + } +} + +"Heavy.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_mvm_ask_ready01.mp3" + "wave" "vo/heavy_mvm_ask_ready02.mp3" + "wave" "vo/heavy_mvm_ask_ready03.mp3" + "wave" "vo/heavy_mvm_ask_ready04.mp3" + "wave" "vo/heavy_mvm_say_ready01.mp3" + "wave" "vo/heavy_mvm_say_ready02.mp3" + "wave" "vo/heavy_mvm_say_ready04.mp3" + } +} + +"Medic.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_mvm_ask_ready01.mp3" + "wave" "vo/medic_mvm_say_ready01.mp3" + "wave" "vo/medic_mvm_say_ready02.mp3" + } +} + +"Pyro.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Go01.mp3" +} + +"Scout.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_Go01.mp3" + "wave" "vo/scout_Go02.mp3" + "wave" "vo/scout_Go03.mp3" + } +} + +"Sniper.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_Go01.mp3" + "wave" "vo/sniper_Go02.mp3" + "wave" "vo/sniper_Go03.mp3" + } +} + +"Soldier.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_mvm_ask_ready01.mp3" + "wave" "vo/soldier_mvm_ask_ready02.mp3" + "wave" "vo/soldier_mvm_ask_ready03.mp3" + "wave" "vo/soldier_mvm_say_ready01.mp3" + "wave" "vo/soldier_mvm_say_ready02.mp3" + } +} + +"Spy.ReadyComp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_Go01.mp3" + "wave" "vo/spy_Go02.mp3" + "wave" "vo/spy_Go03.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// +// ------------------------------------------------------------------------------------ // + +"pyro.music_backpack" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "wave" ")items/pyro_music_tube.wav" +} + +"Taunt.PyroAnnihilator" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "soundlevel" "SNDLVL_75dB" + "wave" "player/sign_bass_solo.wav" +} + +// ------------------------------------------------------------------------------------ // +// Halloween 2012 +// ------------------------------------------------------------------------------------ // + +"Player.bomb_attach" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_bomb_attach.wav" +} + +"Player.bomb_fuse" +{ + "channel" "CHAN_STATIC" + "volume" "0.5" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_bomb_fuse.wav" +} + +"Player.bomb_flash" +{ + "channel" "CHAN_STATIC" + "volume" "0.2" + "pitch" "PITCH_NORM" + "wave" "misc/halloween/hwn_bomb_flash.wav" +} + +// ------------------------------------------------------------------------------------ // +// SFX for new taunt update 2014 +// ------------------------------------------------------------------------------------ // + +"Player.taunt_flipFX" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "PITCH_NORM" + "wave" "player/taunt_sfx_flip_01.wav" +} + +"taunt.single_bell" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "PITCH_NORM" + "wave" "player/taunt_sfx_bell_single.wav" +} + +"taunt.dbl_bell" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "PITCH_NORM" + "wave" "player/taunt_bell.wav" +} + +"taunt.hawk" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "pitch" "PITCH_NORM" + "wave" "player/sniper_taunt_hawk.wav" +} + +"taunt.broomfly" +{ + "channel" "CHAN_BODY" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "player/taunt_broom_fly.wav" +} + +"taunt.broomflyfade" +{ + "channel" "CHAN_BODY" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "player/taunt_broom_fly_fade.wav" +} + +"taunt.disco" +{ + "channel" "CHAN_BODY" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "player/taunt_disco.wav" +} + +"Taunt.BumperCarSpawn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")player/taunt_bumper_car_spawn.wav" +} + +"Taunt.BumperCarGoLoop" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")player/taunt_bumper_car_go_loop.wav" +} + +"Taunt.BumperCarHorn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")player/taunt_bumper_car_horn.wav" +} + +"Taunt.BumperCarQuit" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")player/taunt_bumper_car_quit.wav" +} + +"Taunt.secondrate_sorcery_spell_fail" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_sorcery_fail.wav" +} + +"Taunt.secondrate_sorcery_spell_staff_drop" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_sorcery_staff_drop.wav" +} + +"Taunt.secondrate_sorcery_spell_fail_staff_break" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_sorcery_staff_break.wav" +} + +"Taunt.Party_Trick" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_party_trick.wav" +} + +"Taunt.Party_Trick_Pyro_Vision" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_party_trick_pyro_vision.wav" +} + +"Player.FallDamageIndicator" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/fall_damage_indicator.wav" +} + +"Player.FallDamageDealt" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/fall_damage_dealt.wav" +} + +"Taunt.TableFlipBubblyPotWater" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_table_flip_bubbly_pot_water.wav" +} + +"Taunt.TableFlipNotification" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_table_flip_notification.wav" +} + +"Taunt.TableFlipFlippingTable" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_table_flip_flipping_table.wav" +} + +"Taunt.DidgeridooStart" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_68dB" + + "wave" ")player/taunt_didgeridoo_start.wav" +} + +"Taunt.DidgeridooStop" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_68dB" + + "wave" ")player/taunt_didgeridoo_stop.wav" +} + +"Taunt.DidgeridooSitDown" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_68dB" + + "wave" ")player/taunt_didgeridoo_sit_down.wav" +} + +"Taunt.DidgeridooStandUp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_68dB" + + "wave" ")player/taunt_didgeridoo_stand_up.wav" +} + +"Taunt.DemoStaggerSlosh1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_demo_stagger_slosh1.wav" +} + +"Taunt.DemoStaggerSlosh2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_demo_stagger_slosh2.wav" +} + +"Taunt.DemoStaggerSlosh3" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_demo_stagger_slosh3.wav" +} + +"Taunt.DemoStaggerSlosh4" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_demo_stagger_slosh4.wav" +} + +"Taunt.GasBlast" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_gas_blast.wav" +} + +"Taunt.GasBlastPyrovision" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_gas_blast_pyrovision.wav" +} + +"Taunt.TankForward" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_forward.wav" +} + +"Taunt.TankIdle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_idle.wav" +} + +"Taunt.TankReverse" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_reverse.wav" +} + +"Taunt.TankShoot" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_shoot.wav" +} + +"Taunt.TankEnd" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_end.wav" +} + +"Taunt.TankEndEngineStop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_end_engine_stop.wav" +} + +"Taunt.TankStartClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_tank_start_clothes_rustle.wav" +} + +"Taunt.TankHeelClick" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_tank_heel_click.wav" +} + +"Taunt.TankDrop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_tank_drop.wav" +} + +"Taunt.TankAppear" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_tank_appear.wav" +} + +"Taunt.RunnersRhythmBongoSlide" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_runners_rhythm_bongo_slide.wav" +} + +"Taunt.SkatingScorcherStride" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_skating_scorcher_stride1.wav" + "wave" ")player/taunt_skating_scorcher_stride2.wav" + "wave" ")player/taunt_skating_scorcher_stride3.wav" + "wave" ")player/taunt_skating_scorcher_stride4.wav" + "wave" ")player/taunt_skating_scorcher_stride5.wav" + "wave" ")player/taunt_skating_scorcher_stride6.wav" + "wave" ")player/taunt_skating_scorcher_stride7.wav" + "wave" ")player/taunt_skating_scorcher_stride8.wav" + "wave" ")player/taunt_skating_scorcher_stride9.wav" + } +} + +"Taunt.SkatingScorcherLand" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_skating_scorcher_land.wav" + +} + +"Taunt.BunnyHopperHop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_bunnyhopper_hop1.wav" + "wave" ")player/taunt_bunnyhopper_hop2.wav" + "wave" ")player/taunt_bunnyhopper_hop3.wav" + "wave" ")player/taunt_bunnyhopper_hop4.wav" + "wave" ")player/taunt_bunnyhopper_hop5.wav" + "wave" ")player/taunt_bunnyhopper_hop6.wav" + "wave" ")player/taunt_bunnyhopper_hop7.wav" + } +} + +"Taunt.BunnyHopperCatch" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_bunnyhopper_catch.wav" + +} + +"Taunt.BunnyHopperStep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "pitch" "100,110" + + "wave" "player/taunt_bunnyhopper_step.wav" + +} + +"Taunt.BunnyHopperDiscard" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_bunnyhopper_discard.wav" +} + +"Taunt.MopedStartHandleGrab" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_start_handle_grab.wav" +} + +"Taunt.MopedStartShake" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_start_shake.wav" +} + +"Taunt.MopedStartLand" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_start_land.wav" +} + +"Taunt.MopedStartSwoosh1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_start_swoosh1.wav" +} + +"Taunt.MopedStartSwoosh2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_start_swoosh2.wav" +} + +"Taunt.MopedForward" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_forward.wav" +} + +"Taunt.MopedEndEngineOff" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_end_engine_off.wav" +} + +"Taunt.MopedEndScoutFoot1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_end_scout_foot1.wav" +} + +"Taunt.MopedEndScoutFoot2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_end_scout_foot2.wav" +} + +"Taunt.MopedEndShake" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_end_shake.wav" +} + +"Taunt.MopedWheelieEngineRev" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_wheelie_engine_rev.wav" +} + +"Taunt.MopedWheelieLand1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_wheelie_land1.wav" +} + +"Taunt.MopedWheelieLand2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_moped_wheelie_land2.wav" +} + + +"Taunt.LuxuryLoungeChairAppear" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_chair_appear.wav" +} + +"Taunt.LuxuryLoungeChairLand" +{ + "channel" "CHAN_STATIC" + "volume" ".4" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_chair_land.wav" +} + +"Taunt.LuxuryLoungeChairCreak" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_chair_creak.wav" +} + +"Taunt.LuxuryLoungeSit" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_sit.wav" +} + +"Taunt.LuxuryLoungeGetUp" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_get_up.wav" +} + +"Taunt.LuxuryLoungeBookOpen" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_book_open.wav" +} + +"Taunt.LuxuryLoungeBookClose" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_book_close.wav" +} + +"Taunt.LuxuryLoungeBookPageTurn" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_book_page_turn.wav" +} + +"Taunt.LuxuryLoungeSip" +{ + "channel" "CHAN_VOICE" + "volume" ".75" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_luxury_lounge_sip.wav" +} + +"Taunt.SurgeonsSqueezeboxMusic" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_surgeons_squeezebox_music.wav" +} + +"Taunt.SurgeonsSqueezeboxDrawClothes" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_surgeons_squeezebox_draw_clothes.wav" +} + +"Taunt.SurgeonsSqueezeboxDrawAccordion" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_surgeons_squeezebox_draw_accordion.wav" +} + +"Taunt.SurgeonsSqueezeboxStep" +{ + "channel" "CHAN_STATIC" + "volume" ".2" + "pitch" "90,110" + + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_surgeons_squeezebox_step1.wav" + "wave" ")player/taunt_surgeons_squeezebox_step2.wav" + } +} + +"Taunt.SovietStrongArmRoll" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_soviet_strongarm_roll.wav" +} + +"Taunt.SovietStrongArmCatch" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_soviet_strongarm_roll_catch.wav" +} + +"Taunt.SovietStrongArmRep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_soviet_strongarm_rep1.wav" + "wave" ")player/taunt_soviet_strongarm_rep2.wav" + "wave" ")player/taunt_soviet_strongarm_rep3.wav" + "wave" ")player/taunt_soviet_strongarm_rep4.wav" + } +} + +"Taunt.SovietStrongArmRepLight" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_soviet_strongarm_rep_light1.wav" + "wave" ")player/taunt_soviet_strongarm_rep_light2.wav" + "wave" ")player/taunt_soviet_strongarm_rep_light3.wav" + "wave" ")player/taunt_soviet_strongarm_rep_light4.wav" + } +} + +"Taunt.SovietStrongArmRepStretch" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_soviet_strongarm_rep_stretch.wav" +} + +"Taunt.SovietStrongArmRepStretchDone" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_soviet_strongarm_rep_stretch_done.wav" +} + +"Taunt.SovietStrongArmDrop1" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_soviet_strongarm_drop1.wav" +} + +"Taunt.SovietStrongArmDrop2" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_soviet_strongarm_drop2.wav" +} + +"Taunt.MediumClap" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "95,105" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_medium_clap1.wav" + "wave" ")player/taunt_medium_clap2.wav" + "wave" ")player/taunt_medium_clap3.wav" + "wave" ")player/taunt_medium_clap4.wav" + } +} + +"Taunt.PyroTwirl" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_pyro_twirl.wav" +} + +"Taunt.YetiAppearSnow" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_94dB" + + "wave" ")player/taunt_yeti_appear_snow.wav" +} + +"Taunt.YetiLand" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_110dB" + + "wave" ")player/taunt_yeti_land.wav" +} + +"Taunt.YetiRoarBeginning" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_110dB" + + "wave" ")player/taunt_yeti_roar_beginning.wav" +} + +"Taunt.YetiRoarFirst" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_110dB" + + "wave" ")player/taunt_yeti_roar_first.wav" +} + +"Taunt.YetiRoarSecond" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_110dB" + + "wave" ")player/taunt_yeti_roar_second.wav" +} + +"Taunt.YetiChestHit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_yeti_chest_hit1.wav" + "wave" ")player/taunt_yeti_chest_hit2.wav" + "wave" ")player/taunt_yeti_chest_hit3.wav" + "wave" ")player/taunt_yeti_chest_hit4.wav" + "wave" ")player/taunt_yeti_chest_hit5.wav" + "wave" ")player/taunt_yeti_chest_hit6.wav" + "wave" ")player/taunt_yeti_chest_hit7.wav" + "wave" ")player/taunt_yeti_chest_hit8.wav" + "wave" ")player/taunt_yeti_chest_hit9.wav" + } +} + +"Taunt.YetiGroundPound" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_110dB" + + "wave" ")player/taunt_yeti_ground_pound.wav" +} + +"Taunt.YetiStandeeSniperHands1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_sniper_hands1.wav" +} + +"Taunt.YetiStandeeSniperHands2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_sniper_hands2.wav" +} + +"Taunt.YetiStandeeSniperHands3" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_sniper_hands3.wav" +} + +"Taunt.YetiStandeeSniperHands4" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_sniper_hands4.wav" +} + +"Taunt.YetiStandeeSniperHands" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" ")player/taunt_yeti_standee_sniper_hands1.wav" + "wave" ")player/taunt_yeti_standee_sniper_hands2.wav" + "wave" ")player/taunt_yeti_standee_sniper_hands3.wav" + "wave" ")player/taunt_yeti_standee_sniper_hands4.wav" + } +} + +"Taunt.YetiStandeeBreak" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_break.wav" +} + +"Taunt.YetiStandeeSpeakerGrowl" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_speaker_growl.wav" +} + +"Taunt.YetiStandeeSpeakerGrowlBroken" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_speaker_growl_broken.wav" +} + +"Taunt.YetiStandeeSwoosh" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_swoosh.wav" +} + +"Taunt.YetiStandeeLand" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_land.wav" +} + +"Taunt.YetiStandeeLand2" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_land2.wav" +} + +"Taunt.YetiStandeeScoutStep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "100,110" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.YetiStandeeScoutEquipmentJingle" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "rndwave" + { + "wave" "player/taunt_yeti_standee_equipment_jingle.wav" + "wave" "player/taunt_yeti_standee_equipment_jingle2.wav" + "wave" "player/taunt_yeti_standee_equipment_jingle3.wav" + "wave" "player/taunt_yeti_standee_equipment_jingle4.wav" + } +} + +"Taunt.YetiStandeeScoutSwing" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_scout_swing.wav" +} + +"Taunt.YetiStandeeScoutHit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "wave" ")player/taunt_yeti_standee_scout_hit.wav" +} + +"Taunt.YetiStandeeDemoStep" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + + "rndwave" + { + "wave" "player/taunt_yeti_standee_demo_step1.wav" + "wave" "player/taunt_yeti_standee_demo_step2.wav" + "wave" "player/taunt_yeti_standee_demo_step3.wav" + "wave" "player/taunt_yeti_standee_demo_step4.wav" + } +} + +"Taunt.YetiStandeeDemoSwing" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_demo_swing.wav" +} + + +"Taunt.YetiStandeeDemoEquipmentJingle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_yeti_standee_demo_equipment_jingle.wav" +} + +"Taunt.YetiStandeeDemoClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_yeti_standee_demo_clothes_rustle.wav" +} + +"Taunt.YetiStandeeHeavyClap" +{ + "channel" "CHAN_STATIC" + "volume" ".8" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" "player/taunt_yeti_standee_heavy_clap.wav" +} + +"Taunt.YetiStandeeLandHeavy" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_land.wav" +} + +"Taunt.YetiStandeeHeavyStep" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "pitch" "90,100" + + "rndwave" + { + "wave" "player/taunt_yeti_standee_heavy_step1.wav" + "wave" "player/taunt_yeti_standee_heavy_step2.wav" + "wave" "player/taunt_yeti_standee_heavy_step3.wav" + "wave" "player/taunt_yeti_standee_heavy_step4.wav" + } +} + +"Taunt.YetiStandeeHeavyEquipment" +{ + "channel" "CHAN_STATIC" + "volume" ".3" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_heavy_equipment.wav" +} + +"Taunt.YetiStandeeHeavyEquipmentLight1" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_heavy_equipment_light1.wav" +} + +"Taunt.YetiStandeeHeavyEquipmentLight2" +{ + "channel" "CHAN_STATIC" + "volume" ".65" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + + "wave" ")player/taunt_yeti_standee_heavy_equipment_light2.wav" +} + +"Taunt.YetiStandeeSpyStep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/taunt_foot_stomp.wav" +} + +"Taunt.YetiStandeeSpySwing1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_spy_swing1.wav" +} + +"Taunt.YetiStandeeSpySwing2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_spy_swing2.wav" +} + +"Taunt.YetiStandeeSpySwing" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_spy_swing.wav" +} + +"Taunt.YetiStandeeSpyClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_spy_clothes_rustle.wav" +} + +"Taunt.YetiStandeeMedicSwing1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_medic_swing1.wav" +} + +"Taunt.YetiStandeeMedicSwing2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_medic_swing2.wav" +} + +"Taunt.YetiStandeeMedicStep" +{ + "channel" "CHAN_STATIC" + "volume" ".7" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/taunt_yeti_standee_medic_step.wav" +} + +"Taunt.YetiStandeeMedicClothesRustleSwing" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_medic_clothes_rustle_swing.wav" +} + +"Taunt.YetiStandeeMedicGloveStretch" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_medic_glove_stretch.wav" +} + +"Taunt.YetiStandeeMedicGloveSnap" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_medic_glove_snap.wav" +} + +"Taunt.YetiStandeePyroSwing1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_pyro_swing1.wav" +} + +"Taunt.YetiStandeePyroStep" +{ + "channel" "CHAN_STATIC" + "volume" ".7" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/taunt_yeti_standee_pyro_step.wav" +} + +"Taunt.YetiStandeePyroEquipment" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_pyro_equipment.wav" +} + +"Taunt.YetiStandeePyroClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_pyro_clothes_rustle.wav" +} + +"Taunt.YetiStandeeEngineerHopStep" +{ + "channel" "CHAN_STATIC" + "volume" ".7" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_engineer_step.wav" +} + +"Taunt.YetiStandeeEngineerDanceStep" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "rndwave" + { + "wave" "player/taunt_yeti_standee_engineer_step_dance1.wav" + "wave" "player/taunt_yeti_standee_engineer_step_dance2.wav" + "wave" "player/taunt_yeti_standee_engineer_step_dance3.wav" + "wave" "player/taunt_yeti_standee_engineer_step_dance4.wav" + } +} + +"Taunt.YetiStandeeEngineerBootSlap" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_74dB" + "wave" ")player/taunt_yeti_standee_engineer_boot_slap.wav" + +} + + +"Taunt.YetiStandeeEngineerKick" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_yeti_standee_engineer_kick.wav" +} + +"Taunt.YetiStandeeEngineerEquipment" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_engineer_equipment.wav" +} + +"Taunt.YetiStandeeEngineerClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_engineer_clothes_rustle.wav" +} + +"Taunt.YetiStandeeEngineerMusic" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "wave" ")player/taunt_yeti_standee_engineer_music.wav" + +} + +"Taunt.YetiStandeeSniperStep" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_sniper_step.wav" +} + +"Taunt.YetiStandeeSniperClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_sniper_clothes_rustle.wav" +} + +"Taunt.YetiStandeeSoldierStep" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/taunt_yeti_standee_soldier_step1.wav" + "wave" "player/taunt_yeti_standee_soldier_step2.wav" + "wave" "player/taunt_yeti_standee_soldier_step3.wav" + "wave" "player/taunt_yeti_standee_soldier_step4.wav" + } +} + +"Taunt.YetiStandeeSoldierEquipment" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_soldier_equipment.wav" +} + +"Taunt.YetiStandeeSoldierEquipmentLight" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_soldier_equipment.wav" +} + +"Taunt.YetiStandeeSoldierClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_soldier_clothes_rustle.wav" +} + +"Taunt.YetiStandeeSoldierClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_soldier_clothes_rustle_light.wav" +} + +"Taunt.YetiStandeeSoldierStandeeGrab" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_yeti_standee_soldier_standee_grab.wav" +} + +"PDA.SoldierDrop1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_soldier_drop1.wav" +} + +"PDA.SoldierDrop2" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_soldier_drop2.wav" +} + +"PDA.SoldierEquipment" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment.wav" +} + +"PDA.SoldierClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.SoldierClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle.wav" +} + +"PDA.SoldierGrab" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.SoldierShake" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_shake.wav" +} + +"PDA.SoldierHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster_light.wav" +} + +"PDA.MedicClothesRustleLong" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_long.wav" +} + +"PDA.MedicClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.Swipe" +{ + "channel" "CHAN_STATIC" + "volume" ".3" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_swipe.wav" +} + +"PDA.MedicGrab" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.MedicGrabLight" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.MedicHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster_light.wav" +} + + +"PDA.HeavyEquipment" + +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment.wav" +} + +"PDA.HeavyGrabLight" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.HeavyClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.HeavyDraw" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_draw.wav" +} + +"PDA.HeavyBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_beep2.wav" + "wave" ")player/cyoa_pda_beep3.wav" + "wave" ")player/cyoa_pda_beep4.wav" + "wave" ")player/cyoa_pda_beep5.wav" + "wave" ")player/cyoa_pda_beep6.wav" + "wave" ")player/cyoa_pda_beep7.wav" + "wave" ")player/cyoa_pda_beep8.wav" + } +} + +"PDA.HeavyGrab" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.HeavySpin" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_spin.wav" +} + +"PDA.HeavyHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.EngineerEquipment" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment.wav" +} + +"PDA.EngineerClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.EngineerUnHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_unholster.wav" +} + +"PDA.EngineerGrab" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.EngineerEquipmentLight" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment_light.wav" +} + +"PDA.EngineerHit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.EngineerHitEquipment" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment_light.wav" +} + +"PDA.EngineerHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.EngineerGrabLight" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "95,105" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.SniperGrabLight" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.SniperClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.SniperEquipmentLight" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment_light.wav" +} + +"PDA.SniperClothesRustle" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle.wav" +} + +"PDA.SniperBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_beep2.wav" + "wave" ")player/cyoa_pda_beep3.wav" + "wave" ")player/cyoa_pda_beep4.wav" + "wave" ")player/cyoa_pda_beep5.wav" + "wave" ")player/cyoa_pda_beep6.wav" + "wave" ")player/cyoa_pda_beep7.wav" + "wave" ")player/cyoa_pda_beep8.wav" + } +} + +"PDA.SniperSpin" +{ + "channel" "CHAN_STATIC" + "volume" ".1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_spin.wav" +} + +"PDA.SniperHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.PyroClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.PyroEquipmentLight" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment_light.wav" +} + +"PDA.PyroSpin" +{ + "channel" "CHAN_STATIC" + "volume" ".2" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_spin.wav" +} + +"PDA.PyroGrab" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.PyroBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_beep2.wav" + "wave" ")player/cyoa_pda_beep3.wav" + "wave" ")player/cyoa_pda_beep4.wav" + "wave" ")player/cyoa_pda_beep5.wav" + "wave" ")player/cyoa_pda_beep6.wav" + "wave" ")player/cyoa_pda_beep7.wav" + "wave" ")player/cyoa_pda_beep8.wav" + } +} + +"PDA.PyroHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.SpyGrabLight" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.SpyGrab" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.SpyClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.SpySpin" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_spin.wav" +} + +"PDA.SpyBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_beep2.wav" + "wave" ")player/cyoa_pda_beep3.wav" + "wave" ")player/cyoa_pda_beep4.wav" + "wave" ")player/cyoa_pda_beep5.wav" + "wave" ")player/cyoa_pda_beep6.wav" + "wave" ")player/cyoa_pda_beep7.wav" + "wave" ")player/cyoa_pda_beep8.wav" + } +} + +"PDA.SpyDial" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_dial1.wav" + "wave" ")player/cyoa_pda_dial2.wav" + "wave" ")player/cyoa_pda_dial3.wav" + "wave" ")player/cyoa_pda_dial4.wav" + "wave" ")player/cyoa_pda_dial5.wav" + } +} + +"PDA.SpyHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.DemoHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.DemoClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.DemoEquipment" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_equipment.wav" +} + +"PDA.DemoFlySwoosh" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_fly_swoosh.wav" +} + +"PDA.DemoGrab" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.DemoBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_beep2.wav" + "wave" ")player/cyoa_pda_beep3.wav" + "wave" ")player/cyoa_pda_beep4.wav" + "wave" ")player/cyoa_pda_beep5.wav" + "wave" ")player/cyoa_pda_beep6.wav" + "wave" ")player/cyoa_pda_beep7.wav" + "wave" ")player/cyoa_pda_beep8.wav" + } +} + +"PDA.DemoClothesRustleLightItch" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.ScoutGrab" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_grab.wav" +} + +"PDA.ScoutHolster" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/cyoa_pda_holster.wav" +} + +"PDA.ScoutClothesRustleLight" +{ + "channel" "CHAN_STATIC" + "volume" ".45" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/cyoa_pda_clothes_rustle_light.wav" +} + +"PDA.ScoutBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".15" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")player/cyoa_pda_beep2.wav" + "wave" ")player/cyoa_pda_beep3.wav" + "wave" ")player/cyoa_pda_beep4.wav" + "wave" ")player/cyoa_pda_beep5.wav" + "wave" ")player/cyoa_pda_beep6.wav" + "wave" ")player/cyoa_pda_beep7.wav" + "wave" ")player/cyoa_pda_beep8.wav" + } +} + +"Taunt.BumpkinsBanjoSitEquipment" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_equipment_gun1.wav" +} + +"Taunt.BumpkinsBanjoSitClothes" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" "player/taunt_clothes_rustle.wav" +} + +"Taunt.BumpkinsBanjoMusic" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_bumpkins_banjo_music.wav" +} + +"Taunt.BumpkinsBanjoMusicFast" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_bumpkins_banjo_music_fast.wav" +} + +"Taunt.BumpkinsBanjoMusicStop" +{ + "channel" "CHAN_BODY" + "volume" ".85" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + "wave" ")player/taunt_bumpkins_banjo_music_stop.wav" +} + +"Taunt.RocketHoverStart" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_rocket_hover_start.wav" +} + +"Taunt.RocketHoverLoop" +{ + "channel" "CHAN_BODY" + "volume" ".35" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_rocket_hover_loop.wav" +} + +"Taunt.RocketHoverStop" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_rocket_hover_stop.wav" +} + +"Taunt.RocketHoverStopThruster" +{ + "channel" "CHAN_BODY" + "volume" ".35" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" ")player/taunt_rocket_hover_stop_thruster.wav" +} + +"Croc.SwimBurst" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_115dB" + + "wave" ")ambient/lair/crocs_swim_burst.wav" +} + +"Crocs.Growl" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_88dB" + + "rndwave" + { + "wave" ")ambient_mp3/lair/crocs_growl1.mp3" + //"wave" ")ambient_mp3/lair/crocs_growl2.mp3" + //"wave" ")ambient_mp3/lair/crocs_growl3.mp3" + //"wave" ")ambient_mp3/lair/crocs_growl4.mp3" + "wave" ")ambient_mp3/lair/crocs_growl5.mp3" + "wave" "common/null.wav" + } +} + +"Crocs.Hiss" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" ")ambient_mp3/lair/crocs_hiss1.mp3" + //"wave" ")ambient_mp3/lair/crocs_hiss2.mp3" + "wave" ")ambient_mp3/lair/crocs_hiss3.mp3" + //"wave" ")ambient_mp3/lair/crocs_hiss4.mp3" + "wave" "common/null.wav" + } +} + +"Crocs.JumpOut" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_88dB" + + "wave" ")ambient/lair/crocs_jump_out.wav" +} + +"Crocs.JumpIn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_88dB" + + "wave" ")ambient/lair/crocs_jump_in.wav" +} + +"Crocs.JumpBite" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_88dB" + + "wave" ")ambient/lair/crocs_jump_bite.wav" +} diff --git a/gamemodes/tf/gamemode/contents/game_sounds_taunt_workshop.lua b/gamemodes/tf/gamemode/contents/game_sounds_taunt_workshop.lua new file mode 100644 index 000000000..31c2c0dbf --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_taunt_workshop.lua @@ -0,0 +1,3245 @@ +// SCOUT BOSTON BREAKDANCE TAUNT +"scout.boston_breakdance_music" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items\taunts\scout_boston_breakdance\scout_boston_breakdance_02.mp3" + "wave" "items\taunts\scout_boston_breakdance\scout_boston_breakdance_03.mp3" + "wave" "items\taunts\scout_boston_breakdance\scout_boston_breakdance_04.mp3" + "wave" "items\taunts\scout_boston_breakdance\scout_boston_breakdance_05.mp3" + } +} + +"scout_taunt_boston_breakdance" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_conga_fun_11.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_17.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_19.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_21.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_12.mp3" + } +} + +"scout_taunt_boston_breakdance_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_triplejump04.mp3" + "wave" "vo/scout_positivevocalization05.mp3" + "wave" "vo/scout_positivevocalization04.mp3" + "wave" "vo/scout_positivevocalization02.mp3" + "wave" "vo/scout_invincible01.mp3" + "wave" "vo/scout_goodjob02.mp3" + "wave" "vo/scout_domination02.mp3" + "wave" "vo/scout_cheers03.mp3" + "wave" "vo/scout_cheers06.mp3" + "wave" "vo/scout_cheers04.mp3" + "wave" "vo/scout_dominationpyr01.mp3" + } +} + +// SNIPER KILLER SOLO TAUNT +"sniper.killer_solo_music" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items\taunts\killer_solo\killer_solo_01.mp3" + "wave" "items\taunts\killer_solo\killer_solo_02.mp3" + "wave" "items\taunts\killer_solo\killer_solo_03.mp3" + "wave" "items\taunts\killer_solo\killer_solo_04.mp3" + "wave" "items\taunts\killer_solo\killer_solo_05.mp3" + } +} + +// SNIPER MOST WANTED TAUNT +"SNIPER_most_wanted_laughs" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/sniper_laughevil01.mp3" + "wave" "vo/sniper_laughevil02.mp3" + "wave" "vo/sniper_laughhappy01.mp3" + "wave" "vo/sniper_laughhappy02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_03.mp3" + } +} +"SNIPER_most_wanted_VO" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_admire_12.mp3" + "wave" "vo/sniper_mvm_loot_common04.mp3" + "wave" "vo/sniper_mvm_loot_common05.mp3" + "wave" "vo/sniper_positivevocalization06.mp3" + "wave" "vo/sniper_positivevocalization09.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_kill_26.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_kill_29.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_kill_30.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_07.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_08.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_11.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_15.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_16.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_17.mp3" + "wave" "vo/taunts/sniper/sniper_trade_05.mp3" + "wave" "vo/taunts/sniper/sniper_trade_13.mp3" + } +} + +"spy_taunt_boxtrot_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/spy_laughshort01.mp3" + "wave" "vo/spy_laughshort02.mp3" + "wave" "vo/spy_laughshort03.mp3" + "wave" "vo/spy_laughshort04.mp3" + "wave" "vo/spy_laughshort05.mp3" + "wave" "vo/spy_laughshort06.mp3" + } +} + +"spy_taunt_boxtrot_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_exert_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_13.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_15.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_16.mp3" + } +} + +"spy_taunt_art_of_war" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/spy_mvm_loot_rare01.mp3" + "wave" "vo/spy_mvm_loot_rare02.mp3" + "wave" "vo/spy_mvm_loot_rare03.mp3" + "wave" "vo/spy_mvm_loot_godlike02.mp3" + } +} + +////////////////////////////////////////////////////////////////////////////// +//Taunt - Burstchester All Class +////////////////////////////////////////////////////////////////////////////// + +"taunt_burstchester_screams" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "weapons/breadmonster/sapper/bm_sapper_scream_01.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_scream_02.wav" + } +} + +"taunt_burstchester_screams_short" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_growl_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_growl_02.wav" + } +} + +"taunt_burstchester_screams_happy_01" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_02.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_03.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_04.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_05.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_06.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_07.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_08.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_09.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_10.wav" + } +} + +"taunt_burstchester_screams_happy_02" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_growl_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_growl_02.wav" + } +} + + +"taunt_burstchester_snaps" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_01.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_02.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_03.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_04.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_05.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_06.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_07.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_08.wav" + } +} + + +"taunt_burstchester_demo" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_trade_02.mp3" + "wave" "vo/taunts/demo/demoman_laughhappy02.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_point_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_point_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_point_06.mp3" + } +} + +"taunt_burstchester_engineer_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_jeers04.mp3" + "wave" "vo/engineer_positivevocalization01.mp3" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_25.mp3" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_29.mp3" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_29.mp3" + } +} + +"taunt_burstchester_engineer_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_head_end_07.mp3" + "wave" "vo/engineer_painsharp06.mp3" + "wave" "vo/engineer_painsharp04.mp3" + } +} + +"taunt_burstchester_engineer_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_painsharp08.mp3" + "wave" "vo/engineer_painsharp07.mp3" + "wave" "vo/engineer_painsharp08.mp3" + "wave" "vo/engineer_painsharp02.mp3" + "wave" "vo/engineer_painsharp01.mp3" + } +} + +"taunt_burstchester_heavy_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_domination02.mp3" + "wave" "vo/heavy_domination12.mp3" + "wave" "vo/heavy_domination12.mp3" + "wave" "vo/heavy_domination18.mp3" + "wave" "vo/heavy_meleedare05.mp3" + "wave" "vo/heavy_meleedare06.mp3" + "wave" "vo/heavy_meleedare07.mp3" + "wave" "vo/heavy_meleedare07.mp3" + "wave" "vo/taunts/heavy/heavy_trade_06.mp3" + "wave" "vo/taunts/heavy/heavy_trade_03.mp3" + "wave" "vo/heavy_sf12_badmagic04.mp3" + "wave" "vo/heavy_sf12_badmagic08.mp3" + } +} + +"taunt_burstchester_heavy_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_mvm_close_call01.mp3" + "wave" "vo/heavy_revenge02.mp3" + "wave" "vo/heavy_revenge15.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_17.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_19.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_rps_lose_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_19.mp3" + } +} + +"taunt_burstchester_heavy_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_painsharp01.mp3" + "wave" "vo/heavy_painsharp02.mp3" + "wave" "vo/heavy_painsharp03.mp3" + "wave" "vo/heavy_painsharp04.mp3" + "wave" "vo/heavy_painsharp05.mp3" + } +} + +"taunt_burstchester_Medic_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_end_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_13.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_06.mp3" + "wave" "vo/medic_sf12_badmagic03.mp3" + "wave" "vo/medic_sf12_badmagic02.mp3" + "wave" "vo/medic_sf12_badmagic05.mp3" + "wave" "vo/medic_sf12_badmagic06.mp3" + "wave" "vo/medic_sf12_badmagic09.mp3" + "wave" "vo/medic_sf12_badmagic10.mp3" + "wave" "vo/medic_sf12_badmagic12.mp3" + "wave" "vo/medic_sf13_influx_small02.mp3" + } +} + +"taunt_burstchester_Medic_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/medic_painsharp02.mp3" + "wave" "vo/medic_painsharp03.mp3" + "wave" "vo/medic_negativevocalization05.mp3" + } +} + +"taunt_burstchester_Medic_pain_big" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/medic_painsevere01.mp3" + "wave" "vo/medic_painsevere02.mp3" + "wave" "vo/medic_painsevere04.mp3" + "wave" "vo/medic_painsharp01.mp3" + "wave" "vo/medic_painsharp04.mp3" + "wave" "vo/medic_painsharp05.mp3" + "wave" "vo/medic_painsharp06.mp3" + "wave" "vo/medic_painsharp07.mp3" + "wave" "vo/medic_painsharp08.mp3" + } +} + +"taunt_burstchester_Pyro_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/pyro_painsharp01.mp3" + "wave" "vo/pyro_painsharp02.mp3" + "wave" "vo/pyro_painsharp03.mp3" + "wave" "vo/pyro_painsharp04.mp3" + "wave" "vo/pyro_painsharp05.mp3" + "wave" "vo/pyro_painsharp06.mp3" + "wave" "vo/pyro_painsharp07.mp3" + } +} + +"taunt_burstchester_Pyro_happy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_02.mp3" + "wave" "vo/taunts/pyro/pyro_trade_01.mp3" + "wave" "vo/taunts/pyro/pyro_trade_03.mp3" + "wave" "vo/taunts/pyro/pyro_trade_04.mp3" + "wave" "vo/pyro_negativevocalization01.mp3" + } +} + +"taunt_burstchester_Scout_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_painsharp01.mp3" + "wave" "vo/scout_painsharp03.mp3" + "wave" "vo/scout_painsharp04.mp3" + "wave" "vo/scout_painsharp05.mp3" + "wave" "vo/scout_painsharp06.mp3" + "wave" "vo/scout_painsharp07.mp3" + "wave" "vo/scout_painsharp08.mp3" + } +} + +"taunt_burstchester_Scout_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_sf13_magic_reac03.mp3" + "wave" "vo/scout_sf12_badmagic26.mp3" + "wave" "vo/scout_sf12_badmagic24.mp3" + "wave" "vo/scout_sf12_badmagic23.mp3" + "wave" "vo/scout_sf12_badmagic04.mp3" + "wave" "vo/scout_autodejectedtie02.mp3" + } +} + +"taunt_burstchester_Scout_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_sf12_badmagic02.mp3" + "wave" "vo/scout_sf12_badmagic01.mp3" + "wave" "vo/scout_negativevocalization01.mp3" + "wave" "vo/scout_negativevocalization04.mp3" + "wave" "vo/scout_painsharp02.mp3" + } +} + +"taunt_burstchester_Sniper_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/sniper_painsharp01.mp3" + "wave" "vo/sniper_painsharp02.mp3" + "wave" "vo/sniper_painsharp03.mp3" + "wave" "vo/sniper_painsharp04.mp3" + } +} + +"taunt_burstchester_Sniper_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/sniper_award10.mp3" + "wave" "vo/sniper_helpme03.mp3" + "wave" "vo/sniper_helpmecapture01.mp3" + "wave" "vo/sniper_jeers02.mp3" + "wave" "vo/sniper_jeers03.mp3" + "wave" "vo/sniper_mvm_resurrect01.mp3" + "wave" "vo/sniper_negativevocalization02.mp3" + "wave" "vo/sniper_sf13_magic_reac02.mp3" + "wave" "vo/sniper_specialcompleted04.mp3" + "wave" "vo/taunts/sniper_taunts02.mp3" + } +} + +"taunt_burstchester_Sniper_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/sniper_mvm_resurrect03.mp3" + "wave" "vo/sniper_negativevocalization03.mp3" + "wave" "vo/sniper_specialcompleted10.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_lose_15.mp3" + } +} + +"taunt_burstchester_Soldier_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/soldier_painsharp01.mp3" + "wave" "vo/soldier_painsharp02.mp3" + "wave" "vo/soldier_painsharp03.mp3" + "wave" "vo/soldier_painsharp04.mp3" + "wave" "vo/soldier_painsharp05.mp3" + "wave" "vo/soldier_painsharp06.mp3" + "wave" "vo/soldier_painsharp07.mp3" + "wave" "vo/soldier_painsharp08.mp3" + } +} + +"taunt_burstchester_Soldier_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/soldier_cheers05.mp3" + "wave" "vo/soldier_cheers06.mp3" + "wave" "vo/soldier_DominationSoldier06.mp3" + "wave" "vo/soldier_helpme02.mp3" + "wave" "vo/soldier_incoming01.mp3" + "wave" "vo/soldier_mvm_get_upgrade03.mp3" + "wave" "vo/soldier_mvm_resurrect04.mp3" + "wave" "vo/soldier_PickAxeTaunt01.mp3" + "wave" "vo/soldier_PickAxeTaunt02.mp3" + "wave" "vo/soldier_PickAxeTaunt03.mp3" + "wave" "vo/soldier_PickAxeTaunt04.mp3" + "wave" "vo/soldier_sf12_badmagic14.mp3" + "wave" "vo/soldier_battlecry05.mp3" + "wave" "vo/soldier_battlecry06.mp3" + "wave" "vo/soldier_paincrticialdeath01.mp3" + "wave" "vo/soldier_specialcompleted04.mp3" + } +} + +"taunt_burstchester_Soldier_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/soldier_HatOverHeartTaunt01.mp3" + "wave" "vo/soldier_HatOverHeartTaunt02.mp3" + "wave" "vo/soldier_HatOverHeartTaunt06.mp3" + "wave" "vo/soldier_negativevocalization02.mp3" + "wave" "vo/soldier_negativevocalization04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_12.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_14.mp3" + "wave" "vo/taunts/soldier_taunts03.mp3" + "wave" "vo/taunts/soldier_taunts19.mp3" + } +} + +"taunt_burstchester_Spy_pain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/spy_painsharp01.mp3" + "wave" "vo/spy_painsharp02.mp3" + "wave" "vo/spy_painsharp03.mp3" + "wave" "vo/spy_painsharp04.mp3" + "wave" "vo/spy_painsharp05.mp3" + "wave" "vo/spy_painsharp06.mp3" + "wave" "vo/spy_painsharp07.mp3" + "wave" "vo/spy_painsharp08.mp3" + } +} + +"taunt_burstchester_Spy_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_dosi_int_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_14.mp3" + "wave" "vo/spy_cheers02.mp3" + "wave" "vo/spy_helpmecapture01.mp3" + "wave" "vo/spy_negativevocalization01.mp3" + "wave" "vo/spy_negativevocalization02.mp3" + "wave" "vo/spy_negativevocalization06.mp3" + "wave" "vo/spy_negativevocalization08.mp3" + "wave" "vo/spy_negativevocalization09.mp3" + "wave" "vo/spy_rpslose01.mp3" + "wave" "vo/spy_rpslose02.mp3" + "wave" "vo/spy_sf12_badmagic01.mp3" + "wave" "vo/spy_sf12_badmagic03.mp3" + "wave" "vo/spy_sf12_badmagic04.mp3" + "wave" "vo/spy_sf12_badmagic02.mp3" + "wave" "vo/spy_sf13_magic_reac01.mp3" + "wave" "vo/spy_sf13_magic_reac02.mp3" + "wave" "vo/spy_sf12_badmagic08.mp3" + "wave" "vo/spy_helpmecapture03.mp3" + } +} + +"taunt_burstchester_Spy_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_dosi_end_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_17.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_18.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_19.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_pain_20.mp3" + "wave" "vo/taunts/spy_taunts13.mp3" + "wave" "vo/spy_autodejectedtie01.mp3" + "wave" "vo/spy_goodjob01.mp3" + "wave" "vo/spy_sf12_badmagic07.mp3" + "wave" "vo/spy_specialcompleted10.mp3" + "wave" "vo/spy_specialcompleted11.mp3" + } +} + +"engineer_item_preview_engineer_battlecry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_battlecry07.mp3" +} +"engineer_item_preview_sentry_upgrading2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_upgrading2.mp3" +} +"engineer_item_preview_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.mp3" +} +"engineer_item_preview_gunslinger_swing" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_swing.mp3" +} +"engineer_item_preview_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.mp3" +} +"engineer_item_preview_sentry_move_short2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_move_short2.mp3" +} +"engineer_item_preview_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.mp3" +} +"engineer_bucking_bronco_engineer_battlecry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_battlecry07.mp3" +} +"engineer_bucking_bronco_sentry_upgrading2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_upgrading2.mp3" +} +"engineer_bucking_bronco_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.mp3" +} +"engineer_bucking_bronco_gunslinger_swing" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_swing.mp3" +} +"engineer_bucking_bronco_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.mp3" +} +"engineer_bucking_bronco_sentry_move_short2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_move_short2.mp3" +} + +"engineer_bucking_bronco_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.mp3" +} + + +"pyro_taunt_spring_rider_pyro_taunt_flip_exert_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_05.mp3" +} +"pyro_taunt_spring_rider_pyro_taunt_flip_fun_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_01.mp3" +} +"pyro_taunt_spring_rider_pyro_taunt_flip_fun_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_06.mp3" +} +"pyro_taunt_spring_rider_pyro_jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_jeers02.mp3" +} +"pyro_taunt_spring_rider_pyro_taunt_flip_int_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_05.mp3" +} +"pyro_taunt_spring_rider_pyro_taunt_head_pain_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_head_pain_04.mp3" +} + +////////////////////////////////////////////////////////////////////////////// +//Taunt - Spy Disco Fever +////////////////////////////////////////////////////////////////////////////// + +"taunt_spy.disco_fever_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_cong_fun_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_int_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_16.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_48.mp3" + "wave" "vo/spy_incoming01.mp3" + } +} + +"taunt_spy.disco_fever_middle" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_aerobic_pos_01.mp3" + "wave" "vo/spy_laughevil01.mp3" + "wave" "vo/spy_laughevil02.mp3" + "wave" "vo/spy_laughhappy01.mp3" + "wave" "vo/spy_sf12_goodmagic05.mp3" + "wave" "vo/spy_sf12_goodmagic07.mp3" + "wave" "vo/spy_sf12_goodmagic08.mp3" + } +} + +"taunt_spy.disco_fever_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_bos_int_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_admire_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_14.mp3" + "wave" "vo/taunts/spy_feelgood01.mp3" + "wave" "vo/taunts/spy_highfive_success03.mp3" + "wave" "vo/taunts/spy_highfive_success04.mp3" + } +} +"pyro_spring_rider_taunt_shotgun_shoulder" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_shotgun_shoulder.wav" +} +"pyro_spring_rider_taunt_foot_stomp_light" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp_light.wav" +} +"pyro_spring_rider_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"pyro_spring_rider_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"pyro_spring_rider_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp.wav" +} +"pyro_spring_rider_wood2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/wood2.wav" +} +"pyro_spring_rider_metal_hit_hand2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/metal_hit_hand2.wav" +} +"pyro_spring_rider_taunt_equipment_jingle3short" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle3short.wav" +} +"pyro_spring_rider_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.wav" +} +"pyro_spring_rider_taunt_equipment_jingle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle.wav" +} +"pyro_spring_rider_taunt_equipment_jingle3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle3.wav" +} +"pyro_spring_rider_taunt_equipment_jingle3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle3.wav" +} +"pyro_spring_rider_concrete2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete2.wav" +} +"scout_mic_drop_boxing_gloves_hit4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_hit4.wav" +} +"scout_mic_drop_scout_domination13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_domination13.mp3" + "wave" "vo/taunts/scout_taunts01.mp3" + "wave" "vo/taunts/scout_taunts04.mp3" + "wave" "vo/taunts/scout_taunts09.mp3" + "wave" "vo/taunts/scout_taunts11.mp3" + "wave" "vo/taunts/scout_taunts16.mp3" + "wave" "vo/taunts/scout_taunts18.mp3" + "wave" "vo/scout_award12.mp3" + "wave" "vo/scout_goodjob02.mp3" + "wave" "vo/scout_misc04.mp3" + "wave" "vo/scout_niceshot03.mp3" + "wave" "vo/scout_revenge02.mp3" + "wave" "vo/scout_revenge07.mp3" + "wave" "vo/scout_revenge08.mp3" + "wave" "vo/scout_specialcompleted06.mp3" + "wave" "vo/scout_specialcompleted09.mp3" + } +} +"engineer_taunt_nope_engineer_no01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_no01.mp3" +} +"medic_secondrate_sorcery_medic_medic_taunt_int_22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_int_22.mp3" +} +"medic_secondrate_sorcery_medic_medic_taunt_admire_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_admire_02.mp3" +} +"medic_secondrate_sorcery_medic_medic_taunt_kill_24" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_kill_24.mp3" +} +"heavy_secondrate_sorcery_heavy_heavy_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy_taunts01.mp3" +} +"heavy_secondrate_sorcery_heavy_heavy_taunt_flip_fail_19" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_19.mp3" +} +"sniper_didgeriddrongo_into" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_18.mp3" + "wave" "vo/sniper_sf13_round_start02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_03.mp3" + } +} + +"sniper_didgeriddrongo_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_admire_11.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_15.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_end_04.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_14.mp3" + "wave" "vo/sniper_award03.mp3" + } +} + +"demo_taunt_scotsmans_stagger_taunt_hop" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_exert_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_08.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_neg_02.mp3" + } +} + +"demo_taunt_scotsmans_stagger_demoman_gibberish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/demoman_gibberish01.mp3" + "wave" "vo/demoman_gibberish02.mp3" + "wave" "vo/demoman_gibberish03.mp3" + "wave" "vo/demoman_gibberish04.mp3" + "wave" "vo/demoman_gibberish05.mp3" + "wave" "vo/demoman_gibberish07.mp3" + "wave" "vo/demoman_gibberish08.mp3" + "wave" "vo/demoman_gibberish10.mp3" + "wave" "vo/demoman_gibberish11.mp3" + "wave" "vo/demoman_gibberish13.mp3" + } +} +"engineer_taunt_bumpkins_banjo_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_meleedare01.mp3" + "wave" "vo/compmode/cm_engie_matchwon_02.mp3" + "wave" "vo/compmode/cm_engie_pregamefirst_04.mp3" + "wave" "vo/compmode/cm_engie_pregamefirst_09.mp3" + "wave" "vo/compmode/cm_engie_pregamefirst_12.mp3" + "wave" "vo/compmode/cm_engie_pregamefirst_13.mp3" + "wave" "vo/compmode/cm_engie_pregamefirst_14.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_31.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_44.mp3" + } +} +"engineer_taunt_bumpkins_banjo_yells" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_meleedare01.mp3" + "wave" "vo/compmode/cm_engie_matchwon_02.mp3" + "wave" "vo/compmode/cm_engie_matchwon_05.mp3" + "wave" "vo/engineer_gunslingertriplepunchfinal01.mp3" + "wave" "vo/engineer_cheers01.mp3" + "wave" "vo/engineer_cheers02.mp3" + "wave" "vo/taunts/engy/eng_bronco_01.mp3" + "wave" "vo/taunts/engy/eng_bronco_04.mp3" + "wave" "vo/taunts/engy/eng_bronco_07.mp3" + "wave" "vo/taunts/engy/eng_bronco_09.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_33.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_42.mp3" + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_12.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_19.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_29.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/engy/engineer_cheers02.mp3" + "wave" "vo/taunts/engy/engineer_laughhappy03.mp3" + } +} +"engineer_taunt_bumpkins_banjo_engineer_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_mvm_get_upgrade01.mp3" + "wave" "vo/compmode/cm_engie_matchwon_03.mp3" + "wave" "vo/compmode/cm_engie_matchwon_04.mp3" + "wave" "vo/compmode/cm_engie_matchwon_06.mp3" + "wave" "vo/compmode/cm_engie_pregamewonlast_02.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_02.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_06.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_11.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_11.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_15.mp3" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_25.mp3" + } +} +"heavy_taunt_workout_grunts" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_Yes01.mp3" + "wave" "misc/null.wav" + "wave" "vo/taunts/heavy/heavy_taunt_exert_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_04.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_06.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + } +} +"heavy_taunt_heavy_workout_taunt_clothes_rustle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_rustle.wav" +} +"heavy_taunt_heavy_workout_taunt_equipment_gun1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun1.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"heavy_taunt_heavy_workout_taunt_equipment_gun2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun2.wav" +} +"heavy_taunt_heavy_workout_taunt_clothes_rustle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_rustle.wav" +} +"heavy_taunt_heavy_workout_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp.wav" +} +"heavy_taunt_heavy_workout_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp.wav" +} +"heavy_taunt_heavy_workout_taunt_foot_stomp_light" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp_light.wav" +} +"heavy_taunt_heavy_workout_taunt_equipment_gun2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun2.wav" +} +"heavy_taunt_soviet_strongarm_heavy_cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_cheers01.mp3" +} +"heavy_taunt_soviet_strongarm_heavy_taunt_exert_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_exert_06.mp3" +} +"heavy_taunt_soviet_strongarm_heavy_taunt_flip_exert_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_exert_01.mp3" + "wave" "misc/null.wav" + "wave" "vo/taunts/heavy/heavy_taunt_flip_exert_01.mp3" + } +} +"heavy_taunt_soviet_strongarm_heavy_taunt_exert_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_exert_04.mp3" + "wave" "misc/null.wav" + "wave" "vo/taunts/heavy/heavy_taunt_exert_04.mp3" + } +} +"heavy_taunt_soviet_strongarm_heavy_taunt_end_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_end_03.mp3" +} +"heavy_taunt_soviet_strongarm_taunt_foot_spin" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_spin.wav" +} + +"heavy_taunt_soviet_strongarm_draw_primary" //start rolling down arm +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/draw_primary.wav" +} +"heavy_taunt_soviet_strongarm_demo_charge_hit_world3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/demo_charge_hit_world3.wav" +} +"heavy_taunt_soviet_strongarm_demo_charge_hit_world1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/demo_charge_hit_world1.wav" +} +"heavy_taunt_soviet_strongarm_loose_cannon_ball_impact" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/loose_cannon_ball_impact.wav" +} +"heavy_taunt_soviet_strongarm_taunt_clothes_rustle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_rustle.wav" +} +"heavy_taunt_soviet_strongarm_tile4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/tile4.wav" +} +"heavy_taunt_soviet_strongarm_tile2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/tile2.wav" +} +"heavy_taunt_soviet_strongarm_sand2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/sand2.wav" +} +"heavy_taunt_soviet_strongarm_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_soviet_strongarm_roll_catch_done.wav" +} + +"heavy_taunt_soviet_strongarm_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} + +"heavy_taunt_soviet_strongarm_taunt_equipment_gun1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun2.wav" +} + +"heavy_taunt_soviet_strongarm_taunt_equipment_gun2" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun1.wav" +} + +"heavy_taunt_soviet_strongarm_taunt_tie_fix" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_tie_fix.wav" +} + +"Taunt.JackhammerOut" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_out.wav" +} + +"Taunt.JackhammerExtend" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_extend.wav" +} + +"Taunt.JackhammerMovement" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_down_movement.wav" +} + +"Taunt.JackhammerSwoosh" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_down_swoosh.wav" +} + +"Taunt.JackhammerStrike" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_down_strike.wav" +} + +"Taunt.JackhammerLoop" +{ + "channel" "CHAN_BODY" + "volume" ".35" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_loop.wav" +} + +"Taunt.JackhammerEnd" +{ + "channel" "CHAN_BODY" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_jackhammer_loop_end.wav" +} + +"Taunt.WorkOutFoot1" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_footfall1.wav" +} + +"Taunt.WorkOutFoot2" +{ + "channel" "CHAN_BODY" + "volume" ".75" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_footfall2.wav" +} + +"Taunt.WorkOutGetDown1" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_get_down.wav" +} + +"Taunt.WorkOutHand1" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_hand1.wav" +} + +"Taunt.WorkOutHand2" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_hand2.wav" +} + +"Taunt.WorkOutPushUp" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" ")player/taunt_workout_pushup1.wav" + "wave" ")player/taunt_workout_pushup2.wav" + "wave" ")player/taunt_workout_pushup3.wav" + "wave" ")player/taunt_workout_pushup4.wav" + } +} + +"Taunt.WorkOutGetUp" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_get_up.wav" +} + +"Taunt.WorkOutGetUpDraw" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_workout_get_up_draw.wav" +} + +"pyro_taunt_the_grilled_gunman_item_metal_pot_pickup" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "ui/item_metal_pot_pickup.wav" +} + +"pyro_taunt_the_grilled_gunman_draw_default" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/draw_default.wav" +} + +"pyro_taunt_the_grilled_gunman_pyro_taunt_int_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_int_05.mp3" +} + +"pyro_taunt_the_grilled_gunman_pyro_taunt_smell" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_grilled_gunman_smell.wav" +} + +"pyro_taunt_the_grilled_gunman_pyro_taunt_head_exert_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_head_exert_03.mp3" +} + +"pyro_taunt_the_grilled_gunman_concrete2" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete2.wav" +} + +"pyro_taunt_the_grilled_gunman_concrete4" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete4.wav" +} + +"pyro_taunt_the_grilled_gunman_cleats_conc_03" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/cleats_conc_03.wav" +} + +"pyro_taunt_the_grilled_gunman_body_medium_impact_hard4" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "physics/body/body_medium_impact_hard6.wav" +} + +"pyro_taunt_the_grilled_gunman_body_medium_impact_soft4" +{ + "channel" "CHAN_STATIC" + "volume" ".35" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "physics/body/body_medium_impact_soft4.wav" +} + +"pyro_taunt_the_grilled_gunman_lid_drop" +{ + "channel" "CHAN_STATIC" + "volume" ".2" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_grilled_gunman_lid_drop.wav" +} + +"pyro_taunt_the_grilled_gunman_lid_drop_roll" +{ + "channel" "CHAN_STATIC" + "volume" ".2" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" ")player/taunt_grilled_gunman_lid_drop_roll.wav" +} + + +//SCOUT TRACKMANS TOUCHDOWN +"scout_taunt_trackmans_touchdown_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_exert_21.mp3" + "wave" "vo/taunts/scout/scout_taunt_exert_23.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_pain_02.mp3" + } +} + +"scout_taunt_trackmans_touchdown_dance" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_conga_fun_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_bos_exert_01.mp3" + } +} + +"scout_taunt_trackmans_touchdown_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_award12.mp3" + "wave" "vo/scout_autocappedintelligence02.mp3" + "wave" "vo/taunts/scout_taunts07.mp3" + "wave" "vo/taunts/scout_taunts01.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_11.mp3" + } +} + + +"scout_taunt_the_trackmans_touchdown_boxing_gloves_hit3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_hit3.wav" +} +"scout_taunt_the_trackmans_touchdown_boxing_gloves_hit" +{ + "channel" "CHAN_STATIC" + "volume" ".2" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_hit.wav" +} +"scout_taunt_the_trackmans_touchdown_boxing_gloves_hit1" +{ + "channel" "CHAN_STATIC" + "volume" ".2" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_hit1.wav" +} +"scout_taunt_the_trackmans_touchdown_heavy_taunt_chest_hit1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit1.mp3" +} +"scout_taunt_the_trackmans_touchdown_boxing_gloves_swing1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_swing1.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_clothes_rustle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_rustle.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"scout_taunt_the_trackmans_touchdown_heavy_taunt_chest_hit4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit4.mp3" +} +"scout_taunt_the_trackmans_touchdown_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"scout_taunt_the_trackmans_touchdown_boxing_gloves_swing2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_swing2.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_hand_clap2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_hand_clap2.wav" +} +"scout_taunt_the_trackmans_touchdown_item_watch_pickup" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "ui/item_watch_pickup.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_clothes_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp.wav" +} +"scout_taunt_the_trackmans_touchdown_cleats_conc_03" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/cleats_conc_03.wav" +} +"scout_taunt_the_trackmans_touchdown_concrete4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete4.wav" +} +"scout_taunt_the_trackmans_touchdown_concrete4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete4.wav" +} +"scout_taunt_the_trackmans_touchdown_concrete2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete2.wav" +} +"scout_taunt_the_trackmans_touchdown_concrete4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete4.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp.wav" +} +"scout_taunt_the_trackmans_touchdown_taunt_foot_stomp" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_foot_stomp.wav" +} +"pyro_taunt_the_skating_scorcher_para_open" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "items/para_open.wav" +} +"pyro_taunt_the_skating_scorcher_jingle_bells_nm_03" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "misc/jingle_bells/jingle_bells_nm_03.wav" +} +"pyro_taunt_the_skating_scorcher_taunt_equipment_jingle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle.wav" +} +"pyro_taunt_the_skating_scorcher_projectile_swoosh5" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "passtime/projectile_swoosh5.wav" +} +"pyro_taunt_the_skating_scorcher_projectile_swoosh6" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "passtime/projectile_swoosh6.wav" +} +"pyro_taunt_the_skating_scorcher_taunt_equipment_gun1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun1.wav" +} +"pyro_taunt_the_skating_scorcher_taunt_equipment_gun2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun2.wav" +} +"pyro_taunt_the_skating_scorcher_taunt_equipment_gun1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun1.wav" +} +"pyro_taunt_the_skating_scorcher_taunt_shotgun_spin" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_shotgun_spin.wav" +} +"pyro_taunt_the_skating_scorcher_para_close" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "items/para_close.wav" +} +"pyro_taunt_the_skating_scorcher_jingle_bells_nm_05" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "misc/jingle_bells/jingle_bells_nm_05.wav" +} +"pyro_taunt_the_skating_scorcher_concrete3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete3.wav" +} +"pyro_taunt_the_skating_scorcher_concrete2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete2.wav" +} +"pyro_taunt_the_skating_scorcher_concrete4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete4.wav" +} +"pyro_taunt_the_skating_scorcher_taunt_equipment_gun1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_gun1.wav" +} + +//SCOUT Bunnyhop +"Taunt.bunnyhop_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_int_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_08.mp3" + "wave" "vo/scout_incoming01.mp3" + "wave" "vo/scout_incoming03.mp3" + "wave" "vo/scout_mvm_loot_common04.mp3" + "wave" "vo/scout_mvm_loot_common05.mp3" + "wave" "vo/scout_mvm_loot_rare01.mp3" + "wave" "vo/scout_sf12_goodmagic03.mp3" + "wave" "vo/scout_sf12_goodmagic04.mp3" + } +} + +"Taunt.bunnyhop_flip" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_end_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_13.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_pain_02.mp3" + "wave" "vo/scout_sf12_goodmagic05.mp3" + } +} + +"Taunt.bunnyhop_spin" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_13.mp3" + + } +} + +"Taunt.bunnyhop_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_end_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_10.mp3" + "wave" "vo/scout_sf12_badmagic11.mp3" + } +} + +"scout_taunt_runners_rhythm_scout_sf12_goodmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic05.mp3" +} +"scout_taunt_runners_rhythm_taunt_clothes_rustle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_rustle.wav" +} +"scout_taunt_runners_rhythm_item_boxing_gloves_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "ui/item_boxing_gloves_drop.wav" +} +"scout_taunt_runners_rhythm_concrete3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/concrete3.wav" +} +"scout_taunt_runners_rhythm_taunt_eng_swoosh" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_eng_swoosh.wav" +} + +"scout_taunt_runners_rhythm_bongo_intro" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "music/taunt_bongos.wav" +} + +"scout_taunt_runners_rhythm_bongo_outro" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "music/taunt_bongos_stop.wav" +} + + +"Taunt.runners_rythm_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_meleedare03.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_14.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_18.mp3" + } +} + +"Taunt.runners_rythm_loop" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_positivevocalization01.mp3" + "wave" "vo/scout_mvm_loot_common03.mp3" + "wave" "vo/scout_laughshort02.mp3" + "wave" "vo/scout_cheers03.mp3" + "wave" "vo/scout_battlecry04.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_09.mp3" + } +} + +"Taunt.runners_rythm_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_end_03.mp3" + "wave" "vo/scout_positivevocalization05.mp3" + "wave" "vo/scout_award12.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_19.mp3" + "wave" "vo/taunts/scout/scout_trade_07.mp3" + + } +} + +"Taunt.skating_scorcher_trick" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/pyro_positivevocalization01.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_14.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_05.mp3" + "wave" "vo/taunts/pyro/pyro_highfive_success03.mp3" + } +} + +"Taunt.skating_scorcher_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_05.mp3" + } +} + +"Taunt.surgeon_squeezebox_laugh" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_admire_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_22.mp3" + } +} + +"Taunt.surgeon_squeezebox_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_10.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_11.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_12.mp3" + "wave" "vo/taunts/medic/medic_trade_11.mp3" + } +} + +"Taunt.luxury_lounge_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/spy_battlecry02.mp3" + "wave" "vo/spy_battlecry04.mp3" + "wave" "vo/spy_mvm_loot_rare03.mp3" + "wave" "vo/spy_mvm_resurrect02.mp3" + "wave" "vo/taunts/spy/spy_trade_22.mp3" + } +} + +"Taunt.luxury_lounge_loop" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/spy_hugenemy01.mp3" + "wave" "vo/spy_hughugging04.mp3" + "wave" "vo/spy_mvm_loot_common01.mp3" + "wave" "vo/spy_sf13_influx_small02.mp3" + "wave" "vo/spy_sf13_influx_small03.mp3" + "wave" "vo/spy_mvm_loot_common01.mp3" + "wave" "vo/spy_laughshort01.mp3" + "wave" "vo/spy_laughshort02.mp3" + "wave" "vo/spy_laughshort03.mp3" + "wave" "vo/spy_laughshort04.mp3" + "wave" "vo/spy_laughshort05.mp3" + "wave" "vo/spy_mvm_loot_common03.mp3" + "wave" "vo/spy_mvm_resurrect09.mp3" + } +} + +"Taunt.luxury_lounge_laugh" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/spy_laughshort01.mp3" + "wave" "vo/spy_laughshort02.mp3" + "wave" "vo/spy_laughshort03.mp3" + "wave" "vo/spy_laughshort04.mp3" + "wave" "vo/spy_laughshort05.mp3" + "wave" "vo/spy_mvm_loot_common03.mp3" + "wave" "vo/spy_mvm_resurrect09.mp3" + + } +} + +"Taunt.luxury_lounge_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_trade_20.mp3" + "wave" "vo/taunts/spy/spy_trade_13.mp3" + } +} + +"Taunt.scorchers_solo_music" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "player/taunt_scorchers_solo1.wav" + "wave" "player/taunt_scorchers_solo2.wav" + } +} + +"Taunt.scout_spin_to_win_right" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_headright01.wav" + "wave" "vo/scout_headright02.wav" + "wave" "vo/scout_headright03.wav" + } +} + +"Taunt.scout_spin_to_win_left" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_headleft01.wav" + "wave" "vo/scout_headleft02.wav" + "wave" "vo/scout_headleft03.wav" + } +} + +"demo_taunt_fistbump_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_int_30.mp3" + "wave" "vo/taunts/demo/taunt_demo_head_int_01.mp3" + } +} + +"medic_taunt_fistbump_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_15.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_11.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_13.mp3" + } +} + +"snipes_taunt_fistbump_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_int_13.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_07.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_08.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_13.mp3" + } +} + + +"spy_taunt_fistbump_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_int_20.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_int_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_rps_int_08.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_03.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_16.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_24.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_48.mp3" + } +} + + +"Taunt.ScoutBostonBoarder" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo/taunts/skateboard_loop_01.wav" + } +} + +"Taunt.DemoPoopedDeckSnore" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/demoman_snore1.mp3" + "wave" "vo/demoman_snore2.mp3" + } +} + +"Taunt.DemoPoopedDeckDrink" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_guzzle_03.mp3" + } +} +"scout_taunt_the_homerunners_hobby_get_up" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_luxury_lounge_chair_get_up.wav" +} +"scout_taunt_the_homerunners_hobby_taunt_luxury_lounge_get_up" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_luxury_lounge_get_up.wav" +} +"scout_taunt_the_homerunners_hobby_book_page_turn" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_luxury_lounge_book_page_turn.wav" +} +"scout_taunt_the_homerunners_hobby_cyoa_pda_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/cyoa_pda_swipe.wav" +} +"scout_taunt_the_homerunners_hobby_cyoa_pda_swipe" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/cyoa_pda_swipe.wav" +} +"scout_taunt_the_homerunners_hobby_item_hat_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "ui/item_hat_drop.wav" +} +"scout_taunt_the_homerunners_hobby_taunt_luxury_lounge_book_open" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_luxury_lounge_book_open.wav" +} +"scout_taunt_the_homerunners_hobby_boxing_gloves_swing2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_swing2.wav" +} +"scout_taunt_the_homerunners_hobby_boxing_gloves_swing1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/boxing_gloves_swing1.wav" +} +"scout_taunt_the_homerunners_hobby_cyoa_pda_clothes_rustle_long" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/cyoa_pda_clothes_rustle_long.wav" +} +"scout_taunt_the_homerunners_hobby_cyoa_pda_clothes_rustle_long" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/cyoa_pda_clothes_rustle_long.wav" +} +"scout_taunt_the_homerunners_hobby_taunt_clothes_rustle" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_rustle.wav" +} +"scout_taunt_the_homerunners_hobby_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"scout_taunt_the_homerunners_hobby_taunt_clothes_swipe2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_clothes_swipe2.wav" +} +"scout_taunt_the_homerunners_hobby_pyro_taunt_clap3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_clap3.mp3" +} +"scout_taunt_the_homerunners_hobby_item_watch_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "ui/item_watch_drop.wav" +} +"scout_taunt_the_homerunners_hobby_item_watch_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "ui/item_watch_drop.wav" +} + +// SCOUT THE HOMERUNNER TAUNT +"scout.short_laughs" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\scout_laughshort01.mp3" + "wave" "vo\scout_laughshort02.mp3" + "wave" "vo\scout_laughshort03.mp3" + "wave" "vo\scout_laughshort04.mp3" + } +} + +"scout.happy_laughs" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\scout_laughhappy01.mp3" + "wave" "vo\scout_laughhappy02.mp3" + "wave" "vo\scout_laughhappy03.mp3" + "wave" "vo\scout_laughhappy04.mp3" + } +} + +//SOLDIER THE PROFANE PUPPETEER +"soldier.profane_puppeteer" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "120" + "rndwave" + { + "wave" "vo\taunts\soldier_taunts03.mp3" + "wave" "vo\taunts\soldier_taunts04.mp3" + "wave" "vo\taunts\soldier_taunts07.mp3" + "wave" "vo\taunts\soldier_taunts09.mp3" + "wave" "vo\taunts\soldier_taunts10.mp3" + "wave" "vo\taunts\soldier_taunts11.mp3" + "wave" "vo\taunts\soldier_taunts12.mp3" + "wave" "vo\taunts\soldier_taunts14.mp3" + "wave" "vo\taunts\soldier_taunts15.mp3" + "wave" "vo\taunts\soldier_taunts19.mp3" + "wave" "vo\soldier_weapon_taunts04.mp3" + } +} + + +//HEAVY BARE KNUCKLE BEATDOWN +"heavy.bare_knuckle_beatdown" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\heavy_meleeing01.mp3" + "wave" "vo\heavy_meleeing02.mp3" + "wave" "vo\heavy_meleeing03.mp3" + "wave" "vo\heavy_meleeing04.mp3" + "wave" "vo\heavy_meleeing05.mp3" + "wave" "vo\heavy_meleeing06.mp3" + } +} + +"heavy.bare_knuckle_beatdown_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\heavy\heavy_trade_03.mp3" + "wave" "vo\taunts\heavy\heavy_trade_04.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_flip_int_11.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_flip_int_10.mp3" + "wave" "vo\taunts\heavy\heavy_trade_01.mp3" + } +} + +"heavy.bare_knuckle_beatdown_uppercut" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\heavy\heavy_taunt_exert_01.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_exert_09.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_exert_11.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_exert_12.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_flip_exert_01.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_head_exert_03.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_head_exert_04.mp3" + } +} + +"heavy.bare_knuckle_beatdown_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\heavy\heavy_taunt_dosi_end_05.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_dosi_end_07.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_end_03.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_head_end_01.mp3" + "wave" "vo\heavy_Domination01.mp3" + "wave" "vo\heavy_Domination02.mp3" + "wave" "vo\heavy_Domination05.mp3" + "wave" "vo\heavy_Domination07.mp3" + "wave" "vo\heavy_Domination10.mp3" + "wave" "vo\heavy_Domination11.mp3" + "wave" "vo\heavy_Domination17.mp3" + "wave" "vo\heavy_Domination18.mp3" + } +} + +//MEDIC MANNBULANCE +"medic.mannbulance_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\medic_battlecry02.mp3" + "wave" "vo\medic_incoming01.mp3" + "wave" "vo\medic_incoming02.mp3" + "wave" "vo\medic_incoming03.mp3" + "wave" "vo\taunts\medic\medic_taunt_int_01.mp3" + "wave" "vo\taunts\medic\medic_taunt_int_05.mp3" + } +} + +"medic.mannbulance_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\medic\medic_taunt_flip_int_15.mp3" + "wave" "vo\taunts\medic\medic_taunt_int_07.mp3" + "wave" "vo\medic_battlecry01.mp3" + "wave" "misc\null.wav" + } +} + +"medic.mannbulance_loop" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\medic_go02.mp3" + "wave" "vo\medic_go03.mp3" + "wave" "vo\medic_go04.mp3" + "wave" "vo\medic_go05.mp3" + "wave" "vo\medic_go01.mp3" + } +} + +"medic.mannbulance_siren_loop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\medic\taunt_ambulance_loop_01.wav" + } +} + +"medic_tauntdoctors_defibrillators_medic_laughevil02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_laughevil02.wav" +} +"medic_tauntdoctors_defibrillators_teleporter_explode" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/teleporter_explode.wav" +} +"medic_tauntdoctors_defibrillators_draw_default" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/draw_default.wav" +} +"medic_tauntdoctors_defibrillators_weapon_crit_charged_on" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/weapon_crit_charged_on.wav" +} +"medic_tauntdoctors_defibrillators_taunt_equipment_jingle3" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle3.wav" +} +"medic_tauntdoctors_defibrillators_taunt_equipment_jingle3short" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle3short.wav" +} +"medic_tauntdoctors_defibrillators_dirt2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/dirt2.wav" +} +"medic_tauntdoctors_defibrillators_dirt1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/dirt1.wav" +} +"medic_tauntdoctors_defibrillators_dirt2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/dirt2.wav" +} +"medic_tauntdoctors_defibrillators_dirt1" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/footsteps/dirt1.wav" +} + +"medic.taunt_doctors_defibrillators_intro" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\taunts\medic\medic_taunt_flip_int_15.mp3" + "wave" "vo\taunts\medic\medic_trade_02.mp3" + "wave" "vo\taunts\medic\medic_trade_03.mp3" + "wave" "vo\taunts\medic\medic_trade_11.mp3" + "wave" "vo\taunts\medic\medic_trade_10.mp3" + "wave" "vo\taunts\medic_taunts01.mp3" + "wave" "vo\taunts\medic_taunts10.mp3" + "wave" "vo\taunts\medic_taunts12.mp3" + } +} + +"medic.taunt_doctors_defibrillators_outro" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\taunts\medic\medic_taunt_admire_01.mp3" + "wave" "vo\taunts\medic\medic_taunt_admire_02.mp3" + "wave" "vo\taunts\medic\medic_taunt_admire_20.mp3" + "wave" "vo\medic_laughshort03.mp3" + "wave" "vo\medic_laughevil05.mp3" + + } +} + +"sniper.taunt_shooters_stake_intro" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\taunts\sniper\sniper_trade_05.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_admire_11.mp3" + "wave" "vo\sniper_positivevocalization10.mp3" + "wave" "vo\taunts\sniper\sniper_trade_05.mp3" + + } +} + +"sniper.taunt_shooters_stake_drink" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_guzzle_03.mp3" + "wave" "player/taunt_luxury_lounge_sip.wav" + "wave" "vo/taunts/soldier/taunt_soldier_coffee_4_coffee_sip.mp3" + } +} + +"sniper.taunt_shooters_stake_rand01" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\taunts\sniper\sniper_taunt_rps_lose_15.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_kill_19.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_kill_18.mp3" + "wave" "vo\sniper_mvm_loot_rare04.mp3" + "wave" "vo\sniper_mvm_loot_rare05.mp3" + "wave" "vo\sniper_mvm_loot_common05.mp3" + "wave" "vo\sniper_mvm_loot_common06.mp3" + "wave" "vo\sniper_positivevocalization07.mp3" + "wave" "vo\sniper_specialcompleted20.mp3" + "wave" "vo\sniper_specialweapon04.mp3" + "wave" "vo\sniper_specialweapon09.mp3" + "wave" "vo\sniper_specialweapon04.mp3" + "wave" "vo\sniper_specialweapon09.mp3" + + + } +} + +"sniper.taunt_shooters_stake_rand02" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\sniper_taunts34.mp3" + "wave" "vo\taunts\sniper_taunts35.mp3" + "wave" "vo\taunts\sniper_taunts40.mp3" + "wave" "vo\taunts\sniper_taunts41.mp3" + "wave" "vo\taunts\sniper_taunts42.mp3" + "wave" "vo\taunts\sniper_taunts43.mp3" + "wave" "vo\taunts\sniper_taunts44.mp3" + "wave" "vo\taunts\sniper_taunts24.mp3" + "wave" "vo\taunts\sniper_taunts27.mp3" + "wave" "vo\taunts\sniper_taunts31.mp3" + "wave" "vo\taunts\sniper_taunts32.mp3" + + } +} + +"sniper.taunt_shooters_stake_outro" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "vo\taunts\sniper\sniper_taunt_flip_exert_01.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_admire_11.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_admire_12.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_rps_win_14.mp3" + } +} + +"medic.taunt_doctors_defibrillators_spark" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.7" + + "rndwave" + { + "wave" "ambient/energy/spark5.wav" + "wave" "ambient/energy/spark6.wav" + } +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo.lua new file mode 100644 index 000000000..3c8c5c810 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo.lua @@ -0,0 +1,52080 @@ +// +// VOL_NORM 1.0f +// +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- +// +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f +// +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, = 3.9 +// SNDLVL_55dB = 55, = 3.0 +// SNDLVL_IDLE = 60, = 2.0 +// SNDLVL_TALKING = 60, = 2.0 +// SNDLVL_60dB = 60, = 2.0 +// SNDLVL_65dB = 65, = 1.5 +// SNDLVL_STATIC = 66, = 1.25 +// SNDLVL_70dB = 70, = 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, = 0.8 +// SNDLVL_80dB = 80, = 0.7 +// SNDLVL_85dB = 85, = 0.6 +// SNDLVL_90dB = 90, = 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, = 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, = 0.27 +// SNDLVL_140dB = 140, = 0.2 +// SNDLVL_150dB = 150, = 0.2 +// + +//----------------------------------------------------------------------------- +// Player Deaths +//----------------------------------------------------------------------------- + +"Demoman.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_PainSevere01.mp3" + "wave" "vo/demoman_PainSevere02.mp3" + "wave" "vo/demoman_PainSevere03.mp3" + "wave" "vo/demoman_PainSevere04.mp3" + } +} + +"Demoman.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_PainCrticialDeath01.mp3" + "wave" "vo/demoman_PainCrticialDeath02.mp3" + "wave" "vo/demoman_PainCrticialDeath03.mp3" + "wave" "vo/demoman_PainCrticialDeath04.mp3" + "wave" "vo/demoman_PainCrticialDeath05.mp3" + } +} + +"Demoman.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_PainCrticialDeath01.mp3" + "wave" "vo/demoman_PainCrticialDeath02.mp3" + "wave" "vo/demoman_PainCrticialDeath03.mp3" + "wave" "vo/demoman_PainCrticialDeath04.mp3" + "wave" "vo/demoman_PainCrticialDeath05.mp3" + } +} + +"Demoman.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/demoman_PainSharp01.mp3" + "wave" "vo/demoman_PainSharp02.mp3" + "wave" "vo/demoman_PainSharp03.mp3" + "wave" "vo/demoman_PainSharp04.mp3" + "wave" "vo/demoman_PainSharp05.mp3" + "wave" "vo/demoman_PainSharp06.mp3" + "wave" "vo/demoman_PainSharp07.mp3" + } +} + +"Engineer.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainSevere01.mp3" + "wave" "vo/engineer_PainSevere02.mp3" + "wave" "vo/engineer_PainSevere03.mp3" + "wave" "vo/engineer_PainSevere04.mp3" + "wave" "vo/engineer_PainSevere05.mp3" + "wave" "vo/engineer_PainSevere06.mp3" + "wave" "vo/engineer_PainSevere07.mp3" + } +} + +"Engineer.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainCrticialDeath01.mp3" + "wave" "vo/engineer_PainCrticialDeath02.mp3" + "wave" "vo/engineer_PainCrticialDeath03.mp3" + "wave" "vo/engineer_PainCrticialDeath04.mp3" + "wave" "vo/engineer_PainCrticialDeath05.mp3" + "wave" "vo/engineer_PainCrticialDeath06.mp3" + } +} + +"Engineer.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/engineer_PainSharp01.mp3" + "wave" "vo/engineer_PainSharp02.mp3" + "wave" "vo/engineer_PainSharp03.mp3" + "wave" "vo/engineer_PainSharp04.mp3" + "wave" "vo/engineer_PainSharp05.mp3" + "wave" "vo/engineer_PainSharp06.mp3" + "wave" "vo/engineer_PainSharp07.mp3" + "wave" "vo/engineer_PainSharp08.mp3" + } +} + + + +"Heavy.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_PainSevere01.mp3" + "wave" "vo/heavy_PainSevere02.mp3" + "wave" "vo/heavy_PainSevere03.mp3" + } +} + +"Heavy.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_PainCrticialDeath01.mp3" + "wave" "vo/heavy_PainCrticialDeath02.mp3" + "wave" "vo/heavy_PainCrticialDeath03.mp3" + } +} + +"Heavy.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_PainCrticialDeath01.mp3" + "wave" "vo/heavy_PainCrticialDeath02.mp3" + "wave" "vo/heavy_PainCrticialDeath03.mp3" + } +} + +"Heavy.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/heavy_PainSharp01.mp3" + "wave" "vo/heavy_PainSharp02.mp3" + "wave" "vo/heavy_PainSharp03.mp3" + "wave" "vo/heavy_PainSharp04.mp3" + "wave" "vo/heavy_PainSharp05.mp3" + } +} + + + +"Medic.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_PainSevere01.mp3" + "wave" "vo/medic_PainSevere02.mp3" + "wave" "vo/medic_PainSevere03.mp3" + "wave" "vo/medic_PainSevere04.mp3" + } +} + +"Medic.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_PainCrticialDeath01.mp3" + "wave" "vo/medic_PainCrticialDeath02.mp3" + "wave" "vo/medic_PainCrticialDeath03.mp3" + "wave" "vo/medic_PainCrticialDeath04.mp3" + } +} + +"Medic.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_PainCrticialDeath01.mp3" + "wave" "vo/medic_PainCrticialDeath02.mp3" + "wave" "vo/medic_PainCrticialDeath03.mp3" + "wave" "vo/medic_PainCrticialDeath04.mp3" + } +} + +"Medic.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/medic_PainSharp01.mp3" + "wave" "vo/medic_PainSharp02.mp3" + "wave" "vo/medic_PainSharp03.mp3" + "wave" "vo/medic_PainSharp04.mp3" + "wave" "vo/medic_PainSharp05.mp3" + "wave" "vo/medic_PainSharp06.mp3" + "wave" "vo/medic_PainSharp07.mp3" + "wave" "vo/medic_PainSharp08.mp3" + } +} + + + +"Pyro.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pyro_PainSevere01.mp3" + "wave" "vo/pyro_PainSevere02.mp3" + "wave" "vo/pyro_PainSevere03.mp3" + "wave" "vo/pyro_PainSevere04.mp3" + "wave" "vo/pyro_PainSevere05.mp3" + "wave" "vo/pyro_PainSevere06.mp3" + } +} + +"Pyro.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pyro_PainCrticialDeath01.mp3" + "wave" "vo/pyro_PainCrticialDeath02.mp3" + "wave" "vo/pyro_PainCrticialDeath03.mp3" + } +} + +"Pyro.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pyro_PainCrticialDeath01.mp3" + "wave" "vo/pyro_PainCrticialDeath02.mp3" + "wave" "vo/pyro_PainCrticialDeath03.mp3" + } +} + +"Pyro.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pyro_PainSharp01.mp3" + "wave" "vo/pyro_PainSharp02.mp3" + "wave" "vo/pyro_PainSharp03.mp3" + "wave" "vo/pyro_PainSharp04.mp3" + "wave" "vo/pyro_PainSharp05.mp3" + "wave" "vo/pyro_PainSharp06.mp3" + "wave" "vo/pyro_PainSharp07.mp3" + } +} + + +"Scout.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainSevere01.mp3" + "wave" "vo/scout_PainSevere02.mp3" + "wave" "vo/scout_PainSevere03.mp3" + "wave" "vo/scout_PainSevere04.mp3" + "wave" "vo/scout_PainSevere05.mp3" + "wave" "vo/scout_PainSevere06.mp3" + } +} + +"Scout.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Scout.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Scout.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainSharp01.mp3" + "wave" "vo/scout_PainSharp02.mp3" + "wave" "vo/scout_PainSharp03.mp3" + "wave" "vo/scout_PainSharp04.mp3" + "wave" "vo/scout_PainSharp05.mp3" + "wave" "vo/scout_PainSharp06.mp3" + "wave" "vo/scout_PainSharp07.mp3" + "wave" "vo/scout_PainSharp08.mp3" + } +} + + +"Sniper.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_PainSevere01.mp3" + "wave" "vo/sniper_PainSevere02.mp3" + "wave" "vo/sniper_PainSevere03.mp3" + "wave" "vo/sniper_PainSevere04.mp3" + } +} + +"Sniper.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_PainCrticialDeath01.mp3" + "wave" "vo/sniper_PainCrticialDeath02.mp3" + "wave" "vo/sniper_PainCrticialDeath03.mp3" + "wave" "vo/sniper_PainCrticialDeath04.mp3" + } +} + +"Sniper.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_PainCrticialDeath01.mp3" + "wave" "vo/sniper_PainCrticialDeath02.mp3" + "wave" "vo/sniper_PainCrticialDeath03.mp3" + "wave" "vo/sniper_PainCrticialDeath04.mp3" + } +} + +"Sniper.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sniper_PainSharp01.mp3" + "wave" "vo/sniper_PainSharp02.mp3" + "wave" "vo/sniper_PainSharp03.mp3" + "wave" "vo/sniper_PainSharp04.mp3" + } +} + + +"Spy.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_PainSevere01.mp3" + "wave" "vo/Spy_PainSevere02.mp3" + "wave" "vo/Spy_PainSevere03.mp3" + "wave" "vo/Spy_PainSevere04.mp3" + "wave" "vo/Spy_PainSevere05.mp3" + } +} + +"Spy.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/Spy_PainCrticialDeath01.mp3" + "wave" "vo/Spy_PainCrticialDeath02.mp3" + "wave" "vo/Spy_PainCrticialDeath03.mp3" + } +} + +"Spy.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/Spy_PainCrticialDeath01.mp3" + "wave" "vo/Spy_PainCrticialDeath02.mp3" + "wave" "vo/Spy_PainCrticialDeath03.mp3" + } +} + +"Spy.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_PainSharp01.mp3" + "wave" "vo/spy_PainSharp02.mp3" + "wave" "vo/spy_PainSharp03.mp3" + "wave" "vo/spy_PainSharp04.mp3" + } +} + + +"Soldier.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_PainSevere01.mp3" + "wave" "vo/soldier_PainSevere02.mp3" + "wave" "vo/soldier_PainSevere03.mp3" + "wave" "vo/soldier_PainSevere04.mp3" + "wave" "vo/soldier_PainSevere05.mp3" + "wave" "vo/soldier_PainSevere06.mp3" + } +} + +"Soldier.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_PainCrticialDeath01.mp3" + "wave" "vo/soldier_PainCrticialDeath02.mp3" + "wave" "vo/soldier_PainCrticialDeath03.mp3" + "wave" "vo/soldier_PainCrticialDeath04.mp3" + } +} + +"Soldier.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_PainCrticialDeath01.mp3" + "wave" "vo/soldier_PainCrticialDeath02.mp3" + "wave" "vo/soldier_PainCrticialDeath03.mp3" + "wave" "vo/soldier_PainCrticialDeath04.mp3" + } +} + +"Soldier.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/soldier_PainSharp01.mp3" + "wave" "vo/soldier_PainSharp02.mp3" + "wave" "vo/soldier_PainSharp03.mp3" + "wave" "vo/soldier_PainSharp04.mp3" + "wave" "vo/soldier_PainSharp05.mp3" + "wave" "vo/soldier_PainSharp06.mp3" + "wave" "vo/soldier_PainSharp07.mp3" + "wave" "vo/soldier_PainSharp08.mp3" + } +} + +"Civilian.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainSevere01.mp3" + "wave" "vo/scout_PainSevere02.mp3" + "wave" "vo/scout_PainSevere03.mp3" + "wave" "vo/scout_PainSevere04.mp3" + "wave" "vo/scout_PainSevere05.mp3" + "wave" "vo/scout_PainSevere06.mp3" + } +} + +"Civilian.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainCrticialDeath01.mp3" + "wave" "vo/scout_PainCrticialDeath02.mp3" + "wave" "vo/scout_PainCrticialDeath03.mp3" + } +} + +"Civilian.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/scout_PainSharp01.mp3" + "wave" "vo/scout_PainSharp02.mp3" + "wave" "vo/scout_PainSharp03.mp3" + "wave" "vo/scout_PainSharp04.mp3" + "wave" "vo/scout_PainSharp05.mp3" + "wave" "vo/scout_PainSharp06.mp3" + "wave" "vo/scout_PainSharp07.mp3" + "wave" "vo/scout_PainSharp08.mp3" + } +} + + +//----------------------------------------------------------------------------- +// End Player Deaths +//----------------------------------------------------------------------------- + +"Announcer.Cart.Warning" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_cart_attacker_warning1.mp3" + "wave" "vo/announcer_cart_attacker_warning2.mp3" + "wave" "vo/announcer_cart_attacker_warning3.mp3" + "wave" "vo/announcer_cart_attacker_warning4.mp3" + "wave" "vo/announcer_cart_defender_warning1.mp3" + "wave" "vo/announcer_cart_defender_warning2.mp3" + "wave" "vo/announcer_cart_defender_warning3.mp3" + "wave" "vo/announcer_cart_defender_warning4.mp3" + "wave" "vo/announcer_cart_defender_warning5.mp3" + "wave" "vo/announcer_cart_defender_warning6.mp3" + } +} + +"Announcer.Cart.FinalWarning" + +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_cart_attacker_finalwarning1.mp3" + "wave" "vo/announcer_cart_attacker_finalwarning2.mp3" + "wave" "vo/announcer_cart_attacker_finalwarning3.mp3" + "wave" "vo/announcer_cart_attacker_finalwarning4.mp3" + "wave" "vo/announcer_cart_attacker_finalwarning5.mp3" + "wave" "vo/announcer_cart_defender_finalwarning1.mp3" + "wave" "vo/announcer_cart_defender_finalwarning2.mp3" + "wave" "vo/announcer_cart_defender_finalwarning3.mp3" + "wave" "vo/announcer_cart_defender_finalwarning4.mp3" + "wave" "vo/announcer_cart_defender_finalwarning5.mp3" + } +} + +"Announcer.TournamentModeStart" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_tournament_started1.mp3" + "wave" "vo/announcer_tournament_started2.mp3" + "wave" "vo/announcer_tournament_started3.mp3" + "wave" "vo/announcer_tournament_started4.mp3" + } +} + +"Announcer.Success" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_we_secured_control.mp3" + "wave" "vo/announcer_we_captured_control.mp3" + } +} + +"Announcer.Failure" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "wave" "vo/announcer_we_lost_control.mp3" +} + +"Announcer.AttackControlPoints" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_65dB" + + "wave" "vo/announcer_attack_controlpoints.mp3" +} + +"Announcer.CaptureControlPoints" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_65dB" + + "wave" "vo/announcer_capture_controlpoints.mp3" +} + +"Announcer.CaptureIntel" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_65dB" + + "wave" "vo/announcer_capture_intel.mp3" +} + +"Announcer.ControlPointContested" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_control_point_warning.mp3" + "wave" "vo/announcer_control_point_warning2.mp3" + "wave" "vo/announcer_control_point_warning3.mp3" + } +} + +"Announcer.ControlPointContested_Neutral" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_control_point_warning2.mp3" + "wave" "vo/announcer_control_point_warning3.mp3" + } +} + +"Announcer.DefendControlPoints" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_65dB" + + "wave" "vo/announcer_defend_controlpoints.mp3" +} + +"Announcer.DefendIntel" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_65dB" + + "wave" "vo/announcer_defend_intel.mp3" +} + +"Announcer.RoundBegins10Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_10sec.mp3" +} + +"Announcer.RoundBegins1Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_1sec.mp3" +} + +"Announcer.RoundBegins20Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_20sec.mp3" +} + +"Announcer.RoundBegins2Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_2sec.mp3" +} + +"Announcer.RoundBegins30Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_30sec.mp3" +} + +"Announcer.RoundBegins3Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_3sec.mp3" +} + +"Announcer.RoundBegins4Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_4sec.mp3" +} + +"Announcer.RoundBegins5Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_5sec.mp3" +} + +"Announcer.RoundBegins60Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_begins_60sec.mp3" +} + +"Announcer.RoundEnds10seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_10sec.mp3" +} + +"Announcer.RoundEnds1seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_1sec.mp3" +} + +"Announcer.RoundEnds20seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_20sec.mp3" +} + +"Announcer.RoundEnds2minutes" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_2min.mp3" +} + +"Announcer.RoundEnds2seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_2sec.mp3" +} + +"Announcer.RoundEnds30seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_30sec.mp3" +} + +"Announcer.RoundEnds3seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_3sec.mp3" +} + +"Announcer.RoundEnds4seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_4sec.mp3" +} + +"Announcer.RoundEnds5minutes" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_5min.mp3" +} + +"Announcer.RoundEnds5seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_5sec.mp3" +} + +"Announcer.RoundEnds60seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_60sec.mp3" +} + +"Announcer.RoundEnds6seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_6sec.mp3" +} + +"Announcer.RoundEnds7seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_7sec.mp3" +} + +"Announcer.RoundEnds8seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_8sec.mp3" +} + +"Announcer.RoundEnds9seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_ends_9sec.mp3" +} + +"Announcer.TimeAdded" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_time_added.mp3" +} + +"Announcer.TimeAddedForEnemy" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_time_added_enemy.mp3" +} + +"Announcer.TimeAwarded" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_time_awarded.mp3" +} + +"Announcer.TimeAwardedCongrats" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_time_awarded_congrats.mp3" +} + +"Announcer.TimeAwardedForTeam" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_time_awarded.mp3" + "wave" "vo/announcer_time_awarded_success.mp3" + "wave" "vo/announcer_time_awarded_congrats.mp3" + } +} + +"Announcer.TimeAwardedSuccess" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_time_awarded_success.mp3" +} + +"AttackDefend.Captured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "ambience/goal_1.wav" +} + +"AttackDefend.Captured.vo" +{ + "channel" "CHAN_ITEM" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/doop.mp3" +} + +"AttackDefend.EnemyCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_enemycaptured.mp3" +} + +"AttackDefend.EnemyDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_enemydropped.mp3" +} + +"AttackDefend.EnemyReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_enemyreturned.mp3" +} + +"AttackDefend.EnemyStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_enemystolen.mp3" +} + +"AttackDefend.TeamCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_teamcaptured.mp3" +} + +"AttackDefend.TeamDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_teamdropped.mp3" +} + +"AttackDefend.TeamReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_teamreturned.mp3" +} + +"AttackDefend.TeamStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/attack_defend_intel_teamstolen.mp3" +} + +"MVM.AttackDefend.EnemyCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemycaptured.mp3" + "wave" "vo/intel_enemycaptured.mp3" + "wave" "vo/intel_enemycaptured2.mp3" + } +} + +"MVM.AttackDefend.EnemyDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemydropped.mp3" + "wave" "vo/intel_enemydropped2.mp3" + } +} + +"MVM.AttackDefend.EnemyReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/mvm_bomb_back02.mp3" +} + +"MVM.AttackDefend.EnemyStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemystolen.mp3" + "wave" "vo/intel_enemystolen2.mp3" + "wave" "vo/intel_enemystolen3.mp3" + "wave" "vo/intel_enemystolen4.mp3" + } +} + +"CaptureFlag.EnemyCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemycaptured.mp3" + "wave" "vo/intel_enemycaptured.mp3" + "wave" "vo/intel_enemycaptured2.mp3" + } +} + +"CaptureFlag.EnemyDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemydropped.mp3" + "wave" "vo/intel_enemydropped2.mp3" + } +} + +"CaptureFlag.EnemyReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemyreturned.mp3" + "wave" "vo/intel_enemyreturned2.mp3" + "wave" "vo/intel_enemyreturned3.mp3" + } +} + +"CaptureFlag.EnemyStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemystolen.mp3" + "wave" "vo/intel_enemystolen2.mp3" + "wave" "vo/intel_enemystolen3.mp3" + "wave" "vo/intel_enemystolen4.mp3" + } +} + +"CaptureFlag.FlagSpawn" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "items/itembk2.wav" +} + +"CaptureFlag.TeamCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/intel_teamcaptured.mp3" +} + +"CaptureFlag.TeamCapturedExcited" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_teamcaptured_excited.mp3" + "wave" "vo/intel_teamcaptured_excited2.mp3" + } +} + +"CaptureFlag.TeamDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_teamdropped.mp3" + "wave" "vo/intel_teamdropped2.mp3" + } +} + +"CaptureFlag.TeamReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/intel_teamreturned.mp3" +} + +"CaptureFlag.TeamStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/intel_teamstolen.mp3" +} + +"ControlPoint.CaptureWarn" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_last_flag.mp3" + "wave" "vo/announcer_last_flag2.mp3" + } +} + +"Demoman.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ActivateCharge01.mp3" +} + +"Demoman.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ActivateCharge02.mp3" +} + +"Demoman.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ActivateCharge03.mp3" +} + +"Demoman.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoCappedControlPoint01.mp3" +} + +"Demoman.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoCappedControlPoint02.mp3" +} + +"Demoman.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoCappedControlPoint03.mp3" +} + +"Demoman.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoCappedIntelligence01.mp3" +} + +"Demoman.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoCappedIntelligence02.mp3" +} + +"Demoman.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoCappedIntelligence03.mp3" +} + +"Demoman.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoDejectedTie01.mp3" +} + +"Demoman.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoDejectedTie02.mp3" +} + +"Demoman.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoDejectedTie03.mp3" +} + +"Demoman.AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoDejectedTie04.mp3" +} + +"Demoman.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoOnFire01.mp3" +} + +"Demoman.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoOnFire02.mp3" +} + +"Demoman.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_AutoOnFire03.mp3" +} + +"Demoman.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry01.mp3" +} + +"Demoman.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry02.mp3" +} + +"Demoman.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry03.mp3" +} + +"Demoman.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry04.mp3" +} + +"Demoman.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry05.mp3" +} + +"Demoman.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry06.mp3" +} + +"Demoman.BattleCry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_BattleCry07.mp3" +} + +"Demoman.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers01.mp3" +} + +"Demoman.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers02.mp3" +} + +"Demoman.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers03.mp3" +} + +"Demoman.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers04.mp3" +} + +"Demoman.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers05.mp3" +} + +"Demoman.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers06.mp3" +} + +"Demoman.Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers07.mp3" +} + +"Demoman.Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Cheers08.mp3" +} + +"Demoman.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpy01.mp3" +} + +"Demoman.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpy02.mp3" +} + +"Demoman.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpy03.mp3" +} + +"Demoman.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify01.mp3" +} + +"Demoman.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify02.mp3" +} + +"Demoman.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify03.mp3" +} + +"Demoman.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify04.mp3" +} + +"Demoman.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify05.mp3" +} + +"Demoman.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify06.mp3" +} + +"Demoman.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify07.mp3" +} + +"Demoman.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify08.mp3" +} + +"Demoman.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_CloakedSpyIdentify09.mp3" +} + +"Demoman.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Go01.mp3" +} + +"Demoman.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Go02.mp3" +} + +"Demoman.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Go03.mp3" +} + +"Demoman.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_GoodJob01.mp3" +} + +"Demoman.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_GoodJob02.mp3" +} + +"Demoman.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HeadLeft01.mp3" +} + +"Demoman.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HeadLeft02.mp3" +} + +"Demoman.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HeadLeft03.mp3" +} + +"Demoman.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HeadRight01.mp3" +} + +"Demoman.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HeadRight02.mp3" +} + +"Demoman.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HeadRight03.mp3" +} + +"Demoman.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMe01.mp3" +} + +"Demoman.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMe02.mp3" +} + +"Demoman.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMe03.mp3" +} + +"Demoman.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMeCapture01.mp3" +} + +"Demoman.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMeCapture02.mp3" +} + +"Demoman.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMeCapture03.mp3" +} + +"Demoman.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMeDefend01.mp3" +} + +"Demoman.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMeDefend02.mp3" +} + +"Demoman.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_HelpMeDefend03.mp3" +} + +"Demoman.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Incoming01.mp3" +} + +"Demoman.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Incoming02.mp3" +} + +"Demoman.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Incoming03.mp3" +} + +"Demoman.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers01.mp3" +} + +"Demoman.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers02.mp3" +} + +"Demoman.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers03.mp3" +} + +"Demoman.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers04.mp3" +} + +"Demoman.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers05.mp3" +} + +"Demoman.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers06.mp3" +} + +"Demoman.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers07.mp3" +} + +"Demoman.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers08.mp3" +} + +"Demoman.Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers09.mp3" +} + +"Demoman.Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers10.mp3" +} + +"Demoman.Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Jeers11.mp3" +} + +"Demoman.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughEvil01.mp3" +} + +"Demoman.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughEvil02.mp3" +} + +"Demoman.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughEvil03.mp3" +} + +"Demoman.LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughEvil04.mp3" +} + +"Demoman.LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughEvil05.mp3" +} + +"Demoman.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughHappy01.mp3" +} + +"Demoman.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughHappy02.mp3" +} + +"Demoman.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughLong01.mp3" +} + +"Demoman.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughLong02.mp3" +} + +"Demoman.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughShort01.mp3" +} + +"Demoman.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughShort02.mp3" +} + +"Demoman.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughShort03.mp3" +} + +"Demoman.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughShort04.mp3" +} + +"Demoman.LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughShort05.mp3" +} + +"Demoman.LaughShort06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_LaughShort06.mp3" +} + +"Demoman.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Medic01.mp3" +} + +"Demoman.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Medic02.mp3" +} + +"Demoman.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Medic03.mp3" +} + +"Demoman.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_MoveUp01.mp3" +} + +"Demoman.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_MoveUp02.mp3" +} + +"Demoman.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_MoveUp03.mp3" +} + +"Demoman.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NeedDispenser01.mp3" +} + +"Demoman.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NeedSentry01.mp3" +} + +"Demoman.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NeedTeleporter01.mp3" +} + +"Demoman.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NegativeVocalization01.mp3" +} + +"Demoman.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NegativeVocalization02.mp3" +} + +"Demoman.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NegativeVocalization03.mp3" +} + +"Demoman.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NegativeVocalization04.mp3" +} + +"Demoman.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NegativeVocalization05.mp3" +} + +"Demoman.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NegativeVocalization06.mp3" +} + +"Demoman.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NiceShot01.mp3" +} + +"Demoman.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NiceShot02.mp3" +} + +"Demoman.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_NiceShot03.mp3" +} + +"Demoman.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_No01.mp3" +} + +"Demoman.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_No02.mp3" +} + +"Demoman.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_No03.mp3" +} + +"Demoman.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainCrticialDeath01.mp3" +} + +"Demoman.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainCrticialDeath02.mp3" +} + +"Demoman.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainCrticialDeath03.mp3" +} + +"Demoman.PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainCrticialDeath04.mp3" +} + +"Demoman.PainCrticialDeath05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainCrticialDeath05.mp3" +} + +"Demoman.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSevere01.mp3" +} + +"Demoman.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSevere02.mp3" +} + +"Demoman.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSevere03.mp3" +} + +"Demoman.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSevere04.mp3" +} + +"Demoman.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp01.mp3" +} + +"Demoman.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp02.mp3" +} + +"Demoman.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp03.mp3" +} + +"Demoman.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp04.mp3" +} + +"Demoman.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp05.mp3" +} + +"Demoman.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp06.mp3" +} + +"Demoman.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PainSharp07.mp3" +} + +"Demoman.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PositiveVocalization01.mp3" +} + +"Demoman.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PositiveVocalization02.mp3" +} + +"Demoman.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PositiveVocalization03.mp3" +} + +"Demoman.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PositiveVocalization04.mp3" +} + +"Demoman.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_PositiveVocalization05.mp3" +} + +"Demoman.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SentryAhead01.mp3" +} + +"Demoman.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SentryAhead02.mp3" +} + +"Demoman.SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SentryAhead03.mp3" +} + +"Demoman.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted-AssistedKill01.mp3" +} + +"Demoman.SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted-AssistedKill02.mp3" +} + +"Demoman.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted01.mp3" +} + +"Demoman.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted02.mp3" +} + +"Demoman.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted03.mp3" +} + +"Demoman.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted04.mp3" +} + +"Demoman.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted05.mp3" +} + +"Demoman.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted06.mp3" +} + +"Demoman.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted07.mp3" +} + +"Demoman.SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted08.mp3" +} + +"Demoman.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted09.mp3" +} + +"Demoman.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted10.mp3" +} + +"Demoman.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted11.mp3" +} + +"Demoman.SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_SpecialCompleted12.mp3" +} + +"Demoman.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_StandOnThePoint01.mp3" +} + +"Demoman.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_StandOnThePoint02.mp3" +} + +"Demoman.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts01.mp3" +} + +"Demoman.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts02.mp3" +} + +"Demoman.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts03.mp3" +} + +"Demoman.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts04.mp3" +} + +"Demoman.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts05.mp3" +} + +"Demoman.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts06.mp3" +} + +"Demoman.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts07.mp3" +} + +"Demoman.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts08.mp3" +} + +"Demoman.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts09.mp3" +} + +"Demoman.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts10.mp3" +} + +"Demoman.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts11.mp3" +} + +"Demoman.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts12.mp3" +} + +"Demoman.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts13.mp3" +} + +"Demoman.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts14.mp3" +} + +"Demoman.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts15.mp3" +} + + +"Demoman.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts16.mp3" +} + +"Demoman.Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/demoman_Taunts17.mp3" +} + +"Demoman.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Thanks01.mp3" +} + +"Demoman.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Thanks02.mp3" +} + +"Demoman.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ThanksForTheHeal01.mp3" +} + +"Demoman.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ThanksForTheHeal02.mp3" +} + +"Demoman.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ThanksForTheHeal03.mp3" +} + +"Demoman.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ThanksForTheTeleporter01.mp3" +} + +"Demoman.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_ThanksForTheTeleporter02.mp3" +} + +"Demoman.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Yes01.mp3" +} + +"Demoman.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Yes02.mp3" +} + +"Demoman.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/demoman_Yes03.mp3" +} + +"Engineer.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ActivateCharge01.mp3" +} + +"Engineer.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ActivateCharge02.mp3" +} + +"Engineer.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ActivateCharge03.mp3" +} + +"Engineer.AutoAttackedBySpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoAttackedBySpy01.mp3" +} + +"Engineer.AutoAttackedBySpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoAttackedBySpy02.mp3" +} + +"Engineer.AutoAttackedBySpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoAttackedBySpy03.mp3" +} + +"Engineer.AutoBuildingDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoBuildingDispenser01.mp3" +} + +"Engineer.AutoBuildingDispenser02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoBuildingDispenser02.mp3" +} + +"Engineer.AutoBuildingSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoBuildingSentry01.mp3" +} + +"Engineer.AutoBuildingSentry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoBuildingSentry02.mp3" +} + +"Engineer.AutoBuildingTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoBuildingTeleporter01.mp3" +} + +"Engineer.AutoBuildingTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoBuildingTeleporter02.mp3" +} + +"Engineer.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoCappedControlPoint01.mp3" +} + +"Engineer.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoCappedControlPoint02.mp3" +} + +"Engineer.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoCappedControlPoint03.mp3" +} + +"Engineer.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoCappedIntelligence01.mp3" +} + +"Engineer.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoCappedIntelligence02.mp3" +} + +"Engineer.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoCappedIntelligence03.mp3" +} + +"Engineer.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoDejectedTie01.mp3" +} + +"Engineer.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoDejectedTie02.mp3" +} + +"Engineer.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoDejectedTie03.mp3" +} + +"Engineer.AutoDestroyedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoDestroyedDispenser01.mp3" +} + +"Engineer.AutoDestroyedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoDestroyedSentry01.mp3" +} + +"Engineer.AutoDestroyedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoDestroyedTeleporter01.mp3" +} + +"Engineer.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoOnFire01.mp3" +} + +"Engineer.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoOnFire02.mp3" +} + +"Engineer.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_AutoOnFire03.mp3" +} + +"Engineer.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry01.mp3" +} + +"Engineer.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry02.mp3" +} + +"Engineer.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry03.mp3" +} + +"Engineer.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry04.mp3" +} + +"Engineer.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry05.mp3" +} + +"Engineer.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry06.mp3" +} + +"Engineer.BattleCry07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_BattleCry07.mp3" +} + +"Engineer.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers01.mp3" +} + +"Engineer.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers02.mp3" +} + +"Engineer.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers03.mp3" +} + +"Engineer.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers04.mp3" +} + +"Engineer.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers05.mp3" +} + +"Engineer.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers06.mp3" +} + +"Engineer.Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Cheers07.mp3" +} + +"Engineer.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpy01.mp3" +} + +"Engineer.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpy02.mp3" +} + +"Engineer.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpy03.mp3" +} + +"Engineer.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify01.mp3" +} + +"Engineer.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify02.mp3" +} + +"Engineer.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify03.mp3" +} + +"Engineer.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify04.mp3" +} + +"Engineer.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify05.mp3" +} + +"Engineer.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify06.mp3" +} + +"Engineer.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify07.mp3" +} + +"Engineer.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify08.mp3" +} + +"Engineer.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify09.mp3" +} + +"Engineer.CloakedSpyIdentify10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_CloakedSpyIdentify10.mp3" +} + +"Engineer.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Go01.mp3" +} + +"Engineer.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Go02.mp3" +} + +"Engineer.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Go03.mp3" +} + +"Engineer.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_GoodJob01.mp3" +} + +"Engineer.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_GoodJob02.mp3" +} + +"Engineer.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_GoodJob03.mp3" +} + +"Engineer.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HeadLeft01.mp3" +} + +"Engineer.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HeadLeft02.mp3" +} + +"Engineer.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HeadRight01.mp3" +} + +"Engineer.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HeadRight02.mp3" +} + +"Engineer.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HeadRight03.mp3" +} + +"Engineer.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMe01.mp3" +} + +"Engineer.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMe02.mp3" +} + +"Engineer.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMe03.mp3" +} + +"Engineer.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMeCapture01.mp3" +} + +"Engineer.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMeCapture02.mp3" +} + +"Engineer.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMeCapture03.mp3" +} + +"Engineer.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMeDefend01.mp3" +} + +"Engineer.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMeDefend02.mp3" +} + +"Engineer.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_HelpMeDefend03.mp3" +} + +"Engineer.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Incoming01.mp3" +} + +"Engineer.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Incoming02.mp3" +} + +"Engineer.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Incoming03.mp3" +} + +"Engineer.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Jeers01.mp3" +} + +"Engineer.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Jeers02.mp3" +} + +"Engineer.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Jeers03.mp3" +} + +"Engineer.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Jeers04.mp3" +} + +"Engineer.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughEvil01.mp3" +} + +"Engineer.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughEvil02.mp3" +} + +"Engineer.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughEvil03.mp3" +} + +"Engineer.LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughEvil04.mp3" +} + +"Engineer.LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughEvil05.mp3" +} + +"Engineer.LaughEvil06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughEvil06.mp3" +} + +"Engineer.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughHappy01.mp3" +} + +"Engineer.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughHappy02.mp3" +} + +"Engineer.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughHappy03.mp3" +} + +"Engineer.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughLong01.mp3" +} +"Engineer.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughLong02.mp3" +} + + +"Engineer.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughShort01.mp3" +} + +"Engineer.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughShort02.mp3" +} + +"Engineer.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughShort03.mp3" +} + +"Engineer.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_LaughShort04.mp3" +} + +"Engineer.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Medic01.mp3" +} + +"Engineer.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Medic02.mp3" +} + +"Engineer.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Medic03.mp3" +} + +"Engineer.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_MoveUp01.mp3" +} + +"Engineer.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NeedDispenser01.mp3" +} + +"Engineer.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NeedSentry01.mp3" +} + +"Engineer.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NeedTeleporter01.mp3" +} + +"Engineer.NeedTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NeedTeleporter02.mp3" +} + +"Engineer.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization01.mp3" +} + +"Engineer.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization02.mp3" +} + +"Engineer.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization03.mp3" +} + +"Engineer.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization04.mp3" +} + +"Engineer.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization05.mp3" +} + +"Engineer.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization06.mp3" +} + +"Engineer.NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization07.mp3" +} + +"Engineer.NegativeVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization08.mp3" +} + +"Engineer.NegativeVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization09.mp3" +} + +"Engineer.NegativeVocalization10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization10.mp3" +} + +"Engineer.NegativeVocalization11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization11.mp3" +} + +"Engineer.NegativeVocalization12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NegativeVocalization12.mp3" +} + +"Engineer.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NiceShot01.mp3" +} + +"Engineer.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NiceShot02.mp3" +} + +"Engineer.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_NiceShot03.mp3" +} + +"Engineer.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_No01.mp3" +} + +"Engineer.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_No02.mp3" +} + +"Engineer.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_No03.mp3" +} + +"Engineer.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainCrticialDeath01.mp3" +} + +"Engineer.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainCrticialDeath02.mp3" +} + +"Engineer.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainCrticialDeath03.mp3" +} + +"Engineer.PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainCrticialDeath04.mp3" +} + +"Engineer.PainCrticialDeath05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainCrticialDeath05.mp3" +} + +"Engineer.PainCrticialDeath06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainCrticialDeath06.mp3" +} + +"Engineer.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere01.mp3" +} + +"Engineer.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere02.mp3" +} + +"Engineer.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere03.mp3" +} + +"Engineer.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere04.mp3" +} + +"Engineer.PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere05.mp3" +} + +"Engineer.PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere06.mp3" +} + +"Engineer.PainSevere07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSevere07.mp3" +} + +"Engineer.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp01.mp3" +} + +"Engineer.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp02.mp3" +} + +"Engineer.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp03.mp3" +} + +"Engineer.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp04.mp3" +} + +"Engineer.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp05.mp3" +} + +"Engineer.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp06.mp3" +} + +"Engineer.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp07.mp3" +} + +"Engineer.PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PainSharp08.mp3" +} + +"Engineer.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_PositiveVocalization01.mp3" +} + +"Engineer.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SentryAhead01.mp3" +} + +"Engineer.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SentryAhead02.mp3" +} + +"Engineer.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted-AssistedKill01.mp3" +} + +"Engineer.SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted-AssistedKill02.mp3" +} + +"Engineer.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted01.mp3" +} + +"Engineer.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted02.mp3" +} + +"Engineer.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted03.mp3" +} + +"Engineer.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted04.mp3" +} + +"Engineer.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted05.mp3" +} + +"Engineer.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted06.mp3" +} + +"Engineer.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted07.mp3" +} + +"Engineer.SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted08.mp3" +} + +"Engineer.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted09.mp3" +} + +"Engineer.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted10.mp3" +} + +"Engineer.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_SpecialCompleted11.mp3" +} + +"Engineer.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_StandOnThePoint01.mp3" +} + +"Engineer.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_StandOnThePoint02.mp3" +} + +"Engineer.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts01.mp3" +} + +"Engineer.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts02.mp3" +} + +"Engineer.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts03.mp3" +} + +"Engineer.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts04.mp3" +} + +"Engineer.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts05.mp3" +} + +"Engineer.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts06.mp3" +} + +"Engineer.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts07.mp3" +} + +"Engineer.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts08.mp3" +} + +"Engineer.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts09.mp3" +} + +"Engineer.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts10.mp3" +} + +"Engineer.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts11.mp3" +} + +"Engineer.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/engineer_Taunts12.mp3" +} + +"Engineer.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Thanks01.mp3" +} + +"Engineer.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ThanksForTheHeal01.mp3" +} + +"Engineer.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ThanksForTheHeal02.mp3" +} + +"Engineer.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ThanksForTheTeleporter01.mp3" +} + +"Engineer.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_ThanksForTheTeleporter02.mp3" +} + +"Engineer.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Yes01.mp3" +} + +"Engineer.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Yes02.mp3" +} + +"Engineer.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/engineer_Yes03.mp3" +} + +"Heavy.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ActivateCharge01.mp3" +} + +"Heavy.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ActivateCharge02.mp3" +} + +"Heavy.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ActivateCharge03.mp3" +} + +"Heavy.ActivateCharge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ActivateCharge04.mp3" +} + +"Heavy.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoCappedControlPoint01.mp3" +} + +"Heavy.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoCappedControlPoint02.mp3" +} + +"Heavy.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoCappedControlPoint03.mp3" +} + +"Heavy.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoCappedIntelligence01.mp3" +} + +"Heavy.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoCappedIntelligence02.mp3" +} + +"Heavy.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoCappedIntelligence03.mp3" +} + +"Heavy.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoDejectedTie01.mp3" +} + +"Heavy.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoDejectedTie02.mp3" +} + +"Heavy.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoDejectedTie03.mp3" +} + +"Heavy.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoOnFire01.mp3" +} + +"Heavy.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoOnFire02.mp3" +} + +"Heavy.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoOnFire03.mp3" +} + +"Heavy.AutoOnFire04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoOnFire04.mp3" +} + +"Heavy.AutoOnFire05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_AutoOnFire05.mp3" +} + +"Heavy.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_BattleCry01.mp3" +} + +"Heavy.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_BattleCry02.mp3" +} + +"Heavy.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_BattleCry03.mp3" +} + +"Heavy.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_BattleCry04.mp3" +} + +"Heavy.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_BattleCry05.mp3" +} + +"Heavy.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_BattleCry06.mp3" +} + +"Heavy.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers01.mp3" +} + +"Heavy.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers02.mp3" +} + +"Heavy.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers03.mp3" +} + +"Heavy.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers04.mp3" +} + +"Heavy.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers05.mp3" +} + +"Heavy.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers06.mp3" +} + +"Heavy.Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers07.mp3" +} + +"Heavy.Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Cheers08.mp3" +} + +"Heavy.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpy01.mp3" +} + +"Heavy.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpy02.mp3" +} + +"Heavy.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpy03.mp3" +} + +"Heavy.CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpy04.mp3" +} + +"Heavy.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify01.mp3" +} + +"Heavy.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify02.mp3" +} + +"Heavy.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify03.mp3" +} + +"Heavy.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify04.mp3" +} + +"Heavy.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify05.mp3" +} + +"Heavy.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify06.mp3" +} + +"Heavy.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify07.mp3" +} + +"Heavy.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify08.mp3" +} + +"Heavy.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_CloakedSpyIdentify09.mp3" +} + +"Heavy.Generic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Generic01.mp3" +} + +"Heavy.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Go01.mp3" +} + +"Heavy.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Go02.mp3" +} + +"Heavy.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Go03.mp3" +} + +"Heavy.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_GoodJob01.mp3" +} + +"Heavy.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_GoodJob02.mp3" +} + +"Heavy.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_GoodJob03.mp3" +} + +"Heavy.GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_GoodJob04.mp3" +} + +"Heavy.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HeadLeft01.mp3" +} + +"Heavy.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HeadLeft02.mp3" +} + +"Heavy.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HeadLeft03.mp3" +} + +"Heavy.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HeadRight01.mp3" +} + +"Heavy.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HeadRight02.mp3" +} + +"Heavy.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HeadRight03.mp3" +} + +"Heavy.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMe01.mp3" +} + +"Heavy.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMe02.mp3" +} + +"Heavy.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMe03.mp3" +} + +"Heavy.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMeCapture01.mp3" +} + +"Heavy.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMeCapture02.mp3" +} + +"Heavy.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMeCapture03.mp3" +} + +"Heavy.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMeDefend01.mp3" +} + +"Heavy.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMeDefend02.mp3" +} + +"Heavy.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_HelpMeDefend03.mp3" +} + +"Heavy.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Incoming01.mp3" +} + +"Heavy.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Incoming02.mp3" +} + +"Heavy.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Incoming03.mp3" +} + +"Heavy.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers01.mp3" +} + +"Heavy.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers02.mp3" +} + +"Heavy.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers03.mp3" +} + +"Heavy.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers04.mp3" +} + +"Heavy.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers05.mp3" +} + +"Heavy.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers06.mp3" +} + +"Heavy.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers07.mp3" +} + +"Heavy.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers08.mp3" +} + +"Heavy.Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Jeers09.mp3" +} + +"Heavy.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughEvil01.mp3" +} + +"Heavy.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughEvil02.mp3" +} + +"Heavy.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughEvil03.mp3" +} + +"Heavy.LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughEvil04.mp3" +} + +"Heavy.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughHappy01.mp3" +} + +"Heavy.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughHappy02.mp3" +} + +"Heavy.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughHappy03.mp3" +} + +"Heavy.LaughHappy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughHappy04.mp3" +} + +"Heavy.LaughHappy05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughHappy05.mp3" +} + +"Heavy.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughLong01.mp3" +} + +"Heavy.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughLong02.mp3" +} + +"Heavy.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughShort01.mp3" +} + +"Heavy.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughShort02.mp3" +} + +"Heavy.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_LaughShort03.mp3" +} + +"Heavy.LaugherBigSnort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_laugherbigsnort01.mp3" +} + +"Heavy.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Medic01.mp3" +} + +"Heavy.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Medic02.mp3" +} + +"Heavy.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Medic03.mp3" +} + +"Heavy.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_MoveUp01.mp3" +} + +"Heavy.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_MoveUp02.mp3" +} + +"Heavy.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_MoveUp03.mp3" +} + +"Heavy.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NeedDispenser01.mp3" +} + +"Heavy.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NeedSentry01.mp3" +} + +"Heavy.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NeedTeleporter01.mp3" +} + +"Heavy.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NegativeVocalization01.mp3" +} + +"Heavy.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NegativeVocalization02.mp3" +} + +"Heavy.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NegativeVocalization03.mp3" +} + +"Heavy.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NegativeVocalization04.mp3" +} + +"Heavy.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NegativeVocalization05.mp3" +} + +"Heavy.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NegativeVocalization06.mp3" +} + +"Heavy.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NiceShot01.mp3" +} + +"Heavy.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NiceShot02.mp3" +} + +"Heavy.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_NiceShot03.mp3" +} + +"Heavy.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_No01.mp3" +} + +"Heavy.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_No02.mp3" +} + +"Heavy.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_No03.mp3" +} + +"Heavy.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainCrticialDeath01.mp3" +} + +"Heavy.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainCrticialDeath02.mp3" +} + +"Heavy.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainCrticialDeath03.mp3" +} + +"Heavy.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSevere01.mp3" +} + +"Heavy.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSevere02.mp3" +} + +"Heavy.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSevere03.mp3" +} + +"Heavy.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSharp01.mp3" +} + +"Heavy.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSharp02.mp3" +} + +"Heavy.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSharp03.mp3" +} + +"Heavy.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSharp04.mp3" +} + +"Heavy.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PainSharp05.mp3" +} + +"Heavy.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PositiveVocalization01.mp3" +} + +"Heavy.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PositiveVocalization02.mp3" +} + +"Heavy.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PositiveVocalization03.mp3" +} + +"Heavy.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PositiveVocalization04.mp3" +} + +"Heavy.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_PositiveVocalization05.mp3" +} + +"Heavy.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SentryAhead01.mp3" +} + +"Heavy.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SentryAhead02.mp3" +} + +"Heavy.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted-AssistedKill01.mp3" +} + +"Heavy.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted01.mp3" +} + +"Heavy.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted02.mp3" +} + +"Heavy.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted03.mp3" +} + +"Heavy.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted04.mp3" +} + +"Heavy.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted05.mp3" +} + +"Heavy.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted06.mp3" +} + +"Heavy.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted07.mp3" +} + +"Heavy.SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted08.mp3" +} + +"Heavy.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted09.mp3" +} + +"Heavy.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted10.mp3" +} + +"Heavy.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_SpecialCompleted11.mp3" +} + +"Heavy.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_StandOnThePoint01.mp3" +} + +"Heavy.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_StandOnThePoint02.mp3" +} + +"Heavy.StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_StandOnThePoint03.mp3" +} + +"Heavy.StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_StandOnThePoint04.mp3" +} + +"Heavy.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts01.mp3" +} + +"Heavy.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts02.mp3" +} + +"Heavy.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts03.mp3" +} + +"Heavy.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts04.mp3" +} + +"Heavy.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts05.mp3" +} + +"Heavy.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts06.mp3" +} + +"Heavy.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts07.mp3" +} + +"Heavy.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts08.mp3" +} + +"Heavy.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts09.mp3" +} + +"Heavy.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts10.mp3" +} + +"Heavy.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts11.mp3" +} + +"Heavy.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts12.mp3" +} + +"Heavy.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts13.mp3" +} + +"Heavy.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts14.mp3" +} + +"Heavy.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts15.mp3" +} + +"Heavy.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts16.mp3" +} + +"Heavy.Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts17.mp3" +} + +"Heavy.Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts18.mp3" +} + +"Heavy.Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/heavy_Taunts19.mp3" +} + +"Heavy.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Thanks01.mp3" +} + +"Heavy.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Thanks02.mp3" +} + +"Heavy.Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Thanks03.mp3" +} + +"Heavy.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ThanksForTheHeal01.mp3" +} + +"Heavy.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ThanksForTheHeal02.mp3" +} + +"Heavy.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ThanksForTheHeal03.mp3" +} + +"Heavy.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ThanksForTheTeleporter01.mp3" +} + +"Heavy.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ThanksForTheTeleporter02.mp3" +} + +"Heavy.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_ThanksForTheTeleporter03.mp3" +} + +"Heavy.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Yes01.mp3" +} + +"Heavy.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Yes02.mp3" +} + +"Heavy.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Yes03.mp3" +} + +"Invade.EnemyCaptured" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_enemycaptured.mp3" +} + +"Invade.EnemyDropped" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_enemydropped.mp3" +} + +"Invade.EnemyStolen" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_enemystolen.mp3" +} + +"Invade.FlagReturned" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_teamreturned.mp3" +} + +"Invade.TeamCaptured" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_teamcaptured.mp3" +} + +"Invade.TeamDropped" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_teamdropped.mp3" +} + +"Invade.TeamStolen" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/invade_intel_teamstolen.mp3" +} + +"Resource.EnemyDropped" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemydropped.mp3" + "wave" "vo/intel_enemydropped2.mp3" + } +} + +"Resource.EnemyStolen" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemystolen.mp3" + "wave" "vo/intel_enemystolen2.mp3" + "wave" "vo/intel_enemystolen3.mp3" + "wave" "vo/intel_enemystolen4.mp3" + } +} + +"Resource.EnemyReturned" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_enemyreturned.mp3" + "wave" "vo/intel_enemyreturned2.mp3" + "wave" "vo/intel_enemyreturned3.mp3" + } +} + +"Resource.FlagSpawn" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "items/itembk2.wav" +} + +"Resource.TeamDropped" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/intel_teamdropped.mp3" + "wave" "vo/intel_teamdropped2.mp3" + } +} + +"Resource.TeamStolen" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/intel_teamstolen.mp3" +} + +"Resource.TeamReturned" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/intel_teamreturned.mp3" +} + +"Medic.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ActivateCharge01.mp3" +} + +"Medic.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ActivateCharge02.mp3" +} + +"Medic.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ActivateCharge03.mp3" +} + +"Medic.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoCappedControlPoint01.mp3" +} + +"Medic.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoCappedControlPoint02.mp3" +} + +"Medic.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoCappedControlPoint03.mp3" +} + +"Medic.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoCappedIntelligence01.mp3" +} + +"Medic.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoCappedIntelligence02.mp3" +} + +"Medic.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoCappedIntelligence03.mp3" +} + +"Medic.AutoChargeReady01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoChargeReady01.mp3" +} + +"Medic.AutoChargeReady02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoChargeReady02.mp3" +} + +"Medic.AutoChargeReady03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoChargeReady03.mp3" +} + +"Medic.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie01.mp3" +} + +"Medic.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie02.mp3" +} + +"Medic.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie03.mp3" +} + +"Medic.AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie04.mp3" +} + +"Medic.AutoDejectedTie05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie05.mp3" +} + +"Medic.AutoDejectedTie06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie06.mp3" +} + +"Medic.AutoDejectedTie07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoDejectedTie07.mp3" +} + +"Medic.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoOnFire01.mp3" +} + +"Medic.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoOnFire02.mp3" +} + +"Medic.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoOnFire03.mp3" +} + +"Medic.AutoOnFire04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoOnFire04.mp3" +} + +"Medic.AutoOnFire05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_AutoOnFire05.mp3" +} + +"Medic.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_BattleCry01.mp3" +} + +"Medic.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_BattleCry02.mp3" +} + +"Medic.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_BattleCry03.mp3" +} + +"Medic.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_BattleCry04.mp3" +} + +"Medic.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_BattleCry05.mp3" +} + +"Medic.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_BattleCry06.mp3" +} + +"Medic.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Cheers01.mp3" +} + +"Medic.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Cheers02.mp3" +} + +"Medic.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Cheers03.mp3" +} + +"Medic.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Cheers04.mp3" +} + +"Medic.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Cheers05.mp3" +} + +"Medic.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Cheers06.mp3" +} + +"Medic.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpy01.mp3" +} + +"Medic.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpy02.mp3" +} + +"Medic.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify01.mp3" +} + +"Medic.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify02.mp3" +} + +"Medic.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify03.mp3" +} + +"Medic.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify04.mp3" +} + +"Medic.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify05.mp3" +} + +"Medic.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify06.mp3" +} + +"Medic.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify07.mp3" +} + +"Medic.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify08.mp3" +} + +"Medic.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_CloakedSpyIdentify09.mp3" +} + +"Medic.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Go01.mp3" +} + +"Medic.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Go02.mp3" +} + +"Medic.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Go03.mp3" +} + +"Medic.Go04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Go04.mp3" +} + +"Medic.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_GoodJob01.mp3" +} + +"Medic.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_GoodJob02.mp3" +} + +"Medic.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_GoodJob03.mp3" +} + +"Medic.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HeadLeft01.mp3" +} + +"Medic.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HeadLeft02.mp3" +} + +"Medic.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HeadLeft03.mp3" +} + +"Medic.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HeadRight01.mp3" +} + +"Medic.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HeadRight02.mp3" +} + +"Medic.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HeadRight03.mp3" +} + +"Medic.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMe01.mp3" +} + +"Medic.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMe02.mp3" +} + +"Medic.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMe03.mp3" +} + +"Medic.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMeCapture01.mp3" +} + +"Medic.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMeCapture02.mp3" +} + +"Medic.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMeDefend01.mp3" +} + +"Medic.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMeDefend02.mp3" +} + +"Medic.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_HelpMeDefend03.mp3" +} + +"Medic.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Incoming01.mp3" +} + +"Medic.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Incoming02.mp3" +} + +"Medic.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Incoming03.mp3" +} + +"Medic.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers01.mp3" +} + +"Medic.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers02.mp3" +} + +"Medic.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers03.mp3" +} + +"Medic.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers04.mp3" +} + +"Medic.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers05.mp3" +} + +"Medic.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers06.mp3" +} + +"Medic.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers07.mp3" +} + +"Medic.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers08.mp3" +} + +"Medic.Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers09.mp3" +} + +"Medic.Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers10.mp3" +} + +"Medic.Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers11.mp3" +} + +"Medic.Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Jeers12.mp3" +} + +"Medic.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughEvil01.mp3" +} + +"Medic.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughEvil02.mp3" +} + +"Medic.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughEvil03.mp3" +} + +"Medic.LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughEvil04.mp3" +} + +"Medic.LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughEvil05.mp3" +} + +"Medic.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughHappy01.mp3" +} + +"Medic.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughHappy02.mp3" +} + +"Medic.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughHappy03.mp3" +} + +"Medic.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughLong01.mp3" +} + +"Medic.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughLong02.mp3" +} + +"Medic.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughShort01.mp3" +} + +"Medic.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughShort02.mp3" +} + +"Medic.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_LaughShort03.mp3" +} + +"Medic.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Medic01.mp3" +} + +"Medic.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Medic02.mp3" +} + +"Medic.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Medic03.mp3" +} + +"Medic.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_MoveUp01.mp3" +} + +"Medic.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_MoveUp02.mp3" +} + +"Medic.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NeedDispenser01.mp3" +} + +"Medic.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NeedSentry01.mp3" +} + +"Medic.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NeedTeleporter01.mp3" +} + +"Medic.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization01.mp3" +} + +"Medic.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization02.mp3" +} + +"Medic.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization03.mp3" +} + +"Medic.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization04.mp3" +} + +"Medic.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization05.mp3" +} + +"Medic.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization06.mp3" +} + +"Medic.NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NegativeVocalization07.mp3" +} + +"Medic.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NiceShot01.mp3" +} + +"Medic.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_NiceShot02.mp3" +} + +"Medic.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_No01.mp3" +} + +"Medic.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_No02.mp3" +} + +"Medic.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_No03.mp3" +} + +"Medic.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainCrticialDeath01.mp3" +} + +"Medic.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainCrticialDeath02.mp3" +} + +"Medic.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainCrticialDeath03.mp3" +} + +"Medic.PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainCrticialDeath04.mp3" +} + +"Medic.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSevere01.mp3" +} + +"Medic.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSevere02.mp3" +} + +"Medic.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSevere03.mp3" +} + +"Medic.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSevere04.mp3" +} + +"Medic.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp01.mp3" +} + +"Medic.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp02.mp3" +} + +"Medic.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp03.mp3" +} + +"Medic.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp04.mp3" +} + +"Medic.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp05.mp3" +} + +"Medic.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp06.mp3" +} + +"Medic.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp07.mp3" +} + +"Medic.PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PainSharp08.mp3" +} + +"Medic.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PositiveVocalization01.mp3" +} + +"Medic.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PositiveVocalization02.mp3" +} + +"Medic.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PositiveVocalization03.mp3" +} + +"Medic.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PositiveVocalization04.mp3" +} + +"Medic.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PositiveVocalization05.mp3" +} + +"Medic.PositiveVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_PositiveVocalization06.mp3" +} + +"Medic.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SentryAhead01.mp3" +} + +"Medic.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SentryAhead02.mp3" +} + +"Medic.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted-AssistedKill01.mp3" +} + +"Medic.SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted-AssistedKill02.mp3" +} + +"Medic.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted01.mp3" +} + +"Medic.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted02.mp3" +} + +"Medic.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted03.mp3" +} + +"Medic.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted04.mp3" +} + +"Medic.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted05.mp3" +} + +"Medic.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted06.mp3" +} + +"Medic.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted07.mp3" +} + +"Medic.SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted08.mp3" +} + +"Medic.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted09.mp3" +} + +"Medic.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted10.mp3" +} + +"Medic.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted11.mp3" +} + +"Medic.SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_SpecialCompleted12.mp3" +} + +"Medic.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_StandOnThePoint01.mp3" +} + +"Medic.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_StandOnThePoint02.mp3" +} + +"Medic.StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_StandOnThePoint03.mp3" +} + +"Medic.StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_StandOnThePoint04.mp3" +} + +"Medic.StandOnThePoint05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_StandOnThePoint05.mp3" +} + +"Medic.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/taunts/medic_Taunts01.mp3" +} + +"Medic.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts02.mp3" +} + +"Medic.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts03.mp3" +} + +"Medic.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts04.mp3" +} + +"Medic.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts05.mp3" +} + +"Medic.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts06.mp3" +} + +"Medic.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts07.mp3" +} + +"Medic.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts08.mp3" +} + +"Medic.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts09.mp3" +} + +"Medic.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts10.mp3" +} + +"Medic.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts11.mp3" +} + +"Medic.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts12.mp3" +} + +"Medic.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts13.mp3" +} + +"Medic.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts14.mp3" +} + +"Medic.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts15.mp3" +} + +"Medic.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Thanks01.mp3" +} + +"Medic.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Thanks02.mp3" +} + +"Medic.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ThanksForTheHeal01.mp3" +} + +"Medic.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ThanksForTheHeal02.mp3" +} + +"Medic.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ThanksForTheTeleporter01.mp3" +} + +"Medic.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ThanksForTheTeleporter02.mp3" +} + +"Medic.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_ThanksForTheTeleporter03.mp3" +} + +"Medic.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Yes01.mp3" +} + +"Medic.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Yes02.mp3" +} + +"Medic.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/medic_Yes03.mp3" +} + +"Player.Burp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/burp02.mp3" +} + +"Player.Burp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/burp03.mp3" +} + +"Player.Burp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/burp04.mp3" +} + +"Player.Burp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/burp05.mp3" +} + +"Player.Burp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/burp06.mp3" +} + +"Player.Burp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/burp07.mp3" +} + +"Player.Puff" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/puff.mp3" +} + +"Pyro.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_ActivateCharge01.mp3" +} + +"Pyro.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_AutoCappedControlPoint01.mp3" +} + +"Pyro.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_AutoCappedIntelligence01.mp3" +} + +"Pyro.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_AutoDejectedTie01.mp3" +} + +"Pyro.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_AutoOnFire01.mp3" +} + +"Pyro.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_AutoOnFire02.mp3" +} + +"Pyro.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_BattleCry01.mp3" +} + +"Pyro.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_BattleCry02.mp3" +} + +"Pyro.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Cheers01.mp3" +} + +"Pyro.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_CloakedSpy01.mp3" +} + +"Pyro.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_CloakedSpyIdentify01.mp3" +} + +"Pyro.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Go01.mp3" +} + +"Pyro.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_GoodJob01.mp3" +} + +"Pyro.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_HeadLeft01.mp3" +} + +"Pyro.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_HeadRight01.mp3" +} + +"Pyro.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_HelpMe01.mp3" +} + +"Pyro.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_HelpMeCapture01.mp3" +} + +"Pyro.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_HelpMeDefend01.mp3" +} + +"Pyro.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Incoming01.mp3" +} + +"Pyro.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Jeers01.mp3" +} + +"Pyro.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Jeers02.mp3" +} + +"Pyro.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughEvil01.mp3" +} + +"Pyro.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughEvil02.mp3" +} + +"Pyro.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughEvil03.mp3" +} + +"Pyro.LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughEvil04.mp3" +} + +"Pyro.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughHappy01.mp3" +} + +"Pyro.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughLong01.mp3" +} + +"Pyro.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_LaughShort01.mp3" +} + +"Pyro.laugh_addl04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_laugh_addl04.mp3" +} + +"Pyro.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Medic01.mp3" +} + +"Pyro.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_MoveUp01.mp3" +} + +"Pyro.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_NeedDispenser01.mp3" +} + +"Pyro.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_NeedSentry01.mp3" +} + +"Pyro.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_NeedTeleporter01.mp3" +} + +"Pyro.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_NegativeVocalization01.mp3" +} + +"Pyro.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_NiceShot01.mp3" +} + +"Pyro.No01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_No01.mp3" +} + +"Pyro.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainCrticialDeath01.mp3" +} + +"Pyro.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainCrticialDeath02.mp3" +} + +"Pyro.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainCrticialDeath03.mp3" +} + +"Pyro.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSevere01.mp3" +} + +"Pyro.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSevere02.mp3" +} + +"Pyro.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSevere03.mp3" +} + +"Pyro.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSevere04.mp3" +} + +"Pyro.PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSevere05.mp3" +} + +"Pyro.PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSevere06.mp3" +} + +"Pyro.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp01.mp3" +} + +"Pyro.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp02.mp3" +} + +"Pyro.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp03.mp3" +} + +"Pyro.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp04.mp3" +} + +"Pyro.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp05.mp3" +} + +"Pyro.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp06.mp3" +} + +"Pyro.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PainSharp07.mp3" +} + +"Pyro.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_PositiveVocalization01.mp3" +} + +"Pyro.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_SentryAhead01.mp3" +} + +"Pyro.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_SpecialCompleted-AssistedKill01.mp3" +} + +"Pyro.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_SpecialCompleted01.mp3" +} + +"Pyro.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_StandOnThePoint01.mp3" +} + +"Pyro.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_Taunts01.mp3" +} + +"Pyro.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_Taunts02.mp3" +} + +"Pyro.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_Taunts03.mp3" +} + +"Pyro.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_Taunts04.mp3" +} + +"Pyro.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Thanks01.mp3" +} + +"Pyro.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_ThanksForTheHeal01.mp3" +} + +"Pyro.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_ThanksForTheTeleporter01.mp3" +} + +"Pyro.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/pyro_Yes01.mp3" +} + +"Pyro.HighFiveSuccess01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_highfive_success01.mp3" +} + +"Pyro.HighFiveSuccess02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_highfive_success02.mp3" +} + +"Pyro.HighFiveSuccess03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_highfive_success03.mp3" +} + +"Pyro.HighFive01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_highfive01.mp3" +} + +"Pyro.HighFive02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_highfive02.mp3" +} + +"Pyro.Lollichop" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/pyro_lollichop.mp3" +} + +"Scout.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ActivateCharge01.mp3" +} + +"Scout.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ActivateCharge02.mp3" +} + +"Scout.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ActivateCharge03.mp3" +} + +"Scout.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedControlPoint01.mp3" +} + +"Scout.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedControlPoint02.mp3" +} + +"Scout.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedControlPoint03.mp3" +} + +"Scout.AutoCappedControlPoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedControlPoint04.mp3" +} + +"Scout.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedIntelligence01.mp3" +} + +"Scout.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedIntelligence02.mp3" +} + +"Scout.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoCappedIntelligence03.mp3" +} + +"Scout.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoDejectedTie01.mp3" +} + +"Scout.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoDejectedTie02.mp3" +} + +"Scout.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoDejectedTie03.mp3" +} + +"Scout.AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoDejectedTie04.mp3" +} + +"Scout.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoOnFire01.mp3" +} + +"Scout.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_AutoOnFire02.mp3" +} + +"Scout.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_BattleCry01.mp3" +} + +"Scout.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_BattleCry02.mp3" +} + +"Scout.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_BattleCry03.mp3" +} + +"Scout.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_BattleCry04.mp3" +} + +"Scout.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_BattleCry05.mp3" +} + +"Scout.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Cheers01.mp3" +} + +"Scout.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Cheers02.mp3" +} + +"Scout.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Cheers03.mp3" +} + +"Scout.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Cheers04.mp3" +} + +"Scout.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Cheers05.mp3" +} + +"Scout.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Cheers06.mp3" +} + +"Scout.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpy01.mp3" +} + +"Scout.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpy02.mp3" +} + +"Scout.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpy03.mp3" +} + +"Scout.CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpy04.mp3" +} + +"Scout.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify01.mp3" +} + +"Scout.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify02.mp3" +} + +"Scout.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify03.mp3" +} + +"Scout.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify04.mp3" +} + +"Scout.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify05.mp3" +} + +"Scout.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify06.mp3" +} + +"Scout.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify07.mp3" +} + +"Scout.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify08.mp3" +} + +"Scout.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_CloakedSpyIdentify09.mp3" +} + +"Scout.Generic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Generic01.mp3" +} + +"Scout.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Go01.mp3" +} + +"Scout.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Go02.mp3" +} + +"Scout.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Go03.mp3" +} + +"Scout.Go04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Go04.mp3" +} + +"Scout.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_GoodJob01.mp3" +} + +"Scout.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_GoodJob02.mp3" +} + +"Scout.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_GoodJob03.mp3" +} + +"Scout.GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_GoodJob04.mp3" +} + +"Scout.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HeadLeft01.mp3" +} + +"Scout.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HeadLeft02.mp3" +} + +"Scout.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HeadLeft03.mp3" +} + +"Scout.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HeadRight01.mp3" +} + +"Scout.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HeadRight02.mp3" +} + +"Scout.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HeadRight03.mp3" +} + +"Scout.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMe01.mp3" +} + +"Scout.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMe02.mp3" +} + +"Scout.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMe03.mp3" +} + +"Scout.HelpMe04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMe04.mp3" +} + +"Scout.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMeCapture01.mp3" +} + +"Scout.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMeCapture02.mp3" +} + +"Scout.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMeCapture03.mp3" +} + +"Scout.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMeDefend01.mp3" +} + +"Scout.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMeDefend02.mp3" +} + +"Scout.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_HelpMeDefend03.mp3" +} + +"Scout.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Incoming01.mp3" +} + +"Scout.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Incoming02.mp3" +} + +"Scout.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Incoming03.mp3" +} + +"Scout.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers02.mp3" +} + +"Scout.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers03.mp3" +} + +"Scout.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers04.mp3" +} + +"Scout.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers05.mp3" +} + +"Scout.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers06.mp3" +} + +"Scout.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers07.mp3" +} + +"Scout.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers08.mp3" +} + +"Scout.Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers09.mp3" +} + +"Scout.Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers10.mp3" +} + +"Scout.Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers11.mp3" +} + +"Scout.Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Jeers12.mp3" +} + +"Scout.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughEvil01.mp3" +} + +"Scout.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughEvil02.mp3" +} + +"Scout.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughEvil03.mp3" +} + +"Scout.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughHappy01.mp3" +} + +"Scout.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughHappy02.mp3" +} + +"Scout.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughHappy03.mp3" +} + +"Scout.LaughHappy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughHappy04.mp3" +} + +"Scout.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughLong01.mp3" +} + +"Scout.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughLong02.mp3" +} + +"Scout.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughShort01.mp3" +} + +"Scout.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughShort02.mp3" +} + +"Scout.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughShort03.mp3" +} + +"Scout.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughShort04.mp3" +} + +"Scout.LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_LaughShort05.mp3" +} + +"Scout.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Medic01.mp3" +} + +"Scout.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Medic02.mp3" +} + +"Scout.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Medic03.mp3" +} + +"Scout.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_MoveUp01.mp3" +} + +"Scout.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_MoveUp02.mp3" +} + +"Scout.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_MoveUp03.mp3" +} + +"Scout.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NeedDispenser01.mp3" +} + +"Scout.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NeedSentry01.mp3" +} + +"Scout.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NeedTeleporter01.mp3" +} + +"Scout.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NegativeVocalization01.mp3" +} + +"Scout.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NegativeVocalization02.mp3" +} + +"Scout.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NegativeVocalization03.mp3" +} + +"Scout.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "620.000" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NegativeVocalization04.mp3" +} + +"Scout.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NegativeVocalization05.mp3" +} + +"Scout.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NiceShot01.mp3" +} + +"Scout.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NiceShot02.mp3" +} + +"Scout.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_NiceShot03.mp3" +} + +"Scout.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_No01.mp3" +} + +"Scout.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_No02.mp3" +} + +"Scout.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_No03.mp3" +} + +"Scout.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainCrticialDeath01.mp3" +} + +"Scout.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainCrticialDeath02.mp3" +} + +"Scout.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainCrticialDeath03.mp3" +} + +"Scout.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSevere01.mp3" +} + +"Scout.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSevere02.mp3" +} + +"Scout.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSevere03.mp3" +} + +"Scout.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSevere04.mp3" +} + +"Scout.PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSevere05.mp3" +} + +"Scout.PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSevere06.mp3" +} + +"Scout.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp01.mp3" +} + +"Scout.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp02.mp3" +} + +"Scout.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp03.mp3" +} + +"Scout.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp04.mp3" +} + +"Scout.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp05.mp3" +} + +"Scout.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp06.mp3" +} + +"Scout.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp07.mp3" +} + +"Scout.PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PainSharp08.mp3" +} + +"Scout.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PositiveVocalization01.mp3" +} + +"Scout.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PositiveVocalization02.mp3" +} + +"Scout.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PositiveVocalization03.mp3" +} + +"Scout.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PositiveVocalization04.mp3" +} + +"Scout.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_PositiveVocalization05.mp3" +} + +"Scout.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SentryAhead01.mp3" +} + +"Scout.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SentryAhead02.mp3" +} + +"Scout.SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SentryAhead03.mp3" +} + +"Scout.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted-AssistedKill01.mp3" +} + +"Scout.SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted-AssistedKill02.mp3" +} + +"Scout.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted01.mp3" +} + +"Scout.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted02.mp3" +} + +"Scout.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted03.mp3" +} + +"Scout.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted04.mp3" +} + +"Scout.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted05.mp3" +} + +"Scout.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted06.mp3" +} + +"Scout.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted07.mp3" +} + +"Scout.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted09.mp3" +} + +"Scout.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted10.mp3" +} + +"Scout.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted11.mp3" +} + +"Scout.SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_SpecialCompleted12.mp3" +} + +"Scout.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_StandOnThePoint01.mp3" +} + +"Scout.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_StandOnThePoint02.mp3" +} + +"Scout.StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_StandOnThePoint03.mp3" +} + +"Scout.StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_StandOnThePoint04.mp3" +} + +"Scout.StandOnThePoint05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_StandOnThePoint05.mp3" +} + +"Scout.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts01.mp3" +} + +"Scout.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts02.mp3" +} + +"Scout.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts03.mp3" +} + +"Scout.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts04.mp3" +} + +"Scout.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts05.mp3" +} + +"Scout.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts06.mp3" +} + +"Scout.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts07.mp3" +} + +"Scout.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts08.mp3" +} + +"Scout.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts09.mp3" +} + +"Scout.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts10.mp3" +} + +"Scout.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts11.mp3" +} + +"Scout.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts12.mp3" +} + +"Scout.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts13.mp3" +} + +"Scout.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts14.mp3" +} + +"Scout.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts15.mp3" +} + +"Scout.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts16.mp3" +} + +"Scout.Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts17.mp3" +} + +"Scout.Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_Taunts18.mp3" +} + +"Scout.Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/scout_taunts19.mp3" + "wave" "vo/taunts/scout_taunts20.mp3" + "wave" "vo/taunts/scout_taunts21.mp3" + "wave" "vo/taunts/scout_taunts22.mp3" + +} + +"Scout.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Thanks01.mp3" +} + +"Scout.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Thanks02.mp3" +} + +"Scout.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ThanksForTheHeal01.mp3" +} + +"Scout.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ThanksForTheHeal02.mp3" +} + +"Scout.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ThanksForTheHeal03.mp3" +} + +"Scout.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ThanksForTheTeleporter01.mp3" +} + +"Scout.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ThanksForTheTeleporter02.mp3" +} + +"Scout.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_ThanksForTheTeleporter03.mp3" +} + +"Scout.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Yes01.mp3" +} + +"Scout.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Yes02.mp3" +} + +"Scout.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/scout_Yes03.mp3" +} + +"Sniper.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ActivateCharge01.mp3" +} + +"Sniper.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ActivateCharge02.mp3" +} + +"Sniper.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ActivateCharge03.mp3" +} + +"Sniper.ActivateCharge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ActivateCharge04.mp3" +} + +"Sniper.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedControlPoint01.mp3" +} + +"Sniper.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedControlPoint02.mp3" +} + +"Sniper.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedControlPoint03.mp3" +} + +"Sniper.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedIntelligence01.mp3" +} + +"Sniper.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedIntelligence02.mp3" +} + +"Sniper.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedIntelligence03.mp3" +} + +"Sniper.AutoCappedIntelligence04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedIntelligence04.mp3" +} + +"Sniper.AutoCappedIntelligence05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoCappedIntelligence05.mp3" +} + +"Sniper.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoDejectedTie01.mp3" +} + +"Sniper.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoDejectedTie02.mp3" +} + +"Sniper.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoDejectedTie03.mp3" +} + +"Sniper.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoOnFire01.mp3" +} + +"Sniper.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoOnFire02.mp3" +} + +"Sniper.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_AutoOnFire03.mp3" +} + +"Sniper.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_BattleCry01.mp3" +} + +"Sniper.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_BattleCry02.mp3" +} + +"Sniper.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_BattleCry03.mp3" +} + +"Sniper.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_BattleCry04.mp3" +} + +"Sniper.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_BattleCry05.mp3" +} + +"Sniper.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_BattleCry06.mp3" +} + +"Sniper.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers01.mp3" +} + +"Sniper.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers02.mp3" +} + +"Sniper.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers03.mp3" +} + +"Sniper.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers04.mp3" +} + +"Sniper.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers05.mp3" +} + +"Sniper.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers06.mp3" +} + +"Sniper.Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers07.mp3" +} + +"Sniper.Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Cheers08.mp3" +} + +"Sniper.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpy01.mp3" +} + +"Sniper.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpy02.mp3" +} + +"Sniper.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpy03.mp3" +} + +"Sniper.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify01.mp3" +} + +"Sniper.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify02.mp3" +} + +"Sniper.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify03.mp3" +} + +"Sniper.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify04.mp3" +} + +"Sniper.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify05.mp3" +} + +"Sniper.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify06.mp3" +} + +"Sniper.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify07.mp3" +} + +"Sniper.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify08.mp3" +} + +"Sniper.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_CloakedSpyIdentify09.mp3" +} + +"Sniper.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Go01.mp3" +} + +"Sniper.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Go02.mp3" +} + +"Sniper.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Go03.mp3" +} + +"Sniper.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_GoodJob01.mp3" +} + +"Sniper.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_GoodJob02.mp3" +} + +"Sniper.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_GoodJob03.mp3" +} + +"Sniper.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HeadLeft01.mp3" +} + +"Sniper.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HeadLeft02.mp3" +} + +"Sniper.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HeadLeft03.mp3" +} + +"Sniper.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HeadRight01.mp3" +} + +"Sniper.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HeadRight02.mp3" +} + +"Sniper.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HeadRight03.mp3" +} + +"Sniper.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMe01.mp3" +} + +"Sniper.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMe02.mp3" +} + +"Sniper.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMe03.mp3" +} + +"Sniper.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMeCapture01.mp3" +} + +"Sniper.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMeCapture02.mp3" +} + +"Sniper.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMeCapture03.mp3" +} + +"Sniper.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMeDefend01.mp3" +} + +"Sniper.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMeDefend02.mp3" +} + +"Sniper.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_HelpMeDefend03.mp3" +} + +"Sniper.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Incoming01.mp3" +} + +"Sniper.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Incoming02.mp3" +} + +"Sniper.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Incoming03.mp3" +} + +"Sniper.Incoming04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Incoming04.mp3" +} + +"Sniper.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers01.mp3" +} + +"Sniper.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers02.mp3" +} + +"Sniper.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers03.mp3" +} + +"Sniper.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers04.mp3" +} + +"Sniper.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers05.mp3" +} + +"Sniper.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers06.mp3" +} + +"Sniper.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers07.mp3" +} + +"Sniper.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Jeers08.mp3" +} + +"Sniper.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughEvil01.mp3" +} + +"Sniper.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughEvil02.mp3" +} + +"Sniper.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughEvil03.mp3" +} + +"Sniper.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughHappy01.mp3" +} + +"Sniper.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughHappy02.mp3" +} + +"Sniper.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughLong01.mp3" +} + +"Sniper.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughLong02.mp3" +} + +"Sniper.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughShort01.mp3" +} + +"Sniper.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughShort02.mp3" +} + +"Sniper.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughShort03.mp3" +} + +"Sniper.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughShort04.mp3" +} + +"Sniper.LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_LaughShort05.mp3" +} + +"Sniper.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Medic01.mp3" +} + +"Sniper.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Medic02.mp3" +} + +"Sniper.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_MoveUp01.mp3" +} + +"Sniper.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_MoveUp02.mp3" +} + +"Sniper.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NeedDispenser01.mp3" +} + +"Sniper.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NeedSentry01.mp3" +} + +"Sniper.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NeedTeleporter01.mp3" +} + +"Sniper.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization01.mp3" +} + +"Sniper.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization02.mp3" +} + +"Sniper.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization03.mp3" +} + +"Sniper.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization04.mp3" +} + +"Sniper.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization05.mp3" +} + +"Sniper.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization06.mp3" +} + +"Sniper.NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization07.mp3" +} + +"Sniper.NegativeVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization08.mp3" +} + +"Sniper.NegativeVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NegativeVocalization09.mp3" +} + +"Sniper.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NiceShot01.mp3" +} + +"Sniper.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NiceShot02.mp3" +} + +"Sniper.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_NiceShot03.mp3" +} + +"Sniper.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_No01.mp3" +} + +"Sniper.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_No02.mp3" +} + +"Sniper.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_No03.mp3" +} + +"Sniper.No04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_No04.mp3" +} + +"Sniper.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainCrticialDeath01.mp3" +} + +"Sniper.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainCrticialDeath02.mp3" +} + +"Sniper.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainCrticialDeath03.mp3" +} + +"Sniper.PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainCrticialDeath04.mp3" +} + +"Sniper.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSevere01.mp3" +} + +"Sniper.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSevere02.mp3" +} + +"Sniper.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSevere03.mp3" +} + +"Sniper.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSevere04.mp3" +} + +"Sniper.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSharp01.mp3" +} + +"Sniper.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSharp02.mp3" +} + +"Sniper.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSharp03.mp3" +} + +"Sniper.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PainSharp04.mp3" +} + +"Sniper.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization01.mp3" +} + +"Sniper.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization02.mp3" +} + +"Sniper.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization03.mp3" +} + +"Sniper.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization04.mp3" +} + +"Sniper.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization05.mp3" +} + +"Sniper.PositiveVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization06.mp3" +} + +"Sniper.PositiveVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization07.mp3" +} + +"Sniper.PositiveVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization08.mp3" +} + +"Sniper.PositiveVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization09.mp3" +} + +"Sniper.PositiveVocalization10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_PositiveVocalization10.mp3" +} + +"Sniper.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SentryAhead01.mp3" +} + +"Sniper.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted-AssistedKill01.mp3" +} + +"Sniper.SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted-AssistedKill02.mp3" +} + +"Sniper.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted01.mp3" +} + +"Sniper.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted02.mp3" +} + +"Sniper.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted03.mp3" +} + +"Sniper.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted04.mp3" +} + +"Sniper.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted05.mp3" +} + +"Sniper.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted06.mp3" +} + +"Sniper.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted07.mp3" +} + +"Sniper.SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted08.mp3" +} + +"Sniper.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted09.mp3" +} + +"Sniper.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted10.mp3" +} + +"Sniper.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted11.mp3" +} + +"Sniper.SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted12.mp3" +} + +"Sniper.SpecialCompleted13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted13.mp3" +} + +"Sniper.SpecialCompleted14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted14.mp3" +} + +"Sniper.SpecialCompleted15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted15.mp3" +} + +"Sniper.SpecialCompleted16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted16.mp3" +} + +"Sniper.SpecialCompleted17" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted17.mp3" +} + +"Sniper.SpecialCompleted18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted18.mp3" +} + +"Sniper.SpecialCompleted19" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted19.mp3" +} + +"Sniper.SpecialCompleted20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted20.mp3" +} + +"Sniper.SpecialCompleted21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted21.mp3" +} + +"Sniper.SpecialCompleted22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted22.mp3" +} + +"Sniper.SpecialCompleted23" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted23.mp3" +} + +"Sniper.SpecialCompleted24" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted24.mp3" +} + +"Sniper.SpecialCompleted25" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted25.mp3" +} + +"Sniper.SpecialCompleted26" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted26.mp3" +} + +"Sniper.SpecialCompleted27" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted27.mp3" +} + +"Sniper.SpecialCompleted28" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted28.mp3" +} + +"Sniper.SpecialCompleted29" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted29.mp3" +} + +"Sniper.SpecialCompleted30" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted30.mp3" +} + +"Sniper.SpecialCompleted31" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted31.mp3" +} + +"Sniper.SpecialCompleted32" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted32.mp3" +} + +"Sniper.SpecialCompleted33" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted33.mp3" +} + +"Sniper.SpecialCompleted34" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted34.mp3" +} + +"Sniper.SpecialCompleted35" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted35.mp3" +} + +"Sniper.SpecialCompleted36" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted36.mp3" +} + +"Sniper.SpecialCompleted37" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted37.mp3" +} + +"Sniper.SpecialCompleted38" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted38.mp3" +} + +"Sniper.SpecialCompleted39" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted39.mp3" +} + +"Sniper.SpecialCompleted40" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted40.mp3" +} + +"Sniper.SpecialCompleted41" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted41.mp3" +} + +"Sniper.SpecialCompleted42" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted42.mp3" +} + +"Sniper.SpecialCompleted43" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted43.mp3" +} + +"Sniper.SpecialCompleted44" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted44.mp3" +} + +"Sniper.SpecialCompleted45" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted45.mp3" +} + +"Sniper.SpecialCompleted46" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_SpecialCompleted46.mp3" +} + +"Sniper.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_StandOnThePoint01.mp3" +} + +"Sniper.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_StandOnThePoint02.mp3" +} + +"Sniper.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts01.mp3" +} + +"Sniper.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts02.mp3" +} + +"Sniper.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts03.mp3" +} + +"Sniper.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts04.mp3" +} + +"Sniper.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts05.mp3" +} + +"Sniper.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts06.mp3" +} + +"Sniper.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts07.mp3" +} + +"Sniper.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts08.mp3" +} + +"Sniper.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts09.mp3" +} + +"Sniper.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts10.mp3" +} + +"Sniper.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts11.mp3" +} + +"Sniper.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts12.mp3" +} + +"Sniper.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts13.mp3" +} + +"Sniper.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts14.mp3" +} + +"Sniper.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts15.mp3" +} + +"Sniper.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts16.mp3" +} + +"Sniper.Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts17.mp3" +} + +"Sniper.Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts18.mp3" +} + +"Sniper.Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts19.mp3" +} + +"Sniper.Taunts20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts20.mp3" +} + +"Sniper.Taunts21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts21.mp3" +} + +"Sniper.Taunts22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts22.mp3" +} + +"Sniper.Taunts23" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts23.mp3" +} + +"Sniper.Taunts24" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts24.mp3" +} + +"Sniper.Taunts25" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts25.mp3" +} + +"Sniper.Taunts26" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts26.mp3" +} + +"Sniper.Taunts27" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts27.mp3" +} + +"Sniper.Taunts28" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts28.mp3" +} + +"Sniper.Taunts29" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts29.mp3" +} + +"Sniper.Taunts30" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts30.mp3" +} + +"Sniper.Taunts31" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts31.mp3" +} + +"Sniper.Taunts32" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts32.mp3" +} + +"Sniper.Taunts33" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts33.mp3" +} + +"Sniper.Taunts34" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts34.mp3" +} + +"Sniper.Taunts35" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts35.mp3" +} + +"Sniper.Taunts36" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts36.mp3" +} + +"Sniper.Taunts37" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts37.mp3" +} + +"Sniper.Taunts38" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts38.mp3" +} + +"Sniper.Taunts39" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts39.mp3" +} + +"Sniper.Taunts40" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts40.mp3" +} + +"Sniper.Taunts41" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts41.mp3" +} + +"Sniper.Taunts42" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts42.mp3" +} + +"Sniper.Taunts43" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts43.mp3" +} + +"Sniper.Taunts44" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts44.mp3" +} + +"Sniper.Taunts45" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts45.mp3" +} + +"Sniper.Taunts46" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/sniper_Taunts46.mp3" +} + +"Sniper.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Thanks01.mp3" +} + +"Sniper.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Thanks02.mp3" +} + +"Sniper.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ThanksForTheHeal01.mp3" +} + +"Sniper.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ThanksForTheHeal02.mp3" +} + +"Sniper.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ThanksForTheHeal03.mp3" +} + +"Sniper.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ThanksForTheTeleporter01.mp3" +} + +"Sniper.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ThanksForTheTeleporter02.mp3" +} + +"Sniper.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_ThanksForTheTeleporter03.mp3" +} + +"Sniper.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Yes01.mp3" +} + +"Sniper.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Yes02.mp3" +} + +"Sniper.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_Yes03.mp3" +} + +"sniper.MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_medicfollow01.mp3" +} + +"sniper.MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_medicfollow02.mp3" +} + +"sniper.MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_medicfollow03.mp3" +} + +"sniper.MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_medicfollow04.mp3" +} + +"sniper.MedicFollow05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_medicfollow05.mp3" +} + +"sniper.MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare01.mp3" +} + +"sniper.MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare02.mp3" +} + +"sniper.MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare03.mp3" +} + +"sniper.MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare04.mp3" +} + +"sniper.MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare05.mp3" +} + +"sniper.MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare06.mp3" +} + +"sniper.MeleeDare07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare07.mp3" +} + +"sniper.MeleeDare08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare08.mp3" +} + +"sniper.MeleeDare09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_meleedare09.mp3" +} + +"sniper.Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award01.mp3" +} + +"sniper.Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award02.mp3" +} + +"sniper.Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award03.mp3" +} + +"sniper.Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award04.mp3" +} + +"sniper.Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award05.mp3" +} + +"sniper.Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award06.mp3" +} + +"sniper.Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award07.mp3" +} + +"sniper.Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award08.mp3" +} + +"sniper.Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award09.mp3" +} + +"sniper.Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award10.mp3" +} + +"sniper.Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award11.mp3" +} + +"sniper.Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award12.mp3" +} + +"sniper.Award13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award13.mp3" +} + +"sniper.Award14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/sniper_award14.mp3" +} + +"Soldier.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ActivateCharge01.mp3" +} + +"Soldier.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ActivateCharge02.mp3" +} + +"Soldier.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ActivateCharge03.mp3" +} + +"Soldier.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoCappedControlPoint01.mp3" +} + +"Soldier.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoCappedControlPoint02.mp3" +} + +"Soldier.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoCappedControlPoint03.mp3" +} + +"Soldier.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoCappedIntelligence01.mp3" +} + +"Soldier.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoCappedIntelligence02.mp3" +} + +"Soldier.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoCappedIntelligence03.mp3" +} + +"Soldier.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoDejectedTie01.mp3" +} + +"Soldier.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoDejectedTie02.mp3" +} + +"Soldier.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoDejectedTie03.mp3" +} + +"Soldier.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoOnFire01.mp3" +} + +"Soldier.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoOnFire02.mp3" +} + +"Soldier.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_AutoOnFire03.mp3" +} + +"Soldier.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_BattleCry01.mp3" +} + +"Soldier.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_BattleCry02.mp3" +} + +"Soldier.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_BattleCry03.mp3" +} + +"Soldier.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_BattleCry04.mp3" +} + +"Soldier.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_BattleCry05.mp3" +} + +"Soldier.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_BattleCry06.mp3" +} + +"Soldier.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Cheers01.mp3" +} + +"Soldier.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Cheers02.mp3" +} + +"Soldier.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Cheers03.mp3" +} + +"Soldier.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Cheers04.mp3" +} + +"Soldier.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Cheers05.mp3" +} + +"Soldier.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Cheers06.mp3" +} + +"Soldier.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpy01.mp3" +} + +"Soldier.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpy02.mp3" +} + +"Soldier.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpy03.mp3" +} + +"Soldier.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify01.mp3" +} + +"Soldier.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify02.mp3" +} + +"Soldier.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify03.mp3" +} + +"Soldier.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify04.mp3" +} + +"Soldier.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify05.mp3" +} + +"Soldier.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify06.mp3" +} + +"Soldier.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify07.mp3" +} + +"Soldier.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify08.mp3" +} + +"Soldier.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_CloakedSpyIdentify09.mp3" +} + +"Soldier.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Go01.mp3" +} + +"Soldier.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Go02.mp3" +} + +"Soldier.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Go03.mp3" +} + +"Soldier.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_GoodJob01.mp3" +} + +"Soldier.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_GoodJob02.mp3" +} + +"Soldier.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_GoodJob03.mp3" +} + +"Soldier.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HeadLeft01.mp3" +} + +"Soldier.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HeadLeft02.mp3" +} + +"Soldier.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HeadLeft03.mp3" +} + +"Soldier.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HeadRight01.mp3" +} + +"Soldier.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HeadRight02.mp3" +} + +"Soldier.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HeadRight03.mp3" +} + +"Soldier.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMe01.mp3" +} + +"Soldier.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMe02.mp3" +} + +"Soldier.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMe03.mp3" +} + +"Soldier.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeCapture01.mp3" +} + +"Soldier.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeCapture02.mp3" +} + +"Soldier.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeCapture03.mp3" +} + +"Soldier.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeDefend01.mp3" +} + +"Soldier.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeDefend02.mp3" +} + +"Soldier.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeDefend03.mp3" +} + +"Soldier.HelpMeDefend04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_HelpMeDefend04.mp3" +} + +"Soldier.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Incoming01.mp3" +} + +"Soldier.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers01.mp3" +} + +"Soldier.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers02.mp3" +} + +"Soldier.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers03.mp3" +} + +"Soldier.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers04.mp3" +} + +"Soldier.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers05.mp3" +} + +"Soldier.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers06.mp3" +} + +"Soldier.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers07.mp3" +} + +"Soldier.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers08.mp3" +} + +"Soldier.Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers09.mp3" +} + +"Soldier.Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers10.mp3" +} + +"Soldier.Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers11.mp3" +} + +"Soldier.Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Jeers12.mp3" +} + +"Soldier.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughEvil01.mp3" +} + +"Soldier.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughEvil02.mp3" +} + +"Soldier.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughEvil03.mp3" +} + +"Soldier.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughHappy01.mp3" +} + +"Soldier.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughHappy02.mp3" +} + +"Soldier.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughHappy03.mp3" +} + +"Soldier.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughLong01.mp3" +} + +"Soldier.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughLong02.mp3" +} + +"Soldier.LaughLong03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughLong03.mp3" +} + +"Soldier.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughShort01.mp3" +} + +"Soldier.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughShort02.mp3" +} + +"Soldier.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughShort03.mp3" +} + +"Soldier.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_LaughShort04.mp3" +} + +"Soldier.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Medic01.mp3" +} + +"Soldier.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Medic02.mp3" +} + +"Soldier.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Medic03.mp3" +} + +"Soldier.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_MoveUp01.mp3" +} + +"Soldier.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_MoveUp02.mp3" +} + +"Soldier.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_MoveUp03.mp3" +} + +"Soldier.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NeedDispenser01.mp3" +} + +"Soldier.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NeedSentry01.mp3" +} + +"Soldier.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NeedTeleporter01.mp3" +} + +"Soldier.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NegativeVocalization01.mp3" +} + +"Soldier.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NegativeVocalization02.mp3" +} + +"Soldier.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NegativeVocalization03.mp3" +} + +"Soldier.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NegativeVocalization04.mp3" +} + +"Soldier.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NegativeVocalization05.mp3" +} + +"Soldier.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NegativeVocalization06.mp3" +} + +"Soldier.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NiceShot01.mp3" +} + +"Soldier.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NiceShot02.mp3" +} + +"Soldier.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_NiceShot03.mp3" +} + +"Soldier.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_No01.mp3" +} + +"Soldier.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_No02.mp3" +} + +"Soldier.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_No03.mp3" +} + +"Soldier.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainCrticialDeath01.mp3" +} + +"Soldier.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainCrticialDeath02.mp3" +} + +"Soldier.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainCrticialDeath03.mp3" +} + +"Soldier.PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainCrticialDeath04.mp3" +} + +"Soldier.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSevere01.mp3" +} + +"Soldier.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSevere02.mp3" +} + +"Soldier.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSevere03.mp3" +} + +"Soldier.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSevere04.mp3" +} + +"Soldier.PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSevere05.mp3" +} + +"Soldier.PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSevere06.mp3" +} + +"Soldier.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp01.mp3" +} + +"Soldier.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp02.mp3" +} + +"Soldier.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp03.mp3" +} + +"Soldier.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp04.mp3" +} + +"Soldier.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp05.mp3" +} + +"Soldier.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp06.mp3" +} + +"Soldier.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp07.mp3" +} + +"Soldier.PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PainSharp08.mp3" +} + +"Soldier.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PositiveVocalization01.mp3" +} + +"Soldier.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PositiveVocalization02.mp3" +} + +"Soldier.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PositiveVocalization03.mp3" +} + +"Soldier.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PositiveVocalization04.mp3" +} + +"Soldier.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_PositiveVocalization05.mp3" +} + +"Soldier.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SentryAhead01.mp3" +} + +"Soldier.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SentryAhead02.mp3" +} + +"Soldier.SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SentryAhead03.mp3" +} + +"Soldier.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SpecialCompleted-AssistedKill01.mp3" +} + +"Soldier.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SpecialCompleted01.mp3" +} + +"Soldier.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SpecialCompleted02.mp3" +} + +"Soldier.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SpecialCompleted03.mp3" +} + +"Soldier.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SpecialCompleted04.mp3" +} + +"Soldier.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_SpecialCompleted05.mp3" +} + +"Soldier.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_StandOnThePoint01.mp3" +} + +"Soldier.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_StandOnThePoint02.mp3" +} + +"Soldier.StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_StandOnThePoint03.mp3" +} + +"Soldier.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts01.mp3" +} + +"Soldier.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts02.mp3" +} + +"Soldier.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts03.mp3" +} + +"Soldier.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts04.mp3" +} + +"Soldier.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts05.mp3" +} + +"Soldier.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts06.mp3" +} + +"Soldier.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts07.mp3" +} + +"Soldier.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts08.mp3" +} + +"Soldier.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts09.mp3" +} + +"Soldier.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts10.mp3" +} + +"Soldier.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts11.mp3" +} + +"Soldier.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts12.mp3" +} + +"Soldier.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts13.mp3" +} + +"Soldier.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts14.mp3" +} + +"Soldier.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts15.mp3" +} + +"Soldier.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts16.mp3" +} + +"Soldier.Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts17.mp3" +} + +"Soldier.Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts18.mp3" +} + +"Soldier.Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts19.mp3" +} + +"Soldier.Taunts20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts20.mp3" +} + +"Soldier.Taunts21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/soldier_Taunts21.mp3" +} + +"Soldier.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Thanks01.mp3" +} + +"Soldier.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Thanks02.mp3" +} + +"Soldier.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ThanksForTheHeal01.mp3" +} + +"Soldier.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ThanksForTheHeal02.mp3" +} + +"Soldier.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ThanksForTheHeal03.mp3" +} + +"Soldier.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ThanksForTheTeleporter01.mp3" +} + +"Soldier.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ThanksForTheTeleporter02.mp3" +} + +"Soldier.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_ThanksForTheTeleporter03.mp3" +} + +"Soldier.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Yes01.mp3" +} + +"Soldier.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Yes02.mp3" +} + +"Soldier.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Yes03.mp3" +} + +"Soldier.Yes04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/soldier_Yes04.mp3" +} + +"Spy.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ActivateCharge01.mp3" +} + +"Spy.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ActivateCharge02.mp3" +} + +"Spy.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ActivateCharge03.mp3" +} + +"Spy.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoCappedControlPoint01.mp3" +} + +"Spy.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoCappedControlPoint02.mp3" +} + +"Spy.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoCappedControlPoint03.mp3" +} + +"Spy.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoCappedIntelligence01.mp3" +} + +"Spy.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoCappedIntelligence02.mp3" +} + +"Spy.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoCappedIntelligence03.mp3" +} + +"Spy.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoDejectedTie01.mp3" +} + +"Spy.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoDejectedTie02.mp3" +} + +"Spy.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoDejectedTie03.mp3" +} + +"Spy.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoOnFire01.mp3" +} + +"Spy.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoOnFire02.mp3" +} + +"Spy.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_AutoOnFire03.mp3" +} + +"Spy.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_BattleCry01.mp3" +} + +"Spy.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_BattleCry02.mp3" +} + +"Spy.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_BattleCry03.mp3" +} + +"Spy.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_BattleCry04.mp3" +} + +"Spy.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers01.mp3" +} + +"Spy.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers02.mp3" +} + +"Spy.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers03.mp3" +} + +"Spy.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers04.mp3" +} + +"Spy.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers05.mp3" +} + +"Spy.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers06.mp3" +} + +"Spy.Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers07.mp3" +} + +"Spy.Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Cheers08.mp3" +} + +"Spy.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpy01.mp3" +} + +"Spy.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpy02.mp3" +} + +"Spy.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpy03.mp3" +} + +"Spy.CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpy04.mp3" +} + +"Spy.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify01.mp3" +} + +"Spy.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify02.mp3" +} + +"Spy.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify03.mp3" +} + +"Spy.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify04.mp3" +} + +"Spy.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify05.mp3" +} + +"Spy.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify06.mp3" +} + +"Spy.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify07.mp3" +} + +"Spy.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify08.mp3" +} + +"Spy.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify09.mp3" +} + +"Spy.CloakedSpyIdentify10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_CloakedSpyIdentify10.mp3" +} + +"Spy.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Go01.mp3" +} + +"Spy.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Go02.mp3" +} + +"Spy.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Go03.mp3" +} + +"Spy.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_GoodJob01.mp3" +} + +"Spy.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_GoodJob02.mp3" +} + +"Spy.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_GoodJob03.mp3" +} + +"Spy.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HeadLeft01.mp3" +} + +"Spy.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HeadLeft02.mp3" +} + +"Spy.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HeadLeft03.mp3" +} + +"Spy.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HeadRight01.mp3" +} + +"Spy.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HeadRight02.mp3" +} + +"Spy.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HeadRight03.mp3" +} + +"Spy.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMe01.mp3" +} + +"Spy.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMe02.mp3" +} + +"Spy.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMe03.mp3" +} + +"Spy.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMeCapture01.mp3" +} + +"Spy.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMeCapture02.mp3" +} + +"Spy.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMeCapture03.mp3" +} + +"Spy.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMeDefend01.mp3" +} + +"Spy.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMeDefend02.mp3" +} + +"Spy.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_HelpMeDefend03.mp3" +} + +"Spy.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Incoming01.mp3" +} + +"Spy.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Incoming02.mp3" +} + +"Spy.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Incoming03.mp3" +} + +"Spy.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Jeers01.mp3" +} + +"Spy.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Jeers02.mp3" +} + +"Spy.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Jeers03.mp3" +} + +"Spy.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Jeers04.mp3" +} + +"Spy.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Jeers05.mp3" +} + +"Spy.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Jeers06.mp3" +} + +"Spy.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughEvil01.mp3" +} + +"Spy.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughEvil02.mp3" +} + +"Spy.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughHappy01.mp3" +} + +"Spy.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughHappy02.mp3" +} + +"Spy.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughHappy03.mp3" +} + +"Spy.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughLong01.mp3" +} + +"Spy.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughShort01.mp3" +} + +"Spy.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughShort02.mp3" +} + +"Spy.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughShort03.mp3" +} + +"Spy.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughShort04.mp3" +} + +"Spy.LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughShort05.mp3" +} + +"Spy.LaughShort06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_LaughShort06.mp3" +} + +"Spy.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Medic01.mp3" +} + +"Spy.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Medic02.mp3" +} + +"Spy.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Medic03.mp3" +} + +"Spy.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_MoveUp01.mp3" +} + +"Spy.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_MoveUp02.mp3" +} + +"Spy.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NeedDispenser01.mp3" +} + +"Spy.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NeedSentry01.mp3" +} + +"Spy.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NeedTeleporter01.mp3" +} + +"Spy.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization01.mp3" +} + +"Spy.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization02.mp3" +} + +"Spy.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization03.mp3" +} + +"Spy.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization04.mp3" +} + +"Spy.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization05.mp3" +} + +"Spy.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization06.mp3" +} + +"Spy.NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization07.mp3" +} + +"Spy.NegativeVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization08.mp3" +} + +"Spy.NegativeVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NegativeVocalization09.mp3" +} + +"Spy.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NiceShot01.mp3" +} + +"Spy.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NiceShot02.mp3" +} + +"Spy.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_NiceShot03.mp3" +} + +"Spy.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_No01.mp3" +} + +"Spy.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_No02.mp3" +} + +"Spy.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_No03.mp3" +} + +"Spy.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainCrticialDeath01.mp3" +} + +"Spy.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainCrticialDeath02.mp3" +} + +"Spy.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainCrticialDeath03.mp3" +} + +"Spy.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSevere01.mp3" +} + +"Spy.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSevere02.mp3" +} + +"Spy.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSevere03.mp3" +} + +"Spy.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSevere04.mp3" +} + +"Spy.PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSevere05.mp3" +} + +"Spy.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSharp01.mp3" +} + +"Spy.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSharp02.mp3" +} + +"Spy.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSharp03.mp3" +} + +"Spy.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PainSharp04.mp3" +} + +"Spy.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PositiveVocalization01.mp3" +} + +"Spy.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PositiveVocalization02.mp3" +} + +"Spy.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PositiveVocalization03.mp3" +} + +"Spy.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PositiveVocalization04.mp3" +} + +"Spy.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_PositiveVocalization05.mp3" +} + +"Spy.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SentryAhead01.mp3" +} + +"Spy.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SentryAhead02.mp3" +} + +"Spy.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted-AssistedKill01.mp3" +} + +"Spy.SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted-AssistedKill02.mp3" +} + +"Spy.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted01.mp3" +} + +"Spy.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted02.mp3" +} + +"Spy.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted03.mp3" +} + +"Spy.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted04.mp3" +} + +"Spy.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted05.mp3" +} + +"Spy.SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted06.mp3" +} + +"Spy.SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted07.mp3" +} + +"Spy.SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted08.mp3" +} + +"Spy.SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted09.mp3" +} + +"Spy.SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted10.mp3" +} + +"Spy.SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted11.mp3" +} + +"Spy.SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_SpecialCompleted12.mp3" +} + +"Spy.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_StandOnThePoint01.mp3" +} + +"Spy.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_StandOnThePoint02.mp3" +} + +"Spy.StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_StandOnThePoint03.mp3" +} + +"Spy.StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_StandOnThePoint04.mp3" +} + +"Spy.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts01.mp3" +} + +"Spy.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts02.mp3" +} + +"Spy.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts03.mp3" +} + +"Spy.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts04.mp3" +} + +"Spy.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts05.mp3" +} + +"Spy.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts06.mp3" +} + +"Spy.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts07.mp3" +} + +"Spy.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts08.mp3" +} + +"Spy.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts09.mp3" +} + +"Spy.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts10.mp3" +} + +"Spy.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts11.mp3" +} + +"Spy.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts12.mp3" +} + +"Spy.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts13.mp3" +} + +"Spy.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts14.mp3" +} + +"Spy.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts15.mp3" +} + +"Spy.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_Taunts16.mp3" +} + +"Spy.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Thanks01.mp3" +} + +"Spy.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Thanks02.mp3" +} + +"Spy.Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Thanks03.mp3" +} + +"Spy.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ThanksForTheHeal01.mp3" +} + +"Spy.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ThanksForTheHeal02.mp3" +} + +"Spy.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ThanksForTheHeal03.mp3" +} + +"Spy.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ThanksForTheTeleporter01.mp3" +} + +"Spy.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ThanksForTheTeleporter02.mp3" +} + +"Spy.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_ThanksForTheTeleporter03.mp3" +} + +"Spy.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Yes01.mp3" +} + +"Spy.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Yes02.mp3" +} + +"Spy.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/spy_Yes03.mp3" +} + +"Spy.HighFiveSuccess01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive_success01.mp3" +} + +"Spy.HighFiveSuccess02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive_success02.mp3" +} + +"Spy.HighFiveSuccess03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive_success03.mp3" +} + +"Spy.HighFiveSuccess04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive_success04.mp3" +} +"Spy.HighFiveSuccess05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive_success05.mp3" +} + +"Spy.HighFive01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive01.mp3" +} + +"Spy.HighFive02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive02.mp3" +} + +"Spy.HighFive03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive03.mp3" +} + +"Spy.HighFive04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive04.mp3" +} + +"Spy.HighFive05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive05.mp3" +} + +"Spy.HighFive06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive06.mp3" +} + +"Spy.HighFive07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive07.mp3" +} + +"Spy.HighFive08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive08.mp3" +} + +"Spy.HighFive09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive09.mp3" +} + +"Spy.HighFive10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive10.mp3" +} + +"Spy.HighFive11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive11.mp3" +} + +"Spy.HighFive12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive12.mp3" +} + +"Spy.HighFive13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive13.mp3" +} + +"Spy.HighFive14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/spy_highfive14.mp3" +} + + +//----------------------------------------------------------------------------- +//Heavy +//----------------------------------------------------------------------------- +"Heavy.Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award01.mp3" +} + +"Heavy.Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award02.mp3" +} + +"Heavy.Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award03.mp3" +} + +"Heavy.Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award04.mp3" +} + +"Heavy.Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award05.mp3" +} + +"Heavy.Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award07.mp3" +} + +"Heavy.Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award08.mp3" +} + +"Heavy.Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award09.mp3" +} + +"Heavy.Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award10.mp3" +} + +"Heavy.Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award11.mp3" +} + +"Heavy.Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award12.mp3" +} + +"Heavy.Award13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award13.mp3" +} + +"Heavy.Award16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award16.mp3" +} + +"Heavy.Award14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award14.mp3" +} + +"Heavy.Award15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award15.mp3" +} + +"Heavy.Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Award06.mp3" +} + +"Heavy.CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense01.mp3" +} + +"Heavy.CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense02.mp3" +} + +"Heavy.CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense03.mp3" +} + +"Heavy.CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense04.mp3" +} + +"Heavy.CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense05.mp3" +} + +"Heavy.CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense06.mp3" +} + +"Heavy.CartGoingBackDefense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense07.mp3" +} + +"Heavy.CartGoingBackDefense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackDefense08.mp3" +} + +"Heavy.CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense01.mp3" +} + +"Heavy.CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense02.mp3" +} + +"Heavy.CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense03.mp3" +} + +"Heavy.CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense04.mp3" +} + +"Heavy.CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense05.mp3" +} + +"Heavy.CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense06.mp3" +} + +"Heavy.CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartGoingBackOffense07.mp3" +} + +"Heavy.CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardDefense01.mp3" +} + +"Heavy.CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardDefense02.mp3" +} + +"Heavy.CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardDefense04.mp3" +} + +"Heavy.CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardDefense05.mp3" +} + +"Heavy.CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardDefense03.mp3" +} + +"Heavy.CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardDefense06.mp3" +} + +"Heavy.CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense01.mp3" +} + +"Heavy.CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense02.mp3" +} + +"Heavy.CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense03.mp3" +} + +"Heavy.CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense04.mp3" +} + +"Heavy.CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense05.mp3" +} + +"Heavy.CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense06.mp3" +} + +"Heavy.CartMovingForwardOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense07.mp3" +} + +"Heavy.CartMovingForwardOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense08.mp3" +} + +"Heavy.CartMovingForwardOffense09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense09.mp3" +} + +"Heavy.CartMovingForwardOffense11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense11.mp3" +} + +"Heavy.CartMovingForwardOffense12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense12.mp3" +} + +"Heavy.CartMovingForwardOffense13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense13.mp3" +} + +"Heavy.CartMovingForwardOffense14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense14.mp3" +} + +"Heavy.CartMovingForwardOffense15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense15.mp3" +} + +"Heavy.CartMovingForwardOffense16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense16.mp3" +} + +"Heavy.CartMovingForwardOffense17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense17.mp3" +} + +"Heavy.CartMovingForwardOffense10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartMovingForwardOffense10.mp3" +} + +"Heavy.CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStayCloseOffense01.mp3" +} + +"Heavy.CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStayCloseOffense02.mp3" +} + +"Heavy.CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStayCloseOffense03.mp3" +} + +"Heavy.CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStayCloseOffense06.mp3" +} + +"Heavy.CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStayCloseOffense05.mp3" +} + +"Heavy.CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStayCloseOffense04.mp3" +} + +"Heavy.CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStopItDefense01.mp3" +} + +"Heavy.CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStopItDefense02.mp3" +} + +"Heavy.CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStopItDefense03.mp3" +} + +"Heavy.CartStopItDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStopItDefense04.mp3" +} + +"Heavy.CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStoppedOffense01.mp3" +} + +"Heavy.CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStoppedOffense02.mp3" +} + +"Heavy.CartStoppedOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStoppedOffense04.mp3" +} + +"Heavy.CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_CartStoppedOffense03.mp3" +} + +"Heavy.Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination01.mp3" +} + +"Heavy.Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination02.mp3" +} + +"Heavy.Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination03.mp3" +} + +"Heavy.Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination04.mp3" +} + +"Heavy.Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination05.mp3" +} + +"Heavy.Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination06.mp3" +} + +"Heavy.Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination07.mp3" +} + +"Heavy.Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination08.mp3" +} + +"Heavy.Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination09.mp3" +} + +"Heavy.Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination10.mp3" +} + +"Heavy.Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination11.mp3" +} + +"Heavy.Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination12.mp3" +} + +"Heavy.Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination13.mp3" +} + +"Heavy.Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination14.mp3" +} + +"Heavy.Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination15.mp3" +} + +"Heavy.Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination16.mp3" +} + +"Heavy.Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination17.mp3" +} + +"Heavy.Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Domination18.mp3" +} + +"Heavy.FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_FightOnCap04.mp3" +} + +"Heavy.FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_FightOnCap01.mp3" +} + +"Heavy.FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_FightOnCap02.mp3" +} + +"Heavy.FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_FightOnCap03.mp3" +} + +"Heavy.LaughterBig02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_LaughterBig02.mp3" +} + +"Heavy.LaughterBig01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_LaughterBig01.mp3" +} + +"Heavy.LaughterBig03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_LaughterBig03.mp3" +} + +"Heavy.LaughterBig04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_LaughterBig04.mp3" +} + +"Heavy.MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow01.mp3" +} + +"Heavy.MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow02.mp3" +} + +"Heavy.MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow03.mp3" +} + +"Heavy.MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow04.mp3" +} + +"Heavy.MedicFollow05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow05.mp3" +} + +"Heavy.MedicFollow06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow06.mp3" +} + +"Heavy.MedicFollow07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MedicFollow07.mp3" +} + +"Heavy.MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare01.mp3" +} + +"Heavy.MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare02.mp3" +} + +"Heavy.MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare03.mp3" +} + +"Heavy.MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare04.mp3" +} + +"Heavy.MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare05.mp3" +} + +"Heavy.MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare06.mp3" +} + +"Heavy.MeleeDare07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare07.mp3" +} + +"Heavy.MeleeDare08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare08.mp3" +} + +"Heavy.MeleeDare09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare09.mp3" +} + +"Heavy.MeleeDare10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare10.mp3" +} + +"Heavy.MeleeDare11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare11.mp3" +} + +"Heavy.MeleeDare12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare12.mp3" +} + +"Heavy.MeleeDare13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_MeleeDare13.mp3" +} + +"Heavy.Meleeing01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing01.mp3" +} + +"Heavy.Meleeing02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing02.mp3" +} + +"Heavy.Meleeing03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing03.mp3" +} + +"Heavy.Meleeing04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing04.mp3" +} + +"Heavy.Meleeing05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing05.mp3" +} + +"Heavy.Meleeing06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing06.mp3" +} + +"Heavy.Meleeing07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing07.mp3" +} + +"Heavy.Meleeing08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Meleeing08.mp3" +} + +"Heavy.Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge01.mp3" +} + +"Heavy.Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge02.mp3" +} + +"Heavy.Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge03.mp3" +} + +"Heavy.Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge04.mp3" +} + +"Heavy.Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge05.mp3" +} + +"Heavy.Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge06.mp3" +} + +"Heavy.Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge07.mp3" +} + +"Heavy.Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge08.mp3" +} + +"Heavy.Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge09.mp3" +} + +"Heavy.Revenge10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge10.mp3" +} + +"Heavy.Revenge11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge11.mp3" +} + +"Heavy.Revenge12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge12.mp3" +} + +"Heavy.Revenge13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge13.mp3" +} + +"Heavy.Revenge14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge14.mp3" +} + +"Heavy.Revenge15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Revenge15.mp3" +} + +"Heavy.Singing01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Singing01.mp3" +} + +"Heavy.Singing02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Singing02.mp3" +} + +"Heavy.Singing03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Singing03.mp3" +} + +"Heavy.Singing04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Singing04.mp3" +} + +"Heavy.Singing05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Singing05.mp3" +} + +"Heavy.Specials01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Specials01.mp3" +} + +"Heavy.Specials02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Specials02.mp3" +} + +"Heavy.Specials03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Specials03.mp3" +} + +"Heavy.Specials04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Specials04.mp3" +} + +"Heavy.Specials05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_Specials05.mp3" +} + +"Heavy.SpecialWeapon04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon04.mp3" +} + +"Heavy.SpecialWeapon01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon01.mp3" +} + +"Heavy.SpecialWeapon02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon02.mp3" +} + +"Heavy.SpecialWeapon03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon03.mp3" +} + +"Heavy.SpecialWeapon05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon05.mp3" +} + +"Heavy.SpecialWeapon06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon06.mp3" +} + +"Heavy.SpecialWeapon07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon07.mp3" +} + +"Heavy.SpecialWeapon08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon08.mp3" +} + +"Heavy.SpecialWeapon09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SpecialWeapon09.mp3" +} + +"Heavy.SandwichEat" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/SandwichEat09.mp3" +} + +"Heavy.SandwichTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt01.mp3" +} + +"Heavy.SandwichTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt02.mp3" +} + +"Heavy.SandwichTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt03.mp3" +} + +"Heavy.SandwichTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt04.mp3" +} + +"Heavy.SandwichTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt05.mp3" +} + +"Heavy.SandwichTaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt06.mp3" +} + +"Heavy.SandwichTaunt07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt07.mp3" +} + +"Heavy.SandwichTaunt08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt08.mp3" +} + +"Heavy.SandwichTaunt09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt09.mp3" +} + +"Heavy.SandwichTaunt10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt10.mp3" +} + +"Heavy.SandwichTaunt11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt11.mp3" +} + +"Heavy.SandwichTaunt12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt12.mp3" +} + +"Heavy.SandwichTaunt13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt13.mp3" +} + +"Heavy.SandwichTaunt14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt14.mp3" +} + +"Heavy.SandwichTaunt15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt15.mp3" +} + +"Heavy.SandwichTaunt16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt16.mp3" +} + +"Heavy.SandwichTaunt17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_SandwichTaunt17.mp3" +} + + + +//----------------------------------------------------------------------------- +//End of Heavy +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scout Batch 4 +//----------------------------------------------------------------------------- +"Scout.ApexofJump01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_ApexofJump01.mp3" +} + +"Scout.ApexofJump05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_ApexofJump05.mp3" +} + +"Scout.ApexofJump02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_ApexofJump02.mp3" +} + +"Scout.ApexofJump03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_ApexofJump03.mp3" +} + +"Scout.ApexofJump04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_ApexofJump04.mp3" +} + +"Scout.Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award01.mp3" +} + +"Scout.Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award02.mp3" +} + +"Scout.Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award04.mp3" +} + +"Scout.Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award03.mp3" +} + +"Scout.Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award05.mp3" +} + +"Scout.Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award06.mp3" +} + +"Scout.Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award07.mp3" +} + +"Scout.Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award08.mp3" +} + +"Scout.Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award09.mp3" +} + +"Scout.Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award11.mp3" +} + +"Scout.Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award12.mp3" +} + +"Scout.Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Award10.mp3" +} + +"Scout.BeingShotInvincible04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible04.mp3" +} + +"Scout.BeingShotInvincible07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible07.mp3" +} + +"Scout.BeingShotInvincible02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible02.mp3" +} + +"Scout.BeingShotInvincible01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible01.mp3" +} + +"Scout.BeingShotInvincible08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible08.mp3" +} + +"Scout.BeingShotInvincible09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible09.mp3" +} + +"Scout.BeingShotInvincible03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible03.mp3" +} + +"Scout.BeingShotInvincible10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible10.mp3" +} + +"Scout.BeingShotInvincible06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible06.mp3" +} + +"Scout.BeingShotInvincible05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible05.mp3" +} + +"Scout.BeingShotInvincible11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible11.mp3" +} + +"Scout.BeingShotInvincible12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible12.mp3" +} + +"Scout.BeingShotInvincible13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible13.mp3" +} + +"Scout.BeingShotInvincible14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible14.mp3" +} + +"Scout.BeingShotInvincible15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible15.mp3" +} + +"Scout.BeingShotInvincible16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible16.mp3" +} + +"Scout.BeingShotInvincible17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible17.mp3" +} + +"Scout.BeingShotInvincible18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible18.mp3" +} + +"Scout.BeingShotInvincible19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible19.mp3" +} + +"Scout.BeingShotInvincible20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible20.mp3" +} + +"Scout.BeingShotInvincible21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible21.mp3" +} + +"Scout.BeingShotInvincible22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible22.mp3" +} + +"Scout.BeingShotInvincible23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible23.mp3" +} + +"Scout.BeingShotInvincible24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible24.mp3" +} + +"Scout.BeingShotInvincible25" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible25.mp3" +} + +"Scout.BeingShotInvincible26" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible26.mp3" +} + +"Scout.BeingShotInvincible27" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible27.mp3" +} + +"Scout.BeingShotInvincible28" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible28.mp3" +} + +"Scout.BeingShotInvincible29" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible29.mp3" +} + +"Scout.BeingShotInvincible30" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible30.mp3" +} + +"Scout.BeingShotInvincible31" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible31.mp3" +} + +"Scout.BeingShotInvincible32" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible32.mp3" +} + +"Scout.BeingShotInvincible33" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible33.mp3" +} + +"Scout.BeingShotInvincible34" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible34.mp3" +} + +"Scout.BeingShotInvincible35" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible35.mp3" +} + +"Scout.BeingShotInvincible36" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_BeingShotInvincible36.mp3" +} + +"Scout.CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackDefense03.mp3" +} + +"Scout.CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackDefense01.mp3" +} + +"Scout.CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackDefense02.mp3" +} + +"Scout.CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackDefense04.mp3" +} + +"Scout.CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackDefense05.mp3" +} + +"Scout.CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackDefense06.mp3" +} + +"Scout.CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense01.mp3" +} + +"Scout.CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense02.mp3" +} + +"Scout.CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense03.mp3" +} + +"Scout.CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense07.mp3" +} + +"Scout.CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense04.mp3" +} + +"Scout.CartGoingBackOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense08.mp3" +} + +"Scout.CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense05.mp3" +} + +"Scout.CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartGoingBackOffense06.mp3" +} + +"Scout.CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardDefense01.mp3" +} + +"Scout.CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardDefense02.mp3" +} + +"Scout.CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardDefense03.mp3" +} + +"Scout.CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardDefense04.mp3" +} + +"Scout.CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardDefense05.mp3" +} + +"Scout.CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardDefense06.mp3" +} + +"Scout.CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardOffense01.mp3" +} + +"Scout.CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardOffense02.mp3" +} + +"Scout.CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardOffense03.mp3" +} + +"Scout.CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardOffense04.mp3" +} + +"Scout.CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardOffense06.mp3" +} + +"Scout.CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartMovingForwardOffense05.mp3" +} + +"Scout.CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStayCloseOffense01.mp3" +} + +"Scout.CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStayCloseOffense04.mp3" +} + +"Scout.CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStayCloseOffense02.mp3" +} + +"Scout.CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStayCloseOffense03.mp3" +} + +"Scout.CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStayCloseOffense05.mp3" +} + +"Scout.CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStayCloseOffense06.mp3" +} + +"Scout.CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStopItDefense01.mp3" +} + +"Scout.CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStopItDefense02.mp3" +} + +"Scout.CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStopItDefense03.mp3" +} + +"Scout.CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStoppedOffense01.mp3" +} + +"Scout.CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStoppedOffense02.mp3" +} + +"Scout.CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_CartStoppedOffense03.mp3" +} + +"Scout.Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination02.mp3" +} + +"Scout.Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination03.mp3" +} + +"Scout.Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination04.mp3" +} + +"Scout.Domination19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination19.mp3" +} + +"Scout.Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination05.mp3" +} + +"Scout.Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination18.mp3" +} + +"Scout.Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination06.mp3" +} + +"Scout.Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination07.mp3" +} + +"Scout.Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination08.mp3" +} + +"Scout.Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination09.mp3" +} + +"Scout.Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination10.mp3" +} + +"Scout.Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination11.mp3" +} + +"Scout.Domination20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination20.mp3" +} + +"Scout.Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination12.mp3" +} + +"Scout.Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination13.mp3" +} + +"Scout.Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination14.mp3" +} + +"Scout.Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination01.mp3" +} + +"Scout.Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination15.mp3" +} + +"Scout.Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination16.mp3" +} + +"Scout.Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination17.mp3" +} + +"Scout.Domination21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Domination21.mp3" +} + +"Scout.DominationDem01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationDem01.mp3" +} + +"Scout.DominationDem02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationDem02.mp3" +} + +"Scout.DominationDem05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationDem05.mp3" +} + +"Scout.DominationDem03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationDem03.mp3" +} + +"Scout.DominationDem04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationDem04.mp3" +} + +"Scout.DominationEng01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationEng01.mp3" +} + +"Scout.DominationEng02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationEng02.mp3" +} + +"Scout.DominationEng03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationEng03.mp3" +} + +"Scout.DominationEng04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationEng04.mp3" +} + +"Scout.DominationEng05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationEng05.mp3" +} + +"Scout.DominationEng06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationEng06.mp3" +} + +"Scout.DominationHvy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy01.mp3" +} + +"Scout.DominationHvy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy02.mp3" +} + +"Scout.DominationHvy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy03.mp3" +} + +"Scout.DominationHvy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy04.mp3" +} + +"Scout.DominationHvy05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy05.mp3" +} + +"Scout.DominationHvy06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy06.mp3" +} + +"Scout.DominationHvy07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy07.mp3" +} + +"Scout.DominationHvy08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy08.mp3" +} + +"Scout.DominationHvy09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy09.mp3" +} + +"Scout.DominationHvy10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationHvy10.mp3" +} + +"Scout.DominationMed06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationMed06.mp3" +} + +"Scout.DominationMed05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationMed05.mp3" +} + +"Scout.DominationMed01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationMed01.mp3" +} + +"Scout.DominationMed02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationMed02.mp3" +} + +"Scout.DominationMed03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationMed03.mp3" +} + +"Scout.DominationMed04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationMed04.mp3" +} + +"Scout.DominationPyr01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationPyr01.mp3" +} + +"Scout.DominationPyr02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationPyr02.mp3" +} + +"Scout.DominationPyr03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationPyr03.mp3" +} + +"Scout.DominationPyr06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationPyr06.mp3" +} + +"Scout.DominationPyr04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationPyr04.mp3" +} + +"Scout.DominationPyr05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationPyr05.mp3" +} + +"Scout.DominationSct01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSct01.mp3" +} + +"Scout.DominationSct02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSct02.mp3" +} + +"Scout.DominationSct03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSct03.mp3" +} + +"Scout.DominationSnp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSnp01.mp3" +} + +"Scout.DominationSnp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSnp02.mp3" +} + +"Scout.DominationSnp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSnp03.mp3" +} + +"Scout.DominationSnp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSnp04.mp3" +} + +"Scout.DominationSnp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSnp05.mp3" +} + +"Scout.DominationSol01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSol01.mp3" +} + +"Scout.DominationSol02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSol02.mp3" +} + +"Scout.DominationSol03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSol03.mp3" +} + +"Scout.DominationSol04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSol04.mp3" +} + +"Scout.DominationSol05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSol05.mp3" +} + +"Scout.DominationSol06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSol06.mp3" +} + +"Scout.DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSpy01.mp3" +} + +"Scout.DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSpy02.mp3" +} + +"Scout.DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSpy03.mp3" +} + +"Scout.DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_DominationSpy04.mp3" +} + +"Scout.FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_FightOnCap01.mp3" +} + +"Scout.FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_FightOnCap02.mp3" +} + +"Scout.FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_FightOnCap03.mp3" +} + +"Scout.FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_FightOnCap04.mp3" +} + +"Scout.Invincible01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Invincible01.mp3" +} + +"Scout.Invincible02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Invincible02.mp3" +} + +"Scout.Invincible04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Invincible04.mp3" +} + +"Scout.Invincible03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Invincible03.mp3" +} + +"Scout.InvincibleChgUnderFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleChgUnderFire01.mp3" +} + +"Scout.InvincibleChgUnderFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleChgUnderFire02.mp3" +} + +"Scout.InvincibleChgUnderFire04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleChgUnderFire04.mp3" +} + +"Scout.InvincibleChgUnderFire03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleChgUnderFire03.mp3" +} + +"Scout.InvincibleNotReady01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady01.mp3" +} + +"Scout.InvincibleNotReady02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady02.mp3" +} + +"Scout.InvincibleNotReady03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady03.mp3" +} + +"Scout.InvincibleNotReady04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady04.mp3" +} + +"Scout.InvincibleNotReady05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady05.mp3" +} + +"Scout.InvincibleNotReady06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady06.mp3" +} + +"Scout.InvincibleNotReady07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_InvincibleNotReady07.mp3" +} + +"Scout.MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MedicFollow01.mp3" +} + +"Scout.MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MedicFollow02.mp3" +} + +"Scout.MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MedicFollow03.mp3" +} + +"Scout.MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MedicFollow04.mp3" +} + +"Scout.MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MeleeDare01.mp3" +} + +"Scout.MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MeleeDare02.mp3" +} + +"Scout.MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MeleeDare06.mp3" +} + +"Scout.MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MeleeDare03.mp3" +} + +"Scout.MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MeleeDare04.mp3" +} + +"Scout.MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_MeleeDare05.mp3" +} + +"Scout.Misc01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc01.mp3" +} + +"Scout.Misc02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc02.mp3" +} + +"Scout.Misc03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc03.mp3" +} + +"Scout.Misc04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc04.mp3" +} + +"Scout.Misc05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc05.mp3" +} + +"Scout.Misc06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc06.mp3" +} + +"Scout.Misc07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc07.mp3" +} + +"Scout.Misc08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc08.mp3" +} + +"Scout.Misc09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Misc09.mp3" +} + +"Scout.Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge01.mp3" +} + +"Scout.Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge02.mp3" +} + +"Scout.Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge03.mp3" +} + +"Scout.Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge04.mp3" +} + +"Scout.Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge05.mp3" +} + +"Scout.Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge06.mp3" +} + +"Scout.Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge07.mp3" +} + +"Scout.Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge08.mp3" +} + +"Scout.Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_Revenge09.mp3" +} + +"Scout.StunBallHit02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit02.mp3" +} + +"Scout.StunBallHit03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit03.mp3" +} + +"Scout.StunBallHit04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit04.mp3" +} + +"Scout.StunBallHit05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit05.mp3" +} + +"Scout.StunBallHit06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit06.mp3" +} + +"Scout.StunBallHit07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit07.mp3" +} + +"Scout.StunBallHit08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit08.mp3" +} + +"Scout.StunBallHit09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit09.mp3" +} + +"Scout.StunBallHit10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit10.mp3" +} + +"Scout.StunBallHit15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit15.mp3" +} + +"Scout.StunBallHit11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit11.mp3" +} + +"Scout.StunBallHit16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit16.mp3" +} + +"Scout.StunBallHit12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit12.mp3" +} + +"Scout.StunBallHit13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit13.mp3" +} + +"Scout.StunBallHit14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit14.mp3" +} + +"Scout.StunBallHit01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHit01.mp3" +} + +"Scout.StunBallHittingIt02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHittingIt02.mp3" +} + +"Scout.StunBallHittingIt01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHittingIt01.mp3" +} + +"Scout.StunBallHittingIt04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHittingIt04.mp3" +} + +"Scout.StunBallHittingIt03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHittingIt03.mp3" +} + +"Scout.StunBallHittingIt05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallHittingIt05.mp3" +} + +"Scout.StunBallPickUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallPickUp01.mp3" +} + +"Scout.StunBallPickUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallPickUp02.mp3" +} + +"Scout.StunBallPickUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallPickUp03.mp3" +} + +"Scout.StunBallPickUp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallPickUp04.mp3" +} + +"Scout.StunBallPickUp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_StunBallPickUp05.mp3" +} + +"Scout.TripleJump01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_TripleJump01.mp3" +} + +"Scout.TripleJump03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_TripleJump03.mp3" +} + +"Scout.TripleJump02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_TripleJump02.mp3" +} + +"Scout.TripleJump04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_TripleJump04.mp3" +} + +//----------------------------------------------------------------------------- +//End of Scout Batch 4 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Announcer batch 5 +//----------------------------------------------------------------------------- +"Announcer.AM_CapEnabledRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + + "rndwave" + { + "wave" "vo/announcer_AM_CapEnabled01.mp3" + "wave" "vo/announcer_AM_CapEnabled02.mp3" + "wave" "vo/announcer_AM_CapEnabled03.mp3" + "wave" "vo/announcer_AM_CapEnabled04.mp3" + } +} + +"Announcer.AM_CapEnabled01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapEnabled01.mp3" +} + +"Announcer.AM_CapEnabled02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapEnabled02.mp3" +} + +"Announcer.AM_CapEnabled03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapEnabled03.mp3" +} + +"Announcer.AM_CapEnabled04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapEnabled04.mp3" +} + +"Announcer.AM_CapIncite01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapIncite01.mp3" +} + +"Announcer.AM_CapIncite02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapIncite02.mp3" +} + +"Announcer.AM_CapIncite03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapIncite03.mp3" +} + +"Announcer.AM_CapIncite04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapIncite04.mp3" +} + +"Announcer.AM_CapIncite05" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapIncite05.mp3" +} + +"Announcer.AM_CapIncite06" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_CapIncite06.mp3" +} + +"Announcer.AM_FirstBloodRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_AM_FirstBlood01.mp3" + "wave" "vo/announcer_AM_FirstBlood02.mp3" + "wave" "vo/announcer_AM_FirstBlood04.mp3" + "wave" "vo/announcer_AM_FirstBlood05.mp3" + } +} + +"Announcer.AM_FirstBloodFinally" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood03.mp3" +} + +"Announcer.AM_FirstBloodFast" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood06.mp3" +} + + +"Announcer.AM_FirstBlood01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood01.mp3" +} + +"Announcer.AM_FirstBlood03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood03.mp3" +} + +"Announcer.AM_FirstBlood05" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood05.mp3" +} + +"Announcer.AM_FirstBlood02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood02.mp3" +} + +"Announcer.AM_FirstBlood04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood04.mp3" +} + +"Announcer.AM_FirstBlood06" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FirstBlood06.mp3" +} + +"Announcer.AM_FlawlessDefeatRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_AM_FlawlessDefeat01.mp3" + "wave" "vo/announcer_AM_FlawlessDefeat02.mp3" + "wave" "vo/announcer_AM_FlawlessDefeat03.mp3" + "wave" "vo/announcer_AM_FlawlessDefeat04.mp3" + } +} + +"Announcer.AM_FlawlessVictoryRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_AM_FlawlessVictory01.mp3" + "wave" "vo/announcer_AM_FlawlessVictory02.mp3" + "wave" "vo/announcer_AM_FlawlessVictory03.mp3" + } +} + +"Announcer.AM_FlawlessDefeat02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessDefeat02.mp3" +} + +"Announcer.AM_FlawlessDefeat01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessDefeat01.mp3" +} + +"Announcer.AM_FlawlessDefeat03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessDefeat03.mp3" +} + +"Announcer.AM_FlawlessDefeat04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessDefeat04.mp3" +} + +"Announcer.AM_FlawlessVictory01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessVictory01.mp3" +} + +"Announcer.AM_FlawlessVictory02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessVictory02.mp3" +} + +"Announcer.AM_FlawlessVictory03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_FlawlessVictory03.mp3" +} + +"Announcer.AM_GameStarting01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_GameStarting01.mp3" +} + +"Announcer.AM_GameStarting02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_GameStarting02.mp3" +} + +"Announcer.AM_GameStarting03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_GameStarting03.mp3" +} + +"Announcer.AM_GameStarting04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_GameStarting04.mp3" +} + +"Announcer.AM_GameStarting05" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_GameStarting05.mp3" +} + +"Announcer.AM_KillStreak01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak01.mp3" +} + +"Announcer.AM_KillStreak02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak02.mp3" +} + +"Announcer.AM_KillStreak03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak03.mp3" +} + +"Announcer.AM_KillStreak04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak04.mp3" +} + +"Announcer.AM_KillStreak05" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak05.mp3" +} + +"Announcer.AM_KillStreak06" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak06.mp3" +} + +"Announcer.AM_KillStreak07" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak07.mp3" +} + +"Announcer.AM_KillStreak08" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak08.mp3" +} + +"Announcer.AM_KillStreak09" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak09.mp3" +} + +"Announcer.AM_KillStreak10" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak10.mp3" +} + +"Announcer.AM_KillStreak11" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_KillStreak11.mp3" +} + +"Announcer.AM_LastManAlive02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManAlive02.mp3" +} + +"Announcer.AM_LastManAlive03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManAlive03.mp3" +} + +"Announcer.AM_LastManAlive01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManAlive01.mp3" +} + +"Announcer.AM_LastManAlive04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManAlive04.mp3" +} + +"Announcer.AM_LastManForfeit01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManForfeit01.mp3" +} + +"Announcer.AM_LastManForfeit02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManForfeit02.mp3" +} + +"Announcer.AM_LastManForfeit03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManForfeit03.mp3" +} + +"Announcer.AM_LastManForfeit04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_LastManForfeit04.mp3" +} + +"Announcer.AM_RoundStartRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_AM_RoundStart01.mp3" + "wave" "vo/announcer_AM_RoundStart03.mp3" + "wave" "vo/announcer_AM_RoundStart04.mp3" + } +} + +"Announcer.AM_RoundStart01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_RoundStart01.mp3" +} + +"Announcer.AM_RoundStart02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_RoundStart02.mp3" +} + +"Announcer.AM_RoundStart03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_RoundStart03.mp3" +} + +"Announcer.AM_RoundStart04" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_RoundStart04.mp3" +} + +"Announcer.AM_TeamScrambleRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_AM_TeamScramble01.mp3" + "wave" "vo/announcer_AM_TeamScramble02.mp3" + "wave" "vo/announcer_AM_TeamScramble03.mp3" + } +} + +"Announcer.AM_TeamScramble03" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_TeamScramble03.mp3" +} + +"Announcer.AM_TeamScramble02" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_TeamScramble02.mp3" +} + +"Announcer.AM_TeamScramble01" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/announcer_AM_TeamScramble01.mp3" +} + +//----------------------------------------------------------------------------- +//End of Announcer +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Spy batch 6 +//----------------------------------------------------------------------------- +"Spy.DominationDemoMan01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan01.mp3" +} + +"Spy.DominationDemoMan02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan02.mp3" +} + +"Spy.DominationDemoMan03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan03.mp3" +} + +"Spy.DominationDemoMan04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan04.mp3" +} + +"Spy.DominationDemoMan05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan05.mp3" +} + +"Spy.DominationDemoMan06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan06.mp3" +} + +"Spy.DominationDemoMan07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationDemoMan07.mp3" +} + +"Spy.DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationEngineer01.mp3" +} + +"Spy.DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationEngineer02.mp3" +} + +"Spy.DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationEngineer03.mp3" +} + +"Spy.DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationEngineer04.mp3" +} + +"Spy.DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationEngineer05.mp3" +} + +"Spy.DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationEngineer06.mp3" +} + +"Spy.DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy01.mp3" +} + +"Spy.DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy02.mp3" +} + +"Spy.DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy03.mp3" +} + +"Spy.DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy04.mp3" +} + +"Spy.DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy05.mp3" +} + +"Spy.DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy06.mp3" +} + +"Spy.DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy07.mp3" +} + +"Spy.DominationHeavy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationHeavy08.mp3" +} + +"Spy.DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationMedic01.mp3" +} + +"Spy.DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationMedic02.mp3" +} + +"Spy.DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationMedic03.mp3" +} + +"Spy.DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationMedic04.mp3" +} + +"Spy.DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationMedic05.mp3" +} + +"Spy.DominationMedic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationMedic06.mp3" +} + +"Spy.DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationPyro01.mp3" +} + +"Spy.DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationPyro02.mp3" +} + +"Spy.DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationPyro03.mp3" +} + +"Spy.DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationPyro04.mp3" +} + +"Spy.DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationPyro05.mp3" +} + +"Spy.DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout01.mp3" +} + +"Spy.DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout02.mp3" +} + +"Spy.DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout03.mp3" +} + +"Spy.DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout04.mp3" +} + +"Spy.DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout05.mp3" +} + +"Spy.DominationScout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout06.mp3" +} + +"Spy.DominationScout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout07.mp3" +} + +"Spy.DominationScout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationScout08.mp3" +} + +"Spy.DominationSniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper01.mp3" +} + +"Spy.DominationSniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper02.mp3" +} + +"Spy.DominationSniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper03.mp3" +} + +"Spy.DominationSniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper04.mp3" +} + +"Spy.DominationSniper05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper05.mp3" +} + +"Spy.DominationSniper06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper06.mp3" +} + +"Spy.DominationSniper07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSniper07.mp3" +} + +"Spy.DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSoldier01.mp3" +} + +"Spy.DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSoldier02.mp3" +} + +"Spy.DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSoldier03.mp3" +} + +"Spy.DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSoldier04.mp3" +} + +"Spy.DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSoldier05.mp3" +} + +"Spy.DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSpy01.mp3" +} + +"Spy.DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSpy02.mp3" +} + +"Spy.DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSpy03.mp3" +} + +"Spy.DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSpy04.mp3" +} + +"Spy.DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_DominationSpy05.mp3" +} + +"Spy.JarateHit01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_JarateHit01.mp3" +} + +"Spy.JarateHit02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_JarateHit02.mp3" +} + +"Spy.JarateHit03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_JarateHit03.mp3" +} + +"Spy.JarateHit04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_JarateHit04.mp3" +} + +"Spy.JarateHit05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_JarateHit05.mp3" +} + +"Spy.JarateHit06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_JarateHit06.mp3" +} + +"Spy.MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_MedicFollow01.mp3" +} + +"Spy.MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_MedicFollow02.mp3" +} + +"Spy.MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_MeleeDare01.mp3" +} + +"Spy.MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_MeleeDare02.mp3" +} + +"Spy.Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_Revenge01.mp3" +} + +"Spy.Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_Revenge02.mp3" +} + +"Spy.Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_Revenge03.mp3" +} + +//----------------------------------------------------------------------------- +//End of Spy batch 6 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Sniper BATCH 7 +//----------------------------------------------------------------------------- +"Sniper.DominationDemoMan01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationDemoMan01.mp3" +} + +"Sniper.DominationDemoMan02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationDemoMan02.mp3" +} + +"Sniper.DominationDemoMan03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationDemoMan03.mp3" +} + +"Sniper.DominationDemoMan04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationDemoMan04.mp3" +} + +"Sniper.DominationDemoMan05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationDemoMan05.mp3" +} + +"Sniper.DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationEngineer01.mp3" +} + +"Sniper.DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationEngineer02.mp3" +} + +"Sniper.DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationEngineer03.mp3" +} + +"Sniper.DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationEngineer04.mp3" +} + +"Sniper.DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationEngineer05.mp3" +} + +"Sniper.DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationEngineer06.mp3" +} + +"Sniper.DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy01.mp3" +} + +"Sniper.DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy02.mp3" +} + +"Sniper.DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy03.mp3" +} + +"Sniper.DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy04.mp3" +} + +"Sniper.DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy05.mp3" +} + +"Sniper.DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy06.mp3" +} + +"Sniper.DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationHeavy07.mp3" +} + +"Sniper.DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationMedic01.mp3" +} + +"Sniper.DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationMedic02.mp3" +} + +"Sniper.DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationMedic03.mp3" +} + +"Sniper.DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationMedic04.mp3" +} + +"Sniper.DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationMedic05.mp3" +} + +"Sniper.DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationPyro01.mp3" +} + +"Sniper.DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationPyro02.mp3" +} + +"Sniper.DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationPyro03.mp3" +} + +"Sniper.DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationPyro04.mp3" +} + +"Sniper.DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationPyro05.mp3" +} + +"Sniper.DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationScout01.mp3" +} + +"Sniper.DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationScout02.mp3" +} + +"Sniper.DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationScout03.mp3" +} + +"Sniper.DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationScout04.mp3" +} + +"Sniper.DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationScout05.mp3" +} + +"Sniper.DominationSniper18" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSniper18.mp3" +} + +"Sniper.DominationSniper19" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSniper19.mp3" +} + +"Sniper.DominationSniper20" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSniper20.mp3" +} + +"Sniper.DominationSniper21" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSniper21.mp3" +} + +"Sniper.DominationSniper22" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSniper22.mp3" +} + +"Sniper.DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSoldier01.mp3" +} + +"Sniper.DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSoldier02.mp3" +} + +"Sniper.DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSoldier03.mp3" +} + +"Sniper.DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSoldier04.mp3" +} + +"Sniper.DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSoldier05.mp3" +} + +"Sniper.DominationSoldier06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSoldier06.mp3" +} + +"Sniper.DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy01.mp3" +} + +"Sniper.DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy02.mp3" +} + +"Sniper.DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy03.mp3" +} + +"Sniper.DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy04.mp3" +} + +"Sniper.DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy05.mp3" +} + +"Sniper.DominationSpy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy06.mp3" +} + +"Sniper.DominationSpy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_DominationSpy07.mp3" +} + +"Sniper.JarateToss01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_JarateToss01.mp3" +} + +"Sniper.JarateToss02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_JarateToss02.mp3" +} + +"Sniper.JarateToss03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_JarateToss03.mp3" +} + +//----------------------------------------------------------------------------- +//End of Sniper BATCH 7 +//----------------------------------------------------------------------------- + +"Halloween.GhostMoan" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_moan1.mp3" + "wave" "vo/halloween_moan2.mp3" + "wave" "vo/halloween_moan3.mp3" + "wave" "vo/halloween_moan4.mp3" + } +} + +"Halloween.GhostBoo" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_boo1.mp3" + "wave" "vo/halloween_boo2.mp3" + "wave" "vo/halloween_boo3.mp3" + "wave" "vo/halloween_boo4.mp3" + "wave" "vo/halloween_boo5.mp3" + "wave" "vo/halloween_boo6.mp3" + "wave" "vo/halloween_boo7.mp3" + } +} + +"Halloween.PlayerScream" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_scream2.mp3" + "wave" "vo/halloween_scream3.mp3" + "wave" "vo/halloween_scream4.mp3" + "wave" "vo/halloween_scream5.mp3" + "wave" "vo/halloween_scream6.mp3" + "wave" "vo/halloween_scream7.mp3" + "wave" "vo/halloween_scream8.mp3" + } +} + +"Halloween.Haunted" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_haunted1.mp3" + "wave" "vo/halloween_haunted2.mp3" + "wave" "vo/halloween_haunted3.mp3" + "wave" "vo/halloween_haunted4.mp3" + "wave" "vo/halloween_haunted5.mp3" + } +} + +"Halloween.HeadlessBossSpawn" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" ")ui/halloween_boss_summoned_fx.wav" +} + +"Halloween.MerasmusBossSpawn" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" ")ui/halloween_boss_summoned.wav" +} + +"Halloween.MonoculusBossSpawn" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" ")ui/halloween_boss_summoned_monoculus.wav" +} + +"Halloween.MonoculusBossDeath" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "ui/halloween_boss_defeated_monoculus.wav" +} + +"Halloween.HeadlessBossSpawnRumble" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_100dB" + + "wave" ")ui/halloween_boss_summon_rumble.wav" +} + +"Halloween.HeadlessBossAttack" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_boss/knight_attack01.mp3" + "wave" "vo/halloween_boss/knight_attack02.mp3" + "wave" "vo/halloween_boss/knight_attack03.mp3" + "wave" "vo/halloween_boss/knight_attack04.mp3" + } +} + +"Halloween.HeadlessBossAlert" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_boss/knight_alert01.mp3" + "wave" "vo/halloween_boss/knight_alert02.mp3" + } +} + +"Halloween.HeadlessBossBoo" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_boss/knight_alert.mp3" +} + +"Halloween.HeadlessBossPain" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_boss/knight_pain01.mp3" + "wave" "vo/halloween_boss/knight_pain02.mp3" + "wave" "vo/halloween_boss/knight_pain03.mp3" + } +} + +"Halloween.HeadlessBossLaugh" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_boss/knight_laugh01.mp3" + "wave" "vo/halloween_boss/knight_laugh02.mp3" + "wave" "vo/halloween_boss/knight_laugh03.mp3" + "wave" "vo/halloween_boss/knight_laugh04.mp3" + } +} + +"Halloween.HeadlessBossDying" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" "vo/halloween_boss/knight_dying.mp3" +} + +"Halloween.HeadlessBossDeath" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "ui/halloween_boss_defeated_fx.wav" +} + + +//----------------------------------------------------------------------------- +"Halloween.EyeballBossIdle" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_eyeball/eyeball05.mp3" + "wave" "vo/halloween_eyeball/eyeball06.mp3" + } +} + +"Halloween.EyeballBossBecomeAlert" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_eyeball/eyeball04.mp3" +} + +"Halloween.EyeballBossAcquiredVictim" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_eyeball/eyeball01.mp3" +} + +"Halloween.EyeballBossStunned" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" "vo/halloween_eyeball/eyeball09.mp3" +} + +"Halloween.EyeballBossStunRecover" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_eyeball/eyeball03.mp3" +} + +"Halloween.EyeballBossBecomeEnraged" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_eyeball/eyeball_mad02.mp3" +} + +"Halloween.EyeballBossRage" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_eyeball/eyeball_mad01.mp3" + "wave" "vo/halloween_eyeball/eyeball_mad03.mp3" + } +} + +"Halloween.EyeballBossCalmDown" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_eyeball/eyeball07.mp3" +} + +"Halloween.EyeballBossLaugh" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_eyeball/eyeball_laugh01.mp3" + "wave" "vo/halloween_eyeball/eyeball_laugh02.mp3" + } +} + +"Halloween.EyeballBossDie" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/halloween_eyeball/eyeball10.mp3" +} + +"Halloween.EyeballBossEscapeSoon" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" ")ui/halloween_boss_escape_sixty.wav" +} + +"Halloween.EyeballBossEscapeImminent" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" ")ui/halloween_boss_escape_ten.wav" +} + +"Halloween.EyeballBossEscaped" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" ")ui/halloween_boss_escape.wav" +} + +"Halloween.EyeballBossTeleport" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "wave" "vo/halloween_eyeball/eyeball_teleport01.mp3" +} + +"Halloween.EyeballBossBigLaugh" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_150dB" + + "rndwave" + { + "wave" "vo/halloween_eyeball/eyeball_biglaugh01.mp3" + "wave" "vo/halloween_eyeball/eyeball_biglaugh02.mp3" + } +} + +"Halloween.PlayerEscapedUnderworld" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "wave" "ui/halloween_boss_player_becomes_it.wav" +} + + +//----------------------------------------------------------------------------- +//Soldier BATCH 9 +//----------------------------------------------------------------------------- +"Soldier.DirectHitTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DirectHitTaunt01.mp3" +} + +"Soldier.DirectHitTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DirectHitTaunt02.mp3" +} + +"Soldier.DirectHitTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DirectHitTaunt03.mp3" +} + +"Soldier.DirectHitTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DirectHitTaunt04.mp3" +} + +"Soldier.DominationDemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemoman01.mp3" +} + +"Soldier.DominationDemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemoman02.mp3" +} + +"Soldier.DominationDemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemoman03.mp3" +} + +"Soldier.DominationDemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemoman04.mp3" +} + +"Soldier.DominationDemoman05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemoman05.mp3" +} + +"Soldier.DominationDemoman06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemoman06.mp3" +} + +"Soldier.DominationDemonmanUpdate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemonmanUpdate01.mp3" +} + +"Soldier.DominationDemonmanUpdate02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemonmanUpdate02.mp3" +} + +"Soldier.DominationDemonmanUpdate03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemonmanUpdate03.mp3" +} + +"Soldier.DominationDemonmanUpdate04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemonmanUpdate04.mp3" +} + +"Soldier.DominationDemonmanUpdate05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationDemonmanUpdate05.mp3" +} + +"Soldier.DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationEngineer01.mp3" +} + +"Soldier.DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationEngineer02.mp3" +} + +"Soldier.DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationEngineer03.mp3" +} + +"Soldier.DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationEngineer04.mp3" +} + +"Soldier.DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationEngineer05.mp3" +} + +"Soldier.DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationEngineer06.mp3" +} + +"Soldier.DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy01.mp3" +} + +"Soldier.DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy02.mp3" +} + +"Soldier.DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy03.mp3" +} + +"Soldier.DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy04.mp3" +} + +"Soldier.DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy05.mp3" +} + +"Soldier.DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy06.mp3" +} + +"Soldier.DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationHeavy07.mp3" +} + +"Soldier.DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic01.mp3" +} + +"Soldier.DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic02.mp3" +} + +"Soldier.DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic03.mp3" +} + +"Soldier.DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic04.mp3" +} + +"Soldier.DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic05.mp3" +} + +"Soldier.DominationMedic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic06.mp3" +} + +"Soldier.DominationMedic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationMedic07.mp3" +} + +"Soldier.DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro01.mp3" +} + +"Soldier.DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro02.mp3" +} + +"Soldier.DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro03.mp3" +} + +"Soldier.DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro04.mp3" +} + +"Soldier.DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro05.mp3" +} + +"Soldier.DominationPyro06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro06.mp3" +} + +"Soldier.DominationPyro07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro07.mp3" +} + +"Soldier.DominationPyro08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro08.mp3" +} + +"Soldier.DominationPyro09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationPyro09.mp3" +} + +"Soldier.DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout01.mp3" +} + +"Soldier.DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout02.mp3" +} + +"Soldier.DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout03.mp3" +} + +"Soldier.DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout04.mp3" +} + +"Soldier.DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout05.mp3" +} + +"Soldier.DominationScout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout06.mp3" +} + +"Soldier.DominationScout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout07.mp3" +} + +"Soldier.DominationScout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout08.mp3" +} + +"Soldier.DominationScout09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout09.mp3" +} + +"Soldier.DominationScout10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout10.mp3" +} + +"Soldier.DominationScout11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationScout11.mp3" +} + +"Soldier.DominationSniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper01.mp3" +} + +"Soldier.DominationSniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper02.mp3" +} + +"Soldier.DominationSniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper03.mp3" +} + +"Soldier.DominationSniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper04.mp3" +} + +"Soldier.DominationSniper05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper05.mp3" +} + +"Soldier.DominationSniper06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper06.mp3" +} + +"Soldier.DominationSniper07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper07.mp3" +} + +"Soldier.DominationSniper08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper08.mp3" +} + +"Soldier.DominationSniper09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper09.mp3" +} + +"Soldier.DominationSniper10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper10.mp3" +} + +"Soldier.DominationSniper11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper11.mp3" +} + +"Soldier.DominationSniper12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper12.mp3" +} + +"Soldier.DominationSniper13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper13.mp3" +} + +"Soldier.DominationSniper14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSniper14.mp3" +} + +"Soldier.DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSoldier01.mp3" +} + +"Soldier.DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSoldier02.mp3" +} + +"Soldier.DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSoldier03.mp3" +} + +"Soldier.DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSoldier04.mp3" +} + +"Soldier.DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSoldier05.mp3" +} + +"Soldier.DominationSoldier06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSoldier06.mp3" +} + +"Soldier.DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy01.mp3" +} + +"Soldier.DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy02.mp3" +} + +"Soldier.DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy03.mp3" +} + +"Soldier.DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy04.mp3" +} + +"Soldier.DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy05.mp3" +} + +"Soldier.DominationSpy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy06.mp3" +} + +"Soldier.DominationSpy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy07.mp3" +} + +"Soldier.DominationSpy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_DominationSpy08.mp3" +} + +"Soldier.HatOverHeartTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_HatOverHeartTaunt01.mp3" +} + +"Soldier.HatOverHeartTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_HatOverHeartTaunt02.mp3" +} + +"Soldier.HatOverHeartTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_HatOverHeartTaunt03.mp3" +} + +"Soldier.HatOverHeartTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_HatOverHeartTaunt04.mp3" +} + +"Soldier.HatOverHeartTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_HatOverHeartTaunt05.mp3" +} + +"Soldier.HatOverHeartTaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_HatOverHeartTaunt06.mp3" +} + +"Soldier.KaBoomAlts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_KaBoomAlts01.mp3" +} + +"Soldier.KaBoomAlts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_KaBoomAlts02.mp3" +} + +"Soldier.KaBoomAlts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_KaBoomAlts03.mp3" +} + +"Soldier.PickAxeTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_PickAxeTaunt01.mp3" +} + +"Soldier.PickAxeTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_PickAxeTaunt02.mp3" +} + +"Soldier.PickAxeTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_PickAxeTaunt03.mp3" +} + +"Soldier.PickAxeTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_PickAxeTaunt04.mp3" +} + +"Soldier.PickAxeTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_PickAxeTaunt05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 9 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Demoman BATCH 10 +//----------------------------------------------------------------------------- +"Demoman.dominationdemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationdemoman01.mp3" +} + +"Demoman.dominationdemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationdemoman02.mp3" +} + +"Demoman.dominationdemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationdemoman03.mp3" +} + +"Demoman.dominationdemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationdemoman04.mp3" +} + +"Demoman.dominationengineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationengineer01.mp3" +} + +"Demoman.dominationengineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationengineer02.mp3" +} + +"Demoman.dominationengineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationengineer03.mp3" +} + +"Demoman.dominationengineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationengineer04.mp3" +} + +"Demoman.dominationengineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationengineer05.mp3" +} + +"Demoman.dominationengineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationengineer06.mp3" +} + +"Demoman.dominationheavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationheavy01.mp3" +} + +"Demoman.dominationheavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationheavy02.mp3" +} + +"Demoman.dominationheavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationheavy03.mp3" +} + +"Demoman.dominationheavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationheavy04.mp3" +} + +"Demoman.dominationheavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationheavy05.mp3" +} + +"Demoman.dominationmedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationmedic01.mp3" +} + +"Demoman.dominationmedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationmedic02.mp3" +} + +"Demoman.dominationmedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationmedic03.mp3" +} + +"Demoman.dominationmedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationmedic04.mp3" +} + +"Demoman.dominationpyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationpyro01.mp3" +} + +"Demoman.dominationpyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationpyro02.mp3" +} + +"Demoman.dominationpyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationpyro03.mp3" +} + +"Demoman.dominationpyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationpyro04.mp3" +} + +"Demoman.dominationscout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout01.mp3" +} + +"Demoman.dominationscout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout02.mp3" +} + +"Demoman.dominationscout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout03.mp3" +} + +"Demoman.dominationscout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout04.mp3" +} + +"Demoman.dominationscout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout05.mp3" +} + +"Demoman.dominationscout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout06.mp3" +} + +"Demoman.dominationscout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout07.mp3" +} + +"Demoman.dominationscout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationscout08.mp3" +} + +"Demoman.dominationsniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsniper01.mp3" +} + +"Demoman.dominationsniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsniper02.mp3" +} + +"Demoman.dominationsniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsniper03.mp3" +} + +"Demoman.dominationsniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsniper04.mp3" +} + +"Demoman.dominationsoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldier01.mp3" +} + +"Demoman.dominationsoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldier02.mp3" +} + +"Demoman.dominationsoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldier03.mp3" +} + +"Demoman.dominationsoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldier04.mp3" +} + +"Demoman.dominationsoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldier05.mp3" +} + +"Demoman.dominationsoldierupdate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldierupdate01.mp3" +} + +"Demoman.dominationsoldierupdate02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldierupdate02.mp3" +} + +"Demoman.dominationsoldierupdate03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldierupdate03.mp3" +} + +"Demoman.dominationsoldierupdate04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldierupdate04.mp3" +} + +"Demoman.dominationsoldierupdate05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldierupdate05.mp3" +} + +"Demoman.dominationsoldierupdate06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationsoldierupdate06.mp3" +} + +"Demoman.dominationspy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationspy01.mp3" +} + +"Demoman.dominationspy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationspy02.mp3" +} + +"Demoman.dominationspy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_dominationspy03.mp3" +} + +"Demoman.eyelandertaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_eyelandertaunt01.mp3" +} + +"Demoman.eyelandertaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_eyelandertaunt02.mp3" +} + +"Demoman.gibberish01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish01.mp3" +} + +"Demoman.gibberish02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish02.mp3" +} + +"Demoman.gibberish03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish03.mp3" +} + +"Demoman.gibberish04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish04.mp3" +} + +"Demoman.gibberish05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish05.mp3" +} + +"Demoman.gibberish06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish06.mp3" +} + +"Demoman.gibberish07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish07.mp3" +} + +"Demoman.gibberish08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish08.mp3" +} + +"Demoman.gibberish09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish09.mp3" +} + +"Demoman.gibberish10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish10.mp3" +} + +"Demoman.gibberish11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish11.mp3" +} + +"Demoman.gibberish12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish12.mp3" +} + +"Demoman.gibberish13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_gibberish13.mp3" +} + +//----------------------------------------------------------------------------- +//End of Demoman BATCH 10 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Announcer Training +//----------------------------------------------------------------------------- + + +"Announcer.TrKillTargetRandom" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_am_killstreak02.mp3" + "wave" "vo/announcer_am_killstreak03.mp3" + "wave" "vo/announcer_am_killstreak04.mp3" + "wave" "vo/announcer_am_killstreak06.mp3" + "wave" "vo/announcer_am_killstreak09.mp3" + "wave" "vo/announcer_am_killstreak11.mp3" + } +} + + +//----------------------------------------------------------------------------- +//Engineer BATCH 12 +//----------------------------------------------------------------------------- +"engineer_dominationdemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationdemoman01.mp3" +} + +"engineer_dominationdemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationdemoman02.mp3" +} + +"engineer_dominationdemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationdemoman03.mp3" +} + +"engineer_dominationdemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationdemoman04.mp3" +} + +"engineer_dominationdemoman05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationdemoman05.mp3" +} + +"engineer_dominationdemoman06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationdemoman06.mp3" +} + +"engineer_dominationengineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer01.mp3" +} + +"engineer_dominationengineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer02.mp3" +} + +"engineer_dominationengineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer03.mp3" +} + +"engineer_dominationengineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer04.mp3" +} + +"engineer_dominationengineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer05.mp3" +} + +"engineer_dominationengineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer06.mp3" +} + +"engineer_dominationengineer07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer07.mp3" +} + +"engineer_dominationengineer08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer08.mp3" +} + +"engineer_dominationengineer09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationengineer09.mp3" +} + +"engineer_dominationheavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy01.mp3" +} + +"engineer_dominationheavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy02.mp3" +} + +"engineer_dominationheavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy03.mp3" +} + +"engineer_dominationheavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy04.mp3" +} + +"engineer_dominationheavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy05.mp3" +} + +"engineer_dominationheavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy06.mp3" +} + +"engineer_dominationheavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy07.mp3" +} + +"engineer_dominationheavy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy08.mp3" +} + +"engineer_dominationheavy09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy09.mp3" +} + +"engineer_dominationheavy10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy10.mp3" +} + +"engineer_dominationheavy11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy11.mp3" +} + +"engineer_dominationheavy12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy12.mp3" +} + +"engineer_dominationheavy13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy13.mp3" +} + +"engineer_dominationheavy14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy14.mp3" +} + +"engineer_dominationheavy15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationheavy15.mp3" +} + +"engineer_dominationmedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic01.mp3" +} + +"engineer_dominationmedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic02.mp3" +} + +"engineer_dominationmedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic03.mp3" +} + +"engineer_dominationmedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic04.mp3" +} + +"engineer_dominationmedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic05.mp3" +} + +"engineer_dominationmedic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic06.mp3" +} + +"engineer_dominationmedic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic07.mp3" +} + +"engineer_dominationmedic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationmedic08.mp3" +} + +"engineer_dominationpyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro01.mp3" +} + +"engineer_dominationpyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro02.mp3" +} + +"engineer_dominationpyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro03.mp3" +} + +"engineer_dominationpyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro04.mp3" +} + +"engineer_dominationpyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro05.mp3" +} + +"engineer_dominationpyro06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro06.mp3" +} + +"engineer_dominationpyro07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro07.mp3" +} + +"engineer_dominationpyro08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro08.mp3" +} + +"engineer_dominationpyro09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationpyro09.mp3" +} + +"engineer_dominationscout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout01.mp3" +} + +"engineer_dominationscout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout02.mp3" +} + +"engineer_dominationscout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout03.mp3" +} + +"engineer_dominationscout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout04.mp3" +} + +"engineer_dominationscout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout05.mp3" +} + +"engineer_dominationscout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout06.mp3" +} + +"engineer_dominationscout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout07.mp3" +} + +"engineer_dominationscout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout08.mp3" +} + +"engineer_dominationscout09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout09.mp3" +} + +"engineer_dominationscout10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout10.mp3" +} + +"engineer_dominationscout11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout11.mp3" +} + +"engineer_dominationscout12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationscout12.mp3" +} + +"engineer_dominationsniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper01.mp3" +} + +"engineer_dominationsniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper02.mp3" +} + +"engineer_dominationsniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper03.mp3" +} + +"engineer_dominationsniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper04.mp3" +} + +"engineer_dominationsniper05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper05.mp3" +} + +"engineer_dominationsniper06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper06.mp3" +} + +"engineer_dominationsniper07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper07.mp3" +} + +"engineer_dominationsniper08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsniper08.mp3" +} + +"engineer_dominationsoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier01.mp3" +} + +"engineer_dominationsoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier02.mp3" +} + +"engineer_dominationsoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier03.mp3" +} + +"engineer_dominationsoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier04.mp3" +} + +"engineer_dominationsoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier05.mp3" +} + +"engineer_dominationsoldier06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier06.mp3" +} + +"engineer_dominationsoldier07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier07.mp3" +} + +"engineer_dominationsoldier08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationsoldier08.mp3" +} + +"engineer_dominationspy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy01.mp3" +} + +"engineer_dominationspy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy02.mp3" +} + +"engineer_dominationspy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy03.mp3" +} + +"engineer_dominationspy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy04.mp3" +} + +"engineer_dominationspy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy05.mp3" +} + +"engineer_dominationspy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy06.mp3" +} + +"engineer_dominationspy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy07.mp3" +} + +"engineer_dominationspy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy08.mp3" +} + +"engineer_dominationspy09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy09.mp3" +} + +"engineer_dominationspy10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy10.mp3" +} + +"engineer_dominationspy11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy11.mp3" +} + +"engineer_dominationspy12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy12.mp3" +} + +"engineer_dominationspy13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_dominationspy13.mp3" +} + +"engineer_goldenwrenchkill01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_goldenwrenchkill01.mp3" +} + +"engineer_goldenwrenchkill02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_goldenwrenchkill02.mp3" +} + +"engineer_goldenwrenchkill03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_goldenwrenchkill03.mp3" +} + +"engineer_goldenwrenchkill04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_goldenwrenchkill04.mp3" +} + +"engineer_gunslingerpunch01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_gunslingerpunch01.mp3" +} + +"engineer_gunslingerpunch02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_gunslingerpunch02.mp3" +} + +"engineer_gunslingerpunch03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_gunslingerpunch03.mp3" +} + +"engineer_gunslingertriplepunchfinal01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_gunslingertriplepunchfinal01.mp3" +} + +"engineer_gunslingertriplepunchfinal02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_gunslingertriplepunchfinal02.mp3" +} + +"engineer_gunslingertriplepunchfinal03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_gunslingertriplepunchfinal03.mp3" +} + +"engineer_littlesentry01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_littlesentry01.mp3" +} + +"engineer_littlesentry02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_littlesentry02.mp3" +} + +"engineer_littlesentry03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_littlesentry03.mp3" +} + +"engineer_medicfollow01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_medicfollow01.mp3" +} + +"engineer_medicfollow02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_medicfollow02.mp3" +} + +"engineer_medicfollow03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_medicfollow03.mp3" +} + +"engineer_meleedare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_meleedare01.mp3" +} + +"engineer_meleedare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_meleedare02.mp3" +} + +"engineer_meleedare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_meleedare03.mp3" +} + +"engineer_revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_revenge01.mp3" +} + +"engineer_revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_revenge02.mp3" +} + +"engineer_sentrymoving01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentrymoving01.mp3" +} + +"engineer_sentrymoving02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentrymoving02.mp3" +} + +"engineer_sentrymoving03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentrymoving03.mp3" +} + +"engineer_sentrypacking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentrypacking01.mp3" +} + +"engineer_sentrypacking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentrypacking02.mp3" +} + +"engineer_sentrypacking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentrypacking03.mp3" +} + +"engineer_sentryplanting01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentryplanting01.mp3" +} + +"engineer_sentryplanting02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentryplanting02.mp3" +} + +"engineer_sentryplanting03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sentryplanting03.mp3" +} + +"engineer_wranglekills01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_wranglekills01.mp3" +} + +"engineer_wranglekills02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_wranglekills02.mp3" +} + +"engineer_wranglekills03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_wranglekills03.mp3" +} + +"engineer_wranglekills04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_wranglekills04.mp3" +} + +//----------------------------------------------------------------------------- +//End of Engineer BATCH 12 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Soldier Robot +//----------------------------------------------------------------------------- + +"Soldier.Robot01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot01.mp3" +} + +"Soldier.Robot02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot02.mp3" +} + +"Soldier.Robot03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot03.mp3" +} + +"Soldier.Robot04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot04.mp3" +} + +"Soldier.Robot05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot05.mp3" +} + +"Soldier.Robot06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot06.mp3" +} + +"Soldier.Robot07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot07.mp3" +} + +"Soldier.Robot08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot08.mp3" +} + +"Soldier.Robot09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot09.mp3" +} + +"Soldier.Robot10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot10.mp3" +} + +"Soldier.Robot11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot11.mp3" +} + +"Soldier.Robot12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot12.mp3" +} + +"Soldier.Robot13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot13.mp3" +} + +"Soldier.Robot14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot14.mp3" +} + +"Soldier.Robot15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot15.mp3" +} + +"Soldier.Robot16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot16.mp3" +} + +"Soldier.Robot17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot17.mp3" +} + +"Soldier.Robot18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot18.mp3" +} + +"Soldier.Robot19" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot19.mp3" +} + +"Soldier.Robot20" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot20.mp3" +} + +"Soldier.Robot21" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot21.mp3" +} + +"Soldier.Robot22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot22.mp3" +} + +"Soldier.Robot23" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot23.mp3" +} + +"Soldier.Robot24" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot24.mp3" +} + +"Soldier.Robot25" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot25.mp3" +} + +"Soldier.Robot26" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot26.mp3" +} + +"Soldier.Robot27" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot27.mp3" +} + +"Soldier.Robot28" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot28.mp3" +} + +"Soldier.Robot29" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_robot29.mp3" +} + +//----------------------------------------------------------------------------- +//Soldier Robot +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Demo Wolf Howl +//----------------------------------------------------------------------------- + + +"halloween.wolf_01" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "soundlevel" "SNDLVL_85dB" + "wave" ")vo/wolf_howl_01.mp3" +} + +"halloween.wolf_02" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "soundlevel" "SNDLVL_85dB" + "wave" ")vo/wolf_howl_02.mp3" +} + +"halloween.wolf_03" +{ + "channel" "CHAN_STATIC" + "volume" "1.000" + "soundlevel" "SNDLVL_85dB" + "wave" ")vo/wolf_howl_03.mp3" +} + +//----------------------------------------------------------------------------- +//Heavy BATCH 16 +//----------------------------------------------------------------------------- +"heavy_mvm_ask_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_ask_ready01.mp3" +} + +"heavy_mvm_ask_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_ask_ready02.mp3" +} + +"heavy_mvm_ask_ready03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_ask_ready03.mp3" +} + +"heavy_mvm_ask_ready04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_ask_ready04.mp3" +} + +"heavy_mvm_bomb_destroyed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_bomb_destroyed01.mp3" +} + +"heavy_mvm_bomb_see01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_bomb_see01.mp3" +} + +"heavy_mvm_bomb_see02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_bomb_see02.mp3" +} + +"heavy_mvm_bomb_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_bomb_upgrade01.mp3" +} + +"heavy_mvm_bomb_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_bomb_upgrade02.mp3" +} + +"heavy_mvm_class_is_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead01.mp3" +} + +"heavy_mvm_class_is_dead02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead02.mp3" +} + +"heavy_mvm_class_is_dead03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead03.mp3" +} + +"heavy_mvm_class_is_dead04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead04.mp3" +} + +"heavy_mvm_class_is_dead05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead05.mp3" +} + +"heavy_mvm_class_is_dead06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead06.mp3" +} + +"heavy_mvm_class_is_dead07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead07.mp3" +} + +"heavy_mvm_class_is_dead08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_class_is_dead08.mp3" +} + +"heavy_mvm_close_call01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_close_call01.mp3" +} + +"heavy_mvm_close_call02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_close_call02.mp3" +} + +"heavy_mvm_collect_credits01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_collect_credits01.mp3" +} + +"heavy_mvm_collect_credits02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_collect_credits02.mp3" +} + +"heavy_mvm_collect_credits03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_collect_credits03.mp3" +} + +"heavy_mvm_collect_credits04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_collect_credits04.mp3" +} + +"heavy_mvm_encourage_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_encourage_upgrade01.mp3" +} + +"heavy_mvm_encourage_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_encourage_upgrade02.mp3" +} + +"heavy_mvm_encourage_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_encourage_upgrade03.mp3" +} + +"heavy_mvm_get_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_get_upgrade01.mp3" +} + +"heavy_mvm_get_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_get_upgrade02.mp3" +} + +"heavy_mvm_get_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_get_upgrade03.mp3" +} + +"heavy_mvm_get_upgrade04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_get_upgrade04.mp3" +} + +"heavy_mvm_get_upgrade05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_get_upgrade05.mp3" +} + +"heavy_mvm_get_upgrade06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_get_upgrade06.mp3" +} + +"heavy_mvm_kill_rocket01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_kill_rocket01.mp3" +} + +"heavy_mvm_kill_rocket02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_kill_rocket02.mp3" +} + +"heavy_mvm_kill_rocket03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_kill_rocket03.mp3" +} + +"heavy_mvm_giant_robot01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_giant_robot01.mp3" +} + +"heavy_mvm_giant_robot02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_giant_robot02.mp3" +} + +"heavy_mvm_giant_robot03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_giant_robot03.mp3" +} + +"heavy_mvm_giant_robot04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_giant_robot04.mp3" +} + +"heavy_mvm_rage01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_rage01.mp3" +} + +"heavy_mvm_rage02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_rage02.mp3" +} + +"heavy_mvm_rage03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_rage03.mp3" +} + +"heavy_mvm_rage04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_rage04.mp3" +} + +"heavy_mvm_robot_sapped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_robot_sapped01.mp3" +} + +"heavy_mvm_robot_sapped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_robot_sapped02.mp3" +} + +"heavy_mvm_say_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_say_ready01.mp3" +} + +"heavy_mvm_say_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_say_ready02.mp3" +} + +"heavy_mvm_say_ready03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_say_ready03.mp3" +} + +"heavy_mvm_say_ready04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_say_ready04.mp3" +} + +"heavy_mvm_say_ready05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_say_ready05.mp3" +} + +"heavy_mvm_sentry_buster01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_sentry_buster01.mp3" +} + +"heavy_mvm_sentry_buster02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_sentry_buster02.mp3" +} + +"heavy_mvm_sniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_sniper01.mp3" +} + +"heavy_mvm_stand_alone01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_stand_alone01.mp3" +} + +"heavy_mvm_stand_alone02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_stand_alone02.mp3" +} + +"heavy_mvm_tank_alert01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_tank_alert01.mp3" +} + +"heavy_mvm_tank_alert02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_tank_alert02.mp3" +} + +"heavy_mvm_tank_alert03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_tank_alert03.mp3" +} + +"heavy_mvm_tank_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_tank_dead01.mp3" +} + +"heavy_mvm_tank_deploy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_tank_deploy01.mp3" +} + +"heavy_mvm_taunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_taunt01.mp3" +} + +"heavy_mvm_taunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_taunt02.mp3" +} + +"heavy_mvm_wave_end01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_wave_end01.mp3" +} + +"heavy_mvm_wave_end02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_wave_end02.mp3" +} + +"heavy_mvm_wave_end03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_wave_end03.mp3" +} + +"heavy_mvm_wave_end04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_wave_end04.mp3" +} + +"heavy_mvm_wave_end05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_wave_end05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Heavy BATCH 16 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Engineer BATCH 19 +//----------------------------------------------------------------------------- +"engineer_mvm_ask_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_ask_ready01.mp3" +} + +"engineer_mvm_ask_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_ask_ready02.mp3" +} + +"engineer_mvm_bomb_destroyed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_destroyed01.mp3" +} + +"engineer_mvm_bomb_destroyed02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_destroyed02.mp3" +} + +"engineer_mvm_bomb_see01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_see01.mp3" +} + +"engineer_mvm_bomb_see02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_see02.mp3" +} + +"engineer_mvm_bomb_see03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_see03.mp3" +} + +"engineer_mvm_bomb_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_upgrade01.mp3" +} + +"engineer_mvm_bomb_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_bomb_upgrade02.mp3" +} + +"engineer_mvm_class_is_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead01.mp3" +} + +"engineer_mvm_class_is_dead02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead02.mp3" +} + +"engineer_mvm_class_is_dead03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead03.mp3" +} + +"engineer_mvm_class_is_dead04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead04.mp3" +} + +"engineer_mvm_class_is_dead05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead05.mp3" +} + +"engineer_mvm_class_is_dead06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead06.mp3" +} + +"engineer_mvm_class_is_dead07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead07.mp3" +} + +"engineer_mvm_class_is_dead08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead08.mp3" +} + +"engineer_mvm_class_is_dead09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_class_is_dead09.mp3" +} + +"engineer_mvm_close_call01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_close_call01.mp3" +} + +"engineer_mvm_collect_credits01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_collect_credits01.mp3" +} + +"engineer_mvm_collect_credits02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_collect_credits02.mp3" +} + +"engineer_mvm_collect_credits03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_collect_credits03.mp3" +} + +"engineer_mvm_encourage_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_encourage_upgrade01.mp3" +} + +"engineer_mvm_get_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_get_upgrade01.mp3" +} + +"engineer_mvm_get_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_get_upgrade02.mp3" +} + +"engineer_mvm_giant_robot01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_giant_robot01.mp3" +} + +"engineer_mvm_giant_robot02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_giant_robot02.mp3" +} + +"engineer_mvm_giant_robot03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_giant_robot03.mp3" +} + +"engineer_mvm_robot_sapped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_robot_sapped01.mp3" +} + +"engineer_mvm_robot_sapped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_robot_sapped02.mp3" +} + +"engineer_mvm_say_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_say_ready01.mp3" +} + +"engineer_mvm_say_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_say_ready02.mp3" +} + +"engineer_mvm_sentry_buster01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_sentry_buster01.mp3" +} + +"engineer_mvm_sentry_buster02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_sentry_buster02.mp3" +} + +"engineer_mvm_sniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_sniper01.mp3" +} + +"engineer_mvm_stand_alone01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_stand_alone01.mp3" +} + +"engineer_mvm_tank_alert01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_tank_alert01.mp3" +} + +"engineer_mvm_tank_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_tank_dead01.mp3" +} + +"engineer_mvm_tank_deploy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_tank_deploy01.mp3" +} + +"engineer_mvm_tank_shooting01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_tank_shooting01.mp3" +} + +"engineer_mvm_taunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_taunt01.mp3" +} + +"engineer_mvm_taunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_taunt02.mp3" +} + +"engineer_mvm_wave_end01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end01.mp3" +} + +"engineer_mvm_wave_end02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end02.mp3" +} + +"engineer_mvm_wave_end03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end03.mp3" +} + +"engineer_mvm_wave_end04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end04.mp3" +} + +"engineer_mvm_wave_end05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end05.mp3" +} + +"engineer_mvm_wave_end06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end06.mp3" +} + +"engineer_mvm_wave_end07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_end07.mp3" +} + +"engineer_mvm_wave_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_wave_start01.mp3" +} + +//----------------------------------------------------------------------------- +//End of Engineer BATCH 19 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Soldier BATCH 21 +//----------------------------------------------------------------------------- +"soldier_hat_taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_hat_taunts14.mp3" +} + +"soldier_hat_taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_hat_taunts15.mp3" +} + +"soldier_hat_taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_hat_taunts16.mp3" +} + +"soldier_hat_taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_hat_taunts17.mp3" +} + +"soldier_hat_taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_hat_taunts18.mp3" +} + +"soldier_hat_taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_hat_taunts19.mp3" +} + +"soldier_mvm_ask_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_ask_ready01.mp3" +} + +"soldier_mvm_ask_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_ask_ready02.mp3" +} + +"soldier_mvm_ask_ready03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_ask_ready03.mp3" +} + +"soldier_mvm_bomb_destroyed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_destroyed01.mp3" +} + +"soldier_mvm_bomb_destroyed02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_destroyed02.mp3" +} + +"soldier_mvm_bomb_see01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_see01.mp3" +} + +"soldier_mvm_bomb_see02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_see02.mp3" +} + +"soldier_mvm_bomb_see03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_see03.mp3" +} + +"soldier_mvm_bomb_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_upgrade01.mp3" +} + +"soldier_mvm_bomb_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_upgrade02.mp3" +} + +"soldier_mvm_bomb_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_bomb_upgrade03.mp3" +} + +"soldier_mvm_class_is_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead01.mp3" +} + +"soldier_mvm_class_is_dead02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead02.mp3" +} + +"soldier_mvm_class_is_dead03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead03.mp3" +} + +"soldier_mvm_class_is_dead04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead04.mp3" +} + +"soldier_mvm_class_is_dead05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead05.mp3" +} + +"soldier_mvm_class_is_dead06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead06.mp3" +} + +"soldier_mvm_class_is_dead07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead07.mp3" +} + +"soldier_mvm_class_is_dead08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead08.mp3" +} + +"soldier_mvm_class_is_dead09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_class_is_dead09.mp3" +} + +"soldier_mvm_close_call01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_close_call01.mp3" +} + +"soldier_mvm_collect_credits01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_collect_credits01.mp3" +} + +"soldier_mvm_collect_credits02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_collect_credits02.mp3" +} + +"soldier_mvm_encourage_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_encourage_upgrade01.mp3" +} + +"soldier_mvm_get_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_get_upgrade01.mp3" +} + +"soldier_mvm_get_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_get_upgrade02.mp3" +} + +"soldier_mvm_get_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_get_upgrade03.mp3" +} + +"soldier_mvm_giant_robot01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_giant_robot01.mp3" +} + +"soldier_mvm_giant_robot02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_giant_robot02.mp3" +} + +"soldier_mvm_giant_robot03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_giant_robot03.mp3" +} + +"soldier_mvm_giant_robot04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_giant_robot04.mp3" +} + +"soldier_mvm_robot_sapped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_robot_sapped01.mp3" +} + +"soldier_mvm_robot_sapped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_robot_sapped02.mp3" +} + +"soldier_mvm_say_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_say_ready01.mp3" +} + +"soldier_mvm_say_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_say_ready02.mp3" +} + +"soldier_mvm_sentry_buster01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_sentry_buster01.mp3" +} + +"soldier_mvm_sentry_buster02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_sentry_buster02.mp3" +} + +"soldier_mvm_sniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_sniper01.mp3" +} + +"soldier_mvm_stand_alone01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_stand_alone01.mp3" +} + +"soldier_mvm_stand_alone02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_stand_alone02.mp3" +} + +"soldier_mvm_tank_alert01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_alert01.mp3" +} + +"soldier_mvm_tank_alert02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_alert02.mp3" +} + +"soldier_mvm_tank_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_dead01.mp3" +} + +"soldier_mvm_tank_dead02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_dead02.mp3" +} + +"soldier_mvm_tank_deploy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_deploy01.mp3" +} + +"soldier_mvm_tank_shooting01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_shooting01.mp3" +} + +"soldier_mvm_tank_shooting02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_shooting02.mp3" +} + +"soldier_mvm_tank_shooting03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_tank_shooting03.mp3" +} + +"soldier_mvm_taunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_taunt01.mp3" +} + +"soldier_mvm_taunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_taunt02.mp3" +} + +"soldier_mvm_taunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_taunt03.mp3" +} + +"soldier_mvm_taunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_taunt04.mp3" +} + +"soldier_mvm_taunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_taunt05.mp3" +} + +"soldier_mvm_taunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_taunt06.mp3" +} + +"soldier_mvm_wave_end01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end01.mp3" +} + +"soldier_mvm_wave_end02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end02.mp3" +} + +"soldier_mvm_wave_end03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end03.mp3" +} + +"soldier_mvm_wave_end04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end04.mp3" +} + +"soldier_mvm_wave_end05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end05.mp3" +} + +"soldier_mvm_wave_end06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end06.mp3" +} + +"soldier_mvm_wave_end07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end07.mp3" +} + +"soldier_mvm_wave_end08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end08.mp3" +} + +"soldier_mvm_wave_end09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end09.mp3" +} + +"soldier_mvm_wave_end10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_wave_end10.mp3" +} + +"soldier_trade_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_trade_taunts01.mp3" +} + +"soldier_trade_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_trade_taunts02.mp3" +} + +"soldier_trade_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_trade_taunts03.mp3" +} + +"soldier_trade_taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_trade_taunts04.mp3" +} + +"soldier_trade_taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_trade_taunts05.mp3" +} + +"soldier_trade_taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_trade_taunts06.mp3" +} + +"soldier_weapon_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_weapon_taunts01.mp3" +} + +"soldier_weapon_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_weapon_taunts02.mp3" +} + +"soldier_weapon_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_weapon_taunts03.mp3" +} + +"soldier_weapon_taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_weapon_taunts04.mp3" +} + +"soldier_weapon_taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_weapon_taunts05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 21 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Medic BATCH 20 +//----------------------------------------------------------------------------- +"medic_hat_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_hat_taunts01.mp3" +} + +"medic_hat_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_hat_taunts02.mp3" +} + +"medic_hat_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_hat_taunts03.mp3" +} + +"medic_hat_taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_hat_taunts04.mp3" +} + +"medic_mvm_ask_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_ask_ready01.mp3" +} + +"medic_mvm_bomb_destroyed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_destroyed01.mp3" +} + +"medic_mvm_bomb_destroyed02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_destroyed02.mp3" +} + +"medic_mvm_bomb_see01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_see01.mp3" +} + +"medic_mvm_bomb_see02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_see02.mp3" +} + +"medic_mvm_bomb_see03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_see03.mp3" +} + +"medic_mvm_bomb_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_upgrade01.mp3" +} + +"medic_mvm_bomb_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_upgrade02.mp3" +} + +"medic_mvm_bomb_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_bomb_upgrade03.mp3" +} + +"medic_mvm_class_is_dead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead01.mp3" +} + +"medic_mvm_class_is_dead02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead02.mp3" +} + +"medic_mvm_class_is_dead03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead03.mp3" +} + +"medic_mvm_class_is_dead04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead04.mp3" +} + +"medic_mvm_class_is_dead05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead05.mp3" +} + +"medic_mvm_class_is_dead06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead06.mp3" +} + +"medic_mvm_class_is_dead07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead07.mp3" +} + +"medic_mvm_class_is_dead08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead08.mp3" +} + +"medic_mvm_class_is_dead09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_class_is_dead09.mp3" +} + +"medic_mvm_collect_credits01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_collect_credits01.mp3" +} + +"medic_mvm_collect_credits02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_collect_credits02.mp3" +} + +"medic_mvm_collect_credits03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_collect_credits03.mp3" +} + +"medic_mvm_collect_credits04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_collect_credits04.mp3" +} + +"medic_mvm_encourage_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_encourage_upgrade01.mp3" +} + +"medic_mvm_encourage_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_encourage_upgrade02.mp3" +} + +"medic_mvm_encourage_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_encourage_upgrade03.mp3" +} + +"medic_mvm_get_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_get_upgrade01.mp3" +} + +"medic_mvm_get_upgrade02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_get_upgrade02.mp3" +} + +"medic_mvm_get_upgrade03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_get_upgrade03.mp3" +} + +"medic_mvm_get_upgrade04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_get_upgrade04.mp3" +} + +"medic_mvm_giant_robot01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_giant_robot01.mp3" +} + +"medic_mvm_giant_robot02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_giant_robot02.mp3" +} + +"medic_mvm_giant_robot03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_giant_robot03.mp3" +} + +"medic_mvm_robot_sapped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_robot_sapped01.mp3" +} + +"medic_mvm_robot_sapped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_robot_sapped02.mp3" +} + +"medic_mvm_say_ready01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_say_ready01.mp3" +} + +"medic_mvm_say_ready02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_say_ready02.mp3" +} + +"medic_mvm_sentry_buster01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_sentry_buster01.mp3" +} + +"medic_mvm_sentry_buster02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_sentry_buster02.mp3" +} + +"medic_mvm_sniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_sniper01.mp3" +} + +"medic_mvm_stand_alone01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_stand_alone01.mp3" +} + +"medic_mvm_tank_alert01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_tank_alert01.mp3" +} + +"medic_mvm_tank_deploy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_tank_deploy01.mp3" +} + +"medic_mvm_tank_shooting01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_tank_shooting01.mp3" +} + +"medic_mvm_tank_shooting02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_tank_shooting02.mp3" +} + +"medic_mvm_tank_shooting03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_tank_shooting03.mp3" +} + +"medic_mvm_taunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_taunt01.mp3" +} + +"medic_mvm_wave_end01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end01.mp3" +} + +"medic_mvm_wave_end02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end02.mp3" +} + +"medic_mvm_wave_end03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end03.mp3" +} + +"medic_mvm_wave_end04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end04.mp3" +} + +"medic_mvm_wave_end05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end05.mp3" +} + +"medic_mvm_wave_end06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end06.mp3" +} + +"medic_mvm_wave_end07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_wave_end07.mp3" +} + +"medic_trade_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_trade_taunts01.mp3" +} + +"medic_trade_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_trade_taunts02.mp3" +} + +"medic_trade_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_trade_taunts03.mp3" +} + +"medic_trade_taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_trade_taunts04.mp3" +} + +"medic_weapon_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_weapon_taunts01.mp3" +} + +"medic_weapon_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_weapon_taunts02.mp3" +} + +"medic_weapon_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_weapon_taunts03.mp3" +} + +//----------------------------------------------------------------------------- +//End of Medic BATCH 20 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Announcer batch 6 +//----------------------------------------------------------------------------- +"Announcer.MVM_Manned_Up" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_manned_up01.mp3" + "wave" "vo/mvm_manned_up02.mp3" + "wave" "vo/mvm_manned_up03.mp3" + "wave" "vo/mvm_mann_up_mode02.mp3" + "wave" "vo/mvm_mann_up_mode03.mp3" + "wave" "vo/mvm_mann_up_mode06.mp3" + "wave" "vo/mvm_mann_up_mode07.mp3" + "wave" "vo/mvm_mann_up_mode08.mp3" + "wave" "vo/mvm_mann_up_mode09.mp3" + "wave" "vo/mvm_mann_up_mode10.mp3" + "wave" "vo/mvm_mann_up_mode11.mp3" + "wave" "vo/mvm_mann_up_mode12.mp3" + "wave" "vo/mvm_mann_up_mode13.mp3" + "wave" "vo/mvm_mann_up_mode14.mp3" + "wave" "vo/mvm_mann_up_mode15.mp3" + } +} + +"Announcer.MVM_First_Wave_Start" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_firstwave_start01.mp3" + "wave" "vo/mvm_firstwave_start02.mp3" + "wave" "vo/mvm_firstwave_start03.mp3" + "wave" "vo/mvm_firstwave_start04.mp3" + "wave" "vo/mvm_firstwave_start05.mp3" + "wave" "vo/mvm_firstwave_start06.mp3" + "wave" "vo/mvm_mann_up_mode01.mp3" + "wave" "vo/mvm_mann_up_mode04.mp3" + "wave" "vo/mvm_mann_up_mode05.mp3" + } +} + +"Announcer.MVM_Wave_Start" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_wave_start01.mp3" + "wave" "vo/mvm_wave_start02.mp3" + "wave" "vo/mvm_wave_start03.mp3" + "wave" "vo/mvm_wave_start04.mp3" + "wave" "vo/mvm_wave_start05.mp3" + "wave" "vo/mvm_wave_start06.mp3" + "wave" "vo/mvm_wave_start07.mp3" + "wave" "vo/mvm_wave_start08.mp3" + "wave" "vo/mvm_wave_start09.mp3" + "wave" "vo/mvm_wave_start10.mp3" + "wave" "vo/mvm_wave_start11.mp3" + "wave" "vo/mvm_wave_start12.mp3" + } +} +"Announcer.MVM_Wave_End" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_wave_end01.mp3" + "wave" "vo/mvm_wave_end02.mp3" + "wave" "vo/mvm_wave_end03.mp3" + "wave" "vo/mvm_wave_end04.mp3" + "wave" "vo/mvm_wave_end05.mp3" + "wave" "vo/mvm_wave_end06.mp3" + "wave" "vo/mvm_wave_end07.mp3" + "wave" "vo/mvm_wave_end08.mp3" + } +} +"Announcer.MVM_Wave_Lose" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_wave_lose01.mp3" + "wave" "vo/mvm_wave_lose02.mp3" + "wave" "vo/mvm_wave_lose03.mp3" + "wave" "vo/mvm_wave_lose04.mp3" + "wave" "vo/mvm_wave_lose05.mp3" + "wave" "vo/mvm_wave_lose06.mp3" + "wave" "vo/mvm_wave_lose07.mp3" + "wave" "vo/mvm_wave_lose08.mp3" + "wave" "vo/mvm_wave_lose09.mp3" + "wave" "vo/mvm_wave_lose10.mp3" + "wave" "vo/mvm_wave_lose11.mp3" + "wave" "vo/mvm_wave_lose12.mp3" + } +} + +"Announcer.MVM_Final_Wave_Start" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_final_wave_start01.mp3" + "wave" "vo/mvm_final_wave_start02.mp3" + "wave" "vo/mvm_final_wave_start03.mp3" + "wave" "vo/mvm_final_wave_start04.mp3" + "wave" "vo/mvm_final_wave_start05.mp3" + "wave" "vo/mvm_final_wave_start06.mp3" + "wave" "vo/mvm_final_wave_start07.mp3" + "wave" "vo/mvm_final_wave_start08.mp3" + "wave" "vo/mvm_final_wave_start09.mp3" + "wave" "vo/mvm_final_wave_start10.mp3" + "wave" "vo/mvm_final_wave_start11.mp3" + "wave" "vo/mvm_final_wave_start12.mp3" + } +} +"Announcer.MVM_Final_Wave_End" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_final_wave_end01.mp3" + "wave" "vo/mvm_final_wave_end02.mp3" + "wave" "vo/mvm_final_wave_end03.mp3" + "wave" "vo/mvm_final_wave_end04.mp3" + "wave" "vo/mvm_final_wave_end05.mp3" + "wave" "vo/mvm_final_wave_end06.mp3" + } +} +"Announcer.MVM_Manned_Up_Wave_End" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_mannup_wave_end01.mp3" + "wave" "vo/mvm_mannup_wave_end02.mp3" + } +} + +// purposely added back01 twice to skew how often it's used +"Announcer.MVM_Bomb_Reset" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_bomb_back01.mp3" + "wave" "vo/mvm_bomb_back01.mp3" + "wave" "vo/mvm_bomb_reset01.mp3" + "wave" "vo/mvm_bomb_reset02.mp3" + "wave" "vo/mvm_bomb_reset03.mp3" + } +} +"Announcer.MVM_Bonus" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_bonus01.mp3" + "wave" "vo/mvm_bonus02.mp3" + "wave" "vo/mvm_bonus03.mp3" + } +} +"Announcer.MVM_Get_To_Upgrade" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_get_to_upgrade01.mp3" + "wave" "vo/mvm_get_to_upgrade02.mp3" + "wave" "vo/mvm_get_to_upgrade03.mp3" + "wave" "vo/mvm_get_to_upgrade04.mp3" + "wave" "vo/mvm_get_to_upgrade05.mp3" + "wave" "vo/mvm_get_to_upgrade06.mp3" + "wave" "vo/mvm_get_to_upgrade07.mp3" + "wave" "vo/mvm_get_to_upgrade08.mp3" + "wave" "vo/mvm_get_to_upgrade09.mp3" + "wave" "vo/mvm_get_to_upgrade10.mp3" + "wave" "vo/mvm_get_to_upgrade11.mp3" + } +} + +"Announcer.MVM_Robots_Planted" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_robots_planted01.mp3" + "wave" "vo/mvm_wave_lose01.mp3" + "wave" "vo/mvm_wave_lose02.mp3" + "wave" "vo/mvm_wave_lose04.mp3" + "wave" "vo/mvm_wave_lose08.mp3" + "wave" "vo/mvm_wave_lose09.mp3" + "wave" "vo/mvm_wave_lose10.mp3" + "wave" "vo/mvm_wave_lose11.mp3" + } +} +"Announcer.MVM_Tank_Planted" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_planted01.mp3" + "wave" "vo/mvm_tank_planted02.mp3" + "wave" "vo/mvm_wave_lose01.mp3" + "wave" "vo/mvm_wave_lose03.mp3" + "wave" "vo/mvm_wave_lose05.mp3" + "wave" "vo/mvm_wave_lose06.mp3" + "wave" "vo/mvm_wave_lose07.mp3" + "wave" "vo/mvm_wave_lose09.mp3" + "wave" "vo/mvm_wave_lose10.mp3" + "wave" "vo/mvm_wave_lose12.mp3" + } +} + +"Announcer.MVM_All_Dead" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_all_dead01.mp3" + "wave" "vo/mvm_all_dead02.mp3" + "wave" "vo/mvm_all_dead03.mp3" + } +} +"Announcer.MVM_Bomb_Alert_Entered" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_bomb_alerts01.mp3" + "wave" "vo/mvm_bomb_alerts02.mp3" + } +} +"Announcer.MVM_Bomb_Alert_Near_Hatch" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_bomb_alerts03.mp3" + "wave" "vo/mvm_bomb_alerts04.mp3" + "wave" "vo/mvm_bomb_alerts05.mp3" + "wave" "vo/mvm_bomb_alerts12.mp3" + "wave" "vo/mvm_bomb_alerts13.mp3" + "wave" "vo/mvm_bomb_alerts14.mp3" + } +} +"Announcer.MVM_Bomb_Alert_Deploying" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_bomb_alerts08.mp3" + "wave" "vo/mvm_bomb_alerts09.mp3" + "wave" "vo/mvm_bomb_alerts10.mp3" + "wave" "vo/mvm_bomb_alerts11.mp3" + } +} +"Announcer.MVM_Sentry_Buster_Alert" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_sentry_buster_alerts01.mp3" + "wave" "vo/mvm_sentry_buster_alerts04.mp3" + "wave" "vo/mvm_sentry_buster_alerts05.mp3" + "wave" "vo/mvm_sentry_buster_alerts06.mp3" + "wave" "vo/mvm_sentry_buster_alerts07.mp3" + } +} +"Announcer.MVM_Sentry_Buster_Alert_Another" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_sentry_buster_alerts02.mp3" + "wave" "vo/mvm_sentry_buster_alerts03.mp3" + } +} +"Announcer.MVM_Spy_Alert" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_spy_spawn01.mp3" + "wave" "vo/mvm_spy_spawn02.mp3" + "wave" "vo/mvm_spy_spawn03.mp3" + "wave" "vo/mvm_spy_spawn04.mp3" + } +} +"Announcer.MVM_Tank_Alert_Spawn" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_alerts01.mp3" + "wave" "vo/mvm_tank_alerts02.mp3" + } +} +"Announcer.MVM_Tank_Alert_Another" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_alerts03.mp3" + "wave" "vo/mvm_tank_alerts04.mp3" + } +} +"Announcer.MVM_Tank_Alert_Multiple" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_alerts09.mp3" + "wave" "vo/mvm_tank_alerts10.mp3" + "wave" "vo/mvm_tank_alerts11.mp3" + } +} +"Announcer.MVM_Tank_Alert_Halfway" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_alerts05.mp3" + "wave" "vo/mvm_tank_alerts08.mp3" + } +} +"Announcer.MVM_Tank_Alert_Halfway_Multiple" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_alerts12.mp3" + } +} +"Announcer.MVM_Tank_Alert_Near_Hatch" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_tank_alerts06.mp3" + "wave" "vo/mvm_tank_alerts07.mp3" + } +} +"Announcer.MVM_Tank_Alert_Deploying" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_bomb_alerts06.mp3" + "wave" "vo/mvm_bomb_alerts07.mp3" + } +} + +"Announcer.MVM_General_Wave_Start" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_general_wav_start01.mp3" + "wave" "vo/mvm_general_wav_start02.mp3" + "wave" "vo/mvm_general_wav_start03.mp3" + "wave" "vo/mvm_general_wav_start04.mp3" + "wave" "vo/mvm_general_wav_start05.mp3" + "wave" "vo/mvm_general_wav_start06.mp3" + "wave" "vo/mvm_general_wav_start07.mp3" + "wave" "vo/mvm_general_wav_start08.mp3" + } +} +"Announcer.MVM_General_Destruction" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_general_destruction01.mp3" + "wave" "vo/mvm_general_destruction02.mp3" + "wave" "vo/mvm_general_destruction03.mp3" + "wave" "vo/mvm_general_destruction04.mp3" + "wave" "vo/mvm_general_destruction05.mp3" + "wave" "vo/mvm_general_destruction06.mp3" + "wave" "vo/mvm_general_destruction07.mp3" + "wave" "vo/mvm_general_destruction08.mp3" + "wave" "vo/mvm_general_destruction09.mp3" + "wave" "vo/mvm_general_destruction10.mp3" + "wave" "vo/mvm_general_destruction11.mp3" + "wave" "vo/mvm_general_destruction12.mp3" + "wave" "vo/mvm_general_destruction13.mp3" + } +} +"Announcer.MVM_Game_Over_Loss" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/mvm_game_over_loss01.mp3" + "wave" "vo/mvm_game_over_loss02.mp3" + "wave" "vo/mvm_game_over_loss03.mp3" + "wave" "vo/mvm_game_over_loss04.mp3" + "wave" "vo/mvm_game_over_loss05.mp3" + "wave" "vo/mvm_game_over_loss06.mp3" + "wave" "vo/mvm_game_over_loss07.mp3" + "wave" "vo/mvm_game_over_loss08.mp3" + "wave" "vo/mvm_game_over_loss09.mp3" + "wave" "vo/mvm_game_over_loss10.mp3" + "wave" "vo/mvm_game_over_loss11.mp3" + } +} +//----------------------------------------------------------------------------- +//End of Announcer batch 6 +//----------------------------------------------------------------------------- + +"Announcer.SD_Nags_GetFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_misc_nags01.mp3" + "wave" "vo/announcer_sd_misc_nags02.mp3" + "wave" "vo/announcer_sd_misc_nags03.mp3" + } +} + +"Announcer.SD_Nags_CapFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_misc_nags04.mp3" + "wave" "vo/announcer_sd_misc_nags05.mp3" + } +} + +// Level triggered? +"Announcer.SD_Rocket_PreLaunch" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_monkeynaut_start01.mp3" + "wave" "vo/announcer_sd_monkeynaut_start02.mp3" + "wave" "vo/announcer_sd_monkeynaut_start03.mp3" + "wave" "vo/announcer_sd_monkeynaut_start04.mp3" + "wave" "vo/announcer_sd_monkeynaut_start05.mp3" + "wave" "vo/announcer_sd_monkeynaut_start06.mp3" + } +} + +// Level triggered? +"Announcer.SD_Rocket_Launched" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_monkeynaut_end01.mp3" + "wave" "vo/announcer_sd_monkeynaut_end02.mp3" + "wave" "vo/announcer_sd_monkeynaut_end03.mp3" + "wave" "vo/announcer_sd_monkeynaut_end04.mp3" + "wave" "vo/announcer_sd_monkeynaut_end05.mp3" + "wave" "vo/announcer_sd_monkeynaut_end06.mp3" + "wave" "vo/announcer_sd_monkeynaut_end07.mp3" + } +} + +// Level triggered? +"Announcer.SD_Rocket_Crash" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_monkeynaut_end_crash01.mp3" + "wave" "vo/announcer_sd_monkeynaut_end_crash02.mp3" + "wave" "vo/announcer_sd_monkeynaut_end_crash03.mp3" + "wave" "vo/announcer_sd_monkeynaut_end_crash04.mp3" + } +} + +// Code triggered +"Announcer.SD_OurTeamHasFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_possession01.mp3" + "wave" "vo/announcer_sd_possession16.mp3" + "wave" "vo/announcer_sd_possession21.mp3" + "wave" "vo/announcer_sd_possession24.mp3" + } +} + +// Code triggered +"Announcer.SD_OurTeamDroppedFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_possession25.mp3" + "wave" "vo/announcer_sd_possession28.mp3" + } +} + +// Code triggered +"Announcer.SD_OurTeamCapped" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_generic_success_fail01.mp3" + } +} + +// Level triggered +"Announcer.SD_OurTeamLaunched" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_rocket_launch01.mp3" + } +} + +// Code triggered +"Announcer.SD_TheirTeamHasFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_possession03.mp3" + "wave" "vo/announcer_sd_possession07.mp3" + "wave" "vo/announcer_sd_possession13.mp3" + } +} + +// Code triggered +"Announcer.SD_TheirTeamDroppedFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_possession10.mp3" + "wave" "vo/announcer_sd_possession19.mp3" + } +} + +// Code triggered +"Announcer.SD_TheirTeamCapped" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_generic_success_fail04.mp3" + } +} + +// Level triggered +"Announcer.SD_TheirTeamLaunched" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_rocket_launch02.mp3" + } +} + +// +"Announcer.SD_TheirFlagOnElevator" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_rocket_warnings03.mp3" + } +} + +// +"Announcer.SD_OurFlagOnElevator" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_rocket_warnings05.mp3" + } +} + +// +"Announcer.SD_TheyAreAboutToLaunch" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_rocket_warnings01.mp3" + "wave" "vo/announcer_sd_rocket_warnings04.mp3" + "wave" "vo/announcer_sd_rocket_warnings08.mp3" + } +} + +// +"Announcer.SD_WeAreAboutToLaunch" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_rocket_warnings02.mp3" + "wave" "vo/announcer_sd_rocket_warnings06.mp3" + "wave" "vo/announcer_sd_rocket_warnings07.mp3" + } +} + +// +"Announcer.SD_RoundStart" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_round_start04.mp3" + } +} + +// +"Announcer.SD_FlagAvailableIn3" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_round_start05.mp3" + } +} +// +"Announcer.SD_FlagAvailableGo" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_misc_nags01.mp3" + "wave" "vo/announcer_sd_misc_nags02.mp3" + "wave" "vo/announcer_sd_misc_nags03.mp3" + } +} + +// +"Announcer.SD_FlagAboutToReturn" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_self_destruct01.mp3" + "wave" "vo/announcer_sd_self_destruct02.mp3" + "wave" "vo/announcer_sd_self_destruct03.mp3" + } +} + +// +"Announcer.SD_FlagReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_sd_drop_site01.mp3" + "wave" "vo/announcer_sd_drop_site04.mp3" + } +} + +//----------------------------------------------------------------------------- +//START OF MvM batch 23 announcer lines +//----------------------------------------------------------------------------- +"Announcer.mvm_another_bomb" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "vo/mvm_another_bomb01.mp3" + "wave" "vo/mvm_another_bomb02.mp3" + "wave" "vo/mvm_another_bomb03.mp3" + "wave" "vo/mvm_another_bomb04.mp3" + "wave" "vo/mvm_another_bomb05.mp3" + "wave" "vo/mvm_another_bomb06.mp3" + "wave" "vo/mvm_another_bomb07.mp3" + "wave" "vo/mvm_another_bomb08.mp3" + } +} +"Announcer.mvm_spybot_death" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "vo/mvm_spybot_death01.mp3" + "wave" "vo/mvm_spybot_death02.mp3" + "wave" "vo/mvm_spybot_death03.mp3" + } +} +"Announcer.mvm_spybot_death_all" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "vo/mvm_spybot_death04.mp3" + "wave" "vo/mvm_spybot_death05.mp3" + "wave" "vo/mvm_spybot_death06.mp3" + "wave" "vo/mvm_spybot_death07.mp3" + } +} +"Announcer.mvm_spybot_death_five" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/mvm_spybot_death09.mp3" +} +"Announcer.mvm_spybot_death_four" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/mvm_spybot_death10.mp3" +} +"Announcer.mvm_spybot_death_one" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/mvm_spybot_death13.mp3" +} +"Announcer.mvm_spybot_death_six" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/mvm_spybot_death08.mp3" +} +"Announcer.mvm_spybot_death_three" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/mvm_spybot_death11.mp3" +} +"Announcer.mvm_spybot_death_two" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo/mvm_spybot_death12.mp3" +} +//----------------------------------------------------------------------------- +//END OF MvM batch 23 announcer lines +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scream Fortress 2012 +//Soldier BATCH 25 +//----------------------------------------------------------------------------- +"soldier_sf12_badmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic01.mp3" +} + +"soldier_sf12_badmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic02.mp3" +} + +"soldier_sf12_badmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic03.mp3" +} + +"soldier_sf12_badmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic04.mp3" +} + +"soldier_sf12_badmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic05.mp3" +} + +"soldier_sf12_badmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic06.mp3" +} + +"soldier_sf12_badmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic07.mp3" +} + +"soldier_sf12_badmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic08.mp3" +} + +"soldier_sf12_badmagic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic09.mp3" +} + +"soldier_sf12_badmagic10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic10.mp3" +} + +"soldier_sf12_badmagic11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic11.mp3" +} + +"soldier_sf12_badmagic12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic12.mp3" +} + +"soldier_sf12_badmagic13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic13.mp3" +} + +"soldier_sf12_badmagic14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic14.mp3" +} + +"soldier_sf12_badmagic15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_badmagic15.mp3" +} + +"soldier_sf12_bombinomicon01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_bombinomicon01.mp3" +} + +"soldier_sf12_bombinomicon02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_bombinomicon02.mp3" +} + +"soldier_sf12_bombinomicon03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_bombinomicon03.mp3" +} + +"soldier_sf12_bombinomicon04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_bombinomicon04.mp3" +} + +"soldier_sf12_bombinomicon05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_bombinomicon05.mp3" +} + +"soldier_sf12_falling01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_falling01.mp3" +} + +"soldier_sf12_falling02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_falling02.mp3" +} + +"soldier_sf12_goodmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_goodmagic01.mp3" +} + +"soldier_sf12_goodmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_goodmagic02.mp3" +} + +"soldier_sf12_goodmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_goodmagic03.mp3" +} + +"soldier_sf12_goodmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_goodmagic04.mp3" +} + +"soldier_sf12_reseeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_reseeking01.mp3" +} + +"soldier_sf12_reseeking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_reseeking02.mp3" +} + +"soldier_sf12_reseeking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_reseeking03.mp3" +} + +"soldier_sf12_reseeking04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_reseeking04.mp3" +} + +"soldier_sf12_reseeking05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_reseeking05.mp3" +} + +"soldier_sf12_scared01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_scared01.mp3" +} + +"soldier_sf12_seeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking01.mp3" +} + +"soldier_sf12_seeking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking02.mp3" +} + +"soldier_sf12_seeking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking03.mp3" +} + +"soldier_sf12_seeking04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking04.mp3" +} + +"soldier_sf12_seeking05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking05.mp3" +} + +"soldier_sf12_seeking06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking06.mp3" +} + +"soldier_sf12_seeking07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking07.mp3" +} + +"soldier_sf12_seeking08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking08.mp3" +} + +"soldier_sf12_seeking09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking09.mp3" +} + +"soldier_sf12_seeking10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking10.mp3" +} + +"soldier_sf12_seeking11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking11.mp3" +} + +"soldier_sf12_seeking12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking12.mp3" +} + +"soldier_sf12_seeking13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_seeking13.mp3" +} + +"soldier_sf12_spinning01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_spinning01.mp3" +} + +"soldier_sf12_spinning02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_spinning02.mp3" +} + +"soldier_sf12_spinning03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_spinning03.mp3" +} + +"soldier_sf12_spinning04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_spinning04.mp3" +} + +"soldier_sf12_taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts01.mp3" +} + +"soldier_sf12_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts02.mp3" +} + +"soldier_sf12_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts03.mp3" +} + +"soldier_sf12_taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts04.mp3" +} + +"soldier_sf12_taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts05.mp3" +} + +"soldier_sf12_taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts06.mp3" +} + +"soldier_sf12_taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts07.mp3" +} + +"soldier_sf12_taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts08.mp3" +} + +"soldier_sf12_taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts09.mp3" +} + +"soldier_sf12_taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts10.mp3" +} + +"soldier_sf12_taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts11.mp3" +} + +"soldier_sf12_taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts12.mp3" +} + +"soldier_sf12_taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts13.mp3" +} + +"soldier_sf12_taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts14.mp3" +} + +"soldier_sf12_taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts15.mp3" +} + +"soldier_sf12_taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts16.mp3" +} + +"soldier_sf12_taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_taunts17.mp3" +} + +"soldier_sf12_zombie01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_zombie01.mp3" +} + +"soldier_sf12_zombie02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_zombie02.mp3" +} + +"soldier_sf12_zombie03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_zombie03.mp3" +} + +"soldier_sf12_zombie04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf12_zombie04.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 25 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scream Fortress 2012 +//Scout BATCH 24 +//----------------------------------------------------------------------------- +"scout_sf12_badmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic01.mp3" +} + +"scout_sf12_badmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic02.mp3" +} + +"scout_sf12_badmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic03.mp3" +} + +"scout_sf12_badmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic04.mp3" +} + +"scout_sf12_badmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic05.mp3" +} + +"scout_sf12_badmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic06.mp3" +} + +"scout_sf12_badmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic07.mp3" +} + +"scout_sf12_badmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic08.mp3" +} + +"scout_sf12_badmagic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic09.mp3" +} + +"scout_sf12_badmagic10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic10.mp3" +} + +"scout_sf12_badmagic11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic11.mp3" +} + +"scout_sf12_badmagic12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic12.mp3" +} + +"scout_sf12_badmagic13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic13.mp3" +} + +"scout_sf12_badmagic14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic14.mp3" +} + +"scout_sf12_badmagic15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic15.mp3" +} + +"scout_sf12_badmagic16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic16.mp3" +} + +"scout_sf12_badmagic17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic17.mp3" +} + +"scout_sf12_badmagic18" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic18.mp3" +} + +"scout_sf12_badmagic19" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic19.mp3" +} + +"scout_sf12_badmagic20" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic20.mp3" +} + +"scout_sf12_badmagic21" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic21.mp3" +} + +"scout_sf12_badmagic22" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic22.mp3" +} + +"scout_sf12_badmagic23" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic23.mp3" +} + +"scout_sf12_badmagic24" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic24.mp3" +} + +"scout_sf12_badmagic25" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic25.mp3" +} + +"scout_sf12_badmagic26" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic26.mp3" +} + +"scout_sf12_badmagic27" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic27.mp3" +} + +"scout_sf12_badmagic28" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_badmagic28.mp3" +} + +"scout_sf12_falling01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_falling01.mp3" +} + +"scout_sf12_falling02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_falling02.mp3" +} + +"scout_sf12_falling03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_falling03.mp3" +} + +"scout_sf12_goodmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic01.mp3" +} + +"scout_sf12_goodmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic02.mp3" +} + +"scout_sf12_goodmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic03.mp3" +} + +"scout_sf12_goodmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic04.mp3" +} + +"scout_sf12_goodmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic05.mp3" +} + +"scout_sf12_goodmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic06.mp3" +} + +"scout_sf12_goodmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic07.mp3" +} + +"scout_sf12_goodmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic08.mp3" +} + +"scout_sf12_goodmagic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_goodmagic09.mp3" +} + +"scout_sf12_misc01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_misc01.mp3" +} + +"scout_sf12_reseeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_reseeking01.mp3" +} + +"scout_sf12_scared01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_scared01.mp3" +} + +"scout_sf12_scared02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_scared02.mp3" +} + +"scout_sf12_scared03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_scared03.mp3" +} + +"scout_sf12_seeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking01.mp3" +} + +"scout_sf12_seeking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking02.mp3" +} + +"scout_sf12_seeking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking03.mp3" +} + +"scout_sf12_seeking04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking04.mp3" +} + +"scout_sf12_seeking05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking05.mp3" +} + +"scout_sf12_seeking06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking06.mp3" +} + +"scout_sf12_seeking07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking07.mp3" +} + +"scout_sf12_seeking08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking08.mp3" +} + +"scout_sf12_seeking09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking09.mp3" +} + +"scout_sf12_seeking10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking10.mp3" +} + +"scout_sf12_seeking11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking11.mp3" +} + +"scout_sf12_seeking12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking12.mp3" +} + +"scout_sf12_seeking13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_seeking13.mp3" +} + +"scout_sf12_zombie01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_zombie01.mp3" +} + +"scout_sf12_zombie02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_zombie02.mp3" +} + +"scout_sf12_zombie03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_zombie03.mp3" +} + +"scout_sf12_zombie04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_zombie04.mp3" +} + +"scout_sf12_zombie05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf12_zombie05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Scout BATCH 24 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Scream Fortress 2012 +//Spy BATCH 29 +//----------------------------------------------------------------------------- +"spy_sf12_badmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic01.mp3" +} + +"spy_sf12_badmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic02.mp3" +} + +"spy_sf12_badmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic03.mp3" +} + +"spy_sf12_badmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic04.mp3" +} + +"spy_sf12_badmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic05.mp3" +} + +"spy_sf12_badmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic06.mp3" +} + +"spy_sf12_badmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic07.mp3" +} + +"spy_sf12_badmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_badmagic08.mp3" +} + +"spy_sf12_dancing01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_dancing01.mp3" +} + +"spy_sf12_falling01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_falling01.mp3" +} + +"spy_sf12_falling02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_falling02.mp3" +} + +"spy_sf12_goodmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic01.mp3" +} + +"spy_sf12_goodmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic02.mp3" +} + +"spy_sf12_goodmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic03.mp3" +} + +"spy_sf12_goodmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic04.mp3" +} + +"spy_sf12_goodmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic05.mp3" +} + +"spy_sf12_goodmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic06.mp3" +} + +"spy_sf12_goodmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic07.mp3" +} + +"spy_sf12_goodmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_goodmagic08.mp3" +} + +"spy_sf12_scared01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf12_scared01.mp3" +} + +//----------------------------------------------------------------------------- +//End of Spy BATCH 29 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scream Fortress 2012 +//Medic BATCH 28 +//----------------------------------------------------------------------------- +"medic_sf12_attack01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_attack01.mp3" +} + +"medic_sf12_attack02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_attack02.mp3" +} + +"medic_sf12_attack03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_attack03.mp3" +} + +"medic_sf12_badmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic01.mp3" +} + +"medic_sf12_badmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic02.mp3" +} + +"medic_sf12_badmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic03.mp3" +} + +"medic_sf12_badmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic04.mp3" +} + +"medic_sf12_badmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic05.mp3" +} + +"medic_sf12_badmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic06.mp3" +} + +"medic_sf12_badmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic07.mp3" +} + +"medic_sf12_badmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic08.mp3" +} + +"medic_sf12_badmagic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic09.mp3" +} + +"medic_sf12_badmagic10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic10.mp3" +} + +"medic_sf12_badmagic11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic11.mp3" +} + +"medic_sf12_badmagic12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_badmagic12.mp3" +} + +"medic_sf12_bombinomicon01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_bombinomicon01.mp3" +} + +"medic_sf12_bombinomicon02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_bombinomicon02.mp3" +} + +"medic_sf12_bombinomicon03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_bombinomicon03.mp3" +} + +"medic_sf12_bombinomicon04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_bombinomicon04.mp3" +} + +"medic_sf12_bombinomicon05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_bombinomicon05.mp3" +} + +"medic_sf12_charging01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_charging01.mp3" +} + +"medic_sf12_falling01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_falling01.mp3" +} + +"medic_sf12_goodmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_goodmagic01.mp3" +} + +"medic_sf12_goodmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_goodmagic02.mp3" +} + +"medic_sf12_goodmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_goodmagic03.mp3" +} + +"medic_sf12_goodmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_goodmagic04.mp3" +} + +"medic_sf12_healing01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_healing01.mp3" +} + +"medic_sf12_healing02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_healing02.mp3" +} + +"medic_sf12_scared01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_scared01.mp3" +} + +"medic_sf12_scared02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_scared02.mp3" +} + +"medic_sf12_scared03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_scared03.mp3" +} + +"medic_sf12_seeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking01.mp3" +} + +"medic_sf12_seeking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking02.mp3" +} + +"medic_sf12_seeking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking03.mp3" +} + +"medic_sf12_seeking04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking04.mp3" +} + +"medic_sf12_seeking05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking05.mp3" +} + +"medic_sf12_seeking06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking06.mp3" +} + +"medic_sf12_seeking07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking07.mp3" +} + +"medic_sf12_seeking08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_seeking08.mp3" +} + +"medic_sf12_taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_taunts02.mp3" +} + +"medic_sf12_taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_taunts03.mp3" +} + +"medic_sf12_taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_taunts04.mp3" +} + +"medic_sf12_taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf12_taunts05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Medic BATCH 28 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Scream Fortress 2012 +//Demoman BATCH 26 +//----------------------------------------------------------------------------- +"demoman_sf12_badmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic01.mp3" +} + +"demoman_sf12_badmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic02.mp3" +} + +"demoman_sf12_badmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic03.mp3" +} + +"demoman_sf12_badmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic04.mp3" +} + +"demoman_sf12_badmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic05.mp3" +} + +"demoman_sf12_badmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic06.mp3" +} + +"demoman_sf12_badmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic07.mp3" +} + +"demoman_sf12_badmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic08.mp3" +} + +"demoman_sf12_badmagic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic09.mp3" +} + +"demoman_sf12_badmagic10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic10.mp3" +} + +"demoman_sf12_badmagic11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_badmagic11.mp3" +} + +"demoman_sf12_bombinomicon01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_bombinomicon01.mp3" +} + +"demoman_sf12_bombinomicon02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_bombinomicon02.mp3" +} + +"demoman_sf12_bombinomicon03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_bombinomicon03.mp3" +} + +"demoman_sf12_bombinomicon04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_bombinomicon04.mp3" +} + +"demoman_sf12_bombinomicon05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_bombinomicon05.mp3" +} + +"demoman_sf12_bombinomicon06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_bombinomicon06.mp3" +} + +"demoman_sf12_falling01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_falling01.mp3" +} + +"demoman_sf12_goodmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_goodmagic01.mp3" +} + +"demoman_sf12_goodmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_goodmagic02.mp3" +} + +"demoman_sf12_goodmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_goodmagic03.mp3" +} + +"demoman_sf12_goodmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_goodmagic04.mp3" +} + +"demoman_sf12_healing01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_healing01.mp3" +} + +"demoman_sf12_healing02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_healing02.mp3" +} + +"demoman_sf12_seeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking01.mp3" +} + +"demoman_sf12_seeking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking02.mp3" +} + +"demoman_sf12_seeking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking03.mp3" +} + +"demoman_sf12_seeking04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking04.mp3" +} + +"demoman_sf12_seeking05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking05.mp3" +} + +"demoman_sf12_seeking06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking06.mp3" +} + +"demoman_sf12_seeking07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking07.mp3" +} + +"demoman_sf12_seeking08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking08.mp3" +} + +"demoman_sf12_seeking09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking09.mp3" +} + +"demoman_sf12_seeking10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf12_seeking10.mp3" +} + +//----------------------------------------------------------------------------- +//End of Demoman BATCH 26 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scream Fortress 2012 +//Heavy BATCH 27 +//----------------------------------------------------------------------------- +"heavy_fairyprincess01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess01.mp3" +} + +"heavy_fairyprincess02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess02.mp3" +} + +"heavy_fairyprincess03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess03.mp3" +} + +"heavy_fairyprincess04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess04.mp3" +} + +"heavy_fairyprincess05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess05.mp3" +} + +"heavy_fairyprincess06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess06.mp3" +} + +"heavy_fairyprincess07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess07.mp3" +} + +"heavy_fairyprincess08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess08.mp3" +} + +"heavy_fairyprincess09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess09.mp3" +} + +"heavy_fairyprincess10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess10.mp3" +} + +"heavy_fairyprincess11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess11.mp3" +} + +"heavy_fairyprincess12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess12.mp3" +} + +"heavy_fairyprincess13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess13.mp3" +} + +"heavy_fairyprincess14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess14.mp3" +} + +"heavy_fairyprincess15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess15.mp3" +} + +"heavy_fairyprincess16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess16.mp3" +} + +"heavy_fairyprincess17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess17.mp3" +} + +"heavy_fairyprincess18" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess18.mp3" +} + +"heavy_fairyprincess19" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_fairyprincess19.mp3" +} + +"heavy_scram2012_falling01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_scram2012_falling01.mp3" +} + +"heavy_sf12_attack01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_attack01.mp3" +} + +"heavy_sf12_attack02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_attack02.mp3" +} + +"heavy_sf12_attack03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_attack03.mp3" +} + +"heavy_sf12_attack04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_attack04.mp3" +} + +"heavy_sf12_attack05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_attack05.mp3" +} + +"heavy_sf12_badmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic01.mp3" +} + +"heavy_sf12_badmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic02.mp3" +} + +"heavy_sf12_badmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic03.mp3" +} + +"heavy_sf12_badmagic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic04.mp3" +} + +"heavy_sf12_badmagic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic05.mp3" +} + +"heavy_sf12_badmagic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic06.mp3" +} + +"heavy_sf12_badmagic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic07.mp3" +} + +"heavy_sf12_badmagic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic08.mp3" +} + +"heavy_sf12_badmagic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic09.mp3" +} + +"heavy_sf12_badmagic10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_badmagic10.mp3" +} + +"heavy_sf12_bombinomicon01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_bombinomicon01.mp3" +} + +"heavy_sf12_bombinomicon02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_bombinomicon02.mp3" +} + +"heavy_sf12_bombinomicon03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_bombinomicon03.mp3" +} + +"heavy_sf12_goodmagic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_goodmagic01.mp3" +} + +"heavy_sf12_goodmagic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_goodmagic02.mp3" +} + +"heavy_sf12_goodmagic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_goodmagic03.mp3" +} + +"heavy_sf12_healing01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_healing01.mp3" +} + +"heavy_sf12_healing02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_healing02.mp3" +} + +"heavy_sf12_seeking01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_seeking01.mp3" +} + +"heavy_sf12_seeking02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_seeking02.mp3" +} + +"heavy_sf12_seeking03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_seeking03.mp3" +} + +"heavy_sf12_seeking04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_seeking04.mp3" +} + +"heavy_sf12_seeking05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_seeking05.mp3" +} + +"heavy_sf12_seeking06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf12_seeking06.mp3" +} + +//----------------------------------------------------------------------------- +//End of Heavy BATCH 27 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------------------------- +//Merasmus VO +//----------------------------------------------------------------------------------------------- +"Halloween.BconIslandIdle01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_merasmus/sf12_bcon_island02.mp3" +} +"Halloween.BconIslandIdle02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_merasmus/sf12_bcon_island03.mp3" +} +"Halloween.BconIslandIdle03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_merasmus/sf12_bcon_island04.mp3" +} +"Halloween.BconSkullhat" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_bcon_skullhat01.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_skullhat02.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_skullhat03.mp3" + } +} +"Halloween.BombinomiconBombs" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_bcon_held_up01.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up04.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up05.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up06.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up07.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up08.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up10.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up11.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up12.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up13.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up15.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up17.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up19.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up20.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up24.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up21.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up25.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up27.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up29.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up30.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up31.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up33.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up14.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up18.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up28.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_held_up32.mp3" + } +} +"Halloween.BombinomiconSpin" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb01.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb08.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb13.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb14.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb09.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb10.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb17.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb19.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb29.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb31.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb32.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb33.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb34.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb36.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb38.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb40.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb44.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb45.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb47.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb48.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb50.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb02.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb03.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb23.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb24.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb25.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb26.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb28.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb30.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb35.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb37.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb39.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb41.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb42.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb46.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb49.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb51.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb52.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb53.mp3" + "wave" "vo/halloween_merasmus/sf12_bcon_headbomb54.mp3" + } +} +"Halloween.BombSuperMove01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon01.mp3" +} +"Halloween.BombSuperMove02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon03.mp3" +} +"Halloween.BombSuperMove03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon05.mp3" +} +"Halloween.BombSuperMove04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon09.mp3" +} +"Halloween.BombSuperMove05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon10.mp3" +} +"Halloween.BombSuperMove06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon11.mp3" +} +"Halloween.BombSuperMove07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon13.mp3" +} +"Halloween.BombSuperMove08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon14.mp3" +} +"Halloween.BombSuperMove09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_bombinomicon15.mp3" +} +"Halloween.MerasmusAppears" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_appears01.mp3" + "wave" "vo/halloween_merasmus/sf12_appears02.mp3" + "wave" "vo/halloween_merasmus/sf12_appears03.mp3" + "wave" "vo/halloween_merasmus/sf12_appears04.mp3" + "wave" "vo/halloween_merasmus/sf12_appears07.mp3" + "wave" "vo/halloween_merasmus/sf12_appears08.mp3" + "wave" "vo/halloween_merasmus/sf12_appears13.mp3" + "wave" "vo/halloween_merasmus/sf12_appears14.mp3" + "wave" "vo/halloween_merasmus/sf12_appears15.mp3" + "wave" "vo/halloween_merasmus/sf12_appears16.mp3" + "wave" "vo/halloween_merasmus/sf12_appears17.mp3" + } +} +"Halloween.MerasmusBanish" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_defeated01.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated02.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated03.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated04.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated05.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated06.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated07.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated08.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated09.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated10.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated11.mp3" + "wave" "vo/halloween_merasmus/sf12_defeated12.mp3" + } +} +"Halloween.MerasmusBombTaunt" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_appears09.mp3" + "wave" "vo/halloween_merasmus/sf12_appears10.mp3" + "wave" "vo/halloween_merasmus/sf12_appears11.mp3" + "wave" "vo/halloween_merasmus/sf12_ranged_attack04.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic12.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic13.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_nonspecific04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared06.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared07.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_scared08.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_happy04.mp3" + } +} +"Halloween.MerasmusCastBleedingSpell" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_merasmus/sf12_wheel_bloody02.mp3" +} +"Halloween.MerasmusCastFireSpell" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_staff_magic03.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic04.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic05.mp3" + } +} +"Halloween.MerasmusCastJarateSpell" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_staff_magic02.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic09.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords11.mp3" + } +} +"Halloween.MerasmusCastJarateSpellRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_staff_magic06.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic08.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic10.mp3" + "wave" "vo/halloween_merasmus/sf12_staff_magic11.mp3" + } +} +"Halloween.MerasmusControlPoint" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_bombinomicon01.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon03.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon05.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon09.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon10.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon11.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon13.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon14.mp3" + "wave" "vo/halloween_merasmus/sf12_bombinomicon15.mp3" + } +} +"Halloween.MerasmusDepart" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_leaving01.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving02.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving04.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving06.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving05.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving07.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving12.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving08.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving09.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving10.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving16.mp3" + } +} +"Halloween.MerasmusDepartRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_leaving11.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving13.mp3" + "wave" "vo/halloween_merasmus/sf12_leaving03.mp3" + } +} +"Halloween.MerasmusDiscovered" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_found01.mp3" + "wave" "vo/halloween_merasmus/sf12_found02.mp3" + "wave" "vo/halloween_merasmus/sf12_found03.mp3" + "wave" "vo/halloween_merasmus/sf12_found04.mp3" + "wave" "vo/halloween_merasmus/sf12_found07.mp3" + "wave" "vo/halloween_merasmus/sf12_found09.mp3" + "wave" "vo/halloween_merasmus/sf12_found05.mp3" + "wave" "vo/halloween_merasmus/sf12_found08.mp3" + } +} +"Halloween.MerasmusGrenadeThrow" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_grenades03.mp3" + "wave" "vo/halloween_merasmus/sf12_grenades04.mp3" + "wave" "vo/halloween_merasmus/sf12_grenades05.mp3" + "wave" "vo/halloween_merasmus/sf12_grenades06.mp3" + } +} +"Halloween.MerasmusGrenadeThrowRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_ranged_attack04.mp3" + "wave" "vo/halloween_merasmus/sf12_ranged_attack05.mp3" + "wave" "vo/halloween_merasmus/sf12_ranged_attack06.mp3" + "wave" "vo/halloween_merasmus/sf12_ranged_attack07.mp3" + } +} +"Halloween.MerasmusHidden" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_hide_idles04.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles05.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles01.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles09.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles11.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles15.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles16.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles22.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles23.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles24.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles25.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles26.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles27.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles28.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles30.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles33.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles42.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles44.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles46.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles48.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles49.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal11.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles07.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles10.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles20.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles47.mp3" + } +} +"Halloween.MerasmusHiddenRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_hide_idles08.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles12.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles14.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles18.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles21.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles06.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles_demo01.mp3" + } +} +"Halloween.MerasmusHitByBomb" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_magic_backfire06.mp3" + "wave" "vo/halloween_merasmus/sf12_magic_backfire07.mp3" + "wave" "vo/halloween_merasmus/sf12_magic_backfire23.mp3" + "wave" "vo/halloween_merasmus/sf12_magic_backfire29.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit01.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit03.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit02.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit09.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit17.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit15.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit24.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit18.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit25.mp3" + "wave" "vo/halloween_merasmus/sf12_pain01.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit04.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit07.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit10.mp3" + "wave" "vo/halloween_merasmus/sf12_pain02.mp3" + "wave" "vo/halloween_merasmus/sf12_pain03.mp3" + "wave" "vo/halloween_merasmus/sf12_pain04.mp3" + "wave" "vo/halloween_merasmus/sf12_pain05.mp3" + } +} +"Halloween.MerasmusHitByBombRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_headbomb_hit05.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit06.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit08.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit12.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit13.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit14.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit16.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit19.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit20.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit21.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit23.mp3" + "wave" "vo/halloween_merasmus/sf12_headbomb_hit26.mp3" + } +} +"Halloween.MerasmusInitiateHiding" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_hide_heal01.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal03.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal04.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal06.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal08.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal09.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal14.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal12.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal13.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal15.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal16.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal17.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal19.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal02.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal05.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_heal07.mp3" + } +} +"Halloween.MerasmusLaunchSpell" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_ranged_attack08.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords01.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords02.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords03.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords04.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords05.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords06.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords07.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords08.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords09.mp3" + "wave" "vo/halloween_merasmus/sf12_magicwords10.mp3" + } +} +"Halloween.MerasmusStaffAttack" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_attacks01.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks03.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks11.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks05.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks06.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks04.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks08.mp3" + } +} +"Halloween.MerasmusStaffAttackRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_attacks10.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks09.mp3" + } +} +"Halloween.MerasmusTauntFakeProp" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_appears09.mp3" + "wave" "vo/halloween_merasmus/sf12_appears10.mp3" + "wave" "vo/halloween_merasmus/sf12_appears11.mp3" + "wave" "vo/halloween_merasmus/sf12_attacks07.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles31.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles41.mp3" + "wave" "vo/halloween_merasmus/sf12_combat_idle01.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles29.mp3" + "wave" "vo/halloween_merasmus/sf12_hide_idles37.mp3" + "wave" "vo/halloween_merasmus/sf12_combat_idle02.mp3" + } +} +"Halloween.MerasmusWheelBigHead" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_bighead01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bighead05.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bighead02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bighead03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bighead04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bighead06.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bighead07.mp3" + } +} +"Halloween.MerasmusWheelBleed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_bloody01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bloody03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bloody04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_bloody05.mp3" + } +} +"Halloween.MerasmusWheelBurn" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_fire01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_fire02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_fire03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_fire04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_fire05.mp3" + } +} +"Halloween.MerasmusWheelCrits" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_wheel_crits02.mp3" +} +"Halloween.MerasmusWheelDance" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_dance02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_dance03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_dance04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_dance05.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_dance06.mp3" + } +} +"Halloween.MerasmusWheelGhosts" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_ghosts01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_ghosts02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_ghosts03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_ghosts05.mp3" + } +} +"Halloween.MerasmusWheelGravity" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_gravity01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_gravity02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_gravity04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_gravity05.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_gravity03.mp3" + } +} +"Halloween.MerasmusWheelJarate" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_jarate01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_jarate02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_jarate03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_jarate04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_jarate05.mp3" + } +} +"Halloween.MerasmusWheelShrunkHead" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_tinyhead01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_tinyhead02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_tinyhead03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_tinyhead04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_tinyhead05.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_tinyhead06.mp3" + } +} +"Halloween.MerasmusWheelSpin" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_spin01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin02.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin05.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin06.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin07.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin08.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin09.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin10.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin12.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin11.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin13.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin22.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin15.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin21.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin18.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin19.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin23.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin24.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin25.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_spin26.mp3" + } +} +"Halloween.MerasmusWheelSuperJump" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_jump01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_jump02.mp3" + } +} +"Halloween.MerasmusWheelSuperSpeed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf12_wheel_speed01.mp3" +} +"Halloween.MerasmusWheelUber" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf12_wheel_ubercharge01.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible03.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible04.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible05.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible06.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible07.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible08.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible10.mp3" + "wave" "vo/halloween_merasmus/sf12_wheel_invincible11.mp3" + } +} + + +"Halloween.MerasmusHalloweenModeCommon" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween01.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween02.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween03.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween04.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween07.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween09.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween10.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween11.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween12.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween13.mp3" + } +} + + +"Halloween.MerasmusHalloweenModeRare" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween05.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween06.mp3" + "wave" "vo/halloween_merasmus/sf13_merasmus_eternaween08.mp3" + } +} + + +//----------------------------------------------------------------------------------------------- +//END OF Merasmus VO +//----------------------------------------------------------------------------------------------- + +//----------------------------------------------------------------------------------------------- +//Wheatley Sapper +//----------------------------------------------------------------------------------------------- + +"PSap.null" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_TALKING" + "volume" "VOL_NORM" + "wave" "misc/null.wav" +} +"Psap.Attached" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached13.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached14.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached16.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached23.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking28.mp3" + } +} +"Psap.AttachedPW" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached18.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached19.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached20.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached22.mp3" + } +} +"PSap.Damage" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack01.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack08.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attack11.mp3" + } +} +"PSap.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_player_death05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death08.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death12.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death15.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death16.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death17.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death21.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death22.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death23.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death24.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death25.mp3" + } +} +"PSap.DeathLong" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_player_death01.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death13.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death14.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death19.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_player_death26.mp3" + } +} +"PSap.Deploy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout01.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout08.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout11.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout12.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout14.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout16.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout18.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout22.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout23.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout24.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout25.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout26.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout29.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout41.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout44.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout64.mp3" + } +} +"PSap.DeployAgain" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledoutagain03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledoutagain04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledoutagain05.mp3" + } +} +"PSap.DeployIntro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout13.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout36.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout37.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout38.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout39.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout40.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout59.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout60.mp3" + } +} +"PSap.Hacked" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout19.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout20.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout21.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_pulledout46.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked01.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked08.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked13.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked14.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked15.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked24.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked25.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked26.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked28.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked29.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked32.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked33.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked34.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked35.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked37.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked41.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked43.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked44.mp3" + } +} +"Psap.HackedFollowup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked16.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked17.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked18.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked19.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked20.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked21.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked22.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked23.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked42.mp3" + } +} +"Psap.HackedLoud" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked11.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked27.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked38.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked40.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked47.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacked48.mp3" + } +} +"PSap.Hacking" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking08.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking11.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking12.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking16.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking17.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking23.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking26.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking29.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking30.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking32.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking33.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking34.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_attached26.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking24.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking25.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking27.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking31.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking35.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking36.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking37.mp3" + } +} +"PSap.HackingPW" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking18.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking19.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking22.mp3" + } +} +"PSap.HackingShort" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking13.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking14.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking15.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking20.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_hacking21.mp3" + } +} +"PSap.Holster" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback01.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback08.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback09.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback15.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback17.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback20.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback22.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback23.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback26.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback27.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback37.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback44.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback47.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback48.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback49.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback50.mp3" + } +} +"PSap.HolsterFast" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback12.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback24.mp3" + } +} +"Psap.Idle" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle38.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle41.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle44.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_putback53.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle05.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle06.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle07.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle10.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle11.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle12.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle13.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle14.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle15.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle16.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle17.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle18.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle19.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle20.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle21.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle22.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle26.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle28.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle29.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle30.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle31.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle35.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle43.mp3" + } +} +"Psap.IdleHack02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle42.mp3" +} +"Psap.IdleHarmless02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle40.mp3" +} +"PSap.IdleIntro01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_intro01.mp3" +} +"PSap.IdleIntro02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_intro02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_intro03.mp3" + } +} +"PSap.IdleIntro03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_intro04.mp3" +} +"PSap.IdleIntro04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_intro05.mp3" +} +"PSap.IdleKnife02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle36.mp3" +} +"PSap.IdleKnife03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_idle37.mp3" +} +"PSap.Sneak" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" "vo/items/wheatley_sapper/wheatley_sapper_sneak03.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_sneak04.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_sneak01.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_sneak02.mp3" + "wave" "vo/items/wheatley_sapper/wheatley_sapper_sneak05.mp3" + } +} +//----------------------------------------------------------------------------------------------- +//END OF Wheatley Sapper +//----------------------------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//New Spy Taunts +//Spy BATCH 34 +//----------------------------------------------------------------------------- + +"spy_paulingkilltaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_paulingkilltaunt01.mp3" +} + +"spy_paulingkilltaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_paulingkilltaunt02.mp3" +} + +"spy_paulingkilltaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_paulingkilltaunt03.mp3" +} + +"spy_rpscountgo01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountgo01.mp3" +} + +"spy_rpscountgo02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountgo02.mp3" +} + +"spy_rpscountgo03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountgo03.mp3" +} + +"spy_rpscountone01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountone01.mp3" +} + +"spy_rpscountpaper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountpaper01.mp3" +} + +"spy_rpscountpaper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountpaper02.mp3" +} + +"spy_rpscountrock01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountrock01.mp3" +} + +"spy_rpscountrock02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountrock02.mp3" +} + +"spy_rpscountscissor01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountscissor01.mp3" +} + +"spy_rpscountscissor02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountscissor02.mp3" +} + +"spy_rpscountthree01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscountthree01.mp3" +} + +"spy_rpscounttwo01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpscounttwo01.mp3" +} + +"spy_rpshold01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpshold01.mp3" +} + +"spy_rpslose01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpslose01.mp3" +} + +"spy_rpslose02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpslose02.mp3" +} + +"spy_rpspaperwin01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpspaperwin01.mp3" +} + +"spy_rpspaperwin02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpspaperwin02.mp3" +} + +"spy_rpspaperwin03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpspaperwin03.mp3" +} + +"spy_rpsregretpaper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpsregretpaper01.mp3" +} + +"spy_rpsregretrock01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpsregretrock01.mp3" +} + +"spy_rpsregretscissor01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpsregretscissor01.mp3" +} + +"spy_rpsrockwin01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpsrockwin01.mp3" +} + +"spy_rpsscissorwin01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpsscissorwin01.mp3" +} + +"spy_rpsstart01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpsstart01.mp3" +} + +"spy_rpstie01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpstie01.mp3" +} + +"spy_rpswin01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpswin01.mp3" +} + +"spy_rpswin02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_rpswin02.mp3" +} + +"spy_stabtaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt01.mp3" +} + +"spy_stabtaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt02.mp3" +} + +"spy_stabtaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt03.mp3" +} + +"spy_stabtaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt04.mp3" +} + +"spy_stabtaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt05.mp3" +} + +"spy_stabtaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt06.mp3" +} + +"spy_stabtaunt07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt07.mp3" +} + +"spy_stabtaunt08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt08.mp3" +} + +"spy_stabtaunt09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt09.mp3" +} + +"spy_stabtaunt10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt10.mp3" +} + +"spy_stabtaunt11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt11.mp3" +} + +"spy_stabtaunt12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt12.mp3" +} + +"spy_stabtaunt13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt13.mp3" +} + +"spy_stabtaunt14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt14.mp3" +} + +"spy_stabtaunt15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt15.mp3" +} + +"spy_stabtaunt16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_stabtaunt16.mp3" +} + +"spy_tietaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt01.mp3" +} + +"spy_tietaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt02.mp3" +} + +"spy_tietaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt03.mp3" +} + +"spy_tietaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt04.mp3" +} + +"spy_tietaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt05.mp3" +} + +"spy_tietaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt06.mp3" +} + +"spy_tietaunt07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt07.mp3" +} + +"spy_tietaunt08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt08.mp3" +} + +"spy_tietaunt09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_tietaunt09.mp3" +} + + +//----------------------------------------------------------------------------- +//End of Spy BATCH 34 +//----------------------------------------------------------------------------- + +"heavy_russian_taunt" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy_taunt_russian.mp3" +} + +//----------------------------------------------------------------------------- +// Begin Announcer KillStreak +//----------------------------------------------------------------------------- +"Announcer.KillStreak_Level1" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_01.wav" +} + +"Announcer.KillStreak_Level1_death" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_01_death.wav" +} + +"Announcer.KillStreak_Level1_kill" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_01_kill.wav" +} + + +"Announcer.KillStreak_Level2" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_02.wav" + +} + +"Announcer.KillStreak_Level2_death" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_01_death.wav" +} + +"Announcer.KillStreak_Level2_kill" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "misc\ks_tier_02_kill_01.wav" + "wave" "misc\ks_tier_02_kill_02.wav" + } +} + +"Announcer.KillStreak_Level3" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_03.wav" + +} + +"Announcer.KillStreak_Level3_death" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_03_death.wav" +} + +"Announcer.KillStreak_Level3_kill" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_03_kill_01.wav" + +} + +"Announcer.KillStreak_Level4" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_04.wav" +} + +"Announcer.KillStreak_Level4_death" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_04_death.wav" +} + +"Announcer.KillStreak_Level4_kill" +{ + "channel" "CHAN_VOICE2" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "misc\ks_tier_04_kill_01.wav" +} +// End Announcer KillStreak +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Spy BATCH 37 +//----------------------------------------------------------------------------- +"spy_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_generic04.mp3" +} + +"spy_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_super_jump01.mp3" +} + +"spy_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_uber01.mp3" +} + +"spy_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_super_speed01.mp3" +} + +"spy_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_invisibility01.mp3" +} + +"spy_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_devil_bargain01.mp3" +} + +"spy_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_bombhead01.mp3" +} + +"spy_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_lightning_bolt01.mp3" +} + +"spy_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_teleport_self01.mp3" +} + +"spy_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_earthquake01.mp3" +} + +"spy_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_zombie_horde01.mp3" +} + +"spy_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_spell_summon_monoculous01.mp3" +} + +"spy_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_common01.mp3" +} + +"spy_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_common02.mp3" +} + +"spy_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_rare02.mp3" +} + +"spy_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_rare01.mp3" +} + +"spy_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_godlike01.mp3" +} + +"spy_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_godlike02.mp3" +} + +"spy_mvm_loot_godlike03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_godlike03.mp3" +} + +"spy_sf13_influx_small03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_small03.mp3" +} + +"spy_sf13_influx_small02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_small02.mp3" +} + +"spy_sf13_magic_reac02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_magic_reac02.mp3" +} + +"spy_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_magic_reac01.mp3" +} + +"spy_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect01.mp3" +} + +"spy_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect02.mp3" +} + +"spy_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect03.mp3" +} + +"spy_mvm_resurrect04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect04.mp3" +} + +"spy_mvm_resurrect05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect05.mp3" +} + +"spy_mvm_resurrect06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect06.mp3" +} + +"spy_mvm_resurrect07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect07.mp3" +} + +"spy_mvm_resurrect08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect08.mp3" +} + +"spy_mvm_resurrect09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_resurrect09.mp3" +} + +"spy_sf13_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_round_start01.mp3" +} + +"spy_sf13_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_round_start02.mp3" +} + +"spy_sf13_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_round_start03.mp3" +} + +"spy_item_unicorn_backstab01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_backstab01.mp3" +} + +"spy_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_round_start01.mp3" +} + +"spy_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_round_start02.mp3" +} + +"spy_item_unicorn_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_round_start03.mp3" +} + +"spy_item_unicorn_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_round_start04.mp3" +} + +"spy_item_unicorn_case_cap01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_case_cap01.mp3" +} + +"spy_item_unicorn_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_domination01.mp3" +} + +"spy_item_unicorn_backstab02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_backstab02.mp3" +} + +"spy_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_mannhattan_gate_atk01.mp3" +} + +"spy_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_mannhattan_gate_atk02.mp3" +} + +"spy_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_mannhattan_gate_take01.mp3" +} + +"spy_cartgoingforwardoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense02.mp3" +} + +"spy_cartgoingforwardoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense03.mp3" +} + +"spy_cartgoingforwardoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense04.mp3" +} + +"spy_cartgoingforwardoffense05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense05.mp3" +} + +"spy_cartgoingforwardoffense06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense06.mp3" +} + +"spy_cartgoingforwardoffense07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense07.mp3" +} + +"spy_cartgoingforwardoffense08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense08.mp3" +} + +"spy_cartgoingbackoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingbackoffense01.mp3" +} + +"spy_cartgoingbackoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingbackoffense02.mp3" +} + +"spy_cartgoingforwarddefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwarddefense01.mp3" +} + +"spy_cartgoingforwarddefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwarddefense02.mp3" +} + +"spy_cartgoingforwarddefense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwarddefense04.mp3" +} + +"spy_cartgoingforwarddefense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwarddefense03.mp3" +} + +"spy_cartgoingbackdefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingbackdefense01.mp3" +} + +"spy_cartgoingbackdefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingbackdefense02.mp3" +} + +"spy_cartstaycloseoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstaycloseoffense01.mp3" +} + +"spy_cartstaycloseoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstaycloseoffense02.mp3" +} + +"spy_cartstaycloseoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstaycloseoffense03.mp3" +} + +"spy_cartstaycloseoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstaycloseoffense04.mp3" +} + +"spy_cartstoppedoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstoppedoffense01.mp3" +} + +"spy_cartstoppedoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstoppedoffense02.mp3" +} + +"spy_cartstoppedoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstoppedoffense03.mp3" +} + +"spy_cartstopitdefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstopitdefense01.mp3" +} + +"spy_cartstopitdefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstopitdefense02.mp3" +} + +"spy_cartstopitdefense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstopitdefense03.mp3" +} + +"spy_cartstopitdefense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartstopitdefense04.mp3" +} + +"spy_sf13_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_round_start04.mp3" +} + +"spy_sf13_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_round_start05.mp3" +} + +"spy_sf13_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_round_start06.mp3" +} + +"spy_sf13_midnight01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight01.mp3" +} + +"spy_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight02.mp3" +} + +"spy_sf13_midnight04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight04.mp3" +} + +"spy_sf13_midnight05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight05.mp3" +} + +"spy_sf13_midnight06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight06.mp3" +} + +"spy_sf13_midnight08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight08.mp3" +} + +"spy_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_big02.mp3" +} + +"spy_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_big01.mp3" +} + +"spy_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_magic_reac03.mp3" +} + +"spy_sf13_magic_reac04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_magic_reac04.mp3" +} + +"spy_sf13_magic_reac05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_magic_reac05.mp3" +} + +"spy_sf13_magic_reac06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_magic_reac06.mp3" +} + +"spy_item_unicorn_capped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_capped01.mp3" +} + +"spy_item_unicorn_capped03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_capped03.mp3" +} + +"spy_mvm_loot_rare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_rare03.mp3" +} + +"spy_mvm_loot_common03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_mvm_loot_common03.mp3" +} + +"spy_sf13_influx_small04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_small04.mp3" +} + +"spy_sf13_influx_small05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_small05.mp3" +} + +"spy_sf13_influx_small06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_influx_small06.mp3" +} + +"spy_item_unicorn_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_round_start05.mp3" +} + +"spy_item_unicorn_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_round_start06.mp3" +} + +"spy_cartgoingforwardoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_cartgoingforwardoffense01.mp3" +} + +"spy_sf13_midnight03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_sf13_midnight03.mp3" +} + +"spy_item_unicorn_capped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/spy_item_unicorn_capped02.mp3" +} + +//----------------------------------------------------------------------------- +//End of Spy BATCH 37 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Soldier BATCH 38 +//----------------------------------------------------------------------------- +"soldier_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_generic04.mp3" +} + +"soldier_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_super_jump01.mp3" +} + +"soldier_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_uber01.mp3" +} + +"soldier_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_super_speed01.mp3" +} + +"soldier_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_invisibility01.mp3" +} + +"soldier_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_devil_bargain01.mp3" +} + +"soldier_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_bombhead01.mp3" +} + +"soldier_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_lightning_bolt01.mp3" +} + +"soldier_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_teleport_self01.mp3" +} + +"soldier_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_earthquake01.mp3" +} + +"soldier_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_zombie_horde01.mp3" +} + +"soldier_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_spell_summon_monoculous01.mp3" +} + +"soldier_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_resurrect01.mp3" +} + +"soldier_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_resurrect02.mp3" +} + +"soldier_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_resurrect03.mp3" +} + +"soldier_mvm_resurrect05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_resurrect05.mp3" +} + +"soldier_mvm_resurrect06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_resurrect06.mp3" +} + +"soldier_mvm_resurrect04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_resurrect04.mp3" +} + +"soldier_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_common02.mp3" +} + +"soldier_mvm_loot_common03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_common03.mp3" +} + +"soldier_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_common01.mp3" +} + +"soldier_mvm_loot_rare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_rare03.mp3" +} + +"soldier_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_rare01.mp3" +} + +"soldier_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_rare02.mp3" +} + +"soldier_mvm_loot_rare04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_rare04.mp3" +} + +"soldier_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_godlike02.mp3" +} + +"soldier_mvm_loot_godlike03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_godlike03.mp3" +} + +"soldier_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_loot_godlike01.mp3" +} + +"soldier_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_mannhattan_gate_atk01.mp3" +} + +"soldier_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_mvm_mannhattan_gate_take01.mp3" +} + +"soldier_cartgoingforwardoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense01.mp3" +} + +"soldier_cartgoingforwardoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense02.mp3" +} + +"soldier_cartgoingforwardoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense03.mp3" +} + +"soldier_cartgoingforwardoffense14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense14.mp3" +} + +"soldier_cartgoingforwardoffense13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense13.mp3" +} + +"soldier_cartgoingforwardoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense04.mp3" +} + +"soldier_cartgoingforwardoffense05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense05.mp3" +} + +"soldier_cartgoingforwardoffense06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense06.mp3" +} + +"soldier_cartgoingforwardoffense07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense07.mp3" +} + +"soldier_cartgoingforwardoffense15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense15.mp3" +} + +"soldier_cartgoingforwardoffense09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense09.mp3" +} + +"soldier_cartgoingforwardoffense08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense08.mp3" +} + +"soldier_cartgoingforwardoffense12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense12.mp3" +} + +"soldier_cartgoingforwardoffense10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense10.mp3" +} + +"soldier_cartgoingforwardoffense11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwardoffense11.mp3" +} + +"soldier_cartgoingbackoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingbackoffense01.mp3" +} + +"soldier_cartgoingbackoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingbackoffense02.mp3" +} + +"soldier_cartgoingforwarddefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwarddefense01.mp3" +} + +"soldier_cartgoingforwarddefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwarddefense02.mp3" +} + +"soldier_cartgoingbackdefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingbackdefense01.mp3" +} + +"soldier_cartgoingbackdefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingbackdefense02.mp3" +} + +"soldier_cartstaycloseoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstaycloseoffense01.mp3" +} + +"soldier_cartstaycloseoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstaycloseoffense02.mp3" +} + +"soldier_cartstaycloseoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstaycloseoffense03.mp3" +} + +"soldier_cartstaycloseoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstaycloseoffense04.mp3" +} + +"soldier_cartstaycloseoffense05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstaycloseoffense05.mp3" +} + +"soldier_cartstaycloseoffense06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstaycloseoffense06.mp3" +} + +"soldier_cartstoppedoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstoppedoffense03.mp3" +} + +"soldier_cartstoppedoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstoppedoffense01.mp3" +} + +"soldier_cartstoppedoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstoppedoffense02.mp3" +} + +"soldier_cartstopitdefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstopitdefense01.mp3" +} + +"soldier_cartstopitdefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstopitdefense02.mp3" +} + +"soldier_cartstopitdefense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartstopitdefense03.mp3" +} + +"soldier_sf13_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_round_start01.mp3" +} + +"soldier_sf13_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_round_start02.mp3" +} + +"soldier_sf13_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_round_start03.mp3" +} + +"soldier_sf13_cart_forward01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_cart_forward01.mp3" +} + +"soldier_sf13_cart_forward02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_cart_forward02.mp3" +} + +"soldier_sf13_midnight01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_midnight01.mp3" +} + +"soldier_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_midnight02.mp3" +} + +"soldier_sf13_midnight03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_midnight03.mp3" +} + +"soldier_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_influx_big01.mp3" +} + +"soldier_sf13_influx_big03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_influx_big03.mp3" +} + +"soldier_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_influx_big02.mp3" +} + +"soldier_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_magic_reac01.mp3" +} + +"soldier_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_sf13_magic_reac03.mp3" +} + +"soldier_item_unicorn_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start06.mp3" +} + +"soldier_item_unicorn_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start05.mp3" +} + +"soldier_item_unicorn_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start03.mp3" +} + +"soldier_item_unicorn_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start04.mp3" +} + +"soldier_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start02.mp3" +} + +"soldier_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start01.mp3" +} + +"soldier_item_unicorn_round_start07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start07.mp3" +} + +"soldier_item_unicorn_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_domination02.mp3" +} + +"soldier_item_unicorn_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_domination01.mp3" +} + +"soldier_item_unicorn_domination03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_domination03.mp3" +} + +"soldier_item_birdhead_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_round_start01.mp3" +} + +"soldier_item_birdhead_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_round_start02.mp3" +} + +"soldier_item_birdhead_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_round_start03.mp3" +} + +"soldier_item_birdhead_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_round_start04.mp3" +} + +"soldier_item_birdhead_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_round_start05.mp3" +} + +"soldier_item_birdhead_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_uber01.mp3" +} + +"soldier_item_birdhead_uber02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_uber02.mp3" +} + +"soldier_item_birdhead_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_domination01.mp3" +} + +"soldier_item_birdhead_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_domination02.mp3" +} + +"soldier_item_birdhead_domination03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_domination03.mp3" +} + +"soldier_item_birdhead_on_fire01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_on_fire01.mp3" +} + +"soldier_item_birdhead_on_fire02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_birdhead_on_fire02.mp3" +} + +"soldier_item_maggot_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_round_start01.mp3" +} + +"soldier_item_maggot_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_round_start02.mp3" +} + +"soldier_item_maggot_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_round_start03.mp3" +} + +"soldier_item_maggot_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_round_start04.mp3" +} + +"soldier_item_maggot_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_round_start05.mp3" +} + +"soldier_item_maggot_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_uber01.mp3" +} + +"soldier_item_maggot_uber02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_uber02.mp3" +} + +"soldier_item_maggot_idle02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle02.mp3" +} + +"soldier_item_maggot_idle03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle03.mp3" +} + +"soldier_item_maggot_idle01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle01.mp3" +} + +"soldier_item_maggot_idle06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle06.mp3" +} + +"soldier_item_maggot_idle05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle05.mp3" +} + +"soldier_item_maggot_idle07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle07.mp3" +} + +"soldier_item_maggot_idle04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle04.mp3" +} + +"soldier_item_maggot_idle08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle08.mp3" +} + +"soldier_item_maggot_idle10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle10.mp3" +} + +"soldier_item_maggot_idle09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_idle09.mp3" +} + +"soldier_item_maggot_healed02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_healed02.mp3" +} + +"soldier_item_maggot_healed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_healed01.mp3" +} + +"soldier_item_maggot_on_fire02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_on_fire02.mp3" +} + +"soldier_item_maggot_on_fire01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_on_fire01.mp3" +} + +"soldier_item_maggot_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_domination01.mp3" +} + +"soldier_cartgoingforwarddefense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_cartgoingforwarddefense03.mp3" +} + +"soldier_item_unicorn_round_start08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start08.mp3" +} + +"soldier_item_unicorn_round_start09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start09.mp3" +} + +"soldier_item_unicorn_round_start10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_unicorn_round_start10.mp3" +} + +"soldier_item_maggot_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_maggot_domination02.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 38 +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +//Scout BATCH 39 +//----------------------------------------------------------------------------- +"scout_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_generic04.mp3" +} + +"scout_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_super_jump01.mp3" +} + +"scout_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_uber01.mp3" +} + +"scout_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_super_speed01.mp3" +} + +"scout_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_invisibility01.mp3" +} + +"scout_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_devil_bargain01.mp3" +} + +"scout_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_bombhead01.mp3" +} + +"scout_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_lightning_bolt01.mp3" +} + +"scout_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_teleport_self01.mp3" +} + +"scout_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_earthquake01.mp3" +} + +"scout_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_zombie_horde01.mp3" +} + +"scout_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_spell_summon_monoculous01.mp3" +} + +"scout_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect01.mp3" +} + +"scout_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect02.mp3" +} + +"scout_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect03.mp3" +} + +"scout_mvm_resurrect04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect04.mp3" +} + +"scout_mvm_resurrect05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect05.mp3" +} + +"scout_mvm_resurrect06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect06.mp3" +} + +"scout_mvm_resurrect07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect07.mp3" +} + +"scout_mvm_resurrect08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_resurrect08.mp3" +} + +"scout_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_common02.mp3" +} + +"scout_mvm_loot_common03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_common03.mp3" +} + +"scout_mvm_loot_common04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_common04.mp3" +} + +"scout_mvm_loot_common05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_common05.mp3" +} + +"scout_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare02.mp3" +} + +"scout_mvm_loot_rare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare03.mp3" +} + +"scout_mvm_loot_rare04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare04.mp3" +} + +"scout_mvm_loot_rare05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare05.mp3" +} + +"scout_mvm_loot_rare06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare06.mp3" +} + +"scout_mvm_loot_rare07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare07.mp3" +} + +"scout_mvm_loot_rare08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare08.mp3" +} + +"scout_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_godlike01.mp3" +} + +"scout_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_mannhattan_gate_atk01.mp3" +} + +"scout_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_mannhattan_gate_atk02.mp3" +} + +"scout_mvm_mannhattan_gate_atk03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_mannhattan_gate_atk03.mp3" +} + +"scout_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_mannhattan_gate_take01.mp3" +} + +"scout_mvm_mannhattan_gate_take02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_mannhattan_gate_take02.mp3" +} + +"scout_sf13_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_round_start02.mp3" +} + +"scout_sf13_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_round_start01.mp3" +} + +"scout_sf13_cart_stop02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_cart_stop02.mp3" +} + +"scout_sf13_midnight01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight01.mp3" +} + +"scout_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight02.mp3" +} + +"scout_sf13_midnight03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight03.mp3" +} + +"scout_sf13_midnight04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight04.mp3" +} + +"scout_sf13_midnight05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight05.mp3" +} + +"scout_sf13_midnight07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight07.mp3" +} + +"scout_sf13_midnight06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight06.mp3" +} + +"scout_sf13_influx_small02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_influx_small02.mp3" +} + +"scout_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_influx_big01.mp3" +} + +"scout_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_influx_big02.mp3" +} + +"scout_sf13_influx_big05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_influx_big05.mp3" +} + +"scout_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac03.mp3" +} + +"scout_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_round_start01.mp3" +} + +"scout_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_round_start02.mp3" +} + +"scout_item_unicorn_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_round_start03.mp3" +} + +"scout_item_unicorn_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_round_start04.mp3" +} + +"scout_item_unicorn_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_round_start06.mp3" +} + +"scout_item_unicorn_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_round_start05.mp3" +} + +"scout_item_unicorn_cart_forward01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_cart_forward01.mp3" +} + +"scout_item_unicorn_on_fire01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_on_fire01.mp3" +} + +"scout_item_unicorn_on_fire02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_on_fire02.mp3" +} + +"scout_item_unicorn_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_uber01.mp3" +} + +"scout_item_unicorn_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination01.mp3" +} + +"scout_item_unicorn_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination02.mp3" +} + +"scout_item_unicorn_domination03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination03.mp3" +} + +"scout_item_unicorn_domination04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination04.mp3" +} + +"scout_item_unicorn_domination05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination05.mp3" +} + +"scout_item_unicorn_domination07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination07.mp3" +} + +"scout_item_unicorn_domination06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination06.mp3" +} + +"scout_item_unicorn_domination08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_domination08.mp3" +} + +"scout_item_haunthat_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start01.mp3" +} + +"scout_item_haunthat_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start02.mp3" +} + +"scout_item_haunthat_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start03.mp3" +} + +"scout_item_haunthat_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start04.mp3" +} + +"scout_item_haunthat_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start05.mp3" +} + +"scout_item_haunthat_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start06.mp3" +} + +"scout_item_haunthat_round_start07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start07.mp3" +} + +"scout_item_haunthat_round_start08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start08.mp3" +} + +"scout_item_haunthat_round_start09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_round_start09.mp3" +} + +"scout_item_haunthat_scared01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_scared01.mp3" +} + +"scout_item_haunthat_scared02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_scared02.mp3" +} + +"scout_item_haunthat_got_case01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_got_case01.mp3" +} + +"scout_item_haunthat_got_case02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_got_case02.mp3" +} + +"scout_item_haunthat_got_case03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_got_case03.mp3" +} + +"scout_item_haunthat_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_domination01.mp3" +} + +"scout_item_haunthat_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_domination02.mp3" +} + +"scout_item_haunthat_case_cap01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_case_cap01.mp3" +} + +"scout_item_haunthat_case_cap02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_case_cap02.mp3" +} + +"scout_item_haunthat_case_cap03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_case_cap03.mp3" +} + +"scout_item_haunthat_case_cap04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_case_cap04.mp3" +} + +"scout_item_haunthat_capped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_capped01.mp3" +} + +"scout_item_haunthat_capped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_capped02.mp3" +} + +"scout_item_haunthat_capped03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_capped03.mp3" +} + +"scout_item_haunthat_cart_push01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_cart_push01.mp3" +} + +"scout_item_haunthat_cart_push02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_cart_push02.mp3" +} + +"scout_item_haunthat_cart_back01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_cart_back01.mp3" +} + +"scout_item_haunthat_on_fire01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_on_fire01.mp3" +} + +"scout_item_haunthat_on_fire02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_on_fire02.mp3" +} + +"scout_item_haunthat_on_fire03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_haunthat_on_fire03.mp3" +} + +"scout_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_common01.mp3" +} + +"scout_mvm_loot_common06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_common06.mp3" +} + +"scout_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_rare01.mp3" +} + +"scout_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_mvm_loot_godlike02.mp3" +} + +"scout_sf13_midnight08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_midnight08.mp3" +} + +"scout_item_unicorn_uber02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_item_unicorn_uber02.mp3" +} + +"scout_sf13_influx_big03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_influx_big03.mp3" +} + +"scout_sf13_influx_big04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_influx_big04.mp3" +} + +"scout_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac01.mp3" +} + +"scout_sf13_magic_reac02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac02.mp3" +} + +"scout_sf13_magic_reac04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac04.mp3" +} + +"scout_sf13_magic_reac05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac05.mp3" +} + +"scout_sf13_magic_reac06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac06.mp3" +} + +"scout_sf13_magic_reac07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac07.mp3" +} + +"scout_sf13_magic_reac08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/scout_sf13_magic_reac08.mp3" +} + +//----------------------------------------------------------------------------- +//End of Scout BATCH 39 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Engineer BATCH 40 +//----------------------------------------------------------------------------- +"engineer_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_generic04.mp3" +} + +"engineer_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_super_jump01.mp3" +} + +"engineer_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_uber01.mp3" +} + +"engineer_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_super_speed01.mp3" +} + +"engineer_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_invisibility01.mp3" +} + +"engineer_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_devil_bargain01.mp3" +} + +"engineer_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_bombhead01.mp3" +} + +"engineer_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_lightning_bolt01.mp3" +} + +"engineer_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_teleport_self01.mp3" +} + +"engineer_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_earthquake01.mp3" +} + +"engineer_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_zombie_horde01.mp3" +} + +"engineer_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_spell_summon_monoculous01.mp3" +} + +"engineer_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_resurrect01.mp3" +} + +"engineer_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_resurrect02.mp3" +} + +"engineer_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_resurrect03.mp3" +} + +"engineer_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_common01.mp3" +} + +"engineer_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_common02.mp3" +} + +"engineer_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_rare01.mp3" +} + +"engineer_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_rare02.mp3" +} + +"engineer_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_godlike01.mp3" +} + +"engineer_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_godlike02.mp3" +} + +"engineer_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_mannhattan_gate_atk01.mp3" +} + +"engineer_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_mannhattan_gate_atk02.mp3" +} + +"engineer_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_mannhattan_gate_take01.mp3" +} + +"engineer_sf13_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_round_start04.mp3" +} + +"engineer_sf13_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_round_start01.mp3" +} + +"engineer_sf13_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_round_start02.mp3" +} + +"engineer_sf13_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_round_start03.mp3" +} + +"engineer_sf13_midnight03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_midnight03.mp3" +} + +"engineer_sf13_midnight01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_midnight01.mp3" +} + +"engineer_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_midnight02.mp3" +} + +"engineer_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_influx_big01.mp3" +} + +"engineer_sf13_magic_reac02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_magic_reac02.mp3" +} + +"engineer_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_magic_reac01.mp3" +} + +"engineer_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_round_start01.mp3" +} + +"engineer_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_round_start02.mp3" +} + +"engineer_item_unicorn_dispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_dispenser01.mp3" +} + +"engineer_item_unicorn_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_domination01.mp3" +} + +"engineer_item_unicorn_domination03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_domination03.mp3" +} + +"engineer_item_unicorn_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_uber01.mp3" +} + +"engineer_item_unicorn_healed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_healed01.mp3" +} + +"engineer_item_unicorn_revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_revenge01.mp3" +} + +"engineer_item_unicorn_revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_revenge02.mp3" +} + +"engineer_mvm_loot_godlike03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_godlike03.mp3" +} + +"engineer_mvm_loot_rare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_rare03.mp3" +} + +"engineer_mvm_loot_rare04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_loot_rare04.mp3" +} + +"engineer_mvm_mannhattan_gate_atk03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_mvm_mannhattan_gate_atk03.mp3" +} + +"engineer_item_unicorn_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_item_unicorn_domination02.mp3" +} + +"engineer_sf13_cart_forward02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_cart_forward02.mp3" +} + +"engineer_sf13_cart_forward03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_cart_forward03.mp3" +} + +"engineer_sf13_cart_forward04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_sf13_cart_forward04.mp3" +} + +//----------------------------------------------------------------------------- +//End of Engineer BATCH 40 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Heavy BATCH 41 +//----------------------------------------------------------------------------- +"heavy_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_generic04.mp3" +} + +"heavy_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_super_jump01.mp3" +} + +"heavy_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_uber01.mp3" +} + +"heavy_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_super_speed01.mp3" +} + +"heavy_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_invisibility01.mp3" +} + +"heavy_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_devil_bargain01.mp3" +} + +"heavy_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_bombhead01.mp3" +} + +"heavy_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_lightning_bolt01.mp3" +} + +"heavy_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_teleport_self01.mp3" +} + +"heavy_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_earthquake01.mp3" +} + +"heavy_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_zombie_horde01.mp3" +} + +"heavy_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_spell_summon_monoculous01.mp3" +} + +"heavy_mvm_resurrect05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect05.mp3" +} + +"heavy_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect01.mp3" +} + +"heavy_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect03.mp3" +} + +"heavy_mvm_resurrect07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect07.mp3" +} + +"heavy_mvm_resurrect04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect04.mp3" +} + +"heavy_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_common01.mp3" +} + +"heavy_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_rare02.mp3" +} + +"heavy_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_rare01.mp3" +} + +"heavy_mvm_loot_rare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_rare03.mp3" +} + +"heavy_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_godlike01.mp3" +} + +"heavy_mvm_loot_godlike03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_godlike03.mp3" +} + +"heavy_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_mannhattan_gate_atk01.mp3" +} + +"heavy_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_mannhattan_gate_atk02.mp3" +} + +"heavy_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_mannhattan_gate_take01.mp3" +} + +"heavy_sf13_cart_forward01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_cart_forward01.mp3" +} + +"heavy_sf13_cart_forward02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_cart_forward02.mp3" +} + +"heavy_sf13_cart_forward04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_cart_forward04.mp3" +} + +"heavy_sf13_midnight04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_midnight04.mp3" +} + +"heavy_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_midnight02.mp3" +} + +"heavy_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_influx_big02.mp3" +} + +"heavy_sf13_influx_big04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_influx_big04.mp3" +} + +"heavy_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_magic_reac01.mp3" +} + +"heavy_sf13_magic_reac02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_magic_reac02.mp3" +} + +"heavy_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_magic_reac03.mp3" +} + +"heavy_item_unicorn_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_round_start03.mp3" +} + +"heavy_item_unicorn_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_round_start05.mp3" +} + +"heavy_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_round_start01.mp3" +} + +"heavy_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_round_start02.mp3" +} + +"heavy_item_unicorn_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_domination01.mp3" +} + +"heavy_item_unicorn_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_domination02.mp3" +} + +"heavy_item_unicorn_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_uber01.mp3" +} + +"heavy_item_unicorn_uber02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_uber02.mp3" +} + +"heavy_item_unicorn_uber03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_uber03.mp3" +} + +"heavy_item_birdhead_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_round_start02.mp3" +} + +"heavy_item_birdhead_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_round_start01.mp3" +} + +"heavy_item_birdhead_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_round_start04.mp3" +} + +"heavy_item_birdhead_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_round_start03.mp3" +} + +"heavy_item_birdhead_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_round_start05.mp3" +} + +"heavy_item_birdhead_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_uber01.mp3" +} + +"heavy_item_birdhead_uber02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_uber02.mp3" +} + +"heavy_item_birdhead_uber03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_uber03.mp3" +} + +"heavy_item_birdhead_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_domination02.mp3" +} + +"heavy_item_birdhead_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_birdhead_domination01.mp3" +} + +"heavy_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect02.mp3" +} + +"heavy_mvm_resurrect06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_resurrect06.mp3" +} + +"heavy_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_common02.mp3" +} + +"heavy_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_mvm_loot_godlike02.mp3" +} + +"heavy_sf13_cart_forward03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_cart_forward03.mp3" +} + +"heavy_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_influx_big01.mp3" +} + +"heavy_item_unicorn_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_item_unicorn_round_start04.mp3" +} + +"heavy_sf13_influx_big05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/heavy_sf13_influx_big05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Heavy BATCH 41 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Pyro BATCH 42 +//----------------------------------------------------------------------------- +"pyro_sf13_spell_generic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic01.mp3" +} + +"pyro_sf13_spell_generic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic02.mp3" +} + +"pyro_sf13_spell_generic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic03.mp3" +} + +"pyro_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic04.mp3" +} + +"pyro_sf13_spell_generic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic05.mp3" +} + +"pyro_sf13_spell_generic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic06.mp3" +} + +"pyro_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_influx_big01.mp3" +} + +"pyro_sf13_influx_small01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_influx_small01.mp3" +} + +"pyro_sf13_spell_generic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic07.mp3" +} + +"pyro_sf13_spell_generic08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic08.mp3" +} + +"pyro_sf13_spell_generic09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/pyro_sf13_spell_generic09.mp3" +} + +//----------------------------------------------------------------------------- +//End of Pyro BATCH 42 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Sniper BATCH 43 +//----------------------------------------------------------------------------- +"sniper_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_generic04.mp3" +} + +"sniper_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_super_jump01.mp3" +} + +"sniper_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_uber01.mp3" +} + +"sniper_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_super_speed01.mp3" +} + +"sniper_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_invisibility01.mp3" +} + +"sniper_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_devil_bargain01.mp3" +} + +"sniper_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_bombhead01.mp3" +} + +"sniper_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_lightning_bolt01.mp3" +} + +"sniper_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_teleport_self01.mp3" +} + +"sniper_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_earthquake01.mp3" +} + +"sniper_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_zombie_horde01.mp3" +} + +"sniper_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_spell_summon_monoculous01.mp3" +} + +"sniper_sf13_scared01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_scared01.mp3" +} + +"sniper_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_common01.mp3" +} + +"sniper_mvm_loot_common05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_common05.mp3" +} + +"sniper_mvm_loot_common03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_common03.mp3" +} + +"sniper_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_common02.mp3" +} + +"sniper_mvm_loot_common04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_common04.mp3" +} + +"sniper_mvm_loot_common06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_common06.mp3" +} + +"sniper_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare01.mp3" +} + +"sniper_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare02.mp3" +} + +"sniper_mvm_loot_rare03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare03.mp3" +} + +"sniper_mvm_loot_rare04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare04.mp3" +} + +"sniper_mvm_loot_rare05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare05.mp3" +} + +"sniper_mvm_loot_rare06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare06.mp3" +} + +"sniper_mvm_loot_rare07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare07.mp3" +} + +"sniper_mvm_loot_rare08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_rare08.mp3" +} + +"sniper_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_godlike01.mp3" +} + +"sniper_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_loot_godlike02.mp3" +} + +"sniper_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_mannhattan_gate_atk01.mp3" +} + +"sniper_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_mannhattan_gate_atk02.mp3" +} + +"sniper_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_mannhattan_gate_take01.mp3" +} + +"sniper_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_resurrect02.mp3" +} + +"sniper_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_resurrect01.mp3" +} + +"sniper_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_resurrect03.mp3" +} + +"sniper_mvm_resurrect04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_mvm_resurrect04.mp3" +} + +"sniper_sf13_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_round_start01.mp3" +} + +"sniper_sf13_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_round_start02.mp3" +} + +"sniper_sf13_midnight01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_midnight01.mp3" +} + +"sniper_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_midnight02.mp3" +} + +"sniper_sf13_midnight03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_midnight03.mp3" +} + +"sniper_sf13_midnight05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_midnight05.mp3" +} + +"sniper_sf13_influx_small01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_influx_small01.mp3" +} + +"sniper_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_influx_big01.mp3" +} + +"sniper_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_influx_big02.mp3" +} + +"sniper_sf13_influx_big03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_influx_big03.mp3" +} + +"sniper_sf13_influx_big05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_influx_big05.mp3" +} + +"sniper_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac01.mp3" +} + +"sniper_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac03.mp3" +} + +"sniper_sf13_magic_reac04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac04.mp3" +} + +"sniper_sf13_magic_reac05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac05.mp3" +} + +"sniper_sf13_magic_reac06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac06.mp3" +} + +"sniper_sf13_magic_reac07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac07.mp3" +} + +"sniper_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_round_start01.mp3" +} + +"sniper_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_round_start02.mp3" +} + +"sniper_item_unicorn_cart_forward01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_cart_forward01.mp3" +} + +"sniper_item_unicorn_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_uber01.mp3" +} + +"sniper_item_unicorn_scopekill01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_scopekill01.mp3" +} + +"sniper_item_unicorn_scopekill02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_scopekill02.mp3" +} + +"sniper_item_unicorn_scopekill03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_scopekill03.mp3" +} + +"sniper_item_unicorn_scopekill04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_scopekill04.mp3" +} + +"sniper_item_unicorn_scopekill05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_scopekill05.mp3" +} + +"sniper_item_unicorn_scopekill06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_scopekill06.mp3" +} + +"sniper_item_birdhead_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_round_start02.mp3" +} + +"sniper_item_birdhead_round_start07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_round_start07.mp3" +} + +"sniper_item_birdhead_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_round_start06.mp3" +} + +"sniper_item_birdhead_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_round_start04.mp3" +} + +"sniper_item_birdhead_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_round_start03.mp3" +} + +"sniper_item_birdhead_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_round_start05.mp3" +} + +"sniper_item_birdhead_cart_push01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_cart_push01.mp3" +} + +"sniper_item_birdhead_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_uber01.mp3" +} + +"sniper_item_birdhead_kill_scoped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_kill_scoped01.mp3" +} + +"sniper_item_birdhead_kill_scoped02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_kill_scoped02.mp3" +} + +"sniper_item_birdhead_kill_scoped03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_kill_scoped03.mp3" +} + +"sniper_item_birdhead_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_domination01.mp3" +} + +"sniper_item_birdhead_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_domination02.mp3" +} + +"sniper_item_birdhead_domination03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_domination03.mp3" +} + +"sniper_item_birdhead_jarate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_jarate01.mp3" +} + +"sniper_sf13_magic_reac02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_magic_reac02.mp3" +} + +"sniper_item_unicorn_cart_forward02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_unicorn_cart_forward02.mp3" +} + +"sniper_item_birdhead_cart_push02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_item_birdhead_cart_push02.mp3" +} + +"sniper_sf13_scared02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_scared02.mp3" +} + +"sniper_sf13_scared03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_sf13_scared03.mp3" +} + +//----------------------------------------------------------------------------- +//End of Sniper BATCH 43 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Medic BATCH 44 +//----------------------------------------------------------------------------- +"medic_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_generic04.mp3" +} + +"medic_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_super_jump01.mp3" +} + +"medic_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_uber01.mp3" +} + +"medic_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_super_speed01.mp3" +} + +"medic_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_invisibility01.mp3" +} + +"medic_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_devil_bargain01.mp3" +} + +"medic_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_bombhead01.mp3" +} + +"medic_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_lightning_bolt01.mp3" +} + +"medic_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_teleport_self01.mp3" +} + +"medic_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_earthquake01.mp3" +} + +"medic_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_zombie_horde01.mp3" +} + +"medic_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_spell_summon_monoculous01.mp3" +} + +"medic_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_resurrect03.mp3" +} + +"medic_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_resurrect01.mp3" +} + +"medic_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_resurrect02.mp3" +} + +"medic_mvm_heal_shield04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_heal_shield04.mp3" +} + +"medic_mvm_heal_shield01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_heal_shield01.mp3" +} + +"medic_mvm_heal_shield03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_heal_shield03.mp3" +} + +"medic_mvm_heal_shield02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_heal_shield02.mp3" +} + +"medic_mvm_heal_shield05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_heal_shield05.mp3" +} + +"medic_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_common02.mp3" +} + +"medic_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_common01.mp3" +} + +"medic_mvm_loot_common03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_common03.mp3" +} + +"medic_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_rare02.mp3" +} + +"medic_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_rare01.mp3" +} + +"medic_mvm_loot_godlike02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_godlike02.mp3" +} + +"medic_mvm_loot_godlike03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_godlike03.mp3" +} + +"medic_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_mannhattan_gate_atk01.mp3" +} + +"medic_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_mannhattan_gate_atk02.mp3" +} + +"medic_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_mannhattan_gate_take01.mp3" +} + +"medic_cartgoingforwardoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense01.mp3" +} + +"medic_cartgoingforwardoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense02.mp3" +} + +"medic_cartgoingforwardoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense03.mp3" +} + +"medic_cartgoingforwardoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense04.mp3" +} + +"medic_cartgoingforwardoffense05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense05.mp3" +} + +"medic_cartgoingforwardoffense06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense06.mp3" +} + +"medic_cartgoingforwardoffense07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense07.mp3" +} + +"medic_cartgoingforwardoffense08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwardoffense08.mp3" +} + +"medic_cartgoingbackoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingbackoffense01.mp3" +} + +"medic_cartgoingbackoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingbackoffense02.mp3" +} + +"medic_cartgoingforwarddefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwarddefense02.mp3" +} + +"medic_cartgoingforwarddefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartgoingforwarddefense01.mp3" +} + +"medic_cartstaycloseoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstaycloseoffense01.mp3" +} + +"medic_cartstaycloseoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstaycloseoffense02.mp3" +} + +"medic_cartstaycloseoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstaycloseoffense03.mp3" +} + +"medic_cartstoppedoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstoppedoffense01.mp3" +} + +"medic_cartstoppedoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstoppedoffense04.mp3" +} + +"medic_cartstoppedoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstoppedoffense03.mp3" +} + +"medic_cartstoppedoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstoppedoffense02.mp3" +} + +"medic_cartstopitdefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_cartstopitdefense01.mp3" +} + +"medic_sf13_cart_forward02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_cart_forward02.mp3" +} + +"medic_sf13_cart_forward03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_cart_forward03.mp3" +} + +"medic_sf13_cart_forward01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_cart_forward01.mp3" +} + +"medic_sf13_midnight01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_midnight01.mp3" +} + +"medic_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_midnight02.mp3" +} + +"medic_sf13_midnight03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_midnight03.mp3" +} + +"medic_sf13_midnight06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_midnight06.mp3" +} + +"medic_sf13_influx_small02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_influx_small02.mp3" +} + +"medic_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_influx_big02.mp3" +} + +"medic_sf13_influx_big03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_influx_big03.mp3" +} + +"medic_sf13_magic_reac01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac01.mp3" +} + +"medic_sf13_magic_reac02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac02.mp3" +} + +"medic_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac03.mp3" +} + +"medic_sf13_magic_reac04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac04.mp3" +} + +"medic_item_zombiebird_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_round_start01.mp3" +} + +"medic_item_zombiebird_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_round_start03.mp3" +} + +"medic_item_zombiebird_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_round_start04.mp3" +} + +"medic_item_zombiebird_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_round_start05.mp3" +} + +"medic_item_zombiebird_sf13_cart_forward01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_sf13_cart_forward01.mp3" +} + +"medic_item_zombiebird_sf13_cart_forward02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_sf13_cart_forward02.mp3" +} + +"medic_item_zombiebird_got_briefcase01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_got_briefcase01.mp3" +} + +"medic_item_zombiebird_stand_point01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_stand_point01.mp3" +} + +"medic_item_zombiebird_mvm_go_upgrade01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_mvm_go_upgrade01.mp3" +} + +"medic_item_zombiebird_mvm_win01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_mvm_win01.mp3" +} + +"medic_item_zombiebird_dominated01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_dominated01.mp3" +} + +"medic_item_zombiebird_on_fire01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_on_fire01.mp3" +} + +"medic_item_zombiebird_jarate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_jarate01.mp3" +} + +"medic_item_secop_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start01.mp3" +} + +"medic_item_secop_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start03.mp3" +} + +"medic_item_secop_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start02.mp3" +} + +"medic_item_secop_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start04.mp3" +} + +"medic_item_secop_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start05.mp3" +} + +"medic_item_secop_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start06.mp3" +} + +"medic_item_secop_round_start07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start07.mp3" +} + +"medic_item_secop_round_start08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_round_start08.mp3" +} + +"medic_item_secop_idle02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_idle02.mp3" +} + +"medic_item_secop_idle01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_idle01.mp3" +} + +"medic_item_secop_idle03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_idle03.mp3" +} + +"medic_item_secop_kill_assist01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_kill_assist01.mp3" +} + +"medic_item_secop_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_uber01.mp3" +} + +"medic_item_secop_cart_push03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_cart_push03.mp3" +} + +"medic_item_secop_cart_push04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_cart_push04.mp3" +} + +"medic_item_secop_cart_stopped01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_cart_stopped01.mp3" +} + +"medic_item_secop_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_secop_domination01.mp3" +} + +"medic_item_birdhead_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start01.mp3" +} + +"medic_item_birdhead_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start02.mp3" +} + +"medic_item_birdhead_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start03.mp3" +} + +"medic_item_birdhead_round_start04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start04.mp3" +} + +"medic_item_birdhead_round_start05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start05.mp3" +} + +"medic_item_birdhead_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start06.mp3" +} + +"medic_item_birdhead_round_start07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start07.mp3" +} + +"medic_item_birdhead_round_start08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_round_start08.mp3" +} + +"medic_item_birdhead_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_uber01.mp3" +} + +"medic_item_birdhead_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_domination01.mp3" +} + +"medic_item_birdhead_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_birdhead_domination02.mp3" +} + +"medic_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_loot_godlike01.mp3" +} + +"medic_mvm_mannhattan_gate_take02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_mvm_mannhattan_gate_take02.mp3" +} + +"medic_sf13_midnight07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_midnight07.mp3" +} + +"medic_item_zombiebird_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_round_start02.mp3" +} + +"medic_item_zombiebird_round_start06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_item_zombiebird_round_start06.mp3" +} + +"medic_sf13_magic_reac05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac05.mp3" +} + +"medic_sf13_magic_reac06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac06.mp3" +} + +"medic_sf13_magic_reac07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/medic_sf13_magic_reac07.mp3" +} + +//----------------------------------------------------------------------------- +//End of Medic BATCH 44 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Soldier BATCH 51 +//----------------------------------------------------------------------------- +"soldier_item_wizard_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_wizard_domination01.mp3" +} + +"soldier_item_wizard_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/soldier_item_wizard_domination02.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 51 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//START OF MANN BROTHERS HALLOWEEN 2013 +//----------------------------------------------------------------------------- +"Announcer.Helltower_Red_Winning01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning01.mp3" +} +"Announcer.Helltower_Red_Winning02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning02.mp3" +} +"Announcer.Helltower_Red_Winning03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning03.mp3" +} +"Announcer.Helltower_Red_Winning04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning04.mp3" +} +"Announcer.Helltower_Red_Winning05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning07.mp3" +} +"Announcer.Helltower_Red_Winning06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning08.mp3" +} +"Announcer.Helltower_Red_Winning07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning09.mp3" +} +"Announcer.Helltower_Red_Winning08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning10.mp3" +} +"Announcer.Helltower_Red_Winning09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning14.mp3" +} +"Announcer.Helltower_Red_Winning10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning15.mp3" +} +"Announcer.Helltower_Red_Winning11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning16.mp3" +} +"Announcer.Helltower_Red_Winning12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning18.mp3" +} +"Announcer.Helltower_Blue_Winning01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won02.mp3" +} +"Announcer.Helltower_Blue_Winning02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won03.mp3" +} +"Announcer.Helltower_Blue_Winning03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won04.mp3" +} +"Announcer.Helltower_Blue_Winning04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won05.mp3" +} +"Announcer.Helltower_Blue_Winning05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won11.mp3" +} +"Announcer.Helltower_Blue_Winning06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won12.mp3" +} +"Announcer.Helltower_Blue_Winning07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning01.mp3" +} +"Announcer.Helltower_Blue_Winning08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning02.mp3" +} +"Announcer.Helltower_Blue_Winning09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning03.mp3" +} +"Announcer.Helltower_Blue_Winning10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning04.mp3" +} +"Announcer.Helltower_Blue_Winning11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning05.mp3" +} +"Announcer.Helltower_Blue_Winning12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning07.mp3" +} +"Announcer.Helltower_Blue_Winning13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning08.mp3" +} +"Announcer.Helltower_Red_Winning_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning05.mp3" +} +"Announcer.Helltower_Red_Winning_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning07.mp3" +} +"Announcer.Helltower_Red_Winning_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning08.mp3" +} +"Announcer.Helltower_Red_Winning_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning09.mp3" +} +"Announcer.Helltower_Red_Winning_Rare05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning11.mp3" +} +"Announcer.Helltower_Red_Winning_Rare06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning12.mp3" +} +"Announcer.Helltower_Red_Winning_Rare07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning13.mp3" +} +"Announcer.Helltower_Red_Winning_Rare08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning17.mp3" +} +"Announcer.Helltower_Red_Winning_Rare09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning19.mp3" +} +"Announcer.Helltower_Red_Winning_Rare10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_winning20.mp3" +} +"Announcer.Helltower_Red_Winning_Rare11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue15.mp3" +} +"Announcer.Helltower_Red_Winning_Rare12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue27.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won06.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won07.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won08.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won09.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won10.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_winning09.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue16.mp3" +} +"Announcer.Helltower_Blue_Winning_Rare08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue28.mp3" +} +"Announcer.Helltower_Red_Losing01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing01.mp3" +} +"Announcer.Helltower_Red_Losing02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing02.mp3" +} +"Announcer.Helltower_Red_Losing03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing03.mp3" +} +"Announcer.Helltower_Red_Losing04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing04.mp3" +} +"Announcer.Helltower_Red_Losing05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing05.mp3" +} +"Announcer.Helltower_Red_Losing06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing06.mp3" +} +"Announcer.Helltower_Red_Losing07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing07.mp3" +} +"Announcer.Helltower_Red_Losing08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing08.mp3" +} +"Announcer.Helltower_Red_Losing09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing09.mp3" +} +"Announcer.Helltower_Red_Losing10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing10.mp3" +} +"Announcer.Helltower_Red_Losing11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing11.mp3" +} +"Announcer.Helltower_Red_Losing12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing12.mp3" +} +"Announcer.Helltower_Red_Losing13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing14.mp3" +} +"Announcer.Helltower_Red_Losing14" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing16.mp3" +} +"Announcer.Helltower_Red_Losing15" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing17.mp3" +} +"Announcer.Helltower_Blue_Losing01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost02.mp3" +} +"Announcer.Helltower_Blue_Losing02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost06.mp3" +} +"Announcer.Helltower_Blue_Losing03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing03.mp3" +} +"Announcer.Helltower_Blue_Losing04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing04.mp3" +} +"Announcer.Helltower_Blue_Losing05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing05.mp3" +} +"Announcer.Helltower_Blue_Losing06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing06.mp3" +} +"Announcer.Helltower_Blue_Losing07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing07.mp3" +} +"Announcer.Helltower_Blue_Losing08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing08.mp3" +} +"Announcer.Helltower_Blue_Losing09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing09.mp3" +} +"Announcer.Helltower_Blue_Losing10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing10.mp3" +} +"Announcer.Helltower_Blue_Losing11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing11.mp3" +} +"Announcer.Helltower_Blue_Losing12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing12.mp3" +} +"Announcer.Helltower_Blue_Losing13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing15.mp3" +} +"Announcer.Helltower_Blue_Losing14" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing16.mp3" +} +"Announcer.Helltower_Blue_Losing15" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing17.mp3" +} +"Announcer.Helltower_Blue_Losing16" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push07.mp3" +} +"Announcer.Helltower_Red_Losing_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing15.mp3" +} +"Announcer.Helltower_Red_Losing_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing18.mp3" +} +"Announcer.Helltower_Red_Losing_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing17.mp3" +} +"Announcer.Helltower_Red_Losing_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing20.mp3" +} +"Announcer.Helltower_Red_Losing_Rare05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing19.mp3" +} +"Announcer.Helltower_Blue_Losing_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost03.mp3" +} +"Announcer.Helltower_Blue_Losing_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost04.mp3" +} +"Announcer.Helltower_Blue_Losing_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_intro_long01.mp3" +} +"Announcer.Helltower_Blue_Losing_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing14.mp3" +} +"Announcer.Helltower_Red_Win01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win01.mp3" +} +"Announcer.Helltower_Red_Win02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win02.mp3" +} +"Announcer.Helltower_Red_Win03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win03.mp3" +} +"Announcer.Helltower_Red_Win04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win04.mp3" +} +"Announcer.Helltower_Red_Win05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win05.mp3" +} +"Announcer.Helltower_Red_Win06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win06.mp3" +} +"Announcer.Helltower_Red_Win07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win08.mp3" +} +"Announcer.Helltower_Blue_Win01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win01.mp3" +} +"Announcer.Helltower_Blue_Win02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win02.mp3" +} +"Announcer.Helltower_Blue_Win03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win03.mp3" +} +"Announcer.Helltower_Blue_Win04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win04.mp3" +} +"Announcer.Helltower_Blue_Win05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win05.mp3" +} +"Announcer.Helltower_Blue_Win06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win07.mp3" +} +"Announcer.Helltower_Blue_Win07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win09.mp3" +} +"Announcer.Helltower_Red_Win_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_win09.mp3" +} +"Announcer.Helltower_Blue_Win_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win06.mp3" +} +"Announcer.Helltower_Blue_Win_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win10.mp3" +} +"Announcer.Helltower_Blue_Win_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win11.mp3" +} +"Announcer.Helltower_Red_Lose01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose01.mp3" +} +"Announcer.Helltower_Red_Lose02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose02.mp3" +} +"Announcer.Helltower_Red_Lose03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose03.mp3" +} +"Announcer.Helltower_Red_Lose04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose04.mp3" +} +"Announcer.Helltower_Red_Lose05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose06.mp3" +} +"Announcer.Helltower_Red_Lose06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose07.mp3" +} +"Announcer.Helltower_Red_Lose07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose08.mp3" +} +"Announcer.Helltower_Blue_Lose01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose01.mp3" +} +"Announcer.Helltower_Blue_Lose02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose02.mp3" +} +"Announcer.Helltower_Blue_Lose03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose03.mp3" +} +"Announcer.Helltower_Blue_Lose04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose05.mp3" +} +"Announcer.Helltower_Blue_Lose05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose06.mp3" +} +"Announcer.Helltower_Blue_Lose06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose07.mp3" +} +"Announcer.Helltower_Blue_Lose07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose08.mp3" +} +"Announcer.Helltower_Red_Lose_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose05.mp3" +} +"Announcer.Helltower_Blue_Lose_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose05.mp3" +} +"Announcer.Helltower_Red_RoundStart01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short01.mp3" +} +"Announcer.Helltower_Red_RoundStart02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short02.mp3" +} +"Announcer.Helltower_Red_RoundStart03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short03.mp3" +} +"Announcer.Helltower_Red_RoundStart04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short04.mp3" +} +"Announcer.Helltower_Blue_RoundStart01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_intro_short01.mp3" +} +"Announcer.Helltower_Blue_RoundStart02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_intro_short02.mp3" +} +"Announcer.Helltower_Red_RoundStart_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short01.mp3" +} +"Announcer.Helltower_Red_RoundStart_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short02.mp3" +} +"Announcer.Helltower_Red_RoundStart_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short03.mp3" +} +"Announcer.Helltower_Red_RoundStart_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_intro_short04.mp3" +} +"Announcer.Helltower_Blue_RoundStart_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_intro_short01.mp3" +} +"Announcer.Helltower_Blue_RoundStart_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_intro_short02.mp3" +} +"Announcer.Helltower_Red_Skeleton_King01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_enemies05.mp3" +} +"Announcer.Helltower_Red_Skeleton_King02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_enemies06.mp3" +} +"Announcer.Helltower_Red_Skeleton_King03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_enemies07.mp3" +} +"Announcer.Helltower_Red_Skeleton_King04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_enemies08.mp3" +} +"Announcer.Helltower_Blue_Skeleton_King01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_enemies10.mp3" +} +"Announcer.Helltower_Blue_Skeleton_King02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_enemies12.mp3" +} +"Announcer.Helltower_Blue_Skeleton_King03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_enemies13.mp3" +} +"Announcer.Helltower_Blue_Skeleton_King04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_enemies15.mp3" +} +"Announcer.Helltower_Red_Almost_Win01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_almost_won01.mp3" +} +"Announcer.Helltower_Blue_Almost_Win01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_won01.mp3" +} +"Announcer.Helltower_Blue_Almost_Lose01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost01.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue01.mp3" +} +"Announcer.Helltower_Red_Misc_Rare01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue02.mp3" +} +"Announcer.Helltower_Blue_Misc01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue06.mp3" +} +"Announcer.Helltower_Red_Misc01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue07.mp3" +} +"Announcer.Helltower_Blue_Misc02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue08.mp3" +} +"Announcer.Helltower_Red_Misc02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue09.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue25.mp3" +} +"Announcer.Helltower_Red_Misc_Rare02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue26.mp3" +} +"Announcer.Helltower_Red_Misc_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue03.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue03.mp3" +} +"Announcer.Helltower_Red_Misc_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue04.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue04.mp3" +} +"Announcer.Helltower_Red_Misc_Rare05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue05.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue05.mp3" +} +"Announcer.Helltower_Red_Misc_Rare06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue10.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue10.mp3" +} +"Announcer.Helltower_Red_Misc_Rare07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue11.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue11.mp3" +} +"Announcer.Helltower_Red_Misc_Rare08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue12.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue12.mp3" +} +"Announcer.Helltower_Red_Misc_Rare09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue17.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue17.mp3" +} +"Announcer.Helltower_Red_Misc_Rare10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue18.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue18.mp3" +} +"Announcer.Helltower_Red_Misc_Rare11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue19.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue19.mp3" +} +"Announcer.Helltower_Red_Misc_Rare12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue20.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue20.mp3" +} +"Announcer.Helltower_Red_Misc_Rare13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue21.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue21.mp3" +} +"Announcer.Helltower_Red_Misc_Rare14" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue22.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare14" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue22.mp3" +} +"Announcer.Helltower_Red_Misc_Rare15" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue23.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare15" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue23.mp3" +} +"Announcer.Helltower_Red_Misc_Rare16" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue24.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare16" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_mannbros_argue24.mp3" +} +"Announcer.Helltower_Red_Misc03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing13.mp3" +} +"Announcer.Helltower_Red_Misc04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing21.mp3" +} +"Announcer.Helltower_Red_Misc05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push07.mp3" +} +"Announcer.Helltower_Red_Misc06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push08.mp3" +} +"Announcer.Helltower_Red_Misc07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push04.mp3" +} +"Announcer.Helltower_Red_Misc08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_spells05.mp3" +} +"Announcer.Helltower_Red_Misc09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing14.mp3" +} +"Announcer.Helltower_Red_Misc10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push03.mp3" +} +"Announcer.Helltower_Red_Misc11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_spells03.mp3" +} +"Announcer.Helltower_Red_Misc12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_spells04.mp3" +} +"Announcer.Helltower_Red_Misc13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing13.mp3" +} +"Announcer.Helltower_Red_Misc14" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing21.mp3" +} +"Announcer.Helltower_Red_Misc15" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push07.mp3" +} +"Announcer.Helltower_Red_Misc16" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push08.mp3" +} +"Announcer.Helltower_Blue_Misc03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost05.mp3" +} +"Announcer.Helltower_Blue_Misc04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_enemies03.mp3" +} +"Announcer.Helltower_Blue_Misc05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_intro_short03.mp3" +} +"Announcer.Helltower_Blue_Misc06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing13.mp3" +} +"Announcer.Helltower_Blue_Misc07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push01.mp3" +} +"Announcer.Helltower_Blue_Misc08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push02.mp3" +} +"Announcer.Helltower_Blue_Misc09" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push03.mp3" +} +"Announcer.Helltower_Blue_Misc10" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push04.mp3" +} +"Announcer.Helltower_Blue_Misc11" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push05.mp3" +} +"Announcer.Helltower_Blue_Misc12" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push06.mp3" +} +"Announcer.Helltower_Blue_Misc13" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push10.mp3" +} +"Announcer.Helltower_Blue_Misc14" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push11.mp3" +} +"Announcer.Helltower_Blue_Misc15" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push12.mp3" +} +"Announcer.Helltower_Blue_Misc16" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_spells07.mp3" +} +"Announcer.Helltower_Red_Misc_Rare17" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing18.mp3" +} +"Announcer.Helltower_Red_Misc_Rare18" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing13.mp3" +} +"Announcer.Helltower_Red_Misc_Rare19" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing21.mp3" +} +"Announcer.Helltower_Red_Misc_Rare20" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push07.mp3" +} +"Announcer.Helltower_Red_Misc_Rare21" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing_push08.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare17" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push08.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare18" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_losing_push09.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare19" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_misc01.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare20" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_misc03.mp3" +} +"Announcer.Helltower_Blue_Misc_Rare21" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_mann_brothers/sf13_blutarch_misc06.mp3" +} +//----------------------------------------------------------------------------- +//END OF MANN BROTHERS HALLOWEEN 2013 +//----------------------------------------------------------------------------- + + + +//----------------------------------------------------------------------------- +//Demoman BATCH 36 +//----------------------------------------------------------------------------- +"demoman_sf13_spell_generic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_generic04.mp3" +} + +"demoman_sf13_spell_super_jump01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_super_jump01.mp3" +} + +"demoman_sf13_spell_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_uber01.mp3" +} + +"demoman_sf13_spell_super_speed01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_super_speed01.mp3" +} + +"demoman_sf13_spell_invisibility01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_invisibility01.mp3" +} + +"demoman_sf13_spell_devil_bargain01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_devil_bargain01.mp3" +} + +"demoman_sf13_spell_bombhead01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_bombhead01.mp3" +} + +"demoman_sf13_spell_lightning_bolt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_lightning_bolt01.mp3" +} + +"demoman_sf13_spell_teleport_self01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_teleport_self01.mp3" +} + +"demoman_sf13_spell_earthquake01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_earthquake01.mp3" +} + +"demoman_sf13_spell_zombie_horde01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_zombie_horde01.mp3" +} + +"demoman_sf13_spell_summon_monoculous01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_summon_monoculous01.mp3" +} + +"demoman_mvm_resurrect01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect01.mp3" +} + +"demoman_mvm_resurrect02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect02.mp3" +} + +"demoman_mvm_resurrect03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect03.mp3" +} + +"demoman_mvm_resurrect08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect08.mp3" +} + +"demoman_mvm_resurrect09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect09.mp3" +} + +"demoman_mvm_resurrect10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect10.mp3" +} + +"demoman_mvm_resurrect04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect04.mp3" +} + +"demoman_mvm_resurrect11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect11.mp3" +} + +"demoman_mvm_resurrect05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect05.mp3" +} + +"demoman_mvm_resurrect06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect06.mp3" +} + +"demoman_mvm_resurrect07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_resurrect07.mp3" +} + +"demoman_cartgoingforwardoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwardoffense01.mp3" +} + +"demoman_cartgoingforwardoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwardoffense02.mp3" +} + +"demoman_cartgoingforwardoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwardoffense03.mp3" +} + +"demoman_cartgoingforwardoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwardoffense04.mp3" +} + +"demoman_cartgoingforwardoffense05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwardoffense05.mp3" +} + +"demoman_cartgoingbackoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackoffense03.mp3" +} + +"demoman_cartgoingbackoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackoffense01.mp3" +} + +"demoman_cartgoingbackoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackoffense02.mp3" +} + +"demoman_cartgoingforwarddefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwarddefense01.mp3" +} + +"demoman_cartgoingforwarddefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingforwarddefense02.mp3" +} + +"demoman_cartgoingbackdefense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackdefense01.mp3" +} + +"demoman_cartgoingbackdefense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackdefense02.mp3" +} + +"demoman_cartgoingbackdefense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackdefense03.mp3" +} + +"demoman_cartstaycloseoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartstaycloseoffense01.mp3" +} + +"demoman_cartstaycloseoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartstaycloseoffense02.mp3" +} + +"demoman_cartstaycloseoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartstaycloseoffense03.mp3" +} + +"demoman_cartstoppedoffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartstoppedoffense03.mp3" +} + +"demoman_cartstoppedoffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartstoppedoffense01.mp3" +} + +"demoman_cartstoppedoffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartstoppedoffense02.mp3" +} + +"demoman_sf13_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_round_start01.mp3" +} + +"demoman_sf13_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_round_start02.mp3" +} + +"demoman_sf13_bosses01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_bosses01.mp3" +} + +"demoman_sf13_midnight05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_midnight05.mp3" +} + +"demoman_sf13_midnight02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_midnight02.mp3" +} + +"demoman_sf13_midnight04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_midnight04.mp3" +} + +"demoman_sf13_influx_small02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_small02.mp3" +} + +"demoman_sf13_influx_small03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_small03.mp3" +} + +"demoman_sf13_influx_small04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_small04.mp3" +} + +"demoman_sf13_influx_big01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_big01.mp3" +} + +"demoman_sf13_influx_big02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_big02.mp3" +} + +"demoman_sf13_influx_big03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_big03.mp3" +} + +"demoman_sf13_influx_big04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_big04.mp3" +} + +"demoman_item_unicorn_round_start01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_round_start01.mp3" +} + +"demoman_item_unicorn_round_start02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_round_start02.mp3" +} + +"demoman_item_unicorn_round_start03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_round_start03.mp3" +} + +"demoman_item_unicorn_on_fire01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_on_fire01.mp3" +} + +"demoman_item_unicorn_on_fire02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_on_fire02.mp3" +} + +"demoman_item_unicorn_uber01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_uber01.mp3" +} + +"demoman_item_unicorn_uber02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_uber02.mp3" +} + +"demoman_item_unicorn_uber03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_uber03.mp3" +} + +"demoman_item_unicorn_domination01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_domination01.mp3" +} + +"demoman_item_unicorn_domination02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_domination02.mp3" +} + +"demoman_item_unicorn_domination03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_domination03.mp3" +} + +"demoman_item_unicorn_domination04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_domination04.mp3" +} + +"demoman_item_unicorn_domination05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_item_unicorn_domination05.mp3" +} + +"demoman_mvm_loot_common01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_common01.mp3" +} + +"demoman_mvm_loot_common03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_common03.mp3" +} + +"demoman_mvm_loot_common04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_common04.mp3" +} + +"demoman_mvm_loot_common02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_common02.mp3" +} + +"demoman_mvm_loot_rare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_rare01.mp3" +} + +"demoman_mvm_loot_rare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_rare02.mp3" +} + +"demoman_mvm_loot_godlike01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_loot_godlike01.mp3" +} + +"demoman_mvm_mannhattan_gate_atk01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_mannhattan_gate_atk01.mp3" +} + +"demoman_mvm_mannhattan_gate_atk03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_mannhattan_gate_atk03.mp3" +} + +"demoman_mvm_mannhattan_gate_atk02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_mannhattan_gate_atk02.mp3" +} + +"demoman_mvm_mannhattan_gate_take02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_mannhattan_gate_take02.mp3" +} + +"demoman_mvm_mannhattan_gate_take01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_mvm_mannhattan_gate_take01.mp3" +} + +"demoman_sf13_spell_summon_monoculous02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_spell_summon_monoculous02.mp3" +} + +"demoman_sf13_midnight06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_midnight06.mp3" +} + +"demoman_sf13_influx_big05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_influx_big05.mp3" +} + +"demoman_cartgoingbackoffense04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_cartgoingbackoffense04.mp3" +} + +"demoman_sf13_magic_reac03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_magic_reac03.mp3" +} + +"demoman_sf13_magic_reac05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_magic_reac05.mp3" +} + +"demoman_sf13_bosses02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_bosses02.mp3" +} + +"demoman_sf13_bosses03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_bosses03.mp3" +} + +"demoman_sf13_bosses04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_bosses04.mp3" +} + +"demoman_sf13_bosses05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_bosses05.mp3" +} + +"demoman_sf13_bosses06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/demoman_sf13_bosses06.mp3" +} + +//----------------------------------------------------------------------------- +//End of Demoman BATCH 36 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Bombinomicon & Mann Brothers Manually added for Halloween 2013 +//----------------------------------------------------------------------------- +"bcon.hell_intro" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/halloween_bombinomicon/sf13_bcon_intro03.mp3" + "wave" "vo/halloween_bombinomicon/sf13_bcon_intro04.mp3" + } +} + +"bcon.hell_outro01" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_end04.mp3" +} + +"bcon.hell_outro02" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_end03.mp3" +} + +"bcon.hell_outro03" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_misc07.mp3" +} + +"bcon.hell_outro04" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_misc06.mp3" +} + +"bcon.hell_outro05" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_end07.mp3" +} + +"bcon.hell_outro06" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_give_gift01.mp3" +} + +"bcon.hell_outro07" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_give_gift02.mp3" +} + +"bcon.hell_outro08" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/halloween_bombinomicon/sf13_bcon_give_gift03.mp3" +} + + +"Announcer.Helltower_Hell_Blue_Lose" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_mann_brothers/sf13_blutarch_lose01_music.mp3" + } +} + +"Announcer.Helltower_Hell_Blue_Win" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_mann_brothers/sf13_blutarch_win02_music.mp3" + } +} + +"Announcer.Helltower_Hell_Red_Win" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_mann_brothers/sf13_redmond_win02_music.mp3" + } +} + + +"Announcer.Helltower_Hell_Red_Lose" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_mann_brothers/sf13_redmond_lose08_music.mp3" + } +} + +"Announcer.Helltower_Hell_Red_Stalemate" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_mann_brothers/sf13_redmond_losing19_music.mp3" + } +} + +"Announcer.Helltower_Hell_Blue_Stalemate" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_mann_brothers/sf13_blutarch_almost_lost06_music.mp3" + } +} + + +//----------------------------------------------------------------------------- +//End of Bombinomicon & Mann Brothers Manually added for Halloween 2013 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//spy batch 52 +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +//end of spy batch 52 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Begin of Merasmus added for Halloween 2014 +//----------------------------------------------------------------------------- +// +"Announcer.SD_Event_OurTeamHasFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_17.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_18.mp3" + } +} +// +"Announcer.SD_Event_OurTeamDroppedFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_19.mp3" + + } +} +// +"Announcer.SD_Event_TheirTeamHasFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_15.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_20.mp3" + } +} +// +"Announcer.SD_Event_TheirTeamDroppedFlag" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_possession_16.mp3" + + } +} +// +"Announcer.SD_Event_MurderedToStalemate" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_stalemate_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_stalemate_01.mp3" + } +} +// +"Announcer.SD_Event_CappedRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_15.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_19.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_20.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_21.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_22.mp3" + } +} +// +"Announcer.SD_Event_CappedBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_17.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_strongman_end_14.mp3" + } +} +// +"Announcer.SD_Event_FlagReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_drop_site_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_drop_site_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_drop_site_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_drop_site_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_drop_site_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_drop_site_06.mp3" + } +} +// +"Announcer.SD_Event_FlagNags" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_misc_nags_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_misc_nags_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_misc_nags_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_misc_nags_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_misc_nags_05.mp3" + } +} +// +"Announcer.SD_Event_TheirFlagOnElevator" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_18.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_20.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_18.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_20.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_18.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_20.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_21.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_22.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_23.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_24.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_41.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_42.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_41.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_42.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_41.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_42.mp3" + } +} +// +"Announcer.SD_Event_OurFlagOnElevator" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_25.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_26.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_27.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_28.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_29.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_32.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_35.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_36.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_25.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_26.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_27.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_28.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_29.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_32.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_35.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_36.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_25.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_26.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_27.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_28.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_29.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_32.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_35.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_36.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_31.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_40.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_44.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_45.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_44.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_45.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_44.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_warnings_45.mp3" + } +} +// +"Announcer.SD_Event_FlagAvailableIn3" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_tickets_available_10.mp3" + } +} +// +"Merasmus.RoundBegins1Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf14_merasmus_begins_01sec.mp3" +} +// +"Merasmus.RoundBegins2Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf14_merasmus_begins_02sec.mp3" +} +// +"Merasmus.RoundBegins3Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf14_merasmus_begins_03sec.mp3" +} +// +"Merasmus.RoundBegins4Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf14_merasmus_begins_04sec.mp3" +} +// +"Merasmus.RoundBegins5Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/halloween_merasmus/sf14_merasmus_begins_05sec.mp3" +} +// +"Announcer.SD_Event_BigHeadCurse" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_rare_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_rare_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_rare_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_rare_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_bighead_rare_07.mp3" + } +} +// +"Announcer.SD_Event_NoGunsCurse" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_rare_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_rare_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_rare_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_noguns_rare_04.mp3" + } +} +// +"Announcer.SD_Event_SwimmingCurse" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_rare_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_rare_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_swimming_rare_04.mp3" + } +} +// +"Announcer.SD_Event_NecroMasherCrushing" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_13.mp3" + } +} +// +"Announcer.SD_Event_NecroMashMiss" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_necromasher_miss_14.mp3" + } +} +// +"Announcer.SD_Event_CurseIncoming" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_incoming_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_incoming_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_incoming_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_incoming_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_effect_incoming_05.mp3" + } +} +// PLATFORM MINIGAME +// +"sf14.Merasmus.FP.Intro" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_start_12.mp3" + } +} +"sf14.Merasmus.FP.Reveal" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_fp_reveal09.mp3" + } +} +"sf14.Merasmus.FP.HorseMan" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_07.mp3" + } +} +"sf14.Merasmus.FP.WinRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_04.mp3" + } +} +"sf14.Merasmus.FP.WinBlue" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_04.mp3" + } +} +// SOCCER MINIGAME +// +"sf14.Merasmus.Soccer.Intro" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_start_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_11.mp3" + } +} +"sf14.Merasmus.Soccer.GoalRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_throwup_01.mp3" + } +} +"sf14.Merasmus.Soccer.GoalBlue" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_goal_throwup_02.mp3" + } +} +"sf14.Merasmus.Soccer.WinAllDead" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_otherteamdead_04.mp3" + } +} +"sf14.Merasmus.Soccer.WinRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_04.mp3" + } +} +"sf14.Merasmus.Soccer.WinBlue" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_04.mp3" + } +} +"sf14.Merasmus.Soccer.TakeTooLong" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_FP_hhh_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_soccer_hhh_12.mp3" + } +} +// MINIGAME DUCKHUNT +// +"sf14.Merasmus.DuckHunt.Intro" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_15.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_16.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_17.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_18.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_19.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_start_20.mp3" + } +} +"sf14.Merasmus.DuckHunt.BonusDucks" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_bonusducks_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_bonusducks_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_bonusducks_03.mp3" + } +} +"sf14.Merasmus.DuckHunt.DucksHaveMoved" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_duckmove_09.mp3" + } +} +"sf14.Merasmus.DuckHunt.WinRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_redwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_redwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_redwin_04.mp3" + } +} +"sf14.Merasmus.DuckHunt.WinBlue" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_duckhunt_bluwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_bluwin_04.mp3" + } +} +"sf14.Merasmus.MinigameLose" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_lose_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_lose_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_lose_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_lose_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_all_lose_05.mp3" + } +} +"sf14.Merasmus.MinigameOvertime" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_overtime_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_overtime_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_overtime_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_overtime_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_minigame_overtime_05.mp3" + } +} +// +// +"sf14.Merasmus.Start.FirstRound" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_10.mp3" + } +} +"sf14.Merasmus.Start.FirstRoundRare" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_rare_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_rare_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_rare_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_rare_04.mp3" + } +} +"sf14.Merasmus.Start.SecondRound" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_15.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_16.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_18.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_20.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_21.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_22.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_23.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_24.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_25.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_26.mp3" + } +} +"sf14.Merasmus.Start.ThirdRoundAndBeyond" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_start_short_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_04.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_05.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_06.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_07.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_08.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_09.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_10.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_11.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_12.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_13.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_14.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_15.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_16.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_18.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_20.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_21.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_22.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_23.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_24.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_25.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_return_26.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_second_return_01.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_second_return_02.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_second_return_03.mp3" + "wave" "vo/halloween_merasmus/sf14_merasmus_round_second_return_04.mp3" + } +} +//----------------------------------------------------------------------------- +//End of Merasmus added for Halloween 2014 +//----------------------------------------------------------------------------- + +"Announcer.Powerup.Volume.Starting" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/killstreak/announcer_ks_19.mp3" + "wave" "vo/killstreak/announcer_ks_26.mp3" + } +} + +//----------------------------------------------------------------------------- +//Competitive Mode Announcer +//----------------------------------------------------------------------------- +"Announcer.CompGame1Begins60Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins60_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins60_02.mp3" + } +} +"Announcer.CompGame1Begins30Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins30_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins30_02.mp3" + } +} +"Announcer.CompGame1Begins10Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_rare_01.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_rare_02.mp3" + "wave" "vo/compmode/cm_admin_compbegins10_rare_03.mp3" + } +} +"Announcer.CompGameBegins05Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins05.mp3" + } +} +"Announcer.CompGameBegins04Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins04.mp3" + } +} +"Announcer.CompGameBegins03Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins03.mp3" + } +} +"Announcer.CompGameBegins02Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins02.mp3" + } +} +"Announcer.CompGameBegins01Seconds" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbegins01.mp3" + } +} +"Announcer.CompGameBeginsFight" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_03.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_02.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_04.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_01.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_06.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_07.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_03.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_02.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_04.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_01.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_06.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_07.mp3" + "wave" "vo/compmode/cm_admin_round_start_03.mp3" + "wave" "vo/compmode/cm_admin_round_start_03.mp3" + "wave" "vo/compmode/cm_admin_round_start_04.mp3" + "wave" "vo/compmode/cm_admin_round_start_04.mp3" + "wave" "vo/compmode/cm_admin_round_start_06.mp3" + "wave" "vo/compmode/cm_admin_round_start_06.mp3" + "wave" "vo/compmode/cm_admin_round_start_07.mp3" + "wave" "vo/compmode/cm_admin_round_start_07.mp3" + "wave" "vo/compmode/cm_admin_round_start_08.mp3" + "wave" "vo/compmode/cm_admin_round_start_09.mp3" + "wave" "vo/compmode/cm_admin_round_start_01.mp3" + "wave" "vo/compmode/cm_admin_round_start_05.mp3" + "wave" "vo/compmode/cm_admin_round_start_10.mp3" + "wave" "vo/compmode/cm_admin_round_start_10.mp3" + "wave" "vo/compmode/cm_admin_round_start_11.mp3" + } +} +"Announcer.CompFinalGameBeginsFight" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compbeginsstart_05.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_03.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_04.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_03.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_04.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_03.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_04.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_03.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_04.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_01.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_02.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_05.mp3" + "wave" "vo/compmode/cm_admin_compfinalstart_06.mp3" + "wave" "vo/compmode/cm_admin_misc_05.mp3" + "wave" "vo/compmode/cm_admin_misc_06.mp3" + } +} +"Announcer.YourTeamWiped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_teamwipe_01.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_02.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_03.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_04.mp3" + "wave" "vo/compmode/cm_admin_misc_01.mp3" + "wave" "vo/compmode/cm_admin_misc_09.mp3" + } +} +"Announcer.TheirTeamWiped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_teamwipe_05.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_12.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_13.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_14.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_14.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_14.mp3" + } +} +"Announcer.TeamWipeRed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_teamwipe_06.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_08.mp3" + } +} +"Announcer.TeamWipeBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_teamwipe_07.mp3" + "wave" "vo/compmode/cm_admin_teamwipe_10.mp3" + } +} +"Announcer.KillingSpreeRed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_01.mp3" + "wave" "vo/compmode/cm_admin_killstreak_02.mp3" + "wave" "vo/compmode/cm_admin_killstreak_07.mp3" + } +} +"Announcer.UnstoppableRed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_04.mp3" + "wave" "vo/compmode/cm_admin_killstreak_05.mp3" + } +} +"Announcer.RampageRed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_03.mp3" + } +} +"Announcer.GodLikeRed" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_06.mp3" + } +} +"Announcer.KillingSpreeBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_08.mp3" + } +} +"Announcer.UnstoppableBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_10.mp3" + "wave" "vo/compmode/cm_admin_killstreak_11.mp3" + } +} +"Announcer.RampageBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_09.mp3" + } +} +"Announcer.GodLikeBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_killstreak_12.mp3" + } +} +"Announcer.CompRoundWinBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_roundwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_07.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_07.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_07.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_08.mp3" + "wave" "vo/compmode/cm_admin_roundwin_blu_09.mp3" + } +} +"Announcer.CompRoundWinRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_roundwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_07.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_08.mp3" + "wave" "vo/compmode/cm_admin_roundwin_red_10.mp3" + } +} +"Announcer.TieGame" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_tiegame_01.mp3" + "wave" "vo/compmode/cm_admin_tiegame_02.mp3" + "wave" "vo/compmode/cm_admin_tiegame_03.mp3" + } +} +"Announcer.CompMatchWinBlu" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_blu_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_04.mp3" + } +} +"Announcer.CompMatchWinRed" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_04.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_05.mp3" + "wave" "vo/compmode/cm_admin_matchwin_red_06.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_01.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_02.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_03.mp3" + "wave" "vo/compmode/cm_admin_matchwin_rare_04.mp3" + } +} +"Announcer.CompRoundStalemate" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_140dB" + "pitch" "PITCH_NORM" + "wave" "vo/compmode/cm_admin_stalemate.mp3" +} +"Announcer.SummaryScreenWinners" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_summarycheer_01.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_01.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_03.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_04.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_05.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_06.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_07.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_01.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_01.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_03.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_04.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_05.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_06.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_07.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_01.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_01.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_03.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_04.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_05.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_06.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_07.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_01.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_01.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_03.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_04.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_05.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_06.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_07.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_01.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_01.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_02.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_03.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_04.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_05.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_06.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_07.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_09.mp3" + "wave" "vo/compmode/cm_admin_summary_screen_cheers_10.mp3" + "wave" "vo/compmode/cm_admin_summarycheer_07.mp3" + } +} +"Announcer.CompSummaryScreenOutlierQuestion" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_07.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_07.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_07.mp3" + "wave" "vo/compmode/cm_admin_outlier_question_09.mp3" + "wave" "vo/compmode/cm_admin_callout_question_01.mp3" + "wave" "vo/compmode/cm_admin_callout_question_04.mp3" + "wave" "vo/compmode/cm_admin_callout_question_05.mp3" + "wave" "vo/compmode/cm_admin_callout_question_07.mp3" + "wave" "vo/compmode/cm_admin_callout_question_08.mp3" + "wave" "vo/compmode/cm_admin_callout_question_10.mp3" + "wave" "vo/compmode/cm_admin_callout_question_13.mp3" + "wave" "vo/compmode/cm_admin_callout_question_15.mp3" + "wave" "vo/compmode/cm_admin_callout_question_16.mp3" + "wave" "vo/compmode/cm_admin_callout_question_01.mp3" + "wave" "vo/compmode/cm_admin_callout_question_04.mp3" + "wave" "vo/compmode/cm_admin_callout_question_05.mp3" + "wave" "vo/compmode/cm_admin_callout_question_07.mp3" + "wave" "vo/compmode/cm_admin_callout_question_08.mp3" + "wave" "vo/compmode/cm_admin_callout_question_10.mp3" + "wave" "vo/compmode/cm_admin_callout_question_13.mp3" + "wave" "vo/compmode/cm_admin_callout_question_15.mp3" + "wave" "vo/compmode/cm_admin_callout_question_16.mp3" + "wave" "vo/compmode/cm_admin_callout_question_01.mp3" + "wave" "vo/compmode/cm_admin_callout_question_04.mp3" + "wave" "vo/compmode/cm_admin_callout_question_05.mp3" + "wave" "vo/compmode/cm_admin_callout_question_07.mp3" + "wave" "vo/compmode/cm_admin_callout_question_08.mp3" + "wave" "vo/compmode/cm_admin_callout_question_10.mp3" + "wave" "vo/compmode/cm_admin_callout_question_13.mp3" + "wave" "vo/compmode/cm_admin_callout_question_15.mp3" + "wave" "vo/compmode/cm_admin_callout_question_16.mp3" + "wave" "vo/compmode/cm_admin_callout_question_02.mp3" + "wave" "vo/compmode/cm_admin_callout_question_03.mp3" + "wave" "vo/compmode/cm_admin_callout_question_11.mp3" + "wave" "vo/compmode/cm_admin_callout_question_12.mp3" + "wave" "vo/compmode/cm_admin_callout_question_14.mp3" + } +} +"Announcer.CompSummaryScreenOutlierYes" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_callout_yes_01.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_03.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_04.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_06.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_08.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_10.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_11.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_15.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_03.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_05.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_07.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_09.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_10.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_13.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_14.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_01.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_03.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_04.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_06.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_08.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_10.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_11.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_15.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_03.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_05.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_07.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_09.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_10.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_13.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_14.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_01.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_03.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_04.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_06.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_08.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_10.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_11.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_15.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_03.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_05.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_07.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_08.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_09.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_10.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_13.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_14.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_09.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_12.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_14.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_12.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_03.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_05.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_09.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_12.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_14.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_12.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_03.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_05.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_13.mp3" + "wave" "vo/compmode/cm_admin_callout_yes_17.mp3" + "wave" "vo/compmode/cm_admin_outlier_yes_rare_04.mp3" + } +} +"Announcer.CompSummaryScreenOutlierNo" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_01.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_06.mp3" + "wave" "vo/compmode/cm_admin_callout_no_10.mp3" + "wave" "vo/compmode/cm_admin_callout_no_11.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_05.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_01.mp3" + "wave" "vo/compmode/cm_admin_callout_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_07.mp3" + "wave" "vo/compmode/cm_admin_callout_no_13.mp3" + "wave" "vo/compmode/cm_admin_callout_no_14.mp3" + "wave" "vo/compmode/cm_admin_callout_no_18.mp3" + "wave" "vo/compmode/cm_admin_callout_no_20.mp3" + "wave" "vo/compmode/cm_admin_callout_no_21.mp3" + "wave" "vo/compmode/cm_admin_callout_no_22.mp3" + "wave" "vo/compmode/cm_admin_callout_no_23.mp3" + "wave" "vo/compmode/cm_admin_callout_no_10.mp3" + "wave" "vo/compmode/cm_admin_callout_no_11.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_05.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_01.mp3" + "wave" "vo/compmode/cm_admin_callout_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_07.mp3" + "wave" "vo/compmode/cm_admin_callout_no_13.mp3" + "wave" "vo/compmode/cm_admin_callout_no_14.mp3" + "wave" "vo/compmode/cm_admin_callout_no_18.mp3" + "wave" "vo/compmode/cm_admin_callout_no_20.mp3" + "wave" "vo/compmode/cm_admin_callout_no_21.mp3" + "wave" "vo/compmode/cm_admin_callout_no_22.mp3" + "wave" "vo/compmode/cm_admin_callout_no_23.mp3" + "wave" "vo/compmode/cm_admin_callout_no_10.mp3" + "wave" "vo/compmode/cm_admin_callout_no_11.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_05.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_02.mp3" + "wave" "vo/compmode/cm_admin_outlier_no_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_01.mp3" + "wave" "vo/compmode/cm_admin_callout_no_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_07.mp3" + "wave" "vo/compmode/cm_admin_callout_no_13.mp3" + "wave" "vo/compmode/cm_admin_callout_no_14.mp3" + "wave" "vo/compmode/cm_admin_callout_no_18.mp3" + "wave" "vo/compmode/cm_admin_callout_no_20.mp3" + "wave" "vo/compmode/cm_admin_callout_no_21.mp3" + "wave" "vo/compmode/cm_admin_callout_no_22.mp3" + "wave" "vo/compmode/cm_admin_callout_no_23.mp3" + "wave" "vo/compmode/cm_admin_callout_no_08.mp3" + "wave" "vo/compmode/cm_admin_callout_no_05.mp3" + "wave" "vo/compmode/cm_admin_callout_no_12.mp3" + "wave" "vo/compmode/cm_admin_callout_no_15.mp3" + "wave" "vo/compmode/cm_admin_callout_no_16.mp3" + "wave" "vo/compmode/cm_admin_callout_no_rare_01.mp3" + "wave" "vo/compmode/cm_admin_callout_no_rare_02.mp3" + "wave" "vo/compmode/cm_admin_callout_no_rare_03.mp3" + "wave" "vo/compmode/cm_admin_callout_no_rare_04.mp3" + "wave" "vo/compmode/cm_admin_callout_no_rare_05.mp3" + } +} +//----------------------------------------------------------------------------- +//End of Competitive Mode Announcer +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Competitive Mode All-Class +//----------------------------------------------------------------------------- +"cm_demo_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_01.mp3" +} +"cm_demo_gamewon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_02.mp3" +} +"cm_demo_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_03.mp3" +} +"cm_demo_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_04.mp3" +} +"cm_demo_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_05.mp3" +} +"cm_demo_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_06.mp3" +} +"cm_demo_gamewon_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_rare_01.mp3" +} +"cm_demo_gamewon_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_rare_02.mp3" +} +"cm_demo_gamewon_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_rare_03.mp3" +} +"cm_demo_gamewon_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_gamewon_rare_04.mp3" +} +"cm_demo_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_matchwon_01.mp3" +} +"cm_demo_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_matchwon_02.mp3" +} +"cm_demo_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_matchwon_03.mp3" +} +"cm_demo_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_matchwon_04.mp3" +} +"cm_demo_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_01.mp3" +} +"cm_demo_pregamefirst_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_02.mp3" +} +"cm_demo_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_03.mp3" +} +"cm_demo_pregamefirst_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_04.mp3" +} +"cm_demo_pregamefirst_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_6s_01.mp3" +} +"cm_demo_pregamefirst_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_6s_02.mp3" +} +"cm_demo_pregamefirst_6s_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_6s_03.mp3" +} +"cm_demo_pregamefirst_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_comp_01.mp3" +} +"cm_demo_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_comp_02.mp3" +} +"cm_demo_pregamefirst_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_comp_03.mp3" +} +"cm_demo_pregamefirst_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_comp_04.mp3" +} +"cm_demo_pregamefirst_comp_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_comp_05.mp3" +} +"cm_demo_pregamefirst_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_rare_01.mp3" +} +"cm_demo_pregamefirst_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_rare_02.mp3" +} +"cm_demo_pregamefirst_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamefirst_rare_03.mp3" +} +"cm_demo_pregamelostlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamelostlast_01.mp3" +} +"cm_demo_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamelostlast_02.mp3" +} +"cm_demo_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamelostlast_03.mp3" +} +"cm_demo_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamelostlast_04.mp3" +} +"cm_demo_pregamelostlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamelostlast_rare_01.mp3" +} +"cm_demo_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregametie_01.mp3" +} +"cm_demo_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregametie_02.mp3" +} +"cm_demo_pregametie_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregametie_03.mp3" +} +"cm_demo_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregametie_04.mp3" +} +"cm_demo_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamewonlast_01.mp3" +} +"cm_demo_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamewonlast_02.mp3" +} +"cm_demo_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamewonlast_03.mp3" +} +"cm_demo_pregamewonlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamewonlast_04.mp3" +} +"cm_demo_pregamewonlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_demo_pregamewonlast_rare_01.mp3" +} +"cm_engie_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_01.mp3" +} +"cm_engie_gamewon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_02.mp3" +} +"cm_engie_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_03.mp3" +} +"cm_engie_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_04.mp3" +} +"cm_engie_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_05.mp3" +} +"cm_engie_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_06.mp3" +} +"cm_engie_gamewon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_07.mp3" +} +"cm_engie_gamewon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_08.mp3" +} +"cm_engie_gamewon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_09.mp3" +} +"cm_engie_gamewon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_10.mp3" +} +"cm_engie_gamewon_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_11.mp3" +} +"cm_engie_gamewon_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_12.mp3" +} +"cm_engie_gamewon_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_13.mp3" +} +"cm_engie_gamewon_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_14.mp3" +} +"cm_engie_gamewon_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_rare_01.mp3" +} +"cm_engie_gamewon_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_rare_02.mp3" +} +"cm_engie_gamewon_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_rare_03.mp3" +} +"cm_engie_gamewon_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_gamewon_rare_04.mp3" +} +"cm_engie_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_01.mp3" +} +"cm_engie_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_02.mp3" +} +"cm_engie_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_03.mp3" +} +"cm_engie_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_04.mp3" +} +"cm_engie_matchwon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_05.mp3" +} +"cm_engie_matchwon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_06.mp3" +} +"cm_engie_matchwon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_08.mp3" +} +"cm_engie_matchwon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_09.mp3" +} +"cm_engie_matchwon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_10.mp3" +} +"cm_engie_matchwon_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_matchwon_11.mp3" +} +"cm_engie_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_01.mp3" +} +"cm_engie_pregamefirst_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_02.mp3" +} +"cm_engie_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_03.mp3" +} +"cm_engie_pregamefirst_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_04.mp3" +} +"cm_engie_pregamefirst_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_05.mp3" +} +"cm_engie_pregamefirst_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_06.mp3" +} +"cm_engie_pregamefirst_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_07.mp3" +} +"cm_engie_pregamefirst_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_08.mp3" +} +"cm_engie_pregamefirst_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_09.mp3" +} +"cm_engie_pregamefirst_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_10.mp3" +} +"cm_engie_pregamefirst_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_11.mp3" +} +"cm_engie_pregamefirst_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_12.mp3" +} +"cm_engie_pregamefirst_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_13.mp3" +} +"cm_engie_pregamefirst_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_14.mp3" +} +"cm_engie_pregamefirst_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_15.mp3" +} +"cm_engie_pregamefirst_18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_18.mp3" +} +"cm_engie_pregamefirst_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_6s_01.mp3" +} +"cm_engie_pregamefirst_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_6s_02.mp3" +} +"cm_engie_pregamefirst_6s_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_6s_03.mp3" +} +"cm_engie_pregamefirst_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_01.mp3" +} +"cm_engie_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_02.mp3" +} +"cm_engie_pregamefirst_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_03.mp3" +} +"cm_engie_pregamefirst_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_04.mp3" +} +"cm_engie_pregamefirst_comp_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_05.mp3" +} +"cm_engie_pregamefirst_comp_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_06.mp3" +} +"cm_engie_pregamefirst_comp_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_comp_07.mp3" +} +"cm_engie_pregamefirst_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_02.mp3" +} +"cm_engie_pregamefirst_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_03.mp3" +} +"cm_engie_pregamefirst_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_04.mp3" +} +"cm_engie_pregamefirst_rare_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_05.mp3" +} +"cm_engie_pregamefirst_rare_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_06.mp3" +} +"cm_engie_pregamefirst_rare_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_07.mp3" +} +"cm_engie_pregamefirst_rare_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamefirst_rare_08.mp3" +} +"cm_engie_pregamelostlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_01.mp3" +} +"cm_engie_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_02.mp3" +} +"cm_engie_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_03.mp3" +} +"cm_engie_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_04.mp3" +} +"cm_engie_pregamelostlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_05.mp3" +} +"cm_engie_pregamelostlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_06.mp3" +} +"cm_engie_pregamelostlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_07.mp3" +} +"cm_engie_pregamelostlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_08.mp3" +} +"cm_engie_pregamelostlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamelostlast_09.mp3" +} +"cm_engie_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregametie_01.mp3" +} +"cm_engie_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregametie_02.mp3" +} +"cm_engie_pregametie_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregametie_03.mp3" +} +"cm_engie_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregametie_04.mp3" +} +"cm_engie_pregametie_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregametie_05.mp3" +} +"cm_engie_pregametie_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregametie_06.mp3" +} +"cm_engie_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_01.mp3" +} +"cm_engie_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_02.mp3" +} +"cm_engie_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_03.mp3" +} +"cm_engie_pregamewonlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_04.mp3" +} +"cm_engie_pregamewonlast_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_comp_01.mp3" +} +"cm_engie_pregamewonlast_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_comp_02.mp3" +} +"cm_engie_pregamewonlast_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_comp_03.mp3" +} +"cm_engie_pregamewonlast_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_comp_04.mp3" +} +"cm_engie_pregamewonlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_engie_pregamewonlast_rare_01.mp3" +} +"cm_heavy_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_01.mp3" +} +"cm_heavy_gamewon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_02.mp3" +} +"cm_heavy_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_03.mp3" +} +"cm_heavy_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_04.mp3" +} +"cm_heavy_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_05.mp3" +} +"cm_heavy_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_06.mp3" +} +"cm_heavy_gamewon_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_6s_01.mp3" +} +"cm_heavy_gamewon_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_comp_01.mp3" +} +"cm_heavy_gamewon_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_comp_02.mp3" +} +"cm_heavy_gamewon_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_comp_03.mp3" +} +"cm_heavy_gamewon_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_rare_01.mp3" +} +"cm_heavy_gamewon_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_gamewon_rare_02.mp3" +} +"cm_heavy_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_01.mp3" +} +"cm_heavy_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_02.mp3" +} +"cm_heavy_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_03.mp3" +} +"cm_heavy_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_04.mp3" +} +"cm_heavy_matchwon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_05.mp3" +} +"cm_heavy_matchwon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_06.mp3" +} +"cm_heavy_matchwon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_07.mp3" +} +"cm_heavy_matchwon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_08.mp3" +} +"cm_heavy_matchwon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_09.mp3" +} +"cm_heavy_matchwon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_matchwon_10.mp3" +} +"cm_heavy_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_01.mp3" +} +"cm_heavy_pregamefirst_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_02.mp3" +} +"cm_heavy_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_03.mp3" +} +"cm_heavy_pregamefirst_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_04.mp3" +} +"cm_heavy_pregamefirst_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_05.mp3" +} +"cm_heavy_pregamefirst_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_06.mp3" +} +"cm_heavy_pregamefirst_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_07.mp3" +} +"cm_heavy_pregamefirst_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_08.mp3" +} +"cm_heavy_pregamefirst_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_09.mp3" +} +"cm_heavy_pregamefirst_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_6s_01.mp3" +} +"cm_heavy_pregamefirst_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_6s_02.mp3" +} +"cm_heavy_pregamefirst_6s_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_6s_03.mp3" +} +"cm_heavy_pregamefirst_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_comp_01.mp3" +} +"cm_heavy_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_comp_02.mp3" +} +"cm_heavy_pregamefirst_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamefirst_rare_01.mp3" +} +"cm_heavy_pregamelostlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_01.mp3" +} +"cm_heavy_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_02.mp3" +} +"cm_heavy_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_03.mp3" +} +"cm_heavy_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_04.mp3" +} +"cm_heavy_pregamelostlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_05.mp3" +} +"cm_heavy_pregamelostlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_06.mp3" +} +"cm_heavy_pregamelostlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_07.mp3" +} +"cm_heavy_pregamelostlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_08.mp3" +} +"cm_heavy_pregamelostlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_09.mp3" +} +"cm_heavy_pregamelostlast_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamelostlast_10.mp3" +} +"cm_heavy_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregametie_01.mp3" +} +"cm_heavy_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregametie_02.mp3" +} +"cm_heavy_pregametie_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregametie_03.mp3" +} +"cm_heavy_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregametie_04.mp3" +} +"cm_heavy_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamewonlast_01.mp3" +} +"cm_heavy_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamewonlast_02.mp3" +} +"cm_heavy_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamewonlast_03.mp3" +} +"cm_heavy_pregamewonlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamewonlast_04.mp3" +} +"cm_heavy_pregamewonlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamewonlast_05.mp3" +} +"cm_heavy_pregamewonlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_heavy_pregamewonlast_06.mp3" +} +"cm_scout_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_01.mp3" +} +"cm_scout_gamewon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_02.mp3" +} +"cm_scout_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_03.mp3" +} +"cm_scout_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_04.mp3" +} +"cm_scout_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_05.mp3" +} +"cm_scout_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_06.mp3" +} +"cm_scout_gamewon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_07.mp3" +} +"cm_scout_gamewon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_08.mp3" +} +"cm_scout_gamewon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_09.mp3" +} +"cm_scout_gamewon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_10.mp3" +} +"cm_scout_gamewon_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_11.mp3" +} +"cm_scout_gamewon_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_12.mp3" +} +"cm_scout_gamewon_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_13.mp3" +} +"cm_scout_gamewon_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_14.mp3" +} +"cm_scout_gamewon_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_15.mp3" +} +"cm_scout_gamewon_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_rare_01.mp3" +} +"cm_scout_gamewon_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_gamewon_rare_02.mp3" +} +"cm_scout_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_01.mp3" +} +"cm_scout_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_02.mp3" +} +"cm_scout_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_03.mp3" +} +"cm_scout_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_04.mp3" +} +"cm_scout_matchwon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_05.mp3" +} +"cm_scout_matchwon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_06.mp3" +} +"cm_scout_matchwon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_07.mp3" +} +"cm_scout_matchwon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_08.mp3" +} +"cm_scout_matchwon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_09.mp3" +} +"cm_scout_matchwon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_matchwon_10.mp3" +} +"cm_scout_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_01.mp3" +} +"cm_scout_pregamefirst_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_02.mp3" +} +"cm_scout_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_03.mp3" +} +"cm_scout_pregamefirst_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_04.mp3" +} +"cm_scout_pregamefirst_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_05.mp3" +} +"cm_scout_pregamefirst_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_06.mp3" +} +"cm_scout_pregamefirst_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_07.mp3" +} +"cm_scout_pregamefirst_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_08.mp3" +} +"cm_scout_pregamefirst_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_09.mp3" +} +"cm_scout_pregamefirst_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_10.mp3" +} +"cm_scout_pregamefirst_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_11.mp3" +} +"cm_scout_pregamefirst_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_12.mp3" +} +"cm_scout_pregamefirst_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_13.mp3" +} +"cm_scout_pregamefirst_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_14.mp3" +} +"cm_scout_pregamefirst_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_15.mp3" +} +"cm_scout_pregamefirst_16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_16.mp3" +} +"cm_scout_pregamefirst_17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_17.mp3" +} +"cm_scout_pregamefirst_18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_18.mp3" +} +"cm_scout_pregamefirst_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_6s_01.mp3" +} +"cm_scout_pregamefirst_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_6s_02.mp3" +} +"cm_scout_pregamefirst_6s_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_6s_03.mp3" +} +"cm_scout_pregamefirst_6s_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_6s_04.mp3" +} +"cm_scout_pregamefirst_6s_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_6s_05.mp3" +} +"cm_scout_pregamefirst_6s_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_6s_rare_01.mp3" +} +"cm_scout_pregamefirst_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_01.mp3" +} +"cm_scout_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_02.mp3" +} +"cm_scout_pregamefirst_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_03.mp3" +} +"cm_scout_pregamefirst_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_04.mp3" +} +"cm_scout_pregamefirst_comp_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_05.mp3" +} +"cm_scout_pregamefirst_comp_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_06.mp3" +} +"cm_scout_pregamefirst_comp_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_07.mp3" +} +"cm_scout_pregamefirst_comp_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_08.mp3" +} +"cm_scout_pregamefirst_comp_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_09.mp3" +} +"cm_scout_pregamefirst_comp_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_10.mp3" +} +"cm_scout_pregamefirst_comp_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_11.mp3" +} +"cm_scout_pregamefirst_comp_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_12.mp3" +} +"cm_scout_pregamefirst_comp_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_13.mp3" +} +"cm_scout_pregamefirst_comp_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_14.mp3" +} +"cm_scout_pregamefirst_comp_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_15.mp3" +} +"cm_scout_pregamefirst_comp_16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_16.mp3" +} +"cm_scout_pregamefirst_comp_17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_17.mp3" +} +"cm_scout_pregamefirst_comp_18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_18.mp3" +} +"cm_scout_pregamefirst_comp_19" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_19.mp3" +} +"cm_scout_pregamefirst_comp_20" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_20.mp3" +} +"cm_scout_pregamefirst_comp_21" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_21.mp3" +} +"cm_scout_pregamefirst_comp_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_rare_01.mp3" +} +"cm_scout_pregamefirst_comp_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_rare_02.mp3" +} +"cm_scout_pregamefirst_comp_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_comp_rare_03.mp3" +} +"cm_scout_pregamefirst_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_01.mp3" +} +"cm_scout_pregamefirst_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_02.mp3" +} +"cm_scout_pregamefirst_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_03.mp3" +} +"cm_scout_pregamefirst_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_04.mp3" +} +"cm_scout_pregamefirst_rare_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_05.mp3" +} +"cm_scout_pregamefirst_rare_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_06.mp3" +} +"cm_scout_pregamefirst_rare_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_07.mp3" +} +"cm_scout_pregamefirst_rare_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_08.mp3" +} +"cm_scout_pregamefirst_rare_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_09.mp3" +} +"cm_scout_pregamefirst_rare_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamefirst_rare_10.mp3" +} +"cm_scout_pregamelostlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_01.mp3" +} +"cm_scout_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_02.mp3" +} +"cm_scout_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_03.mp3" +} +"cm_scout_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_04.mp3" +} +"cm_scout_pregamelostlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_05.mp3" +} +"cm_scout_pregamelostlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_06.mp3" +} +"cm_scout_pregamelostlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_07.mp3" +} +"cm_scout_pregamelostlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_rare_01.mp3" +} +"cm_scout_pregamelostlast_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_rare_02.mp3" +} +"cm_scout_pregamelostlast_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamelostlast_rare_03.mp3" +} +"cm_scout_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_01.mp3" +} +"cm_scout_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_02.mp3" +} +"cm_scout_pregametie_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_03.mp3" +} +"cm_scout_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_04.mp3" +} +"cm_scout_pregametie_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_05.mp3" +} +"cm_scout_pregametie_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_06.mp3" +} +"cm_scout_pregametie_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregametie_07.mp3" +} +"cm_scout_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_01.mp3" +} +"cm_scout_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_02.mp3" +} +"cm_scout_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_03.mp3" +} +"cm_scout_pregamewonlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_04.mp3" +} +"cm_scout_pregamewonlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_05.mp3" +} +"cm_scout_pregamewonlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_06.mp3" +} +"cm_scout_pregamewonlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_07.mp3" +} +"cm_scout_pregamewonlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_08.mp3" +} +"cm_scout_pregamewonlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_09.mp3" +} +"cm_scout_pregamewonlast_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_10.mp3" +} +"cm_scout_pregamewonlast_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_11.mp3" +} +"cm_scout_pregamewonlast_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_12.mp3" +} +"cm_scout_pregamewonlast_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_6s_01.mp3" +} +"cm_scout_pregamewonlast_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_6s_02.mp3" +} +"cm_scout_pregamewonlast_comp_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_comp_rare_01.mp3" +} +"cm_scout_pregamewonlast_comp_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_comp_rare_02.mp3" +} +"cm_scout_pregamewonlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_rare_01.mp3" +} +"cm_scout_pregamewonlast_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_rare_02.mp3" +} +"cm_scout_pregamewonlast_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_rare_03.mp3" +} +"cm_scout_pregamewonlast_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_scout_pregamewonlast_rare_04.mp3" +} +"cm_sniper_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_01.mp3" +} +"cm_sniper_gamewon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_02.mp3" +} +"cm_sniper_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_03.mp3" +} +"cm_sniper_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_04.mp3" +} +"cm_sniper_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_05.mp3" +} +"cm_sniper_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_06.mp3" +} +"cm_sniper_gamewon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_07.mp3" +} +"cm_sniper_gamewon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_08.mp3" +} +"cm_sniper_gamewon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_09.mp3" +} +"cm_sniper_gamewon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_10.mp3" +} +"cm_sniper_gamewon_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_6s_01.mp3" +} +"cm_sniper_gamewon_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_6s_02.mp3" +} +"cm_sniper_gamewon_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_comp_01.mp3" +} +"cm_sniper_gamewon_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_comp_02.mp3" +} +"cm_sniper_gamewon_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_comp_03.mp3" +} +"cm_sniper_gamewon_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_comp_04.mp3" +} +"cm_sniper_gamewon_comp_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_comp_05.mp3" +} +"cm_sniper_gamewon_comp_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_gamewon_comp_06.mp3" +} +"cm_sniper_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_01.mp3" +} +"cm_sniper_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_02.mp3" +} +"cm_sniper_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_03.mp3" +} +"cm_sniper_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_04.mp3" +} +"cm_sniper_matchwon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_05.mp3" +} +"cm_sniper_matchwon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_06.mp3" +} +"cm_sniper_matchwon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_07.mp3" +} +"cm_sniper_matchwon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_08.mp3" +} +"cm_sniper_matchwon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_09.mp3" +} +"cm_sniper_matchwon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_10.mp3" +} +"cm_sniper_matchwon_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_11.mp3" +} +"cm_sniper_matchwon_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_12.mp3" +} +"cm_sniper_matchwon_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_13.mp3" +} +"cm_sniper_matchwon_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_14.mp3" +} +"cm_sniper_matchwon_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_15.mp3" +} +"cm_sniper_matchwon_16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_matchwon_16.mp3" +} +"cm_sniper_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_01.mp3" +} +"cm_sniper_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_03.mp3" +} +"cm_sniper_pregamefirst_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_06.mp3" +} +"cm_sniper_pregamefirst_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_07.mp3" +} +"cm_sniper_pregamefirst_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_08.mp3" +} +"cm_sniper_pregamefirst_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_09.mp3" +} +"cm_sniper_pregamefirst_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_10.mp3" +} +"cm_sniper_pregamefirst_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_11.mp3" +} +"cm_sniper_pregamefirst_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_14.mp3" +} +"cm_sniper_pregamefirst_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_15.mp3" +} +"cm_sniper_pregamefirst_16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_16.mp3" +} +"cm_sniper_pregamefirst_17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_17.mp3" +} +"cm_sniper_pregamefirst_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_6s_01.mp3" +} +"cm_sniper_pregamefirst_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_6s_02.mp3" +} +"cm_sniper_pregamefirst_6s_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_6s_03.mp3" +} +"cm_sniper_pregamefirst_6s_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_6s_04.mp3" +} +"cm_sniper_pregamefirst_6s_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_6s_05.mp3" +} +"cm_sniper_pregamefirst_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_01.mp3" +} +"cm_sniper_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_02.mp3" +} +"cm_sniper_pregamefirst_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_03.mp3" +} +"cm_sniper_pregamefirst_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_04.mp3" +} +"cm_sniper_pregamefirst_comp_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_05.mp3" +} +"cm_sniper_pregamefirst_comp_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_06.mp3" +} +"cm_sniper_pregamefirst_comp_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_comp_07.mp3" +} +"cm_sniper_pregamefirst_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_rare_01.mp3" +} +"cm_sniper_pregamefirst_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_rare_02.mp3" +} +"cm_sniper_pregamefirst_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_rare_03.mp3" +} +"cm_sniper_pregamefirst_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamefirst_rare_04.mp3" +} +"cm_sniper_pregamelostlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_01.mp3" +} +"cm_sniper_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_02.mp3" +} +"cm_sniper_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_03.mp3" +} +"cm_sniper_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_04.mp3" +} +"cm_sniper_pregamelostlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_05.mp3" +} +"cm_sniper_pregamelostlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_06.mp3" +} +"cm_sniper_pregamelostlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_rare_01.mp3" +} +"cm_sniper_pregamelostlast_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamelostlast_rare_02.mp3" +} +"cm_sniper_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_01.mp3" +} +"cm_sniper_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_02.mp3" +} +"cm_sniper_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_04.mp3" +} +"cm_sniper_pregametie_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_05.mp3" +} +"cm_sniper_pregametie_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_06.mp3" +} +"cm_sniper_pregametie_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_07.mp3" +} +"cm_sniper_pregametie_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregametie_rare_01.mp3" +} +"cm_sniper_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_01.mp3" +} +"cm_sniper_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_02.mp3" +} +"cm_sniper_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_03.mp3" +} +"cm_sniper_pregamewonlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_04.mp3" +} +"cm_sniper_pregamewonlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_05.mp3" +} +"cm_sniper_pregamewonlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_06.mp3" +} +"cm_sniper_pregamewonlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_07.mp3" +} +"cm_sniper_pregamewonlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_08.mp3" +} +"cm_sniper_pregamewonlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_09.mp3" +} +"cm_sniper_pregamewonlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_rare_01.mp3" +} +"cm_sniper_pregamewonlast_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_rare_02.mp3" +} +"cm_sniper_pregamewonlast_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_sniper_pregamewonlast_rare_03.mp3" +} +"cm_soldier_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_01.mp3" +} +"cm_soldier_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_03.mp3" +} +"cm_soldier_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_04.mp3" +} +"cm_soldier_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_05.mp3" +} +"cm_soldier_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_06.mp3" +} +"cm_soldier_gamewon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_07.mp3" +} +"cm_soldier_gamewon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_08.mp3" +} +"cm_soldier_gamewon_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_01.mp3" +} +"cm_soldier_gamewon_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_02.mp3" +} +"cm_soldier_gamewon_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_03.mp3" +} +"cm_soldier_gamewon_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_04.mp3" +} +"cm_soldier_gamewon_rare_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_05.mp3" +} +"cm_soldier_gamewon_rare_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_06.mp3" +} +"cm_soldier_gamewon_rare_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_07.mp3" +} +"cm_soldier_gamewon_rare_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_08.mp3" +} +"cm_soldier_gamewon_rare_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_gamewon_rare_09.mp3" +} +"cm_soldier_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_01.mp3" +} +"cm_soldier_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_02.mp3" +} +"cm_soldier_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_03.mp3" +} +"cm_soldier_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_04.mp3" +} +"cm_soldier_matchwon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_05.mp3" +} +"cm_soldier_matchwon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_06.mp3" +} +"cm_soldier_matchwon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_07.mp3" +} +"cm_soldier_matchwon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_08.mp3" +} +"cm_soldier_matchwon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_matchwon_09.mp3" +} +"cm_soldier_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_01.mp3" +} +"cm_soldier_pregamefirst_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_02.mp3" +} +"cm_soldier_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_03.mp3" +} +"cm_soldier_pregamefirst_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_04.mp3" +} +"cm_soldier_pregamefirst_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_05.mp3" +} +"cm_soldier_pregamefirst_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_07.mp3" +} +"cm_soldier_pregamefirst_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_08.mp3" +} +"cm_soldier_pregamefirst_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_09.mp3" +} +"cm_soldier_pregamefirst_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_10.mp3" +} +"cm_soldier_pregamefirst_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_11.mp3" +} +"cm_soldier_pregamefirst_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_12.mp3" +} +"cm_soldier_pregamefirst_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_13.mp3" +} +"cm_soldier_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_02.mp3" +} +"cm_soldier_pregamefirst_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_03.mp3" +} +"cm_soldier_pregamefirst_comp_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_04.mp3" +} +"cm_soldier_pregamefirst_comp_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_05.mp3" +} +"cm_soldier_pregamefirst_comp_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_06.mp3" +} +"cm_soldier_pregamefirst_comp_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_07.mp3" +} +"cm_soldier_pregamefirst_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_01.mp3" +} +"cm_soldier_pregamefirst_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_02.mp3" +} +"cm_soldier_pregamefirst_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_03.mp3" +} +"cm_soldier_pregamefirst_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_04.mp3" +} +"cm_soldier_pregamefirst_rare_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_05.mp3" +} +"cm_soldier_pregamefirst_rare_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_06.mp3" +} +"cm_soldier_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_02.mp3" +} +"cm_soldier_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_03.mp3" +} +"cm_soldier_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_04.mp3" +} +"cm_soldier_pregamelostlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_05.mp3" +} +"cm_soldier_pregamelostlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_06.mp3" +} +"cm_soldier_pregamelostlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_07.mp3" +} +"cm_soldier_pregamelostlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_08.mp3" +} +"cm_soldier_pregamelostlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_09.mp3" +} +"cm_soldier_pregamelostlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_01.mp3" +} +"cm_soldier_pregamelostlast_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_02.mp3" +} +"cm_soldier_pregamelostlast_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_03.mp3" +} +"cm_soldier_pregamelostlast_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_04.mp3" +} +"cm_soldier_pregamelostlast_rare_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_05.mp3" +} +"cm_soldier_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregametie_01.mp3" +} +"cm_soldier_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregametie_02.mp3" +} +"cm_soldier_pregametie_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregametie_03.mp3" +} +"cm_soldier_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregametie_04.mp3" +} +"cm_soldier_pregametie_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregametie_05.mp3" +} +"cm_soldier_pregametie_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregametie_06.mp3" +} +"cm_soldier_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_01.mp3" +} +"cm_soldier_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_02.mp3" +} +"cm_soldier_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_03.mp3" +} +"cm_soldier_pregamewonlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_06.mp3" +} +"cm_soldier_pregamewonlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_07.mp3" +} +"cm_soldier_pregamewonlast_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_01.mp3" +} +"cm_soldier_pregamewonlast_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_02.mp3" +} +"cm_soldier_pregamewonlast_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_03.mp3" +} +"cm_soldier_pregamewonlast_rare_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_04.mp3" +} +"cm_spy_gamewon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_01.mp3" +} +"cm_spy_gamewon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_02.mp3" +} +"cm_spy_gamewon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_03.mp3" +} +"cm_spy_gamewon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_04.mp3" +} +"cm_spy_gamewon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_05.mp3" +} +"cm_spy_gamewon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_06.mp3" +} +"cm_spy_gamewon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_07.mp3" +} +"cm_spy_gamewon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_gamewon_08.mp3" +} +"cm_spy_matchwon_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_01.mp3" +} +"cm_spy_matchwon_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_02.mp3" +} +"cm_spy_matchwon_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_03.mp3" +} +"cm_spy_matchwon_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_04.mp3" +} +"cm_spy_matchwon_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_05.mp3" +} +"cm_spy_matchwon_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_06.mp3" +} +"cm_spy_matchwon_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_07.mp3" +} +"cm_spy_matchwon_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_08.mp3" +} +"cm_spy_matchwon_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_09.mp3" +} +"cm_spy_matchwon_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_10.mp3" +} +"cm_spy_matchwon_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_11.mp3" +} +"cm_spy_matchwon_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_matchwon_12.mp3" +} +"cm_spy_pregamefirst_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_01.mp3" +} +"cm_spy_pregamefirst_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_02.mp3" +} +"cm_spy_pregamefirst_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_03.mp3" +} +"cm_spy_pregamefirst_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_04.mp3" +} +"cm_spy_pregamefirst_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_05.mp3" +} +"cm_spy_pregamefirst_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_06.mp3" +} +"cm_spy_pregamefirst_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_07.mp3" +} +"cm_spy_pregamefirst_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_08.mp3" +} +"cm_spy_pregamefirst_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_09.mp3" +} +"cm_spy_pregamefirst_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_10.mp3" +} +"cm_spy_pregamefirst_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_11.mp3" +} +"cm_spy_pregamefirst_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_12.mp3" +} +"cm_spy_pregamefirst_6s_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_01.mp3" +} +"cm_spy_pregamefirst_6s_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_02.mp3" +} +"cm_spy_pregamefirst_6s_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_03.mp3" +} +"cm_spy_pregamefirst_6s_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_04.mp3" +} +"cm_spy_pregamefirst_6s_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_05.mp3" +} +"cm_spy_pregamefirst_6s_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_06.mp3" +} +"cm_spy_pregamefirst_6s_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_6s_07.mp3" +} +"cm_spy_pregamefirst_comp_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_comp_01.mp3" +} +"cm_spy_pregamefirst_comp_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_comp_02.mp3" +} +"cm_spy_pregamefirst_comp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_comp_03.mp3" +} +"cm_spy_pregamefirst_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_rare_01.mp3" +} +"cm_spy_pregamefirst_rare_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_rare_02.mp3" +} +"cm_spy_pregamefirst_rare_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamefirst_rare_03.mp3" +} +"cm_spy_pregamelostlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_01.mp3" +} +"cm_spy_pregamelostlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_02.mp3" +} +"cm_spy_pregamelostlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_03.mp3" +} +"cm_spy_pregamelostlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_04.mp3" +} +"cm_spy_pregamelostlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_05.mp3" +} +"cm_spy_pregamelostlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_06.mp3" +} +"cm_spy_pregamelostlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_07.mp3" +} +"cm_spy_pregamelostlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_08.mp3" +} +"cm_spy_pregamelostlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_09.mp3" +} +"cm_spy_pregamelostlast_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_10.mp3" +} +"cm_spy_pregamelostlast_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamelostlast_11.mp3" +} +"cm_spy_pregametie_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_01.mp3" +} +"cm_spy_pregametie_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_02.mp3" +} +"cm_spy_pregametie_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_03.mp3" +} +"cm_spy_pregametie_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_04.mp3" +} +"cm_spy_pregametie_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_05.mp3" +} +"cm_spy_pregametie_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_06.mp3" +} +"cm_spy_pregametie_rare_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregametie_rare_01.mp3" +} +"cm_spy_pregamewonlast_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_01.mp3" +} +"cm_spy_pregamewonlast_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_02.mp3" +} +"cm_spy_pregamewonlast_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_03.mp3" +} +"cm_spy_pregamewonlast_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_04.mp3" +} +"cm_spy_pregamewonlast_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_05.mp3" +} +"cm_spy_pregamewonlast_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_06.mp3" +} +"cm_spy_pregamewonlast_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_07.mp3" +} +"cm_spy_pregamewonlast_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_08.mp3" +} +"cm_spy_pregamewonlast_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_09.mp3" +} +"cm_spy_pregamewonlast_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_10.mp3" +} +"cm_spy_pregamewonlast_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/compmode/cm_spy_pregamewonlast_11.mp3" +} + +//----------------------------------------------------------------------------- +// Player Rank Up +//----------------------------------------------------------------------------- +"Soldier.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_soldier_rankup_01.mp3" + "wave" "vo/compmode/cm_soldier_rankup_02.mp3" + "wave" "vo/compmode/cm_soldier_rankup_03.mp3" + "wave" "vo/compmode/cm_soldier_rankup_04.mp3" + "wave" "vo/compmode/cm_soldier_rankup_05.mp3" + "wave" "vo/compmode/cm_soldier_rankup_06.mp3" + "wave" "vo/compmode/cm_soldier_rankup_07.mp3" + "wave" "vo/compmode/cm_soldier_rankup_08.mp3" + "wave" "vo/compmode/cm_soldier_rankup_09.mp3" + "wave" "vo/compmode/cm_soldier_rankup_10.mp3" + "wave" "vo/compmode/cm_soldier_rankup_11.mp3" + "wave" "vo/compmode/cm_soldier_rankup_12.mp3" + "wave" "vo/compmode/cm_soldier_rankup_13.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_01.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_03.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_04.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_05.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_07.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_08.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_09.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_10.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_rare_01.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_rare_02.mp3" + } +} +"Sniper.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_sniper_rankup_01.mp3" + "wave" "vo/compmode/cm_sniper_rankup_02.mp3" + "wave" "vo/compmode/cm_sniper_rankup_03.mp3" + "wave" "vo/compmode/cm_sniper_rankup_04.mp3" + "wave" "vo/compmode/cm_sniper_rankup_05.mp3" + "wave" "vo/compmode/cm_sniper_rankup_06.mp3" + "wave" "vo/compmode/cm_sniper_rankup_07.mp3" + "wave" "vo/compmode/cm_sniper_rankup_08.mp3" + "wave" "vo/compmode/cm_sniper_rankup_09.mp3" + "wave" "vo/compmode/cm_sniper_rankup_10.mp3" + "wave" "vo/compmode/cm_sniper_rankup_11.mp3" + "wave" "vo/compmode/cm_sniper_rankup_12.mp3" + "wave" "vo/compmode/cm_sniper_rankup_13.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_01.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_02.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_03.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_04.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_05.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_06.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_07.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_08.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_09.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_10.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_11.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_12.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_13.mp3" + } +} +"Spy.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_spy_rankup_01.mp3" + "wave" "vo/compmode/cm_spy_rankup_02.mp3" + "wave" "vo/compmode/cm_spy_rankup_03.mp3" + "wave" "vo/compmode/cm_spy_rankup_04.mp3" + "wave" "vo/compmode/cm_spy_rankup_05.mp3" + "wave" "vo/compmode/cm_spy_rankup_06.mp3" + "wave" "vo/compmode/cm_spy_rankup_07.mp3" + "wave" "vo/compmode/cm_spy_rankup_08.mp3" + "wave" "vo/compmode/cm_spy_rankup_09.mp3" + "wave" "vo/compmode/cm_spy_rankup_10.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_01.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_02.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_03.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_04.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_06.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_07.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_08.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_10.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_11.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_12.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_13.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_14.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_15.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_16.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_17.mp3" + } +} +"Demoman.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_demo_rankup_01.mp3" + "wave" "vo/compmode/cm_demo_rankup_02.mp3" + "wave" "vo/compmode/cm_demo_rankup_03.mp3" + "wave" "vo/compmode/cm_demo_rankup_04.mp3" + "wave" "vo/compmode/cm_demo_rankup_05.mp3" + "wave" "vo/compmode/cm_demo_rankup_06.mp3" + "wave" "vo/compmode/cm_demo_rankup_07.mp3" + "wave" "vo/compmode/cm_demo_rankup_08.mp3" + "wave" "vo/compmode/cm_demo_rankup_09.mp3" + "wave" "vo/compmode/cm_demo_rankup_10.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_01.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_02.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_03.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_04.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_05.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_06.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_07.mp3" + } +} +"Heavy.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_heavy_rankup_01.mp3" + "wave" "vo/compmode/cm_heavy_rankup_02.mp3" + "wave" "vo/compmode/cm_heavy_rankup_03.mp3" + "wave" "vo/compmode/cm_heavy_rankup_04.mp3" + "wave" "vo/compmode/cm_heavy_rankup_05.mp3" + "wave" "vo/compmode/cm_heavy_rankup_06.mp3" + "wave" "vo/compmode/cm_heavy_rankup_07.mp3" + "wave" "vo/compmode/cm_heavy_rankup_08.mp3" + "wave" "vo/compmode/cm_heavy_rankup_09.mp3" + "wave" "vo/compmode/cm_heavy_rankup_10.mp3" + "wave" "vo/compmode/cm_heavy_rankup_11.mp3" + "wave" "vo/compmode/cm_heavy_rankup_12.mp3" + "wave" "vo/compmode/cm_heavy_rankup_14.mp3" + "wave" "vo/compmode/cm_heavy_rankup_15.mp3" + "wave" "vo/compmode/cm_heavy_rankup_16.mp3" + "wave" "vo/compmode/cm_heavy_rankup_rare_01.mp3" + "wave" "vo/compmode/cm_heavy_rankup_rare_02.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_01.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_02.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_03.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_04.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_05.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_06.mp3" + } +} +"Engineer.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_engie_rankup_01.mp3" + "wave" "vo/compmode/cm_engie_rankup_02.mp3" + "wave" "vo/compmode/cm_engie_rankup_03.mp3" + "wave" "vo/compmode/cm_engie_rankup_04.mp3" + "wave" "vo/compmode/cm_engie_rankup_05.mp3" + "wave" "vo/compmode/cm_engie_rankup_06.mp3" + "wave" "vo/compmode/cm_engie_rankup_07.mp3" + "wave" "vo/compmode/cm_engie_rankup_08.mp3" + "wave" "vo/compmode/cm_engie_rankup_09.mp3" + "wave" "vo/compmode/cm_engie_rankup_10.mp3" + "wave" "vo/compmode/cm_engie_rankup_11.mp3" + "wave" "vo/compmode/cm_engie_rankup_12.mp3" + "wave" "vo/compmode/cm_engie_rankup_13.mp3" + "wave" "vo/compmode/cm_engie_rankup_14.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_01.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_02.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_03.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_04.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_05.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_06.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_07.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_08.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_09.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_10.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_11.mp3" + } +} +"Pyro.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_pyro_rankup_01.mp3" + "wave" "vo/compmode/cm_pyro_rankup_02.mp3" + "wave" "vo/compmode/cm_pyro_rankup_03.mp3" + "wave" "vo/compmode/cm_pyro_rankup_04.mp3" + } +} +"Scout.CompRankUp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_scout_rankup_01.mp3" + "wave" "vo/compmode/cm_scout_rankup_02.mp3" + "wave" "vo/compmode/cm_scout_rankup_03.mp3" + "wave" "vo/compmode/cm_scout_rankup_04.mp3" + "wave" "vo/compmode/cm_scout_rankup_05.mp3" + "wave" "vo/compmode/cm_scout_rankup_06.mp3" + "wave" "vo/compmode/cm_scout_rankup_07.mp3" + "wave" "vo/compmode/cm_scout_rankup_08.mp3" + "wave" "vo/compmode/cm_scout_rankup_09.mp3" + "wave" "vo/compmode/cm_scout_rankup_10.mp3" + "wave" "vo/compmode/cm_scout_rankup_11.mp3" + "wave" "vo/compmode/cm_scout_rankup_12.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_01.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_02.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_03.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_06.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_07.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_08.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_09.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_10.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_11.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_12.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_13.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_14.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_15.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_16.mp3" + } +} + +//----------------------------------------------------------------------------- +// Player Rank Up Highest +//----------------------------------------------------------------------------- +"Soldier.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_soldier_rankup_highest_01.mp3" + } +} +"Sniper.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_sniper_rankup_highest_01.mp3" + } +} +"Spy.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_spy_rankup_highest_01.mp3" + } +} +"Demoman.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_demo_rankup_highest_01.mp3" + } +} +"Heavy.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_heavy_rankup_highest_01.mp3" + } +} +"Engineer.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_engie_rankup_highest_01.mp3" + } +} +"Pyro.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_pyro_rankup_highest_01.mp3" + } +} +"Scout.CompRankUpHighest" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_scout_rankup_highest_01.mp3" + } +} + +//----------------------------------------------------------------------------- +// Player Match Summary Outlier +//----------------------------------------------------------------------------- +"Soldier.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_soldier_summary_callout_01.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_rare_01.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_03.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_04.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_05.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_07.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_08.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_09.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_10.mp3" + "wave" "vo/compmode/cm_soldier_summary_callout_rare_02.mp3" + } +} +"Sniper.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_sniper_summary_callout_01.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_02.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_03.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_04.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_05.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_06.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_07.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_08.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_09.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_10.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_11.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_12.mp3" + "wave" "vo/compmode/cm_sniper_summary_callout_13.mp3" + } +} +"Spy.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_spy_summary_callout_01.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_02.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_03.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_04.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_05.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_06.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_07.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_08.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_10.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_11.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_12.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_13.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_14.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_15.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_16.mp3" + "wave" "vo/compmode/cm_spy_summary_callout_17.mp3" + } +} +"Demoman.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_demo_summary_callout_01.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_02.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_03.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_04.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_05.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_06.mp3" + "wave" "vo/compmode/cm_demo_summary_callout_07.mp3" + } +} +"Heavy.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_heavy_summary_callout_01.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_02.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_03.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_04.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_05.mp3" + "wave" "vo/compmode/cm_heavy_summary_callout_06.mp3" + } +} +"Engineer.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_engie_summary_callout_01.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_02.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_03.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_04.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_05.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_06.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_07.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_08.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_09.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_10.mp3" + "wave" "vo/compmode/cm_engie_summary_callout_11.mp3" + } +} +"Pyro.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_pyro_summary_callout_01.mp3" + "wave" "vo/compmode/cm_pyro_summary_callout_02.mp3" + "wave" "vo/compmode/cm_pyro_summary_callout_03.mp3" + } +} +"Scout.CompSummaryScreenOutlier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/compmode/cm_scout_summary_callout_01.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_02.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_03.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_04.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_05.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_06.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_07.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_08.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_09.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_10.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_11.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_12.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_13.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_14.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_15.mp3" + "wave" "vo/compmode/cm_scout_summary_callout_16.mp3" + } +} +//----------------------------------------------------------------------------- +//End of Competitive Mode All-Class +//----------------------------------------------------------------------------- + +"Soldier.Statue" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/toughbreak/soldier_quest_complete_hard_05.mp3" + "wave" "vo/soldier_sf12_taunts13.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_kill_10.mp3" + "wave" "vo/soldier_mvm_wave_end07.mp3" + "wave" "vo/soldier_mvm_resurrect01.mp3" + "wave" "vo/soldier_mvm_resurrect02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_22.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_24.mp3" + "wave" "vo/soldier_item_unicorn_domination01.mp3" + "wave" "vo/taunts/soldier_taunts02.mp3" + "wave" "vo/soldier_battlecry01.mp3" + "wave" "vo/soldier_battlecry02.mp3" + "wave" "vo/soldier_battlecry03.mp3" + "wave" "vo/soldier_battlecry04.mp3" + "wave" "vo/soldier_battlecry05.mp3" + "wave" "vo/soldier_battlecry06.mp3" + "wave" "vo/taunts/soldier_taunts01.mp3" + "wave" "vo/taunts/soldier_taunts02.mp3" + "wave" "vo/taunts/soldier_taunts03.mp3" + "wave" "vo/taunts/soldier_taunts04.mp3" + "wave" "vo/taunts/soldier_taunts05.mp3" + "wave" "vo/taunts/soldier_taunts06.mp3" + "wave" "vo/taunts/soldier_taunts07.mp3" + "wave" "vo/taunts/soldier_taunts08.mp3" + "wave" "vo/taunts/soldier_taunts09.mp3" + "wave" "vo/taunts/soldier_taunts10.mp3" + "wave" "vo/taunts/soldier_taunts11.mp3" + "wave" "vo/taunts/soldier_taunts12.mp3" + "wave" "vo/taunts/soldier_taunts13.mp3" + "wave" "vo/taunts/soldier_taunts14.mp3" + "wave" "vo/taunts/soldier_taunts15.mp3" + "wave" "vo/taunts/soldier_taunts16.mp3" + "wave" "vo/taunts/soldier_taunts17.mp3" + "wave" "vo/taunts/soldier_taunts18.mp3" + "wave" "vo/taunts/soldier_taunts19.mp3" + "wave" "vo/taunts/soldier_taunts20.mp3" + "wave" "vo/taunts/soldier_taunts21.mp3" + "wave" "vo/soldier_cheers01.mp3" + "wave" "vo/soldier_cheers02.mp3" + "wave" "vo/soldier_cheers03.mp3" + "wave" "vo/soldier_cheers04.mp3" + "wave" "vo/soldier_cheers05.mp3" + "wave" "vo/soldier_cheers06.mp3" + "wave" "vo/soldier_hat_taunts14.mp3" + "wave" "vo/soldier_hat_taunts15.mp3" + "wave" "vo/soldier_hat_taunts16.mp3" + "wave" "vo/soldier_hat_taunts17.mp3" + "wave" "vo/soldier_hat_taunts18.mp3" + "wave" "vo/soldier_hat_taunts19.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_01.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_02.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_03.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_04.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_05.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_06.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_07.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_08.mp3" + "wave" "vo/taunts/soldier/soldier_tank_12.wav" + "wave" "vo/taunts/soldier/soldier_tank_14.wav" + "wave" "vo/compmode/cm_soldier_gamewon_rare_02.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_rare_03.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_rare_04.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_rare_06.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_rare_07.mp3" + "wave" "vo/compmode/cm_soldier_gamewon_rare_08.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_02.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_03.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_04.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_05.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_07.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_comp_02.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_02.mp3" + "wave" "vo/compmode/cm_soldier_pregamefirst_rare_03.mp3" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_04.mp3" + "wave" "vo/compmode/cm_soldier_pregamelostlast_rare_05.mp3" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_02.mp3" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_03.mp3" + "wave" "vo/compmode/cm_soldier_pregamewonlast_rare_04.mp3" + "wave" "vo/soldier_autocappedcontrolpoint01.mp3" + "wave" "vo/soldier_autocappedintelligence02.mp3" + "wave" "vo/soldier_dominationpyro01.mp3" + "wave" "vo/soldier_dominationscout04.mp3" + "wave" "vo/soldier_jeers07.mp3" + "wave" "vo/soldier_jeers08.mp3" + "wave" "vo/soldier_jeers10.mp3" + } +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_handmade.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_handmade.lua new file mode 100644 index 000000000..87330db6c --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_handmade.lua @@ -0,0 +1,2914 @@ +"Medic.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts16.mp3" +} + +"Announcer.SecurityAlert" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_security_alert.mp3" + "wave" "vo/announcer_security_warning.mp3" + } +} + +"Sword.Idle" +{ + "channel" "CHAN_STATIC" + "volume" "0.30" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sword_idle01.mp3" + "wave" "vo/sword_idle02.mp3" + "wave" "vo/sword_idle03.mp3" + "wave" "vo/sword_idle04.mp3" + "wave" "vo/sword_idle05.mp3" + "wave" "vo/sword_idle06.mp3" + "wave" "vo/sword_idle07.mp3" + "wave" "vo/sword_idle08.mp3" + "wave" "vo/sword_idle09.mp3" + "wave" "vo/sword_idle10.mp3" + "wave" "vo/sword_idle11.mp3" + "wave" "vo/sword_idle12.mp3" + "wave" "vo/sword_idle13.mp3" + "wave" "vo/sword_idle14.mp3" + "wave" "vo/sword_idle15.mp3" + } +} + +"Sword.Hit" +{ + "channel" "CHAN_STATIC" + "volume" "0.3" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/sword_hit01.mp3" + "wave" "vo/sword_hit02.mp3" + "wave" "vo/sword_hit03.mp3" + "wave" "vo/sword_hit04.mp3" + "wave" "vo/sword_hit05.mp3" + "wave" "vo/sword_hit06.mp3" + "wave" "vo/sword_hit07.mp3" + "wave" "vo/sword_hit08.mp3" + "wave" "vo/sword_hit09.mp3" + "wave" "vo/sword_hit10.mp3" + } +} + +// Custom stuff below this line + +"Heavy.Thanks04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/heavy_Thanks04.mp3" +} + +// Sniper payload responses + +// Sniper defense - cart going back + +"sniper.CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense01.mp3" +} + +"sniper.CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense02.mp3" +} + +"sniper.CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense03.mp3" +} + +"sniper.CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense04.mp3" +} + +"sniper.CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense05.mp3" +} + +"sniper.CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense06.mp3" +} + +"sniper.CartGoingBackDefense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense07.mp3" +} + +"sniper.CartGoingBackDefense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefense08.mp3" +} + +// Sniper defense - cart going back soft + +"sniper.CartGoingBackDefenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft01.mp3" +} + +"sniper.CartGoingBackDefenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft02.mp3" +} + +"sniper.CartGoingBackDefenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft03.mp3" +} + +"sniper.CartGoingBackDefenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft04.mp3" +} + +"sniper.CartGoingBackDefenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft05.mp3" +} + +"sniper.CartGoingBackDefenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft06.mp3" +} + +"sniper.CartGoingBackDefenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft07.mp3" +} + +"sniper.CartGoingBackDefenseSoft08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackDefenseSoft08.mp3" +} + +// Sniper offense - cart going back +"sniper.CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense01.mp3" +} + +"sniper.CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense02.mp3" +} + +"sniper.CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense03.mp3" +} + +"sniper.CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense04.mp3" +} + +"sniper.CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense05.mp3" +} + +"sniper.CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense06.mp3" +} + +"sniper.CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffense07.mp3" +} + +// Sniper offense - cart going back soft + +"sniper.CartGoingBackOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft01.mp3" +} + +"sniper.CartGoingBackOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft02.mp3" +} + +"sniper.CartGoingBackOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft03.mp3" +} + +"sniper.CartGoingBackOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft04.mp3" +} + +"sniper.CartGoingBackOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft05.mp3" +} + +"sniper.CartGoingBackOffenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft06.mp3" +} + +"sniper.CartGoingBackOffenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartGoingBackOffenseSoft07.mp3" +} + +// Sniper defense - cart going forward + +"sniper.CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefense01.mp3" +} + +"sniper.CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefense02.mp3" +} + +"sniper.CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefense03.mp3" +} + +"sniper.CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefense04.mp3" +} + +"sniper.CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefense05.mp3" +} + +"sniper.CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefense06.mp3" +} + +// Sniper defense - cart going forward soft + +"sniper.CartMovingForwardDefenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefenseSoft01.mp3" +} + +"sniper.CartMovingForwardDefenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefenseSoft02.mp3" +} + +"sniper.CartMovingForwardDefenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefenseSoft03.mp3" +} + +"sniper.CartMovingForwardDefenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefenseSoft04.mp3" +} + +"sniper.CartMovingForwardDefenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefenseSoft05.mp3" +} + +"sniper.CartMovingForwardDefenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardDefenseSoft06.mp3" +} + +// Sniper offense - cart going forward + +"sniper.CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense01.mp3" +} + +"sniper.CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense02.mp3" +} + +"sniper.CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense03.mp3" +} + +"sniper.CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense04.mp3" +} + +"sniper.CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense05.mp3" +} + +"sniper.CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense06.mp3" +} + +"sniper.CartMovingForwardOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense07.mp3" +} + +"sniper.CartMovingForwardOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense08.mp3" +} + +"sniper.CartMovingForwardOffense09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense09.mp3" +} + +"sniper.CartMovingForwardOffense10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffense10.mp3" +} + +"sniper.CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense01.mp3" +} + +"sniper.CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense02.mp3" +} + +"sniper.CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense03.mp3" +} + +"sniper.CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense04.mp3" +} + +"sniper.CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense05.mp3" +} + +"sniper.CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense06.mp3" +} + +"sniper.CartStayCloseOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffense07.mp3" +} + +// Sniper offense - cart going forward soft + +"sniper.CartMovingForwardOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft01.mp3" +} + +"sniper.CartMovingForwardOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft02.mp3" +} + +"sniper.CartMovingForwardOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft03.mp3" +} + +"sniper.CartMovingForwardOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft03.mp3" +} + +"sniper.CartMovingForwardOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft04.mp3" +} + +"sniper.CartMovingForwardOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft05.mp3" +} + +"sniper.CartMovingForwardOffenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft06.mp3" +} + +"sniper.CartMovingForwardOffenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft07.mp3" +} + +"sniper.CartMovingForwardOffenseSoft08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft08.mp3" +} + +"sniper.CartMovingForwardOffenseSoft09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft09.mp3" +} + +"sniper.CartMovingForwardOffenseSoft10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartMovingForwardOffenseSoft10.mp3" +} + +"sniper.CartStayCloseOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft01.mp3" +} + +"sniper.CartStayCloseOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft02.mp3" +} + +"sniper.CartStayCloseOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft03.mp3" +} + +"sniper.CartStayCloseOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft04.mp3" +} + +"sniper.CartStayCloseOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft05.mp3" +} + +"sniper.CartStayCloseOffenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft06.mp3" +} + +"sniper.CartStayCloseOffenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStayCloseOffenseSoft07.mp3" +} + +// Sniper defense - stop the cart + +"sniper.CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefense01.mp3" +} + +"sniper.CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefense02.mp3" +} + +"sniper.CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefense03.mp3" +} + +"sniper.CartStopItDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefense04.mp3" +} + +"sniper.CartStopItDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefense05.mp3" +} + +"sniper.CartStopItDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefense06.mp3" +} + +// Sniper defense - stop the cart soft + +"sniper.CartStopItDefenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefenseSoft01.mp3" +} + +"sniper.CartStopItDefenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefenseSoft02.mp3" +} + +"sniper.CartStopItDefenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefenseSoft03.mp3" +} + +"sniper.CartStopItDefenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefenseSoft04.mp3" +} + +"sniper.CartStopItDefenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStopItDefenseSoft06.mp3" +} + +// Sniper offense - cart stopped + +"sniper.CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffense01.mp3" +} + +"sniper.CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffense02.mp3" +} + +"sniper.CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffense03.mp3" +} + +"sniper.CartStoppedOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffense04.mp3" +} + +"sniper.CartStoppedOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffense05.mp3" +} + +// Sniper offense - cart stopped soft + +"sniper.CartStoppedOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffenseSoft01.mp3" +} + +"sniper.CartStoppedOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffenseSoft02.mp3" +} + +"sniper.CartStoppedOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffenseSoft03.mp3" +} + +"sniper.CartStoppedOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffenseSoft04.mp3" +} + +"sniper.CartStoppedOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_CartStoppedOffenseSoft05.mp3" +} + +// Sniper unused domination lines. + +"sniper.Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination01.mp3" +} + +"sniper.Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination02.mp3" +} + +"sniper.Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination03.mp3" +} + +"sniper.Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination04.mp3" +} + +"sniper.Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination05.mp3" +} + +"sniper.Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination06.mp3" +} + +"sniper.Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination07.mp3" +} + +"sniper.Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination08.mp3" +} + +"sniper.Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination09.mp3" +} + +"sniper.Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination10.mp3" +} + +"sniper.Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination11.mp3" +} + +"sniper.Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination12.mp3" +} + +"sniper.Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination13.mp3" +} + +"sniper.Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination14.mp3" +} + + +"sniper.Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination15.mp3" +} + +"sniper.Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination16.mp3" +} + +"sniper.Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination17.mp3" +} + +"sniper.Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination18.mp3" +} + +"sniper.Domination19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination19.mp3" +} + +"sniper.Domination20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination20.mp3" +} + +"sniper.Domination21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination21.mp3" +} + +"sniper.Domination22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination22.mp3" +} + +"sniper.Domination23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination23.mp3" +} + +"sniper.Domination24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Domination24.mp3" +} + +// Sniper unused revenge lines. + +"sniper.Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge01.mp3" +} + +"sniper.Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge02.mp3" +} + +"sniper.Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge03.mp3" +} + +"sniper.Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge04.mp3" +} + +"sniper.Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge05.mp3" +} + +"sniper.Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge06.mp3" +} + +"sniper.Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge07.mp3" +} + +"sniper.Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge08.mp3" +} + +"sniper.Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge09.mp3" +} + +"sniper.Revenge10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge10.mp3" +} + +"sniper.Revenge11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge11.mp3" +} + +"sniper.Revenge12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge12.mp3" +} + +"sniper.Revenge13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge13.mp3" +} + +"sniper.Revenge14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge14.mp3" +} + +"sniper.Revenge15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge15.mp3" +} + +"sniper.Revenge16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge16.mp3" +} + +"sniper.Revenge17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge17.mp3" +} + +"sniper.Revenge18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge18.mp3" +} + +"sniper.Revenge19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge19.mp3" +} + +"sniper.Revenge20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge20.mp3" +} + +"sniper.Revenge21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge21.mp3" +} + +"sniper.Revenge22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge22.mp3" +} + +"sniper.Revenge23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge23.mp3" +} + +"sniper.Revenge24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge24.mp3" +} + +"sniper.Revenge25" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_Revenge25.mp3" +} + +// Sniper special weapon + +"sniper.SpecialWeapon01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon01.mp3" +} + +"sniper.SpecialWeapon02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon02.mp3" +} + +"sniper.SpecialWeapon03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon03.mp3" +} + +"sniper.SpecialWeapon04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon04.mp3" +} + +"sniper.SpecialWeapon05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon05.mp3" +} + +"sniper.SpecialWeapon06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon06.mp3" +} + +"sniper.SpecialWeapon07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon07.mp3" +} + +"sniper.SpecialWeapon08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon08.mp3" +} + +"sniper.SpecialWeapon09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_SpecialWeapon09.mp3" +} + +// Sniper unused fight on cap + + +"Sniper.FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/Sniper_FightOnCap01.mp3" +} + +"Sniper.FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/Sniper_FightOnCap02.mp3" +} + +"Sniper.FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/Sniper_FightOnCap03.mp3" +} + +"Sniper.FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/Sniper_FightOnCap04.mp3" +} + +"Sniper.FightOnCap05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/Sniper_FightOnCap05.mp3" +} + +"Sniper.FightOnCap06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/Sniper_FightOnCap06.mp3" +} + +// 'Missing' Medic taunts +"Medic.Taunts01_fixed" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_Taunts01.mp3" +} + +"Spy.Chuckle" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_150dB" + + "rndwave" + { + "wave" "vo/spy_LaughShort02.mp3" + "wave" "vo/spy_LaughShort03.mp3" + "wave" "vo/spy_LaughShort05.mp3" + } +} + +"Spy.TeaseVictim" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/spy_cloakedspy03.mp3" + "wave" "vo/spy_cloakedspy04.mp3" + "wave" "vo/spy_Revenge01.mp3" + "wave" "vo/spy_Revenge02.mp3" + "wave" "vo/spy_Revenge03.mp3" + "wave" "vo/spy_SpecialCompleted04.mp3" + "wave" "vo/spy_SpecialCompleted10.mp3" + "wave" "vo/spy_SpecialCompleted12.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Springrider +///////////////////////////////////////////// + +"taunt_springrider_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/pyro_positivevocalization01.mp3" + "wave" "vo/taunts/pyro_highfive_success01.mp3" + "wave" "vo/taunts/pyro_highfive_success02.mp3" + "wave" "vo/taunts/pyro_highfive_success03.mp3" + } +} + +"taunt_springrider_giggles" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_13.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_ballon_11.mp3" + "wave" "vo/pyro_laughevil02.mp3" + "wave" "vo/pyro_laughevil04.mp3" + "wave" "vo/pyro_laughlong01.mp3" + } +} + +//////////////////////////////////////////////////////////// +//engineer bucking bronco +///////////////////////////////////////////////////////////// + +"engineer_item_preview_engineer_battlecry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_battlecry07.mp3" +} +"engineer_item_preview_sentry_upgrading2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_upgrading2.wav" +} +"engineer_item_preview_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_item_preview_gunslinger_swing" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_swing.wav" +} +"engineer_item_preview_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_item_preview_sentry_move_short2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_move_short2.wav" +} +"engineer_item_preview_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.wav" +} +"engineer_bucking_bronco_engineer_battlecry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_battlecry07.mp3" +} +"engineer_bucking_bronco_sentry_upgrading2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_upgrading2.wav" +} +"engineer_bucking_bronco_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_bucking_bronco_gunslinger_swing" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_swing.wav" +} +"engineer_bucking_bronco_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_bucking_bronco_sentry_move_short2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"engineer_bucking_bronco_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.wav" +} + +"engineer_bucking_bronco_taunt_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_battlecry03.mp3" + "wave" "vo/engineer_battlecry05.mp3" + "wave" "vo/engineer_battlecry06.mp3" + "wave" "vo/engineer_cheers01.mp3" + "wave" "vo/engineer_cheers02.mp3" + "wave" "vo/engineer_cheers07.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_36.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_37.mp3" + } +} + +"engineer_bucking_bronco_taunt_yells_A" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + "wave" "vo/engineer_cheers02.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_03.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_33.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_35.mp3" + "wave" "vo/taunts/engy/eng_bronco_01.mp3" + "wave" "vo/taunts/engy/eng_bronco_02.mp3" + "wave" "vo/taunts/engy/eng_bronco_03.mp3" + "wave" "vo/taunts/engy/eng_bronco_04.mp3" + "wave" "vo/taunts/engy/eng_bronco_16.mp3" + } +} + +"engineer_bucking_bronco_taunt_yells_B" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/engineer_cheers07.mp3" + "wave" "vo/engineer_battlecry07.mp3" + "wave" "vo/engineer_laughhappy03.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_13.mp3" + "wave" "vo/taunts/engy/eng_bronco_09.mp3" + "wave" "vo/taunts/engy/eng_bronco_12.mp3" + } +} + +"engineer_bucking_bronco_taunt_yells_short" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/engy/eng_bronco_07.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/engy/eng_bronco_07.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Heavy_AEROBIC +///////////////////////////////////////////// + +"taunt_heavy_aerobic_flex" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_battlecry03.mp3" + "wave" "vo/heavy_battlecry05.mp3" + "wave" "vo/heavy_paincrticialdeath02.mp3" + } +} + +"taunt_heavy_aerobic_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_07.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_05.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_16.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_14.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_kill_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_kill_09.mp3" + "wave" "vo/heavy_award04.mp3" + "wave" "vo/heavy_laughhappy02.mp3" + "wave" "vo/heavy_laughhappy03.mp3" + "wave" "vo/heavy_laughterbig02.mp3" + "wave" "vo/heavy_laughterbig01.mp3" + "wave" "vo/heavy_positivevocalization02.mp3" + "wave" "vo/heavy_positivevocalization04.mp3" + "wave" "vo/heavy_specialcompleted11.mp3" + } +} + +"taunt_heavy_aerobic_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_12.mp3" + } +} + +"taunt_heavy_aerobic_shared_dance" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_aerobic_05.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_17.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_22.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_37.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_40.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_01.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_06.mp3" + "wave" "vo/taunts/heavy/heavy_aerobic_08.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Demo_AEROBIC +///////////////////////////////////////////// + +"taunt_demo_aerobic_shared_dance" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_aerobic_02.mp3" + "wave" "vo/taunts/demo/demo_aerobic_03.mp3" + "wave" "vo/taunts/demo/demo_aerobic_05.mp3" + "wave" "vo/taunts/demo/demo_aerobic_13.mp3" + "wave" "vo/taunts/demo/demo_aerobic_17.mp3" + "wave" "vo/taunts/demo/demo_aerobic_16.mp3" + "wave" "vo/taunts/demo/demo_aerobic_11.mp3" + "wave" "vo/taunts/demo/demo_aerobic_12.mp3" + "wave" "vo/taunts/demo/demo_aerobic_24.mp3" + "wave" "vo/taunts/demo/demo_aerobic_31.mp3" + "wave" "vo/taunts/demo/demo_aerobic_33.mp3" + "wave" "vo/taunts/demo/demo_aerobic_37.mp3" + "wave" "vo/taunts/demo/demo_aerobic_40.mp3" + "wave" "vo/taunts/demo/demo_aerobic_01.mp3" + "wave" "vo/taunts/demo/demo_aerobic_15.mp3" + "wave" "vo/taunts/demo/demo_aerobic_38.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Scout_AEROBIC +///////////////////////////////////////////// + +"taunt_scout_aerobic_shared_dance" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_aerobic_pos_30.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_31.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_36.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_37.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_38.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_52.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_53.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_62.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_67.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_68.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_54.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_55.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_65.mp3" + "wave" "vo/taunts/scout/scout_aerobic_pos_71.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_10.mp3" + "wave" "vo/scout_laughhappy01.mp3" + "wave" "vo/scout_laughlong01.mp3" + "wave" "vo/scout_laughlong02.mp3" + "wave" "vo/scout_triplejump01.mp3" + "wave" "vo/scout_triplejump03.mp3" + "wave" "vo/scout_triplejump02.mp3" + "wave" "vo/scout_triplejump04.mp3" + } +} + +"taunt_scout_aerobic_shared_dance_buttslap" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_09.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_01.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_03.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_05.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_06.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_07.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_08.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_09.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_11.mp3" + "wave" "vo/taunts/scout/scout_butt_stuff_20.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Soldier_AEROBIC +///////////////////////////////////////////// + +"taunt_soldier_aerobic_shared_dance_A" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_aerobic_04.mp3" + "wave" "vo/taunts/soldier/soldier_aerobic_07.mp3" + "wave" "vo/taunts/soldier/soldier_aerobic_13.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_22.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_int_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_06.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_29.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_int_12.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_02.mp3" + "wave" "vo/soldier_autoonfire02.mp3" + "wave" "vo/soldier_battlecry06.mp3" + "wave" "vo/soldier_cartgoingforwardoffense12.mp3" + "wave" "vo/soldier_cartgoingforwardoffense14.mp3" + "wave" "vo/soldier_incoming01.mp3" + "wave" "vo/soldier_laughevil02.mp3" + "wave" "vo/soldier_laughlong03.mp3" + "wave" "vo/soldier_laughlong02.mp3" + "wave" "vo/soldier_mvm_loot_godlike01.mp3" + "wave" "vo/soldier_mvm_wave_end01.mp3" + } +} + +"taunt_soldier_aerobic_shared_dance_B" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_09.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_30.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_05.mp3" + "wave" "vo/taunts/soldier/soldier_aerobic_14.mp3" + "wave" "vo/soldier_autocappedintelligence02.mp3" + "wave" "vo/soldier_laughshort01.mp3" + "wave" "vo/soldier_laughevil03.mp3" + "wave" "vo/soldier_laughshort04.mp3" + "wave" "vo/soldier_laughhappy03.mp3" + "wave" "vo/soldier_laughhappy02.mp3" + "wave" "vo/soldier_laughevil03.mp3" + "wave" "vo/soldier_laughhappy01.mp3" + "wave" "vo/soldier_laughlong01.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Sniper_AEROBIC +///////////////////////////////////////////// + +"taunt_sniper_aerobic_shared_dance_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_aerobic_16.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_19.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_21.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_23.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_07.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_10.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_14.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_02.mp3" + } +} + +"taunt_sniper_aerobic_shared_dance_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_aerobic_41.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_11.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_17.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_76.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_06.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_39.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Engineer_AEROBIC +///////////////////////////////////////////// + +"taunt_engineer_aerobic_shared_dance_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_aerobic_32.mp3" + "wave" "vo/taunts/engy/eng_aerobic_43.mp3" + "wave" "vo/taunts/engy/eng_aerobic_45.mp3" + "wave" "vo/taunts/engy/eng_aerobic_71.mp3" + "wave" "vo/taunts/engy/eng_aerobic_92.mp3" + "wave" "vo/taunts/engy/eng_aerobic_98.mp3" + "wave" "vo/taunts/engy/eng_aerobic_103.mp3" + "wave" "vo/taunts/engy/eng_aerobic_111.mp3" + "wave" "vo/taunts/engy/eng_aerobic_123.mp3" + "wave" "vo/taunts/engy/eng_aerobic_129.mp3" + "wave" "vo/taunts/engy/eng_bronco_09.mp3" + "wave" "vo/taunts/engy/eng_bronco_12.mp3" + "wave" "vo/taunts/engy/eng_bronco_02.mp3" + "wave" "vo/taunts/engy/eng_bronco_03.mp3" + "wave" "vo/engineer_laughlong02.mp3" + "wave" "vo/taunts/engy/eng_aerobic_02.mp3" + "wave" "vo/taunts/engy/eng_aerobic_03.mp3" + } +} + +"taunt_sniper_aerobic_shared_dance_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_aerobic_41.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_11.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_17.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_76.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_06.mp3" + "wave" "vo/taunts/sniper/sniper_aerobic_39.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Spy_AEROBIC +///////////////////////////////////////////// + +"taunt_spy_aerobic_finish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_aerobic_pos_15.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_32.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_33.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_07.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_rps_win_11.mp3" + } +} + +"taunt_spy_aerobic_shared_dance" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_aerobic_pos_12.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_41.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_20.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_43.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_45.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_10.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_11.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_44.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_01.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_05.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_06.mp3" + "wave" "vo/taunts/spy/spy_aerobic_pos_09.mp3" + } +} + +////////////////////////////////////////////// +//Taunt_Medic_AEROBIC +///////////////////////////////////////////// + +"taunt_medic_aerobic_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" + "wave" "vo/medic_positivevocalization03.mp3" + "wave" "vo/medic_sf12_badmagic09.mp3" + "wave" "vo/medic_sf12_badmagic12.mp3" + "wave" "vo/medic_sf12_taunts03.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" + "wave" "vo/medic_incoming02.mp3" + "wave" "vo/medic_cheers06.mp3" + } +} + +"taunt_medic_aerobic_spin" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_15.mp3" + } +} + +"taunt_medic_aerobic_outro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_admire_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_06.mp3" + "wave" "vo/medic_trade_taunts02.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_13.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_14.mp3" + } +} + +"taunt_medic_aerobic_shared_A" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/medic_sf13_influx_small02.mp3" + "wave" "vo/medic_specialcompleted11.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_06.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_int_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_22.mp3" + "wave" "vo/taunts/medic/medic_trade_04.mp3" + } +} + +"taunt_medic_aerobic_shared_B" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_admire_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_end_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_09.mp3" + "wave" "vo/medic_laughhappy03.mp3" + } +} + +///////////////////////////////////////////// +// demo true scotsman's call +///////////////////////////////////////////// + +"true_scotsmans_music" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "items/taunts/badpipes/badpipes1.mp3" + "wave" "items/taunts/badpipes/badpipes2.mp3" + "wave" "items/taunts/badpipes/badpipes3.mp3" + "wave" "items/taunts/badpipes/badpipes4.mp3" + "wave" "items/taunts/badpipes/badpipes5.mp3" + } +} + +"taunt_true_scotsmans.VO" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_badpipes_02.mp3" + "wave" "vo/taunts/demo/demo_badpipes_05.mp3" + "wave" "vo/taunts/demo/demo_badpipes_08.mp3" + "wave" "vo/taunts/demo/demo_badpipes_09.mp3" + } +} + +///////////////////////////////////////////// +//TAUNT: Soldier Maggot's Condolence +///////////////////////////////////////////// + +"taunt_maggots_condolence_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/soldier_HatOverHeartTaunt01.mp3" + "wave" "vo/soldier_HatOverHeartTaunt02.mp3" + "wave" "vo/soldier_HatOverHeartTaunt03.mp3" + "wave" "vo/soldier_HatOverHeartTaunt04.mp3" + "wave" "vo/soldier_HatOverHeartTaunt05.mp3" + "wave" "vo/soldier_HatOverHeartTaunt06.mp3" + } +} + +///////////////////////////////////////////// +//TAUNT: Soldier Fumblers Fanfare +///////////////////////////////////////////// + +"taunt_fumblers_fanfare_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "music/Trombonetauntv2.mp3" + } +} + +//SOLDIER TANK TAUNT +"soldier_taunt_tank_spawn" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/soldier_battlecry05.mp3" + "wave" "vo/soldier_battlecry06.mp3" + "wave" "vo/soldier_cheers05.mp3" + "wave" "vo/soldier_battlecry01.mp3" + "wave" "vo/taunts/soldier/soldier_tank_03.wav" + "wave" "vo/taunts/soldier/soldier_tank_04.wav" + "wave" "vo/taunts/soldier/soldier_tank_08.wav" + "wave" "vo/taunts/soldier/soldier_tank_09.wav" + "wave" "vo/taunts/soldier/soldier_tank_10.wav" + "wave" "vo/taunts/soldier/soldier_tank_11.wav" + "wave" "vo/taunts/soldier/soldier_tank_12.wav" + "wave" "vo/taunts/soldier/soldier_tank_13.wav" + "wave" "vo/taunts/soldier/soldier_tank_14.wav" + "wave" "vo/taunts/soldier/soldier_tank_16.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_05.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_08.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_13.wav" + } +} +"soldier_taunt_tank_shoot" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/soldier_KaBoomAlts01.mp3" + "wave" "vo/soldier_KaBoomAlts02.mp3" + "wave" "vo/soldier_KaBoomAlts03.mp3" + "wave" "vo/soldier_positivevocalization02.mp3" + "wave" "vo/soldier_incoming01.mp3" + "wave" "vo/soldier_laughevil03.mp3" + "wave" "vo/soldier_specialcompleted03.mp3" + "wave" "vo/taunts/soldier/soldier_tank_01.wav" + "wave" "vo/taunts/soldier/soldier_tank_02.wav" + "wave" "vo/taunts/soldier/soldier_tank_06.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_01.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_02.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_03.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_04.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_06.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_09.wav" + "wave" "vo/taunts/soldier/soldier_tank_warcry_12.wav" + } +} + +//SCOUT FRESHBEATS +"Taunt.Freshbeats" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_conga_fun_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_17.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_19.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_01.mp3" + } +} + +////////////////////////////////////////////// +//HEAVY : Taunt table flip +///////////////////////////////////////////// + +"taunt_table_flip_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_trade_01.mp3" + "wave" "vo/taunts/heavy/heavy_trade_03.mp3" + "wave" "vo/taunts/heavy/heavy_trade_04.mp3" + "wave" "vo/taunts/heavy/heavy_trade_06.mp3" + "wave" "vo/taunts/heavy/heavy_trade_01.mp3" + "wave" "vo/taunts/heavy/heavy_trade_03.mp3" + "wave" "vo/taunts/heavy/heavy_trade_04.mp3" + "wave" "vo/taunts/heavy/heavy_trade_06.mp3" + "wave" "vo/heavy_mvm_resurrect06.mp3" + "wave" "vo/heavy_mvm_loot_rare01.mp3" + "wave" "vo/taunts/heavy/heavy_trade_04.mp3" + "wave" "vo/taunts/heavy/heavy_trade_06.mp3" + "wave" "vo/heavy_mvm_resurrect06.mp3" + "wave" "vo/taunts/heavy/tableflip_quicklaugh_07.mp3" + } +} + +"taunt_table_flip_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_11.mp3" + "wave" "vo/heavy_incoming01.mp3" + "wave" "vo/heavy_incoming02.mp3" + "wave" "vo/heavy_positivevocalization02.mp3" + "wave" "vo/heavy_niceshot02.mp3" + "wave" "vo/heavy_laughterbig03.mp3" + "wave" "vo/heavy_positivevocalization02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_01.mp3" + } +} + +"taunt_table_flip_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_sandwichtaunt01.mp3" + "wave" "vo/heavy_sandwichtaunt02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_11.mp3" + "wave" "vo/heavy_incoming01.mp3" + "wave" "vo/heavy_incoming02.mp3" + "wave" "vo/taunts/heavy/heavy_trade_06.mp3" + } +} + +"taunt_table_flip_eat" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/tableflip_sandvich_eat_01.mp3" +} + +//////////////////////////////////////////////////////////////// +//YETI TAUNT +//////////////////////////////////////////////////////////////// + +"taunt_yeti_engineer" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\engy\eng_taunt_cong_fun_35.mp3" + "wave" "vo\taunts\engy\eng_taunt_flip_admire_14.mp3" + "wave" "vo\taunts\engy\eng_taunt_flip_admire_15.mp3" + "wave" "vo\taunts\engy\eng_taunt_flip_end_08.mp3" + "wave" "vo\taunts\engy\eng_taunt_head_end_07.mp3" + "wave" "vo\taunts\engy\eng_taunt_head_end_13.mp3" + } +} + +"taunt_yeti_sniper" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\taunts\sniper\sniper_taunt_head_end_33.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_head_end_37.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_head_end_39.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_rps_win_03.mp3" + "wave" "vo\taunts\sniper\sniper_taunt_rps_win_14.mp3" + "wave" "vo\taunts\sniper\sniper_trade_05.mp3" + } +} + +"taunt_yeti_spy_negative" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\spy_negativevocalization02.mp3" + "wave" "vo\spy_negativevocalization07.mp3" + "wave" "vo\spy_negativevocalization08.mp3" + "wave" "vo\spy_negativevocalization09.mp3" + } +} + +"taunt_yeti_spy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\spy_sf12_badmagic03.mp3" + "wave" "vo\spy_sf12_badmagic02.mp3" + "wave" "vo\spy_sf12_badmagic07.mp3" + "wave" "vo\spy_sf13_magic_reac03.mp3" + "wave" "vo\taunts\spy\spy_taunt_dosi_end_11.mp3" + "wave" "vo\taunts\spy\spy_taunt_dosi_end_06.mp3" + } +} + +"taunt_yeti_pyro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_05.mp3" + } +} + +"taunt_yeti_demo" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\demoman_LaughHappy01.mp3" + "wave" "vo\demoman_LaughHappy02.mp3" + "wave" "vo\demoman_LaughShort01.mp3" + "wave" "vo\demoman_LaughShort02.mp3" + } +} + +"taunt_yeti_medic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\medic_Cheers01.mp3" + "wave" "vo\medic_Cheers04.mp3" + "wave" "vo\medic_LaughShort03.mp3" + "wave" "vo\medic_LaughShort03.mp3" + } +} + +"taunt_yeti_scout" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\scout_Cheers05.mp3" + "wave" "vo\scout_Cheers06.mp3" + "wave" "vo\scout_LaughHappy01.mp3" + "wave" "vo\scout_LaughShort02.mp3" + "wave" "vo\scout_mvm_loot_rare01.mp3" + "wave" "vo\scout_mvm_loot_rare04.mp3" + } +} + +"taunt_yeti_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\soldier_laughevil01.mp3" + "wave" "vo\soldier_laughevil02.mp3" + "wave" "vo\soldier_laughevil03.mp3" + "wave" "vo\soldier_laughshort01.mp3" + "wave" "vo\soldier_positivevocalization03.mp3" + "wave" "vo\soldier_sf12_goodmagic02.mp3" + "wave" "vo\soldier_sf12_goodmagic01.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_head_end_13.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_dosi_fun_30.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_dosi_fun_29.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_dosi_fun_05.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_admire_16.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_admire_01.mp3" + } +} + +"taunt_yeti_heavy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\heavy_sf12_badmagic07.mp3" + "wave" "vo\heavy_sf12_badmagic08.mp3" + "wave" "vo\heavy_sf12_badmagic09.mp3" + "wave" "vo\heavy_sf12_badmagic10.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_end_03.mp3" + "wave" "vo\taunts\heavy\heavy_taunt_head_end_01.mp3" + "wave" "vo\taunts\heavy\heavy_trade_04.mp3" + "wave" "vo\taunts\heavy\heavy_trade_06.mp3" + } +} +///////////////////////////////////////////// +//YETI PUNCH +///////////////////////////////////////////// + +"taunt_yetipunch_soldier_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo\taunts\soldier\soldier_taunt_flip_exert_31.mp3" +} + +"taunt_yetipunch_soldier_scream" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\soldier_paincrticialdeath01.mp3" + "wave" "vo\soldier_paincrticialdeath02.mp3" + "wave" "vo\soldier_paincrticialdeath04.mp3" + "wave" "vo\soldier_battlecry06.mp3" + "wave" "vo\soldier_battlecry05.mp3" + "wave" "vo\soldier_specialcompleted04.mp3" + } +} + +"taunt_yetipunch_soldier_jeers" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\soldier_PickAxeTaunt01.mp3" + "wave" "vo\soldier_PickAxeTaunt04.mp3" + "wave" "vo\soldier_PickAxeTaunt05.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_rps_int_08.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_rps_int_05.mp3" + "wave" "vo\taunts\soldier\soldier_taunt_rps_int_08.mp3" + } +} + +"taunt_yetipunch_soldier_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo\soldier_HatOverHeartTaunt01.mp3" + "wave" "vo\soldier_HatOverHeartTaunt02.mp3" + "wave" "vo\soldier_HatOverHeartTaunt03.mp3" + "wave" "vo\soldier_HatOverHeartTaunt05.mp3" + } +} + +"Taunt.SniperTooEasy" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/sniper_taunt_too_easy.wav" +} + +"taunt_yetipunch_sniper_end" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_specialcompleted13.mp3" + "wave" "vo/taunts/sniper/sniper_award12.mp3" + "wave" "vo/taunts/sniper/sniper_award04.mp3" + "wave" "vo/taunts/sniper/sniper_award07.mp3" + "wave" "vo/taunts/sniper/sniper_laughhappy01.mp3" + "wave" "vo/taunts/sniper/sniper_laughshort04.mp3" + } +} + + +"taunt.ScoutMopedStart" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_motorcycle_21.wav" + "wave" "vo/taunts/scout/scout_motorcycle_23.wav" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_int_07.wav" + "wave" "vo/taunts/scout/scout_taunt_head_pain_02.mp3" + + } +} + +"taunt.ScoutMopedWheely" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_motorcycle_03.wav" + "wave" "vo/taunts/scout/scout_motorcycle_04.wav" + "wave" "vo/taunts/scout/scout_motorcycle_05.wav" + "wave" "vo/taunts/scout/scout_motorcycle_06.wav" + "wave" "vo/taunts/scout/scout_motorcycle_07.wav" + "wave" "vo/taunts/scout/scout_motorcycle_13.wav" + "wave" "vo/taunts/scout/scout_motorcycle_15.wav" + "wave" "vo/taunts/scout/scout_motorcycle_17.wav" + "wave" "vo/taunts/scout/scout_motorcycle_29.wav" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/scout/scout_motorcycle_09.wav" + "wave" "vo/taunts/scout/scout_motorcycle_12.wav" + "wave" "vo/taunts/scout/scout_motorcycle_07.wav" + "wave" "vo/taunts/scout/scout_motorcycle_18.wav" + "wave" "vo/taunts/scout/scout_motorcycle_19.wav" + "wave" "vo/taunts/scout/scout_motorcycle_32.wav" + "wave" "vo/taunts/scout/scout_motorcycle_33.wav" + "wave" "vo/taunts/scout/scout_motorcycle_34.wav" + "wave" "vo/taunts/scout/scout_motorcycle_10.wav" + } +} + +"taunt.ScoutMopedEnd" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_19.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_13.mp3" + } +} diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_lfce.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_lfce.lua new file mode 100644 index 000000000..7b468cc03 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_lfce.lua @@ -0,0 +1,1715 @@ +// Channels +// CHAN_AUTO = 0, +// CHAN_WEAPON = 1, +// CHAN_VOICE = 2, +// CHAN_ITEM = 3, +// CHAN_BODY = 4, +// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area +// CHAN_STATIC = 6, // allocate channel from the static area +// these can be set with "channel" "2" or "channel" "chan_voice" + +// ------------------------------------------------------------------------------------ // +// REPRESSOR SOUNDS +// ------------------------------------------------------------------------------------ // + +// VO + +"Repressor.BattleCry01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_battlecry_01.wav" +} +"Repressor.BattleCry02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_battlecry_02.wav" +} +"Repressor.BattleCry03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_battlecry_03.wav" +} +"Repressor.Medic01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_medic_01.wav" +} +"Repressor.Medic02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_medic_02.wav" +} +"Repressor.Medic03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_medic_03.wav" +} +"Repressor.Domination01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_01.wav" +} +"Repressor.Domination02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_02.wav" +} +"Repressor.Domination03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_03.wav" +} +"Repressor.Domination04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_04.wav" +} +"Repressor.Domination05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_05.wav" +} +"Repressor.Domination06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_06.wav" +} +"Repressor.Domination07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_07.wav" +} +"Repressor.Domination08" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_killem_08.wav" +} +"Repressor.Go01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_go_01.wav" +} +"Repressor.Go02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_go_02.wav" +} +"Repressor.HelpMe01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_help_01.wav" +} +"Repressor.HelpMe02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_help_02.wav" +} +"Repressor.HelpMe03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_help_03.wav" +} +"Repressor.HelpMe04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_help_04.wav" +} +"Repressor.Incoming01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_01.wav" +} +"Repressor.Incoming02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_02.wav" +} +"Repressor.Incoming03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_03.wav" +} +"Repressor.Incoming04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_04.wav" +} +"Repressor.Incoming05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_05.wav" +} +"Repressor.Incoming06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_06.wav" +} +"Repressor.Incoming07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_07.wav" +} +"Repressor.Incoming08" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_08.wav" +} +"Repressor.Incoming09" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_incoming_09.wav" +} +"Repressor.Yes01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_yes_01.wav" +} +"Repressor.Yes02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_yes_02.wav" +} +"Repressor.Yes03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_yes_03.wav" +} +"Repressor.Yes04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_yes_04.wav" +} +"Repressor.Yes05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_yes_05.wav" +} +"Repressor.Positive01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_positive_01.wav" +} +"Repressor.Positive02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_positive_02.wav" +} +"Repressor.Positive03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_positive_03.wav" +} +"Repressor.Positive04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_positive_04.wav" +} +"Repressor.No01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_no_01.wav" +} +"Repressor.No02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_no_02.wav" +} +"Repressor.No03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_no_03.wav" +} +"Repressor.No04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_no_04.wav" +} +"Repressor.No05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_no_05.wav" +} +"Repressor.Pain01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pain_01.wav" +} +"Repressor.Pain02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pain_02.wav" +} +"Repressor.Pain03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pain_03.wav" +} +"Repressor.Pain04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pain_04.wav" +} +"Repressor.Pain05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pain_05.wav" +} +"Repressor.Pain06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pain_06.wav" +} +"Repressor.OnFire01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_onfire_01.wav" +} +"Repressor.OnFire02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_onfire_02.wav" +} +"Repressor.OnFire03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_onfire_03.wav" +} +"Repressor.OnFire04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_onfire_04.wav" +} +"Repressor.OnFire05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_onfire_05.wav" +} +"Repressor.OnFire06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_onfire_06.wav" +} +"Repressor.PointWon01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_winpoint_01.wav" +} +"Repressor.PointWon02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_winpoint_02.wav" +} +"Repressor.PointWon03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_winpoint_03.wav" +} +"Repressor.PointWon04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_winpoint_04.wav" +} +"Repressor.PointLost01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pointlost_01.wav" +} +"Repressor.PointLost02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pointlost_02.wav" +} +"Repressor.PointLost03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pointlost_03.wav" +} +"Repressor.PointLost04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pointlost_04.wav" +} +"Repressor.PointLost05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_pointlost_05.wav" +} +"Repressor.Negative01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_negative_01.wav" +} +"Repressor.Negative02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_negative_02.wav" +} + +//Death Sounds + +"Repressor.Death" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/suppressor/vo/sup_die_01.wav" + "wave" "player/suppressor/vo/sup_die_02.wav" + "wave" "player/suppressor/vo/sup_die_03.wav" + "wave" "player/suppressor/vo/sup_die_04.wav" + "wave" "player/suppressor/vo/sup_die_05.wav" + "wave" "player/suppressor/vo/sup_die_06.wav" + "wave" "player/suppressor/vo/sup_die_07.wav" + "wave" "player/suppressor/vo/sup_die_08.wav" + "wave" "player/suppressor/vo/sup_die_09.wav" +} + +// ------------------------------------------------------------------------------------ // +// END OF REPRESSOR SOUNDS +// ------------------------------------------------------------------------------------ // + +// ------------------------------------------------------------------------------------ // +// ENFORCER SOUNDS +// ------------------------------------------------------------------------------------ // + +"Enforcer.BattleCry01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_battlecry1.wav" +} +"Enforcer.BattleCry02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_battlecry2.wav" +} +"Enforcer.BattleCry03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_battlecry3.wav" +} +"Enforcer.Medic01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_callmedic1.wav" +} +"Enforcer.Medic02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_callmedic2.wav" +} +"Enforcer.Domination01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_killem1.wav" +} +"Enforcer.Domination02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_killem2.wav" +} +"Enforcer.Domination03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_killem3.wav" +} +"Enforcer.Pain01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_pain1.wav" +} +"Enforcer.Pain02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_pain2.wav" +} +"Enforcer.Pain03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_pain3.wav" +} +"Enforcer.Pain04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_pain4.wav" +} +"Enforcer.OnFire01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_onfire1.wav" +} +"Enforcer.OnFire02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_onfire2.wav" +} +"Enforcer.OnFire03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_onfire3.wav" +} +"Enforcer.Go01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_go1.wav" +} +"Enforcer.Go02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_go2.wav" +} +"Enforcer.Go03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_go3.wav" +} +"Enforcer.HelpMe01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_callhelp1.wav" +} +"Enforcer.HelpMe02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_callhelp2.wav" +} +"Enforcer.HelpMe03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_callhelp3.wav" +} +"Enforcer.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_sentryhere1.wav" +} +"Enforcer.NeedSentry02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_sentryhere2.wav" +} +"Enforcer.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_dispenserhere1.wav" +} +"Enforcer.NeedDispenser02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_dispenserhere2.wav" +} +"Enforcer.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_teleporterhere1.wav" +} +"Enforcer.NeedTeleporter02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_teleporterhere2.wav" +} +"Enforcer.Incoming01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_incoming1.wav" +} +"Enforcer.Incoming02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_incoming2.wav" +} +"Enforcer.Incoming03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_incoming3.wav" +} +"Enforcer.Jeers01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_jeers1.wav" +} +"Enforcer.Jeers02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_jeers2.wav" +} +"Enforcer.Jeers03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_jeers3.wav" +} +"Enforcer.Sniper01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_snipercallout1.wav" +} +"Enforcer.Sniper02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_snipercallout2.wav" +} +"Enforcer.UberMe01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_uberme1.wav" +} +"Enforcer.UberMe02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_uberme2.wav" +} +"Enforcer.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_sentryahead1.wav" +} +"Enforcer.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_sentryahead2.wav" +} +"Enforcer.Yes01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_yes1.wav" +} +"Enforcer.Yes02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_yes2.wav" +} +"Enforcer.Thanks01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_thanks1.wav" +} +"Enforcer.Thanks02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_thanks2.wav" +} +"Enforcer.Positive01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_positive1.wav" +} +"Enforcer.No01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_no1.wav" +} +"Enforcer.No02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_no2.wav" +} +"Enforcer.No03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_no3.wav" +} +"Enforcer.Death" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_95dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_death1.wav" + "wave" "player/zombine/vo/zombine_death3.wav" +} +"Enforcer.DeathCrit" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/zombine/vo/zombine_death2.wav" +} + +// ------------------------------------------------------------------------------------ // +// END OF ENFORCER SOUNDS +// ------------------------------------------------------------------------------------ // + +// ------------------------------------------------------------------------------------ // +// JOHN SOUNDS +// ------------------------------------------------------------------------------------ // + +"John.Battlecry01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnbattlecry01.wav" +} +"John.Battlecry02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnbattlecry02.wav" +} +"John.Battlecry03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnbattlecry03.wav" +} +"John.Battlecry04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnbattlecry04.wav" +} +"John.Battlecry05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnbattlecry05.wav" +} +"John.Medic01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnmedic01.wav" +} +"John.Medic02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnmedic02.wav" +} +"John.Go01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johngo01.wav" +} +"John.Go02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johngo02.wav" +} +"John.Go03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johngo03.wav" +} +"John.Go04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johngo04.wav" +} +"John.Go04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johngo04.wav" +} +"John.Yes01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnyes01.wav" +} +"John.Yes02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnyes02.wav" +} +"John.Yes03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnyes03.wav" +} +"John.Yes04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnyes04.wav" +} +"John.Incoming01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnincoming01.wav" +} +"John.Incoming02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnincoming02.wav" +} +"John.Incoming03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnincoming03.wav" +} +"John.Incoming04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnincoming04.wav" +} +"John.Incoming05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnincoming05.wav" +} +"John.Incoming06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnincoming06.wav" +} +"John.Charge01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncharge01.wav" +} +"John.Charge02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncharge02.wav" +} +"John.Charge03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncharge03.wav" +} +"John.Charge04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncharge04.wav" +} +"John.Help01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhelp01.wav" +} +"John.Help02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhelp02.wav" +} +"John.Help03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhelp03.wav" +} +"John.Help04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhelp04.wav" +} +"John.Help05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhelp05.wav" +} +"John.Help06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhelp06.wav" +} +"John.Cheers01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncheers01.wav" +} +"John.Cheers02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncheers02.wav" +} +"John.Cheers03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncheers03.wav" +} +"John.Cheers04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncheers04.wav" +} +"John.Cheers05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncheers05.wav" +} +"John.Cheers06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncheers06.wav" +} +"John.Positive01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpositive01.wav" +} +"John.Positive02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpositive02.wav" +} +"John.Positive03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpositive03.wav" +} +"John.Positive04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpositive04.wav" +} +"John.Positive05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpositive05.wav" +} +"John.Positive06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpositive06.wav" +} +"John.Negative01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative01.wav" +} +"John.Negative02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative02.wav" +} +"John.Negative03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative03.wav" +} +"John.Negative04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative04.wav" +} +"John.Negative05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative05.wav" +} +"John.Negative06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative06.wav" +} +"John.Negative07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnnegative07.wav" +} +"John.NiceShot01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnniceshot01.wav" +} +"John.Thanks01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnthanks01.wav" +} +"John.Thanks02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnthanks02.wav" +} +"John.Thanks03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnthanks03.wav" +} +"John.CapturedPoint01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpointcap01.wav" +} +"John.CapturedPoint02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpointcap02.wav" +} +"John.CapturedPoint03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpointcap03.wav" +} +"John.CapturedPoint04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnpointcap04.wav" +} +"John.LostPoint01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnlosepoint01.wav" +} +"John.LostPoint02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnlosepoint02.wav" +} +"John.LostPoint03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnlosepoint03.wav" +} +"John.LostPoint04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnlosepoint04.wav" +} +"John.Jeers01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers01.wav" +} +"John.Jeers02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers02.wav" +} +"John.Jeers03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers03.wav" +} +"John.Jeers04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers04.wav" +} +"John.Jeers05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers05.wav" +} +"John.Jeers06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers06.wav" +} +"John.Jeers07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnjeers07.wav" +} +"John.Domination01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination01.wav" +} +"John.Domination02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination02.wav" +} +"John.Domination03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination03.wav" +} +"John.Domination04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination04.wav" +} +"John.Domination05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination05.wav" +} +"John.Domination06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination06.wav" +} +"John.Domination07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination07.wav" +} +"John.Domination08" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination08.wav" +} +"John.Domination01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johndomination01.wav" +} +"John.Headcrab01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnheadcrabs01.wav" +} +"John.Headcrab02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnheadcrabs02.wav" +} +"John.Trap01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johntrap01.wav" +} +"John.Trap02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johntrap02.wav" +} +"John.Ammo01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnammo01.wav" +} +"John.Ammo02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnammo02.wav" +} +"John.Ammo03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnammo03.wav" +} +"John.Ammo04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnammo04.wav" +} +"John.Ammo05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnammo05.wav" +} +"John.Health01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhealth01.wav" +} +"John.Health02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhealth02.wav" +} +"John.Health03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhealth03.wav" +} +"John.Health04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhealth04.wav" +} +"John.Health05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnhealth05.wav" +} +"John.No01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno01.wav" +} +"John.No02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno02.wav" +} +"John.No03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno03.wav" +} +"John.No04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno04.wav" +} +"John.No05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno05.wav" +} +"John.No06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno06.wav" +} +"John.No07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno07.wav" +} +"John.No08" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnno08.wav" +} +"John.Combine01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncombine01.wav" +} +"John.Combine02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johncombine02.wav" +} +"John.Strider01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnstrider01.wav" +} +"John.Zombie01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnzombies01.wav" +} +"John.Zombie02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnzombies02.wav" +} + +// Pain Sounds + +"John.SeverePain01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsevere01.wav" +} +"John.SeverePain02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsevere02.wav" +} +"John.SeverePain03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsevere03.wav" +} +"John.SeverePain04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsevere04.wav" +} +"John.SeverePain05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsevere05.wav" +} +"John.SeverePain06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsevere06.wav" +} +"John.SharpPain01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp01.wav" +} +"John.SharpPain02" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp02.wav" +} +"John.SharpPain03" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp03.wav" +} +"John.SharpPain04" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp04.wav" +} +"John.SharpPain05" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp05.wav" +} +"John.SharpPain06" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp06.wav" +} +"John.SharpPain07" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "player/john/johnsharp07.wav" +} + +// ------------------------------------------------------------------------------------ // +// END OF JOHN SOUNDS +// ------------------------------------------------------------------------------------ // + + +// ------------------------------------------------------------------------------------ // +// SAXTON SOUNDS +// ------------------------------------------------------------------------------------ // + +"saxton.LaugherBigSnort01" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_94dB" + "volume" "VOL_NORM" + "wave" "mvm/saxton_hale_by_matthew_simmons/laugh_01.mp3" +} + +// ------------------------------------------------------------------------------------ // +// END OF SAXTON SOUNDS +// ------------------------------------------------------------------------------------ // \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_merasmus.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_merasmus.lua new file mode 100644 index 000000000..e011a63e9 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_merasmus.lua @@ -0,0 +1,431 @@ +//----------------------------------------------------------------------------- +//Merasmus Halloween Contracts +//----------------------------------------------------------------------------- +// +"hall2015_get_contract" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_getcontract_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_17.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_20.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_21.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_22.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_26.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_17.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_20.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_21.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_22.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_26.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_17.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_20.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_21.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_22.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_26.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_17.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_20.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_21.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_22.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_26.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_27.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_17.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_18.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_19.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_20.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_21.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontractrare_22.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmerasrare_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_getcontract_08.mp3" + + } +} +"hall2015_win_contract" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_14.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_17.mp3" + "wave" "vo/halloween_merasmus/hall2015_contractwin_03.mp3" + } +} +"hall2015_fight_merasmus" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_rare_08.mp3" + } +} +"hall2015_beat_merasmus" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_14.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_fightmeras_win_09.mp3" + } +} +"hall2015_bonus" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_bonus_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_bonus_05.mp3" + } +} +"hall2015_reward" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_reward_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_14.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_15.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_16.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_20.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_25.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_22.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_21.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_13.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_18.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_26.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_27.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_28.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_29.mp3" + "wave" "vo/halloween_merasmus/hall2015_reward_30.mp3" + } +} +//----------------------------------------------------------------------------- +//Merasmus Gargoyle Notifications +//----------------------------------------------------------------------------- +// +"sf15.Merasmus.Gargoyle.Spawn" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_garg_spawn_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_spawn_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_spawn_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_spawn_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_spawn_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_spawn_06.mp3" + + } +} +"sf15.Merasmus.Gargoyle.Moved" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_garg_moved_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_moved_05.mp3" + } +} +"sf15.Merasmus.Gargoyle.Got" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_garg_gone_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_05.mp3" + } +} +"sf15.Merasmus.Gargoyle.Gone" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_garg_gone_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_07.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_garg_gone_09.mp3" + } +} +//----------------------------------------------------------------------------- +//Pumpkin Bomb +//----------------------------------------------------------------------------- +// +"sf15.Pumpkin.Bomb" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_08.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_09.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_10.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_11.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_12.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_14.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbomb_15.mp3" + + } +} +"sf15.Pumpkin.Bomb.Explode" +{ + "channel" "CHAN_VOICE2" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_01.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_02.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_03.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_04.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_05.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_06.mp3" + "wave" "vo/halloween_merasmus/hall2015_pumpbombboom_07.mp3" + } +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm.lua new file mode 100644 index 000000000..b47f2121f --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm.lua @@ -0,0 +1,25367 @@ +// +// +// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! +// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! +// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! +// +// VOL_NORM 1.0f +// +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- +// +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8666f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f +// +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, = 3.9 +// SNDLVL_55dB = 55, = 3.0 +// SNDLVL_IDLE = 60, = 2.0 +// SNDLVL_TALKING = 60, = 2.0 +// SNDLVL_75dB = 60, = 2.0 +// SNDLVL_75dB = 65, = 1.5 +// SNDLVL_STATIC = 66, = 1.25 +// SNDLVL_75dB = 70, = 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, = 0.8 +// SNDLVL_80dB = 80, = 0.7 +// SNDLVL_85dB = 85, = 0.6 +// SNDLVL_90dB = 90, = 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, = 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, = 0.27 +// SNDLVL_140dB = 140, = 0.2 +// SNDLVL_150dB = 150, = 0.2 +// + +//----------------------------------------------------------------------------- +// Player Deaths +//----------------------------------------------------------------------------- + +"Demoman.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/demoman_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSevere04.mp3" + } +} + +"Demoman.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath04.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath05.mp3" + } +} + +"Demoman.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath04.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath05.mp3" + } +} + +"Demoman.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/demoman_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSharp05.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSharp06.mp3" + "wave" "vo/mvm/norm/demoman_mvm_PainSharp07.mp3" + } +} + +"Engineer.MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/norm/engineer_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSevere04.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSevere05.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSevere06.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSevere07.mp3" + } +} + +"Engineer.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath04.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath05.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath06.mp3" + } +} + +"Engineer.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath04.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath05.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath06.mp3" + } +} + +"Engineer.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/norm/engineer_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp05.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp06.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp07.mp3" + "wave" "vo/mvm/norm/engineer_mvm_PainSharp08.mp3" + } +} + + + +"Heavy.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/heavy_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainSevere03.mp3" + } +} + +"Heavy.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath03.mp3" + } +} + +"Heavy.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath03.mp3" + } +} + +"Heavy.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/heavy_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/heavy_mvm_PainSharp05.mp3" + } +} + + + +"Medic.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/medic_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSevere04.mp3" + } +} + +"Medic.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath04.mp3" + } +} + +"Medic.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath04.mp3" + } +} + +"Medic.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/medic_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp05.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp06.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp07.mp3" + "wave" "vo/mvm/norm/medic_mvm_PainSharp08.mp3" + } +} + + + +"Pyro.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/pyro_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSevere04.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSevere05.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSevere06.mp3" + } +} + +"Pyro.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath03.mp3" + } +} + +"Pyro.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath03.mp3" + } +} + +"Pyro.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/pyro_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSharp05.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSharp06.mp3" + "wave" "vo/mvm/norm/pyro_mvm_PainSharp07.mp3" + } +} + + +"Scout.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/scout_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSevere04.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSevere05.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSevere06.mp3" + } +} + +"Scout.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath03.mp3" + } +} + +"Scout.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath03.mp3" + } +} + +"Scout.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/scout_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp05.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp06.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp07.mp3" + "wave" "vo/mvm/norm/scout_mvm_PainSharp08.mp3" + } +} + + +"Sniper.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/sniper_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainSevere04.mp3" + } +} + +"Sniper.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath04.mp3" + } +} + +"Sniper.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath04.mp3" + } +} + +"Sniper.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/sniper_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/sniper_mvm_PainSharp04.mp3" + } +} + + +"Spy.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/spy_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSevere04.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSevere05.mp3" + } +} + +"Spy.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath03.mp3" + } +} + +"Spy.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath03.mp3" + } +} + +"Spy.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/spy_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/spy_mvm_PainSharp04.mp3" + } +} + + +"Soldier.MVM_Death" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/soldier_mvm_PainSevere01.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSevere02.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSevere03.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSevere04.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSevere05.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSevere06.mp3" + } +} + +"Soldier.MVM_CritDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath04.mp3" + } +} + +"Soldier.MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath01.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath02.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath03.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath04.mp3" + } +} + +"Soldier.MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "rndwave" + { + "wave" "vo/mvm/norm/soldier_mvm_PainSharp01.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp02.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp03.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp04.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp05.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp06.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp07.mp3" + "wave" "vo/mvm/norm/soldier_mvm_PainSharp08.mp3" + } +} + + +//----------------------------------------------------------------------------- +// End Player Deaths +//----------------------------------------------------------------------------- + + +"Demoman.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ActivateCharge01.mp3" +} + +"Demoman.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ActivateCharge02.mp3" +} + +"Demoman.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ActivateCharge03.mp3" +} + +"Demoman.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoCappedControlPoint01.mp3" +} + +"Demoman.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoCappedControlPoint02.mp3" +} + +"Demoman.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoCappedControlPoint03.mp3" +} + +"Demoman.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoCappedIntelligence01.mp3" +} + +"Demoman.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoCappedIntelligence02.mp3" +} + +"Demoman.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoCappedIntelligence03.mp3" +} + +"Demoman.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoDejectedTie01.mp3" +} + +"Demoman.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoDejectedTie02.mp3" +} + +"Demoman.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoDejectedTie03.mp3" +} + +"Demoman.MVM_AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoDejectedTie04.mp3" +} + +"Demoman.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoOnFire01.mp3" +} + +"Demoman.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoOnFire02.mp3" +} + +"Demoman.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_AutoOnFire03.mp3" +} + +"Demoman.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry01.mp3" +} + +"Demoman.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry02.mp3" +} + +"Demoman.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry03.mp3" +} + +"Demoman.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry04.mp3" +} + +"Demoman.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry05.mp3" +} + +"Demoman.MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry06.mp3" +} + +"Demoman.MVM_BattleCry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_BattleCry07.mp3" +} + +"Demoman.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers01.mp3" +} + +"Demoman.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers02.mp3" +} + +"Demoman.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers03.mp3" +} + +"Demoman.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers04.mp3" +} + +"Demoman.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers05.mp3" +} + +"Demoman.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers06.mp3" +} + +"Demoman.MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers07.mp3" +} + +"Demoman.MVM_Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Cheers08.mp3" +} + +"Demoman.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpy01.mp3" +} + +"Demoman.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpy02.mp3" +} + +"Demoman.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpy03.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify01.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify02.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify03.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify04.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify05.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify06.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify07.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify08.mp3" +} + +"Demoman.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_CloakedSpyIdentify09.mp3" +} + +"Demoman.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Go01.mp3" +} + +"Demoman.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Go02.mp3" +} + +"Demoman.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Go03.mp3" +} + +"Demoman.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_GoodJob01.mp3" +} + +"Demoman.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_GoodJob02.mp3" +} + +"Demoman.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HeadLeft01.mp3" +} + +"Demoman.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HeadLeft02.mp3" +} + +"Demoman.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HeadLeft03.mp3" +} + +"Demoman.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HeadRight01.mp3" +} + +"Demoman.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HeadRight02.mp3" +} + +"Demoman.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HeadRight03.mp3" +} + +"Demoman.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMe01.mp3" +} + +"Demoman.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMe02.mp3" +} + +"Demoman.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMe03.mp3" +} + +"Demoman.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMeCapture01.mp3" +} + +"Demoman.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMeCapture02.mp3" +} + +"Demoman.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMeCapture03.mp3" +} + +"Demoman.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMeDefend01.mp3" +} + +"Demoman.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMeDefend02.mp3" +} + +"Demoman.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_HelpMeDefend03.mp3" +} + +"Demoman.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Incoming01.mp3" +} + +"Demoman.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Incoming02.mp3" +} + +"Demoman.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Incoming03.mp3" +} + +"Demoman.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers01.mp3" +} + +"Demoman.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers02.mp3" +} + +"Demoman.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers03.mp3" +} + +"Demoman.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers04.mp3" +} + +"Demoman.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers05.mp3" +} + +"Demoman.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers06.mp3" +} + +"Demoman.MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers07.mp3" +} + +"Demoman.MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers08.mp3" +} + +"Demoman.MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers09.mp3" +} + +"Demoman.MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers10.mp3" +} + +"Demoman.MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Jeers11.mp3" +} + +"Demoman.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughEvil01.mp3" +} + +"Demoman.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughEvil02.mp3" +} + +"Demoman.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughEvil03.mp3" +} + +"Demoman.MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughEvil04.mp3" +} + +"Demoman.MVM_LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughEvil05.mp3" +} + +"Demoman.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughHappy01.mp3" +} + +"Demoman.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughHappy02.mp3" +} + +"Demoman.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughLong01.mp3" +} + +"Demoman.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughLong02.mp3" +} + +"Demoman.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughShort01.mp3" +} + +"Demoman.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughShort02.mp3" +} + +"Demoman.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughShort03.mp3" +} + +"Demoman.MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughShort04.mp3" +} + +"Demoman.MVM_LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughShort05.mp3" +} + +"Demoman.MVM_LaughShort06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_LaughShort06.mp3" +} + +"Demoman.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Medic01.mp3" +} + +"Demoman.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Medic02.mp3" +} + +"Demoman.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Medic03.mp3" +} + +"Demoman.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_MoveUp01.mp3" +} + +"Demoman.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_MoveUp02.mp3" +} + +"Demoman.MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_MoveUp03.mp3" +} + +"Demoman.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NeedDispenser01.mp3" +} + +"Demoman.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NeedSentry01.mp3" +} + +"Demoman.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NeedTeleporter01.mp3" +} + +"Demoman.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NegativeVocalization01.mp3" +} + +"Demoman.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NegativeVocalization02.mp3" +} + +"Demoman.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NegativeVocalization03.mp3" +} + +"Demoman.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NegativeVocalization04.mp3" +} + +"Demoman.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NegativeVocalization05.mp3" +} + +"Demoman.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NegativeVocalization06.mp3" +} + +"Demoman.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NiceShot01.mp3" +} + +"Demoman.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NiceShot02.mp3" +} + +"Demoman.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_NiceShot03.mp3" +} + +"Demoman.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_No01.mp3" +} + +"Demoman.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_No02.mp3" +} + +"Demoman.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_No03.mp3" +} + +"Demoman.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath01.mp3" +} + +"Demoman.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath02.mp3" +} + +"Demoman.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath03.mp3" +} + +"Demoman.MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath04.mp3" +} + +"Demoman.MVM_PainCrticialDeath05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainCrticialDeath05.mp3" +} + +"Demoman.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSevere01.mp3" +} + +"Demoman.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSevere02.mp3" +} + +"Demoman.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSevere03.mp3" +} + +"Demoman.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSevere04.mp3" +} + +"Demoman.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp01.mp3" +} + +"Demoman.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp02.mp3" +} + +"Demoman.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp03.mp3" +} + +"Demoman.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp04.mp3" +} + +"Demoman.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp05.mp3" +} + +"Demoman.MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp06.mp3" +} + +"Demoman.MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" +// "volume" "0.820" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/demoman_mvm_PainSharp07.mp3" +} + +"Demoman.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_PositiveVocalization01.mp3" +} + +"Demoman.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_PositiveVocalization02.mp3" +} + +"Demoman.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_PositiveVocalization03.mp3" +} + +"Demoman.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_PositiveVocalization04.mp3" +} + +"Demoman.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_PositiveVocalization05.mp3" +} + +"Demoman.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SentryAhead01.mp3" +} + +"Demoman.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SentryAhead02.mp3" +} + +"Demoman.MVM_SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SentryAhead03.mp3" +} + +"Demoman.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Demoman.MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted-AssistedKill02.mp3" +} + +"Demoman.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted01.mp3" +} + +"Demoman.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted02.mp3" +} + +"Demoman.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted03.mp3" +} + +"Demoman.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted04.mp3" +} + +"Demoman.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted05.mp3" +} + +"Demoman.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted06.mp3" +} + +"Demoman.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted07.mp3" +} + +"Demoman.MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted08.mp3" +} + +"Demoman.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted09.mp3" +} + +"Demoman.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted10.mp3" +} + +"Demoman.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted11.mp3" +} + +"Demoman.MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_SpecialCompleted12.mp3" +} + +"Demoman.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_StandOnThePoint01.mp3" +} + +"Demoman.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_StandOnThePoint02.mp3" +} + +"Demoman.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts01.mp3" +} + +"Demoman.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts02.mp3" +} + +"Demoman.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts03.mp3" +} + +"Demoman.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts04.mp3" +} + +"Demoman.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts05.mp3" +} + +"Demoman.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts06.mp3" +} + +"Demoman.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts07.mp3" +} + +"Demoman.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts08.mp3" +} + +"Demoman.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts09.mp3" +} + +"Demoman.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts10.mp3" +} + +"Demoman.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts11.mp3" +} + +"Demoman.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts12.mp3" +} + +"Demoman.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts13.mp3" +} + +"Demoman.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts14.mp3" +} + +"Demoman.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts15.mp3" +} + +"Demoman.MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/demoman_mvm_Taunts16.mp3" +} + +"Demoman.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Thanks01.mp3" +} + +"Demoman.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Thanks02.mp3" +} + +"Demoman.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ThanksForTheHeal01.mp3" +} + +"Demoman.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ThanksForTheHeal02.mp3" +} + +"Demoman.MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ThanksForTheHeal03.mp3" +} + +"Demoman.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ThanksForTheTeleporter01.mp3" +} + +"Demoman.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_ThanksForTheTeleporter02.mp3" +} + +"Demoman.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Yes01.mp3" +} + +"Demoman.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Yes02.mp3" +} + +"Demoman.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/demoman_mvm_Yes03.mp3" +} + +"Engineer.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ActivateCharge01.mp3" +} + +"Engineer.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ActivateCharge02.mp3" +} + +"Engineer.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ActivateCharge03.mp3" +} + +"Engineer.MVM_AutoAttackedBySpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoAttackedBySpy01.mp3" +} + +"Engineer.MVM_AutoAttackedBySpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoAttackedBySpy02.mp3" +} + +"Engineer.MVM_AutoAttackedBySpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoAttackedBySpy03.mp3" +} + +"Engineer.MVM_AutoBuildingDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoBuildingDispenser01.mp3" +} + +"Engineer.MVM_AutoBuildingDispenser02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoBuildingDispenser02.mp3" +} + +"Engineer.MVM_AutoBuildingSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoBuildingSentry01.mp3" +} + +"Engineer.MVM_AutoBuildingSentry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoBuildingSentry02.mp3" +} + +"Engineer.MVM_AutoBuildingTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoBuildingTeleporter01.mp3" +} + +"Engineer.MVM_AutoBuildingTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoBuildingTeleporter02.mp3" +} + +"Engineer.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoCappedControlPoint01.mp3" +} + +"Engineer.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoCappedControlPoint02.mp3" +} + +"Engineer.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoCappedControlPoint03.mp3" +} + +"Engineer.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoCappedIntelligence01.mp3" +} + +"Engineer.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoCappedIntelligence02.mp3" +} + +"Engineer.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoCappedIntelligence03.mp3" +} + +"Engineer.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoDejectedTie01.mp3" +} + +"Engineer.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoDejectedTie02.mp3" +} + +"Engineer.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoDejectedTie03.mp3" +} + +"Engineer.MVM_AutoDestroyedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoDestroyedDispenser01.mp3" +} + +"Engineer.MVM_AutoDestroyedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoDestroyedSentry01.mp3" +} + +"Engineer.MVM_AutoDestroyedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoDestroyedTeleporter01.mp3" +} + +"Engineer.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoOnFire01.mp3" +} + +"Engineer.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoOnFire02.mp3" +} + +"Engineer.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_AutoOnFire03.mp3" +} + +"Engineer.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry01.mp3" +} + +"Engineer.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry02.mp3" +} + +"Engineer.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry03.mp3" +} + +"Engineer.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry04.mp3" +} + +"Engineer.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry05.mp3" +} + +"Engineer.MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry06.mp3" +} + +"Engineer.MVM_BattleCry07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_BattleCry07.mp3" +} + +"Engineer.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers01.mp3" +} + +"Engineer.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers02.mp3" +} + +"Engineer.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers03.mp3" +} + +"Engineer.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers04.mp3" +} + +"Engineer.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers05.mp3" +} + +"Engineer.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers06.mp3" +} + +"Engineer.MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Cheers07.mp3" +} + +"Engineer.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpy01.mp3" +} + +"Engineer.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpy02.mp3" +} + +"Engineer.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpy03.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify01.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify02.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify03.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify04.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify05.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify06.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify07.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify08.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify09.mp3" +} + +"Engineer.MVM_CloakedSpyIdentify10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_CloakedSpyIdentify10.mp3" +} + +"Engineer.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Go01.mp3" +} + +"Engineer.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Go02.mp3" +} + +"Engineer.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Go03.mp3" +} + +"Engineer.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_GoodJob01.mp3" +} + +"Engineer.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_GoodJob02.mp3" +} + +"Engineer.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_GoodJob03.mp3" +} + +"Engineer.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HeadLeft01.mp3" +} + +"Engineer.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HeadLeft02.mp3" +} + +"Engineer.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HeadRight01.mp3" +} + +"Engineer.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HeadRight02.mp3" +} + +"Engineer.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HeadRight03.mp3" +} + +"Engineer.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMe01.mp3" +} + +"Engineer.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMe02.mp3" +} + +"Engineer.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMe03.mp3" +} + +"Engineer.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMeCapture01.mp3" +} + +"Engineer.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMeCapture02.mp3" +} + +"Engineer.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMeCapture03.mp3" +} + +"Engineer.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMeDefend01.mp3" +} + +"Engineer.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMeDefend02.mp3" +} + +"Engineer.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_HelpMeDefend03.mp3" +} + +"Engineer.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Incoming01.mp3" +} + +"Engineer.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Incoming02.mp3" +} + +"Engineer.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Incoming03.mp3" +} + +"Engineer.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Jeers01.mp3" +} + +"Engineer.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Jeers02.mp3" +} + +"Engineer.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Jeers03.mp3" +} + +"Engineer.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Jeers04.mp3" +} + +"Engineer.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughEvil01.mp3" +} + +"Engineer.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughEvil02.mp3" +} + +"Engineer.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughEvil03.mp3" +} + +"Engineer.MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughEvil04.mp3" +} + +"Engineer.MVM_LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughEvil05.mp3" +} + +"Engineer.MVM_LaughEvil06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughEvil06.mp3" +} + +"Engineer.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughHappy01.mp3" +} + +"Engineer.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughHappy02.mp3" +} + +"Engineer.MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughHappy03.mp3" +} + +"Engineer.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughLong01.mp3" +} +"Engineer.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughLong02.mp3" +} + + +"Engineer.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughShort01.mp3" +} + +"Engineer.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughShort02.mp3" +} + +"Engineer.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughShort03.mp3" +} + +"Engineer.MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_LaughShort04.mp3" +} + +"Engineer.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Medic01.mp3" +} + +"Engineer.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Medic02.mp3" +} + +"Engineer.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Medic03.mp3" +} + +"Engineer.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_MoveUp01.mp3" +} + +"Engineer.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NeedDispenser01.mp3" +} + +"Engineer.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NeedSentry01.mp3" +} + +"Engineer.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NeedTeleporter01.mp3" +} + +"Engineer.MVM_NeedTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NeedTeleporter02.mp3" +} + +"Engineer.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization01.mp3" +} + +"Engineer.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization02.mp3" +} + +"Engineer.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization03.mp3" +} + +"Engineer.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization04.mp3" +} + +"Engineer.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization05.mp3" +} + +"Engineer.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization06.mp3" +} + +"Engineer.MVM_NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization07.mp3" +} + +"Engineer.MVM_NegativeVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization08.mp3" +} + +"Engineer.MVM_NegativeVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization09.mp3" +} + +"Engineer.MVM_NegativeVocalization10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization10.mp3" +} + +"Engineer.MVM_NegativeVocalization11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization11.mp3" +} + +"Engineer.MVM_NegativeVocalization12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NegativeVocalization12.mp3" +} + +"Engineer.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NiceShot01.mp3" +} + +"Engineer.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NiceShot02.mp3" +} + +"Engineer.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_NiceShot03.mp3" +} + +"Engineer.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_No01.mp3" +} + +"Engineer.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_No02.mp3" +} + +"Engineer.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_No03.mp3" +} + +"Engineer.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath01.mp3" +} + +"Engineer.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath02.mp3" +} + +"Engineer.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath03.mp3" +} + +"Engineer.MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath04.mp3" +} + +"Engineer.MVM_PainCrticialDeath05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath05.mp3" +} + +"Engineer.MVM_PainCrticialDeath06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainCrticialDeath06.mp3" +} + +"Engineer.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere01.mp3" +} + +"Engineer.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere02.mp3" +} + +"Engineer.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere03.mp3" +} + +"Engineer.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere04.mp3" +} + +"Engineer.MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere05.mp3" +} + +"Engineer.MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere06.mp3" +} + +"Engineer.MVM_PainSevere07" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSevere07.mp3" +} + +"Engineer.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp01.mp3" +} + +"Engineer.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp02.mp3" +} + +"Engineer.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp03.mp3" +} + +"Engineer.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp04.mp3" +} + +"Engineer.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp05.mp3" +} + +"Engineer.MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp06.mp3" +} + +"Engineer.MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp07.mp3" +} + +"Engineer.MVM_PainSharp08" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PainSharp08.mp3" +} + +"Engineer.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_PositiveVocalization01.mp3" +} + +"Engineer.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SentryAhead01.mp3" +} + +"Engineer.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SentryAhead02.mp3" +} + +"Engineer.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Engineer.MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted-AssistedKill02.mp3" +} + +"Engineer.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted01.mp3" +} + +"Engineer.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted02.mp3" +} + +"Engineer.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted03.mp3" +} + +"Engineer.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted04.mp3" +} + +"Engineer.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted05.mp3" +} + +"Engineer.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted06.mp3" +} + +"Engineer.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted07.mp3" +} + +"Engineer.MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted08.mp3" +} + +"Engineer.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted09.mp3" +} + +"Engineer.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted10.mp3" +} + +"Engineer.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_SpecialCompleted11.mp3" +} + +"Engineer.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_StandOnThePoint01.mp3" +} + +"Engineer.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_StandOnThePoint02.mp3" +} + +"Engineer.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts01.mp3" +} + +"Engineer.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts02.mp3" +} + +"Engineer.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts03.mp3" +} + +"Engineer.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts04.mp3" +} + +"Engineer.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts05.mp3" +} + +"Engineer.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts06.mp3" +} + +"Engineer.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts07.mp3" +} + +"Engineer.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts08.mp3" +} + +"Engineer.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts09.mp3" +} + +"Engineer.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts10.mp3" +} + +"Engineer.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts11.mp3" +} + +"Engineer.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/engineer_mvm_Taunts12.mp3" +} + +"Engineer.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Thanks01.mp3" +} + +"Engineer.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ThanksForTheHeal01.mp3" +} + +"Engineer.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ThanksForTheHeal02.mp3" +} + +"Engineer.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ThanksForTheTeleporter01.mp3" +} + +"Engineer.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_ThanksForTheTeleporter02.mp3" +} + +"Engineer.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Yes01.mp3" +} + +"Engineer.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Yes02.mp3" +} + +"Engineer.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/engineer_mvm_Yes03.mp3" +} + +"Heavy.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ActivateCharge01.mp3" +} + +"Heavy.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ActivateCharge02.mp3" +} + +"Heavy.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ActivateCharge03.mp3" +} + +"Heavy.MVM_ActivateCharge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ActivateCharge04.mp3" +} + +"Heavy.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoCappedControlPoint01.mp3" +} + +"Heavy.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoCappedControlPoint02.mp3" +} + +"Heavy.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoCappedControlPoint03.mp3" +} + +"Heavy.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoCappedIntelligence01.mp3" +} + +"Heavy.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoCappedIntelligence02.mp3" +} + +"Heavy.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoCappedIntelligence03.mp3" +} + +"Heavy.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoDejectedTie01.mp3" +} + +"Heavy.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoDejectedTie02.mp3" +} + +"Heavy.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoDejectedTie03.mp3" +} + +"Heavy.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoOnFire01.mp3" +} + +"Heavy.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoOnFire02.mp3" +} + +"Heavy.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoOnFire03.mp3" +} + +"Heavy.MVM_AutoOnFire04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoOnFire04.mp3" +} + +"Heavy.MVM_AutoOnFire05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_AutoOnFire05.mp3" +} + +"Heavy.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_BattleCry01.mp3" +} + +"Heavy.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_BattleCry02.mp3" +} + +"Heavy.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_BattleCry03.mp3" +} + +"Heavy.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_BattleCry04.mp3" +} + +"Heavy.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_BattleCry05.mp3" +} + +"Heavy.MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_BattleCry06.mp3" +} + +"Heavy.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers01.mp3" +} + +"Heavy.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers02.mp3" +} + +"Heavy.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers03.mp3" +} + +"Heavy.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers04.mp3" +} + +"Heavy.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers05.mp3" +} + +"Heavy.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers06.mp3" +} + +"Heavy.MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers07.mp3" +} + +"Heavy.MVM_Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Cheers08.mp3" +} + +"Heavy.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpy01.mp3" +} + +"Heavy.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpy02.mp3" +} + +"Heavy.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpy03.mp3" +} + +"Heavy.MVM_CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpy04.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify01.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify02.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify03.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify04.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify05.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify06.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify07.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify08.mp3" +} + +"Heavy.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_CloakedSpyIdentify09.mp3" +} + +"Heavy.MVM_Generic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Generic01.mp3" +} + +"Heavy.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Go01.mp3" +} + +"Heavy.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Go02.mp3" +} + +"Heavy.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Go03.mp3" +} + +"Heavy.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_GoodJob01.mp3" +} + +"Heavy.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_GoodJob02.mp3" +} + +"Heavy.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_GoodJob03.mp3" +} + +"Heavy.MVM_GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_GoodJob04.mp3" +} + +"Heavy.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HeadLeft01.mp3" +} + +"Heavy.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HeadLeft02.mp3" +} + +"Heavy.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HeadLeft03.mp3" +} + +"Heavy.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HeadRight01.mp3" +} + +"Heavy.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HeadRight02.mp3" +} + +"Heavy.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HeadRight03.mp3" +} + +"Heavy.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMe01.mp3" +} + +"Heavy.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMe02.mp3" +} + +"Heavy.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMe03.mp3" +} + +"Heavy.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMeCapture01.mp3" +} + +"Heavy.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMeCapture02.mp3" +} + +"Heavy.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMeCapture03.mp3" +} + +"Heavy.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMeDefend01.mp3" +} + +"Heavy.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMeDefend02.mp3" +} + +"Heavy.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_HelpMeDefend03.mp3" +} + +"Heavy.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Incoming01.mp3" +} + +"Heavy.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Incoming02.mp3" +} + +"Heavy.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Incoming03.mp3" +} + +"Heavy.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers01.mp3" +} + +"Heavy.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers02.mp3" +} + +"Heavy.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers03.mp3" +} + +"Heavy.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers04.mp3" +} + +"Heavy.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers05.mp3" +} + +"Heavy.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers06.mp3" +} + +"Heavy.MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers07.mp3" +} + +"Heavy.MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers08.mp3" +} + +"Heavy.MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Jeers09.mp3" +} + +"Heavy.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughEvil01.mp3" +} + +"Heavy.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughEvil02.mp3" +} + +"Heavy.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughEvil03.mp3" +} + +"Heavy.MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughEvil04.mp3" +} + +"Heavy.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughHappy01.mp3" +} + +"Heavy.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughHappy02.mp3" +} + +"Heavy.MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughHappy03.mp3" +} + +"Heavy.MVM_LaughHappy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughHappy04.mp3" +} + +"Heavy.MVM_LaughHappy05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughHappy05.mp3" +} + +"Heavy.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughLong01.mp3" +} + +"Heavy.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughLong02.mp3" +} + +"Heavy.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughShort01.mp3" +} + +"Heavy.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughShort02.mp3" +} + +"Heavy.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_LaughShort03.mp3" +} + +"Heavy.MVM_LaugherBigSnort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_laugherbigsnort01.mp3" +} + +"Heavy.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Medic01.mp3" +} + +"Heavy.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Medic02.mp3" +} + +"Heavy.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Medic03.mp3" +} + +"Heavy.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_MoveUp01.mp3" +} + +"Heavy.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_MoveUp02.mp3" +} + +"Heavy.MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_MoveUp03.mp3" +} + +"Heavy.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NeedDispenser01.mp3" +} + +"Heavy.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NeedSentry01.mp3" +} + +"Heavy.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NeedTeleporter01.mp3" +} + +"Heavy.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NegativeVocalization01.mp3" +} + +"Heavy.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NegativeVocalization02.mp3" +} + +"Heavy.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NegativeVocalization03.mp3" +} + +"Heavy.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NegativeVocalization04.mp3" +} + +"Heavy.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NegativeVocalization05.mp3" +} + +"Heavy.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NegativeVocalization06.mp3" +} + +"Heavy.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NiceShot01.mp3" +} + +"Heavy.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NiceShot02.mp3" +} + +"Heavy.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_NiceShot03.mp3" +} + +"Heavy.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_No01.mp3" +} + +"Heavy.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_No02.mp3" +} + +"Heavy.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_No03.mp3" +} + +"Heavy.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath01.mp3" +} + +"Heavy.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath02.mp3" +} + +"Heavy.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainCrticialDeath03.mp3" +} + +"Heavy.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSevere01.mp3" +} + +"Heavy.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSevere02.mp3" +} + +"Heavy.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSevere03.mp3" +} + +"Heavy.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSharp01.mp3" +} + +"Heavy.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSharp02.mp3" +} + +"Heavy.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSharp03.mp3" +} + +"Heavy.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSharp04.mp3" +} + +"Heavy.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/heavy_mvm_PainSharp05.mp3" +} + +"Heavy.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_PositiveVocalization01.mp3" +} + +"Heavy.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_PositiveVocalization02.mp3" +} + +"Heavy.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_PositiveVocalization03.mp3" +} + +"Heavy.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_PositiveVocalization04.mp3" +} + +"Heavy.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_PositiveVocalization05.mp3" +} + +"Heavy.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SentryAhead01.mp3" +} + +"Heavy.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SentryAhead02.mp3" +} + +"Heavy.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Heavy.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted01.mp3" +} + +"Heavy.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted02.mp3" +} + +"Heavy.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted03.mp3" +} + +"Heavy.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted04.mp3" +} + +"Heavy.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted05.mp3" +} + +"Heavy.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted06.mp3" +} + +"Heavy.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted07.mp3" +} + +"Heavy.MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted08.mp3" +} + +"Heavy.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted09.mp3" +} + +"Heavy.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted10.mp3" +} + +"Heavy.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_SpecialCompleted11.mp3" +} + +"Heavy.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_StandOnThePoint01.mp3" +} + +"Heavy.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_StandOnThePoint02.mp3" +} + +"Heavy.MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_StandOnThePoint03.mp3" +} + +"Heavy.MVM_StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_StandOnThePoint04.mp3" +} + +"Heavy.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts01.mp3" +} + +"Heavy.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts02.mp3" +} + +"Heavy.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts03.mp3" +} + +"Heavy.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts04.mp3" +} + +"Heavy.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts05.mp3" +} + +"Heavy.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts06.mp3" +} + +"Heavy.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts07.mp3" +} + +"Heavy.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts08.mp3" +} + +"Heavy.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts09.mp3" +} + +"Heavy.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts10.mp3" +} + +"Heavy.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts11.mp3" +} + +"Heavy.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts12.mp3" +} + +"Heavy.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts13.mp3" +} + +"Heavy.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts14.mp3" +} + +"Heavy.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts15.mp3" +} + +"Heavy.MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts16.mp3" +} + +"Heavy.MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts17.mp3" +} + +"Heavy.MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts18.mp3" +} + +"Heavy.MVM_Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/heavy_mvm_Taunts19.mp3" +} + +"Heavy.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Thanks01.mp3" +} + +"Heavy.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Thanks02.mp3" +} + +"Heavy.MVM_Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Thanks03.mp3" +} + +"Heavy.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ThanksForTheHeal01.mp3" +} + +"Heavy.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ThanksForTheHeal02.mp3" +} + +"Heavy.MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ThanksForTheHeal03.mp3" +} + +"Heavy.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ThanksForTheTeleporter01.mp3" +} + +"Heavy.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ThanksForTheTeleporter02.mp3" +} + +"Heavy.MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_ThanksForTheTeleporter03.mp3" +} + +"Heavy.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Yes01.mp3" +} + +"Heavy.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Yes02.mp3" +} + +"Heavy.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Yes03.mp3" +} + +"Medic.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ActivateCharge01.mp3" +} + +"Medic.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ActivateCharge02.mp3" +} + +"Medic.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ActivateCharge03.mp3" +} + +"Medic.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoCappedControlPoint01.mp3" +} + +"Medic.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoCappedControlPoint02.mp3" +} + +"Medic.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoCappedControlPoint03.mp3" +} + +"Medic.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoCappedIntelligence01.mp3" +} + +"Medic.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoCappedIntelligence02.mp3" +} + +"Medic.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoCappedIntelligence03.mp3" +} + +"Medic.MVM_AutoChargeReady01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoChargeReady01.mp3" +} + +"Medic.MVM_AutoChargeReady02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoChargeReady02.mp3" +} + +"Medic.MVM_AutoChargeReady03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoChargeReady03.mp3" +} + +"Medic.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie01.mp3" +} + +"Medic.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie02.mp3" +} + +"Medic.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie03.mp3" +} + +"Medic.MVM_AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie04.mp3" +} + +"Medic.MVM_AutoDejectedTie05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie05.mp3" +} + +"Medic.MVM_AutoDejectedTie06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie06.mp3" +} + +"Medic.MVM_AutoDejectedTie07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoDejectedTie07.mp3" +} + +"Medic.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoOnFire01.mp3" +} + +"Medic.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoOnFire02.mp3" +} + +"Medic.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoOnFire03.mp3" +} + +"Medic.MVM_AutoOnFire04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoOnFire04.mp3" +} + +"Medic.MVM_AutoOnFire05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_AutoOnFire05.mp3" +} + +"Medic.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_BattleCry01.mp3" +} + +"Medic.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_BattleCry02.mp3" +} + +"Medic.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_BattleCry03.mp3" +} + +"Medic.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_BattleCry04.mp3" +} + +"Medic.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_BattleCry05.mp3" +} + +"Medic.MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_BattleCry06.mp3" +} + +"Medic.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Cheers01.mp3" +} + +"Medic.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Cheers02.mp3" +} + +"Medic.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Cheers03.mp3" +} + +"Medic.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Cheers04.mp3" +} + +"Medic.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Cheers05.mp3" +} + +"Medic.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Cheers06.mp3" +} + +"Medic.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpy01.mp3" +} + +"Medic.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpy02.mp3" +} + +"Medic.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify01.mp3" +} + +"Medic.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify02.mp3" +} + +"Medic.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify03.mp3" +} + +"Medic.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify04.mp3" +} + +"Medic.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify05.mp3" +} + +"Medic.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify06.mp3" +} + +"Medic.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify07.mp3" +} + +"Medic.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify08.mp3" +} + +"Medic.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_CloakedSpyIdentify09.mp3" +} + +"Medic.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Go01.mp3" +} + +"Medic.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Go02.mp3" +} + +"Medic.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Go03.mp3" +} + +"Medic.MVM_Go04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Go04.mp3" +} + +"Medic.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_GoodJob01.mp3" +} + +"Medic.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_GoodJob02.mp3" +} + +"Medic.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_GoodJob03.mp3" +} + +"Medic.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HeadLeft01.mp3" +} + +"Medic.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HeadLeft02.mp3" +} + +"Medic.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HeadLeft03.mp3" +} + +"Medic.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HeadRight01.mp3" +} + +"Medic.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HeadRight02.mp3" +} + +"Medic.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HeadRight03.mp3" +} + +"Medic.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMe01.mp3" +} + +"Medic.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMe02.mp3" +} + +"Medic.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMe03.mp3" +} + +"Medic.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMeCapture01.mp3" +} + +"Medic.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMeCapture02.mp3" +} + +"Medic.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMeDefend01.mp3" +} + +"Medic.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMeDefend02.mp3" +} + +"Medic.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_HelpMeDefend03.mp3" +} + +"Medic.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Incoming01.mp3" +} + +"Medic.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Incoming02.mp3" +} + +"Medic.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Incoming03.mp3" +} + +"Medic.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers01.mp3" +} + +"Medic.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers02.mp3" +} + +"Medic.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers03.mp3" +} + +"Medic.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers04.mp3" +} + +"Medic.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers05.mp3" +} + +"Medic.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers06.mp3" +} + +"Medic.MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers07.mp3" +} + +"Medic.MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers08.mp3" +} + +"Medic.MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers09.mp3" +} + +"Medic.MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers10.mp3" +} + +"Medic.MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers11.mp3" +} + +"Medic.MVM_Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Jeers12.mp3" +} + +"Medic.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughEvil01.mp3" +} + +"Medic.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughEvil02.mp3" +} + +"Medic.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughEvil03.mp3" +} + +"Medic.MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughEvil04.mp3" +} + +"Medic.MVM_LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughEvil05.mp3" +} + +"Medic.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughHappy01.mp3" +} + +"Medic.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughHappy02.mp3" +} + +"Medic.MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughHappy03.mp3" +} + +"Medic.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughLong01.mp3" +} + +"Medic.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughLong02.mp3" +} + +"Medic.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughShort01.mp3" +} + +"Medic.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughShort02.mp3" +} + +"Medic.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_LaughShort03.mp3" +} + +"Medic.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Medic01.mp3" +} + +"Medic.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Medic02.mp3" +} + +"Medic.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Medic03.mp3" +} + +"Medic.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_MoveUp01.mp3" +} + +"Medic.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_MoveUp02.mp3" +} + +"Medic.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NeedDispenser01.mp3" +} + +"Medic.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NeedSentry01.mp3" +} + +"Medic.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NeedTeleporter01.mp3" +} + +"Medic.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization01.mp3" +} + +"Medic.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization02.mp3" +} + +"Medic.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization03.mp3" +} + +"Medic.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization04.mp3" +} + +"Medic.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization05.mp3" +} + +"Medic.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization06.mp3" +} + +"Medic.MVM_NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NegativeVocalization07.mp3" +} + +"Medic.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NiceShot01.mp3" +} + +"Medic.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_NiceShot02.mp3" +} + +"Medic.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_No01.mp3" +} + +"Medic.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_No02.mp3" +} + +"Medic.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_No03.mp3" +} + +"Medic.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath01.mp3" +} + +"Medic.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath02.mp3" +} + +"Medic.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath03.mp3" +} + +"Medic.MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainCrticialDeath04.mp3" +} + +"Medic.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSevere01.mp3" +} + +"Medic.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSevere02.mp3" +} + +"Medic.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSevere03.mp3" +} + +"Medic.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSevere04.mp3" +} + +"Medic.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp01.mp3" +} + +"Medic.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp02.mp3" +} + +"Medic.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp03.mp3" +} + +"Medic.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp04.mp3" +} + +"Medic.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp05.mp3" +} + +"Medic.MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp06.mp3" +} + +"Medic.MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp07.mp3" +} + +"Medic.MVM_PainSharp08" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/medic_mvm_PainSharp08.mp3" +} + +"Medic.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_PositiveVocalization01.mp3" +} + +"Medic.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_PositiveVocalization02.mp3" +} + +"Medic.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_PositiveVocalization03.mp3" +} + +"Medic.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_PositiveVocalization04.mp3" +} + +"Medic.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_PositiveVocalization05.mp3" +} + +"Medic.MVM_PositiveVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_PositiveVocalization06.mp3" +} + +"Medic.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SentryAhead01.mp3" +} + +"Medic.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SentryAhead02.mp3" +} + +"Medic.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Medic.MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted-AssistedKill02.mp3" +} + +"Medic.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted01.mp3" +} + +"Medic.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted02.mp3" +} + +"Medic.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted03.mp3" +} + +"Medic.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted04.mp3" +} + +"Medic.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted05.mp3" +} + +"Medic.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted06.mp3" +} + +"Medic.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted07.mp3" +} + +"Medic.MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted08.mp3" +} + +"Medic.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted09.mp3" +} + +"Medic.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted10.mp3" +} + +"Medic.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted11.mp3" +} + +"Medic.MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_SpecialCompleted12.mp3" +} + +"Medic.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_StandOnThePoint01.mp3" +} + +"Medic.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_StandOnThePoint02.mp3" +} + +"Medic.MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_StandOnThePoint03.mp3" +} + +"Medic.MVM_StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_StandOnThePoint04.mp3" +} + +"Medic.MVM_StandOnThePoint05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_StandOnThePoint05.mp3" +} + +"Medic.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/taunts/medic_mvm_Taunts01.mp3" +} + +"Medic.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts02.mp3" +} + +"Medic.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts03.mp3" +} + +"Medic.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts04.mp3" +} + +"Medic.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts05.mp3" +} + +"Medic.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts06.mp3" +} + +"Medic.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts07.mp3" +} + +"Medic.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts08.mp3" +} + +"Medic.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts09.mp3" +} + +"Medic.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts10.mp3" +} + +"Medic.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts11.mp3" +} + +"Medic.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts12.mp3" +} + +"Medic.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts13.mp3" +} + +"Medic.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts14.mp3" +} + +"Medic.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/medic_mvm_Taunts15.mp3" +} + +"Medic.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Thanks01.mp3" +} + +"Medic.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Thanks02.mp3" +} + +"Medic.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ThanksForTheHeal01.mp3" +} + +"Medic.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ThanksForTheHeal02.mp3" +} + +"Medic.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ThanksForTheTeleporter01.mp3" +} + +"Medic.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ThanksForTheTeleporter02.mp3" +} + +"Medic.MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_ThanksForTheTeleporter03.mp3" +} + +"Medic.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Yes01.mp3" +} + +"Medic.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Yes02.mp3" +} + +"Medic.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/medic_mvm_Yes03.mp3" +} + +"Pyro.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_ActivateCharge01.mp3" +} + +"Pyro.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_AutoCappedControlPoint01.mp3" +} + +"Pyro.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_AutoCappedIntelligence01.mp3" +} + +"Pyro.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_AutoDejectedTie01.mp3" +} + +"Pyro.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_AutoOnFire01.mp3" +} + +"Pyro.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_AutoOnFire02.mp3" +} + +"Pyro.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_BattleCry01.mp3" +} + +"Pyro.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_BattleCry02.mp3" +} + +"Pyro.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Cheers01.mp3" +} + +"Pyro.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_CloakedSpy01.mp3" +} + +"Pyro.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_CloakedSpyIdentify01.mp3" +} + +"Pyro.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Go01.mp3" +} + +"Pyro.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_GoodJob01.mp3" +} + +"Pyro.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_HeadLeft01.mp3" +} + +"Pyro.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_HeadRight01.mp3" +} + +"Pyro.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_HelpMe01.mp3" +} + +"Pyro.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_HelpMeCapture01.mp3" +} + +"Pyro.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_HelpMeDefend01.mp3" +} + +"Pyro.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Incoming01.mp3" +} + +"Pyro.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Jeers01.mp3" +} + +"Pyro.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Jeers02.mp3" +} + +"Pyro.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughEvil01.mp3" +} + +"Pyro.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughEvil02.mp3" +} + +"Pyro.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughEvil03.mp3" +} + +"Pyro.MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughEvil04.mp3" +} + +"Pyro.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughHappy01.mp3" +} + +"Pyro.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughLong01.mp3" +} + +"Pyro.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_LaughShort01.mp3" +} + +"Pyro.MVM_laugh_addl04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_laugh_addl04.mp3" +} + +"Pyro.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Medic01.mp3" +} + +"Pyro.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_MoveUp01.mp3" +} + +"Pyro.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_NeedDispenser01.mp3" +} + +"Pyro.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_NeedSentry01.mp3" +} + +"Pyro.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_NeedTeleporter01.mp3" +} + +"Pyro.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_NegativeVocalization01.mp3" +} + +"Pyro.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_NiceShot01.mp3" +} + +"Pyro.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_No01.mp3" +} + +"Pyro.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath01.mp3" +} + +"Pyro.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath02.mp3" +} + +"Pyro.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainCrticialDeath03.mp3" +} + +"Pyro.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSevere01.mp3" +} + +"Pyro.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSevere02.mp3" +} + +"Pyro.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSevere03.mp3" +} + +"Pyro.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSevere04.mp3" +} + +"Pyro.MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSevere05.mp3" +} + +"Pyro.MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSevere06.mp3" +} + +"Pyro.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp01.mp3" +} + +"Pyro.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp02.mp3" +} + +"Pyro.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp03.mp3" +} + +"Pyro.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp04.mp3" +} + +"Pyro.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp05.mp3" +} + +"Pyro.MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp06.mp3" +} + +"Pyro.MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/pyro_mvm_PainSharp07.mp3" +} + +"Pyro.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_PositiveVocalization01.mp3" +} + +"Pyro.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_SentryAhead01.mp3" +} + +"Pyro.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Pyro.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_SpecialCompleted01.mp3" +} + +"Pyro.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_StandOnThePoint01.mp3" +} + +"Pyro.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_Taunts01.mp3" +} + +"Pyro.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_Taunts02.mp3" +} + +"Pyro.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_Taunts03.mp3" +} + +"Pyro.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_Taunts04.mp3" +} + +"Pyro.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Thanks01.mp3" +} + +"Pyro.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_ThanksForTheHeal01.mp3" +} + +"Pyro.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_ThanksForTheTeleporter01.mp3" +} + +"Pyro.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/pyro_mvm_Yes01.mp3" +} + +"Pyro.MVM_HighFiveSuccess01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_highfive_success01.mp3" +} + +"Pyro.MVM_HighFiveSuccess02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_highfive_success02.mp3" +} + +"Pyro.MVM_HighFiveSuccess03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_highfive_success03.mp3" +} + +"Pyro.MVM_HighFive01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_highfive01.mp3" +} + +"Pyro.MVM_HighFive02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/pyro_mvm_highfive02.mp3" +} + +"Scout.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ActivateCharge01.mp3" +} + +"Scout.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ActivateCharge02.mp3" +} + +"Scout.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ActivateCharge03.mp3" +} + +"Scout.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedControlPoint01.mp3" +} + +"Scout.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedControlPoint02.mp3" +} + +"Scout.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedControlPoint03.mp3" +} + +"Scout.MVM_AutoCappedControlPoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedControlPoint04.mp3" +} + +"Scout.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedIntelligence01.mp3" +} + +"Scout.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedIntelligence02.mp3" +} + +"Scout.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoCappedIntelligence03.mp3" +} + +"Scout.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoDejectedTie01.mp3" +} + +"Scout.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoDejectedTie02.mp3" +} + +"Scout.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoDejectedTie03.mp3" +} + +"Scout.MVM_AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoDejectedTie04.mp3" +} + +"Scout.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoOnFire01.mp3" +} + +"Scout.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_AutoOnFire02.mp3" +} + +"Scout.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_BattleCry01.mp3" +} + +"Scout.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_BattleCry02.mp3" +} + +"Scout.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_BattleCry03.mp3" +} + +"Scout.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_BattleCry04.mp3" +} + +"Scout.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_BattleCry05.mp3" +} + +"Scout.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Cheers01.mp3" +} + +"Scout.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Cheers02.mp3" +} + +"Scout.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Cheers03.mp3" +} + +"Scout.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Cheers04.mp3" +} + +"Scout.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Cheers05.mp3" +} + +"Scout.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Cheers06.mp3" +} + +"Scout.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpy01.mp3" +} + +"Scout.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpy02.mp3" +} + +"Scout.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpy03.mp3" +} + +"Scout.MVM_CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpy04.mp3" +} + +"Scout.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify01.mp3" +} + +"Scout.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify02.mp3" +} + +"Scout.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify03.mp3" +} + +"Scout.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify04.mp3" +} + +"Scout.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify05.mp3" +} + +"Scout.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify06.mp3" +} + +"Scout.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify07.mp3" +} + +"Scout.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify08.mp3" +} + +"Scout.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_CloakedSpyIdentify09.mp3" +} + +"Scout.MVM_Generic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Generic01.mp3" +} + +"Scout.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Go01.mp3" +} + +"Scout.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Go02.mp3" +} + +"Scout.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Go03.mp3" +} + +"Scout.MVM_Go04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Go04.mp3" +} + +"Scout.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_GoodJob01.mp3" +} + +"Scout.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_GoodJob02.mp3" +} + +"Scout.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_GoodJob03.mp3" +} + +"Scout.MVM_GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_GoodJob04.mp3" +} + +"Scout.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HeadLeft01.mp3" +} + +"Scout.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HeadLeft02.mp3" +} + +"Scout.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HeadLeft03.mp3" +} + +"Scout.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HeadRight01.mp3" +} + +"Scout.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HeadRight02.mp3" +} + +"Scout.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HeadRight03.mp3" +} + +"Scout.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMe01.mp3" +} + +"Scout.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMe02.mp3" +} + +"Scout.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMe03.mp3" +} + +"Scout.MVM_HelpMe04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMe04.mp3" +} + +"Scout.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMeCapture01.mp3" +} + +"Scout.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMeCapture02.mp3" +} + +"Scout.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMeCapture03.mp3" +} + +"Scout.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMeDefend01.mp3" +} + +"Scout.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMeDefend02.mp3" +} + +"Scout.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_HelpMeDefend03.mp3" +} + +"Scout.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Incoming01.mp3" +} + +"Scout.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Incoming02.mp3" +} + +"Scout.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Incoming03.mp3" +} + +"Scout.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers02.mp3" +} + +"Scout.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers03.mp3" +} + +"Scout.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers04.mp3" +} + +"Scout.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers05.mp3" +} + +"Scout.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers06.mp3" +} + +"Scout.MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers07.mp3" +} + +"Scout.MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers08.mp3" +} + +"Scout.MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers09.mp3" +} + +"Scout.MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers10.mp3" +} + +"Scout.MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers11.mp3" +} + +"Scout.MVM_Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Jeers12.mp3" +} + +"Scout.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughEvil01.mp3" +} + +"Scout.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughEvil02.mp3" +} + +"Scout.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughEvil03.mp3" +} + +"Scout.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughHappy01.mp3" +} + +"Scout.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughHappy02.mp3" +} + +"Scout.MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughHappy03.mp3" +} + +"Scout.MVM_LaughHappy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughHappy04.mp3" +} + +"Scout.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughLong01.mp3" +} + +"Scout.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughLong02.mp3" +} + +"Scout.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughShort01.mp3" +} + +"Scout.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughShort02.mp3" +} + +"Scout.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughShort03.mp3" +} + +"Scout.MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughShort04.mp3" +} + +"Scout.MVM_LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_LaughShort05.mp3" +} + +"Scout.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Medic01.mp3" +} + +"Scout.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Medic02.mp3" +} + +"Scout.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Medic03.mp3" +} + +"Scout.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_MoveUp01.mp3" +} + +"Scout.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_MoveUp02.mp3" +} + +"Scout.MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_MoveUp03.mp3" +} + +"Scout.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NeedDispenser01.mp3" +} + +"Scout.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NeedSentry01.mp3" +} + +"Scout.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NeedTeleporter01.mp3" +} + +"Scout.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NegativeVocalization01.mp3" +} + +"Scout.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NegativeVocalization02.mp3" +} + +"Scout.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NegativeVocalization03.mp3" +} + +"Scout.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "620.000" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NegativeVocalization04.mp3" +} + +"Scout.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NegativeVocalization05.mp3" +} + +"Scout.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NiceShot01.mp3" +} + +"Scout.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NiceShot02.mp3" +} + +"Scout.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_NiceShot03.mp3" +} + +"Scout.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_No01.mp3" +} + +"Scout.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_No02.mp3" +} + +"Scout.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_No03.mp3" +} + +"Scout.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath01.mp3" +} + +"Scout.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath02.mp3" +} + +"Scout.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainCrticialDeath03.mp3" +} + +"Scout.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSevere01.mp3" +} + +"Scout.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSevere02.mp3" +} + +"Scout.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSevere03.mp3" +} + +"Scout.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSevere04.mp3" +} + +"Scout.MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSevere05.mp3" +} + +"Scout.MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSevere06.mp3" +} + +"Scout.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp01.mp3" +} + +"Scout.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp02.mp3" +} + +"Scout.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp03.mp3" +} + +"Scout.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp04.mp3" +} + +"Scout.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp05.mp3" +} + +"Scout.MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp06.mp3" +} + +"Scout.MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp07.mp3" +} + +"Scout.MVM_PainSharp08" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/scout_mvm_PainSharp08.mp3" +} + +"Scout.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_PositiveVocalization01.mp3" +} + +"Scout.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_PositiveVocalization02.mp3" +} + +"Scout.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_PositiveVocalization03.mp3" +} + +"Scout.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_PositiveVocalization04.mp3" +} + +"Scout.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_PositiveVocalization05.mp3" +} + +"Scout.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SentryAhead01.mp3" +} + +"Scout.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SentryAhead02.mp3" +} + +"Scout.MVM_SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SentryAhead03.mp3" +} + +"Scout.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Scout.MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted-AssistedKill02.mp3" +} + +"Scout.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted01.mp3" +} + +"Scout.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted02.mp3" +} + +"Scout.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted03.mp3" +} + +"Scout.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted04.mp3" +} + +"Scout.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted05.mp3" +} + +"Scout.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted06.mp3" +} + +"Scout.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted07.mp3" +} + +"Scout.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted09.mp3" +} + +"Scout.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted10.mp3" +} + +"Scout.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted11.mp3" +} + +"Scout.MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_SpecialCompleted12.mp3" +} + +"Scout.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_StandOnThePoint01.mp3" +} + +"Scout.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_StandOnThePoint02.mp3" +} + +"Scout.MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_StandOnThePoint03.mp3" +} + +"Scout.MVM_StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_StandOnThePoint04.mp3" +} + +"Scout.MVM_StandOnThePoint05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_StandOnThePoint05.mp3" +} + +"Scout.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts01.mp3" +} + +"Scout.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts02.mp3" +} + +"Scout.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts03.mp3" +} + +"Scout.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts04.mp3" +} + +"Scout.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts05.mp3" +} + +"Scout.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts06.mp3" +} + +"Scout.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts07.mp3" +} + +"Scout.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts08.mp3" +} + +"Scout.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts09.mp3" +} + +"Scout.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts10.mp3" +} + +"Scout.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts11.mp3" +} + +"Scout.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts12.mp3" +} + +"Scout.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts13.mp3" +} + +"Scout.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts14.mp3" +} + +"Scout.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts15.mp3" +} + +"Scout.MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts16.mp3" +} + +"Scout.MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts17.mp3" +} + +"Scout.MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/scout_mvm_Taunts18.mp3" +} + +"Scout.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Thanks01.mp3" +} + +"Scout.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Thanks02.mp3" +} + +"Scout.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ThanksForTheHeal01.mp3" +} + +"Scout.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ThanksForTheHeal02.mp3" +} + +"Scout.MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ThanksForTheHeal03.mp3" +} + +"Scout.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ThanksForTheTeleporter01.mp3" +} + +"Scout.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ThanksForTheTeleporter02.mp3" +} + +"Scout.MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_ThanksForTheTeleporter03.mp3" +} + +"Scout.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Yes01.mp3" +} + +"Scout.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Yes02.mp3" +} + +"Scout.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/scout_mvm_Yes03.mp3" +} + +"Sniper.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ActivateCharge01.mp3" +} + +"Sniper.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ActivateCharge02.mp3" +} + +"Sniper.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ActivateCharge03.mp3" +} + +"Sniper.MVM_ActivateCharge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ActivateCharge04.mp3" +} + +"Sniper.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedControlPoint01.mp3" +} + +"Sniper.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedControlPoint02.mp3" +} + +"Sniper.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedControlPoint03.mp3" +} + +"Sniper.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedIntelligence01.mp3" +} + +"Sniper.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedIntelligence02.mp3" +} + +"Sniper.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedIntelligence03.mp3" +} + +"Sniper.MVM_AutoCappedIntelligence04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedIntelligence04.mp3" +} + +"Sniper.MVM_AutoCappedIntelligence05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoCappedIntelligence05.mp3" +} + +"Sniper.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoDejectedTie01.mp3" +} + +"Sniper.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoDejectedTie02.mp3" +} + +"Sniper.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoDejectedTie03.mp3" +} + +"Sniper.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoOnFire01.mp3" +} + +"Sniper.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoOnFire02.mp3" +} + +"Sniper.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_AutoOnFire03.mp3" +} + +"Sniper.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_BattleCry01.mp3" +} + +"Sniper.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_BattleCry02.mp3" +} + +"Sniper.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_BattleCry03.mp3" +} + +"Sniper.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_BattleCry04.mp3" +} + +"Sniper.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_BattleCry05.mp3" +} + +"Sniper.MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_BattleCry06.mp3" +} + +"Sniper.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers01.mp3" +} + +"Sniper.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers02.mp3" +} + +"Sniper.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers03.mp3" +} + +"Sniper.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers04.mp3" +} + +"Sniper.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers05.mp3" +} + +"Sniper.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers06.mp3" +} + +"Sniper.MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers07.mp3" +} + +"Sniper.MVM_Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Cheers08.mp3" +} + +"Sniper.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpy01.mp3" +} + +"Sniper.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpy02.mp3" +} + +"Sniper.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpy03.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify01.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify02.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify03.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify04.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify05.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify06.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify07.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify08.mp3" +} + +"Sniper.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_CloakedSpyIdentify09.mp3" +} + +"Sniper.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Go01.mp3" +} + +"Sniper.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Go02.mp3" +} + +"Sniper.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Go03.mp3" +} + +"Sniper.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_GoodJob01.mp3" +} + +"Sniper.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_GoodJob02.mp3" +} + +"Sniper.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_GoodJob03.mp3" +} + +"Sniper.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HeadLeft01.mp3" +} + +"Sniper.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HeadLeft02.mp3" +} + +"Sniper.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HeadLeft03.mp3" +} + +"Sniper.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HeadRight01.mp3" +} + +"Sniper.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HeadRight02.mp3" +} + +"Sniper.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HeadRight03.mp3" +} + +"Sniper.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMe01.mp3" +} + +"Sniper.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMe02.mp3" +} + +"Sniper.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMe03.mp3" +} + +"Sniper.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMeCapture01.mp3" +} + +"Sniper.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMeCapture02.mp3" +} + +"Sniper.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMeCapture03.mp3" +} + +"Sniper.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMeDefend01.mp3" +} + +"Sniper.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMeDefend02.mp3" +} + +"Sniper.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_HelpMeDefend03.mp3" +} + +"Sniper.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Incoming01.mp3" +} + +"Sniper.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Incoming02.mp3" +} + +"Sniper.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Incoming03.mp3" +} + +"Sniper.MVM_Incoming04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Incoming04.mp3" +} + +"Sniper.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers01.mp3" +} + +"Sniper.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers02.mp3" +} + +"Sniper.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers03.mp3" +} + +"Sniper.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers04.mp3" +} + +"Sniper.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers05.mp3" +} + +"Sniper.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers06.mp3" +} + +"Sniper.MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers07.mp3" +} + +"Sniper.MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Jeers08.mp3" +} + +"Sniper.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughEvil01.mp3" +} + +"Sniper.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughEvil02.mp3" +} + +"Sniper.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughEvil03.mp3" +} + +"Sniper.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughHappy01.mp3" +} + +"Sniper.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughHappy02.mp3" +} + +"Sniper.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughLong01.mp3" +} + +"Sniper.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughLong02.mp3" +} + +"Sniper.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughShort01.mp3" +} + +"Sniper.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughShort02.mp3" +} + +"Sniper.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughShort03.mp3" +} + +"Sniper.MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughShort04.mp3" +} + +"Sniper.MVM_LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_LaughShort05.mp3" +} + +"Sniper.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Medic01.mp3" +} + +"Sniper.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Medic02.mp3" +} + +"Sniper.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_MoveUp01.mp3" +} + +"Sniper.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_MoveUp02.mp3" +} + +"Sniper.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NeedDispenser01.mp3" +} + +"Sniper.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NeedSentry01.mp3" +} + +"Sniper.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NeedTeleporter01.mp3" +} + +"Sniper.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization01.mp3" +} + +"Sniper.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization02.mp3" +} + +"Sniper.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization03.mp3" +} + +"Sniper.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization04.mp3" +} + +"Sniper.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization05.mp3" +} + +"Sniper.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization06.mp3" +} + +"Sniper.MVM_NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization07.mp3" +} + +"Sniper.MVM_NegativeVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization08.mp3" +} + +"Sniper.MVM_NegativeVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NegativeVocalization09.mp3" +} + +"Sniper.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NiceShot01.mp3" +} + +"Sniper.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NiceShot02.mp3" +} + +"Sniper.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_NiceShot03.mp3" +} + +"Sniper.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_No01.mp3" +} + +"Sniper.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_No02.mp3" +} + +"Sniper.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_No03.mp3" +} + +"Sniper.MVM_No04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_No04.mp3" +} + +"Sniper.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath01.mp3" +} + +"Sniper.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath02.mp3" +} + +"Sniper.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath03.mp3" +} + +"Sniper.MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainCrticialDeath04.mp3" +} + +"Sniper.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSevere01.mp3" +} + +"Sniper.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSevere02.mp3" +} + +"Sniper.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSevere03.mp3" +} + +"Sniper.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSevere04.mp3" +} + +"Sniper.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSharp01.mp3" +} + +"Sniper.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSharp02.mp3" +} + +"Sniper.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSharp03.mp3" +} + +"Sniper.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/sniper_mvm_PainSharp04.mp3" +} + +"Sniper.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization01.mp3" +} + +"Sniper.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization02.mp3" +} + +"Sniper.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization03.mp3" +} + +"Sniper.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization04.mp3" +} + +"Sniper.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization05.mp3" +} + +"Sniper.MVM_PositiveVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization06.mp3" +} + +"Sniper.MVM_PositiveVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization07.mp3" +} + +"Sniper.MVM_PositiveVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization08.mp3" +} + +"Sniper.MVM_PositiveVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization09.mp3" +} + +"Sniper.MVM_PositiveVocalization10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_PositiveVocalization10.mp3" +} + +"Sniper.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SentryAhead01.mp3" +} + +"Sniper.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Sniper.MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted-AssistedKill02.mp3" +} + +"Sniper.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted01.mp3" +} + +"Sniper.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted02.mp3" +} + +"Sniper.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted03.mp3" +} + +"Sniper.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted04.mp3" +} + +"Sniper.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted05.mp3" +} + +"Sniper.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted06.mp3" +} + +"Sniper.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted07.mp3" +} + +"Sniper.MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted08.mp3" +} + +"Sniper.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted09.mp3" +} + +"Sniper.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted10.mp3" +} + +"Sniper.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted11.mp3" +} + +"Sniper.MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted12.mp3" +} + +"Sniper.MVM_SpecialCompleted13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted13.mp3" +} + +"Sniper.MVM_SpecialCompleted14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted14.mp3" +} + +"Sniper.MVM_SpecialCompleted15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted15.mp3" +} + +"Sniper.MVM_SpecialCompleted16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted16.mp3" +} + +"Sniper.MVM_SpecialCompleted17" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted17.mp3" +} + +"Sniper.MVM_SpecialCompleted18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted18.mp3" +} + +"Sniper.MVM_SpecialCompleted19" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted19.mp3" +} + +"Sniper.MVM_SpecialCompleted20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted20.mp3" +} + +"Sniper.MVM_SpecialCompleted21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted21.mp3" +} + +"Sniper.MVM_SpecialCompleted22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted22.mp3" +} + +"Sniper.MVM_SpecialCompleted23" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted23.mp3" +} + +"Sniper.MVM_SpecialCompleted24" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted24.mp3" +} + +"Sniper.MVM_SpecialCompleted25" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted25.mp3" +} + +"Sniper.MVM_SpecialCompleted26" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted26.mp3" +} + +"Sniper.MVM_SpecialCompleted27" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted27.mp3" +} + +"Sniper.MVM_SpecialCompleted28" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted28.mp3" +} + +"Sniper.MVM_SpecialCompleted29" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted29.mp3" +} + +"Sniper.MVM_SpecialCompleted30" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted30.mp3" +} + +"Sniper.MVM_SpecialCompleted31" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted31.mp3" +} + +"Sniper.MVM_SpecialCompleted32" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted32.mp3" +} + +"Sniper.MVM_SpecialCompleted33" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted33.mp3" +} + +"Sniper.MVM_SpecialCompleted34" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted34.mp3" +} + +"Sniper.MVM_SpecialCompleted35" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted35.mp3" +} + +"Sniper.MVM_SpecialCompleted36" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted36.mp3" +} + +"Sniper.MVM_SpecialCompleted37" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted37.mp3" +} + +"Sniper.MVM_SpecialCompleted38" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted38.mp3" +} + +"Sniper.MVM_SpecialCompleted39" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted39.mp3" +} + +"Sniper.MVM_SpecialCompleted40" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted40.mp3" +} + +"Sniper.MVM_SpecialCompleted41" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted41.mp3" +} + +"Sniper.MVM_SpecialCompleted42" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted42.mp3" +} + +"Sniper.MVM_SpecialCompleted43" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted43.mp3" +} + +"Sniper.MVM_SpecialCompleted44" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted44.mp3" +} + +"Sniper.MVM_SpecialCompleted45" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted45.mp3" +} + +"Sniper.MVM_SpecialCompleted46" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_SpecialCompleted46.mp3" +} + +"Sniper.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_StandOnThePoint01.mp3" +} + +"Sniper.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_StandOnThePoint02.mp3" +} + +"Sniper.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts01.mp3" +} + +"Sniper.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts02.mp3" +} + +"Sniper.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts03.mp3" +} + +"Sniper.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts04.mp3" +} + +"Sniper.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts05.mp3" +} + +"Sniper.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts06.mp3" +} + +"Sniper.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts07.mp3" +} + +"Sniper.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts08.mp3" +} + +"Sniper.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts09.mp3" +} + +"Sniper.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts10.mp3" +} + +"Sniper.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts11.mp3" +} + +"Sniper.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts12.mp3" +} + +"Sniper.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts13.mp3" +} + +"Sniper.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts14.mp3" +} + +"Sniper.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts15.mp3" +} + +"Sniper.MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts16.mp3" +} + +"Sniper.MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts17.mp3" +} + +"Sniper.MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts18.mp3" +} + +"Sniper.MVM_Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts19.mp3" +} + +"Sniper.MVM_Taunts20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts20.mp3" +} + +"Sniper.MVM_Taunts21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts21.mp3" +} + +"Sniper.MVM_Taunts22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts22.mp3" +} + +"Sniper.MVM_Taunts23" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts23.mp3" +} + +"Sniper.MVM_Taunts24" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts24.mp3" +} + +"Sniper.MVM_Taunts25" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts25.mp3" +} + +"Sniper.MVM_Taunts26" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts26.mp3" +} + +"Sniper.MVM_Taunts27" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts27.mp3" +} + +"Sniper.MVM_Taunts28" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts28.mp3" +} + +"Sniper.MVM_Taunts29" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts29.mp3" +} + +"Sniper.MVM_Taunts30" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts30.mp3" +} + +"Sniper.MVM_Taunts31" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts31.mp3" +} + +"Sniper.MVM_Taunts32" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts32.mp3" +} + +"Sniper.MVM_Taunts33" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts33.mp3" +} + +"Sniper.MVM_Taunts34" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts34.mp3" +} + +"Sniper.MVM_Taunts35" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts35.mp3" +} + +"Sniper.MVM_Taunts36" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts36.mp3" +} + +"Sniper.MVM_Taunts37" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts37.mp3" +} + +"Sniper.MVM_Taunts38" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts38.mp3" +} + +"Sniper.MVM_Taunts39" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts39.mp3" +} + +"Sniper.MVM_Taunts40" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts40.mp3" +} + +"Sniper.MVM_Taunts41" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts41.mp3" +} + +"Sniper.MVM_Taunts42" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts42.mp3" +} + +"Sniper.MVM_Taunts43" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts43.mp3" +} + +"Sniper.MVM_Taunts44" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts44.mp3" +} + +"Sniper.MVM_Taunts45" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts45.mp3" +} + +"Sniper.MVM_Taunts46" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/sniper_mvm_Taunts46.mp3" +} + +"Sniper.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Thanks01.mp3" +} + +"Sniper.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Thanks02.mp3" +} + +"Sniper.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ThanksForTheHeal01.mp3" +} + +"Sniper.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ThanksForTheHeal02.mp3" +} + +"Sniper.MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ThanksForTheHeal03.mp3" +} + +"Sniper.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ThanksForTheTeleporter01.mp3" +} + +"Sniper.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ThanksForTheTeleporter02.mp3" +} + +"Sniper.MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_ThanksForTheTeleporter03.mp3" +} + +"Sniper.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Yes01.mp3" +} + +"Sniper.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Yes02.mp3" +} + +"Sniper.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_Yes03.mp3" +} + +"sniper.MVM_MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_medicfollow01.mp3" +} + +"sniper.MVM_MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_medicfollow02.mp3" +} + +"sniper.MVM_MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_medicfollow03.mp3" +} + +"sniper.MVM_MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_medicfollow04.mp3" +} + +"sniper.MVM_MedicFollow05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_medicfollow05.mp3" +} + +"sniper.MVM_MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare01.mp3" +} + +"sniper.MVM_MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare02.mp3" +} + +"sniper.MVM_MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare03.mp3" +} + +"sniper.MVM_MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare04.mp3" +} + +"sniper.MVM_MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare05.mp3" +} + +"sniper.MVM_MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare06.mp3" +} + +"sniper.MVM_MeleeDare07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare07.mp3" +} + +"sniper.MVM_MeleeDare08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare08.mp3" +} + +"sniper.MVM_MeleeDare09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_meleedare09.mp3" +} + +"sniper.MVM_Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award01.mp3" +} + +"sniper.MVM_Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award02.mp3" +} + +"sniper.MVM_Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award03.mp3" +} + +"sniper.MVM_Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award04.mp3" +} + +"sniper.MVM_Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award05.mp3" +} + +"sniper.MVM_Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award06.mp3" +} + +"sniper.MVM_Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award07.mp3" +} + +"sniper.MVM_Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award08.mp3" +} + +"sniper.MVM_Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award09.mp3" +} + +"sniper.MVM_Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award10.mp3" +} + +"sniper.MVM_Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award11.mp3" +} + +"sniper.MVM_Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award12.mp3" +} + +"sniper.MVM_Award13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award13.mp3" +} + +"sniper.MVM_Award14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/sniper_mvm_award14.mp3" +} + +"Soldier.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ActivateCharge01.mp3" +} + +"Soldier.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ActivateCharge02.mp3" +} + +"Soldier.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ActivateCharge03.mp3" +} + +"Soldier.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoCappedControlPoint01.mp3" +} + +"Soldier.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoCappedControlPoint02.mp3" +} + +"Soldier.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoCappedControlPoint03.mp3" +} + +"Soldier.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoCappedIntelligence01.mp3" +} + +"Soldier.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoCappedIntelligence02.mp3" +} + +"Soldier.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoCappedIntelligence03.mp3" +} + +"Soldier.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoDejectedTie01.mp3" +} + +"Soldier.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoDejectedTie02.mp3" +} + +"Soldier.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoDejectedTie03.mp3" +} + +"Soldier.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoOnFire01.mp3" +} + +"Soldier.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoOnFire02.mp3" +} + +"Soldier.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_AutoOnFire03.mp3" +} + +"Soldier.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_BattleCry01.mp3" +} + +"Soldier.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_BattleCry02.mp3" +} + +"Soldier.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_BattleCry03.mp3" +} + +"Soldier.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_BattleCry04.mp3" +} + +"Soldier.MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_BattleCry05.mp3" +} + +"Soldier.MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_BattleCry06.mp3" +} + +"Soldier.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Cheers01.mp3" +} + +"Soldier.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Cheers02.mp3" +} + +"Soldier.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Cheers03.mp3" +} + +"Soldier.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Cheers04.mp3" +} + +"Soldier.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Cheers05.mp3" +} + +"Soldier.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Cheers06.mp3" +} + +"Soldier.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpy01.mp3" +} + +"Soldier.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpy02.mp3" +} + +"Soldier.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpy03.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify01.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify02.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify03.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify04.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify05.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify06.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify07.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify08.mp3" +} + +"Soldier.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_CloakedSpyIdentify09.mp3" +} + +"Soldier.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Go01.mp3" +} + +"Soldier.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Go02.mp3" +} + +"Soldier.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Go03.mp3" +} + +"Soldier.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_GoodJob01.mp3" +} + +"Soldier.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_GoodJob02.mp3" +} + +"Soldier.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_GoodJob03.mp3" +} + +"Soldier.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HeadLeft01.mp3" +} + +"Soldier.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HeadLeft02.mp3" +} + +"Soldier.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HeadLeft03.mp3" +} + +"Soldier.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HeadRight01.mp3" +} + +"Soldier.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HeadRight02.mp3" +} + +"Soldier.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HeadRight03.mp3" +} + +"Soldier.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMe01.mp3" +} + +"Soldier.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMe02.mp3" +} + +"Soldier.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMe03.mp3" +} + +"Soldier.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeCapture01.mp3" +} + +"Soldier.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeCapture02.mp3" +} + +"Soldier.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeCapture03.mp3" +} + +"Soldier.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeDefend01.mp3" +} + +"Soldier.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeDefend02.mp3" +} + +"Soldier.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeDefend03.mp3" +} + +"Soldier.MVM_HelpMeDefend04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_HelpMeDefend04.mp3" +} + +"Soldier.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Incoming01.mp3" +} + +"Soldier.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers01.mp3" +} + +"Soldier.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers02.mp3" +} + +"Soldier.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers03.mp3" +} + +"Soldier.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers04.mp3" +} + +"Soldier.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers05.mp3" +} + +"Soldier.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers06.mp3" +} + +"Soldier.MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers07.mp3" +} + +"Soldier.MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers08.mp3" +} + +"Soldier.MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers09.mp3" +} + +"Soldier.MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers10.mp3" +} + +"Soldier.MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers11.mp3" +} + +"Soldier.MVM_Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Jeers12.mp3" +} + +"Soldier.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughEvil01.mp3" +} + +"Soldier.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughEvil02.mp3" +} + +"Soldier.MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughEvil03.mp3" +} + +"Soldier.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughHappy01.mp3" +} + +"Soldier.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughHappy02.mp3" +} + +"Soldier.MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughHappy03.mp3" +} + +"Soldier.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughLong01.mp3" +} + +"Soldier.MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughLong02.mp3" +} + +"Soldier.MVM_LaughLong03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughLong03.mp3" +} + +"Soldier.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughShort01.mp3" +} + +"Soldier.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughShort02.mp3" +} + +"Soldier.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughShort03.mp3" +} + +"Soldier.MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_LaughShort04.mp3" +} + +"Soldier.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Medic01.mp3" +} + +"Soldier.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Medic02.mp3" +} + +"Soldier.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Medic03.mp3" +} + +"Soldier.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_MoveUp01.mp3" +} + +"Soldier.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_MoveUp02.mp3" +} + +"Soldier.MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_MoveUp03.mp3" +} + +"Soldier.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NeedDispenser01.mp3" +} + +"Soldier.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NeedSentry01.mp3" +} + +"Soldier.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NeedTeleporter01.mp3" +} + +"Soldier.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NegativeVocalization01.mp3" +} + +"Soldier.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NegativeVocalization02.mp3" +} + +"Soldier.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NegativeVocalization03.mp3" +} + +"Soldier.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NegativeVocalization04.mp3" +} + +"Soldier.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NegativeVocalization05.mp3" +} + +"Soldier.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NegativeVocalization06.mp3" +} + +"Soldier.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NiceShot01.mp3" +} + +"Soldier.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NiceShot02.mp3" +} + +"Soldier.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_NiceShot03.mp3" +} + +"Soldier.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_No01.mp3" +} + +"Soldier.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_No02.mp3" +} + +"Soldier.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_No03.mp3" +} + +"Soldier.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath01.mp3" +} + +"Soldier.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath02.mp3" +} + +"Soldier.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath03.mp3" +} + +"Soldier.MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainCrticialDeath04.mp3" +} + +"Soldier.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSevere01.mp3" +} + +"Soldier.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSevere02.mp3" +} + +"Soldier.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSevere03.mp3" +} + +"Soldier.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSevere04.mp3" +} + +"Soldier.MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSevere05.mp3" +} + +"Soldier.MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSevere06.mp3" +} + +"Soldier.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp01.mp3" +} + +"Soldier.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp02.mp3" +} + +"Soldier.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp03.mp3" +} + +"Soldier.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp04.mp3" +} + +"Soldier.MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp05.mp3" +} + +"Soldier.MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp06.mp3" +} + +"Soldier.MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp07.mp3" +} + +"Soldier.MVM_PainSharp08" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/soldier_mvm_PainSharp08.mp3" +} + +"Soldier.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_PositiveVocalization01.mp3" +} + +"Soldier.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_PositiveVocalization02.mp3" +} + +"Soldier.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_PositiveVocalization03.mp3" +} + +"Soldier.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_PositiveVocalization04.mp3" +} + +"Soldier.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_PositiveVocalization05.mp3" +} + +"Soldier.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SentryAhead01.mp3" +} + +"Soldier.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SentryAhead02.mp3" +} + +"Soldier.MVM_SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SentryAhead03.mp3" +} + +"Soldier.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Soldier.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SpecialCompleted01.mp3" +} + +"Soldier.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SpecialCompleted02.mp3" +} + +"Soldier.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SpecialCompleted03.mp3" +} + +"Soldier.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SpecialCompleted04.mp3" +} + +"Soldier.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_SpecialCompleted05.mp3" +} + +"Soldier.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_StandOnThePoint01.mp3" +} + +"Soldier.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_StandOnThePoint02.mp3" +} + +"Soldier.MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_StandOnThePoint03.mp3" +} + +"Soldier.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts01.mp3" +} + +"Soldier.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts02.mp3" +} + +"Soldier.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts03.mp3" +} + +"Soldier.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts04.mp3" +} + +"Soldier.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts05.mp3" +} + +"Soldier.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts06.mp3" +} + +"Soldier.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts07.mp3" +} + +"Soldier.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts08.mp3" +} + +"Soldier.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts09.mp3" +} + +"Soldier.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts10.mp3" +} + +"Soldier.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts11.mp3" +} + +"Soldier.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts12.mp3" +} + +"Soldier.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts13.mp3" +} + +"Soldier.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts14.mp3" +} + +"Soldier.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts15.mp3" +} + +"Soldier.MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts16.mp3" +} + +"Soldier.MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts17.mp3" +} + +"Soldier.MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts18.mp3" +} + +"Soldier.MVM_Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts19.mp3" +} + +"Soldier.MVM_Taunts20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts20.mp3" +} + +"Soldier.MVM_Taunts21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/soldier_mvm_Taunts21.mp3" +} + +"Soldier.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Thanks01.mp3" +} + +"Soldier.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Thanks02.mp3" +} + +"Soldier.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ThanksForTheHeal01.mp3" +} + +"Soldier.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ThanksForTheHeal02.mp3" +} + +"Soldier.MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ThanksForTheHeal03.mp3" +} + +"Soldier.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ThanksForTheTeleporter01.mp3" +} + +"Soldier.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ThanksForTheTeleporter02.mp3" +} + +"Soldier.MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_ThanksForTheTeleporter03.mp3" +} + +"Soldier.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Yes01.mp3" +} + +"Soldier.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Yes02.mp3" +} + +"Soldier.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Yes03.mp3" +} + +"Soldier.MVM_Yes04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/soldier_mvm_Yes04.mp3" +} + +"Spy.MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ActivateCharge01.mp3" +} + +"Spy.MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ActivateCharge02.mp3" +} + +"Spy.MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ActivateCharge03.mp3" +} + +"Spy.MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoCappedControlPoint01.mp3" +} + +"Spy.MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoCappedControlPoint02.mp3" +} + +"Spy.MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoCappedControlPoint03.mp3" +} + +"Spy.MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoCappedIntelligence01.mp3" +} + +"Spy.MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoCappedIntelligence02.mp3" +} + +"Spy.MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoCappedIntelligence03.mp3" +} + +"Spy.MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoDejectedTie01.mp3" +} + +"Spy.MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoDejectedTie02.mp3" +} + +"Spy.MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoDejectedTie03.mp3" +} + +"Spy.MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoOnFire01.mp3" +} + +"Spy.MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoOnFire02.mp3" +} + +"Spy.MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_AutoOnFire03.mp3" +} + +"Spy.MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_BattleCry01.mp3" +} + +"Spy.MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_BattleCry02.mp3" +} + +"Spy.MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_BattleCry03.mp3" +} + +"Spy.MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_BattleCry04.mp3" +} + +"Spy.MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers01.mp3" +} + +"Spy.MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers02.mp3" +} + +"Spy.MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers03.mp3" +} + +"Spy.MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers04.mp3" +} + +"Spy.MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers05.mp3" +} + +"Spy.MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers06.mp3" +} + +"Spy.MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers07.mp3" +} + +"Spy.MVM_Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Cheers08.mp3" +} + +"Spy.MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpy01.mp3" +} + +"Spy.MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpy02.mp3" +} + +"Spy.MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpy03.mp3" +} + +"Spy.MVM_CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpy04.mp3" +} + +"Spy.MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify01.mp3" +} + +"Spy.MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify02.mp3" +} + +"Spy.MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify03.mp3" +} + +"Spy.MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify04.mp3" +} + +"Spy.MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify05.mp3" +} + +"Spy.MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify06.mp3" +} + +"Spy.MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify07.mp3" +} + +"Spy.MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify08.mp3" +} + +"Spy.MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify09.mp3" +} + +"Spy.MVM_CloakedSpyIdentify10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_CloakedSpyIdentify10.mp3" +} + +"Spy.MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Go01.mp3" +} + +"Spy.MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Go02.mp3" +} + +"Spy.MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Go03.mp3" +} + +"Spy.MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_GoodJob01.mp3" +} + +"Spy.MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_GoodJob02.mp3" +} + +"Spy.MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_GoodJob03.mp3" +} + +"Spy.MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HeadLeft01.mp3" +} + +"Spy.MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HeadLeft02.mp3" +} + +"Spy.MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HeadLeft03.mp3" +} + +"Spy.MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HeadRight01.mp3" +} + +"Spy.MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HeadRight02.mp3" +} + +"Spy.MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HeadRight03.mp3" +} + +"Spy.MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMe01.mp3" +} + +"Spy.MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMe02.mp3" +} + +"Spy.MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMe03.mp3" +} + +"Spy.MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMeCapture01.mp3" +} + +"Spy.MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMeCapture02.mp3" +} + +"Spy.MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMeCapture03.mp3" +} + +"Spy.MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMeDefend01.mp3" +} + +"Spy.MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMeDefend02.mp3" +} + +"Spy.MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_HelpMeDefend03.mp3" +} + +"Spy.MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Incoming01.mp3" +} + +"Spy.MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Incoming02.mp3" +} + +"Spy.MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Incoming03.mp3" +} + +"Spy.MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Jeers01.mp3" +} + +"Spy.MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Jeers02.mp3" +} + +"Spy.MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Jeers03.mp3" +} + +"Spy.MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Jeers04.mp3" +} + +"Spy.MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Jeers05.mp3" +} + +"Spy.MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Jeers06.mp3" +} + +"Spy.MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughEvil01.mp3" +} + +"Spy.MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughEvil02.mp3" +} + +"Spy.MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughHappy01.mp3" +} + +"Spy.MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughHappy02.mp3" +} + +"Spy.MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughHappy03.mp3" +} + +"Spy.MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughLong01.mp3" +} + +"Spy.MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughShort01.mp3" +} + +"Spy.MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughShort02.mp3" +} + +"Spy.MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughShort03.mp3" +} + +"Spy.MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughShort04.mp3" +} + +"Spy.MVM_LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughShort05.mp3" +} + +"Spy.MVM_LaughShort06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_LaughShort06.mp3" +} + +"Spy.MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Medic01.mp3" +} + +"Spy.MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Medic02.mp3" +} + +"Spy.MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Medic03.mp3" +} + +"Spy.MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_MoveUp01.mp3" +} + +"Spy.MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_MoveUp02.mp3" +} + +"Spy.MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NeedDispenser01.mp3" +} + +"Spy.MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NeedSentry01.mp3" +} + +"Spy.MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NeedTeleporter01.mp3" +} + +"Spy.MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization01.mp3" +} + +"Spy.MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization02.mp3" +} + +"Spy.MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization03.mp3" +} + +"Spy.MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization04.mp3" +} + +"Spy.MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization05.mp3" +} + +"Spy.MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization06.mp3" +} + +"Spy.MVM_NegativeVocalization07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization07.mp3" +} + +"Spy.MVM_NegativeVocalization08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization08.mp3" +} + +"Spy.MVM_NegativeVocalization09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NegativeVocalization09.mp3" +} + +"Spy.MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NiceShot01.mp3" +} + +"Spy.MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NiceShot02.mp3" +} + +"Spy.MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_NiceShot03.mp3" +} + +"Spy.MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_No01.mp3" +} + +"Spy.MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_No02.mp3" +} + +"Spy.MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_No03.mp3" +} + +"Spy.MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath01.mp3" +} + +"Spy.MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath02.mp3" +} + +"Spy.MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainCrticialDeath03.mp3" +} + +"Spy.MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSevere01.mp3" +} + +"Spy.MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSevere02.mp3" +} + +"Spy.MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSevere03.mp3" +} + +"Spy.MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSevere04.mp3" +} + +"Spy.MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSevere05.mp3" +} + +"Spy.MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSharp01.mp3" +} + +"Spy.MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSharp02.mp3" +} + +"Spy.MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSharp03.mp3" +} + +"Spy.MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" +// "volume" "VOL_NORM" + "volume" "0.86" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_80dB" + + "wave" "vo/mvm/norm/spy_mvm_PainSharp04.mp3" +} + +"Spy.MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_PositiveVocalization01.mp3" +} + +"Spy.MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_PositiveVocalization02.mp3" +} + +"Spy.MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_PositiveVocalization03.mp3" +} + +"Spy.MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_PositiveVocalization04.mp3" +} + +"Spy.MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_PositiveVocalization05.mp3" +} + +"Spy.MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SentryAhead01.mp3" +} + +"Spy.MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SentryAhead02.mp3" +} + +"Spy.MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted-AssistedKill01.mp3" +} + +"Spy.MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted-AssistedKill02.mp3" +} + +"Spy.MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted01.mp3" +} + +"Spy.MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted02.mp3" +} + +"Spy.MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted03.mp3" +} + +"Spy.MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted04.mp3" +} + +"Spy.MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted05.mp3" +} + +"Spy.MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted06.mp3" +} + +"Spy.MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted07.mp3" +} + +"Spy.MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted08.mp3" +} + +"Spy.MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted09.mp3" +} + +"Spy.MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted10.mp3" +} + +"Spy.MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted11.mp3" +} + +"Spy.MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_SpecialCompleted12.mp3" +} + +"Spy.MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_StandOnThePoint01.mp3" +} + +"Spy.MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_StandOnThePoint02.mp3" +} + +"Spy.MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_StandOnThePoint03.mp3" +} + +"Spy.MVM_StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_StandOnThePoint04.mp3" +} + +"Spy.MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts01.mp3" +} + +"Spy.MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts02.mp3" +} + +"Spy.MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts03.mp3" +} + +"Spy.MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts04.mp3" +} + +"Spy.MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts05.mp3" +} + +"Spy.MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts06.mp3" +} + +"Spy.MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts07.mp3" +} + +"Spy.MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts08.mp3" +} + +"Spy.MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts09.mp3" +} + +"Spy.MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts10.mp3" +} + +"Spy.MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts11.mp3" +} + +"Spy.MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts12.mp3" +} + +"Spy.MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts13.mp3" +} + +"Spy.MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts14.mp3" +} + +"Spy.MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts15.mp3" +} + +"Spy.MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_Taunts16.mp3" +} + +"Spy.MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Thanks01.mp3" +} + +"Spy.MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Thanks02.mp3" +} + +"Spy.MVM_Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Thanks03.mp3" +} + +"Spy.MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ThanksForTheHeal01.mp3" +} + +"Spy.MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ThanksForTheHeal02.mp3" +} + +"Spy.MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ThanksForTheHeal03.mp3" +} + +"Spy.MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ThanksForTheTeleporter01.mp3" +} + +"Spy.MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ThanksForTheTeleporter02.mp3" +} + +"Spy.MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_ThanksForTheTeleporter03.mp3" +} + +"Spy.MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Yes01.mp3" +} + +"Spy.MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Yes02.mp3" +} + +"Spy.MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/spy_mvm_Yes03.mp3" +} + +"Spy.MVM_HighFiveSuccess01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive_success01.mp3" +} + +"Spy.MVM_HighFiveSuccess02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive_success02.mp3" +} + +"Spy.MVM_HighFiveSuccess03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive_success03.mp3" +} + +"Spy.MVM_HighFiveSuccess04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive_success04.mp3" +} +"Spy.MVM_HighFiveSuccess05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive_success05.mp3" +} + +"Spy.MVM_HighFive01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive01.mp3" +} + +"Spy.MVM_HighFive02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive02.mp3" +} + +"Spy.MVM_HighFive03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive03.mp3" +} + +"Spy.MVM_HighFive04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive04.mp3" +} + +"Spy.MVM_HighFive05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive05.mp3" +} + +"Spy.MVM_HighFive06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive06.mp3" +} + +"Spy.MVM_HighFive07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive07.mp3" +} + +"Spy.MVM_HighFive08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive08.mp3" +} + +"Spy.MVM_HighFive09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive09.mp3" +} + +"Spy.MVM_HighFive10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive10.mp3" +} + +"Spy.MVM_HighFive11" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive11.mp3" +} + +"Spy.MVM_HighFive12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive12.mp3" +} + +"Spy.MVM_HighFive13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive13.mp3" +} + +"Spy.MVM_HighFive14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/taunts/spy_mvm_highfive14.mp3" +} + + +// ----------------------------------------------------------------------------- +// Heavy +// ----------------------------------------------------------------------------- + +"Heavy.MVM_Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award01.mp3" +} + +"Heavy.MVM_Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award02.mp3" +} + +"Heavy.MVM_Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award03.mp3" +} + +"Heavy.MVM_Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award04.mp3" +} + +"Heavy.MVM_Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award05.mp3" +} + +"Heavy.MVM_Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award07.mp3" +} + +"Heavy.MVM_Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award08.mp3" +} + +"Heavy.MVM_Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award09.mp3" +} + +"Heavy.MVM_Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award10.mp3" +} + +"Heavy.MVM_Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award11.mp3" +} + +"Heavy.MVM_Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award12.mp3" +} + +"Heavy.MVM_Award13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award13.mp3" +} + +"Heavy.MVM_Award16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award16.mp3" +} + +"Heavy.MVM_Award14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award14.mp3" +} + +"Heavy.MVM_Award15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award15.mp3" +} + +"Heavy.MVM_Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Award06.mp3" +} + +"Heavy.MVM_CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense01.mp3" +} + +"Heavy.MVM_CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense02.mp3" +} + +"Heavy.MVM_CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense03.mp3" +} + +"Heavy.MVM_CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense04.mp3" +} + +"Heavy.MVM_CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense05.mp3" +} + +"Heavy.MVM_CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense06.mp3" +} + +"Heavy.MVM_CartGoingBackDefense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense07.mp3" +} + +"Heavy.MVM_CartGoingBackDefense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackDefense08.mp3" +} + +"Heavy.MVM_CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense01.mp3" +} + +"Heavy.MVM_CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense02.mp3" +} + +"Heavy.MVM_CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense03.mp3" +} + +"Heavy.MVM_CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense04.mp3" +} + +"Heavy.MVM_CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense05.mp3" +} + +"Heavy.MVM_CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense06.mp3" +} + +"Heavy.MVM_CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartGoingBackOffense07.mp3" +} + +"Heavy.MVM_CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardDefense01.mp3" +} + +"Heavy.MVM_CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardDefense02.mp3" +} + +"Heavy.MVM_CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardDefense04.mp3" +} + +"Heavy.MVM_CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardDefense05.mp3" +} + +"Heavy.MVM_CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardDefense03.mp3" +} + +"Heavy.MVM_CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardDefense06.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense01.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense02.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense03.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense04.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense05.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense06.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense07.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense08.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense09.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense11.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense12.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense13.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense14.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense15.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense16.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense17.mp3" +} + +"Heavy.MVM_CartMovingForwardOffense10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartMovingForwardOffense10.mp3" +} + +"Heavy.MVM_CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStayCloseOffense01.mp3" +} + +"Heavy.MVM_CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStayCloseOffense02.mp3" +} + +"Heavy.MVM_CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStayCloseOffense03.mp3" +} + +"Heavy.MVM_CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStayCloseOffense06.mp3" +} + +"Heavy.MVM_CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStayCloseOffense05.mp3" +} + +"Heavy.MVM_CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStayCloseOffense04.mp3" +} + +"Heavy.MVM_CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStopItDefense01.mp3" +} + +"Heavy.MVM_CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStopItDefense02.mp3" +} + +"Heavy.MVM_CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStopItDefense03.mp3" +} + +"Heavy.MVM_CartStopItDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStopItDefense04.mp3" +} + +"Heavy.MVM_CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStoppedOffense01.mp3" +} + +"Heavy.MVM_CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStoppedOffense02.mp3" +} + +"Heavy.MVM_CartStoppedOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStoppedOffense04.mp3" +} + +"Heavy.MVM_CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_CartStoppedOffense03.mp3" +} + +"Heavy.MVM_Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination01.mp3" +} + +"Heavy.MVM_Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination02.mp3" +} + +"Heavy.MVM_Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination03.mp3" +} + +"Heavy.MVM_Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination04.mp3" +} + +"Heavy.MVM_Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination05.mp3" +} + +"Heavy.MVM_Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination06.mp3" +} + +"Heavy.MVM_Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination07.mp3" +} + +"Heavy.MVM_Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination08.mp3" +} + +"Heavy.MVM_Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination09.mp3" +} + +"Heavy.MVM_Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination10.mp3" +} + +"Heavy.MVM_Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination11.mp3" +} + +"Heavy.MVM_Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination12.mp3" +} + +"Heavy.MVM_Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination13.mp3" +} + +"Heavy.MVM_Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination14.mp3" +} + +"Heavy.MVM_Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination15.mp3" +} + +"Heavy.MVM_Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination16.mp3" +} + +"Heavy.MVM_Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination17.mp3" +} + +"Heavy.MVM_Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Domination18.mp3" +} + +"Heavy.MVM_FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_FightOnCap04.mp3" +} + +"Heavy.MVM_FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_FightOnCap01.mp3" +} + +"Heavy.MVM_FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_FightOnCap02.mp3" +} + +"Heavy.MVM_FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_FightOnCap03.mp3" +} + +"Heavy.MVM_LaughterBig02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_LaughterBig02.mp3" +} + +"Heavy.MVM_LaughterBig01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_LaughterBig01.mp3" +} + +"Heavy.MVM_LaughterBig03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_LaughterBig03.mp3" +} + +"Heavy.MVM_LaughterBig04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_LaughterBig04.mp3" +} + +"Heavy.MVM_MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow01.mp3" +} + +"Heavy.MVM_MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow02.mp3" +} + +"Heavy.MVM_MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow03.mp3" +} + +"Heavy.MVM_MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow04.mp3" +} + +"Heavy.MVM_MedicFollow05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow05.mp3" +} + +"Heavy.MVM_MedicFollow06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow06.mp3" +} + +"Heavy.MVM_MedicFollow07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MedicFollow07.mp3" +} + +"Heavy.MVM_MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare01.mp3" +} + +"Heavy.MVM_MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare02.mp3" +} + +"Heavy.MVM_MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare03.mp3" +} + +"Heavy.MVM_MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare04.mp3" +} + +"Heavy.MVM_MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare05.mp3" +} + +"Heavy.MVM_MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare06.mp3" +} + +"Heavy.MVM_MeleeDare07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare07.mp3" +} + +"Heavy.MVM_MeleeDare08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare08.mp3" +} + +"Heavy.MVM_MeleeDare09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare09.mp3" +} + +"Heavy.MVM_MeleeDare10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare10.mp3" +} + +"Heavy.MVM_MeleeDare11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare11.mp3" +} + +"Heavy.MVM_MeleeDare12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare12.mp3" +} + +"Heavy.MVM_MeleeDare13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_MeleeDare13.mp3" +} + +"Heavy.MVM_Meleeing01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing01.mp3" +} + +"Heavy.MVM_Meleeing02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing02.mp3" +} + +"Heavy.MVM_Meleeing03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing03.mp3" +} + +"Heavy.MVM_Meleeing04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing04.mp3" +} + +"Heavy.MVM_Meleeing05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing05.mp3" +} + +"Heavy.MVM_Meleeing06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing06.mp3" +} + +"Heavy.MVM_Meleeing07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing07.mp3" +} + +"Heavy.MVM_Meleeing08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Meleeing08.mp3" +} + +"Heavy.MVM_Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge01.mp3" +} + +"Heavy.MVM_Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge02.mp3" +} + +"Heavy.MVM_Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge03.mp3" +} + +"Heavy.MVM_Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge04.mp3" +} + +"Heavy.MVM_Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge05.mp3" +} + +"Heavy.MVM_Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge06.mp3" +} + +"Heavy.MVM_Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge07.mp3" +} + +"Heavy.MVM_Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge08.mp3" +} + +"Heavy.MVM_Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge09.mp3" +} + +"Heavy.MVM_Revenge10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge10.mp3" +} + +"Heavy.MVM_Revenge11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge11.mp3" +} + +"Heavy.MVM_Revenge12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge12.mp3" +} + +"Heavy.MVM_Revenge13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge13.mp3" +} + +"Heavy.MVM_Revenge14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge14.mp3" +} + +"Heavy.MVM_Revenge15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Revenge15.mp3" +} + +"Heavy.MVM_Singing01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Singing01.mp3" +} + +"Heavy.MVM_Singing02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Singing02.mp3" +} + +"Heavy.MVM_Singing03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Singing03.mp3" +} + +"Heavy.MVM_Singing04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Singing04.mp3" +} + +"Heavy.MVM_Singing05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Singing05.mp3" +} + +"Heavy.MVM_Specials01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Specials01.mp3" +} + +"Heavy.MVM_Specials02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Specials02.mp3" +} + +"Heavy.MVM_Specials03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Specials03.mp3" +} + +"Heavy.MVM_Specials04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Specials04.mp3" +} + +"Heavy.MVM_Specials05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_Specials05.mp3" +} + +"Heavy.MVM_SpecialWeapon04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon04.mp3" +} + +"Heavy.MVM_SpecialWeapon01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon01.mp3" +} + +"Heavy.MVM_SpecialWeapon02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon02.mp3" +} + +"Heavy.MVM_SpecialWeapon03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon03.mp3" +} + +"Heavy.MVM_SpecialWeapon05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon05.mp3" +} + +"Heavy.MVM_SpecialWeapon06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon06.mp3" +} + +"Heavy.MVM_SpecialWeapon07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon07.mp3" +} + +"Heavy.MVM_SpecialWeapon08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon08.mp3" +} + +"Heavy.MVM_SpecialWeapon09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SpecialWeapon09.mp3" +} + +"Heavy.MVM_SandwichEat" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/SandwichEat09.mp3" +} + +"Heavy.MVM_SandwichTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt01.mp3" +} + +"Heavy.MVM_SandwichTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt02.mp3" +} + +"Heavy.MVM_SandwichTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt03.mp3" +} + +"Heavy.MVM_SandwichTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt04.mp3" +} + +"Heavy.MVM_SandwichTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt05.mp3" +} + +"Heavy.MVM_SandwichTaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt06.mp3" +} + +"Heavy.MVM_SandwichTaunt07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt07.mp3" +} + +"Heavy.MVM_SandwichTaunt08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt08.mp3" +} + +"Heavy.MVM_SandwichTaunt09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt09.mp3" +} + +"Heavy.MVM_SandwichTaunt10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt10.mp3" +} + +"Heavy.MVM_SandwichTaunt11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt11.mp3" +} + +"Heavy.MVM_SandwichTaunt12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt12.mp3" +} + +"Heavy.MVM_SandwichTaunt13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt13.mp3" +} + +"Heavy.MVM_SandwichTaunt14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt14.mp3" +} + +"Heavy.MVM_SandwichTaunt15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt15.mp3" +} + +"Heavy.MVM_SandwichTaunt16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt16.mp3" +} + +"Heavy.MVM_SandwichTaunt17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/heavy_mvm_SandwichTaunt17.mp3" +} + + + +//----------------------------------------------------------------------------- +//End of Heavy +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scout Batch 4 +//----------------------------------------------------------------------------- +"Scout.MVM_ApexofJump01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_ApexofJump01.mp3" +} + +"Scout.MVM_ApexofJump05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_ApexofJump05.mp3" +} + +"Scout.MVM_ApexofJump02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_ApexofJump02.mp3" +} + +"Scout.MVM_ApexofJump03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_ApexofJump03.mp3" +} + +"Scout.MVM_ApexofJump04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_ApexofJump04.mp3" +} + +"Scout.MVM_Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award01.mp3" +} + +"Scout.MVM_Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award02.mp3" +} + +"Scout.MVM_Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award04.mp3" +} + +"Scout.MVM_Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award03.mp3" +} + +"Scout.MVM_Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award05.mp3" +} + +"Scout.MVM_Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award06.mp3" +} + +"Scout.MVM_Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award07.mp3" +} + +"Scout.MVM_Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award08.mp3" +} + +"Scout.MVM_Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award09.mp3" +} + +"Scout.MVM_Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award11.mp3" +} + +"Scout.MVM_Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award12.mp3" +} + +"Scout.MVM_Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Award10.mp3" +} + +"Scout.MVM_BeingShotInvincible04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible04.mp3" +} + +"Scout.MVM_BeingShotInvincible07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible07.mp3" +} + +"Scout.MVM_BeingShotInvincible02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible02.mp3" +} + +"Scout.MVM_BeingShotInvincible01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible01.mp3" +} + +"Scout.MVM_BeingShotInvincible08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible08.mp3" +} + +"Scout.MVM_BeingShotInvincible09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible09.mp3" +} + +"Scout.MVM_BeingShotInvincible03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible03.mp3" +} + +"Scout.MVM_BeingShotInvincible10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible10.mp3" +} + +"Scout.MVM_BeingShotInvincible06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible06.mp3" +} + +"Scout.MVM_BeingShotInvincible05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible05.mp3" +} + +"Scout.MVM_BeingShotInvincible11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible11.mp3" +} + +"Scout.MVM_BeingShotInvincible12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible12.mp3" +} + +"Scout.MVM_BeingShotInvincible13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible13.mp3" +} + +"Scout.MVM_BeingShotInvincible14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible14.mp3" +} + +"Scout.MVM_BeingShotInvincible15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible15.mp3" +} + +"Scout.MVM_BeingShotInvincible16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible16.mp3" +} + +"Scout.MVM_BeingShotInvincible17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible17.mp3" +} + +"Scout.MVM_BeingShotInvincible18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible18.mp3" +} + +"Scout.MVM_BeingShotInvincible19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible19.mp3" +} + +"Scout.MVM_BeingShotInvincible20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible20.mp3" +} + +"Scout.MVM_BeingShotInvincible21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible21.mp3" +} + +"Scout.MVM_BeingShotInvincible22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible22.mp3" +} + +"Scout.MVM_BeingShotInvincible23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible23.mp3" +} + +"Scout.MVM_BeingShotInvincible24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible24.mp3" +} + +"Scout.MVM_BeingShotInvincible25" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible25.mp3" +} + +"Scout.MVM_BeingShotInvincible26" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible26.mp3" +} + +"Scout.MVM_BeingShotInvincible27" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible27.mp3" +} + +"Scout.MVM_BeingShotInvincible28" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible28.mp3" +} + +"Scout.MVM_BeingShotInvincible29" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible29.mp3" +} + +"Scout.MVM_BeingShotInvincible30" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible30.mp3" +} + +"Scout.MVM_BeingShotInvincible31" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible31.mp3" +} + +"Scout.MVM_BeingShotInvincible32" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible32.mp3" +} + +"Scout.MVM_BeingShotInvincible33" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible33.mp3" +} + +"Scout.MVM_BeingShotInvincible34" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible34.mp3" +} + +"Scout.MVM_BeingShotInvincible35" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible35.mp3" +} + +"Scout.MVM_BeingShotInvincible36" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_BeingShotInvincible36.mp3" +} + +"Scout.MVM_CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackDefense03.mp3" +} + +"Scout.MVM_CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackDefense01.mp3" +} + +"Scout.MVM_CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackDefense02.mp3" +} + +"Scout.MVM_CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackDefense04.mp3" +} + +"Scout.MVM_CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackDefense05.mp3" +} + +"Scout.MVM_CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackDefense06.mp3" +} + +"Scout.MVM_CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense01.mp3" +} + +"Scout.MVM_CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense02.mp3" +} + +"Scout.MVM_CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense03.mp3" +} + +"Scout.MVM_CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense07.mp3" +} + +"Scout.MVM_CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense04.mp3" +} + +"Scout.MVM_CartGoingBackOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense08.mp3" +} + +"Scout.MVM_CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense05.mp3" +} + +"Scout.MVM_CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartGoingBackOffense06.mp3" +} + +"Scout.MVM_CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardDefense01.mp3" +} + +"Scout.MVM_CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardDefense02.mp3" +} + +"Scout.MVM_CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardDefense03.mp3" +} + +"Scout.MVM_CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardDefense04.mp3" +} + +"Scout.MVM_CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardDefense05.mp3" +} + +"Scout.MVM_CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardDefense06.mp3" +} + +"Scout.MVM_CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardOffense01.mp3" +} + +"Scout.MVM_CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardOffense02.mp3" +} + +"Scout.MVM_CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardOffense03.mp3" +} + +"Scout.MVM_CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardOffense04.mp3" +} + +"Scout.MVM_CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardOffense06.mp3" +} + +"Scout.MVM_CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartMovingForwardOffense05.mp3" +} + +"Scout.MVM_CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStayCloseOffense01.mp3" +} + +"Scout.MVM_CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStayCloseOffense04.mp3" +} + +"Scout.MVM_CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStayCloseOffense02.mp3" +} + +"Scout.MVM_CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStayCloseOffense03.mp3" +} + +"Scout.MVM_CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStayCloseOffense05.mp3" +} + +"Scout.MVM_CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStayCloseOffense06.mp3" +} + +"Scout.MVM_CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStopItDefense01.mp3" +} + +"Scout.MVM_CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStopItDefense02.mp3" +} + +"Scout.MVM_CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStopItDefense03.mp3" +} + +"Scout.MVM_CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStoppedOffense01.mp3" +} + +"Scout.MVM_CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStoppedOffense02.mp3" +} + +"Scout.MVM_CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_CartStoppedOffense03.mp3" +} + +"Scout.MVM_Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination02.mp3" +} + +"Scout.MVM_Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination03.mp3" +} + +"Scout.MVM_Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination04.mp3" +} + +"Scout.MVM_Domination19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination19.mp3" +} + +"Scout.MVM_Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination05.mp3" +} + +"Scout.MVM_Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination18.mp3" +} + +"Scout.MVM_Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination06.mp3" +} + +"Scout.MVM_Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination07.mp3" +} + +"Scout.MVM_Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination08.mp3" +} + +"Scout.MVM_Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination09.mp3" +} + +"Scout.MVM_Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination10.mp3" +} + +"Scout.MVM_Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination11.mp3" +} + +"Scout.MVM_Domination20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination20.mp3" +} + +"Scout.MVM_Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination12.mp3" +} + +"Scout.MVM_Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination13.mp3" +} + +"Scout.MVM_Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination14.mp3" +} + +"Scout.MVM_Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination01.mp3" +} + +"Scout.MVM_Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination15.mp3" +} + +"Scout.MVM_Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination16.mp3" +} + +"Scout.MVM_Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination17.mp3" +} + +"Scout.MVM_Domination21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Domination21.mp3" +} + +"Scout.MVM_DominationDem01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationDem01.mp3" +} + +"Scout.MVM_DominationDem02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationDem02.mp3" +} + +"Scout.MVM_DominationDem05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationDem05.mp3" +} + +"Scout.MVM_DominationDem03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationDem03.mp3" +} + +"Scout.MVM_DominationDem04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationDem04.mp3" +} + +"Scout.MVM_DominationEng01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationEng01.mp3" +} + +"Scout.MVM_DominationEng02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationEng02.mp3" +} + +"Scout.MVM_DominationEng03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationEng03.mp3" +} + +"Scout.MVM_DominationEng04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationEng04.mp3" +} + +"Scout.MVM_DominationEng05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationEng05.mp3" +} + +"Scout.MVM_DominationEng06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationEng06.mp3" +} + +"Scout.MVM_DominationHvy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy01.mp3" +} + +"Scout.MVM_DominationHvy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy02.mp3" +} + +"Scout.MVM_DominationHvy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy03.mp3" +} + +"Scout.MVM_DominationHvy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy04.mp3" +} + +"Scout.MVM_DominationHvy05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy05.mp3" +} + +"Scout.MVM_DominationHvy06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy06.mp3" +} + +"Scout.MVM_DominationHvy07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy07.mp3" +} + +"Scout.MVM_DominationHvy08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy08.mp3" +} + +"Scout.MVM_DominationHvy09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy09.mp3" +} + +"Scout.MVM_DominationHvy10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationHvy10.mp3" +} + +"Scout.MVM_DominationMed06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationMed06.mp3" +} + +"Scout.MVM_DominationMed05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationMed05.mp3" +} + +"Scout.MVM_DominationMed01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationMed01.mp3" +} + +"Scout.MVM_DominationMed02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationMed02.mp3" +} + +"Scout.MVM_DominationMed03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationMed03.mp3" +} + +"Scout.MVM_DominationMed04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationMed04.mp3" +} + +"Scout.MVM_DominationPyr01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationPyr01.mp3" +} + +"Scout.MVM_DominationPyr02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationPyr02.mp3" +} + +"Scout.MVM_DominationPyr03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationPyr03.mp3" +} + +"Scout.MVM_DominationPyr06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationPyr06.mp3" +} + +"Scout.MVM_DominationPyr04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationPyr04.mp3" +} + +"Scout.MVM_DominationPyr05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationPyr05.mp3" +} + +"Scout.MVM_DominationSct01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSct01.mp3" +} + +"Scout.MVM_DominationSct02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSct02.mp3" +} + +"Scout.MVM_DominationSct03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSct03.mp3" +} + +"Scout.MVM_DominationSnp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSnp01.mp3" +} + +"Scout.MVM_DominationSnp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSnp02.mp3" +} + +"Scout.MVM_DominationSnp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSnp03.mp3" +} + +"Scout.MVM_DominationSnp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSnp04.mp3" +} + +"Scout.MVM_DominationSnp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSnp05.mp3" +} + +"Scout.MVM_DominationSol01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSol01.mp3" +} + +"Scout.MVM_DominationSol02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSol02.mp3" +} + +"Scout.MVM_DominationSol03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSol03.mp3" +} + +"Scout.MVM_DominationSol04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSol04.mp3" +} + +"Scout.MVM_DominationSol05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSol05.mp3" +} + +"Scout.MVM_DominationSol06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSol06.mp3" +} + +"Scout.MVM_DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSpy01.mp3" +} + +"Scout.MVM_DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSpy02.mp3" +} + +"Scout.MVM_DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSpy03.mp3" +} + +"Scout.MVM_DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_DominationSpy04.mp3" +} + +"Scout.MVM_FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_FightOnCap01.mp3" +} + +"Scout.MVM_FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_FightOnCap02.mp3" +} + +"Scout.MVM_FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_FightOnCap03.mp3" +} + +"Scout.MVM_FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_FightOnCap04.mp3" +} + +"Scout.MVM_Invincible01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Invincible01.mp3" +} + +"Scout.MVM_Invincible02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Invincible02.mp3" +} + +"Scout.MVM_Invincible04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Invincible04.mp3" +} + +"Scout.MVM_Invincible03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Invincible03.mp3" +} + +"Scout.MVM_InvincibleChgUnderFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleChgUnderFire01.mp3" +} + +"Scout.MVM_InvincibleChgUnderFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleChgUnderFire02.mp3" +} + +"Scout.MVM_InvincibleChgUnderFire04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleChgUnderFire04.mp3" +} + +"Scout.MVM_InvincibleChgUnderFire03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleChgUnderFire03.mp3" +} + +"Scout.MVM_InvincibleNotReady01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady01.mp3" +} + +"Scout.MVM_InvincibleNotReady02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady02.mp3" +} + +"Scout.MVM_InvincibleNotReady03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady03.mp3" +} + +"Scout.MVM_InvincibleNotReady04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady04.mp3" +} + +"Scout.MVM_InvincibleNotReady05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady05.mp3" +} + +"Scout.MVM_InvincibleNotReady06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady06.mp3" +} + +"Scout.MVM_InvincibleNotReady07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_InvincibleNotReady07.mp3" +} + +"Scout.MVM_MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MedicFollow01.mp3" +} + +"Scout.MVM_MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MedicFollow02.mp3" +} + +"Scout.MVM_MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MedicFollow03.mp3" +} + +"Scout.MVM_MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MedicFollow04.mp3" +} + +"Scout.MVM_MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MeleeDare01.mp3" +} + +"Scout.MVM_MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MeleeDare02.mp3" +} + +"Scout.MVM_MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MeleeDare06.mp3" +} + +"Scout.MVM_MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MeleeDare03.mp3" +} + +"Scout.MVM_MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MeleeDare04.mp3" +} + +"Scout.MVM_MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_MeleeDare05.mp3" +} + +"Scout.MVM_Misc01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc01.mp3" +} + +"Scout.MVM_Misc02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc02.mp3" +} + +"Scout.MVM_Misc03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc03.mp3" +} + +"Scout.MVM_Misc04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc04.mp3" +} + +"Scout.MVM_Misc05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc05.mp3" +} + +"Scout.MVM_Misc06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc06.mp3" +} + +"Scout.MVM_Misc07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc07.mp3" +} + +"Scout.MVM_Misc08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc08.mp3" +} + +"Scout.MVM_Misc09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Misc09.mp3" +} + +"Scout.MVM_Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge01.mp3" +} + +"Scout.MVM_Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge02.mp3" +} + +"Scout.MVM_Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge03.mp3" +} + +"Scout.MVM_Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge04.mp3" +} + +"Scout.MVM_Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge05.mp3" +} + +"Scout.MVM_Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge06.mp3" +} + +"Scout.MVM_Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge07.mp3" +} + +"Scout.MVM_Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge08.mp3" +} + +"Scout.MVM_Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_Revenge09.mp3" +} + +"Scout.MVM_StunBallHit02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit02.mp3" +} + +"Scout.MVM_StunBallHit03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit03.mp3" +} + +"Scout.MVM_StunBallHit04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit04.mp3" +} + +"Scout.MVM_StunBallHit05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit05.mp3" +} + +"Scout.MVM_StunBallHit06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit06.mp3" +} + +"Scout.MVM_StunBallHit07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit07.mp3" +} + +"Scout.MVM_StunBallHit08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit08.mp3" +} + +"Scout.MVM_StunBallHit09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit09.mp3" +} + +"Scout.MVM_StunBallHit10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit10.mp3" +} + +"Scout.MVM_StunBallHit15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit15.mp3" +} + +"Scout.MVM_StunBallHit11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit11.mp3" +} + +"Scout.MVM_StunBallHit16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit16.mp3" +} + +"Scout.MVM_StunBallHit12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit12.mp3" +} + +"Scout.MVM_StunBallHit13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit13.mp3" +} + +"Scout.MVM_StunBallHit14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit14.mp3" +} + +"Scout.MVM_StunBallHit01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHit01.mp3" +} + +"Scout.MVM_StunBallHittingIt02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHittingIt02.mp3" +} + +"Scout.MVM_StunBallHittingIt01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHittingIt01.mp3" +} + +"Scout.MVM_StunBallHittingIt04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHittingIt04.mp3" +} + +"Scout.MVM_StunBallHittingIt03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHittingIt03.mp3" +} + +"Scout.MVM_StunBallHittingIt05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallHittingIt05.mp3" +} + +"Scout.MVM_StunBallPickUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallPickUp01.mp3" +} + +"Scout.MVM_StunBallPickUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallPickUp02.mp3" +} + +"Scout.MVM_StunBallPickUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallPickUp03.mp3" +} + +"Scout.MVM_StunBallPickUp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallPickUp04.mp3" +} + +"Scout.MVM_StunBallPickUp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_StunBallPickUp05.mp3" +} + +"Scout.MVM_TripleJump01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_TripleJump01.mp3" +} + +"Scout.MVM_TripleJump03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_TripleJump03.mp3" +} + +"Scout.MVM_TripleJump02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_TripleJump02.mp3" +} + +"Scout.MVM_TripleJump04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/scout_mvm_TripleJump04.mp3" +} + +//----------------------------------------------------------------------------- +//End of Scout Batch 4 +//----------------------------------------------------------------------------- + + + +//----------------------------------------------------------------------------- +//Spy batch 6 +//----------------------------------------------------------------------------- + +"Spy.MVM_DominationDemoMan01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan01.mp3" +} + +"Spy.MVM_DominationDemoMan02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan02.mp3" +} + +"Spy.MVM_DominationDemoMan03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan03.mp3" +} + +"Spy.MVM_DominationDemoMan04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan04.mp3" +} + +"Spy.MVM_DominationDemoMan05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan05.mp3" +} + +"Spy.MVM_DominationDemoMan06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan06.mp3" +} + +"Spy.MVM_DominationDemoMan07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationDemoMan07.mp3" +} + +"Spy.MVM_DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationEngineer01.mp3" +} + +"Spy.MVM_DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationEngineer02.mp3" +} + +"Spy.MVM_DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationEngineer03.mp3" +} + +"Spy.MVM_DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationEngineer04.mp3" +} + +"Spy.MVM_DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationEngineer05.mp3" +} + +"Spy.MVM_DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationEngineer06.mp3" +} + +"Spy.MVM_DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy01.mp3" +} + +"Spy.MVM_DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy02.mp3" +} + +"Spy.MVM_DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy03.mp3" +} + +"Spy.MVM_DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy04.mp3" +} + +"Spy.MVM_DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy05.mp3" +} + +"Spy.MVM_DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy06.mp3" +} + +"Spy.MVM_DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy07.mp3" +} + +"Spy.MVM_DominationHeavy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationHeavy08.mp3" +} + +"Spy.MVM_DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationMedic01.mp3" +} + +"Spy.MVM_DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationMedic02.mp3" +} + +"Spy.MVM_DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationMedic03.mp3" +} + +"Spy.MVM_DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationMedic04.mp3" +} + +"Spy.MVM_DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationMedic05.mp3" +} + +"Spy.MVM_DominationMedic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationMedic06.mp3" +} + +"Spy.MVM_DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationPyro01.mp3" +} + +"Spy.MVM_DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationPyro02.mp3" +} + +"Spy.MVM_DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationPyro03.mp3" +} + +"Spy.MVM_DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationPyro04.mp3" +} + +"Spy.MVM_DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationPyro05.mp3" +} + +"Spy.MVM_DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout01.mp3" +} + +"Spy.MVM_DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout02.mp3" +} + +"Spy.MVM_DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout03.mp3" +} + +"Spy.MVM_DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout04.mp3" +} + +"Spy.MVM_DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout05.mp3" +} + +"Spy.MVM_DominationScout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout06.mp3" +} + +"Spy.MVM_DominationScout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout07.mp3" +} + +"Spy.MVM_DominationScout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationScout08.mp3" +} + +"Spy.MVM_DominationSniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper01.mp3" +} + +"Spy.MVM_DominationSniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper02.mp3" +} + +"Spy.MVM_DominationSniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper03.mp3" +} + +"Spy.MVM_DominationSniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper04.mp3" +} + +"Spy.MVM_DominationSniper05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper05.mp3" +} + +"Spy.MVM_DominationSniper06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper06.mp3" +} + +"Spy.MVM_DominationSniper07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSniper07.mp3" +} + +"Spy.MVM_DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSoldier01.mp3" +} + +"Spy.MVM_DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSoldier02.mp3" +} + +"Spy.MVM_DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSoldier03.mp3" +} + +"Spy.MVM_DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSoldier04.mp3" +} + +"Spy.MVM_DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSoldier05.mp3" +} + +"Spy.MVM_DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSpy01.mp3" +} + +"Spy.MVM_DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSpy02.mp3" +} + +"Spy.MVM_DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSpy03.mp3" +} + +"Spy.MVM_DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSpy04.mp3" +} + +"Spy.MVM_DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_DominationSpy05.mp3" +} + +"Spy.MVM_JarateHit01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_JarateHit01.mp3" +} + +"Spy.MVM_JarateHit02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_JarateHit02.mp3" +} + +"Spy.MVM_JarateHit03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_JarateHit03.mp3" +} + +"Spy.MVM_JarateHit04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_JarateHit04.mp3" +} + +"Spy.MVM_JarateHit05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_JarateHit05.mp3" +} + +"Spy.MVM_JarateHit06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_JarateHit06.mp3" +} + +"Spy.MVM_MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_MedicFollow01.mp3" +} + +"Spy.MVM_MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_MedicFollow02.mp3" +} + +"Spy.MVM_MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_MeleeDare01.mp3" +} + +"Spy.MVM_MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_MeleeDare02.mp3" +} + +"Spy.MVM_Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_Revenge01.mp3" +} + +"Spy.MVM_Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_Revenge02.mp3" +} + +"Spy.MVM_Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/spy_mvm_Revenge03.mp3" +} + +//----------------------------------------------------------------------------- +//End of Spy batch 6 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Sniper BATCH 7 +//----------------------------------------------------------------------------- + +"Sniper.MVM_DominationDemoMan01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationDemoMan01.mp3" +} + +"Sniper.MVM_DominationDemoMan02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationDemoMan02.mp3" +} + +"Sniper.MVM_DominationDemoMan03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationDemoMan03.mp3" +} + +"Sniper.MVM_DominationDemoMan04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationDemoMan04.mp3" +} + +"Sniper.MVM_DominationDemoMan05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationDemoMan05.mp3" +} + +"Sniper.MVM_DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationEngineer01.mp3" +} + +"Sniper.MVM_DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationEngineer02.mp3" +} + +"Sniper.MVM_DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationEngineer03.mp3" +} + +"Sniper.MVM_DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationEngineer04.mp3" +} + +"Sniper.MVM_DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationEngineer05.mp3" +} + +"Sniper.MVM_DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationEngineer06.mp3" +} + +"Sniper.MVM_DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy01.mp3" +} + +"Sniper.MVM_DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy02.mp3" +} + +"Sniper.MVM_DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy03.mp3" +} + +"Sniper.MVM_DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy04.mp3" +} + +"Sniper.MVM_DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy05.mp3" +} + +"Sniper.MVM_DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy06.mp3" +} + +"Sniper.MVM_DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationHeavy07.mp3" +} + +"Sniper.MVM_DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationMedic01.mp3" +} + +"Sniper.MVM_DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationMedic02.mp3" +} + +"Sniper.MVM_DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationMedic03.mp3" +} + +"Sniper.MVM_DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationMedic04.mp3" +} + +"Sniper.MVM_DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationMedic05.mp3" +} + +"Sniper.MVM_DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationPyro01.mp3" +} + +"Sniper.MVM_DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationPyro02.mp3" +} + +"Sniper.MVM_DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationPyro03.mp3" +} + +"Sniper.MVM_DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationPyro04.mp3" +} + +"Sniper.MVM_DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationPyro05.mp3" +} + +"Sniper.MVM_DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationScout01.mp3" +} + +"Sniper.MVM_DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationScout02.mp3" +} + +"Sniper.MVM_DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationScout03.mp3" +} + +"Sniper.MVM_DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationScout04.mp3" +} + +"Sniper.MVM_DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationScout05.mp3" +} + +"Sniper.MVM_DominationSniper18" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSniper18.mp3" +} + +"Sniper.MVM_DominationSniper19" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSniper19.mp3" +} + +"Sniper.MVM_DominationSniper20" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSniper20.mp3" +} + +"Sniper.MVM_DominationSniper21" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSniper21.mp3" +} + +"Sniper.MVM_DominationSniper22" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSniper22.mp3" +} + +"Sniper.MVM_DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSoldier01.mp3" +} + +"Sniper.MVM_DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSoldier02.mp3" +} + +"Sniper.MVM_DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSoldier03.mp3" +} + +"Sniper.MVM_DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSoldier04.mp3" +} + +"Sniper.MVM_DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSoldier05.mp3" +} + +"Sniper.MVM_DominationSoldier06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSoldier06.mp3" +} + +"Sniper.MVM_DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy01.mp3" +} + +"Sniper.MVM_DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy02.mp3" +} + +"Sniper.MVM_DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy03.mp3" +} + +"Sniper.MVM_DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy04.mp3" +} + +"Sniper.MVM_DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy05.mp3" +} + +"Sniper.MVM_DominationSpy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy06.mp3" +} + +"Sniper.MVM_DominationSpy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_DominationSpy07.mp3" +} + +"Sniper.MVM_JarateToss01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_JarateToss01.mp3" +} + +"Sniper.MVM_JarateToss02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_JarateToss02.mp3" +} + +"Sniper.MVM_JarateToss03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_JarateToss03.mp3" +} + +//----------------------------------------------------------------------------- +//End of Sniper BATCH 7 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Soldier BATCH 9 +//----------------------------------------------------------------------------- + +"Soldier.MVM_DirectHitTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DirectHitTaunt01.mp3" +} + +"Soldier.MVM_DirectHitTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DirectHitTaunt02.mp3" +} + +"Soldier.MVM_DirectHitTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DirectHitTaunt03.mp3" +} + +"Soldier.MVM_DirectHitTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DirectHitTaunt04.mp3" +} + +"Soldier.MVM_DominationDemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemoman01.mp3" +} + +"Soldier.MVM_DominationDemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemoman02.mp3" +} + +"Soldier.MVM_DominationDemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemoman03.mp3" +} + +"Soldier.MVM_DominationDemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemoman04.mp3" +} + +"Soldier.MVM_DominationDemoman05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemoman05.mp3" +} + +"Soldier.MVM_DominationDemoman06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemoman06.mp3" +} + +"Soldier.MVM_DominationDemonmanUpdate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemonmanUpdate01.mp3" +} + +"Soldier.MVM_DominationDemonmanUpdate02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemonmanUpdate02.mp3" +} + +"Soldier.MVM_DominationDemonmanUpdate03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemonmanUpdate03.mp3" +} + +"Soldier.MVM_DominationDemonmanUpdate04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemonmanUpdate04.mp3" +} + +"Soldier.MVM_DominationDemonmanUpdate05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationDemonmanUpdate05.mp3" +} + +"Soldier.MVM_DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationEngineer01.mp3" +} + +"Soldier.MVM_DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationEngineer02.mp3" +} + +"Soldier.MVM_DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationEngineer03.mp3" +} + +"Soldier.MVM_DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationEngineer04.mp3" +} + +"Soldier.MVM_DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationEngineer05.mp3" +} + +"Soldier.MVM_DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationEngineer06.mp3" +} + +"Soldier.MVM_DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy01.mp3" +} + +"Soldier.MVM_DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy02.mp3" +} + +"Soldier.MVM_DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy03.mp3" +} + +"Soldier.MVM_DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy04.mp3" +} + +"Soldier.MVM_DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy05.mp3" +} + +"Soldier.MVM_DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy06.mp3" +} + +"Soldier.MVM_DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationHeavy07.mp3" +} + +"Soldier.MVM_DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic01.mp3" +} + +"Soldier.MVM_DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic02.mp3" +} + +"Soldier.MVM_DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic03.mp3" +} + +"Soldier.MVM_DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic04.mp3" +} + +"Soldier.MVM_DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic05.mp3" +} + +"Soldier.MVM_DominationMedic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic06.mp3" +} + +"Soldier.MVM_DominationMedic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationMedic07.mp3" +} + +"Soldier.MVM_DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro01.mp3" +} + +"Soldier.MVM_DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro02.mp3" +} + +"Soldier.MVM_DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro03.mp3" +} + +"Soldier.MVM_DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro04.mp3" +} + +"Soldier.MVM_DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro05.mp3" +} + +"Soldier.MVM_DominationPyro06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro06.mp3" +} + +"Soldier.MVM_DominationPyro07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro07.mp3" +} + +"Soldier.MVM_DominationPyro08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro08.mp3" +} + +"Soldier.MVM_DominationPyro09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationPyro09.mp3" +} + +"Soldier.MVM_DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout01.mp3" +} + +"Soldier.MVM_DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout02.mp3" +} + +"Soldier.MVM_DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout03.mp3" +} + +"Soldier.MVM_DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout04.mp3" +} + +"Soldier.MVM_DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout05.mp3" +} + +"Soldier.MVM_DominationScout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout06.mp3" +} + +"Soldier.MVM_DominationScout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout07.mp3" +} + +"Soldier.MVM_DominationScout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout08.mp3" +} + +"Soldier.MVM_DominationScout09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout09.mp3" +} + +"Soldier.MVM_DominationScout10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout10.mp3" +} + +"Soldier.MVM_DominationScout11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationScout11.mp3" +} + +"Soldier.MVM_DominationSniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper01.mp3" +} + +"Soldier.MVM_DominationSniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper02.mp3" +} + +"Soldier.MVM_DominationSniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper03.mp3" +} + +"Soldier.MVM_DominationSniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper04.mp3" +} + +"Soldier.MVM_DominationSniper05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper05.mp3" +} + +"Soldier.MVM_DominationSniper06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper06.mp3" +} + +"Soldier.MVM_DominationSniper07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper07.mp3" +} + +"Soldier.MVM_DominationSniper08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper08.mp3" +} + +"Soldier.MVM_DominationSniper09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper09.mp3" +} + +"Soldier.MVM_DominationSniper10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper10.mp3" +} + +"Soldier.MVM_DominationSniper11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper11.mp3" +} + +"Soldier.MVM_DominationSniper12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper12.mp3" +} + +"Soldier.MVM_DominationSniper13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper13.mp3" +} + +"Soldier.MVM_DominationSniper14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSniper14.mp3" +} + +"Soldier.MVM_DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSoldier01.mp3" +} + +"Soldier.MVM_DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSoldier02.mp3" +} + +"Soldier.MVM_DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSoldier03.mp3" +} + +"Soldier.MVM_DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSoldier04.mp3" +} + +"Soldier.MVM_DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSoldier05.mp3" +} + +"Soldier.MVM_DominationSoldier06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSoldier06.mp3" +} + +"Soldier.MVM_DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy01.mp3" +} + +"Soldier.MVM_DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy02.mp3" +} + +"Soldier.MVM_DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy03.mp3" +} + +"Soldier.MVM_DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy04.mp3" +} + +"Soldier.MVM_DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy05.mp3" +} + +"Soldier.MVM_DominationSpy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy06.mp3" +} + +"Soldier.MVM_DominationSpy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy07.mp3" +} + +"Soldier.MVM_DominationSpy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_DominationSpy08.mp3" +} + +"Soldier.MVM_HatOverHeartTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_HatOverHeartTaunt01.mp3" +} + +"Soldier.MVM_HatOverHeartTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_HatOverHeartTaunt02.mp3" +} + +"Soldier.MVM_HatOverHeartTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_HatOverHeartTaunt03.mp3" +} + +"Soldier.MVM_HatOverHeartTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_HatOverHeartTaunt04.mp3" +} + +"Soldier.MVM_HatOverHeartTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_HatOverHeartTaunt05.mp3" +} + +"Soldier.MVM_HatOverHeartTaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_HatOverHeartTaunt06.mp3" +} + +"Soldier.MVM_KaBoomAlts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_KaBoomAlts01.mp3" +} + +"Soldier.MVM_KaBoomAlts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_KaBoomAlts02.mp3" +} + +"Soldier.MVM_KaBoomAlts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_KaBoomAlts03.mp3" +} + +"Soldier.MVM_PickAxeTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_PickAxeTaunt01.mp3" +} + +"Soldier.MVM_PickAxeTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_PickAxeTaunt02.mp3" +} + +"Soldier.MVM_PickAxeTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_PickAxeTaunt03.mp3" +} + +"Soldier.MVM_PickAxeTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_PickAxeTaunt04.mp3" +} + +"Soldier.MVM_PickAxeTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_PickAxeTaunt05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 9 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Demoman BATCH 10 +//----------------------------------------------------------------------------- + +"Demoman.MVM_dominationdemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationdemoman01.mp3" +} + +"Demoman.MVM_dominationdemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationdemoman02.mp3" +} + +"Demoman.MVM_dominationdemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationdemoman03.mp3" +} + +"Demoman.MVM_dominationdemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationdemoman04.mp3" +} + +"Demoman.MVM_dominationengineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationengineer01.mp3" +} + +"Demoman.MVM_dominationengineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationengineer02.mp3" +} + +"Demoman.MVM_dominationengineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationengineer03.mp3" +} + +"Demoman.MVM_dominationengineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationengineer04.mp3" +} + +"Demoman.MVM_dominationengineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationengineer05.mp3" +} + +"Demoman.MVM_dominationengineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationengineer06.mp3" +} + +"Demoman.MVM_dominationheavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationheavy01.mp3" +} + +"Demoman.MVM_dominationheavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationheavy02.mp3" +} + +"Demoman.MVM_dominationheavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationheavy03.mp3" +} + +"Demoman.MVM_dominationheavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationheavy04.mp3" +} + +"Demoman.MVM_dominationheavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationheavy05.mp3" +} + +"Demoman.MVM_dominationmedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationmedic01.mp3" +} + +"Demoman.MVM_dominationmedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationmedic02.mp3" +} + +"Demoman.MVM_dominationmedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationmedic03.mp3" +} + +"Demoman.MVM_dominationmedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationmedic04.mp3" +} + +"Demoman.MVM_dominationpyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationpyro01.mp3" +} + +"Demoman.MVM_dominationpyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationpyro02.mp3" +} + +"Demoman.MVM_dominationpyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationpyro03.mp3" +} + +"Demoman.MVM_dominationpyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationpyro04.mp3" +} + +"Demoman.MVM_dominationscout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout01.mp3" +} + +"Demoman.MVM_dominationscout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout02.mp3" +} + +"Demoman.MVM_dominationscout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout03.mp3" +} + +"Demoman.MVM_dominationscout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout04.mp3" +} + +"Demoman.MVM_dominationscout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout05.mp3" +} + +"Demoman.MVM_dominationscout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout06.mp3" +} + +"Demoman.MVM_dominationscout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout07.mp3" +} + +"Demoman.MVM_dominationscout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationscout08.mp3" +} + +"Demoman.MVM_dominationsniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsniper01.mp3" +} + +"Demoman.MVM_dominationsniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsniper02.mp3" +} + +"Demoman.MVM_dominationsniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsniper03.mp3" +} + +"Demoman.MVM_dominationsniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsniper04.mp3" +} + +"Demoman.MVM_dominationsoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldier01.mp3" +} + +"Demoman.MVM_dominationsoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldier02.mp3" +} + +"Demoman.MVM_dominationsoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldier03.mp3" +} + +"Demoman.MVM_dominationsoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldier04.mp3" +} + +"Demoman.MVM_dominationsoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldier05.mp3" +} + +"Demoman.MVM_dominationsoldierupdate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldierupdate01.mp3" +} + +"Demoman.MVM_dominationsoldierupdate02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldierupdate02.mp3" +} + +"Demoman.MVM_dominationsoldierupdate03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldierupdate03.mp3" +} + +"Demoman.MVM_dominationsoldierupdate04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldierupdate04.mp3" +} + +"Demoman.MVM_dominationsoldierupdate05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldierupdate05.mp3" +} + +"Demoman.MVM_dominationsoldierupdate06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationsoldierupdate06.mp3" +} + +"Demoman.MVM_dominationspy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationspy01.mp3" +} + +"Demoman.MVM_dominationspy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationspy02.mp3" +} + +"Demoman.MVM_dominationspy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_dominationspy03.mp3" +} + +"Demoman.MVM_eyelandertaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_eyelandertaunt01.mp3" +} + +"Demoman.MVM_eyelandertaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_eyelandertaunt02.mp3" +} + +"Demoman.MVM_gibberish01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish01.mp3" +} + +"Demoman.MVM_gibberish02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish02.mp3" +} + +"Demoman.MVM_gibberish03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish03.mp3" +} + +"Demoman.MVM_gibberish04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish04.mp3" +} + +"Demoman.MVM_gibberish05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish05.mp3" +} + +"Demoman.MVM_gibberish06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish06.mp3" +} + +"Demoman.MVM_gibberish07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish07.mp3" +} + +"Demoman.MVM_gibberish08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish08.mp3" +} + +"Demoman.MVM_gibberish09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish09.mp3" +} + +"Demoman.MVM_gibberish10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish10.mp3" +} + +"Demoman.MVM_gibberish11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish11.mp3" +} + +"Demoman.MVM_gibberish12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish12.mp3" +} + +"Demoman.MVM_gibberish13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/demoman_mvm_gibberish13.mp3" +} + +// ----------------------------------------------------------------------------- +// End of Demoman BATCH 10 +// ----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Soldier Robot +//----------------------------------------------------------------------------- + +"Soldier.MVM_Robot01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot01.mp3" +} + +"Soldier.MVM_Robot02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot02.mp3" +} + +"Soldier.MVM_Robot03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot03.mp3" +} + +"Soldier.MVM_Robot04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot04.mp3" +} + +"Soldier.MVM_Robot05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot05.mp3" +} + +"Soldier.MVM_Robot06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot06.mp3" +} + +"Soldier.MVM_Robot07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot07.mp3" +} + +"Soldier.MVM_Robot08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot08.mp3" +} + +"Soldier.MVM_Robot09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot09.mp3" +} + +"Soldier.MVM_Robot10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot10.mp3" +} + +"Soldier.MVM_Robot11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot11.mp3" +} + +"Soldier.MVM_Robot12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot12.mp3" +} + +"Soldier.MVM_Robot13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot13.mp3" +} + +"Soldier.MVM_Robot14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot14.mp3" +} + +"Soldier.MVM_Robot15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot15.mp3" +} + +"Soldier.MVM_Robot16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot16.mp3" +} + +"Soldier.MVM_Robot17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot17.mp3" +} + +"Soldier.MVM_Robot18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot18.mp3" +} + +"Soldier.MVM_Robot19" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot19.mp3" +} + +"Soldier.MVM_Robot20" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot20.mp3" +} + +"Soldier.MVM_Robot21" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot21.mp3" +} + +"Soldier.MVM_Robot22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot22.mp3" +} + +"Soldier.MVM_Robot23" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot23.mp3" +} + +"Soldier.MVM_Robot24" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot24.mp3" +} + +"Soldier.MVM_Robot25" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot25.mp3" +} + +"Soldier.MVM_Robot26" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot26.mp3" +} + +"Soldier.MVM_Robot27" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot27.mp3" +} + +"Soldier.MVM_Robot28" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot28.mp3" +} + +"Soldier.MVM_Robot29" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/soldier_mvm_robot29.mp3" +} + +"Credits.Updated" +{ + "channel" "CHAN_STATIC" + "volume" "0.1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + "wave" "ui/credits_updated.wav" +} + +"Announcer.MVM_Engineer_Teleporter_Activated" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_mvm_eng_tele_activated01.mp3" + "wave" "vo/announcer_mvm_eng_tele_activated02.mp3" + "wave" "vo/announcer_mvm_eng_tele_activated03.mp3" + "wave" "vo/announcer_mvm_eng_tele_activated04.mp3" + "wave" "vo/announcer_mvm_eng_tele_activated05.mp3" + } +} + +"Announcer.MVM_Another_Engineer_Teleport_Spawned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_mvm_engbot_another01.mp3" + "wave" "vo/announcer_mvm_engbot_another02.mp3" + } +} + +"Announcer.MVM_First_Engineer_Teleport_Spawned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_mvm_engbot_arrive01.mp3" + "wave" "vo/announcer_mvm_engbot_arrive02.mp3" + "wave" "vo/announcer_mvm_engbot_arrive03.mp3" + } +} + +"Announcer.MVM_An_Engineer_Bot_Is_Dead" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_mvm_engbot_dead_notele01.mp3" + "wave" "vo/announcer_mvm_engbot_dead_notele02.mp3" + "wave" "vo/announcer_mvm_engbot_dead_notele03.mp3" + } +} + +"Announcer.MVM_An_Engineer_Bot_Is_Dead_But_Not_Teleporter" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo/announcer_mvm_engbot_dead_tele01.mp3" + "wave" "vo/announcer_mvm_engbot_dead_tele02.mp3" + } +} diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm_handmade.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm_handmade.lua new file mode 100644 index 000000000..ebe7ddf1f --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm_handmade.lua @@ -0,0 +1,1632 @@ +// "Medic.Taunts16" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/norm/taunts/medic_Taunts16.mp3" +// } + + +// Custom stuff below this line + +"Heavy.MVM_Thanks04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/norm/heavy_mvm_Thanks04.mp3" +} + +// Sniper payload responses + +// Sniper defense - cart going back + +"sniper.MVM_CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense01.mp3" +} + +"sniper.MVM_CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense02.mp3" +} + +"sniper.MVM_CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense03.mp3" +} + +"sniper.MVM_CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense04.mp3" +} + +"sniper.MVM_CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense05.mp3" +} + +"sniper.MVM_CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense06.mp3" +} + +"sniper.MVM_CartGoingBackDefense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense07.mp3" +} + +"sniper.MVM_CartGoingBackDefense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefense08.mp3" +} + +// Sniper defense - cart going back soft + +"sniper.MVM_CartGoingBackDefenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft01.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft02.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft03.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft04.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft05.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft06.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft07.mp3" +} + +"sniper.MVM_CartGoingBackDefenseSoft08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackDefenseSoft08.mp3" +} + +// Sniper offense - cart going back +"sniper.MVM_CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense01.mp3" +} + +"sniper.MVM_CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense02.mp3" +} + +"sniper.MVM_CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense03.mp3" +} + +"sniper.MVM_CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense04.mp3" +} + +"sniper.MVM_CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense05.mp3" +} + +"sniper.MVM_CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense06.mp3" +} + +"sniper.MVM_CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffense07.mp3" +} + +// Sniper offense - cart going back soft + +"sniper.MVM_CartGoingBackOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft01.mp3" +} + +"sniper.MVM_CartGoingBackOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft02.mp3" +} + +"sniper.MVM_CartGoingBackOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft03.mp3" +} + +"sniper.MVM_CartGoingBackOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft04.mp3" +} + +"sniper.MVM_CartGoingBackOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft05.mp3" +} + +"sniper.MVM_CartGoingBackOffenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft06.mp3" +} + +"sniper.MVM_CartGoingBackOffenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartGoingBackOffenseSoft07.mp3" +} + +// Sniper defense - cart going forward + +"sniper.MVM_CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefense01.mp3" +} + +"sniper.MVM_CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefense02.mp3" +} + +"sniper.MVM_CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefense03.mp3" +} + +"sniper.MVM_CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefense04.mp3" +} + +"sniper.MVM_CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefense05.mp3" +} + +"sniper.MVM_CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefense06.mp3" +} + +// Sniper defense - cart going forward soft + +"sniper.MVM_CartMovingForwardDefenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefenseSoft01.mp3" +} + +"sniper.MVM_CartMovingForwardDefenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefenseSoft02.mp3" +} + +"sniper.MVM_CartMovingForwardDefenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefenseSoft03.mp3" +} + +"sniper.MVM_CartMovingForwardDefenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefenseSoft04.mp3" +} + +"sniper.MVM_CartMovingForwardDefenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefenseSoft05.mp3" +} + +"sniper.MVM_CartMovingForwardDefenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardDefenseSoft06.mp3" +} + +// Sniper offense - cart going forward + +"sniper.MVM_CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense01.mp3" +} + +"sniper.MVM_CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense02.mp3" +} + +"sniper.MVM_CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense03.mp3" +} + +"sniper.MVM_CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense04.mp3" +} + +"sniper.MVM_CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense05.mp3" +} + +"sniper.MVM_CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense06.mp3" +} + +"sniper.MVM_CartMovingForwardOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense07.mp3" +} + +"sniper.MVM_CartMovingForwardOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense08.mp3" +} + +"sniper.MVM_CartMovingForwardOffense09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense09.mp3" +} + +"sniper.MVM_CartMovingForwardOffense10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffense10.mp3" +} + +"sniper.MVM_CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense01.mp3" +} + +"sniper.MVM_CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense02.mp3" +} + +"sniper.MVM_CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense03.mp3" +} + +"sniper.MVM_CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense04.mp3" +} + +"sniper.MVM_CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense05.mp3" +} + +"sniper.MVM_CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense06.mp3" +} + +"sniper.MVM_CartStayCloseOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffense07.mp3" +} + +// Sniper offense - cart going forward soft + +"sniper.MVM_CartMovingForwardOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft01.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft02.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft03.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft03.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft04.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft05.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft06.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft07.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft08.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft09.mp3" +} + +"sniper.MVM_CartMovingForwardOffenseSoft10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartMovingForwardOffenseSoft10.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft01.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft02.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft03.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft04.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft05.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft06.mp3" +} + +"sniper.MVM_CartStayCloseOffenseSoft07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStayCloseOffenseSoft07.mp3" +} + +// Sniper defense - stop the cart + +"sniper.MVM_CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefense01.mp3" +} + +"sniper.MVM_CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefense02.mp3" +} + +"sniper.MVM_CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefense03.mp3" +} + +"sniper.MVM_CartStopItDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefense04.mp3" +} + +"sniper.MVM_CartStopItDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefense05.mp3" +} + +"sniper.MVM_CartStopItDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefense06.mp3" +} + +// Sniper defense - stop the cart soft + +"sniper.MVM_CartStopItDefenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefenseSoft01.mp3" +} + +"sniper.MVM_CartStopItDefenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefenseSoft02.mp3" +} + +"sniper.MVM_CartStopItDefenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefenseSoft03.mp3" +} + +"sniper.MVM_CartStopItDefenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefenseSoft04.mp3" +} + +"sniper.MVM_CartStopItDefenseSoft06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStopItDefenseSoft06.mp3" +} + +// Sniper offense - cart stopped + +"sniper.MVM_CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffense01.mp3" +} + +"sniper.MVM_CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffense02.mp3" +} + +"sniper.MVM_CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffense03.mp3" +} + +"sniper.MVM_CartStoppedOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffense04.mp3" +} + +"sniper.MVM_CartStoppedOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffense05.mp3" +} + +// Sniper offense - cart stopped soft + +"sniper.MVM_CartStoppedOffenseSoft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffenseSoft01.mp3" +} + +"sniper.MVM_CartStoppedOffenseSoft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffenseSoft02.mp3" +} + +"sniper.MVM_CartStoppedOffenseSoft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffenseSoft03.mp3" +} + +"sniper.MVM_CartStoppedOffenseSoft04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffenseSoft04.mp3" +} + +"sniper.MVM_CartStoppedOffenseSoft05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_CartStoppedOffenseSoft05.mp3" +} + +// Sniper unused domination lines. + +"sniper.MVM_Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination01.mp3" +} + +"sniper.MVM_Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination02.mp3" +} + +"sniper.MVM_Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination03.mp3" +} + +"sniper.MVM_Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination04.mp3" +} + +"sniper.MVM_Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination05.mp3" +} + +"sniper.MVM_Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination06.mp3" +} + +"sniper.MVM_Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination07.mp3" +} + +"sniper.MVM_Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination08.mp3" +} + +"sniper.MVM_Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination09.mp3" +} + +"sniper.MVM_Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination10.mp3" +} + +"sniper.MVM_Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination11.mp3" +} + +"sniper.MVM_Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination12.mp3" +} + +"sniper.MVM_Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination13.mp3" +} + +"sniper.MVM_Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination14.mp3" +} + + +"sniper.MVM_Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination15.mp3" +} + +"sniper.MVM_Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination16.mp3" +} + +"sniper.MVM_Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination17.mp3" +} + +"sniper.MVM_Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination18.mp3" +} + +"sniper.MVM_Domination19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination19.mp3" +} + +"sniper.MVM_Domination20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination20.mp3" +} + +"sniper.MVM_Domination21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination21.mp3" +} + +"sniper.MVM_Domination22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination22.mp3" +} + +"sniper.MVM_Domination23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination23.mp3" +} + +"sniper.MVM_Domination24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Domination24.mp3" +} + +// Sniper unused revenge lines. + +"sniper.MVM_Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge01.mp3" +} + +"sniper.MVM_Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge02.mp3" +} + +"sniper.MVM_Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge03.mp3" +} + +"sniper.MVM_Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge04.mp3" +} + +"sniper.MVM_Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge05.mp3" +} + +"sniper.MVM_Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge06.mp3" +} + +"sniper.MVM_Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge07.mp3" +} + +"sniper.MVM_Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge08.mp3" +} + +"sniper.MVM_Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge09.mp3" +} + +"sniper.MVM_Revenge10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge10.mp3" +} + +"sniper.MVM_Revenge11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge11.mp3" +} + +"sniper.MVM_Revenge12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge12.mp3" +} + +"sniper.MVM_Revenge13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge13.mp3" +} + +"sniper.MVM_Revenge14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge14.mp3" +} + +"sniper.MVM_Revenge15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge15.mp3" +} + +"sniper.MVM_Revenge16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge16.mp3" +} + +"sniper.MVM_Revenge17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge17.mp3" +} + +"sniper.MVM_Revenge18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge18.mp3" +} + +"sniper.MVM_Revenge19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge19.mp3" +} + +"sniper.MVM_Revenge20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge20.mp3" +} + +"sniper.MVM_Revenge21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge21.mp3" +} + +"sniper.MVM_Revenge22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge22.mp3" +} + +"sniper.MVM_Revenge23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge23.mp3" +} + +"sniper.MVM_Revenge24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge24.mp3" +} + +"sniper.MVM_Revenge25" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_Revenge25.mp3" +} + +// Sniper special weapon + +"sniper.MVM_SpecialWeapon01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon01.mp3" +} + +"sniper.MVM_SpecialWeapon02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon02.mp3" +} + +"sniper.MVM_SpecialWeapon03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon03.mp3" +} + +"sniper.MVM_SpecialWeapon04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon04.mp3" +} + +"sniper.MVM_SpecialWeapon05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon05.mp3" +} + +"sniper.MVM_SpecialWeapon06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon06.mp3" +} + +"sniper.MVM_SpecialWeapon07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon07.mp3" +} + +"sniper.MVM_SpecialWeapon08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon08.mp3" +} + +"sniper.MVM_SpecialWeapon09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_SpecialWeapon09.mp3" +} + +// Sniper unused fight on cap + + +"sniper.MVM_FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_FightOnCap01.mp3" +} + +"sniper.MVM_FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_FightOnCap02.mp3" +} + +"sniper.MVM_FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_FightOnCap03.mp3" +} + +"sniper.MVM_FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_FightOnCap04.mp3" +} + +"sniper.MVM_FightOnCap05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_FightOnCap05.mp3" +} + +"sniper.MVM_FightOnCap06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/norm/sniper_mvm_FightOnCap06.mp3" +} + +// 'Missing' Medic taunts +// "Medic.Taunts01_fixed" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/norm/taunts/medic_Taunts01.mp3" +// } + +"Spy.MVM_Chuckle" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_150dB" + + "rndwave" + { + "wave" "vo/mvm/norm/spy_mvm_LaughShort02.mp3" + "wave" "vo/mvm/norm/spy_mvm_LaughShort03.mp3" + "wave" "vo/mvm/norm/spy_mvm_LaughShort05.mp3" + } +} + +"Spy.MVM_TeaseVictim" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/norm/spy_mvm_cloakedspy03.mp3" + "wave" "vo/mvm/norm/spy_mvm_cloakedspy04.mp3" + "wave" "vo/mvm/norm/spy_mvm_Revenge01.mp3" + "wave" "vo/mvm/norm/spy_mvm_Revenge02.mp3" + "wave" "vo/mvm/norm/spy_mvm_Revenge03.mp3" + "wave" "vo/mvm/norm/spy_mvm_specialcomplete04.mp3" + "wave" "vo/mvm/norm/spy_mvm_specialcomplete10.mp3" + "wave" "vo/mvm/norm/spy_mvm_specialcomplete12.mp3" + } +} + +"Heavy.MVM_MobJabber" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/mvm/norm/heavy_mvm_laughevil01.mp3" + "wave" "vo/mvm/norm/heavy_mvm_laughevil02.mp3" + "wave" "vo/mvm/norm/heavy_mvm_laughevil03.mp3" + "wave" "vo/mvm/norm/heavy_mvm_laughevil04.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare01.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare02.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare03.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare04.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare05.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare06.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare07.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare08.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare09.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare10.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare11.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare12.mp3" + "wave" "vo/mvm/norm/heavy_mvm_meleedare13.mp3" + } +} + +"Scout.MVM_WanderJabber" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/mvm/norm/scout_mvm_generic01.mp3" + "wave" "vo/mvm/norm/scout_mvm_meleedare01.mp3" + "wave" "vo/mvm/norm/scout_mvm_meleedare02.mp3" + "wave" "vo/mvm/norm/scout_mvm_meleedare03.mp3" + "wave" "vo/mvm/norm/scout_mvm_misc02.mp3" // if you order now... + "wave" "vo/mvm/norm/scout_mvm_misc09.mp3" // wassamattah, you frikin' stupid? + "wave" "vo/mvm/norm/scout_mvm_negativevocalization03.mp3" // stupid, stupid, stupid! + "wave" "vo/mvm/norm/scout_mvm_positivevocalization02.mp3" // awright! + "wave" "vo/mvm/norm/scout_mvm_specialcompleted04.mp3" // yo, batter up! + "wave" "vo/mvm/norm/scout_mvm_invinciblenotready01.mp3" // c'mon, c'mon! + } +} + +"Scout.MVM_MobJabber" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/mvm/norm/scout_mvm_meleedare04.mp3" + "wave" "vo/mvm/norm/scout_mvm_meleedare05.mp3" + "wave" "vo/mvm/norm/scout_mvm_meleedare06.mp3" + "wave" "vo/mvm/norm/scout_mvm_misc03.mp3" + "wave" "vo/mvm/norm/scout_mvm_misc05.mp3" + "wave" "vo/mvm/norm/scout_mvm_misc08.mp3" + } +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm_mighty.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm_mighty.lua new file mode 100644 index 000000000..ca7f31736 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_mvm_mighty.lua @@ -0,0 +1,25107 @@ +// +// +// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! +// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! +// NOTE: AUTOMATICALLY GENERATED FILE, ANY HAND EDITED COMMENTS WILL BE LOST!!! +// +// VOL_NORM 1.0f +// +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- +// +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f +// +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, = 3.9 +// SNDLVL_55dB = 55, = 3.0 +// SNDLVL_IDLE = 60, = 2.0 +// SNDLVL_TALKING = 60, = 2.0 +// SNDLVL_60dB = 60, = 2.0 +// SNDLVL_65dB = 65, = 1.5 +// SNDLVL_STATIC = 66, = 1.25 +// SNDLVL_70dB = 70, = 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, = 0.8 +// SNDLVL_80dB = 80, = 0.7 +// SNDLVL_85dB = 85, = 0.6 +// SNDLVL_90dB = 90, = 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, = 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, = 0.27 +// SNDLVL_140dB = 140, = 0.2 +// SNDLVL_150dB = 150, = 0.2 +// + +//----------------------------------------------------------------------------- +// Player Deaths +//----------------------------------------------------------------------------- + +"Demoman.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere03.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere04.mp3" + } +} + +"Demoman.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath04.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath05.mp3" + } +} + +"Demoman.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath04.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath05.mp3" + } +} + +"Demoman.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp04.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp05.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp06.mp3" + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp07.mp3" + } +} + +// "Engineer.M_MVM_Death" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere01.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere02.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere03.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere04.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere05.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere06.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere07.mp3" + // } +// } + +// "Engineer.M_MVM_CritDeath" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath01.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath02.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath03.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath04.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath05.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath06.mp3" + // } +// } + +// "Engineer.M_MVM_MeleeDeath" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath01.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath02.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath03.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath04.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath05.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath06.mp3" + // } +// } + +// "Engineer.M_MVM_ExplosionDeath" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp01.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp02.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp03.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp04.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp05.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp06.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp07.mp3" + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp08.mp3" + // } +// } + + + +"Heavy.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/heavy_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainSevere03.mp3" + } +} + +"Heavy.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath03.mp3" + } +} + +"Heavy.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath03.mp3" + } +} + +"Heavy.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp04.mp3" + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp05.mp3" + } +} + + + +"Medic.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/medic_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSevere03.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSevere04.mp3" + } +} + +"Medic.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath04.mp3" + } +} + +"Medic.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath04.mp3" + } +} + +"Medic.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp04.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp05.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp06.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp07.mp3" + "wave" "vo/mvm/mght/medic_mvm_m_PainSharp08.mp3" + } +} + + + +"Pyro.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere03.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere04.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere05.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere06.mp3" + } +} + +"Pyro.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath03.mp3" + } +} + +"Pyro.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath03.mp3" + } +} + +"Pyro.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp04.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp05.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp06.mp3" + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp07.mp3" + } +} + + +"Scout.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere03.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere04.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere05.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere06.mp3" + } +} + +"Scout.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath03.mp3" + } +} + +"Scout.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath03.mp3" + } +} + +"Scout.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp04.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp05.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp06.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp07.mp3" + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp08.mp3" + } +} + + +"Sniper.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere03.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere04.mp3" + } +} + +"Sniper.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath04.mp3" + } +} + +"Sniper.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath04.mp3" + } +} + +"Sniper.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp04.mp3" + } +} + + +// "Spy.MVM_Death" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/spy_mvm_PainSevere01.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSevere02.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSevere03.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSevere04.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSevere05.mp3" + // } +// } + +// "Spy.MVM_CritDeath" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath01.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath02.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath03.mp3" + // } +// } + +// "Spy.MVM_MeleeDeath" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath01.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath02.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath03.mp3" + // } +// } + +// "Spy.MVM_ExplosionDeath" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "rndwave" + // { + // "wave" "vo/mvm/mght/spy_mvm_PainSharp01.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSharp02.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSharp03.mp3" + // "wave" "vo/mvm/mght/spy_mvm_PainSharp04.mp3" + // } +// } + + +"Soldier.M_MVM_Death" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere01.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere02.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere03.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere04.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere05.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere06.mp3" + } +} + +"Soldier.M_MVM_CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath04.mp3" + } +} + +"Soldier.M_MVM_MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath01.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath02.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath03.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath04.mp3" + } +} + +"Soldier.M_MVM_ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp01.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp02.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp03.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp04.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp05.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp06.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp07.mp3" + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp08.mp3" + } +} + + +//----------------------------------------------------------------------------- +// End Player Deaths +//----------------------------------------------------------------------------- + + +"Demoman.M_MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ActivateCharge01.mp3" +} + +"Demoman.M_MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ActivateCharge02.mp3" +} + +"Demoman.M_MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ActivateCharge03.mp3" +} + +"Demoman.M_MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoCappedControlPoint01.mp3" +} + +"Demoman.M_MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoCappedControlPoint02.mp3" +} + +"Demoman.M_MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoCappedControlPoint03.mp3" +} + +"Demoman.M_MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoCappedIntelligence01.mp3" +} + +"Demoman.M_MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoCappedIntelligence02.mp3" +} + +"Demoman.M_MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoCappedIntelligence03.mp3" +} + +"Demoman.M_MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoDejectedTie01.mp3" +} + +"Demoman.M_MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoDejectedTie02.mp3" +} + +"Demoman.M_MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoDejectedTie03.mp3" +} + +"Demoman.M_MVM_AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoDejectedTie04.mp3" +} + +"Demoman.M_MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoOnFire01.mp3" +} + +"Demoman.M_MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoOnFire02.mp3" +} + +"Demoman.M_MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_AutoOnFire03.mp3" +} + +"Demoman.M_MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry01.mp3" +} + +"Demoman.M_MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry02.mp3" +} + +"Demoman.M_MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry03.mp3" +} + +"Demoman.M_MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry04.mp3" +} + +"Demoman.M_MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry05.mp3" +} + +"Demoman.M_MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry06.mp3" +} + +"Demoman.M_MVM_BattleCry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_BattleCry07.mp3" +} + +"Demoman.M_MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers01.mp3" +} + +"Demoman.M_MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers02.mp3" +} + +"Demoman.M_MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers03.mp3" +} + +"Demoman.M_MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers04.mp3" +} + +"Demoman.M_MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers05.mp3" +} + +"Demoman.M_MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers06.mp3" +} + +"Demoman.M_MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers07.mp3" +} + +"Demoman.M_MVM_Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Cheers08.mp3" +} + +"Demoman.M_MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpy01.mp3" +} + +"Demoman.M_MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpy02.mp3" +} + +"Demoman.M_MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpy03.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify01.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify02.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify03.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify04.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify05.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify06.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify07.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify08.mp3" +} + +"Demoman.M_MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_CloakedSpyIdentify09.mp3" +} + +"Demoman.M_MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Go01.mp3" +} + +"Demoman.M_MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Go02.mp3" +} + +"Demoman.M_MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Go03.mp3" +} + +"Demoman.M_MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_GoodJob01.mp3" +} + +"Demoman.M_MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_GoodJob02.mp3" +} + +"Demoman.M_MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HeadLeft01.mp3" +} + +"Demoman.M_MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HeadLeft02.mp3" +} + +"Demoman.M_MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HeadLeft03.mp3" +} + +"Demoman.M_MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HeadRight01.mp3" +} + +"Demoman.M_MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HeadRight02.mp3" +} + +"Demoman.M_MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HeadRight03.mp3" +} + +"Demoman.M_MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMe01.mp3" +} + +"Demoman.M_MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMe02.mp3" +} + +"Demoman.M_MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMe03.mp3" +} + +"Demoman.M_MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMeCapture01.mp3" +} + +"Demoman.M_MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMeCapture02.mp3" +} + +"Demoman.M_MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMeCapture03.mp3" +} + +"Demoman.M_MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMeDefend01.mp3" +} + +"Demoman.M_MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMeDefend02.mp3" +} + +"Demoman.M_MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_HelpMeDefend03.mp3" +} + +"Demoman.M_MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Incoming01.mp3" +} + +"Demoman.M_MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Incoming02.mp3" +} + +"Demoman.M_MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Incoming03.mp3" +} + +"Demoman.M_MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers01.mp3" +} + +"Demoman.M_MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers02.mp3" +} + +"Demoman.M_MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers03.mp3" +} + +"Demoman.M_MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers04.mp3" +} + +"Demoman.M_MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers05.mp3" +} + +"Demoman.M_MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers06.mp3" +} + +"Demoman.M_MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers07.mp3" +} + +"Demoman.M_MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers08.mp3" +} + +"Demoman.M_MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers09.mp3" +} + +"Demoman.M_MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers10.mp3" +} + +"Demoman.M_MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Jeers11.mp3" +} + +"Demoman.M_MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughEvil01.mp3" +} + +"Demoman.M_MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughEvil02.mp3" +} + +"Demoman.M_MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughEvil03.mp3" +} + +"Demoman.M_MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughEvil04.mp3" +} + +"Demoman.M_MVM_LaughEvil05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughEvil05.mp3" +} + +"Demoman.M_MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughHappy01.mp3" +} + +"Demoman.M_MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughHappy02.mp3" +} + +"Demoman.M_MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughLong01.mp3" +} + +"Demoman.M_MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughLong02.mp3" +} + +"Demoman.M_MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughShort01.mp3" +} + +"Demoman.M_MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughShort02.mp3" +} + +"Demoman.M_MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughShort03.mp3" +} + +"Demoman.M_MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughShort04.mp3" +} + +"Demoman.M_MVM_LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughShort05.mp3" +} + +"Demoman.M_MVM_LaughShort06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_LaughShort06.mp3" +} + +"Demoman.M_MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Medic01.mp3" +} + +"Demoman.M_MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Medic02.mp3" +} + +"Demoman.M_MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Medic03.mp3" +} + +"Demoman.M_MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_MoveUp01.mp3" +} + +"Demoman.M_MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_MoveUp02.mp3" +} + +"Demoman.M_MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_MoveUp03.mp3" +} + +"Demoman.M_MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NeedDispenser01.mp3" +} + +"Demoman.M_MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NeedSentry01.mp3" +} + +"Demoman.M_MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NeedTeleporter01.mp3" +} + +"Demoman.M_MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NegativeVocalization01.mp3" +} + +"Demoman.M_MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NegativeVocalization02.mp3" +} + +"Demoman.M_MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NegativeVocalization03.mp3" +} + +"Demoman.M_MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NegativeVocalization04.mp3" +} + +"Demoman.M_MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NegativeVocalization05.mp3" +} + +"Demoman.M_MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NegativeVocalization06.mp3" +} + +"Demoman.M_MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NiceShot01.mp3" +} + +"Demoman.M_MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NiceShot02.mp3" +} + +"Demoman.M_MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_NiceShot03.mp3" +} + +"Demoman.M_MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_No01.mp3" +} + +"Demoman.M_MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_No02.mp3" +} + +"Demoman.M_MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_No03.mp3" +} + +"Demoman.M_MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath01.mp3" +} + +"Demoman.M_MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath02.mp3" +} + +"Demoman.M_MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath03.mp3" +} + +"Demoman.M_MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath04.mp3" +} + +"Demoman.M_MVM_PainCrticialDeath05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainCrticialDeath05.mp3" +} + +"Demoman.M_MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere01.mp3" +} + +"Demoman.M_MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere02.mp3" +} + +"Demoman.M_MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere03.mp3" +} + +"Demoman.M_MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSevere04.mp3" +} + +"Demoman.M_MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp01.mp3" +} + +"Demoman.M_MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp02.mp3" +} + +"Demoman.M_MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp03.mp3" +} + +"Demoman.M_MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp04.mp3" +} + +"Demoman.M_MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp05.mp3" +} + +"Demoman.M_MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp06.mp3" +} + +"Demoman.M_MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "0.0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PainSharp07.mp3" +} + +"Demoman.M_MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PositiveVocalization01.mp3" +} + +"Demoman.M_MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PositiveVocalization02.mp3" +} + +"Demoman.M_MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PositiveVocalization03.mp3" +} + +"Demoman.M_MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PositiveVocalization04.mp3" +} + +"Demoman.M_MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_PositiveVocalization05.mp3" +} + +"Demoman.M_MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SentryAhead01.mp3" +} + +"Demoman.M_MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SentryAhead02.mp3" +} + +"Demoman.M_MVM_SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SentryAhead03.mp3" +} + +"Demoman.M_MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted-AssistedKill01.mp3" +} + +"Demoman.M_MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted-AssistedKill02.mp3" +} + +"Demoman.M_MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted01.mp3" +} + +"Demoman.M_MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted02.mp3" +} + +"Demoman.M_MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted03.mp3" +} + +"Demoman.M_MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted04.mp3" +} + +"Demoman.M_MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted05.mp3" +} + +"Demoman.M_MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted06.mp3" +} + +"Demoman.M_MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted07.mp3" +} + +"Demoman.M_MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted08.mp3" +} + +"Demoman.M_MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted09.mp3" +} + +"Demoman.M_MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted10.mp3" +} + +"Demoman.M_MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted11.mp3" +} + +"Demoman.M_MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_SpecialCompleted12.mp3" +} + +"Demoman.M_MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_StandOnThePoint01.mp3" +} + +"Demoman.M_MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_StandOnThePoint02.mp3" +} + +"Demoman.M_MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts01.mp3" +} + +"Demoman.M_MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts02.mp3" +} + +"Demoman.M_MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts03.mp3" +} + +"Demoman.M_MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts04.mp3" +} + +"Demoman.M_MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts05.mp3" +} + +"Demoman.M_MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts06.mp3" +} + +"Demoman.M_MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts07.mp3" +} + +"Demoman.M_MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts08.mp3" +} + +"Demoman.M_MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts09.mp3" +} + +"Demoman.M_MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts10.mp3" +} + +"Demoman.M_MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts11.mp3" +} + +"Demoman.M_MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts12.mp3" +} + +"Demoman.M_MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts13.mp3" +} + +"Demoman.M_MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts14.mp3" +} + +"Demoman.M_MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts15.mp3" +} + +"Demoman.M_MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/demoman_mvm_m_Taunts16.mp3" +} + +"Demoman.M_MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Thanks01.mp3" +} + +"Demoman.M_MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Thanks02.mp3" +} + +"Demoman.M_MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ThanksForTheHeal01.mp3" +} + +"Demoman.M_MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ThanksForTheHeal02.mp3" +} + +"Demoman.M_MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ThanksForTheHeal03.mp3" +} + +"Demoman.M_MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ThanksForTheTeleporter01.mp3" +} + +"Demoman.M_MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_ThanksForTheTeleporter02.mp3" +} + +"Demoman.M_MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Yes01.mp3" +} + +"Demoman.M_MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Yes02.mp3" +} + +"Demoman.M_MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/demoman_mvm_m_Yes03.mp3" +} + +// "Engineer.M_MVM_ActivateCharge01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ActivateCharge01.mp3" +// } + +// "Engineer.M_MVM_ActivateCharge02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ActivateCharge02.mp3" +// } + +// "Engineer.M_MVM_ActivateCharge03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ActivateCharge03.mp3" +// } + +// "Engineer.M_MVM_AutoAttackedBySpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoAttackedBySpy01.mp3" +// } + +// "Engineer.M_MVM_AutoAttackedBySpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoAttackedBySpy02.mp3" +// } + +// "Engineer.M_MVM_AutoAttackedBySpy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoAttackedBySpy03.mp3" +// } + +// "Engineer.M_MVM_AutoBuildingDispenser01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoBuildingDispenser01.mp3" +// } + +// "Engineer.M_MVM_AutoBuildingDispenser02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoBuildingDispenser02.mp3" +// } + +// "Engineer.M_MVM_AutoBuildingSentry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoBuildingSentry01.mp3" +// } + +// "Engineer.M_MVM_AutoBuildingSentry02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoBuildingSentry02.mp3" +// } + +// "Engineer.M_MVM_AutoBuildingTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoBuildingTeleporter01.mp3" +// } + +// "Engineer.M_MVM_AutoBuildingTeleporter02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoBuildingTeleporter02.mp3" +// } + +// "Engineer.M_MVM_AutoCappedControlPoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoCappedControlPoint01.mp3" +// } + +// "Engineer.M_MVM_AutoCappedControlPoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoCappedControlPoint02.mp3" +// } + +// "Engineer.M_MVM_AutoCappedControlPoint03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoCappedControlPoint03.mp3" +// } + +// "Engineer.M_MVM_AutoCappedIntelligence01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoCappedIntelligence01.mp3" +// } + +// "Engineer.M_MVM_AutoCappedIntelligence02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoCappedIntelligence02.mp3" +// } + +// "Engineer.M_MVM_AutoCappedIntelligence03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoCappedIntelligence03.mp3" +// } + +// "Engineer.M_MVM_AutoDejectedTie01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoDejectedTie01.mp3" +// } + +// "Engineer.M_MVM_AutoDejectedTie02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoDejectedTie02.mp3" +// } + +// "Engineer.M_MVM_AutoDejectedTie03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoDejectedTie03.mp3" +// } + +// "Engineer.M_MVM_AutoDestroyedDispenser01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoDestroyedDispenser01.mp3" +// } + +// "Engineer.M_MVM_AutoDestroyedSentry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoDestroyedSentry01.mp3" +// } + +// "Engineer.M_MVM_AutoDestroyedTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoDestroyedTeleporter01.mp3" +// } + +// "Engineer.M_MVM_AutoOnFire01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoOnFire01.mp3" +// } + +// "Engineer.M_MVM_AutoOnFire02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoOnFire02.mp3" +// } + +// "Engineer.M_MVM_AutoOnFire03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_AutoOnFire03.mp3" +// } + +// "Engineer.M_MVM_BattleCry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry01.mp3" +// } + +// "Engineer.M_MVM_BattleCry02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry02.mp3" +// } + +// "Engineer.M_MVM_BattleCry03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry03.mp3" +// } + +// "Engineer.M_MVM_BattleCry04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry04.mp3" +// } + +// "Engineer.M_MVM_BattleCry05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry05.mp3" +// } + +// "Engineer.M_MVM_BattleCry06" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry06.mp3" +// } + +// "Engineer.M_MVM_BattleCry07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_BattleCry07.mp3" +// } + +// "Engineer.M_MVM_Cheers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers01.mp3" +// } + +// "Engineer.M_MVM_Cheers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers02.mp3" +// } + +// "Engineer.M_MVM_Cheers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers03.mp3" +// } + +// "Engineer.M_MVM_Cheers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers04.mp3" +// } + +// "Engineer.M_MVM_Cheers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers05.mp3" +// } + +// "Engineer.M_MVM_Cheers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers06.mp3" +// } + +// "Engineer.M_MVM_Cheers07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Cheers07.mp3" +// } + +// "Engineer.M_MVM_CloakedSpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpy01.mp3" +// } + +// "Engineer.M_MVM_CloakedSpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpy02.mp3" +// } + +// "Engineer.M_MVM_CloakedSpy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpy03.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify01.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify02.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify03.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify04.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify05.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify06.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify07.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify08.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify09.mp3" +// } + +// "Engineer.M_MVM_CloakedSpyIdentify10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_CloakedSpyIdentify10.mp3" +// } + +// "Engineer.M_MVM_Go01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Go01.mp3" +// } + +// "Engineer.M_MVM_Go02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Go02.mp3" +// } + +// "Engineer.M_MVM_Go03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Go03.mp3" +// } + +// "Engineer.M_MVM_GoodJob01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_GoodJob01.mp3" +// } + +// "Engineer.M_MVM_GoodJob02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_GoodJob02.mp3" +// } + +// "Engineer.M_MVM_GoodJob03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_GoodJob03.mp3" +// } + +// "Engineer.M_MVM_HeadLeft01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HeadLeft01.mp3" +// } + +// "Engineer.M_MVM_HeadLeft02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HeadLeft02.mp3" +// } + +// "Engineer.M_MVM_HeadRight01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HeadRight01.mp3" +// } + +// "Engineer.M_MVM_HeadRight02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HeadRight02.mp3" +// } + +// "Engineer.M_MVM_HeadRight03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HeadRight03.mp3" +// } + +// "Engineer.M_MVM_HelpMe01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMe01.mp3" +// } + +// "Engineer.M_MVM_HelpMe02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMe02.mp3" +// } + +// "Engineer.M_MVM_HelpMe03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMe03.mp3" +// } + +// "Engineer.M_MVM_HelpMeCapture01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMeCapture01.mp3" +// } + +// "Engineer.M_MVM_HelpMeCapture02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMeCapture02.mp3" +// } + +// "Engineer.M_MVM_HelpMeCapture03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMeCapture03.mp3" +// } + +// "Engineer.M_MVM_HelpMeDefend01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMeDefend01.mp3" +// } + +// "Engineer.M_MVM_HelpMeDefend02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMeDefend02.mp3" +// } + +// "Engineer.M_MVM_HelpMeDefend03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_HelpMeDefend03.mp3" +// } + +// "Engineer.M_MVM_Incoming01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Incoming01.mp3" +// } + +// "Engineer.M_MVM_Incoming02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Incoming02.mp3" +// } + +// "Engineer.M_MVM_Incoming03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Incoming03.mp3" +// } + +// "Engineer.M_MVM_Jeers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Jeers01.mp3" +// } + +// "Engineer.M_MVM_Jeers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Jeers02.mp3" +// } + +// "Engineer.M_MVM_Jeers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Jeers03.mp3" +// } + +// "Engineer.M_MVM_Jeers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Jeers04.mp3" +// } + +// "Engineer.M_MVM_LaughEvil01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughEvil01.mp3" +// } + +// "Engineer.M_MVM_LaughEvil02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughEvil02.mp3" +// } + +// "Engineer.M_MVM_LaughEvil03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughEvil03.mp3" +// } + +// "Engineer.M_MVM_LaughEvil04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughEvil04.mp3" +// } + +// "Engineer.M_MVM_LaughEvil05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughEvil05.mp3" +// } + +// "Engineer.M_MVM_LaughEvil06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughEvil06.mp3" +// } + +// "Engineer.M_MVM_LaughHappy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughHappy01.mp3" +// } + +// "Engineer.M_MVM_LaughHappy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughHappy02.mp3" +// } + +// "Engineer.M_MVM_LaughHappy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughHappy03.mp3" +// } + +// "Engineer.M_MVM_LaughLong01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughLong01.mp3" +// } +// "Engineer.M_MVM_LaughLong02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughLong02.mp3" +// } + + +// "Engineer.M_MVM_LaughShort01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughShort01.mp3" +// } + +// "Engineer.M_MVM_LaughShort02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughShort02.mp3" +// } + +// "Engineer.M_MVM_LaughShort03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughShort03.mp3" +// } + +// "Engineer.M_MVM_LaughShort04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_LaughShort04.mp3" +// } + +// "Engineer.M_MVM_Medic01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Medic01.mp3" +// } + +// "Engineer.M_MVM_Medic02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Medic02.mp3" +// } + +// "Engineer.M_MVM_Medic03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Medic03.mp3" +// } + +// "Engineer.M_MVM_MoveUp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_MoveUp01.mp3" +// } + +// "Engineer.M_MVM_NeedDispenser01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NeedDispenser01.mp3" +// } + +// "Engineer.M_MVM_NeedSentry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NeedSentry01.mp3" +// } + +// "Engineer.M_MVM_NeedTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NeedTeleporter01.mp3" +// } + +// "Engineer.M_MVM_NeedTeleporter02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NeedTeleporter02.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization01.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization02.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization03.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization04.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization05.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization06.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization07.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization08.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization09.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization10.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization11.mp3" +// } + +// "Engineer.M_MVM_NegativeVocalization12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NegativeVocalization12.mp3" +// } + +// "Engineer.M_MVM_NiceShot01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NiceShot01.mp3" +// } + +// "Engineer.M_MVM_NiceShot02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NiceShot02.mp3" +// } + +// "Engineer.M_MVM_NiceShot03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_NiceShot03.mp3" +// } + +// "Engineer.M_MVM_No01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_No01.mp3" +// } + +// "Engineer.M_MVM_No02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_No02.mp3" +// } + +// "Engineer.M_MVM_No03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_No03.mp3" +// } + +// "Engineer.M_MVM_PainCrticialDeath01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath01.mp3" +// } + +// "Engineer.M_MVM_PainCrticialDeath02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath02.mp3" +// } + +// "Engineer.M_MVM_PainCrticialDeath03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath03.mp3" +// } + +// "Engineer.M_MVM_PainCrticialDeath04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath04.mp3" +// } + +// "Engineer.M_MVM_PainCrticialDeath05" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath05.mp3" +// } + +// "Engineer.M_MVM_PainCrticialDeath06" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainCrticialDeath06.mp3" +// } + +// "Engineer.M_MVM_PainSevere01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere01.mp3" +// } + +// "Engineer.M_MVM_PainSevere02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere02.mp3" +// } + +// "Engineer.M_MVM_PainSevere03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere03.mp3" +// } + +// "Engineer.M_MVM_PainSevere04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere04.mp3" +// } + +// "Engineer.M_MVM_PainSevere05" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere05.mp3" +// } + +// "Engineer.M_MVM_PainSevere06" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere06.mp3" +// } + +// "Engineer.M_MVM_PainSevere07" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSevere07.mp3" +// } + +// "Engineer.M_MVM_PainSharp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp01.mp3" +// } + +// "Engineer.M_MVM_PainSharp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp02.mp3" +// } + +// "Engineer.M_MVM_PainSharp03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp03.mp3" +// } + +// "Engineer.M_MVM_PainSharp04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp04.mp3" +// } + +// "Engineer.M_MVM_PainSharp05" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp05.mp3" +// } + +// "Engineer.M_MVM_PainSharp06" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp06.mp3" +// } + +// "Engineer.M_MVM_PainSharp07" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp07.mp3" +// } + +// "Engineer.M_MVM_PainSharp08" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PainSharp08.mp3" +// } + +// "Engineer.M_MVM_PositiveVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_PositiveVocalization01.mp3" +// } + +// "Engineer.M_MVM_SentryAhead01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SentryAhead01.mp3" +// } + +// "Engineer.M_MVM_SentryAhead02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SentryAhead02.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted-AssistedKill01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted-AssistedKill01.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted-AssistedKill02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted-AssistedKill02.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted01.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted02.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted03.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted04.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted05.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted06.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted07.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted08.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted09.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted10.mp3" +// } + +// "Engineer.M_MVM_SpecialCompleted11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_SpecialCompleted11.mp3" +// } + +// "Engineer.M_MVM_StandOnThePoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_StandOnThePoint01.mp3" +// } + +// "Engineer.M_MVM_StandOnThePoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_StandOnThePoint02.mp3" +// } + +// "Engineer.M_MVM_Taunts01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts01.mp3" +// } + +// "Engineer.M_MVM_Taunts02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts02.mp3" +// } + +// "Engineer.M_MVM_Taunts03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts03.mp3" +// } + +// "Engineer.M_MVM_Taunts04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts04.mp3" +// } + +// "Engineer.M_MVM_Taunts05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts05.mp3" +// } + +// "Engineer.M_MVM_Taunts06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts06.mp3" +// } + +// "Engineer.M_MVM_Taunts07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts07.mp3" +// } + +// "Engineer.M_MVM_Taunts08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts08.mp3" +// } + +// "Engineer.M_MVM_Taunts09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts09.mp3" +// } + +// "Engineer.M_MVM_Taunts10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts10.mp3" +// } + +// "Engineer.M_MVM_Taunts11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts11.mp3" +// } + +// "Engineer.M_MVM_Taunts12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/engineer_mvm_m_Taunts12.mp3" +// } + +// "Engineer.M_MVM_Thanks01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Thanks01.mp3" +// } + +// "Engineer.M_MVM_ThanksForTheHeal01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ThanksForTheHeal01.mp3" +// } + +// "Engineer.M_MVM_ThanksForTheHeal02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ThanksForTheHeal02.mp3" +// } + +// "Engineer.M_MVM_ThanksForTheTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ThanksForTheTeleporter01.mp3" +// } + +// "Engineer.M_MVM_ThanksForTheTeleporter02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_ThanksForTheTeleporter02.mp3" +// } + +// "Engineer.M_MVM_Yes01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Yes01.mp3" +// } + +// "Engineer.M_MVM_Yes02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Yes02.mp3" +// } + +// "Engineer.M_MVM_Yes03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/engineer_mvm_m_Yes03.mp3" +// } + +"Heavy.M_MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ActivateCharge01.mp3" +} + +"Heavy.M_MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ActivateCharge02.mp3" +} + +"Heavy.M_MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ActivateCharge03.mp3" +} + +"Heavy.M_MVM_ActivateCharge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ActivateCharge04.mp3" +} + +"Heavy.M_MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoCappedControlPoint01.mp3" +} + +"Heavy.M_MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoCappedControlPoint02.mp3" +} + +"Heavy.M_MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoCappedControlPoint03.mp3" +} + +"Heavy.M_MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoCappedIntelligence01.mp3" +} + +"Heavy.M_MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoCappedIntelligence02.mp3" +} + +"Heavy.M_MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoCappedIntelligence03.mp3" +} + +"Heavy.M_MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoDejectedTie01.mp3" +} + +"Heavy.M_MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoDejectedTie02.mp3" +} + +"Heavy.M_MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoDejectedTie03.mp3" +} + +"Heavy.M_MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoOnFire01.mp3" +} + +"Heavy.M_MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoOnFire02.mp3" +} + +"Heavy.M_MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoOnFire03.mp3" +} + +"Heavy.M_MVM_AutoOnFire04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoOnFire04.mp3" +} + +"Heavy.M_MVM_AutoOnFire05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_AutoOnFire05.mp3" +} + +"Heavy.M_MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_BattleCry01.mp3" +} + +"Heavy.M_MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_BattleCry02.mp3" +} + +"Heavy.M_MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_BattleCry03.mp3" +} + +"Heavy.M_MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_BattleCry04.mp3" +} + +"Heavy.M_MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_BattleCry05.mp3" +} + +"Heavy.M_MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_BattleCry06.mp3" +} + +"Heavy.M_MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers01.mp3" +} + +"Heavy.M_MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers02.mp3" +} + +"Heavy.M_MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers03.mp3" +} + +"Heavy.M_MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers04.mp3" +} + +"Heavy.M_MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers05.mp3" +} + +"Heavy.M_MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers06.mp3" +} + +"Heavy.M_MVM_Cheers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers07.mp3" +} + +"Heavy.M_MVM_Cheers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Cheers08.mp3" +} + +"Heavy.M_MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpy01.mp3" +} + +"Heavy.M_MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpy02.mp3" +} + +"Heavy.M_MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpy03.mp3" +} + +"Heavy.M_MVM_CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpy04.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify01.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify02.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify03.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify04.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify05.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify06.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify07.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify08.mp3" +} + +"Heavy.M_MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_CloakedSpyIdentify09.mp3" +} + +"Heavy.M_MVM_Generic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Generic01.mp3" +} + +"Heavy.M_MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Go01.mp3" +} + +"Heavy.M_MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Go02.mp3" +} + +"Heavy.M_MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Go03.mp3" +} + +"Heavy.M_MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_GoodJob01.mp3" +} + +"Heavy.M_MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_GoodJob02.mp3" +} + +"Heavy.M_MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_GoodJob03.mp3" +} + +"Heavy.M_MVM_GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_GoodJob04.mp3" +} + +"Heavy.M_MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HeadLeft01.mp3" +} + +"Heavy.M_MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HeadLeft02.mp3" +} + +"Heavy.M_MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HeadLeft03.mp3" +} + +"Heavy.M_MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HeadRight01.mp3" +} + +"Heavy.M_MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HeadRight02.mp3" +} + +"Heavy.M_MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HeadRight03.mp3" +} + +"Heavy.M_MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMe01.mp3" +} + +"Heavy.M_MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMe02.mp3" +} + +"Heavy.M_MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMe03.mp3" +} + +"Heavy.M_MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMeCapture01.mp3" +} + +"Heavy.M_MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMeCapture02.mp3" +} + +"Heavy.M_MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMeCapture03.mp3" +} + +"Heavy.M_MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMeDefend01.mp3" +} + +"Heavy.M_MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMeDefend02.mp3" +} + +"Heavy.M_MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_HelpMeDefend03.mp3" +} + +"Heavy.M_MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Incoming01.mp3" +} + +"Heavy.M_MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Incoming02.mp3" +} + +"Heavy.M_MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Incoming03.mp3" +} + +"Heavy.M_MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers01.mp3" +} + +"Heavy.M_MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers02.mp3" +} + +"Heavy.M_MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers03.mp3" +} + +"Heavy.M_MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers04.mp3" +} + +"Heavy.M_MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers05.mp3" +} + +"Heavy.M_MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers06.mp3" +} + +"Heavy.M_MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers07.mp3" +} + +"Heavy.M_MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers08.mp3" +} + +"Heavy.M_MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Jeers09.mp3" +} + +"Heavy.M_MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughEvil01.mp3" +} + +"Heavy.M_MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughEvil02.mp3" +} + +"Heavy.M_MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughEvil03.mp3" +} + +"Heavy.M_MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughEvil04.mp3" +} + +"Heavy.M_MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughHappy01.mp3" +} + +"Heavy.M_MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughHappy02.mp3" +} + +"Heavy.M_MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughHappy03.mp3" +} + +"Heavy.M_MVM_LaughHappy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughHappy04.mp3" +} + +"Heavy.M_MVM_LaughHappy05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughHappy05.mp3" +} + +"Heavy.M_MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughLong01.mp3" +} + +"Heavy.M_MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughLong02.mp3" +} + +"Heavy.M_MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughShort01.mp3" +} + +"Heavy.M_MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughShort02.mp3" +} + +"Heavy.M_MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_LaughShort03.mp3" +} + +"Heavy.M_MVM_LaugherBigSnort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_laugherbigsnort01.mp3" +} + +"Heavy.M_MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Medic01.mp3" +} + +"Heavy.M_MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Medic02.mp3" +} + +"Heavy.M_MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Medic03.mp3" +} + +"Heavy.M_MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_MoveUp01.mp3" +} + +"Heavy.M_MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_MoveUp02.mp3" +} + +"Heavy.M_MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_MoveUp03.mp3" +} + +"Heavy.M_MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NeedDispenser01.mp3" +} + +"Heavy.M_MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NeedSentry01.mp3" +} + +"Heavy.M_MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NeedTeleporter01.mp3" +} + +"Heavy.M_MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NegativeVocalization01.mp3" +} + +"Heavy.M_MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NegativeVocalization02.mp3" +} + +"Heavy.M_MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NegativeVocalization03.mp3" +} + +"Heavy.M_MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NegativeVocalization04.mp3" +} + +"Heavy.M_MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NegativeVocalization05.mp3" +} + +"Heavy.M_MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NegativeVocalization06.mp3" +} + +"Heavy.M_MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NiceShot01.mp3" +} + +"Heavy.M_MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NiceShot02.mp3" +} + +"Heavy.M_MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_NiceShot03.mp3" +} + +"Heavy.M_MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_No01.mp3" +} + +"Heavy.M_MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_No02.mp3" +} + +"Heavy.M_MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_No03.mp3" +} + +"Heavy.M_MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath01.mp3" +} + +"Heavy.M_MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath02.mp3" +} + +"Heavy.M_MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainCrticialDeath03.mp3" +} + +"Heavy.M_MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSevere01.mp3" +} + +"Heavy.M_MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSevere02.mp3" +} + +"Heavy.M_MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSevere03.mp3" +} + +"Heavy.M_MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp01.mp3" +} + +"Heavy.M_MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp02.mp3" +} + +"Heavy.M_MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp03.mp3" +} + +"Heavy.M_MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp04.mp3" +} + +"Heavy.M_MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PainSharp05.mp3" +} + +"Heavy.M_MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PositiveVocalization01.mp3" +} + +"Heavy.M_MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PositiveVocalization02.mp3" +} + +"Heavy.M_MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PositiveVocalization03.mp3" +} + +"Heavy.M_MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PositiveVocalization04.mp3" +} + +"Heavy.M_MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_PositiveVocalization05.mp3" +} + +"Heavy.M_MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SentryAhead01.mp3" +} + +"Heavy.M_MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SentryAhead02.mp3" +} + +"Heavy.M_MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted-AssistedKill01.mp3" +} + +"Heavy.M_MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted01.mp3" +} + +"Heavy.M_MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted02.mp3" +} + +"Heavy.M_MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted03.mp3" +} + +"Heavy.M_MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted04.mp3" +} + +"Heavy.M_MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted05.mp3" +} + +"Heavy.M_MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted06.mp3" +} + +"Heavy.M_MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted07.mp3" +} + +"Heavy.M_MVM_SpecialCompleted08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted08.mp3" +} + +"Heavy.M_MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted09.mp3" +} + +"Heavy.M_MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted10.mp3" +} + +"Heavy.M_MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialCompleted11.mp3" +} + +"Heavy.M_MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_StandOnThePoint01.mp3" +} + +"Heavy.M_MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_StandOnThePoint02.mp3" +} + +"Heavy.M_MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_StandOnThePoint03.mp3" +} + +"Heavy.M_MVM_StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_StandOnThePoint04.mp3" +} + +"Heavy.M_MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts01.mp3" +} + +"Heavy.M_MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts02.mp3" +} + +"Heavy.M_MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts03.mp3" +} + +"Heavy.M_MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts04.mp3" +} + +"Heavy.M_MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts05.mp3" +} + +"Heavy.M_MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts06.mp3" +} + +"Heavy.M_MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts07.mp3" +} + +"Heavy.M_MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts08.mp3" +} + +"Heavy.M_MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts09.mp3" +} + +"Heavy.M_MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts10.mp3" +} + +"Heavy.M_MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts11.mp3" +} + +"Heavy.M_MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts12.mp3" +} + +"Heavy.M_MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts13.mp3" +} + +"Heavy.M_MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts14.mp3" +} + +"Heavy.M_MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts15.mp3" +} + +"Heavy.M_MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts16.mp3" +} + +"Heavy.M_MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts17.mp3" +} + +"Heavy.M_MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts18.mp3" +} + +"Heavy.M_MVM_Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/heavy_mvm_m_Taunts19.mp3" +} + +"Heavy.M_MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Thanks01.mp3" +} + +"Heavy.M_MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Thanks02.mp3" +} + +"Heavy.M_MVM_Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Thanks03.mp3" +} + +"Heavy.M_MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ThanksForTheHeal01.mp3" +} + +"Heavy.M_MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ThanksForTheHeal02.mp3" +} + +"Heavy.M_MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ThanksForTheHeal03.mp3" +} + +"Heavy.M_MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ThanksForTheTeleporter01.mp3" +} + +"Heavy.M_MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ThanksForTheTeleporter02.mp3" +} + +"Heavy.M_MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_ThanksForTheTeleporter03.mp3" +} + +"Heavy.M_MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Yes01.mp3" +} + +"Heavy.M_MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Yes02.mp3" +} + +"Heavy.M_MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/heavy_mvm_m_Yes03.mp3" +} + +// "Medic.M_MVM_ActivateCharge01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_ActivateCharge01.mp3" +// } + +// "Medic.M_MVM_ActivateCharge02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_ActivateCharge02.mp3" +// } + +// "Medic.M_MVM_ActivateCharge03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_ActivateCharge03.mp3" +// } + +// "Medic.M_MVM_AutoCappedControlPoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoCappedControlPoint01.mp3" +// } + +// "Medic.M_MVM_AutoCappedControlPoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoCappedControlPoint02.mp3" +// } + +// "Medic.M_MVM_AutoCappedControlPoint03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoCappedControlPoint03.mp3" +// } + +// "Medic.M_MVM_AutoCappedIntelligence01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoCappedIntelligence01.mp3" +// } + +// "Medic.M_MVM_AutoCappedIntelligence02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoCappedIntelligence02.mp3" +// } + +// "Medic.M_MVM_AutoCappedIntelligence03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoCappedIntelligence03.mp3" +// } + +// "Medic.M_MVM_AutoChargeReady01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoChargeReady01.mp3" +// } + +// "Medic.M_MVM_AutoChargeReady02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoChargeReady02.mp3" +// } + +// "Medic.M_MVM_AutoChargeReady03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoChargeReady03.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie01.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie02.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie03.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie04.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie05.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie06.mp3" +// } + +// "Medic.M_MVM_AutoDejectedTie07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoDejectedTie07.mp3" +// } + +// "Medic.M_MVM_AutoOnFire01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoOnFire01.mp3" +// } + +// "Medic.M_MVM_AutoOnFire02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoOnFire02.mp3" +// } + +// "Medic.M_MVM_AutoOnFire03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoOnFire03.mp3" +// } + +// "Medic.M_MVM_AutoOnFire04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoOnFire04.mp3" +// } + +// "Medic.M_MVM_AutoOnFire05" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_AutoOnFire05.mp3" +// } + +// "Medic.M_MVM_BattleCry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_BattleCry01.mp3" +// } + +// "Medic.M_MVM_BattleCry02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_BattleCry02.mp3" +// } + +// "Medic.M_MVM_BattleCry03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_BattleCry03.mp3" +// } + +// "Medic.M_MVM_BattleCry04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_BattleCry04.mp3" +// } + +// "Medic.M_MVM_BattleCry05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_BattleCry05.mp3" +// } + +// "Medic.M_MVM_BattleCry06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_BattleCry06.mp3" +// } + +// "Medic.M_MVM_Cheers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Cheers01.mp3" +// } + +// "Medic.M_MVM_Cheers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Cheers02.mp3" +// } + +// "Medic.M_MVM_Cheers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Cheers03.mp3" +// } + +// "Medic.M_MVM_Cheers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Cheers04.mp3" +// } + +// "Medic.M_MVM_Cheers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Cheers05.mp3" +// } + +// "Medic.M_MVM_Cheers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Cheers06.mp3" +// } + +// "Medic.M_MVM_CloakedSpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpy01.mp3" +// } + +// "Medic.M_MVM_CloakedSpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpy02.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify01.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify02.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify03.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify04.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify05.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify06.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify07.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify08.mp3" +// } + +// "Medic.M_MVM_CloakedSpyIdentify09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_CloakedSpyIdentify09.mp3" +// } + +// "Medic.M_MVM_Go01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Go01.mp3" +// } + +// "Medic.M_MVM_Go02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Go02.mp3" +// } + +// "Medic.M_MVM_Go03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Go03.mp3" +// } + +// "Medic.M_MVM_Go04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Go04.mp3" +// } + +// "Medic.M_MVM_GoodJob01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_GoodJob01.mp3" +// } + +// "Medic.M_MVM_GoodJob02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_GoodJob02.mp3" +// } + +// "Medic.M_MVM_GoodJob03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_GoodJob03.mp3" +// } + +// "Medic.M_MVM_HeadLeft01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HeadLeft01.mp3" +// } + +// "Medic.M_MVM_HeadLeft02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HeadLeft02.mp3" +// } + +// "Medic.M_MVM_HeadLeft03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HeadLeft03.mp3" +// } + +// "Medic.M_MVM_HeadRight01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HeadRight01.mp3" +// } + +// "Medic.M_MVM_HeadRight02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HeadRight02.mp3" +// } + +// "Medic.M_MVM_HeadRight03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HeadRight03.mp3" +// } + +// "Medic.M_MVM_HelpMe01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMe01.mp3" +// } + +// "Medic.M_MVM_HelpMe02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMe02.mp3" +// } + +// "Medic.M_MVM_HelpMe03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMe03.mp3" +// } + +// "Medic.M_MVM_HelpMeCapture01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMeCapture01.mp3" +// } + +// "Medic.M_MVM_HelpMeCapture02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMeCapture02.mp3" +// } + +// "Medic.M_MVM_HelpMeDefend01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMeDefend01.mp3" +// } + +// "Medic.M_MVM_HelpMeDefend02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMeDefend02.mp3" +// } + +// "Medic.M_MVM_HelpMeDefend03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_HelpMeDefend03.mp3" +// } + +// "Medic.M_MVM_Incoming01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Incoming01.mp3" +// } + +// "Medic.M_MVM_Incoming02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Incoming02.mp3" +// } + +// "Medic.M_MVM_Incoming03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Incoming03.mp3" +// } + +// "Medic.M_MVM_Jeers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers01.mp3" +// } + +// "Medic.M_MVM_Jeers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers02.mp3" +// } + +// "Medic.M_MVM_Jeers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers03.mp3" +// } + +// "Medic.M_MVM_Jeers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers04.mp3" +// } + +// "Medic.M_MVM_Jeers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers05.mp3" +// } + +// "Medic.M_MVM_Jeers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers06.mp3" +// } + +// "Medic.M_MVM_Jeers07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers07.mp3" +// } + +// "Medic.M_MVM_Jeers08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers08.mp3" +// } + +// "Medic.M_MVM_Jeers09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers09.mp3" +// } + +// "Medic.M_MVM_Jeers10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers10.mp3" +// } + +// "Medic.M_MVM_Jeers11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers11.mp3" +// } + +// "Medic.M_MVM_Jeers12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Jeers12.mp3" +// } + +// "Medic.M_MVM_LaughEvil01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughEvil01.mp3" +// } + +// "Medic.M_MVM_LaughEvil02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughEvil02.mp3" +// } + +// "Medic.M_MVM_LaughEvil03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughEvil03.mp3" +// } + +// "Medic.M_MVM_LaughEvil04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughEvil04.mp3" +// } + +// "Medic.M_MVM_LaughEvil05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughEvil05.mp3" +// } + +// "Medic.M_MVM_LaughHappy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughHappy01.mp3" +// } + +// "Medic.M_MVM_LaughHappy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughHappy02.mp3" +// } + +// "Medic.M_MVM_LaughHappy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughHappy03.mp3" +// } + +// "Medic.M_MVM_LaughLong01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughLong01.mp3" +// } + +// "Medic.M_MVM_LaughLong02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughLong02.mp3" +// } + +// "Medic.M_MVM_LaughShort01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughShort01.mp3" +// } + +// "Medic.M_MVM_LaughShort02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughShort02.mp3" +// } + +// "Medic.M_MVM_LaughShort03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_LaughShort03.mp3" +// } + +// "Medic.M_MVM_Medic01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Medic01.mp3" +// } + +// "Medic.M_MVM_Medic02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Medic02.mp3" +// } + +// "Medic.M_MVM_Medic03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_Medic03.mp3" +// } + +// "Medic.M_MVM_MoveUp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_MoveUp01.mp3" +// } + +// "Medic.M_MVM_MoveUp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_MoveUp02.mp3" +// } + +// "Medic.M_MVM_NeedDispenser01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NeedDispenser01.mp3" +// } + +// "Medic.M_MVM_NeedSentry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NeedSentry01.mp3" +// } + +// "Medic.M_MVM_NeedTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NeedTeleporter01.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization01.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization02.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization03.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization04.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization05.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization06.mp3" +// } + +// "Medic.M_MVM_NegativeVocalization07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NegativeVocalization07.mp3" +// } + +// "Medic.M_MVM_NiceShot01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NiceShot01.mp3" +// } + +// "Medic.M_MVM_NiceShot02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_NiceShot02.mp3" +// } + +// "Medic.M_MVM_No01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_No01.mp3" +// } + +// "Medic.M_MVM_No02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_No02.mp3" +// } + +// "Medic.M_MVM_No03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_No03.mp3" +// } + +// "Medic.M_MVM_PainCrticialDeath01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath01.mp3" +// } + +// "Medic.M_MVM_PainCrticialDeath02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath02.mp3" +// } + +// "Medic.M_MVM_PainCrticialDeath03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath03.mp3" +// } + +// "Medic.M_MVM_PainCrticialDeath04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainCrticialDeath04.mp3" +// } + +// "Medic.M_MVM_PainSevere01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSevere01.mp3" +// } + +// "Medic.M_MVM_PainSevere02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSevere02.mp3" +// } + +// "Medic.M_MVM_PainSevere03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSevere03.mp3" +// } + +// "Medic.M_MVM_PainSevere04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSevere04.mp3" +// } + +// "Medic.M_MVM_PainSharp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp01.mp3" +// } + +// "Medic.M_MVM_PainSharp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp02.mp3" +// } + +// "Medic.M_MVM_PainSharp03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp03.mp3" +// } + +// "Medic.M_MVM_PainSharp04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp04.mp3" +// } + +// "Medic.M_MVM_PainSharp05" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp05.mp3" +// } + +// "Medic.M_MVM_PainSharp06" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp06.mp3" +// } + +// "Medic.M_MVM_PainSharp07" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp07.mp3" +// } + +// "Medic.M_MVM_PainSharp08" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PainSharp08.mp3" +// } + +// "Medic.M_MVM_PositiveVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PositiveVocalization01.mp3" +// } + +// "Medic.M_MVM_PositiveVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PositiveVocalization02.mp3" +// } + +// "Medic.M_MVM_PositiveVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PositiveVocalization03.mp3" +// } + +// "Medic.M_MVM_PositiveVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PositiveVocalization04.mp3" +// } + +// "Medic.M_MVM_PositiveVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PositiveVocalization05.mp3" +// } + +// "Medic.M_MVM_PositiveVocalization06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_PositiveVocalization06.mp3" +// } + +// "Medic.M_MVM_SentryAhead01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SentryAhead01.mp3" +// } + +// "Medic.M_MVM_SentryAhead02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SentryAhead02.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted-AssistedKill01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted-AssistedKill01.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted-AssistedKill02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted-AssistedKill02.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted01.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted02.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted03.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted04.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted05.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted06.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted07.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted08.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted09.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted10.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted11.mp3" +// } + +// "Medic.M_MVM_SpecialCompleted12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_SpecialCompleted12.mp3" +// } + +// "Medic.M_MVM_StandOnThePoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_StandOnThePoint01.mp3" +// } + +// "Medic.M_MVM_StandOnThePoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_StandOnThePoint02.mp3" +// } + +// "Medic.M_MVM_StandOnThePoint03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_StandOnThePoint03.mp3" +// } + +// "Medic.M_MVM_StandOnThePoint04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_StandOnThePoint04.mp3" +// } + +// "Medic.M_MVM_StandOnThePoint05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/medic_mvm_m_StandOnThePoint05.mp3" +// } + +// "Medic.M_MVM_Taunts01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/taunts/medic_mvm_m_Taunts01.mp3" +// } + +// "Medic.M_MVM_Taunts02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts02.mp3" +// } + +// "Medic.M_MVM_Taunts03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts03.mp3" +// } + +// "Medic.M_MVM_Taunts04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts04.mp3" +// } + +// "Medic.M_MVM_Taunts05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts05.mp3" +// } + +// "Medic.M_MVM_Taunts06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts06.mp3" +// } + +// "Medic.M_MVM_Taunts07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts07.mp3" +// } + +// "Medic.M_MVM_Taunts08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts08.mp3" +// } + +// "Medic.M_MVM_Taunts09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts09.mp3" +// } + +// "Medic.M_MVM_Taunts10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts10.mp3" +// } + +// "Medic.M_MVM_Taunts11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts11.mp3" +// } + +// "Medic.M_MVM_Taunts12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts12.mp3" +// } + +// "Medic.M_MVM_Taunts13" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts13.mp3" +// } + +// "Medic.M_MVM_Taunts14" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts14.mp3" +// } + +// "Medic.M_MVM_Taunts15" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/medic_mvm_m_Taunts15.mp3" +// } + +"Medic.M_MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_Thanks01.mp3" +} + +"Medic.M_MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_Thanks02.mp3" +} + +"Medic.M_MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_ThanksForTheHeal01.mp3" +} + +"Medic.M_MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_ThanksForTheHeal02.mp3" +} + +"Medic.M_MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_ThanksForTheTeleporter01.mp3" +} + +"Medic.M_MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_ThanksForTheTeleporter02.mp3" +} + +"Medic.M_MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_ThanksForTheTeleporter03.mp3" +} + +"Medic.M_MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_Yes01.mp3" +} + +"Medic.M_MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_Yes02.mp3" +} + +"Medic.M_MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/medic_mvm_m_Yes03.mp3" +} + +"Pyro.M_MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_ActivateCharge01.mp3" +} + +"Pyro.M_MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_AutoCappedControlPoint01.mp3" +} + +"Pyro.M_MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_AutoCappedIntelligence01.mp3" +} + +"Pyro.M_MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_AutoDejectedTie01.mp3" +} + +"Pyro.M_MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_AutoOnFire01.mp3" +} + +"Pyro.M_MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_AutoOnFire02.mp3" +} + +"Pyro.M_MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_BattleCry01.mp3" +} + +"Pyro.M_MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_BattleCry02.mp3" +} + +"Pyro.M_MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Cheers01.mp3" +} + +"Pyro.M_MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_CloakedSpy01.mp3" +} + +"Pyro.M_MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_CloakedSpyIdentify01.mp3" +} + +"Pyro.M_MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Go01.mp3" +} + +"Pyro.M_MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_GoodJob01.mp3" +} + +"Pyro.M_MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_HeadLeft01.mp3" +} + +"Pyro.M_MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_HeadRight01.mp3" +} + +"Pyro.M_MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_HelpMe01.mp3" +} + +"Pyro.M_MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_HelpMeCapture01.mp3" +} + +"Pyro.M_MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_HelpMeDefend01.mp3" +} + +"Pyro.M_MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Incoming01.mp3" +} + +"Pyro.M_MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Jeers01.mp3" +} + +"Pyro.M_MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Jeers02.mp3" +} + +"Pyro.M_MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughEvil01.mp3" +} + +"Pyro.M_MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughEvil02.mp3" +} + +"Pyro.M_MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughEvil03.mp3" +} + +"Pyro.M_MVM_LaughEvil04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughEvil04.mp3" +} + +"Pyro.M_MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughHappy01.mp3" +} + +"Pyro.M_MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughLong01.mp3" +} + +"Pyro.M_MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_LaughShort01.mp3" +} + +"Pyro.M_MVM_laugh_addl04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_laugh_addl04.mp3" +} + +"Pyro.M_MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Medic01.mp3" +} + +"Pyro.M_MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_MoveUp01.mp3" +} + +"Pyro.M_MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_NeedDispenser01.mp3" +} + +"Pyro.M_MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_NeedSentry01.mp3" +} + +"Pyro.M_MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_NeedTeleporter01.mp3" +} + +"Pyro.M_MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_NegativeVocalization01.mp3" +} + +"Pyro.M_MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_NiceShot01.mp3" +} + +"Pyro.M_MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_No01.mp3" +} + +"Pyro.M_MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath01.mp3" +} + +"Pyro.M_MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath02.mp3" +} + +"Pyro.M_MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainCrticialDeath03.mp3" +} + +"Pyro.M_MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere01.mp3" +} + +"Pyro.M_MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere02.mp3" +} + +"Pyro.M_MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere03.mp3" +} + +"Pyro.M_MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere04.mp3" +} + +"Pyro.M_MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere05.mp3" +} + +"Pyro.M_MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSevere06.mp3" +} + +"Pyro.M_MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp01.mp3" +} + +"Pyro.M_MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp02.mp3" +} + +"Pyro.M_MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp03.mp3" +} + +"Pyro.M_MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp04.mp3" +} + +"Pyro.M_MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp05.mp3" +} + +"Pyro.M_MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp06.mp3" +} + +"Pyro.M_MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PainSharp07.mp3" +} + +"Pyro.M_MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_PositiveVocalization01.mp3" +} + +"Pyro.M_MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_SentryAhead01.mp3" +} + +"Pyro.M_MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_SpecialCompleted-AssistedKill01.mp3" +} + +"Pyro.M_MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_SpecialCompleted01.mp3" +} + +"Pyro.M_MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_StandOnThePoint01.mp3" +} + +"Pyro.M_MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_Taunts01.mp3" +} + +"Pyro.M_MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_Taunts02.mp3" +} + +"Pyro.M_MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_Taunts03.mp3" +} + +"Pyro.M_MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_Taunts04.mp3" +} + +"Pyro.M_MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Thanks01.mp3" +} + +"Pyro.M_MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_ThanksForTheHeal01.mp3" +} + +"Pyro.M_MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_ThanksForTheTeleporter01.mp3" +} + +"Pyro.M_MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/pyro_mvm_m_Yes01.mp3" +} + +"Pyro.M_MVM_HighFiveSuccess01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_highfive_success01.mp3" +} + +"Pyro.M_MVM_HighFiveSuccess02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_highfive_success02.mp3" +} + +"Pyro.M_MVM_HighFiveSuccess03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_highfive_success03.mp3" +} + +"Pyro.M_MVM_HighFive01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_highfive01.mp3" +} + +"Pyro.M_MVM_HighFive02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/pyro_mvm_m_highfive02.mp3" +} + +"Scout.M_MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ActivateCharge01.mp3" +} + +"Scout.M_MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ActivateCharge02.mp3" +} + +"Scout.M_MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ActivateCharge03.mp3" +} + +"Scout.M_MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedControlPoint01.mp3" +} + +"Scout.M_MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedControlPoint02.mp3" +} + +"Scout.M_MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedControlPoint03.mp3" +} + +"Scout.M_MVM_AutoCappedControlPoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedControlPoint04.mp3" +} + +"Scout.M_MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedIntelligence01.mp3" +} + +"Scout.M_MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedIntelligence02.mp3" +} + +"Scout.M_MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoCappedIntelligence03.mp3" +} + +"Scout.M_MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoDejectedTie01.mp3" +} + +"Scout.M_MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoDejectedTie02.mp3" +} + +"Scout.M_MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoDejectedTie03.mp3" +} + +"Scout.M_MVM_AutoDejectedTie04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoDejectedTie04.mp3" +} + +"Scout.M_MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoOnFire01.mp3" +} + +"Scout.M_MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_AutoOnFire02.mp3" +} + +"Scout.M_MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_BattleCry01.mp3" +} + +"Scout.M_MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_BattleCry02.mp3" +} + +"Scout.M_MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_BattleCry03.mp3" +} + +"Scout.M_MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_BattleCry04.mp3" +} + +"Scout.M_MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_BattleCry05.mp3" +} + +"Scout.M_MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Cheers01.mp3" +} + +"Scout.M_MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Cheers02.mp3" +} + +"Scout.M_MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Cheers03.mp3" +} + +"Scout.M_MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Cheers04.mp3" +} + +"Scout.M_MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Cheers05.mp3" +} + +"Scout.M_MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Cheers06.mp3" +} + +"Scout.M_MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpy01.mp3" +} + +"Scout.M_MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpy02.mp3" +} + +"Scout.M_MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpy03.mp3" +} + +"Scout.M_MVM_CloakedSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpy04.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify01.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify02.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify03.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify04.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify05.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify06.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify07.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify08.mp3" +} + +"Scout.M_MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_CloakedSpyIdentify09.mp3" +} + +"Scout.M_MVM_Generic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Generic01.mp3" +} + +"Scout.M_MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Go01.mp3" +} + +"Scout.M_MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Go02.mp3" +} + +"Scout.M_MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Go03.mp3" +} + +"Scout.M_MVM_Go04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Go04.mp3" +} + +"Scout.M_MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_GoodJob01.mp3" +} + +"Scout.M_MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_GoodJob02.mp3" +} + +"Scout.M_MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_GoodJob03.mp3" +} + +"Scout.M_MVM_GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_GoodJob04.mp3" +} + +"Scout.M_MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HeadLeft01.mp3" +} + +"Scout.M_MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HeadLeft02.mp3" +} + +"Scout.M_MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HeadLeft03.mp3" +} + +"Scout.M_MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HeadRight01.mp3" +} + +"Scout.M_MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HeadRight02.mp3" +} + +"Scout.M_MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HeadRight03.mp3" +} + +"Scout.M_MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMe01.mp3" +} + +"Scout.M_MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMe02.mp3" +} + +"Scout.M_MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMe03.mp3" +} + +"Scout.M_MVM_HelpMe04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMe04.mp3" +} + +"Scout.M_MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMeCapture01.mp3" +} + +"Scout.M_MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMeCapture02.mp3" +} + +"Scout.M_MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMeCapture03.mp3" +} + +"Scout.M_MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMeDefend01.mp3" +} + +"Scout.M_MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMeDefend02.mp3" +} + +"Scout.M_MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_HelpMeDefend03.mp3" +} + +"Scout.M_MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Incoming01.mp3" +} + +"Scout.M_MVM_Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Incoming02.mp3" +} + +"Scout.M_MVM_Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Incoming03.mp3" +} + +"Scout.M_MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers02.mp3" +} + +"Scout.M_MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers03.mp3" +} + +"Scout.M_MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers04.mp3" +} + +"Scout.M_MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers05.mp3" +} + +"Scout.M_MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers06.mp3" +} + +"Scout.M_MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers07.mp3" +} + +"Scout.M_MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers08.mp3" +} + +"Scout.M_MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers09.mp3" +} + +"Scout.M_MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers10.mp3" +} + +"Scout.M_MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers11.mp3" +} + +"Scout.M_MVM_Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Jeers12.mp3" +} + +"Scout.M_MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughEvil01.mp3" +} + +"Scout.M_MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughEvil02.mp3" +} + +"Scout.M_MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughEvil03.mp3" +} + +"Scout.M_MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughHappy01.mp3" +} + +"Scout.M_MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughHappy02.mp3" +} + +"Scout.M_MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughHappy03.mp3" +} + +"Scout.M_MVM_LaughHappy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughHappy04.mp3" +} + +"Scout.M_MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughLong01.mp3" +} + +"Scout.M_MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughLong02.mp3" +} + +"Scout.M_MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughShort01.mp3" +} + +"Scout.M_MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughShort02.mp3" +} + +"Scout.M_MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughShort03.mp3" +} + +"Scout.M_MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughShort04.mp3" +} + +"Scout.M_MVM_LaughShort05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_LaughShort05.mp3" +} + +"Scout.M_MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Medic01.mp3" +} + +"Scout.M_MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Medic02.mp3" +} + +"Scout.M_MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Medic03.mp3" +} + +"Scout.M_MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_MoveUp01.mp3" +} + +"Scout.M_MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_MoveUp02.mp3" +} + +"Scout.M_MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_MoveUp03.mp3" +} + +"Scout.M_MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NeedDispenser01.mp3" +} + +"Scout.M_MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NeedSentry01.mp3" +} + +"Scout.M_MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NeedTeleporter01.mp3" +} + +"Scout.M_MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NegativeVocalization01.mp3" +} + +"Scout.M_MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NegativeVocalization02.mp3" +} + +"Scout.M_MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NegativeVocalization03.mp3" +} + +"Scout.M_MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "620.000" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NegativeVocalization04.mp3" +} + +"Scout.M_MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NegativeVocalization05.mp3" +} + +"Scout.M_MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NiceShot01.mp3" +} + +"Scout.M_MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NiceShot02.mp3" +} + +"Scout.M_MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_NiceShot03.mp3" +} + +"Scout.M_MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_No01.mp3" +} + +"Scout.M_MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_No02.mp3" +} + +"Scout.M_MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_No03.mp3" +} + +"Scout.M_MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath01.mp3" +} + +"Scout.M_MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath02.mp3" +} + +"Scout.M_MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainCrticialDeath03.mp3" +} + +"Scout.M_MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere01.mp3" +} + +"Scout.M_MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere02.mp3" +} + +"Scout.M_MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere03.mp3" +} + +"Scout.M_MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere04.mp3" +} + +"Scout.M_MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere05.mp3" +} + +"Scout.M_MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSevere06.mp3" +} + +"Scout.M_MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp01.mp3" +} + +"Scout.M_MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp02.mp3" +} + +"Scout.M_MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp03.mp3" +} + +"Scout.M_MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp04.mp3" +} + +"Scout.M_MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp05.mp3" +} + +"Scout.M_MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp06.mp3" +} + +"Scout.M_MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp07.mp3" +} + +"Scout.M_MVM_PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PainSharp08.mp3" +} + +"Scout.M_MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PositiveVocalization01.mp3" +} + +"Scout.M_MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PositiveVocalization02.mp3" +} + +"Scout.M_MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PositiveVocalization03.mp3" +} + +"Scout.M_MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PositiveVocalization04.mp3" +} + +"Scout.M_MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_PositiveVocalization05.mp3" +} + +"Scout.M_MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SentryAhead01.mp3" +} + +"Scout.M_MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SentryAhead02.mp3" +} + +"Scout.M_MVM_SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SentryAhead03.mp3" +} + +"Scout.M_MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted-AssistedKill01.mp3" +} + +"Scout.M_MVM_SpecialCompleted-AssistedKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted-AssistedKill02.mp3" +} + +"Scout.M_MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted01.mp3" +} + +"Scout.M_MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted02.mp3" +} + +"Scout.M_MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted03.mp3" +} + +"Scout.M_MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted04.mp3" +} + +"Scout.M_MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted05.mp3" +} + +"Scout.M_MVM_SpecialCompleted06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted06.mp3" +} + +"Scout.M_MVM_SpecialCompleted07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted07.mp3" +} + +"Scout.M_MVM_SpecialCompleted09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted09.mp3" +} + +"Scout.M_MVM_SpecialCompleted10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted10.mp3" +} + +"Scout.M_MVM_SpecialCompleted11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted11.mp3" +} + +"Scout.M_MVM_SpecialCompleted12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_SpecialCompleted12.mp3" +} + +"Scout.M_MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_StandOnThePoint01.mp3" +} + +"Scout.M_MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_StandOnThePoint02.mp3" +} + +"Scout.M_MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_StandOnThePoint03.mp3" +} + +"Scout.M_MVM_StandOnThePoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_StandOnThePoint04.mp3" +} + +"Scout.M_MVM_StandOnThePoint05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_StandOnThePoint05.mp3" +} + +"Scout.M_MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts01.mp3" +} + +"Scout.M_MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts02.mp3" +} + +"Scout.M_MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts03.mp3" +} + +"Scout.M_MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts04.mp3" +} + +"Scout.M_MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts05.mp3" +} + +"Scout.M_MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts06.mp3" +} + +"Scout.M_MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts07.mp3" +} + +"Scout.M_MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts08.mp3" +} + +"Scout.M_MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts09.mp3" +} + +"Scout.M_MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts10.mp3" +} + +"Scout.M_MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts11.mp3" +} + +"Scout.M_MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts12.mp3" +} + +"Scout.M_MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts13.mp3" +} + +"Scout.M_MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts14.mp3" +} + +"Scout.M_MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts15.mp3" +} + +"Scout.M_MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts16.mp3" +} + +"Scout.M_MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts17.mp3" +} + +"Scout.M_MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/scout_mvm_m_Taunts18.mp3" +} + +"Scout.M_MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Thanks01.mp3" +} + +"Scout.M_MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Thanks02.mp3" +} + +"Scout.M_MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ThanksForTheHeal01.mp3" +} + +"Scout.M_MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ThanksForTheHeal02.mp3" +} + +"Scout.M_MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ThanksForTheHeal03.mp3" +} + +"Scout.M_MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ThanksForTheTeleporter01.mp3" +} + +"Scout.M_MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ThanksForTheTeleporter02.mp3" +} + +"Scout.M_MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_ThanksForTheTeleporter03.mp3" +} + +"Scout.M_MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Yes01.mp3" +} + +"Scout.M_MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Yes02.mp3" +} + +"Scout.M_MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/scout_mvm_m_Yes03.mp3" +} + +// "Sniper.M_MVM_ActivateCharge01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ActivateCharge01.mp3" +// } + +// "Sniper.M_MVM_ActivateCharge02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ActivateCharge02.mp3" +// } + +// "Sniper.M_MVM_ActivateCharge03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ActivateCharge03.mp3" +// } + +// "Sniper.M_MVM_ActivateCharge04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ActivateCharge04.mp3" +// } + +// "Sniper.M_MVM_AutoCappedControlPoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedControlPoint01.mp3" +// } + +// "Sniper.M_MVM_AutoCappedControlPoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedControlPoint02.mp3" +// } + +// "Sniper.M_MVM_AutoCappedControlPoint03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedControlPoint03.mp3" +// } + +// "Sniper.M_MVM_AutoCappedIntelligence01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedIntelligence01.mp3" +// } + +// "Sniper.M_MVM_AutoCappedIntelligence02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedIntelligence02.mp3" +// } + +// "Sniper.M_MVM_AutoCappedIntelligence03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedIntelligence03.mp3" +// } + +// "Sniper.M_MVM_AutoCappedIntelligence04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedIntelligence04.mp3" +// } + +// "Sniper.M_MVM_AutoCappedIntelligence05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoCappedIntelligence05.mp3" +// } + +// "Sniper.M_MVM_AutoDejectedTie01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoDejectedTie01.mp3" +// } + +// "Sniper.M_MVM_AutoDejectedTie02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoDejectedTie02.mp3" +// } + +// "Sniper.M_MVM_AutoDejectedTie03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoDejectedTie03.mp3" +// } + +// "Sniper.M_MVM_AutoOnFire01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoOnFire01.mp3" +// } + +// "Sniper.M_MVM_AutoOnFire02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoOnFire02.mp3" +// } + +// "Sniper.M_MVM_AutoOnFire03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_AutoOnFire03.mp3" +// } + +// "Sniper.M_MVM_BattleCry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_BattleCry01.mp3" +// } + +// "Sniper.M_MVM_BattleCry02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_BattleCry02.mp3" +// } + +// "Sniper.M_MVM_BattleCry03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_BattleCry03.mp3" +// } + +// "Sniper.M_MVM_BattleCry04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_BattleCry04.mp3" +// } + +// "Sniper.M_MVM_BattleCry05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_BattleCry05.mp3" +// } + +// "Sniper.M_MVM_BattleCry06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_BattleCry06.mp3" +// } + +// "Sniper.M_MVM_Cheers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers01.mp3" +// } + +// "Sniper.M_MVM_Cheers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers02.mp3" +// } + +// "Sniper.M_MVM_Cheers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers03.mp3" +// } + +// "Sniper.M_MVM_Cheers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers04.mp3" +// } + +// "Sniper.M_MVM_Cheers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers05.mp3" +// } + +// "Sniper.M_MVM_Cheers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers06.mp3" +// } + +// "Sniper.M_MVM_Cheers07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers07.mp3" +// } + +// "Sniper.M_MVM_Cheers08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Cheers08.mp3" +// } + +// "Sniper.M_MVM_CloakedSpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpy01.mp3" +// } + +// "Sniper.M_MVM_CloakedSpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpy02.mp3" +// } + +// "Sniper.M_MVM_CloakedSpy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpy03.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify01.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify02.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify03.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify04.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify05.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify06.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify07.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify08.mp3" +// } + +// "Sniper.M_MVM_CloakedSpyIdentify09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_CloakedSpyIdentify09.mp3" +// } + +// "Sniper.M_MVM_Go01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Go01.mp3" +// } + +// "Sniper.M_MVM_Go02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Go02.mp3" +// } + +// "Sniper.M_MVM_Go03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Go03.mp3" +// } + +// "Sniper.M_MVM_GoodJob01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_GoodJob01.mp3" +// } + +// "Sniper.M_MVM_GoodJob02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_GoodJob02.mp3" +// } + +// "Sniper.M_MVM_GoodJob03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_GoodJob03.mp3" +// } + +// "Sniper.M_MVM_HeadLeft01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HeadLeft01.mp3" +// } + +// "Sniper.M_MVM_HeadLeft02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HeadLeft02.mp3" +// } + +// "Sniper.M_MVM_HeadLeft03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HeadLeft03.mp3" +// } + +// "Sniper.M_MVM_HeadRight01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HeadRight01.mp3" +// } + +// "Sniper.M_MVM_HeadRight02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HeadRight02.mp3" +// } + +// "Sniper.M_MVM_HeadRight03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HeadRight03.mp3" +// } + +// "Sniper.M_MVM_HelpMe01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMe01.mp3" +// } + +// "Sniper.M_MVM_HelpMe02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMe02.mp3" +// } + +// "Sniper.M_MVM_HelpMe03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMe03.mp3" +// } + +// "Sniper.M_MVM_HelpMeCapture01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMeCapture01.mp3" +// } + +// "Sniper.M_MVM_HelpMeCapture02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMeCapture02.mp3" +// } + +// "Sniper.M_MVM_HelpMeCapture03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMeCapture03.mp3" +// } + +// "Sniper.M_MVM_HelpMeDefend01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMeDefend01.mp3" +// } + +// "Sniper.M_MVM_HelpMeDefend02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMeDefend02.mp3" +// } + +// "Sniper.M_MVM_HelpMeDefend03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_HelpMeDefend03.mp3" +// } + +// "Sniper.M_MVM_Incoming01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Incoming01.mp3" +// } + +// "Sniper.M_MVM_Incoming02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Incoming02.mp3" +// } + +// "Sniper.M_MVM_Incoming03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Incoming03.mp3" +// } + +// "Sniper.M_MVM_Incoming04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Incoming04.mp3" +// } + +// "Sniper.M_MVM_Jeers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers01.mp3" +// } + +// "Sniper.M_MVM_Jeers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers02.mp3" +// } + +// "Sniper.M_MVM_Jeers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers03.mp3" +// } + +// "Sniper.M_MVM_Jeers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers04.mp3" +// } + +// "Sniper.M_MVM_Jeers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers05.mp3" +// } + +// "Sniper.M_MVM_Jeers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers06.mp3" +// } + +// "Sniper.M_MVM_Jeers07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers07.mp3" +// } + +// "Sniper.M_MVM_Jeers08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Jeers08.mp3" +// } + +// "Sniper.M_MVM_LaughEvil01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughEvil01.mp3" +// } + +// "Sniper.M_MVM_LaughEvil02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughEvil02.mp3" +// } + +// "Sniper.M_MVM_LaughEvil03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughEvil03.mp3" +// } + +// "Sniper.M_MVM_LaughHappy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughHappy01.mp3" +// } + +// "Sniper.M_MVM_LaughHappy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughHappy02.mp3" +// } + +// "Sniper.M_MVM_LaughLong01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughLong01.mp3" +// } + +// "Sniper.M_MVM_LaughLong02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughLong02.mp3" +// } + +// "Sniper.M_MVM_LaughShort01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughShort01.mp3" +// } + +// "Sniper.M_MVM_LaughShort02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughShort02.mp3" +// } + +// "Sniper.M_MVM_LaughShort03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughShort03.mp3" +// } + +// "Sniper.M_MVM_LaughShort04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughShort04.mp3" +// } + +// "Sniper.M_MVM_LaughShort05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_LaughShort05.mp3" +// } + +// "Sniper.M_MVM_Medic01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Medic01.mp3" +// } + +// "Sniper.M_MVM_Medic02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Medic02.mp3" +// } + +// "Sniper.M_MVM_MoveUp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_MoveUp01.mp3" +// } + +// "Sniper.M_MVM_MoveUp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_MoveUp02.mp3" +// } + +// "Sniper.M_MVM_NeedDispenser01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NeedDispenser01.mp3" +// } + +// "Sniper.M_MVM_NeedSentry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NeedSentry01.mp3" +// } + +// "Sniper.M_MVM_NeedTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NeedTeleporter01.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization01.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization02.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization03.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization04.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization05.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization06.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization07.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization08" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization08.mp3" +// } + +// "Sniper.M_MVM_NegativeVocalization09" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NegativeVocalization09.mp3" +// } + +// "Sniper.M_MVM_NiceShot01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NiceShot01.mp3" +// } + +// "Sniper.M_MVM_NiceShot02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NiceShot02.mp3" +// } + +// "Sniper.M_MVM_NiceShot03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_NiceShot03.mp3" +// } + +// "Sniper.M_MVM_No01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_No01.mp3" +// } + +// "Sniper.M_MVM_No02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_No02.mp3" +// } + +// "Sniper.M_MVM_No03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_No03.mp3" +// } + +// "Sniper.M_MVM_No04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_No04.mp3" +// } + +// "Sniper.M_MVM_PainCrticialDeath01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath01.mp3" +// } + +// "Sniper.M_MVM_PainCrticialDeath02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath02.mp3" +// } + +// "Sniper.M_MVM_PainCrticialDeath03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath03.mp3" +// } + +// "Sniper.M_MVM_PainCrticialDeath04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainCrticialDeath04.mp3" +// } + +// "Sniper.M_MVM_PainSevere01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere01.mp3" +// } + +// "Sniper.M_MVM_PainSevere02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere02.mp3" +// } + +// "Sniper.M_MVM_PainSevere03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere03.mp3" +// } + +// "Sniper.M_MVM_PainSevere04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSevere04.mp3" +// } + +// "Sniper.M_MVM_PainSharp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp01.mp3" +// } + +// "Sniper.M_MVM_PainSharp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp02.mp3" +// } + +// "Sniper.M_MVM_PainSharp03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp03.mp3" +// } + +// "Sniper.M_MVM_PainSharp04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PainSharp04.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization01.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization02.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization03.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization04.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization05.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization06.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization07.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization08.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization09.mp3" +// } + +// "Sniper.M_MVM_PositiveVocalization10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_PositiveVocalization10.mp3" +// } + +// "Sniper.M_MVM_SentryAhead01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SentryAhead01.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted-AssistedKill01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted-AssistedKill01.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted-AssistedKill02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted-AssistedKill02.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted01.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted02.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted03.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted04.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted05.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted06.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted07.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted08.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted09.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted10.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted11.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted12.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted13" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted13.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted14" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted14.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted15" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted15.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted16" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted16.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted17" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted17.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted18" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted18.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted19" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted19.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted20" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted20.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted21" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted21.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted22" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted22.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted23" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted23.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted24" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted24.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted25" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted25.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted26" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted26.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted27" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted27.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted28" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted28.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted29" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted29.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted30" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted30.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted31" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted31.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted32" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted32.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted33" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted33.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted34" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted34.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted35" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted35.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted36" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted36.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted37" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted37.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted38" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted38.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted39" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted39.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted40" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted40.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted41" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted41.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted42" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted42.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted43" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted43.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted44" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted44.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted45" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted45.mp3" +// } + +// "Sniper.M_MVM_SpecialCompleted46" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_SpecialCompleted46.mp3" +// } + +// "Sniper.M_MVM_StandOnThePoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_StandOnThePoint01.mp3" +// } + +// "Sniper.M_MVM_StandOnThePoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_StandOnThePoint02.mp3" +// } + +// "Sniper.M_MVM_Taunts01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts01.mp3" +// } + +// "Sniper.M_MVM_Taunts02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts02.mp3" +// } + +// "Sniper.M_MVM_Taunts03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts03.mp3" +// } + +// "Sniper.M_MVM_Taunts04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts04.mp3" +// } + +// "Sniper.M_MVM_Taunts05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts05.mp3" +// } + +// "Sniper.M_MVM_Taunts06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts06.mp3" +// } + +// "Sniper.M_MVM_Taunts07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts07.mp3" +// } + +// "Sniper.M_MVM_Taunts08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts08.mp3" +// } + +// "Sniper.M_MVM_Taunts09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts09.mp3" +// } + +// "Sniper.M_MVM_Taunts10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts10.mp3" +// } + +// "Sniper.M_MVM_Taunts11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts11.mp3" +// } + +// "Sniper.M_MVM_Taunts12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts12.mp3" +// } + +// "Sniper.M_MVM_Taunts13" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts13.mp3" +// } + +// "Sniper.M_MVM_Taunts14" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts14.mp3" +// } + +// "Sniper.M_MVM_Taunts15" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts15.mp3" +// } + +// "Sniper.M_MVM_Taunts16" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts16.mp3" +// } + +// "Sniper.M_MVM_Taunts17" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts17.mp3" +// } + +// "Sniper.M_MVM_Taunts18" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts18.mp3" +// } + +// "Sniper.M_MVM_Taunts19" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts19.mp3" +// } + +// "Sniper.M_MVM_Taunts20" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts20.mp3" +// } + +// "Sniper.M_MVM_Taunts21" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts21.mp3" +// } + +// "Sniper.M_MVM_Taunts22" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts22.mp3" +// } + +// "Sniper.M_MVM_Taunts23" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts23.mp3" +// } + +// "Sniper.M_MVM_Taunts24" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts24.mp3" +// } + +// "Sniper.M_MVM_Taunts25" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts25.mp3" +// } + +// "Sniper.M_MVM_Taunts26" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts26.mp3" +// } + +// "Sniper.M_MVM_Taunts27" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts27.mp3" +// } + +// "Sniper.M_MVM_Taunts28" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts28.mp3" +// } + +// "Sniper.M_MVM_Taunts29" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts29.mp3" +// } + +// "Sniper.M_MVM_Taunts30" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts30.mp3" +// } + +// "Sniper.M_MVM_Taunts31" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts31.mp3" +// } + +// "Sniper.M_MVM_Taunts32" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts32.mp3" +// } + +// "Sniper.M_MVM_Taunts33" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts33.mp3" +// } + +// "Sniper.M_MVM_Taunts34" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts34.mp3" +// } + +// "Sniper.M_MVM_Taunts35" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts35.mp3" +// } + +// "Sniper.M_MVM_Taunts36" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts36.mp3" +// } + +// "Sniper.M_MVM_Taunts37" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts37.mp3" +// } + +// "Sniper.M_MVM_Taunts38" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts38.mp3" +// } + +// "Sniper.M_MVM_Taunts39" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts39.mp3" +// } + +// "Sniper.M_MVM_Taunts40" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts40.mp3" +// } + +// "Sniper.M_MVM_Taunts41" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts41.mp3" +// } + +// "Sniper.M_MVM_Taunts42" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts42.mp3" +// } + +// "Sniper.M_MVM_Taunts43" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts43.mp3" +// } + +// "Sniper.M_MVM_Taunts44" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts44.mp3" +// } + +// "Sniper.M_MVM_Taunts45" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts45.mp3" +// } + +// "Sniper.M_MVM_Taunts46" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/sniper_mvm_m_Taunts46.mp3" +// } + +// "Sniper.M_MVM_Thanks01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Thanks01.mp3" +// } + +// "Sniper.M_MVM_Thanks02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Thanks02.mp3" +// } + +// "Sniper.M_MVM_ThanksForTheHeal01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ThanksForTheHeal01.mp3" +// } + +// "Sniper.M_MVM_ThanksForTheHeal02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ThanksForTheHeal02.mp3" +// } + +// "Sniper.M_MVM_ThanksForTheHeal03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ThanksForTheHeal03.mp3" +// } + +// "Sniper.M_MVM_ThanksForTheTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ThanksForTheTeleporter01.mp3" +// } + +// "Sniper.M_MVM_ThanksForTheTeleporter02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ThanksForTheTeleporter02.mp3" +// } + +// "Sniper.M_MVM_ThanksForTheTeleporter03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_ThanksForTheTeleporter03.mp3" +// } + +// "Sniper.M_MVM_Yes01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Yes01.mp3" +// } + +// "Sniper.M_MVM_Yes02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Yes02.mp3" +// } + +// "Sniper.M_MVM_Yes03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_Yes03.mp3" +// } + +// "sniper.MedicFollow01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_medicfollow01.mp3" +// } + +// "sniper.MedicFollow02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_medicfollow02.mp3" +// } + +// "sniper.MedicFollow03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_medicfollow03.mp3" +// } + +// "sniper.MedicFollow04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_medicfollow04.mp3" +// } + +// "sniper.MedicFollow05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_medicfollow05.mp3" +// } + +// "sniper.MeleeDare01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare01.mp3" +// } + +// "sniper.MeleeDare02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare02.mp3" +// } + +// "sniper.MeleeDare03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare03.mp3" +// } + +// "sniper.MeleeDare04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare04.mp3" +// } + +// "sniper.MeleeDare05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare05.mp3" +// } + +// "sniper.MeleeDare06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare06.mp3" +// } + +// "sniper.MeleeDare07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare07.mp3" +// } + +// "sniper.MeleeDare08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare08.mp3" +// } + +// "sniper.MeleeDare09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_meleedare09.mp3" +// } + +// "sniper.Award01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award01.mp3" +// } + +// "sniper.Award02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award02.mp3" +// } + +// "sniper.Award03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award03.mp3" +// } + +// "sniper.Award04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award04.mp3" +// } + +// "sniper.Award05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award05.mp3" +// } + +// "sniper.Award06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award06.mp3" +// } + +// "sniper.Award07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award07.mp3" +// } + +// "sniper.Award08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award08.mp3" +// } + +// "sniper.Award09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award09.mp3" +// } + +// "sniper.Award10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award10.mp3" +// } + +// "sniper.Award11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award11.mp3" +// } + +// "sniper.Award12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award12.mp3" +// } + +// "sniper.Award13" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award13.mp3" +// } + +// "sniper.Award14" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/sniper_mvm_m_award14.mp3" +// } + +"Soldier.M_MVM_ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ActivateCharge01.mp3" +} + +"Soldier.M_MVM_ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ActivateCharge02.mp3" +} + +"Soldier.M_MVM_ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ActivateCharge03.mp3" +} + +"Soldier.M_MVM_AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoCappedControlPoint01.mp3" +} + +"Soldier.M_MVM_AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoCappedControlPoint02.mp3" +} + +"Soldier.M_MVM_AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoCappedControlPoint03.mp3" +} + +"Soldier.M_MVM_AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoCappedIntelligence01.mp3" +} + +"Soldier.M_MVM_AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoCappedIntelligence02.mp3" +} + +"Soldier.M_MVM_AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoCappedIntelligence03.mp3" +} + +"Soldier.M_MVM_AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoDejectedTie01.mp3" +} + +"Soldier.M_MVM_AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoDejectedTie02.mp3" +} + +"Soldier.M_MVM_AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoDejectedTie03.mp3" +} + +"Soldier.M_MVM_AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoOnFire01.mp3" +} + +"Soldier.M_MVM_AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoOnFire02.mp3" +} + +"Soldier.M_MVM_AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_AutoOnFire03.mp3" +} + +"Soldier.M_MVM_BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_BattleCry01.mp3" +} + +"Soldier.M_MVM_BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_BattleCry02.mp3" +} + +"Soldier.M_MVM_BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_BattleCry03.mp3" +} + +"Soldier.M_MVM_BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_BattleCry04.mp3" +} + +"Soldier.M_MVM_BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_BattleCry05.mp3" +} + +"Soldier.M_MVM_BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_BattleCry06.mp3" +} + +"Soldier.M_MVM_Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Cheers01.mp3" +} + +"Soldier.M_MVM_Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Cheers02.mp3" +} + +"Soldier.M_MVM_Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Cheers03.mp3" +} + +"Soldier.M_MVM_Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Cheers04.mp3" +} + +"Soldier.M_MVM_Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Cheers05.mp3" +} + +"Soldier.M_MVM_Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Cheers06.mp3" +} + +"Soldier.M_MVM_CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpy01.mp3" +} + +"Soldier.M_MVM_CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpy02.mp3" +} + +"Soldier.M_MVM_CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpy03.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify01.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify02.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify03.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify04.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify05.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify06.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify07.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify08.mp3" +} + +"Soldier.M_MVM_CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_CloakedSpyIdentify09.mp3" +} + +"Soldier.M_MVM_Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Go01.mp3" +} + +"Soldier.M_MVM_Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Go02.mp3" +} + +"Soldier.M_MVM_Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Go03.mp3" +} + +"Soldier.M_MVM_GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_GoodJob01.mp3" +} + +"Soldier.M_MVM_GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_GoodJob02.mp3" +} + +"Soldier.M_MVM_GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_GoodJob03.mp3" +} + +"Soldier.M_MVM_HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HeadLeft01.mp3" +} + +"Soldier.M_MVM_HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HeadLeft02.mp3" +} + +"Soldier.M_MVM_HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HeadLeft03.mp3" +} + +"Soldier.M_MVM_HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HeadRight01.mp3" +} + +"Soldier.M_MVM_HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HeadRight02.mp3" +} + +"Soldier.M_MVM_HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HeadRight03.mp3" +} + +"Soldier.M_MVM_HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMe01.mp3" +} + +"Soldier.M_MVM_HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMe02.mp3" +} + +"Soldier.M_MVM_HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMe03.mp3" +} + +"Soldier.M_MVM_HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeCapture01.mp3" +} + +"Soldier.M_MVM_HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeCapture02.mp3" +} + +"Soldier.M_MVM_HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeCapture03.mp3" +} + +"Soldier.M_MVM_HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeDefend01.mp3" +} + +"Soldier.M_MVM_HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeDefend02.mp3" +} + +"Soldier.M_MVM_HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeDefend03.mp3" +} + +"Soldier.M_MVM_HelpMeDefend04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_HelpMeDefend04.mp3" +} + +"Soldier.M_MVM_Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Incoming01.mp3" +} + +"Soldier.M_MVM_Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers01.mp3" +} + +"Soldier.M_MVM_Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers02.mp3" +} + +"Soldier.M_MVM_Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers03.mp3" +} + +"Soldier.M_MVM_Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers04.mp3" +} + +"Soldier.M_MVM_Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers05.mp3" +} + +"Soldier.M_MVM_Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers06.mp3" +} + +"Soldier.M_MVM_Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers07.mp3" +} + +"Soldier.M_MVM_Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers08.mp3" +} + +"Soldier.M_MVM_Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers09.mp3" +} + +"Soldier.M_MVM_Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers10.mp3" +} + +"Soldier.M_MVM_Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers11.mp3" +} + +"Soldier.M_MVM_Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Jeers12.mp3" +} + +"Soldier.M_MVM_LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughEvil01.mp3" +} + +"Soldier.M_MVM_LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughEvil02.mp3" +} + +"Soldier.M_MVM_LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughEvil03.mp3" +} + +"Soldier.M_MVM_LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughHappy01.mp3" +} + +"Soldier.M_MVM_LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughHappy02.mp3" +} + +"Soldier.M_MVM_LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughHappy03.mp3" +} + +"Soldier.M_MVM_LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughLong01.mp3" +} + +"Soldier.M_MVM_LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughLong02.mp3" +} + +"Soldier.M_MVM_LaughLong03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughLong03.mp3" +} + +"Soldier.M_MVM_LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughShort01.mp3" +} + +"Soldier.M_MVM_LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughShort02.mp3" +} + +"Soldier.M_MVM_LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughShort03.mp3" +} + +"Soldier.M_MVM_LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_LaughShort04.mp3" +} + +"Soldier.M_MVM_Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Medic01.mp3" +} + +"Soldier.M_MVM_Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Medic02.mp3" +} + +"Soldier.M_MVM_Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Medic03.mp3" +} + +"Soldier.M_MVM_MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_MoveUp01.mp3" +} + +"Soldier.M_MVM_MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_MoveUp02.mp3" +} + +"Soldier.M_MVM_MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_MoveUp03.mp3" +} + +"Soldier.M_MVM_NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NeedDispenser01.mp3" +} + +"Soldier.M_MVM_NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NeedSentry01.mp3" +} + +"Soldier.M_MVM_NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NeedTeleporter01.mp3" +} + +"Soldier.M_MVM_NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NegativeVocalization01.mp3" +} + +"Soldier.M_MVM_NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NegativeVocalization02.mp3" +} + +"Soldier.M_MVM_NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NegativeVocalization03.mp3" +} + +"Soldier.M_MVM_NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NegativeVocalization04.mp3" +} + +"Soldier.M_MVM_NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NegativeVocalization05.mp3" +} + +"Soldier.M_MVM_NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NegativeVocalization06.mp3" +} + +"Soldier.M_MVM_NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NiceShot01.mp3" +} + +"Soldier.M_MVM_NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NiceShot02.mp3" +} + +"Soldier.M_MVM_NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_NiceShot03.mp3" +} + +"Soldier.M_MVM_No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_No01.mp3" +} + +"Soldier.M_MVM_No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_No02.mp3" +} + +"Soldier.M_MVM_No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_No03.mp3" +} + +"Soldier.M_MVM_PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath01.mp3" +} + +"Soldier.M_MVM_PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath02.mp3" +} + +"Soldier.M_MVM_PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath03.mp3" +} + +"Soldier.M_MVM_PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainCrticialDeath04.mp3" +} + +"Soldier.M_MVM_PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere01.mp3" +} + +"Soldier.M_MVM_PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere02.mp3" +} + +"Soldier.M_MVM_PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere03.mp3" +} + +"Soldier.M_MVM_PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere04.mp3" +} + +"Soldier.M_MVM_PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere05.mp3" +} + +"Soldier.M_MVM_PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSevere06.mp3" +} + +"Soldier.M_MVM_PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp01.mp3" +} + +"Soldier.M_MVM_PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp02.mp3" +} + +"Soldier.M_MVM_PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp03.mp3" +} + +"Soldier.M_MVM_PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp04.mp3" +} + +"Soldier.M_MVM_PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp05.mp3" +} + +"Soldier.M_MVM_PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp06.mp3" +} + +"Soldier.M_MVM_PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp07.mp3" +} + +"Soldier.M_MVM_PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "0" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PainSharp08.mp3" +} + +"Soldier.M_MVM_PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PositiveVocalization01.mp3" +} + +"Soldier.M_MVM_PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PositiveVocalization02.mp3" +} + +"Soldier.M_MVM_PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PositiveVocalization03.mp3" +} + +"Soldier.M_MVM_PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PositiveVocalization04.mp3" +} + +"Soldier.M_MVM_PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_PositiveVocalization05.mp3" +} + +"Soldier.M_MVM_SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SentryAhead01.mp3" +} + +"Soldier.M_MVM_SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SentryAhead02.mp3" +} + +"Soldier.M_MVM_SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SentryAhead03.mp3" +} + +"Soldier.M_MVM_SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SpecialCompleted-AssistedKill01.mp3" +} + +"Soldier.M_MVM_SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SpecialCompleted01.mp3" +} + +"Soldier.M_MVM_SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SpecialCompleted02.mp3" +} + +"Soldier.M_MVM_SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SpecialCompleted03.mp3" +} + +"Soldier.M_MVM_SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SpecialCompleted04.mp3" +} + +"Soldier.M_MVM_SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_SpecialCompleted05.mp3" +} + +"Soldier.M_MVM_StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_StandOnThePoint01.mp3" +} + +"Soldier.M_MVM_StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_StandOnThePoint02.mp3" +} + +"Soldier.M_MVM_StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_StandOnThePoint03.mp3" +} + +"Soldier.M_MVM_Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts01.mp3" +} + +"Soldier.M_MVM_Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts02.mp3" +} + +"Soldier.M_MVM_Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts03.mp3" +} + +"Soldier.M_MVM_Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts04.mp3" +} + +"Soldier.M_MVM_Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts05.mp3" +} + +"Soldier.M_MVM_Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts06.mp3" +} + +"Soldier.M_MVM_Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts07.mp3" +} + +"Soldier.M_MVM_Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts08.mp3" +} + +"Soldier.M_MVM_Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts09.mp3" +} + +"Soldier.M_MVM_Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts10.mp3" +} + +"Soldier.M_MVM_Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts11.mp3" +} + +"Soldier.M_MVM_Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts12.mp3" +} + +"Soldier.M_MVM_Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts13.mp3" +} + +"Soldier.M_MVM_Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts14.mp3" +} + +"Soldier.M_MVM_Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts15.mp3" +} + +"Soldier.M_MVM_Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts16.mp3" +} + +"Soldier.M_MVM_Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts17.mp3" +} + +"Soldier.M_MVM_Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts18.mp3" +} + +"Soldier.M_MVM_Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts19.mp3" +} + +"Soldier.M_MVM_Taunts20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts20.mp3" +} + +"Soldier.M_MVM_Taunts21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/taunts/soldier_mvm_m_Taunts21.mp3" +} + +"Soldier.M_MVM_Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Thanks01.mp3" +} + +"Soldier.M_MVM_Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Thanks02.mp3" +} + +"Soldier.M_MVM_ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ThanksForTheHeal01.mp3" +} + +"Soldier.M_MVM_ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ThanksForTheHeal02.mp3" +} + +"Soldier.M_MVM_ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ThanksForTheHeal03.mp3" +} + +"Soldier.M_MVM_ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ThanksForTheTeleporter01.mp3" +} + +"Soldier.M_MVM_ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ThanksForTheTeleporter02.mp3" +} + +"Soldier.M_MVM_ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_ThanksForTheTeleporter03.mp3" +} + +"Soldier.M_MVM_Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Yes01.mp3" +} + +"Soldier.M_MVM_Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Yes02.mp3" +} + +"Soldier.M_MVM_Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Yes03.mp3" +} + +"Soldier.M_MVM_Yes04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mvm/mght/soldier_mvm_m_Yes04.mp3" +} + +// "Spy.MVM_ActivateCharge01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ActivateCharge01.mp3" +// } + +// "Spy.MVM_ActivateCharge02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ActivateCharge02.mp3" +// } + +// "Spy.MVM_ActivateCharge03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ActivateCharge03.mp3" +// } + +// "Spy.MVM_AutoCappedControlPoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoCappedControlPoint01.mp3" +// } + +// "Spy.MVM_AutoCappedControlPoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoCappedControlPoint02.mp3" +// } + +// "Spy.MVM_AutoCappedControlPoint03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoCappedControlPoint03.mp3" +// } + +// "Spy.MVM_AutoCappedIntelligence01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoCappedIntelligence01.mp3" +// } + +// "Spy.MVM_AutoCappedIntelligence02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoCappedIntelligence02.mp3" +// } + +// "Spy.MVM_AutoCappedIntelligence03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoCappedIntelligence03.mp3" +// } + +// "Spy.MVM_AutoDejectedTie01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoDejectedTie01.mp3" +// } + +// "Spy.MVM_AutoDejectedTie02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoDejectedTie02.mp3" +// } + +// "Spy.MVM_AutoDejectedTie03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoDejectedTie03.mp3" +// } + +// "Spy.MVM_AutoOnFire01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoOnFire01.mp3" +// } + +// "Spy.MVM_AutoOnFire02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoOnFire02.mp3" +// } + +// "Spy.MVM_AutoOnFire03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_AutoOnFire03.mp3" +// } + +// "Spy.MVM_BattleCry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_BattleCry01.mp3" +// } + +// "Spy.MVM_BattleCry02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_BattleCry02.mp3" +// } + +// "Spy.MVM_BattleCry03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_BattleCry03.mp3" +// } + +// "Spy.MVM_BattleCry04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_BattleCry04.mp3" +// } + +// "Spy.MVM_Cheers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers01.mp3" +// } + +// "Spy.MVM_Cheers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers02.mp3" +// } + +// "Spy.MVM_Cheers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers03.mp3" +// } + +// "Spy.MVM_Cheers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers04.mp3" +// } + +// "Spy.MVM_Cheers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers05.mp3" +// } + +// "Spy.MVM_Cheers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers06.mp3" +// } + +// "Spy.MVM_Cheers07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers07.mp3" +// } + +// "Spy.MVM_Cheers08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Cheers08.mp3" +// } + +// "Spy.MVM_CloakedSpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpy01.mp3" +// } + +// "Spy.MVM_CloakedSpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpy02.mp3" +// } + +// "Spy.MVM_CloakedSpy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpy03.mp3" +// } + +// "Spy.MVM_CloakedSpy04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpy04.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify01.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify02.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify03.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify04.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify05.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify06.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify07.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify08.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify09.mp3" +// } + +// "Spy.MVM_CloakedSpyIdentify10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_CloakedSpyIdentify10.mp3" +// } + +// "Spy.MVM_Go01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Go01.mp3" +// } + +// "Spy.MVM_Go02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Go02.mp3" +// } + +// "Spy.MVM_Go03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Go03.mp3" +// } + +// "Spy.MVM_GoodJob01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_GoodJob01.mp3" +// } + +// "Spy.MVM_GoodJob02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_GoodJob02.mp3" +// } + +// "Spy.MVM_GoodJob03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_GoodJob03.mp3" +// } + +// "Spy.MVM_HeadLeft01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HeadLeft01.mp3" +// } + +// "Spy.MVM_HeadLeft02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HeadLeft02.mp3" +// } + +// "Spy.MVM_HeadLeft03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HeadLeft03.mp3" +// } + +// "Spy.MVM_HeadRight01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HeadRight01.mp3" +// } + +// "Spy.MVM_HeadRight02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HeadRight02.mp3" +// } + +// "Spy.MVM_HeadRight03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HeadRight03.mp3" +// } + +// "Spy.MVM_HelpMe01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMe01.mp3" +// } + +// "Spy.MVM_HelpMe02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMe02.mp3" +// } + +// "Spy.MVM_HelpMe03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMe03.mp3" +// } + +// "Spy.MVM_HelpMeCapture01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMeCapture01.mp3" +// } + +// "Spy.MVM_HelpMeCapture02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMeCapture02.mp3" +// } + +// "Spy.MVM_HelpMeCapture03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMeCapture03.mp3" +// } + +// "Spy.MVM_HelpMeDefend01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMeDefend01.mp3" +// } + +// "Spy.MVM_HelpMeDefend02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMeDefend02.mp3" +// } + +// "Spy.MVM_HelpMeDefend03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_HelpMeDefend03.mp3" +// } + +// "Spy.MVM_Incoming01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Incoming01.mp3" +// } + +// "Spy.MVM_Incoming02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Incoming02.mp3" +// } + +// "Spy.MVM_Incoming03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Incoming03.mp3" +// } + +// "Spy.MVM_Jeers01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Jeers01.mp3" +// } + +// "Spy.MVM_Jeers02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Jeers02.mp3" +// } + +// "Spy.MVM_Jeers03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Jeers03.mp3" +// } + +// "Spy.MVM_Jeers04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Jeers04.mp3" +// } + +// "Spy.MVM_Jeers05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Jeers05.mp3" +// } + +// "Spy.MVM_Jeers06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Jeers06.mp3" +// } + +// "Spy.MVM_LaughEvil01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughEvil01.mp3" +// } + +// "Spy.MVM_LaughEvil02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughEvil02.mp3" +// } + +// "Spy.MVM_LaughHappy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughHappy01.mp3" +// } + +// "Spy.MVM_LaughHappy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughHappy02.mp3" +// } + +// "Spy.MVM_LaughHappy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughHappy03.mp3" +// } + +// "Spy.MVM_LaughLong01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughLong01.mp3" +// } + +// "Spy.MVM_LaughShort01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughShort01.mp3" +// } + +// "Spy.MVM_LaughShort02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughShort02.mp3" +// } + +// "Spy.MVM_LaughShort03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughShort03.mp3" +// } + +// "Spy.MVM_LaughShort04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughShort04.mp3" +// } + +// "Spy.MVM_LaughShort05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughShort05.mp3" +// } + +// "Spy.MVM_LaughShort06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_LaughShort06.mp3" +// } + +// "Spy.MVM_Medic01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Medic01.mp3" +// } + +// "Spy.MVM_Medic02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Medic02.mp3" +// } + +// "Spy.MVM_Medic03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Medic03.mp3" +// } + +// "Spy.MVM_MoveUp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_MoveUp01.mp3" +// } + +// "Spy.MVM_MoveUp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_MoveUp02.mp3" +// } + +// "Spy.MVM_NeedDispenser01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NeedDispenser01.mp3" +// } + +// "Spy.MVM_NeedSentry01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NeedSentry01.mp3" +// } + +// "Spy.MVM_NeedTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NeedTeleporter01.mp3" +// } + +// "Spy.MVM_NegativeVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization01.mp3" +// } + +// "Spy.MVM_NegativeVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization02.mp3" +// } + +// "Spy.MVM_NegativeVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization03.mp3" +// } + +// "Spy.MVM_NegativeVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization04.mp3" +// } + +// "Spy.MVM_NegativeVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization05.mp3" +// } + +// "Spy.MVM_NegativeVocalization06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization06.mp3" +// } + +// "Spy.MVM_NegativeVocalization07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization07.mp3" +// } + +// "Spy.MVM_NegativeVocalization08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization08.mp3" +// } + +// "Spy.MVM_NegativeVocalization09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NegativeVocalization09.mp3" +// } + +// "Spy.MVM_NiceShot01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NiceShot01.mp3" +// } + +// "Spy.MVM_NiceShot02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NiceShot02.mp3" +// } + +// "Spy.MVM_NiceShot03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_NiceShot03.mp3" +// } + +// "Spy.MVM_No01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_No01.mp3" +// } + +// "Spy.MVM_No02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_No02.mp3" +// } + +// "Spy.MVM_No03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_No03.mp3" +// } + +// "Spy.MVM_PainCrticialDeath01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath01.mp3" +// } + +// "Spy.MVM_PainCrticialDeath02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath02.mp3" +// } + +// "Spy.MVM_PainCrticialDeath03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainCrticialDeath03.mp3" +// } + +// "Spy.MVM_PainSevere01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSevere01.mp3" +// } + +// "Spy.MVM_PainSevere02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSevere02.mp3" +// } + +// "Spy.MVM_PainSevere03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSevere03.mp3" +// } + +// "Spy.MVM_PainSevere04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSevere04.mp3" +// } + +// "Spy.MVM_PainSevere05" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSevere05.mp3" +// } + +// "Spy.MVM_PainSharp01" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSharp01.mp3" +// } + +// "Spy.MVM_PainSharp02" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSharp02.mp3" +// } + +// "Spy.MVM_PainSharp03" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSharp03.mp3" +// } + +// "Spy.MVM_PainSharp04" +// { + // "channel" "CHAN_VOICE" + // "volume" "VOL_NORM" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PainSharp04.mp3" +// } + +// "Spy.MVM_PositiveVocalization01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PositiveVocalization01.mp3" +// } + +// "Spy.MVM_PositiveVocalization02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PositiveVocalization02.mp3" +// } + +// "Spy.MVM_PositiveVocalization03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PositiveVocalization03.mp3" +// } + +// "Spy.MVM_PositiveVocalization04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PositiveVocalization04.mp3" +// } + +// "Spy.MVM_PositiveVocalization05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_PositiveVocalization05.mp3" +// } + +// "Spy.MVM_SentryAhead01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SentryAhead01.mp3" +// } + +// "Spy.MVM_SentryAhead02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SentryAhead02.mp3" +// } + +// "Spy.MVM_SpecialCompleted-AssistedKill01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted-AssistedKill01.mp3" +// } + +// "Spy.MVM_SpecialCompleted-AssistedKill02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted-AssistedKill02.mp3" +// } + +// "Spy.MVM_SpecialCompleted01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted01.mp3" +// } + +// "Spy.MVM_SpecialCompleted02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted02.mp3" +// } + +// "Spy.MVM_SpecialCompleted03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted03.mp3" +// } + +// "Spy.MVM_SpecialCompleted04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted04.mp3" +// } + +// "Spy.MVM_SpecialCompleted05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted05.mp3" +// } + +// "Spy.MVM_SpecialCompleted06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted06.mp3" +// } + +// "Spy.MVM_SpecialCompleted07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted07.mp3" +// } + +// "Spy.MVM_SpecialCompleted08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted08.mp3" +// } + +// "Spy.MVM_SpecialCompleted09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted09.mp3" +// } + +// "Spy.MVM_SpecialCompleted10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted10.mp3" +// } + +// "Spy.MVM_SpecialCompleted11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted11.mp3" +// } + +// "Spy.MVM_SpecialCompleted12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_SpecialCompleted12.mp3" +// } + +// "Spy.MVM_StandOnThePoint01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_StandOnThePoint01.mp3" +// } + +// "Spy.MVM_StandOnThePoint02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_StandOnThePoint02.mp3" +// } + +// "Spy.MVM_StandOnThePoint03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_StandOnThePoint03.mp3" +// } + +// "Spy.MVM_StandOnThePoint04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.820" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_StandOnThePoint04.mp3" +// } + +// "Spy.MVM_Taunts01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts01.mp3" +// } + +// "Spy.MVM_Taunts02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts02.mp3" +// } + +// "Spy.MVM_Taunts03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts03.mp3" +// } + +// "Spy.MVM_Taunts04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts04.mp3" +// } + +// "Spy.MVM_Taunts05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts05.mp3" +// } + +// "Spy.MVM_Taunts06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts06.mp3" +// } + +// "Spy.MVM_Taunts07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts07.mp3" +// } + +// "Spy.MVM_Taunts08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts08.mp3" +// } + +// "Spy.MVM_Taunts09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts09.mp3" +// } + +// "Spy.MVM_Taunts10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts10.mp3" +// } + +// "Spy.MVM_Taunts11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts11.mp3" +// } + +// "Spy.MVM_Taunts12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts12.mp3" +// } + +// "Spy.MVM_Taunts13" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts13.mp3" +// } + +// "Spy.MVM_Taunts14" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts14.mp3" +// } + +// "Spy.MVM_Taunts15" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts15.mp3" +// } + +// "Spy.MVM_Taunts16" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_Taunts16.mp3" +// } + +// "Spy.MVM_Thanks01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Thanks01.mp3" +// } + +// "Spy.MVM_Thanks02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Thanks02.mp3" +// } + +// "Spy.MVM_Thanks03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Thanks03.mp3" +// } + +// "Spy.MVM_ThanksForTheHeal01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ThanksForTheHeal01.mp3" +// } + +// "Spy.MVM_ThanksForTheHeal02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ThanksForTheHeal02.mp3" +// } + +// "Spy.MVM_ThanksForTheHeal03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ThanksForTheHeal03.mp3" +// } + +// "Spy.MVM_ThanksForTheTeleporter01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ThanksForTheTeleporter01.mp3" +// } + +// "Spy.MVM_ThanksForTheTeleporter02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ThanksForTheTeleporter02.mp3" +// } + +// "Spy.MVM_ThanksForTheTeleporter03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_ThanksForTheTeleporter03.mp3" +// } + +// "Spy.MVM_Yes01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Yes01.mp3" +// } + +// "Spy.MVM_Yes02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Yes02.mp3" +// } + +// "Spy.MVM_Yes03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/spy_mvm_Yes03.mp3" +// } + +// "Spy.MVM_HighFiveSuccess01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive_success01.mp3" +// } + +// "Spy.MVM_HighFiveSuccess02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive_success02.mp3" +// } + +// "Spy.MVM_HighFiveSuccess03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive_success03.mp3" +// } + +// "Spy.MVM_HighFiveSuccess04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive_success04.mp3" +// } +// "Spy.MVM_HighFiveSuccess05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive_success05.mp3" +// } + +// "Spy.MVM_HighFive01" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive01.mp3" +// } + +// "Spy.MVM_HighFive02" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive02.mp3" +// } + +// "Spy.MVM_HighFive03" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive03.mp3" +// } + +// "Spy.MVM_HighFive04" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive04.mp3" +// } + +// "Spy.MVM_HighFive05" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive05.mp3" +// } + +// "Spy.MVM_HighFive06" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive06.mp3" +// } + +// "Spy.MVM_HighFive07" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive07.mp3" +// } + +// "Spy.MVM_HighFive08" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive08.mp3" +// } + +// "Spy.MVM_HighFive09" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive09.mp3" +// } + +// "Spy.MVM_HighFive10" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive10.mp3" +// } + +// "Spy.MVM_HighFive11" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive11.mp3" +// } + +// "Spy.MVM_HighFive12" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive12.mp3" +// } + +// "Spy.MVM_HighFive13" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive13.mp3" +// } + +// "Spy.MVM_HighFive14" +// { + // "channel" "CHAN_VOICE" + // "volume" "0.620" + // "pitch" "PITCH_NORM" + + // "soundlevel" "SNDLVL_95dB" + + // "wave" "vo/mvm/mght/taunts/spy_mvm_highfive14.mp3" +// } + + +// ----------------------------------------------------------------------------- +// Heavy +// ----------------------------------------------------------------------------- + +"Heavy.M_MVM_Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award01.mp3" +} + +"Heavy.M_MVM_Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award02.mp3" +} + +"Heavy.M_MVM_Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award03.mp3" +} + +"Heavy.M_MVM_Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award04.mp3" +} + +"Heavy.M_MVM_Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award05.mp3" +} + +"Heavy.M_MVM_Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award07.mp3" +} + +"Heavy.M_MVM_Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award08.mp3" +} + +"Heavy.M_MVM_Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award09.mp3" +} + +"Heavy.M_MVM_Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award10.mp3" +} + +"Heavy.M_MVM_Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award11.mp3" +} + +"Heavy.M_MVM_Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award12.mp3" +} + +"Heavy.M_MVM_Award13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award13.mp3" +} + +"Heavy.M_MVM_Award16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award16.mp3" +} + +"Heavy.M_MVM_Award14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award14.mp3" +} + +"Heavy.M_MVM_Award15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award15.mp3" +} + +"Heavy.M_MVM_Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Award06.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense01.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense02.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense03.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense04.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense05.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense06.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense07.mp3" +} + +"Heavy.M_MVM_CartGoingBackDefense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackDefense08.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense01.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense02.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense03.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense04.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense05.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense06.mp3" +} + +"Heavy.M_MVM_CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartGoingBackOffense07.mp3" +} + +"Heavy.M_MVM_CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardDefense01.mp3" +} + +"Heavy.M_MVM_CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardDefense02.mp3" +} + +"Heavy.M_MVM_CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardDefense04.mp3" +} + +"Heavy.M_MVM_CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardDefense05.mp3" +} + +"Heavy.M_MVM_CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardDefense03.mp3" +} + +"Heavy.M_MVM_CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardDefense06.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense01.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense02.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense03.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense04.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense05.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense06.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense07.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense08.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense09.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense11.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense12.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense13.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense14.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense15.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense16.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense17.mp3" +} + +"Heavy.M_MVM_CartMovingForwardOffense10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartMovingForwardOffense10.mp3" +} + +"Heavy.M_MVM_CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStayCloseOffense01.mp3" +} + +"Heavy.M_MVM_CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStayCloseOffense02.mp3" +} + +"Heavy.M_MVM_CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStayCloseOffense03.mp3" +} + +"Heavy.M_MVM_CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStayCloseOffense06.mp3" +} + +"Heavy.M_MVM_CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStayCloseOffense05.mp3" +} + +"Heavy.M_MVM_CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStayCloseOffense04.mp3" +} + +"Heavy.M_MVM_CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStopItDefense01.mp3" +} + +"Heavy.M_MVM_CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStopItDefense02.mp3" +} + +"Heavy.M_MVM_CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStopItDefense03.mp3" +} + +"Heavy.M_MVM_CartStopItDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStopItDefense04.mp3" +} + +"Heavy.M_MVM_CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStoppedOffense01.mp3" +} + +"Heavy.M_MVM_CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStoppedOffense02.mp3" +} + +"Heavy.M_MVM_CartStoppedOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStoppedOffense04.mp3" +} + +"Heavy.M_MVM_CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_CartStoppedOffense03.mp3" +} + +"Heavy.M_MVM_Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination01.mp3" +} + +"Heavy.M_MVM_Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination02.mp3" +} + +"Heavy.M_MVM_Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination03.mp3" +} + +"Heavy.M_MVM_Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination04.mp3" +} + +"Heavy.M_MVM_Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination05.mp3" +} + +"Heavy.M_MVM_Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination06.mp3" +} + +"Heavy.M_MVM_Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination07.mp3" +} + +"Heavy.M_MVM_Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination08.mp3" +} + +"Heavy.M_MVM_Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination09.mp3" +} + +"Heavy.M_MVM_Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination10.mp3" +} + +"Heavy.M_MVM_Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination11.mp3" +} + +"Heavy.M_MVM_Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination12.mp3" +} + +"Heavy.M_MVM_Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination13.mp3" +} + +"Heavy.M_MVM_Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination14.mp3" +} + +"Heavy.M_MVM_Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination15.mp3" +} + +"Heavy.M_MVM_Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination16.mp3" +} + +"Heavy.M_MVM_Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination17.mp3" +} + +"Heavy.M_MVM_Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Domination18.mp3" +} + +"Heavy.M_MVM_FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_FightOnCap04.mp3" +} + +"Heavy.M_MVM_FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_FightOnCap01.mp3" +} + +"Heavy.M_MVM_FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_FightOnCap02.mp3" +} + +"Heavy.M_MVM_FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_FightOnCap03.mp3" +} + +"Heavy.M_MVM_LaughterBig02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_LaughterBig02.mp3" +} + +"Heavy.M_MVM_LaughterBig01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_LaughterBig01.mp3" +} + +"Heavy.M_MVM_LaughterBig03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_LaughterBig03.mp3" +} + +"Heavy.M_MVM_LaughterBig04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_LaughterBig04.mp3" +} + +"Heavy.M_MVM_MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow01.mp3" +} + +"Heavy.M_MVM_MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow02.mp3" +} + +"Heavy.M_MVM_MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow03.mp3" +} + +"Heavy.M_MVM_MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow04.mp3" +} + +"Heavy.M_MVM_MedicFollow05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow05.mp3" +} + +"Heavy.M_MVM_MedicFollow06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow06.mp3" +} + +"Heavy.M_MVM_MedicFollow07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MedicFollow07.mp3" +} + +"Heavy.M_MVM_MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare01.mp3" +} + +"Heavy.M_MVM_MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare02.mp3" +} + +"Heavy.M_MVM_MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare03.mp3" +} + +"Heavy.M_MVM_MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare04.mp3" +} + +"Heavy.M_MVM_MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare05.mp3" +} + +"Heavy.M_MVM_MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare06.mp3" +} + +"Heavy.M_MVM_MeleeDare07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare07.mp3" +} + +"Heavy.M_MVM_MeleeDare08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare08.mp3" +} + +"Heavy.M_MVM_MeleeDare09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare09.mp3" +} + +"Heavy.M_MVM_MeleeDare10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare10.mp3" +} + +"Heavy.M_MVM_MeleeDare11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare11.mp3" +} + +"Heavy.M_MVM_MeleeDare12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare12.mp3" +} + +"Heavy.M_MVM_MeleeDare13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_MeleeDare13.mp3" +} + +"Heavy.M_MVM_Meleeing01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing01.mp3" +} + +"Heavy.M_MVM_Meleeing02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing02.mp3" +} + +"Heavy.M_MVM_Meleeing03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing03.mp3" +} + +"Heavy.M_MVM_Meleeing04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing04.mp3" +} + +"Heavy.M_MVM_Meleeing05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing05.mp3" +} + +"Heavy.M_MVM_Meleeing06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing06.mp3" +} + +"Heavy.M_MVM_Meleeing07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing07.mp3" +} + +"Heavy.M_MVM_Meleeing08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Meleeing08.mp3" +} + +"Heavy.M_MVM_Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge01.mp3" +} + +"Heavy.M_MVM_Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge02.mp3" +} + +"Heavy.M_MVM_Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge03.mp3" +} + +"Heavy.M_MVM_Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge04.mp3" +} + +"Heavy.M_MVM_Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge05.mp3" +} + +"Heavy.M_MVM_Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge06.mp3" +} + +"Heavy.M_MVM_Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge07.mp3" +} + +"Heavy.M_MVM_Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge08.mp3" +} + +"Heavy.M_MVM_Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge09.mp3" +} + +"Heavy.M_MVM_Revenge10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge10.mp3" +} + +"Heavy.M_MVM_Revenge11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge11.mp3" +} + +"Heavy.M_MVM_Revenge12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge12.mp3" +} + +"Heavy.M_MVM_Revenge13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge13.mp3" +} + +"Heavy.M_MVM_Revenge14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge14.mp3" +} + +"Heavy.M_MVM_Revenge15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Revenge15.mp3" +} + +"Heavy.M_MVM_Singing01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Singing01.mp3" +} + +"Heavy.M_MVM_Singing02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Singing02.mp3" +} + +"Heavy.M_MVM_Singing03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Singing03.mp3" +} + +"Heavy.M_MVM_Singing04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Singing04.mp3" +} + +"Heavy.M_MVM_Singing05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Singing05.mp3" +} + +"Heavy.M_MVM_Specials01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Specials01.mp3" +} + +"Heavy.M_MVM_Specials02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Specials02.mp3" +} + +"Heavy.M_MVM_Specials03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Specials03.mp3" +} + +"Heavy.M_MVM_Specials04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Specials04.mp3" +} + +"Heavy.M_MVM_Specials05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_Specials05.mp3" +} + +"Heavy.M_MVM_SpecialWeapon04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon04.mp3" +} + +"Heavy.M_MVM_SpecialWeapon01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon01.mp3" +} + +"Heavy.M_MVM_SpecialWeapon02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon02.mp3" +} + +"Heavy.M_MVM_SpecialWeapon03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon03.mp3" +} + +"Heavy.M_MVM_SpecialWeapon05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon05.mp3" +} + +"Heavy.M_MVM_SpecialWeapon06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon06.mp3" +} + +"Heavy.M_MVM_SpecialWeapon07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon07.mp3" +} + +"Heavy.M_MVM_SpecialWeapon08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon08.mp3" +} + +"Heavy.M_MVM_SpecialWeapon09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SpecialWeapon09.mp3" +} + +"Heavy.M_MVM_SandwichEat" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/SandwichEat09.mp3" +} + +"Heavy.M_MVM_SandwichTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt01.mp3" +} + +"Heavy.M_MVM_SandwichTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt02.mp3" +} + +"Heavy.M_MVM_SandwichTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt03.mp3" +} + +"Heavy.M_MVM_SandwichTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt04.mp3" +} + +"Heavy.M_MVM_SandwichTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt05.mp3" +} + +"Heavy.M_MVM_SandwichTaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt06.mp3" +} + +"Heavy.M_MVM_SandwichTaunt07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt07.mp3" +} + +"Heavy.M_MVM_SandwichTaunt08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt08.mp3" +} + +"Heavy.M_MVM_SandwichTaunt09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt09.mp3" +} + +"Heavy.M_MVM_SandwichTaunt10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt10.mp3" +} + +"Heavy.M_MVM_SandwichTaunt11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt11.mp3" +} + +"Heavy.M_MVM_SandwichTaunt12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt12.mp3" +} + +"Heavy.M_MVM_SandwichTaunt13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt13.mp3" +} + +"Heavy.M_MVM_SandwichTaunt14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt14.mp3" +} + +"Heavy.M_MVM_SandwichTaunt15" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt15.mp3" +} + +"Heavy.M_MVM_SandwichTaunt16" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt16.mp3" +} + +"Heavy.M_MVM_SandwichTaunt17" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/heavy_mvm_m_SandwichTaunt17.mp3" +} + + + +//----------------------------------------------------------------------------- +//End of Heavy +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Scout Batch 4 +//----------------------------------------------------------------------------- +"Scout.M_MVM_ApexofJump01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_ApexofJump01.mp3" +} + +"Scout.M_MVM_ApexofJump05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_ApexofJump05.mp3" +} + +"Scout.M_MVM_ApexofJump02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_ApexofJump02.mp3" +} + +"Scout.M_MVM_ApexofJump03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_ApexofJump03.mp3" +} + +"Scout.M_MVM_ApexofJump04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_ApexofJump04.mp3" +} + +"Scout.M_MVM_Award01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award01.mp3" +} + +"Scout.M_MVM_Award02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award02.mp3" +} + +"Scout.M_MVM_Award04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award04.mp3" +} + +"Scout.M_MVM_Award03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award03.mp3" +} + +"Scout.M_MVM_Award05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award05.mp3" +} + +"Scout.M_MVM_Award06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award06.mp3" +} + +"Scout.M_MVM_Award07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award07.mp3" +} + +"Scout.M_MVM_Award08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award08.mp3" +} + +"Scout.M_MVM_Award09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award09.mp3" +} + +"Scout.M_MVM_Award11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award11.mp3" +} + +"Scout.M_MVM_Award12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award12.mp3" +} + +"Scout.M_MVM_Award10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Award10.mp3" +} + +"Scout.M_MVM_BeingShotInvincible04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible04.mp3" +} + +"Scout.M_MVM_BeingShotInvincible07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible07.mp3" +} + +"Scout.M_MVM_BeingShotInvincible02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible02.mp3" +} + +"Scout.M_MVM_BeingShotInvincible01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible01.mp3" +} + +"Scout.M_MVM_BeingShotInvincible08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible08.mp3" +} + +"Scout.M_MVM_BeingShotInvincible09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible09.mp3" +} + +"Scout.M_MVM_BeingShotInvincible03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible03.mp3" +} + +"Scout.M_MVM_BeingShotInvincible10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible10.mp3" +} + +"Scout.M_MVM_BeingShotInvincible06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible06.mp3" +} + +"Scout.M_MVM_BeingShotInvincible05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible05.mp3" +} + +"Scout.M_MVM_BeingShotInvincible11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible11.mp3" +} + +"Scout.M_MVM_BeingShotInvincible12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible12.mp3" +} + +"Scout.M_MVM_BeingShotInvincible13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible13.mp3" +} + +"Scout.M_MVM_BeingShotInvincible14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible14.mp3" +} + +"Scout.M_MVM_BeingShotInvincible15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible15.mp3" +} + +"Scout.M_MVM_BeingShotInvincible16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible16.mp3" +} + +"Scout.M_MVM_BeingShotInvincible17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible17.mp3" +} + +"Scout.M_MVM_BeingShotInvincible18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible18.mp3" +} + +"Scout.M_MVM_BeingShotInvincible19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible19.mp3" +} + +"Scout.M_MVM_BeingShotInvincible20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible20.mp3" +} + +"Scout.M_MVM_BeingShotInvincible21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible21.mp3" +} + +"Scout.M_MVM_BeingShotInvincible22" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible22.mp3" +} + +"Scout.M_MVM_BeingShotInvincible23" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible23.mp3" +} + +"Scout.M_MVM_BeingShotInvincible24" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible24.mp3" +} + +"Scout.M_MVM_BeingShotInvincible25" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible25.mp3" +} + +"Scout.M_MVM_BeingShotInvincible26" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible26.mp3" +} + +"Scout.M_MVM_BeingShotInvincible27" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible27.mp3" +} + +"Scout.M_MVM_BeingShotInvincible28" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible28.mp3" +} + +"Scout.M_MVM_BeingShotInvincible29" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible29.mp3" +} + +"Scout.M_MVM_BeingShotInvincible30" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible30.mp3" +} + +"Scout.M_MVM_BeingShotInvincible31" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible31.mp3" +} + +"Scout.M_MVM_BeingShotInvincible32" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible32.mp3" +} + +"Scout.M_MVM_BeingShotInvincible33" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible33.mp3" +} + +"Scout.M_MVM_BeingShotInvincible34" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible34.mp3" +} + +"Scout.M_MVM_BeingShotInvincible35" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible35.mp3" +} + +"Scout.M_MVM_BeingShotInvincible36" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_BeingShotInvincible36.mp3" +} + +"Scout.M_MVM_CartGoingBackDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackDefense03.mp3" +} + +"Scout.M_MVM_CartGoingBackDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackDefense01.mp3" +} + +"Scout.M_MVM_CartGoingBackDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackDefense02.mp3" +} + +"Scout.M_MVM_CartGoingBackDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackDefense04.mp3" +} + +"Scout.M_MVM_CartGoingBackDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackDefense05.mp3" +} + +"Scout.M_MVM_CartGoingBackDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackDefense06.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense01.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense02.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense03.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense07.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense04.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense08.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense05.mp3" +} + +"Scout.M_MVM_CartGoingBackOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartGoingBackOffense06.mp3" +} + +"Scout.M_MVM_CartMovingForwardDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardDefense01.mp3" +} + +"Scout.M_MVM_CartMovingForwardDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardDefense02.mp3" +} + +"Scout.M_MVM_CartMovingForwardDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardDefense03.mp3" +} + +"Scout.M_MVM_CartMovingForwardDefense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardDefense04.mp3" +} + +"Scout.M_MVM_CartMovingForwardDefense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardDefense05.mp3" +} + +"Scout.M_MVM_CartMovingForwardDefense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardDefense06.mp3" +} + +"Scout.M_MVM_CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardOffense01.mp3" +} + +"Scout.M_MVM_CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardOffense02.mp3" +} + +"Scout.M_MVM_CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardOffense03.mp3" +} + +"Scout.M_MVM_CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardOffense04.mp3" +} + +"Scout.M_MVM_CartMovingForwardOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardOffense06.mp3" +} + +"Scout.M_MVM_CartMovingForwardOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartMovingForwardOffense05.mp3" +} + +"Scout.M_MVM_CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStayCloseOffense01.mp3" +} + +"Scout.M_MVM_CartStayCloseOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStayCloseOffense04.mp3" +} + +"Scout.M_MVM_CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStayCloseOffense02.mp3" +} + +"Scout.M_MVM_CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStayCloseOffense03.mp3" +} + +"Scout.M_MVM_CartStayCloseOffense05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStayCloseOffense05.mp3" +} + +"Scout.M_MVM_CartStayCloseOffense06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStayCloseOffense06.mp3" +} + +"Scout.M_MVM_CartStopItDefense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStopItDefense01.mp3" +} + +"Scout.M_MVM_CartStopItDefense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStopItDefense02.mp3" +} + +"Scout.M_MVM_CartStopItDefense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStopItDefense03.mp3" +} + +"Scout.M_MVM_CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStoppedOffense01.mp3" +} + +"Scout.M_MVM_CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStoppedOffense02.mp3" +} + +"Scout.M_MVM_CartStoppedOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_CartStoppedOffense03.mp3" +} + +"Scout.M_MVM_Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination02.mp3" +} + +"Scout.M_MVM_Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination03.mp3" +} + +"Scout.M_MVM_Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination04.mp3" +} + +"Scout.M_MVM_Domination19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination19.mp3" +} + +"Scout.M_MVM_Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination05.mp3" +} + +"Scout.M_MVM_Domination18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination18.mp3" +} + +"Scout.M_MVM_Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination06.mp3" +} + +"Scout.M_MVM_Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination07.mp3" +} + +"Scout.M_MVM_Domination08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination08.mp3" +} + +"Scout.M_MVM_Domination09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination09.mp3" +} + +"Scout.M_MVM_Domination10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination10.mp3" +} + +"Scout.M_MVM_Domination11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination11.mp3" +} + +"Scout.M_MVM_Domination20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination20.mp3" +} + +"Scout.M_MVM_Domination12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination12.mp3" +} + +"Scout.M_MVM_Domination13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination13.mp3" +} + +"Scout.M_MVM_Domination14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination14.mp3" +} + +"Scout.M_MVM_Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination01.mp3" +} + +"Scout.M_MVM_Domination15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination15.mp3" +} + +"Scout.M_MVM_Domination16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination16.mp3" +} + +"Scout.M_MVM_Domination17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination17.mp3" +} + +"Scout.M_MVM_Domination21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Domination21.mp3" +} + +"Scout.M_MVM_DominationDem01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationDem01.mp3" +} + +"Scout.M_MVM_DominationDem02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationDem02.mp3" +} + +"Scout.M_MVM_DominationDem05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationDem05.mp3" +} + +"Scout.M_MVM_DominationDem03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationDem03.mp3" +} + +"Scout.M_MVM_DominationDem04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationDem04.mp3" +} + +"Scout.M_MVM_DominationEng01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationEng01.mp3" +} + +"Scout.M_MVM_DominationEng02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationEng02.mp3" +} + +"Scout.M_MVM_DominationEng03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationEng03.mp3" +} + +"Scout.M_MVM_DominationEng04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationEng04.mp3" +} + +"Scout.M_MVM_DominationEng05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationEng05.mp3" +} + +"Scout.M_MVM_DominationEng06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationEng06.mp3" +} + +"Scout.M_MVM_DominationHvy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy01.mp3" +} + +"Scout.M_MVM_DominationHvy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy02.mp3" +} + +"Scout.M_MVM_DominationHvy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy03.mp3" +} + +"Scout.M_MVM_DominationHvy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy04.mp3" +} + +"Scout.M_MVM_DominationHvy05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy05.mp3" +} + +"Scout.M_MVM_DominationHvy06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy06.mp3" +} + +"Scout.M_MVM_DominationHvy07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy07.mp3" +} + +"Scout.M_MVM_DominationHvy08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy08.mp3" +} + +"Scout.M_MVM_DominationHvy09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy09.mp3" +} + +"Scout.M_MVM_DominationHvy10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationHvy10.mp3" +} + +"Scout.M_MVM_DominationMed06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationMed06.mp3" +} + +"Scout.M_MVM_DominationMed05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationMed05.mp3" +} + +"Scout.M_MVM_DominationMed01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationMed01.mp3" +} + +"Scout.M_MVM_DominationMed02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationMed02.mp3" +} + +"Scout.M_MVM_DominationMed03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationMed03.mp3" +} + +"Scout.M_MVM_DominationMed04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationMed04.mp3" +} + +"Scout.M_MVM_DominationPyr01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationPyr01.mp3" +} + +"Scout.M_MVM_DominationPyr02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationPyr02.mp3" +} + +"Scout.M_MVM_DominationPyr03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationPyr03.mp3" +} + +"Scout.M_MVM_DominationPyr06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationPyr06.mp3" +} + +"Scout.M_MVM_DominationPyr04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationPyr04.mp3" +} + +"Scout.M_MVM_DominationPyr05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationPyr05.mp3" +} + +"Scout.M_MVM_DominationSct01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSct01.mp3" +} + +"Scout.M_MVM_DominationSct02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSct02.mp3" +} + +"Scout.M_MVM_DominationSct03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSct03.mp3" +} + +"Scout.M_MVM_DominationSnp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSnp01.mp3" +} + +"Scout.M_MVM_DominationSnp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSnp02.mp3" +} + +"Scout.M_MVM_DominationSnp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSnp03.mp3" +} + +"Scout.M_MVM_DominationSnp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSnp04.mp3" +} + +"Scout.M_MVM_DominationSnp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSnp05.mp3" +} + +"Scout.M_MVM_DominationSol01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSol01.mp3" +} + +"Scout.M_MVM_DominationSol02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSol02.mp3" +} + +"Scout.M_MVM_DominationSol03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSol03.mp3" +} + +"Scout.M_MVM_DominationSol04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSol04.mp3" +} + +"Scout.M_MVM_DominationSol05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSol05.mp3" +} + +"Scout.M_MVM_DominationSol06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSol06.mp3" +} + +"Scout.M_MVM_DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSpy01.mp3" +} + +"Scout.M_MVM_DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSpy02.mp3" +} + +"Scout.M_MVM_DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSpy03.mp3" +} + +"Scout.M_MVM_DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_DominationSpy04.mp3" +} + +"Scout.M_MVM_FightOnCap01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_FightOnCap01.mp3" +} + +"Scout.M_MVM_FightOnCap02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_FightOnCap02.mp3" +} + +"Scout.M_MVM_FightOnCap03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_FightOnCap03.mp3" +} + +"Scout.M_MVM_FightOnCap04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_FightOnCap04.mp3" +} + +"Scout.M_MVM_Invincible01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Invincible01.mp3" +} + +"Scout.M_MVM_Invincible02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Invincible02.mp3" +} + +"Scout.M_MVM_Invincible04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Invincible04.mp3" +} + +"Scout.M_MVM_Invincible03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Invincible03.mp3" +} + +"Scout.M_MVM_InvincibleChgUnderFire01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleChgUnderFire01.mp3" +} + +"Scout.M_MVM_InvincibleChgUnderFire02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleChgUnderFire02.mp3" +} + +"Scout.M_MVM_InvincibleChgUnderFire04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleChgUnderFire04.mp3" +} + +"Scout.M_MVM_InvincibleChgUnderFire03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleChgUnderFire03.mp3" +} + +"Scout.M_MVM_InvincibleNotReady01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady01.mp3" +} + +"Scout.M_MVM_InvincibleNotReady02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady02.mp3" +} + +"Scout.M_MVM_InvincibleNotReady03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady03.mp3" +} + +"Scout.M_MVM_InvincibleNotReady04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady04.mp3" +} + +"Scout.M_MVM_InvincibleNotReady05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady05.mp3" +} + +"Scout.M_MVM_InvincibleNotReady06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady06.mp3" +} + +"Scout.M_MVM_InvincibleNotReady07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_InvincibleNotReady07.mp3" +} + +"Scout.M_MVM_MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MedicFollow01.mp3" +} + +"Scout.M_MVM_MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MedicFollow02.mp3" +} + +"Scout.M_MVM_MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MedicFollow03.mp3" +} + +"Scout.M_MVM_MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MedicFollow04.mp3" +} + +"Scout.M_MVM_MeleeDare01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MeleeDare01.mp3" +} + +"Scout.M_MVM_MeleeDare02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MeleeDare02.mp3" +} + +"Scout.M_MVM_MeleeDare06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MeleeDare06.mp3" +} + +"Scout.M_MVM_MeleeDare03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MeleeDare03.mp3" +} + +"Scout.M_MVM_MeleeDare04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MeleeDare04.mp3" +} + +"Scout.M_MVM_MeleeDare05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_MeleeDare05.mp3" +} + +"Scout.M_MVM_Misc01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc01.mp3" +} + +"Scout.M_MVM_Misc02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc02.mp3" +} + +"Scout.M_MVM_Misc03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc03.mp3" +} + +"Scout.M_MVM_Misc04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc04.mp3" +} + +"Scout.M_MVM_Misc05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc05.mp3" +} + +"Scout.M_MVM_Misc06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc06.mp3" +} + +"Scout.M_MVM_Misc07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc07.mp3" +} + +"Scout.M_MVM_Misc08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc08.mp3" +} + +"Scout.M_MVM_Misc09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Misc09.mp3" +} + +"Scout.M_MVM_Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge01.mp3" +} + +"Scout.M_MVM_Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge02.mp3" +} + +"Scout.M_MVM_Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge03.mp3" +} + +"Scout.M_MVM_Revenge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge04.mp3" +} + +"Scout.M_MVM_Revenge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge05.mp3" +} + +"Scout.M_MVM_Revenge06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge06.mp3" +} + +"Scout.M_MVM_Revenge07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge07.mp3" +} + +"Scout.M_MVM_Revenge08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge08.mp3" +} + +"Scout.M_MVM_Revenge09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_Revenge09.mp3" +} + +"Scout.M_MVM_StunBallHit02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit02.mp3" +} + +"Scout.M_MVM_StunBallHit03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit03.mp3" +} + +"Scout.M_MVM_StunBallHit04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit04.mp3" +} + +"Scout.M_MVM_StunBallHit05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit05.mp3" +} + +"Scout.M_MVM_StunBallHit06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit06.mp3" +} + +"Scout.M_MVM_StunBallHit07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit07.mp3" +} + +"Scout.M_MVM_StunBallHit08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit08.mp3" +} + +"Scout.M_MVM_StunBallHit09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit09.mp3" +} + +"Scout.M_MVM_StunBallHit10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit10.mp3" +} + +"Scout.M_MVM_StunBallHit15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit15.mp3" +} + +"Scout.M_MVM_StunBallHit11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit11.mp3" +} + +"Scout.M_MVM_StunBallHit16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit16.mp3" +} + +"Scout.M_MVM_StunBallHit12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit12.mp3" +} + +"Scout.M_MVM_StunBallHit13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit13.mp3" +} + +"Scout.M_MVM_StunBallHit14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit14.mp3" +} + +"Scout.M_MVM_StunBallHit01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHit01.mp3" +} + +"Scout.M_MVM_StunBallHittingIt02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHittingIt02.mp3" +} + +"Scout.M_MVM_StunBallHittingIt01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHittingIt01.mp3" +} + +"Scout.M_MVM_StunBallHittingIt04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHittingIt04.mp3" +} + +"Scout.M_MVM_StunBallHittingIt03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHittingIt03.mp3" +} + +"Scout.M_MVM_StunBallHittingIt05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallHittingIt05.mp3" +} + +"Scout.M_MVM_StunBallPickUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallPickUp01.mp3" +} + +"Scout.M_MVM_StunBallPickUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallPickUp02.mp3" +} + +"Scout.M_MVM_StunBallPickUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallPickUp03.mp3" +} + +"Scout.M_MVM_StunBallPickUp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallPickUp04.mp3" +} + +"Scout.M_MVM_StunBallPickUp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_StunBallPickUp05.mp3" +} + +"Scout.M_MVM_TripleJump01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_TripleJump01.mp3" +} + +"Scout.M_MVM_TripleJump03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_TripleJump03.mp3" +} + +"Scout.M_MVM_TripleJump02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_TripleJump02.mp3" +} + +"Scout.M_MVM_TripleJump04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/scout_mvm_m_TripleJump04.mp3" +} + +//----------------------------------------------------------------------------- +//End of Scout Batch 4 +//----------------------------------------------------------------------------- + + + +//----------------------------------------------------------------------------- +//Spy batch 6 +//----------------------------------------------------------------------------- + +// "Spy.MVM_DominationDemoMan01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan01.mp3" +// } + +// "Spy.MVM_DominationDemoMan02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan02.mp3" +// } + +// "Spy.MVM_DominationDemoMan03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan03.mp3" +// } + +// "Spy.MVM_DominationDemoMan04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan04.mp3" +// } + +// "Spy.MVM_DominationDemoMan05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan05.mp3" +// } + +// "Spy.MVM_DominationDemoMan06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan06.mp3" +// } + +// "Spy.MVM_DominationDemoMan07" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationDemoMan07.mp3" +// } + +// "Spy.MVM_DominationEngineer01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationEngineer01.mp3" +// } + +// "Spy.MVM_DominationEngineer02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationEngineer02.mp3" +// } + +// "Spy.MVM_DominationEngineer03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationEngineer03.mp3" +// } + +// "Spy.MVM_DominationEngineer04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationEngineer04.mp3" +// } + +// "Spy.MVM_DominationEngineer05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationEngineer05.mp3" +// } + +// "Spy.MVM_DominationEngineer06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationEngineer06.mp3" +// } + +// "Spy.MVM_DominationHeavy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy01.mp3" +// } + +// "Spy.MVM_DominationHeavy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy02.mp3" +// } + +// "Spy.MVM_DominationHeavy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy03.mp3" +// } + +// "Spy.MVM_DominationHeavy04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy04.mp3" +// } + +// "Spy.MVM_DominationHeavy05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy05.mp3" +// } + +// "Spy.MVM_DominationHeavy06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy06.mp3" +// } + +// "Spy.MVM_DominationHeavy07" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy07.mp3" +// } + +// "Spy.MVM_DominationHeavy08" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationHeavy08.mp3" +// } + +// "Spy.MVM_DominationMedic01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationMedic01.mp3" +// } + +// "Spy.MVM_DominationMedic02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationMedic02.mp3" +// } + +// "Spy.MVM_DominationMedic03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationMedic03.mp3" +// } + +// "Spy.MVM_DominationMedic04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationMedic04.mp3" +// } + +// "Spy.MVM_DominationMedic05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationMedic05.mp3" +// } + +// "Spy.MVM_DominationMedic06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationMedic06.mp3" +// } + +// "Spy.MVM_DominationPyro01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationPyro01.mp3" +// } + +// "Spy.MVM_DominationPyro02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationPyro02.mp3" +// } + +// "Spy.MVM_DominationPyro03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationPyro03.mp3" +// } + +// "Spy.MVM_DominationPyro04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationPyro04.mp3" +// } + +// "Spy.MVM_DominationPyro05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationPyro05.mp3" +// } + +// "Spy.MVM_DominationScout01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout01.mp3" +// } + +// "Spy.MVM_DominationScout02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout02.mp3" +// } + +// "Spy.MVM_DominationScout03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout03.mp3" +// } + +// "Spy.MVM_DominationScout04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout04.mp3" +// } + +// "Spy.MVM_DominationScout05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout05.mp3" +// } + +// "Spy.MVM_DominationScout06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout06.mp3" +// } + +// "Spy.MVM_DominationScout07" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout07.mp3" +// } + +// "Spy.MVM_DominationScout08" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationScout08.mp3" +// } + +// "Spy.MVM_DominationSniper01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper01.mp3" +// } + +// "Spy.MVM_DominationSniper02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper02.mp3" +// } + +// "Spy.MVM_DominationSniper03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper03.mp3" +// } + +// "Spy.MVM_DominationSniper04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper04.mp3" +// } + +// "Spy.MVM_DominationSniper05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper05.mp3" +// } + +// "Spy.MVM_DominationSniper06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper06.mp3" +// } + +// "Spy.MVM_DominationSniper07" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSniper07.mp3" +// } + +// "Spy.MVM_DominationSoldier01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSoldier01.mp3" +// } + +// "Spy.MVM_DominationSoldier02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSoldier02.mp3" +// } + +// "Spy.MVM_DominationSoldier03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSoldier03.mp3" +// } + +// "Spy.MVM_DominationSoldier04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSoldier04.mp3" +// } + +// "Spy.MVM_DominationSoldier05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSoldier05.mp3" +// } + +// "Spy.MVM_DominationSpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSpy01.mp3" +// } + +// "Spy.MVM_DominationSpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSpy02.mp3" +// } + +// "Spy.MVM_DominationSpy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSpy03.mp3" +// } + +// "Spy.MVM_DominationSpy04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSpy04.mp3" +// } + +// "Spy.MVM_DominationSpy05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_DominationSpy05.mp3" +// } + +// "Spy.MVM_JarateHit01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_JarateHit01.mp3" +// } + +// "Spy.MVM_JarateHit02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_JarateHit02.mp3" +// } + +// "Spy.MVM_JarateHit03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_JarateHit03.mp3" +// } + +// "Spy.MVM_JarateHit04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_JarateHit04.mp3" +// } + +// "Spy.MVM_JarateHit05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_JarateHit05.mp3" +// } + +// "Spy.MVM_JarateHit06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_JarateHit06.mp3" +// } + +// "Spy.MVM_MedicFollow01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_MedicFollow01.mp3" +// } + +// "Spy.MVM_MedicFollow02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_MedicFollow02.mp3" +// } + +// "Spy.MVM_MeleeDare01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_MeleeDare01.mp3" +// } + +// "Spy.MVM_MeleeDare02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_MeleeDare02.mp3" +// } + +// "Spy.MVM_Revenge01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_Revenge01.mp3" +// } + +// "Spy.MVM_Revenge02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_Revenge02.mp3" +// } + +// "Spy.MVM_Revenge03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/spy_mvm_Revenge03.mp3" +// } + +//----------------------------------------------------------------------------- +//End of Spy batch 6 +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +//Sniper BATCH 7 +//----------------------------------------------------------------------------- + +// "Sniper.M_MVM_DominationDemoMan01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationDemoMan01.mp3" +// } + +// "Sniper.M_MVM_DominationDemoMan02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationDemoMan02.mp3" +// } + +// "Sniper.M_MVM_DominationDemoMan03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationDemoMan03.mp3" +// } + +// "Sniper.M_MVM_DominationDemoMan04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationDemoMan04.mp3" +// } + +// "Sniper.M_MVM_DominationDemoMan05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationDemoMan05.mp3" +// } + +// "Sniper.M_MVM_DominationEngineer01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationEngineer01.mp3" +// } + +// "Sniper.M_MVM_DominationEngineer02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationEngineer02.mp3" +// } + +// "Sniper.M_MVM_DominationEngineer03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationEngineer03.mp3" +// } + +// "Sniper.M_MVM_DominationEngineer04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationEngineer04.mp3" +// } + +// "Sniper.M_MVM_DominationEngineer05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationEngineer05.mp3" +// } + +// "Sniper.M_MVM_DominationEngineer06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationEngineer06.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy01.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy02.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy03.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy04.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy05.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy06.mp3" +// } + +// "Sniper.M_MVM_DominationHeavy07" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationHeavy07.mp3" +// } + +// "Sniper.M_MVM_DominationMedic01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationMedic01.mp3" +// } + +// "Sniper.M_MVM_DominationMedic02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationMedic02.mp3" +// } + +// "Sniper.M_MVM_DominationMedic03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationMedic03.mp3" +// } + +// "Sniper.M_MVM_DominationMedic04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationMedic04.mp3" +// } + +// "Sniper.M_MVM_DominationMedic05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationMedic05.mp3" +// } + +// "Sniper.M_MVM_DominationPyro01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationPyro01.mp3" +// } + +// "Sniper.M_MVM_DominationPyro02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationPyro02.mp3" +// } + +// "Sniper.M_MVM_DominationPyro03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationPyro03.mp3" +// } + +// "Sniper.M_MVM_DominationPyro04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationPyro04.mp3" +// } + +// "Sniper.M_MVM_DominationPyro05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationPyro05.mp3" +// } + +// "Sniper.M_MVM_DominationScout01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationScout01.mp3" +// } + +// "Sniper.M_MVM_DominationScout02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationScout02.mp3" +// } + +// "Sniper.M_MVM_DominationScout03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationScout03.mp3" +// } + +// "Sniper.M_MVM_DominationScout04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationScout04.mp3" +// } + +// "Sniper.M_MVM_DominationScout05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationScout05.mp3" +// } + +// "Sniper.M_MVM_DominationSniper18" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSniper18.mp3" +// } + +// "Sniper.M_MVM_DominationSniper19" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSniper19.mp3" +// } + +// "Sniper.M_MVM_DominationSniper20" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSniper20.mp3" +// } + +// "Sniper.M_MVM_DominationSniper21" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSniper21.mp3" +// } + +// "Sniper.M_MVM_DominationSniper22" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSniper22.mp3" +// } + +// "Sniper.M_MVM_DominationSoldier01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSoldier01.mp3" +// } + +// "Sniper.M_MVM_DominationSoldier02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSoldier02.mp3" +// } + +// "Sniper.M_MVM_DominationSoldier03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSoldier03.mp3" +// } + +// "Sniper.M_MVM_DominationSoldier04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSoldier04.mp3" +// } + +// "Sniper.M_MVM_DominationSoldier05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSoldier05.mp3" +// } + +// "Sniper.M_MVM_DominationSoldier06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSoldier06.mp3" +// } + +// "Sniper.M_MVM_DominationSpy01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy01.mp3" +// } + +// "Sniper.M_MVM_DominationSpy02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy02.mp3" +// } + +// "Sniper.M_MVM_DominationSpy03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy03.mp3" +// } + +// "Sniper.M_MVM_DominationSpy04" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy04.mp3" +// } + +// "Sniper.M_MVM_DominationSpy05" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy05.mp3" +// } + +// "Sniper.M_MVM_DominationSpy06" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy06.mp3" +// } + +// "Sniper.M_MVM_DominationSpy07" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_DominationSpy07.mp3" +// } + +// "Sniper.M_MVM_JarateToss01" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_JarateToss01.mp3" +// } + +// "Sniper.M_MVM_JarateToss02" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_JarateToss02.mp3" +// } + +// "Sniper.M_MVM_JarateToss03" +// { + // "channel" "CHAN_VOICE" + // "volume" "1.000" + // "pitch" "PITCH_NORM" + // "soundlevel" "SNDLVL_95dB" + // "wave" "vo/mvm/mght/sniper_mvm_m_JarateToss03.mp3" +// } + +//----------------------------------------------------------------------------- +//End of Sniper BATCH 7 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Soldier BATCH 9 +//----------------------------------------------------------------------------- + +"Soldier.M_MVM_DirectHitTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DirectHitTaunt01.mp3" +} + +"Soldier.M_MVM_DirectHitTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DirectHitTaunt02.mp3" +} + +"Soldier.M_MVM_DirectHitTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DirectHitTaunt03.mp3" +} + +"Soldier.M_MVM_DirectHitTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DirectHitTaunt04.mp3" +} + +"Soldier.M_MVM_DominationDemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemoman01.mp3" +} + +"Soldier.M_MVM_DominationDemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemoman02.mp3" +} + +"Soldier.M_MVM_DominationDemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemoman03.mp3" +} + +"Soldier.M_MVM_DominationDemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemoman04.mp3" +} + +"Soldier.M_MVM_DominationDemoman05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemoman05.mp3" +} + +"Soldier.M_MVM_DominationDemoman06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemoman06.mp3" +} + +"Soldier.M_MVM_DominationDemonmanUpdate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemonmanUpdate01.mp3" +} + +"Soldier.M_MVM_DominationDemonmanUpdate02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemonmanUpdate02.mp3" +} + +"Soldier.M_MVM_DominationDemonmanUpdate03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemonmanUpdate03.mp3" +} + +"Soldier.M_MVM_DominationDemonmanUpdate04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemonmanUpdate04.mp3" +} + +"Soldier.M_MVM_DominationDemonmanUpdate05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationDemonmanUpdate05.mp3" +} + +"Soldier.M_MVM_DominationEngineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationEngineer01.mp3" +} + +"Soldier.M_MVM_DominationEngineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationEngineer02.mp3" +} + +"Soldier.M_MVM_DominationEngineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationEngineer03.mp3" +} + +"Soldier.M_MVM_DominationEngineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationEngineer04.mp3" +} + +"Soldier.M_MVM_DominationEngineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationEngineer05.mp3" +} + +"Soldier.M_MVM_DominationEngineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationEngineer06.mp3" +} + +"Soldier.M_MVM_DominationHeavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy01.mp3" +} + +"Soldier.M_MVM_DominationHeavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy02.mp3" +} + +"Soldier.M_MVM_DominationHeavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy03.mp3" +} + +"Soldier.M_MVM_DominationHeavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy04.mp3" +} + +"Soldier.M_MVM_DominationHeavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy05.mp3" +} + +"Soldier.M_MVM_DominationHeavy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy06.mp3" +} + +"Soldier.M_MVM_DominationHeavy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationHeavy07.mp3" +} + +"Soldier.M_MVM_DominationMedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic01.mp3" +} + +"Soldier.M_MVM_DominationMedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic02.mp3" +} + +"Soldier.M_MVM_DominationMedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic03.mp3" +} + +"Soldier.M_MVM_DominationMedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic04.mp3" +} + +"Soldier.M_MVM_DominationMedic05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic05.mp3" +} + +"Soldier.M_MVM_DominationMedic06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic06.mp3" +} + +"Soldier.M_MVM_DominationMedic07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationMedic07.mp3" +} + +"Soldier.M_MVM_DominationPyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro01.mp3" +} + +"Soldier.M_MVM_DominationPyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro02.mp3" +} + +"Soldier.M_MVM_DominationPyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro03.mp3" +} + +"Soldier.M_MVM_DominationPyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro04.mp3" +} + +"Soldier.M_MVM_DominationPyro05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro05.mp3" +} + +"Soldier.M_MVM_DominationPyro06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro06.mp3" +} + +"Soldier.M_MVM_DominationPyro07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro07.mp3" +} + +"Soldier.M_MVM_DominationPyro08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro08.mp3" +} + +"Soldier.M_MVM_DominationPyro09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationPyro09.mp3" +} + +"Soldier.M_MVM_DominationScout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout01.mp3" +} + +"Soldier.M_MVM_DominationScout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout02.mp3" +} + +"Soldier.M_MVM_DominationScout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout03.mp3" +} + +"Soldier.M_MVM_DominationScout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout04.mp3" +} + +"Soldier.M_MVM_DominationScout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout05.mp3" +} + +"Soldier.M_MVM_DominationScout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout06.mp3" +} + +"Soldier.M_MVM_DominationScout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout07.mp3" +} + +"Soldier.M_MVM_DominationScout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout08.mp3" +} + +"Soldier.M_MVM_DominationScout09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout09.mp3" +} + +"Soldier.M_MVM_DominationScout10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout10.mp3" +} + +"Soldier.M_MVM_DominationScout11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationScout11.mp3" +} + +"Soldier.M_MVM_DominationSniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper01.mp3" +} + +"Soldier.M_MVM_DominationSniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper02.mp3" +} + +"Soldier.M_MVM_DominationSniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper03.mp3" +} + +"Soldier.M_MVM_DominationSniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper04.mp3" +} + +"Soldier.M_MVM_DominationSniper05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper05.mp3" +} + +"Soldier.M_MVM_DominationSniper06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper06.mp3" +} + +"Soldier.M_MVM_DominationSniper07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper07.mp3" +} + +"Soldier.M_MVM_DominationSniper08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper08.mp3" +} + +"Soldier.M_MVM_DominationSniper09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper09.mp3" +} + +"Soldier.M_MVM_DominationSniper10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper10.mp3" +} + +"Soldier.M_MVM_DominationSniper11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper11.mp3" +} + +"Soldier.M_MVM_DominationSniper12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper12.mp3" +} + +"Soldier.M_MVM_DominationSniper13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper13.mp3" +} + +"Soldier.M_MVM_DominationSniper14" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSniper14.mp3" +} + +"Soldier.M_MVM_DominationSoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSoldier01.mp3" +} + +"Soldier.M_MVM_DominationSoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSoldier02.mp3" +} + +"Soldier.M_MVM_DominationSoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSoldier03.mp3" +} + +"Soldier.M_MVM_DominationSoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSoldier04.mp3" +} + +"Soldier.M_MVM_DominationSoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSoldier05.mp3" +} + +"Soldier.M_MVM_DominationSoldier06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSoldier06.mp3" +} + +"Soldier.M_MVM_DominationSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy01.mp3" +} + +"Soldier.M_MVM_DominationSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy02.mp3" +} + +"Soldier.M_MVM_DominationSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy03.mp3" +} + +"Soldier.M_MVM_DominationSpy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy04.mp3" +} + +"Soldier.M_MVM_DominationSpy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy05.mp3" +} + +"Soldier.M_MVM_DominationSpy06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy06.mp3" +} + +"Soldier.M_MVM_DominationSpy07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy07.mp3" +} + +"Soldier.M_MVM_DominationSpy08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_DominationSpy08.mp3" +} + +"Soldier.M_MVM_HatOverHeartTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_HatOverHeartTaunt01.mp3" +} + +"Soldier.M_MVM_HatOverHeartTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_HatOverHeartTaunt02.mp3" +} + +"Soldier.M_MVM_HatOverHeartTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_HatOverHeartTaunt03.mp3" +} + +"Soldier.M_MVM_HatOverHeartTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_HatOverHeartTaunt04.mp3" +} + +"Soldier.M_MVM_HatOverHeartTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_HatOverHeartTaunt05.mp3" +} + +"Soldier.M_MVM_HatOverHeartTaunt06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_HatOverHeartTaunt06.mp3" +} + +"Soldier.M_MVM_KaBoomAlts01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_KaBoomAlts01.mp3" +} + +"Soldier.M_MVM_KaBoomAlts02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_KaBoomAlts02.mp3" +} + +"Soldier.M_MVM_KaBoomAlts03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_KaBoomAlts03.mp3" +} + +"Soldier.M_MVM_PickAxeTaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_PickAxeTaunt01.mp3" +} + +"Soldier.M_MVM_PickAxeTaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_PickAxeTaunt02.mp3" +} + +"Soldier.M_MVM_PickAxeTaunt03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_PickAxeTaunt03.mp3" +} + +"Soldier.M_MVM_PickAxeTaunt04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_PickAxeTaunt04.mp3" +} + +"Soldier.M_MVM_PickAxeTaunt05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_PickAxeTaunt05.mp3" +} + +//----------------------------------------------------------------------------- +//End of Soldier BATCH 9 +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Demoman BATCH 10 +//----------------------------------------------------------------------------- + +"Demoman.M_MVM_dominationdemoman01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationdemoman01.mp3" +} + +"Demoman.M_MVM_dominationdemoman02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationdemoman02.mp3" +} + +"Demoman.M_MVM_dominationdemoman03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationdemoman03.mp3" +} + +"Demoman.M_MVM_dominationdemoman04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationdemoman04.mp3" +} + +"Demoman.M_MVM_dominationengineer01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationengineer01.mp3" +} + +"Demoman.M_MVM_dominationengineer02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationengineer02.mp3" +} + +"Demoman.M_MVM_dominationengineer03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationengineer03.mp3" +} + +"Demoman.M_MVM_dominationengineer04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationengineer04.mp3" +} + +"Demoman.M_MVM_dominationengineer05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationengineer05.mp3" +} + +"Demoman.M_MVM_dominationengineer06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationengineer06.mp3" +} + +"Demoman.M_MVM_dominationheavy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationheavy01.mp3" +} + +"Demoman.M_MVM_dominationheavy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationheavy02.mp3" +} + +"Demoman.M_MVM_dominationheavy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationheavy03.mp3" +} + +"Demoman.M_MVM_dominationheavy04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationheavy04.mp3" +} + +"Demoman.M_MVM_dominationheavy05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationheavy05.mp3" +} + +"Demoman.M_MVM_dominationmedic01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationmedic01.mp3" +} + +"Demoman.M_MVM_dominationmedic02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationmedic02.mp3" +} + +"Demoman.M_MVM_dominationmedic03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationmedic03.mp3" +} + +"Demoman.M_MVM_dominationmedic04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationmedic04.mp3" +} + +"Demoman.M_MVM_dominationpyro01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationpyro01.mp3" +} + +"Demoman.M_MVM_dominationpyro02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationpyro02.mp3" +} + +"Demoman.M_MVM_dominationpyro03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationpyro03.mp3" +} + +"Demoman.M_MVM_dominationpyro04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationpyro04.mp3" +} + +"Demoman.M_MVM_dominationscout01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout01.mp3" +} + +"Demoman.M_MVM_dominationscout02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout02.mp3" +} + +"Demoman.M_MVM_dominationscout03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout03.mp3" +} + +"Demoman.M_MVM_dominationscout04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout04.mp3" +} + +"Demoman.M_MVM_dominationscout05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout05.mp3" +} + +"Demoman.M_MVM_dominationscout06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout06.mp3" +} + +"Demoman.M_MVM_dominationscout07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout07.mp3" +} + +"Demoman.M_MVM_dominationscout08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationscout08.mp3" +} + +"Demoman.M_MVM_dominationsniper01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsniper01.mp3" +} + +"Demoman.M_MVM_dominationsniper02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsniper02.mp3" +} + +"Demoman.M_MVM_dominationsniper03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsniper03.mp3" +} + +"Demoman.M_MVM_dominationsniper04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsniper04.mp3" +} + +"Demoman.M_MVM_dominationsoldier01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldier01.mp3" +} + +"Demoman.M_MVM_dominationsoldier02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldier02.mp3" +} + +"Demoman.M_MVM_dominationsoldier03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldier03.mp3" +} + +"Demoman.M_MVM_dominationsoldier04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldier04.mp3" +} + +"Demoman.M_MVM_dominationsoldier05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldier05.mp3" +} + +"Demoman.M_MVM_dominationsoldierupdate01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldierupdate01.mp3" +} + +"Demoman.M_MVM_dominationsoldierupdate02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldierupdate02.mp3" +} + +"Demoman.M_MVM_dominationsoldierupdate03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldierupdate03.mp3" +} + +"Demoman.M_MVM_dominationsoldierupdate04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldierupdate04.mp3" +} + +"Demoman.M_MVM_dominationsoldierupdate05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldierupdate05.mp3" +} + +"Demoman.M_MVM_dominationsoldierupdate06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationsoldierupdate06.mp3" +} + +"Demoman.M_MVM_dominationspy01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationspy01.mp3" +} + +"Demoman.M_MVM_dominationspy02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationspy02.mp3" +} + +"Demoman.M_MVM_dominationspy03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_dominationspy03.mp3" +} + +"Demoman.M_MVM_eyelandertaunt01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_eyelandertaunt01.mp3" +} + +"Demoman.M_MVM_eyelandertaunt02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_eyelandertaunt02.mp3" +} + +"Demoman.M_MVM_gibberish01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish01.mp3" +} + +"Demoman.M_MVM_gibberish02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish02.mp3" +} + +"Demoman.M_MVM_gibberish03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish03.mp3" +} + +"Demoman.M_MVM_gibberish04" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish04.mp3" +} + +"Demoman.M_MVM_gibberish05" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish05.mp3" +} + +"Demoman.M_MVM_gibberish06" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish06.mp3" +} + +"Demoman.M_MVM_gibberish07" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish07.mp3" +} + +"Demoman.M_MVM_gibberish08" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish08.mp3" +} + +"Demoman.M_MVM_gibberish09" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish09.mp3" +} + +"Demoman.M_MVM_gibberish10" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish10.mp3" +} + +"Demoman.M_MVM_gibberish11" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish11.mp3" +} + +"Demoman.M_MVM_gibberish12" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish12.mp3" +} + +"Demoman.M_MVM_gibberish13" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/demoman_mvm_m_gibberish13.mp3" +} + +// ----------------------------------------------------------------------------- +// End of Demoman BATCH 10 +// ----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +//Soldier Robot +//----------------------------------------------------------------------------- + +"Soldier.M_MVM_Robot01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot01.mp3" +} + +"Soldier.M_MVM_Robot02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot02.mp3" +} + +"Soldier.M_MVM_Robot03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot03.mp3" +} + +"Soldier.M_MVM_Robot04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot04.mp3" +} + +"Soldier.M_MVM_Robot05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot05.mp3" +} + +"Soldier.M_MVM_Robot06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot06.mp3" +} + +"Soldier.M_MVM_Robot07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot07.mp3" +} + +"Soldier.M_MVM_Robot08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot08.mp3" +} + +"Soldier.M_MVM_Robot09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot09.mp3" +} + +"Soldier.M_MVM_Robot10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot10.mp3" +} + +"Soldier.M_MVM_Robot11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot11.mp3" +} + +"Soldier.M_MVM_Robot12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot12.mp3" +} + +"Soldier.M_MVM_Robot13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot13.mp3" +} + +"Soldier.M_MVM_Robot14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot14.mp3" +} + +"Soldier.M_MVM_Robot15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot15.mp3" +} + +"Soldier.M_MVM_Robot16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot16.mp3" +} + +"Soldier.M_MVM_Robot17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot17.mp3" +} + +"Soldier.M_MVM_Robot18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot18.mp3" +} + +"Soldier.M_MVM_Robot19" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot19.mp3" +} + +"Soldier.M_MVM_Robot20" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot20.mp3" +} + +"Soldier.M_MVM_Robot21" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot21.mp3" +} + +"Soldier.M_MVM_Robot22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot22.mp3" +} + +"Soldier.M_MVM_Robot23" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot23.mp3" +} + +"Soldier.M_MVM_Robot24" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot24.mp3" +} + +"Soldier.M_MVM_Robot25" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot25.mp3" +} + +"Soldier.M_MVM_Robot26" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot26.mp3" +} + +"Soldier.M_MVM_Robot27" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot27.mp3" +} + +"Soldier.M_MVM_Robot28" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot28.mp3" +} + +"Soldier.M_MVM_Robot29" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/mvm/mght/soldier_mvm_m_robot29.mp3" +} diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_pauling.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_pauling.lua new file mode 100644 index 000000000..b9330072b --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_pauling.lua @@ -0,0 +1,2113 @@ +"plng_give_contract_demo" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_demo_05.mp3" + "wave" "vo/pauling/plng_give_contract_demo_06.mp3" + "wave" "vo/pauling/plng_give_contract_demo_07.mp3" + "wave" "vo/pauling/plng_give_contract_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_02.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_03.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_04.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_08.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_09.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_10.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_11.mp3" + "wave" "vo/pauling/plng_give_contract_rare_demo_12.mp3" + } +} + +"plng_give_contract_engie" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_01.mp3" + "wave" "vo/pauling/plng_give_contract_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_engie_09.mp3" + "wave" "vo/pauling/plng_give_contract_engie_10.mp3" + "wave" "vo/pauling/plng_give_contract_engie_11.mp3" + "wave" "vo/pauling/plng_give_contract_engie_12.mp3" + "wave" "vo/pauling/plng_give_contract_engie_13.mp3" + "wave" "vo/pauling/plng_give_contract_engie_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_02.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_03.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_04.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_07.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_08.mp3" + "wave" "vo/pauling/plng_give_contract_rare_engie_09.mp3" + } +} + +"plng_give_contract_heavy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_02.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_03.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_04.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_05.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_06.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_07.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_08.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_09.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_10.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_11.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_12.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_13.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_14.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_15.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_16.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_17.mp3" + "wave" "vo/pauling/plng_give_contract_heavy_18.mp3" + "wave" "vo/pauling/plng_give_contract_rare_heavy_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_heavy_02.mp3" + } +} + +"plng_give_contract_medic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_medic_02.mp3" + "wave" "vo/pauling/plng_give_contract_medic_03.mp3" + "wave" "vo/pauling/plng_give_contract_medic_04.mp3" + "wave" "vo/pauling/plng_give_contract_medic_05.mp3" + "wave" "vo/pauling/plng_give_contract_medic_06.mp3" + "wave" "vo/pauling/plng_give_contract_medic_07.mp3" + "wave" "vo/pauling/plng_give_contract_medic_08.mp3" + "wave" "vo/pauling/plng_give_contract_medic_09.mp3" + "wave" "vo/pauling/plng_give_contract_medic_10.mp3" + "wave" "vo/pauling/plng_give_contract_medic_11.mp3" + "wave" "vo/pauling/plng_give_contract_medic_12.mp3" + "wave" "vo/pauling/plng_give_contract_medic_13.mp3" + "wave" "vo/pauling/plng_give_contract_medic_14.mp3" + "wave" "vo/pauling/plng_give_contract_rare_medic_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_medic_02.mp3" + + } +} + +"plng_give_contract_pyro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_04.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_05.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_06.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_07.mp3" + "wave" "vo/pauling/plng_give_contract_pyro_08.mp3" + "wave" "vo/pauling/plng_give_contract_rare_pyro_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_pyro_02.mp3" + "wave" "vo/pauling/plng_give_contract_rare_pyro_03.mp3" + "wave" "vo/pauling/plng_give_contract_rare_pyro_04.mp3" + } +} + +"plng_give_contract_scout" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_scout_07.mp3" + "wave" "vo/pauling/plng_give_contract_scout_08.mp3" + "wave" "vo/pauling/plng_give_contract_scout_09.mp3" + "wave" "vo/pauling/plng_give_contract_scout_10.mp3" + "wave" "vo/pauling/plng_give_contract_scout_11.mp3" + "wave" "vo/pauling/plng_give_contract_scout_12.mp3" + "wave" "vo/pauling/plng_give_contract_scout_13.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_02.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_03.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_04.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_05.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_06.mp3" + "wave" "vo/pauling/plng_give_contract_rare_scout_07.mp3" + } +} + +"plng_give_contract_sniper" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_02.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_03.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_04.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_05.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_06.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_07.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_08.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_09.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_10.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_11.mp3" + "wave" "vo/pauling/plng_give_contract_sniper_12.mp3" + "wave" "vo/pauling/plng_give_contract_rare_sniper_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_sniper_02.mp3" + } +} + +"plng_give_contract_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_05.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_06.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_07.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_08.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_09.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_10.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_11.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_12.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_13.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_14.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_15.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_16.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_17.mp3" + "wave" "vo/pauling/plng_give_contract_soldier_18.mp3" + "wave" "vo/pauling/plng_give_contract_rare_soldier_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_soldier_02.mp3" + "wave" "vo/pauling/plng_give_contract_rare_soldier_03.mp3" + "wave" "vo/pauling/plng_give_contract_rare_soldier_04.mp3" + "wave" "vo/pauling/plng_give_contract_rare_soldier_05.mp3" + } +} + +"plng_give_contract_spy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_spy_04.mp3" + "wave" "vo/pauling/plng_give_contract_spy_05.mp3" + "wave" "vo/pauling/plng_give_contract_spy_06.mp3" + "wave" "vo/pauling/plng_give_contract_spy_07.mp3" + "wave" "vo/pauling/plng_give_contract_spy_08.mp3" + "wave" "vo/pauling/plng_give_contract_spy_09.mp3" + "wave" "vo/pauling/plng_give_contract_spy_10.mp3" + "wave" "vo/pauling/plng_give_contract_spy_11.mp3" + "wave" "vo/pauling/plng_give_contract_spy_12.mp3" + "wave" "vo/pauling/plng_give_contract_spy_13.mp3" + "wave" "vo/pauling/plng_give_contract_spy_14.mp3" + "wave" "vo/pauling/plng_give_contract_spy_15.mp3" + "wave" "vo/pauling/plng_give_contract_rare_spy_01.mp3" + "wave" "vo/pauling/plng_give_contract_rare_spy_02.mp3" + "wave" "vo/pauling/plng_give_contract_rare_spy_03.mp3" + "wave" "vo/pauling/plng_give_contract_rare_spy_04.mp3" + } +} + +"plng_contract_50_allclass" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_50_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_50_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_50_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_50_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_50_allclass_05.mp3" + } +} + +"plng_contract_complete_allclass" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + } +} + +"plng_contract_complete_demo" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_01.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_02.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_03.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_04.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_05.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_06.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_07.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_01.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_02.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_03.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_04.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_05.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_06.mp3" + "wave" "vo/pauling/plng_contract_complete_demo_07.mp3" + } +} + +"plng_contract_complete_engie" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_01.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_02.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_03.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_04.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_05.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_06.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_07.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_08.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_01.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_02.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_03.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_04.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_05.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_06.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_07.mp3" + "wave" "vo/pauling/plng_contract_complete_engie_08.mp3" + } +} + +"plng_contract_complete_heavy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_01.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_02.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_03.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_04.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_05.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_06.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_07.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_08.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_09.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_01.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_02.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_03.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_04.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_05.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_06.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_07.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_08.mp3" + "wave" "vo/pauling/plng_contract_complete_heavy_09.mp3" + } +} + +"plng_contract_complete_medic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_01.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_02.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_03.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_04.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_05.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_06.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_01.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_02.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_03.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_04.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_05.mp3" + "wave" "vo/pauling/plng_contract_complete_medic_06.mp3" + } +} + +"plng_contract_complete_pyro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_01.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_02.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_03.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_04.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_05.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_06.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_07.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_08.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_01.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_02.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_03.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_04.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_05.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_06.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_07.mp3" + "wave" "vo/pauling/plng_contract_complete_pyro_08.mp3" + } +} + +"plng_contract_complete_scout" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_01.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_02.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_03.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_04.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_05.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_01.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_02.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_03.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_04.mp3" + "wave" "vo/pauling/plng_contract_complete_scout_05.mp3" + } +} + +"plng_contract_complete_sniper" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_01.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_02.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_03.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_04.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_05.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_06.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_07.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_01.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_02.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_03.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_04.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_05.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_06.mp3" + "wave" "vo/pauling/plng_contract_complete_sniper_07.mp3" + } +} + +"plng_contract_complete_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_01.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_02.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_03.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_04.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_05.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_06.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_07.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_08.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_01.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_02.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_03.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_04.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_05.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_06.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_07.mp3" + "wave" "vo/pauling/plng_contract_complete_soldier_08.mp3" + } +} + +"plng_contract_complete_spy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_20.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_01.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_02.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_03.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_04.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_05.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_06.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_07.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_01.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_02.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_03.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_04.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_05.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_06.mp3" + "wave" "vo/pauling/plng_contract_complete_spy_07.mp3" + } +} + +"plng_contract_fail_allclass" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_fail_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_05.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_09.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_13.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_fail_allclass_15.mp3" + } +} + +"plng_give_bigcontract_allclass" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_give_bigcontract_allclass_01.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_02.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_03.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_04.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_05.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_06.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_07.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_08.mp3" + "wave" "vo/pauling/plng_give_bigcontract_allclass_09.mp3" + } +} + + +"plng_contract_complete_give_item_allclass" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_rareitem_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_rareitem_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_rareitem_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_rareitem_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_rareitem_allclass_05.mp3" + "wave" "vo/pauling/plng_contract_complete_rareitem_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_09.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_13.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_19.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_27.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_28.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_29.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_30.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_31.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_32.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_33.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_34.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_35.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_36.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + } +} + +"plng_contract_points_completion" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + } +} + +"plng_contract_objective_completion" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_05.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_06.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_08.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_10.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_11.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_14.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_15.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_16.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_19.mp3" + } +} + +"plng_contract_credits_earned" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_09.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_13.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_19.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_34.mp3" + } +} + +"plng_contract_item_earned" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_27.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_28.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_33.mp3" + } +} + +"plng_contract_fully_completed" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_07.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_12.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_17.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_18.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_37.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_38.mp3" + } +} + +"plng_contract_partially_completed" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/pauling/plng_contract_complete_allclass_01.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_02.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_03.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_04.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_21.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_22.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_23.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_24.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_25.mp3" + "wave" "vo/pauling/plng_contract_complete_allclass_26.mp3" + + } +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_rd_robots.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_rd_robots.lua new file mode 100644 index 000000000..22ad052ab --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_rd_robots.lua @@ -0,0 +1,276 @@ +"Robot.Collide" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_90dB" + + "rndwave" + { + "wave" "vo/bot_worker/tinybot_crosspaths_03.mp3" + "wave" "vo/bot_worker/tinybot_crosspaths_05.mp3" + "wave" "vo/bot_worker/tinybot_crosspaths_06.mp3" + } +} + +"Robot.Greeting" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_90dB" + + "rndwave" + { + "wave" "vo/bot_worker/tinybot_incidental_01.mp3" + "wave" "vo/bot_worker/tinybot_incidental_02.mp3" + } +} + +"Robot.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_90dB" + + "rndwave" + { + "wave" "vo/bot_worker/tinybot_takedamage_01.mp3" + "wave" "vo/bot_worker/tinybot_takedamage_09.mp3" + } +} + +"Robot.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_90dB" + + "rndwave" + { + "wave" "vo/bot_worker/tinybot_death_01.mp3" + "wave" "vo/bot_worker/tinybot_death_02.mp3" + } +} + +"Announcer.EnemyTeamCloseToWinning" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo\announcer_map.enemyclosetowinning_01.mp3" + "wave" "vo\announcer_map.enemyclosetowinning_02.mp3" + "wave" "vo\announcer_map.enemyclosetowinning_03.mp3" + "wave" "vo\announcer_map.enemyclosetowinning_05.mp3" + } +} + +"Announcer.OurTeamCloseToWinning" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + + "rndwave" + { + "wave" "vo\announcer_map.teamclosetowinning_01.mp3" + "wave" "vo\announcer_map.teamclosetowinning_02.mp3" + "wave" "vo\announcer_map.teamclosetowinning_03.mp3" + } +} + +"Announcer.HowToPlayRD" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NORM" + "wave" "vo\announcer_map_intro_02.mp3" +} + +"RD.TeamScoreCore" +{ + "channel" "CHAN_STATIC" + "volume" "0.4" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "ui\chime_rd_2base_pos.wav" +} + +"RD.EnemyScoreCore" +{ + "channel" "CHAN_STATIC" + "volume" "0.4" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "ui\chime_rd_2base_neg.wav" +} + +"RD.EnemyStealingPoints" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "ambient/alarms/klaxon1.wav" +} + +"RD.EnemyCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "wave" "vo/announcer_captureflag_enemycaptured_01.mp3" + +} + +"RD.EnemyDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_enemydropped_01.mp3" + "wave" "vo/announcer_captureflag_enemydropped_02.mp3" + } +} + +"RD.EnemyReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_enemyreturned_01.mp3" + "wave" "vo/announcer_captureflag_enemyreturned_02.mp3" + "wave" "vo/announcer_captureflag_enemyreturned_03.mp3" + "wave" "vo/announcer_captureflag_enemyreturned_04.mp3" + } +} + +"RD.EnemyStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_enemystolen_01.mp3" + "wave" "vo/announcer_captureflag_enemystolen_02.mp3" + } +} + +"RD.TeamCaptured" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_teamcaptured_01.mp3" + "wave" "vo/announcer_captureflag_teamcaptured_02.mp3" + } +} + +"RD.TeamDropped" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_teamdropped_01.mp3" + "wave" "vo/announcer_captureflag_teamdropped_04.mp3" + "wave" "vo/announcer_captureflag_teamdropped_07.mp3" + "wave" "vo/announcer_captureflag_teamdropped_08.mp3" + } +} + +"RD.TeamReturned" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_teamreturned_01.mp3" + "wave" "vo/announcer_captureflag_teamreturned_02.mp3" + } +} + +"RD.TeamStolen" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "vo/announcer_captureflag_teamstolen_01.mp3" + "wave" "vo/announcer_captureflag_teamstolen_02.mp3" + "wave" "vo/announcer_captureflag_teamstolen_03.mp3" + } +} + +"RD.SpaceGravityTransition" +{ + "channel" "CHAN_STATIC" + "volume" "0.4" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "misc\outer_space_transition_01.wav" +} + +"RD.BotDeathExplosion" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_94dB" + "pitch" "PITCH_NORM" + "wave" "misc\rd_robot_explosion01.wav" +} + +"RD.FinaleBeep" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "misc/rd_finale_beep01.wav" +} + +"RD.FlagReturn" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "misc/rd_points_return01.wav" +} + +"RD.FinaleMusic" +{ + "channel" "CHAN_STATIC" + "volume" "0.4" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + "wave" "music\rd_finale.wav" +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_taunts.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_taunts.lua new file mode 100644 index 000000000..00bc9489e --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_taunts.lua @@ -0,0 +1,5136 @@ +// *********************************************** +// AUTO GENERATED FILE DO NOT MODIFY +// *********************************************** + +"scout_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_int_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_21.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_14.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_17.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_19.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_05.mp3" + } +} +"scout_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_misc_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_11.mp3" + } +} +"scout_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_21.mp3" + } +} +"scout_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_int_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_int_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_14.mp3" + } +} +"scout_taunt_dosido_endlong_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_end_09.mp3" + } +} +"soldier_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_dosi_int_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_int_05.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_int_12.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_19.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_02.mp3" + } +} +"soldier_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_11.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_09.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_12.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_24.mp3" + } +} +"soldier_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_09.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_29.mp3" + } +} +"soldier_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_32.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_30.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_29.mp3" + } +} +"soldier_taunt_dosido_end_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_17.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_09.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_17.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_26.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_end_01.mp3" + } +} +"soldier_taunt_trade_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_trade_03.mp3" + "wave" "vo/taunts/soldier/soldier_trade_08.mp3" + "wave" "vo/taunts/soldier/soldier_trade_19.mp3" + } +} +"soldier_taunt_trade_loop_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_trade_12.mp3" + "wave" "vo/taunts/soldier/soldier_trade_24.mp3" + "wave" "vo/taunts/soldier/soldier_trade_28.mp3" + } +} +"pyro_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_13.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_14.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_16.mp3" + } +} +"pyro_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_01.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_int_07.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_thanks_08.mp3" + } +} +"pyro_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_21.mp3" + } +} +"pyro_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_dosi_end_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_24.mp3" + } +} +"pyro_taunt_dosido_endlong_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_dosi_end_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_end_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_end_08.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_thanks_07.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_thanks_09.mp3" + } +} +"pyro_taunt_trade_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_trade_03.mp3" + "wave" "vo/taunts/pyro/pyro_trade_12.mp3" + "wave" "vo/taunts/pyro/pyro_trade_15.mp3" + "wave" "vo/taunts/pyro/pyro_trade_17.mp3" + } +} +"pyro_taunt_trade_loop_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_trade_02.mp3" + "wave" "vo/taunts/pyro/pyro_trade_09.mp3" + "wave" "vo/taunts/pyro/pyro_trade_01.mp3" + "wave" "vo/taunts/pyro/pyro_trade_04.mp3" + "wave" "vo/taunts/pyro/pyro_trade_06.mp3" + } +} +"demo_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_dose_int_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_int_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_int_09.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_30.mp3" + } +} +"demo_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_dose_end_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_02.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_04.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_29.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_30.mp3" + } +} +"demo_taunt_dosido_burp_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_burp_03.mp3" + } +} +"demo_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_dose_end_02.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_fun_07.mp3" + } +} +"demo_taunt_dosido_balance_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_taunt_wild_32.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_33.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_34.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_35.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_fun_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_fun_01.mp3" + } +} +"demo_taunt_dosido_balance_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_taunt_wild_33.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_34.mp3" + "wave" "vo/taunts/demo/taunt_demo_rps_win_25.mp3" + } +} +"demo_taunt_dosido_end_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_dose_fun_08.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_05.mp3" + } +} +"demo_taunt_trade_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_trade_02.mp3" + "wave" "vo/taunts/demo/demo_trade_04.mp3" + "wave" "vo/taunts/demo/demo_trade_12.mp3" + "wave" "vo/taunts/demo/demo_trade_15.mp3" + "wave" "vo/taunts/demo/demo_trade_17.mp3" + } +} +"demo_taunt_trade_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_trade_02.mp3" + "wave" "vo/taunts/demo/demo_trade_04.mp3" + "wave" "vo/taunts/demo/demo_trade_12.mp3" + "wave" "vo/taunts/demo/demo_trade_15.mp3" + "wave" "vo/taunts/demo/demo_trade_17.mp3" + } +} +"demo_taunt_trade_loop_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_trade_18.mp3" + "wave" "vo/taunts/demo/demo_trade_04.mp3" + "wave" "vo/taunts/demo/demo_trade_12.mp3" + "wave" "vo/taunts/demo/demo_trade_15.mp3" + "wave" "vo/taunts/demo/demo_trade_20.mp3" + } +} +"heavy_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_05.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_08.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_19.mp3" + } +} +"heavy_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_18.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_int_16.mp3" + } +} +"heavy_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_dosi_fun_07.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_fun_08.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_fun_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_fun_10.mp3" + } +} +"heavy_taunt_trade_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_trade_01.mp3" + "wave" "vo/taunts/heavy/heavy_trade_06.mp3" + "wave" "vo/taunts/heavy/heavy_trade_15.mp3" + "wave" "vo/taunts/heavy/heavy_trade_03.mp3" + } +} +"heavy_taunt_trade_loop_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_trade_04.mp3" + "wave" "vo/taunts/heavy/heavy_trade_09.mp3" + "wave" "vo/taunts/heavy/heavy_trade_12.mp3" + "wave" "vo/taunts/heavy/heavy_trade_13.mp3" + "wave" "vo/taunts/heavy/heavy_trade_14.mp3" + } +} +"eng_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_dosi_int_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_05.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_23.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_36.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_44.mp3" + } +} +"engineer_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_19.mp3" + } +} +"eng_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_admire_12.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_end_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + } +} +"eng_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_exert_05.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_07.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_12.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_15.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_19.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_24.mp3" + } +} +"eng_taunt_dosido_end_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_dosi_end_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_11.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_14.mp3" + } +} +"medic_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_dosi_int_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_int_06.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_int_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_22.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_11.mp3" + } +} +"medic_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_03.mp3" + } +} +"medic_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_01.mp3" + } +} +"medic_taunt_dosido_end_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_10.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_11.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_13.mp3" + "wave" "vo/taunts/medic/medic_taunt_dosi_fun_05.mp3" + } +} +"medic_taunt_trade_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_trade_02.mp3" + "wave" "vo/taunts/medic/medic_trade_03.mp3" + "wave" "vo/taunts/medic/medic_trade_04.mp3" + "wave" "vo/taunts/medic/medic_trade_11.mp3" + } +} +"medic_taunt_trade_loop_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_trade_05.mp3" + "wave" "vo/taunts/medic/medic_trade_06.mp3" + "wave" "vo/taunts/medic/medic_trade_10.mp3" + } +} +"sniper_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_dosi_int_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_int_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_int_07.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_int_08.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_int_09.mp3" + } +} +"sniper_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_int_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_13.mp3" + } +} +"sniper_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_07.mp3" + } +} +"sniper_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_06.mp3" + } +} +"sniper_taunt_dosido_endlong_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_dosi_end_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_09.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_11.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_15.mp3" + } +} +"sniper_taunt_dosido_endshort_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_admire_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_12.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_16.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_19.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_admire_20.mp3" + } +} +"spy_taunt_dosido_intro_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_dosi_end_17.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_18.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_19.mp3" + } +} +"spy_taunt_dosido_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_killme_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_10.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_09.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_08.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_killme_02.mp3" + } +} +"spy_taunt_dosido_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_dosi_end_17.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_18.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_19.mp3" + } +} +"spy_taunt_dosido_mid_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_dosi_int_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_03.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_31.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_32.mp3" + } +} +"spy_taunt_dosido_end_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_06.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_24.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_32.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_37.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_int_16.mp3" + } +} +"spy_taunt_trade_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_trade_01.mp3" + "wave" "vo/taunts/spy/spy_trade_03.mp3" + "wave" "vo/taunts/spy/spy_trade_11.mp3" + "wave" "vo/taunts/spy/spy_trade_18.mp3" + } +} +"spy_taunt_trade_loop_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_trade_05.mp3" + "wave" "vo/taunts/spy/spy_trade_08.mp3" + "wave" "vo/taunts/spy/spy_trade_09.mp3" + "wave" "vo/taunts/spy/spy_trade_13.mp3" + "wave" "vo/taunts/spy/spy_trade_17.mp3" + "wave" "vo/taunts/spy/spy_trade_20.mp3" + "wave" "vo/taunts/spy/spy_trade_22.mp3" + } +} + +"scout_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_int_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_int_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_08.mp3" + } +} +"scout_taunt_flip_random_waiting1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_int_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_int_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_int_13.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_14.mp3" + } +} +"scout_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_int_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_17.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_18.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_18.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_18.mp3" + } +} +"scout_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_13.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_exert_23.mp3" + } +} +"scout_taunt_flip_random_flipThrowAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_08.mp3" + } +} +"scout_taunt_flip_random_flipFlipping1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_fun_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_exert_09.mp3" + } +} +"scout_taunt_flip_random_flipFlipping2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_int_03.mp3" + } +} +"scout_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_end_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_exert_30.mp3" + } +} +"scout_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_flip_end_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_22.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_14.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_17.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_19.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_end_27.mp3" + } +} +"scout_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_conga_int_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_int_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_int_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_08.mp3" + } +} +"scout_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_conga_fun_07.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_11.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_09.mp3" + } +} +"scout_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_conga_fun_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_01.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_06.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_14.mp3" + } +} +"soldier_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_11.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_19.mp3" + } +} +"soldier_taunt_flip_random_waiting1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_17.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_15.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_20.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_int_24.mp3" + } +} +"soldier_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_int_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_08.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_10.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_12.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_16.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_19.mp3" + } +} +"soldier_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_flip_exert_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_exert_31.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_exert_21.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_exert_06.mp3" + } +} +"soldier_taunt_flip_random_flipthrowAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_int_09.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_14.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_15.mp3" + } +} +"soldier_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_05.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_15.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_end_16.mp3" + } +} +"soldier_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_admire_10.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_17.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_24.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_16.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_04.mp3" + } +} +"soldier_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_fun_04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_flip_fun_08.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_22.mp3" + } +} +"soldier_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_11.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_24.mp3" + } +} +"soldier_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_24.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_int_04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_27.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_29.mp3" + } +} +"soldier_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_cong_int_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_int_13.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_09.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_admire_22.mp3" + } +} +"soldier_taunt_conga_random_accent" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_bos_pain_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_bos_pain_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_bos_pain_06.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_bos_pain_01.mp3" + } +} +"pyro_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_07.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_int_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_04.mp3" + } +} +"pyro_taunt_flip_random_waiting1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_03.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_01.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_05.mp3" + } +} +"pyro_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_int_07.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_13.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_15.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_22.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_12.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_int_15.mp3" + } +} +"pyro_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_02.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_exert_05.mp3" + } +} +"pyro_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_06.mp3" + } +} +"pyro_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_01.mp3" + } +} +"pyro_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_05.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_05.mp3" + } +} +"pyro_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_11.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_14.mp3" + } +} +"pyro_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_03.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_head_int_04.mp3" + } +} +"pyro_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_13.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_14.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_dosi_fun_06.mp3" + } +} +"demo_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_int_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_10.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_14.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_20.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_18.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_08.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_06.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_13.mp3" + } +} +"demo_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_int_21.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_27.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_30.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_34.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_12.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_int_16.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_24.mp3" + } +} +"demo_taunt_flip_random_waiting" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_int_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_10.mp3" + } +} +"demo_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_exert_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_06.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_08.mp3" + } +} +"demo_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_exert_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_06.mp3" + "wave" "vo/taunts/demo/taunt_demo_exert_08.mp3" + } +} +"demo_taunt_flip_random_flipThrowAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_conga_int_06.mp3" + "wave" "vo/taunts/demo/taunt_demo_dose_end_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_strike_01.mp3" + } +} +"demo_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_point_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_point_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_point_06.mp3" + "wave" "vo/taunts/demo/taunt_demo_admire_06.mp3" + } +} +"demo_taunt_flip_random_flipFlipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_neg_02.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_neg_01.mp3" + } +} +"demo_taunt_flip_random_flipFlipFinish1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_03.mp3" + "wave" "vo/taunts/demo/taunt_demo_flip_post_fun_01.mp3" + } +} +"demo_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_conga_int_02.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_07.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_06.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_10.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_24.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_08.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_19.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_12.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_18.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_11.mp3" + } +} +"demo_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_conga_int_02.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_07.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_int_06.mp3" + } +} +"demo_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_conga_int_04.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_10.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_24.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_08.mp3" + } +} +"demo_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_conga_fun_19.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_12.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_18.mp3" + "wave" "vo/taunts/demo/taunt_demo_conga_fun_11.mp3" + } +} +"heavy_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_10.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_10.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_05.mp3" + } +} +"heavy_taunt_flip_random_waiting" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_int_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_05.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_08.mp3" + } +} +"heavy_taunt_flip_random_waiting1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_int_15.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_17.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_18.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_19.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_25.mp3" + } +} +"heavy_taunt_flip_random_exerts" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_04.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_06.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + } +} +"heavy_taunt_flip_random_flipThrowAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_16.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_int_04.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_20.mp3" + } +} +"heavy_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_03.mp3" + } +} +"heavy_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_08.mp3" + } +} +"heavy_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_end_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_19.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_18.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_22.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_24.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_17.mp3" + } +} +"heavy_taunt_conga_random_fun" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_08.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_07.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_12.mp3" + } +} +"heavy_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_07.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_int_12.mp3" + } +} +"heavy_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_int_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_24.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_03.mp3" + } +} +"heavy_taunt_flip_random_chesthits" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit1.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit2.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit3.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit4.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit5.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit6.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_chest_hit7.mp3" + } +} +"heavy_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_kill_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_kill_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_19.mp3" + } +} +"eng_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_int_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_int_04.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_int_13.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_int_11.mp3" + } +} +"eng_taunt_flip_random_waiting" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_end_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_19.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_37.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_41.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_21.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_22.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_25.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_39.mp3" + } +} +"eng_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_int_08.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_int_14.mp3" + } +} +"eng_taunt_flip_random_flipThrowAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_admire_07.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_end_08.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_end_04.mp3" + } +} +"eng_taunt_flip_random_flipExertVocal" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_exert_26.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_exert_23.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_exert_14.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_exert_24.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_29.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_12.mp3" + } +} +"eng_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_exert_44.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_30.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_05.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_08.mp3" + } +} +"eng_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_admire_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_03.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_09.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_11.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_14.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_15.mp3" + } +} +"eng_taunt_flip_random_flipkneeClap" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_75dB" + "rndwave" + { + "wave" "player/taunt_hard_clap1.wav" + "wave" "player/taunt_hard_clap2.wav" + "wave" "player/taunt_hard_clap3.wav" + } +} +"eng_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_25.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_44.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_30.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_05.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_08.mp3" + } +} +"eng_taunt_flip_random_flipFlipAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_09.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_11.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_12.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_13.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_22.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_25.mp3" + } +} +"eng_taunt_flip_random_flipFlipFinish1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_admire_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_admire_07.mp3" + } +} +"eng_taunt_flip_random_flipFlipFinish2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_admire_04.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + } +} +"eng_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_cong_fun_04.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_16.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_20.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_26.mp3" + } +} +"eng_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_30.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_36.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_14.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_33.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_34.mp3" + } +} +"eng_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_cong_fun_35.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_42.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_13.mp3" + } +} +"medic_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_flip_int_15.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_10.mp3" + } +} +"medic_taunt_flip_random_waiting" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_09.mp3" + } +} +"medic_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_11.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_13.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_15.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_int_10.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_14.mp3" + } +} +"medic_taunt_flip_random_flipFlipAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_06.mp3" + } +} +"medic_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_exert_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_exert_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_exert_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_exert_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_03.mp3" + } +} +"medic_taunt_flip_random_flipExertVocal" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_flip_exert_04.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_06.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_09.mp3" + } +} +"medic_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_flip_exert_10.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_06.mp3" + } +} +"medic_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_flip_end_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_13.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_22.mp3" + } +} +"medic_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_admire_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_flip_end_06.mp3" + } +} +"medic_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_15.mp3" + } +} +"medic_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_cong_fun_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_12.mp3" + } +} +"medic_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_cong_fun_06.mp3" + "wave" "vo/taunts/medic/medic_taunt_cong_fun_01.mp3" + } +} +"snipes_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_flip_int_04.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_int_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_int_07.mp3" + } +} +"snipes_taunt_flip_random_waiting" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_flip_int_10.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_04.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_08.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_03.mp3" + } +} +"snipes_taunt_flip_random_waiting1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_int_13.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_int_11.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_07.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_01.mp3" + } +} +"snipes_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_exert_04.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_exert_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_exert_07.mp3" + } +} +"snipes_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_flip_end_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_end_04.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_end_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_end_07.mp3" + } +} +"snipes_taunt_flip_random_flipFlipAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_int_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_04.mp3" + } +} +"snipes_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_flip_exert_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_exert_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_exert_10.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_exert_15.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_11.mp3" + } +} +"snipes_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_admire_18.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_fun_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_flip_end_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_05.mp3" + } +} +"snipes_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_25.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_06.mp3" + } +} +"snipes_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_12.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_24.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_17.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_18.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_int_01.mp3" + } +} +"snipes_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_int_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_int_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_cong_fun_04.mp3" + } +} +"spy_taunt_flip_random_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_int_04.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_07.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_16.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_25.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_28.mp3" + } +} +"spy_taunt_flip_random_waiting1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_int_20.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_03.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_03.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_16.mp3" + "wave" "vo/taunts/spy/spy_taunt_int_48.mp3" + } +} +"spy_taunt_flip_random_waiting2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_int_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_15.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_int_16.mp3" + } +} +"spy_taunt_flip_random_flipExert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_exert_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_exert_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_13.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_15.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_16.mp3" + } +} +"spy_taunt_flip_random_flipExertVocal" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_exert_07.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_exert_08.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_exert_09.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_exert_10.mp3" + } +} +"spy_taunt_flip_random_flipThrowAntic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_bos_int_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_bos_kick_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_dosi_end_18.mp3" + } +} +"spy_taunt_flip_random_flipFlipping" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_09.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_fun_13.mp3" + } +} +"spy_taunt_flip_random_flipAdmire" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_admire_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_admire_09.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_admire_18.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_admire_20.mp3" + } +} +"spy_taunt_flip_random_flipFinish" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_flip_end_07.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_flip_end_16.mp3" + } +} +"spy_taunt_conga_random_fun1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_cong_fun_15.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_03.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_int_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_08.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_06.mp3" + } +} +"spy_taunt_conga_random_fun2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_cong_int_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_09.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_int_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_17.mp3" + } +} +"spy_taunt_conga_random_fun3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_cong_fun_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_02.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_14.mp3" + "wave" "vo/taunts/spy/spy_taunt_cong_fun_15.mp3" + } +} +"spy_taunt_flip_landings" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/common/taunt_flip_land1.mp3" + "wave" "vo/taunts/common/taunt_flip_land2.mp3" + "wave" "vo/taunts/common/taunt_flip_land3.mp3" + "wave" "vo/taunts/common/taunt_flip_land4.mp3" + "wave" "vo/taunts/common/taunt_flip_land5.mp3" + } +} + +"soldier_lose_random" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_head_pain_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_12.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_14.mp3" + } +} +"soldier_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_03.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_05.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_08.mp3" + } +} +"soldier_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_07.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_05.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_10.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_int_25.mp3" + } +} +"scout_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_rps_int_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_rps_int_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_rps_int_09.mp3" + "wave" "vo/taunts/scout/scout_taunt_rps_int_02.mp3" + } +} +"scout_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_int_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_rps_int_10.mp3" + } +} +"spy_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_rps_int_07.mp3" + "wave" "vo/taunts/spy/spy_taunt_rps_int_01.mp3" + } +} +"spy_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_int_24.mp3" + "wave" "vo/taunts/spy/spy_taunt_rps_int_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_rps_int_08.mp3" + } +} +"sniper_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_05.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_06.mp3" + } +} +"sniper_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_07.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_int_11.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_03.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_int_05.mp3" + } +} +"heavy_taunt_rps_setting_up" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_int_14.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_05.mp3" + } +} +"heavy_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_rps_int_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_rps_int_04.mp3" + } +} +"heavy_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_int_08.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_15.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_int_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_rps_int_01.mp3" + } +} +"engineer_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_rps_int_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_rps_int_03.mp3" + "wave" "vo/taunts/engy/eng_taunt_rps_int_07.mp3" + } +} +"engineer_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_31.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_46.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_24.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_39.mp3" + } +} +"medic_taunt_rps_setting_up" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_admire_10.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_22.mp3" + } +} +"medic_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_10.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_14.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_12.mp3" + } +} +"demo_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_rps_int_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_rps_int_06.mp3" + } +} +"demo_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_int_19.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_34.mp3" + } +} +"pyro_taunt_rps_start_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_rps_int_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_rps_int_02.mp3" + } +} +"pyro_taunt_rps_intro_wait_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_rps_int_07.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_rps_int_08.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_rps_int_05.mp3" + } +} + +"taunt_headbutt_sfx_head_impact" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "weapons\bat_baseball_hit_flesh.wav" + } +} +"taunt_headbutt_sfx_hand_swoosh" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "player\taunt_eng_swoosh.wav" + } +} +"taunt_headbutt_sfx_hand_slap" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/mtt_medic_punchnslaps.mp3" + } +} +"scout_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_head_int_02.mp3" + } +} +"scout_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_head_int_05.mp3" + } +} +"scout_taunt_headbutt_start_3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_head_int_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_int_21.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_int_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_int_02.mp3" + } +} +"scout_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_exert_13.mp3" + "wave" "vo/taunts/scout/scout_taunt_exert_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_exert_21.mp3" + } +} +"scout_taunt_headbutt_success_recover" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_head_pain_02.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_pain_12.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_pain_11.mp3" + "wave" "vo/taunts/scout/scout_taunt_head_pain_20.mp3" + } +} +"soldier_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_head_int_02.mp3" + } +} +"soldier_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_head_int_07.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_head_int_17.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_head_int_21.mp3" + } +} +"soldier_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_head_end_29.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_exert_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_head_pain_13.mp3" + } +} +"soldier_taunt_headbutt_success_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_exert_06.mp3" + } +} +"soldier_taunt_headbutt_success_recover" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_head_exert_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_head_end_13.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_head_end_24.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_head_end_01.mp3" + } +} +"pyro_taunt_headbutt_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_head_int_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_head_int_01.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_head_int_03.mp3" + } +} +"pyro_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_head_pain_21.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_head_pain_22.mp3" + } +} +"pyro_taunt_headbutt_success_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_head_pain_04.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_exert_12.mp3" + } +} +"pyro_taunt_headbutt_success_recover_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_head_pain_03.mp3" + } +} +"pyro_taunt_headbutt_success_recover_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_head_exert_03.mp3" + } +} +"demo_taunt_headbutt_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_head_int_09.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_30.mp3" + "wave" "vo/taunts/demo/taunt_demo_head_int_01.mp3" + } +} +"demo_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_taunt_wild_36.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_39.mp3" + } +} +"demo_taunt_headbutt_success_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_head_exert_05.mp3" + } +} +"demo_taunt_headbutt_success_recover" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_head_rec_05.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_40.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_31.mp3" + } +} +"heavy_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_head_int_01.mp3" + } +} +"heavy_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_head_int_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_head_int_07.mp3" + } +} +"heavy_taunt_headbutt_start_3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_head_int_04.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_head_int_05.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_head_int_07.mp3" + } +} +"heavy_taunt_headbutt_start_4" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_head_int_07.mp3" + } +} +"heavy_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_head_exert_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_head_exert_04.mp3" + } +} +"heavy_taunt_headbutt_success_recover_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "misc/null.wav" + } +} +"heavy_taunt_headbutt_success_recover_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_head_end_01.mp3" + } +} +"eng_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_41.mp3" + } +} +"eng_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_03.mp3" + } +} +"eng_taunt_headbutt_start_3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_38.mp3" + } +} +"eng_taunt_headbutt_start_4" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_int_23.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_44.mp3" + } +} +"eng_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_exert_19.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_46.mp3" + } +} +"eng_taunt_headbutt_success_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_exert_47.mp3" + } +} +"eng_taunt_headbutt_success_recover_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_head_end_07.mp3" + "wave" "vo/taunts/engy/eng_taunt_exert_19.mp3" + } +} +"eng_taunt_headbutt_success_recover_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_head_end_13.mp3" + "wave" "vo/taunts/engy/eng_taunt_head_end_08.mp3" + } +} +"medic_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_09.mp3" + } +} +"medic_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_head_int_04.mp3" + } +} +"medic_taunt_headbutt_start_3" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_int_01.mp3" + "wave" "vo/taunts/medic/medic_taunt_int_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_int_08.mp3" + } +} +"medic_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_head_exert_04.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_exert_01.mp3" + } +} +"medic_taunt_headbutt_success_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_exert_02.mp3" + "wave" "vo/taunts/medic/medic_taunt_exert_08.mp3" + } +} +"medic_taunt_headbutt_success_recover" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_head_end_04.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_end_07.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_end_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_head_end_20.mp3" + } +} +"sniper_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_head_int_14.mp3" + } +} +"sniper_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_head_int_02.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_int_17.mp3" + } +} +"sniper_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_head_exert_13.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_exert_18.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_exert_23.mp3" + } +} +"sniper_taunt_headbutt_success_recover" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_exert_07.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_end_28.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_end_33.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_end_37.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_head_end_39.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_exert_07.mp3" + } +} +"spy_taunt_headbutt_start_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_head_int_02.mp3" + } +} +"spy_taunt_headbutt_start_2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_head_int_21.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_int_05.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_int_12.mp3" + } +} +"spy_taunt_headbutt_success_windup" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_head_exert_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_int_26.mp3" + } +} +"spy_taunt_headbutt_success_exert" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_exert_12.mp3" + "wave" "vo/taunts/spy/spy_taunt_exert_15.mp3" + } +} +"spy_taunt_headbutt_success_recover" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_taunt_head_pain_20.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_pain_01.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_pain_11.mp3" + "wave" "vo/taunts/spy/spy_taunt_head_exert_15.mp3" + } +} +"taunt_demo_nuke_1_grenade_get" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_1_grenade_get.mp3" + } +} +"taunt_demo_nuke_2_grenade_open" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_2_grenade_open.mp3" + } +} +"taunt_demo_nuke_3_spit_lid" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_3_spit_lid.mp3" + } +} +"taunt_demo_nuke_4_pour" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_4_pour.mp3" + } +} +"taunt_demo_nuke_5_grenade_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_5_grenade_drop.mp3" + } +} +"taunt_demo_nuke_6_bottle_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_6_bottle_drop.mp3" + } +} +"taunt_demo_nuke_7_spit" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_7_spit.mp3" + } +} +"taunt_demo_nuke_8_explosion" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_nuke_8_explosion.mp3" + } +} +"demo_taunt_nuke_9_button" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/demo_taunt_wild_06.mp3" + "wave" "vo/taunts/demo/demo_taunt_wild_09.mp3" + } +} +"medic_taunt_xray_1_prognosis" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_kill_12.mp3" + "wave" "vo/taunts/medic/medic_taunt_kill_16.mp3" + "wave" "vo/taunts/medic/medic_taunt_kill_17.mp3" + } +} +"medic_taunt_xray_2_laugh" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_kill_26.mp3" + } +} +"medic_taunt_xray_2B_dead" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_kill_27.mp3" + "wave" "vo/taunts/medic/medic_taunt_kill_24.mp3" + "wave" "vo/taunts/medic/medic_taunt_kill_23.mp3" + "wave" "vo/taunts/medic/medic_taunt_kill_22.mp3" + "wave" "vo/taunts/medic/medic_taunt_kill_21.mp3" + } +} +"medic_taunt_xray_3_open" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/taunt_medic_xray_1_open.mp3" + } +} +"medic_taunt_xray_4_crumple" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/taunt_medic_xray_2_crumple.mp3" + } +} +"pyro_taunt_partytrick_1_blow" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_ballon_06.mp3" + } +} +"pyro_taunt_partytrick_2_make" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_ballon_07.mp3" + } +} +"pyro_taunt_partytrick_3_giggle" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_cong_fun_05.mp3" + } +} +"pyro_taunt_partytrick_4_laugh" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_ballon_11.mp3" + } +} +"pyro_taunt_partytrick_5_clap" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_clap1.mp3" + } +} +"pyro_taunt_partytrick_6_clap" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_clap2.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_clap3.mp3" + } +} +"pyro_taunt_partytrick_7_clap" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_clap4.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_clap5.mp3" + } +} +"pyro_taunt_partytrick_8_clap" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_clap6.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_clap7.mp3" + } +} +"scout_taunt_batman_1_twirl" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_nun_81.mp3" + "wave" "vo/taunts/scout/scout_taunt_nun_83.mp3" + } +} +"scout_taunt_batman_2_yawn" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_nun_65.mp3" + "wave" "vo/taunts/scout/scout_taunt_nun_41.mp3" + "wave" "vo/taunts/scout/scout_taunt_nun_71.mp3" + "wave" "vo/taunts/scout/scout_taunt_nun_63.mp3" + } +} +"soldier_taunt_coffee_1_speech" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_admire_18.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_kill_01.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_kill_04.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_kill_10.mp3" + } +} +"soldier_taunt_coffee_2_slurp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/taunt_soldier_coffee_4_coffee_sip.mp3" + } +} +"soldier_taunt_coffee_3_ahhhh" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_kill_16.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_kill_18.mp3" + "wave" "vo/taunts/soldier/taunt_soldier_coffee_5_coffee_ahh.mp3" + } +} +"soldier_taunt_coffee_4_can_swoosh" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/taunt_soldier_coffee_1_bag_can_swoosh.mp3" + } +} +"soldier_taunt_coffee_4_can_drop" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/taunt_soldier_coffee_2_bag_can_drop.mp3" + } +} +"soldier_taunt_coffee_5_can_splash" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/taunt_soldier_coffee_3_coffee_splash.mp3" + } +} +"spy_taunt_buyalife_1_speech" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_kill_taunt_03.mp3" + "wave" "vo/taunts/spy/spy_kill_taunt_13.mp3" + "wave" "vo/taunts/spy/spy_kill_taunt_16.mp3" + "wave" "vo/taunts/spy/spy_kill_taunt_17.mp3" + } +} +"spy_taunt_buyalife_2_bill_select" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/taunt_spy_buyalife_bill_select.mp3" + } +} +"spy_taunt_buyalife_3_bill_throw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/taunt_spy_buyalife_bill_throw.mp3" + } +} +"sniper_taunt_iseeyou_1" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_kill_18.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_kill_19.mp3" + } +} +"engy_taunt_killertime_1_button" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/taunt_engineer_lounge_button_press.mp3" + } +} +"engy_taunt_killertime_2_open" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/taunt_engineer_lounge_toolbox_open.mp3" + } +} +"engy_taunt_killertime_4_drink" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_guzzle_02.mp3" + "wave" "vo/taunts/engy/eng_guzzle_03.mp3" + } +} +"engy_taunt_killertime_4_2_drink_long" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_guzzle_06.mp3" + } +} +"engy_taunt_killertime_4_3_ahhh" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_guzzle_05.mp3" + } +} +"engy_taunt_killertime_4_4_burp" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_guzzle_04_burp.mp3" + } +} +"engy_taunt_killertime_5_sit" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/taunt_engineer_lounge_sit.mp3" + } +} +"engy_taunt_killertime_6_close" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/taunt_engineer_lounge_toolbox_close.mp3" + } +} + +"heavy_taunt_dosi_end_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_03.mp3" +} +"heavy_taunt_dosi_end_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_02.mp3" +} +"heavy_taunt_dosi_end_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_04.mp3" +} +"heavy_taunt_dosi_end_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_05.mp3" +} +"heavy_taunt_dosi_end_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_06.mp3" +} +"heavy_taunt_dosi_end_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_07.mp3" +} +"medic_taunt_rps_int_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_int_01.mp3" +} +"scout_taunt_rps_exert_25" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_exert_25.mp3" +} +"scout_taunt_rps_exert_22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_exert_22.mp3" +} +"scout_taunt_rps_exert_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_exert_02.mp3" +} +"scout_taunt_rps_exert_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_exert_03.mp3" +} +"scout_taunt_rps_win_34" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_win_34.mp3" +} +"sniper_taunt_rps_win_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_02.mp3" +} +"sniper_taunt_rps_exert_17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_exert_17.mp3" +} +"sniper_taunt_rps_exert_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_exert_01.mp3" +} +"sniper_taunt_rps_exert_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_exert_02.mp3" +} +"sniper_taunt_rps_exert_16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_exert_16.mp3" +} +"sniper_taunt_rps_win_18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_18.mp3" +} +"sniper_taunt_rps_win_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_15.mp3" +} +"soldier_taunt_rps_win_57" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_win_57.mp3" +} +"soldier_taunt_dosi_fun_30" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_30.mp3" +} +"soldier_taunt_rps_exert_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_exert_11.mp3" +} +"soldier_taunt_rps_int_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_int_01.mp3" +} +"taunt_demo_int_27" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_int_27.mp3" +} +"taunt_demo_rps_exert_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_exert_04.mp3" +} +"taunt_demo_rps_win_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_win_08.mp3" +} +"medic_taunt_rps_exert_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_exert_01.mp3" +} +"medic_taunt_rps_exert_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_exert_07.mp3" +} +"medic_taunt_rps_exert_24" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_exert_24.mp3" +} +"medic_taunt_rps_win_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_win_08.mp3" +} +"medic_taunt_rps_win_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_win_05.mp3" +} +"heavy_taunt_rps_win_33" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_33.mp3" +} +"heavy_taunt_rps_win_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_02.mp3" +} +"spy_taunt_rps_exert_28" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_exert_28.mp3" +} +"spy_taunt_rps_exert_08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_exert_08.mp3" +} +"spy_taunt_rps_exert_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_exert_09.mp3" +} +"spy_taunt_rps_exert_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_exert_10.mp3" +} +"eng_taunt_rps_win_10" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_win_10.mp3" +} +"eng_taunt_rps_exert_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_exert_07.mp3" +} +"eng_taunt_rps_exert_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_exert_01.mp3" +} +"eng_taunt_rps_exert_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_exert_02.mp3" +} +"eng_taunt_rps_exert_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_exert_03.mp3" +} +"pyro_taunt_rps_exert_18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_rps_exert_18.mp3" +} +"pyro_taunt_rps_exert_21" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_rps_exert_21.mp3" +} +"pyro_taunt_rps_exert_22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_rps_exert_22.mp3" +} +"pyro_taunt_rps_exert_23" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_rps_exert_23.mp3" +} +"scout_taunt_rps_win_27" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_win_27.mp3" +} +"sniper_taunt_rps_win_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_14.mp3" +} +"soldier_taunt_rps_win_55" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_win_55.mp3" +} +"taunt_demo_rps_win_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_win_06.mp3" +} +"taunt_demo_rps_win_27" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_win_27.mp3" +} +"medic_taunt_rps_win_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_win_04.mp3" +} +"heavy_taunt_rps_win_34" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_34.mp3" +} +"spy_taunt_rps_win_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_win_11.mp3" +} +"eng_taunt_rps_win_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_win_07.mp3" +} +"scout_taunt_rps_win_36" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_win_36.mp3" +} +"sniper_taunt_rps_win_20" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_20.mp3" +} +"soldier_taunt_rps_win_61" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_win_61.mp3" +} +"medic_taunt_rps_win_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_win_09.mp3" +} +"heavy_taunt_rps_win_38" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_38.mp3" +} +"spy_taunt_rps_win_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_win_09.mp3" +} +"eng_taunt_rps_win_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_win_06.mp3" +} +"scout_taunt_rps_lose_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_lose_12.mp3" +} +"sniper_taunt_rps_lose_22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_lose_22.mp3" +} +"soldier_taunt_rps_lose_21" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_21.mp3" +} +"soldier_taunt_rps_lose_22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_22.mp3" +} +"taunt_demo_rps_lose_09" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_lose_09.mp3" +} +"medic_taunt_rps_lose_19" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_lose_19.mp3" +} +"medic_taunt_rps_lose_17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_lose_17.mp3" +} +"heavy_taunt_rps_lose_18" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_lose_18.mp3" +} +"spy_taunt_rps_lose_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_lose_05.mp3" +} +"eng_taunt_rps_lose_29" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_29.mp3" +} +"pyro_taunt_rps_lose_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/pyro/pyro_taunt_rps_lose_03.mp3" +} +"scout_taunt_rps_lose_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_lose_06.mp3" +} +"scout_taunt_rps_lose_07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_lose_07.mp3" +} +"sniper_taunt_rps_lose_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_lose_06.mp3" +} +"sniper_taunt_rps_lose_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_lose_13.mp3" +} +"soldier_taunt_rps_lose_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_01.mp3" +} +"taunt_demo_rps_lose_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_lose_04.mp3" +} +"medic_taunt_rps_lose_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_lose_12.mp3" +} +"medic_taunt_rps_lose_16" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_lose_16.mp3" +} +"heavy_taunt_rps_lose_11" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_lose_11.mp3" +} +"spy_taunt_rps_lose_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_lose_15.mp3" +} +"eng_taunt_rps_lose_31" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_31.mp3" +} +"eng_taunt_rps_lose_25" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_25.mp3" +} +"scout_taunt_rps_lose_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_lose_01.mp3" +} +"scout_taunt_rps_lose_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_rps_lose_03.mp3" +} +"sniper_taunt_rps_lose_15" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_lose_15.mp3" +} +"sniper_taunt_rps_lose_04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/sniper/sniper_taunt_rps_lose_04.mp3" +} +"soldier_taunt_rps_lose_05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/soldier/soldier_taunt_rps_lose_05.mp3" +} +"taunt_demo_rps_lose_06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_rps_lose_06.mp3" +} +"medic_taunt_rps_lose_14" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/medic/medic_taunt_rps_lose_14.mp3" +} +"heavy_taunt_rps_lose_13" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_rps_lose_13.mp3" +} +"spy_taunt_rps_lose_12" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/spy/spy_taunt_rps_lose_12.mp3" +} +"eng_taunt_rps_lose_22" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/engy/eng_taunt_rps_lose_22.mp3" +} +"scout_taunt_bos_exert_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/scout/scout_taunt_bos_exert_01.mp3" +} +"taunt_demo_burp_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/demo/taunt_demo_burp_03.mp3" +} +"heavy_taunt_flip_fail_17" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/taunts/heavy/heavy_taunt_flip_fail_17.mp3" +} + +//***************************************************************************************** +// RUSSIAN +"soldier_taunt_russian_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_taunt_cong_fun_28.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_int_02.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_cong_int_11.mp3" + "wave" "vo/taunts/soldier/soldier_taunt_dosi_fun_06.mp3" + } +} + +"medic_taunt_russian_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_trade_02.mp3" + "wave" "vo/taunts/medic/medic_trade_03.mp3" + "wave" "vo/taunts/medic/medic_trade_04.mp3" + "wave" "misc/null.wav" + } +} + +"medic_taunt_russian_rand02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/medic/medic_taunt_rps_win_05.mp3" + "wave" "vo/taunts/medic/medic_taunt_rps_win_09.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_03.mp3" + "wave" "vo/taunts/medic/medic_taunt_admire_20.mp3" + } +} + + + +"soldier_taunt_russian_rand02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/soldier/soldier_laughhappy01.mp3" + "wave" "vo/taunts/soldier/soldier_laughhappy02.mp3" + "wave" "vo/taunts/soldier/soldier_laughhappy03.mp3" + "wave" "vo/taunts/soldier/soldier_laughshort04.mp3" + } +} + +"spy_taunt_russian_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_tnt_dosido_init04.mp3" + "wave" "vo/taunts/spy/spy_tnt_nutkick_kick04.mp3" + } +} + +"spy_taunt_russian_rand2" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/spy/spy_tnt_nutkick_kick03.mp3" + "wave" "vo/taunts/spy/spy_laughhappy02.mp3" + } +} +"pyro_taunt_russian_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/pyro/pyro_taunt_flip_fun_10.mp3" + "wave" "vo/taunts/pyro/pyro_taunt_flip_admire_05.mp3" + } +} + +"sniper_taunt_russian_rand_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_int_05.mp3" + + } +} + +"sniper_taunt_russian_rand_rand02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_laughhappy01.mp3" + "wave" "vo/taunts/sniper/sniper_taunt_rps_win_02.mp3" + } +} + +"sniper_taunt_russian_rand01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/sniper/sniper_taunt_dosi_fun_02.mp3" + "wave" "vo/sniper_laughshort01.mp3" + } +} + + +"scout_taunt_russian_rand_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/scout/scout_taunt_int_03.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_05.mp3" + "wave" "vo/taunts/scout/scout_taunt_int_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_10.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_14.mp3" + } +} + +"scout_taunt_russian_rand01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/scout_award01.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_08.mp3" + "wave" "vo/taunts/scout/scout_taunt_conga_fun_11.mp3" + "wave" "vo/taunts/scout/scout_taunt_dosi_fun_15.mp3" + "wave" "vo/taunts/scout/scout_taunt_flip_fun_04.mp3" + "wave" "vo/taunts/scout/scout_taunt_misc_04.mp3" + "wave" "vo/taunts/scout/scout_trade_07.mp3" + } +} + + +"demo_taunt_russian_rand_intro" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_int_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_int_15.mp3" + "wave" "misc/null.wav" + } +} + +"demo_taunt_russian_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_flip_fun_01.mp3" + "wave" "vo/taunts/demo/taunt_demo_rps_win_25.mp3" + "wave" "vo/taunts/demo/demoman_laughhappy02.mp3" + } +} + +"demo_taunt_russian_randend" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo/taunt_demo_rps_win_05.mp3" + "wave" "vo/taunts/demo/taunt_demo_rps_win_28.mp3" + "wave" "misc/null.wav" + "wave" "misc/null.wav" + } +} + +"engy_taunt_russian_rand" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_flip_admire_15.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/engy/engineer_laughhappy03.mp3" + + } +} + +"heavy_taunt_russian_rand_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_cong_fun_19.mp3" + "wave" "vo/taunts/heavy/heavy_laughhappy02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_dosi_end_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_04.mp3" + } +} + +"heavy_taunt_russian_rand_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_dosi_fun_10.mp3" + + "wave" "vo/taunts/heavy/heavy_taunt_kill_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_flip_end_03.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_02.mp3" + } +} + +"demo_taunt_loot_guzzle" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/demo_guzzle_01.mp3" + } +} + +//HEAVY SOVIET SHOWOFF + +"HEAVY_soviet_showoff_01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_exert_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_head_int_01.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_11.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_rps_win_02.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_09.mp3" + "wave" "vo/taunts/heavy/heavy_taunt_exert_12.mp3" + } +} + +"HEAVY_soviet_showoff_02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/heavy/heavy_taunt_exert_13.mp3" + "wave" "vo/heavy_meleeing01.mp3" + "wave" "vo/heavy_meleeing02.mp3" + "wave" "vo/heavy_laughshort02.mp3" + "wave" "vo/heavy_laughshort01.mp3" + "wave" "vo/heavy_cheers01.mp3" + "wave" "vo/heavy_award05.mp3" + } +} + + +"HEAVY_soviet_showoff_03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/heavy_battlecry03.mp3" + "wave" "vo/heavy_battlecry05.mp3" + "wave" "vo/heavy_cheers02.mp3" + } +} + +//engineer bucking bronco + +"engineer_item_preview_engineer_battlecry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_battlecry07.mp3" +} +"engineer_item_preview_sentry_upgrading2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_upgrading2.wav" +} +"engineer_item_preview_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_item_preview_gunslinger_swing" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_swing.wav" +} +"engineer_item_preview_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_item_preview_sentry_move_short2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_move_short2.wav" +} +"engineer_item_preview_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.wav" +} +"engineer_bucking_bronco_engineer_battlecry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/engineer_battlecry07.mp3" +} +"engineer_bucking_bronco_sentry_upgrading2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_upgrading2.wav" +} +"engineer_bucking_bronco_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_bucking_bronco_gunslinger_swing" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_swing.wav" +} +"engineer_bucking_bronco_gunslinger_draw" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/gunslinger_draw.wav" +} +"engineer_bucking_bronco_sentry_move_short2" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"engineer_bucking_bronco_taunt_equipment_jingle4" +{ + "channel" "CHAN_STATIC" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "player/taunt_equipment_jingle4.wav" +} + +"engineer_bucking_bronco_taunt_start" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/engineer_battlecry03.mp3" + "wave" "vo/engineer_battlecry05.mp3" + "wave" "vo/engineer_battlecry06.mp3" + "wave" "vo/engineer_cheers01.mp3" + "wave" "vo/engineer_cheers02.mp3" + "wave" "vo/engineer_cheers07.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_01.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_06.mp3" + "wave" "vo/taunts/engy/eng_taunt_flip_fun_07.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_36.mp3" + "wave" "vo/taunts/engy/eng_taunt_int_37.mp3" + } +} + +"engineer_bucking_bronco_taunt_yells" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "rndwave" + { + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + "wave" "vo/taunts/engy/eng_taunt_dosi_end_02.mp3" + "wave" "vo/taunts/engy/eng_taunt_cong_fun_10.mp3" + "wave" "vo/engineer_cheers02.mp3" + "wave" "vo/engineer_cheers07.mp3" + "wave" "vo/engineer_battlecry07.mp3" + } +} diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_tf2c.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_tf2c.lua new file mode 100644 index 000000000..dce8e0811 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_tf2c.lua @@ -0,0 +1,5735 @@ +// Channels +// CHAN_AUTO = 0, +// CHAN_WEAPON = 1, +// CHAN_VOICE = 2, +// CHAN_ITEM = 3, +// CHAN_BODY = 4, +// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area +// CHAN_STATIC = 6, // allocate channel from the static area +// these can be set with "channel" "2" or "channel" "chan_voice" + +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- + +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f + +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, // 3.9 +// SNDLVL_55dB = 55, // 3.0 +// SNDLVL_IDLE = 60, // 2.0 +// SNDLVL_TALKING = 60, // 2.0 +// SNDLVL_60dB = 60, // 2.0 +// SNDLVL_65dB = 65, // 1.5 +// SNDLVL_STATIC = 66, // 1.25 +// SNDLVL_70dB = 70, // 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, // 0.8 +// SNDLVL_80dB = 80, // 0.7 +// SNDLVL_85dB = 85, // 0.6 +// SNDLVL_90dB = 90, // 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, // 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, // 0.27 +// SNDLVL_140dB = 140, // 0.2 +// SNDLVL_150dB = 150, // 0.2 +// + +//----------------------------------------------------------------------------- +// Player Deaths +//----------------------------------------------------------------------------- + +"Civilian.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/civilian_painsevere01.wav" + "wave" "vo/civilian_painsevere02.wav" + "wave" "vo/civilian_painsevere03.wav" + "wave" "vo/civilian_painsevere04.wav" + } +} + +"Civilian.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/civilian_paincriticaldeath01.wav" + "wave" "vo/civilian_paincriticaldeath02.wav" + "wave" "vo/civilian_paincriticaldeath03.wav" + "wave" "vo/civilian_paincriticaldeath04.wav" + "wave" "vo/civilian_paincriticaldeath05.wav" + "wave" "vo/civilian_paincriticaldeath06.wav" + "wave" "vo/civilian_paincriticaldeath07.wav" + } +} + +"Civilian.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/civilian_paincriticaldeath01.wav" + "wave" "vo/civilian_paincriticaldeath02.wav" + "wave" "vo/civilian_paincriticaldeath03.wav" + "wave" "vo/civilian_paincriticaldeath04.wav" + "wave" "vo/civilian_paincriticaldeath05.wav" + "wave" "vo/civilian_paincriticaldeath06.wav" + "wave" "vo/civilian_paincriticaldeath07.wav" + } +} + +"Civilian.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/civilian_painsharp01.wav" + "wave" "vo/civilian_painsharp02.wav" + "wave" "vo/civilian_painsharp03.wav" + "wave" "vo/civilian_painsharp04.wav" + } +} + +"Civilian.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_ActivateCharge01.wav" +} + +"Civilian.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_ActivateCharge02.wav" +} + +"Civilian.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_ActivateCharge03.wav" +} + +"Civilian.ActivateCharge04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_ActivateCharge04.wav" +} + +"Civilian.ActivateCharge05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_ActivateCharge05.wav" +} + +"Civilian.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedControlPoint01.wav" +} + +"Civilian.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedControlPoint02.wav" +} + +"Civilian.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedControlPoint03.wav" +} + +"Civilian.AutoCappedControlPoint04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedControlPoint04.wav" +} + +"Civilian.AutoCappedControlPoint05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedControlPoint05.wav" +} + +"Civilian.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedIntelligence01.wav" +} + +"Civilian.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedIntelligence02.wav" +} + +"Civilian.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedIntelligence03.wav" +} + +"Civilian.AutoCappedIntelligence04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoCappedIntelligence04.wav" +} + +"Civilian.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoDejectedTie01.wav" +} + +"Civilian.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoDejectedTie02.wav" +} + +"Civilian.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire01.wav" +} + +"Civilian.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire02.wav" +} + +"Civilian.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire03.wav" +} + +"Civilian.AutoOnFire04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire04.wav" +} + +"Civilian.AutoOnFire05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire05.wav" +} + +"Civilian.AutoOnFire06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire06.wav" +} + +"Civilian.AutoOnFire07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_AutoOnFire07.wav" +} + +"Civilian.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry01.wav" +} + +"Civilian.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry02.wav" +} + +"Civilian.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry03.wav" +} + +"Civilian.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry04.wav" +} + +"Civilian.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry05.wav" +} + +"Civilian.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry06.wav" +} + +"Civilian.BattleCry07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry07.wav" +} + +"Civilian.BattleCry08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_BattleCry08.wav" +} + +"Civilian.CartMovingForwardOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartmovingforwardoffense01.wav" +} + +"Civilian.CartMovingForwardOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartmovingforwardoffense02.wav" +} + +"Civilian.CartMovingForwardOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartmovingforwardoffense03.wav" +} + +"Civilian.CartMovingForwardOffense04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartmovingforwardoffense04.wav" +} + +"Civilian.CartStayCloseOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartstaycloseoffense01.wav" +} + +"Civilian.CartStayCloseOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartstaycloseoffense02.wav" +} + +"Civilian.CartStayCloseOffense03" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartstaycloseoffense03.wav" +} + +"Civilian.CartStoppedOffense01" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartstoppedoffense01.wav" +} + +"Civilian.CartStoppedOffense02" +{ + "channel" "CHAN_VOICE" + "volume" "1.000" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + "wave" "vo/civilian_cartstoppedoffense02.wav" +} + +"Civilian.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Cheers01.wav" +} + +"Civilian.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Cheers02.wav" +} + +"Civilian.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Cheers03.wav" +} + +"Civilian.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpy01.wav" +} + +"Civilian.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpy02.wav" +} + +"Civilian.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify01.wav" +} + +"Civilian.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify02.wav" +} + +"Civilian.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify03.wav" +} + +"Civilian.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify04.wav" +} + +"Civilian.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify05.wav" +} + +"Civilian.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify06.wav" +} + +"Civilian.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify07.wav" +} + +"Civilian.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify08.wav" +} + +"Civilian.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify09.wav" +} + +"Civilian.CloakedSpyIdentify10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_CloakedSpyIdentify10.wav" +} + +"Civilian.Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination01.wav" +} + +"Civilian.Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination02.wav" +} + +"Civilian.Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination03.wav" +} + +"Civilian.Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination04.wav" +} + +"Civilian.Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination05.wav" +} +"Civilian.Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination06.wav" +} +"Civilian.Domination07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Domination07.wav" +} + +"Civilian.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Go01.wav" +} + +"Civilian.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Go02.wav" +} + +"Civilian.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Go03.wav" +} + +"Civilian.Go04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Go04.wav" +} + +"Civilian.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_GoodJob01.wav" +} + +"Civilian.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_GoodJob02.wav" +} + +"Civilian.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_GoodJob03.wav" +} + +"Civilian.GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_GoodJob04.wav" +} + +"Civilian.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HeadLeft01.wav" +} + +"Civilian.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HeadLeft02.wav" +} + +"Civilian.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HeadLeft03.wav" +} + +"Civilian.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HeadRight01.wav" +} + +"Civilian.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HeadRight02.wav" +} + +"Civilian.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HeadRight03.wav" +} + +"Civilian.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMe01.wav" +} + +"Civilian.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMe02.wav" +} + +"Civilian.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMe03.wav" +} + +"Civilian.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMeCapture01.wav" +} + +"Civilian.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMeCapture02.wav" +} + +"Civilian.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMeCapture03.wav" +} + +"Civilian.HelpMeCapture04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_HelpMeCapture04.wav" +} + +"Civilian.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Incoming01.wav" +} + +"Civilian.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Incoming02.wav" +} + +"Civilian.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Incoming03.wav" +} + +"Civilian.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Jeers01.wav" +} + +"Civilian.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Jeers02.wav" +} + +"Civilian.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Jeers03.wav" +} + +"Civilian.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Jeers04.wav" +} + +"Civilian.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Jeers05.wav" +} + +"Civilian.LowHealth01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_LowHealth01.wav" +} + +"Civilian.LowHealth02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_LowHealth02.wav" +} + +"Civilian.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Medic01.wav" +} + +"Civilian.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Medic02.wav" +} + +"Civilian.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Medic03.wav" +} + +"Civilian.MedicFollow01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_medicfollow01.wav" +} + +"Civilian.MedicFollow02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_medicfollow02.wav" +} + +"Civilian.MedicFollow03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_medicfollow03.wav" +} + +"Civilian.MedicFollow04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_medicfollow04.wav" +} + +"Civilian.MedicFollow05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_medicfollow05.wav" +} + +"Civilian.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_MoveUp01.wav" +} + +"Civilian.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_MoveUp02.wav" +} + +"Civilian.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_MoveUp03.wav" +} + +"Civilian.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NeedDispenser01.wav" +} + +"Civilian.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NeedSentry01.wav" +} + +"Civilian.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NeedTeleporter01.wav" +} + +"Civilian.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NegativeVocalization01.wav" +} + +"Civilian.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NegativeVocalization02.wav" +} + +"Civilian.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NegativeVocalization03.wav" +} + +"Civilian.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NegativeVocalization04.wav" +} + +"Civilian.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NegativeVocalization05.wav" +} + +"Civilian.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NiceShot01.wav" +} + +"Civilian.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NiceShot02.wav" +} + +"Civilian.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_NiceShot03.wav" +} + +"Civilian.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_No01.wav" +} + +"Civilian.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_No02.wav" +} + +"Civilian.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_No03.wav" +} + +"Civilian.No04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_No04.wav" +} + +"Civilian.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSevere01.wav" +} + +"Civilian.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSevere02.wav" +} + +"Civilian.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSevere03.wav" +} + +"Civilian.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSevere04.wav" +} + +"Civilian.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSharp01.wav" +} + +"Civilian.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSharp02.wav" +} + +"Civilian.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSharp03.wav" +} + +"Civilian.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PainSharp04.wav" +} + +"Civilian.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PositiveVocalization01.wav" +} + +"Civilian.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PositiveVocalization02.wav" +} + +"Civilian.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_PositiveVocalization03.wav" +} + +"Civilian.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SentryAhead01.wav" +} + +"Civilian.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SentryAhead02.wav" +} + +"Civilian.SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SentryAhead03.wav" +} + +"Civilian.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_StandOnThePoint01.wav" +} + +"Civilian.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_StandOnThePoint02.wav" +} + +"Civilian.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Thanks01.wav" +} + +"Civilian.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Thanks02.wav" +} + +"Civilian.Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Thanks03.wav" +} + +"Civilian.Thanks04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Thanks04.wav" +} + +"Civilian.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Yes01.wav" +} + +"Civilian.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Yes02.wav" +} + +"Civilian.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Yes03.wav" +} + +"Civilian.Yes04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Yes04.wav" +} + +"Civilian.Yes05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Yes05.wav" +} + +"Civilian.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SpecialCompleted01.wav" +} + +"Civilian.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SpecialCompleted02.wav" +} + +"Civilian.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SpecialCompleted03.wav" +} + +"Civilian.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_SpecialCompleted04.wav" +} + +"Civilian.Success01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success01.wav" +} + +"Civilian.Success02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success02.wav" +} + +"Civilian.Success03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success03.wav" +} + +"Civilian.Success04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success04.wav" +} + +"Civilian.Success05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success05.wav" +} + +"Civilian.Success06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success06.wav" +} + +"Civilian.Success07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success07.wav" +} + +"Civilian.Success08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Success08.wav" +} + +"Civilian.Failure01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Failure01.wav" +} + +"Civilian.Failure02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Failure02.wav" +} + +"Civilian.Failure03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Failure03.wav" +} + +"Civilian.Failure04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Failure04.wav" +} + +"Civilian.Failure05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/civilian_Failure05.wav" +} + +/// +/// +/// + +"Announcer.Dom_LeadGained" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_plr_racegeneral01.wav" + "wave" "vo/announcer_am_killstreak01.wav" + "wave" "vo/announcer_am_killstreak02.wav" + "wave" "vo/announcer_am_killstreak07.wav" + "wave" "vo/announcer_am_killstreak08.wav" + } + +} + +"Announcer.Dom_LeadLost" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_plr_racegeneral02.wav" + "wave" "vo/announcer_plr_racegeneral04.wav" + "wave" "vo/announcer_plr_racegeneral15.wav" + } +} + +"Announcer.Dom_TeamGettingClose" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "wave" "vo/announcer_plr_racegeneral12.wav" +} + +"Announcer.Dom_EnemyGettingClose" +{ + "channel" "CHAN_VOICE2" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "vo/announcer_plr_racegeneral03.wav" + "wave" "vo/announcer_plr_racegeneral11.wav" + } +} + +/// +/// +/// + +"Medic.TauntsSyringe" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/medic_taunts_syringe.wav" +} + +"Mercenary.Jumpsound" +{ + "channel" "CHAN_NONE" + "volume" "0.6" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mercenary_jump01.wav" + "wave" "vo/mercenary_jump02.wav" + "wave" "vo/mercenary_jump03.wav" + } +} + +//Mercenary +//===================================================// + +"Mercenary.Death" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mercenary_painsevere01.wav" + "wave" "vo/mercenary_painsevere02.wav" + "wave" "vo/mercenary_painsevere03.wav" + "wave" "vo/mercenary_painsevere04.wav" + "wave" "vo/mercenary_painsevere05.wav" + "wave" "vo/mercenary_painsevere06.wav" + } +} + +"Mercenary.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mercenary_paincrticialdeath01.wav" + "wave" "vo/mercenary_paincrticialdeath02.wav" + "wave" "vo/mercenary_paincrticialdeath03.wav" + "wave" "vo/mercenary_paincrticialdeath04.wav" + } +} + +"Mercenary.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mercenary_paincrticialdeath01.wav" + "wave" "vo/mercenary_paincrticialdeath02.wav" + "wave" "vo/mercenary_paincrticialdeath03.wav" + "wave" "vo/mercenary_paincrticialdeath04.wav" + } +} + +"Mercenary.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/mercenary_painsharp01.wav" + "wave" "vo/mercenary_painsharp02.wav" + "wave" "vo/mercenary_painsharp03.wav" + "wave" "vo/mercenary_painsharp04.wav" + "wave" "vo/mercenary_painsharp05.wav" + } +} + +"Mercenary.ActivateCharge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ActivateCharge01.wav" +} + +"Mercenary.ActivateCharge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ActivateCharge02.wav" +} + +"Mercenary.ActivateCharge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ActivateCharge03.wav" +} + +"Mercenary.AutoCappedControlPoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoCappedControlPoint01.wav" +} + +"Mercenary.AutoCappedControlPoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoCappedControlPoint02.wav" +} + +"Mercenary.AutoCappedControlPoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoCappedControlPoint03.wav" +} + +"Mercenary.AutoCappedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoCappedIntelligence01.wav" +} + +"Mercenary.AutoCappedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoCappedIntelligence02.wav" +} + +"Mercenary.AutoCappedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoCappedIntelligence03.wav" +} + +"Mercenary.AutoGrabbedIntelligence01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoGrabbedIntelligence01.wav" +} + +"Mercenary.AutoGrabbedIntelligence02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoGrabbedIntelligence02.wav" +} + +"Mercenary.AutoGrabbedIntelligence03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoGrabbedIntelligence03.wav" +} + +"Mercenary.AutoDejectedTie01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoDejectedTie01.wav" +} + +"Mercenary.AutoDejectedTie02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoDejectedTie02.wav" +} + +"Mercenary.AutoDejectedTie03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoDejectedTie03.wav" +} + +"Mercenary.AutoOnFire01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoOnFire01.wav" +} + +"Mercenary.AutoOnFire02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoOnFire02.wav" +} + +"Mercenary.AutoOnFire03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_AutoOnFire03.wav" +} + +"Mercenary.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_BattleCry01.wav" +} + +"Mercenary.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_BattleCry02.wav" +} + +"Mercenary.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_BattleCry03.wav" +} + +"Mercenary.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_BattleCry04.wav" +} + +"Mercenary.BattleCry05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_BattleCry05.wav" +} + +"Mercenary.BattleCry06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_BattleCry06.wav" +} + +"Mercenary.Berserk01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_berserk01.wav" +} + +"Mercenary.Berserk02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_berserk02.wav" +} + +"Mercenary.Berserk03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_berserk03.wav" +} + +"Mercenary.Berserk04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_berserk04.wav" +} + +"Mercenary.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Cheers01.wav" +} + +"Mercenary.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Cheers02.wav" +} + +"Mercenary.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Cheers03.wav" +} + +"Mercenary.Cheers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Cheers04.wav" +} + +"Mercenary.Cheers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Cheers05.wav" +} + +"Mercenary.Cheers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Cheers06.wav" +} + +"Mercenary.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpy01.wav" +} + +"Mercenary.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpy02.wav" +} + +"Mercenary.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpy03.wav" +} + +"Mercenary.CloakedSpyIdentify01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify01.wav" +} + +"Mercenary.CloakedSpyIdentify02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify02.wav" +} + +"Mercenary.CloakedSpyIdentify03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify03.wav" +} + +"Mercenary.CloakedSpyIdentify04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify04.wav" +} + +"Mercenary.CloakedSpyIdentify05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify05.wav" +} + +"Mercenary.CloakedSpyIdentify06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify06.wav" +} + +"Mercenary.CloakedSpyIdentify07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify07.wav" +} + +"Mercenary.CloakedSpyIdentify08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify08.wav" +} + +"Mercenary.CloakedSpyIdentify09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_CloakedSpyIdentify09.wav" +} + +"Mercenary.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Go01.wav" +} + +"Mercenary.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Go02.wav" +} + +"Mercenary.Go03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Go03.wav" +} + +"Mercenary.Go04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Go04.wav" +} + +"Mercenary.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_GoodJob01.wav" +} + +"Mercenary.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_GoodJob02.wav" +} + +"Mercenary.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_GoodJob03.wav" +} + +"Mercenary.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HeadLeft01.wav" +} + +"Mercenary.HeadLeft02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HeadLeft02.wav" +} + +"Mercenary.HeadLeft03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HeadLeft03.wav" +} + +"Mercenary.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HeadRight01.wav" +} + +"Mercenary.HeadRight02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HeadRight02.wav" +} + +"Mercenary.HeadRight03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HeadRight03.wav" +} + +"Mercenary.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMe01.wav" +} + +"Mercenary.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMe02.wav" +} + +"Mercenary.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMe03.wav" +} + +"Mercenary.HelpMeCapture01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeCapture01.wav" +} + +"Mercenary.HelpMeCapture02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeCapture02.wav" +} + +"Mercenary.HelpMeCapture03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeCapture03.wav" +} + +"Mercenary.HelpMeDefend01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeDefend01.wav" +} + +"Mercenary.HelpMeDefend02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeDefend02.wav" +} + +"Mercenary.HelpMeDefend03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeDefend03.wav" +} + +"Mercenary.HelpMeDefend04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_HelpMeDefend04.wav" +} + +"Mercenary.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Incoming01.wav" +} + +"Mercenary.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Incoming02.wav" +} + +"Mercenary.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Incoming03.wav" +} + +"Mercenary.Incoming04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Incoming04.wav" +} + +"Mercenary.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers01.wav" +} + +"Mercenary.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers02.wav" +} + +"Mercenary.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers03.wav" +} + +"Mercenary.Jeers04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers04.wav" +} + +"Mercenary.Jeers05" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers05.wav" +} + +"Mercenary.Jeers06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers06.wav" +} + +"Mercenary.Jeers07" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers07.wav" +} + +"Mercenary.Jeers08" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers08.wav" +} + +"Mercenary.Jeers09" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers09.wav" +} + +"Mercenary.Jeers10" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers10.wav" +} + +"Mercenary.Jeers11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers11.wav" +} + +"Mercenary.Jeers12" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Jeers12.wav" +} + +"Mercenary.LaughEvil01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughEvil01.wav" +} + +"Mercenary.LaughEvil02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughEvil02.wav" +} + +"Mercenary.LaughEvil03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughEvil03.wav" +} + +"Mercenary.LaughHappy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughHappy01.wav" +} + +"Mercenary.LaughHappy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughHappy02.wav" +} + +"Mercenary.LaughHappy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughHappy03.wav" +} + +"Mercenary.LaughLong01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughLong01.wav" +} + +"Mercenary.LaughLong02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughLong02.wav" +} + +"Mercenary.LaughLong03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughLong03.wav" +} + +"Mercenary.LaughShort01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughShort01.wav" +} + +"Mercenary.LaughShort02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughShort02.wav" +} + +"Mercenary.LaughShort03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughShort03.wav" +} + +"Mercenary.LaughShort04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_LaughShort04.wav" +} + +"Mercenary.Scream" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_berserk01.wav" +} + +"Mercenary.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Medic01.wav" +} + +"Mercenary.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Medic02.wav" +} + +"Mercenary.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Medic03.wav" +} + +"Mercenary.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_MoveUp01.wav" +} + +"Mercenary.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_MoveUp02.wav" +} + +"Mercenary.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_MoveUp03.wav" +} + +"Mercenary.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NeedDispenser01.wav" +} + +"Mercenary.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NeedSentry01.wav" +} + +"Mercenary.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NeedTeleporter01.wav" +} + +"Mercenary.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NegativeVocalization01.wav" +} + +"Mercenary.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NegativeVocalization02.wav" +} + +"Mercenary.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NegativeVocalization03.wav" +} + +"Mercenary.NegativeVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NegativeVocalization04.wav" +} + +"Mercenary.NegativeVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NegativeVocalization05.wav" +} + +"Mercenary.NegativeVocalization06" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NegativeVocalization06.wav" +} + +"Mercenary.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NiceShot01.wav" +} + +"Mercenary.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NiceShot02.wav" +} + +"Mercenary.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_NiceShot03.wav" +} + +"Mercenary.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_No01.wav" +} + +"Mercenary.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_No02.wav" +} + +"Mercenary.No03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_No03.wav" +} + + + +"Mercenary.PainCrticialDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainCrticialDeath01.wav" +} + +"Mercenary.PainCrticialDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainCrticialDeath02.wav" +} + +"Mercenary.PainCrticialDeath03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainCrticialDeath03.wav" +} + +"Mercenary.PainCrticialDeath04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainCrticialDeath04.wav" +} + +"Mercenary.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSevere01.wav" +} + +"Mercenary.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSevere02.wav" +} + +"Mercenary.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSevere03.wav" +} + +"Mercenary.PainSevere04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSevere04.wav" +} + +"Mercenary.PainSevere05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSevere05.wav" +} + +"Mercenary.PainSevere06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSevere06.wav" +} + +"Mercenary.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp01.wav" +} + +"Mercenary.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp02.wav" +} + +"Mercenary.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp03.wav" +} + +"Mercenary.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp04.wav" +} + +"Mercenary.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp05.wav" +} + +"Mercenary.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp06.wav" +} + +"Mercenary.PainSharp07" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp07.wav" +} + +"Mercenary.PainSharp08" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PainSharp08.wav" +} + +"Mercenary.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PositiveVocalization01.wav" +} + +"Mercenary.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PositiveVocalization02.wav" +} + +"Mercenary.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PositiveVocalization03.wav" +} + +"Mercenary.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PositiveVocalization04.wav" +} + +"Mercenary.PositiveVocalization05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_PositiveVocalization05.wav" +} + + +"Mercenary.PowerupSpent01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_powerup_spent01.wav" +} +"Mercenary.PowerupSpent02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_powerup_spent02.wav" +} +"Mercenary.PowerupSpent03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_powerup_spent03.wav" +} + +"Mercenary.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SentryAhead01.wav" +} + +"Mercenary.SentryAhead02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SentryAhead02.wav" +} + +"Mercenary.SentryAhead03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SentryAhead03.wav" +} + +"Mercenary.SpecialCompleted-AssistedKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SpecialCompleted-AssistedKill01.wav" +} + +"Mercenary.SpecialCompleted01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SpecialCompleted01.wav" +} + +"Mercenary.SpecialCompleted02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SpecialCompleted02.wav" +} + +"Mercenary.SpecialCompleted03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SpecialCompleted03.wav" +} + +"Mercenary.SpecialCompleted04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SpecialCompleted04.wav" +} + +"Mercenary.SpecialCompleted05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_SpecialCompleted05.wav" +} + +"Mercenary.StandOnThePoint01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_StandOnThePoint01.wav" +} + +"Mercenary.StandOnThePoint02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_StandOnThePoint02.wav" +} + +"Mercenary.StandOnThePoint03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_StandOnThePoint03.wav" +} + +"Mercenary.Taunts01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts01.wav" +} + +"Mercenary.Taunts02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts02.wav" +} + +"Mercenary.Taunts03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts03.wav" +} + +"Mercenary.Taunts04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts04.wav" +} + +"Mercenary.Taunts05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts05.wav" +} + +"Mercenary.Taunts06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts06.wav" +} + +"Mercenary.Taunts07" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts07.wav" +} + +"Mercenary.Taunts08" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts08.wav" +} + +"Mercenary.Taunts09" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts09.wav" +} + +"Mercenary.Taunts10" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts10.wav" +} + +"Mercenary.Taunts11" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts11.wav" +} + +"Mercenary.Taunts12" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts12.wav" +} + +"Mercenary.Taunts13" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts13.wav" +} + +"Mercenary.Taunts14" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts14.wav" +} + +"Mercenary.Taunts15" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts15.wav" +} + +"Mercenary.Taunts16" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts16.wav" +} + +"Mercenary.Taunts17" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts17.wav" +} + +"Mercenary.Taunts18" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts18.wav" +} + +"Mercenary.Taunts19" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts19.wav" +} + +"Mercenary.Taunts20" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts20.wav" +} + +"Mercenary.Taunts21" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/taunts/Mercenary_Taunts21.wav" +} + +"Mercenary.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Thanks01.wav" +} + +"Mercenary.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Thanks02.wav" +} + +"Mercenary.ThanksForTheHeal01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ThanksForTheHeal01.wav" +} + +"Mercenary.ThanksForTheHeal02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ThanksForTheHeal02.wav" +} + +"Mercenary.ThanksForTheHeal03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ThanksForTheHeal03.wav" +} + +"Mercenary.ThanksForTheTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ThanksForTheTeleporter01.wav" +} + +"Mercenary.ThanksForTheTeleporter02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ThanksForTheTeleporter02.wav" +} + +"Mercenary.ThanksForTheTeleporter03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ThanksForTheTeleporter03.wav" +} + +"Mercenary.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Yes01.wav" +} + +"Mercenary.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Yes02.wav" +} + +"Mercenary.Yes03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Yes03.wav" +} + +"Mercenary.Yes04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Yes04.wav" +} + +"Mercenary.Fallscream" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_fallscream01.wav" +} + +"Mercenary.Domination01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Domination01.wav" +} + +"Mercenary.Domination02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Domination02.wav" +} + +"Mercenary.Domination03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Domination03.wav" +} + +"Mercenary.Domination04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Domination04.wav" +} + +"Mercenary.Domination05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Domination05.wav" +} + +"Mercenary.Domination06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Domination06.wav" +} + +"Mercenary.Respawn01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Respawn01.wav" +} + +"Mercenary.Respawn02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Respawn02.wav" +} + +"Mercenary.Respawn03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Respawn03.wav" +} + +"Mercenary.RespawnKilled01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Respawn04.wav" +} + +"Mercenary.Revenge01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Revenge01.wav" +} + +"Mercenary.Revenge02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Revenge02.wav" +} + +"Mercenary.Revenge03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Revenge03.wav" +} + +"Mercenary.RevolverKill01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Revolver_Kill01.wav" +} + +"Mercenary.ShotgunKill01" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_Shotgun_Kill01.wav" +} + +"Mercenary.ExplosiveKill01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ExplosiveKill01.wav" +} + +"Mercenary.ExplosiveKill02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ExplosiveKill02.wav" +} + +"Mercenary.ExplosiveKill03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ExplosiveKill03.wav" +} + +"Mercenary.ExplosiveKill04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_ExplosiveKill04.wav" +} + +//4TH VOICE MENU SHIT + +"Mercenary.WarnAmmo1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_ammohere01.wav" +} + +"Mercenary.WarnAmmo2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_ammohere02.wav" +} +"Mercenary.WarnAmmo3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_ammohere03.wav" +} +"Mercenary.WarnAmmo4" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_ammohere04.wav" +} + +"Mercenary.WarnAntlion1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_antlions01.wav" +} + +"Mercenary.WarnAntlion2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_antlions02.wav" +} + +"Mercenary.WarnAntlion3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_antlions03.wav" +} + +"Mercenary.WarnAntlion4" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_antlions04.wav" +} + +"Mercenary.WarnCombine1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_combines01.wav" +} + + +"Mercenary.WarnCombine2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_combines02.wav" +} + + +"Mercenary.WarnCombine3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_combines03.wav" +} + +"Mercenary.WarnHeadcrabs1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_headcrabs01.wav" +} + +"Mercenary.WarnHeadcrabs2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_headcrabs02.wav" +} + +"Mercenary.WarnHealth1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_healthhere01.wav" +} + +"Mercenary.WarnHealth2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_healthhere02.wav" +} + +"Mercenary.WarnHealth3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_healthhere03.wav" +} + +"Mercenary.WarnRebels1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_rebels01.wav" +} + +"Mercenary.WarnRebels2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_rebels02.wav" +} + +"Mercenary.WarnRebels3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/Mercenary_warn_rebels03.wav" +} + +"Mercenary.WarnStrider1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_strider01.wav" +} + +"Mercenary.WarnStrider2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_strider02.wav" +} + +"Mercenary.WarnStrider3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_strider03.wav" +} + +"Mercenary.WarnStrider4" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_strider04.wav" +} + +"Mercenary.WarnZombie1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_zombies01.wav" +} + +"Mercenary.WarnZombie2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_zombies02.wav" +} + +"Mercenary.WarnTrap1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_trap01.wav" +} + +"Mercenary.WarnTrap2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/mercenary_warn_trap02.wav" +} + +//----------------------------------------------------------------------------- +//Bunny Girl Voice Lines (Telecon) +//----------------------------------------------------------------------------- + +"Telecon.Medic01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Medic000.wav" +} + +"Telecon.Medic02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Medic001.wav" +} + +"Telecon.Medic03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Medic002.wav" +} + +"Telecon.Thanks01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Thanks000.wav" +} + +"Telecon.Thanks02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Thanks001.wav" +} + +"Telecon.Thanks03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Thanks002.wav" +} + +"Telecon.Go01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Go000.wav" +} + +"Telecon.Go02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Go001.wav" +} + +"Telecon.MoveUp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_MoveUp000.wav" +} + +"Telecon.MoveUp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_MoveUp001.wav" +} + +"Telecon.MoveUp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_MoveUp002.wav" +} + +"Telecon.MoveUp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_MoveUp003.wav" +} + +"Telecon.HeadLeft01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_HeadLeft000.wav" +} + +"Telecon.HeadRight01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_HeadRight000.wav" +} + +"Telecon.Yes01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Yes000.wav" +} + +"Telecon.Yes02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Yes001.wav" +} + +"Telecon.No01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_No000.wav" +} + +"Telecon.No02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_No001.wav" +} + +"Telecon.Incoming01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Incoming000.wav" +} + +"Telecon.Incoming02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Incoming001.wav" +} + +"Telecon.Incoming03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Incoming002.wav" +} + +"Telecon.Incoming04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Incoming003.wav" +} + +"Telecon.CloakedSpy01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_CloakedSpy000.wav" +} + +"Telecon.CloakedSpy02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_CloakedSpy001.wav" +} + +"Telecon.CloakedSpy03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_CloakedSpy002.wav" +} + +"Telecon.SentryAhead01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_SentryAhead000.wav" +} + +"Telecon.NeedTeleporter01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_NeedTeleporter000.wav" +} + +"Telecon.NeedSentry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_NeedSentry000.wav" +} + +"Telecon.NeedDispenser01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_NeedDispenser000.wav" +} + +"Telecon.HelpMe01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Help000.wav" +} + +"Telecon.HelpMe02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Help001.wav" +} + +"Telecon.HelpMe03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_Help002.wav" +} + +"Telecon.BattleCry01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_BattleCry000.wav" +} + +"Telecon.BattleCry02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_BattleCry001.wav" +} + +"Telecon.BattleCry03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_BattleCry002.wav" +} + +"Telecon.BattleCry04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_BattleCry003.wav" +} + +"Telecon.Cheers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Cheers000.wav" +} + +"Telecon.Cheers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Cheers001.wav" +} + +"Telecon.Cheers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Cheers002.wav" +} + +"Telecon.Jeers01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Jeers000.wav" +} + +"Telecon.Jeers02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Jeers001.wav" +} + +"Telecon.Jeers03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Jeers002.wav" +} + +"Telecon.PositiveVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Positive000.wav" +} + +"Telecon.PositiveVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Positive001.wav" +} + +"Telecon.PositiveVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Positive002.wav" +} + +"Telecon.PositiveVocalization04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Positive003.wav" +} + +"Telecon.NegativeVocalization01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Negative000.wav" +} + +"Telecon.NegativeVocalization02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Negative001.wav" +} + +"Telecon.NegativeVocalization03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_120dB" + + "wave" "vo/telecon_Negative002.wav" +} + +"Telecon.NiceShot01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_NiceShot000.wav" +} + +"Telecon.NiceShot02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_NiceShot001.wav" +} + +"Telecon.NiceShot03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_NiceShot002.wav" +} + +"Telecon.GoodJob01" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_GoodJob000.wav" +} + +"Telecon.GoodJob02" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_GoodJob001.wav" +} + +"Telecon.GoodJob03" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_GoodJob002.wav" +} + +"Telecon.GoodJob04" +{ + "channel" "CHAN_VOICE" + "volume" "0.620" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon_GoodJob003.wav" +} + +//TELECON 4TH VC MENU + +"Telecon.WarnAmmo1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_ammohere01.wav" +} + +"Telecon.WarnAmmo2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_ammohere02.wav" +} +"Telecon.WarnAmmo3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_ammohere03.wav" +} + +"Telecon.WarnAntlion1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_antlions01.wav" +} + +"Telecon.WarnAntlion2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_antlions02.wav" +} + +"Telecon.WarnAntlion3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_antlions03.wav" +} + +"Telecon.WarnCombine1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_combines01.wav" +} + + +"Telecon.WarnCombine2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_combines02.wav" +} + + +"Telecon.WarnCombine3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_combines03.wav" +} + +"Telecon.WarnHeadcrabs1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_headcrabs01.wav" +} + +"Telecon.WarnHeadcrabs2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_headcrabs02.wav" +} + +"Telecon.WarnHealth1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_healthhere01.wav" +} + +"Telecon.WarnHealth2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_healthhere02.wav" +} + +"Telecon.WarnHealth3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_healthhere03.wav" +} + +"Telecon.WarnRebels1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_rebels01.wav" +} + +"Telecon.WarnRebels2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_rebels02.wav" +} + +"Telecon.WarnRebels3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_rebels03.wav" +} + +"Telecon.WarnStrider1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_strider01.wav" +} + +"Telecon.WarnStrider2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_strider02.wav" +} + +"Telecon.WarnStrider3" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_strider03.wav" +} + +"Telecon.WarnZombie1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_zombies01.wav" +} + +"Telecon.WarnZombie2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_zombies02.wav" +} + +"Telecon.WarnTrap1" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_trap01.wav" +} + +"Telecon.WarnTrap2" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/robo_warn_trap02.wav" +} + +"Telecon.CritDeath01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/critdeath1.wav" +} + +"Telecon.CritDeath02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/critdeath2.wav" +} + +"Telecon.PainSevere01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsevere1.wav" +} + +"Telecon.PainSevere02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsevere2.wav" +} + +"Telecon.PainSevere03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsevere3.wav" +} + +"Telecon.PainSharp01" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp1.wav" +} + +"Telecon.PainSharp02" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp2.wav" +} + +"Telecon.PainSharp03" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp3.wav" +} +"Telecon.PainSharp04" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp4.wav" +} +"Telecon.PainSharp05" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp5.wav" +} + +"Telecon.PainSharp06" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp6.wav" +} + +// classes NEED death sounds + +"Telecon.Death" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsevere1.wav" + "wave" "vo/telecon/painsevere2.wav" + "wave" "vo/telecon/painsevere3.wav" +} + +"Telecon.CritDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/critdeath1.wav" + "wave" "vo/telecon/critdeath2.wav" +} + +"Telecon.MeleeDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/critdeath1.wav" + "wave" "vo/telecon/critdeath2.wav" +} + +"Telecon.ExplosionDeath" +{ + "channel" "CHAN_VOICE" + "volume" "0.820" + "pitch" "PITCH_NORM" + + "soundlevel" "SNDLVL_95dB" + + "wave" "vo/telecon/painsharp1.wav" + "wave" "vo/telecon/painsharp2.wav" + "wave" "vo/telecon/painsharp3.wav" + "wave" "vo/telecon/painsharp4.wav" + "wave" "vo/telecon/painsharp5.wav" + "wave" "vo/telecon/painsharp6.wav" +} +//----------------------------------------------------------------- +// End of cringe +// YOU'RE CRINGE!!!!!! +//----------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_vo_tough_break.lua b/gamemodes/tf/gamemode/contents/game_sounds_vo_tough_break.lua new file mode 100644 index 000000000..c48aeb711 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_vo_tough_break.lua @@ -0,0 +1,340 @@ +//----------------------------------------------------------------------------- +//Tough Break Miss Pauling Contracts +//----------------------------------------------------------------------------- +// +"toughbreak_get_contract" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/toughbreak/plng_toughbreak_contractgive01.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgive02.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgive03.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgive04.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgive05.mp3" + } +} +"toughbreak_get_contract_rare" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_ambush.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_beergarden.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_bookclub.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_boxing.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_bus.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_campfire.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_cavetour.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_conference.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_gargoyles.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_gunshow.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_hotdog.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_keyparty.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_ladiesnight.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_ontherocks.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_piano.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_poopyjoe.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_pottery.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_raccoons.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_shakespearicles.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_tiger.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_tugboat.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_turducken.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_visionquest.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractgiverare_winetasting.mp3" + } +} +"toughbreak_win_contract_pauling" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/toughbreak/plng_toughbreak_contractwin01.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractwin02.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractwin03.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractwin04.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractwin05.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractwin06.mp3" + "wave" "vo/toughbreak/plng_toughbreak_contractwin07.mp3" + } +} +//----------------------------------------------------------------------------- +//Tough Break Merc Contracts +//----------------------------------------------------------------------------- +// +"toughbreak_win_contract_demo" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/demo_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_easy_03.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_easy_04.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_easy_05.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_easy_06.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_easy_07.mp3" + } +} +"toughbreak_win_bigcontract_demo" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/demo_quest_complete_hard_01.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_hard_03.mp3" + "wave" "/vo/toughbreak/demo_quest_complete_hard_05.mp3" + } +} +"toughbreak_win_contract_engie" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/eng_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_04.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_07.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_08.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_09.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_11.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_13.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_14.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_15.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_easy_16.mp3" + } +} +"toughbreak_win_bigcontract_engie" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/eng_quest_complete_hard_02.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_hard_03.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_hard_04.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_hard_05.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_hard_06.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_hard_07.mp3" + "wave" "/vo/toughbreak/eng_quest_complete_hard_10.mp3" + } +} +"toughbreak_win_contract_heavy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/heavy_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/heavy_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/heavy_quest_complete_easy_06.mp3" + } +} +"toughbreak_win_bigcontract_heavy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/heavy_quest_complete_hard_01.mp3" + "wave" "/vo/toughbreak/heavy_quest_complete_hard_02.mp3" + "wave" "/vo/toughbreak/heavy_quest_complete_hard_07.mp3" + } +} +"toughbreak_win_contract_scout" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/scout_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_easy_03.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_easy_04.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_easy_05.mp3" + } +} +"toughbreak_win_bigcontract_scout" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/scout_quest_complete_hard_02.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_hard_03.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_hard_05.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_hard_06.mp3" + "wave" "/vo/toughbreak/scout_quest_complete_hard_09.mp3" + } +} +"toughbreak_win_contract_sniper" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/sniper_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_03.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_06.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_08.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_10.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_11.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_easy_12.mp3" + } +} +"toughbreak_win_bigcontract_sniper" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/sniper_quest_complete_hard_01.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_hard_02.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_hard_03.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_hard_04.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_hard_06.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_hard_07.mp3" + "wave" "/vo/toughbreak/sniper_quest_complete_hard_08.mp3" + } +} +"toughbreak_win_contract_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/soldier_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_easy_03.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_easy_04.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_easy_05.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_easy_07.mp3" + } +} +"toughbreak_win_bigcontract_soldier" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/soldier_quest_complete_hard_02.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_hard_04.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_hard_05.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_hard_06.mp3" + "wave" "/vo/toughbreak/soldier_quest_complete_hard_07.mp3" + } +} +"toughbreak_win_contract_spy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/spy_quest_complete_easy_01.mp3" + "wave" "/vo/toughbreak/spy_quest_complete_easy_02.mp3" + "wave" "/vo/toughbreak/spy_quest_complete_easy_03.mp3" + "wave" "/vo/toughbreak/spy_quest_complete_easy_04.mp3" + "wave" "/vo/toughbreak/spy_quest_complete_easy_05.mp3" + "wave" "/vo/toughbreak/spy_quest_complete_easy_07.mp3" + } +} +"toughbreak_win_bigcontract_spy" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "/vo/toughbreak/spy_quest_complete_hard_01.mp3" + "wave" "/vo/toughbreak/spy_quest_complete_hard_02.mp3" + } +} +"toughbreak_win_contract_medic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/toughbreak/medic_quest_complete_easy_01.mp3" + "wave" "vo/toughbreak/medic_quest_complete_easy_02.mp3" + "wave" "vo/toughbreak/medic_quest_complete_easy_03.mp3" + "wave" "vo/toughbreak/medic_quest_complete_easy_04.mp3" + "wave" "vo/toughbreak/medic_quest_complete_easy_05.mp3" + } +} +"toughbreak_win_bigcontract_medic" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_95dB" + + "rndwave" + { + "wave" "vo/toughbreak/medic_quest_complete_hard_01.mp3" + "wave" "vo/toughbreak/medic_quest_complete_hard_02.mp3" + "wave" "vo/toughbreak/medic_quest_complete_hard_05.mp3" + "wave" "vo/toughbreak/medic_quest_complete_hard_06.mp3" + } +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/game_sounds_weapons_l4d1.lua b/gamemodes/tf/gamemode/contents/game_sounds_weapons_l4d1.lua new file mode 100644 index 000000000..927462b85 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_weapons_l4d1.lua @@ -0,0 +1,1149 @@ +//---------------------------------------------------------------------- +// Pistol +//---------------------------------------------------------------------- + +"L4D1_Pistol.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"L4D1_Pistol.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"L4D1_Pistol.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"L4D1_Pistol.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + + +"L4D1_Pistol.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/pistol/gunother/pistol_deploy_1.wav" +} + +"L4D1_Pistol.ClipIn" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/pistol/gunother/pistol_clip_in_1.wav" +} + +"L4D1_Pistol.ClipOut" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/pistol/gunother/pistol_clip_out_1.wav" +} + +"L4D1_Pistol.ClipLocked" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/pistol/gunother/pistol_clip_locked_1.wav" +} + +"L4D1_Pistol.Slideback" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/pistol/gunother/pistol_slideback_1.wav" +} + +"L4D1_Pistol.SlideForward" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/pistol/gunother/pistol_slideforward_1.wav" +} + +"L4D1_Pistol.Fire" +{ + "channel" "CHAN_WEAPON" + "volume" ".75" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "^l4d1/weapons/pistol/gunfire/pistol_fire.wav" +} + +//"L4D1_Pistol.FireSilenced" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_150dB" +// "pitch" "PITCH_NORM" +// "wave" "^l4d1/weapons/pistol/gunfire/pistol_fire_silenced.wav" +//} + +//---------------------------------------------------------------------- +// Dual Pistols +//---------------------------------------------------------------------- + +"L4D1_DualPistol.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_deploy_1.wav" +} + +"L4D1_DualPistol.ClipIn" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_clip_in_1.wav" +} + +"L4D1_DualPistol.ClipOut" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_clip_out_1.wav" +} + +"L4D1_DualPistol.SlideBack" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_slideback_1.wav" +} + + +"L4D1_DualPistol.SlideForward" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_slideforward_1.wav" +} + +"L4D1_DualPistol.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_helpinghandextend.wav" +} + +"L4D1_DualPistol.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_helpinghandretract.wav" +} + +"L4D1_DualPistol.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_helpinghandextend.wav" +} + +"L4D1_DualPistol.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_helpinghandretract.wav" +} + +"L4D1_DualPistol.Ready" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/dual_pistol/gunother/dualpistol_deploy_1.wav" +} + +//---------------------------------------------------------------------- +// SubMachineGun +//---------------------------------------------------------------------- + +"L4D1_SMG.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/smg/gunother/smg_helpinghandextend.wav" +} + +"L4D1_SMG.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/smg/gunother/smg_helpinghandretract.wav" +} + +"L4D1_SMG.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/smg/gunother/smg_helpinghandextend.wav" +} + +"L4D1_SMG.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/smg/gunother/smg_helpinghandretract.wav" +} + + +"L4D1_SMG.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/smg/gunother/smg_deploy_1.wav" +} + +"L4D1_SMG.ClipIn" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/SMG/gunother/smg_clip_in_1.wav" +} + +"L4D1_SMG.ClipOut" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/SMG/gunother/smg_clip_out_1.wav" +} + +"L4D1_SMG.ClipLocked" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/SMG/gunother/smg_clip_locked_1.wav" +} + +"L4D1_SMG.SlideBack" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "wave" "l4d1/weapons/SMG/gunother/smg_slideback_1.wav" +} + +"L4D1_SMG.SlideForward" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/SMG/gunother/smg_slideforward_1.wav" +} + +"L4D1_SMG.FullAutoButton" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/SMG/gunother/smg_fullautobutton_1.wav" +} + +"L4D1_SMG.Fire" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" "^l4d1/weapons/SMG/gunfire/smg_fire_1.wav" +} + +//"L4D1_SMG.FireSilenced" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_150dB" +// "pitch" "PITCH_NORM" +// +// "wave" "^l4d1/weapons/SMG/gunfire/smg_fire_1_silenced.wav" +//} + +//---------------------------------------------------------------------- +// Pump Shotgun +//---------------------------------------------------------------------- + + +"L4D1_Shotgun.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/shotgun/gunother/shotgun_helpinghandretract.wav" +} + +"L4D1_Shotgun.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/shotgun/gunother/shotgun_helpinghandextend.wav" +} + +"L4D1_Shotgun.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/shotgun/gunother/shotgun_helpinghandretract.wav" +} + +"L4D1_Shotgun.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/shotgun/gunother/shotgun_helpinghandextend.wav" +} + + +"L4D1_Shotgun.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/shotgun/gunother/shotgun_deploy_1.wav" +} + +"L4D1_Shotgun.LoadShell" +{ + "channel" "CHAN_ITEM" + "volume" "0.6" + "pitch" "90,105" + "rndwave" + { + "l4d1/weapons/shotgun/gunother/shotgun_load_shell_1.wav" + "l4d1/weapons/shotgun/gunother/shotgun_load_shell_2.wav" + "l4d1/weapons/shotgun/gunother/shotgun_load_shell_3.wav" + "l4d1/weapons/shotgun/gunother/shotgun_load_shell_4.wav" + } +} + +"L4D1_Shotgun.Pump" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/shotgun/gunother/shotgun_pump_1.wav" +} + +"L4D1_Shotgun.Fire" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "^l4d1/weapons/shotgun/gunfire/shotgun_fire_1.wav" +} + +//"L4D1_Shotgun.FireSilenced" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_150dB" +// "pitch" "PITCH_NORM" +// "wave" "^l4d1/weapons/shotgun/gunfire/shotgun_fire_1_silenced.wav" +//} + +//---------------------------------------------------------------------- +// Auto Shotgun +//---------------------------------------------------------------------- + +"L4D1_AutoShotgun.BoltBack" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_boltback.wav" +} + +"L4D1_AutoShotgun.BoltForward" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_boltforward.wav" +} + +"L4D1_AutoShotgun.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_helpinghandextend.wav" +} + +"L4D1_AutoShotgun.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_helpinghandretract.wav" +} + +"L4D1_AutoShotgun.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_helpinghandretract.wav" +} + + +"L4D1_AutoShotgun.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_helpinghandextend.wav" +} + +"L4D1_AutoShotgun.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/auto_shotgun/gunother/autoshotgun_deploy_1.wav" +} + +"L4D1_AutoShotgun.LoadShell" +{ + "channel" "CHAN_ITEM" + "volume" "0.6" + "pitch" "90,105" + "rndwave" + { + "l4d1/weapons/auto_shotgun/gunother/auto_shotgun_load_shell_1.wav" + "l4d1/weapons/auto_shotgun/gunother/auto_shotgun_load_shell_2.wav" + "l4d1/weapons/auto_shotgun/gunother/auto_shotgun_load_shell_3.wav" + "l4d1/weapons/auto_shotgun/gunother/auto_shotgun_load_shell_4.wav" + } +} + +"L4D1_AutoShotgun.Fire" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "^l4d1/weapons/auto_shotgun/gunfire/auto_shotgun_fire_1.wav" +} + +//"L4D1_AutoShotgun.FireSilenced" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_150dB" +// "pitch" "PITCH_NORM" +// "wave" "^l4d1/weapons/auto_shotgun/gunfire/auto_shotgun_fire_1_silenced.wav" +//} + + +//---------------------------------------------------------------------- +// Hunting Rifle +//---------------------------------------------------------------------- + +"L4D1_HuntingRifle.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_helpinghandextend.wav" +} + +"L4D1_HuntingRifle.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_helpinghandretract.wav" +} + +"L4D1_HuntingRifle.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_helpinghandextend.wav" +} + +"L4D1_HuntingRifle.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_helpinghandretract.wav" +} + +"L4D1_HuntingRifle.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_deploy_1.wav" +} + +"L4D1_HuntingRifle.ClipIn" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_clipin.wav" +} + +"L4D1_HuntingRifle.ClipOut" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_clipout.wav" +} + +"L4D1_HuntingRifle.ClipLocked" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_cliplocked.wav" +} + +"L4D1_HuntingRifle.Boltback" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_boltback.wav" +} + +"L4D1_HuntingRifle.BoltForward" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_boltforward.wav" +} + +"L4D1_HuntingRifle.PushButton" +{ + "channel" "CHAN_ITEM" + "volume" "0.5" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_push_button_1.wav" +} + +"L4D1_HuntingRifle.Zoom" +{ + "channel" "CHAN_ITEM" + "volume" "0.75" + "wave" "l4d1/weapons/hunting_rifle/gunother/hunting_rifle_zoom.wav" +} + +"L4D1_HuntingRifle.Fire" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "^l4d1/weapons/hunting_rifle/gunfire/hunting_rifle_fire_1.wav" +} + +//"L4D1_HuntingRifle.FireSilenced" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_150dB" +// "pitch" "PITCH_NORM" +// "wave" "^l4d1/weapons/rifle/gunfire/rifle_fire_1_silenced.wav" +//} + +//---------------------------------------------------------------------- +// Assault Rifle +//---------------------------------------------------------------------- + +"L4D1_Rifle.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"L4D1_Rifle.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"L4D1_Rifle.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"L4D1_Rifle.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"L4D1_Rifle.Deploy" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/rifle/gunother/rifle_deploy_1.wav" +} + +"L4D1_Rifle.ClipIn" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/rifle/gunother/rifle_clip_in_1.wav" +} + +"L4D1_Rifle.ClipOut" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/rifle/gunother/rifle_clip_out_1.wav" +} + +"L4D1_Rifle.ClipLocked" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/rifle/gunother/rifle_clip_locked_1.wav" +} + +"L4D1_Rifle.SlideBack" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "wave" "l4d1/weapons/rifle/gunother/rifle_slideback_1.wav" +} + +"L4D1_Rifle.SlideForward" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "wave" "l4d1/weapons/rifle/gunother/rifle_slideforward_1.wav" +} + +"L4D1_Rifle.PushButton" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "90,110" + "wave" "l4d1/weapons/rifle/gunother/rifle_ready_1.wav" + + +} + + +"L4D1_Rifle.FullAutoButton" +{ + "channel" "CHAN_ITEM" + "volume" "1" + "wave" "l4d1/weapons/rifle/gunother/rifle_fullautobutton_1.wav" + + +} + +"L4D1_Rifle.Fire" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + + "wave" "^l4d1/weapons/rifle/gunfire/rifle_fire_1.wav" +} + +//"L4D1_Rifle.FireSilenced" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_150dB" +// "pitch" "PITCH_NORM" +// "wave" "^l4d1/weapons/rifle/gunfire/rifle_fire_1_silenced.wav" +//} + +//---------------------------------------------------------------------- +// Minigun +//---------------------------------------------------------------------- + +"L4D1_Minigun.SpinUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun/gunother/minigun_wind_up.wav" +} + +"L4D1_Minigun.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun/gunfire/minigun_fire.wav" +} + +"L4D1_Minigun.SpinDown" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun/gunother/minigun_wind_down.wav" +} + + +// Flare --------------------------------------------------------------------------------- +//"Weapon_FlareGun.Single" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "0.55" +// "soundlevel" "SNDLVL_GUNFIRE" +// +// "wave" "l4d1/weapons/flaregun/gunfire/fire.wav" +//} + +//"Weapon_FlareGun.Burn" +//{ +// "channel" "CHAN_WEAPON" +// "soundlevel" "SNDLVL_NORM" +// "volume" "0.65" +// +// "wave" "l4d1/weapons/flaregun/gunother/burn.wav" +//} + +// LAW Rocket ------------------------------------------------------------------------------ +//"LawRocketLauncher.Deploy" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1" +// "soundlevel" "SNDLVL_NORM" +// +// "wave" "l4d1/weapons/law_rocket/Gun_DrawSelect_Weapon06.wav" +//} + +//"LawRocket.Launch" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1" +// "soundlevel" "SNDLVL_GUNFIRE" +// +// "wave" "l4d1/weapons/law_rocket/RocketLauncher_Shot40.wav" +//} + + +//"LawRocket.Loop" +//{ +// "channel" "CHAN_ITEM" +// "volume" "1" +// "soundlevel" "SNDLVL_80dB" +// +// "wave" "l4d1/weapons/law_rocket/Rocket_Missile_Loop18.wav" +//} + + +//"LawRocket.Explode" +//{ +// "channel" "CHAN_BODY" +// "volume" "1" +// "soundlevel" "SNDLVL_GUNFIRE" +// +// "wave" "l4d1/weapons/law_rocket/Explo_Large_03.wav" +//} + +// Molotov ------------------------------------------------------------------------------- +"L4D1_Molotov.Throw" +{ + "channel" "CHAN_ITEM" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "wave" "l4d1/weapons/molotov/fire_ignite_2.wav" +} + +"L4D1_Molotov.Loop" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/molotov/fire_loop_1.wav" +} + +"L4D1_Molotov.IdleLoop" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" ")weapons/molotov/fire_idle_loop_1.wav" +} + +"Inferno.Start" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + // "wave" ")weapons/molotov/molotov_detonate_1.wav" + // "wave" ")weapons/molotov/molotov_detonate_2.wav" + "wave" ")weapons/molotov/molotov_detonate_3.wav" + // "wave" ")weapons/molotov/molotov_detonate_4.wav" + + } +} + +"Inferno.Loop" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/molotov/fire_loop_1.wav" +} + +"Inferno.Fire.Ignite" +{ + "channel" "CHAN_BODY" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "l4d1/weapons/molotov/fire_ignite_1.wav" +// "wave" "l4d1/weapons/molotov/fire_ignite_3.wav" + "wave" "l4d1/weapons/molotov/fire_ignite_4.wav" + "wave" "l4d1/weapons/molotov/fire_ignite_5.wav" + } +} + +"L4D1_Molotov.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/molotov/molotov_helpinghandextend.wav" +} + +"L4D1_Molotov.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/molotov/molotov_helpinghandretract.wav" +} + +"L4D1_Molotov.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/molotov/molotov_helpinghandextend.wav" +} + +"L4D1_Molotov.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/molotov/molotov_helpinghandretract.wav" +} + +//---------------------------------------------------------------------- +// Obsolete CS weapon sounds follow +//---------------------------------------------------------------------- + +"L4D1_Weapon_Knife.Hit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/PZ/hit/claw_hit_flesh_1.wav" + "wave" "player/PZ/hit/claw_hit_flesh_2.wav" + "wave" "player/PZ/hit/claw_hit_flesh_3.wav" + "wave" "player/PZ/hit/claw_hit_flesh_4.wav" + } +} + +"L4D1_Weapon_Knife.HitWall" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + + "wave" "l4d1/weapons/knife/knife_hitwall1.wav" +} + +"L4D1_Weapon_Knife.Slash" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "npc/infected/miss/claw_miss_1.wav" + "wave" "npc/infected/miss/claw_miss_2.wav" + } +} + +"L4D1_Weapon_Knife.Stab" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + + "rndwave" + { + "wave" "player/PZ/hit/claw_hit_flesh_1.wav" + "wave" "player/PZ/hit/claw_hit_flesh_2.wav" + "wave" "player/PZ/hit/claw_hit_flesh_3.wav" + "wave" "player/PZ/hit/claw_hit_flesh_4.wav" + } +} + +//"Default.PullPin_Grenade" +//{ +// "channel" "CHAN_WEAPON" +// "volume" "1.0" +// "soundlevel" "SNDLVL_NORM" +// "pitch" "PITCH_NORM" +// +// "wave" "l4d1/weapons/pinpull.wav" +//} + +"L4D1_HEGrenade.Bounce" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hegrenade/he_bounce-1.wav" +} + +"L4D1_Default.ClipEmpty_Rifle" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/ClipEmpty_Rifle.wav" +} + + +"L4D1_Default.ClipEmpty_Pistol" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/ClipEmpty_Pistol.wav" +} + +"L4D1_Default.Zoom" +{ + "channel" "CHAN_ITEM" + "volume" "0.75" + "pitch" "96, 104" + + "wave" ")weapons/hunting_rifle/gunother/hunting_rifle_zoom.wav" +} + +"L4D1_BaseCombatWeapon.WeaponDrop" +{ + "channel" "CHAN_VOICE" + "volume" "0.8" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,110" + "rndwave" + { + "wave" "physics/metal/weapon_impact_hard1.wav" + "wave" "physics/metal/weapon_impact_hard2.wav" + "wave" "physics/metal/weapon_impact_hard3.wav" + } +} + +"L4D1_BaseCombatWeapon.WeaponMaterialize" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + "pitch" "150" + + "wave" "items/suitchargeok1.wav" +} + + +//---------------------------------------------------------------------- +// Knife (upgrade) +//---------------------------------------------------------------------- +"L4D1_Knife.StabHunter" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/knife/knife_hitwall1.wav" +} + +"L4D1_Knife.BreakTongue" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/knife/knife_hitwall1.wav" +} + + +//---------------------------------------------------------------------- +// Blinding Flash (upgrade) +//---------------------------------------------------------------------- +"BlindingFlash" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/flash/flash01.wav" +} + + +//---------------------------------------------------------------------- +// Pipe Bomb +//---------------------------------------------------------------------- +"L4D1_Pipebomb.TimerBeep" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_90dB" + "pitch" "PITCH_NORM" + "wave" "l4d1/weapons/hegrenade/beep.wav" + + "GameData" + { + "Priority" "Interesting" + "Reaction" "SeekAndDestroy" + } +} + +"L4D1_Pipebomb.Bounce" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hegrenade/he_bounce-1.wav" +} + +"L4D1_Pipebomb.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hegrenade/pipebomb_helpinghandextend.wav" +} + +"L4D1_Pipebomb.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hegrenade/pipebomb_helpinghandretract.wav" +} + +"L4D1_Pipebomb.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hegrenade/pipebomb_helpinghandextend.wav" +} + +"L4D1_Pipebomb.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "volume" ".2" + "pitch" "PITCH_NORM" + + "wave" "l4d1/weapons/hegrenade/pipebomb_helpinghandretract.wav" +} + diff --git a/addon/gamemodes/teamfortress/content/scripts/game_sounds_weapons_tf.txt b/gamemodes/tf/gamemode/contents/game_sounds_weapons_tf.lua similarity index 100% rename from addon/gamemodes/teamfortress/content/scripts/game_sounds_weapons_tf.txt rename to gamemodes/tf/gamemode/contents/game_sounds_weapons_tf.lua diff --git a/gamemodes/tf/gamemode/contents/game_sounds_weapons_tf2.lua b/gamemodes/tf/gamemode/contents/game_sounds_weapons_tf2.lua new file mode 100644 index 000000000..74bab83ab --- /dev/null +++ b/gamemodes/tf/gamemode/contents/game_sounds_weapons_tf2.lua @@ -0,0 +1,8205 @@ +// Channels +// CHAN_AUTO = 0, +// CHAN_WEAPON = 1, +// CHAN_VOICE = 2, +// CHAN_ITEM = 3, +// CHAN_BODY = 4, +// CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area +// CHAN_STATIC = 6, // allocate channel from the static area +// these can be set with "channel" "2" or "channel" "chan_voice" + +//----------------------------------------------------------------------------- +// common attenuation values +//----------------------------------------------------------------------------- + +// DON'T USE THESE - USE SNDLVL_ INSTEAD!!! +// ATTN_NONE 0.0f +// ATTN_NORM 0.8f +// ATTN_IDLE 2.0f +// ATTN_STATIC 1.25f +// ATTN_RICOCHET 1.5f +// ATTN_GUNFIRE 0.27f + +// SNDLVL_NONE = 0, +// SNDLVL_25dB = 25, +// SNDLVL_30dB = 30, +// SNDLVL_35dB = 35, +// SNDLVL_40dB = 40, +// SNDLVL_45dB = 45, +// SNDLVL_50dB = 50, // 3.9 +// SNDLVL_55dB = 55, // 3.0 +// SNDLVL_IDLE = 60, // 2.0 +// SNDLVL_TALKING = 60, // 2.0 +// SNDLVL_60dB = 60, // 2.0 +// SNDLVL_65dB = 65, // 1.5 +// SNDLVL_STATIC = 66, // 1.25 +// SNDLVL_70dB = 70, // 1.0 +// SNDLVL_NORM = 75, +// SNDLVL_75dB = 75, // 0.8 +// SNDLVL_80dB = 80, // 0.7 +// SNDLVL_85dB = 85, // 0.6 +// SNDLVL_90dB = 90, // 0.5 +// SNDLVL_95dB = 95, +// SNDLVL_100dB = 100, // 0.4 +// SNDLVL_105dB = 105, +// SNDLVL_120dB = 120, +// SNDLVL_130dB = 130, +// SNDLVL_GUNFIRE = 140, // 0.27 +// SNDLVL_140dB = 140, // 0.2 +// SNDLVL_150dB = 150, // 0.2 + +// ------------------------------------------------------------------------------------ // +//CRITPOWER +// ------------------------------------------------------------------------------------ // +"Weapon_General.CritPower" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/crit_power.wav" +} + +// ------------------------------------------------------------------------------------ // +// RICOCHET +// ------------------------------------------------------------------------------------ // +"FX_RicochetSound.Ricochet" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_96dB" + "pitch" "90, 110" + + "rndwave" + { + "wave" "weapons/fx/rics/ric1.wav" + "wave" "weapons/fx/rics/ric2.wav" + "wave" "weapons/fx/rics/ric3.wav" + "wave" "weapons/fx/rics/ric4.wav" + "wave" "weapons/fx/rics/ric5.wav" + } +} + + +// ------------------------------------------------------------------------------------ // +// NEARMISS +// ------------------------------------------------------------------------------------ // + +"Bullets.DefaultNearmiss" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_80dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ">weapons/fx/nearmiss/bulletLtoR08.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR09.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR10.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR11.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR13.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR14.wav" + } +} + +// ------------------------------------------------------------------------------------ // +//BUILDER +// ------------------------------------------------------------------------------------ // +"Weapon_Builder.SwitchEngineer" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".74" + "wave" "weapons/draw_sapper_switch.wav" +} + +// ------------------------------------------------------------------------------------ // +// BUMPER CAR +// ------------------------------------------------------------------------------------ // +"BumperCar.Bump" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_76dB" + "pitch" "90, 110" + + "rndwave" + { + "wave" "weapons/bumper_car_hit1.wav" + "wave" "weapons/bumper_car_hit2.wav" + "wave" "weapons/bumper_car_hit3.wav" + "wave" "weapons/bumper_car_hit4.wav" + "wave" "weapons/bumper_car_hit5.wav" + "wave" "weapons/bumper_car_hit6.wav" + "wave" "weapons/bumper_car_hit7.wav" + "wave" "weapons/bumper_car_hit8.wav" + + } +} + +"BumperCar.Accelerate" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons/bumper_car_accelerate.wav" +} + +"BumperCar.GoLoop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons/bumper_car_go_loop.wav" +} + +"BumperCar.Decelerate" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons/bumper_car_decelerate.wav" +} + +"BumperCar.DecelerateQuick" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons/bumper_car_decelerate_quick.wav" +} + +"BumperCar.Spawn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" ")weapons/bumper_car_spawn.wav" +} + +"BumperCar.SpawnFromLava" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" ")weapons/bumper_car_spawn_from_lava.wav" +} + +"BumperCar.SpeedBoostStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" ")weapons/bumper_car_speed_boost_start.wav" +} + +"BumperCar.SpeedBoostStop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" ")weapons/bumper_car_speed_boost_stop.wav" +} + +"BumperCar.Screech" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons/bumper_car_screech.wav" +} + +"BumperCar.BumpIntoAir" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/bumper_car_hit_into_air.wav" +} + +"BumperCar.BumpHard" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/bumper_car_hit_hard.wav" +} + +"BumperCar.Jump" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".35" + "wave" ")weapons/bumper_car_jump.wav" +} + +"BumperCar.JumpLand" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" ")weapons/bumper_car_jump_land.wav" +} + +"BumperCar.HitBall" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_120dB" + "volume" "1" + "wave" ")weapons/bumper_car_hit_ball.wav" +} + +"BumperCar.HitGhost" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/bumper_car_hit_ghost.wav" +} + + +// ------------------------------------------------------------------------------------ // +//WEAPON CHARGED +// ------------------------------------------------------------------------------------ // +"TFPlayer.CritBoostOn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/weapon_crit_charged_on.wav" +} + +"TFPlayer.CritBoostOff" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/weapon_crit_charged_off.wav" +} + +// ------------------------------------------------------------------------------------ // +//PDA +// ------------------------------------------------------------------------------------ // + +"Weapon_PDA.DrawSpy" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" "weapons/draw_pda_spy.wav" +} + + +"Weapon_PDA.DrawEngineer" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" "weapons/draw_pda_engineer.wav" +} + +"Weapon_PDA.AntennaeEngineer" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" "weapons/draw_pda_antennae.wav" +} + +// ------------------------------------------------------------------------------------ // +//DEAD RINGER +// ------------------------------------------------------------------------------------ // + +"Weapon_DeadRinger.DrawSpy" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" "weapons/draw_dead_ringer_spy.wav" +} + +// ------------------------------------------------------------------------------------ // +// HOLY MACKEREL +// ------------------------------------------------------------------------------------ // + +"Weapon_HolyMackerel.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/holy_mackerel1.wav" + "wave" "weapons/holy_mackerel2.wav" + "wave" "weapons/holy_mackerel3.wav" + } + +} + +"Weapon_HolyMackerel.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/holy_mackerel1.wav" + "wave" "weapons/holy_mackerel2.wav" + "wave" "weapons/holy_mackerel3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// BASEBALL BAT +// ------------------------------------------------------------------------------------ // + +"Weapon_BaseballBat.HitBall" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/bat_baseball_hit1.wav" + "wave" ")weapons/bat_baseball_hit2.wav" + } + +} + +"Weapon_BaseballBat.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/bat_baseball_hit_flesh.wav" + +} + +"Weapon_BaseballBat.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bat_baseball_hit_world1.wav" + "wave" "weapons/bat_baseball_hit_world2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// BASEBALL +// ------------------------------------------------------------------------------------ // +"Weapon_Baseball.HitWorld" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "rndwave" + { + "wave" "weapons/baseball_hitworld1.wav" + "wave" "weapons/baseball_hitworld2.wav" + "wave" "weapons/baseball_hitworld3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// BAT +// ------------------------------------------------------------------------------------ // + +"Weapon_Bat.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" ".5" + "wave" "weapons/bat_draw.wav" +} + +"Weapon_Bat.DrawSwoosh1" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".45" + "wave" "weapons/bat_draw_swoosh1.wav" +} + +"Weapon_Bat.DrawSwoosh2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".45" + "wave" "weapons/bat_draw_swoosh2.wav" +} + + +"Weapon_Bat.DrawCatch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/metal_hit_hand1.wav" +} + +"Weapon_Ball.DrawCatch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "wave" "weapons/metal_hit_hand1.wav" +} + +"Weapon_Bat.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_Bat.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1_crit.wav" +} + +"Weapon_Bat.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/bat_hit.wav" + +} + +"Weapon_Bat.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// BOTTLE +// ------------------------------------------------------------------------------------ // + +"Weapon_Bottle.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_Bottle.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +"Weapon_Bottle.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1_crit.wav" +} + +"Weapon_Bottle.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_hit_flesh1.wav" + "wave" "weapons/bottle_hit_flesh2.wav" + "wave" "weapons/bottle_hit_flesh3.wav" + } +} + +"Weapon_Bottle.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_hit1.wav" + "wave" "weapons/bottle_hit2.wav" + "wave" "weapons/bottle_hit3.wav" + } +} + +"Weapon_Bottle.IntactHitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_intact_hit_world1.wav" + "wave" "weapons/bottle_intact_hit_world2.wav" + } +} + +"Weapon_Bottle.BrokenHitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_broken_hit_world1.wav" + "wave" "weapons/bottle_broken_hit_world2.wav" + "wave" "weapons/bottle_broken_hit_world3.wav" + } +} + +"Weapon_Bottle.IntactHitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_intact_hit_flesh1.wav" + "wave" "weapons/bottle_intact_hit_flesh2.wav" + "wave" "weapons/bottle_intact_hit_flesh3.wav" + } +} + +"Weapon_Bottle.BrokenHitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_broken_hit_flesh1.wav" + "wave" "weapons/bottle_broken_hit_flesh2.wav" + "wave" "weapons/bottle_broken_hit_flesh3.wav" + } +} + +"Weapon_Bottle.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/bottle_break.wav" +} + + +// ------------------------------------------------------------------------------------ // +// Machete +// ------------------------------------------------------------------------------------ // + +"Weapon_Machete.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/machete_swing.wav" +} + +"Weapon_Machete.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/machete_swing_crit.wav" +} + +"Weapon_Machete.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Machete.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +"Weapon_Machete.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/draw_machete_sniper.wav" +} + +// ------------------------------------------------------------------------------------ // +// Fist +// ------------------------------------------------------------------------------------ // + +"Weapon_Fist.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bat_draw_swoosh1.wav" + "wave" "weapons/bat_draw_swoosh2.wav" + } +} + +"Weapon_Fist.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/fist_swing_crit.wav" +} + +"Weapon_Fist.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Fist.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/fist_hit_world1.wav" + "wave" "weapons/fist_hit_world2.wav" + } +} + + +"Weapon_Fist.HitHand" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "rndwave" + { + "wave" "weapons/metal_hit_hand1.wav" + "wave" "weapons/metal_hit_hand2.wav" + "wave" "weapons/metal_hit_hand3.wav" + } +} + +"Weapon_Fist.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_melee.wav" +} + +// ------------------------------------------------------------------------------------ // +// Metal Gloves +// ------------------------------------------------------------------------------------ // + +"Weapon_MetalGloves.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/boxing_gloves_swing1.wav" + "wave" "weapons/boxing_gloves_swing2.wav" + "wave" "weapons/boxing_gloves_swing4.wav" + } +} + +"Weapon_MetalGloves.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/fist_swing_crit.wav" +} + +"Weapon_MetalGloves.CritHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/metal_gloves_hit_crit1.wav" + "wave" ")weapons/metal_gloves_hit_crit2.wav" + "wave" ")weapons/metal_gloves_hit_crit3.wav" + "wave" ")weapons/metal_gloves_hit_crit4.wav" + } +} + +"Weapon_MetalGloves.CritEnabled" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/boxing_gloves_crit_enabled.wav" +} + +"Weapon_MetalGloves.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/metal_gloves_hit_flesh1.wav" + "wave" ")weapons/metal_gloves_hit_flesh2.wav" + "wave" ")weapons/metal_gloves_hit_flesh3.wav" + "wave" ")weapons/metal_gloves_hit_flesh4.wav" + } +} + +"Weapon_MetalGloves.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/metal_gloves_hit_world1.wav" + "wave" ")weapons/metal_gloves_hit_world2.wav" + "wave" ")weapons/metal_gloves_hit_world3.wav" + "wave" ")weapons/metal_gloves_hit_world4.wav" + } +} + + +"Weapon_MetalGloves.HitGlove" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/metal_gloves_hit.wav" + +} + +"Weapon_MetalGloves.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_melee.wav" +} + +// ------------------------------------------------------------------------------------ // +// Boxing Gloves +// ------------------------------------------------------------------------------------ // + +"Weapon_BoxingGloves.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/boxing_gloves_swing1.wav" + "wave" "weapons/boxing_gloves_swing2.wav" + "wave" "weapons/boxing_gloves_swing4.wav" + } +} + +"Weapon_BoxingGloves.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/fist_swing_crit.wav" +} + +"Weapon_BoxingGloves.CritHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/boxing_gloves_hit_crit1.wav" + "wave" "weapons/boxing_gloves_hit_crit2.wav" + "wave" "weapons/boxing_gloves_hit_crit3.wav" + } +} + +"Weapon_BoxingGloves.CritEnabled" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/boxing_gloves_crit_enabled.wav" +} + +"Weapon_BoxingGloves.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/boxing_gloves_hit1.wav" + "wave" "weapons/boxing_gloves_hit2.wav" + "wave" "weapons/boxing_gloves_hit3.wav" + "wave" "weapons/boxing_gloves_hit4.wav" + } +} + +"Weapon_BoxingGloves.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/fist_hit_world1.wav" + "wave" "weapons/fist_hit_world2.wav" + } +} + + +"Weapon_BoxingGloves.HitGlove" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/boxing_gloves_hit.wav" + +} + +"Weapon_BoxingGloves.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_melee.wav" +} + +// ------------------------------------------------------------------------------------ // +// BRANDING IRON +// ------------------------------------------------------------------------------------ // + +"Weapon_FireAxe.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_FireAxe.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1_crit.wav" +} + +"Weapon_FireAxe.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/axe_hit_flesh1.wav" + "wave" ")weapons/axe_hit_flesh2.wav" + "wave" ")weapons/axe_hit_flesh3.wav" + } +} + +"Weapon_FireAxe.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +"Weapon_FireAxe.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_melee.wav" +} + +// called from model? +"Weapon_BrandingIron.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_melee.wav" +} + +// ------------------------------------------------------------------------------------ // +// UBERSAW +// ------------------------------------------------------------------------------------ // + +"Weapon_BoneSaw.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_BoneSaw.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1_crit.wav" +} + +"Weapon_UberSaw.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/ubersaw_hit1.wav" + "wave" "weapons/ubersaw_hit2.wav" + "wave" "weapons/ubersaw_hit3.wav" + "wave" "weapons/ubersaw_hit4.wav" + } +} + +"Weapon_BoneSaw.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// BONESAW +// ------------------------------------------------------------------------------------ // + +"Weapon_BoneSaw.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_BoneSaw.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1_crit.wav" +} + +"Weapon_BoneSaw.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_BoneSaw.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// CLUB +// ------------------------------------------------------------------------------------ // + +"Weapon_Club.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_Club.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1_crit.wav" +} + +"Weapon_Club.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Club.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// CROWBAR +// ------------------------------------------------------------------------------------ // + +"Weapon_Crowbar.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_Crowbar.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Crowbar.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +"Weapon_Crowbar.Melee_HitWorld" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + "pitch" "90,120" + + "rndwave" + { + "wave" "weapons/crowbar/crowbar_impact1.wav" + "wave" "weapons/crowbar/crowbar_impact2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// FLAG +// ------------------------------------------------------------------------------------ // + +"Weapon_Flag.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_Flag.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Flag.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/bottle_hit1.wav" + "wave" "weapons/bottle_hit2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// FLAME THROWER +// ------------------------------------------------------------------------------------ // + +"Weapon_FlameThrower.FireStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_start.wav" +} + +"Weapon_FlameThrower.FireLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_loop.wav" +} + +"Weapon_FlameThrower.FireLoopCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_loop_crit.wav" +} + +"Weapon_FlameThrower.FireEnd" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_end.wav" +} + +"Weapon_FlameThrower.FireHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_fire_hit.wav" +} + +"Weapon_FlameThrower.FireHitHard" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" "weapons/flame_thrower_fire_hitloop.wav" +} + +"Weapon_FlameThrower.PilotLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" "weapons/flame_thrower_pilot.wav" +} + +"Weapon_FlameThrower.FireRocket" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" "misc/null.wav" +} + +"Weapon_FlameThrower.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_FlameThrower.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_start.wav" +} + +"Weapon_FlameThrower.WindDown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_end.wav" +} + +"Weapon_FlameThrower.AirBurstAttack" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "pitch" "95,105" + "soundlevel" "SNDLVL_90db" + "wave" ")weapons/flame_thrower_airblast.wav" +} + +"Weapon_FlameThrower.AirBurstAttackDeflect" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "pitch" "95,105" + "soundlevel" "SNDLVL_84db" + "wave" ")weapons/flame_thrower_airblast_rocket_redirect.wav" +} + +// ------------------------------------------------------------------------------------ // +// DEGREASER +// ------------------------------------------------------------------------------------ // + +"Weapon_Degreaser.FireStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_104dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_dg_start.wav" +} + +"Weapon_Degreaser.FireLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_104dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_dg_loop.wav" +} + +"Weapon_Degreaser.FireLoopCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_104dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_dg_loop_crit.wav" +} + +"Weapon_Degreaser.FireEnd" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_104dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_dg_end.wav" +} + +// ------------------------------------------------------------------------------------ // +// BACK BURNER +// ------------------------------------------------------------------------------------ // + +"Weapon_BackBurner.FireStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_bb_start.wav" +} + +"Weapon_BackBurner.FireLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_bb_loop.wav" +} + +"Weapon_BackBurner.FireLoopCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_bb_loop_crit.wav" +} + +"Weapon_BackBurner.FireEnd" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_bb_end.wav" +} + +"Weapon_BackBurner.FireHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_fire_hit.wav" +} + +"Weapon_BackBurner.PilotLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" "weapons/flame_thrower_pilot.wav" +} + +"Weapon_BackBurner.FireRocket" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" "misc/null.wav" +} + +"Weapon_BackBurner.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_BackBurner.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_bb_start.wav" +} + +"Weapon_BackBurner.WindDown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flame_thrower_bb_end.wav" +} + +// ------------------------------------------------------------------------------------ // +// Flare Gun +// ------------------------------------------------------------------------------------ // +"Weapon_FlareGun.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flaregun_shoot.wav" +} + +"Weapon_FlareGun.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/flaregun_shoot_crit.wav" +} + +"Weapon_FlareGun.ModeSwitch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/stickybomblauncher_det.wav" +} + +"Weapon_FlareGun.BoltBack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" ".65" + "wave" "weapons/flaregun_boltback.wav" +} + +"Weapon_FlareGun.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" ".65" + "wave" "weapons/flaregun_boltforward.wav" +} + +"Weapon_FlareGun.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".45" + "wave" "weapons/flaregun_worldreload.wav" +} + +"Weapon_FlareGun.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_FlareGun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +"Weapon_FlareGun.Grab" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" ".74" + "rndwave" + { + "wave" "weapons/metal_hit_hand1.wav" + "wave" "weapons/metal_hit_hand2.wav" + "wave" "weapons/metal_hit_hand3.wav" + } +} + +"Weapon_FlareGun.TubeOpen" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/grenade_launcher_drum_open.wav" +} + +"Weapon_FlareGun.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/grenade_launcher_drum_load.wav" +} + +"Weapon_FlareGun.TubeCloseStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/flaregun_tube_closestart.wav" +} + +"Weapon_FlareGun.TubeCloseFinish" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/flaregun_tube_closefinish.wav" +} + +// ------------------------------------------------------------------------------------ // +// STICKY BOMB LAUNCHER +// ------------------------------------------------------------------------------------ // +"Weapon_StickyBombLauncher.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/stickybomblauncher_shoot.wav" +} + +"Weapon_StickyBombLauncher.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/stickybomblauncher_shoot_crit.wav" +} + +"Weapon_StickyBombLauncher.ModeSwitch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/stickybomblauncher_det.wav" +} + +"Weapon_StickyBombLauncher.BoltBack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" ".45" + "wave" "weapons/stickybomblauncher_boltback.wav" +} + +"Weapon_StickyBombLauncher.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" ".45" + "wave" "weapons/stickybomblauncher_boltforward.wav" +} + +"Weapon_StickyBombLauncher.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".35" + "wave" "weapons/stickybomblauncher_worldreload.wav" +} + +"Weapon_StickyBombLauncher.ChargeUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/stickybomblauncher_charge_up.wav" +} + +// ------------------------------------------------------------------------------------ // +// GRENADE LAUNCHER +// ------------------------------------------------------------------------------------ // +"Weapon_GrenadeLauncher.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/grenade_launcher_shoot.wav" +} + +"Weapon_GrenadeLauncher.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/grenade_launcher_shoot_crit.wav" +} + +"Weapon_GrenadeLauncher.DrumStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".4" + "wave" "weapons/grenade_launcher_drum_start.wav" +} + +"Weapon_GrenadeLauncher.DrumStop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".4" + "wave" "weapons/grenade_launcher_drum_stop.wav" +} + +"Weapon_GrenadeLauncher.DrumOpen" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/grenade_launcher_drum_open.wav" +} + +"Weapon_GrenadeLauncher.DrumLoad" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/grenade_launcher_drum_load.wav" +} + +"Weapon_GrenadeLauncher.DrumClose" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/grenade_launcher_drum_close.wav" +} + +"Weapon_GrenadeLauncher.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/grenade_launcher_worldreload.wav" +} + +"Weapon_GrenadeLauncher.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +"Weapon_GrenadeLauncher.ModeSwitch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/stickybomblauncher_det.wav" +} + +"Weapon_GrenadeLauncher.ChargeUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".45" + "wave" "weapons/stickybomblauncher_charge_up.wav" +} + +// ------------------------------------------------------------------------------------ // +// LOCH N LOAD +// ------------------------------------------------------------------------------------ // +"Weapon_LocknLoad.Dud" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/loch_n_load_dud.wav" +} + +"Weapon_LochnLoad.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/loch_n_load_shoot.wav" +} + +"Weapon_LochnLoad.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/loch_n_load_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// TACKY GRENADIER +// ------------------------------------------------------------------------------------ // +"Weapon_TackyGrenadier.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tacky_grenadier_shoot.wav" +} + +"Weapon_TackyGrenadier.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tacky_grenadier_shoot_crit.wav" +} + +"Weapon_TackyGrendadier.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")weapons/tacky_grenadier_explode1.wav" + "wave" ")weapons/tacky_grenadier_explode2.wav" + "wave" ")weapons/tacky_grenadier_explode3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// AIR BURSTER +// ------------------------------------------------------------------------------------ // +"Weapon_AirBurster.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/air_burster_shoot.wav" +} + +"Weapon_AirBurster.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/air_burster_shoot_crit.wav" +} + +"Weapon_AirBurster.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")weapons/air_burster_explode1.wav" + "wave" ")weapons/air_burster_explode2.wav" + "wave" ")weapons/air_burster_explode3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// KNIFE +// ------------------------------------------------------------------------------------ // + +"Weapon_Knife.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/knife_swing.wav" +} + +"Weapon_Knife.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/knife_swing_crit.wav" +} + +"Weapon_Knife.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/blade_hit1.wav" + "wave" ")weapons/blade_hit2.wav" + "wave" ")weapons/blade_hit3.wav" + } +} + +"Weapon_Knife.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/blade_hitworld.wav" + +} + +"Weapon_Knife.Open1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open1.wav" +} + +"Weapon_Knife.Open2" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open2.wav" +} + +"Weapon_Knife.Open3" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open3.wav" +} + +"Weapon_Knife.Open4" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open4.wav" +} + +"Weapon_Knife.Open5" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open5.wav" +} + +"Weapon_Knife.Open6" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open6.wav" +} + + +"Weapon_Knife.Open7" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open7.wav" +} + +"Weapon_Knife.Open8" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "wave" "weapons/knife_open8.wav" +} + +"Weapon_Knife.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_melee.wav" +} + +// ------------------------------------------------------------------------------------ // +// QUICK FIX +// ------------------------------------------------------------------------------------ // +"Weapon_Quick_Fix.Healing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/quick_fix_heal.wav" +} + +// ------------------------------------------------------------------------------------ // +// MEDIGUN +// ------------------------------------------------------------------------------------ // +"WeaponMedigun.HealingHealer" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/medigun_heal.wav" +} + +"WeaponMedigun.HealingTarget" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons/medigun_heal.wav" +} + +"WeaponMedigun.HealingWorld" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".75" + "wave" ")weapons/medigun_heal.wav" +} + +"WeaponMedigun.HealingDisrupt" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/medigun_heal_disrupt.wav" +} + +"WeaponMedigun.HealingDetachHealer" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" ")weapons/medigun_heal_detach.wav" +} + +"WeaponMedigun.HealingDetachTarget" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/medigun_heal_detach.wav" +} + +"WeaponMedigun.HealingDetachWorld" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".75" + "wave" ")weapons/medigun_heal_detach.wav" +} + +"WeaponMedigun.Charged" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/medigun_charged.wav" +} + +"WeaponMedigun.NoTarget" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74Db" + "volume" "1.0" + "wave" ")weapons/medigun_no_target.wav" +} + +"Weapon_Medikit.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Medikit.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +"Weapon_Medigun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + + +// ------------------------------------------------------------------------------------ // +// OVERDOSE +// ------------------------------------------------------------------------------------ // +"Weapon_Overdose.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/tf_medic_syringe_overdose.wav" +} + +"Weapon_Overdose.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/tf_medic_syringe_overdose_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// SYRINGEGUN +// ------------------------------------------------------------------------------------ // +"Weapon_SyringeGun.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/syringegun_shoot.wav" +} + +"Weapon_SyringeGun.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/syringegun_shoot_crit.wav" +} + +"Weapon_SyringeGun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_SyringeGun.Reload1" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" "weapons/syringegun_reload_air1.wav" +} + +"Weapon_SyringeGun.Reload2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/syringegun_reload_glass2.wav" +} + + +"Weapon_SyringeGun.Reload3" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" "weapons/syringegun_reload_air2.wav" +} + +"Weapon_SyringeGun.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" "weapons/syringegun_worldreload.wav" +} + +"Weapon_SyringeGun.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +// ------------------------------------------------------------------------------------ // +// GATLING +// ------------------------------------------------------------------------------------ // + +"Weapon_Gatling.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/default_reload.wav" +} + +"Weapon_Gatling.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/gatling_empty.wav" +} + +"Weapon_Gatling.Spin" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/gatling_spin.wav" +} + +"Weapon_Gatling.WindUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/gatling_wind_up.wav" +} + + +"Weapon_Gatling.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/gatling_shoot.wav" +} + +"Weapon_Gatling.FireCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/gatling_shoot_crit.wav" +} + +"Weapon_Gatling.WindDown" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/gatling_wind_down.wav" +} + +"Weapon_Gatling.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_minigun_heavy.wav" +} + +// ------------------------------------------------------------------------------------ // +// TOMISLAV +// ------------------------------------------------------------------------------------ // + +"Weapon_Tomislav.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tomislav_shoot.wav" +} + +"Weapon_Tomislav.FireCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tomislav_shoot_crit.wav" +} + +"Weapon_Tomislav.WindDown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tomislav_wind_down.wav" +} + +"Weapon_Tomislav.WindUp" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" "weapons/tomislav_wind_up.wav" +} + +// ------------------------------------------------------------------------------------ // +// MINIGUN +// ------------------------------------------------------------------------------------ // +"Weapon_Minigun.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/default_reload.wav" +} + +"Weapon_Minigun.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/minigun_empty.wav" +} + +"Weapon_Minigun.Spin" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/minigun_spin.wav" +} + +"Weapon_Minigun.WindUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun_wind_up.wav" +} + + +"Weapon_Minigun.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun_shoot.wav" +} + +"Weapon_Minigun.FireCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun_shoot_crit.wav" +} + +"Weapon_Minigun.WindDown" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minigun_wind_down.wav" +} + +"Weapon_Minigun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_minigun_heavy.wav" +} + +// ------------------------------------------------------------------------------------ // +// MINIfun +// ------------------------------------------------------------------------------------ // +"Weapon_Minifun.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/default_reload.wav" +} + +"Weapon_Minifun.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/minifun_empty.wav" +} + +"Weapon_Minifun.Spin" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/minifun_spin.wav" +} + +"Weapon_Minifun.WindUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minifun_wind_up.wav" +} + + +"Weapon_Minifun.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minifun_shoot.wav" +} + +"Weapon_Minifun.FireCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minifun_shoot_crit.wav" +} + +"Weapon_Minifun.WindDown" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/minifun_wind_down.wav" +} + +"Weapon_Minifun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_minigun_heavy.wav" +} + +// ------------------------------------------------------------------------------------ // +// PIPE +// ------------------------------------------------------------------------------------ // + +"Weapon_Pipe.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/cbar_miss1.wav" +} + +"Weapon_Pipe.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Pipe.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + + +// ------------------------------------------------------------------------------------ // +// ENFORCER +// ------------------------------------------------------------------------------------ // +"Weapon_Enforcer.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/tf_spy_enforcer_revolver_01.wav" + "wave" ")weapons/tf_spy_enforcer_revolver_02.wav" + "wave" ")weapons/tf_spy_enforcer_revolver_03.wav" + "wave" ")weapons/tf_spy_enforcer_revolver_04.wav" + "wave" ")weapons/tf_spy_enforcer_revolver_05.wav" + "wave" ")weapons/tf_spy_enforcer_revolver_06.wav" + } +} + +"Weapon_Enforcer.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tf_spy_enforcer_revolver_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// PISTOL +// ------------------------------------------------------------------------------------ // +"Weapon_Pistol.TF_Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/pistol_shoot.wav" +} + +"Weapon_Pistol.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/pistol_shoot_crit.wav" +} + +"Weapon_Pistol.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_Pistol.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +"Weapon_Pistol.Draw2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/draw_pistol_engineer.wav" +} + +"Weapon_Pistol.ClipIn" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol_clipin.wav" +} + +"Weapon_Pistol.ReloadScout" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/pistol_reload_scout.wav" +} + +"Weapon_Pistol.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/pistol_worldreload.wav" +} + +"Weapon_Pistol.WorldReloadEngineer" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol_clipin.wav" +} + +// ------------------------------------------------------------------------------------ // +// REVOLVER +// ------------------------------------------------------------------------------------ // + +"Weapon_Revolver.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/revolver_shoot.wav" +} + +"Weapon_Revolver.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/revolver_shoot_crit.wav" +} + +"Weapon_Revolver.Reload1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/revolver_reload_cylinder_open.wav" +} + +"Weapon_Revolver.Reload2" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/revolver_reload_cylinder_arm.wav" +} + +"Weapon_Revolver.Reload3" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/revolver_reload_cylinder_close.wav" +} + +"Weapon_Revolver.WorldReload" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/revolver_worldreload.wav" +} + +"Weapon_Revolver.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_Revolver.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +// ------------------------------------------------------------------------------------ // +// LETRANGER +// ------------------------------------------------------------------------------------ // + +"Weapon_Letranger.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" ".85" + "wave" ")weapons/letranger_shoot.wav" +} + +"Weapon_Letranger.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" ".85" + "wave" ")weapons/letranger_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// AMBASSADOR +// ------------------------------------------------------------------------------------ // + +"Weapon_Ambassador.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/ambassador_shoot.wav" +} + +"Weapon_Ambassador.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/ambassador_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// SHORT STOP +// ------------------------------------------------------------------------------------ // + +"Weapon_Short_Stop.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1.0" + "wave" ")weapons/short_stop_shoot.wav" +} + +"Weapon_Short_Stop.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1.0" + "wave" ")weapons/short_stop_shoot_crit.wav" +} + +"Weapon_Short_Stop.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" "weapons/short_stop_reload.wav" +} + +// ------------------------------------------------------------------------------------ // +// SODA POPPER +// ------------------------------------------------------------------------------------ // + +"Weapon_Soda_Popper.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/scatter_gun_double_bonk_shoot.wav" +} + +"Weapon_Soda_Popper.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/scatter_gun_double_bonk_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// SCATTER GUN DOUBLE +// ------------------------------------------------------------------------------------ // + +"Weapon_Scatter_Gun_Double.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/scatter_gun_double_shoot.wav" +} + +"Weapon_Scatter_Gun_Double.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/scatter_gun_double_shoot_crit.wav" +} + +"Weapon_DoubleBarrel.TubeOpen" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/scatter_gun_double_tube_open.wav" +} + +"Weapon_DoubleBarrel.ShellsOut" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/scatter_gun_double_shells_out.wav" +} + +"Weapon_DoubleBarrel.ShellsIn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/scatter_gun_double_shells_in.wav" +} + +"Weapon_DoubleBarrel.TubeClose" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/scatter_gun_double_tube_close.wav" +} + +// ------------------------------------------------------------------------------------ // +// BackShot Shotty +// ------------------------------------------------------------------------------------ // + +"Weapon_BackShot_Shotty.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tf2_backshot_shotty.wav" +} + +"Weapon_BackShot_Shotty.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tf2_backshot_shotty_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// Back Scatter +// ------------------------------------------------------------------------------------ // + +"Weapon_Back_Scatter.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tf2_back_scatter.wav" +} + +"Weapon_Back_Scatter.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/tf2_back_scatter_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// SCATTER GUN +// ------------------------------------------------------------------------------------ // + +"Weapon_Scatter_Gun.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/scatter_gun_shoot.wav" +} + +"Weapon_Scatter_Gun.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/scatter_gun_shoot_crit.wav" +} + +"Weapon_Scatter_Gun.Empty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/shotgun_empty.wav" +} + +"Weapon_Scatter_Gun.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/scatter_gun_reload.wav" +} + +"Weapon_Scatter_Gun.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/scatter_gun_worldreload.wav" +} + +"Weapon_Scatter_Gun.Pump" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/scatter_gun_worldreload.wav" +} + +"Weapon_Scatter_Gun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +// ------------------------------------------------------------------------------------ // +// SHOTGUN +// ------------------------------------------------------------------------------------ // +"Weapon_Shotgun.TF_Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/shotgun_shoot.wav" +} + +"Weapon_Shotgun.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/shotgun_shoot_crit.wav" +} + +"Weapon_Shotgun.Empty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/shotgun_empty.wav" +} + +"Weapon_Shotgun.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/shotgun_reload.wav" +} + +"Weapon_Shotgun.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/shotgun_worldreload.wav" +} + +"Weapon_Shotgun.Pump" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/shotgun_cock.wav" +} + +"Weapon_Shotgun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +"Weapon_ShotgunPyro.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_shotgun_pyro.wav" +} + +"Weapon_ShotgunEngineer.Cock_Back" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/shotgun_cock_back.wav" +} + +"Weapon_ShotgunEngineer.Cock_Forward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/shotgun_cock_forward.wav" +} + +// ------------------------------------------------------------------------------------ // +// SHOVEL +// ------------------------------------------------------------------------------------ // + +"Weapon_Shovel.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/shovel_swing.wav" +} + +"Weapon_Shovel.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/shovel_swing_crit.wav" +} + +"Weapon_Shovel.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/axe_hit_flesh1.wav" + "wave" ")weapons/axe_hit_flesh2.wav" + "wave" ")weapons/axe_hit_flesh3.wav" + } +} + +"Weapon_Shovel.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hit1.wav" + "wave" ")weapons/cbar_hit2.wav" + } +} + +"Weapon_Shovel.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/draw_shovel_soldier.wav" +} + +// ------------------------------------------------------------------------------------ // +// Nail Gun +// ------------------------------------------------------------------------------------ // +"Weapon_NailGun.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/nail_gun_shoot.wav" +} + +"Weapon_NailGun.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/nail_gun_shoot_crit.wav" +} + +"Weapon_NailGun.Reload" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/smg1/smg1_reload.wav" +} + +"Weapon_NailGun.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_NailGun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +// ------------------------------------------------------------------------------------ // +// SMG +// ------------------------------------------------------------------------------------ // +"Weapon_SMG.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/smg_shoot.wav" +} + +"Weapon_SMG.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/smg_shoot_crit.wav" +} + +"Weapon_SMG.WorldReload" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/smg_worldreload.wav" +} + +"Weapon_SMG.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_SMG.ClipOut" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/smg_clip_out.wav" +} + +"Weapon_SMG.ClipIn" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/smg_clip_in.wav" +} + + +"Weapon_SMG.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +// ------------------------------------------------------------------------------------ // +// SUPER SMG +// ------------------------------------------------------------------------------------ // +"Weapon_SuperSMG.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/smg_shoot.wav" +} + +"Weapon_SuperSMG.Reload" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/smg1/smg1_reload.wav" +} + +"Weapon_SuperSMG.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +// ------------------------------------------------------------------------------------ // +// BAZAAR BARGAIN +// ------------------------------------------------------------------------------------ // +"Weapon_Bazaar_Bargain.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/tf_sniper_bazaar_bargain_01.wav" + "wave" ")weapons/tf_sniper_bazaar_bargain_02.wav" + "wave" ")weapons/tf_sniper_bazaar_bargain_03.wav" + "wave" ")weapons/tf_sniper_bazaar_bargain_04.wav" + "wave" ")weapons/tf_sniper_bazaar_bargain_05.wav" + } +} + +"Weapon_Bazaar_Bargain.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\tf_sniper_bazaar_bargain_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// SYDNEY SLEEPER +// ------------------------------------------------------------------------------------ // +"Weapon_SydneySleeper.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sniper_sydneysleeper_shoot.wav" +} + +"Weapon_SydneySleeper.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sniper_sydneysleeper_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// CLASSIC SNIPER RIFLE +// ------------------------------------------------------------------------------------ // +"Weapon_ClassicSniperRifle.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sniper_rifle_classic_shoot.wav" +} + +"Weapon_ClassicSniperRifle.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sniper_rifle_classic_shoot_crit.wav" +} + + +// ------------------------------------------------------------------------------------ // +// SNIPER RIFLE +// ------------------------------------------------------------------------------------ // +"Weapon_SniperRifle.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sniper_shoot.wav" +} + +"Weapon_SniperRifle.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sniper_shoot_crit.wav" +} + +"Weapon_SniperRifle.WorldReload" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/sniper_worldreload.wav" +} + +"Weapon_SniperRifle.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_SniperRifle.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_SniperRifle.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".45" + "wave" "weapons/sniper_bolt_back.wav" +} + +"Weapon_SniperRifle.BoltBack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".45" + "wave" "weapons/sniper_bolt_forward.wav" +} + +// ------------------------------------------------------------------------------------ // +// TRANQUILIZER GUN +// ------------------------------------------------------------------------------------ // +"Weapon_Tranq.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" "misc/null.wav" +} + +"Weapon_Tranq.Reload" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/smg1/smg1_reload.wav" +} + +"Weapon_Tranq.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + +"Weapon_Tranq.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +// ------------------------------------------------------------------------------------ // +// WRANGLER +// ------------------------------------------------------------------------------------ // + +"Weapon_Wrangler.Ouch" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "rndwave" + { + "wave" "vo/engineer_negativevocalization07.mp3" + "wave" "vo/engineer_negativevocalization08.mp3" + "wave" "vo/engineer_negativevocalization09.mp3" + } +} + +// ------------------------------------------------------------------------------------ // +// WRENCH +// ------------------------------------------------------------------------------------ // + +"Weapon_Wrench.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" "weapons/wrench_swing.wav" +} + +"Weapon_Wrench.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/wrench_swing_crit.wav" +} + +"Weapon_Wrench.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/cbar_hitbod1.wav" + "wave" ")weapons/cbar_hitbod2.wav" + "wave" ")weapons/cbar_hitbod3.wav" + } +} + +"Weapon_Wrench.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".5" + "pitch" "95, 105" + "wave" "weapons/wrench_hit_world.wav" + +} + +"Weapon_Wrench.HitBuilding_Success" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".5" + "rndwave" + { + "wave" "weapons/wrench_hit_build_success1.wav" + "wave" "weapons/wrench_hit_build_success2.wav" + } +} + +"Weapon_Wrench.HitBuilding_Failure" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".5" + "wave" "weapons/wrench_hit_build_fail.wav" +} + +"Weapon_Wrench.HitHand" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" ".1" + "rndwave" + { + "wave" "weapons/metal_hit_hand1.wav" + "wave" "weapons/metal_hit_hand2.wav" + "wave" "weapons/metal_hit_hand3.wav" + } +} + +"Weapon_Wrench.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + + +"Weapon_Wrench.Draw2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/draw_wrench_engineer.wav" +} + +// ------------------------------------------------------------------------------------ // +// LIBERY LAUNCHER +// ------------------------------------------------------------------------------------ // +"Weapon_Liberty_Launcher.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_ll_shoot.wav" +} + +"Weapon_Liberty_Launcher.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_ll_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// RPG +// ------------------------------------------------------------------------------------ // +"TF_Weapon_RPG.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_shoot.wav" +} + +"Weapon_RPG.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_shoot_crit.wav" +} + +"Weapon_RPG.Draw" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_RPG.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/rocket_reload.wav" +} + +"Weapon_RPG.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/rocket_reload.wav" +} + + +// ------------------------------------------------------------------------------------ // +// RPG Direct Hit +// ------------------------------------------------------------------------------------ // + +"Weapon_RPG_DirectHit.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_directhit_shoot.wav" +} + +"Weapon_RPG_DirectHit.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_directhit_shoot_crit.wav" +} + +"Weapon_RPG_DirectHit.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")weapons/rocket_directhit_explode1.wav" + "wave" ")weapons/rocket_directhit_explode2.wav" + "wave" ")weapons/rocket_directhit_explode3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// RPG Black Box +// ------------------------------------------------------------------------------------ // + +"Weapon_RPG_BlackBox.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_blackbox_shoot.wav" +} + +"Weapon_RPG_BlackBox.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_blackbox_shoot_crit.wav" +} + +"Weapon_RPG_BlackBox.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")weapons/rocket_blackbox_explode1.wav" + "wave" ")weapons/rocket_blackbox_explode2.wav" + "wave" ")weapons/rocket_blackbox_explode3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// RPG Cow Mangler +// ------------------------------------------------------------------------------------ // +"Weapon_CowMangler.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/cow_mangler_main_shot.wav" +} + +"Weapon_CowMangler.SingleCharged" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/cow_mangler_over_charge_shot.wav" +} + +"Weapon_CowMangler.Charging" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/cow_mangler_over_charge.wav" +} + +"Weapon_CowMangler.Explode" +{ + "channel" "CHAN_WEAPON" + "volume" "0.95,1.0" + "soundlevel" "SNDLVL_115dB" + "pitch" "95, 100" + "rndwave" + { + "wave" ")weapons\cow_mangler_explosion_normal_01.wav" + "wave" ")weapons\cow_mangler_explosion_normal_02.wav" + "wave" ")weapons\cow_mangler_explosion_normal_03.wav" + } +} + +"Weapon_CowMangler.ExplodeCharged" +{ + "channel" "CHAN_WEAPON" + "volume" "0.95,1.0" + "soundlevel" "SNDLVL_115dB" + "pitch" "95, 100" + "rndwave" + { + "wave" ")weapons\cow_mangler_explosion_charge_01.wav" + "wave" ")weapons\cow_mangler_explosion_charge_02.wav" + "wave" ")weapons\cow_mangler_explosion_charge_03.wav" + } +} + +"Weapon_CowMangler.Idle" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/cow_mangler_idle.wav" +} + +"Weapon_CowMangler.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "rndwave" + { + "wave" "weapons\cow_mangler_reload.wav" + "wave" "weapons\cow_mangler_reload_02.wav" + "wave" "weapons\cow_mangler_reload_03.wav" + "wave" "weapons\cow_mangler_reload_04.wav" + } +} + +"Weapon_CowMangler.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "rndwave" + { + "wave" ")weapons\cow_mangler_reload.wav" + "wave" ")weapons\cow_mangler_reload_02.wav" + "wave" ")weapons\cow_mangler_reload_03.wav" + "wave" ")weapons\cow_mangler_reload_04.wav" + } +} + +"Weapon_CowMangler.ReloadFinal" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".65" + "wave" "weapons\cow_mangler_reload_final.wav" +} + +"Weapon_CowMangler.WorldReloadFinal" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "wave" ")weapons\cow_mangler_reload_final.wav" +} + +// ------------------------------------------------------------------------------------ // +// Righteous Bison +// ------------------------------------------------------------------------------------ // +"Weapon_Bison.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons\bison_main_shot_01.wav" + "wave" ")weapons\bison_main_shot_02.wav" + } +} + +"Weapon_Bison.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons\bison_main_shot_crit.wav" +} + +"Weapon_Bison.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "110" + "wave" "weapons/bison_reload.wav" +} + +"Weapon_Bison.ProjectileImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/fx/rics/bison_projectile_impact_world.wav" +} + +"Weapon_Bison.ProjectileImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/fx/rics/bison_projectile_impact_flesh.wav" +} +// ------------------------------------------------------------------------------------ // +// MAD MILK +// ------------------------------------------------------------------------------------ // + +"Weapon_MadMilk.Draw" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "wave" "weapons/draw_madmilk.wav" +} + +// ------------------------------------------------------------------------------------ // +// JARATE +// ------------------------------------------------------------------------------------ // +"Jar.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + + "wave" ")weapons/jar_explode.wav" +} + +"Weapon_Jarate.Draw" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "wave" "weapons/draw_jarate.wav" +} + +"Weapon_Jarate.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" "weapons/jar_single.wav" +} + +// +// ------------------------------------------------------------------------------------ // +// Grenades +// +// Grenade Sounds +// +// ------------------------------------------------------------------------------------ // + +// ------------------------------------------------------------------------------------ // +// BASE GRENADE +// ------------------------------------------------------------------------------------ // +"BaseGrenade.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_76dB" + + "rndwave" + { + "wave" "weapons/debris1.wav" + "wave" "weapons/debris2.wav" + } +} + +"BaseGrenade.BounceSound" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "rndwave" + { + "wave" "weapons/grenade_impact.wav" + "wave" "weapons/grenade_impact2.wav" + "wave" "weapons/grenade_impact3.wav" + } +} + +"BaseExplosionEffect.Sound" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")weapons/explode2.wav" + "wave" ")weapons/explode3.wav" + "wave" ")weapons/explode1.wav" + } +} + +"Weapon_Grenade_Normal.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/grenade_throw.wav" +} + +// ------------------------------------------------------------------------------------ // +// PIPEBOMB GRENADE +// ------------------------------------------------------------------------------------ // +"Weapon_Grenade_Pipebomb.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "rndwave" + { + "wave" ")weapons/pipe_bomb1.wav" + "wave" ")weapons/pipe_bomb2.wav" + "wave" ")weapons/pipe_bomb3.wav" + } +} + +"Weapon_Grenade_Pipebomb.Bounce" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "pitch" "96,100" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/grenade_impact.wav" +} + +"Weapon_Grenade_Pipebomb.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +// ------------------------------------------------------------------------------------ // +// DET PACK GRENADE +// ------------------------------------------------------------------------------------ // +"Weapon_Grenade_Det_Pack.Plant" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/det_pack_plant.wav" +} + +"Weapon_Grenade_Det_Pack.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" ")weapons/det_pack_explode.wav" +} + +"Weapon_Grenade_Det_Pack.Timer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/det_pack_timer.wav" +} + +// ------------------------------------------------------------------------------------ // +// SAPPER +// ------------------------------------------------------------------------------------ // +"Weapon_Sapper.Plant" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sapper_plant.wav" +} + +"Weapon_Sapper.Timer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sapper_timer.wav" +} + +"Weapon_Sapper_xmas.Timer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sapper_timer.wav" +} + +"Weapon_Sapper.Draw" +{ + "channel" "CHAN_AUTO" + "volume" ".5" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_Sapper.DrawSwitch" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/draw_sapper_switch.wav" +} + +"Weapon_Sapper.Removed" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_84dB" + "wave" "weapons/sapper_removed.wav" +} + + +// ------------------------------------------------------------------------------------ // +// ToolBox +// ------------------------------------------------------------------------------------ // + + +"Weapon_ToolBox.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +"Weapon_ToolBox.Draw2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_toolbox_engineer.wav" +} + +// ------------------------------------------------------------------------------------ // +// Gunslinger +// ------------------------------------------------------------------------------------ // + + +"Weapon_Gunslinger.Draw" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".75" + "wave" "weapons/gunslinger_draw.wav" +} + +"Weapon_Gunslinger.Swing" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/gunslinger_swing.wav" +} + + +"Weapon_Gunslinger.ThreeHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/gunslinger_three_hit.wav" +} + +"Weapon_Gunslinger.InspectFingerMove" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "rndwave" + { + "wave" "weapons/gunslinger_inspect_finger_move1.wav" + "wave" "weapons/gunslinger_inspect_finger_move2.wav" + "wave" "weapons/gunslinger_inspect_finger_move3.wav" + "wave" "weapons/gunslinger_inspect_finger_move4.wav" + } +} + + + +"Weapon_Gunslinger.InspectFingerClick" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "rndwave" + { + "wave" "weapons/gunslinger_inspect_finger_click1.wav" + "wave" "weapons/gunslinger_inspect_finger_click2.wav" + "wave" "weapons/gunslinger_inspect_finger_click3.wav" + "wave" "weapons/gunslinger_inspect_finger_click4.wav" + "wave" "weapons/gunslinger_inspect_finger_click5.wav" + "wave" "weapons/gunslinger_inspect_finger_click6.wav" + "wave" "weapons/gunslinger_inspect_finger_click7.wav" + "wave" "weapons/gunslinger_inspect_finger_click8.wav" + } +} + +"Weapon_Gunslinger.InspectFinish" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".3" + "wave" "weapons/gunslinger_draw.wav" +} + + +// ------------------------------------------------------------------------------------ // +// Dispenser +// ------------------------------------------------------------------------------------ // + +"Building_Dispenser.Build1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading5.wav" +} + +"Building_Dispenser.Build1a" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam3.wav" +} + +"Building_Dispenser.Build1b" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading1.wav" +} + +"Building_Dispenser.Build2" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short1.wav" +} + +"Building_Dispenser.Build3" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"Building_Dispenser.Build4" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam4.wav" +} + +"Building_Dispenser.Build5" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short1.wav" +} + +"Building_Dispenser.Build6" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"Building_Dispenser.Build7" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam1.wav" +} + +"Building_Dispenser.Build8" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"Building_Dispenser.Build9" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam2.wav" +} + +"Building_Dispenser.Build10" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short1.wav" +} + +"Building_Dispenser.Build11" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading5.wav" +} + +"Building_Dispenser.Build12" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam1.wav" +} + +"Building_Dispenser.Build13" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam1.wav" +} + +"Building_Dispenser.Build14" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam2.wav" +} + +"Building_Dispenser.Build15" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_medium3.wav" +} + +"Building_Dispenser.Build16" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading4.wav" +} + +"Building_Dispenser.Build17" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_medium2.wav" +} + +"Building_Dispenser.Build18" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/dispenser_bullet_chain.wav" +} + +"Building_Dispenser.Build18a" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading1.wav" +} + +"Building_Dispenser.Build19" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam4.wav" +} + +"Building_Dispenser.Build20" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/dispenser_bullet_chain2.wav" +} + +"Building_Dispenser.Build21" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_empty.wav" +} + +"Building_Dispenser.Build22" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + +"Building_Dispenser.Build23" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + +"Building_Dispenser.Build24" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + +"Building_Dispenser.Build24a" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading2.wav" +} + +"Building_Dispenser.Build24b" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + +"Building_Dispenser.Build24c" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + +"Building_Dispenser.Build24d" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + + +"Building_Dispenser.Build25" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading2.wav" +} + +"Building_Dispenser.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/dispenser_explode.wav" +} + +"Building_Dispenser.Idle" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/dispenser_idle.wav" +} + +"Building_Dispenser.GenerateMetal" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/dispenser_generate_metal.wav" +} + +"Building_Dispenser.Heal" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/dispenser_heal.wav" +} + +// ------------------------------------------------------------------------------------ // +// Sentry Gun +// ------------------------------------------------------------------------------------ // + +// Played when the gun acquired a new target +"Building_Sentrygun.Alert" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_88dB" + "wave" "weapons/sentry_spot.wav" +} + +"Building_Sentrygun.AlertTarget" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_88dB" + "wave" "weapons/sentry_spot_client.wav" +} + + +// random played while the sentry it turning, without a target +"Building_Sentrygun.Idle" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "wave" "weapons/sentry_scan.wav" +} + +"Building_Sentrygun.Idle2" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "wave" "weapons/sentry_scan2.wav" +} + +"Building_Sentrygun.Idle3" +{ + "channel" "CHAN_ITEM" + "volume" ".75" + "soundlevel" "SNDLVL_84dB" + "wave" "weapons/sentry_scan3.wav" +} + +//played while the sentry is reloading rockets +"Building_SentryGun.RocketSteam1" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" "weapons/sentry_upgrading_steam4.wav" +} + +"Building_SentryGun.RocketSteam2" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" "weapons/sentry_upgrading_steam1.wav" +} + +"Building_SentryGun.RocketMove1" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" "weapons/sentry_move_short2.wav" +} + +"Building_SentryGun.RocketMove2" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" "weapons/sentry_move_short1.wav" +} + +"Building_SentryGun.RocketClunk1" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/sentry_upgrading4.wav" +} + +"Building_SentryGun.RocketClunk2" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/sentry_upgrading5.wav" +} + +// played when the sentry completes building, or is upgrade +"Building_Sentrygun.Built" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" ")weapons/sentry_finish.wav" +} + +"Building_Sentrygun.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shoot.wav" +} + +"Building_Sentrygun.Fire2" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shoot2.wav" +} + +"Building_Sentrygun.Fire3" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shoot3.wav" +} + +"Building_Sentrygun.Empty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" "weapons/sentry_empty.wav" +} + +"Building_Sentrygun.FireRocket" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + + "wave" ")weapons/sentry_rocket.wav" +} + +"Building_Sentrygun.ShaftFire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shaft_shoot.wav" +} + +"Building_Sentrygun.ShaftFire2" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shaft_shoot2.wav" +} + +"Building_Sentrygun.ShaftFire3" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shaft_shoot3.wav" +} + +"Building_Sentrygun.ShaftLaserPass" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shaft_laser_pass.wav" +} + +"Building_Sentrygun.Build1" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading1.wav" +} + +"Building_Sentrygun.BuildSteam1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam1.wav" +} + +"Building_Sentrygun.Build1A" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading4.wav" +} + +"Building_Sentrygun.Build1B" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading7.wav" +} + + +"Building_Sentrygun.Build2" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"Building_Sentrygun.BuildSteam2" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam2.wav" +} + +"Building_Sentrygun.Build3" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading2.wav" +} + +"Building_Sentrygun.BuildSteam3" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam3.wav" +} + + +"Building_Sentrygun.Build4" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading4.wav" +} + +"Building_Sentrygun.Build5" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_medium3.wav" +} + +"Building_Sentrygun.Build6" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading5.wav" +} + +"Building_Sentrygun.BuildSteam4" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam4.wav" +} + +"Building_Sentrygun.Build7" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_long2.wav" +} + +"Building_Sentrygun.Build7A" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading7.wav" +} + +"Building_Sentrygun.BuildSteam5" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + +"Building_Sentrygun.Build8" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading3.wav" +} + +"Building_Sentrygun.Build9" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading6.wav" +} + +"Building_Sentrygun.Build10" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short2.wav" +} + +"Building_Sentrygun.Build11" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading8.wav" +} + +"Building_Sentrygun.Build12" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_long1.wav" +} + +"Building_Sentrygun.Build13" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_wire_connect.wav" +} + +"Building_Sentry.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_explode.wav" +} + +"Building_Sentry.Damage" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "rndwave" + { + "wave" "weapons/sentry_damage1.wav" + "wave" "weapons/sentry_damage2.wav" + "wave" "weapons/sentry_damage3.wav" + "wave" "weapons/sentry_damage4.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// MINI SENTRY +// ------------------------------------------------------------------------------------ // + +"Building_MiniSentrygun.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/sentry_shoot_mini.wav" +} + + + +// ------------------------------------------------------------------------------------ // +// TELEPORTER +// ------------------------------------------------------------------------------------ // +"Building_Teleporter.Ready" +{ + "channel" "CHAN_ITEM" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" ")weapons/teleporter_ready.wav" +} + +"Building_Teleporter.Send" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" ")weapons/teleporter_send.wav" +} + +"Building_Teleporter.Receive" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" ")weapons/teleporter_receive.wav" +} + +"Building_Teleporter.Build1" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading2.wav" +} + +"Building_Teleporter.Build1a" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading1.wav" +} + +"Building_Teleporter.Build2" +{ + "channel" "CHAN_ITEM" + "volume" ".25" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam2.wav" +} + +"Building_Teleporter.Build2a" +{ + "channel" "CHAN_STATIC" + "volume" ".25" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam5.wav" +} + + +"Building_Teleporter.Build2b" +{ + "channel" "CHAN_WEAPON" + "volume" ".25" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_medium2.wav" +} + + +"Building_Teleporter.Build2c" +{ + "channel" "CHAN_ITEM" + "volume" "1" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_medium3.wav" +} + +"Building_Teleporter.Build3" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam1.wav" +} + + +"Building_Teleporter.Build3a" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam2.wav" +} + +"Building_Teleporter.Build3b" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam3.wav" +} + +"Building_Teleporter.Build4" +{ + "channel" "CHAN_WEAPON" + "volume" ".25" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/teleporter_build_open2.wav" +} + +"Building_Teleporter.Build4a" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_upgrading_steam2.wav" +} + +"Building_Teleporter.Build5" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sentry_move_short2.wav" +} + + +"Building_Teleporter.SpinLevel1" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" "weapons/teleporter_spin.wav" +} + +"Building_Teleporter.SpinLevel2" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" "weapons/teleporter_spin2.wav" +} + + +"Building_Teleporter.SpinLevel3" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" "weapons/teleporter_spin3.wav" +} + +"Building_Teleporter.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/teleporter_explode.wav" +} + +// ------------------------------------------------------------------------------------ // +// BOW +// ------------------------------------------------------------------------------------ // +"Weapon_CompoundBow.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" ")weapons/bow_shoot.wav" +} + +"Weapon_CompoundBow.SinglePull" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" "1.0" + "wave" ")weapons/bow_shoot_pull.wav" +} + +"Weapon_CompoundBow.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "wave" ")weapons/bow_shoot_crit.wav" +} + +"Weapon_CompoundBow.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" "weapons/pistol/pistol_empty.wav" +} + + + +"Weapon_CompoundBow.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/pistol_worldreload.wav" +} + +"Weapon_Bow.Draw" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_75dB" + + "wave" "weapons/draw_bow.wav" +} + +"Weapon_Bow.PullShort" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "wave" ")weapons/bow_shoot_pull_short.wav" +} + +"Weapon_Bow.PullReverse" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_75dB" + + "wave" ")weapons/bow_shoot_pull_reverse.wav" +} + +"Weapon_Bow.ArrowSlide" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_75dB" + + "wave" "weapons/bow_arrow_slide.wav" +} + +// ------------------------------------------------------------------------------------ // +// CRUSADERS CROSSBOW +// ------------------------------------------------------------------------------------ // +"Weapon_CrusadersCrossbow.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/crusaders_crossbow_shoot.wav" +} + +"Weapon_CrusadersCrossbow.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons/crusaders_crossbow_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// ARROW EFFECTS +// ------------------------------------------------------------------------------------ // + +"Weapon_Arrow.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "weapons/fx/rics/arrow_impact_flesh.wav" + "wave" "weapons/fx/rics/arrow_impact_flesh2.wav" + "wave" "weapons/fx/rics/arrow_impact_flesh3.wav" + "wave" "weapons/fx/rics/arrow_impact_flesh4.wav" + } +} + +"Weapon_Arrow.ImpactConcrete" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_81dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "weapons/fx/rics/arrow_impact_concrete.wav" + "wave" "weapons/fx/rics/arrow_impact_concrete2.wav" + "wave" "weapons/fx/rics/arrow_impact_concrete4.wav" + } +} + + +"Weapon_Arrow.ImpactMetal" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_81dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "weapons/fx/rics/arrow_impact_metal.wav" + "wave" "weapons/fx/rics/arrow_impact_metal2.wav" + "wave" "weapons/fx/rics/arrow_impact_metal4.wav" + } +} + + +"Weapon_Arrow.ImpactWood" +{ + "channel" "CHAN_STATIC" + "volume" ".75" + "soundlevel" "SNDLVL_81dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "weapons/fx/rics/arrow_impact_wood.wav" + "wave" "weapons/fx/rics/arrow_impact_wood2.wav" + "wave" "weapons/fx/rics/arrow_impact_wood4.wav" + } +} + +"Weapon_Arrow.Nearmiss" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_106dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "weapons/fx/nearmiss/arrow_nearmiss.wav" + "wave" "weapons/fx/nearmiss/arrow_nearmiss2.wav" + "wave" "weapons/fx/nearmiss/arrow_nearmiss3.wav" + "wave" "weapons/fx/nearmiss/arrow_nearmiss4.wav" + } +} + +"Weapon_Arrow.ImpactFleshCrossbowHeal" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "PITCH_NORM" + "soundlevel" "SNDLVL_86dB" + + "wave" ")weapons/fx/rics/arrow_impact_crossbow_heal.wav" +} + +// ------------------------------------------------------------------------------------ // +// PICKAXE - THE EQUALIZER +// ------------------------------------------------------------------------------------ // + +"Weapon_PickAxe.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/blade_slice_2.wav" + "wave" "weapons/blade_slice_3.wav" + "wave" "weapons/blade_slice_4.wav" + } +} + + +"Weapon_PickAxe.Swing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" ".25" + "pitch" "95, 105" + "rndwave" + { + "wave" ")weapons/pickaxe_swing1.wav" + "wave" ")weapons/pickaxe_swing2.wav" + "wave" ")weapons/pickaxe_swing3.wav" + } +} + +"Weapon_Pickaxe.SwingCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" ".25" + "wave" ")weapons/pickaxe_swing_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// BATTALIONS BACKUP +// ------------------------------------------------------------------------------------ // + +"Weapon_BattalionsBackup.HornRed" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "weapons/battalions_backup_red.wav" + +} + +"Weapon_BattalionsBackup.HornBlue" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "weapons/battalions_backup_blue.wav" + +} + +// ------------------------------------------------------------------------------------ // +// BUFF BANNER +// ------------------------------------------------------------------------------------ // + +"Weapon_BuffBanner.HornRed" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "weapons/buff_banner_horn_red.wav" + +} + +"Weapon_BuffBanner.HornBlue" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NONE" + "volume" "1.0" + "wave" "weapons/buff_banner_horn_blue.wav" + +} +"Weapon_BuffBanner.Flag" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/buff_banner_flag.wav" + +} + +"Weapon_BuffBanner.BuffOn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/buff_on.wav" + +} + +"Weapon_BuffBanner.BuffOff" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/buff_off.wav" +} + +// ------------------------------------------------------------------------------------ // +// DEMO CHARGE +// ------------------------------------------------------------------------------------ // + +"DemoCharge.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/demo_charge_hit_world1.wav" + "wave" "weapons/demo_charge_hit_world2.wav" + "wave" "weapons/demo_charge_hit_world3.wav" + } +} + +"DemoCharge.HitFleshRange" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/demo_charge_hit_flesh_range1.wav" + "wave" "weapons/demo_charge_hit_flesh_range2.wav" + "wave" "weapons/demo_charge_hit_flesh_range3.wav" + } +} + +"DemoCharge.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/demo_charge_hit_flesh1.wav" + "wave" "weapons/demo_charge_hit_flesh2.wav" + "wave" "weapons/demo_charge_hit_flesh3.wav" + } +} + +"DemoCharge.Charging" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/demo_charge_windup1.wav" + "wave" "weapons/demo_charge_windup2.wav" + "wave" "weapons/demo_charge_windup3.wav" + } +} + +"DemoCharge.ChargeCritOn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "0.25" + "wave" ")weapons/weapon_crit_charged_on.wav" +} + +"DemoCharge.ChargeCritOff" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "0.25" + "wave" ")weapons/weapon_crit_charged_off.wav" +} + +// ------------------------------------------------------------------------------------ // +// DEMO SWORD +// ------------------------------------------------------------------------------------ // + +"Weapon_Sword.Swing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "pitch" "95, 105" + "wave" ")weapons/demo_sword_swing1.wav" + +} + +"Weapon_Sword.SwingCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".25" + "wave" ")weapons/demo_sword_swing_crit.wav" +} + +"Weapon_Sword.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/blade_slice_2.wav" + "wave" "weapons/blade_slice_3.wav" + "wave" "weapons/blade_slice_4.wav" + } +} + +"Weapon_Sword.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/demo_sword_hit_world1.wav" + "wave" ")weapons/demo_sword_hit_world2.wav" + } +} + +"Weapon_Sword.Draw" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/draw_sword.wav" +} + +// ------------------------------------------------------------------------------------ // +// RECON +// ------------------------------------------------------------------------------------ // + +"Recon.Ping" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/recon_ping.wav" +} + +// ------------------------------------------------------------------------------------ // +// GUITAR +// ------------------------------------------------------------------------------------ // + +"Weapon_Guitar.Strum" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/guitar_strum.wav" +} + +"Weapon_Guitar.Impact" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "rndwave" + { + "wave" ")weapons/guitar_impact1.wav" + "wave" ")weapons/guitar_impact2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// FRYING PAN +// ------------------------------------------------------------------------------------ // + +"FryingPan.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/pan/melee_frying_pan_01.wav" + "wave" "weapons/pan/melee_frying_pan_02.wav" + "wave" "weapons/pan/melee_frying_pan_03.wav" + "wave" "weapons/pan/melee_frying_pan_04.wav" + } +} + +"FryingPan.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons/pan/pan_impact_world1.wav" + "wave" "weapons/pan/pan_impact_world2.wav" + "wave" "weapons/pan/pan_impact_world3.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// HALLOWEEN BOSS AXE +// ------------------------------------------------------------------------------------ // + +"Halloween.HeadlessBossAxeHitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_150dB" + "pitch" "95,105" + "volume" "1.0" + "wave" ")weapons/halloween_boss/knight_axe_hit.wav" +} + +"Halloween.HeadlessBossAxeHitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_150dB" + "pitch" "95,105" + "volume" "1.0" + "wave" ")weapons/halloween_boss/knight_axe_miss.wav" +} + +"Halloween.HeadlessBossFootfalls" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_150dB" + "pitch" "95,105" + "volume" "1.0" + "rndwave" + { + "wave" ")player/footsteps/giant1.wav" + "wave" ")player/footsteps/giant2.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Samurai Katana +// ------------------------------------------------------------------------------------ // + + +"Weapon_Katana.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_65dB" + "volume" ".6" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/samurai/TF_Katana_01.wav" + "wave" ")weapons/samurai/TF_Katana_02.wav" + "wave" ")weapons/samurai/TF_Katana_03.wav" + "wave" ")weapons/samurai/TF_Katana_04.wav" + "wave" ")weapons/samurai/TF_Katana_05.wav" + "wave" ")weapons/samurai/TF_Katana_06.wav" + } +} + +"Weapon_Katana.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_65dB" + "volume" ".6" + "wave" ")weapons/samurai/TF_katana_crit_miss_01.wav" +} + +"Weapon_Katana.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/samurai/TF_katana_slice_01.wav" + "wave" ")weapons/samurai/TF_katana_slice_02.wav" + "wave" ")weapons/samurai/TF_katana_slice_03.wav" + } +} + +"Weapon_Katana.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/samurai/TF_katana_impact_object_01.wav" + "wave" ")weapons/samurai/TF_katana_impact_object_02.wav" + "wave" ")weapons/samurai/TF_katana_impact_object_03.wav" + } +} + +"Weapon_Katana.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_70dB" + "volume" ".7" + "rndwave" + { + "wave" ")weapons/samurai/TF_katana_draw_01.wav" + "wave" ")weapons/samurai/TF_katana_draw_02.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Marked for Death +// ------------------------------------------------------------------------------------ // + +"Weapon_Marked_for_Death.Initial" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "volume" "0.95, 1.0" + "rndwave" + { + "wave" ")weapons\samurai\TF_marked_for_death_impact_01.wav" + "wave" ")weapons\samurai\TF_marked_for_death_impact_02.wav" + "wave" ")weapons\samurai\TF_marked_for_death_impact_03.wav" + } +} + +"Weapon_Marked_for_Death.Indicator" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" "weapons\samurai\TF_marked_for_death_indicator.wav" +} + +// ------------------------------------------------------------------------------------ // +// DETONATOR +// ------------------------------------------------------------------------------------ // + +"Weapon_Detonator.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "volume" "0.75, 0.8" + "wave" ")weapons\flare_detonator_launch.wav" +} + +"Weapon_Detonator.Detonate" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" ")weapons\flare_detonator_explode.wav" +} + +"Weapon_Detonator.DetonateWorld" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" ")weapons\flare_detonator_explode_world.wav" +} + + + +// ------------------------------------------------------------------------------------ // +// SAXXY +// ------------------------------------------------------------------------------------ // + +"Saxxy.TurnGold" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" ")weapons/saxxy_impact_gen_06.wav" +} + +"Saxxy.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons\saxxy_impact_gen_01.wav" +} + +// ------------------------------------------------------------------------------------ // +// DISCIPLINE DEVICE +// ------------------------------------------------------------------------------------ // + +"DisciplineDevice.Impact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\discipline_device_impact_01.wav" + "wave" ")weapons\discipline_device_impact_02.wav" + } +} + +"DisciplineDevice.ImpactCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\discipline_device_impact_crit_01.wav" + "wave" ")weapons\discipline_device_impact_crit_02.wav" + } +} + +"DisciplineDevice.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.9" + "wave" ")weapons\discipline_device_hit_world.wav" +} + +"DisciplineDevice.Swing" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\discipline_device_woosh_01.wav" + "wave" ")weapons\discipline_device_woosh_02.wav" + } +} + +"DisciplineDevice.PowerUp" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons\discipline_device_power_up.wav" +} + +"DisciplineDevice.PowerDown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons\discipline_device_power_down.wav" +} + +// ------------------------------------------------------------------------------------ // +// EVICTION NOTICE +// ------------------------------------------------------------------------------------ // + +"EvictionNotice.Impact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\eviction_notice_01.wav" + "wave" ")weapons\eviction_notice_02.wav" + "wave" ")weapons\eviction_notice_03.wav" + "wave" ")weapons\eviction_notice_04.wav" + } +} + +"EvictionNotice.ImpactCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\eviction_notice_01_crit.wav" + "wave" ")weapons\eviction_notice_02_crit.wav" + "wave" ")weapons\eviction_notice_03_crit.wav" + "wave" ")weapons\eviction_notice_04_crit.wav" + } +} + +"EvictionNotice.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\demo_sword_hit_world1.wav" + "wave" ")weapons\demo_sword_hit_world2.wav" + } +} + +"EvictionNotice.Swing" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons\boxing_gloves_swing1.wav" + "wave" "weapons\boxing_gloves_swing2.wav" + "wave" "weapons\boxing_gloves_swing4.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// BOSTON BASHER +// ------------------------------------------------------------------------------------ // + +"BostonBasher.Impact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\eviction_notice_01.wav" + "wave" ")weapons\eviction_notice_02.wav" + "wave" ")weapons\eviction_notice_03.wav" + "wave" ")weapons\eviction_notice_04.wav" + } +} + +"BostonBasher.ImpactCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\eviction_notice_01_crit.wav" + "wave" ")weapons\eviction_notice_02_crit.wav" + "wave" ")weapons\eviction_notice_03_crit.wav" + "wave" ")weapons\eviction_notice_04_crit.wav" + } +} + +"BostonBasher.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\demo_sword_hit_world1.wav" + "wave" ")weapons\demo_sword_hit_world2.wav" + } +} + +"BostonBasher.Swing" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons\boxing_gloves_swing1.wav" + "wave" "weapons\boxing_gloves_swing2.wav" + "wave" "weapons\boxing_gloves_swing4.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// RESERVE SHOOTER +// ------------------------------------------------------------------------------------ // + + +"Weapon_Reserve_Shooter.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\reserve_shooter_01.wav" + "wave" ")weapons\reserve_shooter_02.wav" + "wave" ")weapons\reserve_shooter_03.wav" + "wave" ")weapons\reserve_shooter_04.wav" + } +} + +"Weapon_Reserve_Shooter.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\reserve_shooter_01_crit.wav" + "wave" ")weapons\reserve_shooter_02_crit.wav" + "wave" ")weapons\reserve_shooter_03_crit.wav" + "wave" ")weapons\reserve_shooter_04_crit.wav" + } +} + +"Weapon_Reserve_Shooter.Empty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/shotgun_empty.wav" +} + +"Weapon_Reserve_Shooter.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/scatter_gun_reload.wav" +} + +"Weapon_Reserve_Shooter.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/scatter_gun_worldreload.wav" +} + +"Weapon_Reserve_Shooter.Pump" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/scatter_gun_worldreload.wav" +} + +"Weapon_Reserve_Shooter.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_secondary.wav" +} + +// ------------------------------------------------------------------------------------ // +// MANTREADS +// ------------------------------------------------------------------------------------ // + + +"Weapon_Mantreads.Impact" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons\mantreads.wav" +} + + +// ------------------------------------------------------------------------------------ // +// QUAKE ROCKET LAUNCHER +// ------------------------------------------------------------------------------------ // + + +"Weapon_QuakeRPG.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_94dB" + "wave" "weapons\quake_rpg_fire_remastered.wav" +} + +"Weapon_QuakeRPG.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "wave" "weapons\quake_rpg_fire_remastered_crit.wav" +} + +"Weapon_QuakeRPG.Draw" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons\quake_ammo_pickup_remastered.wav" +} + +"Weapon_QuakeRPG.Reload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons\quake_rpg_reload_remastered.wav" +} + +"Weapon_QuakeRPG.WorldReload" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons\quake_rpg_reload_remastered.wav" +} + +"Weapon_QuakeRPG.Explode" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_95dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" "weapons\quake_explosion_remastered.wav" +} + +// ------------------------------------------------------------------------------------ // +// DIAMOND BACK +// ------------------------------------------------------------------------------------ // +"Weapon_Diamond_Back.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_92dB" + "volume" "0.8" + "rndwave" + { + "wave" ")weapons\diamond_back_01.wav" + "wave" ")weapons\diamond_back_02.wav" + "wave" ")weapons\diamond_back_03.wav" + } +} + +"Weapon_Diamond_Back.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\diamond_back_01_crit.wav" + "wave" ")weapons\diamond_back_02_crit.wav" + "wave" ")weapons\diamond_back_03_crit.wav" + } +} + + +// ------------------------------------------------------------------------------------ // +// SNIPER RAILGUN RIFLE +// ------------------------------------------------------------------------------------ // +"Weapon_SniperRailgun.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\sniper_railgun_single_01.wav" + "wave" ")weapons\sniper_railgun_single_02.wav" + } +} + +"Weapon_SniperRailgun.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\sniper_railgun_single_crit.wav" + "wave" ")weapons\sniper_railgun_single_crit_02.wav" + } +} + +"Weapon_SniperRailgun_Large.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\sniper_railgun_charged_shot_01.wav" + "wave" ")weapons\sniper_railgun_charged_shot_02.wav" + } +} + +"Weapon_SniperRailgun_Large.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\sniper_railgun_charged_shot_crit_01.wav" + "wave" ")weapons\sniper_railgun_charged_shot_crit_02.wav" + } +} + +"Weapon_SniperRailgun.WorldReload" +{ + "channel" "CHAN_STATIC" + "volume" "0.35" + "soundlevel" "SNDLVL_NORM" + + "wave" ")weapons\sniper_railgun_world_reload.wav" +} + +"Weapon_SniperRailgun.ClipEmpty" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" ")weapons\sniper_railgun_dry_fire.wav" +} + +"Weapon_SniperRailgun.NonScoped" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NORM" + + "wave" ")weapons\sniper_railgun_no_fire.wav" +} + +"Weapon_SniperRailgun.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_primary.wav" +} + +"Weapon_SniperRailgun.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".45" + "wave" ")weapons\sniper_railgun_bolt_forward.wav" +} + +"Weapon_SniperRailgun.BoltBack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".45" + "wave" ")weapons\sniper_railgun_bolt_back.wav" +} + +// ------------------------------------------------------------------------------------ // +// WIDOW MAKER SHOTGUN +// ------------------------------------------------------------------------------------ // + +"Weapon_WidowMaker.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_92dB" + "volume" "0.9" + "rndwave" + { + "wave" ")weapons\widow_maker_shot_01.wav" + "wave" ")weapons\widow_maker_shot_02.wav" + "wave" ")weapons\widow_maker_shot_03.wav" + } +} + +"Weapon_WidowMaker.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_92dB" + "volume" "0.9" + "rndwave" + { + "wave" ")weapons\widow_maker_shot_crit_01.wav" + "wave" ")weapons\widow_maker_shot_crit_02.wav" + "wave" ")weapons\widow_maker_shot_crit_03.wav" + } +} + +"Weapon_WidowMaker.Empty" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons\widow_maker_dry_fire.wav" +} + +"Weapon_WidowMaker.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/draw_shotgun_pyro.wav" +} + +"Weapon_WidowMaker.Cock_Back" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons\widow_maker_pump_action_back.wav" +} + +"Weapon_WidowMaker.Cock_Forward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" ")weapons\widow_maker_pump_action_forward.wav" +} + +// ------------------------------------------------------------------------------------ // +// BARRETS ARM +// ------------------------------------------------------------------------------------ // + + +"Weapon_BarretsArm.Shot" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons\barret_arm_shot.wav" +} + +"Weapon_BarretsArm.Draw" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "0" + "wave" "weapons\barret_arm_draw.wav" +} + +"Weapon_BarretsArm.Fizzle" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".7" + "wave" ")weapons\barret_arm_fizzle.wav" +} + +"Weapon_BarretsArm.Zap" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\barret_arm_zap.wav" +} + +//-----------------------------------------// +// BOMBINOMICON PLAYER EXPLODE +//-----------------------------------------// +"Bombinomicon.Explode" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_105dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" "weapons/bombinomicon_explode1.wav" + +} + +//-----------------------------------------// +// SPY ASSASSIN KNIFE +//-----------------------------------------// + + +"Weapon_Assassin_Knife.Draw" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" ")weapons\spy_assassin_knife_draw.wav" +} + +"Weapon_Assassin_Knife.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/knife_swing.wav" +} + +"Weapon_Assassin_Knife.MissCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/knife_swing_crit.wav" +} + +"Weapon_Assassin_Knife.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\spy_assassin_knife_impact_01.wav" + "wave" ")weapons\spy_assassin_knife_impact_02.wav" + } +} + +"Weapon_Assassin_Knife.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/blade_hitworld.wav" +} + +"Weapon_Assassin_Knife.Backstab" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + + "wave" ")weapons\spy_assassin_knife_bckstb.wav" +} + + +//-----------------------------------------// +// Dr Grordbort's Wrenchmotron 600 +//-----------------------------------------// + +"Weapon_DRG_Wrench.Teleport" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_150dB" + "volume" "1.0" + "wave" ")weapons/drg_wrench_teleport.wav" +} + +// ------------------------------------------------------------------------------------ // +// The Spycicle (Spy Icicle knife) +// ------------------------------------------------------------------------------------ // + +"Icicle.TurnToIce" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" ")weapons/icicle_freeze_victim_01.wav" +} + +"Icicle.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons/icicle_hit_world_01.wav" + "wave" ")weapons/icicle_hit_world_02.wav" + "wave" ")weapons/icicle_hit_world_03.wav" + } +} + +"Icicle.Melt" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_100dB" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" ")weapons/icicle_melt_01.wav" +} + +"Icicle.Deploy" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + "volume" "1.0" + "wave" ")weapons/icicle_deploy.wav" +} + +//-----------------------------------------// +// Man Melter +//-----------------------------------------// +"Weapon_ManMelter.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons\man_melter_fire.wav" +} + +"Weapon_ManMelter.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons\man_melter_fire_crit.wav" +} + +"Weapon_ManMelter.altfire_lp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\man_melter_alt_fire_lp.wav" +} + + +//-----------------------------------------// +// Ball Buster +//-----------------------------------------// +"BallBuster.OrnamentImpact" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "rndwave" + { + "wave" "weapons\ball_buster_break_01.wav" + "wave" "weapons\ball_buster_break_02.wav" + } +} + +"BallBuster.OrnamentImpactRange" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + "rndwave" + { + "wave" "weapons\ball_buster_break_01_crowd.wav" + "wave" "weapons\ball_buster_break_02_crowd.wav" + } +} + +"BallBuster.HitBall" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1.0" + "pitch" "115" + "wave" "weapons\ball_buster_hit_02.wav" +} + +"BallBuster.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons\ball_buster_hit_01.wav" +} + +"BallBuster.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons\ball_buster_hit_01.wav" +} + +"BallBuster.DrawCatch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".75" + "wave" "weapons\ball_buster_hit_01.wav" +} + +"BallBuster.Ornament_DrawCatch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" "weapons\ball_buster_catch_01.wav" + "wave" "weapons\ball_buster_catch_02.wav" + } +} + +"BallBuster.Ball_HitWorld" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "rndwave" + { + "wave" ")weapons\ball_buster_bounce_01.wav" + "wave" ")weapons\ball_buster_bounce_02.wav" + "wave" ")weapons\ball_buster_bounce_03.wav" + "wave" ")weapons\ball_buster_bounce_04.wav" + "wave" ")weapons\ball_buster_bounce_05.wav" + "wave" ")weapons\ball_buster_bounce_06.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Pomson 6000 +// ------------------------------------------------------------------------------------ // +"Weapon_Pomson.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons\pomson_fire_01.wav" +} + +"Weapon_Pomson.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons\pomson_fire_crit_01.wav" +} + +"Weapon_Pomson.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "110" + "wave" "weapons/bison_reload.wav" +} + +"Weapon_Pomson.DrainedVictim" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "pitch" "110" + "wave" "weapons/drg_pomson_drain_01.wav" +} + +"Weapon_Pomson.ProjectileImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/fx/rics/pomson_projectile_impact_world.wav" +} + +"Weapon_Pomson.ProjectileImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_75dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/fx/rics/pomson_projectile_impact_flesh.wav" +} + +// ------------------------------------------------------------------------------------ // +// PHLOGISTINATOR +// ------------------------------------------------------------------------------------ // + +"Weapon_phlogistinator.FireStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\phlog_ignite.wav" +} + +"Weapon_phlogistinator.FireLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\phlog_loop.wav" +} + +"Weapon_phlogistinator.FireLoopCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\phlog_loop_crit.wav" +} + +"Weapon_phlogistinator.WindDown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\phlog_end.wav" +} + + +// ------------------------------------------------------------------------------------ // +// 3RD DEGREE +// ------------------------------------------------------------------------------------ // + +"Weapon_3rd_degree.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\3rd_degree_hit_01.wav" + "wave" ")weapons\3rd_degree_hit_02.wav" + "wave" ")weapons\3rd_degree_hit_03.wav" + "wave" ")weapons\3rd_degree_hit_04.wav" + } +} + +"Weapon_3rd_degree.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "rndwave" + { + "wave" ")weapons\3rd_degree_hit_world_01.wav" + "wave" ")weapons\3rd_degree_hit_world_02.wav" + "wave" ")weapons\3rd_degree_hit_world_03.wav" + "wave" ")weapons\3rd_degree_hit_world_04.wav" + } +} + + +// ------------------------------------------------------------------------------------ // +// Mittens +// ------------------------------------------------------------------------------------ // + +"Weapon_mittens.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.6" + "wave" ")weapons\mittens_punch.wav" +} + +"Weapon_mittens.CritHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.8" + "wave" ")weapons\mittens_punch_crit.wav" +} + +"Weapon_mittens.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.5" + "wave" ")weapons\mittens_punch.wav" +} + +"Weapon_mittens.HitGlove" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" ".4" + "wave" ")weapons\mittens_punch.wav" +} + +// ------------------------------------------------------------------------------------ // +// Dumpster Rocket Launcher +// ------------------------------------------------------------------------------------ // + +"Weapon_DumpsterRocket.Reload" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "100" + "wave" "weapons/dumpster_rocket_reload.wav" +} + +"Weapon_DumpsterRocket.Reload_FP" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "pitch" "100" + "wave" ")weapons/dumpster_rocket_reload_fp.wav" +} + +// ------------------------------------------------------------------------------------ // +// Rainblower +// ------------------------------------------------------------------------------------ // + +"Weapon_Rainblower.FireStart" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/rainblower/rainblower_start.wav" +} + +"Weapon_Rainblower.FireLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/rainblower/rainblower_loop.wav" +} + +"Weapon_Rainblower.FireEnd" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/rainblower/rainblower_end.wav" + +} + +"Weapon_Rainblower.FireHit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/rainblower/rainblower_hit.wav" +} + +"Weapon_Rainblower.PilotLoop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" ".25" + "wave" ")weapons/rainblower/rainblower_pilot.wav" +} + +"Weapon_Rainblower.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/rainblower/rainblower_start.wav" +} + +"Weapon_Rainblower.WindDown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/rainblower/rainblower_end.wav" + +} + +// ------------------------------------------------------------------------------------ // +// Meet the Pyro, Doomsday, Public Enemy Pack, Urban Pro +// ------------------------------------------------------------------------------------ // +"Weapon_PickPocket_Pistol.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_scout_pistol.wav" +} + +"Weapon_PickPocket_Pistol.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_scout_pistol_crit.wav" +} + +"Weapon_Brawler_Blaster.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_scout_shotgun.wav" +} + +"Weapon_Brawler_Blaster.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_scout_shotgun_crit.wav" +} + +"Weapon_ProSniperRifle.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_98dB" + "volume" "1.0" + "wave" ")weapons/doom_sniper_rifle.wav" +} + +"Weapon_ProSniperRifle.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_98dB" + "volume" "1.0" + "wave" ")weapons/doom_sniper_rifle_crit.wav" +} + +"Weapon_UrbanProfessional.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_sniper_smg.wav" +} + +"Weapon_UrbanProfessional.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_sniper_smg_crit.wav" +} + +"Weapon_Does_Dumpster.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_rocket_launcher.wav" +} + +"Weapon_Does_Dumpster.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_rocket_launcher_crit.wav" +} + +"Weapon_ScorchShot.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_flare_gun.wav" +} + +"Weapon_ScorchShot.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/doom_flare_gun_crit.wav" +} + +//-----------------------------------------// +// Cleaver +//-----------------------------------------// +"Cleaver.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_85dB" + + "rndwave" + { + "wave" ")weapons\cleaver_hit_02.wav" + "wave" ")weapons\cleaver_hit_03.wav" + "wave" ")weapons\cleaver_hit_05.wav" + "wave" ")weapons\cleaver_hit_06.wav" + "wave" ")weapons\cleaver_hit_07.wav" + } +} + +"Cleaver.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_85dB" + "wave" ")weapons\cleaver_hit_world.wav" +} + +"Cleaver.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons/cleaver_throw.wav" + +} + +"Cleaver.Draw" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" "weapons/cleaver_draw.wav" +} +//-----------------------------------------// +// Neon Sign +//-----------------------------------------// +"Neon_Sign.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "rndwave" + { + "wave" ")weapons\neon_sign_hit_01.wav" + "wave" ")weapons\neon_sign_hit_02.wav" + "wave" ")weapons\neon_sign_hit_03.wav" + "wave" ")weapons\neon_sign_hit_04.wav" + } +} + +"Neon_Sign.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "rndwave" + { + "wave" ")weapons\neon_sign_hit_world_01.wav" + "wave" ")weapons\neon_sign_hit_world_02.wav" + "wave" ")weapons\neon_sign_hit_world_03.wav" + "wave" ")weapons\neon_sign_hit_world_04.wav" + } +} + +//-----------------------------------------// +// SD Sapper +//-----------------------------------------// +"Weapon_sd_sapper.Timer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "rndwave" + { + "wave" ")weapons\spy_tape_01.wav" + "wave" ")weapons\spy_tape_02.wav" + "wave" ")weapons\spy_tape_03.wav" + "wave" ")weapons\spy_tape_04.wav" + "wave" ")weapons\spy_tape_05.wav" + } +} + +//-----------------------------------------// +// Wheatley Sapper +//-----------------------------------------// +"Weapon_p2rec.Timer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sapper_timer.wav" +} + +//-----------------------------------------// +// Dragon Minigun +//-----------------------------------------// +"Dragon_Minigun.Spin" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" ")weapons/dragon_gun_motor_loop_dry.wav" +} + +"Dragon_Minigun.WindUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/dragon_gun_motor_start.wav" +} + +"Dragon_Minigun.WindDown" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/dragon_gun_motor_stop.wav" +} + +"Dragon_Minigun.Fire" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/dragon_gun_motor_loop.wav" +} + +"Dragon_Minigun.FireCrit" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/dragon_gun_motor_loop_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// CSGO AWP +// ------------------------------------------------------------------------------------ // +"Weapon_AWP.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/csgo_awp_shoot.wav" +} + +"Weapon_AWP.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/csgo_awp_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// RESCUE RANGER +// ------------------------------------------------------------------------------------ // + +"Weapon_RescueRanger.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\rescue_ranger_fire.wav" +} + +"Weapon_RescueRanger.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\rescue_ranger_fire_crit.wav" +} + +"Weapon_RescueRanger.charge_01" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\rescue_ranger_charge_01.wav" +} + +"Weapon_RescueRanger.charge_02" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\rescue_ranger_charge_02.wav" +} + +"RescueRanger_Teleporter.Send" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "pitch" "PITCH_NORM" + "volume" "0.700000" + "rndwave" + { + "wave" ")weapons\rescue_ranger_teleport_send_01.wav" + "wave" ")weapons\rescue_ranger_teleport_send_02.wav" + } +} + +"RescueRanger_Teleporter.Receive" +{ + "channel" "CHAN_STATIC" + "volume" "0.700000" + "soundlevel" "SNDLVL_74dB" + "rndwave" + { + "wave" ")weapons\rescue_ranger_teleport_receive_01.wav" + "wave" ")weapons\rescue_ranger_teleport_receive_02.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Vaccinator +// ------------------------------------------------------------------------------------ // +"WeaponMedigun_Vaccinator.Healing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\vaccinator_heal.wav" +} + +"WeaponMedigun_Vaccinator.Charged_tier_01" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\vaccinator_charge_tier_01.wav" +} + +"WeaponMedigun_Vaccinator.Charged_tier_02" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\vaccinator_charge_tier_02.wav" +} + +"WeaponMedigun_Vaccinator.Charged_tier_03" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\vaccinator_charge_tier_03.wav" +} + +"WeaponMedigun_Vaccinator.Charged_tier_04" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\vaccinator_charge_tier_04.wav" +} + +"WeaponMedigun_Vaccinator.InvulnerableOn" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "wave" ")player\invuln_on_vaccinator.wav" +} + +"WeaponMedigun_Vaccinator.InvulnerableOff" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_86dB" + "wave" ")player\invuln_off_vaccinator.wav" +} + +"WeaponMedigun_Vaccinator.Toggle" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_86dB" + "wave" ")weapons\vaccinator_toggle.wav" +} + +// ------------------------------------------------------------------------------------ // +// Loose Cannon +// ------------------------------------------------------------------------------------ // + +"Weapon_LooseCannon.Shoot" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/loose_cannon_shoot.wav" +} + +"Weapon_LooseCannon.Shootcrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/loose_cannon_shootcrit.wav" +} + +"Weapon_LooseCannon.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "95, 105" + "wave" ")weapons/loose_cannon_explode.wav" +} + +"Weapon_LooseCannon.Charge" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" ".45" + "wave" "weapons/loose_cannon_charge.wav" +} + +"Weapon_LooseCannon.BallImpact" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_85dB" + "volume" "0.7" + "pitch" "95, 105" + "wave" "weapons/loose_cannon_ball_impact.wav" +} + +// ------------------------------------------------------------------------------------ // +// MEDI_SHIELD +// ------------------------------------------------------------------------------------ // +"WeaponMedi_Shield.Protection" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\vaccinator_heal.wav" +} + +"WeaponMedi_Shield.Deploy" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "wave" ")weapons\medi_shield_deploy.wav" +} + +"WeaponMedi_Shield.Retract" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "wave" ")weapons\medi_shield_retract.wav" +} + +"WeaponMedi_Shield.Burn" +{ + "channel" "CHAN_STATIC" + "volume" ".7" + "soundlevel" "SNDLVL_81dB" + "pitch" "90, 100" + + "rndwave" + { + "wave" "weapons\medi_shield_burn_01.wav" + "wave" "weapons\medi_shield_burn_02.wav" + "wave" "weapons\medi_shield_burn_03.wav" + "wave" "weapons\medi_shield_burn_04.wav" + "wave" "weapons\medi_shield_burn_05.wav" + "wave" "weapons\medi_shield_burn_06.wav" + "wave" "weapons\medi_shield_burn_07.wav" + "wave" "weapons\medi_shield_burn_08.wav" + "wave" "weapons\medi_shield_burn_09.wav" + "wave" "weapons\medi_shield_burn_10.wav" + "wave" "weapons\medi_shield_burn_11.wav" + } +} + +"WeaponMedi_Shield.Burn_lp" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_94dB" + "pitch" "PITCH_NORM" + + "wave" ")weapons\medi_burn_lp.wav" +} +"Weapon_Airstrike.AltFire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "95, 105" + "rndwave" + { + "wave" ")weapons/airstrike_fire_01.wav" + "wave" ")weapons/airstrike_fire_02.wav" + "wave" ")weapons/airstrike_fire_03.wav" + } +} + +"Weapon_Airstrike.CritFire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "95, 105" + "wave" ")weapons/airstrike_fire_crit.wav" +} + +"Weapon_Airstrike.Fail" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons/airstrike_fail.wav" +} +"Weapon_Airstrike.Explosion" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")weapons/airstrike_small_explosion_01.wav" + "wave" ")weapons/airstrike_small_explosion_02.wav" + "wave" ")weapons/airstrike_small_explosion_03.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Bread Monster +// ------------------------------------------------------------------------------------ // +// Gloves +"Weapon_bm_gloves.draw" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_80dB" + "volume" "0.5" + "pitch" "100" + "wave" "weapons/breadmonster/gloves/bm_gloves_on.wav" +} + +"Weapon_bm_gloves.snap" +{ + "channel" "CHAN_WEAPON" + "volume" "0.4" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_01.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_02.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_03.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_04.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_05.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_06.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_07.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_08.wav" + } +} + +"Weapon_bm_gloves.scream" +{ + "channel" "CHAN_WEAPON" + "volume" "0.4" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/gloves/bm_gloves_scream_01.wav" + "wave" "weapons/breadmonster/gloves/bm_gloves_scream_02.wav" + } +} + +"Weapon_bm_gloves.attack" +{ + "channel" "CHAN_WEAPON" + "volume" "0.5" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/gloves/bm_gloves_attack_01.wav" + "wave" "weapons/breadmonster/gloves/bm_gloves_attack_02.wav" + "wave" "weapons/breadmonster/gloves/bm_gloves_attack_03.wav" + "wave" "weapons/breadmonster/gloves/bm_gloves_attack_04.wav" + } +} + +// Sapper +"Weapon_bm_sapper.scream" +{ + "channel" "CHAN_WEAPON" + "volume" "0.4" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/sapper/bm_sapper_scream_01.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_scream_02.wav" + } +} +"Weapon_bm_sapper.snap" +{ + "channel" "CHAN_WEAPON" + "volume" "0.4" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_01.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_02.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_03.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_04.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_05.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_06.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_07.wav" + "wave" "weapons/breadmonster/sapper/bm_sapper_snap_08.wav" + } +} + +"Weapon_breadmonster_sapper.Timer" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_74dB" + "wave" "weapons/sapper_timer.wav" +} + +//Throwable +"Weapon_bm_throwable.throw" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "wave" ")weapons/breadmonster/throwable/bm_throwable_throw.wav" +} + +"Weapon_bm_throwable.smash" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "wave" ")weapons/breadmonster/throwable/bm_throwable_smash.wav" +} + +"Weapon_bm_throwable.growl" +{ + "channel" "CHAN_WEAPON" + "volume" "0.4" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_growl_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_growl_02.wav" + } +} +"Weapon_bm_throwable.grunt" +{ + "channel" "CHAN_WEAPON" + "volume" "0.4" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_02.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_03.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_04.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_05.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_06.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_07.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_grunt_08.wav" + } +} + +"Weapon_bm_throwable.slosh" +{ + "channel" "CHAN_WEAPON" + "volume" "0.3" + "soundlevel" "SNDLVL_80dB" + "pitch" "100" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_02.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_03.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_04.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_05.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_06.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_07.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_slosh_08.wav" + } +} + +"Weapon_bm_throwable.attack" +{ + "channel" "CHAN_WEAPON" + "volume" "0.5" + "soundlevel" "SNDLVL_80dB" + "pitch" "100" + "rndwave" + { + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_01.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_02.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_03.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_04.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_05.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_06.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_07.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_08.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_09.wav" + "wave" "weapons/breadmonster/throwable/bm_throwable_attack_10.wav" + } +} + +// ------------------------------------------------------------------------------------ // + +// ------------------------------------------------------------------------------------ // +// GRAPPLING HOOK +// ------------------------------------------------------------------------------------ // +"WeaponGrapplingHook.Shoot" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons\grappling_hook_shoot.wav" +} + +"WeaponGrapplingHook.ReelStart" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons\grappling_hook_reel_start.wav" +} + +"WeaponGrapplingHook.ReelStop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons\grappling_hook_reel_stop.wav" +} + +"WeaponGrapplingHook.ImpactDefault" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" "weapons\grappling_hook_impact_default.wav" +} + +"WeaponGrapplingHook.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "wave" ")weapons\grappling_hook_impact_flesh.wav" +} + +"WeaponGrapplingHook.ImpactFleshLoop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" "1" + "wave" ")weapons\grappling_hook_impact_flesh_loop.wav" +} + +"WeaponGrapplingHook.Wind" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "0" + "wave" ")weapons\grappling_hook_wind.wav" +} + +// ------------------------------------------------------------------------------------ // +// WEAPON INSPECT +// ------------------------------------------------------------------------------------ // + +"WeaponInspect.Movement1" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\weapon_inspect_movement1.wav" +} + +"WeaponInspect.Movement2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\weapon_inspect_movement2.wav" +} + +"WeaponInspect.Movement3" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\weapon_inspect_movement3.wav" +} + +"WeaponInspect.Movement4" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\weapon_inspect_movement4.wav" +} + +// ------------------------------------------------------------------------------------ // +// MELEE INSPECT +// ------------------------------------------------------------------------------------ // + +"MeleeInspect.Movement" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "rndwave" + { + "wave" "weapons\melee_inspect_movement2.wav" + "wave" "weapons\melee_inspect_movement3.wav" + "wave" "weapons\melee_inspect_movement4.wav" + } +} + +"MeleeInspect.Movement1" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\melee_inspect_movement1.wav" +} + +"MeleeInspect.Movement2" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\melee_inspect_movement2.wav" +} + +"MeleeInspect.Movement3" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\melee_inspect_movement3.wav" +} + +"MeleeInspect.Movement4" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_74dB" + "volume" ".2" + "wave" "weapons\melee_inspect_movement4.wav" +} + + +// ------------------------------------------------------------------------------------ // +// Weapon Hit (Ding a lings) +// ------------------------------------------------------------------------------------ // + +"Player.HitSoundDefaultDing" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/hitsound.wav" +} + +"Player.HitSoundBeepo" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/hitsound_beepo.wav" +} + +"Player.HitSoundVortex" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")ui/hitsound_vortex1.wav" + "wave" ")ui/hitsound_vortex2.wav" + "wave" ")ui/hitsound_vortex3.wav" + "wave" ")ui/hitsound_vortex4.wav" + "wave" ")ui/hitsound_vortex5.wav" + } +} + +"Player.HitSoundElectro" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")ui/hitsound_electro1.wav" + "wave" ")ui/hitsound_electro2.wav" + "wave" ")ui/hitsound_electro3.wav" + } +} + +"Player.HitSoundNotes" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "ui/hitsound_menu_note1.wav" + "wave" "ui/hitsound_menu_note2.wav" + "wave" "ui/hitsound_menu_note3.wav" + "wave" "ui/hitsound_menu_note4.wav" + "wave" "ui/hitsound_menu_note5.wav" + "wave" "ui/hitsound_menu_note6.wav" + "wave" "ui/hitsound_menu_note7.wav" + "wave" "ui/hitsound_menu_note7b.wav" + "wave" "ui/hitsound_menu_note8.wav" + "wave" "ui/hitsound_menu_note9.wav" + } +} + +"Player.HitSoundPercussion" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")ui/hitsound_percussion1.wav" + "wave" ")ui/hitsound_percussion2.wav" + "wave" ")ui/hitsound_percussion3.wav" + "wave" ")ui/hitsound_percussion4.wav" + "wave" ")ui/hitsound_percussion5.wav" + } +} + +"Player.HitSoundRetro" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" ")ui/hitsound_retro1.wav" + "wave" ")ui/hitsound_retro2.wav" + "wave" ")ui/hitsound_retro3.wav" + "wave" ")ui/hitsound_retro4.wav" + "wave" ")ui/hitsound_retro5.wav" + } +} + +"Player.HitSoundSpace" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/hitsound_space.wav" +} + +"Player.HitSoundSquasher" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/hitsound_squasher.wav" +} + +"Player.HitSoundSynth" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "ui/hitsound_synth1.wav" + "wave" "ui/hitsound_synth2.wav" + "wave" "ui/hitsound_synth3.wav" + "wave" "ui/hitsound_synth4.wav" + "wave" "ui/hitsound_synth5.wav" + } +} + +// ------------------------------------------------------------------------------------ // +// Weapon Kill (Ding a lings) +// ------------------------------------------------------------------------------------ // + +"Player.KillSoundDefaultDing" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound.wav" +} + +"Player.KillSoundBeepo" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_beepo.wav" +} + +"Player.KillSoundElectro" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_electro.wav" +} + +"Player.KillSoundNotes" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" "ui/killsound_note.wav" +} + +"Player.KillSoundPercussion" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_percussion.wav" +} + +"Player.KillSoundRetro" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_retro.wav" +} + +"Player.KillSoundSpace" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_space.wav" +} + +"Player.KillSoundSquasher" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_squasher.wav" +} + +"Player.KillSoundVortex" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_NONE" + "pitch" "PITCH_NORM" + + "wave" ")ui/killsound_vortex.wav" +} + +// ------------------------------------------------------------------------------------ // +// Invasion +// ------------------------------------------------------------------------------------ // + + +"Weapon_BatSaber.Draw" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "wave" "weapons/batsaber_draw.wav" +} + +"Weapon_BatSaber.Swing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" "1" + "pitch" "96,100" + "rndwave" + { + "wave" ")weapons/batsaber_swing1.wav" + "wave" ")weapons/batsaber_swing2.wav" + "wave" ")weapons/batsaber_swing3.wav" + } +} + +"Weapon_BatSaber.SwingCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" "1" + "pitch" "96,100" + "rndwave" + { + "wave" ")weapons/batsaber_swing_crit1.wav" + "wave" ")weapons/batsaber_swing_crit2.wav" + "wave" ")weapons/batsaber_swing_crit3.wav" + } +} + +"Weapon_BatSaber.HitFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "96,100" + "rndwave" + { + "wave" ")weapons/batsaber_hit_flesh1.wav" + "wave" ")weapons/batsaber_hit_flesh2.wav" + } + +} + +"Weapon_BatSaber.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "96,100" + "rndwave" + { + "wave" ")weapons/batsaber_hit_world1.wav" + "wave" ")weapons/batsaber_hit_world2.wav" + } +} + +"Weapon_ShootingStar.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" ")weapons\shooting_star_shoot.wav" +} + +"Weapon_ShootingStar.SingleCharged" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" ")weapons\shooting_star_shoot_charged.wav" +} + +"Weapon_ShootingStar.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_100dB" + "volume" "1.0" + "wave" ")weapons\shooting_star_shoot_crit.wav" +} + +"Weapon_Capper.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\capper_shoot.wav" +} + +"Weapon_Capper.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons\capper_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// Rocket Jumper +// ------------------------------------------------------------------------------------ // + +"Weapon_Rocket_Jumper.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/rocket_jumper_shoot.wav" +} + +"Weapon_Rocket_Jumper.Explode" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_jumper_explode1.wav" + +} + +// ------------------------------------------------------------------------------------ // +// Stickey Jumper +// ------------------------------------------------------------------------------------ // + +"Weapon_Sticky_Jumper.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/sticky_jumper_shoot.wav" +} + +"Weapon_Sticky_Jumper.Explode" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_95dB" + "volume" "1.0" + "pitch" "PITCH_NORM" + "wave" ")weapons/sticky_jumper_explode1.wav" +} + +// ------------------------------------------------------------------------------------ // +// Dropped Medigun +// ------------------------------------------------------------------------------------ // + +"Medigun.DrainCharge" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.35" + "pitch" "PITCH_NORM" + "wave" "weapons/drg_pomson_drain_01.wav" +} + +// ------------------------------------------------------------------------------------ // +// Push +// ------------------------------------------------------------------------------------ // + +"Weapon_Hands.Push" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" "weapons/push.wav" +} + +"Weapon_Hands.PushImpact" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" "weapons/push_impact.wav" +} + +// ------------------------------------------------------------------------------------ // +// ROCKET PACK +// ------------------------------------------------------------------------------------ // + +"Weapon_RocketPack.BoostersExtend" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_extend.wav" +} + +"Weapon_RocketPack.BoostersRetract" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_retract.wav" +} + + +"Weapon_RocketPack.BoostersCharge" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_105dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_charge.wav" +} + +"Weapon_RocketPack.BoostersLoop" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_95dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_loop.wav" +} + +"Weapon_RocketPack.BoostersLoopEnd" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_95dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" "misc/null.wav" +} + +"Weapon_RocketPack.BoostersFire" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_105dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_fire.wav" +} + +"Weapon_RocketPack.BoostersNotReady" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_95dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_not_ready.wav" +} + +"Weapon_RocketPack.BoostersReady" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_95dB" + "volume" "0" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_ready.wav" +} + +"Weapon_RocketPack.BoostersShutdown" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_105dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_boosters_shutdown.wav" +} + +"Weapon_RocketPack.Land" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_105dB" + "volume" "1" + "pitch" "PITCH_NORM" + "wave" ")weapons/rocket_pack_land.wav" +} + +"Weapon_Slap.Draw" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_74dB" + "volume" ".5" + "wave" "weapons/slap_draw.wav" +} + + +"Weapon_Slap.Swing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/slap_swing.wav" +} + +"Weapon_Slap.SwingCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_64dB" + "volume" ".6" + "wave" ")weapons/slap_swing_crit.wav" +} + + +"Weapon_Slap.BackHandHitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons\slap_hit_world1.wav" +} + +"Weapon_Slap.OpenHandHitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "1.0" + "wave" "weapons\slap_hit_world2.wav" +} + +"Weapon_Slap.BackHand" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "pitch" "90,100" + "rndwave" + { + "wave" ")weapons/slap_hit1.wav" + "wave" ")weapons/slap_hit2.wav" + + } +} + +"Weapon_Slap.OpenHand" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_94dB" + "volume" "1" + "pitch" "100,110" + "rndwave" + { + "wave" ")weapons/slap_hit3.wav" + "wave" ")weapons/slap_hit4.wav" + + } +} + + +// ------------------------------------------------------------------------------------ // +// WINGER PISTOL +// ------------------------------------------------------------------------------------ // +"Weapon_Winger.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/winger_shoot.wav" +} + +"Weapon_Winger.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/winger_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// FRONTIER JUSTICE +// ------------------------------------------------------------------------------------ // +"Weapon_FrontierJustice.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/frontier_justice_shoot.wav" +} + +"Weapon_FrontierJustice.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/frontier_justice_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// FAMILY BUSINESS +// ------------------------------------------------------------------------------------ // +"Weapon_FamilyBusiness.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/family_business_shoot.wav" +} + +"Weapon_FamilyBusiness.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "volume" "1.0" + "wave" ")weapons/family_business_shoot_crit.wav" +} + +// ------------------------------------------------------------------------------------ // +// GAS CAN +// ------------------------------------------------------------------------------------ // +"Weapon_GasCan.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_85dB" + + "wave" ")weapons/gas_can_explode.wav" +} + +"Weapon_GasCan.Draw" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_75dB" + + "wave" ")weapons/draw_gas_can.wav" +} + +"Weapon_GasCan.Throw" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons/gas_can_throw.wav" +} + +"Weapon_GasCan.InspectMovement1" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons/gas_can_inspect_movement1.wav" +} + +"Weapon_GasCan.InspectMovement2" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons/gas_can_inspect_movement2.wav" +} + +"Weapon_GasCan.InspectMovement3" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_84dB" + "volume" "1" + "wave" ")weapons/gas_can_inspect_movement3.wav" +} + +// ------------------------------------------------------------------------------------ // +// DRAGONS FURY +// ------------------------------------------------------------------------------------ // +"Weapon_DragonsFury.Single" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_shoot.wav" +} + +"Weapon_DragonsFury.SingleCrit" +{ + "channel" "CHAN_WEAPON" + "volume" "1.0" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_shoot_crit.wav" +} + +"Weapon_DragonsFury.Impact" +{ + "channel" "CHAN_STATIC" + "volume" "0" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_impact.wav" +} + +"Weapon_DragonsFury.ImpactPain" +{ + "channel" "CHAN_STATIC" + "volume" "0" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_pain.wav" +} + +"Weapon_DragonsFury.ImpactHit" +{ + "channel" "CHAN_STATIC" + "volume" "0" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_hit.wav" +} + +"Weapon_DragonsFury.BonusDamage" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_impact_bonus_damage.wav" +} + +"Weapon_DragonsFury.BonusDamagePain" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_impact_bonus_damage_pain.wav" +} + +"Weapon_DragonsFury.BonusDamageHit" +{ + "channel" "CHAN_STATIC" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_impact_bonus_damage_hit.wav" +} + +"Weapon_DragonsFury.PressureBuild" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_pressure_build.wav" +} + +"Weapon_DragonsFury.PressureBuildStop" +{ + "channel" "CHAN_ITEM" + "volume" ".5" + "soundlevel" "SNDLVL_84dB" + + "wave" ")weapons/dragons_fury_pressure_build_stop.wav" +} + +"Weapon_DragonsFury.Nearmiss" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_84dB" + "pitch" "PITCH_NORM" + + "wave" ")weapons/fx/nearmiss/dragons_fury_nearmiss.wav" + +} diff --git a/gamemodes/tf/gamemode/contents/l4d1_game_sounds_infected_special.lua b/gamemodes/tf/gamemode/contents/l4d1_game_sounds_infected_special.lua new file mode 100644 index 000000000..033154b5d --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d1_game_sounds_infected_special.lua @@ -0,0 +1,1760 @@ +// Tank Zombie +//------------------------------------------------------------------ +"L4D1_HulkZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_05.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_06.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_07.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_08.wav" + } +} + +"L4D1_HulkZombie.Breathe" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_01.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_02.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_03.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_04.wav" + } +} + +"L4D1_HulkZombie.Growl" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_08.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_09.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_10.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_11.wav" + "wave" "l4d1/player/tank/voice/breathe/Tank_Dormant_12.wav" + } +} +"L4D1_HulkZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_01.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_02.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_03.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_04.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_05.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_06.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_07.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_08.wav" + "wave" "l4d1/player/tank/voice/growl/Tank_Spot_Prey_09.wav" + } +} + +"L4D1_HulkZombie.Yell" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_01.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_02.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_03.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_04.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_05.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_06.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_07.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Yell_08.wav" + } +} + +"L4D1_HulkZombie.Attack" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_01.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_02.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_03.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_04.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_05.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_06.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_07.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_08.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_09.wav" + "wave" "l4d1/player/tank/voice/attack/Tank_Attack_10.wav" + } +} + +"L4D1_HulkZombie.Throw.Fail" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_96dB" + "pitch" "92, 100" + + "rndwave" + { + "wave" "l4d1/player/tank/voice/growl/hulk_growl_1.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_2.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_3.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_4.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_5.wav" + } +} + +"L4D1_HulkZombie.Throw.Pickup" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "l4d1/player/tank/attack/rip_up_rock_1.wav" +} + +"L4D1_HulkZombie.Throw" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/yell/Tank_Throw_01.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Throw_01.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Throw_01.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Throw_01.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Throw_01.wav" + "wave" "l4d1/player/tank/voice/yell/Tank_Throw_01.wav" + } +} + + +"L4D1_HulkZombie.Throw.FlyLoop" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "wave" "l4d1/player/tank/attack/thrown_missile_loop_1.wav" +} + +"L4D1_HulkZombie.StartLedgeClimb" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/growl/hulk_growl_1.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_2.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_3.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_4.wav" + "wave" "l4d1/player/tank/voice/growl/hulk_growl_5.wav" + } +} + +"L4D1_HulkZombie.Punch" +{ + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "100, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "l4d1/player/tank/hit/hulk_punch_1.wav" +} + +"L4D1_HulkZombie.PunchIncap" +{ + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "100, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/hit/pound_victim_1.wav" + "wave" "l4d1/player/tank/hit/pound_victim_2.wav" + } +} + +"L4D1_HulkZombie.Die" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/die/Tank_Death_01.wav" + "wave" "l4d1/player/tank/voice/die/Tank_Death_02.wav" + "wave" "l4d1/player/tank/voice/die/Tank_Death_03.wav" + "wave" "l4d1/player/tank/voice/die/Tank_Death_04.wav" + "wave" "l4d1/player/tank/voice/die/Tank_Death_05.wav" + "wave" "l4d1/player/tank/voice/die/Tank_Death_06.wav" + "wave" "l4d1/player/tank/voice/die/Tank_Death_07.wav" + } +} + +"L4D1_HulkZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_01.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_02.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_03.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_04.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_05.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_06.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_07.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Pain_08.wav" + } +} + +"L4D1_HulkZombie.PainFire" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_01.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_02.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_03.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_04.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_05.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_06.wav" + "wave" "l4d1/player/tank/voice/pain/Tank_Fire_07.wav" + } +} + +"L4D1_HulkZombie.Thud" +{ + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "wave" "l4d1/player/tank/fall/Tank_death_BodyFall_01.wav" +} + +"L4D1_HulkZombie.ThrownProjectileHit" +{ + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "95, 105" + "channel" "CHAN_STATIC" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "l4d1/player/tank/hit/thrown_projectile_hit_01.wav" +} + +// Witch Zombie +//------------------------------------------------------------------ +/// on the ground moaning +"L4D1_WitchZombie.Despair" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/idle/female_cry_1.wav" + "wave" "npc/witch/voice/idle/female_cry_2.wav" + "wave" "npc/witch/voice/idle/female_cry_3.wav" + "wave" "npc/witch/voice/idle/female_cry_4.wav" + } +} + + +// beginning attack, during attack this happens but it is a re-beginning bug? +"L4D1_WitchZombie.Scream" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/Female_DistantScream1.wav" + "wave" "npc/witch/voice/attack/Female_DistantScream2.wav" + } +} + +// attack +"L4D1_WitchZombie.Rage" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/female_shriek_1.wav" + "wave" "npc/witch/voice/attack/female_shriek_2.wav" + } +} + +// she has knocked down her victim and now is building up for the killing frenzy - about 3 seconds long +"L4D1_WitchZombie.RageBeforeKillingFrenzy" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/witch_before_kill_01.wav" + } +} + + +// she is rapidly clawing at her incap victim, shredding them to bits +"L4D1_WitchZombie.KillingFrenzy" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/female_shriek_1.wav" + "wave" "npc/witch/voice/attack/female_shriek_2.wav" + } +} + + +"L4D1_WitchZombie.Surprised" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/mad/Female_LS_B_AttackGrunt16.wav" + "wave" "npc/witch/voice/mad/Female_LS_B_Surprised01.wav" + } +} + +"L4D1_WitchZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/pain/witch_pain_1.wav" + "wave" "npc/witch/voice/pain/witch_pain_2.wav" + "wave" "npc/witch/voice/pain/witch_pain_3.wav" + } +} + +"L4D1_WitchZombie.PainFire" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/female_shriek_1.wav" + "wave" "npc/witch/voice/attack/female_shriek_2.wav" + } +} + +// increasing warnings +"L4D1_WitchZombie.GrowlLow" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "npc/witch/voice/mad/ZombieFemale_Growl1.wav" +} + + +"L4D1_WitchZombie.GrowlMedium" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "100, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "npc/witch/voice/mad/ZombieFemale_Growl6.wav" +} + + +"L4D1_WitchZombie.GrowlHigh" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/mad/Female_LS_D_MadScream01.wav" + "wave" "npc/witch/voice/mad/Female_LS_D_MadScream02.wav" + "wave" "npc/witch/voice/mad/Female_LS_D_MadScream03.wav" + } +} + +// retreating +"L4D1_WitchZombie.RetreatHorror" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/retreat/horrified_1.wav" + "wave" "npc/witch/voice/retreat/horrified_2.wav" + "wave" "npc/witch/voice/retreat/horrified_3.wav" + "wave" "npc/witch/voice/retreat/horrified_4.wav" + } +} + +// dying +"L4D1_WitchZombie.Die" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "npc/witch/voice/die/female_death_1.wav" +} + + +"L4D1_WitchZombie.HeadShot" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "npc/witch/voice/die/headshot_death_1.wav" + "wave" "npc/witch/voice/die/headshot_death_2.wav" + "wave" "npc/witch/voice/die/headshot_death_3.wav" + } +} + + +"L4D1_WitchZombie.ShredVictim" +{ + "channel" "CHAN_BODY" + "volume" ".7" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/hit/Hit_SlimeSplat3.wav" + "wave" "npc/witch/hit/Hit_SlimeSplat4.wav" + "wave" "npc/witch/hit/Hit_SlimeSplat5.wav" + } +} + +//------------------------------------------------------------------ +// Boomer Zombie +//------------------------------------------------------------------ + +// about to vomit warning +"L4D1_BoomerZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/warn/Boomer_Warning_01.wav" + "wave" "l4d1/player/Boomer/voice/warn/Boomer_Warning_12.wav" + } +} + +// alert sound +"L4D1_BoomerZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/alert/Boomer_Alert_03.wav" + "wave" "l4d1/player/Boomer/voice/alert/Boomer_Alert_04.wav" + "wave" "l4d1/player/Boomer/voice/alert/Boomer_Alert_05.wav" + "wave" "l4d1/player/Boomer/voice/alert/Boomer_Alert_07.wav" + "wave" "l4d1/player/Boomer/voice/alert/Boomer_Alert_08.wav" + "wave" "l4d1/player/Boomer/voice/alert/Boomer_Alert_10.wav" + } +} + +// random vocalizations +"L4D1_BoomerZombie.Voice" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_01.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_04.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_05.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_06.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_08.wav" + + } +} + +// random emission as well +"L4D1_BoomerZombie.Groan" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_02.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_03.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_07.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_09.wav" + "wave" "l4d1/player/Boomer/voice/idle/Boomer_Lurk_10.wav" + + } +} + +// on spawnL4D1_BoomerZombie.Voice +"L4D1_BoomerZombie.Gurgle" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + + "wave" "l4d1/player/Boomer/voice/idle/indigestion_loop.wav" +} + + +// when boomer becomes ALERT +"L4D1_BoomerZombie.Rage" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/attack/Boomer_SpotPrey_05.wav" + "wave" "l4d1/player/Boomer/voice/attack/Boomer_SpotPrey_07.wav" + "wave" "l4d1/player/Boomer/voice/attack/Boomer_SpotPrey_09.wav" + "wave" "l4d1/player/Boomer/voice/attack/Boomer_SpotPrey_10.wav" + } +} + +// while attacking +"L4D1_BoomerZombie.Attack" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/attack/Zombie10_Growl1.wav" + "wave" "l4d1/player/Boomer/voice/attack/Zombie10_Growl2.wav" + // "wave" "l4d1/player/Boomer/voice/attack/Zombie10_Growl3.wav" + } +} + +// in pain +"L4D1_BoomerZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/pain/Boomer_Shoved_03.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_Shoved_04.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_Shoved_05.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_Shoved_06.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_Shoved_07.wav" + } +} + +"L4D1_BoomerZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/voice/pain/Boomer_PainShort_02.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_PainShort_03.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_PainShort_04.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_PainShort_05.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_PainShort_06.wav" + "wave" "l4d1/player/Boomer/voice/pain/Boomer_PainShort_07.wav" + } +} + +// exploding +"L4D1_BoomerZombie.Detonate" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/Boomer/explode/Explo_Medium_09.wav" + "wave" "l4d1/player/Boomer/explode/Explo_Medium_10.wav" + "wave" "l4d1/player/Boomer/explode/Explo_Medium_14.wav" + } +} + + +"L4D1_BoomerZombie.Fall" +{ + "channel" "CHAN_BODY" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "wave" "l4d1/player/Boomer/fall/boomer_dive_01.wav" +} + +// big BLAH sound when attacking +"L4D1_Vomit.Use" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "100, 105" + + "rndwave" + { + "wave" "l4d1/player/Boomer/vomit/Boomer_Vomit_01.wav" + "wave" "l4d1/player/Boomer/vomit/Boomer_Vomit_02.wav" + "wave" "l4d1/player/Boomer/vomit/Boomer_Vomit_03.wav" + "wave" "l4d1/player/Boomer/vomit/Boomer_Vomit_04.wav" + "wave" "l4d1/player/Boomer/vomit/Boomer_Vomit_09.wav" + } +} + +"L4D1_Vomit.Cancel" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "100, 105" + + "rndwave" + { + "wave" "l4d1/player/Boomer/vomit/Boomer_DisruptVomit_01.wav" + "wave" "l4d1/player/Boomer/vomit/Boomer_DisruptVomit_03.wav" + "wave" "l4d1/player/Boomer/vomit/Boomer_DisruptVomit_05.wav" + } +} + + + + + +// Smoker Zombie +//------------------------------------------------------------------ +// called by CTerrorPlayer::OnVoiceTransmit +"L4D1_SmokerZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/idle/Smoker_SpotPrey_07.wav" + "wave" "l4d1/player/smoker/voice/idle/Smoker_SpotPrey_08.wav" + } +} + +// Random playback of breath +"L4D1_SmokerZombie.Breathe" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/idle/Smoker_Lurk_01.wav" + "wave" "l4d1/player/smoker/voice/idle/Smoker_Lurk_03.wav" + "wave" "l4d1/player/smoker/voice/idle/Smoker_Lurk_04.wav" + "wave" "l4d1/player/smoker/voice/idle/Smoker_Lurk_06.wav" + "wave" "l4d1/player/smoker/voice/idle/Smoker_Lurk_08.wav" + } +} + +// Played when attacking +"L4D1_SmokerZombie.Attack" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_110dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_01.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_02.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_03.wav" + + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_04.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_05.wav" + + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_06.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_07.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_08.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_09.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_10.wav" + "wave" "l4d1/player/smoker/voice/attack/Smoker_Attack_11.wav" + } +} + +// In pain +"L4D1_SmokerZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/pain/Smoker_Pain_02.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_Pain_03.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_Pain_04.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_Pain_05.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_Pain_06.wav" + } +} +"L4D1_SmokerZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/pain/Smoker_PainShort_01.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_PainShort_02.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_PainShort_03.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_PainShort_04.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_PainShort_05.wav" + "wave" "l4d1/player/smoker/voice/pain/Smoker_PainShort_06.wav" + } +} + +// spotting a target +"L4D1_SmokerZombie.Recognize" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/idle/Smoker_SpotPrey_01.wav" + "wave" "l4d1/player/smoker/voice/idle/Smoker_SpotPrey_02.wav" + } +} + +// alert is sounded when spawned +"L4D1_SmokerZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/alert/Smoker_Alert_01.wav" + "wave" "l4d1/player/smoker/voice/alert/Smoker_Alert_02.wav" + "wave" "l4d1/player/smoker/voice/alert/Smoker_Alert_03.wav" + } +} + +// Warning just before attacking +"L4D1_SmokerZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/warn/Smoker_Warn_01.wav" + // "wave" "l4d1/player/smoker/voice/warn/Smoker_Warn_02.wav" + "wave" "l4d1/player/smoker/voice/warn/Smoker_Warn_03.wav" + } +} + +// Death +"L4D1_SmokerZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/death/Smoker_Death_01.wav" + "wave" "l4d1/player/smoker/voice/death/Smoker_Death_02.wav" + "wave" "l4d1/player/smoker/voice/death/Smoker_Death_03.wav" + } +} +//Death explode +"L4D1_SmokerZombie.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "PITCH_NORM" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/Death/Smoker_explode_01.wav" + "wave" "l4d1/player/smoker/Death/Smoker_explode_02.wav" + "wave" "l4d1/player/smoker/Death/Smoker_explode_03.wav" + "wave" "l4d1/player/smoker/Death/Smoker_explode_04.wav" + } +} + +// +"L4D1_SmokerZombie.TongueAttack" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_125dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "l4d1/player/smoker/voice/attack/Smoker_LaunchTongue_01.wav" +} + + +"L4D1_SmokerZombie.TongueHit" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/smoker/voice/attack/Smoker_TongueHit_01.wav" + // "wave" "l4d1/player/smoker/voice/attack/Smoker_TongueHit_02.wav" + } +} + + +"L4D1_SmokerZombie.TongueRetract" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/smoker/miss/Smoker_ReelTongueIn_01.wav" + "wave" "l4d1/player/smoker/miss/Smoker_ReelTongueIn_02.wav" + "wave" "l4d1/player/smoker/miss/Smoker_ReelTongueIn_03.wav" + "wave" "l4d1/player/smoker/miss/Smoker_ReelTongueIn_04.wav" + "wave" "l4d1/player/smoker/miss/Smoker_ReelTongueIn_05.wav" + } +} + + +"L4D1_SmokerZombie.TongueStrain" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/smoker/miss/Cow_LickLips_Slurp2.wav" + "wave" "l4d1/player/smoker/miss/Cow_LickLips_Slurp3.wav" + "wave" "l4d1/player/smoker/miss/Cow_LickLips_Slurp4.wav" + } +} + +"L4D1_SmokerZombie.TongueFly" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "l4d1/player/smoker/attack/tongue_fly_loop.wav" +} + +"L4D1_SmokerZombie.TongueChoke" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "common/null.wav" +} + +// ---------------------------------------------------------- +// Hunter Zombie +// ---------------------------------------------------------- +// random vocalizations +"L4D1_HunterZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/idle/Hunter_Stalk_01.wav" + "wave" "l4d1/player/hunter/voice/idle/Hunter_Stalk_04.wav" + "wave" "l4d1/player/hunter/voice/idle/Hunter_Stalk_05.wav" + } +} + +// growl, no target established +"L4D1_HunterZombie.Growl" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "90, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/idle/Hunter_Stalk_01.wav" + "wave" "l4d1/player/hunter/voice/idle/Hunter_Stalk_04.wav" + "wave" "l4d1/player/hunter/voice/idle/Hunter_Stalk_05.wav" + } +} + + +// Kitty's been hurt +"L4D1_HunterZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/pain/Hunter_Pain_05.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_Pain_07.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_Pain_08.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_Pain_09.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_Pain_10.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_Pain_12.wav" + } +} + +// Kitty's been hurt +"L4D1_HunterZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_01.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_03.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_04.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_05.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_07.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_08.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_09.wav" + "wave" "l4d1/player/hunter/voice/pain/Hunter_PainShort_10.wav" + + } +} + +// lunging, not pouncing but lunging +"L4D1_HunterZombie.Lunge" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_01.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_02.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_03.wav" + } +} + +// landing a lunge but not a pounce +"L4D1_HunterZombie.LungeLand" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_04.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_05.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_06.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_07.wav" + } +} + +// Hunter Death Sounds +"L4D1_HunterZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/death/Hunter_Death_02.wav" + "wave" "l4d1/player/hunter/voice/death/Hunter_Death_04.wav" + "wave" "l4d1/player/hunter/voice/death/Hunter_Death_06.wav" + } +} + +// alert +// let everyone know I'm here +"L4D1_HunterZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "GameData" + { + "Priority" "Critical" + } + + + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/alert/Hunter_Alert_01.wav" + "wave" "l4d1/player/hunter/voice/alert/Hunter_Alert_03.wav" + } +} + +// warning +// crouched and ready to pounce +"L4D1_HunterZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + + + // "wave" "l4d1/player/hunter/voice/warn/Hunter_Warn_08.wav" + "wave" "l4d1/player/hunter/voice/warn/Hunter_Warn_10.wav" + "wave" "l4d1/player/hunter/voice/warn/Hunter_Warn_14.wav" + } +} + + +// attempting to pounce +"L4D1_HunterZombie.Pounce" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + // "wave" "l4d1/player/hunter/voice/attack/Hunter_AttackMix_01.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_AttackMix_02.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_AttackMix_03.wav" + } +} + + +// should be used +"L4D1_HunterZombie.Pounce.FlyLoop" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_08.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_09.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Pounce_10.wav" + } +} + +// missed on the pounce +"L4D1_HunterZombie.Pounce.Miss" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceMiss_01.wav" + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceMiss_02.wav" + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceMiss_03.wav" + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceMiss_04.wav" + } + +} +// shredding victim during attack +"L4D1_HunterZombie.Pounce.shred" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_01.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_02.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_03.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_04.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_05.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_06.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_07.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_08.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_09.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_10.wav" + "wave" "l4d1/player/hunter/voice/attack/Hunter_Shred_11.wav" + + } + +} + +// the pounce has been canceled +"L4D1_HunterZombie.Pounce.Cancel" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceCancel_01.wav" + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceCancel_02.wav" + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceCancel_03.wav" + "wave" "l4d1/player/hunter/voice/miss/Hunter_PounceCancel_04.wav" + } +} + + + +// pounce hit a survivor +"L4D1_HunterZombie.Pounce.Hit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "100" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "l4d1/player/hunter/hit/tackled_1.wav" +} + +// Player Zombie +//------------------------------------------------------------------ +"L4D1_PlayerZombie.BecomeGhost" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/Menu_Horror01.wav" +} + +"L4D1_PlayerZombie.BecomeReal" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/Pickup_GuitarRiff10.wav" +} + +"L4D1_PlayerZombie.Rage" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + // "wave" "common/null.wav" + + "rndwave" + { + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack1.wav" + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack2.wav" + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack3.wav" + } +} + +"L4D1_PlayerZombie.Breathe" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + + // "rndwave" + // { + // "wave" "l4d1/player/PZ/voice/idle/ZombieDog_Growl1.wav" + // "wave" "l4d1/player/PZ/voice/idle/ZombieDog_Growl2.wav" + // "wave" "l4d1/player/PZ/voice/idle/ZombieDog_Growl3.wav" + // "wave" "l4d1/player/PZ/voice/idle/ZombieDog_Growl4.wav" + // } +} + +"L4D1_PlayerZombie.Attack" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack1.wav" + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack2.wav" + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack3.wav" + } +} + +"L4D1_PlayerZombie.AttackMiss" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/PZ/miss/claw_miss_1.wav" + "wave" "l4d1/player/PZ/miss/claw_miss_2.wav" + } +} + +"L4D1_PlayerZombie.AttackHit" +{ + "channel" "CHAN_AUTO" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/PZ/hit/zombie_slice_1.wav" + "wave" "l4d1/player/PZ/hit/zombie_slice_2.wav" + "wave" "l4d1/player/PZ/hit/zombie_slice_3.wav" + "wave" "l4d1/player/PZ/hit/zombie_slice_4.wav" + "wave" "l4d1/player/PZ/hit/zombie_slice_5.wav" + "wave" "l4d1/player/PZ/hit/zombie_slice_6.wav" + } +} + +"L4D1_PlayerZombie.Die" +{ + "channel" "CHAN_VOICE" + "volume" "0.75" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + // "rndwave" + // { + // "wave" "l4d1/player/PZ/voice/die/ZombieDog_Death1.wav" + // "wave" "l4d1/player/PZ/voice/die/ZombieDog_Death2.wav" + // } +} + +"L4D1_PlayerZombie.Hurt" +{ + "channel" "CHAN_VOICE" + "volume" "0.75" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + + // "rndwave" + // { + // "wave" "l4d1/player/PZ/voice/hurt/ZombieDog_Hurt2.wav" + // "wave" "l4d1/player/PZ/voice/hurt/ZombieDog_Hurt3.wav" + // } +} + +"L4D1_PlayerZombie.Taunt" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + + // "rndwave" + // { + // "wave" "l4d1/player/hunter/voice/idle/Zombie07_Growl03.wav" + // "wave" "l4d1/player/hunter/voice/idle/Zombie07_Growl04.wav" + // "wave" "l4d1/player/hunter/voice/idle/Zombie07_Growl09.wav" + // "wave" "l4d1/player/hunter/voice/idle/Zombie07_Growl10.wav" + // } +} + +"L4D1_PlayerZombie.CullWarn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "100" + + "wave" "ambient/alarms/klaxon1.wav" +} + + +"L4D1_PlayerZombie.Fall" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack1.wav" + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack2.wav" + "wave" "l4d1/player/PZ/voice/attack/ZombieDog_Attack3.wav" + } +} + + +"L4D1_PlayerZombie.Thud" +{ + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "wave" "l4d1/player/PZ/fall/Bodyfall_LargeCreature.wav" +} + diff --git a/gamemodes/tf/gamemode/contents/l4d2_game_sounds_doors.lua b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_doors.lua new file mode 100644 index 000000000..d9f94d17b --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_doors.lua @@ -0,0 +1,452 @@ + + +//------------------------------------------------------------------ +// Wood Doors +//------------------------------------------------------------------ +"Doors.Wood.Move1" +{ + "channel" "CHAN_BODY" + "volume" "0.5" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door1_move.wav" + "wave" "doors/wood_move1.wav" + } +} + +"Doors.Wood.FullOpen1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "wave" "doors/door1_stop.wav" +} + +"Doors.Wood.FullClose1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door_wood_close1.wav" + "wave" "doors/wood_stop1.wav" + } +} + +"Doors.Wood.Pound1" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "rndwave" + { + "wave" "physics/wood/wood_panel_impact_hard1.wav" + } +} +"WoodenDoor.Pound" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_70dB" + "pitch" "95,105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "physics/wood/wood_panel_impact_hard1.wav" + } +} + + +"WoodenDoor.Break" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "physics/wood/wood_crate_break4.wav" + "wave" "physics/wood/wood_crate_break5.wav" + } +} + + +"WoodenDoor.Lock" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "doors/door_lock_1.wav" + } +} + +//"WoodenDoor.RattleLockedDoor" +//{ +// "volume" "1.0" +// "soundlevel" "SNDLVL_90dB" +// "pitch" "95,105" +// +// "GameData" +// { +// "Priority" "Interesting" +// } +// +// "rndwave" +// { +// "wave" "doors/Door_Locked_HandleRattle1.wav" +// "wave" "doors/Door_Locked_HandleRattle2.wav" +// "wave" "doors/Door_Locked_HandleRattle3.wav" +// } +//} + + +//============================================================== +//============= CHECKPOINT DOORS =============================== +//============================================================== + +"Doors.Checkpoint.Move1" +{ + "channel" "CHAN_BODY" + "volume" "0.5" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door_metal_rusty_move1.wav" + "wave" "doors/metal_move1.wav" + } +} + +//"Doors.Checkpoint.Open1" +//{ +// "channel" "CHAN_BODY" +// "volume" "0.7" +// "soundlevel" "SNDLVL_90dB" +// "pitch" "90,110" +// "wave" "doors/CheckpointDoorOpen.wav" +//} + +//"Doors.Checkpoint.Close1" +//{ +// "channel" "CHAN_BODY" +// "volume" "0.7" +// "soundlevel" "SNDLVL_90dB" +// "pitch" "90,110" +// "wave" "doors/CheckpointDoorClose.wav" +//} + + +"Doors.Checkpoint.FullOpen1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "wave" "doors/door_metal_large_open1.wav" +} + +"Doors.Checkpoint.FullClose1" +{ + "channel" "CHAN_BODY" + "volume" "1.0" + "soundlevel" "SNDLVL_140dB" + "pitch" "90,110" + "wave" "doors/door_checkpoint_close1.wav" +// "rndwave" +// { +// "wave" "doors/door_metal_large_close2.wav" +// "wave" "doors/metal_stop1.wav" +// } +} + + +"CheckpointDoor.Pound" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "doors/Hit_KickMetalDoor1.wav" + "wave" "doors/Hit_KickMetalDoor2.wav" + } +} + +"Doors.Checkpoint.Pound1" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "rndwave" + { + "wave" "doors/Hit_KickMetalDoor1.wav" + "wave" "doors/Hit_KickMetalDoor2.wav" + } +} + +"Doors.Checkpoint.Unlock" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "pitch" "95,105" + + "wave" "doors/CheckpointBarRemove.wav" + //"rndwave" + //{ + // "wave" "doors/CheckpointBarRemove.wav" + // "wave" "terror/door_lock_1.wav" + //} +} + +"Doors.LighthouseCheckpoint.Unlock" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "pitch" "95,105" + + "wave" "doors/CheckpointPlankRemove.wav" +} + +"Doors.LighthouseCheckpoint.Move1" +{ + "channel" "CHAN_BODY" + "volume" "0.9" + "soundlevel" "SNDLVL_75dB" + "pitch" "97,103" + "wave" "doors/door_lighthouse_checkpoint_move1.wav" +} + +//------------------------------------------------------------------ +// Glass Doors +//------------------------------------------------------------------ +"Doors.Glass.Move1" +{ + "channel" "CHAN_BODY" + "volume" "0.5" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door1_move.wav" + "wave" "doors/wood_move1.wav" + } +} + +"Doors.Glass.FullOpen1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "wave" "doors/door_metal_gate_close1.wav" +} + +"Doors.Glass.FullClose1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door_metal_medium_close1.wav" + "wave" "doors/default_stop.wav" + } +} + +"Doors.Glass.Pound1" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "rndwave" + { + "wave" "doors/Hit_KickMetalDoor1.wav" + "wave" "doors/Hit_KickMetalDoor2.wav" + } +} + +//------------------------------------------------------------------ +// Metal Doors +//------------------------------------------------------------------ +"Doors.Metal.Move1" +{ + "channel" "CHAN_BODY" + "volume" "0.5" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door_metal_rusty_move1.wav" + "wave" "doors/metal_move1.wav" + } +} + +"Doors.Metal.FullOpen1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "wave" "doors/door_metal_large_open1.wav" +} + +"Doors.Metal.FullClose1" +{ + "channel" "CHAN_BODY" + "volume" "0.7" + "soundlevel" "SNDLVL_75dB" + "pitch" "90,110" + "rndwave" + { + "wave" "doors/door_metal_large_close2.wav" + "wave" "doors/metal_stop1.wav" + } +} + +"Doors.Metal.Pound1" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + + "rndwave" + { + "wave" "doors/Hit_KickMetalDoor1.wav" + "wave" "doors/Hit_KickMetalDoor2.wav" + } +} + + +//------------------------------------------------------------------ +// Medical Cabinets +//------------------------------------------------------------------ + +"Doors.Medkit_Cabinet" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "pitch" "100" + + "wave" "doors/MedKit_Doors_Open.wav" +} + +//------------------------------------------------------------------ +// Manholes +//------------------------------------------------------------------ + +"Doors.Manhole.Move" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_70dB" + "pitch" "100" + + "wave" "doors/gate_move1.wav" + +} + +"Doors.Manhole.Open" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_70dB" + "pitch" "100" + + "wave" "doors/URB_3b_Manhole_open.wav" + +} + +//"Doors.Grate.Open" +//{ +// "volume" "1.0" +// "soundlevel" "SNDLVL_70dB" +// "pitch" "100" +// +// "wave" "doors/URB_3b_Grate_Open.wav" +// +//} + +//"Doors.Grate.Close" +//{ +// "volume" "1.0" +// "soundlevel" "SNDLVL_70dB" +// "pitch" "100" +// +// "wave" "doors/URB_3b_Grate_Close.wav" +// +//} + +//------------------------------------------------------------------ +// Elevator Doors +//------------------------------------------------------------------ + +"Doors.Elevator.Open" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_70dB" + "pitch" "100" + + "wave" "doors/URB_4b_elevator_open.wav" + +} + +"Doors.Elevator.Close" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_70dB" + "pitch" "100" + + "wave" "doors/URB_4b_elevator_close.wav" + +} + + +"Doors.ConstructionLift.Open" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "pitch" "100" + + "wave" "doors/sugarcane_lift_gate_open_01.wav" + +} + +"Doors.ConstructionLift.Close" +{ + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "pitch" "100" + + "wave" "doors/sugarcane_lift_gate_close_01.wav" + +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/l4d2_game_sounds_infected_common.lua b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_infected_common.lua new file mode 100644 index 000000000..bc87fc8c2 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_infected_common.lua @@ -0,0 +1,584 @@ +// Sound effects for Terror + +// CHECK THE OTHER EXISTING "IDLE" sounds +"L4D_Zombie.Sleeping" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_65dB" + "volume" "0.75" + "pitch" "95,105" + "rndwave" + { + "wave" "npc/infected/idle/breathing/breathing01.wav" + "wave" "npc/infected/idle/breathing/breathing08.wav" + "wave" "npc/infected/idle/breathing/breathing09.wav" + "wave" "npc/infected/idle/breathing/breathing10.wav" + "wave" "npc/infected/idle/breathing/breathing13.wav" + "wave" "npc/infected/idle/breathing/breathing16.wav" + "wave" "npc/infected/idle/breathing/breathing18.wav" + "wave" "npc/infected/idle/breathing/breathing25.wav" + "wave" "npc/infected/idle/breathing/breathing26.wav" + } +} + +"L4D_Zombie.Wander" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_70dB" + "volume" "0.80" + "pitch" "95,105" + "rndwave" + { + "wave" "npc/infected/idle/breathing/idle_breath_01.wav" + "wave" "npc/infected/idle/breathing/idle_breath_02.wav" + "wave" "npc/infected/idle/breathing/idle_breath_03.wav" + "wave" "npc/infected/idle/breathing/idle_breath_04.wav" + "wave" "npc/infected/idle/breathing/idle_breath_06.wav" + "wave" "npc/infected/idle/moaning/moan01.wav" + "wave" "npc/infected/idle/moaning/moan02.wav" + "wave" "npc/infected/idle/moaning/moan03.wav" + "wave" "npc/infected/idle/moaning/moan04.wav" + "wave" "npc/infected/idle/moaning/moan05.wav" + "wave" "npc/infected/idle/moaning/moan06.wav" + "wave" "npc/infected/idle/moaning/moan07.wav" + "wave" "npc/infected/idle/moaning/moan08.wav" + "wave" "npc/infected/idle/moaning/moan09.wav" + "wave" "npc/infected/idle/mumbling/mumbling01.wav" + "wave" "npc/infected/idle/mumbling/mumbling02.wav" + "wave" "npc/infected/idle/mumbling/mumbling03.wav" + "wave" "npc/infected/idle/mumbling/mumbling04.wav" + "wave" "npc/infected/idle/mumbling/mumbling05.wav" + "wave" "npc/infected/idle/mumbling/mumbling06.wav" + "wave" "npc/infected/idle/mumbling/mumbling07.wav" + "wave" "npc/infected/idle/mumbling/mumbling08.wav" + } +} + +"L4D_Zombie.BecomeAlert" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_70dB" + "volume" "0.80" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + "wave" "npc/infected/alert/becomeAlert/hiss01.wav" + "wave" "npc/infected/alert/becomeAlert/recognize01.wav" + "wave" "npc/infected/alert/becomeAlert/recognize02.wav" + "wave" "npc/infected/alert/becomeAlert/recognize03.wav" + "wave" "npc/infected/alert/becomeAlert/recognize04.wav" + "wave" "npc/infected/alert/becomeAlert/recognize05.wav" + "wave" "npc/infected/alert/becomeAlert/recognize06.wav" + "wave" "npc/infected/alert/becomeAlert/recognize07.wav" + "wave" "npc/infected/alert/becomeAlert/recognize08.wav" + "wave" "npc/infected/alert/becomeAlert/shout01.wav" + "wave" "npc/infected/alert/becomeAlert/shout02.wav" + "wave" "npc/infected/alert/becomeAlert/shout03.wav" + "wave" "npc/infected/alert/becomeAlert/shout04.wav" + "wave" "npc/infected/alert/becomeAlert/shout06.wav" + "wave" "npc/infected/alert/becomeAlert/shout07.wav" + "wave" "npc/infected/alert/becomeAlert/shout08.wav" + "wave" "npc/infected/alert/becomeAlert/shout09.wav" + "wave" "npc/infected/alert/becomeAlert/howl01.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert01.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert04.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert09.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert11.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert12.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert14.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert17.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert18.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert21.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert23.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert25.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert26.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert29.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert38.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert41.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert54.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert55.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert56.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert57.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert58.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert59.wav" + "wave" "npc/infected/alert/becomeAlert/become_alert25.wav" + "wave" "npc/infected/alert/becomeAlert/male/become_alert60.wav" + "wave" "npc/infected/alert/becomeAlert/male/become_alert61.wav" + "wave" "npc/infected/alert/becomeAlert/male/become_alert62.wav" + "wave" "npc/infected/alert/becomeAlert/male/become_alert63.wav" + } +} + +// awake and becoming aware of survivors +"L4D_Zombie.Alert" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_70dB" + "volume" "0.90" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + "wave" "npc/infected/alert/alert/alert13.wav" + "wave" "npc/infected/alert/alert/alert16.wav" + "wave" "npc/infected/alert/alert/alert23.wav" + "wave" "npc/infected/alert/alert/alert22.wav" + "wave" "npc/infected/alert/alert/alert25.wav" + "wave" "npc/infected/alert/alert/alert26.wav" + "wave" "npc/infected/alert/alert/alert27.wav" + "wave" "npc/infected/alert/alert/alert36.wav" + "wave" "npc/infected/alert/alert/alert37.wav" + "wave" "npc/infected/alert/alert/alert38.wav" + "wave" "npc/infected/alert/alert/alert39.wav" + "wave" "npc/infected/alert/alert/alert40.wav" + "wave" "npc/infected/alert/alert/alert41.wav" + "wave" "npc/infected/alert/alert/alert42.wav" + "wave" "npc/infected/alert/alert/alert43.wav" + "wave" "npc/infected/alert/alert/alert44.wav" + "wave" "npc/infected/alert/alert/male/alert50.wav" + "wave" "npc/infected/alert/alert/male/alert51.wav" + "wave" "npc/infected/alert/alert/male/alert52.wav" + "wave" "npc/infected/alert/alert/male/alert53.wav" + "wave" "npc/infected/alert/alert/male/alert54.wav" + "wave" "npc/infected/alert/alert/male/alert55.wav" + } +} + +// just launched into an attack +"L4D_Zombie.BecomeEnraged" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "volume" "0.70" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + "wave" "npc/infected/alert/becomeEnraged/alert24.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged01.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged02.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged03.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged06.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged07.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged09.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged10.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged11.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged30.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged50.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged51.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged52.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged53.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged54.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged55.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged56.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged57.wav" + "wave" "npc/infected/alert/becomeEnraged/become_enraged58.wav" + "wave" "npc/infected/alert/becomeEnraged/male/become_enraged40.wav" + "wave" "npc/infected/alert/becomeEnraged/male/become_enraged41.wav" + "wave" "npc/infected/alert/becomeEnraged/male/become_enraged42.wav" + "wave" "npc/infected/alert/becomeEnraged/male/become_enraged43.wav" + } +} + +// raging mad, running through the streets, NO SPECIFIC VICTIM +"L4D_Zombie.Rage" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_85dB" + "volume" "0.85" + "pitch" "95,105" + "GameData" + { + "Priority" "Important" + } + + "rndwave" + { + "wave" "npc/infected/action/rage/male/rage_50.wav" + "wave" "npc/infected/action/rage/male/rage_51.wav" + "wave" "npc/infected/action/rage/male/rage_52.wav" + "wave" "npc/infected/action/rage/male/rage_53.wav" + "wave" "npc/infected/action/rage/male/rage_54.wav" + "wave" "npc/infected/action/rage/male/rage_55.wav" + "wave" "npc/infected/action/rage/male/rage_56.wav" + "wave" "npc/infected/action/rage/male/rage_57.wav" + "wave" "npc/infected/action/rage/male/rage_58.wav" + "wave" "npc/infected/action/rage/male/rage_59.wav" + "wave" "npc/infected/action/rage/male/rage_60.wav" + "wave" "npc/infected/action/rage/male/rage_61.wav" + "wave" "npc/infected/action/rage/male/rage_62.wav" + "wave" "npc/infected/action/rage/male/rage_64.wav" + "wave" "npc/infected/action/rage/male/rage_65.wav" + "wave" "npc/infected/action/rage/male/rage_66.wav" + "wave" "npc/infected/action/rage/male/rage_67.wav" + "wave" "npc/infected/action/rage/male/rage_68.wav" + "wave" "npc/infected/action/rage/male/rage_69.wav" + "wave" "npc/infected/action/rage/male/rage_70.wav" + "wave" "npc/infected/action/rage/male/rage_71.wav" + "wave" "npc/infected/action/rage/male/rage_72.wav" + "wave" "npc/infected/action/rage/male/rage_73.wav" + "wave" "npc/infected/action/rage/male/rage_74.wav" + "wave" "npc/infected/action/rage/male/rage_75.wav" + "wave" "npc/infected/action/rage/male/rage_76.wav" + "wave" "npc/infected/action/rage/male/rage_77.wav" + "wave" "npc/infected/action/rage/male/rage_78.wav" + "wave" "npc/infected/action/rage/male/rage_79.wav" + "wave" "npc/infected/action/rage/male/rage_80.wav" + "wave" "npc/infected/action/rage/male/rage_81.wav" + "wave" "npc/infected/action/rage/male/rage_82.wav" + } +} + +// chasing, raging mad, at a Survivor we can see, VICTIM HAS BEEN DETERMINED AND IS BEING YELLED AT +"L4D_Zombie.RageAtVictim" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80" + "pitch" "95,105" + "GameData" + { + "Priority" "Important" + } + "rndwave" + { + "wave" "npc/infected/action/rageAt/rage_at_victim25.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim35.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim02.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim34.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim26.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim01.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim22.wav" + "wave" "npc/infected/action/rageAt/rage_at_victim21.wav" + "wave" "npc/infected/action/rageAt/snarl_4.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim20.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim21.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim22.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim23.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim24.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim25.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim26.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim27.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim28.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim29.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim30.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim31.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim32.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim33.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim34.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim35.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim36.wav" + "wave" "npc/infected/action/rageAt/male/rage_at_victim37.wav" + } +} + +// getting shoved backwards, BAMM, UHHH and anger +"L4D_Zombie.Shoved" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "volume" "0.90" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + "wave" "npc/infected/action/shoved/mp/shoved_long_1.wav" + "wave" "npc/infected/action/shoved/mp/shoved_long_2.wav" + "wave" "npc/infected/action/shoved/mp/shoved_long_3.wav" + "wave" "npc/infected/action/shoved/mp/shoved_01.wav" + "wave" "npc/infected/action/shoved/mp/shoved_02.wav" + "wave" "npc/infected/action/shoved/mp/shoved_03.wav" + "wave" "npc/infected/action/shoved/mp/shoved_04.wav" + "wave" "npc/infected/action/shoved/mp/shoved_05.wav" + "wave" "npc/infected/action/shoved/mp/shoved_06.wav" + "wave" "npc/infected/action/shoved/mp/shoved_07.wav" + "wave" "npc/infected/action/shoved/mp/shoved_08.wav" + "wave" "npc/infected/action/shoved/mp/shoved_09.wav" + "wave" "npc/infected/action/shoved/mp/shoved_10.wav" + "wave" "npc/infected/action/shoved/mp/shoved_11.wav" + "wave" "npc/infected/action/shoved/mp/shoved_12.wav" + "wave" "npc/infected/action/shoved/mp/shoved_13.wav" + "wave" "npc/infected/action/shoved/mp/shoved_14.wav" + "wave" "npc/infected/action/shoved/mp/shoved_15.wav" + "wave" "npc/infected/action/shoved/mp/shoved_16.wav" + "wave" "npc/infected/action/shoved/mp/shoved_17.wav" + } +} + +"L4D_Zombie.Shot" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_65dB" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + "wave" "npc/infected/action/been_shot/been_shot_01.wav" + "wave" "npc/infected/action/been_shot/been_shot_02.wav" + "wave" "npc/infected/action/been_shot/been_shot_04.wav" + "wave" "npc/infected/action/been_shot/been_shot_05.wav" + "wave" "npc/infected/action/been_shot/been_shot_06.wav" + "wave" "npc/infected/action/been_shot/been_shot_08.wav" + "wave" "npc/infected/action/been_shot/been_shot_09.wav" + "wave" "npc/infected/action/been_shot/been_shot_12.wav" + "wave" "npc/infected/action/been_shot/been_shot_13.wav" + "wave" "npc/infected/action/been_shot/been_shot_14.wav" + "wave" "npc/infected/action/been_shot/been_shot_18.wav" + "wave" "npc/infected/action/been_shot/been_shot_19.wav" + "wave" "npc/infected/action/been_shot/been_shot_20.wav" + "wave" "npc/infected/action/been_shot/been_shot_21.wav" + "wave" "npc/infected/action/been_shot/been_shot_22.wav" + "wave" "npc/infected/action/been_shot/been_shot_24.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_30.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_31.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_32.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_33.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_34.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_35.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_36.wav" + "wave" "npc/infected/action/been_shot/male/been_shot_37.wav" + } +} + +"L4D_Zombie.Die" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_65dB" + "volume" "0.80" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/infected/action/die/mp/odd_2.wav" + "wave" "npc/infected/action/die/mp/odd_3.wav" + "wave" "npc/infected/action/die/mp/odd_4.wav" + "wave" "npc/infected/action/die/mp/odd_5.wav" + "wave" "npc/infected/action/die/mp/squeal_1.wav" + "wave" "npc/infected/action/die/mp/squeal_2.wav" + "wave" "npc/infected/action/die/mp/squeal_3.wav" + "wave" "npc/infected/action/die/mp/squeal_4.wav" + "wave" "npc/infected/action/die/death_14.wav" + "wave" "npc/infected/action/die/death_17.wav" + "wave" "npc/infected/action/die/death_18.wav" + "wave" "npc/infected/action/die/death_19.wav" + "wave" "npc/infected/action/die/death_22.wav" + "wave" "npc/infected/action/die/death_23.wav" + "wave" "npc/infected/action/die/death_24.wav" + "wave" "npc/infected/action/die/death_25.wav" + "wave" "npc/infected/action/die/death_26.wav" + "wave" "npc/infected/action/die/death_27.wav" + "wave" "npc/infected/action/die/death_28.wav" + "wave" "npc/infected/action/die/death_29.wav" + "wave" "npc/infected/action/die/death_30.wav" + "wave" "npc/infected/action/die/death_32.wav" + "wave" "npc/infected/action/die/death_33.wav" + "wave" "npc/infected/action/die/death_34.wav" + "wave" "npc/infected/action/die/death_35.wav" + "wave" "npc/infected/action/die/death_36.wav" + "wave" "npc/infected/action/die/death_37.wav" + "wave" "npc/infected/action/die/death_38.wav" + "wave" "npc/infected/action/die/male/death_40.wav" + "wave" "npc/infected/action/die/male/death_41.wav" + "wave" "npc/infected/action/die/male/death_42.wav" + "wave" "npc/infected/action/die/male/death_43.wav" + "wave" "npc/infected/action/die/male/death_44.wav" + "wave" "npc/infected/action/die/male/death_45.wav" + "wave" "npc/infected/action/die/male/death_46.wav" + "wave" "npc/infected/action/die/male/death_47.wav" + "wave" "npc/infected/action/die/male/death_48.wav" + "wave" "npc/infected/action/die/male/death_49.wav" + } +} + +"L4D_Zombie.IgniteScream" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_70dB" + "volume" "0.80" + "pitch" "90,110" + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/infected/action/die/mp/squeal_1.wav" + "wave" "npc/infected/action/die/mp/squeal_2.wav" + "wave" "npc/infected/action/die/mp/squeal_3.wav" + "wave" "npc/infected/action/die/mp/squeal_4.wav" + "wave" "npc/infected/action/Ignite/Ignite01.wav" + "wave" "npc/infected/action/Ignite/Ignite07.wav" + "wave" "npc/infected/action/Ignite/Ignite08.wav" + "wave" "npc/infected/action/Ignite/Ignite09.wav" + "wave" "npc/infected/action/Ignite/male/Ignite11.wav" + "wave" "npc/infected/action/Ignite/male/Ignite12.wav" + "wave" "npc/infected/action/Ignite/male/Ignite13.wav" + "wave" "npc/infected/action/Ignite/male/Ignite14.wav" + "wave" "npc/infected/action/Ignite/male/Ignite10.wav" + } +} + +"L4D_Zombie.HeadlessCough" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_IDLE" + "volume" "0.75" + "pitch" "90,110" + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/infected/gore/headless/headless_1.wav" + "wave" "npc/infected/gore/headless/headless_2.wav" + "wave" "npc/infected/gore/headless/headless_3.wav" + "wave" "npc/infected/gore/headless/headless_4.wav" + } +} + +// -------------------------------------------------------------------- +// -------------------------------------------------------------------- +// NON voice + +"L4D_Zombie.AttackMiss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_70dB" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/infected/miss/claw_miss_1.wav" + "wave" "npc/infected/miss/claw_miss_2.wav" + } +} + +"L4D_Zombie.BulletImpact" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_75dB" + "volume" "0.55, 0.63" +// "volume" "0.0" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + "wave" "npc/infected/gore/bullets/bullet_impact_01.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_02.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_03.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_04.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_05.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_06.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_07.wav" + "wave" "npc/infected/gore/bullets/bullet_impact_08.wav" + } +} + +"L4D_Zombie.ClawScrape" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_65dB" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/infected/hit/claw_scrape_1.wav" + "wave" "npc/infected/hit/claw_scrape_2.wav" + "wave" "npc/infected/hit/claw_scrape_3.wav" + } +} + +"L4D_Zombie.Punch" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/infected/hit/Punch_Boxing_BodyHit03.wav" + "wave" "npc/infected/hit/Punch_Boxing_BodyHit04.wav" + "wave" "npc/infected/hit/Punch_Boxing_FaceHit4.wav" + "wave" "npc/infected/hit/Punch_Boxing_FaceHit5.wav" + "wave" "npc/infected/hit/Punch_Boxing_FaceHit6.wav" + "wave" "npc/infected/hit/hit_punch_01.wav" + "wave" "npc/infected/hit/hit_punch_02.wav" + "wave" "npc/infected/hit/hit_punch_03.wav" + "wave" "npc/infected/hit/hit_punch_04.wav" + "wave" "npc/infected/hit/hit_punch_05.wav" + "wave" "npc/infected/hit/hit_punch_06.wav" + "wave" "npc/infected/hit/hit_punch_07.wav" + "wave" "npc/infected/hit/hit_punch_08.wav" + } +} + + + +// -------------------------------------------------------------------- +// -------------------------------------------------------------------- +// The Mega Mob howl. +// This is the far-off howling of 100 zombies who are about to +// swarm the Survivors. The sound needs to be heard above the +// potentially noisy event that triggered their arrival. + +"MegaMobIncoming" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_70dB" + "volume" "0.60" + "pitch" "95,105" + "wave" "npc/mega_mob/mega_mob_incoming.wav" +} + +"CEDA.suit.deflate" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_70dB" + "volume" "0.65, 0.75" + "pitch" "90,100" + "rndwave" + { + + "wave" "npc/infected/action/die/CEDA_Suit_Deflate.wav" + "wave" "npc/infected/action/die/CEDA_Suit_Deflate_02.wav" + "wave" "npc/infected/action/die/CEDA_Suit_Deflate_03.wav" + } +} diff --git a/gamemodes/tf/gamemode/contents/l4d2_game_sounds_infected_special.lua b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_infected_special.lua new file mode 100644 index 000000000..62c6f2698 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_infected_special.lua @@ -0,0 +1,2871 @@ +// Tank Zombie +//------------------------------------------------------------------ +"HulkZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/idle/Tank_Voice_01.wav" + "wave" "player/tank/voice/idle/Tank_Voice_02.wav" + "wave" "player/tank/voice/idle/Tank_Voice_03.wav" + "wave" "player/tank/voice/idle/Tank_Voice_04.wav" + "wave" "player/tank/voice/idle/Tank_Voice_05.wav" + "wave" "player/tank/voice/idle/Tank_Voice_06.wav" + "wave" "player/tank/voice/idle/Tank_Voice_07.wav" + "wave" "player/tank/voice/idle/Tank_Voice_08.wav" + "wave" "player/tank/voice/idle/Tank_Voice_09.wav" + } +} + +"HulkZombie.Breathe" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/idle/Tank_Breathe_01.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_02.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_03.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_04.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_05.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_06.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_07.wav" + "wave" "player/tank/voice/idle/Tank_Breathe_08.wav" + } +} +// This plays 25% of "Yell" during engagement +"HulkZombie.Growl" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/idle/Tank_Growl_01.wav" + "wave" "player/tank/voice/idle/Tank_Growl_02.wav" + "wave" "player/tank/voice/idle/Tank_Growl_03.wav" + "wave" "player/tank/voice/idle/Tank_Growl_09.wav" + "wave" "player/tank/voice/idle/Tank_Growl_10.wav" + "wave" "player/tank/voice/idle/Tank_Growl_11.wav" + "wave" "player/tank/voice/idle/Tank_Growl_12.wav" + } +} + +// "HulkZombie.Alert" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "soundlevel" "SNDLVL_115dB" + // "pitch" "92, 100" + + // "GameData" + // { + // "Priority" "Interesting" + // } + + // "rndwave" + // { + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_01.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_02.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_03.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_04.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_05.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_06.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_07.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_08.wav" + // "wave" "player/tank/voice/growl/Tank_Spot_Prey_09.wav" + // } +// } + +"HulkZombie.Yell" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/yell/Tank_Yell_01.wav" + "wave" "player/tank/voice/yell/Tank_Yell_02.wav" + "wave" "player/tank/voice/yell/Tank_Yell_03.wav" + "wave" "player/tank/voice/yell/Tank_Yell_04.wav" + "wave" "player/tank/voice/yell/Tank_Yell_05.wav" + "wave" "player/tank/voice/yell/Tank_Yell_06.wav" + "wave" "player/tank/voice/yell/Tank_Yell_07.wav" + "wave" "player/tank/voice/yell/Tank_Yell_08.wav" + "wave" "player/tank/voice/yell/Tank_Yell_09.wav" + "wave" "player/tank/voice/yell/Tank_Yell_10.wav" + "wave" "player/tank/voice/yell/Tank_Yell_12.wav" + "wave" "player/tank/voice/yell/Tank_Yell_16.wav" + } +} + +"HulkZombie.Attack" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/attack/Tank_Attack_01.wav" + "wave" "player/tank/voice/attack/Tank_Attack_02.wav" + "wave" "player/tank/voice/attack/Tank_Attack_03.wav" + "wave" "player/tank/voice/attack/Tank_Attack_04.wav" + "wave" "player/tank/voice/attack/Tank_Attack_05.wav" + "wave" "player/tank/voice/attack/Tank_Attack_06.wav" + "wave" "player/tank/voice/attack/Tank_Attack_07.wav" + "wave" "player/tank/voice/attack/Tank_Attack_08.wav" + "wave" "player/tank/voice/attack/Tank_Attack_09.wav" + "wave" "player/tank/voice/attack/Tank_Attack_10.wav" + } +} + +"HulkZombie.Throw.Fail" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_96dB" + "pitch" "92, 100" + + "rndwave" + { + "wave" "player/tank/voice/growl/Tank_Fail_01.wav" + "wave" "player/tank/voice/growl/Tank_Fail_02.wav" + "wave" "player/tank/voice/growl/Tank_Fail_03.wav" + "wave" "player/tank/voice/growl/Tank_Fail_04.wav" + "wave" "player/tank/voice/growl/Tank_Fail_05.wav" + } +} + +"HulkZombie.Throw.Pickup" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "player/tank/attack/rip_up_rock_1.wav" +} + +"HulkZombie.Throw" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + +// NOTE this was all pointing to 01 !!! + "rndwave" + { + "wave" "player/tank/voice/yell/Tank_Throw_01.wav" + "wave" "player/tank/voice/yell/Tank_Throw_02.wav" + "wave" "player/tank/voice/yell/Tank_Throw_03.wav" + "wave" "player/tank/voice/yell/Tank_Throw_04.wav" + "wave" "player/tank/voice/yell/Tank_Throw_05.wav" + "wave" "player/tank/voice/yell/Tank_Throw_06.wav" + "wave" "player/tank/voice/yell/Tank_Throw_09.wav" + "wave" "player/tank/voice/yell/Tank_Throw_10.wav" + "wave" "player/tank/voice/yell/Tank_Throw_11.wav" + } +} + + +"HulkZombie.Throw.FlyLoop" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "wave" "player/tank/attack/thrown_missile_loop_1.wav" +} + +"HulkZombie.StartLedgeClimb" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/growl/Tank_Climb_01.wav" + "wave" "player/tank/voice/growl/Tank_Climb_02.wav" + "wave" "player/tank/voice/growl/Tank_Climb_03.wav" + "wave" "player/tank/voice/growl/Tank_Climb_04.wav" + "wave" "player/tank/voice/growl/Tank_Climb_05.wav" + } +} + +"HulkZombie.Punch" +{ + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "100, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "player/tank/hit/hulk_punch_1.wav" +} + +"HulkZombie.PunchIncap" +{ + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "100, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/hit/pound_victim_1.wav" + "wave" "player/tank/hit/pound_victim_2.wav" + } +} + +"HulkZombie.Die" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/die/Tank_Death_01.wav" + "wave" "player/tank/voice/die/Tank_Death_02.wav" + "wave" "player/tank/voice/die/Tank_Death_03.wav" + "wave" "player/tank/voice/die/Tank_Death_04.wav" + "wave" "player/tank/voice/die/Tank_Death_05.wav" + "wave" "player/tank/voice/die/Tank_Death_06.wav" + "wave" "player/tank/voice/die/Tank_Death_07.wav" + } +} + +"HulkZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/pain/Tank_Pain_01.wav" + "wave" "player/tank/voice/pain/Tank_Pain_02.wav" + "wave" "player/tank/voice/pain/Tank_Pain_03.wav" + "wave" "player/tank/voice/pain/Tank_Pain_04.wav" + "wave" "player/tank/voice/pain/Tank_Pain_05.wav" + "wave" "player/tank/voice/pain/Tank_Pain_06.wav" + "wave" "player/tank/voice/pain/Tank_Pain_07.wav" + "wave" "player/tank/voice/pain/Tank_Pain_08.wav" + "wave" "player/tank/voice/pain/Tank_Pain_09.wav" + "wave" "player/tank/voice/pain/Tank_Pain_10.wav" + } +} + +"HulkZombie.PainFire" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "92, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/tank/voice/pain/Tank_Fire_01.wav" + "wave" "player/tank/voice/pain/Tank_Fire_02.wav" + "wave" "player/tank/voice/pain/Tank_Fire_03.wav" + "wave" "player/tank/voice/pain/Tank_Fire_04.wav" + "wave" "player/tank/voice/pain/Tank_Fire_05.wav" + "wave" "player/tank/voice/pain/Tank_Fire_06.wav" + "wave" "player/tank/voice/pain/Tank_Fire_07.wav" + "wave" "player/tank/voice/pain/Tank_Fire_08.wav" + } +} + +"HulkZombie.Thud" +{ + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "wave" "player/tank/fall/Tank_death_BodyFall_01.wav" +} + +"HulkZombie.ThrownProjectileHit" +{ + "volume" "1" + "soundlevel" "SNDLVL_150dB" + "pitch" "95, 105" + "channel" "CHAN_STATIC" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "player/tank/hit/thrown_projectile_hit_01.wav" +} + +// Witch Zombie +//------------------------------------------------------------------ +/// on the ground moaning +"WitchZombie.Despair" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/idle/female_cry_1.wav" + "wave" "npc/witch/voice/idle/female_cry_2.wav" + "wave" "npc/witch/voice/idle/female_cry_3.wav" + "wave" "npc/witch/voice/idle/female_cry_4.wav" + } +} + +// Witch Zombie +//------------------------------------------------------------------ +/// on the ground moaning +"WanderWitchZombie.Despair" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + + "rndwave" + { + "wave" "npc/witch/voice/idle/walking_cry_07.wav" + "wave" "npc/witch/voice/idle/walking_cry_10.wav" + "wave" "npc/witch/voice/idle/walking_cry_11.wav" + "wave" "npc/witch/voice/idle/walking_cry_12.wav" + } +} + + +// beginning attack, during attack this happens but it is a re-beginning bug? +"WitchZombie.Scream" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/Female_DistantScream1.wav" + "wave" "npc/witch/voice/attack/Female_DistantScream2.wav" + } +} + +// attack +"WitchZombie.Rage" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/female_shriek_1.wav" + "wave" "npc/witch/voice/attack/female_shriek_2.wav" + } +} + +// she has knocked down her victim and now is building up for the killing frenzy - about 3 seconds long +"WitchZombie.RageBeforeKillingFrenzy" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/witch_before_kill_01.wav" + } +} + + +// she is rapidly clawing at her incap victim, shredding them to bits +"WitchZombie.KillingFrenzy" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/female_shriek_1.wav" + "wave" "npc/witch/voice/attack/female_shriek_2.wav" + } +} + + +"WitchZombie.Surprised" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/mad/Female_LS_B_AttackGrunt16.wav" + "wave" "npc/witch/voice/mad/Female_LS_B_Surprised01.wav" + } +} + +"WitchZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/pain/witch_pain_1.wav" + "wave" "npc/witch/voice/pain/witch_pain_2.wav" + "wave" "npc/witch/voice/pain/witch_pain_3.wav" + } +} + +"WitchZombie.PainFire" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/attack/female_shriek_1.wav" + "wave" "npc/witch/voice/attack/female_shriek_2.wav" + } +} + +// increasing warnings +"WitchZombie.GrowlLow" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 100" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "npc/witch/voice/mad/ZombieFemale_Growl1.wav" +} + + +"WitchZombie.GrowlMedium" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "100, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "npc/witch/voice/mad/ZombieFemale_Growl6.wav" +} + + +"WitchZombie.GrowlHigh" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/mad/Female_LS_D_MadScream01.wav" + "wave" "npc/witch/voice/mad/Female_LS_D_MadScream02.wav" + "wave" "npc/witch/voice/mad/Female_LS_D_MadScream03.wav" + } +} + +// retreating +"WitchZombie.RetreatHorror" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/voice/retreat/horrified_1.wav" + "wave" "npc/witch/voice/retreat/horrified_2.wav" + "wave" "npc/witch/voice/retreat/horrified_3.wav" + "wave" "npc/witch/voice/retreat/horrified_4.wav" + } +} + +// dying +"WitchZombie.Die" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "npc/witch/voice/die/female_death_1.wav" +} + + +"WitchZombie.HeadShot" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "npc/witch/voice/die/headshot_death_1.wav" + "wave" "npc/witch/voice/die/headshot_death_2.wav" + "wave" "npc/witch/voice/die/headshot_death_3.wav" + } +} + + +"WitchZombie.ShredVictim" +{ + "channel" "CHAN_BODY" + "volume" ".7" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "npc/witch/hit/Hit_SlimeSplat3.wav" + "wave" "npc/witch/hit/Hit_SlimeSplat4.wav" + "wave" "npc/witch/hit/Hit_SlimeSplat5.wav" + } +} + +//------------------------------------------------------------------ +// Boomer Zombie +//------------------------------------------------------------------ + +// about to vomit warning +"BoomerZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_01.wav" + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_12.wav" + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_13.wav" + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_14.wav" + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_15.wav" + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_16.wav" + "wave" "player/Boomer/voice/warn/$gender_boomer_Warning_17.wav" + } +} + +// alert sound +"BoomerZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_04.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_05.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_07.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_10.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_11.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_12.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_13.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_14.wav" + "wave" "player/Boomer/voice/alert/$gender_boomer_Alert_15.wav" + } +} + +// random vocalizations +"BoomerZombie.Voice" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_01.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_04.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_05.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_06.wav" + // "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_11.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_12.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_14.wav" + + } +} + +// random emission as well +"BoomerZombie.Groan" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_02.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_03.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_07.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_09.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_10.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_13.wav" + "wave" "player/Boomer/voice/idle/$gender_boomer_Lurk_15.wav" + + } +} + +// on spawnBoomerZombie.Voice +"BoomerZombie.Gurgle" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + + "wave" "player/Boomer/voice/idle/indigestion_loop.wav" +} + + +// when boomer becomes ALERT +"BoomerZombie.Rage" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/attack/$gender_boomer_SpotPrey_05.wav" + "wave" "player/Boomer/voice/attack/$gender_boomer_SpotPrey_07.wav" + "wave" "player/Boomer/voice/attack/$gender_boomer_SpotPrey_09.wav" + "wave" "player/Boomer/voice/attack/$gender_boomer_SpotPrey_10.wav" + "wave" "player/Boomer/voice/attack/$gender_boomer_SpotPrey_11.wav" + "wave" "player/Boomer/voice/attack/$gender_boomer_SpotPrey_12.wav" + } +} + +// while attacking +"BoomerZombie.Attack" +{ + "channel" "CHAN_VOICE" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/attack/$gender_Zombie10_Growl1.wav" + "wave" "player/Boomer/voice/attack/$gender_Zombie10_Growl2.wav" + "wave" "player/Boomer/voice/attack/$gender_Zombie10_Growl3.wav" + "wave" "player/Boomer/voice/attack/$gender_Zombie10_Growl5.wav" + } +} + +// in pain +"BoomerZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/pain/$gender_boomer_Shoved_03.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_Shoved_04.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_Shoved_05.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_Shoved_06.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_Shoved_07.wav" + // "wave" "player/Boomer/voice/pain/$gender_boomer_Shoved_08.wav" + } +} + +"BoomerZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_02.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_03.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_04.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_05.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_06.wav" + "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_07.wav" + // "wave" "player/Boomer/voice/pain/$gender_boomer_PainShort_08.wav" + } +} + +// exploding +"BoomerZombie.Detonate" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/Boomer/explode/Explo_Medium_09.wav" + "wave" "player/Boomer/explode/Explo_Medium_10.wav" + "wave" "player/Boomer/explode/Explo_Medium_14.wav" + } +} + + +"BoomerZombie.Fall" +{ + "channel" "CHAN_BODY" // "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "wave" "player/Boomer/fall/boomer_dive_01.wav" +} + +// big BLAH sound when attacking +"Vomit.Use" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "100, 105" + + "rndwave" + { + "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_01.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_03.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_04.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_09.wav" + // "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_10.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_11.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_Vomit_12.wav" + } +} + +"Vomit.Cancel" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "100, 105" + + "rndwave" + { + "wave" "player/Boomer/voice/vomit/$gender_boomer_DisruptVomit_01.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_DisruptVomit_05.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_DisruptVomit_06.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_DisruptVomit_07.wav" + "wave" "player/Boomer/voice/vomit/$gender_boomer_DisruptVomit_09.wav" + } +} + + +// Smoker Zombie +//------------------------------------------------------------------ +// called by CTerrorPlayer::OnVoiceTransmit +"SmokerZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "0.9" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_07.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_08.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_09.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_11.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_14.wav" + } +} + +// Random playback of breath +"SmokerZombie.Breathe" +{ + "channel" "CHAN_VOICE" + "volume" "0.9" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/idle/Smoker_Lurk_01.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_03.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_04.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_06.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_08.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_09.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_10.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_11.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_12.wav" + "wave" "player/smoker/voice/idle/Smoker_Lurk_13.wav" + } +} + +// Played when attacking +"SmokerZombie.Attack" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_110dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/attack/Smoker_Attack_01.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_02.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_03.wav" + + "wave" "player/smoker/voice/attack/Smoker_Attack_04.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_05.wav" + + "wave" "player/smoker/voice/attack/Smoker_Attack_06.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_07.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_08.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_09.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_10.wav" + "wave" "player/smoker/voice/attack/Smoker_Attack_11.wav" + } +} + +// In pain +"SmokerZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/pain/Smoker_Pain_02.wav" + "wave" "player/smoker/voice/pain/Smoker_Pain_03.wav" + "wave" "player/smoker/voice/pain/Smoker_Pain_04.wav" + "wave" "player/smoker/voice/pain/Smoker_Pain_05.wav" + "wave" "player/smoker/voice/pain/Smoker_Pain_06.wav" + } +} +"SmokerZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/pain/Smoker_PainShort_01.wav" + "wave" "player/smoker/voice/pain/Smoker_PainShort_02.wav" + "wave" "player/smoker/voice/pain/Smoker_PainShort_03.wav" + "wave" "player/smoker/voice/pain/Smoker_PainShort_04.wav" + "wave" "player/smoker/voice/pain/Smoker_PainShort_05.wav" + "wave" "player/smoker/voice/pain/Smoker_PainShort_06.wav" + } +} + +// spotting a target +"SmokerZombie.Recognize" +{ + "channel" "CHAN_VOICE" + "volume" "0.9" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_01.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_02.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_10.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_12.wav" + "wave" "player/smoker/voice/idle/Smoker_SpotPrey_13.wav" + } +} + +// alert is sounded when spawned +"SmokerZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/alert/Smoker_Alert_01.wav" + "wave" "player/smoker/voice/alert/Smoker_Alert_02.wav" + "wave" "player/smoker/voice/alert/Smoker_Alert_03.wav" + "wave" "player/smoker/voice/alert/Smoker_Alert_04.wav" + "wave" "player/smoker/voice/alert/Smoker_Alert_05.wav" + "wave" "player/smoker/voice/alert/Smoker_Alert_06.wav" + } +} + +// Warning just before attacking +"SmokerZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/warn/Smoker_Warn_01.wav" + "wave" "player/smoker/voice/warn/Smoker_Warn_03.wav" + "wave" "player/smoker/voice/warn/Smoker_Warn_04.wav" + "wave" "player/smoker/voice/warn/Smoker_Warn_05.wav" + "wave" "player/smoker/voice/warn/Smoker_Warn_06.wav" + } +} + +// Death +"SmokerZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/death/Smoker_Death_01.wav" + "wave" "player/smoker/voice/death/Smoker_Death_02.wav" + "wave" "player/smoker/voice/death/Smoker_Death_03.wav" + "wave" "player/smoker/voice/death/Smoker_Death_04.wav" + "wave" "player/smoker/voice/death/Smoker_Death_05.wav" + "wave" "player/smoker/voice/death/Smoker_Death_06.wav" + } +} +//Death explode +"SmokerZombie.Explode" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_115dB" + "pitch" "PITCH_NORM" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/Death/Smoker_explode_01.wav" + "wave" "player/smoker/Death/Smoker_explode_02.wav" + "wave" "player/smoker/Death/Smoker_explode_03.wav" + "wave" "player/smoker/Death/Smoker_explode_04.wav" + } +} + +// +"SmokerZombie.TongueAttack" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_125dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/attack/Smoker_LaunchTongue_01.wav" + "wave" "player/smoker/voice/attack/Smoker_LaunchTongue_02.wav" + "wave" "player/smoker/voice/attack/Smoker_LaunchTongue_03.wav" + } +} + + +"SmokerZombie.TongueHit" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/smoker/voice/attack/Smoker_TongueHit_01.wav" + "wave" "player/smoker/voice/attack/Smoker_TongueHit_02.wav" + } +} + + +"SmokerZombie.TongueRetract" +{ + "channel" "CHAN_WEAPON" + "volume" "0.9" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/smoker/miss/Smoker_ReelTongueIn_01.wav" + "wave" "player/smoker/miss/Smoker_ReelTongueIn_02.wav" + "wave" "player/smoker/miss/Smoker_ReelTongueIn_03.wav" + "wave" "player/smoker/miss/Smoker_ReelTongueIn_04.wav" + "wave" "player/smoker/miss/Smoker_ReelTongueIn_05.wav" + } +} + + +"SmokerZombie.TongueStrain" +{ + "channel" "CHAN_WEAPON" + "volume" "0.9" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/smoker/miss/Cow_LickLips_Slurp2.wav" + "wave" "player/smoker/miss/Cow_LickLips_Slurp3.wav" + "wave" "player/smoker/miss/Cow_LickLips_Slurp4.wav" + } +} + +"SmokerZombie.TongueFly" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "player/smoker/attack/tongue_fly_loop.wav" +} + +"SmokerZombie.TongueChoke" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "common/null.wav" +} + +// ---------------------------------------------------------- +// Hunter Zombie +// ---------------------------------------------------------- +// random vocalizations +"HunterZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/hunter/voice/idle/Hunter_Stalk_01.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_04.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_05.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_06.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_07.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_08.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_09.wav" + } +} + +// growl, no target established +"HunterZombie.Growl" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "90, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/hunter/voice/idle/Hunter_Stalk_01.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_04.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_05.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_06.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_07.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_08.wav" + "wave" "player/hunter/voice/idle/Hunter_Stalk_09.wav" + } +} + + +// Kitty's been hurt +"HunterZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/hunter/voice/pain/Hunter_Pain_05.wav" + "wave" "player/hunter/voice/pain/Hunter_Pain_08.wav" + "wave" "player/hunter/voice/pain/Hunter_Pain_09.wav" + "wave" "player/hunter/voice/pain/Hunter_Pain_12.wav" + "wave" "player/hunter/voice/pain/Hunter_Pain_13.wav" + "wave" "player/hunter/voice/pain/Hunter_Pain_14.wav" + "wave" "player/hunter/voice/pain/Hunter_Pain_15.wav" + } +} + +// Kitty's been hurt +"HunterZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/hunter/voice/pain/Hunter_PainShort_01.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_03.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_05.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_09.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_10.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_11.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_12.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_13.wav" + "wave" "player/hunter/voice/pain/Hunter_PainShort_14.wav" + + } +} + +// lunging, not pouncing but lunging +"HunterZombie.Lunge" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/hunter/voice/attack/Hunter_Pounce_01.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_02.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_04.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_05.wav" + } +} + +// landing a lunge but not a pounce +"HunterZombie.LungeLand" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/hunter/voice/attack/Hunter_Pounce_06.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_07.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_09.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_10.wav" + } +} + +// Hunter Death Sounds +"HunterZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/hunter/voice/death/Hunter_Death_02.wav" + "wave" "player/hunter/voice/death/Hunter_Death_04.wav" + "wave" "player/hunter/voice/death/Hunter_Death_06.wav" + "wave" "player/hunter/voice/death/Hunter_Death_07.wav" + "wave" "player/hunter/voice/death/Hunter_Death_08.wav" + } +} + +// alert +// let everyone know I'm here +"HunterZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "GameData" + { + "Priority" "Critical" + } + + + + "rndwave" + { + "wave" "player/hunter/voice/alert/Hunter_Alert_01.wav" + "wave" "player/hunter/voice/alert/Hunter_Alert_02.wav" + "wave" "player/hunter/voice/alert/Hunter_Alert_03.wav" + "wave" "player/hunter/voice/alert/Hunter_Alert_04.wav" + "wave" "player/hunter/voice/alert/Hunter_Alert_05.wav" + } +} + +// warning +// crouched and ready to pounce +"HunterZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + + + // "wave" "player/hunter/voice/warn/Hunter_Warn_08.wav" + "wave" "player/hunter/voice/warn/Hunter_Warn_10.wav" + "wave" "player/hunter/voice/warn/Hunter_Warn_14.wav" + "wave" "player/hunter/voice/warn/Hunter_Warn_16.wav" + "wave" "player/hunter/voice/warn/Hunter_Warn_17.wav" + "wave" "player/hunter/voice/warn/Hunter_Warn_18.wav" + } +} + + +// attempting to pounce +"HunterZombie.Pounce" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + // "wave" "player/hunter/voice/attack/Hunter_AttackMix_01.wav" + "wave" "player/hunter/voice/attack/Hunter_AttackMix_01.wav" + "wave" "player/hunter/voice/attack/Hunter_AttackMix_02.wav" + "wave" "player/hunter/voice/attack/Hunter_AttackMix_03.wav" + } +} + + +// should be used +"HunterZombie.Pounce.FlyLoop" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/hunter/voice/attack/Hunter_Pounce_10.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_11.wav" + "wave" "player/hunter/voice/attack/Hunter_Pounce_06.wav" + } +} + +// missed on the pounce +"HunterZombie.Pounce.Miss" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_01.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_02.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_03.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_04.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_05.wav" + // "wave" "player/hunter/voice/miss/Hunter_PounceMiss_06.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_07.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_08.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceMiss_09.wav" + } + +} +// shredding victim during attack +"HunterZombie.Pounce.shred" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + "rndwave" + { + + "wave" "player/hunter/voice/attack/Hunter_Shred_01.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_02.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_03.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_04.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_05.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_06.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_07.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_08.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_09.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_10.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_11.wav" + "wave" "player/hunter/voice/attack/Hunter_Shred_12.wav" + } + +} + +// the pounce has been canceled +"HunterZombie.Pounce.Cancel" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/hunter/voice/miss/Hunter_PounceCancel_01.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceCancel_02.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceCancel_03.wav" + "wave" "player/hunter/voice/miss/Hunter_PounceCancel_04.wav" + } +} + + + +// pounce hit a survivor +"HunterZombie.Pounce.Hit" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_70dB" + "pitch" "100" + + "GameData" + { + "Priority" "Interesting" + } + + "wave" "player/hunter/hit/tackled_1.wav" +} + +//----------------------------------------------------------------- +// charger +//---------------------------------------------------------------- +"ChargerZombie.HitPerson" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_100dB" + "volume" "1" + "pitch" "96,104" + + "rndwave" + { + "wave" "player/charger/hit/charger_smash_01.wav" + "wave" "player/charger/hit/charger_smash_02.wav" + "wave" "player/charger/hit/charger_smash_03.wav" + } +} +"ChargerZombie.ImpactHard" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "volume" "1.0" + "pitch" "96,104" + + "rndwave" + { + "wave" "player/charger/LOUD_chargerImpact_01.wav" + "wave" "player/charger/LOUD_chargerImpact_02.wav" + "wave" "player/charger/LOUD_chargerImpact_03.wav" + "wave" "player/charger/LOUD_chargerImpact_04.wav" + } +} +// not being called +"ChargerZombie.Miss" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_110dB" + "volume" "0.8" + "pitch" "100" + + "rndwave" + { + "wave" "physics/concrete/boulder_impact_hard1.wav" + "wave" "physics/concrete/boulder_impact_hard2.wav" + "wave" "physics/concrete/boulder_impact_hard3.wav" + "wave" "physics/concrete/boulder_impact_hard4.wav" + } +} + +// random vocalizations +"ChargerZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/charger/voice/idle/Charger_lurk_01.wav" + "wave" "player/charger/voice/idle/Charger_lurk_02.wav" + "wave" "player/charger/voice/idle/Charger_lurk_03.wav" + "wave" "player/charger/voice/idle/Charger_lurk_04.wav" + "wave" "player/charger/voice/idle/Charger_lurk_05.wav" + "wave" "player/charger/voice/idle/Charger_lurk_06.wav" + "wave" "player/charger/voice/idle/Charger_lurk_07.wav" + "wave" "player/charger/voice/idle/Charger_lurk_08.wav" + "wave" "player/charger/voice/idle/Charger_lurk_09.wav" + "wave" "player/charger/voice/idle/Charger_lurk_10.wav" + "wave" "player/charger/voice/idle/Charger_lurk_11.wav" + } +} + +//growl, no target established +"ChargerZombie.Growl" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "90, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + + "wave" "player/charger/voice/idle/Charger_lurk_12.wav" + "wave" "player/charger/voice/idle/Charger_lurk_13.wav" + "wave" "player/charger/voice/idle/Charger_lurk_14.wav" + "wave" "player/charger/voice/idle/Charger_lurk_15.wav" + "wave" "player/charger/voice/idle/Charger_lurk_16.wav" + "wave" "player/charger/voice/idle/Charger_lurk_17.wav" + "wave" "player/charger/voice/idle/Charger_lurk_18.wav" + "wave" "player/charger/voice/idle/Charger_lurk_19.wav" + "wave" "player/charger/voice/idle/Charger_lurk_20.wav" + "wave" "player/charger/voice/idle/Charger_lurk_21.wav" + "wave" "player/charger/voice/idle/Charger_lurk_22.wav" + "wave" "player/charger/voice/idle/Charger_lurk_23.wav" + } +} + +// spotting a target +"ChargerZombie.Recognize" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/charger/voice/idle/Charger_SpotPrey_01.wav" + "wave" "player/charger/voice/idle/Charger_SpotPrey_02.wav" + "wave" "player/charger/voice/idle/Charger_SpotPrey_03.wav" + } +} + +// Kitty's been hurt +"ChargerZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/charger/voice/pain/Charger_Pain_01.wav" + "wave" "player/charger/voice/pain/Charger_Pain_02.wav" + "wave" "player/charger/voice/pain/Charger_Pain_03.wav" + "wave" "player/charger/voice/pain/Charger_Pain_04.wav" + "wave" "player/charger/voice/pain/Charger_Pain_05.wav" + "wave" "player/charger/voice/pain/Charger_Pain_06.wav" + } +} + +// // Kitty's been hurt +// "ChargerZombie.PainShort" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "soundlevel" "SNDLVL_75dB" + // "pitch" "95, 105" + + // "GameData" + // { + // "Priority" "Interesting" + // } + + // "rndwave" + // { + // "wave" "player/hunter/voice/pain/Hunter_PainShort_01.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_03.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_04.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_05.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_07.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_08.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_09.wav" + // "wave" "player/hunter/voice/pain/Hunter_PainShort_10.wav" + + // } +// } + +// attempting to pounce +"ChargerZombie.Charge" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + "wave" "player/charger/voice/attack/Charger_Charge_01.wav" + "wave" "player/charger/voice/attack/Charger_Charge_02.wav" + } +} +// attempting to pounce +"ChargerZombie.ChargeEnd" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + // "rndwave" + // { + "wave" "player/charger/voice/pain/Charger_Pain_01.wav" +// "wave" "player/charger/voice/attack/Charger_Charge_02.wav" + // } +} + +// // lunging, not pouncing but lunging +// "ChargerZombie.Lunge" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "soundlevel" "SNDLVL_85dB" + // "pitch" "95, 105" + + // "rndwave" + // { + // "wave" "player/hunter/voice/attack/Hunter_Pounce_01.wav" + // "wave" "player/hunter/voice/attack/Hunter_Pounce_02.wav" + // "wave" "player/hunter/voice/attack/Hunter_Pounce_03.wav" + // } +// } + +// // landing a lunge but not a pounce +// "ChargerZombie.LungeLand" +// { + // "channel" "CHAN_BODY" + // "volume" "1" + // "soundlevel" "SNDLVL_75dB" + // "pitch" "95, 105" + + // "GameData" + // { + // "Priority" "Interesting" + // } + + // "rndwave" + // { + // "wave" "player/hunter/voice/attack/Hunter_Pounce_04.wav" + // "wave" "player/hunter/voice/attack/Hunter_Pounce_05.wav" + // "wave" "player/hunter/voice/attack/Hunter_Pounce_06.wav" + // "wave" "player/hunter/voice/attack/Hunter_Pounce_07.wav" + // } +// } + +// Hunter Death Sounds +"ChargerZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + + "rndwave" + { + "wave" "player/charger/voice/die/Charger_Die_01.wav" + "wave" "player/charger/voice/die/Charger_Die_02.wav" + "wave" "player/charger/voice/die/Charger_Die_03.wav" + } +} + +// alert +// let everyone know I'm here +"ChargerZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "0.7" + "soundlevel" "SNDLVL_105dB" + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + "wave" "player/charger/voice/alert/Charger_alert_01.wav" + "wave" "player/charger/voice/alert/Charger_alert_02.wav" + + } +} + +// warning +// crouched and ready to pounce +"ChargerZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + "wave" "player/charger/voice/warn/Charger_Warn_01.wav" + "wave" "player/charger/voice/warn/Charger_Warn_02.wav" + "wave" "player/charger/voice/warn/Charger_Warn_03.wav" + } +} + +// attack +// punching +"ChargerZombie.Smash" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/charger/hit/charger_punch1.wav" + "wave" "player/charger/hit/charger_punch2.wav" + "wave" "player/charger/hit/charger_punch3.wav" + "wave" "player/charger/hit/charger_punch4.wav" + } +} + +"ChargerZombie.Pummel" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_105dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/charger/hit/charger_smash_01.wav" + "wave" "player/charger/hit/charger_smash_02.wav" + "wave" "player/charger/hit/charger_smash_03.wav" + } +} + + +"ChargerZombie.VocalizePummel" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/charger/voice/attack/Charger_Pummel01.wav" + "wave" "player/charger/voice/attack/Charger_Pummel02.wav" + "wave" "player/charger/voice/attack/Charger_Pummel03.wav" + "wave" "player/charger/voice/attack/Charger_Pummel04.wav" + + } +} + + +"ChargerZombie.Melee" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/charger/voice/attack/Charger_Melee01.wav" + //"wave" "player/charger/voice/attack/Charger_Melee02.wav" + "wave" "player/charger/voice/attack/Charger_Melee03.wav" + "wave" "player/charger/voice/attack/Charger_Melee04.wav" + "wave" "player/charger/voice/attack/Charger_Melee05.wav" + } +} + + +"ChargerZombie.Stagger" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/charger/voice/pain/Charger_Stagger01.wav" + "wave" "player/charger/voice/pain/Charger_Stagger02.wav" + + } +} + + + +// Player Zombie +//------------------------------------------------------------------ +"PlayerZombie.BecomeGhost" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/Menu_Horror01.wav" +} + +"PlayerZombie.BecomeReal" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "pitch" "PITCH_NORM" + + "wave" "UI/Pickup_GuitarRiff10.wav" +} + +"PlayerZombie.Rage" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + // "wave" "common/null.wav" + + "rndwave" + { + "wave" "player/PZ/voice/attack/ZombieDog_Attack1.wav" + "wave" "player/PZ/voice/attack/ZombieDog_Attack2.wav" + "wave" "player/PZ/voice/attack/ZombieDog_Attack3.wav" + } +} + +"PlayerZombie.Breathe" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + + // "rndwave" + // { + // "wave" "player/PZ/voice/idle/ZombieDog_Growl1.wav" + // "wave" "player/PZ/voice/idle/ZombieDog_Growl2.wav" + // "wave" "player/PZ/voice/idle/ZombieDog_Growl3.wav" + // "wave" "player/PZ/voice/idle/ZombieDog_Growl4.wav" + // } +} + +"PlayerZombie.Attack" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/PZ/voice/attack/ZombieDog_Attack1.wav" + "wave" "player/PZ/voice/attack/ZombieDog_Attack2.wav" + "wave" "player/PZ/voice/attack/ZombieDog_Attack3.wav" + } +} + +"PlayerZombie.AttackMiss" +{ + "channel" "CHAN_WEAPON" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/PZ/miss/claw_miss_1.wav" + "wave" "player/PZ/miss/claw_miss_2.wav" + } +} + +"PlayerZombie.AttackHit" +{ + "channel" "CHAN_AUTO" + "volume" "0.7" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/PZ/hit/zombie_slice_1.wav" + "wave" "player/PZ/hit/zombie_slice_2.wav" + "wave" "player/PZ/hit/zombie_slice_3.wav" + "wave" "player/PZ/hit/zombie_slice_4.wav" + "wave" "player/PZ/hit/zombie_slice_5.wav" + "wave" "player/PZ/hit/zombie_slice_6.wav" + } +} + +"PlayerZombie.Die" +{ + "channel" "CHAN_VOICE" + "volume" "0.75" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + // "rndwave" + // { + // "wave" "player/PZ/voice/die/ZombieDog_Death1.wav" + // "wave" "player/PZ/voice/die/ZombieDog_Death2.wav" + // } +} + +"PlayerZombie.Hurt" +{ + "channel" "CHAN_VOICE" + "volume" "0.75" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + + // "rndwave" + // { + // "wave" "player/PZ/voice/hurt/ZombieDog_Hurt2.wav" + // "wave" "player/PZ/voice/hurt/ZombieDog_Hurt3.wav" + // } +} + +"PlayerZombie.Taunt" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "wave" "common/null.wav" + + // "rndwave" + // { + // "wave" "player/hunter/voice/idle/Zombie07_Growl03.wav" + // "wave" "player/hunter/voice/idle/Zombie07_Growl04.wav" + // "wave" "player/hunter/voice/idle/Zombie07_Growl09.wav" + // "wave" "player/hunter/voice/idle/Zombie07_Growl10.wav" + // } +} + +"PlayerZombie.CullWarn" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "100" + + "wave" "ambient/alarms/klaxon1.wav" +} + + +"PlayerZombie.Fall" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/PZ/voice/attack/ZombieDog_Attack1.wav" + "wave" "player/PZ/voice/attack/ZombieDog_Attack2.wav" + "wave" "player/PZ/voice/attack/ZombieDog_Attack3.wav" + } +} + + +"PlayerZombie.Thud" +{ + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + + "wave" "player/PZ/fall/Bodyfall_LargeCreature.wav" +} + + +"ChargerZombie.HitWall" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_100dB" + "pitch" "95, 105" + "wave" "player/jumplanding.wav" +} + + + +//------------------------------------------------------------------ +// Spitter Zombie +//------------------------------------------------------------------ +// called by CTerrorPlayer::OnVoiceTransmit +"SpitterZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/idle/Spitter_Lurk_01.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_02.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_03.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_04.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_05.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_07.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_08.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_09.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_10.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_11.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_12.wav" + //"wave" "player/spitter/voice/idle/Spitter_Lurk_13.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_14.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_15.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_16.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_17.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_18.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_19.wav" + "wave" "player/spitter/voice/idle/Spitter_Lurk_20.wav" + } +} + +// // Random playback of idle sounds +// "SpitterZombie.Idle" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "soundlevel" "SNDLVL_85dB" + // "pitch" "95, 105" + + + // "rndwave" + // { + // "wave" "player/spitter/voice/idle/Spitter_Lurk_01.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_02.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_03.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_04.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_05.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_07.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_08.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_09.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_10.wav" + // "wave" "player/spitter/voice/idle/Spitter_Lurk_11.wav" + + // } +// } + +// // Played when attacking +// "SpitterZombie.Attack" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "soundlevel" "SNDLVL_110dB" + // "pitch" "95, 105" + + //"GameData" + //{ + // "Priority" "Interesting" + //} + + // "rndwave" + // { + // "wave" "player/spitter/voice/attack/Spitter_Attack_01.wav" + // "wave" "player/spitter/voice/attack/Spitter_Attack_02.wav" + + // } +// } + +// In pain +"SpitterZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/pain/Spitter_Pain_01.wav" + "wave" "player/spitter/voice/pain/Spitter_Pain_02.wav" + "wave" "player/spitter/voice/pain/Spitter_Pain_03.wav" + + } +} +"SpitterZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/pain/Spitter_PainShort_01.wav" + "wave" "player/spitter/voice/pain/Spitter_PainShort_02.wav" + "wave" "player/spitter/voice/pain/Spitter_PainShort_03.wav" + + } +} + +// spotting a target +"SpitterZombie.Recognize" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/idle/Spitter_SpotPrey_01.wav" + "wave" "player/spitter/voice/idle/Spitter_SpotPrey_02.wav" + "wave" "player/spitter/voice/idle/Spitter_SpotPrey_03.wav" + "wave" "player/spitter/voice/idle/Spitter_SpotPrey_04.wav" + "wave" "player/spitter/voice/idle/Spitter_SpotPrey_05.wav" + "wave" "player/spitter/voice/idle/Spitter_SpotPrey_06.wav" + } +} + +// alert is sounded when spawned +"SpitterZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/alert/Spitter_Alert_01.wav" + "wave" "player/spitter/voice/alert/Spitter_Alert_02.wav" + + } +} + +// // Warning just before attacking +// "SpitterZombie.Warn" +// { + // "channel" "CHAN_VOICE" + // "volume" "1" + // "soundlevel" "SNDLVL_105dB" + // "pitch" "95, 105" + + //"GameData" + //{ + // "Priority" "Interesting" + //} + + // "rndwave" + // { + // //"wave" "player/spitter/voice/warn/Spitter_Warn_01.wav" + // //"wave" "player/spitter/voice/warn/Spitter_Warn_02.wav" + // //"wave" "player/spitter/voice/warn/Spitter_Warn_03.wav" + + // } +// } + +// Death +"SpitterZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "PITCH_NORM" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/die/Spitter_Death_01.wav" + "wave" "player/spitter/voice/die/Spitter_Death_02.wav" + + } +} +// //Death explode +// "SpitterZombie.Explode" +// { + // "channel" "CHAN_STATIC" + // "volume" "1" + // "soundlevel" "SNDLVL_115dB" + // "pitch" "PITCH_NORM" + + "GameData" + { + "Priority" "Interesting" + } + + // "rndwave" + // { + // "wave" "common/null.wav" + // //"wave" "player/spitter/Death/Spitter_explode_01.wav" + // //"wave" "player/spitter/Death/Spitter_explode_02.wav" + + // } +// } + +// +"SpitterZombie.Spit" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_125dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/spitter/voice/warn/Spitter_Spit_01.wav" + "wave" "player/spitter/voice/warn/Spitter_Spit_02.wav" + + } +} + +"SpitProjectile.Bounce" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "rndwave" + { + "wave" "player/spitter/spitter_miss_01.wav" + } +} + +"SpitterZombie.Acid" +{ + "channel" "CHAN_STATIC" + "volume" "0.75" + "soundlevel" "SNDLVL_85dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + "wave" "player/spitter/swarm/Spitter_Acid_loop_01.wav" + "wave" "player/spitter/swarm/Spitter_Acid_loop_02.wav" + + } +} + +"SpitterZombie.Acid.fadeout" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_130dB" + "pitch" "PITCH_NORM" + + "rndwave" + { + + "wave" "player/spitter/swarm/Spitter_acid_fadeout.wav" + "wave" "player/spitter/swarm/Spitter_acid_fadeout2.wav" + } +} + + +// ---------------------------------------------------------- + +// ---------------------------------------------------------- +// Jockey Zombie +// ---------------------------------------------------------- +// random vocalizations +"JockeyZombie.Voice" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/jockey/voice/idle/jockey_lurk01.wav" + "wave" "player/jockey/voice/idle/jockey_lurk03.wav" + "wave" "player/jockey/voice/idle/jockey_lurk04.wav" + "wave" "player/jockey/voice/idle/jockey_lurk05.wav" + "wave" "player/jockey/voice/idle/jockey_lurk06.wav" + "wave" "player/jockey/voice/idle/jockey_lurk07.wav" + "wave" "player/jockey/voice/idle/jockey_lurk09.wav" + "wave" "player/jockey/voice/idle/jockey_lurk11.wav" + + } +} + +// growl, no target established +"JockeyZombie.Growl" +{ + "channel" "CHAN_BODY" + "volume" "1" + "soundlevel" "SNDLVL_85dB" + "pitch" "90, 105" + + "GameData" + { + "Priority" "Interesting" + } + + + "rndwave" + { + "wave" "player/jockey/voice/idle/jockey_lurk01.wav" + "wave" "player/jockey/voice/idle/jockey_lurk03.wav" + "wave" "player/jockey/voice/idle/jockey_lurk04.wav" + "wave" "player/jockey/voice/idle/jockey_lurk05.wav" + "wave" "player/jockey/voice/idle/jockey_lurk06.wav" + "wave" "player/jockey/voice/idle/jockey_lurk07.wav" + "wave" "player/jockey/voice/idle/jockey_lurk09.wav" + "wave" "player/jockey/voice/idle/jockey_lurk11.wav" + } +} + + +// Kitty's been hurt +"JockeyZombie.Pain" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + + "rndwave" + { + "wave" "player/jockey/voice/pain/jockey_Pain01.wav" + "wave" "player/jockey/voice/pain/jockey_Pain02.wav" + "wave" "player/jockey/voice/pain/jockey_Pain03.wav" + "wave" "player/jockey/voice/pain/jockey_Pain04.wav" + "wave" "player/jockey/voice/pain/jockey_Pain05.wav" + "wave" "player/jockey/voice/pain/jockey_Pain06.wav" + "wave" "player/jockey/voice/pain/jockey_Pain07.wav" + "wave" "player/jockey/voice/pain/jockey_Pain08.wav" + + } +} + +// Kitty's been hurt +"JockeyZombie.PainShort" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Interesting" + } + + + "rndwave" + { + + "wave" "player/jockey/voice/pain/jockey_PainShort01.wav" + "wave" "player/jockey/voice/pain/jockey_PainShort02.wav" + "wave" "player/jockey/voice/pain/jockey_PainShort03.wav" + "wave" "player/jockey/voice/pain/jockey_PainShort04.wav" + "wave" "player/jockey/voice/pain/jockey_PainShort05.wav" + + } +} + + + +// Jockey Death Sounds + +"JockeyZombie.Death" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_75dB" + "pitch" "95, 105" + + + "rndwave" + { + "wave" "player/jockey/voice/death/jockey_death01.wav" + "wave" "player/jockey/voice/death/jockey_death02.wav" + "wave" "player/jockey/voice/death/jockey_death03.wav" + "wave" "player/jockey/voice/death/jockey_death04.wav" + "wave" "player/jockey/voice/death/jockey_death05.wav" + "wave" "player/jockey/voice/death/jockey_death06.wav" + } +} + +// alert +// let everyone know I'm here +"JockeyZombie.Alert" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + + "GameData" + { + "Priority" "Critical" + } + + + + "rndwave" + { + "wave" "player/jockey/voice/alert/jockey_02.wav" + "wave" "player/jockey/voice/alert/jockey_04.wav" + } +} + +// warning +// crouched and ready to pounce +"JockeyZombie.Warn" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + + + // "wave" "player/jockey/voice/warn/jockey_Warn_08.wav" + "wave" "player/jockey/voice/warn/jockey_06.wav" + "wave" "player/jockey/voice/warn/jockey_08.wav" + + } +} + +// recognize, sees prety +"JockeyZombie.Recognize" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_105dB" + + "GameData" + { + "Priority" "Interesting" + } + + "rndwave" + { + "wave" "player/jockey/voice/idle/Jockey_Recognize02.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize06.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize07.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize08.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize09.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize10.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize11.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize12.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize13.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize15.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize16.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize17.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize18.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize19.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize20.wav" + "wave" "player/jockey/voice/idle/Jockey_Recognize24.wav" + + } +} + +// will go in the game +"JockeyZombie.Pounce" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + + "rndwave" + { + // "wave" "player/jockey/voice/attack/jockey_AttackMix_01.wav" + "wave" "player/jockey/voice/attack/jockey_loudattack01_wet.wav" + } +} + + +// do we need this? +// "JockeyZombie.Pounce.Miss" +// { + // "channel" "CHAN_BODY" + // "volume" "1" + // "soundlevel" "SNDLVL_75dB" + // "pitch" "95, 105" + + // "rndwave" + // { + + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_01.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_02.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_03.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_04.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_05.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_06.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_07.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_08.wav" + // "wave" "player/jockey/voice/miss/jockey_PounceMiss_09.wav" + // } + +// } +// shredding victim during attack +"JockeyZombie.Ride" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_95dB" + "pitch" "95, 105" + + "GameData" + { + "Priority" "Critical" + } + + "rndwave" + { + "wave" "player/jockey/voice/attack/Jockey_AttackLoop01.wav" + "wave" "player/jockey/voice/attack/Jockey_AttackLoop02.wav" + "wave" "player/jockey/voice/attack/Jockey_AttackLoop03.wav" + "wave" "player/jockey/voice/attack/Jockey_AttackLoop04.wav" + } + +} + diff --git a/gamemodes/tf/gamemode/contents/l4d2_game_sounds_music.lua b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_music.lua new file mode 100644 index 000000000..41ceff8c6 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_music.lua @@ -0,0 +1,8966 @@ +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// Events +// +"Event.MissionStart_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/NoHopeInHell.wav" + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "checkpoint" + } +} + +"Event.MissionStart_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/SouthOfHuman.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Mall" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "108.197" + } + } +} +"Event.MissionStart_BaseLoop_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.MissionStart_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/DeathIsACarousel.wav" + // "wave" "common/null.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Fairgrounds" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "80.156" + } + } +} +"Event.MissionStart_BaseLoop_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + + +"Event.MissionStart_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/DiedOnTheBayou.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Plankcountry" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "78.347" + } + } +} +"Event.MissionStart_BaseLoop_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} +"Event.MissionStart_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/OSweetDeath.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Milltown" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "74.338" + } + } +} +"Event.MissionStart_BaseLoop_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} +"Event.MissionStart_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/DeadEasy.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_BigEasy" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "91.555" + } + } +} +"Event.MissionStart_BaseLoop_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// checkpoints +// -------------------------------------------------------------------- + +"Event.CheckPointIntro_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Mall" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.CheckPointIntro_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Fairgrounds" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.CheckPointIntro_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Plankcountry" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.CheckPointIntro_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Milltown" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} +"Event.CheckPointIntro_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_BigEasy" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} +// -------------------------------------------------------------------- +// when you first leave a checkpoint +"Event.LeavingSafety_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.3" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "4.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} +"Event.LeavingSafety_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" //"0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/MallGermM1a.wav" + "wave" "#music/mob/MallGermS1a.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} +"Event.LeavingSafety_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/FairgroundGermM1a.wav" + "wave" "#music/mob/FairgroundGermM1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +"Event.LeavingSafety_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/PlankGermS1a.wav" + "wave" "#music/mob/PlankGermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +"Event.LeavingSafety_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" //"0.6, 0.6" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/MilltownGermM1a.wav" + "wave" "#music/mob/MilltownGermM1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} +"Event.LeavingSafety_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/EasyGermX1a.wav" + "wave" "#music/mob/EasyGermX1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +// -------------------------------------------------------------------- +// starting atmosphere after leaving checkpoint +"Event.StartAtmosphere_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +"Event.StartAtmosphere_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +"Event.StartAtmosphere_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} +"Event.StartAtmosphere_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} +"Event.StartAtmosphere_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} +"Event.StartAtmosphere_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + + +// -------------------------------------------------------------------- +// zombat music +// -------------------------------------------------------------------- +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_1" + "MusicPriority" "CRITICAL" + } +} +// swapped for new, check A/D V.S. B/C +"Event.Zombat_1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums01c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_1" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums01b.wav" + "wave" "#music/zombat/horde/Drums01d.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_1" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums01c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_1" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +//-------------------------------------------------------------------- +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_2" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_2" + "MusicPriority" "CRITICAL" + } +} +// swapped out for new 2 C and D +"Event.Zombat_2" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/drums02c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_2" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_2" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/drums02d.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_2" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_B_2" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/drums02c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_2" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} + +//-------------------------------------------------------------------- +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_3" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_3" + "MusicPriority" "CRITICAL" + } +} +"Event.Zombat_3" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums3c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_3" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_A_3" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums3d.wav" + "wave" "#music/zombat/horde/Drums3f.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_3" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_3" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums3c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_3" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + + "MusicTagDelay" "7" + } +} + + + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_4" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_4" + "MusicPriority" "CRITICAL" + } +} +// only b + c from old are ok, +"Event.Zombat_4" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/horde/Drums03a.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_4" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_4" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums03b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_4" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_4" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums03a.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_4" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +//-------------------------------------------------------------------- + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_5" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_5" + "MusicPriority" "CRITICAL" + } +} +// new ones no good, don't add +"Event.Zombat_5" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums5b.wav" + "wave" "#music/zombat/horde/Drums5d.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_5" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_5" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums5c.wav" + "wave" "#music/zombat/horde/Drums5e.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_5" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_B_5" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/horde/Drums5b.wav" + "wave" "#music/zombat/horde/Drums5d.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_5" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_6" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_6" + "MusicPriority" "CRITICAL" + } +} +// NONE OF THE 6s are good find something else +"Event.Zombat_6" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums08a.wav" + "wave" "#music/zombat/horde/Drums08b.wav" + } + + GameData + { + "MusicAutoQueue" "Event.Zombat_A_6" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +"Event.Zombat_A_6" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums08e.wav" + "wave" "#music/zombat/horde/Drums08f.wav" + } + + GameData + { + "MusicAutoQueue" "Event.Zombat_B_6" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +"Event.Zombat_B_6" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums08a.wav" + "wave" "#music/zombat/horde/Drums08b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_6" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} + +//-------------------------------------------------------------------- + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_7" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_7" + "MusicPriority" "CRITICAL" + } +} +// new ones no good, using existing +"Event.Zombat_7" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums7a.wav" + "wave" "#music/zombat/horde/Drums7c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_7" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_A_7" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/horde/Drums7b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_7" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_B_7" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums7a.wav" + "wave" "#music/zombat/horde/Drums7c.wav" + + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_7" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} + +//-------------------------------------------------------------------- + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_8" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_8" + "MusicPriority" "CRITICAL" + } +} +// only b + c from old are ok, +"Event.Zombat_8" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/horde/Drums8b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_8" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_8" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums8c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_8" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_8" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums8b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_8" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_9" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_9" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat_9" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/horde/Drums09c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_9" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_9" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums09d.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_9" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_9" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums09c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_9" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_10" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_10" + "MusicPriority" "CRITICAL" + } +} +// only b + c from old are ok, +"Event.Zombat_10" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/horde/Drums10b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_10" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_10" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums10c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_10" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_10" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums10b.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_10" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +"Event.Zombat_Intro_11" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_11" + "MusicPriority" "CRITICAL" + } +} +// only b + c from old are ok, +"Event.Zombat_11" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums11c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_11" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} +"Event.Zombat_A_11" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums11d.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_11" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_11" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/horde/Drums11c.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_11" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" + } +} + + + + + + + +// old 4a b c but deleted + +// new 09c,d, b(alt) = good +// 10 b c +// 11 c d + + +// -------------------------------------------------------------------- +// Survival +// -------------------------------------------------------------------- +"Event.Zombat2_Intro_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + GameData + { + "MusicTrack" "zombat2c" + "MusicTagIndex" "0" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +// ------------------------------------------------------------------------------------------- +// Danger +// ------------------------------------------------------------------------------------------- +"Event.Zombat3_Intro_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_coldstream" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +// -------------------------------------------------------------------- +// C1 Mall +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/banjo/banjo_01a_02.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_03.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_04.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_05.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_06.wav" + "wave" "#music/zombat/danger/banjo/banjo_01b_01.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01b_02.wav" + "wave" "#music/zombat/danger/banjo/banjo_01b_03.wav" + "wave" "#music/zombat/danger/banjo/banjo_01b_04.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_01.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_02.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_03.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_04.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_05.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_06.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Mall" + "MusicTrack" "zombat3" + "MusicTagDelay" "1, 7" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_A_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/banjo/banjo_02_01.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_02.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_03.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_04.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_05.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_06.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_07.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_08.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_09.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_10.wav" + // "wave" "#music/zombat/danger/banjo/banjo_02_11.wav" + // "wave" "#music/zombat/danger/banjo/banjo_02_12.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_13.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_14.wav" + "wave" "#music/zombat/danger/banjo/banjo_02_15.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_01.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_02.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_03.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_04.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_05.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_06.wav" + // "wave" "#music/zombat/danger/banjo/banjo_03_07.wav" + } + + + GameData + { + "MusicAutoQueue" "Event.Zombat3_B_Mall" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicTagDelay" "1, 7" + } +} +"Event.Zombat3_B_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/banjo/banjo_01a_02.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_03.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_04.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_05.wav" + "wave" "#music/zombat/danger/banjo/banjo_01a_06.wav" + "wave" "#music/zombat/danger/banjo/banjo_01b_01.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01b_02.wav" + "wave" "#music/zombat/danger/banjo/banjo_01b_03.wav" + "wave" "#music/zombat/danger/banjo/banjo_01b_04.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_01.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_02.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_03.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_04.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_05.wav" + // "wave" "#music/zombat/danger/banjo/banjo_01c_06.wav" + } + + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Mall" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicTagDelay" "1, 7" + "MusicPriority" "CRITICAL" + } +} + + + +// // -------------------------------------------------------------------- +// // A2 Fairgrounds +// // -------------------------------------------------------------------- +"Event.Zombat_Intro_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_Fairgrounds" + "MusicPriority" "CRITICAL" + } +} +"Event.Zombat_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/Snare_Horde_01_01a.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_Fairgrounds" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + "MusicMasterTags" + { + "tag1" "1.033" + "tag2" "2.806" + "tag3" "5.647" + } + } +} +"Event.Zombat_A_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Snare_Horde_01_01a.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_Fairgrounds" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + "MusicMasterTags" + { + "tag1" "1.033" + "tag2" "2.806" + "tag3" "5.647" + } + } +} +"Event.Zombat_B_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + // "wave" "#music/zombat/Horde_01.wav" + // "wave" "#music/zombat/Horde_02.wav" + "wave" "#music/zombat/Snare_Horde_01_01b.wav" +// "wave" "#music/zombat/Horde_03.wav" + // "wave" "#music/zombat/Horde_04.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_Fairgrounds" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + "MusicMasterTags" + { + "tag1" "1.033" + "tag2" "2.806" + "tag3" "5.647" + } + } +} + +// -------------------------------------------------------------------- +// C2 Slayer +// -------------------------------------------------------------------- +"Event.Zombat2_Intro_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Fairgrounds" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_01.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_02.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_03.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_04.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_05.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_06.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_07.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_08.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_09.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_10.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_11.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_12.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_13.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_14.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_15.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_16.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_17.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_18.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_19.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_20.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_21.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_22.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_23.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_24.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_25.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_26.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_27.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_28.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_29.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_30.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_31.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_32.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_33.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Fairgrounds" + "MusicTrack" "zombat3" + "MusicTagDelay" "1, 7" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_A_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/saw/Saw_Danger_02_01.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_02.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_03.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_04.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_05.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_06.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_07.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_08.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_09.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_10.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_11.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_12.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_13.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_14.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_15.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_16.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_17.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_18.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_19.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_20.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_21.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_22.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_23.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_24.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_25.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_26.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_27.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_28.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_29.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_30.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_31.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_32.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_33.wav" + } + + + GameData + { + "MusicAutoQueue" "Event.Zombat3_B_Fairgrounds" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" +// "MusicMasterDivTags" "1.0" +// "MusicTagDelay" "1, 1" + "MusicTagDelay" "1, 7" +// "MusicTagDelayMult" "2" + } +} +"Event.Zombat3_B_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_01.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_02.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_03.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_04.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_05.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_06.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_07.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_08.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_09.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_10.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_11.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_12.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_13.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_14.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_15.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_16.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_17.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_18.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_19.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_20.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_21.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_22.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_23.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_24.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_25.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_26.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_27.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_28.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_29.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_30.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_31.wav" + "wave" "#music/zombat/danger/saw/Saw_Danger_02_32.wav" +// "wave" "#music/zombat/danger/saw/Saw_Danger_02_33.wav" + + } + + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Fairgrounds" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" +// "MusicTagDelay" "1, 1" + "MusicTagDelay" "1, 7" +// "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" +// "MusicMasterDivTags" "1.0" + } +} + + +// // -------------------------------------------------------------------- + +// "Event.Zombat3_Intro_Fairgrounds" +// { +// "channel" "CHAN_STATIC" +// "volume" "1.0" +// "soundlevel" "SNDLVL_NONE" + +// "rndwave" +// { +// "wave" "#music/zombat/danger/HordeDanger_01.wav" +// // "wave" "#music/zombat/danger/HordeDanger_02.wav" +// // "wave" "#music/zombat/danger/HordeDanger_03.wav" +// // "wave" "#music/zombat/danger/HordeDanger_04.wav" + +// } +// GameData +// { +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicPriority" "HIGH" +// } +// } + + +// -------------------------------------------------------------------- +// C3 Plankcountry +// drums +// -------------------------------------------------------------------- +"Event.Zombat_Intro_PlankCountry" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_PlankCountry" + "MusicPriority" "CRITICAL" + } +} +"Event.Zombat_PlankCountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + + "wave" "#music/zombat/Snare_Horde_01_01a.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_PlankCountry" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + "MusicMasterTags" + { + "tag1" "1.033" + "tag2" "2.806" + "tag3" "5.647" + } + } +} +"Event.Zombat_A_PlankCountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Snare_Horde_01_01a.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_PlankCountry" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + "MusicMasterTags" + { + "tag1" "1.033" + "tag2" "2.806" + "tag3" "5.647" + } + } +} +"Event.Zombat_B_PlankCountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + // "wave" "#music/zombat/Horde_01.wav" + // "wave" "#music/zombat/Horde_02.wav" + "wave" "#music/zombat/Snare_Horde_01_01b.wav" +// "wave" "#music/zombat/Horde_03.wav" + // "wave" "#music/zombat/Horde_04.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_PlankCountry" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + "MusicMasterTags" + { + "tag1" "1.033" + "tag2" "2.806" + "tag3" "5.647" + } + } +} + +// -------------------------------------------------------------------- +// Plankcountry +// Slayer music +// -------------------------------------------------------------------- +"Event.Zombat2_Intro_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Plankcountry" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.92" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/deviddle/deviddle_41.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_42.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_43.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_44.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_45.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_46.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_47.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_48.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_49.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_50.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_51.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_52.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_53.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_54.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_55.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_56.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_57.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_58.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_59.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_60.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_61.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_62.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_63.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_64.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_65.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_66.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_67.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_68.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_69.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_70.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_71.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_72.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_73.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_74.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_75.wav" + + } + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Plankcountry" + "MusicTrack" "zombat3" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_A_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.92" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/deviddle/deviddle_01.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_02.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_03.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_04.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_05.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_06.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_07.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_08.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_09.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_10.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_11.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_12.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_13.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_14.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_15.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_16.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_17.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_18.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_19.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_20.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_21.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_22.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_23.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_24.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_25.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_26.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_27.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_28.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_29.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_30.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_31.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_32.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_33.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_34.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_35.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_36.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_37.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_38.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_39.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_40.wav" + + + } + + + GameData + { + "MusicAutoQueue" "Event.Zombat3_B_Plankcountry" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" +// "MusicMasterDivTags" "1.0" +// "MusicTagDelay" "1, 1" + "MusicTagDelay" "1, 3" +// "MusicTagDelayMult" "2" + } +} +"Event.Zombat3_B_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.92" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/deviddle/deviddle_41.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_42.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_43.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_44.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_45.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_46.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_47.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_48.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_49.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_50.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_51.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_52.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_53.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_54.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_55.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_56.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_57.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_58.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_59.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_60.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_61.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_62.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_63.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_64.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_65.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_66.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_67.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_68.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_69.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_70.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_71.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_72.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_73.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_74.wav" + "wave" "#music/zombat/danger/deviddle/deviddle_75.wav" + } + + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Plankcountry" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" +// "MusicTagDelay" "1, 1" + "MusicTagDelay" "1, 3" +// "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" +// "MusicMasterDivTags" "1.0" + } +} +// "Event.Zombat3_Intro_Plankcountry" +// { +// "channel" "CHAN_STATIC" +// "volume" "1.0" +// "soundlevel" "SNDLVL_NONE" + +// "rndwave" +// { +// "wave" "#music/zombat/danger/HordeDanger_01.wav" +// // "wave" "#music/zombat/danger/HordeDanger_02.wav" +// // "wave" "#music/zombat/danger/HordeDanger_03.wav" +// // "wave" "#music/zombat/danger/HordeDanger_04.wav" + +// } +// GameData +// { +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicPriority" "HIGH" +// } +// } + +// -------------------------------------------------------------------- +// A2 Milltown +// -------------------------------------------------------------------- +// -------------------------------------------------------------------- +"Event.Zombat2_Intro_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Milltown" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_01.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_02.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_03.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_04.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_05.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_06.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_07.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_08.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_09.wav" +// // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_10.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_11.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_12.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_13.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_14.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_15.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_16.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_17.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_18.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_19.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_20.wav" + + + + "wave" "#music/zombat/danger/dobro/dobro_04_01.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_02.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_03.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_04.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_05.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_06.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_07.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_08.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_09.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_10.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_11.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_12.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_13.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_14.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_15.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_16.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_17.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_18.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_19.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_20.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_21.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Milltown" + "MusicTrack" "zombat3" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_A_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_01.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_02.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_03.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_04.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_05.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_06.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_07.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_08.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_09.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_10.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_11.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_12.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_13.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_14.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_15.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_16.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_17.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_18.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_19.wav" + "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_20.wav" + + + + // // "wave" "#music/zombat/danger/dobro/dobro_04_01.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_02.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_03.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_04.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_05.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_06.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_07.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_08.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_09.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_10.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_11.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_12.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_13.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_14.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_15.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_16.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_17.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_18.wav" + // // "wave" "#music/zombat/danger/dobro/dobro_04_19.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_20.wav" + // "wave" "#music/zombat/danger/dobro/dobro_04_21.wav" + } + + + GameData + { + "MusicAutoQueue" "Event.Zombat3_B_Milltown" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" +// "MusicMasterDivTags" "1.0" +// "MusicTagDelay" "1, 1" + "MusicTagDelay" "1, 7" +// "MusicTagDelayMult" "2" + } +} +"Event.Zombat3_B_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_01.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_02.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_03.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_04.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_05.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_06.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_07.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_08.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_09.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_10.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_11.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_12.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_13.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_14.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_15.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_16.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_17.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_18.wav" + // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_19.wav" + // // "wave" "#music/zombat/danger/dobro/Dobro_Danger_02_20.wav" + + "wave" "#music/zombat/danger/dobro/dobro_04_01.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_02.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_03.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_04.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_05.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_06.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_07.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_08.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_09.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_10.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_11.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_12.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_13.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_14.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_15.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_16.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_17.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_18.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_19.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_20.wav" + "wave" "#music/zombat/danger/dobro/dobro_04_21.wav" + + + } + + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_Milltown" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" +// "MusicTagDelay" "1, 1" + "MusicTagDelay" "1, 3" +// "MusicTagIndex" "2" + "MusicPriority" "CRITICAL" +// "MusicMasterDivTags" "1.0" + } +} +// "Event.Zombat3_Intro_Milltown" +// { +// "channel" "CHAN_STATIC" +// "volume" "1.0" +// "soundlevel" "SNDLVL_NONE" + +// "rndwave" +// { +// "wave" "#music/zombat/danger/HordeDanger_01.wav" +// // "wave" "#music/zombat/danger/HordeDanger_02.wav" +// // "wave" "#music/zombat/danger/HordeDanger_03.wav" +// // "wave" "#music/zombat/danger/HordeDanger_04.wav" + +// } +// GameData +// { +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicPriority" "HIGH" +// } +// } + +// -------------------------------------------------------------------- +// C5 BigEasy +// -------------------------------------------------------------------- + + +// -------------------------------------------------------------------- +// slayer +// -------------------------------------------------------------------- +"Event.Zombat2_Intro_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Plankcountry" + "MusicTrack" "zombat2" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + "MusicPriority" "CRITICAL" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_01.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_02.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_03.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_04.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_05.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_06.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_07.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_08.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_09.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_10.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_11.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_12.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_13.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_14.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_15.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_BigEasy" + "MusicTrack" "zombat3" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_A_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_01.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_02.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_03.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_04.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_05.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_06.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_07.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_08.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_09.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_10.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_11.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_12.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_13.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_14.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_15.wav" + } + + + GameData + { + "MusicAutoQueue" "Event.Zombat3_B_BigEasy" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicTagDelay" "1, 3" + } +} +"Event.Zombat3_B_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_01.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_02.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_03.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_04.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_05.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_06.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_07.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_08.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_09.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_10.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_11.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_12.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_13.wav" + "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_14.wav" +// "wave" "#music/zombat/danger/trumpet/Trumpet_Danger_02_15.wav" + } + + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_BigEasy" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicTagDelay" "1, 3" + "MusicPriority" "CRITICAL" + } +} + +// // -------------------------------------------------------------------- +// // A2 Clown +// // -------------------------------------------------------------------- +// "Event.Zombat2_Intro_Clown" +// { + // "channel" "CHAN_STATIC" + // "volume" "0.9" + // "soundlevel" "SNDLVL_NONE" + + // // "rndwave" + // // { + // "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // // } + + + // GameData + // { + // // "MusicAutoQueue" "Event.Zombat_A2B_Fairgrounds" + // "MusicTrack" "zombat2c" + // "MusicPriority" "CRITICAL" + // "MusicTagTrack" "zombat" + // "MusicTagIndex" "0" + // // "MusicMasterDivTags" "8.0" + // } +// } + +"Event.Zombat3_Intro_Clown" +{ + "channel" "CHAN_STATIC" + "volume" "0.84" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/not_a_laughing_matter.wav" + + + GameData + { + "MusicTrack" "zombat3" + // "MusicTagTrack" "zombat" + // "MusicAutoQueue" "Event.Zombat3_A_Clown" + "MusicPriority" "CRITICAL" + } +} +// "Event.Zombat3_A_Clown" +// { + // "channel" "CHAN_STATIC" + // "volume" "1.0" + // "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + + // "wave" "#music/zombat/danger/not_a_laughing_matter.wav" + // } + // GameData + // { + // // "MusicAutoQueue" "Event.Zombat3_B_Clown" + // "MusicTagTrack" "zombat" + // "MusicTrack" "zombat3" + // "MusicPriority" "CRITICAL" + // // "MusicTagDelay" "15" + + // "MusicTagDelay" "15" + // // "MusicMasterDivTags" "8.0" + // } +// } +// "Event.Zombat3_B_Clown" +// { + // "channel" "CHAN_STATIC" + // "volume" "1.0" + // "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + + // "wave" "#music/zombat/danger/not_a_laughing_matter.wav" + // } + // GameData + // { + // "MusicAutoQueue" "Event.Zombat3_A_Clown" + // "MusicTagTrack" "zombat" + // "MusicTrack" "zombat3" + // "MusicPriority" "CRITICAL" + // "MusicTagDelay" "15" + // // "MusicMasterDivTags" "8.0" + // } +// } + + +///////////////////////////////// DEATH!! ////////////////////////// + +// DEATH +// +// There are many kinds of deaths, each specific to how you are dying. +// + +// ledge hang +// for dying by falling, each successive cue should segue into the next +"Event.LedgeHangTwoHands" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/ClingingToHell1.wav" + + GameData + { + "MusicTrack" "ledge" + "MusicPriority" "CRITICAL" + "MusicDuckTrackList" "all" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicMaster" "PLAY_SPLIT" + } +} + +"Event.LedgeHangOneHand" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/ClingingToHell2.wav" + + GameData + { + "MusicTrack" "ledge" + "MusicPriority" "CRITICAL" + "MusicDuckTrackList" "all" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicMaster" "PLAY_SPLIT" + } +} + +"Event.LedgeHangFingers" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/ClingingToHell3.wav" + + GameData + { + "MusicDuckTrackList" "all" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicTrack" "ledge" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} + +// This cue starts exactly 10 seconds before falling as the health meter clicks down. +"Event.LedgeHangAboutToFall" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/terror/ClingingToHell4.wav" + + GameData + { + "MusicDuckTrackList" "all" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicTrack" "ledge" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + + } +} +"Event.LedgeHangFalling" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + "wave" "common/null.wav" + + GameData + { + "MusicDuckTrackList" "all" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicTrack" "ledge" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} + +// Hits +"Event.LedgeHangTwoHandsHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + + "wave" "music/tags/ClingingToHellHit1.wav" + + GameData + { + "MusicTrack" "ledgeHits" + "MusicPriority" "CRITICAL" + } +} + +"Event.LedgeHangOneHandHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + + "wave" "music/tags/ClingingToHellHit2.wav" + + GameData + { + "MusicTrack" "ledgeHits" + "MusicPriority" "CRITICAL" + } +} + +"Event.LedgeHangFingersHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + + "wave" "music/tags/ClingingToHellHit3.wav" + + GameData + { + "MusicTrack" "ledgeHits" + "MusicPriority" "CRITICAL" + } +} + +// This cue starts exactly 10 seconds before falling as the health meter clicks down. +"Event.LedgeHangAboutToFallHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + +// "wave" "common/null.wav" + "wave" "music/tags/ClingingToHellHit4.wav" + + GameData + { + "MusicTrack" "ledgeHits" + "MusicPriority" "CRITICAL" + } +} + +// Down +// Survivor is down and being beaten by infected +"Event.Down" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/PuddleOfYou.wav" + + GameData + { + "MusicTrack" "down" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +// Down +// Survivor is down and being beaten by infected +"Event.DownHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/PuddleOfYouHit.wav" + + GameData + { + "MusicTrack" "downHits" + "MusicPriority" "CRITICAL" + } +} + +// BleedingOut +// This cue starts exactly 10 seconds before death as the health meter clicks down. +"Event.BleedingOut" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/IAmSoCold.wav" + + GameData + { + "MusicTrack" "down" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + + } +} +// This cue starts exactly 10 seconds before death as the health meter clicks down. +"Event.BleedingOutHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/IAmSoColdHit.wav" + + GameData + { + "MusicTrack" "downHits" + "MusicPriority" "CRITICAL" + } +} + +// This cue starts exactly 10 seconds before death as the health meter clicks down. +"Event.BleedingOutEnd" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/TheEnd.wav" + +// "wave" "common/null.wav" + + + GameData + { + "MusicTrack" "down" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_SPLIT" + + } +} + +// Survivor death +// This is for the death of an individual survivor to be played after the health meter has reached zero +"Event.SurvivorDeath" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/undeath/LeftForDeath.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH" +// Originaly it was changed from "PLAY_SPLIT" to "PLAY_SPLIT | DONT_DISENGAGE" in order to fix the bug where this cue wouldn't play if you were spectating on someone +// This resulted in the cue playing for Infected players after killing one of the survivors alongside making any other sound playing quieter. Changing it back to "PLAY_SPLIT" fixes it + "MusicMaster" "PLAY_SPLIT" + + } +} + +"Event.SurvivorDeathHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "#music/tags/LeftForDeathHit.wav" + + GameData + { + "MusicTrack" "deathHits" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH" + } +} + +"Event.ScenarioLose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/undeath/Death.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} + + +///////////////////////////////// Finale!! ////////////////////////// +// +// FINALE +// + +"Event.FinaleStart" +{ + "channel" "CHAN_STATIC" + "volume" "0.83" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/the_end/YourOwnFuneral.wav" + + GameData + { + "MusicTrack" "finaleStart" + "MusicPriority" "HIGH" + } +} + + +"Event.FinaleWave4" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/the_end/FinalNail.wav" + GameData + { + "MusicTrack" "default" + "MusicPriority" "HIGH" + } +} + +"Event.SurvivalStart" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/the_end/SnowballInHell.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "HIGH" + } +} + +// Final battle +// For the final battle before getting rescued"Event.FinalBattle" +"Event.FinalBattle" +{ + "channel" "CHAN_STATIC" + "volume" "0.88" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/the_end/SkinOnOurTeeth.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "HIGH" + "MusicFadeOut" "2.0" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient, tank" + "MusicStopTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient, tank" + + } +} + + +///////////////////////////////// Scenario finish!! ////////////////////////// +"Event.ScenarioWin" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/unalive/TheMonstersWithin.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} +"Event.SafeRoom" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/safe/TheMonstersWithout.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} + +///////////////////////////////// Scavenge Mode!! ////////////////////////// +"Event.ScavengeRoundStart" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/mob/GermS1a.wav" + + + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicFadeOut" "1.0" + } +} +"Event.ScavengeRoundHalftime" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/safe/TheMonstersWithout.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} +"Event.ScavengeRoundEnd" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/safe/TheMonstersWithout_s.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} +"Event.ApproachingScavengeRoundWin" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/scavenge/gascanofvictory.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "HIGH" + "MusicFadeOut" "2.0" + } +} +"Event.ScavengeOvertimeStart" +{ + "channel" "CHAN_STATIC" + "volume" "0.95" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/terror/ClingingToHell1.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "MEDIUM" + "MusicFadeOut" "2.0" + } +} +"Event.ScavengeOvertimeEnd" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat" + "MusicPriority" "CRITICAL" + } +} + +// level stuff +"Event.ScavengeLevel_01" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_01_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_02" +{ + "channel" "CHAN_STATIC" + "volume" "0.97" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_02_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_03" +{ + "channel" "CHAN_STATIC" + "volume" "0.94" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_03_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_04" +{ + "channel" "CHAN_STATIC" + "volume" "0.91" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_04_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_05" +{ + "channel" "CHAN_STATIC" + "volume" "0.87" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_05_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_06" +{ + "channel" "CHAN_STATIC" + "volume" "0.80" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_06_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_07" +{ + "channel" "CHAN_STATIC" + "volume" "0.76" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_07_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_08" +{ + "channel" "CHAN_STATIC" + "volume" "0.72" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_08_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" + "MusicTagTrack" "scavengeLevel" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_09" +{ + "channel" "CHAN_STATIC" + "volume" "0.68" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_09_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" +// "MusicTagTrack" "scavengeLevel" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} +"Event.ScavengeLevel_10" +{ + "channel" "CHAN_STATIC" + "volume" "0.64" + "soundlevel" "SNDLVL_NONE" + + "wave" "#/music/scavenge/level_10_01.wav" + + GameData + { + "MusicTrack" "scavengeLevel" +// "MusicTagTrack" "scavengeLevel" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} + + +///////////////////////////////// Bosses!! ////////////////////////// + +// -------------------------------------------------------------------- +// TANKS +// -------------------------------------------------------------------- +"Event.Tank" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/Tank.wav" + + GameData + { + "MusicTrack" "tank" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicPriority" "CRITICAL" + } +} +// tank midpoint +// half way through the finale a tank shows up +"Event.TankMidpoint" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/Taank.wav" + + GameData + { + "MusicTrack" "tank" + "MusicPriority" "HIGH" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "concert1, concert2" + } +} + +// -------------------------------------------------------------------- +// See: game_sounds_music_lighthouse.txt +// -------------------------------------------------------------------- +//The Last Stand tank brothers music +//"Event.TankMidpoint_Metal" +//{ +// "channel" "CHAN_STATIC" +// "volume" "1.0" +// "soundlevel" "SNDLVL_NONE" +// "wave" "#music/tank/Tank_Metal.wav" + +// GameData +// { +// "MusicTrack" "tank" +// "MusicPriority" "HIGH" +// "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" +// "MusicStopTrackList" "concert1, concert2" +// } +//} + +// tank brothers +// Before the final zombie battle 2 tanks show up +"Event.TankBrothers" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/Taank.wav" + + GameData + { + "MusicTrack" "tank" + "MusicPriority" "HIGH" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "concert1, concert2" + } +} + +// tank midpoint +// half way through the finale a tank shows up +"C2M5.RidinTank1" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/MidNightTank.wav" + + GameData + { + "MusicTrack" "tank" + "MusicPriority" "HIGH" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "concert1, concert2" + } +} +"C2M5.RidinTank2" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/MidNightTank.wav" + + GameData + { + "MusicTrack" "tank2" + "MusicPriority" "HIGH" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "concert1, concert2" + } +} +// tank midpoint +// half way through the finale a tank shows up +"C2M5.BadManTank1" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/OneBadTank.wav" + + GameData + { + "MusicTrack" "tank" + "MusicPriority" "HIGH" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "concert1, concert2" + } +} +"C2M5.BadManTank2" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/tank/OneBadTank.wav" + + GameData + { + "MusicTrack" "tank2" + "MusicPriority" "HIGH" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "concert1, concert2" + } +} + + +// ---------------------------------------------- +// witch +// ---------------------------------------------- +"Event.WitchAttack" + { + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/witch/PsychoWitch.wav" + + GameData + { + "MusicDuckTrackList" "tank" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicTrack" "witch" + "MusicPriority" "CRITICAL" + } + +} +"Event.WitchBurning" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/witch/WitchRoast.wav" + + + GameData + { + "MusicDuckTrackList" "tank" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + + "MusicTrack" "witch" + "MusicPriority" "CRITICAL" + } + +} + +"Event.WitchRage" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "music/witch/WitchEncroacher.wav" + + GameData + { + "MusicTrack" "witch" + "MusicPriority" "CRITICAL" + } +} + +"Event.WitchDead" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "common/null.wav" + + GameData + { + "MusicTrack" "witch" + } +} + +"Event.WanderingWitch" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_145dB" + + "rndwave" + { + "wave" "music/witch/lost_little_witch_01a.wav" + "wave" "music/witch/lost_little_witch_01b.wav" + "wave" "music/witch/lost_little_witch_02a.wav" + "wave" "music/witch/lost_little_witch_02b.wav" + "wave" "music/witch/lost_little_witch_03a.wav" + "wave" "music/witch/lost_little_witch_03b.wav" + "wave" "music/witch/lost_little_witch_04a.wav" + "wave" "music/witch/lost_little_witch_04b.wav" + } + GameData + { + "MusicTrack" "witchChoir" + "MusicPriority" "CRITICAL" + "MusicFadeOut" "1.5" + + } +} +"Event.WanderingAngryWitch" +{ + "channel" "CHAN_STATIC" + "volume" "0.87" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "music/witch/LOUD_angry_little_witch_04.wav" + } + GameData + { + "MusicTrack" "witchChoir" + "MusicPriority" "CRITICAL" + "MusicFadeOut" "1.5" + } +} +"Event.WanderingAngryWitch2" +{ + "channel" "CHAN_STATIC" + "volume" "0.87" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "music/witch/LOUD_angry_little_witch_03.wav" +// "wave" "common/null.wav" + } + GameData + { + "MusicTrack" "witchChoir" + "MusicPriority" "CRITICAL" + "MusicFadeOut" "1.5" + } +} +"Event.WanderingAngryWitch3" +{ + "channel" "CHAN_STATIC" + "volume" "0.87" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "music/witch/LOUD_angry_little_witch_02.wav" +// "wave" "common/null.wav" + } + GameData + { + "MusicTrack" "witchChoir" + "MusicPriority" "CRITICAL" + "MusicFadeOut" "1.5" + } +} +"Event.WanderingAngryWitch4" +{ + "channel" "CHAN_STATIC" + "volume" "0.87" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "music/witch/LOUD_angry_little_witch_01.wav" + // "wave" "common/null.wav" + } + GameData + { + "MusicTrack" "witchChoir" + "MusicPriority" "CRITICAL" + "MusicFadeOut" "1.5" + } +} + +// -------------------------------------------------------------------- +// mobbed +// -------------------------------------------------------------------- +"Event.Mobbed" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/MobRules.wav" + + GameData + { + "MusicTrack" "mobRules" + "MusicDuckTrackList" "all" + + "MusicPriority" "HIGH" + } +} +// -------------------------------------------------------------------- +// Hunter Pounce +// While being torn apart by a hunter +// -------------------------------------------------------------------- +"Event.HunterPounce" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/pzattack/Exenteration.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +"Event.HunterHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/ExenterationHit.wav" + + GameData + { + "MusicTrack" "hunterHits" + "MusicPriority" "CRITICAL" + } +} + +// -------------------------------------------------------------------- +// SMOKER +// While being choked by a smoker +// -------------------------------------------------------------------- +"Event.SmokerChoke" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/pzattack/Asphyxiation.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +"Event.SmokerChokeHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "#music/tags/AsphyxiationHit.wav" + + GameData + { + "MusicTrack" "smokerHits" + "MusicPriority" "CRITICAL" + } +} + +"Event.SmokerDrag" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/TongueTied.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + } +} +"Event.SmokerDragHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/TongueTiedHit.wav" + + GameData + { + "MusicTrack" "smokerHits" + "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + "MusicParameters" "NO_INTENSITY_TRACK" + } +} + +// -------------------------------------------------------------------- +// Boomer +// -------------------------------------------------------------------- +"Event.VomitInTheFace" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/Pukricide.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "HIGH" + "MusicMaster" "PLAY_SPLIT" + } +} + +"Event.BoomerHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/PukricideHit.wav" + + GameData + { + "MusicTrack" "boomerHits" + "MusicPriority" "CRITICAL" + } +} + +// -------------------------------------------------------------------- +// Charger smash +// While being torn apart by a hunter +// -------------------------------------------------------------------- +"Event.ChargerSmash" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/pzattack/Contusion.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +"Event.ChargerHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/ContusionHit.wav" + + GameData + { + "MusicTrack" "chargerHits" + // "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + } +} +"Event.ChargerSlam" +{ + "channel" "CHAN_STATIC" + "volume" "0.79" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/pzattack/Mortification.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +"Event.ChargerSlamHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/MortificationHit.wav" + + GameData + { + "MusicTrack" "chargerSlamHits" + // "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + } +} +// -------------------------------------------------------------------- +// Jockey ride +// -------------------------------------------------------------------- +"Event.JockeyRide" +{ + "channel" "CHAN_STATIC" + "volume" "0.78" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/pzattack/Vassalation.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +"Event.JockeyHit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/VassalationHit.wav" + + GameData + { + "MusicTrack" "jockeyHits" + "MusicPriority" "CRITICAL" + } +} + +// -------------------------------------------------------------------- +// Spitter Spit +// -------------------------------------------------------------------- +"Event.SpitterSpit" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_80dB" + "wave" ")music/terror/PileOBile.wav" + + GameData + { + "MusicTrack" "spitterSpit" +// "MusicDuckTrackList" "all" + "MusicPriority" "CRITICAL" +// "MusicMaster" "PLAY_SPLIT" + } +} +"Event.SpitterBurn" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/pzattack/Enzymicide.wav" +// "wave" "common/null.wav" + + GameData + { + "MusicTrack" "PZAttack" + "MusicDuckTrackList" "all" + "MusicPriority" "HIGH" + "MusicMaster" "PLAY_SPLIT" + } +} + +// -------------------------------------------------------------------- +// Alerts +// -------------------------------------------------------------------- +// -------------------------------------------------------------------- +// Alerts +// -------------------------------------------------------------------- +"Event.BoomerAlertClose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "wave" "music/bacteria/BoomerBacteria.wav" + + GameData + { + "MusicTrack" "BoomerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.BoomerAlert" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_120dB" + "wave" "music/bacteria/BoomerBacteriaS.wav" + + GameData + { + "MusicTrack" "BoomerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.BoomerAlertFar" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_125dB" + "wave" "music/bacteria/BoomerBacteriaS.wav" + + GameData + { + "MusicTrack" "BoomerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.SmokerAlertClose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "wave" "music/bacteria/SmokerBacteria.wav" + + GameData + { + "MusicTrack" "SmokerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.SmokerAlert" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_120dB" + "wave" "music/bacteria/SmokerBacteriaS.wav" + + GameData + { + "MusicTrack" "SmokerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.SmokerAlertFar" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_125dB" + "wave" "music/bacteria/SmokerBacteriaS.wav" + + GameData + { + "MusicTrack" "SmokerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.HunterAlertClose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "wave" "music/bacteria/HunterBacteria.wav" + + GameData + { + "MusicTrack" "HunterAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.HunterAlert" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_115dB" + "wave" "music/bacteria/HunterBacteriaS.wav" + + GameData + { + "MusicTrack" "HunterAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.HunterAlertFar" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_120dB" + "wave" "music/bacteria/HunterBacteriaS.wav" + + GameData + { + "MusicTrack" "HunterAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.ChargerAlertClose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "wave" "music/bacteria/ChargerBacteria.wav" + + GameData + { + "MusicTrack" "ChargerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.ChargerAlert" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_115dB" + "wave" "music/bacteria/ChargerBacteriaS.wav" + + GameData + { + "MusicTrack" "ChargerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.ChargerAlertFar" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_120dB" + "wave" "music/bacteria/ChargerBacteriaS.wav" + + GameData + { + "MusicTrack" "ChargerAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.SpitterAlertClose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "wave" "music/bacteria/SpitterBacteria.wav" + + GameData + { + "MusicTrack" "SpitterAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.SpitterAlert" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_115dB" + "wave" "music/bacteria/SpitterBacteriaS.wav" + + GameData + { + "MusicTrack" "SpitterAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.SpitterAlertFar" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_120dB" + "wave" "music/bacteria/SpitterBacteriaS.wav" + + GameData + { + "MusicTrack" "SpitterAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.JockeyAlertClose" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_110dB" + "wave" "music/bacteria/JockeyBacteria.wav" + + GameData + { + "MusicTrack" "JockeyAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.JockeyAlert" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_115dB" + "wave" "music/bacteria/JockeyBacteriaS.wav" + + GameData + { + "MusicTrack" "JockeyAlert" + "MusicPriority" "CRITICAL" + } +} +"Event.JockeyAlertFar" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_120dB" + "wave" "music/bacteria/JockeyBacteriaS.wav" + + GameData + { + "MusicTrack" "JockeyAlert" + "MusicPriority" "CRITICAL" + } +} + +///////////////////////////////// Zombies!! ////////////////////////// +// L4D2 +// BigEasy +// S +"Event.MobSignal1_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/MallGermS1a.wav" + "wave" "#music/mob/MallGermS1b.wav" + "wave" "#music/mob/MallGermL1a.wav" + "wave" "#music/mob/MallGermL1b.wav" + "wave" "#music/mob/MallGermL1c.wav" + "wave" "#music/mob/MallGermM1a.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/MallGermS2a.wav" + "wave" "#music/mob/MallGermS2b.wav" + "wave" "#music/mob/MallGermM2a.wav" + "wave" "#music/mob/MallGermM2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal1_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.55" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/FairgroundGermX1a.wav" + "wave" "#music/mob/FairgroundGermX1b.wav" + "wave" "#music/mob/FairgroundGermL1a.wav" + "wave" "#music/mob/FairgroundGermL1b.wav" + "wave" "#music/mob/FairgroundGermM1a.wav" + "wave" "#music/mob/FairgroundGermM1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.55" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/FairgroundGermX2a.wav" + "wave" "#music/mob/FairgroundGermX2b.wav" + "wave" "#music/mob/FairgroundGermX2a.wav" + "wave" "#music/mob/FairgroundGermX2b.wav" + "wave" "#music/mob/FairgroundGermM2a.wav" + "wave" "#music/mob/FairgroundGermM2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal1_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.35, 0.5" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/PlankGermX1a.wav" + "wave" "#music/mob/PlankGermX1b.wav" + "wave" "#music/mob/PlankGermL1a.wav" + "wave" "#music/mob/PlankGermL1b.wav" + "wave" "#music/mob/PlankGermS1a.wav" + "wave" "#music/mob/PlankGermS1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.35, 0.5" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/PlankGermX2a.wav" + "wave" "#music/mob/PlankGermX2b.wav" + "wave" "#music/mob/PlankGermL2a.wav" + "wave" "#music/mob/PlankGermL2b.wav" + "wave" "#music/mob/PlankGermS2a.wav" + "wave" "#music/mob/PlankGermS2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal1_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.35, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/MilltownGermX1a.wav" + "wave" "#music/mob/MilltownGermX1b.wav" + "wave" "#music/mob/MilltownGermX1c.wav" + "wave" "#music/mob/MilltownGermL1a.wav" + "wave" "#music/mob/MilltownGermL1b.wav" + "wave" "#music/mob/MilltownGermL1c.wav" + "wave" "#music/mob/MilltownGermM1a.wav" + "wave" "#music/mob/MilltownGermM1b.wav" + "wave" "#music/mob/MilltownGermM1d.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.35, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/MilltownGermX2a.wav" + "wave" "#music/mob/MilltownGermX2b.wav" + "wave" "#music/mob/MilltownGermL2a.wav" + "wave" "#music/mob/MilltownGermL2b.wav" + "wave" "#music/mob/MilltownGermL2c.wav" + "wave" "#music/mob/MilltownGermM2a.wav" + "wave" "#music/mob/MilltownGermM2b.wav" + "wave" "#music/mob/MilltownGermM2c.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal1_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.35, 0.5" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + // "wave" "#music/mob/EasyGermS1a.wav" + // "wave" "#music/mob/EasyGermS1b.wav" + // "wave" "#music/mob/EasyGermX1a.wav" + // "wave" "#music/mob/EasyGermX1b.wav" + "wave" "#music/mob/ParishTmptGermX1a.wav" + "wave" "#music/mob/ParishTmptGermX1b.wav" + "wave" "#music/mob/ParishTmptGermX1c.wav" + "wave" "#music/mob/ParishTmptGermX1d.wav" + // "wave" "#music/mob/EasyGermL1a.wav" + // "wave" "#music/mob/EasyGermL1b.wav" + "wave" "#music/mob/ParishTmptGermL1a.wav" + "wave" "#music/mob/ParishTmptGermL1b.wav" + // "wave" "#music/mob/EasyGermS1a.wav" + // "wave" "#music/mob/EasyGermS1b.wav" + "wave" "#music/mob/ParishTmptGermM1a.wav" + "wave" "#music/mob/ParishTmptGermM1b.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.35, 0.5" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + // "wave" "#music/mob/EasyGermX2a.wav" + // "wave" "#music/mob/EasyGermX2b.wav" + "wave" "#music/mob/ParishTmptGermX2a.wav" + "wave" "#music/mob/ParishTmptGermX2b.wav" + "wave" "#music/mob/ParishTmptGermX2c.wav" + // "wave" "#music/mob/EasyGermL2a.wav" + // "wave" "#music/mob/EasyGermL2b.wav" + "wave" "#music/mob/ParishTmptGermL2a.wav" + "wave" "#music/mob/ParishTmptGermL2b.wav" + // "wave" "#music/mob/EasyGermM2c.wav" + // "wave" "#music/mob/EasyGermM2d.wav" + "wave" "#music/mob/ParishTmptGermM2a.wav" + "wave" "#music/mob/ParishTmptGermM2b.wav" + "wave" "#music/mob/ParishTmptGermM2c.wav" + "wave" "#music/mob/ParishTmptGermM2d.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + + +"Event.MobSignal1_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + + +///////////////////////////////// Atmosphere!! ////////////////////////// + +"Event.SafeAtmosphere_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} +"Event.SafeAtmosphere_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + +"Event.SafeAtmosphere_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} +"Event.SafeAtmosphere_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} +"Event.SafeAtmosphere_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + +"Event.SafeAtmosphere_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + +"Event.SafeAtmosphere_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + + + + +// danger + +"Event.DangerAtmosphere_Survival" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_Mall" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/c1rabies_01.wav" + "wave" "#music/contagion/c1rabies_02.wav" + "wave" "#music/contagion/c1rabies_03.wav" + "wave" "#music/contagion/c1rabies_04.wav" + "wave" "#music/contagion/c1rabies_05.wav" + "wave" "#music/contagion/c1rabies_06.wav" + "wave" "#music/contagion/c1rabies_07.wav" + "wave" "#music/contagion/c1rabies_08.wav" + "wave" "#music/contagion/c1rabies_09.wav" + "wave" "#music/contagion/c1rabies_10.wav" + "wave" "#music/contagion/c1rabies_11.wav" + "wave" "#music/contagion/c1rabies_12.wav" + "wave" "#music/contagion/c1rabies_13.wav" + "wave" "#music/contagion/c1rabies_14.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} +"Event.DangerAtmosphere_Fairgrounds" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/C2Rabies_01.wav" + "wave" "#music/contagion/C2Rabies_02.wav" + "wave" "#music/contagion/C2Rabies_03.wav" + "wave" "#music/contagion/C2Rabies_04.wav" + "wave" "#music/contagion/C2Rabies_05.wav" + "wave" "#music/contagion/C2Rabies_06.wav" + "wave" "#music/contagion/C2Rabies_07.wav" + "wave" "#music/contagion/C2Rabies_08.wav" + "wave" "#music/contagion/C2Rabies_09.wav" + "wave" "#music/contagion/C2Rabies_10.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_Plankcountry" +{ + "channel" "CHAN_STATIC" + "volume" "0.45, 0.65" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/C3Rabies_01.wav" + "wave" "#music/contagion/C3Rabies_02.wav" + "wave" "#music/contagion/C3Rabies_03.wav" + "wave" "#music/contagion/C3Rabies_04.wav" + "wave" "#music/contagion/C3Rabies_05.wav" + "wave" "#music/contagion/C3Rabies_06.wav" + "wave" "#music/contagion/C3Rabies_07.wav" + "wave" "#music/contagion/C3Rabies_08.wav" + "wave" "#music/contagion/C3Rabies_09.wav" + "wave" "#music/contagion/C3Rabies_10.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_Milltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/C4Rabies_01.wav" + "wave" "#music/contagion/C4Rabies_02.wav" + "wave" "#music/contagion/C4Rabies_03.wav" + "wave" "#music/contagion/C4Rabies_04.wav" + "wave" "#music/contagion/C4Rabies_05.wav" + "wave" "#music/contagion/C4Rabies_06.wav" + "wave" "#music/contagion/C4Rabies_07.wav" + "wave" "#music/contagion/C4Rabies_08.wav" + "wave" "#music/contagion/C4Rabies_09.wav" + "wave" "#music/contagion/C4Rabies_10.wav" + "wave" "#music/contagion/C4Rabies_11.wav" + "wave" "#music/contagion/C4Rabies_12.wav" + "wave" "#music/contagion/C4Rabies_13.wav" + "wave" "#music/contagion/C4Rabies_14.wav" + "wave" "#music/contagion/C4Rabies_15.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} +"Event.DangerAtmosphere_BigEasy" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/C5Rabies_01.wav" + "wave" "#music/contagion/C5Rabies_02.wav" + "wave" "#music/contagion/C5Rabies_03.wav" + "wave" "#music/contagion/C5Rabies_04.wav" + "wave" "#music/contagion/C5Rabies_05.wav" + "wave" "#music/contagion/C5Rabies_06.wav" + "wave" "#music/contagion/C5Rabies_07.wav" + "wave" "#music/contagion/C5Rabies_08.wav" + "wave" "#music/contagion/C5Rabies_09.wav" + "wave" "#music/contagion/C5Rabies_10.wav" + "wave" "#music/contagion/C5Rabies_11.wav" + "wave" "#music/contagion/C5Rabies_12.wav" + "wave" "#music/contagion/C5Rabies_13.wav" + "wave" "#music/contagion/C5Rabies_14.wav" + "wave" "#music/contagion/C5Rabies_15.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +// -------------------------------------------------------------------- +// See: game_sounds_music_lighthouse.txt +// -------------------------------------------------------------------- +// danger +//"Event.DangerAtmosphere_Lighthouse" +//{ +// "channel" "CHAN_STATIC" +// "volume" "0.6, 0.8" +// "soundlevel" "SNDLVL_NONE" +// "rndwave" +// { +// "wave" "#music/contagion/DT_Rabies_01.wav" +// "wave" "#music/contagion/DT_Rabies_02.wav" +// "wave" "#music/contagion/DT_Rabies_03.wav" +// "wave" "#music/contagion/DT_Rabies_04.wav" +// "wave" "#music/contagion/DT_Rabies_05.wav" +// "wave" "#music/contagion/DT_Rabies_06.wav" +// "wave" "#music/contagion/DT_Rabies_07.wav" +// "wave" "#music/contagion/DT_Rabies_08.wav" +// "wave" "#music/contagion/DT_Rabies_09.wav" +// "wave" "#music/contagion/DT_Rabies_10.wav" + +// "wave" "#music/contagion/L4D_Rabies_01.wav" +// "wave" "#music/contagion/L4D_Rabies_02.wav" +// "wave" "#music/contagion/L4D_Rabies_03.wav" +// "wave" "#music/contagion/L4D_Rabies_04.wav" +// "wave" "#music/contagion/L4D_Rabies_05.wav" +// "wave" "#music/contagion/L4D_Rabies_06.wav" +// "wave" "#music/contagion/L4D_Rabies_07.wav" +// "wave" "#music/contagion/L4D_Rabies_08.wav" +// "wave" "#music/contagion/L4D_Rabies_09.wav" +// "wave" "#music/contagion/L4D_Rabies_10.wav" +// } + +// GameData +// { +// "MusicPriority" "LOW" +// "MusicTrack" "ambient" +// "MusicFadeOut" "1.0" +// } +//} + +// -------------------------------------------------------------------- +// Zombie choir +// +// -------------------------------------------------------------------- +"Event.ZombieChoir" +{ + "channel" "CHAN_STATIC" + "volume" "0.7, 1.0" + "soundlevel" "SNDLVL_150dB" + + "rndwave" + { + "wave" "music/zombiechoir/ZombieChoir_01.wav" + "wave" "music/zombiechoir/ZombieChoir_02.wav" + "wave" "music/zombiechoir/ZombieChoir_03.wav" + "wave" "music/zombiechoir/ZombieChoir_04.wav" + "wave" "music/zombiechoir/ZombieChoir_05.wav" + "wave" "music/zombiechoir/ZombieChoir_06.wav" + "wave" "music/zombiechoir/ZombieChoir_07.wav" + + } + GameData + { + "MusicTrack" "zombiechoir" + "MusicPriority" "CRITICAL" + } +} + +/////////////////////////////////////////////////////////// +// "Reveal" - We just moved into a large open space +// +"Event.LargeAreaRevealed" +{ + "channel" "CHAN_STATIC" + "volume" "0.8" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/glimpse/AGlimpseOfDeath_01.wav" + "wave" "#music/glimpse/AGlimpseOfDeath_02.wav" + "wave" "#music/glimpse/AGlimpseOfDeath_03.wav" + } + GameData + { + "MusicTrack" "glimpse" + } +} +/////////////////////////////////////////////////////////// +// +"Event.MarchingIn" +{ + "channel" "CHAN_STATIC" + "volume" "0.80" + "soundlevel" "SNDLVL_150dB" + + "wave" "music/flu/TheSaintsWillNeverCome.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} + +/////////////////////////////////////////////////////////// +// +"Event.AmbientMob" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "music/infection/infection_09_01.wav" + "wave" "music/infection/infection_10_01.wav" + "wave" "music/infection/infection_11_01.wav" + } + + GameData + { + "MusicTrack" "infection" + } +} + +"c2m2.carousel_music" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_130dB" + "pitch" "PITCH_NORM" + "wave" "music/flu/RocketRide.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + "MusicTrack" "concert" + } +} + +"c2m4.Ridin1" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_150dB" + "pitch" "100" + + "wave" ")music/flu/concert/midnightride.wav" + + GameData + { + "MusicBlockTrackList" "finaleStart, zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicStopTrackList" "finaleStart, zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "concert1" + + } +} + +"c2m4.Ridin2" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_150dB" + "pitch" "100" + + "wave" ")music/flu/concert/midnightride.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "concert2" + } +} + +"c2m4.BadMan1" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_150dB" + "pitch" "100" + + "wave" ")music/flu/concert/onebadman.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "concert1" + } +} +"c2m4.BadMan2" +{ + "channel" "CHAN_STATIC" + "volume" "0.85" + "soundlevel" "SNDLVL_150dB" + "pitch" "100" + + "wave" ")music/flu/concert/onebadman.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "concert2" + } +} + + +//------------------------------------------ +// Jukebox music +//------------------------------------------ +"Jukebox.BadMan1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "100" + + "wave" "*music/flu/jukebox/BadMan.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} + +"Jukebox.Ridin1" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "100" + + "wave" "*music/flu/jukebox/MidnightRide.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} +"Jukebox.AllIWantForXmas" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "100" + + "wave" "*music/flu/jukebox/all_i_want_for_xmas.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} + +"Jukebox.saints_will_never_come" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_80dB" + + "wave" "*music/flu/jukebox/TheSaintsWillNeverCome.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} + +"Jukebox.re_your_brains" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_80dB" + "pitch" "PITCH_NORM" + "wave" "*music/flu/jukebox/re_your_brains.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} + + +"Jukebox.still_alive" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_80dB" + "pitch" "PITCH_NORM" + "wave" "*music/flu/jukebox/portal_still_alive.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// Sacrifice - Docks - Highrise +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- + +"Event.MissionStart_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/TheSacrifice.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Sacrifice" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + // "loopStart" "76.146" + "loopStart" "107.252" + + } + } +} +"Event.MissionStart_BaseLoop_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/cpmusic/PrayForDeath.wav" + + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// checkpoints +// -------------------------------------------------------------------- + +"Event.CheckPointIntro_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Sacrifice" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/cpmusic/PrayForDeath.wav" + + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// when you first leave a checkpoint +"Event.LeavingSafety_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +// -------------------------------------------------------------------- +// starting atmosphere after leaving checkpoint +"Event.StartAtmosphere_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + + "wave" "#music/contagion/NM_Quarantine_01.wav" + "wave" "#music/contagion/NM_Quarantine_02.wav" + "wave" "#music/contagion/NM_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +// -------------------------------------------------------------------- +// zombat music - Used only in survivorset = "2" +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + +// "rndwave" +// { +// "wave" "#music/zombat/slayer/HordeSlayer_01.wav" +// "wave" "#music/zombat/slayer/HordeSlayer_02.wav" +// "wave" "#music/zombat/slayer/HordeSlayer_03.wav" +// "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" +// } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.6" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_Sacrifice" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +// "Event.Zombat3_A_Sacrifice" +// { +// "channel" "CHAN_STATIC" +// "volume" "0.77" +// "soundlevel" "SNDLVL_NONE" + + +// "wave" "#music/zombat/danger/HordeDanger_01.wav" + + +// GameData +// { +// "MusicAutoQueue" "Event.Zombat3_B_Sacrifice" +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicPriority" "CRITICAL" +// "MusicTagDelay" "1, 7" +// } +// } +// "Event.Zombat3_B_Sacrifice" +// { +// "channel" "CHAN_STATIC" +// "volume" "0.77" +// "soundlevel" "SNDLVL_NONE" + +// "wave" "#music/zombat/danger/HordeDanger_01.wav" + + +// GameData +// { +// "MusicAutoQueue" "Event.Zombat3_A_Sacrifice" +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicTagDelay" "1, 7" +// "MusicPriority" "CRITICAL" +// } +// } + + + +"Event.MobSignal1_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +///////////////////////////////// Atmosphere!! ////////////////////////// + +"Event.SafeAtmosphere_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + + "wave" "#music/contagion/NM_Quarantine_01.wav" + "wave" "#music/contagion/NM_Quarantine_02.wav" + "wave" "#music/contagion/NM_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + + +// danger + +"Event.DangerAtmosphere_Sacrifice" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// NoMercy - Hospital +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- + +"Event.MissionStart_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/nomercy.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_NoMercy" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + // "loopStart" "76.146" + "loopStart" "107.252" + + } + } +} +"Event.MissionStart_BaseLoop_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/nomercyforyou.wav" +// "wave" "#music/cpmusic/nomercyforyou2.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// checkpoints +// -------------------------------------------------------------------- + +"Event.CheckPointIntro_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/nomercyintro.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_NoMercy" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/nomercyforyou.wav" + "wave" "#music/cpmusic/nomercyforyou2.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// when you first leave a checkpoint +"Event.LeavingSafety_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +// -------------------------------------------------------------------- +// starting atmosphere after leaving checkpoint +"Event.StartAtmosphere_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/NM_Quarantine_01.wav" + "wave" "#music/contagion/NM_Quarantine_02.wav" + "wave" "#music/contagion/NM_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +// -------------------------------------------------------------------- +// zombat music +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_NoMercy" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +// "Event.Zombat3_A_NoMercy" +// { +// "channel" "CHAN_STATIC" +// "volume" "0.77" +// "soundlevel" "SNDLVL_NONE" + +// "wave" "#music/zombat/danger/Hordedanger_01.wav" + + +// GameData +// { +// "MusicAutoQueue" "Event.Zombat3_B_NoMercy" +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicPriority" "CRITICAL" +// "MusicTagDelay" "1, 7" +// } +// } +// "Event.Zombat3_B_NoMercy" +// { +// "channel" "CHAN_STATIC" +// "volume" "0.77" +// "soundlevel" "SNDLVL_NONE" + +// "wave" "#music/zombat/danger/Hordedanger_01.wav" + + +// GameData +// { +// "MusicAutoQueue" "Event.Zombat3_A_NoMercy" +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicTagDelay" "1, 7" +// "MusicPriority" "CRITICAL" +// } +// } + + +///////////////////////////////// Zombies!! ////////////////////////// +// L4D2 +// Hospital +// S +"Event.MobSignal1_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.5, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.5, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +///////////////////////////////// Atmosphere!! ////////////////////////// + +"Event.SafeAtmosphere_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/NM_Quarantine_01.wav" + "wave" "#music/contagion/NM_Quarantine_02.wav" + "wave" "#music/contagion/NM_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + + +// danger + +"Event.DangerAtmosphere_NoMercy" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/NM_Rabies_01.wav" + "wave" "#music/contagion/NM_Rabies_02.wav" + "wave" "#music/contagion/NM_Rabies_03.wav" + "wave" "#music/contagion/NM_Rabies_04.wav" + "wave" "#music/contagion/NM_Rabies_05.wav" + "wave" "#music/contagion/NM_Rabies_06.wav" + "wave" "#music/contagion/NM_Rabies_07.wav" + "wave" "#music/contagion/NM_Rabies_08.wav" + "wave" "#music/contagion/NM_Rabies_09.wav" + "wave" "#music/contagion/NM_Rabies_10.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// +// L4D1 Default Music // +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// -----------------------------------------------------------------------------------------------// +// combat music // +// -----------------------------------------------------------------------------------------------// +"Event.ZombatIntro_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/zombat/GatesOfHell.wav" + + GameData + { + "MusicTrack" "zombatIntro" + "MusicAutoQueue" "Event.Zombat_L4D1" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/zombat/Horde_01.wav" + "wave" "#music/zombat/Horde_02.wav" + "wave" "#music/zombat/Horde_03.wav" + "wave" "#music/zombat/Horde_04.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_L4D1" + "MusicTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8" + "MusicTagDelay" "7" +// "MusicTagIndex" "2" +// "MusicMasterTags" +// { +// "tag1" "1.033" +// "tag2" "2.806" +// "tag3" "5.647" +// } + } +} +"Event.Zombat_A_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Horde_02.wav" + "wave" "#music/zombat/Horde_03.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_L4D1" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" +// "MusicTagIndex" "2" +// "MusicMasterTags" +// { +// "tag1" "1.033" +// "tag2" "2.806" +// "tag3" "5.647" +// } + } +} +"Event.Zombat_B_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Horde_02.wav" + "wave" "#music/zombat/Horde_04.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_L4D1" + "MusicTrack" "zombat" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "8.0" + "MusicTagDelay" "7" +// "MusicTagIndex" "2" +// "MusicMasterTags" +// { +// "tag1" "1.033" +// "tag2" "2.806" +// "tag3" "5.647" +// } + } +} + +"Event.Zombat2_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" //og: 0.7 + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + + GameData + { + "MusicTrack" "zombat2" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "4.0" + } +} + +"Event.Zombat3_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" //og: 1.0 + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { + "MusicTrack" "zombat3" //og: zombatMobbed + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" //og: HIGH + } +} + +// Down +// Survivor is down and being beaten by infected +"Event.Down_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/PuddleOfYou_l4d1.wav" + + GameData + { + "MusicTrack" "down" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + } +} +// Down +// Survivor is down and being beaten by infected +"Event.DownHit_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/PuddleOfYouHit_l4d1.wav" + + GameData + { + "MusicTrack" "downHits" + "MusicPriority" "CRITICAL" + } +} + +// BleedingOut +// This cue starts exactly 10 seconds before death as the health meter clicks down. +"Event.BleedingOut_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/IAmSoCold_l4d1.wav" + + GameData + { + "MusicTrack" "down" + "MusicPriority" "CRITICAL" + "MusicMaster" "PLAY_SPLIT" + + } +} +// This cue starts exactly 10 seconds before death as the health meter clicks down. +"Event.BleedingOutHit_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/IAmSoColdHit_l4d1.wav" + + GameData + { + "MusicTrack" "downHits" + "MusicPriority" "CRITICAL" + } +} + +// This cue starts exactly 10 seconds before death as the health meter clicks down. +"Event.BleedingOutEnd_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/terror/TheEnd_l4d1.wav" + + GameData + { + "MusicTrack" "down" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_SPLIT" + + } +} + +// Survivor death +// This is for the death of an individual survivor to be played after the health meter has reached zero +"Event.SurvivorDeath_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/undeath/LeftForDeath_l4d1.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH" +// Originaly it was changed from "PLAY_SPLIT" to "PLAY_SPLIT | DONT_DISENGAGE" in order to fix the bug where this cue wouldn't play if you were spectating on someone +// This resulted in the cue playing for Infected players after killing one of the survivors alongside making any other sound playing quieter. Changing it back to "PLAY_SPLIT" fixes it + "MusicMaster" "PLAY_SPLIT" + + } +} + +"Event.SurvivorDeathHit_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + "wave" "music/tags/LeftForDeathHit_l4d1.wav" + + GameData + { + "MusicTrack" "deathHits" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH" + } +} + +"Event.ScenarioLose_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/undeath/Death_l4d1.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} + + +///////////////////////////////// Finale!! ////////////////////////// +// +// FINALE +// + +// Final battle +// For the final battle before getting rescued"Event.FinalBattle" +"Event.FinalBattle_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/the_end/SkinOnOurTeeth_l4d1.wav" + + GameData + { + "MusicTrack" "default" + "MusicPriority" "HIGH" + "MusicFadeOut" "2.0" + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient, tank" + "MusicStopTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient, tank" + } +} + + +///////////////////////////////// Scenario finish!! ////////////////////////// +"Event.ScenarioWin_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/unalive/TheMonstersWithin_l4d1.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} +"Event.SafeRoom_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#music/safe/TheMonstersWithout_l4d1.wav" + + GameData + { + "MusicTrack" "default" + "MusicMaster" "PLAY_TO_END | DONT_DISENGAGE" + "MusicPriority" "CRITICAL" + "MusicParameters" "AFTER_DEATH | AFTER_MISSION_END" + } +} + +// -------------------------------------------------------------------- +// Zombie choir +// +// -------------------------------------------------------------------- +"Event.ZombieChoir_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_150dB" + + "rndwave" + { + "wave" "music/zombiechoir/ZombieChoir_01_l4d1.wav" + "wave" "music/zombiechoir/ZombieChoir_02_l4d1.wav" + "wave" "music/zombiechoir/ZombieChoir_03_l4d1.wav" + "wave" "music/zombiechoir/ZombieChoir_04_l4d1.wav" + "wave" "music/zombiechoir/ZombieChoir_05_l4d1.wav" + "wave" "music/zombiechoir/ZombieChoir_06_l4d1.wav" + "wave" "music/zombiechoir/ZombieChoir_07_l4d1.wav" + } + GameData + { + "MusicTrack" "zombiechoir" + "MusicPriority" "CRITICAL" + } +} + +/////////////////////////////////////////////////////////// +// "Reveal" - We just moved into a large open space +// +"Event.LargeAreaRevealed_L4D1" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/glimpse/AGlimpseOfHell_01.wav" + "wave" "#music/glimpse/AGlimpseOfHell_02.wav" + "wave" "#music/glimpse/AGlimpseOfHell_03.wav" + } + GameData + { + "MusicTrack" "glimpse" + } +} + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// Events +// +"Event.MissionStart_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/DeadLightDistrict.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_DeadLight" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + // "loopStart" "76.146" + "loopStart" "76.563" + + } + } +} +"Event.MissionStart_BaseLoop_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// checkpoints +// -------------------------------------------------------------------- + +"Event.CheckPointIntro_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_DeadLight" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForDeath.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// when you first leave a checkpoint +"Event.LeavingSafety_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" //"0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/DeadLightGermM1a.wav" + "wave" "#music/mob/DeadLightGermS1a.wav" + "wave" "#music/mob/DeadLightGermL1a.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +// -------------------------------------------------------------------- +// starting atmosphere after leaving checkpoint +"Event.StartAtmosphere_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +// -------------------------------------------------------------------- +// zombat music +// -------------------------------------------------------------------- + +// -------------------------------------------------------------------- +// C6 DeadLight +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + // "rndwave" + // { + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + + // } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/internalorgans/organ_01_01a.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01b.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01c.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01d.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01e.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01f.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01g.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01h.wav" + + } + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_DeadLight" + "MusicTrack" "zombat3" + "MusicTagDelay" "1, 7" + // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_A_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/internalorgans/organ_02_01a.wav" + "wave" "#music/zombat/danger/internalorgans/organ_02_01b.wav" + "wave" "#music/zombat/danger/internalorgans/organ_02_01c.wav" + "wave" "#music/zombat/danger/internalorgans/organ_02_01d.wav" + // "wave" "#music/zombat/danger/internalorgans/organ_03_01a.wav" + "wave" "#music/zombat/danger/internalorgans/organ_03_01b.wav" + "wave" "#music/zombat/danger/internalorgans/organ_03_01e.wav" + } + + + GameData + { + "MusicAutoQueue" "Event.Zombat3_B_DeadLight" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + "MusicTagDelay" "1, 7" + } +} +"Event.Zombat3_B_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/internalorgans/organ_01_01a.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01b.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01c.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01d.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01e.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01f.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01g.wav" + "wave" "#music/zombat/danger/internalorgans/organ_01_01h.wav" + + } + + GameData + { + "MusicAutoQueue" "Event.Zombat3_A_DeadLight" + "MusicTrack" "zombat3" + "MusicTagTrack" "zombat" + "MusicTagDelay" "1, 7" + "MusicPriority" "CRITICAL" + } +} + + +///////////////////////////////// Zombies!! ////////////////////////// +// L4D2 +// BigEasy +// S +"Event.MobSignal1_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/DeadLightGermS1a.wav" + "wave" "#music/mob/DeadLightGermS1b.wav" + "wave" "#music/mob/DeadLightGermS1c.wav" + "wave" "#music/mob/DeadLightGermM1a.wav" + "wave" "#music/mob/DeadLightGermM1b.wav" + "wave" "#music/mob/DeadLightGermM1c.wav" + "wave" "#music/mob/DeadLightGermL1a.wav" + "wave" "#music/mob/DeadLightGermL1b.wav" + "wave" "#music/mob/DeadLightGermL1c.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/DeadLightGermS2a.wav" + "wave" "#music/mob/DeadLightGermS2b.wav" + "wave" "#music/mob/DeadLightGermS2c.wav" + "wave" "#music/mob/DeadLightGermM2a.wav" + "wave" "#music/mob/DeadLightGermM2b.wav" + "wave" "#music/mob/DeadLightGermM2c.wav" + "wave" "#music/mob/DeadLightGermL2a.wav" + "wave" "#music/mob/DeadLightGermL2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +///////////////////////////////// Atmosphere!! ////////////////////////// + +"Event.SafeAtmosphere_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + + +// danger + +"Event.DangerAtmosphere_DeadLight" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/c6rabies_01.wav" + "wave" "#music/contagion/c6rabies_02.wav" + "wave" "#music/contagion/c6rabies_03.wav" + "wave" "#music/contagion/c6rabies_04.wav" + "wave" "#music/contagion/c6rabies_05.wav" + "wave" "#music/contagion/c6rabies_06.wav" + "wave" "#music/contagion/c6rabies_07.wav" + "wave" "#music/contagion/c6rabies_08.wav" + "wave" "#music/contagion/c6rabies_09.wav" + "wave" "#music/contagion/c6rabies_10.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +////////////////////////////////////////////////////////////////////// +// the passing +///////////////////////////////////////////////////////////////////// +// -------------------------------------------------------------------- +// checkpoints +// -------------------------------------------------------------------- + +"Event.CheckPointIntro_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_ThePassing" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/PrayForPassing.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// when you first leave a checkpoint +"Event.LeavingSafety_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" //"0.3, 0.35" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermL1a.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +// -------------------------------------------------------------------- +// starting atmosphere after leaving checkpoint +"Event.StartAtmosphere_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/L4D1_Quarantine_01.wav" + "wave" "#music/contagion/L4D1_Quarantine_02.wav" + "wave" "#music/contagion/L4D1_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +// -------------------------------------------------------------------- +// zombat music +// -------------------------------------------------------------------- + +// -------------------------------------------------------------------- +// C6 ThePassing +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + "wave" "#music/zombat/slayer/lectric/Slayer_01a.wav" + } + + + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.77" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { +// "wave" "#music/zombat/danger/internalorgans/organ_01_01a.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01b.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01c.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01d.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01e.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01f.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01g.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01h.wav" + + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_ThePassing" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +//"Event.Zombat3_A_ThePassing" +//{ +// "channel" "CHAN_STATIC" +// "volume" "0.77" +// "soundlevel" "SNDLVL_NONE" + +// "rndwave" +// { +// "wave" "#music/zombat/danger/internalorgans/organ_02_01a.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_02_01b.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_02_01c.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_02_01d.wav" + //"wave" "#music/zombat/danger/internalorgans/organ_03_01a.wav" (not present in final game) +// "wave" "#music/zombat/danger/internalorgans/organ_03_01b.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_03_01e.wav" +// } + + +// GameData +// { +// "MusicAutoQueue" "Event.Zombat3_B_ThePassing" +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicPriority" "CRITICAL" +// "MusicTagDelay" "1, 7" +// } +//} + +//"Event.Zombat3_B_ThePassing" +//{ +// "channel" "CHAN_STATIC" +// "volume" "0.77" +// "soundlevel" "SNDLVL_NONE" + +// "rndwave" +// { +// "wave" "#music/zombat/danger/internalorgans/organ_01_01a.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01b.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01c.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01d.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01e.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01f.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01g.wav" +// "wave" "#music/zombat/danger/internalorgans/organ_01_01h.wav" + +// } + +// GameData +// { +// "MusicAutoQueue" "Event.Zombat3_A_ThePassing" +// "MusicTrack" "zombat3" +// "MusicTagTrack" "zombat" +// "MusicTagDelay" "1, 7" +// "MusicPriority" "CRITICAL" +// } +//} + + +///////////////////////////////// Zombies!! ////////////////////////// +// L4D2 +// BigEasy +// S +"Event.MobSignal1_ThePassing" +{ + "channel" "CHAN_STATIC" +// "volume" "0.3, 0.35" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_ThePassing" +{ + "channel" "CHAN_STATIC" +// "volume" "0.3, 0.35" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +///////////////////////////////// Atmosphere!! ////////////////////////// + +"Event.SafeAtmosphere_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/L4D1_Quarantine_01.wav" + "wave" "#music/contagion/L4D1_Quarantine_02.wav" + "wave" "#music/contagion/L4D1_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + + +// danger + +"Event.DangerAtmosphere_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/c6rabies_01.wav" + "wave" "#music/contagion/c6rabies_02.wav" + "wave" "#music/contagion/c6rabies_03.wav" + "wave" "#music/contagion/c6rabies_04.wav" + "wave" "#music/contagion/c6rabies_05.wav" + "wave" "#music/contagion/c6rabies_06.wav" + "wave" "#music/contagion/c6rabies_07.wav" + "wave" "#music/contagion/c6rabies_08.wav" + "wave" "#music/contagion/c6rabies_09.wav" + "wave" "#music/contagion/c6rabies_10.wav" + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +/////////////////////////// + +// Hits +"Event.LoneSurvivor" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_100dB" + + "wave" "music/terror/walkingdead.wav" + + GameData + { + "MusicTrack" "lonesurvivor" + "MusicPriority" "CRITICAL" + } +} + +"c6m1.SaveMeSomeSugar" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_95dB" + "pitch" "100" + + // "wave" "*)music/flu/concert/save_me_some_sugar.mp3" + "wave" "*)music/flu/jukebox/save_me_some_sugar_mono.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "wedding" + } +} + +"Jukebox.SaveMeSomeSugar" +{ + "channel" "CHAN_STATIC" + "volume" "1" + "soundlevel" "SNDLVL_80dB" + "pitch" "100" + + "wave" "*music/flu/jukebox/save_me_some_sugar_mono.wav" + + GameData + { + "MusicBlockTrackList" "zombat_tp, zombat, zombat2, zombat3, zombatIntro, ambient" + "MusicTrack" "jukebox" + } +} + + +"Event.WitchRageBride" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "music/witch/WitchEncroacher_bride.wav" + + GameData + { + "MusicTrack" "witch" + "MusicPriority" "CRITICAL" + } +} + + +////////////////////////////////////////// +/////////////////////////////////////////// +// -------------------------------------------------------------------- +// combat music +// -------------------------------------------------------------------- +// swapped for new, check A/D V.S. B/C +"Event.Zombat_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Horde_01.wav" + "wave" "#music/zombat/Horde_02.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_1_ThePassing" + "MusicTrack" "zombat_tp" + "MusicPriority" "CRITICAL" +// "MusicBlockTrackList" "zombat" + // "MusicMasterDivTags" "8" + // "MusicTagDelay" "7" + } +} +"Event.Zombat_A_1_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Horde_01.wav" + "wave" "#music/zombat/Horde_02.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_B_1_ThePassing" + "MusicTrack" "zombat_tp" + "MusicTagTrack" "zombat_tp" + "MusicPriority" "CRITICAL" +// "MusicBlockTrackList" "zombat" + "MusicMasterDivTags" "1.0" + // "MusicTagDelay" "7" + + } +} +"Event.Zombat_B_1_ThePassing" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/Horde_01.wav" + "wave" "#music/zombat/Horde_02.wav" + } + GameData + { + "MusicAutoQueue" "Event.Zombat_A_1_ThePassing" + "MusicTrack" "zombat_tp" + "MusicTagTrack" "zombat_tp" + "MusicPriority" "CRITICAL" + "MusicMasterDivTags" "1.0" +// "MusicBlockTrackList" "zombat" + // "MusicTagDelay" "7" + } +} + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// Cold Stream +// +"Event.MissionStart_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/ColdStream.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_coldstream" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + // "loopStart" "75.146" + "loopStart" "75" + + } + } +} +"Event.MissionStart_BaseLoop_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/cpmusic/deepintheforest1.wav" + + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// checkpoints +// -------------------------------------------------------------------- + +"Event.CheckPointIntro_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/YouHadBetterPray.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_coldstream" + "MusicPriority" "MEDIUM" + "MusicParameters" "NO_INTENSITY_TRACK" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/cpmusic/deepintheforest2.wav" + + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +// -------------------------------------------------------------------- +// when you first leave a checkpoint +"Event.LeavingSafety_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +// -------------------------------------------------------------------- +// starting atmosphere after leaving checkpoint +"Event.StartAtmosphere_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { +// "wave" "#music/contagion/NM_Quarantine_01.wav" +// "wave" "#music/contagion/NM_Quarantine_02.wav" +// "wave" "#music/contagion/NM_Quarantine_03.wav" + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +// -------------------------------------------------------------------- +// zombat music +// -------------------------------------------------------------------- + +// -------------------------------------------------------------------- +// C13 ColdStream +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// C11 Airport +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// C12 Farm +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// C10 SmallTown +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// C9 Garage +// -------------------------------------------------------------------- + +"Event.Zombat2_Intro_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/slayer/HordeSlayer_01.wav" + "wave" "#music/zombat/slayer/HordeSlayer_02.wav" + "wave" "#music/zombat/slayer/HordeSlayer_03.wav" + "wave" "#music/zombat/slayer/HordeSlayer_04.wav" + } + GameData + { + // "MusicAutoQueue" "Event.Zombat_A2B_Mall" + "MusicTrack" "zombat2c" + "MusicPriority" "CRITICAL" + "MusicTagTrack" "zombat" + "MusicTagIndex" "0" + // "MusicMasterDivTags" "8.0" + } +} + +// -------------------------------------------------------------------- +// Danger +// -------------------------------------------------------------------- +"Event.Zombat3_Intro_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_coldstream" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_Intro_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_coldstream" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_Intro_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_coldstream" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_Intro_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_coldstream" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +"Event.Zombat3_Intro_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.7" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/zombat/danger/HordeDanger_01.wav" + "wave" "#music/zombat/danger/HordeDanger_02.wav" + "wave" "#music/zombat/danger/HordeDanger_03.wav" + "wave" "#music/zombat/danger/HordeDanger_04.wav" + } + + GameData + { +// "MusicAutoQueue" "Event.Zombat3_A_coldstream" + "MusicTrack" "zombat3" +// "MusicTagDelay" "1, 7" +// // "MusicTagTrack" "zombat" + "MusicPriority" "CRITICAL" + } +} + +///////////////////////////////// Zombies!! ////////////////////////// +// L4D2 +// BigEasy +// S +"Event.MobSignal1_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} +"Event.MobSignal2_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal1_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal2_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +// -------------------------------------------------------------------- +// See: game_sounds_music_waterfront.txt +// -------------------------------------------------------------------- +//"Event.MobSignal1_Waterfront" +//{ +// "channel" "CHAN_STATIC" +// "volume" "0.55, 0.7" +// "soundlevel" "SNDLVL_NONE" +// "rndwave" +// { +// "wave" "#music/mob/GermL1a.wav" +// "wave" "#music/mob/GermL1b.wav" +// "wave" "#music/mob/GermM1a.wav" +// "wave" "#music/mob/GermM1b.wav" +// "wave" "#music/mob/GermS1a.wav" +// "wave" "#music/mob/GermS1b.wav" +// "wave" "#music/mob/GermX1a.wav" +// "wave" "#music/mob/GermX1b.wav" +// } + +// GameData +// { +// "MusicPriority" "LOW" +// "MusicTrack" "mobsignal" +// } +//} +//"Event.MobSignal2_Waterfront" +//{ +// "channel" "CHAN_STATIC" +// "volume" "0.55, 0.7" +// "soundlevel" "SNDLVL_NONE" +// "rndwave" +// { +// "wave" "#music/mob/GermL2a.wav" +// "wave" "#music/mob/GermL2b.wav" +// "wave" "#music/mob/GermM2a.wav" +// "wave" "#music/mob/GermM2b.wav" +// "wave" "#music/mob/GermS2a.wav" +// "wave" "#music/mob/GermS2b.wav" +// "wave" "#music/mob/GermX2a.wav" +// "wave" "#music/mob/GermX2b.wav" +// } + +// GameData +// { +// "MusicPriority" "LOW" +// "MusicTrack" "mobsignal" +// } +//} + +"Event.MobSignal1_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal2_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal1_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal2_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal1_Smalltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL1a.wav" + "wave" "#music/mob/GermL1b.wav" + "wave" "#music/mob/GermM1a.wav" + "wave" "#music/mob/GermM1b.wav" + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + "wave" "#music/mob/GermX1a.wav" + "wave" "#music/mob/GermX1b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +"Event.MobSignal2_Smalltown" +{ + "channel" "CHAN_STATIC" + "volume" "0.55, 0.7" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermL2a.wav" + "wave" "#music/mob/GermL2b.wav" + "wave" "#music/mob/GermM2a.wav" + "wave" "#music/mob/GermM2b.wav" + "wave" "#music/mob/GermS2a.wav" + "wave" "#music/mob/GermS2b.wav" + "wave" "#music/mob/GermX2a.wav" + "wave" "#music/mob/GermX2b.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "mobsignal" + } +} + +///////////////////////////////// Atmosphere!! ////////////////////////// + +"Event.SafeAtmosphere_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/Quarantine_01.wav" + "wave" "#music/contagion/Quarantine_02.wav" + "wave" "#music/contagion/Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + + +// danger + +"Event.DangerAtmosphere_coldstream" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + + "wave" "#music/contagion/l4d2_rabies_01.wav" + "wave" "#music/contagion/l4d2_rabies_02.wav" + "wave" "#music/contagion/l4d2_rabies_03.wav" + "wave" "#music/contagion/l4d2_rabies_04.wav" + "wave" "#music/contagion/l4d2_rabies_05.wav" + "wave" "#music/contagion/l4d2_rabies_06.wav" + "wave" "#music/contagion/l4d2_rabies_07.wav" + "wave" "#music/contagion/l4d2_rabies_08.wav" + "wave" "#music/contagion/l4d2_rabies_09.wav" + "wave" "#music/contagion/l4d2_rabies_10.wav" + "wave" "#music/contagion/l4d2_rabies_11.wav" + "wave" "#music/contagion/l4d2_rabies_12.wav" + "wave" "#music/contagion/l4d2_rabies_13.wav" + "wave" "#music/contagion/l4d2_rabies_14.wav" + "wave" "#music/contagion/l4d2_rabies_15.wav" + "wave" "#music/contagion/l4d2_rabies_16.wav" + "wave" "#music/contagion/l4d2_rabies_17.wav" + "wave" "#music/contagion/l4d2_rabies_18.wav" + "wave" "#music/contagion/l4d2_rabies_19.wav" + "wave" "#music/contagion/l4d2_rabies_20.wav" + "wave" "#music/contagion/l4d2_rabies_21.wav" + "wave" "#music/contagion/l4d2_rabies_22.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.MissionStart_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/DeadAir.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Airport" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "78.554" + } + } +} +"Event.MissionStart_BaseLoop_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/DeadAirTime.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.MissionStart_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/BloodHarvest.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Farm" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "78.021" + } + } +} +"Event.MissionStart_BaseLoop_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/BloodHarvestor.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.MissionStart_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/DeathToll.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_SmallTown" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "78.487" + } + } +} +"Event.MissionStart_BaseLoop_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/DeathTollCollector.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.MissionStart_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/stmusic/CrashCourse.wav" + } + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.MissionStart_BaseLoop_Garage" + "MusicPriority" "MEDIUM" + "MusicParameters" "AFTER_DEATH" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "78.167" + } + } +} +"Event.MissionStart_BaseLoop_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/CrashCourseCP.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.CheckPointIntro_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/DeadAirIntro.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Airport" + "MusicPriority" "MEDIUM" + "MusicMaster" "PLAY_TO_END" + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/DeadAirTime.wav" + "wave" "#music/cpmusic/DeadAirTime2.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.CheckPointIntro_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/DeathTollIntro.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_SmallTown" + "MusicPriority" "MEDIUM" + "MusicMaster" "PLAY_TO_END" + + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/DeathTollCollector.wav" + "wave" "#music/cpmusic/DeathTollCollector2.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.CheckPointIntro_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/DeathTollIntro.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Garage" + "MusicPriority" "MEDIUM" + "MusicMaster" "PLAY_TO_END" + + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.9" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/cpmusic/CrashCourseCP.wav" + + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + + + +"Event.CheckPointIntro_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "wave" "#music/stmusic/BloodHarvestIntro.wav" + + GameData + { + "MusicTrack" "checkpoint" + "MusicAutoQueue" "Event.CheckPointBaseLoop_Farm" + "MusicPriority" "MEDIUM" + "MusicMaster" "PLAY_TO_END" + + "MusicMasterTags" + { + "loopStart" "1.95" + } + } +} + +"Event.CheckPointBaseLoop_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + + "rndwave" + { + "wave" "#music/cpmusic/BloodHarvestor.wav" + "wave" "#music/cpmusic/BloodHarvestor2.wav" + } + GameData + { + "MusicPriority" "MEDIUM" + "MusicTrack" "checkpoint" + "MusicTagTrack" "checkpoint" + "MusicFadeOut" "5.0" + } +} + +"Event.LeavingSafety_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} +"Event.LeavingSafety_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +"Event.LeavingSafety_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} +"Event.LeavingSafety_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.4, 0.4" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/mob/GermS1a.wav" + "wave" "#music/mob/GermS1b.wav" + } + + GameData + { + "MusicDelayTime" "2.0" + "MusicPriority" "LOW" + "MusicTrack" "overdub" + } +} + +"Event.StartAtmosphere_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DA_Quarantine_01.wav" + "wave" "#music/contagion/DA_Quarantine_02.wav" + "wave" "#music/contagion/DA_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + } +} + +"Event.StartAtmosphere_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/BH_Quarantine_01.wav" + "wave" "#music/contagion/BH_Quarantine_02.wav" + "wave" "#music/contagion/BH_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + } +} + +"Event.StartAtmosphere_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DT_Quarantine_01.wav" + "wave" "#music/contagion/DT_Quarantine_02.wav" + "wave" "#music/contagion/DT_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + } +} +"Event.StartAtmosphere_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DT_Quarantine_01.wav" + "wave" "#music/contagion/DT_Quarantine_02.wav" + "wave" "#music/contagion/DT_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + } +} + +"Event.SafeAtmosphere_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DA_Quarantine_01.wav" + "wave" "#music/contagion/DA_Quarantine_02.wav" + "wave" "#music/contagion/DA_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} +"Event.SafeAtmosphere_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/BH_Quarantine_01.wav" + "wave" "#music/contagion/BH_Quarantine_02.wav" + "wave" "#music/contagion/BH_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicParameters" "INTENSITY_CELING" + "MusicFadeOut" "1.0" + + } +} + +"Event.SafeAtmosphere_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DT_Quarantine_01.wav" + "wave" "#music/contagion/DT_Quarantine_02.wav" + "wave" "#music/contagion/DT_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicFadeOut" "1.0" + + } +} + +"Event.SafeAtmosphere_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DT_Quarantine_01.wav" + "wave" "#music/contagion/DT_Quarantine_02.wav" + "wave" "#music/contagion/DT_Quarantine_03.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "safeAmbient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_Airport" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DA_Rabies_01.wav" + "wave" "#music/contagion/DA_Rabies_02.wav" + "wave" "#music/contagion/DA_Rabies_03.wav" + "wave" "#music/contagion/DA_Rabies_04.wav" + "wave" "#music/contagion/DA_Rabies_05.wav" + "wave" "#music/contagion/DA_Rabies_06.wav" + "wave" "#music/contagion/DA_Rabies_07.wav" + "wave" "#music/contagion/DA_Rabies_08.wav" + "wave" "#music/contagion/DA_Rabies_09.wav" + "wave" "#music/contagion/DA_Rabies_10.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_Farm" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/BH_Rabies_01.wav" + "wave" "#music/contagion/BH_Rabies_02.wav" + "wave" "#music/contagion/BH_Rabies_03.wav" + "wave" "#music/contagion/BH_Rabies_04.wav" + "wave" "#music/contagion/BH_Rabies_05.wav" + "wave" "#music/contagion/BH_Rabies_06.wav" + "wave" "#music/contagion/BH_Rabies_07.wav" + "wave" "#music/contagion/BH_Rabies_08.wav" + "wave" "#music/contagion/BH_Rabies_09.wav" + "wave" "#music/contagion/BH_Rabies_10.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_SmallTown" +{ + "channel" "CHAN_STATIC" + "volume" "0.6, 0.8" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/DT_Rabies_01.wav" + "wave" "#music/contagion/DT_Rabies_02.wav" + "wave" "#music/contagion/DT_Rabies_03.wav" + "wave" "#music/contagion/DT_Rabies_04.wav" + "wave" "#music/contagion/DT_Rabies_05.wav" + "wave" "#music/contagion/DT_Rabies_06.wav" + "wave" "#music/contagion/DT_Rabies_07.wav" + "wave" "#music/contagion/DT_Rabies_08.wav" + "wave" "#music/contagion/DT_Rabies_09.wav" + "wave" "#music/contagion/DT_Rabies_10.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + +"Event.DangerAtmosphere_Garage" +{ + "channel" "CHAN_STATIC" + "volume" "0.7, 0.9" + "soundlevel" "SNDLVL_NONE" + "rndwave" + { + "wave" "#music/contagion/CC_Rabies_01.wav" + "wave" "#music/contagion/CC_Rabies_02.wav" + "wave" "#music/contagion/CC_Rabies_03.wav" + "wave" "#music/contagion/CC_Rabies_04.wav" + "wave" "#music/contagion/CC_Rabies_05.wav" + "wave" "#music/contagion/CC_Rabies_06.wav" + "wave" "#music/contagion/CC_Rabies_07.wav" + "wave" "#music/contagion/CC_Rabies_08.wav" + "wave" "#music/contagion/CC_Rabies_09.wav" + "wave" "#music/contagion/CC_Rabies_10.wav" + "wave" "#music/contagion/CC_Rabies_11.wav" + "wave" "#music/contagion/CC_Rabies_12.wav" + + "wave" "#music/contagion/L4D_Rabies_01.wav" + "wave" "#music/contagion/L4D_Rabies_02.wav" + "wave" "#music/contagion/L4D_Rabies_03.wav" + "wave" "#music/contagion/L4D_Rabies_04.wav" + "wave" "#music/contagion/L4D_Rabies_05.wav" + "wave" "#music/contagion/L4D_Rabies_06.wav" + "wave" "#music/contagion/L4D_Rabies_07.wav" + "wave" "#music/contagion/L4D_Rabies_08.wav" + "wave" "#music/contagion/L4D_Rabies_09.wav" + "wave" "#music/contagion/L4D_Rabies_10.wav" + } + + GameData + { + "MusicPriority" "LOW" + "MusicTrack" "ambient" + "MusicFadeOut" "1.0" + + } +} + diff --git a/gamemodes/tf/gamemode/contents/l4d2_game_sounds_player.lua b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_player.lua new file mode 100644 index 000000000..8317fb1ca --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_player.lua @@ -0,0 +1,406 @@ +"Player.ShoeScuff" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "player/footsteps/survivor/shoe_scuff1.wav" + "wave" "player/footsteps/survivor/shoe_scuff2.wav" + "wave" "player/footsteps/survivor/shoe_scuff3.wav" + "wave" "player/footsteps/survivor/shoe_scuff4.wav" + } +} + +"Player.JumpLand" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "0.85" + "pitch" "95,105" + "rndwave" + { + "wave" "player/jumplanding.wav" + "wave" "player/jumplanding2.wav" + "wave" "player/jumplanding3.wav" + "wave" "player/jumplanding4.wav" + } +} + +"PlayerZombie.JumpLand" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "0.55" + "pitch" "95,105" + "wave" "player/jumplanding_zombie.wav" +} + +"Player.HeartbeatLoop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "wave" "player/HeartbeatLoop.wav" +} + +"Player.LaserOn" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "wave" ")player/laser_on.wav" +} + +"Player.AmmoPackUse" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "wave" "player/ammo_pack_use.wav" +} + +"Flesh.ImpactNormal" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "rndwave" + { + "wave" "physics/body/body_medium_impact_soft1.wav" + "wave" "physics/body/body_medium_impact_soft2.wav" + "wave" "physics/body/body_medium_impact_soft3.wav" + "wave" "physics/body/body_medium_impact_soft4.wav" + "wave" "physics/body/body_medium_impact_soft5.wav" + "wave" "physics/body/body_medium_impact_soft6.wav" + "wave" "physics/body/body_medium_impact_soft7.wav" + } +} + +"Blood.Spurt" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_65dB" + "pitch" "95,105" + "rndwave" + { + "wave" ")player/survivor/splat/blood_spurt1.wav" + "wave" ")player/survivor/splat/blood_spurt2.wav" + "wave" ")player/survivor/splat/blood_spurt3.wav" + } +} + +"Blood.Splat" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_55dB" + "volume" "0.15,0.30" + "pitch" "95,105" + "rndwave" + { + "wave" "player/survivor/splat/zombie_blood_spray_01.wav" + "wave" "player/survivor/splat/zombie_blood_spray_02.wav" + "wave" "player/survivor/splat/zombie_blood_spray_03.wav" + "wave" "player/survivor/splat/zombie_blood_spray_04.wav" + "wave" "player/survivor/splat/zombie_blood_spray_05.wav" + "wave" "player/survivor/splat/zombie_blood_spray_06.wav" + } +} + +"Weapon.Swing" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.70" + "pitch" "95,105" + "rndwave" + { + "wave" ")player/survivor/swing/Swish_WeaponSwing_Swipe5.wav" + "wave" ")player/survivor/swing/Swish_WeaponSwing_Swipe6.wav" + } +} + +"Weapon.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + "wave" "player/survivor/hit/rifle_swing_hit_world.wav" +} + +"Melee.HitWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + "wave" "player/survivor/hit/melee_swing_hit_world.wav" +} + +"Weapon.HitSurvivor" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + "rndwave" + { + "wave" "player/survivor/hit/rifle_swing_hit_survivor1.wav" + "wave" "player/survivor/hit/rifle_swing_hit_survivor2.wav" + } +} + +"Weapon.HitInfected" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_70dB" + "volume" "0.80" + "rndwave" + { + "wave" "player/survivor/hit/rifle_swing_hit_infected7.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected8.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected9.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected10.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected11.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected12.wav" + } +} + +"Weapon.HitBoomer" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "rndwave" + { + "wave" "player/survivor/hit/rifle_swing_hit_infected7.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected8.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected9.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected10.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected11.wav" + "wave" "player/survivor/hit/rifle_swing_hit_infected12.wav" + } +} + +"Weapon.HitClown" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "pitch" "95,105" + "rndwave" + { + "wave" "player/survivor/hit/rifle_swing_hit_clown.wav" + "wave" "player/survivor/hit/rifle_swing_hit_clown2.wav" + "wave" "player/survivor/hit/rifle_swing_hit_clown3.wav" + "wave" "player/survivor/hit/rifle_swing_hit_clown4.wav" + "wave" "player/survivor/hit/rifle_swing_hit_clown5.wav" + "wave" "player/survivor/hit/rifle_swing_hit_clown6.wav" + } +} + +"Player.BandagingWounds" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_IDLE" + "volume" "0.60" + "wave" "player/survivor/heal/bandaging_1.wav" +} + +"Player.StopVoice" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "wave" "common/null.wav" +} + +"Player.StopItem" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "wave" "common/null.wav" +} + +"Player.StopBody" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_NORM" + "wave" "common/null.wav" +} + +"Player.TongueResist" +{ + "channel" "CHAN_VOICE" + "volume" "VOL_NORM" + "soundlevel" "SNDLVL_90dB" + "pitch" "PITCH_NORM" + "wave" "player/survivor/voice/blank.wav" + + +} + +"Player.Choke" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" "player/survivor/voice/choke_1.wav" + "wave" "player/survivor/voice/choke_2.wav" + "wave" "player/survivor/voice/choke_3.wav" + "wave" "player/survivor/voice/choke_4.wav" + "wave" "player/survivor/voice/choke_5.wav" + "wave" "player/survivor/voice/choke_6.wav" + "wave" "player/survivor/voice/choke_7.wav" + "wave" "player/survivor/voice/choke_8.wav" + "wave" "player/survivor/voice/choke_9.wav" + } +} + +"Player.Fall" +{ + "channel" "CHAN_VOICE" + "volume" "1" + "soundlevel" "SNDLVL_90dB" + "pitch" "90, 100" + "rndwave" + { + "wave" "player/survivor/voice/$survivor/Fall01.wav" + "wave" "player/survivor/voice/$survivor/Fall02.wav" + "wave" "player/survivor/voice/$survivor/Fall03.wav" + "wave" "player/survivor/voice/$survivor/Fall04.wav" + } +} + +"Player.ScreamWhilePounced" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_100dB" + "pitch" "90,100" + "rndwave" + { + "wave" "player/survivor/voice/$survivor/ScreamWhilePounced01.wav" + "wave" "player/survivor/voice/$survivor/ScreamWhilePounced02.wav" + "wave" "player/survivor/voice/$survivor/ScreamWhilePounced03.wav" + } +} + +"Claw.Swing" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" "player/PZ/miss/claw_miss_1.wav" + "wave" "player/PZ/miss/claw_miss_2.wav" + } +} + +"Claw.Hit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" "player/PZ/hit/claw_scrape_1.wav" + "wave" "player/PZ/hit/claw_scrape_2.wav" + "wave" "player/PZ/hit/claw_scrape_3.wav" + "wave" "player/PZ/hit/claw_scrape_4.wav" + "wave" "player/PZ/hit/claw_scrape_5.wav" + "wave" "player/PZ/hit/claw_scrape_6.wav" + } +} + +"Claw.HitFlesh" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "player/PZ/hit/claw_hit_flesh_1.wav" + "wave" "player/PZ/hit/claw_hit_flesh_2.wav" + "wave" "player/PZ/hit/claw_hit_flesh_3.wav" + "wave" "player/PZ/hit/claw_hit_flesh_4.wav" + } +} + +"PainPills.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" "player/items/pain_pills/pills_deploy_1.wav" + "wave" "player/items/pain_pills/pills_deploy_2.wav" + "wave" "player/items/pain_pills/pills_deploy_3.wav" + } +} + +"PainPills.Use" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "wave" "player/items/pain_pills/pills_use_1.wav" +} + +"Player.Heartbeat" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "wave" "player/HeartbeatLoop.wav" +} + +"Player.HitInternal" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_70dB" + "volume" "0.50,0.70" + "pitch" "95,105" + "rndwave" + { + "wave" "player/survivor/hit/int/Punch_Boxing_BodyHit03.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_BodyHit04.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_FaceHit1.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_FaceHit2.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_FaceHit3.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_FaceHit4.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_FaceHit5.wav" + "wave" "player/survivor/hit/int/Punch_Boxing_FaceHit6.wav" + } +} + +"Player.AwardUpgrade" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "player/orch_hit_Csharp_short.wav" +} + +"Player.NeckSnap" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "wave" "player/neck_snap_01.wav" +} + +"Player.UsingColaBottles" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "wave" "player/items/attach_cola_bottles_01.wav" +} + +"Player.UsingGasCan" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "0.75" + "wave" "player/items/gas_can_fill_pour_01.wav" +} + +"Player.UsingGasCanStop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "volume" "0.75" + "wave" "player/items/gas_can_fill_interrupt_01.wav" +} + diff --git a/gamemodes/tf/gamemode/contents/l4d2_game_sounds_weapons.lua b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_weapons.lua new file mode 100644 index 000000000..e51f5bb70 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/l4d2_game_sounds_weapons.lua @@ -0,0 +1,3089 @@ +"Bullets.DefaultNearmiss" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_96dB" + "rndwave" + { + "wave" ">weapons/fx/nearmiss/bulletLtoR08.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR10.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR11.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR13.wav" + "wave" ">weapons/fx/nearmiss/bulletLtoR14.wav" + } +} + +"FX_RicochetSound.Ricochet" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_96dB" + "volume" "0.70" + "rndwave" + { + "wave" "weapons/fx/rics/ric1.wav" + "wave" "weapons/fx/rics/ric3.wav" + "wave" "weapons/fx/rics/ric4.wav" + "wave" "weapons/fx/rics/ric6.wav" + "wave" "weapons/fx/rics/ric7.wav" + "wave" "weapons/fx/rics/ric8.wav" + "wave" "weapons/fx/rics/ric9.wav" + } +} + +"50cal.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "volume" "0.75" + "wave" ")weapons/50cal/50cal_shoot.wav" +} + +"Magnum.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "pitch" "97,103" + "wave" ")weapons/magnum/gunfire/magnum_shoot.wav" +} + +"Magnum.Deploy" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/magnum/gunother/pistol_deploy_1.wav" +} + +"Magnum.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/magnum/gunother/pistol_clip_in_1.wav" +} + +"Magnum.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/magnum/gunother/pistol_clip_out_1.wav" +} + +"Magnum.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/magnum/gunother/pistol_clip_locked_1.wav" +} + +"Magnum.Slideback" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/magnum/gunother/pistol_slideback_1.wav" +} + +"Magnum.SlideForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/magnum/gunother/pistol_slideforward_1.wav" +} + +"Magnum.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/magnum/gunother/pistol_helpinghandretract.wav" +} + +"Magnum.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/magnum/gunother/pistol_helpinghandextend.wav" +} + +"Magnum.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/magnum/gunother/pistol_helpinghandretract.wav" +} + +"Magnum.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/magnum/gunother/pistol_helpinghandextend.wav" +} + +"Pistol.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"Pistol.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"Pistol.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"Pistol.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"Pistol.Deploy" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/pistol/gunother/pistol_deploy_1.wav" +} + +"Pistol.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_clip_in_1.wav" +} + +"Pistol.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_clip_out_1.wav" +} + +"Pistol.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_clip_locked_1.wav" +} + +"Pistol.Slideback" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_slideback_1.wav" +} + +"Pistol.SlideForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_slideforward_1.wav" +} + +"Pistol.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.7" + "wave" ")weapons/pistol/gunfire/pistol_fire.wav" +} + +"Pistol.DualFire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.7" + "pitch" "95,105" + "wave" ")weapons/pistol/gunfire/pistol_dual_fire.wav" +} + +"Pistol_Silver.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"Pistol_Silver.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"Pistol_Silver.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"Pistol_Silver.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"Pistol_Silver.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/pistol_silver/gunother/pistol_silver_deploy_1.wav" +} + +"Pistol_Silver.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/pistol/gunother/pistol_clip_in_1.wav" +} + +"Pistol_Silver.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/pistol/gunother/pistol_clip_out_1.wav" +} + +"Pistol_Silver.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/pistol/gunother/pistol_clip_locked_1.wav" +} + +"Pistol_Silver.Slideback" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/pistol/gunother/pistol_slideback_1.wav" +} + +"Pistol_Silver.SlideForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/pistol/gunother/pistol_slideforward_1.wav" +} + +"Pistol_Silver.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.65" + "wave" ")weapons/pistol_silver/gunfire/pistol_fire.wav" +} + +"DualPistol.Deploy" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" "weapons/dual_pistol/gunother/dualpistol_deploy_1.wav" +} + +"DualPistol.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/dual_pistol/gunother/dualpistol_clip_in_1.wav" +} + +"DualPistol.ClipOut" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/dual_pistol/gunother/dualpistol_clip_out_1.wav" +} + +"DualPistol.SlideBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_slideback_1.wav" +} + +"DualPistol.SlideForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_slideforward_1.wav" +} + +"Dualpistol.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pistol/gunother/pistol_clip_locked_1.wav" +} + + +"DualPistol.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"DualPistol.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"DualPistol.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"DualPistol.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"DualPistol.Ready" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" "weapons/dual_pistol/gunother/dualpistol_deploy_1.wav" +} + +"SMG.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"SMG.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"SMG.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"SMG.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"SMG.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/smg/gunother/smg_deploy_1.wav" +} + +"SMG.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/SMG/gunother/smg_clip_in_1.wav" +} + +"SMG.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/SMG/gunother/smg_clip_out_1.wav" +} + +"SMG.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/SMG/gunother/smg_clip_locked_1.wav" +} + +"SMG.SlideBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/SMG/gunother/smg_slideback_1.wav" +} + +"SMG.SlideForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/SMG/gunother/smg_slideforward_1.wav" +} + +"SMG.FullAutoButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/SMG/gunother/smg_fullautobutton_1.wav" +} + +"SMG.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/SMG/gunfire/smg_fire_1.wav" +} + +"SMG.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/SMG/gunfire/smg_fire_1_incendiary.wav" +} + +"SMG_Silenced.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"SMG_Silenced.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"SMG_Silenced.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/pistol/gunother/pistol_helpinghandextend.wav" +} + +"SMG_Silenced.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/pistol/gunother/pistol_helpinghandretract.wav" +} + +"SMG_Silenced.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/smg_silenced/gunother/smg_silenced_deploy_1.wav" +} + +"SMG_Silenced.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/smg_silenced/gunother/smg_clip_in_1.wav" +} + +"SMG_Silenced.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/smg_silenced/gunother/smg_clip_out_1.wav" +} + +"SMG_Silenced.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/smg_silenced/gunother/smg_clip_locked_1.wav" +} + +"SMG_Silenced.SlideBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/smg_silenced/gunother/smg_slideback_1.wav" +} + +"SMG_Silenced.SlideForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/smg_silenced/gunother/smg_slideforward_1.wav" +} + +"SMG_Silenced.FullAutoButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/smg_silenced/gunother/smg_fullautobutton_1.wav" +} + +"SMG_Silenced.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/SMG_silenced/gunfire/smg_fire_1.wav" +} + +"SMG_Silenced.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/SMG_silenced/gunfire/smg_fire_1_incendiary.wav" +} + +"Shotgun_Chrome.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/shotgun_chrome/gunfire/shotgun_fire_1.wav" +} + +"Shotgun_Chrome.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/shotgun_chrome/gunfire/shotgun_fire_1_incendiary.wav" +} + + +"Shotgun_Chrome.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.82,0.85" + "wave" ")weapons/shotgun_chrome/gunother/shotgun_deploy_1.wav" +} + +"Shotgun_Chrome.LoadShell" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.67,0.80" + "pitch" "90,105" + "rndwave" + { + "wave" "weapons/shotgun_chrome/gunother/shotgun_load_shell_2.wav" + "wave" "weapons/shotgun_chrome/gunother/shotgun_load_shell_4.wav" + } +} + +"Shotgun_Chrome.Pump" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.62,0.78" + "wave" "weapons/shotgun_chrome/gunother/shotgun_pump_1.wav" +} + +"Shotgun.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Shotgun.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Shotgun.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Shotgun.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.62,0.78" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Shotgun.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.82,0.85" + "wave" ")weapons/shotgun/gunother/shotgun_deploy_1.wav" +} + +"Shotgun.LoadShell" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.67,0.80" + "pitch" "90,105" +// "wave" "weapons/shotgun/gunother/shotgun_load_shell_4.wav" + "rndwave" + { + "wave" "weapons/shotgun/gunother/shotgun_load_shell_2.wav" + "wave" "weapons/shotgun/gunother/shotgun_load_shell_4.wav" + } +} + +"Shotgun.Pump" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.62,0.78" + "wave" "weapons/shotgun/gunother/shotgun_pump_1.wav" +} + +"Shotgun.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + //"volume" "0.67,0.80" + "wave" ")weapons/shotgun/gunfire/shotgun_fire_1.wav" +} + +"Shotgun.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/shotgun/gunfire/shotgun_fire_1_incendiary.wav" +} + +"AutoShotgun_Spas.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/auto_shotgun_spas/gunfire/shotgun_fire_1.wav" +} + +"AutoShotgun_Spas.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/auto_shotgun_spas/gunfire/shotgun_fire_1_incendiary.wav" +} + +"AutoShotgun_Spas.Pump" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.62,0.78" + "wave" "weapons/auto_shotgun_spas/gunother/autoshotgun_pump_1.wav" +} + + +"AutoShotgun_Spas.BoltBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/auto_shotgun_spas/gunother/autoshotgun_boltback.wav" +} + +"AutoShotgun_Spas.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/auto_shotgun_spas/gunother/autoshotgun_boltforward.wav" +} + +"AutoShotgunSpas.Deploy" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/auto_shotgun_spas/gunother/autoshotgun_deploy_1.wav" +} + +"AutoShotgun_Spas.LoadShell" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.60" + "pitch" "90,105" + "rndwave" + { + "wave" "weapons/auto_shotgun_spas/gunother/auto_shotgun_load_shell_2.wav" + "wave" "weapons/auto_shotgun_spas/gunother/auto_shotgun_load_shell_4.wav" + } +} + + +"AutoShotgun.BoltBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/auto_shotgun/gunother/autoshotgun_boltback.wav" +} + +"AutoShotgun.BoltForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/auto_shotgun/gunother/autoshotgun_boltforward.wav" +} + +"AutoShotgun.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"AutoShotgun.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"AutoShotgun.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"AutoShotgun.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"AutoShotgun.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/auto_shotgun/gunother/autoshotgun_deploy_1.wav" +} + +"AutoShotgun.LoadShell" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.60" + "pitch" "90,105" + //"wave" "weapons/auto_shotgun/gunother/auto_shotgun_load_shell_4.wav" + "rndwave" + { + "wave" "weapons/auto_shotgun/gunother/auto_shotgun_load_shell_2.wav" + "wave" "weapons/auto_shotgun/gunother/auto_shotgun_load_shell_4.wav" + } +} + +"AutoShotgun.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/auto_shotgun/gunfire/auto_shotgun_fire_1.wav" +} + +"AutoShotgun.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/auto_shotgun/gunfire/auto_shotgun_fire_1_Incendiary.wav" +} + +"HuntingRifle.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"HuntingRifle.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"HuntingRifle.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"HuntingRifle.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"HuntingRifle.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/hunting_rifle/gunother/hunting_rifle_deploy_1.wav" +} + +"HuntingRifle.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_clipin.wav" +} + +"HuntingRifle.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_clipout.wav" +} + +"HuntingRifle.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_cliplocked.wav" +} + +"HuntingRifle.Boltback" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_boltback.wav" +} + +"HuntingRifle.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_boltforward.wav" +} + +"HuntingRifle.PushButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_push_button_1.wav" +} + +"HuntingRifle.Zoom" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.75" + "wave" "weapons/hunting_rifle/gunother/hunting_rifle_zoom.wav" +} + +"HuntingRifle.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/hunting_rifle/gunfire/hunting_rifle_fire_1.wav" +} + +"HuntingRifle.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/hunting_rifle/gunfire/hunting_rifle_fire_1_Incendiary.wav" +} + +"Sniper_Military.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Sniper_Military.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Sniper__Military.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Sniper_Military.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Sniper_Military.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/sniper_military/gunother/sniper_military_deploy_1.wav" +} + +"Sniper_Military.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sniper_military/gunother/sniper_military_clip_in_1.wav" +} + +"Sniper_Military.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sniper_military/gunother/sniper_military_clip_out_1.wav" +} + +"Sniper_Military.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sniper_military/gunother/sniper_military_clip_locked_1.wav" +} + +"Sniper_Military.Boltback" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sniper_military/gunother/sniper_military_slideback_1.wav" +} + +"Sniper_Military.BoltForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sniper_military/gunother/sniper_military_slideforward_1.wav" +} + +"Sniper_Military.PushButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/sniper_military/gunother/sniper_military_push_button_1.wav" +} + +"Sniper_Military.Zoom" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.75" + "wave" "weapons/sniper_military/gunother/sniper_military_zoom.wav" +} + +"Sniper_Military.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.85" + "wave" ")weapons/sniper_military/gunfire/sniper_military_fire_1.wav" +} + +"Sniper_Military.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.85" + "wave" ")weapons/sniper_military/gunfire/sniper_military_fire_1_Incendiary.wav" +} + +"Rifle.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Rifle.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Rifle.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Rifle.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Rifle.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/rifle/gunother/rifle_deploy_1.wav" +} + +"Rifle.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle/gunother/rifle_clip_in_1.wav" +} + +"Rifle.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle/gunother/rifle_clip_out_1.wav" +} + +"Rifle.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle/gunother/rifle_clip_locked_1.wav" +} + +"Rifle.SlideBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle/gunother/rifle_slideback_1.wav" +} + +"Rifle.SlideForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.60" + "wave" ")weapons/rifle/gunother/rifle_slideforward_1.wav" +} + +"Rifle.PushButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "pitch" "90,110" + "wave" ")weapons/rifle/gunother/rifle_ready_1.wav" +} + +"Rifle.FullAutoButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle/gunother/rifle_fullautobutton_1.wav" +} + +"Rifle.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/rifle/gunfire/rifle_fire_1.wav" +} + +"Rifle.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/rifle/gunfire/rifle_fire_1_incendiary.wav" +} + +"Rifle_Desert.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Rifle_Desert.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Rifle_Desert.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Rifle_Desert.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Rifle_Desert.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/rifle_desert/gunother/rifle_deploy_1.wav" +} + +"Rifle_Desert.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_desert/gunother/rifle_clip_in_1.wav" +} + +"Rifle_Desert.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_desert/gunother/rifle_clip_out_1.wav" +} + +"Rifle_Desert.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_desert/gunother/rifle_clip_locked_1.wav" +} + +"Rifle_Desert.SlideBack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_desert/gunother/rifle_slideback_1.wav" +} + +"Rifle_Desert.SlideForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_desert/gunother/rifle_slideforward_1.wav" +} + +"Rifle_Desert.PushButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "pitch" "90,110" + "wave" ")weapons/rifle_desert/gunother/rifle_ready_1.wav" +} + +"Rifle_Desert.FullAutoButton" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_desert/gunother/rifle_fullautobutton_1.wav" +} + +"Rifle_Desert.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/rifle_desert/gunfire/rifle_fire_1.wav" +} + +"Rifle_Desert.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/rifle_desert/gunfire/rifle_fire_1_incendiary.wav" +} + +"AK47.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.70" + "wave" ")weapons/rifle_ak47/gunfire/rifle_fire_1.wav" +} + +"AK47.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.70" + "wave" ")weapons/rifle_ak47/gunfire/rifle_fire_1_incendiary.wav" +} + +"AK47.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/rifle_ak47/gunother/rifle_deploy_1.wav" +} + +"AK47.ClipOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_ak47/gunother/rifle_clip_out_1.wav" +} + +"AK47.ClipIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_ak47/gunother/rifle_clip_in_1.wav" +} + +"AK47.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_ak47/gunother/rifle_clip_locked_1.wav" +} + +"AK47.SlideBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_ak47/gunother/rifle_slideback.wav" +} + +"AK47.SlideForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/rifle_ak47/gunother/rifle_slideforward.wav" +} + +"Ak47.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Ak47.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Ak47.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"Ak47.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"GrenadeLauncher.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "volume" "0.80" + "wave" ")weapons/grenade_launcher/grenadefire/grenade_launcher_fire_1.wav" +} + +"GrenadeLauncher.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_GUNFIRE" + "wave" ")weapons/grenade_launcher/grenadefire/grenade_launcher_explode_2.wav" +} + +"GrenadeLauncher.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/grenade_launcher/grenadeother/grenade_launcher_deploy_1.wav" +} + +"GrenadeLauncher.LatchOpen" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/grenade_launcher/grenadeother/grenade_launcher_latchopen.wav" +} + +"GrenadeLauncher.ShellOut" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/grenade_launcher/grenadeother/grenade_launcher_shellout.wav" +} + +"GrenadeLauncher.ShellIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/grenade_launcher/grenadeother/grenade_launcher_shellin.wav" +} + +"GrenadeLauncher.ActionClosed" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/grenade_launcher/grenadeother/grenade_launcher_actionclosed.wav" +} + +"GrenadeLauncher.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"GrenadeLauncher.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"GrenadeLauncher.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" ")weapons/rifle/gunother/rifle_helpinghandextend.wav" +} + +"GrenadeLauncher.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" ")weapons/rifle/gunother/rifle_helpinghandretract.wav" +} + +"Chainsaw.Start" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.90" + "rndwave" + { + "wave" ")weapons/chainsaw/chainsaw_start_01.wav" + "wave" ")weapons/chainsaw/chainsaw_start_02.wav" + } +} + +"Chainsaw.Idle" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.45" + "wave" ")weapons/chainsaw/chainsaw_idle_lp_01.wav" +} + +"Chainsaw.FullThrottle" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/chainsaw/chainsaw_high_speed_lp_01.wav" +} + +"Chainsaw.Die" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.7" + "wave" ")weapons/chainsaw/chainsaw_die_01.wav" +} + +"Chainsaw.Stop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.65" + "wave" ")weapons/chainsaw/chainsaw_die_01.wav" +} + +"Chainsaw.Gore" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_NORM" + "pitch" "90,105" + "rndwave" + { + "wave" ")npc/infected/gore/melee/chainsaw_gore_01.wav" + "wave" ")npc/infected/gore/melee/chainsaw_gore_02.wav" + "wave" ")npc/infected/gore/melee/chainsaw_gore_03.wav" + "wave" ")npc/infected/gore/melee/chainsaw_gore_04.wav" + "wave" ")npc/infected/gore/melee/chainsaw_gore_05.wav" + "wave" ")npc/infected/gore/melee/chainsaw_gore_06.wav" + } +} + +"Minigun.SpinUp" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/minigun/gunother/minigun_wind_up.wav" +} + +"Minigun.Fire" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/minigun/gunfire/minigun_fire.wav" +} + +"Minigun.SpinDown" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_94dB" + "wave" ")weapons/minigun/gunother/minigun_wind_down.wav" +} + +"CedaJar.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_85dB" + "wave" ")weapons/ceda_jar/ceda_jar_explode.wav" +} + +"CedaJar.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"CedaJar.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"CedaJar.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"CedaJar.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Adrenaline.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Adrenaline.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Adrenaline.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Adrenaline.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Adrenaline.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" "common/wpn_hudoff.wav" +} + +"Adrenaline.CapOff" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/adrenaline/adrenaline_cap_off.wav" +} + +"Adrenaline.NeedleOpen" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/adrenaline/adrenaline_needle_open.wav" +} + +"Adrenaline.NeedleIn" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/adrenaline/adrenaline_needle_in.wav" +} + +"Molotov.Throw" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "wave" "weapons/molotov/fire_ignite_2.wav" +} + +"Molotov.Loop" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/molotov/fire_loop_1.wav" +} + +"Molotov.IdleLoop" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/molotov/fire_idle_loop_1.wav" +} + +"Inferno.Start" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_90dB" + "wave" ")weapons/molotov/molotov_detonate_3.wav" +} + +"Inferno.StartSweeten" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_95dB" + "wave" ")weapons/molotov/molotov_detonate_swt_01.wav" +} + +"Inferno.FadeOut" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_95dB" + "volume" "0.30" + "wave" "weapons/molotov/fire_loop_fadeout_01.wav" +} + +"Inferno.Loop" +{ + "channel" "CHAN_BODY" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/molotov/fire_loop_1.wav" +} + +"Inferno.Fire.Ignite" +{ + "channel" "CHAN_AUTO" + "soundlevel" "SNDLVL_85dB" + "rndwave" + { + "wave" "weapons/molotov/fire_ignite_1.wav" + "wave" "weapons/molotov/fire_ignite_4.wav" + "wave" "weapons/molotov/fire_ignite_5.wav" + } +} + +"Molotov.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Molotov.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Molotov.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Molotov.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"FireworksCrate.Start" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_110dB" + "volume" "0.57" + "wave" ")player/items/LOUD_firewerks_crate_explo_01.wav" +} + +"FireworksCrate.Stop" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "wave" "common/null.wav" +} + +"Weapon_Knife.Hit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "player/PZ/hit/claw_hit_flesh_1.wav" + "wave" "player/PZ/hit/claw_hit_flesh_2.wav" + "wave" "player/PZ/hit/claw_hit_flesh_3.wav" + "wave" "player/PZ/hit/claw_hit_flesh_4.wav" + } +} + +"Weapon_Knife.HitWall" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "wave" "weapons/knife/knife_hitwall1.wav" +} + +"Weapon_Knife.Slash" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" "npc/infected/miss/claw_miss_1.wav" + "wave" "npc/infected/miss/claw_miss_2.wav" + } +} + +"Weapon_Knife.Stab" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" "player/PZ/hit/claw_hit_flesh_1.wav" + "wave" "player/PZ/hit/claw_hit_flesh_2.wav" + "wave" "player/PZ/hit/claw_hit_flesh_3.wav" + "wave" "player/PZ/hit/claw_hit_flesh_4.wav" + } +} + +"HEGrenade.Bounce" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hegrenade/he_bounce-1.wav" +} + +"Default.ClipEmpty_Rifle" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/ClipEmpty_Rifle.wav" +} + +"Default.ClipEmpty_Pistol" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/ClipEmpty_Pistol.wav" +} + +"Default.Zoom" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.75" + "pitch" "96,104" + "wave" ")weapons/hunting_rifle/gunother/hunting_rifle_zoom.wav" +} + +"BaseGrenade.Explode" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_GUNFIRE" + "wave" ")weapons/hegrenade/explode3.wav" +} + +"BaseExplosionEffect.Sound" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_85dB" + "pitch" "80,110" + "rndwave" + { + "wave" "weapons/debris1.wav" + "wave" "weapons/debris2.wav" + } +} + +"BaseCombatWeapon.WeaponDrop" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80" + "pitch" "95,110" + "rndwave" + { + "wave" "physics/metal/weapon_impact_hard1.wav" + "wave" "physics/metal/weapon_impact_hard2.wav" + "wave" "physics/metal/weapon_impact_hard3.wav" + } +} + +"BaseCombatWeapon.WeaponMaterialize" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "150" + "wave" "items/suitchargeok1.wav" +} + +"Knife.StabHunter" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_150dB" + "wave" "weapons/knife/knife_hitwall1.wav" +} + +"Knife.BreakTongue" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_150dB" + "wave" "weapons/knife/knife_hitwall1.wav" +} + +"BlindingFlash" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_150dB" + "wave" "weapons/flash/flash01.wav" +} + +"PipeBomb.TimerBeep" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_90dB" + "volume" "0.75" + "wave" "weapons/hegrenade/beep.wav" + + "GameData" + { + "Priority" "Interesting" + "Reaction" "SeekAndDestroy" + } +} + +"PipeBomb.Bounce" +{ + "channel" "CHAN_VOICE" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/hegrenade/he_bounce-1.wav" +} + +"PipeBomb.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"PipeBomb.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"PipeBomb.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"PipeBomb.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"PipeBomb.DryDebris" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.60" + "rndwave" + { + "wave" ")physics/explosion/post_grenade_dirt_debris_01.wav" + "wave" ")physics/explosion/post_grenade_dirt_debris_02.wav" + } +} + +"PipeBomb.WetDebris" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "volume" "0.60" + "rndwave" + { + "wave" ")physics/explosion/post_grenade_fleshy_debris_01.wav" + "wave" ")physics/explosion/post_grenade_fleshy_debris_02.wav" + } +} + +"Melee.Hit" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "wave" "player/survivor/hit/int/punch_boxing_facehit4.wav" +} + +"Melee.HitWorld" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "wave" "weapons/knife/knife_hitwall1.wav" +} + +"Melee.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")player/survivor/swing/swing_miss1.wav" + "wave" ")player/survivor/swing/swing_miss2.wav" + } +} + +"Melee.HitLimb" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.70" + "pitch" "95,105" + "rndwave" + { + "wave" ")npc/infected/gore/melee/melee_arm_break_01.wav" + "wave" ")npc/infected/gore/melee/melee_arm_break_02.wav" + } +} + +"Melee.HitHead" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.67,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")npc/infected/gore/melee/melee_skull_break_01.wav" + "wave" ")npc/infected/gore/melee/melee_skull_break_02.wav" + } +} + +"Melee.HitBody" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.70" + "pitch" "95,105" + "wave" "player/survivor/hit/int/punch_boxing_facehit4.wav" +} + +"Axe.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/axe/axe_swing_miss1.wav" + "wave" ")weapons/axe/axe_swing_miss2.wav" + } +} + +"Axe.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/axe/axe_impact_flesh1.wav" + "wave" ")weapons/axe/axe_impact_flesh2.wav" + "wave" ")weapons/axe/axe_impact_flesh3.wav" + "wave" ")weapons/axe/melee_axe_01.wav" + "wave" ")weapons/axe/melee_axe_02.wav" + "wave" ")weapons/axe/melee_axe_03.wav" + } +} + +"Axe.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" ")weapons/axe/axe_impact_world1.wav" + "wave" ")weapons/axe/axe_impact_world2.wav" + } +} + +"Axe.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/axe/axe_break.wav" +} + +"Axe.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Axe.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Axe.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Axe.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Axe.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/axe/axe_deploy_1.wav" +} + +"Pan.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/pan/pan_swing_miss1.wav" + "wave" ")weapons/pan/pan_swing_miss2.wav" + } +} + +"Pan.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "rndwave" + { + "wave" ")weapons/pan/melee_frying_pan_01.wav" + "wave" ")weapons/pan/melee_frying_pan_02.wav" + "wave" ")weapons/pan/melee_frying_pan_03.wav" + "wave" ")weapons/pan/melee_frying_pan_04.wav" + } +} + +"Pan.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75" + "rndwave" + { + "wave" ")weapons/pan/pan_impact_world1.wav" + "wave" ")weapons/pan/pan_impact_world2.wav" + "wave" ")weapons/pan/pan_impact_world3.wav" + } +} + +"Pan.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pan/pan_break.wav" +} + +"Pan.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Pan.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Pan.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Pan.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Pan.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/pan/pan_deploy_1.wav" +} + +"Machete.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/machete/machete_swing_miss1.wav" + "wave" ")weapons/machete/machete_swing_miss2.wav" + } +} + +"Machete.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/machete/machete_impact_flesh1.wav" + "wave" ")weapons/machete/machete_impact_flesh2.wav" + } +} + +"Machete.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/machete/machete_impact_world1.wav" + "wave" ")weapons/machete/machete_impact_world2.wav" + } +} + +"Machete.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pan/pan_break.wav" +} + +"Machete.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Machete.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Machete.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Machete.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Machete.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/machete/machete_deploy_1.wav" +} + +"Katana.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/katana/katana_swing_miss1.wav" + "wave" ")weapons/katana/katana_swing_miss2.wav" + } +} + +"Katana.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/katana/melee_katana_01.wav" + "wave" ")weapons/katana/melee_katana_02.wav" + "wave" ")weapons/katana/melee_katana_03.wav" + } +} + +"Katana.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/katana/katana_impact_world1.wav" + "wave" ")weapons/katana/katana_impact_world2.wav" + } +} + +"Katana.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pan/pan_break.wav" +} + +"Katana.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Katana.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Katana.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Katana.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Katana.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/katana/katana_deploy_1.wav" +} + +"Guitar.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/guitar/guitar_swing_miss1.wav" + "wave" ")weapons/guitar/guitar_swing_miss2.wav" + } +} + +"Guitar.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/guitar/melee_guitar_01.wav" + "wave" ")weapons/guitar/melee_guitar_02.wav" + "wave" ")weapons/guitar/melee_guitar_03.wav" + "wave" ")weapons/guitar/melee_guitar_04.wav" + "wave" ")weapons/guitar/melee_guitar_05.wav" + "wave" ")weapons/guitar/melee_guitar_07.wav" + "wave" ")weapons/guitar/melee_guitar_08.wav" + "wave" ")weapons/guitar/melee_guitar_10.wav" + "wave" ")weapons/guitar/melee_guitar_11.wav" + "wave" ")weapons/guitar/melee_guitar_12.wav" + "wave" ")weapons/guitar/melee_guitar_13.wav" + "wave" ")weapons/guitar/melee_guitar_14.wav" + } +} + +"Guitar.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/guitar/guitar_hit_world_01.wav" + "wave" ")weapons/guitar/guitar_hit_world_02.wav" + "wave" ")weapons/guitar/guitar_hit_world_03.wav" + "wave" ")weapons/guitar/guitar_hit_world_04.wav" + "wave" ")weapons/guitar/guitar_hit_world_05.wav" + } +} + +"Guitar.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pan/pan_break.wav" +} + +"Guitar.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Guitar.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Guitar.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Guitar.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Guitar.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/guitar/guitar_deploy_1.wav" +} + +"Bat.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/bat/bat_swing_miss1.wav" + "wave" ")weapons/bat/bat_swing_miss2.wav" + } +} + +"Bat.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/bat/melee_cricket_bat_01.wav" + "wave" ")weapons/bat/melee_cricket_bat_02.wav" + "wave" ")weapons/bat/melee_cricket_bat_03.wav" + } +} + +"Bat.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/bat/bat_impact_world1.wav" + "wave" ")weapons/bat/bat_impact_world2.wav" + } +} + +"Bat.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pan/pan_break.wav" +} + +"Bat.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Bat.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Bat.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Bat.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Bat.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/bat/bat_deploy_1.wav" +} + +"CricketBat.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/cricketbat/bat_swing_miss1.wav" + "wave" ")weapons/cricketbat/bat_swing_miss2.wav" + } +} + +"CricketBat.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/cricketbat/melee_cricket_bat_01.wav" + "wave" ")weapons/cricketbat/melee_cricket_bat_02.wav" + "wave" ")weapons/cricketbat/melee_cricket_bat_03.wav" + } +} + +"CricketBat.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/cricketbat/bat_impact_world1.wav" + "wave" ")weapons/cricketbat/bat_impact_world2.wav" + } +} + +"CricketBat.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/cricketbat/cricket_bat_deploy_1.wav" +} + +"Tonfa.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/tonfa/tonfa_swing_miss1.wav" + "wave" ")weapons/tonfa/tonfa_swing_miss2.wav" + } +} + +"Tonfa.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/tonfa/melee_tonfa_01.wav" + "wave" ")weapons/tonfa/melee_tonfa_02.wav" + } +} + +"Tonfa.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/tonfa/tonfa_impact_world1.wav" + "wave" ")weapons/tonfa/tonfa_impact_world2.wav" + } +} + +"Tonfa.Break" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/pan/pan_break.wav" +} + +"Tonfa.HelpingHandExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Tonfa.HelpingHandRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Tonfa.ItemPickupExtend" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.50" + "wave" "weapons/molotov/molotov_helpinghandextend.wav" +} + +"Tonfa.ItemPickupRetract" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.20" + "wave" "weapons/molotov/molotov_helpinghandretract.wav" +} + +"Tonfa.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/tonfa/tonfa_deploy_1.wav" +} + +"Crowbar.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/crowbar/crowbar_swing_miss1.wav" + "wave" ")weapons/crowbar/crowbar_swing_miss2.wav" + } +} + +"Crowbar.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/crowbar/crowbar_impact_flesh1.wav" + "wave" ")weapons/crowbar/crowbar_impact_flesh2.wav" + } +} + +"Crowbar.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "rndwave" + { + "wave" ")weapons/crowbar/crowbar_impact_world1.wav" + "wave" ")weapons/crowbar/crowbar_impact_world2.wav" + } +} + +"Crowbar.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/crowbar/crowbar_deploy_1.wav" +} + +"Knife.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "rndwave" + { + "wave" ")weapons/knife/knife_swing_miss1.wav" + "wave" ")weapons/knife/knife_swing_miss2.wav" + } +} + +"Knife.ImpactFlesh" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "volume" "0.75,0.80" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/knife/melee_knife_01.wav" + "wave" ")weapons/knife/melee_knife_02.wav" + } +} + +"Knife.ImpactWorld" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_TALKING" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/knife/knife_impact_world1.wav" + "wave" ")weapons/knife/knife_impact_world2.wav" + } +} + +"Defibrillator.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/defibrillator/defibrillator_deploy_1.wav" +} + +"Defibrillator.Use" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_95dB" + "wave" ")weapons/defibrillator/defibrillator_use.wav" +} + +"Defibrillator.UseStart" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_95dB" + "wave" "weapons/defibrillator/defibrillator_use_start.wav" +} + +"CS_Default.Zoom" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" "weapons/awp/gunother/zoom.wav" +} + +"Weapon_AWP.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/awp/gunfire/awp1.wav" +} + +"Weapon_AWP.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/awp/gunfire/awp1_incendiary.wav" +} + +"Weapon_AWP.Clipin" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/awp/gunother/awp_clipin.wav" +} + +"Weapon_AWP.Clipout" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/awp/gunother/awp_clipout.wav" +} + +"Weapon_AWP.Bolt" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/awp/gunother/awp_bolt.wav" +} + +"Weapon_AWP.Deploy" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/awp/gunother/awp_deploy.wav" +} + +"Weapon_AWP.BoltForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/awp/gunother/awp_bolt_forward.wav" +} + +"Weapon_Scout.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/scout/gunother/scout_deploy.wav" +} + +"Weapon_Scout.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/scout/gunfire/scout_fire-1.wav" +} + +"Weapon_Scout.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/scout/gunfire/scout_fire-1_incendiary.wav" +} + +"Weapon_Scout.BoltBack" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/scout/gunother/scout_bolt.wav" +} + +"Weapon_Scout.BoltForward" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/scout/gunother/scout_bolt_forward.wav" +} + +"Weapon_Scout.Clipout" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/scout/gunother/scout_clipout.wav" +} + +"Weapon_Scout.Clipin" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/scout/gunother/scout_clipin.wav" +} + +"Weapon_Scout.ClipLocked" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/scout/gunother/scout_clipin_locked.wav" +} + +"Weapon_MP5Navy.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/mp5navy/gunother/mp5_deploy.wav" +} + +"Weapon_MP5Navy.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/mp5Navy/gunfire/mp5-1.wav" +} + +"Weapon_MP5Navy.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/mp5Navy/gunfire/mp5-1_incendiary.wav" +} + +"Weapon_MP5Navy.Clipout" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/mp5navy/gunother/mp5_clipout.wav" +} + +"Weapon_MP5Navy.Clipin" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/mp5navy/gunother/mp5_clipin.wav" +} + +"Weapon_MP5Navy.Slideback" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/mp5navy/gunother/mp5_slideback.wav" +} + +"Weapon_SG552.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/sg552/gunother/sg552_deploy.wav" +} + +"Weapon_SG552.Single" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/sg552/gunfire/sg552-1.wav" +} + +"Weapon_SG552.FireIncendiary" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_TALKING" + "pitch" "97,103" + "wave" ")weapons/sg552/gunfire/sg552-1_incendiary.wav" +} + +"Weapon_SG552.Clipout" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sg552/gunother/sg552_clipout.wav" +} + +"Weapon_SG552.Clipin" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sg552/gunother/sg552_clipin.wav" +} + +"Weapon_SG552.BoltpullBack" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sg552/gunother/sg552_boltpull.wav" +} + +"Weapon_SG552.BoltpullForward" +{ + "channel" "CHAN_STATIC" + "soundlevel" "SNDLVL_NORM" + "wave" ")weapons/sg552/gunother/sg552_boltpullforward.wav" +} + +"Weapon_Knife.Deploy" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" "weapons/knife/knife_deploy.wav" +} + + +"Shovel.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/shovel/shovel_swing_miss1.wav" + "wave" ")weapons/shovel/shovel_swing_miss2.wav" + } +} + +"Shovel.ImpactFlesh" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/shovel/shovel_impact_flesh1.wav" + "wave" ")weapons/shovel/shovel_impact_flesh2.wav" + "wave" ")weapons/shovel/shovel_impact_flesh3.wav" + "wave" ")weapons/shovel/shovel_impact_flesh4.wav" + } +} + +"Shovel.ImpactWorld" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/shovel/shovel_impact_world1.wav" + "wave" ")weapons/shovel/shovel_impact_world2.wav" + } +} + +"Shovel.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/shovel/shovel_deploy_1.wav" +} + +"Pitchfork.ImpactFlesh" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "90,110" + "rndwave" + { + "wave" ")weapons/pitchfork/pitchfork_impact_flesh1.wav" + "wave" ")weapons/pitchfork/pitchfork_impact_flesh2.wav" + "wave" ")weapons/pitchfork/pitchfork_impact_flesh3.wav" + "wave" ")weapons/pitchfork/pitchfork_impact_flesh4.wav" + } +} + +"Pitchfork.ImpactWorld" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "pitch" "93,107" + "rndwave" + { + "wave" ")weapons/pitchfork/pitchfork_impact_world1.wav" + "wave" ")weapons/pitchfork/pitchfork_impact_world2.wav" + "wave" ")weapons/pitchfork/pitchfork_impact_world3.wav" + "wave" ")weapons/pitchfork/pitchfork_impact_world4.wav" + } +} + +"Pitchfork.Miss" +{ + "channel" "CHAN_WEAPON" + "soundlevel" "SNDLVL_NORM" + "volume" "0.9" + "pitch" "95,105" + "rndwave" + { + "wave" ")weapons/Pitchfork/Pitchfork_swing_miss1.wav" + "wave" ")weapons/Pitchfork/Pitchfork_swing_miss2.wav" + } +} + +"Pitchfork.Deploy" +{ + "channel" "CHAN_ITEM" + "soundlevel" "SNDLVL_NORM" + "volume" "0.80,0.77" + "wave" ")weapons/Pitchfork/pitchfork_deploy_1.wav" +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/lang/tf_english.lua b/gamemodes/tf/gamemode/contents/lang/tf_english.lua new file mode 100644 index 000000000..79d5cb6c5 Binary files /dev/null and b/gamemodes/tf/gamemode/contents/lang/tf_english.lua differ diff --git a/gamemodes/tf/gamemode/contents/npc_sounds_narration.lua b/gamemodes/tf/gamemode/contents/npc_sounds_narration.lua new file mode 100644 index 000000000..707207e93 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/npc_sounds_narration.lua @@ -0,0 +1,5477 @@ +//Auto-generated with the batch script! +"narration.1a_Happy_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1a_Happy_00.wav" +} +//Auto-generated with the batch script! +"narration.1a_Happy_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1a_Happy_01.wav" +} +//Auto-generated with the batch script! +"narration.1b_Whereareyougoing_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1b_Whereareyougoing_00.wav" +} +//Auto-generated with the batch script! +"narration.1c_Stayaway_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1c_Stayaway_00.wav" +} +//Auto-generated with the batch script! +"narration.1d_Donttakethis_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1d_Donttakethis_00.wav" +} +//Auto-generated with the batch script! +"narration.1e_No_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1e_No_00.wav" +} +//Auto-generated with the batch script! +"narration.1f_wherewerewe_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1f_wherewerewe_00.wav" +} +//Auto-generated with the batch script! +"narration.1g_promiseyouwontgoback_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1g_promiseyouwontgoback_00.wav" +} +//Auto-generated with the batch script! +"narration.1h_youreriskingeverything_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1h_youreriskingeverything_00.wav" +} +//Auto-generated with the batch script! +"narration.1i_stayhere_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1i_stayhere_00.wav" +} +//Auto-generated with the batch script! +"narration.1j_heardmebefore_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1j_heardmebefore_00.wav" +} +//Auto-generated with the batch script! +"narration.1k_Think_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/1k_Think_00.wav" +} +//Auto-generated with the batch script! +"narration.2a_Thankgod_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/2a_Thankgod_00.wav" +} +//Auto-generated with the batch script! +"narration.2b_wellbothgoback_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/2b_wellbothgoback_00.wav" +} +//Auto-generated with the batch script! +"narration.2b_wellbothgoback_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/2b_wellbothgoback_01.wav" +} +//Auto-generated with the batch script! +"narration.2c_stopmoving_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/2c_stopmoving_00.wav" +} +//Auto-generated with the batch script! +"narration.2d_goback_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/2d_goback_00.wav" +} +//Auto-generated with the batch script! +"narration.2e_convinceyou_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/2e_convinceyou_00.wav" +} +//Auto-generated with the batch script! +"narration.3a_letsgoback_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/3a_letsgoback_00.wav" +} +//Auto-generated with the batch script! +"narration.3b_perhapsyoucan_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/3b_perhapsyoucan_00.wav" +} +//Auto-generated with the batch script! +"narration.3c_wecantleave_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/3c_wecantleave_00.wav" +} +//Auto-generated with the batch script! +"narration.3d_perhapsnot_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/3d_perhapsnot_00.wav" +} +//Auto-generated with the batch script! +"narration.417_a_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/417_a_00.wav" +} +//Auto-generated with the batch script! +"narration.417_a_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/417_a_01.wav" +} +//Auto-generated with the batch script! +"narration.417_a_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/417_a_02.wav" +} +//Auto-generated with the batch script! +"narration.417_a_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/417_a_03.wav" +} +//Auto-generated with the batch script! +"narration.417_b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/417_b_00.wav" +} +//Auto-generated with the batch script! +"narration.4a_readingthesituation_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/4a_readingthesituation_00.wav" +} +//Auto-generated with the batch script! +"narration.4a_readingthesituation_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/4a_readingthesituation_01.wav" +} +//Auto-generated with the batch script! +"narration.4b_doyouwanttostayalive_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/4b_doyouwanttostayalive_00.wav" +} +//Auto-generated with the batch script! +"narration.4c_wantedustobehappy_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/4c_wantedustobehappy_00.wav" +} +//Auto-generated with the batch script! +"narration.5a_youwantedtomakeachoice_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/5a_youwantedtomakeachoice_00.wav" +} +//Auto-generated with the batch script! +"narration.5a_youwantedtomakeachoice_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/5a_youwantedtomakeachoice_01.wav" +} +//Auto-generated with the batch script! +"narration.6_goingback_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/6_goingback_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_10_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_10_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_11_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_11_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_12_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_12_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_13_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_13_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_13_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_13_01.wav" +} +//Auto-generated with the batch script! +"narration.ach430_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_1_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_1_01.wav" +} +//Auto-generated with the batch script! +"narration.ach430_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_2_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_3_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_3_01.wav" +} +//Auto-generated with the batch script! +"narration.ach430_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_4_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_5_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_6_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_7_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_7_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_8_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_8_00.wav" +} +//Auto-generated with the batch script! +"narration.ach430_9_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ach430_9_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_10_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_10_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_10_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_10_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_11_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_11_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_11_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_11_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_12_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_12_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_12_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_12_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_13_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_13_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_13_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_13_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_13_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_13_02.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_14_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_14_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_4_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_5_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_5_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_5_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_5_02.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_6_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_6_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_6_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_7_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_7_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_7_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_7_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_8_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_8_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_8_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_8_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_8_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_8_02.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_9_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_9_00.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_9_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_9_01.wav" +} +//Auto-generated with the batch script! +"narration.Apartment_mystory_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Apartment_mystory_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby1_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby2_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby2_01.wav" +} +//Auto-generated with the batch script! +"narration.Baby3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby3_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby3_01.wav" +} +//Auto-generated with the batch script! +"narration.Baby4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby4_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby4_01.wav" +} +//Auto-generated with the batch script! +"narration.Baby4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby4_02.wav" +} +//Auto-generated with the batch script! +"narration.Baby4_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby4_03.wav" +} +//Auto-generated with the batch script! +"narration.Baby4_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby4_04.wav" +} +//Auto-generated with the batch script! +"narration.Baby5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby5_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby5_01.wav" +} +//Auto-generated with the batch script! +"narration.Baby5_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby5_02.wav" +} +//Auto-generated with the batch script! +"narration.Baby6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby6_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby6_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby6_01.wav" +} +//Auto-generated with the batch script! +"narration.Baby7_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby7_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby7_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby7_01.wav" +} +//Auto-generated with the batch script! +"narration.Baby7_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby7_02.wav" +} +//Auto-generated with the batch script! +"narration.Baby8_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby8_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby9_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby9_00.wav" +} +//Auto-generated with the batch script! +"narration.Baby9_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Baby9_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Boss_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Boss_1_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_1_04.wav" +} +//Auto-generated with the batch script! +"narration.Boss_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Boss_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_2_03.wav" +} +//Auto-generated with the batch script! +"narration.Boss_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_2_04.wav" +} +//Auto-generated with the batch script! +"narration.Boss_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_3_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_3_02.wav" +} +//Auto-generated with the batch script! +"narration.Boss_3_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_3_03.wav" +} +//Auto-generated with the batch script! +"narration.Boss_3_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_3_04.wav" +} +//Auto-generated with the batch script! +"narration.Boss_3_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_3_05.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_02.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_03.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_04.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_05.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_06.wav" +} +//Auto-generated with the batch script! +"narration.Boss_4_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_4_07.wav" +} +//Auto-generated with the batch script! +"narration.Boss_delay_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_delay_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_delay_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_delay_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_delay_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_delay_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_delay_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_delay_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_delay_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_delay_3_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_incorrect_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_incorrect_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_incorrect_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_incorrect_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_1" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_1.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Boss_interrupt_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_interrupt_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_success_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_success_00.wav" +} +//Auto-generated with the batch script! +"narration.Boss_success_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Boss_success_01.wav" +} +//Auto-generated with the batch script! +"narration.BroomclosetHookers_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/BroomclosetHookers_00.wav" +} +//Auto-generated with the batch script! +"narration.BroomclosetHookers_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/BroomclosetHookers_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_3_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_4_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_5_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_5_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_6_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_6_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_6_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_02.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_03.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_04.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_05.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_06.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_07.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_7_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_7_08.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_8_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_8_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_9_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_9_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_9_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_9_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_9_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_9_02.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_revisit_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_revisit_00.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_revisit_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_revisit_01.wav" +} +//Auto-generated with the batch script! +"narration.Broomcloset_revisit_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Broomcloset_revisit_02.wav" +} +//Auto-generated with the batch script! +"narration.CargoLiftDeath_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLiftDeath_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLiftDeath_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLiftDeath_01.wav" +} +//Auto-generated with the batch script! +"narration.CargoLiftPlatform_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLiftPlatform_1_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLiftPlatform_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLiftPlatform_1_01.wav" +} +//Auto-generated with the batch script! +"narration.CargoLiftPlatform_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLiftPlatform_2_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLiftPlatform_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLiftPlatform_3_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_1_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_2_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_2_01.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_2_02.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_2_03.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_3_00.wav" +} +//Auto-generated with the batch script! +"narration.CargoLift_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/CargoLift_3_01.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_00.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_01.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_02.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_03.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_04.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_05.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_1_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_1_06.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_2_00.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_2_01.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_2_02.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_2_03.wav" +} +//Auto-generated with the batch script! +"narration.ChoicePSA_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/ChoicePSA_2_04.wav" +} +//Auto-generated with the batch script! +"narration.Con1-1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-1_00.wav" +} +//Auto-generated with the batch script! +"narration.Con1-2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-2_00.wav" +} +//Auto-generated with the batch script! +"narration.Con1-3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-3_00.wav" +} +//Auto-generated with the batch script! +"narration.Con1-3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-3_01.wav" +} +//Auto-generated with the batch script! +"narration.Con1-3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-3_02.wav" +} +//Auto-generated with the batch script! +"narration.Con1-3_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-3_03.wav" +} +//Auto-generated with the batch script! +"narration.Con1-4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-4_00.wav" +} +//Auto-generated with the batch script! +"narration.Con1-4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-4_01.wav" +} +//Auto-generated with the batch script! +"narration.Con1-4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-4_02.wav" +} +//Auto-generated with the batch script! +"narration.Con1-4_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-4_03.wav" +} +//Auto-generated with the batch script! +"narration.Con1-4_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con1-4_04.wav" +} +//Auto-generated with the batch script! +"narration.con2-1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-1_00.wav" +} +//Auto-generated with the batch script! +"narration.con2-1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-1_01.wav" +} +//Auto-generated with the batch script! +"narration.con2-1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-1_02.wav" +} +//Auto-generated with the batch script! +"narration.con2-1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-1_03.wav" +} +//Auto-generated with the batch script! +"narration.con2-1_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-1_04.wav" +} +//Auto-generated with the batch script! +"narration.con2-2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-2_00.wav" +} +//Auto-generated with the batch script! +"narration.con2-2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-2_01.wav" +} +//Auto-generated with the batch script! +"narration.con2-2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con2-2_02.wav" +} +//Auto-generated with the batch script! +"narration.con3-1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-1_00.wav" +} +//Auto-generated with the batch script! +"narration.con3-1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-1_01.wav" +} +//Auto-generated with the batch script! +"narration.con3-2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-2_00.wav" +} +//Auto-generated with the batch script! +"narration.con3-3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-3_00.wav" +} +//Auto-generated with the batch script! +"narration.con3-4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-4_00.wav" +} +//Auto-generated with the batch script! +"narration.con3-4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-4_01.wav" +} +//Auto-generated with the batch script! +"narration.con3-4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-4_02.wav" +} +//Auto-generated with the batch script! +"narration.con3-4_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-4_03.wav" +} +//Auto-generated with the batch script! +"narration.con3-4_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-4_04.wav" +} +//Auto-generated with the batch script! +"narration.con3-4_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/con3-4_05.wav" +} +//Auto-generated with the batch script! +"narration.Con4-1b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-1b_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-1_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2b_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2b_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2b_01.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2b_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2b_02.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2c_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2c_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2c_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2c_01.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2_01.wav" +} +//Auto-generated with the batch script! +"narration.Con4-2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-2_02.wav" +} +//Auto-generated with the batch script! +"narration.Con4-3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-3_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-4_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-5b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-5b_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-5_00.wav" +} +//Auto-generated with the batch script! +"narration.Con4-6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con4-6_00.wav" +} +//Auto-generated with the batch script! +"narration.Con5-1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-1_00.wav" +} +//Auto-generated with the batch script! +"narration.Con5-1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-1_01.wav" +} +//Auto-generated with the batch script! +"narration.Con5-1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-1_02.wav" +} +//Auto-generated with the batch script! +"narration.Con5-2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-2_00.wav" +} +//Auto-generated with the batch script! +"narration.Con5-2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-2_01.wav" +} +//Auto-generated with the batch script! +"narration.Con5-3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-3_00.wav" +} +//Auto-generated with the batch script! +"narration.Con5-3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-3_01.wav" +} +//Auto-generated with the batch script! +"narration.Con5-4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-4_00.wav" +} +//Auto-generated with the batch script! +"narration.Con5-4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-4_01.wav" +} +//Auto-generated with the batch script! +"narration.Con5-4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-4_02.wav" +} +//Auto-generated with the batch script! +"narration.Con5-4_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-4_03.wav" +} +//Auto-generated with the batch script! +"narration.Con5-4_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-4_04.wav" +} +//Auto-generated with the batch script! +"narration.Con5-4_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-4_05.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_00.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_01.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_02.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_03.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_04.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_05.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_06.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_07.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_08.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_09" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_09.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_10" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_10.wav" +} +//Auto-generated with the batch script! +"narration.Con5-5_11" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Con5-5_11.wav" +} +//Auto-generated with the batch script! +"narration.Controls_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Controls_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Controls_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Controls_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Controls_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Controls_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Controls_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Controls_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Controls_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Controls_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Countdown2_26" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown2_26.wav" +} +//Auto-generated with the batch script! +"narration.Countdown2_27" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown2_27.wav" +} +//Auto-generated with the batch script! +"narration.Countdown2_28" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown2_28.wav" +} +//Auto-generated with the batch script! +"narration.Countdown2_29" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown2_29.wav" +} +//Auto-generated with the batch script! +"narration.Countdown2_30" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown2_30.wav" +} +//Auto-generated with the batch script! +"narration.Countdown2_31" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown2_31.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_00.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_01.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_02.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_03.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_04.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_05.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_06.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_07.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_08.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_09" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_09.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_10" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_10.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_11" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_11.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_12" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_12.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_13" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_13.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_14" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_14.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_15" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_15.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_16" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_16.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_17" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_17.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_18" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_18.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_19" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_19.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_20" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_20.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_21" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_21.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_22" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_22.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_23" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_23.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_24" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_24.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_25" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_25.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_26" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_26.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_27" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_27.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_28" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_28.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_29" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_29.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_30" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_30.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_31" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_31.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_32" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_32.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_33" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_33.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_34" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_34.wav" +} +//Auto-generated with the batch script! +"narration.Countdown_35" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Countdown_35.wav" +} +//Auto-generated with the batch script! +"narration.Death_Machine_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Death_Machine_2" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_2.wav" +} +//Auto-generated with the batch script! +"narration.Death_Machine_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Death_Machine_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Death_Machine_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Death_Machine_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_2_03.wav" +} +//This one wasn't generated with the batch script. That's right. +"narration.Death_Machine_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Death_Machine_2_04.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_00.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_01.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_02.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_03.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_04.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_05.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_06.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_07.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_08.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_09" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_09.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_10" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_10.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_11" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_11.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_12" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_12.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_13" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_13.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_14" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_14.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_15" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_15.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_16" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_16.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_17" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_17.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_18" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_18.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_19" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_19.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_20" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_20.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_21" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_21.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_22" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_22.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_23" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_23.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_24" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_24.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_25" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_25.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_26" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_26.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_27" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_27.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_28" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_28.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1a_29" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1a_29.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1b_00.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1b_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1b_01.wav" +} +//Auto-generated with the batch script! +"narration.Dream_1b_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_1b_02.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_03.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_04.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_05.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_06.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_07.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_08.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_09" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_09.wav" +} +//Auto-generated with the batch script! +"narration.Dream_2_10" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Dream_2_10.wav" +} +//Auto-generated with the batch script! +"narration.EscapeHall_return_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/EscapeHall_return_00.wav" +} +//Auto-generated with the batch script! +"narration.Escape_Hall_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Escape_Hall_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Escape_Hall_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Escape_Hall_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Escape_Hall_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Escape_Hall_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Escape_Hall_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Escape_Hall_4_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_1_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_1_01.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_2_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_2_01.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_3_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_3_01.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_4_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_4_01.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_4_02.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_5_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_5_01.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_6_00.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_6_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_6_01.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_6_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_6_02.wav" +} +//Auto-generated with the batch script! +"narration.FemNarr_6_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/FemNarr_6_03.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_03.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_04.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_05.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_06.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_07.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_2_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_2_08.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_3_01.wav" +} +//Auto-generated with the batch script! +"narration.Freedom_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Freedom_3_02.wav" +} +//Auto-generated with the batch script! +"narration.Idle1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Idle1_00.wav" +} +//Auto-generated with the batch script! +"narration.Idle1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Idle1_01.wav" +} +//Auto-generated with the batch script! +"narration.Idle2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Idle2_00.wav" +} +//Auto-generated with the batch script! +"narration.Idle2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Idle2_01.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_1_00.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_00.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_01.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_02.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_03.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_04.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_05.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_06.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_07.wav" +} +//Auto-generated with the batch script! +"narration.IncEnd_2_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncEnd_2_08.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_1_00.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_2_00.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_3_00.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_3_01.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_3_02.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_3_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_3_03.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_3_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_3_04.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_4_00.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_5_00.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_5_01.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_6_00.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_6_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_6_01.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_6_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_6_02.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_6_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_6_03.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_6_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_6_04.wav" +} +//Auto-generated with the batch script! +"narration.IncLeft_6_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncLeft_6_05.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_1_00.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_00.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_01.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_02.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_03.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_04.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_05.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_06.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_2_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_2_07.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_00.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_01.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_02.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_03.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_04.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_05.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_06.wav" +} +//Auto-generated with the batch script! +"narration.IncRight_3_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/IncRight_3_07.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0a_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0a_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0a_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0a_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0b_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0b_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0b_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0b_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0b_02.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_02.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_03.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_04.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_05.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_06.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_07.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_08" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_08.wav" +} +//Auto-generated with the batch script! +"narration.Inc_0c_09" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_0c_09.wav" +} +//Auto-generated with the batch script! +"narration.Inc_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Inc_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Inc_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_4b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_4b_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_4b_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_4b_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Inc_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_4_01.wav" +} +//Auto-generated with the batch script! +"narration.Inc_4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Inc_4_02.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_04.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_05.wav" +} +//Auto-generated with the batch script! +"narration.Intro_1_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_1_06.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_03.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_04.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_05.wav" +} +//Auto-generated with the batch script! +"narration.Intro_2_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Intro_2_06.wav" +} +//Auto-generated with the batch script! +"narration.LockedOffice_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/LockedOffice_00.wav" +} +//Auto-generated with the batch script! +"narration.LockedOffice_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/LockedOffice_01.wav" +} +//Auto-generated with the batch script! +"narration.LockedOffice_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/LockedOffice_02.wav" +} +//Auto-generated with the batch script! +"narration.LockedOffice_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/LockedOffice_03.wav" +} +//Auto-generated with the batch script! +"narration.LockedOffice_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/LockedOffice_04.wav" +} +//Auto-generated with the batch script! +"narration.LockedOffice_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/LockedOffice_05.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1a_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1a_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1a_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1a_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1b_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1b_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1b_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1c_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1c_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1c_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1c_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1d_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1d_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1d_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1d_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1d_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1d_02.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1e_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1e_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1e_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1e_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1e_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1e_02.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1f_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1f_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1f_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1f_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1f_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1f_02.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1g_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1g_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1g_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1g_01.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_1h_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_1h_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_exit_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_exit_00.wav" +} +//Auto-generated with the batch script! +"narration.Lounge_exit_delay_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Lounge_exit_delay_00.wav" +} +//Auto-generated with the batch script! +"narration.Maintenance_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Maintenance_00.wav" +} +//Auto-generated with the batch script! +"narration.Meeting_room_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Meeting_room_00.wav" +} +//Auto-generated with the batch script! +"narration.Meeting_room_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Meeting_room_01.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_2_01.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_2_02.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_3_01.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_3_02.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_4_01.wav" +} +//Auto-generated with the batch script! +"narration.Monitor_4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Monitor_4_02.wav" +} +//Auto-generated with the batch script! +"narration.Office_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Office_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Office_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Office_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Office_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Office_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Office_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Office_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Office_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Office_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Phone_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Phone_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_1_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_1_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_1_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_1_03.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_2_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_2_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_2_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_2_03.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestBaby_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestBaby_2_04.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback1_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback1_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback2_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback2_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback3_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback3_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback4_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback4_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback5_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback5_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFeedback5_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFeedback5_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_1_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_2_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_2_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_03.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_04.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_05.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_06.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestFinale_3_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestFinale_3_07.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_1_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_1_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_1_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_2_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_2_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_2_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_2_03.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_2_04.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_3_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_4_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_5_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestMC_5_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestMC_5_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_1_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_1_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_1_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_2_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_3a_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_3a_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_3b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_3b_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_3c_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_3c_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_3c_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_3c_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_00.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_01.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_02.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_03.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_04.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_05.wav" +} +//Auto-generated with the batch script! +"narration.PlaytestP_4_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/PlaytestP_4_06.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_0_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_0_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_1_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_1_04.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_1_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_1_05.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_2_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_3_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_3_01.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_4_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_5_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_6_00.wav" +} +//Auto-generated with the batch script! +"narration.Playtest_6_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Playtest_6_01.wav" +} +//Auto-generated with the batch script! +"narration.RedBlue_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/RedBlue_1_00.wav" +} +//Auto-generated with the batch script! +"narration.RedBlue_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/RedBlue_1_01.wav" +} +//Auto-generated with the batch script! +"narration.RedBlue_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/RedBlue_1_02.wav" +} +//Auto-generated with the batch script! +"narration.RedBlue_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/RedBlue_2_00.wav" +} +//Auto-generated with the batch script! +"narration.RedBlue_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/RedBlue_3_00.wav" +} +//Auto-generated with the batch script! +"narration.RedBlue_4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/RedBlue_4_00.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_00.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_01.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_02.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_03.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_04.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_05.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_06.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_1_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_1_07.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_00.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_01.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_02.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_03.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_04.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_05.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_06.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_2_07" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_2_07.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_3_00.wav" +} +//Auto-generated with the batch script! +"narration.SeriousRoom_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/SeriousRoom_3_01.wav" +} +//Auto-generated with the batch script! +"narration.silence" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/silence.wav" +} +//Auto-generated with the batch script! +"narration.Staircase_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Staircase_00.wav" +} +//Auto-generated with the batch script! +"narration.Two_Doors_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Two_Doors_00.wav" +} +//Auto-generated with the batch script! +"narration.Two_Doors_Right_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Two_Doors_Right_00.wav" +} +//Auto-generated with the batch script! +"narration.Underground_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Underground_1_00.wav" +} +//Auto-generated with the batch script! +"narration.Underground_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Underground_1_01.wav" +} +//Auto-generated with the batch script! +"narration.Underground_1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Underground_1_02.wav" +} +//Auto-generated with the batch script! +"narration.Underground_1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Underground_1_03.wav" +} +//Auto-generated with the batch script! +"narration.Underground_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Underground_2_00.wav" +} +//Auto-generated with the batch script! +"narration.wife_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/wife_00.wav" +} +//Auto-generated with the batch script! +"narration.wife_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/wife_01.wav" +} +//Auto-generated with the batch script! +"narration.wife_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/wife_02.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_1_00.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_1_01.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_2_00.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_2_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_2_01.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_2_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_2_02.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_2_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_2_03.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_00.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_01.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_02.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_03.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_04" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_04.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_05" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_05.wav" +} +//Auto-generated with the batch script! +"narration.WindowGag_3_06" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/WindowGag_3_06.wav" +} +//Auto-generated with the batch script! +"narration.zaxis10_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis10_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis11_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis11_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis12_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis12_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis13_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis13_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis14b_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis14b_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis14_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis14_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis15_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis15_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis16_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis16_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis1_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis2_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis3_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis3_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis4_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis4_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis5_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis5_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis6_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis6_00.wav" +} +//Auto-generated with the batch script! +"narration.Zaxis7_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zaxis7_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis8_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis8_00.wav" +} +//Auto-generated with the batch script! +"narration.zaxis9_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/zaxis9_00.wav" +} +//Auto-generated with the batch script! +"narration.Zen1_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zen1_00.wav" +} +//Auto-generated with the batch script! +"narration.Zen1_01" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zen1_01.wav" +} +//Auto-generated with the batch script! +"narration.Zen1_02" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zen1_02.wav" +} +//Auto-generated with the batch script! +"narration.Zen1_03" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zen1_03.wav" +} +//Auto-generated with the batch script! +"narration.Zen2_00" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "#narrator/Zen2_00.wav" +} + +//Muzak + +"narration_music.ChoicePSA_1music" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "*music/ChoicePSA_1music.wav" +} +"narration_music.ChoicePSA_2music" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "*music/ChoicePSA_2music.wav" +} +"narration_music.Countdown_music" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "*music/Countdown_music.wav" +} +"narration_music.Dream_music_a" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "*music/Dream_music_a.wav" +} +"narration_music.Dream_music_b" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "*music/Dream_music_b.wav" +} +"narration_music.Intro_1music" +{ + "channel" "CHAN_VOICE" + "volume" "1.0" + "soundlevel" "SNDLVL_NONE" + "wave" "*music/Intro_1music.wav" +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/demoman.lua b/gamemodes/tf/gamemode/contents/talker/demoman.lua new file mode 100644 index 000000000..8bc25736c --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/demoman.lua @@ -0,0 +1,1426 @@ +//-------------------------------------------------------------------------------------------------------------- +// Demoman Response Rule File +//-------------------------------------------------------------------------------------------------------------- + + + +Response PlayerCloakedSpyDemomanDemoman +{ + scene "scenes/Player/Demoman/low/901.vcd" +} +Rule PlayerCloakedSpyDemomanDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnDemoman + Response PlayerCloakedSpyDemomanDemoman +} + +Response PlayerCloakedSpyEngineerDemoman +{ + scene "scenes/Player/Demoman/low/907.vcd" +} +Rule PlayerCloakedSpyEngineerDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnEngineer + Response PlayerCloakedSpyEngineerDemoman +} + +Response PlayerCloakedSpyHeavyDemoman +{ + scene "scenes/Player/Demoman/low/897.vcd" +} +Rule PlayerCloakedSpyHeavyDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnHeavy + Response PlayerCloakedSpyHeavyDemoman +} + +Response PlayerCloakedSpyMedicDemoman +{ + scene "scenes/Player/Demoman/low/905.vcd" +} +Rule PlayerCloakedSpyMedicDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnMedic + Response PlayerCloakedSpyMedicDemoman +} + +Response PlayerCloakedSpyPyroDemoman +{ + scene "scenes/Player/Demoman/low/899.vcd" +} +Rule PlayerCloakedSpyPyroDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnPyro + Response PlayerCloakedSpyPyroDemoman +} + +Response PlayerCloakedSpyScoutDemoman +{ + scene "scenes/Player/Demoman/low/893.vcd" +} +Rule PlayerCloakedSpyScoutDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnScout + Response PlayerCloakedSpyScoutDemoman +} + +Response PlayerCloakedSpySniperDemoman +{ + scene "scenes/Player/Demoman/low/909.vcd" +} +Rule PlayerCloakedSpySniperDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnSniper + Response PlayerCloakedSpySniperDemoman +} + +Response PlayerCloakedSpySoldierDemoman +{ + scene "scenes/Player/Demoman/low/895.vcd" +} +Rule PlayerCloakedSpySoldierDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnSoldier + Response PlayerCloakedSpySoldierDemoman +} + +Response PlayerCloakedSpySpyDemoman +{ + scene "scenes/Player/Demoman/low/903.vcd" +} +Rule PlayerCloakedSpySpyDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman IsOnSpy + Response PlayerCloakedSpySpyDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksDemoman +{ + scene "scenes/Player/Demoman/low/1032.vcd" + scene "scenes/Player/Demoman/low/1033.vcd" + scene "scenes/Player/Demoman/low/1034.vcd" +} +Rule HealThanksDemoman +{ + criteria ConceptMedicChargeStopped IsDemoman SuperHighHealthContext DemomanNotSaidHealThanks 50PercentChance + ApplyContext "DemomanSaidHealThanks:1:20" + Response HealThanksDemoman +} + +Response AwardDemoman +{ + scene "scenes/Player/Demoman/low/866.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/868.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/865.vcd" predelay "2.5" +} +Rule AwardDemoman +{ + criteria ConceptAchievementAward IsDemoman DemomanNotAwardSpeech + ApplyContext "DemomanAwardSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response AwardDemoman +} + +Response PlayerRoundStartDemoman +{ + scene "scenes/Player/Demoman/low/1358.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/1369.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/876.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/877.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/878.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/879.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/880.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartDemoman +{ + criteria ConceptPlayerRoundStart IsDemoman + Response PlayerRoundStartDemoman +} + +Response PlayerCappedIntelligenceDemoman +{ + scene "scenes/Player/Demoman/low/866.vcd" + scene "scenes/Player/Demoman/low/867.vcd" +} +Rule PlayerCappedIntelligenceDemoman +{ + criteria ConceptPlayerCapturedIntelligence IsDemoman + Response PlayerCappedIntelligenceDemoman +} + +Response PlayerCapturedPointDemoman +{ + scene "scenes/Player/Demoman/low/863.vcd" + scene "scenes/Player/Demoman/low/865.vcd" + scene "scenes/Player/Demoman/low/864.vcd" +} +Rule PlayerCapturedPointDemoman +{ + criteria ConceptPlayerCapturedPoint IsDemoman + Response PlayerCapturedPointDemoman +} + +Response PlayerSuddenDeathDemoman +{ + scene "scenes/Player/Demoman/low/938.vcd" + scene "scenes/Player/Demoman/low/939.vcd" + scene "scenes/Player/Demoman/low/940.vcd" + scene "scenes/Player/Demoman/low/941.vcd" + scene "scenes/Player/Demoman/low/942.vcd" + scene "scenes/Player/Demoman/low/944.vcd" + scene "scenes/Player/Demoman/low/945.vcd" + scene "scenes/Player/Demoman/low/947.vcd" + scene "scenes/Player/Demoman/low/948.vcd" + scene "scenes/Player/Demoman/low/949.vcd" + scene "scenes/Player/Demoman/low/946.vcd" +} +Rule PlayerSuddenDeathDemoman +{ + criteria ConceptPlayerSuddenDeathStart IsDemoman + Response PlayerSuddenDeathDemoman +} + +Response PlayerStalemateDemoman +{ + scene "scenes/Player/Demoman/low/869.vcd" + scene "scenes/Player/Demoman/low/870.vcd" + scene "scenes/Player/Demoman/low/871.vcd" + scene "scenes/Player/Demoman/low/1357.vcd" +} +Rule PlayerStalemateDemoman +{ + criteria ConceptPlayerStalemate IsDemoman + Response PlayerStalemateDemoman +} + +Response PlayerTeleporterThanksDemoman +{ + scene "scenes/Player/Demoman/low/1035.vcd" + scene "scenes/Player/Demoman/low/1036.vcd" +} +Rule PlayerTeleporterThanksDemoman +{ + criteria ConceptTeleported IsNotEngineer IsDemoman 30PercentChance + Response PlayerTeleporterThanksDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointDemoman +{ + scene "scenes/Player/Demoman/low/1011.vcd" + scene "scenes/Player/Demoman/low/1389.vcd" +} +Rule DefendOnThePointDemoman +{ + criteria ConceptFireWeapon IsDemoman IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointDemoman +} + +Response DemomanJarateHit +{ + scene "scenes/Player/Demoman/low/871.vcd" + scene "scenes/Player/Demoman/low/947.vcd" + scene "scenes/Player/Demoman/low/969.vcd" + scene "scenes/Player/Demoman/low/971.vcd" +} +Rule DemomanJarateHit +{ + criteria ConceptJarateHit IsDemoman 50PercentChance + Response DemomanJarateHit +} + +// Invuln responses for Grenade Launcher +Response InvulnerableSpeechDemoman2 +{ + scene "scenes/Player/Demoman/low/1019.vcd" + scene "scenes/Player/Demoman/low/1012.vcd" + scene "scenes/Player/Demoman/low/1029.vcd" + scene "scenes/Player/Demoman/low/1021.vcd" +} + + +Rule InvulnerableSpeechDemoman2 +{ + criteria ConceptFireWeapon IsDemoman IsInvulnerable 20PercentChance + ApplyContext "DemomanInvulnerableSpeech:1:30" + Response InvulnerableSpeechDemoman2 +} +// End invuln responses for GL + +// Invulnerable responses for Sticky launcher +Response InvulnerableSpeechDemoman +{ + scene "scenes/Player/Demoman/low/1023.vcd" + scene "scenes/Player/Demoman/low/1022.vcd" + scene "scenes/Player/Demoman/low/1018.vcd" +} + +Rule InvulnerableSpeechDemoman +{ + criteria ConceptFireWeapon IsDemoman IsInvulnerable 20PercentChance + ApplyContext "DemomanInvulnerableSpeech:1:30" + Response InvulnerableSpeechDemoman +} +// End invuln responses for Sticky + +Response KilledPlayerAssistAutoDemoman +{ + scene "scenes/Player/Demoman/low/1009.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/867.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsBeingHealed IsManyRecentKills KilledPlayerDelay 20PercentChance DemomanNotAssistSpeech + ApplyContext "DemomanAssistSpeech:1:20" + Response KilledPlayerAssistAutoDemoman +} + +Response KilledPlayerManyDemoman +{ + scene "scenes/Player/Demoman/low/1000.vcd" + scene "scenes/Player/Demoman/low/1014.vcd" + scene "scenes/Player/Demoman/low/1016.vcd" + scene "scenes/Player/Demoman/low/1020.vcd" +} +Rule KilledPlayerManyDemoman +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponSecondary KilledPlayerDelay DemomanNotKillSpeech IsDemoman + ApplyContext "DemomanKillSpeech:1:10" + Response KilledPlayerManyDemoman +} + +// Custom stuff +// Responses against killing a Soldier +Response KilledSoldierDemoman +{ + scene "scenes/Player/Demoman/low/3568.vcd" + scene "scenes/Player/Demoman/low/3574.vcd" + scene "scenes/Player/Demoman/low/3577.vcd" +} +Rule KilledSoldierDemoman +{ + criterion ConceptKilledPlayer KilledPlayerDelay IsVictimSoldier 10PercentChance DemomanNotKillSpeech IsDemoman WeaponClassIsNotAxe + ApplyContext "DemomanKillSpeech:1:60" + Response KilledSoldierDemoman +} + +// Frying pan responses +// These are our base responses for non-sword melee weapons. +Response KilledPlayerPanDemoman +{ + scene "scenes/Player/Demoman/low/3566.vcd" + scene "scenes/Player/Demoman/low/3567.vcd" + scene "scenes/Player/Demoman/low/3569.vcd" + scene "scenes/Player/Demoman/low/3570.vcd" + scene "scenes/Player/Demoman/low/3571.vcd" + scene "scenes/Player/Demoman/low/3572.vcd" + scene "scenes/Player/Demoman/low/3573.vcd" + scene "scenes/Player/Demoman/low/3575.vcd" +} +Rule KilledPlayerPanDemoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsFryingPan 20PercentChance DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:10" + Response KilledPlayerPanDemoman +} + +Rule KilledPlayerSaxxyDemoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsSaxxy 20PercentChance DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:10" + Response KilledPlayerPanDemoman +} +// End Frying Pan responses + +// Custom rules for when Demoman drinks from Scrumpy +// to trigger one of the above drunk lines +Rule DrunkDemoman +{ + criteria ConceptFireWeapon IsDrunk IsDemoman IsWeaponMelee WeaponIsNotFryingPan // Fire if he's holding the Bottle and if the drunk context is set + Response KilledPlayerPanDemoman +} +// End custom drunk rules + +// Modified to play for the Bottle only +// Modified to include Frying Pan repsonses above, saves having duplicate entries. +Response KilledPlayerMeleeDemoman +{ + scene "scenes/Player/Demoman/low/998.vcd" +} +Rule KilledPlayerMeleeDemoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsBottle WeaponIsNotPainTrain WeaponIsNotSaxxy 30PercentChance DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:10" + Response KilledPlayerPanDemoman + Response KilledPlayerMeleeDemoman +} +// + +// Eyelander responses +// These apply to all tf_weapon_sword class weapons. +Response KilledPlayerSwordDemoman +{ + scene "scenes/Player/Demoman/low/3565.vcd" + scene "scenes/Player/Demoman/low/910.vcd" + scene "scenes/Player/Demoman/low/950.vcd" + scene "scenes/Player/Demoman/low/1379.vcd" +} + +Rule KilledPlayerSwordDemoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsSword 20PercentChance IsNotVictimDemoman DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:30" + Response KilledPlayerSwordDemoman +} + +// The above rule is for non-Demoman victims only. + +Response KilledPlayerSword2Demoman +{ + scene "scenes/Player/Demoman/low/3564.vcd" +} + +Rule KilledPlayerSword2Demoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsSword 20PercentChance IsVictimDemoman DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:30" + Response KilledPlayerSword2Demoman +} +// The above rule is for Demoman victims only. +// End Eyelander responses + +// Katana response rules shared with Eyelander +Rule KilledPlayerKatanaDemoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsKatana 20PercentChance IsNotVictimDemoman DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:30" + Response KilledPlayerSwordDemoman +} +// The above rule is for non-Demoman victims only. +Rule KilledPlayerKatana2Demoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsKatana 20PercentChance IsVictimDemoman DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:30" + Response KilledPlayerSword2Demoman +} +// The above rule is for Demoman victims only. +// End Katana responses + +// Pain Train responses +// Shares responses with Frying Pan, saves having duplicate entries. +Response KilledPlayerClubDemoman +{ + scene "scenes/Player/Demoman/low/3578.vcd" +} + +Rule KilledPlayerClubDemoman +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsPainTrain 10PercentChance DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:15" + Response KilledPlayerClubDemoman + Response KilledPlayerPanDemoman +} +// End Pain Train responses + +// Caber responses +Response KilledPlayerCaberDemoman +{ + scene "scenes/player/Demoman/low/1007.vcd" + scene "scenes/Player/Demoman/low/1008.vcd" + scene "scenes/Player/Demoman/low/997.vcd" +} +Rule KilledPlayerCaberDemoman +{ + criteria ConceptAttackerPain KilledPlayerDelay WeaponIsCaber IsCritical CaberHealthContext DemomanNotKillSpeechMelee IsDemoman + ApplyContext "DemomanKillSpeechMelee:1:10" + Response KilledPlayerCaberDemoman +} + +Response KilledPlayerVeryManyDemoman +{ + scene "scenes/Player/Demoman/low/997.vcd" + scene "scenes/Player/Demoman/low/999.vcd" + scene "scenes/Player/Demoman/low/1003.vcd" + scene "scenes/Player/Demoman/low/1004.vcd" + scene "scenes/Player/Demoman/low/1006.vcd" + scene "scenes/Player/Demoman/low/1024.vcd" +} +Rule KilledPlayerVeryManyDemoman +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponSecondary KilledPlayerDelay DemomanNotKillSpeech IsDemoman + ApplyContext "DemomanKillSpeech:1:10" + Response KilledPlayerVeryManyDemoman +} + +Response PlayerKilledCapperDemoman +{ + scene "scenes/Player/Demoman/low/867.vcd" + scene "scenes/Player/Demoman/low/884.vcd" + scene "scenes/Player/Demoman/low/887.vcd" + scene "scenes/Player/Demoman/low/952.vcd" + scene "scenes/Player/Demoman/low/955.vcd" + scene "scenes/Player/Demoman/low/989.vcd" + scene "scenes/Player/Demoman/low/991.vcd" + scene "scenes/Player/Demoman/low/992.vcd" + scene "scenes/Player/Demoman/low/993.vcd" + scene "scenes/Player/Demoman/low/1001.vcd" + scene "scenes/Player/Demoman/low/1002.vcd" +} +Rule PlayerKilledCapperDemoman +{ + criteria ConceptCapBlocked IsDemoman + ApplyContext "DemomanKillSpeech:1:10" + Response PlayerKilledCapperDemoman +} + +Response PlayerKilledDominatingDemoman +{ + scene "scenes/Player/Demoman/low/886.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/910.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/950.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/1379.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/1384.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/1385.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/951.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/953.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/954.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/956.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/1383.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemoman +} + +Response PlayerKilledDominatingDemomanDemoman +{ + scene "scenes/Player/Demoman/low/3515.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3516.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3517.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3518.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemomanDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimDemoman + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemomanDemoman +} + +Response PlayerKilledDominatingEngineerDemoman +{ + scene "scenes/Player/Demoman/low/3519.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3520.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3521.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3522.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3523.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3524.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingEngineerDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimEngineer + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingEngineerDemoman +} + +Response PlayerKilledDominatingHeavyDemoman +{ + scene "scenes/Player/Demoman/low/3525.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3526.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3527.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3528.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3529.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavyDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimHeavy + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavyDemoman +} + +Response PlayerKilledDominatingMedicDemoman +{ + scene "scenes/Player/Demoman/low/3530.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3531.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3532.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3533.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedicDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimMedic + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedicDemoman +} + +Response PlayerKilledDominatingPyroDemoman +{ + scene "scenes/Player/Demoman/low/3534.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3535.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3536.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3537.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyroDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimPyro + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyroDemoman +} + +Response PlayerKilledDominatingScoutDemoman +{ + scene "scenes/Player/Demoman/low/3538.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3539.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3540.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3541.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3542.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3543.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3544.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3545.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScoutDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimScout + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScoutDemoman +} + +Response PlayerKilledDominatingSniperDemoman +{ + scene "scenes/Player/Demoman/low/3546.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3547.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3548.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3549.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSniperDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimSniper + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSniperDemoman +} + +Response PlayerKilledDominatingSoldierDemoman +{ + scene "scenes/Player/Demoman/low/3550.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3551.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3552.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3553.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3554.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldierDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimSoldier + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldierDemoman +} + +Response PlayerKilledDominatingSpyDemoman +{ + scene "scenes/Player/Demoman/low/3561.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3562.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/3563.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSpyDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated IsVictimSpy + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSpyDemoman +} + +Response PlayerKilledForRevengeDemoman +{ + scene "scenes/Player/Demoman/low/914.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/990.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/1005.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/1025.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsRevenge + ApplyContext "DemomanKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeDemoman +} + +Response PlayerKilledObjectDemoman +{ + scene "scenes/Player/Demoman/low/1007.vcd" + scene "scenes/Player/Demoman/low/1008.vcd" +} +Rule PlayerKilledObjectDemoman +{ + criteria ConceptKilledObject IsDemoman 30PercentChance IsARecentKill + ApplyContext "DemomanKillSpeechObject:1:30" + Response PlayerKilledObjectDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainDemoman +{ + scene "scenes/Player/Demoman/low/983.vcd" + scene "scenes/Player/Demoman/low/984.vcd" + scene "scenes/Player/Demoman/low/985.vcd" + scene "scenes/Player/Demoman/low/1396.vcd" +} +Rule PlayerAttackerPainDemoman +{ + criteria ConceptAttackerPain IsDemoman + Response PlayerAttackerPainDemoman +} + +Response PlayerOnFireDemoman +{ + scene "scenes/Player/Demoman/low/872.vcd" + scene "scenes/Player/Demoman/low/874.vcd" +} +Rule PlayerOnFireDemoman +{ + criteria ConceptFire IsDemoman DemomanIsNotStillonFire + ApplyContext "DemomanOnFire:1:7" + Response PlayerOnFireDemoman +} + +Response PlayerOnFireRareDemoman +{ + scene "scenes/Player/Demoman/low/873.vcd" +} +Rule PlayerOnFireRareDemoman +{ + criteria ConceptFire IsDemoman 10PercentChance DemomanIsNotStillonFire + ApplyContext "DemomanOnFire:1:7" + Response PlayerOnFireRareDemoman +} + +Response PlayerPainDemoman +{ + scene "scenes/Player/Demoman/low/986.vcd" + scene "scenes/Player/Demoman/low/987.vcd" + scene "scenes/Player/Demoman/low/988.vcd" + scene "scenes/Player/Demoman/low/1392.vcd" + scene "scenes/Player/Demoman/low/1393.vcd" + scene "scenes/Player/Demoman/low/1394.vcd" + scene "scenes/Player/Demoman/low/1395.vcd" +} +Rule PlayerPainDemoman +{ + criteria ConceptPain IsDemoman + Response PlayerPainDemoman +} + +Response PlayerStillOnFireDemoman +{ + scene "scenes/Player/Demoman/low/1927.vcd" +} +Rule PlayerStillOnFireDemoman +{ + criteria ConceptFire IsDemoman DemomanIsStillonFire + ApplyContext "DemomanOnFire:1:7" + Response PlayerStillOnFireDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelDemoman +{ + scene "scenes/Player/Demoman/low/1015.vcd" + scene "scenes/Player/Demoman/low/1017.vcd" + scene "scenes/Player/Demoman/low/1038.vcd" +} +Rule AcceptedDuelDemoman +{ + criteria ConceptIAcceptDuel IsDemoman + Response AcceptedDuelDemoman +} + +Response MeleeDareDemoman +{ + scene "scenes/Player/Demoman/low/868.vcd" + scene "scenes/Player/Demoman/low/879.vcd" + scene "scenes/Player/Demoman/low/1369.vcd" + scene "scenes/Player/Demoman/low/1027.vcd" + scene "scenes/Player/Demoman/low/1028.vcd" + scene "scenes/Player/Demoman/low/3566.vcd" + scene "scenes/Player/Demoman/low/3569.vcd" + scene "scenes/Player/Demoman/low/3574.vcd" + scene "scenes/Player/Demoman/low/3576.vcd" + scene "scenes/Player/Demoman/low/3578.vcd" +} +Rule MeleeDareDemoman +{ + criteria ConceptRequestDuel IsDemoman + Response MeleeDareDemoman +} + +Response RejectedDuelDemoman +{ + scene "scenes/Player/Demoman/low/938.vcd" + scene "scenes/Player/Demoman/low/939.vcd" + scene "scenes/Player/Demoman/low/3545.vcd" +} +Rule RejectedDuelDemoman +{ + criteria ConceptDuelRejected IsDemoman + Response RejectedDuelDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoDemoman +{ + scene "scenes/Player/Demoman/low/911.vcd" + scene "scenes/Player/Demoman/low/912.vcd" + scene "scenes/Player/Demoman/low/913.vcd" +} +Rule PlayerGoDemoman +{ + criteria ConceptPlayerGo IsDemoman + Response PlayerGoDemoman +} + +Response PlayerHeadLeftDemoman +{ + scene "scenes/Player/Demoman/low/917.vcd" + scene "scenes/Player/Demoman/low/918.vcd" + scene "scenes/Player/Demoman/low/919.vcd" +} +Rule PlayerHeadLeftDemoman +{ + criteria ConceptPlayerLeft IsDemoman + Response PlayerHeadLeftDemoman +} + +Response PlayerHeadRightDemoman +{ + scene "scenes/Player/Demoman/low/920.vcd" + scene "scenes/Player/Demoman/low/921.vcd" + scene "scenes/Player/Demoman/low/922.vcd" +} +Rule PlayerHeadRightDemoman +{ + criteria ConceptPlayerRight IsDemoman + Response PlayerHeadRightDemoman +} + +Response PlayerHelpDemoman +{ + scene "scenes/Player/Demoman/low/923.vcd" + scene "scenes/Player/Demoman/low/924.vcd" + scene "scenes/Player/Demoman/low/925.vcd" +} +Rule PlayerHelpDemoman +{ + criteria ConceptPlayerHelp IsDemoman + Response PlayerHelpDemoman +} + +Response PlayerHelpCaptureDemoman +{ + scene "scenes/Player/Demoman/low/926.vcd" + scene "scenes/Player/Demoman/low/927.vcd" + scene "scenes/Player/Demoman/low/928.vcd" +} +Rule PlayerHelpCaptureDemoman +{ + criteria ConceptPlayerHelp IsDemoman IsOnCappableControlPoint + ApplyContext "DemomanHelpCap:1:10" + Response PlayerHelpCaptureDemoman +} + +Response PlayerHelpCapture2Demoman +{ + scene "scenes/Player/Demoman/low/1011.vcd" + scene "scenes/Player/Demoman/low/1389.vcd" +} +Rule PlayerHelpCapture2Demoman +{ + criteria ConceptPlayerHelp IsDemoman IsOnCappableControlPoint IsHelpCapDemoman + Response PlayerHelpCapture2Demoman +} + +Response PlayerHelpDefendDemoman +{ + scene "scenes/Player/Demoman/low/929.vcd" + scene "scenes/Player/Demoman/low/930.vcd" + scene "scenes/Player/Demoman/low/931.vcd" +} +Rule PlayerHelpDefendDemoman +{ + criteria ConceptPlayerHelp IsDemoman IsOnFriendlyControlPoint + Response PlayerHelpDefendDemoman +} + +Response PlayerMedicDemoman +{ + scene "scenes/Player/Demoman/low/957.vcd" + scene "scenes/Player/Demoman/low/958.vcd" + scene "scenes/Player/Demoman/low/959.vcd" +} +Rule PlayerMedicDemoman +{ + criteria ConceptPlayerMedic IsDemoman + Response PlayerMedicDemoman +} + +Response PlayerAskForBallDemoman +{ +} +Rule PlayerAskForBallDemoman +{ + criteria ConceptPlayerAskForBall IsDemoman + Response PlayerAskForBallDemoman +} + + +Response PlayerMoveUpDemoman +{ + scene "scenes/Player/Demoman/low/960.vcd" + scene "scenes/Player/Demoman/low/961.vcd" + scene "scenes/Player/Demoman/low/962.vcd" +} +Rule PlayerMoveUpDemoman +{ + criteria ConceptPlayerMoveUp IsDemoman + Response PlayerMoveUpDemoman +} + +Response PlayerNoDemoman +{ + scene "scenes/Player/Demoman/low/977.vcd" + scene "scenes/Player/Demoman/low/978.vcd" + scene "scenes/Player/Demoman/low/979.vcd" +} +Rule PlayerNoDemoman +{ + criteria ConceptPlayerNo IsDemoman + Response PlayerNoDemoman +} + +Response PlayerThanksDemoman +{ + scene "scenes/Player/Demoman/low/1030.vcd" + scene "scenes/Player/Demoman/low/1031.vcd" +} +Rule PlayerThanksDemoman +{ + criteria ConceptPlayerThanks IsDemoman + Response PlayerThanksDemoman +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistDemoman +{ + scene "scenes/Player/Demoman/low/1009.vcd" + scene "scenes/Player/Demoman/low/867.vcd" +} +Rule KilledPlayerAssistDemoman +{ + criteria ConceptPlayerThanks IsDemoman IsARecentKill KilledPlayerDelay DemomanNotAssistSpeech + ApplyContext "DemomanAssistSpeech:1:20" + Response KilledPlayerAssistDemoman +} + +Response KilledPlayerAssistDemoman2 +{ + scene "scenes/Player/Demoman/low/1010.vcd" +} +Rule KilledPlayerAssistDemoman2 +{ + criteria ConceptPlayerThanks IsDemoman IsNotBeingHealed IsARecentKill KilledPlayerDelay DemomanNotAssistSpeech + ApplyContext "DemomanAssistSpeech:1:20" + Response KilledPlayerAssistDemoman + Response KilledPlayerAssistDemoman2 +} + +// End custom + +Response PlayerYesDemoman +{ + scene "scenes/Player/Demoman/low/1037.vcd" + scene "scenes/Player/Demoman/low/1038.vcd" + scene "scenes/Player/Demoman/low/1039.vcd" +} +Rule PlayerYesDemoman +{ + criteria ConceptPlayerYes IsDemoman + Response PlayerYesDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeDemoman +{ + scene "scenes/Player/Demoman/low/860.vcd" + scene "scenes/Player/Demoman/low/861.vcd" + scene "scenes/Player/Demoman/low/862.vcd" +} +Rule PlayerActivateChargeDemoman +{ + criteria ConceptPlayerActivateCharge IsDemoman + Response PlayerActivateChargeDemoman +} + +Response PlayerCloakedSpyDemoman +{ + scene "scenes/Player/Demoman/low/889.vcd" + scene "scenes/Player/Demoman/low/890.vcd" + scene "scenes/Player/Demoman/low/891.vcd" +} +Rule PlayerCloakedSpyDemoman +{ + criteria ConceptPlayerCloakedSpy IsDemoman + Response PlayerCloakedSpyDemoman +} + +Response PlayerDispenserHereDemoman +{ + scene "scenes/Player/Demoman/low/964.vcd" +} +Rule PlayerDispenserHereDemoman +{ + criteria ConceptPlayerDispenserHere IsDemoman + Response PlayerDispenserHereDemoman +} + +Response PlayerIncomingDemoman +{ + scene "scenes/Player/Demoman/low/932.vcd" + scene "scenes/Player/Demoman/low/933.vcd" + scene "scenes/Player/Demoman/low/934.vcd" +} +Rule PlayerIncomingDemoman +{ + criteria ConceptPlayerIncoming IsDemoman + Response PlayerIncomingDemoman +} + +Response PlayerSentryAheadDemoman +{ + scene "scenes/Player/Demoman/low/994.vcd" + scene "scenes/Player/Demoman/low/995.vcd" + scene "scenes/Player/Demoman/low/996.vcd" +} +Rule PlayerSentryAheadDemoman +{ + criteria ConceptPlayerSentryAhead IsDemoman + Response PlayerSentryAheadDemoman +} + +Response PlayerSentryHereDemoman +{ + scene "scenes/Player/Demoman/low/966.vcd" +} +Rule PlayerSentryHereDemoman +{ + criteria ConceptPlayerSentryHere IsDemoman + Response PlayerSentryHereDemoman +} + +Response PlayerTeleporterHereDemoman +{ + scene "scenes/Player/Demoman/low/968.vcd" +} +Rule PlayerTeleporterHereDemoman +{ + criteria ConceptPlayerTeleporterHere IsDemoman + Response PlayerTeleporterHereDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCryDemoman +{ + scene "scenes/Player/Demoman/low/1358.vcd" + scene "scenes/Player/Demoman/low/1369.vcd" + scene "scenes/Player/Demoman/low/876.vcd" + scene "scenes/Player/Demoman/low/877.vcd" + scene "scenes/Player/Demoman/low/878.vcd" + scene "scenes/Player/Demoman/low/879.vcd" + scene "scenes/Player/Demoman/low/880.vcd" +} +Rule PlayerBattleCryDemoman +{ + criteria ConceptPlayerBattleCry IsDemoman + Response PlayerBattleCryDemoman +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatDemoman +{ + scene "scenes/Player/Demoman/low/1028.vcd" + scene "scenes/Player/Demoman/low/1017.vcd" + scene "scenes/Player/Demoman/low/1015.vcd" +} +Rule MeleeDareCombatDemoman +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsDemoman IsCrossHairEnemy + Response MeleeDareCombatDemoman +} +//End custom + + +Response PlayerCheersDemoman +{ + scene "scenes/Player/Demoman/low/881.vcd" + scene "scenes/Player/Demoman/low/883.vcd" + scene "scenes/Player/Demoman/low/884.vcd" + scene "scenes/Player/Demoman/low/1359.vcd" + scene "scenes/Player/Demoman/low/886.vcd" + scene "scenes/Player/Demoman/low/887.vcd" + scene "scenes/Player/Demoman/low/882.vcd" + scene "scenes/Player/Demoman/low/885.vcd" +} +Rule PlayerCheersDemoman +{ + criteria ConceptPlayerCheers IsDemoman + Response PlayerCheersDemoman +} + +Response PlayerGoodJobDemoman +{ + scene "scenes/Player/Demoman/low/914.vcd" + scene "scenes/Player/Demoman/low/915.vcd" +} +Rule PlayerGoodJobDemoman +{ + criteria ConceptPlayerGoodJob IsDemoman + Response PlayerGoodJobDemoman +} + +Response PlayerJeersDemoman +{ + scene "scenes/Player/Demoman/low/938.vcd" + scene "scenes/Player/Demoman/low/939.vcd" + scene "scenes/Player/Demoman/low/940.vcd" + scene "scenes/Player/Demoman/low/941.vcd" + scene "scenes/Player/Demoman/low/942.vcd" + scene "scenes/Player/Demoman/low/944.vcd" + scene "scenes/Player/Demoman/low/945.vcd" + scene "scenes/Player/Demoman/low/947.vcd" + scene "scenes/Player/Demoman/low/948.vcd" + scene "scenes/Player/Demoman/low/949.vcd" + scene "scenes/Player/Demoman/low/946.vcd" +} +Rule PlayerJeersDemoman +{ + criteria ConceptPlayerJeers IsDemoman + Response PlayerJeersDemoman +} + +Response PlayerLostPointDemoman +{ + scene "scenes/Player/Demoman/low/973.vcd" + scene "scenes/Player/Demoman/low/1360.vcd" + scene "scenes/Player/Demoman/low/969.vcd" + scene "scenes/Player/Demoman/low/970.vcd" + scene "scenes/Player/Demoman/low/971.vcd" + scene "scenes/Player/Demoman/low/972.vcd" +} +Rule PlayerLostPointDemoman +{ + criteria ConceptPlayerLostPoint IsDemoman + Response PlayerLostPointDemoman +} + +Response PlayerNegativeDemoman +{ + scene "scenes/Player/Demoman/low/973.vcd" + scene "scenes/Player/Demoman/low/1360.vcd" + scene "scenes/Player/Demoman/low/969.vcd" + scene "scenes/Player/Demoman/low/970.vcd" + scene "scenes/Player/Demoman/low/971.vcd" + scene "scenes/Player/Demoman/low/972.vcd" +} +Rule PlayerNegativeDemoman +{ + criteria ConceptPlayerNegative IsDemoman + Response PlayerNegativeDemoman +} + +Response PlayerNiceShotDemoman +{ + scene "scenes/Player/Demoman/low/974.vcd" + scene "scenes/Player/Demoman/low/975.vcd" + scene "scenes/Player/Demoman/low/976.vcd" +} +Rule PlayerNiceShotDemoman +{ + criteria ConceptPlayerNiceShot IsDemoman + Response PlayerNiceShotDemoman +} + +Response PlayerPositiveDemoman +{ + scene "scenes/Player/Demoman/low/989.vcd" + scene "scenes/Player/Demoman/low/990.vcd" + scene "scenes/Player/Demoman/low/991.vcd" + scene "scenes/Player/Demoman/low/992.vcd" + scene "scenes/Player/Demoman/low/993.vcd" +} + +Response PlayerTauntsDemoman +{ + scene "scenes/Player/Demoman/low/1380.vcd" + scene "scenes/Player/Demoman/low/1382.vcd" + scene "scenes/Player/Demoman/low/1386.vcd" +} +Rule PlayerPositiveDemoman +{ + criteria ConceptPlayerPositive IsDemoman + Response PlayerPositiveDemoman + Response PlayerTauntsDemoman +} + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Criterion "DemomanNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "DemomanNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "DemomanNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "DemomanNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "DemomanNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "DemomanNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Response CartMovingBackwardsDefenseDemoman +{ + scene "scenes/Player/Demoman/low/7718.vcd" + scene "scenes/Player/Demoman/low/7719.vcd" + scene "scenes/Player/Demoman/low/7720.vcd" +} +Rule CartMovingBackwardsDefenseDemoman +{ + criteria ConceptCartMovingBackward IsOnDefense IsDemoman 75PercentChance + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseDemoman +} +Response CartMovingBackwardsOffenseDemoman +{ + scene "scenes/Player/Demoman/low/7714.vcd" + scene "scenes/Player/Demoman/low/7715.vcd" + scene "scenes/Player/Demoman/low/7713.vcd" + scene "scenes/Player/Demoman/low/8533.vcd" +} +Rule CartMovingBackwardsOffenseDemoman +{ + criteria ConceptCartMovingBackward IsOnOffense IsDemoman 75PercentChance + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseDemoman +} +Response CartMovingForwardDefenseDemoman +{ + scene "scenes/Player/Demoman/low/7716.vcd" + scene "scenes/Player/Demoman/low/7717.vcd" +} +Rule CartMovingForwardDefenseDemoman +{ + criteria ConceptCartMovingForward IsOnDefense IsDemoman 75PercentChance + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseDemoman +} +Response CartMovingForwardOffenseDemoman +{ + scene "scenes/Player/Demoman/low/7704.vcd" + scene "scenes/Player/Demoman/low/7705.vcd" + scene "scenes/Player/Demoman/low/7706.vcd" + scene "scenes/Player/Demoman/low/7707.vcd" + scene "scenes/Player/Demoman/low/7711.vcd" + scene "scenes/Player/Demoman/low/7721.vcd" + scene "scenes/Player/Demoman/low/7723.vcd" + scene "scenes/Player/Demoman/low/7724.vcd" +} +Rule CartMovingForwardOffenseDemoman +{ + criteria ConceptCartMovingForward IsOnOffense IsDemoman 75PercentChance + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseDemoman +} +Response CartMovingStoppedDefenseDemoman +{ +} +Rule CartMovingStoppedDefenseDemoman +{ + criteria ConceptCartMovingStopped IsOnDefense IsDemoman 75PercentChance + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseDemoman +} +Response CartMovingStoppedOffenseDemoman +{ + scene "scenes/Player/Demoman/low/7726.vcd" + scene "scenes/Player/Demoman/low/7727.vcd" + scene "scenes/Player/Demoman/low/7725.vcd" +} +Rule CartMovingStoppedOffenseDemoman +{ + criteria ConceptCartMovingStopped IsOnOffense IsDemoman 75PercentChance + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseDemoman +} +//-------------------------------------------------------------------------------------------------------------- +// END OF Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompDemoman +{ + criteria ConceptPlayerRoundStartComp IsDemoman IsFirstRound IsNotComp6v6 40PercentChance + Response PlayerFirstRoundStartCompDemoman +} + +Response PlayerFirstRoundStartComp6sDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_6s_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamefirst_6s_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartComp6sDemoman +{ + criteria ConceptPlayerRoundStartComp IsDemoman IsFirstRound IsComp6v6 40PercentChance + Response PlayerFirstRoundStartComp6sDemoman +} + +Response PlayerWonPrevRoundCompDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamewonlast_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompDemoman +{ + criteria ConceptPlayerRoundStartComp IsDemoman IsNotFirstRound PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompDemoman +} + +Response PlayerLostPrevRoundCompDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_pregamelostlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregamelostlast_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompDemoman +{ + criteria ConceptPlayerRoundStartComp IsDemoman IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompDemoman +} + +Response PlayerTiedPrevRoundCompDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregametie_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_pregametie_04.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompDemoman +{ + criteria ConceptPlayerRoundStartComp IsDemoman IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompDemoman +} + +Response PlayerGameWinCompDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_rare_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_rare_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_rare_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Demoman/low/cm_demo_gamewon_rare_03.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompDemoman +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsDemoman 40PercentChance + Response PlayerGameWinCompDemoman +} + +Response PlayerMatchWinCompDemoman +{ + scene "scenes/Player/Demoman/low/cm_demo_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Demoman/low/cm_demo_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Demoman/low/cm_demo_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Demoman/low/cm_demo_matchwon_04.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompDemoman +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsDemoman 40PercentChance + Response PlayerMatchWinCompDemoman +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/demoman_auto.lua b/gamemodes/tf/gamemode/contents/talker/demoman_auto.lua new file mode 100644 index 000000000..f9ab10749 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/demoman_auto.lua @@ -0,0 +1,69 @@ +//-------------------------------------------------------------------------------------------------------------- +// Demoman Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + +Response item_unicorn_uberDemoman +{ + scene "scenes/Player/Demoman/low/7780.vcd" + scene "scenes/Player/Demoman/low/7781.vcd" + scene "scenes/Player/Demoman/low/7784.vcd" +} +Rule item_unicorn_uberDemoman +{ + criteria ConceptMedicChargeDeployed IsDemoman IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsUnicornHead + Response item_unicorn_uberDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_round_startDemoman +{ + scene "scenes/Player/Demoman/low/7773.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/7776.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Demoman/low/7777.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startDemoman +{ + criteria ConceptPlayerRoundStart IsDemoman 100PercentChance IsUnicornHead + Response item_unicorn_round_startDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_dominationDemoman +{ + scene "scenes/Player/Demoman/low/7785.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/7786.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/7787.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/7788.vcd" predelay "2.5" + scene "scenes/Player/Demoman/low/7790.vcd" predelay "2.5" +} +Rule item_unicorn_dominationDemoman +{ + criteria ConceptKilledPlayer IsDemoman IsDominated 30PercentChance IsUnicornHead + ApplyContext "DemomanKillSpeech:1:10" + Response item_unicorn_dominationDemoman +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_on_fireDemoman +{ + scene "scenes/Player/Demoman/low/7778.vcd" + scene "scenes/Player/Demoman/low/7779.vcd" +} +Rule item_unicorn_on_fireDemoman +{ + criteria ConceptFire IsDemoman DemomanIsNotStillonFire 20PercentChance IsUnicornHead + ApplyContext "DemomanOnFire:1:7" + Response item_unicorn_on_fireDemoman +} + diff --git a/gamemodes/tf/gamemode/contents/talker/engineer.lua b/gamemodes/tf/gamemode/contents/talker/engineer.lua new file mode 100644 index 000000000..ddb88d35c --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/engineer.lua @@ -0,0 +1,1850 @@ +//-------------------------------------------------------------------------------------------------------------- +// Engineer Response Rule File +//-------------------------------------------------------------------------------------------------------------- + +Response PlayerCloakedSpyDemomanEngineer +{ + scene "scenes/Player/Engineer/low/56.vcd" +} +Rule PlayerCloakedSpyDemomanEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnDemoman + Response PlayerCloakedSpyDemomanEngineer +} + +Response PlayerCloakedSpyEngineerEngineer +{ + scene "scenes/Player/Engineer/low/62.vcd" +} +Rule PlayerCloakedSpyEngineerEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnEngineer + Response PlayerCloakedSpyEngineerEngineer +} + +Response PlayerCloakedSpyHeavyEngineer +{ + scene "scenes/Player/Engineer/low/52.vcd" +} +Rule PlayerCloakedSpyHeavyEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnHeavy + Response PlayerCloakedSpyHeavyEngineer +} + +Response PlayerCloakedSpyMedicEngineer +{ + scene "scenes/Player/Engineer/low/60.vcd" +} +Rule PlayerCloakedSpyMedicEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnMedic + Response PlayerCloakedSpyMedicEngineer +} + +Response PlayerCloakedSpyPyroEngineer +{ + scene "scenes/Player/Engineer/low/54.vcd" +} +Rule PlayerCloakedSpyPyroEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnPyro + Response PlayerCloakedSpyPyroEngineer +} + +Response PlayerCloakedSpyScoutEngineer +{ + scene "scenes/Player/Engineer/low/48.vcd" +} +Rule PlayerCloakedSpyScoutEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnScout + Response PlayerCloakedSpyScoutEngineer +} + +Response PlayerCloakedSpySniperEngineer +{ + scene "scenes/Player/Engineer/low/64.vcd" +} +Rule PlayerCloakedSpySniperEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnSniper + Response PlayerCloakedSpySniperEngineer +} + +Response PlayerCloakedSpySoldierEngineer +{ + scene "scenes/Player/Engineer/low/50.vcd" +} +Rule PlayerCloakedSpySoldierEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnSoldier + Response PlayerCloakedSpySoldierEngineer +} + +Response PlayerCloakedSpySpyEngineer +{ + scene "scenes/Player/Engineer/low/58.vcd" + scene "scenes/Player/Engineer/low/59.vcd" +} +Rule PlayerCloakedSpySpyEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer IsOnSpy + Response PlayerCloakedSpySpyEngineer +} + +Response PlayerDispenserDownEngineer +{ + scene "scenes/Player/Engineer/low/25.vcd" +} +Rule PlayerDispenserDownEngineer +{ + criteria ConceptLostObject IsDispenser IsEngineer + Response PlayerDispenserDownEngineer +} + +Response PlayerSentryDownEngineer +{ + scene "scenes/Player/Engineer/low/26.vcd" +} +Rule PlayerSentryDownEngineer +{ + criteria ConceptLostObject IsSentryGun IsEngineer + Response PlayerSentryDownEngineer +} + +Response PlayerTeleporterDownEngineer +{ + scene "scenes/Player/Engineer/low/27.vcd" +} +Rule PlayerTeleporterDownEngineer +{ + criteria ConceptLostObject IsTeleporter IsEngineer + Response PlayerTeleporterDownEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksEngineer +{ + scene "scenes/Player/Engineer/low/181.vcd" + scene "scenes/Player/Engineer/low/183.vcd" +} +Rule HealThanksEngineer +{ + criteria ConceptMedicChargeStopped IsEngineer SuperHighHealthContext EngineerNotSaidHealThanks 50PercentChance + ApplyContext "EngineerSaidHealThanks:1:20" + Response HealThanksEngineer +} + +Response PlayerRoundStartEngineer +{ + scene "scenes/Player/Engineer/low/31.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/33.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/34.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/35.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/36.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/1329.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartEngineer +{ + criteria ConceptPlayerRoundStart IsEngineer + Response PlayerRoundStartEngineer +} + +Response PlayerCappedIntelligenceEngineer +{ + scene "scenes/Player/Engineer/low/19.vcd" + scene "scenes/Player/Engineer/low/21.vcd" + scene "scenes/Player/Engineer/low/20.vcd" +} +Rule PlayerCappedIntelligenceEngineer +{ + criteria ConceptPlayerCapturedIntelligence IsEngineer + Response PlayerCappedIntelligenceEngineer +} + +Response PlayerCapturedPointEngineer +{ + scene "scenes/Player/Engineer/low/16.vcd" + scene "scenes/Player/Engineer/low/18.vcd" + scene "scenes/Player/Engineer/low/17.vcd" +} +Rule PlayerCapturedPointEngineer +{ + criteria ConceptPlayerCapturedPoint IsEngineer + Response PlayerCapturedPointEngineer +} + +Response PlayerSuddenDeathEngineer +{ + scene "scenes/Player/Engineer/low/94.vcd" + scene "scenes/Player/Engineer/low/95.vcd" + scene "scenes/Player/Engineer/low/96.vcd" + scene "scenes/Player/Engineer/low/98.vcd" +} +Rule PlayerSuddenDeathEngineer +{ + criteria ConceptPlayerSuddenDeathStart IsEngineer + Response PlayerSuddenDeathEngineer +} + +Response PlayerStalemateEngineer +{ + scene "scenes/Player/Engineer/low/22.vcd" + scene "scenes/Player/Engineer/low/23.vcd" + scene "scenes/Player/Engineer/low/24.vcd" +} +Rule PlayerStalemateEngineer +{ + criteria ConceptPlayerStalemate IsEngineer + Response PlayerStalemateEngineer +} + +Response PlayerTeleporterThanksEngineer +{ + scene "scenes/Player/Engineer/low/186.vcd" + scene "scenes/Player/Engineer/low/184.vcd" +} +Rule PlayerTeleporterThanksEngineer +{ + criteria ConceptTeleported IsEngineer 30PercentChance + Response PlayerTeleporterThanksEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointEngineer +{ + scene "scenes/Player/Engineer/low/1344.vcd" + scene "scenes/Player/Engineer/low/161.vcd" +} +Rule DefendOnThePointEngineer +{ + criteria ConceptFireWeapon IsEngineer IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointEngineer +} + +// Custom stuff +Response KilledPlayerAssistAutoEngineer +{ + scene "scenes/Player/Engineer/low/159.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/160.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsBeingHealed IsARecentKill KilledPlayerDelay 20PercentChance EngineerNotAssistSpeech + ApplyContext "EngineerAssistSpeech:1:20" + Response KilledPlayerAssistAutoEngineer +} +// End custom + +Response EngineerGoldenWrench +{ + scene "scenes/Player/Engineer/low/3605.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3690.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3691.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3602.vcd" predelay ".25" +} +Rule EngineerGoldenWrench +{ + criteria ConceptKilledPlayer IsEngineer WeaponIsGoldenWrench WeaponIsWrench WeaponIsNotSentry EngineerNotKillSpeechMelee + ApplyContext "EngineerKillSpeechMelee:1:10" + Response EngineerGoldenWrench +} +Rule EngineerSaxxy +{ + criteria ConceptKilledPlayer IsEngineer WeaponIsSaxxy WeaponIsNotSentry EngineerNotKillSpeechMelee + ApplyContext "EngineerKillSpeechMelee:1:10" + Response EngineerGoldenWrench +} +Rule EngineerGoldenFryingPan +{ + criteria ConceptKilledPlayer IsEngineer WeaponIsGoldenFryingPan WeaponIsNotSentry EngineerNotKillSpeechMelee + ApplyContext "EngineerKillSpeechMelee:1:10" + Response EngineerGoldenWrench +} + + +Response EngineerLaserPointer +{ + scene "scenes/Player/Engineer/low/3603.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3604.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3700.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3704.vcd" predelay ".25" +} +Rule EngineerLaserPointer +{ + criteria ConceptKilledPlayer IsEngineer WeaponIsLaserPointer 30PercentChance + ApplyContext "EngineerKillSpeech:1:10" + Response EngineerLaserPointer +} + +Response KillTauntsEngineerMiniSentry +{ + scene "scenes/Player/Engineer/low/3705.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3706.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3707.vcd" predelay ".25" +} +Rule KillTauntsEngineerMiniSentry +{ + criteria ConceptKilledPlayer WeaponIsMiniSentrygun IsEngineer 20PercentChance + ApplyContext "EngineerKillSpeech:1:10" + Response KillTauntsEngineerMiniSentry +} + +Response KillTauntsEngineerSpecial +{ + scene "scenes/Player/Engineer/low/148.vcd" + scene "scenes/Player/Engineer/low/153.vcd" + scene "scenes/Player/Engineer/low/156.vcd" + scene "scenes/Player/Engineer/low/157.vcd" +} +Rule KillTauntsEngineerSpecial +{ + criteria ConceptKilledPlayer IsManyRecentKills WeaponIsSentrygun KilledPlayerDelay EngineerNotKillSpeech IsEngineer 30PercentChance + ApplyContext "EngineerKillSpeech:1:10" + Response KillTauntsEngineerSpecial +} + +Response KilledPlayerManyEngineer +{ + scene "scenes/Player/Engineer/low/151.vcd" + scene "scenes/Player/Engineer/low/158.vcd" + scene "scenes/Player/Engineer/low/154.vcd" +} +Rule KilledPlayerManyEngineer +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance KilledPlayerDelay EngineerNotKillSpeech IsEngineer WeaponIsNotRobotArm + ApplyContext "EngineerKillSpeech:1:10" + Response KilledPlayerManyEngineer +} + +Response KilledPlayerMeleeEngineerEngineer +{ + scene "scenes/Player/Engineer/low/155.vcd" +} +Rule KilledPlayerMeleeEngineerEngineer +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee EngineerNotKillSpeechMelee IsEngineer WeaponIsNotSentry + ApplyContext "EngineerKillSpeechMelee:1:10" + Response KilledPlayerMeleeEngineerEngineer +} + +// Custom stuff +// Rule for when your mini sentry is killed and you are holding your Frontier Justice +// Let's hope you have some crits ready, because this line is very fitting. + +Response EngyCritsReady +{ + scene "scenes/player/Engineer/low/167.vcd" + scene "scenes/player/Engineer/low/172.vcd" + scene "scenes/player/Engineer/low/177.vcd" +} + +Rule EngyCritsReady +{ + criteria ConceptLostObject IsSentryGun IsEngineer IsMiniSentryKill WeaponIsFrontierJustice EngineerNotKillSpeech + ApplyContext "EngineerKillSpeech:1:10" + Response EngyCritsReady +} + +Rule EngyCritsReady2 +{ + criteria ConceptLostObject IsSentryGun IsEngineer IsSentryKill WeaponIsFrontierJustice EngineerNotKillSpeech + ApplyContext "EngineerKillSpeech:1:10" + Response EngyCritsReady +} + +Rule EngyCritsReadyFestive +{ + criteria ConceptLostObject IsSentryGun IsEngineer IsMiniSentryKill WeaponIsFestiveFrontierJustice EngineerNotKillSpeech + ApplyContext "EngineerKillSpeech:1:10" + Response EngyCritsReady +} + +Rule EngyCritsReady2Festive +{ + criteria ConceptLostObject IsSentryGun IsEngineer IsSentryKill WeaponIsFestiveFrontierJustice EngineerNotKillSpeech + ApplyContext "EngineerKillSpeech:1:10" + Response EngyCritsReady +} + + +// Check if mini sentry has had a kill in the past thirty seconds +Rule MiniSentryKill +{ + criteria ConceptKilledPlayer WeaponIsMiniSentrygun IsEngineer + ApplyContext "MiniSentryKill:1:15" + Response PlayerExpressionAttackEngineer +} + +// Check if sentry has had a kill in the past thirty seconds +Rule SentryKill +{ + criteria ConceptKilledPlayer WeaponIsSentrygun IsEngineer + ApplyContext "MiniSentryKill:1:15" + Response PlayerExpressionAttackEngineer +} + +// Invulnerable responses +Response InvulnerableSpeechEngineer +{ + scene "scenes/Player/Engineer/low/176.vcd" + scene "scenes/Player/Engineer/low/177.vcd" + scene "scenes/Player/Engineer/low/1018.vcd" + scene "scenes/Player/Engineer/low/3619.vcd" +} + +Rule InvulnerableSpeechEngineer +{ + criteria ConceptFireWeapon IsEngineer IsInvulnerable 20PercentChance + ApplyContext "EngineerInvulnerableSpeech:1:30" + Response InvulnerableSpeechEngineer + Response EngyCritsReady +} + +// End custom + +Response KilledPlayerVeryManyEngineer +{ + scene "scenes/Player/Engineer/low/147.vcd" +} +Rule KilledPlayerVeryManyEngineer +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance KilledPlayerDelay EngineerNotKillSpeech IsEngineer WeaponIsNotRobotArm + ApplyContext "EngineerKillSpeech:1:10" + Response KilledPlayerVeryManyEngineer +} + +Response MedicFollowEngineer +{ + scene "scenes/Player/Engineer/low/3618.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3693.vcd" predelay ".25" + scene "scenes/Player/Engineer/low/3694.vcd" predelay ".25" +} +Rule MedicFollowEngineer +{ + criteria ConceptPlayerMedic IsOnMedic IsEngineer IsNotCrossHairEnemy NotLowHealth EngineerIsNotStillonFire + ApplyContext "EngineerKillSpeech:1:10" + Response MedicFollowEngineer +} + +Response EngySwingFistStart +{ + scene "scenes/player/Engineer/low/3589.vcd" + scene "scenes/player/Engineer/low/3590.vcd" + scene "scenes/player/Engineer/low/3591.vcd" +} +Rule EngySwingFistStart +{ + criteria ConceptFireWeapon WeaponIsRobotArm IsEngineer EngineerNotKillSpeech IsNotEngyFistSwung + ApplyContext "EngyFistSwung:1:20" //every 20 seconds this line will fire + Response EngySwingFistStart +} + +Response EngySwingFist +{ + scene "scenes/player/Engineer/low/3592.vcd" + scene "scenes/player/Engineer/low/3594.vcd" + scene "scenes/player/Engineer/low/3703.vcd" +} +Rule EngySwingFist +{ + criteria ConceptKilledPlayer KilledPlayerDelay WeaponIsRobotArm IsEngyFistSwung IsEngineer WeaponIsNotMiniSentrygun EngineerNotKillSpeechMelee + ApplyContext "EngineerKillSpeechMelee:1:20" + Response EngySwingFist +} + +// Custom stuff +Response EngineerJarateHit +{ + scene "scenes/Player/Engineer/low/22.vcd" + scene "scenes/Player/Engineer/low/23.vcd" + scene "scenes/Player/Engineer/low/150.vcd" +} +Rule EngineerJarateHit +{ + criteria ConceptJarateHit IsEngineer 50PercentChance + Response EngineerJarateHit +} +// End custom + +Response PlayerKilledCapperEngineer +{ + scene "scenes/Player/Engineer/low/36.vcd" + scene "scenes/Player/Engineer/low/1330.vcd" + scene "scenes/Player/Engineer/low/42.vcd" + scene "scenes/Player/Engineer/low/43.vcd" + scene "scenes/Player/Engineer/low/41.vcd" +} +Rule PlayerKilledCapperEngineer +{ + criteria ConceptCapBlocked IsEngineer + ApplyContext "EngineerKillSpeech:1:10" + Response PlayerKilledCapperEngineer +} + +Response PlayerKilledDominatingDemomanEngineer +{ + scene "scenes/Player/Engineer/low/3581.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3617.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3678.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3679.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3680.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3681.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemomanEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimDemoman + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemomanEngineer +} + +Response PlayerKilledDominatingEngineerEngineer +{ + scene "scenes/Player/Engineer/low/3585.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3634.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3635.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3636.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3637.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3638.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3639.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3640.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3641.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingEngineerEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimEngineer + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingEngineerEngineer +} + +Response PlayerKilledDominatingHeavyEngineer +{ + scene "scenes/Player/Engineer/low/3584.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3609.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3610.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3642.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3645.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3643.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3644.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3647.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3648.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3649.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3650.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3682.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3683.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3684.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3702.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavyEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimHeavy + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavyEngineer +} + +Response PlayerKilledDominatingMedicEngineer +{ + scene "scenes/Player/Engineer/low/3582.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3613.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3614.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3669.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3670.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3671.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3672.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3673.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedicEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimMedic + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedicEngineer +} + +Response PlayerKilledDominatingPyroEngineer +{ + scene "scenes/Player/Engineer/low/3583.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3612.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3661.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3662.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3664.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3665.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3666.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3668.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3667.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyroEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimPyro + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyroEngineer +} + +Response PlayerKilledDominatingScoutEngineer +{ + scene "scenes/Player/Engineer/low/3588.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3606.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3616.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3621.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3622.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3623.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3624.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3625.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3626.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3627.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3628.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3701.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScoutEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimScout + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScoutEngineer +} + +Response PlayerKilledDominatingSniperEngineer +{ + scene "scenes/Player/Engineer/low/3587.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3607.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3629.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3630.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3631.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3632.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3633.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3685.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSniperEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimSniper + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSniperEngineer +} + +Response PlayerKilledDominatingSoldierEngineer +{ + scene "scenes/Player/Engineer/low/3580.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3615.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3674.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3675.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3676.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3686.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3687.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3688.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldierEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimSoldier + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldierEngineer +} + +Response PlayerKilledDominatingSpyEngineer +{ + scene "scenes/Player/Engineer/low/3586.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3611.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3651.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3652.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3653.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3654.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3655.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3656.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3657.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3659.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3658.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3689.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3660.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSpyEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated IsVictimSpy + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSpyEngineer +} + +Response PlayerKilledForRevengeEngineer +{ + scene "scenes/Player/Engineer/low/3579.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/1329.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/40.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/39.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/44.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/98.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/100.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/1331.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/1335.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/1336.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/101.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/1334.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/102.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/103.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/149.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/164.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/168.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/3696.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsRevenge + ApplyContext "EngineerKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Engineer +//-------------------------------------------------------------------------------------------------------------- +Response CarrySentryEngineer +{ + scene "scenes/Player/Engineer/low/3599.vcd" + scene "scenes/Player/Engineer/low/3600.vcd" +} +Rule CarrySentryEngineer +{ + criteria ConceptEngineerCarryingBuilding IsEngineer 20PercentChance + Response CarrySentryEngineer +} + +Response DeploySentryEngineer +{ + scene "scenes/Player/Engineer/low/3697.vcd" + scene "scenes/Player/Engineer/low/3601.vcd" + scene "scenes/Player/Engineer/low/3699.vcd" + scene "scenes/Player/Engineer/low/3698.vcd" +} +Rule DeploySentryEngineer +{ + criteria ConceptEngineerDeployBuilding IsEngineer + Response DeploySentryEngineer +} + +Response PickupSentryEngineer +{ + scene "scenes/Player/Engineer/low/3595.vcd" + scene "scenes/Player/Engineer/low/3597.vcd" + scene "scenes/Player/Engineer/low/3596.vcd" +} +Rule PickupSentryEngineer +{ + criteria ConceptEngineerPickupBuilding IsEngineer + Response PickupSentryEngineer +} + +Response PlayerBuildingDispenserEngineer +{ + scene "scenes/Player/Engineer/low/8.vcd" + scene "scenes/Player/Engineer/low/9.vcd" +} +Rule PlayerBuildingDispenserEngineer +{ + criteria ConceptPlayerBuildingObject IsDispenser IsEngineer + Response PlayerBuildingDispenserEngineer +} + +Response PlayerBuildingSentryEngineer +{ + scene "scenes/Player/Engineer/low/12.vcd" + scene "scenes/Player/Engineer/low/11.vcd" +} +Rule PlayerBuildingSentryEngineer +{ + criteria ConceptPlayerBuildingObject IsSentryGun IsEngineer + Response PlayerBuildingSentryEngineer +} + +Response PlayerBuildingTeleporterEngineer +{ + scene "scenes/Player/Engineer/low/13.vcd" + scene "scenes/Player/Engineer/low/15.vcd" +} +Rule PlayerBuildingTeleporterEngineer +{ + criteria ConceptPlayerBuildingObject IsTeleporter IsEngineer + Response PlayerBuildingTeleporterEngineer +} + + +Response PlayerDispenserSappedEngineer +{ + scene "scenes/Player/Engineer/low/5.vcd" +} +Rule PlayerDispenserSappedEngineer +{ + criteria ConceptSpySapping IsEngineer IsDispenser + Response PlayerDispenserSappedEngineer +} + +Response PlayerSentrySappedEngineer +{ + scene "scenes/Player/Engineer/low/4.vcd" +} +Rule PlayerSentrySappedEngineer +{ + criteria ConceptSpySapping IsEngineer IsSentryGun + Response PlayerSentrySappedEngineer +} + +Response PlayerTeleporterSappedEngineer +{ + scene "scenes/Player/Engineer/low/6.vcd" +} +Rule PlayerTeleporterSappedEngineer +{ + criteria ConceptSpySapping IsEngineer IsTeleporter + Response PlayerTeleporterSappedEngineer +} + + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainEngineer +{ + scene "scenes/Player/Engineer/low/133.vcd" + scene "scenes/Player/Engineer/low/134.vcd" + scene "scenes/Player/Engineer/low/135.vcd" + scene "scenes/Player/Engineer/low/1254.vcd" + scene "scenes/Player/Engineer/low/1255.vcd" + scene "scenes/Player/Engineer/low/1256.vcd" + scene "scenes/Player/Engineer/low/1257.vcd" +} +Rule PlayerAttackerPainEngineer +{ + criteria ConceptAttackerPain IsEngineer + Response PlayerAttackerPainEngineer +} + +Response PlayerOnFireEngineer +{ + scene "scenes/Player/Engineer/low/28.vcd" + scene "scenes/Player/Engineer/low/30.vcd" + scene "scenes/Player/Engineer/low/29.vcd" +} +Rule PlayerOnFireEngineer +{ + criteria ConceptFire IsEngineer EngineerIsNotStillonFire + ApplyContext "EngineerOnFire:1:7" + Response PlayerOnFireEngineer +} + +Response PlayerPainEngineer +{ + scene "scenes/Player/Engineer/low/136.vcd" + scene "scenes/Player/Engineer/low/137.vcd" + scene "scenes/Player/Engineer/low/138.vcd" + scene "scenes/Player/Engineer/low/1249.vcd" + scene "scenes/Player/Engineer/low/1250.vcd" + scene "scenes/Player/Engineer/low/1251.vcd" + scene "scenes/Player/Engineer/low/1252.vcd" + scene "scenes/Player/Engineer/low/1253.vcd" +} +Rule PlayerPainEngineer +{ + criteria ConceptPain IsEngineer + Response PlayerPainEngineer +} + +Response PlayerStillOnFireEngineer +{ + scene "scenes/Player/Engineer/low/1931.vcd" +} +Rule PlayerStillOnFireEngineer +{ + criteria ConceptFire IsEngineer EngineerIsStillonFire + ApplyContext "EngineerOnFire:1:7" + Response PlayerStillOnFireEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelEngineer +{ + scene "scenes/Player/Engineer/low/35.vcd" + scene "scenes/Player/Engineer/low/163.vcd" + scene "scenes/Player/Engineer/low/166.vcd" + scene "scenes/Player/Engineer/low/169.vcd" + scene "scenes/Player/Engineer/low/172.vcd" + scene "scenes/Player/Engineer/low/174.vcd" + scene "scenes/Player/Engineer/low/188.vcd" +} +Rule AcceptedDuelEngineer +{ + criteria ConceptIAcceptDuel IsEngineer + Response AcceptedDuelEngineer +} + +Response MeleeDareEngineer +{ + scene "scenes/Player/Engineer/low/3619.vcd" + scene "scenes/Player/Engineer/low/3620.vcd" + scene "scenes/Player/Engineer/low/3695.vcd" +} +Rule MeleeDareEngineer +{ + criteria ConceptRequestDuel IsEngineer + Response MeleeDareEngineer +} + +Response RejectedDuelEngineer +{ + scene "scenes/Player/Engineer/low/24.vcd" + scene "scenes/Player/Engineer/low/94.vcd" + scene "scenes/Player/Engineer/low/3615.vcd" + scene "scenes/Player/Engineer/low/3658.vcd" +} +Rule RejectedDuelEngineer +{ + criteria ConceptDuelRejected IsEngineer + Response RejectedDuelEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoEngineer +{ + scene "scenes/Player/Engineer/low/69.vcd" + scene "scenes/Player/Engineer/low/68.vcd" + scene "scenes/Player/Engineer/low/67.vcd" +} +Rule PlayerGoEngineer +{ + criteria ConceptPlayerGo IsEngineer + Response PlayerGoEngineer +} + +Response PlayerHeadLeftEngineer +{ + scene "scenes/Player/Engineer/low/73.vcd" + scene "scenes/Player/Engineer/low/75.vcd" +} +Rule PlayerHeadLeftEngineer +{ + criteria ConceptPlayerLeft IsEngineer + Response PlayerHeadLeftEngineer +} + +Response PlayerHeadRightEngineer +{ + scene "scenes/Player/Engineer/low/76.vcd" + scene "scenes/Player/Engineer/low/77.vcd" + scene "scenes/Player/Engineer/low/78.vcd" +} +Rule PlayerHeadRightEngineer +{ + criteria ConceptPlayerRight IsEngineer + Response PlayerHeadRightEngineer +} + +Response PlayerHelpEngineer +{ + scene "scenes/Player/Engineer/low/79.vcd" + scene "scenes/Player/Engineer/low/80.vcd" + scene "scenes/Player/Engineer/low/81.vcd" +} +Rule PlayerHelpEngineer +{ + criteria ConceptPlayerHelp IsEngineer + Response PlayerHelpEngineer +} + +Response PlayerHelpCaptureEngineer +{ + scene "scenes/Player/Engineer/low/82.vcd" + scene "scenes/Player/Engineer/low/84.vcd" + scene "scenes/Player/Engineer/low/83.vcd" +} +Rule PlayerHelpCaptureEngineer +{ + criteria ConceptPlayerHelp IsEngineer IsOnCappableControlPoint + ApplyContext "EngineerHelpCap:1:10" + Response PlayerHelpCaptureEngineer +} + +Response PlayerHelpCapture2Engineer +{ + scene "scenes/Player/Engineer/low/161.vcd" + scene "scenes/Player/Engineer/low/1344.vcd" +} +Rule PlayerHelpCapture2Engineer +{ + criteria ConceptPlayerHelp IsEngineer IsOnCappableControlPoint IsHelpCapEngineer + Response PlayerHelpCapture2Engineer +} + +Response PlayerHelpDefendEngineer +{ + scene "scenes/Player/Engineer/low/85.vcd" + scene "scenes/Player/Engineer/low/86.vcd" + scene "scenes/Player/Engineer/low/87.vcd" +} +Rule PlayerHelpDefendEngineer +{ + criteria ConceptPlayerHelp IsEngineer IsOnFriendlyControlPoint + Response PlayerHelpDefendEngineer +} + +Response PlayerMedicEngineer +{ + scene "scenes/Player/Engineer/low/109.vcd" + scene "scenes/Player/Engineer/low/107.vcd" + scene "scenes/Player/Engineer/low/108.vcd" +} +Rule PlayerMedicEngineer +{ + criteria ConceptPlayerMedic IsEngineer + Response PlayerMedicEngineer +} + +Response PlayerAskForBallEngineer +{ +} +Rule PlayerAskForBallEngineer +{ + criteria ConceptPlayerAskForBall IsEngineer + Response PlayerAskForBallEngineer +} + +Response PlayerMoveUpEngineer +{ + scene "scenes/Player/Engineer/low/111.vcd" +} +Rule PlayerMoveUpEngineer +{ + criteria ConceptPlayerMoveUp IsEngineer + Response PlayerMoveUpEngineer +} + +Response PlayerNoEngineer +{ + scene "scenes/Player/Engineer/low/127.vcd" + scene "scenes/Player/Engineer/low/128.vcd" + scene "scenes/Player/Engineer/low/129.vcd" +} +Rule PlayerNoEngineer +{ + criteria ConceptPlayerNo IsEngineer + Response PlayerNoEngineer +} + +Response PlayerThanksEngineer +{ + scene "scenes/Player/Engineer/low/180.vcd" +} +Rule PlayerThanksEngineer +{ + criteria ConceptPlayerThanks IsEngineer + Response PlayerThanksEngineer +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistEngineer +{ + scene "scenes/Player/Engineer/low/159.vcd" + scene "scenes/Player/Engineer/low/160.vcd" +} +Rule KilledPlayerAssistEngineer +{ + criteria ConceptPlayerThanks IsEngineer IsARecentKill KilledPlayerDelay EngineerNotAssistSpeech + ApplyContext "EngineerAssistSpeech:1:20" + Response KilledPlayerAssistEngineer +} +// End custom + +Response PlayerYesEngineer +{ + scene "scenes/Player/Engineer/low/187.vcd" + scene "scenes/Player/Engineer/low/188.vcd" + scene "scenes/Player/Engineer/low/189.vcd" +} +Rule PlayerYesEngineer +{ + criteria ConceptPlayerYes IsEngineer + Response PlayerYesEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeEngineer +{ + scene "scenes/Player/Engineer/low/1.vcd" + scene "scenes/Player/Engineer/low/2.vcd" + scene "scenes/Player/Engineer/low/3.vcd" +} +Rule PlayerActivateChargeEngineer +{ + criteria ConceptPlayerActivateCharge IsEngineer + Response PlayerActivateChargeEngineer +} + +Response PlayerCloakedSpyEngineer +{ + scene "scenes/Player/Engineer/low/45.vcd" + scene "scenes/Player/Engineer/low/47.vcd" + scene "scenes/Player/Engineer/low/46.vcd" +} +Rule PlayerCloakedSpyEngineer +{ + criteria ConceptPlayerCloakedSpy IsEngineer + Response PlayerCloakedSpyEngineer +} + +Response PlayerDispenserHereEngineer +{ + scene "scenes/Player/Engineer/low/113.vcd" +} +Rule PlayerDispenserHereEngineer +{ + criteria ConceptPlayerDispenserHere IsEngineer + Response PlayerDispenserHereEngineer +} + +Response PlayerIncomingEngineer +{ + scene "scenes/Player/Engineer/low/88.vcd" + scene "scenes/Player/Engineer/low/89.vcd" + scene "scenes/Player/Engineer/low/90.vcd" +} +Rule PlayerIncomingEngineer +{ + criteria ConceptPlayerIncoming IsEngineer + Response PlayerIncomingEngineer +} + +Response PlayerSentryAheadEngineer +{ + scene "scenes/Player/Engineer/low/145.vcd" + scene "scenes/Player/Engineer/low/146.vcd" +} +Rule PlayerSentryAheadEngineer +{ + criteria ConceptPlayerSentryAhead IsEngineer + Response PlayerSentryAheadEngineer +} + +Response PlayerSentryHereEngineer +{ + scene "scenes/Player/Engineer/low/115.vcd" +} +Rule PlayerSentryHereEngineer +{ + criteria ConceptPlayerSentryHere IsEngineer + Response PlayerSentryHereEngineer +} + +Response PlayerTeleporterHereEngineer +{ + scene "scenes/Player/Engineer/low/117.vcd" + scene "scenes/Player/Engineer/low/118.vcd" +} +Rule PlayerTeleporterHereEngineer +{ + criteria ConceptPlayerTeleporterHere IsEngineer + Response PlayerTeleporterHereEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCryEngineer +{ + scene "scenes/Player/Engineer/low/31.vcd" + scene "scenes/Player/Engineer/low/33.vcd" + scene "scenes/Player/Engineer/low/34.vcd" + scene "scenes/Player/Engineer/low/35.vcd" + scene "scenes/Player/Engineer/low/36.vcd" + scene "scenes/Player/Engineer/low/1329.vcd" +} +Rule PlayerBattleCryEngineer +{ + criteria ConceptPlayerBattleCry IsEngineer + Response PlayerBattleCryEngineer +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatEngineer +{ + scene "scenes/Player/Engineer/low/163.vcd" + scene "scenes/Player/Engineer/low/166.vcd" + scene "scenes/Player/Engineer/low/172.vcd" + scene "scenes/Player/Engineer/low/169.vcd" + scene "scenes/Player/Engineer/low/174.vcd" + scene "scenes/Player/Engineer/low/178.vcd" + scene "scenes/Player/Engineer/low/3619.vcd" + scene "scenes/Player/Engineer/low/3620.vcd" + scene "scenes/Player/Engineer/low/3695.vcd" +} +Rule MeleeDareCombatEngineer +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsEngineer IsCrossHairEnemy + Response MeleeDareCombatEngineer +} +Rule MeleeDareCombatEngineerSlinger +{ + criteria ConceptPlayerBattleCry WeaponIsRobotArm IsEngineer IsCrossHairEnemy + Response MeleeDareCombatEngineer +} +//End custom + +Response PlayerCheersEngineer +{ + scene "scenes/Player/Engineer/low/40.vcd" + scene "scenes/Player/Engineer/low/1330.vcd" + scene "scenes/Player/Engineer/low/42.vcd" + scene "scenes/Player/Engineer/low/43.vcd" + scene "scenes/Player/Engineer/low/41.vcd" + scene "scenes/Player/Engineer/low/39.vcd" + scene "scenes/Player/Engineer/low/44.vcd" +} +Rule PlayerCheersEngineer +{ + criteria ConceptPlayerCheers IsEngineer + Response PlayerCheersEngineer +} + +Response PlayerGoodJobEngineer +{ + scene "scenes/Player/Engineer/low/70.vcd" + scene "scenes/Player/Engineer/low/72.vcd" + scene "scenes/Player/Engineer/low/71.vcd" +} +Rule PlayerGoodJobEngineer +{ + criteria ConceptPlayerGoodJob IsEngineer + Response PlayerGoodJobEngineer +} + +Response PlayerJeersEngineer +{ + scene "scenes/Player/Engineer/low/94.vcd" + scene "scenes/Player/Engineer/low/95.vcd" + scene "scenes/Player/Engineer/low/96.vcd" + scene "scenes/Player/Engineer/low/98.vcd" +} +Rule PlayerJeersEngineer +{ + criteria ConceptPlayerJeers IsEngineer + Response PlayerJeersEngineer +} + +Response PlayerLostPointEngineer +{ + scene "scenes/Player/Engineer/low/1327.vcd" + scene "scenes/Player/Engineer/low/1328.vcd" + scene "scenes/Player/Engineer/low/119.vcd" + scene "scenes/Player/Engineer/low/120.vcd" + scene "scenes/Player/Engineer/low/122.vcd" + scene "scenes/Player/Engineer/low/121.vcd" + scene "scenes/Player/Engineer/low/123.vcd" + scene "scenes/Player/Engineer/low/1339.vcd" + scene "scenes/Player/Engineer/low/1340.vcd" + scene "scenes/Player/Engineer/low/1341.vcd" + scene "scenes/Player/Engineer/low/1342.vcd" + scene "scenes/Player/Engineer/low/1343.vcd" +} +Rule PlayerLostPointEngineer +{ + criteria ConceptPlayerLostPoint IsEngineer + Response PlayerLostPointEngineer +} + +Response PlayerNegativeEngineer +{ + scene "scenes/Player/Engineer/low/1327.vcd" + scene "scenes/Player/Engineer/low/1328.vcd" + scene "scenes/Player/Engineer/low/119.vcd" + scene "scenes/Player/Engineer/low/120.vcd" + scene "scenes/Player/Engineer/low/122.vcd" + scene "scenes/Player/Engineer/low/121.vcd" + scene "scenes/Player/Engineer/low/123.vcd" + scene "scenes/Player/Engineer/low/1339.vcd" + scene "scenes/Player/Engineer/low/1340.vcd" + scene "scenes/Player/Engineer/low/1341.vcd" + scene "scenes/Player/Engineer/low/1342.vcd" + scene "scenes/Player/Engineer/low/1343.vcd" +} +Rule PlayerNegativeEngineer +{ + criteria ConceptPlayerNegative IsEngineer + Response PlayerNegativeEngineer +} + +Response PlayerNiceShotEngineer +{ + scene "scenes/Player/Engineer/low/125.vcd" + scene "scenes/Player/Engineer/low/126.vcd" + scene "scenes/Player/Engineer/low/124.vcd" +} +Rule PlayerNiceShotEngineer +{ + criteria ConceptPlayerNiceShot IsEngineer + Response PlayerNiceShotEngineer +} + +Response PlayerPositiveEngineer +{ + scene "scenes/Player/Engineer/low/139.vcd" +} +Rule PlayerPositiveEngineer +{ + criteria ConceptPlayerPositive IsEngineer + Response PlayerPositiveEngineer +} + +//-------------------------------------------------------------------------------------------------------------- +// MvM Speech +//-------------------------------------------------------------------------------------------------------------- +Response MvMBombDroppedEngineer +{ + scene "scenes/Player/Engineer/low/4144.vcd" + scene "scenes/Player/Engineer/low/4145.vcd" +} +Rule MvMBombDroppedEngineer +{ + criteria ConceptMvMBombDropped 5PercentChance IsMvMDefender IsEngineer + Response MvMBombDroppedEngineer +} + +Response MvMBombCarrierUpgrade1Engineer +{ + scene "scenes/Player/Engineer/low/4140.vcd" +} +Rule MvMBombCarrierUpgrade1Engineer +{ + criteria ConceptMvMBombCarrierUpgrade1 5PercentChance IsMvMDefender IsEngineer + Response MvMBombCarrierUpgrade1Engineer +} + +Response MvMBombCarrierUpgrade2Engineer +{ + scene "scenes/Player/Engineer/low/4141.vcd" +} +Rule MvMBombCarrierUpgrade2Engineer +{ + criteria ConceptMvMBombCarrierUpgrade2 5PercentChance IsMvMDefender IsEngineer + Response MvMBombCarrierUpgrade2Engineer +} + +Response MvMDefenderDiedScoutEngineer +{ + scene "scenes/Player/Engineer/low/4110.vcd" +} +Rule MvMDefenderDiedScoutEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimScout IsEngineer + Response MvMDefenderDiedScoutEngineer +} + +Response MvMDefenderDiedSpyEngineer +{ + scene "scenes/Player/Engineer/low/4111.vcd" +} +Rule MvMDefenderDiedSpyEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSpy IsEngineer + Response MvMDefenderDiedSpyEngineer +} + +Response MvMDefenderDiedHeavyEngineer +{ + scene "scenes/Player/Engineer/low/4112.vcd" +} +Rule MvMDefenderDiedHeavyEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimHeavy IsEngineer + Response MvMDefenderDiedHeavyEngineer +} + +Response MvMDefenderDiedSoldierEngineer +{ + scene "scenes/Player/Engineer/low/4113.vcd" +} +Rule MvMDefenderDiedSoldierEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSoldier IsEngineer + Response MvMDefenderDiedSoldierEngineer +} + +Response MvMDefenderDiedMedicEngineer +{ + scene "scenes/Player/Engineer/low/4114.vcd" +} +Rule MvMDefenderDiedMedicEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimMedic IsEngineer + Response MvMDefenderDiedMedicEngineer +} + +Response MvMDefenderDiedDemomanEngineer +{ + scene "scenes/Player/Engineer/low/4115.vcd" +} +Rule MvMDefenderDiedDemomanEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimDemoman IsEngineer + Response MvMDefenderDiedDemomanEngineer +} + +Response MvMDefenderDiedPyroEngineer +{ + scene "scenes/Player/Engineer/low/4116.vcd" +} +Rule MvMDefenderDiedPyroEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimPyro IsEngineer + Response MvMDefenderDiedPyroEngineer +} + +Response MvMDefenderDiedSniperEngineer +{ + scene "scenes/Player/Engineer/low/4117.vcd" +} +Rule MvMDefenderDiedSniperEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSniper IsEngineer + Response MvMDefenderDiedSniperEngineer +} + +Response MvMDefenderDiedEngineerEngineer +{ + scene "scenes/Player/Engineer/low/4118.vcd" +} +Rule MvMDefenderDiedEngineerEngineer +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimEngineer IsEngineer + Response MvMDefenderDiedEngineerEngineer +} + +Response MvMFirstBombPickupEngineer +{ + scene "scenes/Player/Engineer/low/4137.vcd" + scene "scenes/Player/Engineer/low/4139.vcd" +} +Rule MvMFirstBombPickupEngineer +{ + criteria ConceptMvMFirstBombPickup 5PercentChance IsMvMDefender IsEngineer + Response MvMFirstBombPickupEngineer +} + +Response MvMBombPickupEngineer +{ + scene "scenes/Player/Engineer/low/4136.vcd" +} +Rule MvMBombPickupEngineer +{ + criteria ConceptMvMBombPickup 5PercentChance IsMvMDefender IsEngineer + Response MvMBombPickupEngineer +} + +Response MvMSniperCalloutEngineer +{ + scene "scenes/Player/Engineer/low/4120.vcd" +} +Rule MvMSniperCalloutEngineer +{ + criteria ConceptMvMSniperCallout 50PercentChance IsMvMDefender IsEngineer + Response MvMSniperCalloutEngineer +} + +Response MvMSentryBusterEngineer +{ + scene "scenes/Player/Engineer/low/4155.vcd" +} +Rule MvMSentryBusterEngineer +{ + criteria ConceptMvMSentryBuster 50PercentChance IsMvMDefender IsEngineer + Response MvMSentryBusterEngineer +} + +Response MvMSentryBusterDownEngineer +{ + scene "scenes/Player/Engineer/low/4156.vcd" +} +Rule MvMSentryBusterDownEngineer +{ + criteria ConceptMvMSentryBusterDown 20PercentChance IsMvMDefender IsEngineer + Response MvMSentryBusterDownEngineer +} + +Response MvMLastManStandingEngineer +{ + scene "scenes/Player/Engineer/low/4119.vcd" +} +Rule MvMLastManStandingEngineer +{ + criteria ConceptMvMLastManStanding 20PercentChance IsMvMDefender IsEngineer + Response MvMLastManStandingEngineer +} + +Response MvMEncourageMoneyEngineer +{ + scene "scenes/Player/Engineer/low/4128.vcd" + scene "scenes/Player/Engineer/low/4129.vcd" + scene "scenes/Player/Engineer/low/4130.vcd" +} +Rule MvMEncourageMoneyEngineer +{ + criteria ConceptMvMEncourageMoney 50PercentChance IsMvMDefender IsEngineer + Response MvMEncourageMoneyEngineer +} + +Response MvMEncourageUpgradeEngineer +{ + scene "scenes/Player/Engineer/low/4135.vcd" +} +Rule MvMEncourageUpgradeEngineer +{ + criteria ConceptMvMEncourageUpgrade 50PercentChance IsMvMDefender IsEngineer + Response MvMEncourageUpgradeEngineer +} + +Response MvMUpgradeCompleteEngineer +{ + scene "scenes/Player/Engineer/low/4131.vcd" + scene "scenes/Player/Engineer/low/4133.vcd" +} +Rule MvMUpgradeCompleteEngineer +{ + criteria ConceptMvMUpgradeComplete 5PercentChance IsMvMDefender IsEngineer + Response MvMUpgradeCompleteEngineer +} + +Response MvMGiantCalloutEngineer +{ + scene "scenes/Player/Engineer/low/4157.vcd" + scene "scenes/Player/Engineer/low/4158.vcd" +} +Rule MvMGiantCalloutEngineer +{ + criteria ConceptMvMGiantCallout 20PercentChance IsMvMDefender IsEngineer + Response MvMGiantCalloutEngineer +} + +Response MvMGiantHasBombEngineer +{ + scene "scenes/Player/Engineer/low/4162.vcd" +} +Rule MvMGiantHasBombEngineer +{ + criteria ConceptMvMGiantHasBomb 20PercentChance IsMvMDefender IsEngineer + Response MvMGiantHasBombEngineer +} + +Response MvMSappedRobotEngineer +{ + scene "scenes/Player/Engineer/low/4121.vcd" + scene "scenes/Player/Engineer/low/4122.vcd" +} +Rule MvMSappedRobotEngineer +{ + criteria ConceptMvMSappedRobot 50PercentChance IsMvMDefender IsEngineer + Response MvMSappedRobotEngineer +} + +Response MvMCloseCallEngineer +{ + scene "scenes/Player/Engineer/low/4143.vcd" +} +Rule MvMCloseCallEngineer +{ + criteria ConceptMvMCloseCall 50PercentChance IsMvMDefender IsEngineer + Response MvMCloseCallEngineer +} + +Response MvMTankCalloutEngineer +{ + scene "scenes/Player/Engineer/low/4146.vcd" +} +Rule MvMTankCalloutEngineer +{ + criteria ConceptMvMTankCallout 50PercentChance IsMvMDefender IsEngineer + Response MvMTankCalloutEngineer +} + +Response MvMTankDeadEngineer +{ + scene "scenes/Player/Engineer/low/4152.vcd" +} +Rule MvMTankDeadEngineer +{ + criteria ConceptMvMTankDead 50PercentChance IsMvMDefender IsEngineer + Response MvMTankDeadEngineer +} + +Response MvMTankDeployingEngineer +{ + scene "scenes/Player/Engineer/low/4151.vcd" +} +Rule MvMTankDeployingEngineer +{ + criteria ConceptMvMTankDeploying 50PercentChance IsMvMDefender IsEngineer + Response MvMTankDeployingEngineer +} + +Response MvMAttackTheTankEngineer +{ + scene "scenes/Player/Engineer/low/4147.vcd" +} +Rule MvMAttackTheTankEngineer +{ + criteria ConceptMvMAttackTheTank 50PercentChance IsMvMDefender IsEngineer + Response MvMAttackTheTankEngineer +} + +Response MvMTauntEngineer +{ + scene "scenes/Player/Engineer/low/4123.vcd" + scene "scenes/Player/Engineer/low/4127.vcd" +} +Rule MvMTauntEngineer +{ + criteria ConceptMvMTaunt 50PercentChance IsMvMDefender IsEngineer + Response MvMTauntEngineer +} + +Response MvMWaveStartEngineer +{ + scene "scenes/Player/Engineer/low/4109.vcd" +} +Rule MvMWaveStartEngineer +{ + criteria ConceptMvMWaveStart 50PercentChance IsMvMDefender IsEngineer + Response MvMWaveStartEngineer +} + +Response MvMWaveWinEngineer +{ + scene "scenes/Player/Engineer/low/4095.vcd" + scene "scenes/Player/Engineer/low/4096.vcd" + scene "scenes/Player/Engineer/low/4097.vcd" + scene "scenes/Player/Engineer/low/4098.vcd" + scene "scenes/Player/Engineer/low/4321.vcd" +} +Rule MvMWaveWinEngineer +{ + criteria ConceptMvMWaveWin 50PercentChance IsMvMDefender IsEngineer + Response MvMWaveWinEngineer +} + +Response MvMWaveLoseEngineer +{ + scene "scenes/Player/Engineer/low/4099.vcd" + scene "scenes/Player/Engineer/low/4100.vcd" +} +Rule MvMWaveLoseEngineer +{ + criteria ConceptMvMWaveLose 50PercentChance IsMvMDefender IsEngineer + Response MvMWaveLoseEngineer +} + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_18.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_08.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompEngineer +{ + criteria ConceptPlayerRoundStartComp IsEngineer IsFirstRound IsNotComp6v6 40PercentChance + Response PlayerFirstRoundStartCompEngineer +} + +Response PlayerFirstRoundStartComp6sEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_18.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_rare_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_6s_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamefirst_6s_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartComp6sEngineer +{ + criteria ConceptPlayerRoundStartComp IsEngineer IsFirstRound IsComp6v6 40PercentChance + Response PlayerFirstRoundStartComp6sEngineer +} + +Response PlayerWonPrevRoundCompEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamewonlast_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompEngineer +{ + criteria ConceptPlayerRoundStartComp IsEngineer IsNotFirstRound PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompEngineer +} + +Response PlayerLostPrevRoundCompEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregamelostlast_09.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompEngineer +{ + criteria ConceptPlayerRoundStartComp IsEngineer IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompEngineer +} + +Response PlayerTiedPrevRoundCompEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregametie_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregametie_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregametie_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_pregametie_06.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompEngineer +{ + criteria ConceptPlayerRoundStartComp IsEngineer IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompEngineer +} + +Response PlayerGameWinCompEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_10.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_11.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_12.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_13.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_14.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_rare_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_rare_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_rare_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Engineer/low/cm_engie_gamewon_rare_04.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompEngineer +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsEngineer 40PercentChance + Response PlayerGameWinCompEngineer +} + +Response PlayerMatchWinCompEngineer +{ + scene "scenes/Player/Engineer/low/cm_engie_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_04.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_05.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_06.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_08.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_09.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_10.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Engineer/low/cm_engie_matchwon_11.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompEngineer +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsEngineer 40PercentChance + Response PlayerMatchWinCompEngineer +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/engineer_auto.lua b/gamemodes/tf/gamemode/contents/talker/engineer_auto.lua new file mode 100644 index 000000000..44ccaca07 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/engineer_auto.lua @@ -0,0 +1,85 @@ +//-------------------------------------------------------------------------------------------------------------- +// Engineer Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + +Response item_unicorn_uberEngineer +{ + scene "scenes/Player/Engineer/low/7963.vcd" +} +Rule item_unicorn_uberEngineer +{ + criteria ConceptMedicChargeDeployed IsEngineer IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsUnicornHead + Response item_unicorn_uberEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_healedEngineer +{ + scene "scenes/Player/Engineer/low/7964.vcd" +} +Rule item_unicorn_healedEngineer +{ + criteria ConceptMedicChargeStopped IsEngineer SuperHighHealthContext EngineerNotSaidHealThanks IsUnicornHead 20PercentChance + ApplyContext "EngineerSaidHealThanks:1:20" + Response item_unicorn_healedEngineer +} + +Response item_unicorn_round_startEngineer +{ + scene "scenes/Player/Engineer/low/7951.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Engineer/low/7957.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startEngineer +{ + criteria ConceptPlayerRoundStart IsEngineer 100PercentChance IsUnicornHead + Response item_unicorn_round_startEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_dominationEngineer +{ + scene "scenes/Player/Engineer/low/7960.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/8473.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/7961.vcd" predelay "2.5" +} +Rule item_unicorn_dominationEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsDominated 30PercentChance IsUnicornHead + ApplyContext "EngineerKillSpeech:1:10" + Response item_unicorn_dominationEngineer +} + +Response item_unicorn_revengeEngineer +{ + scene "scenes/Player/Engineer/low/7967.vcd" predelay "2.5" + scene "scenes/Player/Engineer/low/7968.vcd" predelay "2.5" +} +Rule item_unicorn_revengeEngineer +{ + criteria ConceptKilledPlayer IsEngineer IsRevenge IsUnicornHead 40PercentChance + ApplyContext "EngineerKillSpeech:1:10" + Response item_unicorn_revengeEngineer +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Engineer +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_dispenserEngineer +{ + scene "scenes/Player/Engineer/low/7958.vcd" +} +Rule item_unicorn_dispenserEngineer +{ + criteria ConceptPlayerBuildingObject IsDispenser IsEngineer IsUnicornHead 10PercentChance + Response item_unicorn_dispenserEngineer +} + diff --git a/gamemodes/tf/gamemode/contents/talker/events.lua b/gamemodes/tf/gamemode/contents/talker/events.lua new file mode 100644 index 000000000..f312e2382 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/events.lua @@ -0,0 +1,3365 @@ +//------------------------------------------------------------------------------------------------------------------------ +//CRITERIA +//------------------------------------------------------------------------------------------------------------------------ +Criterion "NotMerasmusHideCooldown" "worldMerasmusHideCooldown" "!=1" "required" weight 100 +Criterion "IsMerasmusHiding" "IsMerasmusHiding" "1" "required" weight 100 +Criterion "IsZombieCostume" "IsZombieCostume" "1" "required" weight 100 +Criterion "soldierNotZombieNoises" "soldierZombieNoises" "!=1" "required" weight 100 +Criterion "scoutNotZombieNoises" "scoutZombieNoises" "!=1" "required" weight 100 +criterion "ConceptMagicBigHead" "Concept" "TLK_MAGIC_BIGHEAD" required +criterion "ConceptMagicSmallHead" "Concept" "TLK_MAGIC_SMALLHEAD" required +criterion "ConceptMagicGravity" "Concept" "TLK_MAGIC_GRAVITY" required +criterion "ConceptMagicGood" "Concept" "TLK_MAGIC_GOOD" required +criterion "ConceptMagicDance" "Concept" "TLK_MAGIC_DANCE" required +criterion "ConceptHalloweenPlayerPitFall" "Concept" "HalloweenLongFall" required +//------------------------------------------------------------------------------------------------------------------------ + +Response PlayerFairyNoiseHeavy +{ + scene "scenes/player/heavy/low/4766.vcd" + scene "scenes/player/heavy/low/4767.vcd" + scene "scenes/player/heavy/low/4768.vcd" + scene "scenes/player/heavy/low/4769.vcd" + scene "scenes/player/heavy/low/4770.vcd" + scene "scenes/player/heavy/low/4771.vcd" + scene "scenes/player/heavy/low/4772.vcd" + scene "scenes/player/heavy/low/4775.vcd" + scene "scenes/player/heavy/low/4776.vcd" + scene "scenes/player/heavy/low/4777.vcd" + scene "scenes/player/heavy/low/4778.vcd" + scene "scenes/player/heavy/low/4779.vcd" + scene "scenes/player/heavy/low/4780.vcd" + scene "scenes/player/heavy/low/4781.vcd" + scene "scenes/player/heavy/low/4782.vcd" + scene "scenes/player/heavy/low/4783.vcd" + scene "scenes/player/heavy/low/4784.vcd" +} +Rule PlayerFairyNoiseHeavy +{ + criteria ConceptPlayerExpression IsHeavy IsFairyHeavy HeavyNotFairyNoises 50PercentChance + applycontext "HeavyFairyNoises:1:90" + Response PlayerFairyNoiseHeavy +} + +Response PlayerBattleCryFairyHeavy +{ + scene "scenes/player/heavy/low/4766.vcd" + scene "scenes/player/heavy/low/4767.vcd" + scene "scenes/player/heavy/low/4769.vcd" + scene "scenes/player/heavy/low/4775.vcd" +} +Rule PlayerBattleCryFairyHeavy +{ + criteria ConceptPlayerBattleCry IsHeavy IsFairyHeavy + Response PlayerBattleCryFairyHeavy +} + +Response KilledPlayerHeavyFairy +{ + scene "scenes/player/heavy/low/4773.vcd" + scene "scenes/player/heavy/low/4774.vcd" + scene "scenes/player/heavy/low/4778.vcd" +} +Rule KilledPlayerHeavyFairy +{ + criteria ConceptKilledPlayer IsHeavy IsFairyHeavy HeavyNotKillSpeech 20PercentChance + applycontext "HeavyKillSpeech:1:15" + Response KilledPlayerHeavyFairy +} + +Response PlayerRoundStartHeavyFairy +{ + scene "scenes/player/heavy/low/4766.vcd" + scene "scenes/player/heavy/low/4767.vcd" + scene "scenes/player/heavy/low/4769.vcd" + scene "scenes/player/heavy/low/4775.vcd" +} +Rule PlayerRoundStartHeavyFairy +{ + criteria ConceptPlayerRoundStart IsHeavy IsFairyHeavy + applycontext "HeavyFairyNoises:1:30" + Response PlayerRoundStartHeavyFairy +} + +Response scoutMerasmusHideTaunt +{ + scene "scenes/player/scout/low/4478.vcd" + scene "scenes/player/scout/low/4482.vcd" + scene "scenes/player/scout/low/4487.vcd" + scene "scenes/player/scout/low/4489.vcd" + scene "scenes/player/scout/low/4491.vcd" + scene "scenes/player/scout/low/4492.vcd" + scene "scenes/player/scout/low/4493.vcd" + scene "scenes/player/scout/low/4494.vcd" + scene "scenes/player/scout/low/4496.vcd" + scene "scenes/player/scout/low/4497.vcd" + scene "scenes/player/scout/low/4498.vcd" + scene "scenes/player/scout/low/4695.vcd" + scene "scenes/player/scout/low/4698.vcd" + scene "scenes/player/scout/low/4699.vcd" + scene "scenes/player/scout/low/4700.vcd" + scene "scenes/player/scout/low/4701.vcd" + scene "scenes/player/scout/low/4702.vcd" +} +Rule scoutMerasmusHideTaunt +{ + criteria ConceptPlayerExpression Isscout IsMerasmusHiding NotMerasmusHideCooldown 20PercentChance + applycontext "MerasmusHideCooldown:1:30" + applycontexttoworld + Response scoutMerasmusHideTaunt +} + +Response heavyMerasmusHideTaunt +{ + scene "scenes/player/heavy/low/4737.vcd" + scene "scenes/player/heavy/low/4738.vcd" + scene "scenes/player/heavy/low/4739.vcd" + scene "scenes/player/heavy/low/4741.vcd" + scene "scenes/player/heavy/low/4742.vcd" +} +Rule heavyMerasmusHideTaunt +{ + criteria ConceptPlayerExpression Isheavy IsMerasmusHiding NotMerasmusHideCooldown 20PercentChance + applycontext "MerasmusHideCooldown:1:30" + applycontexttoworld + Response heavyMerasmusHideTaunt +} + +Response demomanMerasmusHideTaunt +{ + scene "scenes/player/demoman/low/4575.vcd" + scene "scenes/player/demoman/low/4576.vcd" + scene "scenes/player/demoman/low/4577.vcd" + scene "scenes/player/demoman/low/4578.vcd" + scene "scenes/player/demoman/low/4579.vcd" + scene "scenes/player/demoman/low/4580.vcd" + scene "scenes/player/demoman/low/4581.vcd" + scene "scenes/player/demoman/low/4582.vcd" + scene "scenes/player/demoman/low/4583.vcd" + scene "scenes/player/demoman/low/5454.vcd" +} +Rule demomanMerasmusHideTaunt +{ + criteria ConceptPlayerExpression Isdemoman IsMerasmusHiding NotMerasmusHideCooldown 20PercentChance + applycontext "MerasmusHideCooldown:1:30" + applycontexttoworld + Response demomanMerasmusHideTaunt +} + +Response medicMerasmusHideTaunt +{ + scene "scenes/player/medic/low/4643.vcd" + scene "scenes/player/medic/low/4644.vcd" + scene "scenes/player/medic/low/4645.vcd" + scene "scenes/player/medic/low/4646.vcd" + scene "scenes/player/medic/low/4647.vcd" +} +Rule medicMerasmusHideTaunt +{ + criteria ConceptPlayerExpression Ismedic IsMerasmusHiding NotMerasmusHideCooldown 20PercentChance + applycontext "MerasmusHideCooldown:1:30" + applycontexttoworld + Response medicMerasmusHideTaunt +} + +Response soldierMerasmusHideTaunt +{ + scene "scenes/player/soldier/low/4499.vcd" + scene "scenes/player/soldier/low/4500.vcd" + scene "scenes/player/soldier/low/4506.vcd" + scene "scenes/player/soldier/low/4507.vcd" + scene "scenes/player/soldier/low/4509.vcd" + scene "scenes/player/soldier/low/4510.vcd" + scene "scenes/player/soldier/low/4511.vcd" + scene "scenes/player/soldier/low/4512.vcd" + scene "scenes/player/soldier/low/4513.vcd" + scene "scenes/player/soldier/low/4515.vcd" + scene "scenes/player/soldier/low/4516.vcd" + scene "scenes/player/soldier/low/4517.vcd" + scene "scenes/player/soldier/low/4522.vcd" + scene "scenes/player/soldier/low/4523.vcd" + scene "scenes/player/soldier/low/4524.vcd" + scene "scenes/player/soldier/low/4525.vcd" + scene "scenes/player/soldier/low/4526.vcd" + scene "scenes/player/soldier/low/4527.vcd" + scene "scenes/player/soldier/low/4528.vcd" + scene "scenes/player/soldier/low/4529.vcd" + scene "scenes/player/soldier/low/4530.vcd" + scene "scenes/player/soldier/low/4531.vcd" + scene "scenes/player/soldier/low/4533.vcd" + scene "scenes/player/soldier/low/4534.vcd" + scene "scenes/player/soldier/low/4535.vcd" + scene "scenes/player/soldier/low/4536.vcd" + scene "scenes/player/soldier/low/4537.vcd" + scene "scenes/player/soldier/low/4538.vcd" + scene "scenes/player/soldier/low/4539.vcd" +} +Rule soldierMerasmusHideTaunt +{ + criteria ConceptPlayerExpression Issoldier IsMerasmusHiding NotMerasmusHideCooldown 20PercentChance + applycontext "MerasmusHideCooldown:1:30" + applycontexttoworld + Response soldierMerasmusHideTaunt +} + +Response scoutHalloweenMerasmusPitFall +{ + scene "scenes/player/scout/low/4455.vcd" + scene "scenes/player/scout/low/4456.vcd" + scene "scenes/player/scout/low/4704.vcd" +} +Rule scoutHalloweenMerasmusPitFall +{ + criteria ConceptHalloweenPlayerPitFall Isscout + Response scoutHalloweenMerasmusPitFall +} + +Response heavyHalloweenMerasmusPitFall +{ + scene "scenes/player/heavy/low/4743.vcd" +} +Rule heavyHalloweenMerasmusPitFall +{ + criteria ConceptHalloweenPlayerPitFall Isheavy + Response heavyHalloweenMerasmusPitFall +} + +Response demomanHalloweenMerasmusPitFall +{ + scene "scenes/player/demoman/low/4585.vcd" +} +Rule demomanHalloweenMerasmusPitFall +{ + criteria ConceptHalloweenPlayerPitFall Isdemoman + Response demomanHalloweenMerasmusPitFall +} + +Response medicHalloweenMerasmusPitFall +{ + scene "scenes/player/medic/low/4651.vcd" +} +Rule medicHalloweenMerasmusPitFall +{ + criteria ConceptHalloweenPlayerPitFall Ismedic + Response medicHalloweenMerasmusPitFall +} + +Response spyHalloweenMerasmusPitFall +{ + scene "scenes/player/spy/low/4705.vcd" + scene "scenes/player/spy/low/4709.vcd" +} +Rule spyHalloweenMerasmusPitFall +{ + criteria ConceptHalloweenPlayerPitFall Isspy + Response spyHalloweenMerasmusPitFall +} + +Response soldierHalloweenMerasmusPitFall +{ + scene "scenes/player/soldier/low/4540.vcd" + scene "scenes/player/soldier/low/4541.vcd" +} +Rule soldierHalloweenMerasmusPitFall +{ + criteria ConceptHalloweenPlayerPitFall Issoldier + Response soldierHalloweenMerasmusPitFall +} + +Response scoutZombieCostume +{ + scene "scenes/player/scout/low/4457.vcd" + scene "scenes/player/scout/low/4458.vcd" + scene "scenes/player/scout/low/4459.vcd" + scene "scenes/player/scout/low/4460.vcd" + scene "scenes/player/scout/low/4703.vcd" +} +Rule scoutZombieCostume +{ + criteria ConceptPlayerExpression Isscout IsZombieCostume scoutNotZombieNoises 20PercentChance + applycontext "scoutZombieNoises:1:30" + Response scoutZombieCostume +} + +Response soldierZombieCostume +{ + scene "scenes/player/soldier/low/4562.vcd" + scene "scenes/player/soldier/low/4563.vcd" + scene "scenes/player/soldier/low/4729.vcd" + scene "scenes/player/soldier/low/4730.vcd" +} +Rule soldierZombieCostume +{ + criteria ConceptPlayerExpression Issoldier IsZombieCostume soldierNotZombieNoises 20PercentChance + applycontext "soldierZombieNoises:1:30" + Response soldierZombieCostume +} + +Response scoutPlayerBattleCryZombie +{ + scene "scenes/player/scout/low/4457.vcd" + scene "scenes/player/scout/low/4458.vcd" + scene "scenes/player/scout/low/4459.vcd" + scene "scenes/player/scout/low/4460.vcd" + scene "scenes/player/scout/low/4703.vcd" +} +Rule scoutPlayerBattleCryZombie +{ + criteria ConceptPlayerBattleCry Isscout IsZombieCostume + applycontext "scoutZombieNoises:1:30" + Response scoutPlayerBattleCryZombie +} + +Response soldierPlayerBattleCryZombie +{ + scene "scenes/player/soldier/low/4562.vcd" + scene "scenes/player/soldier/low/4563.vcd" + scene "scenes/player/soldier/low/4729.vcd" + scene "scenes/player/soldier/low/4730.vcd" +} +Rule soldierPlayerBattleCryZombie +{ + criteria ConceptPlayerBattleCry Issoldier IsZombieCostume + applycontext "soldierZombieNoises:1:30" + Response soldierPlayerBattleCryZombie +} + +Response scoutBigHeadReaction +{ + scene "scenes/player/scout/low/4472.vcd" predelay "3.5, 6.5" + scene "scenes/player/scout/low/4686.vcd" predelay "3.5, 6.5" + scene "scenes/player/scout/low/4689.vcd" predelay "3.5, 6.5" + scene "scenes/player/scout/low/4692.vcd" predelay "3.5, 6.5" + scene "scenes/player/scout/low/4693.vcd" predelay "3.5, 6.5" + scene "scenes/player/scout/low/4694.vcd" predelay "3.5, 6.5" +} +Rule scoutBigHeadReaction +{ + criteria ConceptMagicBigHead Isscout + Response scoutBigHeadReaction +} + +Response heavyBigHeadReaction +{ + scene "scenes/player/heavy/low/4744.vcd" predelay "3.5, 6.5" + scene "scenes/player/heavy/low/4750.vcd" predelay "3.5, 6.5" + scene "scenes/player/heavy/low/5456.vcd" predelay "3.5, 6.5" +} +Rule heavyBigHeadReaction +{ + criteria ConceptMagicBigHead Isheavy + Response heavyBigHeadReaction +} + +Response demomanBigHeadReaction +{ + scene "scenes/player/demoman/low/4586.vcd" predelay "3.5, 6.5" + scene "scenes/player/demoman/low/4589.vcd" predelay "3.5, 6.5" +} +Rule demomanBigHeadReaction +{ + criteria ConceptMagicBigHead Isdemoman + Response demomanBigHeadReaction +} + +Response medicBigHeadReaction +{ + scene "scenes/player/medic/low/4652.vcd" predelay "3.5, 6.5" + scene "scenes/player/medic/low/4653.vcd" predelay "3.5, 6.5" + scene "scenes/player/medic/low/4660.vcd" predelay "3.5, 6.5" +} +Rule medicBigHeadReaction +{ + criteria ConceptMagicBigHead Ismedic + Response medicBigHeadReaction +} + +Response spyBigHeadReaction +{ + scene "scenes/player/spy/low/4711.vcd" predelay "3.5, 6.5" + scene "scenes/player/spy/low/4712.vcd" predelay "3.5, 6.5" +} +Rule spyBigHeadReaction +{ + criteria ConceptMagicBigHead Isspy + Response spyBigHeadReaction +} + +Response soldierBigHeadReaction +{ + scene "scenes/player/soldier/low/4546.vcd" predelay "3.5, 6.5" + scene "scenes/player/soldier/low/4547.vcd" predelay "3.5, 6.5" + scene "scenes/player/soldier/low/4728.vcd" predelay "3.5, 6.5" +} +Rule soldierBigHeadReaction +{ + criteria ConceptMagicBigHead Issoldier + Response soldierBigHeadReaction +} + +Response scoutSmallHeadReaction +{ + scene "scenes/player/scout/low/4464.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4468.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4473.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4475.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4687.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4688.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4692.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4693.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4694.vcd" predelay "4.5, 6.5" +} +Rule scoutSmallHeadReaction +{ + criteria ConceptMagicSmallHead Isscout + Response scoutSmallHeadReaction +} + +Response heavySmallHeadReaction +{ + scene "scenes/player/heavy/low/4745.vcd" predelay "4.5, 6.5" + scene "scenes/player/heavy/low/4749.vcd" predelay "4.5, 6.5" + scene "scenes/player/heavy/low/4751.vcd" predelay "4.5, 6.5" + scene "scenes/player/heavy/low/4750.vcd" predelay "4.5, 6.5" + scene "scenes/player/heavy/low/5456.vcd" predelay "4.5, 6.5" +} +Rule heavySmallHeadReaction +{ + criteria ConceptMagicSmallHead Isheavy + Response heavySmallHeadReaction +} + +Response demomanSmallHeadReaction +{ + scene "scenes/player/demoman/low/4587.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4588.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4590.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4592.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4586.vcd" predelay "4.5, 6.5" +} +Rule demomanSmallHeadReaction +{ + criteria ConceptMagicSmallHead Isdemoman + Response demomanSmallHeadReaction +} + +Response medicSmallHeadReaction +{ + scene "scenes/player/medic/low/4654.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4656.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4652.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4660.vcd" predelay "4.5, 6.5" +} +Rule medicSmallHeadReaction +{ + criteria ConceptMagicSmallHead Ismedic + Response medicSmallHeadReaction +} + +Response spySmallHeadReaction +{ + scene "scenes/player/spy/low/4710.vcd" predelay "4.5, 6.5" + scene "scenes/player/spy/low/4713.vcd" predelay "4.5, 6.5" + scene "scenes/player/spy/low/4715.vcd" predelay "4.5, 6.5" +} +Rule spySmallHeadReaction +{ + criteria ConceptMagicSmallHead Isspy + Response spySmallHeadReaction +} + +Response soldierSmallHeadReaction +{ + scene "scenes/player/soldier/low/4548.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4553.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4728.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4546.vcd" predelay "4.5, 6.5" +} +Rule soldierSmallHeadReaction +{ + criteria ConceptMagicSmallHead Issoldier + Response soldierSmallHeadReaction +} + +Response scoutGravityReaction +{ + scene "scenes/player/scout/low/4469.vcd" predelay "4.5, 6.5" +} +Rule scoutGravityReaction +{ + criteria ConceptMagicGravity Isscout 50PercentChance + Response scoutGravityReaction +} + +Response heavyGravityReaction +{ + scene "scenes/player/heavy/low/4748.vcd" predelay "4.5, 6.5" + scene "scenes/player/heavy/low/4752.vcd" predelay "4.5, 6.5" +} +Rule heavyGravityReaction +{ + criteria ConceptMagicGravity Isheavy 50PercentChance + Response heavyGravityReaction +} + +Response demomanGravityReaction +{ + scene "scenes/player/demoman/low/4591.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4593.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4596.vcd" predelay "4.5, 6.5" +} +Rule demomanGravityReaction +{ + criteria ConceptMagicGravity Isdemoman 50PercentChance + Response demomanGravityReaction +} + +Response medicGravityReaction +{ + scene "scenes/player/medic/low/4657.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4663.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4656.vcd" predelay "4.5, 6.5" +} +Rule medicGravityReaction +{ + criteria ConceptMagicGravity Ismedic 50PercentChance + Response medicGravityReaction +} + +Response soldierGravityReaction +{ + scene "scenes/player/soldier/low/4556.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4557.vcd" predelay "4.5, 6.5" +} +Rule soldierGravityReaction +{ + criteria ConceptMagicGravity Issoldier 50PercentChance + Response soldierGravityReaction +} + +Response scoutGoodMagicReaction +{ + scene "scenes/player/scout/low/4477.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4479.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4480.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4481.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4483.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4482.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4497.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4699.vcd" predelay "4.5, 6.5" + scene "scenes/player/scout/low/4702.vcd" predelay "4.5, 6.5" +} +Rule scoutGoodMagicReaction +{ + criteria ConceptMagicGood Isscout 50PercentChance + Response scoutGoodMagicReaction +} + +Response heavyGoodMagicReaction +{ + scene "scenes/player/heavy/low/4754.vcd" predelay "4.5, 6.5" + scene "scenes/player/heavy/low/4755.vcd" predelay "4.5, 6.5" +} +Rule heavyGoodMagicReaction +{ + criteria ConceptMagicGood Isheavy 50PercentChance + Response heavyGoodMagicReaction +} + +Response demomanGoodMagicReaction +{ + scene "scenes/player/demoman/low/4597.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4598.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4599.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4600.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4576.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4577.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4578.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4579.vcd" predelay "4.5, 6.5" + scene "scenes/player/demoman/low/4580.vcd" predelay "4.5, 6.5" +} +Rule demomanGoodMagicReaction +{ + criteria ConceptMagicGood Isdemoman 50PercentChance + Response demomanGoodMagicReaction +} + +Response medicGoodMagicReaction +{ + scene "scenes/player/medic/low/4649.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4664.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4665.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4666.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4731.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4732.vcd" predelay "4.5, 6.5" + scene "scenes/player/medic/low/4733.vcd" predelay "4.5, 6.5" +} +Rule medicGoodMagicReaction +{ + criteria ConceptMagicGood Ismedic 50PercentChance + Response medicGoodMagicReaction +} + +Response soldierGoodMagicReaction +{ + scene "scenes/player/soldier/low/4564.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4565.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4566.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4567.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4522.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4523.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4525.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4526.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4527.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4528.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4529.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4530.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4531.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4533.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4534.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4535.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4536.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4537.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4538.vcd" predelay "4.5, 6.5" + scene "scenes/player/soldier/low/4539.vcd" predelay "4.5, 6.5" +} +Rule soldierGoodMagicReaction +{ + criteria ConceptMagicGood Issoldier 50PercentChance + Response soldierGoodMagicReaction +} + +Response soldierDanceMagicReaction +{ + scene "scenes/player/soldier/low/4550.vcd" predelay "3.0" + scene "scenes/player/soldier/low/4558.vcd" predelay "3.0" + scene "scenes/player/soldier/low/4559.vcd" predelay "3.0" +} +Rule soldierDanceMagicReaction +{ + criteria ConceptMagicDance Issoldier 50PercentChance + Response soldierDanceMagicReaction +} + + + +//------------------------------------------------------------------------------------------------------------------------ +//Scream Fortress 2013 +//------------------------------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------------------------------ +//CRITERIA +//------------------------------------------------------------------------------------------------------------------------ +Criterion "SF13IsTheWitchingHour" "worldIsTheWitchingHour" "1" "required" weight 100 +Criterion "SF13IsNotTheWitchingHour" "worldIsTheWitchingHour" "!=1" "required" weight 100 +//------------------------------------------------------------------------------------------------------------------------ +//START OF SCREAM FORTRESS 2013 AUTOGENERATED +Response ScoutCastMerasmusZap +{ + scene "scenes/player/scout/low/6254.vcd" +} +Rule ScoutCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsScout + Response ScoutCastMerasmusZap +} + +Response HeavyCastMerasmusZap +{ + scene "scenes/player/heavy/low/6384.vcd" +} +Rule HeavyCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsHeavy + Response HeavyCastMerasmusZap +} + +Response PyroCastMerasmusZap +{ + scene "scenes/player/pyro/low/6438.vcd" +} +Rule PyroCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsPyro + Response PyroCastMerasmusZap +} + +Response EngineerCastMerasmusZap +{ + scene "scenes/player/engineer/low/6319.vcd" +} +Rule EngineerCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsEngineer + Response EngineerCastMerasmusZap +} + +Response DemomanCastMerasmusZap +{ + scene "scenes/player/demoman/low/6059.vcd" +} +Rule DemomanCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsDemoman + Response DemomanCastMerasmusZap +} + +Response MedicCastMerasmusZap +{ + scene "scenes/player/medic/low/6579.vcd" +} +Rule MedicCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsMedic + Response MedicCastMerasmusZap +} + +Response SniperCastMerasmusZap +{ + scene "scenes/player/sniper/low/6514.vcd" +} +Rule SniperCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsSniper + Response SniperCastMerasmusZap +} + +Response SpyCastMerasmusZap +{ + scene "scenes/player/spy/low/6124.vcd" +} +Rule SpyCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsSpy + Response SpyCastMerasmusZap +} + +Response SoldierCastMerasmusZap +{ + scene "scenes/player/soldier/low/6189.vcd" +} +Rule SoldierCastMerasmusZap +{ + criteria ConceptPlayerCastMerasmusZap IsSoldier + Response SoldierCastMerasmusZap +} + +Response ScoutCastSelfHeal +{ + scene "scenes/player/scout/low/6243.vcd" +} +Rule ScoutCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsScout + Response ScoutCastSelfHeal +} + +Response HeavyCastSelfHeal +{ + scene "scenes/player/heavy/low/6373.vcd" +} +Rule HeavyCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsHeavy + Response HeavyCastSelfHeal +} + +Response PyroCastSelfHeal +{ + scene "scenes/player/pyro/low/6438.vcd" +} +Rule PyroCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsPyro + Response PyroCastSelfHeal +} + +Response EngineerCastSelfHeal +{ + scene "scenes/player/engineer/low/6308.vcd" +} +Rule EngineerCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsEngineer + Response EngineerCastSelfHeal +} + +Response DemomanCastSelfHeal +{ + scene "scenes/player/demoman/low/6048.vcd" +} +Rule DemomanCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsDemoman + Response DemomanCastSelfHeal +} + +Response MedicCastSelfHeal +{ + scene "scenes/player/medic/low/6568.vcd" +} +Rule MedicCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsMedic + Response MedicCastSelfHeal +} + +Response SniperCastSelfHeal +{ + scene "scenes/player/sniper/low/6503.vcd" +} +Rule SniperCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsSniper + Response SniperCastSelfHeal +} + +Response SpyCastSelfHeal +{ + scene "scenes/player/spy/low/6113.vcd" +} +Rule SpyCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsSpy + Response SpyCastSelfHeal +} + +Response SoldierCastSelfHeal +{ + scene "scenes/player/soldier/low/6178.vcd" +} +Rule SoldierCastSelfHeal +{ + criteria ConceptPlayerCastSelfHeal IsSoldier + Response SoldierCastSelfHeal +} + +Response ScoutCastMirv +{ + scene "scenes/player/scout/low/6263.vcd" +} +Rule ScoutCastMirv +{ + criteria ConceptPlayerCastMirv IsScout + Response ScoutCastMirv +} + +Response HeavyCastMirv +{ + scene "scenes/player/heavy/low/6393.vcd" +} +Rule HeavyCastMirv +{ + criteria ConceptPlayerCastMirv IsHeavy + Response HeavyCastMirv +} + +Response PyroCastMirv +{ + scene "scenes/player/pyro/low/6435.vcd" +} +Rule PyroCastMirv +{ + criteria ConceptPlayerCastMirv IsPyro + Response PyroCastMirv +} + +Response EngineerCastMirv +{ + scene "scenes/player/engineer/low/6328.vcd" +} +Rule EngineerCastMirv +{ + criteria ConceptPlayerCastMirv IsEngineer + Response EngineerCastMirv +} + +Response DemomanCastMirv +{ + scene "scenes/player/demoman/low/6068.vcd" +} +Rule DemomanCastMirv +{ + criteria ConceptPlayerCastMirv IsDemoman + Response DemomanCastMirv +} + +Response MedicCastMirv +{ + scene "scenes/player/medic/low/6588.vcd" +} +Rule MedicCastMirv +{ + criteria ConceptPlayerCastMirv IsMedic + Response MedicCastMirv +} + +Response SniperCastMirv +{ + scene "scenes/player/sniper/low/6523.vcd" +} +Rule SniperCastMirv +{ + criteria ConceptPlayerCastMirv IsSniper + Response SniperCastMirv +} + +Response SpyCastMirv +{ + scene "scenes/player/spy/low/6133.vcd" +} +Rule SpyCastMirv +{ + criteria ConceptPlayerCastMirv IsSpy + Response SpyCastMirv +} + +Response SoldierCastMirv +{ + scene "scenes/player/soldier/low/6198.vcd" +} +Rule SoldierCastMirv +{ + criteria ConceptPlayerCastMirv IsSoldier + Response SoldierCastMirv +} + +Response ScoutCastBlastJump +{ + scene "scenes/player/scout/low/6247.vcd" +} +Rule ScoutCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsScout + Response ScoutCastBlastJump +} + +Response HeavyCastBlastJump +{ + scene "scenes/player/heavy/low/6377.vcd" +} +Rule HeavyCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsHeavy + Response HeavyCastBlastJump +} + +Response PyroCastBlastJump +{ + scene "scenes/player/pyro/low/6437.vcd" +} +Rule PyroCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsPyro + Response PyroCastBlastJump +} + +Response EngineerCastBlastJump +{ + scene "scenes/player/engineer/low/6312.vcd" +} +Rule EngineerCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsEngineer + Response EngineerCastBlastJump +} + +Response DemomanCastBlastJump +{ + scene "scenes/player/demoman/low/6052.vcd" +} +Rule DemomanCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsDemoman + Response DemomanCastBlastJump +} + +Response MedicCastBlastJump +{ + scene "scenes/player/medic/low/6572.vcd" +} +Rule MedicCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsMedic + Response MedicCastBlastJump +} + +Response SniperCastBlastJump +{ + scene "scenes/player/sniper/low/6507.vcd" +} +Rule SniperCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsSniper + Response SniperCastBlastJump +} + +Response SpyCastBlastJump +{ + scene "scenes/player/spy/low/6117.vcd" +} +Rule SpyCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsSpy + Response SpyCastBlastJump +} + +Response SoldierCastBlastJump +{ + scene "scenes/player/soldier/low/6182.vcd" +} +Rule SoldierCastBlastJump +{ + criteria ConceptPlayerCastBlastJump IsSoldier + Response SoldierCastBlastJump +} + +Response ScoutCastStealth +{ + scene "scenes/player/scout/low/6257.vcd" +} +Rule ScoutCastStealth +{ + criteria ConceptPlayerCastStealth IsScout + Response ScoutCastStealth +} + +Response HeavyCastStealth +{ + scene "scenes/player/heavy/low/6387.vcd" +} +Rule HeavyCastStealth +{ + criteria ConceptPlayerCastStealth IsHeavy + Response HeavyCastStealth +} + +Response PyroCastStealth +{ + scene "scenes/player/pyro/low/6439.vcd" +} +Rule PyroCastStealth +{ + criteria ConceptPlayerCastStealth IsPyro + Response PyroCastStealth +} + +Response EngineerCastStealth +{ + scene "scenes/player/engineer/low/6322.vcd" +} +Rule EngineerCastStealth +{ + criteria ConceptPlayerCastStealth IsEngineer + Response EngineerCastStealth +} + +Response DemomanCastStealth +{ + scene "scenes/player/demoman/low/6062.vcd" +} +Rule DemomanCastStealth +{ + criteria ConceptPlayerCastStealth IsDemoman + Response DemomanCastStealth +} + +Response MedicCastStealth +{ + scene "scenes/player/medic/low/6582.vcd" +} +Rule MedicCastStealth +{ + criteria ConceptPlayerCastStealth IsMedic + Response MedicCastStealth +} + +Response SniperCastStealth +{ + scene "scenes/player/sniper/low/6517.vcd" +} +Rule SniperCastStealth +{ + criteria ConceptPlayerCastStealth IsSniper + Response SniperCastStealth +} + +Response SpyCastStealth +{ + scene "scenes/player/spy/low/6127.vcd" +} +Rule SpyCastStealth +{ + criteria ConceptPlayerCastStealth IsSpy + Response SpyCastStealth +} + +Response SoldierCastStealth +{ + scene "scenes/player/soldier/low/6192.vcd" +} +Rule SoldierCastStealth +{ + criteria ConceptPlayerCastStealth IsSoldier + Response SoldierCastStealth +} + +Response ScoutCastTeleport +{ + scene "scenes/player/scout/low/6272.vcd" +} +Rule ScoutCastTeleport +{ + criteria ConceptPlayerCastTeleport IsScout + Response ScoutCastTeleport +} + +Response HeavyCastTeleport +{ + scene "scenes/player/heavy/low/6402.vcd" +} +Rule HeavyCastTeleport +{ + criteria ConceptPlayerCastTeleport IsHeavy + Response HeavyCastTeleport +} + +Response PyroCastTeleport +{ + scene "scenes/player/pyro/low/6440.vcd" +} +Rule PyroCastTeleport +{ + criteria ConceptPlayerCastTeleport IsPyro + Response PyroCastTeleport +} + +Response EngineerCastTeleport +{ + scene "scenes/player/engineer/low/6337.vcd" +} +Rule EngineerCastTeleport +{ + criteria ConceptPlayerCastTeleport IsEngineer + Response EngineerCastTeleport +} + +Response DemomanCastTeleport +{ + scene "scenes/player/demoman/low/6077.vcd" +} +Rule DemomanCastTeleport +{ + criteria ConceptPlayerCastTeleport IsDemoman + Response DemomanCastTeleport +} + +Response MedicCastTeleport +{ + scene "scenes/player/medic/low/6597.vcd" +} +Rule MedicCastTeleport +{ + criteria ConceptPlayerCastTeleport IsMedic + Response MedicCastTeleport +} + +Response SniperCastTeleport +{ + scene "scenes/player/sniper/low/6532.vcd" +} +Rule SniperCastTeleport +{ + criteria ConceptPlayerCastTeleport IsSniper + Response SniperCastTeleport +} + +Response SpyCastTeleport +{ + scene "scenes/player/spy/low/6142.vcd" +} +Rule SpyCastTeleport +{ + criteria ConceptPlayerCastTeleport IsSpy + Response SpyCastTeleport +} + +Response SoldierCastTeleport +{ + scene "scenes/player/soldier/low/6207.vcd" +} +Rule SoldierCastTeleport +{ + criteria ConceptPlayerCastTeleport IsSoldier + Response SoldierCastTeleport +} + +Response ScoutCastBombHeadCurse +{ + scene "scenes/player/scout/low/6264.vcd" +} +Rule ScoutCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsScout + Response ScoutCastBombHeadCurse +} + +Response HeavyCastBombHeadCurse +{ + scene "scenes/player/heavy/low/6394.vcd" +} +Rule HeavyCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsHeavy + Response HeavyCastBombHeadCurse +} + +Response PyroCastBombHeadCurse +{ + scene "scenes/player/pyro/low/8478.vcd" +} +Rule PyroCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsPyro + Response PyroCastBombHeadCurse +} + +Response EngineerCastBombHeadCurse +{ + scene "scenes/player/engineer/low/6329.vcd" +} +Rule EngineerCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsEngineer + Response EngineerCastBombHeadCurse +} + +Response DemomanCastBombHeadCurse +{ + scene "scenes/player/demoman/low/6069.vcd" +} +Rule DemomanCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsDemoman + Response DemomanCastBombHeadCurse +} + +Response MedicCastBombHeadCurse +{ + scene "scenes/player/medic/low/6589.vcd" +} +Rule MedicCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsMedic + Response MedicCastBombHeadCurse +} + +Response SniperCastBombHeadCurse +{ + scene "scenes/player/sniper/low/6524.vcd" +} +Rule SniperCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsSniper + Response SniperCastBombHeadCurse +} + +Response SpyCastBombHeadCurse +{ + scene "scenes/player/spy/low/6134.vcd" +} +Rule SpyCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsSpy + Response SpyCastBombHeadCurse +} + +Response SoldierCastBombHeadCurse +{ + scene "scenes/player/soldier/low/6199.vcd" +} +Rule SoldierCastBombHeadCurse +{ + criteria ConceptPlayerCastBombHeadCurse IsSoldier + Response SoldierCastBombHeadCurse +} + +Response ScoutCastLightningBall +{ + scene "scenes/player/scout/low/6268.vcd" +} +Rule ScoutCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsScout + Response ScoutCastLightningBall +} + +Response HeavyCastLightningBall +{ + scene "scenes/player/heavy/low/6398.vcd" +} +Rule HeavyCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsHeavy + Response HeavyCastLightningBall +} + +Response PyroCastLightningBall +{ + scene "scenes/player/pyro/low/6436.vcd" +} +Rule PyroCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsPyro + Response PyroCastLightningBall +} + +Response EngineerCastLightningBall +{ + scene "scenes/player/engineer/low/6333.vcd" +} +Rule EngineerCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsEngineer + Response EngineerCastLightningBall +} + +Response DemomanCastLightningBall +{ + scene "scenes/player/demoman/low/6073.vcd" +} +Rule DemomanCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsDemoman + Response DemomanCastLightningBall +} + +Response MedicCastLightningBall +{ + scene "scenes/player/medic/low/6593.vcd" +} +Rule MedicCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsMedic + Response MedicCastLightningBall +} + +Response SniperCastLightningBall +{ + scene "scenes/player/sniper/low/6528.vcd" +} +Rule SniperCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsSniper + Response SniperCastLightningBall +} + +Response SpyCastLightningBall +{ + scene "scenes/player/spy/low/6138.vcd" +} +Rule SpyCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsSpy + Response SpyCastLightningBall +} + +Response SoldierCastLightningBall +{ + scene "scenes/player/soldier/low/6203.vcd" +} +Rule SoldierCastLightningBall +{ + criteria ConceptPlayerCastLightningBall IsSoldier + Response SoldierCastLightningBall +} + +Response ScoutCastMovementBuff +{ + scene "scenes/player/scout/low/6256.vcd" +} +Rule ScoutCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsScout + Response ScoutCastMovementBuff +} + +Response HeavyCastMovementBuff +{ + scene "scenes/player/heavy/low/6386.vcd" +} +Rule HeavyCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsHeavy + Response HeavyCastMovementBuff +} + +Response PyroCastMovementBuff +{ + scene "scenes/player/pyro/low/8479.vcd" +} +Rule PyroCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsPyro + Response PyroCastMovementBuff +} + +Response EngineerCastMovementBuff +{ + scene "scenes/player/engineer/low/6321.vcd" +} +Rule EngineerCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsEngineer + Response EngineerCastMovementBuff +} + +Response DemomanCastMovementBuff +{ + scene "scenes/player/demoman/low/6061.vcd" +} +Rule DemomanCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsDemoman + Response DemomanCastMovementBuff +} + +Response MedicCastMovementBuff +{ + scene "scenes/player/medic/low/6581.vcd" +} +Rule MedicCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsMedic + Response MedicCastMovementBuff +} + +Response SniperCastMovementBuff +{ + scene "scenes/player/sniper/low/6516.vcd" +} +Rule SniperCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsSniper + Response SniperCastMovementBuff +} + +Response SpyCastMovementBuff +{ + scene "scenes/player/spy/low/6126.vcd" +} +Rule SpyCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsSpy + Response SpyCastMovementBuff +} + +Response SoldierCastMovementBuff +{ + scene "scenes/player/soldier/low/6191.vcd" +} +Rule SoldierCastMovementBuff +{ + criteria ConceptPlayerCastMovementBuff IsSoldier + Response SoldierCastMovementBuff +} + +Response ScoutCastMonoculous +{ + scene "scenes/player/scout/low/6296.vcd" +} +Rule ScoutCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsScout + Response ScoutCastMonoculous +} + +Response HeavyCastMonoculous +{ + scene "scenes/player/heavy/low/6426.vcd" +} +Rule HeavyCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsHeavy + Response HeavyCastMonoculous +} + +Response PyroCastMonoculous +{ + scene "scenes/player/pyro/low/8480.vcd" +} +Rule PyroCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsPyro + Response PyroCastMonoculous +} + +Response EngineerCastMonoculous +{ + scene "scenes/player/engineer/low/6361.vcd" +} +Rule EngineerCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsEngineer + Response EngineerCastMonoculous +} + +Response DemomanCastMonoculous +{ + scene "scenes/player/demoman/low/6101.vcd" + scene "scenes/player/demoman/low/8527.vcd" +} +Rule DemomanCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsDemoman + Response DemomanCastMonoculous +} + +Response MedicCastMonoculous +{ + scene "scenes/player/medic/low/6621.vcd" +} +Rule MedicCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsMedic + Response MedicCastMonoculous +} + +Response SniperCastMonoculous +{ + scene "scenes/player/sniper/low/6556.vcd" +} +Rule SniperCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsSniper + Response SniperCastMonoculous +} + +Response SpyCastMonoculous +{ + scene "scenes/player/spy/low/6166.vcd" +} +Rule SpyCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsSpy + Response SpyCastMonoculous +} + +Response SoldierCastMonoculous +{ + scene "scenes/player/soldier/low/6231.vcd" +} +Rule SoldierCastMonoculous +{ + criteria ConceptPlayerCastMonoculous IsSoldier + Response SoldierCastMonoculous +} + +Response ScoutCastMeteorSwarm +{ + scene "scenes/player/scout/low/6291.vcd" +} +Rule ScoutCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsScout + Response ScoutCastMeteorSwarm +} + +Response HeavyCastMeteorSwarm +{ + scene "scenes/player/heavy/low/6421.vcd" +} +Rule HeavyCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsHeavy + Response HeavyCastMeteorSwarm +} + +Response PyroCastMeteorSwarm +{ + scene "scenes/player/pyro/low/6440.vcd" +} +Rule PyroCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsPyro + Response PyroCastMeteorSwarm +} + +Response EngineerCastMeteorSwarm +{ + scene "scenes/player/engineer/low/6356.vcd" +} +Rule EngineerCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsEngineer + Response EngineerCastMeteorSwarm +} + +Response DemomanCastMeteorSwarm +{ + scene "scenes/player/demoman/low/6096.vcd" +} +Rule DemomanCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsDemoman + Response DemomanCastMeteorSwarm +} + +Response MedicCastMeteorSwarm +{ + scene "scenes/player/medic/low/6616.vcd" +} +Rule MedicCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsMedic + Response MedicCastMeteorSwarm +} + +Response SniperCastMeteorSwarm +{ + scene "scenes/player/sniper/low/6551.vcd" +} +Rule SniperCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsSniper + Response SniperCastMeteorSwarm +} + +Response SpyCastMeteorSwarm +{ + scene "scenes/player/spy/low/6161.vcd" +} +Rule SpyCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsSpy + Response SpyCastMeteorSwarm +} + +Response SoldierCastMeteorSwarm +{ + scene "scenes/player/soldier/low/6226.vcd" +} +Rule SoldierCastMeteorSwarm +{ + criteria ConceptPlayerCastMeteorSwarm IsSoldier + Response SoldierCastMeteorSwarm +} + +Response ScoutCastSkeletonHorde +{ + scene "scenes/player/scout/low/6293.vcd" +} +Rule ScoutCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsScout + Response ScoutCastSkeletonHorde +} + +Response HeavyCastSkeletonHorde +{ + scene "scenes/player/heavy/low/6423.vcd" +} +Rule HeavyCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsHeavy + Response HeavyCastSkeletonHorde +} + +Response PyroCastSkeletonHorde +{ + scene "scenes/player/pyro/low/6435.vcd" +} +Rule PyroCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsPyro + Response PyroCastSkeletonHorde +} + +Response EngineerCastSkeletonHorde +{ + scene "scenes/player/engineer/low/6358.vcd" +} +Rule EngineerCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsEngineer + Response EngineerCastSkeletonHorde +} + +Response DemomanCastSkeletonHorde +{ + scene "scenes/player/demoman/low/6098.vcd" +} +Rule DemomanCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsDemoman + Response DemomanCastSkeletonHorde +} + +Response MedicCastSkeletonHorde +{ + scene "scenes/player/medic/low/6618.vcd" +} +Rule MedicCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsMedic + Response MedicCastSkeletonHorde +} + +Response SniperCastSkeletonHorde +{ + scene "scenes/player/sniper/low/6553.vcd" +} +Rule SniperCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsSniper + Response SniperCastSkeletonHorde +} + +Response SpyCastSkeletonHorde +{ + scene "scenes/player/spy/low/6163.vcd" +} +Rule SpyCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsSpy + Response SpyCastSkeletonHorde +} + +Response SoldierCastSkeletonHorde +{ + scene "scenes/player/soldier/low/6228.vcd" +} +Rule SoldierCastSkeletonHorde +{ + criteria ConceptPlayerCastSkeletonHorde IsSoldier + Response SoldierCastSkeletonHorde +} + +Response ScoutSeeSpellMeteorSwarm +{ + scene "scenes/player/scout/low/8520.vcd" + scene "scenes/player/scout/low/8521.vcd" + scene "scenes/player/scout/low/8522.vcd" + scene "scenes/player/scout/low/8523.vcd" + scene "scenes/player/scout/low/8524.vcd" + scene "scenes/player/scout/low/8525.vcd" + scene "scenes/player/scout/low/8526.vcd" + scene "scenes/player/scout/low/4461.vcd" + scene "scenes/player/scout/low/4462.vcd" + scene "scenes/player/scout/low/4463.vcd" + scene "scenes/player/scout/low/4680.vcd" +} +Rule ScoutSeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsScout + Response ScoutSeeSpellMeteorSwarm +} + +Response HeavySeeSpellMeteorSwarm +{ + scene "scenes/player/heavy/low/6684.vcd" + scene "scenes/player/heavy/low/6685.vcd" + scene "scenes/player/heavy/low/6687.vcd" + scene "scenes/player/heavy/low/4749.vcd" + scene "scenes/player/heavy/low/5456.vcd" +} +Rule HeavySeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsHeavy + Response HeavySeeSpellMeteorSwarm +} + +Response EngineerSeeSpellMeteorSwarm +{ + scene "scenes/player/engineer/low/7947.vcd" + scene "scenes/player/engineer/low/7948.vcd" +} +Rule EngineerSeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsEngineer + Response EngineerSeeSpellMeteorSwarm +} + +Response DemomanSeeSpellMeteorSwarm +{ + scene "scenes/player/demoman/low/8538.vcd" + scene "scenes/player/demoman/low/8540.vcd" + scene "scenes/player/demoman/low/4595.vcd" + scene "scenes/player/demoman/low/4596.vcd" +} +Rule DemomanSeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsDemoman + Response DemomanSeeSpellMeteorSwarm +} + +Response MedicSeeSpellMeteorSwarm +{ + scene "scenes/player/medic/low/6816.vcd" + scene "scenes/player/medic/low/6817.vcd" + scene "scenes/player/medic/low/6818.vcd" + scene "scenes/player/medic/low/6819.vcd" + scene "scenes/player/medic/low/8508.vcd" + scene "scenes/player/medic/low/8509.vcd" + scene "scenes/player/medic/low/8510.vcd" +} +Rule MedicSeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsMedic + Response MedicSeeSpellMeteorSwarm +} + +Response SniperSeeSpellMeteorSwarm +{ + scene "scenes/player/sniper/low/7276.vcd" + scene "scenes/player/sniper/low/7277.vcd" + scene "scenes/player/sniper/low/7278.vcd" + scene "scenes/player/sniper/low/7279.vcd" + scene "scenes/player/sniper/low/7280.vcd" + scene "scenes/player/sniper/low/7281.vcd" + scene "scenes/player/sniper/low/8483.vcd" +} +Rule SniperSeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsSniper + Response SniperSeeSpellMeteorSwarm +} + +Response SpySeeSpellMeteorSwarm +{ + scene "scenes/player/spy/low/7523.vcd" + scene "scenes/player/spy/low/7524.vcd" + scene "scenes/player/spy/low/7634.vcd" + scene "scenes/player/spy/low/7635.vcd" + scene "scenes/player/spy/low/7637.vcd" + scene "scenes/player/spy/low/7638.vcd" + scene "scenes/player/spy/low/4714.vcd" + scene "scenes/player/spy/low/4715.vcd" +} +Rule SpySeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsSpy + Response SpySeeSpellMeteorSwarm +} + +Response SoldierSeeSpellMeteorSwarm +{ + scene "scenes/player/soldier/low/7445.vcd" + scene "scenes/player/soldier/low/7450.vcd" + scene "scenes/player/soldier/low/4550.vcd" + scene "scenes/player/soldier/low/4551.vcd" +} +Rule SoldierSeeSpellMeteorSwarm +{ + criteria ConceptPlayerSpellMeteorSwarm IsSoldier + Response SoldierSeeSpellMeteorSwarm +} + +Response ScoutSeeSpellSkeletonHorde +{ + scene "scenes/player/scout/low/8520.vcd" + scene "scenes/player/scout/low/8521.vcd" + scene "scenes/player/scout/low/8522.vcd" + scene "scenes/player/scout/low/8523.vcd" + scene "scenes/player/scout/low/8524.vcd" +} +Rule ScoutSeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsScout + Response ScoutSeeSpellSkeletonHorde +} + +Response HeavySeeSpellSkeletonHorde +{ + scene "scenes/player/heavy/low/6684.vcd" + scene "scenes/player/heavy/low/6685.vcd" + scene "scenes/player/heavy/low/6687.vcd" +} +Rule HeavySeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsHeavy + Response HeavySeeSpellSkeletonHorde +} + +Response EngineerSeeSpellSkeletonHorde +{ + scene "scenes/player/engineer/low/7947.vcd" + scene "scenes/player/engineer/low/7948.vcd" +} +Rule EngineerSeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsEngineer + Response EngineerSeeSpellSkeletonHorde +} + +Response DemomanSeeSpellSkeletonHorde +{ + scene "scenes/player/demoman/low/7755.vcd" + scene "scenes/player/demoman/low/8538.vcd" +} +Rule DemomanSeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsDemoman + Response DemomanSeeSpellSkeletonHorde +} + +Response MedicSeeSpellSkeletonHorde +{ + scene "scenes/player/medic/low/6816.vcd" + scene "scenes/player/medic/low/6818.vcd" + scene "scenes/player/medic/low/6819.vcd" + scene "scenes/player/medic/low/8508.vcd" + scene "scenes/player/medic/low/8509.vcd" + scene "scenes/player/medic/low/8510.vcd" +} +Rule MedicSeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsMedic + Response MedicSeeSpellSkeletonHorde +} + +Response SniperSeeSpellSkeletonHorde +{ + scene "scenes/player/sniper/low/7276.vcd" + scene "scenes/player/sniper/low/7277.vcd" + scene "scenes/player/sniper/low/7278.vcd" + scene "scenes/player/sniper/low/7279.vcd" + scene "scenes/player/sniper/low/7280.vcd" + scene "scenes/player/sniper/low/7281.vcd" + scene "scenes/player/sniper/low/8483.vcd" +} +Rule SniperSeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsSniper + Response SniperSeeSpellSkeletonHorde +} + +Response SpySeeSpellSkeletonHorde +{ + scene "scenes/player/spy/low/7523.vcd" + scene "scenes/player/spy/low/7524.vcd" + scene "scenes/player/spy/low/7634.vcd" + scene "scenes/player/spy/low/7635.vcd" + scene "scenes/player/spy/low/7637.vcd" + scene "scenes/player/spy/low/7638.vcd" +} +Rule SpySeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsSpy + Response SpySeeSpellSkeletonHorde +} + +Response SoldierSeeSpellSkeletonHorde +{ + scene "scenes/player/soldier/low/7445.vcd" + scene "scenes/player/soldier/low/7450.vcd" +} +Rule SoldierSeeSpellSkeletonHorde +{ + criteria ConceptPlayerSpellSkeletonHorde IsSoldier + Response SoldierSeeSpellSkeletonHorde +} + +Response ScoutSF13RoundStart +{ + scene "scenes/player/scout/low/6957.vcd" predelay "8, 10" + scene "scenes/player/scout/low/6961.vcd" predelay "8, 10" + scene "scenes/player/scout/low/6979.vcd" predelay "8, 10" +} +Rule ScoutSF13RoundStart +{ + criteria ConceptPlayerRoundStart IsScout 75PercentChance IsMapHelltower IsNotInHell + Response ScoutSF13RoundStart +} + +Response EngineerSF13RoundStart +{ + scene "scenes/player/engineer/low/7896.vcd" predelay "8, 10" + scene "scenes/player/engineer/low/7899.vcd" predelay "8, 10" + scene "scenes/player/engineer/low/7900.vcd" predelay "8, 10" + scene "scenes/player/engineer/low/7901.vcd" predelay "8, 10" +} +Rule EngineerSF13RoundStart +{ + criteria ConceptPlayerRoundStart IsEngineer 75PercentChance IsMapHelltower IsNotInHell + Response EngineerSF13RoundStart +} + +Response DemomanSF13RoundStart +{ + scene "scenes/player/demoman/low/7732.vcd" predelay "8, 10" + scene "scenes/player/demoman/low/7733.vcd" predelay "8, 10" +} +Rule DemomanSF13RoundStart +{ + criteria ConceptPlayerRoundStart IsDemoman 75PercentChance IsMapHelltower IsNotInHell + Response DemomanSF13RoundStart +} + +Response MedicSF13RoundStart +{ + scene "scenes/player/medic/low/6788.vcd" predelay "8, 10" +} +Rule MedicSF13RoundStart +{ + criteria ConceptPlayerRoundStart IsMedic 75PercentChance IsMapHelltower IsNotInHell + Response MedicSF13RoundStart +} + +Response SniperSF13RoundStart +{ + scene "scenes/player/sniper/low/7244.vcd" predelay "8, 10" + scene "scenes/player/sniper/low/7245.vcd" predelay "8, 10" +} +Rule SniperSF13RoundStart +{ + criteria ConceptPlayerRoundStart IsSniper 75PercentChance IsMapHelltower IsNotInHell + Response SniperSF13RoundStart +} + +Response SpySF13RoundStart +{ + scene "scenes/player/spy/low/7536.vcd" predelay "8, 10" + scene "scenes/player/spy/low/7538.vcd" predelay "8, 10" + scene "scenes/player/spy/low/7539.vcd" predelay "8, 10" + scene "scenes/player/spy/low/7604.vcd" predelay "8, 10" + scene "scenes/player/spy/low/7605.vcd" predelay "8, 10" + scene "scenes/player/spy/low/7606.vcd" predelay "8, 10" +} +Rule SpySF13RoundStart +{ + criteria ConceptPlayerRoundStart IsSpy 75PercentChance IsMapHelltower IsNotInHell + Response SpySF13RoundStart +} + +Response SoldierSF13RoundStart +{ + scene "scenes/player/soldier/low/7402.vcd" predelay "8, 10" + scene "scenes/player/soldier/low/7405.vcd" predelay "8, 10" + scene "scenes/player/soldier/low/7406.vcd" predelay "8, 10" + scene "scenes/player/soldier/low/7415.vcd" predelay "8, 10" + scene "scenes/player/soldier/low/7417.vcd" predelay "8, 10" +} +Rule SoldierSF13RoundStart +{ + criteria ConceptPlayerRoundStart IsSoldier 75PercentChance IsMapHelltower IsNotInHell + Response SoldierSF13RoundStart +} + +Response ScoutSF13SpellPickupCommon +{ + scene "scenes/player/scout/low/6935.vcd" + scene "scenes/player/scout/low/6936.vcd" + scene "scenes/player/scout/low/6938.vcd" + scene "scenes/player/scout/low/6995.vcd" + scene "scenes/player/scout/low/8568.vcd" + scene "scenes/player/scout/low/8511.vcd" +} +Rule ScoutSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsScout + Response ScoutSF13SpellPickupCommon +} + +Response HeavySF13SpellPickupCommon +{ + scene "scenes/player/heavy/low/6643.vcd" + scene "scenes/player/heavy/low/8490.vcd" +} +Rule HeavySF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsHeavy + Response HeavySF13SpellPickupCommon +} + +Response PyroSF13SpellPickupCommon +{ + scene "scenes/player/pyro/low/6499.vcd" +} +Rule PyroSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsPyro + Response PyroSF13SpellPickupCommon +} + +Response EngineerSF13SpellPickupCommon +{ + scene "scenes/player/engineer/low/7857.vcd" +} +Rule EngineerSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsEngineer + Response EngineerSF13SpellPickupCommon +} + +Response DemomanSF13SpellPickupCommon +{ + scene "scenes/player/demoman/low/7763.vcd" + scene "scenes/player/demoman/low/7764.vcd" + scene "scenes/player/demoman/low/7765.vcd" + scene "scenes/player/demoman/low/7791.vcd" +} +Rule DemomanSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsDemoman + Response DemomanSF13SpellPickupCommon +} + +Response MedicSF13SpellPickupCommon +{ + scene "scenes/player/medic/low/6735.vcd" + scene "scenes/player/medic/low/6738.vcd" + scene "scenes/player/medic/low/6811.vcd" +} +Rule MedicSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsMedic + Response MedicSF13SpellPickupCommon +} + +Response SniperSF13SpellPickupCommon +{ + scene "scenes/player/sniper/low/7211.vcd" + scene "scenes/player/sniper/low/7213.vcd" + scene "scenes/player/sniper/low/7263.vcd" +} +Rule SniperSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsSniper + Response SniperSF13SpellPickupCommon +} + +Response SpySF13SpellPickupCommon +{ + scene "scenes/player/spy/low/7520.vcd" + scene "scenes/player/spy/low/7522.vcd" + scene "scenes/player/spy/low/8548.vcd" + scene "scenes/player/spy/low/8549.vcd" + scene "scenes/player/spy/low/8550.vcd" +} +Rule SpySF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsSpy + Response SpySF13SpellPickupCommon +} + +Response SoldierSF13SpellPickupCommon +{ + scene "scenes/player/soldier/low/7331.vcd" +} +Rule SoldierSF13SpellPickupCommon +{ + criteria ConceptPlayerSpellPickupCommon IsSoldier + Response SoldierSF13SpellPickupCommon +} + +Response ScoutSF13SpellPickupRare +{ + scene "scenes/player/scout/low/6944.vcd" + scene "scenes/player/scout/low/6996.vcd" + scene "scenes/player/scout/low/6997.vcd" + scene "scenes/player/scout/low/6999.vcd" + scene "scenes/player/scout/low/8512.vcd" + scene "scenes/player/scout/low/8518.vcd" + scene "scenes/player/scout/low/8519.vcd" +} +Rule ScoutSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsScout + Response ScoutSF13SpellPickupRare +} + +Response HeavySF13SpellPickupRare +{ + scene "scenes/player/heavy/low/6645.vcd" + scene "scenes/player/heavy/low/6680.vcd" + scene "scenes/player/heavy/low/6682.vcd" + scene "scenes/player/heavy/low/8496.vcd" + scene "scenes/player/heavy/low/8498.vcd" +} +Rule HeavySF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsHeavy + Response HeavySF13SpellPickupRare +} + +Response PyroSF13SpellPickupRare +{ + scene "scenes/player/pyro/low/6498.vcd" +} +Rule PyroSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsPyro + Response PyroSF13SpellPickupRare +} + +Response EngineerSF13SpellPickupRare +{ + scene "scenes/player/engineer/low/7860.vcd" + scene "scenes/player/engineer/low/7939.vcd" +} +Rule EngineerSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsEngineer + Response EngineerSF13SpellPickupRare +} + +Response DemomanSF13SpellPickupRare +{ + scene "scenes/player/demoman/low/7766.vcd" + scene "scenes/player/demoman/low/7767.vcd" + scene "scenes/player/demoman/low/7768.vcd" + scene "scenes/player/demoman/low/7769.vcd" + scene "scenes/player/demoman/low/8531.vcd" +} +Rule DemomanSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsDemoman + Response DemomanSF13SpellPickupRare +} + +Response MedicSF13SpellPickupRare +{ + scene "scenes/player/medic/low/6814.vcd" + scene "scenes/player/medic/low/6815.vcd" +} +Rule MedicSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsMedic + Response MedicSF13SpellPickupRare +} + +Response SniperSF13SpellPickupRare +{ + scene "scenes/player/sniper/low/7269.vcd" + scene "scenes/player/sniper/low/7270.vcd" + scene "scenes/player/sniper/low/7271.vcd" + scene "scenes/player/sniper/low/7273.vcd" +} +Rule SniperSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsSniper + Response SniperSF13SpellPickupRare +} + +Response SpySF13SpellPickupRare +{ + scene "scenes/player/spy/low/7515.vcd" + scene "scenes/player/spy/low/7632.vcd" + scene "scenes/player/spy/low/7633.vcd" + scene "scenes/player/spy/low/8546.vcd" +} +Rule SpySF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsSpy + Response SpySF13SpellPickupRare +} + +Response SoldierSF13SpellPickupRare +{ + scene "scenes/player/soldier/low/7332.vcd" + scene "scenes/player/soldier/low/7333.vcd" + scene "scenes/player/soldier/low/7438.vcd" + scene "scenes/player/soldier/low/7439.vcd" + scene "scenes/player/soldier/low/7440.vcd" +} +Rule SoldierSF13SpellPickupRare +{ + criteria ConceptPlayerSpellPickupRare IsSoldier + Response SoldierSF13SpellPickupRare +} + +Response ScoutSF13WitchingHour +{ + scene "scenes/player/scout/low/6989.vcd" +} +Rule ScoutSF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsScout IsScout 30PercentChance IsMapHelltower IsNotInHell + Response ScoutSF13WitchingHour +} + +Response EngineerSF13WitchingHour +{ + scene "scenes/player/engineer/low/7932.vcd" +} +Rule EngineerSF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsEngineer IsEngineer 30PercentChance IsMapHelltower IsNotInHell + Response EngineerSF13WitchingHour +} + +Response DemomanSF13WitchingHour +{ + scene "scenes/player/demoman/low/7758.vcd" + scene "scenes/player/demoman/low/8528.vcd" +} +Rule DemomanSF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsDemoman IsDemoman 30PercentChance IsMapHelltower IsNotInHell + Response DemomanSF13WitchingHour +} + +Response MedicSF13WitchingHour +{ + scene "scenes/player/medic/low/6809.vcd" + scene "scenes/player/medic/low/8505.vcd" +} +Rule MedicSF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsMedic IsMedic 30PercentChance IsMapHelltower IsNotInHell + Response MedicSF13WitchingHour +} + +Response SniperSF13WitchingHour +{ + scene "scenes/player/sniper/low/7256.vcd" +} +Rule SniperSF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsSniper IsSniper 30PercentChance IsMapHelltower IsNotInHell + Response SniperSF13WitchingHour +} + +Response SpySF13WitchingHour +{ + scene "scenes/player/spy/low/7628.vcd" +} +Rule SpySF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsSpy IsSpy 30PercentChance IsMapHelltower IsNotInHell + Response SpySF13WitchingHour +} + +Response SoldierSF13WitchingHour +{ + scene "scenes/player/soldier/low/7429.vcd" +} +Rule SoldierSF13WitchingHour +{ + criteria ConceptPlayerHelltowerMidnight IsSoldier IsSoldier 30PercentChance IsMapHelltower IsNotInHell + Response SoldierSF13WitchingHour +} + +Response ScoutSF13Bridge +{ + scene "scenes/player/scout/low/6982.vcd" predelay "3.5, 5.5" + scene "scenes/player/scout/low/6983.vcd" predelay "3.5, 5.5" + scene "scenes/player/scout/low/6984.vcd" predelay "3.5, 5.5" + scene "scenes/player/scout/low/6985.vcd" predelay "3.5, 5.5" + scene "scenes/player/scout/low/6986.vcd" predelay "3.5, 5.5" + scene "scenes/player/scout/low/6990.vcd" predelay "3.5, 5.5" + scene "scenes/player/scout/low/8514.vcd" predelay "3.5, 5.5" +} +Rule ScoutSF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsScout 75PercentChance IsMapHelltower IsNotInHell + Response ScoutSF13Bridge +} + +Response HeavySF13Bridge +{ + scene "scenes/player/heavy/low/6670.vcd" predelay "3.5, 5.5" + scene "scenes/player/heavy/low/6673.vcd" predelay "3.5, 5.5" +} +Rule HeavySF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsHeavy 75PercentChance IsMapHelltower IsNotInHell + Response HeavySF13Bridge +} + +Response EngineerSF13Bridge +{ + scene "scenes/player/engineer/low/7928.vcd" predelay "3.5, 5.5" + scene "scenes/player/engineer/low/7931.vcd" predelay "3.5, 5.5" +} +Rule EngineerSF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsEngineer 75PercentChance IsMapHelltower IsNotInHell + Response EngineerSF13Bridge +} + +Response DemomanSF13Bridge +{ + scene "scenes/player/demoman/low/7759.vcd" predelay "3.5, 5.5" + scene "scenes/player/demoman/low/7761.vcd" predelay "3.5, 5.5" +} +Rule DemomanSF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsDemoman 75PercentChance IsMapHelltower IsNotInHell + Response DemomanSF13Bridge +} + +Response MedicSF13Bridge +{ + scene "scenes/player/medic/low/6803.vcd" predelay "3.5, 5.5" + scene "scenes/player/medic/low/6804.vcd" predelay "3.5, 5.5" + scene "scenes/player/medic/low/6805.vcd" predelay "3.5, 5.5" +} +Rule MedicSF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsMedic 75PercentChance IsMapHelltower IsNotInHell + Response MedicSF13Bridge +} + +Response SniperSF13Bridge +{ + scene "scenes/player/sniper/low/7254.vcd" predelay "3.5, 5.5" + scene "scenes/player/sniper/low/7257.vcd" predelay "3.5, 5.5" + scene "scenes/player/sniper/low/7260.vcd" predelay "3.5, 5.5" +} +Rule SniperSF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsSniper 75PercentChance IsMapHelltower IsNotInHell + Response SniperSF13Bridge +} + +Response SpySF13Bridge +{ + scene "scenes/player/spy/low/7625.vcd" predelay "3.5, 5.5" + scene "scenes/player/spy/low/7626.vcd" predelay "3.5, 5.5" + scene "scenes/player/spy/low/7627.vcd" predelay "3.5, 5.5" + scene "scenes/player/spy/low/7629.vcd" predelay "3.5, 5.5" + scene "scenes/player/spy/low/7631.vcd" predelay "3.5, 5.5" + scene "scenes/player/spy/low/8554.vcd" predelay "3.5, 5.5" +} +Rule SpySF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsSpy 75PercentChance IsMapHelltower IsNotInHell + Response SpySF13Bridge +} + +Response SoldierSF13Bridge +{ + scene "scenes/player/soldier/low/7431.vcd" predelay "3.5, 5.5" + scene "scenes/player/soldier/low/7432.vcd" predelay "3.5, 5.5" +} +Rule SoldierSF13Bridge +{ + criteria ConceptPlayerHelltowerMidnight IsSoldier 75PercentChance IsMapHelltower IsNotInHell + Response SoldierSF13Bridge +} + +Response ScoutSF13BattleCry +{ + scene "scenes/player/scout/low/6957.vcd" + scene "scenes/player/scout/low/6961.vcd" + scene "scenes/player/scout/low/6979.vcd" +} +Rule ScoutSF13BattleCry +{ + criteria ConceptPlayerBattleCry IsScout IsScout IsScout 75PercentChance IsMapHelltower IsNotInHell + Response ScoutSF13BattleCry +} + +Response HeavySF13BattleCry +{ + scene "scenes/player/heavy/low/6662.vcd" + scene "scenes/player/heavy/low/6663.vcd" + scene "scenes/player/heavy/low/6664.vcd" + scene "scenes/player/heavy/low/8492.vcd" +} +Rule HeavySF13BattleCry +{ + criteria ConceptPlayerBattleCry IsHeavy IsHeavy IsHeavy 75PercentChance IsMapHelltower IsNotInHell + Response HeavySF13BattleCry +} + +Response EngineerSF13BattleCry +{ + scene "scenes/player/engineer/low/7896.vcd" + scene "scenes/player/engineer/low/8474.vcd" + scene "scenes/player/engineer/low/8475.vcd" + scene "scenes/player/engineer/low/8476.vcd" +} +Rule EngineerSF13BattleCry +{ + criteria ConceptPlayerBattleCry IsEngineer IsEngineer IsEngineer 75PercentChance IsMapHelltower IsNotInHell + Response EngineerSF13BattleCry +} + +Response MedicSF13BattleCry +{ + scene "scenes/player/medic/low/6789.vcd" + scene "scenes/player/medic/low/6790.vcd" +} +Rule MedicSF13BattleCry +{ + criteria ConceptPlayerBattleCry IsMedic IsMedic IsMedic 75PercentChance IsMapHelltower IsNotInHell + Response MedicSF13BattleCry +} + +Response SniperSF13BattleCry +{ + scene "scenes/player/sniper/low/7244.vcd" + scene "scenes/player/sniper/low/7245.vcd" +} +Rule SniperSF13BattleCry +{ + criteria ConceptPlayerBattleCry IsSniper IsSniper IsSniper 75PercentChance IsMapHelltower IsNotInHell + Response SniperSF13BattleCry +} + +Response SpySF13BattleCry +{ + scene "scenes/player/spy/low/7606.vcd" +} +Rule SpySF13BattleCry +{ + criteria ConceptPlayerBattleCry IsSpy IsSpy IsSpy 75PercentChance IsMapHelltower IsNotInHell + Response SpySF13BattleCry +} + +Response SoldierSF13BattleCry +{ + scene "scenes/player/soldier/low/7402.vcd" + scene "scenes/player/soldier/low/7405.vcd" + scene "scenes/player/soldier/low/7415.vcd" + scene "scenes/player/soldier/low/7417.vcd" +} +Rule SoldierSF13BattleCry +{ + criteria ConceptPlayerBattleCry IsSoldier IsSoldier IsSoldier 75PercentChance IsMapHelltower IsNotInHell + Response SoldierSF13BattleCry +} + +Response ScoutSF13SkeletonKingAppear +{ + scene "scenes/player/scout/low/4485.vcd" predelay "0.5,1.2" + scene "scenes/player/scout/low/4486.vcd" predelay "0.5,1.2" + scene "scenes/player/scout/low/4696.vcd" predelay "0.5,1.2" + scene "scenes/player/scout/low/7001.vcd" predelay "0.5,1.2" + scene "scenes/player/scout/low/8525.vcd" predelay "0.5,1.2" + scene "scenes/player/scout/low/8526.vcd" predelay "0.5,1.2" +} +Rule ScoutSF13SkeletonKingAppear +{ + criteria ConceptPlayerSkeletonKingAppear 50PercentChance IsMapHelltower IsNotInHell + Response ScoutSF13SkeletonKingAppear +} + +Response DemomanSF13SkeletonKingAppear +{ + scene "scenes/player/demoman/low/8541.vcd" predelay "0.5,1.2" + scene "scenes/player/demoman/low/8542.vcd" predelay "0.5,1.2" + scene "scenes/player/demoman/low/8543.vcd" predelay "0.5,1.2" + scene "scenes/player/demoman/low/8544.vcd" predelay "0.5,1.2" + scene "scenes/player/demoman/low/8545.vcd" predelay "0.5,1.2" + scene "scenes/player/demoman/low/8540.vcd" predelay "0.5,1.2" +} +Rule DemomanSF13SkeletonKingAppear +{ + criteria ConceptPlayerSkeletonKingAppear 50PercentChance IsMapHelltower IsNotInHell + Response DemomanSF13SkeletonKingAppear +} + +Response MedicSF13SkeletonKingAppear +{ + scene "scenes/player/medic/low/4668.vcd" predelay "0.5,1.2" + scene "scenes/player/medic/low/4669.vcd" predelay "0.5,1.2" + scene "scenes/player/medic/low/6817.vcd" predelay "0.5,1.2" +} +Rule MedicSF13SkeletonKingAppear +{ + criteria ConceptPlayerSkeletonKingAppear 50PercentChance IsMapHelltower IsNotInHell + Response MedicSF13SkeletonKingAppear +} + +Response SniperSF13SkeletonKingAppear +{ + scene "scenes/player/sniper/low/6564.vcd" predelay "0.5,1.2" + scene "scenes/player/sniper/low/8487.vcd" predelay "0.5,1.2" + scene "scenes/player/sniper/low/8488.vcd" predelay "0.5,1.2" + scene "scenes/player/sniper/low/8483.vcd" predelay "0.5,1.2" +} +Rule SniperSF13SkeletonKingAppear +{ + criteria ConceptPlayerSkeletonKingAppear 50PercentChance IsMapHelltower IsNotInHell + Response SniperSF13SkeletonKingAppear +} + +Response SpySF13SkeletonKingAppear +{ + scene "scenes/player/spy/low/4718.vcd" predelay "0.5,1.2" + scene "scenes/player/spy/low/7524.vcd" predelay "0.5,1.2" + scene "scenes/player/spy/low/7634.vcd" predelay "0.5,1.2" +} +Rule SpySF13SkeletonKingAppear +{ + criteria ConceptPlayerSkeletonKingAppear 50PercentChance IsMapHelltower IsNotInHell + Response SpySF13SkeletonKingAppear +} + +Response SoldierSF13SkeletonKingAppear +{ + scene "scenes/player/soldier/low/4568.vcd" predelay "0.5,1.2" +} +Rule SoldierSF13SkeletonKingAppear +{ + criteria ConceptPlayerSkeletonKingAppear 50PercentChance IsMapHelltower IsNotInHell + Response SoldierSF13SkeletonKingAppear +} + +Response ScoutSF13SpellMovementBuff +{ + scene "scenes/player/scout/low/4468.vcd" + scene "scenes/player/scout/low/4473.vcd" + scene "scenes/player/scout/low/4475.vcd" + scene "scenes/player/scout/low/4687.vcd" + scene "scenes/player/scout/low/4688.vcd" + scene "scenes/player/scout/low/4692.vcd" + scene "scenes/player/scout/low/4693.vcd" + scene "scenes/player/scout/low/4694.vcd" +} +Rule ScoutSF13SpellMovementBuff +{ + criteria ConceptPlayerSpellMovementBuff IsScout + Response ScoutSF13SpellMovementBuff +} + +Response HeavySF13SpellMovementBuff +{ + scene "scenes/player/heavy/low/4745.vcd" + scene "scenes/player/heavy/low/4751.vcd" + scene "scenes/player/heavy/low/4752.vcd" + scene "scenes/player/heavy/low/4750.vcd" +} +Rule HeavySF13SpellMovementBuff +{ + criteria ConceptPlayerSpellMovementBuff IsHeavy + Response HeavySF13SpellMovementBuff +} + +Response DemomanSF13SpellMovementBuff +{ + scene "scenes/player/demoman/low/4587.vcd" + scene "scenes/player/demoman/low/4593.vcd" + scene "scenes/player/demoman/low/4586.vcd" +} +Rule DemomanSF13SpellMovementBuff +{ + criteria ConceptPlayerSpellMovementBuff IsDemoman + Response DemomanSF13SpellMovementBuff +} + +Response MedicSF13SpellMovementBuff +{ + scene "scenes/player/medic/low/4659.vcd" + scene "scenes/player/medic/low/4663.vcd" + scene "scenes/player/medic/low/4652.vcd" + scene "scenes/player/medic/low/4654.vcd" + scene "scenes/player/medic/low/4657.vcd" + scene "scenes/player/medic/low/4660.vcd" +} +Rule MedicSF13SpellMovementBuff +{ + criteria ConceptPlayerSpellMovementBuff IsMedic + Response MedicSF13SpellMovementBuff +} + +Response SpySF13SpellMovementBuff +{ + scene "scenes/player/spy/low/4717.vcd" + scene "scenes/player/spy/low/4711.vcd" + scene "scenes/player/spy/low/4712.vcd" +} +Rule SpySF13SpellMovementBuff +{ + criteria ConceptPlayerSpellMovementBuff IsSpy + Response SpySF13SpellMovementBuff +} + +Response SoldierSF13SpellMovementBuff +{ + scene "scenes/player/soldier/low/4553.vcd" + scene "scenes/player/soldier/low/4546.vcd" + scene "scenes/player/soldier/low/4548.vcd" + scene "scenes/player/soldier/low/4550.vcd" + scene "scenes/player/soldier/low/4551.vcd" +} +Rule SoldierSF13SpellMovementBuff +{ + criteria ConceptPlayerSpellMovementBuff IsSoldier + Response SoldierSF13SpellMovementBuff +} + +//END OF SCREAM FORTRESS 2013 AUTOGENERATED + + + +//------------------------------------------------------------------------------------------------------------------------ +//A Tale of Two Cities 2013 +//------------------------------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------------------------------ +//CRITERIA +//------------------------------------------------------------------------------------------------------------------------ +criterion "NotMannhattanGateAttackCooldown" "worldMannhattanGateAttackCooldown" "!=1" "required" weight 100 +//------------------------------------------------------------------------------------------------------------------------ + +//START OF TALE OF TWO CITIES AUTOGENERATED +Response ScoutMannhattanGateAttack +{ + scene "scenes/player/scout/low/6952.vcd" predelay "0.3,1.0" + scene "scenes/player/scout/low/6953.vcd" predelay "0.3,1.0" + scene "scenes/player/scout/low/6954.vcd" predelay "0.3,1.0" +} +Rule ScoutMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsScout + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response ScoutMannhattanGateAttack +} + +Response HeavyMannhattanGateAttack +{ + scene "scenes/player/heavy/low/6655.vcd" predelay "0.3,1.0" + scene "scenes/player/heavy/low/6657.vcd" predelay "0.3,1.0" +} +Rule HeavyMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsHeavy + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response HeavyMannhattanGateAttack +} + +Response EngineerMannhattanGateAttack +{ + scene "scenes/player/engineer/low/7866.vcd" predelay "0.3,1.0" + scene "scenes/player/engineer/low/7867.vcd" predelay "0.3,1.0" + scene "scenes/player/engineer/low/8469.vcd" predelay "0.3,1.0" +} +Rule EngineerMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsEngineer + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response EngineerMannhattanGateAttack +} + +Response DemomanMannhattanGateAttack +{ + scene "scenes/player/demoman/low/7798.vcd" predelay "0.3,1.0" + scene "scenes/player/demoman/low/7799.vcd" predelay "0.3,1.0" + scene "scenes/player/demoman/low/7800.vcd" predelay "0.3,1.0" +} +Rule DemomanMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsDemoman + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response DemomanMannhattanGateAttack +} + +Response MedicMannhattanGateAttack +{ + scene "scenes/player/medic/low/6748.vcd" predelay "0.3,1.0" + scene "scenes/player/medic/low/6749.vcd" predelay "0.3,1.0" +} +Rule MedicMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsMedic + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response MedicMannhattanGateAttack +} + +Response SniperMannhattanGateAttack +{ + scene "scenes/player/sniper/low/7233.vcd" predelay "0.3,1.0" + scene "scenes/player/sniper/low/7234.vcd" predelay "0.3,1.0" +} +Rule SniperMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsSniper + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response SniperMannhattanGateAttack +} + +Response SpyMannhattanGateAttack +{ + scene "scenes/player/spy/low/7569.vcd" predelay "0.3,1.0" + scene "scenes/player/spy/low/7570.vcd" predelay "0.3,1.0" +} +Rule SpyMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsSpy + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response SpyMannhattanGateAttack +} + +Response SoldierMannhattanGateAttack +{ + scene "scenes/player/soldier/low/7341.vcd" predelay "0.3,1.0" +} +Rule SoldierMannhattanGateAttack +{ + criteria ConceptMannhattanGateAttack NotMannhattanGateAttackCooldown IsSoldier + applycontext "MannhattanGateAttackCooldown:1:30" + applycontexttoworld + Response SoldierMannhattanGateAttack +} + +Response ScoutMannhattanGateTake +{ + scene "scenes/player/scout/low/6955.vcd" predelay "0.3,0.5" + scene "scenes/player/scout/low/6956.vcd" predelay "0.3,0.5" +} +Rule ScoutMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsScout + Response ScoutMannhattanGateTake +} + +Response HeavyMannhattanGateTake +{ + scene "scenes/player/heavy/low/6658.vcd" predelay "0.3,0.5" +} +Rule HeavyMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsHeavy + Response HeavyMannhattanGateTake +} + +Response EngineerMannhattanGateTake +{ + scene "scenes/player/engineer/low/7868.vcd" predelay "0.3,0.5" +} +Rule EngineerMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsEngineer + Response EngineerMannhattanGateTake +} + +Response DemomanMannhattanGateTake +{ + scene "scenes/player/demoman/low/7801.vcd" predelay "0.3,0.5" + scene "scenes/player/demoman/low/7802.vcd" predelay "0.3,0.5" +} +Rule DemomanMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsDemoman + Response DemomanMannhattanGateTake +} + +Response MedicMannhattanGateTake +{ + scene "scenes/player/medic/low/6751.vcd" predelay "0.3,0.5" + scene "scenes/player/medic/low/8504.vcd" predelay "0.3,0.5" +} +Rule MedicMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsMedic + Response MedicMannhattanGateTake +} + +Response SniperMannhattanGateTake +{ + scene "scenes/player/sniper/low/7235.vcd" predelay "0.3,0.5" +} +Rule SniperMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsSniper + Response SniperMannhattanGateTake +} + +Response SpyMannhattanGateTake +{ + scene "scenes/player/spy/low/7571.vcd" predelay "0.3,0.5" +} +Rule SpyMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsSpy + Response SpyMannhattanGateTake +} + +Response SoldierMannhattanGateTake +{ + scene "scenes/player/soldier/low/7343.vcd" predelay "0.3,0.5" +} +Rule SoldierMannhattanGateTake +{ + criteria ConceptMannhattanGateTake IsSoldier + Response SoldierMannhattanGateTake +} + +Response ScoutMvmResurrected +{ + scene "scenes/player/scout/low/6922.vcd" + scene "scenes/player/scout/low/6923.vcd" + scene "scenes/player/scout/low/6924.vcd" + scene "scenes/player/scout/low/6925.vcd" + scene "scenes/player/scout/low/6926.vcd" + scene "scenes/player/scout/low/6928.vcd" + scene "scenes/player/scout/low/6929.vcd" + scene "scenes/player/scout/low/6932.vcd" +} +Rule ScoutMvmResurrected +{ + criteria ConceptMvMResurrected IsScout + Response ScoutMvmResurrected +} + +Response HeavyMvmResurrected +{ + scene "scenes/player/heavy/low/6631.vcd" + scene "scenes/player/heavy/low/6633.vcd" + scene "scenes/player/heavy/low/6634.vcd" + scene "scenes/player/heavy/low/6635.vcd" + scene "scenes/player/heavy/low/6636.vcd" + scene "scenes/player/heavy/low/8569.vcd" + scene "scenes/player/heavy/low/8489.vcd" +} +Rule HeavyMvmResurrected +{ + criteria ConceptMvMResurrected IsHeavy + Response HeavyMvmResurrected +} + +Response PyroMvmResurrected +{ + scene "scenes/player/pyro/low/1482.vcd" + scene "scenes/player/pyro/low/1595.vcd" +} +Rule PyroMvmResurrected +{ + criteria ConceptMvMResurrected IsPyro + Response PyroMvmResurrected +} + +Response EngineerMvmResurrected +{ + scene "scenes/player/engineer/low/7848.vcd" + scene "scenes/player/engineer/low/7850.vcd" + scene "scenes/player/engineer/low/7854.vcd" +} +Rule EngineerMvmResurrected +{ + criteria ConceptMvMResurrected IsEngineer + Response EngineerMvmResurrected +} + +Response DemomanMvmResurrected +{ + scene "scenes/player/demoman/low/7691.vcd" + scene "scenes/player/demoman/low/7692.vcd" + scene "scenes/player/demoman/low/7693.vcd" + scene "scenes/player/demoman/low/7694.vcd" + scene "scenes/player/demoman/low/7695.vcd" + scene "scenes/player/demoman/low/7696.vcd" + scene "scenes/player/demoman/low/7697.vcd" + scene "scenes/player/demoman/low/7698.vcd" + scene "scenes/player/demoman/low/7699.vcd" + scene "scenes/player/demoman/low/7701.vcd" + scene "scenes/player/demoman/low/7702.vcd" +} +Rule DemomanMvmResurrected +{ + criteria ConceptMvMResurrected IsDemoman + Response DemomanMvmResurrected +} + +Response MedicMvmResurrected +{ + scene "scenes/player/medic/low/6719.vcd" + scene "scenes/player/medic/low/6720.vcd" + scene "scenes/player/medic/low/6723.vcd" +} +Rule MedicMvmResurrected +{ + criteria ConceptMvMResurrected IsMedic + Response MedicMvmResurrected +} + +Response SniperMvmResurrected +{ + scene "scenes/player/sniper/low/7238.vcd" + scene "scenes/player/sniper/low/7239.vcd" + scene "scenes/player/sniper/low/7240.vcd" + scene "scenes/player/sniper/low/7242.vcd" +} +Rule SniperMvmResurrected +{ + criteria ConceptMvMResurrected IsSniper + Response SniperMvmResurrected +} + +Response SpyMvmResurrected +{ + scene "scenes/player/spy/low/7526.vcd" + scene "scenes/player/spy/low/7527.vcd" + scene "scenes/player/spy/low/7528.vcd" + scene "scenes/player/spy/low/7529.vcd" + scene "scenes/player/spy/low/7530.vcd" + scene "scenes/player/spy/low/7531.vcd" + scene "scenes/player/spy/low/7532.vcd" + scene "scenes/player/spy/low/7533.vcd" + scene "scenes/player/spy/low/7535.vcd" +} +Rule SpyMvmResurrected +{ + criteria ConceptMvMResurrected IsSpy + Response SpyMvmResurrected +} + +Response SoldierMvmResurrected +{ + scene "scenes/player/soldier/low/7319.vcd" + scene "scenes/player/soldier/low/7320.vcd" + scene "scenes/player/soldier/low/7323.vcd" + scene "scenes/player/soldier/low/7324.vcd" + scene "scenes/player/soldier/low/7325.vcd" + scene "scenes/player/soldier/low/7326.vcd" +} +Rule SoldierMvmResurrected +{ + criteria ConceptMvMResurrected IsSoldier + Response SoldierMvmResurrected +} + +Response MedicMvMMedicShield +{ + scene "scenes/player/medic/low/6730.vcd" + scene "scenes/player/medic/low/6731.vcd" + scene "scenes/player/medic/low/6732.vcd" + scene "scenes/player/medic/low/6733.vcd" + scene "scenes/player/medic/low/6734.vcd" +} +Rule MedicMvMMedicShield +{ + criteria ConceptMvMMedicShield IsMedic 75PercentChance + Response MedicMvMMedicShield +} + +Response ScoutMvMLootCommon +{ + scene "scenes/player/scout/low/6934.vcd" predelay "0.2,0.4" + scene "scenes/player/scout/low/6935.vcd" predelay "0.2,0.4" + scene "scenes/player/scout/low/6936.vcd" predelay "0.2,0.4" + scene "scenes/player/scout/low/6938.vcd" predelay "0.2,0.4" + scene "scenes/player/scout/low/8568.vcd" predelay "0.2,0.4" + scene "scenes/player/scout/low/8511.vcd" predelay "0.2,0.4" +} +Rule ScoutMvMLootCommon +{ + criteria ConceptMvMLootCommon IsScout 20PercentChance + Response ScoutMvMLootCommon +} + +Response HeavyMvMLootCommon +{ + scene "scenes/player/heavy/low/6643.vcd" predelay "0.2,0.4" + scene "scenes/player/heavy/low/8490.vcd" predelay "0.2,0.4" +} +Rule HeavyMvMLootCommon +{ + criteria ConceptMvMLootCommon IsHeavy 20PercentChance + Response HeavyMvMLootCommon +} + +Response PyroMvMLootCommon +{ + scene "scenes/player/pyro/low/1454.vcd" predelay "0.2,0.4" +} +Rule PyroMvMLootCommon +{ + criteria ConceptMvMLootCommon IsPyro 20PercentChance + Response PyroMvMLootCommon +} + +Response EngineerMvMLootCommon +{ + scene "scenes/player/engineer/low/7855.vcd" predelay "0.2,0.4" + scene "scenes/player/engineer/low/7857.vcd" predelay "0.2,0.4" +} +Rule EngineerMvMLootCommon +{ + criteria ConceptMvMLootCommon IsEngineer 20PercentChance + Response EngineerMvMLootCommon +} + +Response DemomanMvMLootCommon +{ + scene "scenes/player/demoman/low/7791.vcd" predelay "0.2,0.4" + scene "scenes/player/demoman/low/7792.vcd" predelay "0.2,0.4" + scene "scenes/player/demoman/low/7793.vcd" predelay "0.2,0.4" + scene "scenes/player/demoman/low/7794.vcd" predelay "0.2,0.4" +} +Rule DemomanMvMLootCommon +{ + criteria ConceptMvMLootCommon IsDemoman 20PercentChance + Response DemomanMvMLootCommon +} + +Response MedicMvMLootCommon +{ + scene "scenes/player/medic/low/6735.vcd" predelay "0.2,0.4" + scene "scenes/player/medic/low/6736.vcd" predelay "0.2,0.4" + scene "scenes/player/medic/low/6738.vcd" predelay "0.2,0.4" +} +Rule MedicMvMLootCommon +{ + criteria ConceptMvMLootCommon IsMedic 20PercentChance + Response MedicMvMLootCommon +} + +Response SniperMvMLootCommon +{ + scene "scenes/player/sniper/low/7211.vcd" predelay "0.2,0.4" + scene "scenes/player/sniper/low/7212.vcd" predelay "0.2,0.4" + scene "scenes/player/sniper/low/7213.vcd" predelay "0.2,0.4" + scene "scenes/player/sniper/low/7214.vcd" predelay "0.2,0.4" + scene "scenes/player/sniper/low/7215.vcd" predelay "0.2,0.4" + scene "scenes/player/sniper/low/7216.vcd" predelay "0.2,0.4" +} +Rule SniperMvMLootCommon +{ + criteria ConceptMvMLootCommon IsSniper 20PercentChance + Response SniperMvMLootCommon +} + +Response SpyMvMLootCommon +{ + scene "scenes/player/spy/low/7513.vcd" predelay "0.2,0.4" + scene "scenes/player/spy/low/7514.vcd" predelay "0.2,0.4" + scene "scenes/player/spy/low/8547.vcd" predelay "0.2,0.4" +} +Rule SpyMvMLootCommon +{ + criteria ConceptMvMLootCommon IsSpy 20PercentChance + Response SpyMvMLootCommon +} + +Response SoldierMvMLootCommon +{ + scene "scenes/player/soldier/low/7329.vcd" predelay "0.2,0.4" + scene "scenes/player/soldier/low/7330.vcd" predelay "0.2,0.4" + scene "scenes/player/soldier/low/7331.vcd" predelay "0.2,0.4" +} +Rule SoldierMvMLootCommon +{ + criteria ConceptMvMLootCommon IsSoldier 20PercentChance + Response SoldierMvMLootCommon +} + +Response ScoutMvMLootRare +{ + scene "scenes/player/scout/low/6942.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/6943.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/6944.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/6945.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/6947.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/6949.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/6950.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/8512.vcd" predelay "0.5,0.8" +} +Rule ScoutMvMLootRare +{ + criteria ConceptMvMLootRare IsScout + Response ScoutMvMLootRare +} + +Response HeavyMvMLootRare +{ + scene "scenes/player/heavy/low/6644.vcd" predelay "0.5,0.8" + scene "scenes/player/heavy/low/6645.vcd" predelay "0.5,0.8" + scene "scenes/player/heavy/low/6646.vcd" predelay "0.5,0.8" +} +Rule HeavyMvMLootRare +{ + criteria ConceptMvMLootRare IsHeavy + Response HeavyMvMLootRare +} + +Response PyroMvMLootRare +{ + scene "scenes/player/pyro/low/1510.vcd" predelay "0.5,0.8" +} +Rule PyroMvMLootRare +{ + criteria ConceptMvMLootRare IsPyro + Response PyroMvMLootRare +} + +Response EngineerMvMLootRare +{ + scene "scenes/player/engineer/low/7859.vcd" predelay "0.5,0.8" + scene "scenes/player/engineer/low/7860.vcd" predelay "0.5,0.8" + scene "scenes/player/engineer/low/8467.vcd" predelay "0.5,0.8" + scene "scenes/player/engineer/low/8468.vcd" predelay "0.5,0.8" +} +Rule EngineerMvMLootRare +{ + criteria ConceptMvMLootRare IsEngineer + Response EngineerMvMLootRare +} + +Response DemomanMvMLootRare +{ + scene "scenes/player/demoman/low/7795.vcd" predelay "0.5,0.8" + scene "scenes/player/demoman/low/7796.vcd" predelay "0.5,0.8" +} +Rule DemomanMvMLootRare +{ + criteria ConceptMvMLootRare IsDemoman + Response DemomanMvMLootRare +} + +Response MedicMvMLootRare +{ + scene "scenes/player/medic/low/6739.vcd" predelay "0.5,0.8" + scene "scenes/player/medic/low/6740.vcd" predelay "0.5,0.8" +} +Rule MedicMvMLootRare +{ + criteria ConceptMvMLootRare IsMedic + Response MedicMvMLootRare +} + +Response SniperMvMLootRare +{ + scene "scenes/player/sniper/low/7217.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7218.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7219.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7220.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7221.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7222.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7223.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7224.vcd" predelay "0.5,0.8" +} +Rule SniperMvMLootRare +{ + criteria ConceptMvMLootRare IsSniper + Response SniperMvMLootRare +} + +Response SpyMvMLootRare +{ + scene "scenes/player/spy/low/7515.vcd" predelay "0.5,0.8" + scene "scenes/player/spy/low/7516.vcd" predelay "0.5,0.8" + scene "scenes/player/spy/low/8546.vcd" predelay "0.5,0.8" +} +Rule SpyMvMLootRare +{ + criteria ConceptMvMLootRare IsSpy + Response SpyMvMLootRare +} + +Response SoldierMvMLootRare +{ + scene "scenes/player/soldier/low/7332.vcd" predelay "0.5,0.8" + scene "scenes/player/soldier/low/7333.vcd" predelay "0.5,0.8" + scene "scenes/player/soldier/low/7334.vcd" predelay "0.5,0.8" + scene "scenes/player/soldier/low/7335.vcd" predelay "0.5,0.8" +} +Rule SoldierMvMLootRare +{ + criteria ConceptMvMLootRare IsSoldier + Response SoldierMvMLootRare +} + +Response ScoutMvMLootUltraRare +{ + scene "scenes/player/scout/low/6951.vcd" predelay "0.5,0.8" + scene "scenes/player/scout/low/8513.vcd" predelay "0.5,0.8" +} +Rule ScoutMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsScout + Response ScoutMvMLootUltraRare +} + +Response HeavyMvMLootUltraRare +{ + scene "scenes/player/heavy/low/6651.vcd" predelay "0.5,0.8" + scene "scenes/player/heavy/low/6654.vcd" predelay "0.5,0.8" + scene "scenes/player/heavy/low/8491.vcd" predelay "0.5,0.8" +} +Rule HeavyMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsHeavy + Response HeavyMvMLootUltraRare +} + +Response PyroMvMLootUltraRare +{ + scene "scenes/player/pyro/low/1483.vcd" predelay "0.5,0.8" +} +Rule PyroMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsPyro + Response PyroMvMLootUltraRare +} + +Response EngineerMvMLootUltraRare +{ + scene "scenes/player/engineer/low/7862.vcd" predelay "0.5,0.8" + scene "scenes/player/engineer/low/7863.vcd" predelay "0.5,0.8" + scene "scenes/player/engineer/low/8466.vcd" predelay "0.5,0.8" +} +Rule EngineerMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsEngineer + Response EngineerMvMLootUltraRare +} + +Response DemomanMvMLootUltraRare +{ + scene "scenes/player/demoman/low/7797.vcd" predelay "0.5,0.8" +} +Rule DemomanMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsDemoman + Response DemomanMvMLootUltraRare +} + +Response MedicMvMLootUltraRare +{ + scene "scenes/player/medic/low/6743.vcd" predelay "0.5,0.8" + scene "scenes/player/medic/low/6744.vcd" predelay "0.5,0.8" + scene "scenes/player/medic/low/8503.vcd" predelay "0.5,0.8" +} +Rule MedicMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsMedic + Response MedicMvMLootUltraRare +} + +Response SniperMvMLootUltraRare +{ + scene "scenes/player/sniper/low/7226.vcd" predelay "0.5,0.8" + scene "scenes/player/sniper/low/7228.vcd" predelay "0.5,0.8" +} +Rule SniperMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsSniper + Response SniperMvMLootUltraRare +} + +Response SpyMvMLootUltraRare +{ + scene "scenes/player/spy/low/7517.vcd" predelay "0.5,0.8" + scene "scenes/player/spy/low/7518.vcd" predelay "0.5,0.8" + scene "scenes/player/spy/low/7519.vcd" predelay "0.5,0.8" +} +Rule SpyMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsSpy + Response SpyMvMLootUltraRare +} + +Response SoldierMvMLootUltraRare +{ + scene "scenes/player/soldier/low/7336.vcd" predelay "0.5,0.8" + scene "scenes/player/soldier/low/7337.vcd" predelay "0.5,0.8" + scene "scenes/player/soldier/low/7340.vcd" predelay "0.5,0.8" +} +Rule SoldierMvMLootUltraRare +{ + criteria ConceptMvMLootUltraRare IsSoldier + Response SoldierMvMLootUltraRare +} + +//END OF TALE OF TWO CITIES AUTOGENERATED diff --git a/gamemodes/tf/gamemode/contents/talker/heavy.lua b/gamemodes/tf/gamemode/contents/talker/heavy.lua new file mode 100644 index 000000000..8b86ca026 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/heavy.lua @@ -0,0 +1,1882 @@ +//-------------------------------------------------------------------------------------------------------------- +// Heavy Response Rule File +//-------------------------------------------------------------------------------------------------------------- + +Criterion "HeavyIsKillSpeechObject" "HeavyKillSpeechObject" "1" "required" +Criterion "HeavyIsNotStillonFire" "HeavyOnFire" "!=1" "required" +Criterion "HeavyIsStillonFire" "HeavyOnFire" "1" "required" +Criterion "HeavyNotInvulnerableSpeech" "HeavyInvulnerableSpeech" "!=1" "required" +Criterion "HeavyNotKillSpeech" "HeavyKillSpeech" "!=1" "required" +Criterion "HeavyNotKillSpeechMelee" "HeavyKillSpeechMelee" "!=1" "required" +Criterion "HeavyNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "HeavyNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "HeavyNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "HeavyNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "HeavyNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "HeavyNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Criterion "HeavyNotSaidHealThanks" "HeavySaidHealThanks" "!=1" "required" +Criterion "IsHelpCapHeavy" "HeavyHelpCap" "1" "required" +// Custom stuff +Criterion "HeavyNotMedicSpeech" "HeavyMedicSpeech" "!=1" "required" +Criterion "HeavyNotAwardSpeech" "HeavyAwardSpeech" "!=1" "required" +Criterion "HeavyNotAssistSpeech" "HeavyAssistSpeech" "!=1" "required" +Criterion "IsHeavyFistsSwung" "HeavyFistsSwung" "1" "required" +Criterion "IsNotHeavyFistsSwung" "HeavyFistsSwung" "!=1" "required" +Criterion "IsHeavyFistsSwinging" "HeavyFistsSwinging" "1" "required" +Criterion "IsNotHeavyFistsSwinging" "HeavyFistsSwinging" "!=1" "required" +Criterion "NotGunTauntHeavy" "GunTauntHeavy" "!=1" "required" +Criterion "IsNotDaring" "IsDaring" "!=1" "required" +Criterion "HeavyNotKillSpeechObject" "HeavyKillSpeechObject" "!=1" "required" +Criterion "HeavyNotShinySpeech" "HeavyShinySpeech" "!=1" "required" +Criterion "HeavyNotFairyNoises" "HeavyFairyNoises" "!=1" "required" + + +Response PlayerCloakedSpyDemomanHeavy +{ + scene "scenes/Player/Heavy/low/225.vcd" +} +Rule PlayerCloakedSpyDemomanHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnDemoman + Response PlayerCloakedSpyDemomanHeavy +} + +Response PlayerCloakedSpyEngineerHeavy +{ + scene "scenes/Player/Heavy/low/228.vcd" +} +Rule PlayerCloakedSpyEngineerHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnEngineer + Response PlayerCloakedSpyEngineerHeavy +} + +Response PlayerCloakedSpyHeavyHeavy +{ + scene "scenes/Player/Heavy/low/223.vcd" +} +Rule PlayerCloakedSpyHeavyHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnHeavy + Response PlayerCloakedSpyHeavyHeavy +} + +Response PlayerCloakedSpyMedicHeavy +{ + scene "scenes/Player/Heavy/low/227.vcd" +} +Rule PlayerCloakedSpyMedicHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnMedic + Response PlayerCloakedSpyMedicHeavy +} + +Response PlayerCloakedSpyPyroHeavy +{ + scene "scenes/Player/Heavy/low/224.vcd" +} +Rule PlayerCloakedSpyPyroHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnPyro + Response PlayerCloakedSpyPyroHeavy +} + +Response PlayerCloakedSpyScoutHeavy +{ + scene "scenes/Player/Heavy/low/221.vcd" +} +Rule PlayerCloakedSpyScoutHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnScout + Response PlayerCloakedSpyScoutHeavy +} + +Response PlayerCloakedSpySniperHeavy +{ + scene "scenes/Player/Heavy/low/229.vcd" +} +Rule PlayerCloakedSpySniperHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnSniper + Response PlayerCloakedSpySniperHeavy +} + +Response PlayerCloakedSpySoldierHeavy +{ + scene "scenes/Player/Heavy/low/222.vcd" +} +Rule PlayerCloakedSpySoldierHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnSoldier + Response PlayerCloakedSpySoldierHeavy +} + +Response PlayerCloakedSpySpyHeavy +{ + scene "scenes/Player/Heavy/low/226.vcd" +} +Rule PlayerCloakedSpySpyHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy IsOnSpy + Response PlayerCloakedSpySpyHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +// Custom achievement stuff +Response AwardHeavy +{ + scene "scenes/Player/Heavy/low/1954.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1955.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1956.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2057.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2058.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2059.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2060.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2061.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2062.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2063.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2064.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2065.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2068.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2069.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2200.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2259.vcd" predelay "2.5" + +} +Rule AwardHeavy +{ + criteria ConceptAchievementAward IsHeavy HeavyNotAwardSpeech + ApplyContext "HeavyAwardSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response AwardHeavy +} +//End custom achievement + +Response HealThanksHeavy +{ + scene "scenes/Player/Heavy/low/344.vcd" + scene "scenes/Player/Heavy/low/345.vcd" + scene "scenes/Player/Heavy/low/346.vcd" +} +Rule HealThanksHeavy +{ + criteria ConceptMedicChargeStopped IsHeavy SuperHighHealthContext HeavyNotSaidHealThanks 50PercentChance + ApplyContext "HeavySaidHealThanks:1:20" + Response HealThanksHeavy +} + +Response PlayerRoundStartHeavy +{ + scene "scenes/Player/Heavy/low/205.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/206.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/207.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/208.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/209.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/210.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartHeavy +{ + criteria ConceptPlayerRoundStart IsHeavy + Response PlayerRoundStartHeavy +} + +Response PlayerCappedIntelligenceHeavy +{ + scene "scenes/Player/Heavy/low/196.vcd" + scene "scenes/Player/Heavy/low/197.vcd" + scene "scenes/Player/Heavy/low/198.vcd" +} +Rule PlayerCappedIntelligenceHeavy +{ + criteria ConceptPlayerCapturedIntelligence IsHeavy + Response PlayerCappedIntelligenceHeavy +} + +Response PlayerCapturedPointHeavy +{ + scene "scenes/Player/Heavy/low/193.vcd" + scene "scenes/Player/Heavy/low/194.vcd" + scene "scenes/Player/Heavy/low/195.vcd" +} +Rule PlayerCapturedPointHeavy +{ + criteria ConceptPlayerCapturedPoint IsHeavy + Response PlayerCapturedPointHeavy +} + +Response PlayerSuddenDeathHeavy +{ + scene "scenes/Player/Heavy/low/258.vcd" + scene "scenes/Player/Heavy/low/259.vcd" + scene "scenes/Player/Heavy/low/260.vcd" + scene "scenes/Player/Heavy/low/261.vcd" + scene "scenes/Player/Heavy/low/262.vcd" + scene "scenes/Player/Heavy/low/263.vcd" + scene "scenes/Player/Heavy/low/264.vcd" + scene "scenes/Player/Heavy/low/265.vcd" + scene "scenes/Player/Heavy/low/266.vcd" +} +Rule PlayerSuddenDeathHeavy +{ + criteria ConceptPlayerSuddenDeathStart IsHeavy + Response PlayerSuddenDeathHeavy +} + +Response PlayerStalemateHeavy +{ + scene "scenes/Player/Heavy/low/199.vcd" + scene "scenes/Player/Heavy/low/200.vcd" + scene "scenes/Player/Heavy/low/201.vcd" +} +Rule PlayerStalemateHeavy +{ + criteria ConceptPlayerStalemate IsHeavy + Response PlayerStalemateHeavy +} + +Response PlayerTeleporterThanksHeavy +{ + scene "scenes/Player/Heavy/low/347.vcd" + scene "scenes/Player/Heavy/low/348.vcd" + scene "scenes/Player/Heavy/low/349.vcd" +} +Rule PlayerTeleporterThanksHeavy +{ + criteria ConceptTeleported IsNotEngineer IsHeavy 30PercentChance + Response PlayerTeleporterThanksHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Response CartMovingBackwardsDefenseHeavy +{ + scene "scenes/Player/Heavy/low/1990.vcd" + scene "scenes/Player/Heavy/low/1991.vcd" + scene "scenes/Player/Heavy/low/1992.vcd" + scene "scenes/Player/Heavy/low/2070.vcd" + scene "scenes/Player/Heavy/low/2208.vcd" + scene "scenes/Player/Heavy/low/2209.vcd" + scene "scenes/Player/Heavy/low/2267.vcd" + scene "scenes/Player/Heavy/low/2268.vcd" +} +Rule CartMovingBackwardsDefenseHeavy +{ + criteria ConceptCartMovingBackward IsOnDefense IsHeavy 75PercentChance + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseHeavy +} + +Response CartMovingBackwardsOffenseHeavy +{ + scene "scenes/Player/Heavy/low/1987.vcd" + scene "scenes/Player/Heavy/low/1988.vcd" + scene "scenes/Player/Heavy/low/1989.vcd" + scene "scenes/Player/Heavy/low/2071.vcd" + scene "scenes/Player/Heavy/low/2072.vcd" + scene "scenes/Player/Heavy/low/2206.vcd" + scene "scenes/Player/Heavy/low/2207.vcd" +} +Rule CartMovingBackwardsOffenseHeavy +{ + criteria ConceptCartMovingBackward IsOnOffense IsHeavy 75PercentChance + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseHeavy +} + +Response CartMovingForwardDefenseHeavy +{ + scene "scenes/Player/Heavy/low/1984.vcd" + scene "scenes/Player/Heavy/low/1985.vcd" + scene "scenes/Player/Heavy/low/2269.vcd" + scene "scenes/Player/Heavy/low/1986.vcd" + scene "scenes/Player/Heavy/low/2073.vcd" + scene "scenes/Player/Heavy/low/2270.vcd" + scene "scenes/Player/Heavy/low/2263.vcd" +} +Rule CartMovingForwardDefenseHeavy +{ + criteria ConceptCartMovingForward IsOnDefense IsHeavy 75PercentChance + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseHeavy +} + +Response CartMovingForwardOffenseHeavy +{ + scene "scenes/Player/Heavy/low/1963.vcd" + scene "scenes/Player/Heavy/low/1964.vcd" + scene "scenes/Player/Heavy/low/1965.vcd" + scene "scenes/Player/Heavy/low/2179.vcd" + scene "scenes/Player/Heavy/low/2180.vcd" + scene "scenes/Player/Heavy/low/2181.vcd" + scene "scenes/Player/Heavy/low/2182.vcd" + scene "scenes/Player/Heavy/low/2183.vcd" + scene "scenes/Player/Heavy/low/2184.vcd" + scene "scenes/Player/Heavy/low/2271.vcd" + scene "scenes/Player/Heavy/low/2185.vcd" + scene "scenes/Player/Heavy/low/2186.vcd" + scene "scenes/Player/Heavy/low/2187.vcd" + scene "scenes/Player/Heavy/low/2188.vcd" + scene "scenes/Player/Heavy/low/2189.vcd" + scene "scenes/Player/Heavy/low/2190.vcd" + scene "scenes/Player/Heavy/low/2203.vcd" + scene "scenes/Player/Heavy/low/1957.vcd" + scene "scenes/Player/Heavy/low/1958.vcd" + scene "scenes/Player/Heavy/low/1959.vcd" + scene "scenes/Player/Heavy/low/2202.vcd" + scene "scenes/Player/Heavy/low/2201.vcd" + scene "scenes/Player/Heavy/low/2193.vcd" + scene "scenes/Player/Heavy/low/2066.vcd" + scene "scenes/Player/Heavy/low/2261.vcd" + scene "scenes/Player/Heavy/low/2260.vcd" + scene "scenes/Player/Heavy/low/2262.vcd" +} +Rule CartMovingForwardOffenseHeavy +{ + criteria ConceptCartMovingForward IsOnOffense IsHeavy 75PercentChance + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseHeavy +} + +Response CartMovingStoppedDefenseHeavy +{ + scene "scenes/Player/Heavy/low/1966.vcd" + scene "scenes/Player/Heavy/low/1967.vcd" + scene "scenes/Player/Heavy/low/1968.vcd" + scene "scenes/Player/Heavy/low/2191.vcd" +} +Rule CartMovingStoppedDefenseHeavy +{ + criteria ConceptCartMovingStopped IsOnDefense IsHeavy 75PercentChance + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseHeavy +} + +Response CartMovingStoppedOffenseHeavy +{ + scene "scenes/Player/Heavy/low/1960.vcd" + scene "scenes/Player/Heavy/low/1961.vcd" + scene "scenes/Player/Heavy/low/2192.vcd" + scene "scenes/Player/Heavy/low/1962.vcd" +} +Rule CartMovingStoppedOffenseHeavy +{ + criteria ConceptCartMovingStopped IsOnOffense IsHeavy 75PercentChance + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- + +// Minigun responses imported from tf.txt + +Response HeavyTimeFiringMinigunShort +{ + scene "scenes/player/heavy/low/attackminigun_vocal02.vcd" + scene "scenes/player/heavy/low/attackminigun_vocal03.vcd" +} +Rule HeavyTimeFiringMinigunShort +{ + criteria ConceptFireMinigunTalk IsHeavy WeaponIsMinigun TimeFiringMinigunShort 30PercentChance + Response HeavyTimeFiringMinigunShort +} + +Response HeavyTimeFiringMinigunLong +{ + //scene "scenes/player/heavy/low/specialcompleted11.vcd" This is a remnant from the beta files. + //scene "scenes/player/heavy/low/laughShort03.vcd" This is a remnant from the beta files. + scene "scenes/player/heavy/low/1279.vcd" + scene "scenes/player/heavy/low/1273.vcd" +} +Rule HeavyTimeFiringMinigunLong +{ + criteria ConceptFireMinigunTalk IsHeavy WeaponIsMinigun TimeFiringMinigunLong 50PercentChance + Response HeavyTimeFiringMinigunLong +} + +Response HeavyTimeFiringMinigunReallyLong +{ + scene "scenes/player/heavy/low/attackMinigun_vocal05.vcd" + //scene "scenes/player/heavy/low/specialcompleted07.vcd" This is a remnant from the beta files. + scene "scenes/player/heavy/low/318.vcd" + // Was that so hard VALVe? ;) +} +Rule HeavyTimeFiringMinigunReallyLong +{ + criteria ConceptFireMinigunTalk IsHeavy WeaponIsMinigun TimeFiringMinigunReallyLong 50PercentChance + Response HeavyTimeFiringMinigunReallyLong +} + +// End minigun responses imported from tf.txt + +Response DefendOnThePointHeavy +{ + scene "scenes/Player/Heavy/low/322.vcd" + scene "scenes/Player/Heavy/low/1277.vcd" +} +Rule DefendOnThePointHeavy +{ + criteria ConceptFireWeapon IsHeavy IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointHeavy +} + +Response InvulnerableSpeechHeavy +{ + scene "scenes/Player/Heavy/low/314.vcd" + scene "scenes/Player/Heavy/low/315.vcd" + scene "scenes/Player/Heavy/low/316.vcd" + scene "scenes/Player/Heavy/low/325.vcd" + scene "scenes/Player/Heavy/low/341.vcd" +} +Rule InvulnerableSpeechHeavy +{ + criteria ConceptFireMinigun IsHeavy WeaponIsMinigun IsInvulnerable + ApplyContext "HeavyInvulnerableSpeech:1:30" + Response InvulnerableSpeechHeavy +} + +// Custom stuff +Response KilledMedicHeavy +{ + scene "scenes/Player/Heavy/low/1982.vcd" + scene "scenes/Player/Heavy/low/1983.vcd" + scene "scenes/Player/Heavy/low/1993.vcd" + scene "scenes/Player/Heavy/low/1994.vcd" +} +Rule KilledMedicHeavy +{ + criteria ConceptKilledPlayer IsVictimMedic IsHeavy IsBeingHealed 50PercentChance KilledPlayerDelay HeavyNotMedicSpeech + ApplyContext "HeavyMedicSpeech:1:20" + ApplyContext "IsDominating:1:5" // Added the IsDominating context so this isn't interrupted. Heavy is going to be under fire a lot in this kind of situation. + Response KilledMedicHeavy +} + +Response KilledPlayerAssistAutoHeavy +{ + scene "scenes/Player/Heavy/low/320.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoHeavy +{ + criteria ConceptKilledPlayer IsHeavy IsBeingHealed IsManyRecentKills KilledPlayerDelay 20PercentChance HeavyNotAssistSpeech + ApplyContext "HeavyAssistSpeech:1:20" + Response KilledPlayerAssistAutoHeavy +} + +// End custom + +// Modified to include a new line +Response KilledPlayerManyHeavy +{ + scene "scenes/Player/Heavy/low/310.vcd" + scene "scenes/Player/Heavy/low/311.vcd" + scene "scenes/Player/Heavy/low/1279.vcd" + scene "scenes/Player/Heavy/low/326.vcd" + scene "scenes/Player/Heavy/low/327.vcd" + scene "scenes/player/heavy/low/335.vcd" +} +Rule KilledPlayerManyHeavy +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay HeavyNotKillSpeech IsHeavy + ApplyContext "HeavyKillSpeech:1:10" + Response KilledPlayerManyHeavy +} + +Response KilledPlayerMeleeHeavy +{ + scene "scenes/Player/Heavy/low/272.vcd" + scene "scenes/Player/Heavy/low/273.vcd" +} +Rule KilledPlayerMeleeHeavy +{ + criteria ConceptKilledPlayer 30PercentChance IsWeaponMelee IsHeavy + ApplyContext "HeavyKillSpeechMelee:1:10" + Response KilledPlayerMeleeHeavy +} + +// Custom stuff +// Fist of Steel kill +Response KilledPlayerMeleeMetalHeavy +{ + scene "scenes/Player/Heavy/low/1941.vcd" +} +Rule KilledPlayerMeleeMetalHeavy +{ + criteria ConceptKilledPlayer 30PercentChance WeaponIsMetalFists IsHeavy + ApplyContext "HeavyKillSpeechMelee:1:10" + Response KilledPlayerMeleeMetalHeavy + Response KilledPlayerMeleeHeavy +} + +// Iron Curtain/Brass Beast kill +Response KilledPlayerShinyHeavy +{ + scene "scenes/player/heavy/low/2210.vcd" predelay ".25" + scene "scenes/player/heavy/low/2198.vcd" predelay ".25" + scene "scenes/player/heavy/low/2204.vcd" predelay ".25" + scene "scenes/player/heavy/low/2199.vcd" predelay ".25" +} +Rule KilledPlayerShinyHeavy +{ + criterion ConceptKilledPlayer KilledPlayerDelay 20PercentChance IsManyRecentKills IsWeaponPrimary WeaponIsNotVanillaPrimary HeavyNotKillSpeech IsHeavy WeaponIsNotTaggedMinigun + ApplyContext "HeavyKillSpeech:1:90" + Response KilledPlayerShinyHeavy +} + +// Custom kill response against an Engineer. +Response KilledPlayerTauntHeavy +{ + scene "scenes/player/heavy/low/332.vcd" + scene "scenes/player/heavy/low/337.vcd" +} +Rule KilledPlayerTauntHeavy +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsHeavy IsVictimEngineer IsCrossHairEnemy HeavyNotKillSpeech + ApplyContext "HeavyKillSpeech:1:10" + Response KilledPlayerTauntHeavy +} + +// Swinging fists start +Response HeavySwingFistsStart +{ + scene "scenes/player/heavy/low/1980.vcd" +} +Rule HeavySwingFistsStart +{ + criteria ConceptFireWeapon IsWeaponMelee IsHeavy IsNotHeavyFistsSwung + ApplyContext "HeavyFistsSwung:1:10" + Response HeavySwingFistsStart +} + +Response HeavySwingFists +{ + scene "scenes/player/heavy/low/2272.vcd" + scene "scenes/player/heavy/low/2273.vcd" + scene "scenes/player/heavy/low/2274.vcd" + scene "scenes/player/heavy/low/1978.vcd" + scene "scenes/player/heavy/low/1979.vcd" +} +Rule HeavySwingFists +{ + criteria ConceptFireWeapon IsWeaponMelee IsHeavyFistsSwung IsHeavy + ApplyContext "HeavyFistsSwinging:2:3" + Response HeavySwingFists +} + +// End custom + +// Modified to include a new line +Response KilledPlayerVeryManyHeavy +{ + scene "scenes/Player/Heavy/low/318.vcd" + scene "scenes/Player/Heavy/low/319.vcd" + scene "scenes/Player/Heavy/low/323.vcd" + scene "scenes/Player/Heavy/low/338.vcd" + scene "scenes/Player/Heavy/low/340.vcd" + scene "scenes/player/heavy/low/333.vcd" +} +Rule KilledPlayerVeryManyHeavy +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay HeavyNotKillSpeech IsHeavy + ApplyContext "HeavyKillSpeech:1:10" + Response KilledPlayerVeryManyHeavy +} + +Response MedicFollowHeavy +{ + scene "scenes/Player/Heavy/low/1933.vcd" predelay ".25" + scene "scenes/Player/Heavy/low/1935.vcd" predelay ".25" + scene "scenes/Player/Heavy/low/1936.vcd" predelay ".25" + scene "scenes/Player/Heavy/low/1937.vcd" predelay ".25" + scene "scenes/Player/Heavy/low/1938.vcd" predelay ".25" + scene "scenes/Player/Heavy/low/1939.vcd" predelay ".25" + scene "scenes/Player/Heavy/low/2086.vcd" predelay ".25" +} +Rule MedicFollowHeavy +{ + criteria ConceptPlayerMedic IsOnMedic IsHeavy IsNotCrossHairEnemy NotLowHealth HeavyIsNotStillonFire + ApplyContext "HeavyKillSpeech:1:10" + Response MedicFollowHeavy +} + +Response HeavyJarateHit +{ + scene "scenes/Player/Heavy/low/1267.vcd" + scene "scenes/Player/Heavy/low/201.vcd" + scene "scenes/Player/Heavy/low/259.vcd" +} +Rule HeavyJarateHit +{ + criteria ConceptJarateHit IsHeavy 50PercentChance + Response HeavyJarateHit +} + +Response PlayerKilledCapperHeavy +{ + scene "scenes/Player/Heavy/low/1265.vcd" + scene "scenes/Player/Heavy/low/289.vcd" + scene "scenes/Player/Heavy/low/306.vcd" + scene "scenes/Player/Heavy/low/330.vcd" + scene "scenes/Player/Heavy/low/334.vcd" + scene "scenes/Player/Heavy/low/339.vcd" + scene "scenes/Player/Heavy/low/331.vcd" +} +Rule PlayerKilledCapperHeavy +{ + criteria ConceptCapBlocked IsHeavy + ApplyContext "HeavyKillSpeech:1:10" + Response PlayerKilledCapperHeavy +} + +Response PlayerKilledDominatingHeavy +{ + scene "scenes/Player/Heavy/low/1948.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1950.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2074.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2075.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2076.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2077.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2078.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2079.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2080.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2083.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2084.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2085.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2103.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2115.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2194.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2256.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/235.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/263.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/267.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/268.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/269.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1268.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1269.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1272.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/270.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/271.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2067.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2265.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2266.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/303.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/304.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/336.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavy +{ + criteria ConceptKilledPlayer IsHeavy IsDominated + ApplyContext "HeavyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavy +} + +Response PlayerKilledForRevengeHeavy +{ + scene "scenes/Player/Heavy/low/213.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/216.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/305.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1951.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1952.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/1953.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2100.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2101.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2102.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2104.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2105.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2108.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2109.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2110.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2111.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2112.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2113.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/2114.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeHeavy +{ + criteria ConceptKilledPlayer IsHeavy IsRevenge + ApplyContext "HeavyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeHeavy +} + +Response PlayerKilledObjectHeavy +{ + scene "scenes/Player/Heavy/low/2264.vcd" + scene "scenes/Player/Heavy/low/1262.vcd" + scene "scenes/Player/Heavy/low/312.vcd" + scene "scenes/Player/Heavy/low/313.vcd" +} +Rule PlayerKilledObjectHeavy +{ + criteria ConceptKilledObject IsHeavy 30PercentChance IsARecentKill HeavyNotKillSpeechObject + ApplyContext "HeavyKillSpeechObject:1:30" + Response PlayerKilledObjectHeavy +} + +// Custom stuff +Response PlayerKilledSentryHeavy +{ + scene "scenes/player/heavy/low/332.vcd" +} +Rule PlayerKilledSentryHeavy +{ + criteria ConceptKilledObject IsHeavy IsSentryGun 10PercentChance HeavyNotKillSpeechObject + ApplyContext "HeavyKillSpeechObject:1:30" + Response PlayerKilledSentryHeavy +} + +Response PlayerKilledDispenserHeavy +{ + scene "scenes/player/heavy/low/337.vcd" +} +Rule PlayerKilledDispenserHeavy +{ + criteria ConceptKilledObject IsHeavy IsDispenser 10PercentChance HeavyNotKillSpeechObject + ApplyContext "HeavyKillSpeechObject:1:30" + Response PlayerKilledDispenserHeavy +} +// End custom + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainHeavy +{ + scene "scenes/Player/Heavy/low/297.vcd" + scene "scenes/Player/Heavy/low/298.vcd" + scene "scenes/Player/Heavy/low/299.vcd" +} +Rule PlayerAttackerPainHeavy +{ + criteria ConceptAttackerPain IsHeavy + Response PlayerAttackerPainHeavy +} + +Response PlayerOnFireHeavy +{ + scene "scenes/Player/Heavy/low/202.vcd" + scene "scenes/Player/Heavy/low/203.vcd" + scene "scenes/Player/Heavy/low/1400.vcd" +} +Rule PlayerOnFireHeavy +{ + criteria ConceptFire IsHeavy HeavyIsNotStillonFire + ApplyContext "HeavyOnFire:1:7" + Response PlayerOnFireHeavy +} + +Response PlayerOnFireRareHeavy +{ + scene "scenes/Player/Heavy/low/204.vcd" + scene "scenes/Player/Heavy/low/1399.vcd" +} +Rule PlayerOnFireRareHeavy +{ + criteria ConceptFire IsHeavy 10PercentChance HeavyIsNotStillonFire + ApplyContext "HeavyOnFire:1:7" + Response PlayerOnFireRareHeavy +} + +Response PlayerPainHeavy +{ + scene "scenes/Player/Heavy/low/300.vcd" + scene "scenes/Player/Heavy/low/301.vcd" + scene "scenes/Player/Heavy/low/302.vcd" + scene "scenes/Player/Heavy/low/1390.vcd" + scene "scenes/Player/Heavy/low/1391.vcd" +} +Rule PlayerPainHeavy +{ + criteria ConceptPain IsHeavy + Response PlayerPainHeavy +} + +Response PlayerStillOnFireHeavy +{ + scene "scenes/Player/Heavy/low/1925.vcd" +} +Rule PlayerStillOnFireHeavy +{ + criteria ConceptFire IsHeavy HeavyIsStillonFire + ApplyContext "HeavyOnFire:1:7" + Response PlayerStillOnFireHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelHeavy +{ + scene "scenes/Player/Heavy/low/2058.vcd" + scene "scenes/Player/Heavy/low/2061.vcd" + scene "scenes/Player/Heavy/low/205.vcd" + scene "scenes/Player/Heavy/low/1950.vcd" + scene "scenes/Player/Heavy/low/2084.vcd" + scene "scenes/Player/Heavy/low/324.vcd" + scene "scenes/Player/Heavy/low/326.vcd" + scene "scenes/Player/Heavy/low/330.vcd" + scene "scenes/Player/Heavy/low/350.vcd" + scene "scenes/Player/Heavy/low/351.vcd" +} +Rule AcceptedDuelHeavy +{ + criteria ConceptIAcceptDuel IsHeavy + Response AcceptedDuelHeavy +} + +Response MeleeDareHeavy +{ + scene "scenes/Player/Heavy/low/1975.vcd" + scene "scenes/Player/Heavy/low/1977.vcd" + scene "scenes/Player/Heavy/low/2090.vcd" + scene "scenes/Player/Heavy/low/2091.vcd" + scene "scenes/Player/Heavy/low/2119.vcd" + scene "scenes/Player/Heavy/low/2205.vcd" + scene "scenes/Player/Heavy/low/2258.vcd" +} +Rule MeleeDareHeavy +{ + criteria ConceptRequestDuel IsHeavy + Response MeleeDareHeavy +} + +Response RejectedDuelHeavy +{ + scene "scenes/Player/Heavy/low/201.vcd" + scene "scenes/Player/Heavy/low/2074.vcd" + scene "scenes/Player/Heavy/low/2075.vcd" + scene "scenes/Player/Heavy/low/2076.vcd" + scene "scenes/Player/Heavy/low/2077.vcd" + scene "scenes/Player/Heavy/low/2081.vcd" + scene "scenes/Player/Heavy/low/2082.vcd" + scene "scenes/Player/Heavy/low/2103.vcd" + scene "scenes/Player/Heavy/low/258.vcd" + scene "scenes/Player/Heavy/low/327.vcd" +} +Rule RejectedDuelHeavy +{ + criteria ConceptDuelRejected IsHeavy + Response RejectedDuelHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoHeavy +{ + scene "scenes/Player/Heavy/low/231.vcd" + scene "scenes/Player/Heavy/low/232.vcd" + scene "scenes/Player/Heavy/low/233.vcd" +} +Rule PlayerGoHeavy +{ + criteria ConceptPlayerGo IsHeavy + Response PlayerGoHeavy +} + +Response PlayerHeadLeftHeavy +{ + scene "scenes/Player/Heavy/low/237.vcd" + scene "scenes/Player/Heavy/low/238.vcd" + scene "scenes/Player/Heavy/low/239.vcd" + scene "scenes/Player/Heavy/low/2276.vcd" +} +Rule PlayerHeadLeftHeavy +{ + criteria ConceptPlayerLeft IsHeavy + Response PlayerHeadLeftHeavy +} + +Response PlayerHeadRightHeavy +{ + scene "scenes/Player/Heavy/low/240.vcd" + scene "scenes/Player/Heavy/low/241.vcd" + scene "scenes/Player/Heavy/low/242.vcd" + scene "scenes/Player/Heavy/low/2275.vcd" +} +Rule PlayerHeadRightHeavy +{ + criteria ConceptPlayerRight IsHeavy + Response PlayerHeadRightHeavy +} + +Response PlayerHelpHeavy +{ + scene "scenes/Player/Heavy/low/243.vcd" + scene "scenes/Player/Heavy/low/244.vcd" + scene "scenes/Player/Heavy/low/245.vcd" +} +Rule PlayerHelpHeavy +{ + criteria ConceptPlayerHelp IsHeavy + Response PlayerHelpHeavy +} + +Response PlayerHelpCaptureHeavy +{ + scene "scenes/Player/Heavy/low/246.vcd" + scene "scenes/Player/Heavy/low/247.vcd" + scene "scenes/Player/Heavy/low/248.vcd" +} +Rule PlayerHelpCaptureHeavy +{ + criteria ConceptPlayerHelp IsHeavy IsOnCappableControlPoint + ApplyContext "HeavyHelpCap:1:10" + Response PlayerHelpCaptureHeavy +} + +Response PlayerHelpCapture2Heavy +{ + scene "scenes/Player/Heavy/low/321.vcd" + scene "scenes/Player/Heavy/low/322.vcd" + scene "scenes/Player/Heavy/low/1276.vcd" + scene "scenes/Player/Heavy/low/1277.vcd" +} +Rule PlayerHelpCapture2Heavy +{ + criteria ConceptPlayerHelp IsHeavy IsOnCappableControlPoint IsHelpCapHeavy + Response PlayerHelpCapture2Heavy +} + +// Custom stuff +// Response for when the Heavy is fighting on a cappable point +Response PlayerGetOnPointHeavy +{ + scene "scenes/Player/Heavy/low/1947.vcd" + scene "scenes/Player/Heavy/low/2195.vcd" + scene "scenes/Player/Heavy/low/2196.vcd" + scene "scenes/Player/Heavy/low/2197.vcd" +} + +Rule PlayerGetOnPointHeavy +{ + criterion ConceptFireWeapon IsHeavy IsOnCappableControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:15" + applycontexttoworld + Response PlayerGetOnPointHeavy +} +// End custom + +Response PlayerHelpDefendHeavy +{ + scene "scenes/Player/Heavy/low/249.vcd" + scene "scenes/Player/Heavy/low/250.vcd" + scene "scenes/Player/Heavy/low/251.vcd" +} +Rule PlayerHelpDefendHeavy +{ + criteria ConceptPlayerHelp IsHeavy IsOnFriendlyControlPoint + Response PlayerHelpDefendHeavy +} + +Response PlayerMedicHeavy +{ + scene "scenes/Player/Heavy/low/274.vcd" + scene "scenes/Player/Heavy/low/275.vcd" + scene "scenes/Player/Heavy/low/276.vcd" +} +Rule PlayerMedicHeavy +{ + criteria ConceptPlayerMedic IsHeavy + Response PlayerMedicHeavy +} + +Response PlayerAskForBallHeavy +{ +} +Rule PlayerAskForBallHeavy +{ + criteria ConceptPlayerAskForBall IsHeavy + Response PlayerAskForBallHeavy +} + +Response PlayerMoveUpHeavy +{ + scene "scenes/Player/Heavy/low/277.vcd" + scene "scenes/Player/Heavy/low/278.vcd" + scene "scenes/Player/Heavy/low/279.vcd" +} +Rule PlayerMoveUpHeavy +{ + criteria ConceptPlayerMoveUp IsHeavy + Response PlayerMoveUpHeavy +} + +Response PlayerNoHeavy +{ + scene "scenes/Player/Heavy/low/291.vcd" + scene "scenes/Player/Heavy/low/292.vcd" + scene "scenes/Player/Heavy/low/293.vcd" +} +Rule PlayerNoHeavy +{ + criteria ConceptPlayerNo IsHeavy + Response PlayerNoHeavy +} + +Response PlayerThanksHeavy +{ + scene "scenes/Player/Heavy/low/342.vcd" + scene "scenes/Player/Heavy/low/343.vcd" + scene "scenes/Player/Heavy/low/1278.vcd" +} +Rule PlayerThanksHeavy +{ + criteria ConceptPlayerThanks IsHeavy + Response PlayerThanksHeavy +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistHeavy +{ + scene "scenes/Player/Heavy/low/320.vcd" +} +Rule KilledPlayerAssistHeavy +{ + criteria ConceptPlayerThanks IsHeavy IsARecentKill KilledPlayerDelay HeavyNotAssistSpeech + ApplyContext "HeavyAssistSpeech:1:20" + Response KilledPlayerAssistHeavy +} +// End custom + +Response PlayerYesHeavy +{ + scene "scenes/Player/Heavy/low/350.vcd" + scene "scenes/Player/Heavy/low/351.vcd" + scene "scenes/Player/Heavy/low/352.vcd" +} +Rule PlayerYesHeavy +{ + criteria ConceptPlayerYes IsHeavy + Response PlayerYesHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeHeavy +{ + scene "scenes/Player/Heavy/low/190.vcd" + scene "scenes/Player/Heavy/low/191.vcd" + scene "scenes/Player/Heavy/low/192.vcd" + scene "scenes/Player/Heavy/low/1261.vcd" +} +Rule PlayerActivateChargeHeavy +{ + criteria ConceptPlayerActivateCharge IsHeavy + Response PlayerActivateChargeHeavy +} + +Response PlayerCloakedSpyHeavy +{ + scene "scenes/Player/Heavy/low/218.vcd" + scene "scenes/Player/Heavy/low/219.vcd" + scene "scenes/Player/Heavy/low/220.vcd" + scene "scenes/Player/Heavy/low/1264.vcd" +} +Rule PlayerCloakedSpyHeavy +{ + criteria ConceptPlayerCloakedSpy IsHeavy + Response PlayerCloakedSpyHeavy +} + +Response PlayerDispenserHereHeavy +{ + scene "scenes/Player/Heavy/low/280.vcd" +} +Rule PlayerDispenserHereHeavy +{ + criteria ConceptPlayerDispenserHere IsHeavy + Response PlayerDispenserHereHeavy +} + +Response PlayerIncomingHeavy +{ + scene "scenes/Player/Heavy/low/252.vcd" + scene "scenes/Player/Heavy/low/253.vcd" + scene "scenes/Player/Heavy/low/254.vcd" +} +Rule PlayerIncomingHeavy +{ + criteria ConceptPlayerIncoming IsHeavy + Response PlayerIncomingHeavy +} + +Response PlayerSentryAheadHeavy +{ + scene "scenes/Player/Heavy/low/308.vcd" + scene "scenes/Player/Heavy/low/309.vcd" +} +Rule PlayerSentryAheadHeavy +{ + criteria ConceptPlayerSentryAhead IsHeavy + Response PlayerSentryAheadHeavy +} + +Response PlayerSentryHereHeavy +{ + scene "scenes/Player/Heavy/low/281.vcd" +} +Rule PlayerSentryHereHeavy +{ + criteria ConceptPlayerSentryHere IsHeavy + Response PlayerSentryHereHeavy +} + +Response PlayerTeleporterHereHeavy +{ + scene "scenes/Player/Heavy/low/282.vcd" +} +Rule PlayerTeleporterHereHeavy +{ + criteria ConceptPlayerTeleporterHere IsHeavy + Response PlayerTeleporterHereHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCryHeavy +{ + scene "scenes/Player/Heavy/low/205.vcd" + scene "scenes/Player/Heavy/low/206.vcd" + scene "scenes/Player/Heavy/low/207.vcd" + scene "scenes/Player/Heavy/low/208.vcd" + scene "scenes/Player/Heavy/low/209.vcd" + scene "scenes/Player/Heavy/low/210.vcd" +} +Rule PlayerBattleCryHeavy +{ + criteria ConceptPlayerBattleCry IsHeavy + Response PlayerBattleCryHeavy +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatHeavy +{ + scene "scenes/Player/Heavy/low/1975.vcd" + scene "scenes/Player/Heavy/low/1976.vcd" + scene "scenes/Player/Heavy/low/1977.vcd" + scene "scenes/Player/Heavy/low/2087.vcd" + scene "scenes/Player/Heavy/low/2090.vcd" + scene "scenes/Player/Heavy/low/2091.vcd" + scene "scenes/Player/Heavy/low/2092.vcd" + scene "scenes/Player/Heavy/low/2093.vcd" + scene "scenes/Player/Heavy/low/2106.vcd" + scene "scenes/Player/Heavy/low/2107.vcd" + scene "scenes/Player/Heavy/low/2119.vcd" + scene "scenes/Player/Heavy/low/2205.vcd" + scene "scenes/Player/Heavy/low/2258.vcd" +} +Rule MeleeDareCombatHeavy +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsHeavy IsCrossHairEnemy + ApplyContext "IsDaring:1:5" + Response MeleeDareCombatHeavy +} + +Response PlayerShinyCryHeavy +{ + scene "scenes/Player/Heavy/low/1944.vcd" + scene "scenes/Player/Heavy/low/1940.vcd" + scene "scenes/Player/Heavy/low/1942.vcd" + scene "scenes/Player/Heavy/low/1943.vcd" + scene "scenes/player/heavy/low/2199.vcd" +} +Rule PlayerShinyCryHeavy +{ + criteria ConceptPlayerBattleCry 30PercentChance IsWeaponPrimary IsHeavy + Response PlayerShinyCryHeavy +} + +Rule PlayerShinyWindupHeavy +{ + criteria ConceptWindMinigun IsWeaponPrimary IsHeavy 5PercentChance + ApplyContext "HeavyShinySpeech:1:300" + Response PlayerShinyCryHeavy +} + +// Custom response battle cry against an Engineer. +Response PlayerTauntCryHeavy +{ + scene "scenes/player/heavy/low/332.vcd" + scene "scenes/player/heavy/low/337.vcd" +} +Rule PlayerTauntCryHeavy +{ + criteria ConceptPlayerBattleCry 75PercentChance IsHeavy IsOnEngineer + Response PlayerTauntCryHeavy +} + +// Custom response for taunt against non-Heavies +Response PlayerTauntGunHeavy +{ + scene "scenes/player/heavy/low/329.vcd" + scene "scenes/player/heavy/low/333.vcd" + scene "scenes/player/heavy/low/335.vcd" +} +Rule PlayerTauntGunHeavy +{ + criterion ConceptPlayerBattleCry 75PercentChance IsHeavy IsNotOnHeavy IsCrossHairEnemy NotGunTauntHeavy IsNotWeaponMelee + ApplyContext "GunTauntHeavy:1:10" + Response PlayerTauntGunHeavy +} +//End custom + +Response PlayerCheersHeavy +{ + scene "scenes/Player/Heavy/low/211.vcd" + scene "scenes/Player/Heavy/low/212.vcd" + scene "scenes/Player/Heavy/low/213.vcd" + scene "scenes/Player/Heavy/low/214.vcd" + scene "scenes/Player/Heavy/low/215.vcd" + scene "scenes/Player/Heavy/low/216.vcd" + scene "scenes/Player/Heavy/low/217.vcd" + scene "scenes/Player/Heavy/low/1263.vcd" +} +Rule PlayerCheersHeavy +{ + criteria ConceptPlayerCheers IsHeavy + Response PlayerCheersHeavy +} + +Response PlayerGoodJobHeavy +{ + scene "scenes/Player/Heavy/low/234.vcd" + scene "scenes/Player/Heavy/low/235.vcd" + scene "scenes/Player/Heavy/low/236.vcd" + scene "scenes/Player/Heavy/low/1265.vcd" +} +Rule PlayerGoodJobHeavy +{ + criteria ConceptPlayerGoodJob IsHeavy + Response PlayerGoodJobHeavy +} + +Response PlayerJeersHeavy +{ + scene "scenes/Player/Heavy/low/258.vcd" + scene "scenes/Player/Heavy/low/259.vcd" + scene "scenes/Player/Heavy/low/260.vcd" + scene "scenes/Player/Heavy/low/261.vcd" + scene "scenes/Player/Heavy/low/262.vcd" + scene "scenes/Player/Heavy/low/263.vcd" + scene "scenes/Player/Heavy/low/264.vcd" + scene "scenes/Player/Heavy/low/265.vcd" + scene "scenes/Player/Heavy/low/266.vcd" +} +Rule PlayerJeersHeavy +{ + criteria ConceptPlayerJeers IsHeavy + Response PlayerJeersHeavy +} + +Response PlayerLostPointHeavy +{ + scene "scenes/Player/Heavy/low/1267.vcd" + scene "scenes/Player/Heavy/low/283.vcd" + scene "scenes/Player/Heavy/low/284.vcd" + scene "scenes/Player/Heavy/low/285.vcd" + scene "scenes/Player/Heavy/low/286.vcd" + scene "scenes/Player/Heavy/low/287.vcd" +} +Rule PlayerLostPointHeavy +{ + criteria ConceptPlayerLostPoint IsHeavy + Response PlayerLostPointHeavy +} + +Response PlayerNegativeHeavy +{ + scene "scenes/Player/Heavy/low/1267.vcd" + scene "scenes/Player/Heavy/low/283.vcd" + scene "scenes/Player/Heavy/low/284.vcd" + scene "scenes/Player/Heavy/low/285.vcd" + scene "scenes/Player/Heavy/low/286.vcd" + scene "scenes/Player/Heavy/low/287.vcd" +} +Rule PlayerNegativeHeavy +{ + criteria ConceptPlayerNegative IsHeavy + Response PlayerNegativeHeavy +} + +Response PlayerNiceShotHeavy +{ + scene "scenes/Player/Heavy/low/288.vcd" + scene "scenes/Player/Heavy/low/289.vcd" + scene "scenes/Player/Heavy/low/290.vcd" +} +Rule PlayerNiceShotHeavy +{ + criteria ConceptPlayerNiceShot IsHeavy + Response PlayerNiceShotHeavy +} + +Response PlayerPositiveHeavy +{ + scene "scenes/Player/Heavy/low/303.vcd" + scene "scenes/Player/Heavy/low/304.vcd" + scene "scenes/Player/Heavy/low/305.vcd" + scene "scenes/Player/Heavy/low/306.vcd" + scene "scenes/Player/Heavy/low/307.vcd" +} + +Response PlayerTauntsHeavy +{ + scene "scenes/Player/Heavy/low/1270.vcd" + scene "scenes/Player/Heavy/low/1271.vcd" + scene "scenes/Player/Heavy/low/1274.vcd" + scene "scenes/Player/Heavy/low/1273.vcd" +} +Rule PlayerPositiveHeavy +{ + criteria ConceptPlayerPositive IsHeavy + Response PlayerPositiveHeavy + Response PlayerTauntsHeavy +} +// Modified to be an extension of the 'positive' voice command. + +//-------------------------------------------------------------------------------------------------------------- +// MvM Speech +//-------------------------------------------------------------------------------------------------------------- +Response MvMBombDroppedHeavy +{ + scene "scenes/Player/Heavy/low/4009.vcd" +} +Rule MvMBombDroppedHeavy +{ + criteria ConceptMvMBombDropped 5PercentChance IsMvMDefender IsHeavy + Response MvMBombDroppedHeavy +} + +Response MvMBombCarrierUpgrade1Heavy +{ + scene "scenes/Player/Heavy/low/4005.vcd" +} +Rule MvMBombCarrierUpgrade1Heavy +{ + criteria ConceptMvMBombCarrierUpgrade1 5PercentChance IsMvMDefender IsHeavy + Response MvMBombCarrierUpgrade1Heavy +} + +Response MvMBombCarrierUpgrade2Heavy +{ + scene "scenes/Player/Heavy/low/4006.vcd" +} +Rule MvMBombCarrierUpgrade2Heavy +{ + criteria ConceptMvMBombCarrierUpgrade2 5PercentChance IsMvMDefender IsHeavy + Response MvMBombCarrierUpgrade2Heavy +} + +Response MvMDefenderDiedEngineerHeavy +{ + scene "scenes/Player/Heavy/low/3962.vcd" +} +Rule MvMDefenderDiedEngineerHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimEngineer IsHeavy + Response MvMDefenderDiedEngineerHeavy +} + +Response MvMDefenderDiedSpyHeavy +{ + scene "scenes/Player/Heavy/low/3963.vcd" +} +Rule MvMDefenderDiedSpyHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSpy IsHeavy + Response MvMDefenderDiedSpyHeavy +} + +Response MvMDefenderDiedScoutHeavy +{ + scene "scenes/Player/Heavy/low/3964.vcd" +} +Rule MvMDefenderDiedScoutHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimScout IsHeavy + Response MvMDefenderDiedScoutHeavy +} + +Response MvMDefenderDiedHeavyHeavy +{ + scene "scenes/Player/Heavy/low/3965.vcd" +} +Rule MvMDefenderDiedHeavyHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimHeavy IsHeavy + Response MvMDefenderDiedHeavyHeavy +} + +Response MvMDefenderDiedDemomanHeavy +{ + scene "scenes/Player/Heavy/low/3966.vcd" +} +Rule MvMDefenderDiedDemomanHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimDemoman IsHeavy + Response MvMDefenderDiedDemomanHeavy +} + +Response MvMDefenderDiedSniperHeavy +{ + scene "scenes/Player/Heavy/low/3967.vcd" +} +Rule MvMDefenderDiedSniperHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSniper IsHeavy + Response MvMDefenderDiedSniperHeavy +} + +Response MvMDefenderDiedPyroHeavy +{ + scene "scenes/Player/Heavy/low/3968.vcd" +} +Rule MvMDefenderDiedPyroHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimPyro IsHeavy + Response MvMDefenderDiedPyroHeavy +} + +Response MvMDefenderDiedMedicHeavy +{ + scene "scenes/Player/Heavy/low/3969.vcd" +} +Rule MvMDefenderDiedMedicHeavy +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimMedic IsHeavy + Response MvMDefenderDiedMedicHeavy +} + +Response MvMFirstBombPickupHeavy +{ + scene "scenes/Player/Heavy/low/4004.vcd" +} +Rule MvMFirstBombPickupHeavy +{ + criteria ConceptMvMFirstBombPickup 5PercentChance IsMvMDefender IsHeavy + Response MvMFirstBombPickupHeavy +} + +Response MvMBombPickupHeavy +{ + scene "scenes/Player/Heavy/low/4003.vcd" + scene "scenes/Player/Heavy/low/4004.vcd" +} +Rule MvMBombPickupHeavy +{ + criteria ConceptMvMBombPickup 5PercentChance IsMvMDefender IsHeavy + Response MvMBombPickupHeavy +} + +Response MvMSniperCalloutHeavy +{ + scene "scenes/Player/Heavy/low/3972.vcd" +} +Rule MvMSniperCalloutHeavy +{ + criteria ConceptMvMSniperCallout 50PercentChance IsMvMDefender IsHeavy + Response MvMSniperCalloutHeavy +} + +Response MvMSentryBusterHeavy +{ + scene "scenes/Player/Heavy/low/4018.vcd" +} +Rule MvMSentryBusterHeavy +{ + criteria ConceptMvMSentryBuster 50PercentChance IsMvMDefender IsHeavy + Response MvMSentryBusterHeavy +} + +Response MvMSentryBusterDownHeavy +{ + scene "scenes/Player/Heavy/low/4019.vcd" +} +Rule MvMSentryBusterDownHeavy +{ + criteria ConceptMvMSentryBusterDown 20PercentChance IsMvMDefender IsHeavy + Response MvMSentryBusterDownHeavy +} + +Response MvMLastManStandingHeavy +{ + scene "scenes/Player/Heavy/low/3970.vcd" + scene "scenes/Player/Heavy/low/3971.vcd" +} +Rule MvMLastManStandingHeavy +{ + criteria ConceptMvMLastManStanding 20PercentChance IsMvMDefender IsHeavy + Response MvMLastManStandingHeavy +} + +Response MvMEncourageMoneyHeavy +{ + scene "scenes/Player/Heavy/low/3988.vcd" + scene "scenes/Player/Heavy/low/3989.vcd" + scene "scenes/Player/Heavy/low/3990.vcd" + scene "scenes/Player/Heavy/low/3991.vcd" +} +Rule MvMEncourageMoneyHeavy +{ + criteria ConceptMvMEncourageMoney 50PercentChance IsMvMDefender IsHeavy + Response MvMEncourageMoneyHeavy +} + +Response MvMEncourageUpgradeHeavy +{ + scene "scenes/Player/Heavy/low/4000.vcd" + scene "scenes/Player/Heavy/low/4001.vcd" + scene "scenes/Player/Heavy/low/4002.vcd" +} +Rule MvMEncourageUpgradeHeavy +{ + criteria ConceptMvMEncourageUpgrade 50PercentChance IsMvMDefender IsHeavy + Response MvMEncourageUpgradeHeavy +} + +Response MvMUpgradeCompleteHeavy +{ + scene "scenes/Player/Heavy/low/3992.vcd" + scene "scenes/Player/Heavy/low/3993.vcd" + scene "scenes/Player/Heavy/low/3994.vcd" + scene "scenes/Player/Heavy/low/3995.vcd" + scene "scenes/Player/Heavy/low/3996.vcd" + scene "scenes/Player/Heavy/low/3997.vcd" + +} +Rule MvMUpgradeCompleteHeavy +{ + criteria ConceptMvMUpgradeComplete 5PercentChance IsMvMDefender IsHeavy + Response MvMUpgradeCompleteHeavy +} + +Response MvMGiantCalloutHeavy +{ + scene "scenes/Player/Heavy/low/4020.vcd" +} +Rule MvMGiantCalloutHeavy +{ + criteria ConceptMvMGiantCallout 20PercentChance IsMvMDefender IsHeavy + Response MvMGiantCalloutHeavy +} + +Response MvMGiantHasBombHeavy +{ + scene "scenes/Player/Heavy/low/4024.vcd" +} +Rule MvMGiantHasBombHeavy +{ + criteria ConceptMvMGiantHasBomb 20PercentChance IsMvMDefender IsHeavy + Response MvMGiantHasBombHeavy +} + +Response MvMSappedRobotHeavy +{ + scene "scenes/Player/Heavy/low/3975.vcd" + scene "scenes/Player/Heavy/low/3976.vcd" +} +Rule MvMSappedRobotHeavy +{ + criteria ConceptMvMSappedRobot 50PercentChance IsMvMDefender IsHeavy + Response MvMSappedRobotHeavy +} + +Response MvMCloseCallHeavy +{ + scene "scenes/Player/Heavy/low/4007.vcd" + scene "scenes/Player/Heavy/low/4008.vcd" +} +Rule MvMCloseCallHeavy +{ + criteria ConceptMvMCloseCall 50PercentChance IsMvMDefender IsHeavy + Response MvMCloseCallHeavy +} + +Response MvMTankCalloutHeavy +{ + scene "scenes/Player/Heavy/low/4011.vcd" +} +Rule MvMTankCalloutHeavy +{ + criteria ConceptMvMTankCallout 50PercentChance IsMvMDefender IsHeavy + Response MvMTankCalloutHeavy +} + +Response MvMTankDeadHeavy +{ + scene "scenes/Player/Heavy/low/4017.vcd" +} +Rule MvMTankDeadHeavy +{ + criteria ConceptMvMTankDead 50PercentChance IsMvMDefender IsHeavy + Response MvMTankDeadHeavy +} + +Response MvMTankDeployingHeavy +{ + scene "scenes/Player/Heavy/low/4016.vcd" +} +Rule MvMTankDeployingHeavy +{ + criteria ConceptMvMTankDeploying 50PercentChance IsMvMDefender IsHeavy + Response MvMTankDeployingHeavy +} + +Response MvMAttackTheTankHeavy +{ + scene "scenes/Player/Heavy/low/4012.vcd" + scene "scenes/Player/Heavy/low/4013.vcd" +} +Rule MvMAttackTheTankHeavy +{ + criteria ConceptMvMAttackTheTank 50PercentChance IsMvMDefender IsHeavy + Response MvMAttackTheTankHeavy +} + +Response MvMTauntHeavy +{ + scene "scenes/Player/Heavy/low/3977.vcd" + scene "scenes/Player/Heavy/low/3978.vcd" +} +Rule MvMTauntHeavy +{ + criteria ConceptMvMTaunt 50PercentChance IsMvMDefender IsHeavy + Response MvMTauntHeavy +} + +Response MvMWaveWinHeavy +{ + scene "scenes/Player/Heavy/low/3949.vcd" + scene "scenes/Player/Heavy/low/3950.vcd" + scene "scenes/Player/Heavy/low/3951.vcd" + scene "scenes/Player/Heavy/low/3952.vcd" + scene "scenes/Player/Heavy/low/3953.vcd" +} +Rule MvMWaveWinHeavy +{ + criteria ConceptMvMWaveWin 50PercentChance IsMvMDefender IsHeavy + Response MvMWaveWinHeavy +} + +Response MvMGiantKilledHeavy +{ + scene "scenes/Player/Heavy/low/4023.vcd" +} +Rule MvMGiantKilledHeavy +{ + criteria ConceptMvMGiantKilled 50PercentChance IsMvMDefender IsHeavy + Response MvMGiantKilledHeavy +} + +Response MvMGiantKilledTeammateHeavy +{ + scene "scenes/Player/Heavy/low/4022.vcd" +} +Rule MvMGiantKilledTeammateHeavy +{ + criteria ConceptMvMGiantKilledTeammate 50PercentChance IsMvMDefender IsHeavy + Response MvMGiantKilledTeammateHeavy +} + +Response MvMDeployRageHeavy +{ + scene "scenes/Player/Heavy/low/3983.vcd" + scene "scenes/Player/Heavy/low/3985.vcd" + scene "scenes/Player/Heavy/low/3986.vcd" + scene "scenes/Player/Heavy/low/3987.vcd" +} +Rule MvMDeployRageHeavy +{ + criteria ConceptMvMDeployRage 50PercentChance IsMvMDefender IsHeavy + Response MvMDeployRageHeavy +} + +Response RocketDestroyedHeavy +{ + scene "scenes/Player/Heavy/low/3979.vcd" + scene "scenes/Player/Heavy/low/3980.vcd" + scene "scenes/Player/Heavy/low/3982.vcd" +} +Rule RocketDestroyedHeavy +{ + criteria ConceptRocketDestroyed 50PercentChance IsHeavy + Response RocketDestroyedHeavy +} + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompHeavy +{ + criteria ConceptPlayerRoundStartComp IsHeavy IsFirstRound IsNotComp6v6 40PercentChance + Response PlayerFirstRoundStartCompHeavy +} + +Response PlayerFirstRoundStartComp6sHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_6s_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamefirst_6s_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartComp6sHeavy +{ + criteria ConceptPlayerRoundStartComp IsHeavy IsFirstRound IsComp6v6 40PercentChance + Response PlayerFirstRoundStartComp6sHeavy +} + +Response PlayerWonPrevRoundCompHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamewonlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamewonlast_06.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompHeavy +{ + criteria ConceptPlayerRoundStartComp IsHeavy IsNotFirstRound PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompHeavy +} + +Response PlayerLostPrevRoundCompHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregamelostlast_10.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompHeavy +{ + criteria ConceptPlayerRoundStartComp IsHeavy IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompHeavy +} + +Response PlayerTiedPrevRoundCompHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregametie_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_pregametie_04.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompHeavy +{ + criteria ConceptPlayerRoundStartComp IsHeavy IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompHeavy +} + +Response PlayerGameWinCompHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_comp_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_comp_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_comp_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_rare_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_rare_02.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompHeavy +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsNotComp6v6 IsHeavy 40PercentChance + Response PlayerGameWinCompHeavy +} + +Response PlayerGameWinComp6sHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_comp_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_comp_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_comp_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_rare_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_rare_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Heavy/low/cm_heavy_gamewon_6s_01.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinComp6sHeavy +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsComp6v6 IsHeavy 40PercentChance + Response PlayerGameWinComp6sHeavy +} + +Response PlayerMatchWinCompHeavy +{ + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_04.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_05.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_06.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_07.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_08.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_09.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Heavy/low/cm_heavy_matchwon_10.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompHeavy +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsHeavy 40PercentChance + Response PlayerMatchWinCompHeavy +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/heavy_auto.lua b/gamemodes/tf/gamemode/contents/talker/heavy_auto.lua new file mode 100644 index 000000000..915734173 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/heavy_auto.lua @@ -0,0 +1,78 @@ +//-------------------------------------------------------------------------------------------------------------- +// Heavy Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + +Response item_birdhead_round_startHeavy +{ + scene "scenes/Player/Heavy/low/6700.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6699.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6703.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6702.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6705.vcd" predelay "1.0, 5.0" +} +Rule item_birdhead_round_startHeavy +{ + criteria ConceptPlayerRoundStart IsHeavy 100PercentChance IsHeavyBirdHead + Response item_birdhead_round_startHeavy +} + +Response item_birdhead_uberHeavy +{ + scene "scenes/Player/Heavy/low/6707.vcd" + scene "scenes/Player/Heavy/low/6708.vcd" + scene "scenes/Player/Heavy/low/6709.vcd" +} +Rule item_birdhead_uberHeavy +{ + criteria ConceptMedicChargeDeployed IsHeavy IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsHeavyBirdHead + Response item_birdhead_uberHeavy +} + +Response item_unicorn_uberHeavy +{ + scene "scenes/Player/Heavy/low/6695.vcd" + scene "scenes/Player/Heavy/low/6696.vcd" + scene "scenes/Player/Heavy/low/6698.vcd" +} +Rule item_unicorn_uberHeavy +{ + criteria ConceptMedicChargeDeployed IsHeavy IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsUnicornHead + Response item_unicorn_uberHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_round_startHeavy +{ + scene "scenes/Player/Heavy/low/6690.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6691.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6688.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/8497.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Heavy/low/6689.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startHeavy +{ + criteria ConceptPlayerRoundStart IsHeavy 100PercentChance IsUnicornHead + Response item_unicorn_round_startHeavy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_dominationHeavy +{ + scene "scenes/Player/Heavy/low/6693.vcd" predelay "2.5" + scene "scenes/Player/Heavy/low/6694.vcd" predelay "2.5" +} +Rule item_unicorn_dominationHeavy +{ + criteria ConceptKilledPlayer IsHeavy IsDominated 30PercentChance IsUnicornHead + ApplyContext "HeavyKillSpeech:1:10" + Response item_unicorn_dominationHeavy +} + diff --git a/gamemodes/tf/gamemode/contents/talker/medic.lua b/gamemodes/tf/gamemode/contents/talker/medic.lua new file mode 100644 index 000000000..7bb8eae41 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/medic.lua @@ -0,0 +1,1413 @@ +//-------------------------------------------------------------------------------------------------------------- +// Medic Response Rule File +//-------------------------------------------------------------------------------------------------------------- + + +Response MedicChargeReady +{ + scene "scenes/Player/Medic/low/528.vcd" + scene "scenes/Player/Medic/low/529.vcd" + scene "scenes/Player/Medic/low/530.vcd" +} +Rule MedicChargeReady +{ + criteria ConceptMedicChargeReady IsMedic + Response MedicChargeReady +} + +Response PlayerCloakedSpyDemomanMedic +{ + scene "scenes/Player/Medic/low/559.vcd" +} +Rule PlayerCloakedSpyDemomanMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnDemoman + Response PlayerCloakedSpyDemomanMedic +} + +Response PlayerCloakedSpyEngineerMedic +{ + scene "scenes/Player/Medic/low/562.vcd" +} +Rule PlayerCloakedSpyEngineerMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnEngineer + Response PlayerCloakedSpyEngineerMedic +} + +Response PlayerCloakedSpyHeavyMedic +{ + scene "scenes/Player/Medic/low/557.vcd" +} +Rule PlayerCloakedSpyHeavyMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnHeavy + Response PlayerCloakedSpyHeavyMedic +} + +Response PlayerCloakedSpyMedicMedic +{ + scene "scenes/Player/Medic/low/561.vcd" +} +Rule PlayerCloakedSpyMedicMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnMedic + Response PlayerCloakedSpyMedicMedic +} + +Response PlayerCloakedSpyPyroMedic +{ + scene "scenes/Player/Medic/low/558.vcd" +} +Rule PlayerCloakedSpyPyroMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnPyro + Response PlayerCloakedSpyPyroMedic +} + +Response PlayerCloakedSpyScoutMedic +{ + scene "scenes/Player/Medic/low/555.vcd" +} +Rule PlayerCloakedSpyScoutMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnScout + Response PlayerCloakedSpyScoutMedic +} + +Response PlayerCloakedSpySniperMedic +{ + scene "scenes/Player/Medic/low/563.vcd" +} +Rule PlayerCloakedSpySniperMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnSniper + Response PlayerCloakedSpySniperMedic +} + +Response PlayerCloakedSpySoldierMedic +{ + scene "scenes/Player/Medic/low/556.vcd" +} +Rule PlayerCloakedSpySoldierMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnSoldier + Response PlayerCloakedSpySoldierMedic +} + +Response PlayerCloakedSpySpyMedic +{ + scene "scenes/Player/Medic/low/560.vcd" +} +Rule PlayerCloakedSpySpyMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic IsOnSpy + Response PlayerCloakedSpySpyMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksMedic +{ + scene "scenes/Player/Medic/low/683.vcd" + scene "scenes/Player/Medic/low/684.vcd" +} +Rule HealThanksMedic +{ + criteria ConceptMedicChargeStopped IsMedic SuperHighHealthContext MedicNotSaidHealThanks 50PercentChance + ApplyContext "MedicSaidHealThanks:1:20" + Response HealThanksMedic +} + +Response PlayerRoundStartMedic +{ + scene "scenes/Player/Medic/low/537.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/539.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/540.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/541.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/542.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/543.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartMedic +{ + criteria ConceptPlayerRoundStart IsMedic + Response PlayerRoundStartMedic +} + +Response PlayerCappedIntelligenceMedic +{ + scene "scenes/Player/Medic/low/525.vcd" + scene "scenes/Player/Medic/low/526.vcd" + scene "scenes/Player/Medic/low/527.vcd" +} +Rule PlayerCappedIntelligenceMedic +{ + criteria ConceptPlayerCapturedIntelligence IsMedic + Response PlayerCappedIntelligenceMedic +} + +Response PlayerCapturedPointMedic +{ + scene "scenes/Player/Medic/low/522.vcd" + scene "scenes/Player/Medic/low/523.vcd" + scene "scenes/Player/Medic/low/524.vcd" +} +Rule PlayerCapturedPointMedic +{ + criteria ConceptPlayerCapturedPoint IsMedic + Response PlayerCapturedPointMedic +} + +Response PlayerSuddenDeathMedic +{ + scene "scenes/Player/Medic/low/592.vcd" + scene "scenes/Player/Medic/low/593.vcd" + scene "scenes/Player/Medic/low/594.vcd" + scene "scenes/Player/Medic/low/595.vcd" + scene "scenes/Player/Medic/low/596.vcd" + scene "scenes/Player/Medic/low/597.vcd" + scene "scenes/Player/Medic/low/598.vcd" + scene "scenes/Player/Medic/low/599.vcd" + scene "scenes/Player/Medic/low/600.vcd" + scene "scenes/Player/Medic/low/601.vcd" + scene "scenes/Player/Medic/low/603.vcd" + scene "scenes/Player/Medic/low/602.vcd" +} +Rule PlayerSuddenDeathMedic +{ + criteria ConceptPlayerSuddenDeathStart IsMedic + Response PlayerSuddenDeathMedic +} + +Response PlayerStalemateMedic +{ + scene "scenes/Player/Medic/low/531.vcd" + scene "scenes/Player/Medic/low/532.vcd" + scene "scenes/Player/Medic/low/533.vcd" + scene "scenes/Player/Medic/low/1222.vcd" + scene "scenes/Player/Medic/low/1223.vcd" + scene "scenes/Player/Medic/low/1224.vcd" + scene "scenes/Player/Medic/low/1225.vcd" +} +Rule PlayerStalemateMedic +{ + criteria ConceptPlayerStalemate IsMedic + Response PlayerStalemateMedic +} + +Response PlayerTeleporterThanksMedic +{ + scene "scenes/Player/Medic/low/688.vcd" + scene "scenes/Player/Medic/low/686.vcd" + scene "scenes/Player/Medic/low/687.vcd" +} +Rule PlayerTeleporterThanksMedic +{ + criteria ConceptTeleported IsNotEngineer IsMedic 30PercentChance + Response PlayerTeleporterThanksMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointMedic +{ + scene "scenes/Player/Medic/low/659.vcd" + scene "scenes/Player/Medic/low/660.vcd" + scene "scenes/Player/Medic/low/1237.vcd" + scene "scenes/Player/Medic/low/1238.vcd" + scene "scenes/Player/Medic/low/1239.vcd" +} +Rule DefendOnThePointMedic +{ + criteria ConceptFireWeapon IsMedic IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointMedic +} + +Response InvulnerableSpeechMedic +{ + scene "scenes/Player/Medic/low/648.vcd" + scene "scenes/Player/Medic/low/649.vcd" + scene "scenes/Player/Medic/low/650.vcd" +} +Rule InvulnerableSpeechMedic +{ + criteria ConceptMedicChargeDeployed IsMedic IsInvulnerable MedicNotInvulnerableSpeech + ApplyContext "MedicInvulnerableSpeech:1:30" + Response InvulnerableSpeechMedic +} + +Response MedicJarateHit +{ + scene "scenes/Player/Medic/low/622.vcd" + scene "scenes/Player/Medic/low/623.vcd" + scene "scenes/Player/Medic/low/1223.vcd" + scene "scenes/Player/Medic/low/1224.vcd" + scene "scenes/Player/Medic/low/1225.vcd" +} +Rule MedicJarateHit +{ + criteria ConceptJarateHit IsMedic 50PercentChance + Response MedicJarateHit +} + +// Custom stuff +Response InvulnerableSpeechCombatMedic +{ + scene "scenes/Player/Medic/low/646.vcd" + scene "scenes/Player/Medic/low/647.vcd" + scene "scenes/Player/Medic/low/653.vcd" +} +Rule InvulnerableSpeechCombatMedic +{ + criteria ConceptFireWeapon IsMedic IsInvulnerable WeaponIsNotMediGun + ApplyContext "MedicInvulnerableSpeech:1:30" + Response InvulnerableSpeechCombatMedic +} + +Response KritzSpeechMedic +{ + scene "scenes/Player/Medic/low/664.vcd" + scene "scenes/Player/Medic/low/676.vcd" +} +Rule KritzSpeechMedic +{ + criteria ConceptMedicChargeDeployed IsMedic WeaponIsNotVanillaSecondary WeaponIsNotTaggedMedigun + ApplyContext "MedicInvulnerableSpeech:1:30" + Response InvulnerableSpeechMedic + Response KritzSpeechMedic +} + +Response KilledPlayerAssistAutoMedic +{ + scene "scenes/Player/Medic/low/657.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/658.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoMedic +{ + criteria ConceptKilledPlayer IsMedic IsBeingHealed IsARecentKill KilledPlayerDelay 20PercentChance MedicNotAssistSpeech + ApplyContext "MedicAssistSpeech:1:20" + Response KilledPlayerAssistAutoMedic +} + +// End custom + +// Modified so that Medic says pretty much any of his killstreak or domination lines when he gets a kill +// Medic will rarely get kills let alone dominations himself so this is fine + +Response KilledPlayerManyMedic +{ + scene "scenes/Player/Medic/low/651.vcd" + scene "scenes/Player/Medic/low/663.vcd" +} +Rule KilledPlayerManyMedic +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance KilledPlayerDelay MedicNotKillSpeech IsMedic + ApplyContext "MedicKillSpeech:1:10" + Response KilledPlayerManyMedic +} +Response KilledPlayerVeryManyMedic +{ + scene "scenes/Player/Medic/low/646.vcd" + scene "scenes/Player/Medic/low/655.vcd" + scene "scenes/Player/Medic/low/656.vcd" + scene "scenes/Player/Medic/low/652.vcd" +} +Rule KilledPlayerVeryManyMedic +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance KilledPlayerDelay MedicNotKillSpeech IsMedic + ApplyContext "MedicKillSpeech:1:10" + Response KilledPlayerVeryManyMedic +} + +Response PlayerKilledDominatingMedic +{ + scene "scenes/Player/Medic/low/1227.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/1232.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/605.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/606.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/1229.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/607.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/608.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/1230.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/679.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/1240.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedic +{ + criteria ConceptKilledPlayer IsMedic IsDominated + ApplyContext "MedicKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedic +} + + +Response KilledPlayerMedic +{ + scene "scenes/Player/Medic/low/645.vcd" +} +Rule KilledPlayerMedic +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance MedicNotKillSpeech MedicNotKillSpeechMelee IsMedic + ApplyContext "MedicKillSpeechMelee:1:10" + Response InvulnerableSpeechCombatMedic + Response KilledPlayerMedic + Response KilledPlayerManyMedic + Response KilledPlayerVeryManyMedic + Response PlayerKilledDominatingMedic +} + +// Done + +Response PlayerKilledCapperMedic +{ + scene "scenes/Player/Medic/low/1222.vcd" + scene "scenes/Player/Medic/low/545.vcd" + scene "scenes/Player/Medic/low/551.vcd" + scene "scenes/Player/Medic/low/552.vcd" + scene "scenes/Player/Medic/low/641.vcd" + scene "scenes/Player/Medic/low/674.vcd" +} +Rule PlayerKilledCapperMedic +{ + criteria ConceptCapBlocked IsMedic + ApplyContext "MedicKillSpeech:1:10" + Response PlayerKilledCapperMedic +} + +Response PlayerKilledForRevengeMedic +{ + scene "scenes/Player/Medic/low/569.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/620.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/1233.vcd" predelay "2.5" + scene "scenes/Player/Medic/low/1234.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeMedic +{ + criteria ConceptKilledPlayer IsMedic IsRevenge + ApplyContext "MedicKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeMedic +} + +Response PlayerKilledObjectMedic +{ + scene "scenes/Player/Medic/low/653.vcd" + scene "scenes/Player/Medic/low/654.vcd" +} +Rule PlayerKilledObjectMedic +{ + criteria ConceptKilledObject IsMedic 30PercentChance IsARecentKill + ApplyContext "MedicKillSpeechObject:1:30" + Response PlayerKilledObjectMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainMedic +{ + scene "scenes/Player/Medic/low/633.vcd" + scene "scenes/Player/Medic/low/634.vcd" + scene "scenes/Player/Medic/low/635.vcd" + scene "scenes/Player/Medic/low/1243.vcd" +} +Rule PlayerAttackerPainMedic +{ + criteria ConceptAttackerPain IsMedic + Response PlayerAttackerPainMedic +} + +Response PlayerOnFireMedic +{ + scene "scenes/Player/Medic/low/534.vcd" + scene "scenes/Player/Medic/low/535.vcd" + scene "scenes/Player/Medic/low/536.vcd" +} +Rule PlayerOnFireMedic +{ + criteria ConceptFire IsMedic MedicIsNotStillonFire + ApplyContext "MedicOnFire:1:7" + Response PlayerOnFireMedic +} + +Response PlayerOnFireRareMedic +{ + scene "scenes/Player/Medic/low/1401.vcd" + scene "scenes/Player/Medic/low/1402.vcd" +} +Rule PlayerOnFireRareMedic +{ + criteria ConceptFire IsMedic 10PercentChance MedicIsNotStillonFire + ApplyContext "MedicOnFire:1:7" + Response PlayerOnFireRareMedic +} + +Response PlayerPainMedic +{ + scene "scenes/Player/Medic/low/636.vcd" + scene "scenes/Player/Medic/low/637.vcd" + scene "scenes/Player/Medic/low/638.vcd" + scene "scenes/Player/Medic/low/1244.vcd" + scene "scenes/Player/Medic/low/1245.vcd" + scene "scenes/Player/Medic/low/1246.vcd" + scene "scenes/Player/Medic/low/1247.vcd" + scene "scenes/Player/Medic/low/1248.vcd" +} +Rule PlayerPainMedic +{ + criteria ConceptPain IsMedic + Response PlayerPainMedic +} + +Response PlayerStillOnFireMedic +{ + scene "scenes/Player/Medic/low/1924.vcd" +} +Rule PlayerStillOnFireMedic +{ + criteria ConceptFire IsMedic MedicIsStillonFire + ApplyContext "MedicOnFire:1:7" + Response PlayerStillOnFireMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelMedic +{ + scene "scenes/Player/Medic/low/541.vcd" + scene "scenes/Player/Medic/low/640.vcd" + scene "scenes/Player/Medic/low/689.vcd" + scene "scenes/Player/Medic/low/690.vcd" +} +Rule AcceptedDuelMedic +{ + criteria ConceptIAcceptDuel IsMedic + Response AcceptedDuelMedic +} + +Response MeleeDareMedic +{ + scene "scenes/Player/Medic/low/524.vcd" + scene "scenes/Player/Medic/low/597.vcd" + scene "scenes/Player/Medic/low/672.vcd" + scene "scenes/Player/Medic/low/677.vcd" +} +Rule MeleeDareMedic +{ + criteria ConceptRequestDuel IsMedic + Response MeleeDareMedic +} + +Response RejectedDuelMedic +{ + scene "scenes/Player/Medic/low/531.vcd" + scene "scenes/Player/Medic/low/1222.vcd" + scene "scenes/Player/Medic/low/1225.vcd" + scene "scenes/Player/Medic/low/596.vcd" + scene "scenes/Player/Medic/low/678.vcd" +} +Rule RejectedDuelMedic +{ + criteria ConceptDuelRejected IsMedic + Response RejectedDuelMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoMedic +{ + scene "scenes/Player/Medic/low/565.vcd" + scene "scenes/Player/Medic/low/566.vcd" + scene "scenes/Player/Medic/low/567.vcd" + scene "scenes/Player/Medic/low/1226.vcd" + scene "scenes/Player/Medic/low/1596.vcd" // this doesnt exist +} +Rule PlayerGoMedic +{ + criteria ConceptPlayerGo IsMedic + Response PlayerGoMedic +} + +Response PlayerHeadLeftMedic +{ + scene "scenes/Player/Medic/low/571.vcd" + scene "scenes/Player/Medic/low/572.vcd" + scene "scenes/Player/Medic/low/573.vcd" +} +Rule PlayerHeadLeftMedic +{ + criteria ConceptPlayerLeft IsMedic + Response PlayerHeadLeftMedic +} + +Response PlayerHeadRightMedic +{ + scene "scenes/Player/Medic/low/574.vcd" + scene "scenes/Player/Medic/low/575.vcd" + scene "scenes/Player/Medic/low/576.vcd" +} +Rule PlayerHeadRightMedic +{ + criteria ConceptPlayerRight IsMedic + Response PlayerHeadRightMedic +} + +Response PlayerHelpMedic +{ + scene "scenes/Player/Medic/low/577.vcd" + scene "scenes/Player/Medic/low/578.vcd" + scene "scenes/Player/Medic/low/579.vcd" +} +Rule PlayerHelpMedic +{ + criteria ConceptPlayerHelp IsMedic + Response PlayerHelpMedic +} + +Response PlayerHelpCaptureMedic +{ + scene "scenes/Player/Medic/low/580.vcd" + scene "scenes/Player/Medic/low/581.vcd" +} +Rule PlayerHelpCaptureMedic +{ + criteria ConceptPlayerHelp IsMedic IsOnCappableControlPoint + ApplyContext "MedicHelpCap:1:10" + Response PlayerHelpCaptureMedic +} + +Response PlayerHelpCapture2Medic +{ + scene "scenes/Player/Medic/low/659.vcd" + scene "scenes/Player/Medic/low/660.vcd" + scene "scenes/Player/Medic/low/1237.vcd" + scene "scenes/Player/Medic/low/1238.vcd" + scene "scenes/Player/Medic/low/1239.vcd" +} +Rule PlayerHelpCapture2Medic +{ + criteria ConceptPlayerHelp IsMedic IsOnCappableControlPoint IsHelpCapMedic + Response PlayerHelpCapture2Medic +} + +Response PlayerHelpDefendMedic +{ + scene "scenes/Player/Medic/low/583.vcd" + scene "scenes/Player/Medic/low/584.vcd" + scene "scenes/Player/Medic/low/585.vcd" +} +Rule PlayerHelpDefendMedic +{ + criteria ConceptPlayerHelp IsMedic IsOnFriendlyControlPoint + Response PlayerHelpDefendMedic +} + +Response PlayerMedicMedic +{ + scene "scenes/Player/Medic/low/611.vcd" + scene "scenes/Player/Medic/low/612.vcd" + scene "scenes/Player/Medic/low/613.vcd" +} +Rule PlayerMedicMedic +{ + criteria ConceptPlayerMedic IsMedic + Response PlayerMedicMedic +} + +Response PlayerAskForBallMedic +{ +} +Rule PlayerAskForBallMedic +{ + criteria ConceptPlayerAskForBall IsMedic + Response PlayerAskForBallMedic +} + +Response PlayerMoveUpMedic +{ + scene "scenes/Player/Medic/low/614.vcd" + scene "scenes/Player/Medic/low/615.vcd" +} +Rule PlayerMoveUpMedic +{ + criteria ConceptPlayerMoveUp IsMedic + Response PlayerMoveUpMedic +} + +Response PlayerNoMedic +{ + scene "scenes/Player/Medic/low/627.vcd" + scene "scenes/Player/Medic/low/628.vcd" + scene "scenes/Player/Medic/low/629.vcd" +} +Rule PlayerNoMedic +{ + criteria ConceptPlayerNo IsMedic + Response PlayerNoMedic +} + +Response PlayerThanksMedic +{ + scene "scenes/Player/Medic/low/681.vcd" + scene "scenes/Player/Medic/low/682.vcd" +} +Rule PlayerThanksMedic +{ + criteria ConceptPlayerThanks IsMedic + Response PlayerThanksMedic +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistMedic +{ + scene "scenes/Player/Medic/low/657.vcd" + scene "scenes/Player/Medic/low/658.vcd" +} +Rule KilledPlayerAssistMedic +{ + criteria ConceptPlayerThanks IsMedic IsARecentKill KilledPlayerDelay MedicNotAssistSpeech + ApplyContext "MedicAssistSpeech:1:20" + Response KilledPlayerAssistMedic +} +// End custom + +Response PlayerYesMedic +{ + scene "scenes/Player/Medic/low/689.vcd" + scene "scenes/Player/Medic/low/690.vcd" + scene "scenes/Player/Medic/low/691.vcd" +} +Rule PlayerYesMedic +{ + criteria ConceptPlayerYes IsMedic + Response PlayerYesMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeMedic +{ + scene "scenes/Player/Medic/low/519.vcd" + scene "scenes/Player/Medic/low/520.vcd" + scene "scenes/Player/Medic/low/521.vcd" +} +Rule PlayerActivateChargeMedic +{ + criteria ConceptPlayerActivateCharge IsMedic + Response PlayerActivateChargeMedic +} + +Response PlayerChargeReadyMedic +{ + scene "scenes/Player/Medic/low/528.vcd" + scene "scenes/Player/Medic/low/529.vcd" + scene "scenes/Player/Medic/low/530.vcd" +} +Rule PlayerChargeReadyMedic +{ + criteria ConceptPlayerChargeReady IsMedic + Response PlayerChargeReadyMedic +} + +Response PlayerCloakedSpyMedic +{ + scene "scenes/Player/Medic/low/553.vcd" + scene "scenes/Player/Medic/low/554.vcd" +} +Rule PlayerCloakedSpyMedic +{ + criteria ConceptPlayerCloakedSpy IsMedic + Response PlayerCloakedSpyMedic +} + +Response PlayerDispenserHereMedic +{ + scene "scenes/Player/Medic/low/616.vcd" +} +Rule PlayerDispenserHereMedic +{ + criteria ConceptPlayerDispenserHere IsMedic + Response PlayerDispenserHereMedic +} + +Response PlayerIncomingMedic +{ + scene "scenes/Player/Medic/low/586.vcd" + scene "scenes/Player/Medic/low/587.vcd" + scene "scenes/Player/Medic/low/588.vcd" +} +Rule PlayerIncomingMedic +{ + criteria ConceptPlayerIncoming IsMedic + Response PlayerIncomingMedic +} + +Response PlayerSentryAheadMedic +{ + scene "scenes/Player/Medic/low/643.vcd" + scene "scenes/Player/Medic/low/644.vcd" +} +Rule PlayerSentryAheadMedic +{ + criteria ConceptPlayerSentryAhead IsMedic + Response PlayerSentryAheadMedic +} + +Response PlayerSentryHereMedic +{ + scene "scenes/Player/Medic/low/617.vcd" +} +Rule PlayerSentryHereMedic +{ + criteria ConceptPlayerSentryHere IsMedic + Response PlayerSentryHereMedic +} + +Response PlayerTeleporterHereMedic +{ + scene "scenes/Player/Medic/low/618.vcd" +} +Rule PlayerTeleporterHereMedic +{ + criteria ConceptPlayerTeleporterHere IsMedic + Response PlayerTeleporterHereMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCryMedic +{ + scene "scenes/Player/Medic/low/537.vcd" + scene "scenes/Player/Medic/low/539.vcd" + scene "scenes/Player/Medic/low/540.vcd" + scene "scenes/Player/Medic/low/541.vcd" + scene "scenes/Player/Medic/low/542.vcd" + scene "scenes/Player/Medic/low/543.vcd" +} +Rule PlayerBattleCryMedic +{ + criteria ConceptPlayerBattleCry IsMedic + Response PlayerBattleCryMedic +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatMedic +{ + scene "scenes/Player/Medic/low/661.vcd" + scene "scenes/Player/Medic/low/669.vcd" + scene "scenes/Player/Medic/low/672.vcd" + scene "scenes/Player/Medic/low/667.vcd" + scene "scenes/Player/Medic/low/677.vcd" + scene "scenes/Player/Medic/low/680.vcd" + scene "scenes/Player/Medic/low/1241.vcd" + scene "scenes/Player/Medic/low/679.vcd" +} +Rule MeleeDareCombatMedic +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsMedic IsCrossHairEnemy + Response MeleeDareCombatMedic +} +//End custom + +Response PlayerCheersMedic +{ + scene "scenes/Player/Medic/low/544.vcd" + scene "scenes/Player/Medic/low/545.vcd" + scene "scenes/Player/Medic/low/548.vcd" + scene "scenes/Player/Medic/low/550.vcd" + scene "scenes/Player/Medic/low/551.vcd" + scene "scenes/Player/Medic/low/552.vcd" +} +Rule PlayerCheersMedic +{ + criteria ConceptPlayerCheers IsMedic + Response PlayerCheersMedic +} + +Response PlayerGoodJobMedic +{ + scene "scenes/Player/Medic/low/568.vcd" + scene "scenes/Player/Medic/low/569.vcd" + scene "scenes/Player/Medic/low/570.vcd" +} +Rule PlayerGoodJobMedic +{ + criteria ConceptPlayerGoodJob IsMedic + Response PlayerGoodJobMedic +} + +Response PlayerJeersMedic +{ + scene "scenes/Player/Medic/low/592.vcd" + scene "scenes/Player/Medic/low/593.vcd" + scene "scenes/Player/Medic/low/594.vcd" + scene "scenes/Player/Medic/low/595.vcd" + scene "scenes/Player/Medic/low/596.vcd" + scene "scenes/Player/Medic/low/597.vcd" + scene "scenes/Player/Medic/low/598.vcd" + scene "scenes/Player/Medic/low/599.vcd" + scene "scenes/Player/Medic/low/600.vcd" + scene "scenes/Player/Medic/low/601.vcd" + scene "scenes/Player/Medic/low/603.vcd" + scene "scenes/Player/Medic/low/602.vcd" +} +Rule PlayerJeersMedic +{ + criteria ConceptPlayerJeers IsMedic + Response PlayerJeersMedic +} + +Response PlayerLostPointMedic +{ + scene "scenes/Player/Medic/low/619.vcd" + scene "scenes/Player/Medic/low/620.vcd" + scene "scenes/Player/Medic/low/621.vcd" + scene "scenes/Player/Medic/low/622.vcd" + scene "scenes/Player/Medic/low/623.vcd" + scene "scenes/Player/Medic/low/1233.vcd" + scene "scenes/Player/Medic/low/1234.vcd" +} +Rule PlayerLostPointMedic +{ + criteria ConceptPlayerLostPoint IsMedic + Response PlayerLostPointMedic +} + +Response PlayerNegativeMedic +{ + scene "scenes/Player/Medic/low/619.vcd" + scene "scenes/Player/Medic/low/620.vcd" + scene "scenes/Player/Medic/low/621.vcd" + scene "scenes/Player/Medic/low/622.vcd" + scene "scenes/Player/Medic/low/623.vcd" + scene "scenes/Player/Medic/low/1233.vcd" + scene "scenes/Player/Medic/low/1234.vcd" +} +Rule PlayerNegativeMedic +{ + criteria ConceptPlayerNegative IsMedic + Response PlayerNegativeMedic +} + +Response PlayerNiceShotMedic +{ + scene "scenes/Player/Medic/low/624.vcd" + scene "scenes/Player/Medic/low/625.vcd" +} +Rule PlayerNiceShotMedic +{ + criteria ConceptPlayerNiceShot IsMedic + Response PlayerNiceShotMedic +} + +Response PlayerPositiveMedic +{ + scene "scenes/Player/Medic/low/639.vcd" + scene "scenes/Player/Medic/low/640.vcd" + scene "scenes/Player/Medic/low/641.vcd" + scene "scenes/Player/Medic/low/1235.vcd" + scene "scenes/Player/Medic/low/1236.vcd" +} + +Response PlayerTauntsMedic +{ + scene "scenes/Player/Medic/low/604.vcd" + scene "scenes/Player/Medic/low/1228.vcd" + scene "scenes/Player/Medic/low/1231.vcd" + scene "scenes/Player/Medic/low/609.vcd" + scene "scenes/Player/Medic/low/610.vcd" +} +Rule PlayerPositiveMedic +{ + criteria ConceptPlayerPositive IsMedic + Response PlayerPositiveMedic + Response PlayerTauntsMedic +} + +//-------------------------------------------------------------------------------------------------------------- +// MvM Speech +//-------------------------------------------------------------------------------------------------------------- +Response MvMBombDroppedMedic +{ + scene "scenes/Player/Medic/low/4205.vcd" + scene "scenes/Player/Medic/low/4204.vcd" +} +Rule MvMBombDroppedMedic +{ + criteria ConceptMvMBombDropped 5PercentChance IsMvMDefender IsMedic + Response MvMBombDroppedMedic +} + +Response MvMBombCarrierUpgrade1Medic +{ + scene "scenes/Player/Medic/low/4200.vcd" +} +Rule MvMBombCarrierUpgrade1Medic +{ + criteria ConceptMvMBombCarrierUpgrade1 5PercentChance IsMvMDefender IsMedic + Response MvMBombCarrierUpgrade1Medic +} + +Response MvMBombCarrierUpgrade2Medic +{ + scene "scenes/Player/Medic/low/4201.vcd" +} +Rule MvMBombCarrierUpgrade2Medic +{ + criteria ConceptMvMBombCarrierUpgrade2 5PercentChance IsMvMDefender IsMedic + Response MvMBombCarrierUpgrade2Medic +} + +Response MvMBombCarrierUpgrade3Medic +{ + scene "scenes/Player/Medic/low/4202.vcd" +} +Rule MvMBombCarrierUpgrade3Medic +{ + criteria ConceptMvMBombCarrierUpgrade3 5PercentChance IsMvMDefender IsMedic + Response MvMBombCarrierUpgrade3Medic +} + +Response MvMDefenderDiedScoutMedic +{ + scene "scenes/Player/Medic/low/4173.vcd" +} +Rule MvMDefenderDiedScoutMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimScout IsMedic + Response MvMDefenderDiedScoutMedic +} + +Response MvMDefenderDiedSpyMedic +{ + scene "scenes/Player/Medic/low/4174.vcd" +} +Rule MvMDefenderDiedSpyMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSpy IsMedic + Response MvMDefenderDiedSpyMedic +} + +Response MvMDefenderDiedHeavyMedic +{ + scene "scenes/Player/Medic/low/4175.vcd" +} +Rule MvMDefenderDiedHeavyMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimHeavy IsMedic + Response MvMDefenderDiedHeavyMedic +} + +Response MvMDefenderDiedSoldierMedic +{ + scene "scenes/Player/Medic/low/4176.vcd" +} +Rule MvMDefenderDiedSoldierMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSoldier IsMedic + Response MvMDefenderDiedSoldierMedic +} + +Response MvMDefenderDiedMedicMedic +{ + scene "scenes/Player/Medic/low/4177.vcd" +} +Rule MvMDefenderDiedMedicMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimMedic IsMedic + Response MvMDefenderDiedMedicMedic +} + +Response MvMDefenderDiedDemomanMedic +{ + scene "scenes/Player/Medic/low/4178.vcd" +} +Rule MvMDefenderDiedDemomanMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimDemoman IsMedic + Response MvMDefenderDiedDemomanMedic +} + +Response MvMDefenderDiedPyroMedic +{ + scene "scenes/Player/Medic/low/4179.vcd" +} +Rule MvMDefenderDiedPyroMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimPyro IsMedic + Response MvMDefenderDiedPyroMedic +} + +Response MvMDefenderDiedSniperMedic +{ + scene "scenes/Player/Medic/low/4180.vcd" +} +Rule MvMDefenderDiedSniperMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSniper IsMedic + Response MvMDefenderDiedSniperMedic +} + +Response MvMDefenderDiedEngineerMedic +{ + scene "scenes/Player/Medic/low/4181.vcd" +} +Rule MvMDefenderDiedEngineerMedic +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimEngineer IsMedic + Response MvMDefenderDiedEngineerMedic +} + +Response MvMFirstBombPickupMedic +{ + scene "scenes/Player/Medic/low/4197.vcd" + scene "scenes/Player/Medic/low/4199.vcd" +} +Rule MvMFirstBombPickupMedic +{ + criteria ConceptMvMFirstBombPickup 5PercentChance IsMvMDefender IsMedic + Response MvMFirstBombPickupMedic +} + +Response MvMBombPickupMedic +{ + scene "scenes/Player/Medic/low/4196.vcd" +} +Rule MvMBombPickupMedic +{ + criteria ConceptMvMBombPickup 5PercentChance IsMvMDefender IsMedic + Response MvMBombPickupMedic +} + +Response MvMSniperCalloutMedic +{ + scene "scenes/Player/Medic/low/4183.vcd" +} +Rule MvMSniperCalloutMedic +{ + criteria ConceptMvMSniperCallout 50PercentChance IsMvMDefender IsMedic + Response MvMSniperCalloutMedic +} + +Response MvMSentryBusterMedic +{ + scene "scenes/Player/Medic/low/4212.vcd" +} +Rule MvMSentryBusterMedic +{ + criteria ConceptMvMSentryBuster 50PercentChance IsMvMDefender IsMedic + Response MvMSentryBusterMedic +} + +Response MvMSentryBusterDownMedic +{ + scene "scenes/Player/Medic/low/4213.vcd" +} +Rule MvMSentryBusterDownMedic +{ + criteria ConceptMvMSentryBusterDown 20PercentChance IsMvMDefender IsMedic + Response MvMSentryBusterDownMedic +} + +Response MvMLastManStandingMedic +{ + scene "scenes/Player/Medic/low/4182.vcd" +} +Rule MvMLastManStandingMedic +{ + criteria ConceptMvMLastManStanding 20PercentChance IsMvMDefender IsMedic + Response MvMLastManStandingMedic +} + +Response MvMEncourageMoneyMedic +{ + scene "scenes/Player/Medic/low/4188.vcd" + scene "scenes/Player/Medic/low/4189.vcd" + scene "scenes/Player/Medic/low/4324.vcd" +} +Rule MvMEncourageMoneyMedic +{ + criteria ConceptMvMEncourageMoney 50PercentChance IsMvMDefender IsMedic + Response MvMEncourageMoneyMedic +} + +Response MvMEncourageUpgradeMedic +{ + scene "scenes/Player/Medic/low/4193.vcd" + scene "scenes/Player/Medic/low/4194.vcd" + scene "scenes/Player/Medic/low/4195.vcd" +} +Rule MvMEncourageUpgradeMedic +{ + criteria ConceptMvMEncourageUpgrade 50PercentChance IsMvMDefender IsMedic + Response MvMEncourageUpgradeMedic +} + +Response MvMUpgradeCompleteMedic +{ + scene "scenes/Player/Medic/low/4190.vcd" + scene "scenes/Player/Medic/low/4191.vcd" + scene "scenes/Player/Medic/low/4192.vcd" + scene "scenes/Player/Medic/low/4325.vcd" +} +Rule MvMUpgradeCompleteMedic +{ + criteria ConceptMvMUpgradeComplete 5PercentChance IsMvMDefender IsMedic + Response MvMUpgradeCompleteMedic +} + +Response MvMGiantCalloutMedic +{ + scene "scenes/Player/Medic/low/4214.vcd" +} +Rule MvMGiantCalloutMedic +{ + criteria ConceptMvMGiantCallout 20PercentChance IsMvMDefender IsMedic + Response MvMGiantCalloutMedic +} + +Response MvMGiantHasBombMedic +{ + scene "scenes/Player/Medic/low/4217.vcd" +} +Rule MvMGiantHasBombMedic +{ + criteria ConceptMvMGiantHasBomb 20PercentChance IsMvMDefender IsMedic + Response MvMGiantHasBombMedic +} + +Response MvMSappedRobotMedic +{ + scene "scenes/Player/Medic/low/4184.vcd" + scene "scenes/Player/Medic/low/4185.vcd" +} +Rule MvMSappedRobotMedic +{ + criteria ConceptMvMSappedRobot 50PercentChance IsMvMDefender IsMedic + Response MvMSappedRobotMedic +} + +Response MvMTankCalloutMedic +{ + scene "scenes/Player/Medic/low/4206.vcd" +} +Rule MvMTankCalloutMedic +{ + criteria ConceptMvMTankCallout 50PercentChance IsMvMDefender IsMedic + Response MvMTankCalloutMedic +} + +Response MvMTankDeployingMedic +{ + scene "scenes/Player/Medic/low/4210.vcd" +} +Rule MvMTankDeployingMedic +{ + criteria ConceptMvMTankDeploying 50PercentChance IsMvMDefender IsMedic + Response MvMTankDeployingMedic +} + +Response MvMAttackTheTankMedic +{ + scene "scenes/Player/Medic/low/4207.vcd" + scene "scenes/Player/Medic/low/4208.vcd" + scene "scenes/Player/Medic/low/4209.vcd" +} +Rule MvMAttackTheTankMedic +{ + criteria ConceptMvMAttackTheTank 50PercentChance IsMvMDefender IsMedic + Response MvMAttackTheTankMedic +} + +Response MvMTauntMedic +{ + scene "scenes/Player/Medic/low/4186.vcd" +} +Rule MvMTauntMedic +{ + criteria ConceptMvMTaunt 50PercentChance IsMvMDefender IsMedic + Response MvMTauntMedic +} + +Response MvMWaveStartMedic +{ + scene "scenes/Player/Medic/low/4109.vcd" +} +Rule MvMWaveStartMedic +{ + criteria ConceptMvMWaveStart 50PercentChance IsMvMDefender IsMedic + Response MvMWaveStartMedic +} + +Response MvMWaveWinMedic +{ + scene "scenes/Player/Medic/low/4163.vcd" + scene "scenes/Player/Medic/low/4164.vcd" + scene "scenes/Player/Medic/low/4165.vcd" +} +Rule MvMWaveWinMedic +{ + criteria ConceptMvMWaveWin 50PercentChance IsMvMDefender IsMedic + Response MvMWaveWinMedic +} + +Response MvMWaveLoseMedic +{ + scene "scenes/Player/Medic/low/4166.vcd" + scene "scenes/Player/Medic/low/4167.vcd" + scene "scenes/Player/Medic/low/4168.vcd" + scene "scenes/Player/Medic/low/4323.vcd" +} +Rule MvMWaveLoseMedic +{ + criteria ConceptMvMWaveLose 50PercentChance IsMvMDefender IsMedic + Response MvMWaveLoseMedic +} + +Response MvMMoneyPickupMedic +{ + scene "scenes/Player/Medic/low/4187.vcd" +} +Rule MvMMoneyPickupMedic +{ + criteria ConceptMvMMoneyPickup 5PercentChance IsMvMDefender IsMedic + Response MvMMoneyPickupMedic +} + +Response MvMGiantKilledMedic +{ + scene "scenes/Player/Medic/low/4218.vcd" +} +Rule MvMGiantKilledMedic +{ + criteria ConceptMvMGiantKilled 50PercentChance IsMvMDefender IsMedic + Response MvMGiantKilledMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Criterion "MedicNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "MedicNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "MedicNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "MedicNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "MedicNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "MedicNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Response CartMovingBackwardsDefenseMedic +{ +} +Rule CartMovingBackwardsDefenseMedic +{ + criteria ConceptCartMovingBackward IsOnDefense IsMedic 75PercentChance + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseMedic +} +Response CartMovingBackwardsOffenseMedic +{ + scene "scenes/Player/Medic/low/6763.vcd" + scene "scenes/Player/Medic/low/6765.vcd" +} +Rule CartMovingBackwardsOffenseMedic +{ + criteria ConceptCartMovingBackward IsOnOffense IsMedic 75PercentChance + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseMedic +} +Response CartMovingForwardDefenseMedic +{ + scene "scenes/Player/Medic/low/6767.vcd" + scene "scenes/Player/Medic/low/6766.vcd" +} +Rule CartMovingForwardDefenseMedic +{ + criteria ConceptCartMovingForward IsOnDefense IsMedic 75PercentChance + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseMedic +} +Response CartMovingForwardOffenseMedic +{ + scene "scenes/Player/Medic/low/6752.vcd" + scene "scenes/Player/Medic/low/6753.vcd" + scene "scenes/Player/Medic/low/6754.vcd" + scene "scenes/Player/Medic/low/6755.vcd" + scene "scenes/Player/Medic/low/6756.vcd" + scene "scenes/Player/Medic/low/6758.vcd" + scene "scenes/Player/Medic/low/6760.vcd" + scene "scenes/Player/Medic/low/6761.vcd" + scene "scenes/Player/Medic/low/6770.vcd" + scene "scenes/Player/Medic/low/6774.vcd" + scene "scenes/Player/Medic/low/6775.vcd" +} +Rule CartMovingForwardOffenseMedic +{ + criteria ConceptCartMovingForward IsOnOffense IsMedic + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseMedic +} +Response CartMovingStoppedDefenseMedic +{ + scene "scenes/Player/Medic/low/6786.vcd" +} +Rule CartMovingStoppedDefenseMedic +{ + criteria ConceptCartMovingStopped IsOnDefense IsMedic + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseMedic +} +Response CartMovingStoppedOffenseMedic +{ + scene "scenes/Player/Medic/low/6776.vcd" + scene "scenes/Player/Medic/low/6782.vcd" + scene "scenes/Player/Medic/low/6781.vcd" + scene "scenes/Player/Medic/low/6779.vcd" +} +Rule CartMovingStoppedOffenseMedic +{ + criteria ConceptCartMovingStopped IsOnOffense IsMedic + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseMedic +} +//-------------------------------------------------------------------------------------------------------------- +// END OF Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + diff --git a/gamemodes/tf/gamemode/contents/talker/medic_auto.lua b/gamemodes/tf/gamemode/contents/talker/medic_auto.lua new file mode 100644 index 000000000..5e72ad83e --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/medic_auto.lua @@ -0,0 +1,239 @@ +//-------------------------------------------------------------------------------------------------------------- +// Medic Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + +Criterion "MedicNotIdleSpeech" "MedicIdleSpeech" "!=1" "required" + +Response item_birdhead_round_startMedic +{ + scene "scenes/Player/Medic/low/6907.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6908.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6909.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6910.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6912.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6913.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6914.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6916.vcd" predelay "1.0, 5.0" +} +Rule item_birdhead_round_startMedic +{ + criteria ConceptPlayerRoundStart IsMedic 100PercentChance IsMedicBirdHead + Response item_birdhead_round_startMedic +} + +Response item_birdhead_uberMedic +{ + scene "scenes/Player/Medic/low/6918.vcd" +} +Rule item_birdhead_uberMedic +{ + criteria ConceptMedicChargeDeployed IsMedic IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsMedicBirdHead + Response item_birdhead_uberMedic +} + +Response item_secop_idleMedic +{ + scene "scenes/Player/Medic/low/6850.vcd" + scene "scenes/Player/Medic/low/6849.vcd" + scene "scenes/Player/Medic/low/6851.vcd" +} +Rule item_secop_idleMedic +{ + criteria ConceptPlayerExpression IsMedic 30PercentChance IsMedicDoubleFace MedicNotIdleSpeech + ApplyContext "MedicIdleSpeech:1:10" + Response item_secop_idleMedic +} + +Response item_secop_kill_assistMedic +{ + scene "scenes/Player/Medic/low/6852.vcd" +} +Rule item_secop_kill_assistMedic +{ + criteria ConceptKilledPlayer IsMedic IsBeingHealed IsARecentKill KilledPlayerDelay MedicNotAssistSpeech 20PercentChance IsMedicDoubleFace + Response item_secop_kill_assistMedic +} + +Response item_secop_uberMedic +{ + scene "scenes/Player/Medic/low/6853.vcd" +} +Rule item_secop_uberMedic +{ + criteria ConceptMedicChargeDeployed IsMedic IsInvulnerable MedicNotInvulnerableSpeech 30PercentChance IsMedicDoubleFace + Response item_secop_uberMedic +} + +Response item_zombiebird_mvm_go_upgradeMedic +{ + scene "scenes/Player/Medic/low/6830.vcd" +} +Rule item_zombiebird_mvm_go_upgradeMedic +{ + criteria ConceptMvMEncourageUpgrade 20PercentChance IsMvMDefender IsMedic IsMedicZombieBird + Response item_zombiebird_mvm_go_upgradeMedic +} + +Response item_zombiebird_mvm_winMedic +{ + scene "scenes/Player/Medic/low/6832.vcd" +} +Rule item_zombiebird_mvm_winMedic +{ + criteria ConceptMvMWaveWin 30PercentChance IsMvMDefender IsMedic IsMedicZombieBird + Response item_zombiebird_mvm_winMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_secop_round_startMedic +{ + scene "scenes/Player/Medic/low/6841.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6843.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6842.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6844.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6845.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6846.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6847.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6848.vcd" predelay "1.0, 5.0" +} +Rule item_secop_round_startMedic +{ + criteria ConceptPlayerRoundStart IsMedic 100PercentChance IsMedicDoubleFace + Response item_secop_round_startMedic +} + +Response item_zombiebird_got_briefcaseMedic +{ + scene "scenes/Player/Medic/low/6828.vcd" +} +Rule item_zombiebird_got_briefcaseMedic +{ + criteria ConceptPlayerGrabbedIntelligence IsScout NotScoutGrabbedIntelligence 10PercentChance IsMedicZombieBird + ApplyContext "ScoutGrabbedIntelligence:1:30" + Response item_zombiebird_got_briefcaseMedic +} + +Response item_zombiebird_round_startMedic +{ + scene "scenes/Player/Medic/low/6820.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/8506.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6822.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6823.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/6824.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Medic/low/8507.vcd" predelay "1.0, 5.0" +} +Rule item_zombiebird_round_startMedic +{ + criteria ConceptPlayerRoundStart IsMedic 100PercentChance IsMedicZombieBird + Response item_zombiebird_round_startMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Response item_secop_cart_pushMedic +{ + scene "scenes/Player/Medic/low/6854.vcd" + scene "scenes/Player/Medic/low/6855.vcd" + scene "scenes/Player/Medic/low/6856.vcd" + scene "scenes/Player/Medic/low/6857.vcd" +} +Rule item_secop_cart_pushMedic +{ + criteria ConceptCartMovingForward IsOnOffense IsMedic MedicNotSaidCartMovingForwardO 30PercentChance IsMedicDoubleFace + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_secop_cart_pushMedic +} + +Response item_secop_cart_stoppedMedic +{ + scene "scenes/Player/Medic/low/6858.vcd" +} +Rule item_secop_cart_stoppedMedic +{ + criteria ConceptCartMovingStopped IsOnOffense IsMedic MedicNotSaidCartMovingStoppedO 30PercentChance IsMedicDoubleFace + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_secop_cart_stoppedMedic +} + +Response item_zombiebird_sf13_cart_forwardMedic +{ + scene "scenes/Player/Medic/low/6825.vcd" + scene "scenes/Player/Medic/low/6827.vcd" +} +Rule item_zombiebird_sf13_cart_forwardMedic +{ + criteria ConceptCartMovingForward IsOnOffense IsMedic MedicNotSaidCartMovingForwardO 30PercentChance IsMedicZombieBird + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_zombiebird_sf13_cart_forwardMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_secop_dominationMedic +{ + scene "scenes/Player/Medic/low/6859.vcd" predelay "2.5" +} +Rule item_secop_dominationMedic +{ + criteria ConceptKilledPlayer IsMedic IsDominated 30PercentChance IsMedicDoubleFace + ApplyContext "MedicKillSpeech:1:10" + Response item_secop_dominationMedic +} + +Response item_zombiebird_dominatedMedic +{ + scene "scenes/Player/Medic/low/6833.vcd" predelay "2.5" +} +Rule item_zombiebird_dominatedMedic +{ + criteria ConceptKilledPlayer IsMedic IsDominated 30PercentChance IsMedicZombieBird + ApplyContext "MedicKillSpeech:1:10" + Response item_zombiebird_dominatedMedic +} + +Response item_zombiebird_jarateMedic +{ + scene "scenes/Player/Medic/low/6835.vcd" +} +Rule item_zombiebird_jarateMedic +{ + criteria ConceptJarateHit IsMedic 50PercentChance IsMedicZombieBird + Response item_zombiebird_jarateMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response item_zombiebird_on_fireMedic +{ + scene "scenes/Player/Medic/low/6834.vcd" +} +Rule item_zombiebird_on_fireMedic +{ + criteria ConceptFire IsMedic MedicIsNotStillonFire 20PercentChance IsMedicZombieBird + ApplyContext "MedicOnFire:1:7" + Response item_zombiebird_on_fireMedic +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response item_zombiebird_stand_pointMedic +{ + scene "scenes/Player/Medic/low/6829.vcd" +} +Rule item_zombiebird_stand_pointMedic +{ + criteria ConceptPlayerHelp IsMedic IsOnCappableControlPoint IsHelpCapMedic IsMedicZombieBird + Response item_zombiebird_stand_pointMedic +} + diff --git a/gamemodes/tf/gamemode/contents/talker/pyro.lua b/gamemodes/tf/gamemode/contents/talker/pyro.lua new file mode 100644 index 000000000..e63630bd1 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/pyro.lua @@ -0,0 +1,719 @@ +//-------------------------------------------------------------------------------------------------------------- +// Pyro Response Rule File +//-------------------------------------------------------------------------------------------------------------- + + +Response PlayerCloakedSpyDemomanPyro +{ + scene "scenes/Player/Pyro/low/1440.vcd" +} +Rule PlayerCloakedSpyDemomanPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnDemoman + Response PlayerCloakedSpyDemomanPyro +} + +Response PlayerCloakedSpyEngineerPyro +{ + scene "scenes/Player/Pyro/low/1446.vcd" +} +Rule PlayerCloakedSpyEngineerPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnEngineer + Response PlayerCloakedSpyEngineerPyro +} + +Response PlayerCloakedSpyHeavyPyro +{ + scene "scenes/Player/Pyro/low/1436.vcd" +} +Rule PlayerCloakedSpyHeavyPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnHeavy + Response PlayerCloakedSpyHeavyPyro +} + +Response PlayerCloakedSpyMedicPyro +{ + scene "scenes/Player/Pyro/low/1444.vcd" +} +Rule PlayerCloakedSpyMedicPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnMedic + Response PlayerCloakedSpyMedicPyro +} + +Response PlayerCloakedSpyPyroPyro +{ + scene "scenes/Player/Pyro/low/1438.vcd" +} +Rule PlayerCloakedSpyPyroPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnPyro + Response PlayerCloakedSpyPyroPyro +} + +Response PlayerCloakedSpyScoutPyro +{ + scene "scenes/Player/Pyro/low/1432.vcd" +} +Rule PlayerCloakedSpyScoutPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnScout + Response PlayerCloakedSpyScoutPyro +} + +Response PlayerCloakedSpySniperPyro +{ + scene "scenes/Player/Pyro/low/1448.vcd" +} +Rule PlayerCloakedSpySniperPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnSniper + Response PlayerCloakedSpySniperPyro +} + +Response PlayerCloakedSpySpyPyro +{ + scene "scenes/Player/Pyro/low/1442.vcd" +} +Rule PlayerCloakedSpySpyPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro IsOnSpy + Response PlayerCloakedSpySpyPyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksPyro +{ + scene "scenes/Player/Pyro/low/1552.vcd" +} +Rule HealThanksPyro +{ + criteria ConceptMedicChargeStopped IsPyro SuperHighHealthContext PyroNotSaidHealThanks 50PercentChance + ApplyContext "PyroSaidHealThanks:1:20" + Response HealThanksPyro +} + +Response PlayerRoundStartPyro +{ + scene "scenes/Player/Pyro/low/1418.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Pyro/low/1419.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartPyro +{ + criteria ConceptPlayerRoundStart IsPyro + Response PlayerRoundStartPyro +} + +Response PlayerCappedIntelligencePyro +{ + scene "scenes/Player/Pyro/low/1409.vcd" +} +Rule PlayerCappedIntelligencePyro +{ + criteria ConceptPlayerCapturedIntelligence IsPyro + Response PlayerCappedIntelligencePyro +} + +Response PlayerCapturedPointPyro +{ + scene "scenes/Player/Pyro/low/1406.vcd" +} +Rule PlayerCapturedPointPyro +{ + criteria ConceptPlayerCapturedPoint IsPyro + Response PlayerCapturedPointPyro +} + +Response PlayerSuddenDeathPyro +{ + scene "scenes/Player/Pyro/low/1476.vcd" + scene "scenes/Player/Pyro/low/1477.vcd" +} +Rule PlayerSuddenDeathPyro +{ + criteria ConceptPlayerSuddenDeathStart IsPyro + Response PlayerSuddenDeathPyro +} + +Response PlayerStalematePyro +{ + scene "scenes/Player/Pyro/low/1412.vcd" +} +Rule PlayerStalematePyro +{ + criteria ConceptPlayerStalemate IsPyro + Response PlayerStalematePyro +} + +Response PlayerTeleporterThanksPyro +{ + scene "scenes/Player/Pyro/low/1555.vcd" +} +Rule PlayerTeleporterThanksPyro +{ + criteria ConceptTeleported IsNotEngineer IsPyro 30PercentChance + Response PlayerTeleporterThanksPyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointPyro +{ + scene "scenes/Player/Pyro/low/1531.vcd" +} +Rule DefendOnThePointPyro +{ + criteria ConceptFireWeapon IsPyro IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointPyro +} + +Response KilledPlayerManyPyro +{ + scene "scenes/Player/Pyro/low/1534.vcd" +} +Rule KilledPlayerManyPyro +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay PyroNotKillSpeech IsPyro + ApplyContext "PyroKillSpeech:1:10" + Response KilledPlayerManyPyro +} + +// Added back unused melee kill lines +Response KilledPlayerMeleePyro +{ + scene "scenes/Player/Pyro/low/1594.vcd" + scene "scenes/Player/Pyro/low/1532.vcd" + scene "scenes/Player/Pyro/low/1533.vcd" +} +Rule KilledPlayerMeleePyro +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee PyroNotKillSpeechMelee IsPyro + ApplyContext "PyroKillSpeechMelee:1:10" + Response KilledPlayerMeleePyro +} + +// Custom stuff +Response KilledPlayerAssistAutoPyro +{ + scene "scenes/Player/Pyro/low/1529.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoPyro +{ + criteria ConceptKilledPlayer IsPyro IsBeingHealed IsManyRecentKills KilledPlayerDelay 20PercentChance PyroNotAssistSpeech + ApplyContext "PyroAssistSpeech:1:20" + Response KilledPlayerAssistAutoPyro +} + +Response PyroJarateHit +{ + scene "scenes/Player/Pyro/low/1412.vcd" + scene "scenes/Player/Pyro/low/1416.vcd" +} +Rule PyroJarateHit +{ + criteria ConceptJarateHit IsPyro 50PercentChance + Response PyroJarateHit +} + +Response InvulnerableSpeechPyro +{ + scene "scenes/Player/Pyro/low/1517.vcd" + scene "scenes/Player/Pyro/low/1485.vcd" +} +Rule InvulnerableSpeechPyro +{ + criteria ConceptFireWeapon IsPyro IsInvulnerable 20PercentChance + ApplyContext "PyroInvulnerableSpeech:1:30" + Response InvulnerableSpeechPyro +} +// End custom + +Response PlayerKilledCapperPyro +{ + scene "scenes/Player/Pyro/low/1421.vcd" +} +Rule PlayerKilledCapperPyro +{ + criteria ConceptCapBlocked IsPyro + ApplyContext "PyroKillSpeech:1:10" + Response PlayerKilledCapperPyro +} + +Response PlayerKilledDominatingPyro +{ + scene "scenes/Player/Pyro/low/1450.vcd" predelay "2.5" + scene "scenes/Player/Pyro/low/1482.vcd" predelay "2.5" + scene "scenes/Player/Pyro/low/1483.vcd" predelay "2.5" + scene "scenes/Player/Pyro/low/1485.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyro +{ + criteria ConceptKilledPlayer IsPyro IsDominated + ApplyContext "PyroKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyro +} + +Response PlayerKilledForRevengePyro +{ + scene "scenes/Player/Pyro/low/1403.vcd" predelay "2.5" + scene "scenes/Player/Pyro/low/1418.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengePyro +{ + criteria ConceptKilledPlayer IsPyro IsRevenge + ApplyContext "PyroKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengePyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainPyro +{ + scene "scenes/Player/Pyro/low/1581.vcd" + scene "scenes/Player/Pyro/low/1582.vcd" + scene "scenes/Player/Pyro/low/1583.vcd" + scene "scenes/Player/Pyro/low/1591.vcd" + scene "scenes/Player/Pyro/low/1592.vcd" + scene "scenes/Player/Pyro/low/1593.vcd" +} +Rule PlayerAttackerPainPyro +{ + criteria ConceptAttackerPain IsPyro + Response PlayerAttackerPainPyro +} + +Response PlayerOnFirePyro +{ + scene "scenes/Player/Pyro/low/1415.vcd" + scene "scenes/Player/Pyro/low/1416.vcd" +} +Rule PlayerOnFirePyro +{ + criteria ConceptFire IsPyro PyroIsNotStillonFire + ApplyContext "PyroOnFire:1:7" + Response PlayerOnFirePyro +} + +Response PlayerPainPyro +{ + scene "scenes/Player/Pyro/low/1584.vcd" + scene "scenes/Player/Pyro/low/1585.vcd" + scene "scenes/Player/Pyro/low/1586.vcd" + scene "scenes/Player/Pyro/low/1587.vcd" + scene "scenes/Player/Pyro/low/1588.vcd" + scene "scenes/Player/Pyro/low/1589.vcd" + scene "scenes/Player/Pyro/low/1590.vcd" +} +Rule PlayerPainPyro +{ + criteria ConceptPain IsPyro + Response PlayerPainPyro +} + +Response PlayerStillOnFirePyro +{ + scene "scenes/Player/Pyro/low/1930.vcd" +} +Rule PlayerStillOnFirePyro +{ + criteria ConceptFire IsPyro PyroIsStillonFire + ApplyContext "PyroOnFire:1:7" + Response PlayerStillOnFirePyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelPyro +{ + scene "scenes/Player/Pyro/low/1415.vcd" + scene "scenes/Player/Pyro/low/1534.vcd" + scene "scenes/Player/Pyro/low/1550.vcd" +} +Rule AcceptedDuelPyro +{ + criteria ConceptIAcceptDuel IsPyro + Response AcceptedDuelPyro +} + +Response MeleeDarePyro +{ + scene "scenes/Player/Pyro/low/1409.vcd" + scene "scenes/Player/Pyro/low/1499.vcd" + scene "scenes/Player/Pyro/low/1529.vcd" + scene "scenes/Player/Pyro/low/1552.vcd" + scene "scenes/Player/Pyro/low/1555.vcd" +} +Rule MeleeDarePyro +{ + criteria ConceptRequestDuel IsPyro + Response MeleeDarePyro +} + +Response RejectedDuelPyro +{ + scene "scenes/Player/Pyro/low/1412.vcd" + scene "scenes/Player/Pyro/low/1419.vcd" + scene "scenes/Player/Pyro/low/1432.vcd" + scene "scenes/Player/Pyro/low/1466.vcd" + scene "scenes/Player/Pyro/low/1469.vcd" +} +Rule RejectedDuelPyro +{ + criteria ConceptDuelRejected IsPyro + Response RejectedDuelPyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoPyro +{ + scene "scenes/Player/Pyro/low/1451.vcd" +} +Rule PlayerGoPyro +{ + criteria ConceptPlayerGo IsPyro + Response PlayerGoPyro +} + +Response PlayerHeadLeftPyro +{ + scene "scenes/Player/Pyro/low/1457.vcd" +} +Rule PlayerHeadLeftPyro +{ + criteria ConceptPlayerLeft IsPyro + Response PlayerHeadLeftPyro +} + +Response PlayerHeadRightPyro +{ + scene "scenes/Player/Pyro/low/1460.vcd" +} +Rule PlayerHeadRightPyro +{ + criteria ConceptPlayerRight IsPyro + Response PlayerHeadRightPyro +} + +Response PlayerHelpPyro +{ + scene "scenes/Player/Pyro/low/1463.vcd" +} +Rule PlayerHelpPyro +{ + criteria ConceptPlayerHelp IsPyro + Response PlayerHelpPyro +} + +Response PlayerHelpCapturePyro +{ + scene "scenes/Player/Pyro/low/1466.vcd" +} +Rule PlayerHelpCapturePyro +{ + criteria ConceptPlayerHelp IsPyro IsOnCappableControlPoint + ApplyContext "PyroHelpCap:1:10" + Response PlayerHelpCapturePyro +} + +Response PlayerHelpCapture2Pyro +{ + scene "scenes/Player/Pyro/low/1531.vcd" +} +Rule PlayerHelpCapture2Pyro +{ + criteria ConceptPlayerHelp IsPyro IsOnCappableControlPoint IsHelpCapPyro + Response PlayerHelpCapture2Pyro +} + +Response PlayerHelpDefendPyro +{ + scene "scenes/Player/Pyro/low/1469.vcd" +} +Rule PlayerHelpDefendPyro +{ + criteria ConceptPlayerHelp IsPyro IsOnFriendlyControlPoint + Response PlayerHelpDefendPyro +} + +Response PlayerMedicPyro +{ + scene "scenes/Player/Pyro/low/1489.vcd" +} +Rule PlayerMedicPyro +{ + criteria ConceptPlayerMedic IsPyro + Response PlayerMedicPyro +} + +Response PlayerAskForBallPyro +{ +} +Rule PlayerAskForBallPyro +{ + criteria ConceptPlayerAskForBall IsPyro + Response PlayerAskForBallPyro +} + +Response PlayerMoveUpPyro +{ + scene "scenes/Player/Pyro/low/1492.vcd" +} +Rule PlayerMoveUpPyro +{ + criteria ConceptPlayerMoveUp IsPyro + Response PlayerMoveUpPyro +} + +Response PlayerNoPyro +{ + scene "scenes/Player/Pyro/low/1507.vcd" +} +Rule PlayerNoPyro +{ + criteria ConceptPlayerNo IsPyro + Response PlayerNoPyro +} + +Response PlayerThanksPyro +{ + scene "scenes/Player/Pyro/low/1550.vcd" +} +Rule PlayerThanksPyro +{ + criteria ConceptPlayerThanks IsPyro + Response PlayerThanksPyro +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistPyro +{ + scene "scenes/Player/Pyro/low/1529.vcd" +} +Rule KilledPlayerAssistPyro +{ + criteria ConceptPlayerThanks IsPyro IsARecentKill KilledPlayerDelay PyroNotAssistSpeech + ApplyContext "PyroAssistSpeech:1:20" + Response KilledPlayerAssistPyro +} +// End custom + +Response PlayerYesPyro +{ + scene "scenes/Player/Pyro/low/1558.vcd" +} +Rule PlayerYesPyro +{ + criteria ConceptPlayerYes IsPyro + Response PlayerYesPyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargePyro +{ + scene "scenes/Player/Pyro/low/1403.vcd" +} +Rule PlayerActivateChargePyro +{ + criteria ConceptPlayerActivateCharge IsPyro + Response PlayerActivateChargePyro +} + +Response PlayerCloakedSpyPyro +{ + scene "scenes/Player/Pyro/low/1429.vcd" +} +Rule PlayerCloakedSpyPyro +{ + criteria ConceptPlayerCloakedSpy IsPyro + Response PlayerCloakedSpyPyro +} + +Response PlayerDispenserHerePyro +{ + scene "scenes/Player/Pyro/low/1493.vcd" +} +Rule PlayerDispenserHerePyro +{ + criteria ConceptPlayerDispenserHere IsPyro + Response PlayerDispenserHerePyro +} + +Response PlayerIncomingPyro +{ + scene "scenes/Player/Pyro/low/1472.vcd" +} +Rule PlayerIncomingPyro +{ + criteria ConceptPlayerIncoming IsPyro + Response PlayerIncomingPyro +} + +Response PlayerSentryAheadPyro +{ + scene "scenes/Player/Pyro/low/1515.vcd" +} +Rule PlayerSentryAheadPyro +{ + criteria ConceptPlayerSentryAhead IsPyro + Response PlayerSentryAheadPyro +} + +Response PlayerSentryHerePyro +{ + scene "scenes/Player/Pyro/low/1495.vcd" +} +Rule PlayerSentryHerePyro +{ + criteria ConceptPlayerSentryHere IsPyro + Response PlayerSentryHerePyro +} + +Response PlayerTeleporterHerePyro +{ + scene "scenes/Player/Pyro/low/1497.vcd" +} +Rule PlayerTeleporterHerePyro +{ + criteria ConceptPlayerTeleporterHere IsPyro + Response PlayerTeleporterHerePyro +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCryPyro +{ + scene "scenes/Player/Pyro/low/1418.vcd" + scene "scenes/Player/Pyro/low/1419.vcd" +} +Rule PlayerBattleCryPyro +{ + criteria ConceptPlayerBattleCry IsPyro + Response PlayerBattleCryPyro +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatPyro +{ + scene "scenes/Player/Pyro/low/1409.vcd" + scene "scenes/Player/Pyro/low/1517.vcd" + scene "scenes/Player/Pyro/low/1482.vcd" +} +Rule MeleeDareCombatPyro +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsPyro IsCrossHairEnemy + Response MeleeDareCombatPyro +} +//End custom + +Response PlayerCheersPyro +{ + scene "scenes/Player/Pyro/low/1421.vcd" +} +Rule PlayerCheersPyro +{ + criteria ConceptPlayerCheers IsPyro + Response PlayerCheersPyro +} + +Response PlayerGoodJobPyro +{ + scene "scenes/Player/Pyro/low/1454.vcd" +} +Rule PlayerGoodJobPyro +{ + criteria ConceptPlayerGoodJob IsPyro + Response PlayerGoodJobPyro +} + +Response PlayerJeersPyro +{ + scene "scenes/Player/Pyro/low/1476.vcd" + scene "scenes/Player/Pyro/low/1477.vcd" +} +Rule PlayerJeersPyro +{ + criteria ConceptPlayerJeers IsPyro + Response PlayerJeersPyro +} + +Response PlayerLostPointPyro +{ + scene "scenes/Player/Pyro/low/1499.vcd" +} +Rule PlayerLostPointPyro +{ + criteria ConceptPlayerLostPoint IsPyro + Response PlayerLostPointPyro +} + +Response PlayerNegativePyro +{ + scene "scenes/Player/Pyro/low/1499.vcd" +} +Rule PlayerNegativePyro +{ + criteria ConceptPlayerNegative IsPyro + Response PlayerNegativePyro +} + +Response PlayerNiceShotPyro +{ + scene "scenes/Player/Pyro/low/1504.vcd" +} +Rule PlayerNiceShotPyro +{ + criteria ConceptPlayerNiceShot IsPyro + Response PlayerNiceShotPyro +} + +Response PlayerPositivePyro +{ + scene "scenes/Player/Pyro/low/1510.vcd" +} + +Response PlayerTauntsPyro +{ + scene "scenes/Player/Pyro/low/1563.vcd" + scene "scenes/Player/Pyro/low/1595.vcd" + scene "scenes/Player/Pyro/low/1487.vcd" +} +Rule PlayerPositivePyro +{ + criteria ConceptPlayerPositive IsPyro + Response PlayerPositivePyro + Response PlayerTauntsPyro +} + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/pyro_auto.lua b/gamemodes/tf/gamemode/contents/talker/pyro_auto.lua new file mode 100644 index 000000000..f0b2435cd --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/pyro_auto.lua @@ -0,0 +1,6 @@ +//-------------------------------------------------------------------------------------------------------------- +// Pyro Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + diff --git a/gamemodes/tf/gamemode/contents/talker/scout.lua b/gamemodes/tf/gamemode/contents/talker/scout.lua new file mode 100644 index 000000000..a93f50316 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/scout.lua @@ -0,0 +1,1896 @@ +//-------------------------------------------------------------------------------------------------------------- +// Scout Response Rule File +//-------------------------------------------------------------------------------------------------------------- + +Criterion "ScoutIsKillSpeechObject" "ScoutKillSpeechObject" "1" "required" +Criterion "ScoutIsNotStillonFire" "ScoutOnFire" "!=1" "required" +Criterion "ScoutIsStillonFire" "ScoutOnFire" "1" "required" +Criterion "ScoutNotKillSpeech" "ScoutKillSpeech" "!=1" "required" +Criterion "ScoutNotKillSpeechMelee" "ScoutKillSpeechMelee" "!=1" "required" +Criterion "ScoutNotKillSpeechMeleeFat" "ScoutKillSpeechMeleeFat" "!=1" "required" +Criterion "ScoutNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "ScoutNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "ScoutNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "ScoutNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "ScoutNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "ScoutNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Criterion "ScoutNotSaidHealThanks" "ScoutSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapScout" "ScoutHelpCap" "1" "required" +Criterion "NotSaidScoutHitBallSpeech" "ScoutHitBallSpeech" "!=1" "required" +Criterion "NotScoutGrabbedIntelligence" "ScoutGrabbedIntelligence" "!=1" "required" +Criterion "ScoutIsNotInvuln" "ScoutInvuln" "!=1" "required" +//Custom stuff +Criterion "ScoutNotInvulnerableSpeech" "ScoutInvulnerableSpeech" "!=1" "required" +Criterion "ScoutNotAssistSpeech" "ScoutAssistSpeech" "!=1" "required" +Criterion "ScoutNotDoubleJumpSpeech" "ScoutDoubleJumpSpeech" "!=1" "required" +Criterion "ScoutNotAwardSpeech" "ScoutAwardSpeech" "!=1" "required" +Criterion "ScoutNotDrinkReadySpeech" "ScoutDrinkReadySpeech" "!=1" "required" +Criterion "ScoutIsNotCrit" "ScoutIsCrit" "1" "required" +Criterion "ScoutHasFired" "ScoutFired" "1" "required" + +Response PlayerCloakedSpyDemomanScout +{ + scene "scenes/Player/Scout/low/386.vcd" +} +Rule PlayerCloakedSpyDemomanScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnDemoman + Response PlayerCloakedSpyDemomanScout +} + +Response PlayerCloakedSpyEngineerScout +{ + scene "scenes/Player/Scout/low/389.vcd" +} +Rule PlayerCloakedSpyEngineerScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnEngineer + Response PlayerCloakedSpyEngineerScout +} + +Response PlayerCloakedSpyHeavyScout +{ + scene "scenes/Player/Scout/low/384.vcd" +} +Rule PlayerCloakedSpyHeavyScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnHeavy + Response PlayerCloakedSpyHeavyScout +} + +Response PlayerCloakedSpyMedicScout +{ + scene "scenes/Player/Scout/low/388.vcd" +} +Rule PlayerCloakedSpyMedicScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnMedic + Response PlayerCloakedSpyMedicScout +} + +Response PlayerCloakedSpyPyroScout +{ + scene "scenes/Player/Scout/low/385.vcd" +} +Rule PlayerCloakedSpyPyroScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnPyro + Response PlayerCloakedSpyPyroScout +} + +Response PlayerCloakedSpyScoutScout +{ + scene "scenes/Player/Scout/low/382.vcd" +} +Rule PlayerCloakedSpyScoutScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnScout + Response PlayerCloakedSpyScoutScout +} + +Response PlayerCloakedSpySniperScout +{ + scene "scenes/Player/Scout/low/390.vcd" +} +Rule PlayerCloakedSpySniperScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnSniper + Response PlayerCloakedSpySniperScout +} + +Response PlayerCloakedSpySoldierScout +{ + scene "scenes/Player/Scout/low/383.vcd" +} +Rule PlayerCloakedSpySoldierScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnSoldier + Response PlayerCloakedSpySoldierScout +} + +Response PlayerCloakedSpySpyScout +{ + scene "scenes/Player/Scout/low/387.vcd" +} +Rule PlayerCloakedSpySpyScout +{ + criteria ConceptPlayerCloakedSpy IsScout IsOnSpy + Response PlayerCloakedSpySpyScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- + +// Custom achievement stuff +Response AwardScout +{ + scene "scenes/Player/Scout/low/2501.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2502.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2503.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2504.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2505.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2507.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2509.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2510.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2511.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2681.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2682.vcd" predelay "2.5" +} +Rule AwardScout +{ + criteria ConceptAchievementAward IsScout ScoutNotAwardSpeech + ApplyContext "ScoutAwardSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response AwardScout +} +//End custom achievement + +Response HealThanksScout +{ + scene "scenes/Player/Scout/low/510.vcd" + scene "scenes/Player/Scout/low/511.vcd" + scene "scenes/Player/Scout/low/512.vcd" +} +Rule HealThanksScout +{ + criteria ConceptMedicChargeStopped IsScout SuperHighHealthContext ScoutNotSaidHealThanks 50PercentChance + ApplyContext "ScoutSaidHealThanks:1:20" + Response HealThanksScout +} + +Response PlayerRoundStartScout +{ + scene "scenes/Player/Scout/low/367.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/369.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/370.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/371.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/368.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartScout +{ + criteria ConceptPlayerRoundStart IsScout + Response PlayerRoundStartScout +} + +Response PlayerCappedIntelligenceScout +{ + scene "scenes/Player/Scout/low/359.vcd" + scene "scenes/Player/Scout/low/360.vcd" + scene "scenes/Player/Scout/low/361.vcd" + scene "scenes/Player/Scout/low/1289.vcd" +} +Rule PlayerCappedIntelligenceScout +{ + criteria ConceptPlayerCapturedIntelligence IsScout + Response PlayerCappedIntelligenceScout +} + +Response PlayerCapturedPointScout +{ + scene "scenes/Player/Scout/low/356.vcd" + scene "scenes/Player/Scout/low/1280.vcd" + scene "scenes/Player/Scout/low/357.vcd" + scene "scenes/Player/Scout/low/358.vcd" +} +Rule PlayerCapturedPointScout +{ + criteria ConceptPlayerCapturedPoint IsScout + Response PlayerCapturedPointScout +} + +Response PlayerGrabbedIntelligenceScout +{ + scene "scenes/Player/Scout/low/480.vcd" +} +Rule PlayerGrabbedIntelligenceScout +{ + criteria ConceptPlayerGrabbedIntelligence IsScout NotScoutGrabbedIntelligence 10PercentChance + ApplyContext "ScoutGrabbedIntelligence:1:30" + Response PlayerGrabbedIntelligenceScout +} + +Response PlayerSuddenDeathScout +{ + scene "scenes/Player/Scout/low/419.vcd" + scene "scenes/Player/Scout/low/420.vcd" + scene "scenes/Player/Scout/low/421.vcd" + scene "scenes/Player/Scout/low/422.vcd" + scene "scenes/Player/Scout/low/423.vcd" + scene "scenes/Player/Scout/low/424.vcd" + scene "scenes/Player/Scout/low/425.vcd" + scene "scenes/Player/Scout/low/426.vcd" + scene "scenes/Player/Scout/low/427.vcd" + scene "scenes/Player/Scout/low/428.vcd" + scene "scenes/Player/Scout/low/430.vcd" +} +Rule PlayerSuddenDeathScout +{ + criteria ConceptPlayerSuddenDeathStart IsScout + Response PlayerSuddenDeathScout +} + +Response PlayerStalemateScout +{ + scene "scenes/Player/Scout/low/362.vcd" + scene "scenes/Player/Scout/low/1281.vcd" + scene "scenes/Player/Scout/low/363.vcd" + scene "scenes/Player/Scout/low/364.vcd" +} +Rule PlayerStalemateScout +{ + criteria ConceptPlayerStalemate IsScout + Response PlayerStalemateScout +} + +Response PlayerTeleporterThanksScout +{ + scene "scenes/Player/Scout/low/513.vcd" + scene "scenes/Player/Scout/low/514.vcd" + scene "scenes/Player/Scout/low/515.vcd" +} +Rule PlayerTeleporterThanksScout +{ + criteria ConceptTeleported IsNotEngineer IsScout 30PercentChance + Response PlayerTeleporterThanksScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Response CartMovingBackwardsDefenseScout +{ + scene "scenes/Player/Scout/low/2513.vcd" + scene "scenes/Player/Scout/low/2514.vcd" + scene "scenes/Player/Scout/low/2512.vcd" + scene "scenes/Player/Scout/low/2515.vcd" + scene "scenes/Player/Scout/low/2516.vcd" + scene "scenes/Player/Scout/low/2517.vcd" +} +Rule CartMovingBackwardsDefenseScout +{ + criteria ConceptCartMovingBackward IsOnDefense IsScout 75PercentChance + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseScout +} + +Response CartMovingBackwardsOffenseScout +{ + scene "scenes/Player/Scout/low/2518.vcd" + scene "scenes/Player/Scout/low/2519.vcd" + scene "scenes/Player/Scout/low/2520.vcd" + scene "scenes/Player/Scout/low/2522.vcd" + scene "scenes/Player/Scout/low/2524.vcd" + scene "scenes/Player/Scout/low/2709.vcd" + scene "scenes/Player/Scout/low/2521.vcd" + scene "scenes/Player/Scout/low/2523.vcd" +} +Rule CartMovingBackwardsOffenseScout +{ + criteria ConceptCartMovingBackward IsOnOffense IsScout 75PercentChance + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseScout +} + +Response CartMovingForwardDefenseScout +{ + scene "scenes/Player/Scout/low/2525.vcd" + scene "scenes/Player/Scout/low/2526.vcd" + scene "scenes/Player/Scout/low/2527.vcd" + scene "scenes/Player/Scout/low/2528.vcd" + scene "scenes/Player/Scout/low/2529.vcd" + scene "scenes/Player/Scout/low/2530.vcd" +} +Rule CartMovingForwardDefenseScout +{ + criteria ConceptCartMovingForward IsOnDefense IsScout 75PercentChance + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseScout +} + +Response CartMovingForwardOffenseScout +{ + scene "scenes/Player/Scout/low/2532.vcd" + scene "scenes/Player/Scout/low/2533.vcd" + scene "scenes/Player/Scout/low/2534.vcd" + scene "scenes/Player/Scout/low/2535.vcd" + scene "scenes/Player/Scout/low/2537.vcd" + scene "scenes/Player/Scout/low/2536.vcd" + scene "scenes/Player/Scout/low/2538.vcd" + scene "scenes/Player/Scout/low/2540.vcd" + scene "scenes/Player/Scout/low/2541.vcd" + scene "scenes/Player/Scout/low/2539.vcd" + scene "scenes/Player/Scout/low/2542.vcd" + scene "scenes/Player/Scout/low/2543.vcd" +} +Rule CartMovingForwardOffenseScout +{ + criteria ConceptCartMovingForward IsOnOffense IsScout + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseScout +} + +Response CartMovingStoppedDefenseScout +{ + scene "scenes/Player/Scout/low/2544.vcd" + scene "scenes/Player/Scout/low/2545.vcd" + scene "scenes/Player/Scout/low/2546.vcd" +} +Rule CartMovingStoppedDefenseScout +{ + criteria ConceptCartMovingStopped IsOnDefense IsScout ScoutNotSaidCartMovingStoppedD IsNotDisguised 75PercentChance + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseScout +} + +Response CartMovingStoppedOffenseScout +{ + scene "scenes/Player/Scout/low/2548.vcd" + scene "scenes/Player/Scout/low/2549.vcd" + scene "scenes/Player/Scout/low/2550.vcd" +} +Rule CartMovingStoppedOffenseScout +{ + criteria ConceptCartMovingStopped IsOnOffense IsScout + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointScout +{ + scene "scenes/Player/Scout/low/489.vcd" + scene "scenes/Player/Scout/low/1305.vcd" +} +Rule DefendOnThePointScout +{ + criteria ConceptFireWeapon IsScout IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointScout +} + +// Custom stuff +Response InvulnerableSpeechScout +{ + scene "scenes/Player/Scout/low/486.vcd" + scene "scenes/Player/Scout/low/491.vcd" + scene "scenes/Player/Scout/low/2505.vcd" + scene "scenes/Player/Scout/low/499.vcd" +} +Rule InvulnerableSpeechScout +{ + criteria ConceptFireWeapon IsScout IsInvulnerable 20PercentChance + ApplyContext "ScoutInvulnerableSpeech:1:30" + Response InvulnerableSpeechScout +} + +Response KilledPlayerAssistAutoScout +{ + scene "scenes/Player/Scout/low/487.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/488.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoScout +{ + criteria ConceptKilledPlayer IsScout IsBeingHealed IsManyRecentKills KilledPlayerDelay 20PercentChance ScoutNotAssistSpeech + ApplyContext "ScoutAssistSpeech:1:20" + Response KilledPlayerAssistAutoScout +} +// End custom stuff + + +Response KilledPlayerManyScout +{ + scene "scenes/Player/Scout/low/396.vcd" + scene "scenes/Player/Scout/low/1297.vcd" + scene "scenes/Player/Scout/low/432.vcd" + scene "scenes/Player/Scout/low/433.vcd" + scene "scenes/Player/Scout/low/1295.vcd" + scene "scenes/Player/Scout/low/1296.vcd" + scene "scenes/Player/Scout/low/434.vcd" + scene "scenes/Player/Scout/low/435.vcd" + scene "scenes/Player/Scout/low/493.vcd" + scene "scenes/Player/Scout/low/506.vcd" +} +Rule KilledPlayerManyScout +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay ScoutNotKillSpeech IsScout + ApplyContext "ScoutKillSpeech:1:5" + Response KilledPlayerManyScout +} + +// Custom modified stuff +// Modified to split into groups +// Baseball bats use generic and bat lines +// Candy, Basher, Fish and Mace will use their own lines in addition to the generic lines + +Response KilledPlayerMeleeBatScout +{ + scene "scenes/Player/Scout/low/479.vcd" + scene "scenes/Player/Scout/low/482.vcd" + scene "scenes/Player/Scout/low/481.vcd" + scene "scenes/Player/Scout/low/483.vcd" + scene "scenes/Player/Scout/low/501.vcd" +} + +Response KilledPlayerMeleeGenericScout +{ + scene "scenes/Player/Scout/low/476.vcd" + scene "scenes/Player/Scout/low/477.vcd" + scene "scenes/Player/Scout/low/484.vcd" + scene "scenes/Player/Scout/low/498.vcd" +} + +// This rule excludes all weapons that are not the Sandman or vanilla bat + +Rule KilledPlayerMeleeBatScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsNotCandy WeaponIsNotBasher WeaponIsNotGunbai WeaponIsNotMace WeaponIsNotFish WeaponIsNotTRBlade WeaponIsNotSaxxy ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeBatScout + Response KilledPlayerMeleeGenericScout +} + +Response KilledPlayerMeleeBasherScout +{ + scene "scenes/player/Scout/low/2586.vcd" + scene "scenes/player/Scout/low/2643.vcd" +} + +Rule KilledPlayerMeleeBasherScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsBasher ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeBasherScout + Response KilledPlayerMeleeGenericScout +} + +Response KilledPlayerMeleeCandyScout +{ + scene "scenes/player/Scout/low/377.vcd" + scene "scenes/player/Scout/low/503.vcd" + scene "scenes/player/Scout/low/505.vcd" +} + +Rule KilledPlayerMeleeCandyScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsCandy ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeCandyScout + Response KilledPlayerMeleeGenericScout +} + +Response KilledPlayerMeleeMaceScout +{ + scene "scenes/player/Scout/low/2560.vcd" + scene "scenes/player/Scout/low/1289.vcd" + scene "scenes/player/Scout/low/2706.vcd" +} + +Rule KilledPlayerMeleeMaceScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsMace ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeMaceScout + Response KilledPlayerMeleeGenericScout +} + +Response KilledPlayerMeleeFishScout +{ + scene "scenes/player/Scout/low/433.vcd" + scene "scenes/player/Scout/low/435.vcd" + scene "scenes/player/Scout/low/1308.vcd" + scene "scenes/player/Scout/low/2554.vcd" +} + +Rule KilledPlayerMeleeFishScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsHolyMackerel ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeFishScout + Response KilledPlayerMeleeGenericScout +} + +Rule KilledPlayerMeleeFestiveFishScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsFestiveHolyMackerel ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeFishScout + Response KilledPlayerMeleeGenericScout +} + +// A rule for the Scout Gunbai +// it will share with the Fish as getting killed by this must be very humiliating +// even moreso than the Fish +Rule KilledPlayerMeleeGunbaiScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsGunbai ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeFishScout + Response KilledPlayerMeleeGenericScout +} + +Rule KilledPlayerMeleeSwordScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsTRBlade ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeMaceScout + Response KilledPlayerMeleeGenericScout +} + + +Rule KilledPlayerMeleeSaxxyScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee WeaponIsSaxxy ScoutNotKillSpeechMelee IsScout + ApplyContext "ScoutKillSpeechMelee:1:10" + Response KilledPlayerMeleeFishScout + Response KilledPlayerMeleeGenericScout +} + +Response KilledPlayerMeleeScoutFatScout +{ + scene "scenes/Player/Scout/low/475.vcd" +} +Rule KilledPlayerMeleeScoutFatScout +{ + criteria ConceptKilledPlayer KilledPlayerDelay 75PercentChance IsWeaponMelee ScoutNotKillSpeechMeleeFat IsScout IsVictimHeavy + ApplyContext "ScoutKillSpeechMeleeFat:1:10" + Response KilledPlayerMeleeScoutFatScout +} + +Response MedicFollowScout +{ + scene "scenes/Player/Scout/low/2574.vcd" predelay ".25" + scene "scenes/Player/Scout/low/2575.vcd" predelay ".25" + scene "scenes/Player/Scout/low/2577.vcd" predelay ".25" + scene "scenes/Player/Scout/low/2578.vcd" predelay ".25" +} +Rule MedicFollowScout +{ + criteria ConceptPlayerMedic IsOnMedic IsScout IsNotCrossHairEnemy NotLowHealth ScoutIsNotStillonFire + ApplyContext "ScoutKillSpeech:1:10" + Response MedicFollowScout +} + +Response ScoutJarateHit +{ + scene "scenes/Player/Scout/low/364.vcd" + scene "scenes/Player/Scout/low/426.vcd" + scene "scenes/Player/Scout/low/450.vcd" + scene "scenes/Player/Scout/low/451.vcd" +} +Rule ScoutJarateHit +{ + criteria ConceptJarateHit IsScout 50PercentChance + Response ScoutJarateHit +} + +Response PlayerBeingShotInvincibleScout +{ + scene "scenes/Player/Scout/low/2632.vcd" + scene "scenes/Player/Scout/low/2631.vcd" + scene "scenes/Player/Scout/low/2636.vcd" + scene "scenes/Player/Scout/low/2629.vcd" + scene "scenes/Player/Scout/low/2690.vcd" + scene "scenes/Player/Scout/low/2638.vcd" + scene "scenes/Player/Scout/low/2630.vcd" + scene "scenes/Player/Scout/low/2634.vcd" + scene "scenes/Player/Scout/low/2635.vcd" + scene "scenes/Player/Scout/low/2637.vcd" + scene "scenes/Player/Scout/low/2737.vcd" + scene "scenes/Player/Scout/low/2738.vcd" + scene "scenes/Player/Scout/low/2739.vcd" + scene "scenes/Player/Scout/low/2740.vcd" + scene "scenes/Player/Scout/low/2741.vcd" + scene "scenes/Player/Scout/low/2742.vcd" + scene "scenes/Player/Scout/low/2743.vcd" + scene "scenes/Player/Scout/low/2744.vcd" + scene "scenes/Player/Scout/low/2745.vcd" + scene "scenes/Player/Scout/low/2746.vcd" + scene "scenes/Player/Scout/low/2747.vcd" + scene "scenes/Player/Scout/low/2748.vcd" + scene "scenes/Player/Scout/low/2749.vcd" + scene "scenes/Player/Scout/low/2750.vcd" + scene "scenes/Player/Scout/low/2751.vcd" + scene "scenes/Player/Scout/low/2752.vcd" + scene "scenes/Player/Scout/low/2753.vcd" + scene "scenes/Player/Scout/low/2754.vcd" + scene "scenes/Player/Scout/low/2755.vcd" + scene "scenes/Player/Scout/low/2756.vcd" + scene "scenes/Player/Scout/low/2757.vcd" + scene "scenes/Player/Scout/low/2758.vcd" + scene "scenes/Player/Scout/low/2759.vcd" + scene "scenes/Player/Scout/low/2760.vcd" + scene "scenes/Player/Scout/low/2761.vcd" + scene "scenes/Player/Scout/low/2762.vcd" + scene "scenes/Player/Scout/low/2728.vcd" + scene "scenes/Player/Scout/low/2771.vcd" + scene "scenes/Player/Scout/low/2729.vcd" + scene "scenes/Player/Scout/low/2730.vcd" +} +Rule PlayerBeingShotInvincibleScout +{ + criteria ConceptDodgeShot IsScout LoadoutIsDrink // Exclude Crit-a-Cola + Response PlayerBeingShotInvincibleScout +} + +Response PlayerDodgingScout +{ + scene "scenes/Player/Scout/low/2505.vcd" predelay "2,3" + scene "scenes/Player/Scout/low/2615.vcd" predelay "2,3" + scene "scenes/Player/Scout/low/2616.vcd" predelay "2,3" + scene "scenes/Player/Scout/low/2628.vcd" predelay "2,3" + scene "scenes/Player/Scout/low/2621.vcd" predelay "2,3" +} +Rule PlayerDodgingScout +{ + criteria ConceptDodging IsScout ScoutIsNotInvuln LoadoutIsDrink // Exclude Crit-a-Cola + ApplyContext "ScoutInvuln:1:20" + Response PlayerDodgingScout +} + +// Custom Stuff +Response PlayerDoubleJumpScout +{ + scene "scenes/Player/Scout/low/2608.vcd" + scene "scenes/Player/Scout/low/2610.vcd" + scene "scenes/Player/Scout/low/2609.vcd" + scene "scenes/Player/Scout/low/2611.vcd" +} +Rule PlayerDoubleJumpScout +{ + criteria ConceptFireWeapon IsScout IsDoubleJumping WeaponIsScattergunDouble 20PercentChance + Response PlayerDoubleJumpScout +} +Rule PlayerDoubleJumpScoutFestive +{ + criteria ConceptFireWeapon IsScout IsDoubleJumping WeaponIsScattergunDoubleFestive 20PercentChance + Response PlayerDoubleJumpScout +} + +// Double jump response +Response DoubleJumpScout +{ + scene "scenes/Player/Scout/low/2624.vcd" + scene "scenes/Player/Scout/low/2625.vcd" + scene "scenes/Player/Scout/low/2627.vcd" + scene "scenes/Player/Scout/low/2685.vcd" + scene "scenes/Player/Scout/low/2689.vcd" +} +Rule DoubleJumpScout +{ + criteria ConceptDoubleJump IsScout IsARecentKill IsNotDoubleJumping WeaponIsNotScattergunDouble ScoutHasFired ScoutNotDoubleJumpSpeech 2PercentChance + ApplyContext "ScoutDoubleJumpSpeech:1:90" + Response DoubleJumpScout +} + +// Invincible not ready +Response DrinkNotReady +{ + scene "scenes/player/Scout/low/2732.vcd" + scene "scenes/player/Scout/low/2733.vcd" + scene "scenes/player/Scout/low/2734.vcd" + scene "scenes/player/Scout/low/2774.vcd" + scene "scenes/player/Scout/low/2775.vcd" + scene "scenes/player/Scout/low/2776.vcd" +} +Rule DrinkNotReady +{ + criteria ConceptPain IsScout WeaponIsLunchboxDrink BonkHealthContext ScoutNotDrinkReadySpeech LoadoutIsDrink // Exclude Crit-a-Cola + ApplyContext "ScoutDrinkReadySpeech:1:5" + Response DrinkNotReady +} + +// Crit-a-Cola lines +// +// Explanation: +// +// When the player drinks the cola, a context called ScoutIsCrit is set to 1 for 3-ish seconds in tf.txt (saves having the rule duped here) +// This is then picked up by the Rule PlayerCritColaVocalScout, which checks if the player has fired their weapon. +// If they have fired, then the rule checks the ScoutIsNotCrit, which has just been set to 1 during the drinking +// of the cola. Therefore, if the player fires during this period, they will say the response. +// +// We then changed the PostTired response for the cola for teh lulz. +// +// This is a tricky workaround, but necessary as we cannot 'layer' vcds (i.e. play one vcd on top of the other) + +// These are the reesponses we play when firing under the effects. +Response PlayerCritColaVocalScout +{ + scene "scenes/player/Scout/low/507.vcd" + scene "scenes/player/Scout/low/2510.vcd" + scene "scenes/player/Scout/low/396.vcd" +} +Rule PlayerCritColaVocalScout +{ + criteria ConceptFireWeapon IsScout LoadoutIsCritDrink ScoutIsNotCrit // The crit context is read in here via this criterion, which is set at the top of the file + Response PlayerCritColaVocalScout +} + +// Here we alter what he says after the effects finish. +// Note this is 50PercentChance, so he has 50% chance of just doing the normal tired breathing. +Response PostCritScout +{ + scene "scenes/player/Scout/low/2734.vcd" + scene "scenes/player/Scout/low/2774.vcd" + scene "scenes/player/Scout/low/2775.vcd" + scene "scenes/player/Scout/low/2776.vcd" +} + +Rule PostCritScout +{ + criteria ConceptTired IsScout 50PercentChance LoadoutIsCritDrink + Response PostCritScout +} + +// Milk toss +Response MilkLaunchScout +{ + scene "scenes/player/Scout/low/504.vcd" + scene "scenes/player/Scout/low/2705.vcd" + scene "scenes/player/Scout/low/2604.vcd" +} +Rule MilkLaunchScout +{ + criteria ConceptJarateLaunch IsScout 50PercentChance + Response MilkLaunchScout +} + +// End custom + +Response PlayerKilledCapperScout +{ + scene "scenes/Player/Scout/low/359.vcd" + scene "scenes/Player/Scout/low/372.vcd" + scene "scenes/Player/Scout/low/373.vcd" + scene "scenes/Player/Scout/low/454.vcd" + scene "scenes/Player/Scout/low/488.vcd" + scene "scenes/Player/Scout/low/491.vcd" + scene "scenes/Player/Scout/low/499.vcd" + scene "scenes/Player/Scout/low/1308.vcd" +} +Rule PlayerKilledCapperScout +{ + criteria ConceptCapBlocked IsScout + ApplyContext "ScoutKillSpeech:1:10" + Response PlayerKilledCapperScout +} + +// Custom stuff +// The other 2 unimplemented dominations do not have respective vcds. +// Will build them sometime later. +Response PlayerKilledDominatingScout +{ + scene "scenes/Player/Scout/low/2551.vcd" predelay "2.5" + scene "scenes/player/Scout/low/2687.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2764.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2765.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScout +{ + criteria ConceptKilledPlayer IsScout IsDominated 30PercentChance + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScout +} + +Response PlayerKilledDominatingBatScout +{ + scene "scenes/player/scout/low/2648.vcd" predelay "2.5" + scene "scenes/player/scout/low/2643.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingBatScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsWeaponMelee + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingBatScout +} +//End custom + +Response PlayerKilledDominatingDemomanScout +{ + scene "scenes/Player/Scout/low/2763.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2649.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2564.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2565.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2679.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2680.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2678.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemomanScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimDemoman + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemomanScout +} + +Response PlayerKilledDominatingEngineerScout +{ + scene "scenes/Player/Scout/low/2766.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2556.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2675.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2676.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2677.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2710.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2711.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingEngineerScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimEngineer + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingEngineerScout +} + +Response PlayerKilledDominatingHeavyScout +{ + scene "scenes/Player/Scout/low/2553.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2646.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2647.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2557.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2558.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2655.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2656.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2657.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2659.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2660.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2693.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2712.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2713.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2642.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavyScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimHeavy + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavyScout +} + +Response PlayerKilledDominatingMedicScout +{ + scene "scenes/Player/Scout/low/2714.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2715.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2716.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2736.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2665.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2559.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2641.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedicScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimMedic + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedicScout +} + +Response PlayerKilledDominatingPyroScout +{ + scene "scenes/player/Scout/low/2688.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2644.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2560.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2673.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2674.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2725.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2726.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2718.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyroScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimPyro + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyroScout +} + +Response PlayerKilledDominatingScoutScout +{ + scene "scenes/Player/Scout/low/2555.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2645.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2691.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2719.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2554.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2654.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2768.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2566.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2666.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2667.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScoutScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimScout + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScoutScout +} + +Response PlayerKilledDominatingSniperScout +{ + scene "scenes/Player/Scout/low/2686.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2567.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2668.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2672.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2769.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2770.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSniperScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimSniper + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSniperScout +} + +Response PlayerKilledDominatingSoldierScout +{ + scene "scenes/Player/Scout/low/2562.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2669.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2670.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2671.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2720.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2721.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldierScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimSoldier + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldierScout +} + +Response PlayerKilledDominatingSpyScout +{ + scene "scenes/Player/Scout/low/2682.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2552.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2563.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2661.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2662.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2663.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSpyScout +{ + criteria ConceptKilledPlayer IsScout IsDominated IsVictimSpy + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSpyScout +} + +Response PlayerKilledForRevengeScout +{ + scene "scenes/Player/Scout/low/2681.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/374.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2641.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2706.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/453.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2586.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2587.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2588.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2589.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2590.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2591.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2592.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2593.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/2594.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/486.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeScout +{ + criteria ConceptKilledPlayer IsScout IsRevenge + ApplyContext "ScoutKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeScout +} + +Response PlayerKilledObjectScout +{ + scene "scenes/Player/Scout/low/485.vcd" +} +Rule PlayerKilledObjectScout +{ + criteria ConceptKilledObject IsScout 30PercentChance IsARecentKill + ApplyContext "ScoutKillSpeechObject:1:30" + Response PlayerKilledObjectScout +} + +Response PlayerStunBallHitScout +{ + scene "scenes/Player/Scout/low/2767.vcd" + scene "scenes/Player/Scout/low/2597.vcd" + scene "scenes/Player/Scout/low/2598.vcd" + scene "scenes/Player/Scout/low/2599.vcd" + scene "scenes/Player/Scout/low/2600.vcd" + scene "scenes/Player/Scout/low/2601.vcd" + scene "scenes/Player/Scout/low/2602.vcd" + scene "scenes/Player/Scout/low/2684.vcd" + scene "scenes/Player/Scout/low/2694.vcd" + scene "scenes/Player/Scout/low/2695.vcd" + scene "scenes/Player/Scout/low/2700.vcd" + scene "scenes/Player/Scout/low/2702.vcd" + scene "scenes/Player/Scout/low/2705.vcd" + scene "scenes/Player/Scout/low/2707.vcd" + scene "scenes/Player/Scout/low/2697.vcd" + scene "scenes/Player/Scout/low/2701.vcd" +} +Rule PlayerStunBallHitScout +{ + criteria ConceptStunnedTarget IsScout NotSaidScoutHitBallSpeech 50PercentChance + Response PlayerStunBallHitScout +} + +Response PlayerStunBallHittingItScout +{ + scene "scenes/Player/Scout/low/2606.vcd" + scene "scenes/Player/Scout/low/2604.vcd" + scene "scenes/Player/Scout/low/2651.vcd" + scene "scenes/Player/Scout/low/2703.vcd" +} +Rule PlayerStunBallHittingItScout +{ + criteria ConceptFireWeapon IsScout WeaponIsWoodBat 10PercentChance + ApplyContext "ScoutHitBallSpeech:1:10" + Response PlayerStunBallHittingItScout +} + +Response PlayerStunBallPickUpScout +{ + scene "scenes/Player/Scout/low/2722.vcd" + scene "scenes/Player/Scout/low/2723.vcd" + scene "scenes/Player/Scout/low/2724.vcd" + scene "scenes/Player/Scout/low/2772.vcd" + scene "scenes/Player/Scout/low/2773.vcd" +} +Rule PlayerStunBallPickUpScout +{ + criteria ConceptScoutBallGrab IsScout 50PercentChance + Response PlayerStunBallPickUpScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainScout +{ + scene "scenes/Player/Scout/low/461.vcd" + scene "scenes/Player/Scout/low/462.vcd" + scene "scenes/Player/Scout/low/463.vcd" + scene "scenes/Player/Scout/low/1361.vcd" + scene "scenes/Player/Scout/low/1362.vcd" + scene "scenes/Player/Scout/low/1363.vcd" +} +Rule PlayerAttackerPainScout +{ + criteria ConceptAttackerPain IsScout + Response PlayerAttackerPainScout +} + +Response PlayerOnFireScout +{ + scene "scenes/Player/Scout/low/365.vcd" +} +Rule PlayerOnFireScout +{ + criteria ConceptFire IsScout ScoutIsNotStillonFire + ApplyContext "ScoutOnFire:1:7" + Response PlayerOnFireScout +} + +Response PlayerOnFireRareScout +{ + scene "scenes/Player/Scout/low/366.vcd" +} +Rule PlayerOnFireRareScout +{ + criteria ConceptFire IsScout 10PercentChance ScoutIsNotStillonFire + ApplyContext "ScoutOnFire:1:7" + Response PlayerOnFireRareScout +} + +Response PlayerPainScout +{ + scene "scenes/Player/Scout/low/464.vcd" + scene "scenes/Player/Scout/low/465.vcd" + scene "scenes/Player/Scout/low/466.vcd" + scene "scenes/Player/Scout/low/1364.vcd" + scene "scenes/Player/Scout/low/1365.vcd" + scene "scenes/Player/Scout/low/1366.vcd" + scene "scenes/Player/Scout/low/1367.vcd" + scene "scenes/Player/Scout/low/1368.vcd" +} +Rule PlayerPainScout +{ + criteria ConceptPain IsScout + Response PlayerPainScout +} + +Response PlayerStillOnFireScout +{ + scene "scenes/Player/Scout/low/1932.vcd" +} +Rule PlayerStillOnFireScout +{ + criteria ConceptFire IsScout ScoutIsStillonFire + ApplyContext "ScoutOnFire:1:7" + Response PlayerStillOnFireScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelScout +{ + scene "scenes/Player/Scout/low/377.vcd" + scene "scenes/Player/Scout/low/491.vcd" + scene "scenes/Player/Scout/low/494.vcd" + scene "scenes/Player/Scout/low/496.vcd" + scene "scenes/Player/Scout/low/516.vcd" +} +Rule AcceptedDuelScout +{ + criteria ConceptIAcceptDuel IsScout + Response AcceptedDuelScout +} + +Response MeleeDareScout +{ + scene "scenes/Player/Scout/low/2579.vcd" + scene "scenes/Player/Scout/low/2580.vcd" + scene "scenes/Player/Scout/low/2582.vcd" + scene "scenes/Player/Scout/low/2583.vcd" + scene "scenes/Player/Scout/low/2581.vcd" +} +Rule MeleeDareScout +{ + criteria ConceptRequestDuel IsScout + Response MeleeDareScout +} + +Response RejectedDuelScout +{ + scene "scenes/Player/Scout/low/362.vcd" + scene "scenes/Player/Scout/low/1281.vcd" + scene "scenes/Player/Scout/low/363.vcd" + scene "scenes/Player/Scout/low/364.vcd" + scene "scenes/Player/Scout/low/2554.vcd" + scene "scenes/Player/Scout/low/2768.vcd" + scene "scenes/Player/Scout/low/419.vcd" + scene "scenes/Player/Scout/low/421.vcd" + scene "scenes/Player/Scout/low/2706.vcd" +} +Rule RejectedDuelScout +{ + criteria ConceptDuelRejected IsScout + Response RejectedDuelScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoScout +{ + scene "scenes/Player/Scout/low/393.vcd" + scene "scenes/Player/Scout/low/1286.vcd" + scene "scenes/Player/Scout/low/392.vcd" + scene "scenes/Player/Scout/low/394.vcd" +} +Rule PlayerGoScout +{ + criteria ConceptPlayerGo IsScout + Response PlayerGoScout +} + +Response PlayerHeadLeftScout +{ + scene "scenes/Player/Scout/low/398.vcd" + scene "scenes/Player/Scout/low/399.vcd" + scene "scenes/Player/Scout/low/400.vcd" +} +Rule PlayerHeadLeftScout +{ + criteria ConceptPlayerLeft IsScout + Response PlayerHeadLeftScout +} + +Response PlayerHeadRightScout +{ + scene "scenes/Player/Scout/low/401.vcd" + scene "scenes/Player/Scout/low/402.vcd" + scene "scenes/Player/Scout/low/403.vcd" +} +Rule PlayerHeadRightScout +{ + criteria ConceptPlayerRight IsScout + Response PlayerHeadRightScout +} + +Response PlayerHelpScout +{ + scene "scenes/Player/Scout/low/404.vcd" + scene "scenes/Player/Scout/low/1290.vcd" + scene "scenes/Player/Scout/low/405.vcd" + scene "scenes/Player/Scout/low/406.vcd" +} +Rule PlayerHelpScout +{ + criteria ConceptPlayerHelp IsScout + Response PlayerHelpScout +} + +Response PlayerHelpCaptureScout +{ + scene "scenes/Player/Scout/low/407.vcd" + scene "scenes/Player/Scout/low/408.vcd" + scene "scenes/Player/Scout/low/409.vcd" +} +Rule PlayerHelpCaptureScout +{ + criteria ConceptPlayerHelp IsScout IsOnCappableControlPoint + ApplyContext "ScoutHelpCap:1:10" + Response PlayerHelpCaptureScout +} + +Response PlayerHelpCapture2Scout +{ + scene "scenes/Player/Scout/low/489.vcd" + scene "scenes/Player/Scout/low/1304.vcd" + scene "scenes/Player/Scout/low/1305.vcd" + scene "scenes/Player/Scout/low/1306.vcd" + scene "scenes/Player/Scout/low/1307.vcd" +} +Rule PlayerHelpCapture2Scout +{ + criteria ConceptPlayerHelp IsScout IsOnCappableControlPoint IsHelpCapScout + Response PlayerHelpCapture2Scout +} + +// Custom stuff +// Response for when the Scout is fighting on a cappable point +Response PlayerGetOnPointScout +{ + scene "scenes/Player/Scout/low/2568.vcd" + scene "scenes/Player/Scout/low/2569.vcd" + scene "scenes/Player/Scout/low/2570.vcd" + scene "scenes/Player/Scout/low/2572.vcd" +} + +Rule PlayerGetOnPointScout +{ + criterion ConceptFireWeapon IsScout IsOnCappableControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:15" + applycontexttoworld + Response PlayerGetOnPointScout +} +// End custom + +Response PlayerHelpDefendScout +{ + scene "scenes/Player/Scout/low/410.vcd" + scene "scenes/Player/Scout/low/411.vcd" + scene "scenes/Player/Scout/low/412.vcd" +} +Rule PlayerHelpDefendScout +{ + criteria ConceptPlayerHelp IsScout IsOnFriendlyControlPoint + Response PlayerHelpDefendScout +} + +Response PlayerMedicScout +{ + scene "scenes/Player/Scout/low/438.vcd" + scene "scenes/Player/Scout/low/439.vcd" + scene "scenes/Player/Scout/low/440.vcd" +} +Rule PlayerMedicScout +{ + criteria ConceptPlayerMedic IsScout + Response PlayerMedicScout +} + +Response PlayerAskForBallScout +{ +} +Rule PlayerAskForBallScout +{ + criteria ConceptPlayerAskForBall IsScout + Response PlayerAskForBallScout +} + +Response PlayerMoveUpScout +{ + scene "scenes/Player/Scout/low/441.vcd" + scene "scenes/Player/Scout/low/442.vcd" + scene "scenes/Player/Scout/low/443.vcd" +} +Rule PlayerMoveUpScout +{ + criteria ConceptPlayerMoveUp IsScout + Response PlayerMoveUpScout +} + +Response PlayerNoScout +{ + scene "scenes/Player/Scout/low/455.vcd" + scene "scenes/Player/Scout/low/456.vcd" + scene "scenes/Player/Scout/low/457.vcd" +} +Rule PlayerNoScout +{ + criteria ConceptPlayerNo IsScout + Response PlayerNoScout +} + +Response PlayerThanksScout +{ + scene "scenes/Player/Scout/low/508.vcd" + scene "scenes/Player/Scout/low/509.vcd" +} +Rule PlayerThanksScout +{ + criteria ConceptPlayerThanks IsScout + Response PlayerThanksScout +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistScout +{ + scene "scenes/Player/Scout/low/487.vcd" + scene "scenes/Player/Scout/low/488.vcd" +} +Rule KilledPlayerAssistScout +{ + criteria ConceptPlayerThanks IsScout IsARecentKill KilledPlayerDelay ScoutNotAssistSpeech + ApplyContext "ScoutAssistSpeech:1:20" + Response KilledPlayerAssistScout +} +// End custom + +Response PlayerYesScout +{ + scene "scenes/Player/Scout/low/516.vcd" + scene "scenes/Player/Scout/low/517.vcd" + scene "scenes/Player/Scout/low/518.vcd" +} +Rule PlayerYesScout +{ + criteria ConceptPlayerYes IsScout + Response PlayerYesScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeScout +{ + scene "scenes/Player/Scout/low/353.vcd" + scene "scenes/Player/Scout/low/354.vcd" + scene "scenes/Player/Scout/low/355.vcd" +} +Rule PlayerActivateChargeScout +{ + criteria ConceptPlayerActivateCharge IsScout + Response PlayerActivateChargeScout +} + +Response PlayerCloakedSpyScout +{ + scene "scenes/Player/Scout/low/380.vcd" + scene "scenes/Player/Scout/low/379.vcd" + scene "scenes/Player/Scout/low/1285.vcd" + scene "scenes/Player/Scout/low/381.vcd" +} +Rule PlayerCloakedSpyScout +{ + criteria ConceptPlayerCloakedSpy IsScout + Response PlayerCloakedSpyScout +} + +Response PlayerDispenserHereScout +{ + scene "scenes/Player/Scout/low/444.vcd" +} +Rule PlayerDispenserHereScout +{ + criteria ConceptPlayerDispenserHere IsScout + Response PlayerDispenserHereScout +} + +Response PlayerIncomingScout +{ + scene "scenes/Player/Scout/low/413.vcd" + scene "scenes/Player/Scout/low/414.vcd" + scene "scenes/Player/Scout/low/415.vcd" +} +Rule PlayerIncomingScout +{ + criteria ConceptPlayerIncoming IsScout + Response PlayerIncomingScout +} + +Response PlayerSentryAheadScout +{ + scene "scenes/Player/Scout/low/472.vcd" + scene "scenes/Player/Scout/low/473.vcd" + scene "scenes/Player/Scout/low/474.vcd" +} +Rule PlayerSentryAheadScout +{ + criteria ConceptPlayerSentryAhead IsScout + Response PlayerSentryAheadScout +} + +Response PlayerSentryHereScout +{ + scene "scenes/Player/Scout/low/445.vcd" +} +Rule PlayerSentryHereScout +{ + criteria ConceptPlayerSentryHere IsScout + Response PlayerSentryHereScout +} + +Response PlayerTeleporterHereScout +{ + scene "scenes/Player/Scout/low/446.vcd" +} +Rule PlayerTeleporterHereScout +{ + criteria ConceptPlayerTeleporterHere IsScout + Response PlayerTeleporterHereScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCryScout +{ + scene "scenes/Player/Scout/low/367.vcd" + scene "scenes/Player/Scout/low/369.vcd" + scene "scenes/Player/Scout/low/370.vcd" + scene "scenes/Player/Scout/low/371.vcd" + scene "scenes/Player/Scout/low/368.vcd" +} +Rule PlayerBattleCryScout +{ + criteria ConceptPlayerBattleCry IsScout + Response PlayerBattleCryScout +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatScout +{ + scene "scenes/Player/Scout/low/2584.vcd" + scene "scenes/Player/Scout/low/2579.vcd" + scene "scenes/Player/Scout/low/2580.vcd" + scene "scenes/Player/Scout/low/2582.vcd" + scene "scenes/Player/Scout/low/2583.vcd" + scene "scenes/Player/Scout/low/2581.vcd" + scene "scenes/Player/Scout/low/2642.vcd" + scene "scenes/Player/Scout/low/500.vcd" + scene "scenes/Player/Scout/low/494.vcd" + scene "scenes/Player/Scout/low/496.vcd" +} +Rule MeleeDareCombatScout +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsScout IsCrossHairEnemy + Response MeleeDareCombatScout +} +//End custom + +Response PlayerCheersScout +{ + scene "scenes/Player/Scout/low/372.vcd" + scene "scenes/Player/Scout/low/374.vcd" + scene "scenes/Player/Scout/low/375.vcd" + scene "scenes/Player/Scout/low/377.vcd" + scene "scenes/Player/Scout/low/376.vcd" + scene "scenes/Player/Scout/low/373.vcd" +} +Rule PlayerCheersScout +{ + criteria ConceptPlayerCheers IsScout + Response PlayerCheersScout +} + +Response PlayerGoodJobScout +{ + scene "scenes/Player/Scout/low/395.vcd" + scene "scenes/Player/Scout/low/396.vcd" + scene "scenes/Player/Scout/low/397.vcd" + scene "scenes/Player/Scout/low/1288.vcd" +} +Rule PlayerGoodJobScout +{ + criteria ConceptPlayerGoodJob IsScout + Response PlayerGoodJobScout +} + +Response PlayerJeersScout +{ + scene "scenes/Player/Scout/low/419.vcd" + scene "scenes/Player/Scout/low/420.vcd" + scene "scenes/Player/Scout/low/421.vcd" + scene "scenes/Player/Scout/low/422.vcd" + scene "scenes/Player/Scout/low/423.vcd" + scene "scenes/Player/Scout/low/424.vcd" + scene "scenes/Player/Scout/low/425.vcd" + scene "scenes/Player/Scout/low/426.vcd" + scene "scenes/Player/Scout/low/427.vcd" + scene "scenes/Player/Scout/low/428.vcd" + scene "scenes/Player/Scout/low/430.vcd" +} +Rule PlayerJeersScout +{ + criteria ConceptPlayerJeers IsScout + Response PlayerJeersScout +} + +Response PlayerLostPointScout +{ + scene "scenes/Player/Scout/low/451.vcd" + scene "scenes/Player/Scout/low/447.vcd" + scene "scenes/Player/Scout/low/449.vcd" + scene "scenes/Player/Scout/low/450.vcd" + scene "scenes/Player/Scout/low/448.vcd" +} +Rule PlayerLostPointScout +{ + criteria ConceptPlayerLostPoint IsScout + Response PlayerLostPointScout +} + +Response PlayerNegativeScout +{ + scene "scenes/Player/Scout/low/451.vcd" + scene "scenes/Player/Scout/low/447.vcd" + scene "scenes/Player/Scout/low/449.vcd" + scene "scenes/Player/Scout/low/450.vcd" + scene "scenes/Player/Scout/low/448.vcd" +} +Rule PlayerNegativeScout +{ + criteria ConceptPlayerNegative IsScout + Response PlayerNegativeScout +} + +Response PlayerNiceShotScout +{ + scene "scenes/Player/Scout/low/452.vcd" + scene "scenes/Player/Scout/low/453.vcd" + scene "scenes/Player/Scout/low/454.vcd" +} +Rule PlayerNiceShotScout +{ + criteria ConceptPlayerNiceShot IsScout + Response PlayerNiceShotScout +} + +Response PlayerPositiveScout +{ + scene "scenes/Player/Scout/low/1302.vcd" + scene "scenes/Player/Scout/low/467.vcd" + scene "scenes/Player/Scout/low/469.vcd" + scene "scenes/Player/Scout/low/470.vcd" + scene "scenes/Player/Scout/low/471.vcd" +} + +Response PlayerTauntsScout +{ + scene "scenes/Player/Scout/low/1298.vcd" + scene "scenes/Player/Scout/low/436.vcd" + scene "scenes/Player/Scout/low/437.vcd" + scene "scenes/Player/Scout/low/1299.vcd" + scene "scenes/Player/Scout/low/1300.vcd" + scene "scenes/Player/Scout/low/1301.vcd" +} +Rule PlayerPositiveScout +{ + criteria ConceptPlayerPositive IsScout + Response PlayerPositiveScout + Response PlayerTauntsScout +} + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompScout +{ + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_16.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_17.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_18.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_16.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_17.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_18.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_19.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_20.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_21.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_rare_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompScout +{ + criteria ConceptPlayerRoundStartComp IsScout IsFirstRound IsNotComp6v6 40PercentChance + Response PlayerFirstRoundStartCompScout +} + +Response PlayerFirstRoundStartComp6sScout +{ + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_16.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_17.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_18.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_16.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_17.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_18.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_19.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_20.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_21.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_rare_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_comp_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_6s_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_6s_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_6s_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_6s_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamefirst_6s_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartComp6sScout +{ + criteria ConceptPlayerRoundStartComp IsScout IsFirstRound IsComp6v6 40PercentChance + Response PlayerFirstRoundStartComp6sScout +} + +Response PlayerWonPrevRoundCompScout +{ + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_comp_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_comp_rare_02.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompScout +{ + criteria ConceptPlayerRoundStartComp IsScout IsNotFirstRound IsNotComp6v6 PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompScout +} + +Response PlayerWonPrevRoundComp6sScout +{ + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_comp_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_comp_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamewonlast_6s_02.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundComp6sScout +{ + criteria ConceptPlayerRoundStartComp IsScout IsNotFirstRound IsComp6v6 PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundComp6sScout +} + +Response PlayerLostPrevRoundCompScout +{ + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregamelostlast_rare_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompScout +{ + criteria ConceptPlayerRoundStartComp IsScout IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompScout +} + +Response PlayerTiedPrevRoundCompScout +{ + scene "scenes/Player/Scout/low/cm_scout_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregametie_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregametie_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregametie_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregametie_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_pregametie_07.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompScout +{ + criteria ConceptPlayerRoundStartComp IsScout IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompScout +} + +Response PlayerGameWinCompScout +{ + scene "scenes/Player/Scout/low/cm_scout_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_10.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_11.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_12.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_13.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_14.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_15.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_rare_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Scout/low/cm_scout_gamewon_rare_02.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompScout +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsScout 40PercentChance + Response PlayerGameWinCompScout +} + +Response PlayerMatchWinCompScout +{ + scene "scenes/Player/Scout/low/cm_scout_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_04.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_05.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_06.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_07.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_08.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_09.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Scout/low/cm_scout_matchwon_10.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompScout +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsScout 40PercentChance + Response PlayerMatchWinCompScout +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/scout_auto.lua b/gamemodes/tf/gamemode/contents/talker/scout_auto.lua new file mode 100644 index 000000000..62860fbe4 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/scout_auto.lua @@ -0,0 +1,182 @@ +//-------------------------------------------------------------------------------------------------------------- +// Scout Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + +Response item_unicorn_uberScout +{ + scene "scenes/Player/Scout/low/7030.vcd" + scene "scenes/Player/Scout/low/8517.vcd" +} +Rule item_unicorn_uberScout +{ + criteria ConceptMedicChargeDeployed IsScout IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsUnicornHead + Response item_unicorn_uberScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_haunthat_cappedScout +{ + scene "scenes/Player/Scout/low/7066.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Scout/low/7067.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Scout/low/7068.vcd" predelay "2.0, 4.0" +} +Rule item_haunthat_cappedScout +{ + criteria ConceptPlayerCapturedPoint IsScout IsHauntedHat + Response item_haunthat_cappedScout +} + +Response item_haunthat_case_capScout +{ + scene "scenes/Player/Scout/low/7061.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Scout/low/7063.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Scout/low/7064.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Scout/low/7065.vcd" predelay "2.0, 4.0" +} +Rule item_haunthat_case_capScout +{ + criteria ConceptPlayerCapturedIntelligence IsScout IsHauntedHat + Response item_haunthat_case_capScout +} + +Response item_haunthat_got_caseScout +{ + scene "scenes/Player/Scout/low/7054.vcd" + scene "scenes/Player/Scout/low/7055.vcd" + scene "scenes/Player/Scout/low/7057.vcd" +} +Rule item_haunthat_got_caseScout +{ + criteria ConceptPlayerGrabbedIntelligence IsScout NotScoutGrabbedIntelligence 10PercentChance IsHauntedHat + ApplyContext "ScoutGrabbedIntelligence:1:30" + Response item_haunthat_got_caseScout +} + +Response item_haunthat_round_startScout +{ + scene "scenes/Player/Scout/low/7039.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7041.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7042.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7043.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7044.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7045.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7046.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7047.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7048.vcd" predelay "1.0, 5.0" +} +Rule item_haunthat_round_startScout +{ + criteria ConceptPlayerRoundStart IsScout 100PercentChance IsHauntedHat + Response item_haunthat_round_startScout +} + +Response item_unicorn_round_startScout +{ + scene "scenes/Player/Scout/low/7018.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7019.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7020.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7021.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7025.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Scout/low/7022.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startScout +{ + criteria ConceptPlayerRoundStart IsScout 100PercentChance IsUnicornHead + Response item_unicorn_round_startScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Response item_haunthat_cart_pushScout +{ + scene "scenes/Player/Scout/low/7069.vcd" + scene "scenes/Player/Scout/low/7070.vcd" +} +Rule item_haunthat_cart_pushScout +{ + criteria ConceptCartMovingForward IsOnOffense IsScout ScoutNotSaidCartMovingForwardO 30PercentChance IsHauntedHat + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_haunthat_cart_pushScout +} + +Response item_unicorn_cart_forwardScout +{ + scene "scenes/Player/Scout/low/7026.vcd" +} +Rule item_unicorn_cart_forwardScout +{ + criteria ConceptCartMovingForward IsOnOffense IsScout ScoutNotSaidCartMovingForwardO 30PercentChance IsUnicornHead + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_unicorn_cart_forwardScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_haunthat_dominationScout +{ + scene "scenes/Player/Scout/low/7059.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7060.vcd" predelay "2.5" +} +Rule item_haunthat_dominationScout +{ + criteria ConceptKilledPlayer IsScout IsDominated 30PercentChance IsHauntedHat + ApplyContext "ScoutKillSpeech:1:10" + Response item_haunthat_dominationScout +} + +Response item_unicorn_dominationScout +{ + scene "scenes/Player/Scout/low/7031.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7032.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7033.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7034.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7035.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7037.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7036.vcd" predelay "2.5" + scene "scenes/Player/Scout/low/7038.vcd" predelay "2.5" +} +Rule item_unicorn_dominationScout +{ + criteria ConceptKilledPlayer IsScout IsDominated 30PercentChance IsUnicornHead + ApplyContext "ScoutKillSpeech:1:10" + Response item_unicorn_dominationScout +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response item_haunthat_on_fireScout +{ + scene "scenes/Player/Scout/low/7076.vcd" + scene "scenes/Player/Scout/low/7077.vcd" + scene "scenes/Player/Scout/low/7078.vcd" +} +Rule item_haunthat_on_fireScout +{ + criteria ConceptFire IsScout ScoutIsNotStillonFire IsHauntedHat + ApplyContext "ScoutOnFire:1:7" + Response item_haunthat_on_fireScout +} + +Response item_unicorn_on_fireScout +{ + scene "scenes/Player/Scout/low/7028.vcd" + scene "scenes/Player/Scout/low/7029.vcd" +} +Rule item_unicorn_on_fireScout +{ + criteria ConceptFire IsScout ScoutIsNotStillonFire IsUnicornHead + ApplyContext "ScoutOnFire:1:7" + Response item_unicorn_on_fireScout +} + diff --git a/gamemodes/tf/gamemode/contents/talker/sniper.lua b/gamemodes/tf/gamemode/contents/talker/sniper.lua new file mode 100644 index 000000000..61478dd1a --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/sniper.lua @@ -0,0 +1,2120 @@ +//-------------------------------------------------------------------------------------------------------------- +// Sniper Response Rule File +//-------------------------------------------------------------------------------------------------------------- + +Criterion "SniperIsNotStillonFire" "SniperOnFire" "!=1" "required" +Criterion "SniperIsStillonFire" "SniperOnFire" "1" "required" +Criterion "SniperNotKillSpeech" "SniperKillSpeech" "!=1" "required" +Criterion "SniperNotKillSpeechMelee" "SniperKillSpeechMelee" "!=1" "required" +Criterion "SniperNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "SniperNotSaidHealThanks" "SniperSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapSniper" "SniperHelpCap" "1" "required" +// Custom stuff +Criterion "SniperNotInvulnerableSpeech" "SniperInvulnerableSpeech" "!=1" "required" +Criterion "SniperNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "SniperNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "SniperNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "SniperNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "SniperNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Criterion "SniperNotAwardSpeech" "SniperAwardSpeech" "!=1" "required" +Criterion "SniperNotAssistSpeech" "SniperAssistSpeech" "!=1" "required" +Criterion "SniperNotHoldStill" "SniperHoldStill" "!=1" "required" + + +Response PlayerCloakedSpyDemomanSniper +{ + scene "scenes/Player/Sniper/low/1633.vcd" +} +Rule PlayerCloakedSpyDemomanSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnDemoman + Response PlayerCloakedSpyDemomanSniper +} + +Response PlayerCloakedSpyEngineerSniper +{ + scene "scenes/Player/Sniper/low/1636.vcd" +} +Rule PlayerCloakedSpyEngineerSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnEngineer + Response PlayerCloakedSpyEngineerSniper +} + +Response PlayerCloakedSpyHeavySniper +{ + scene "scenes/Player/Sniper/low/1631.vcd" +} +Rule PlayerCloakedSpyHeavySniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnHeavy + Response PlayerCloakedSpyHeavySniper +} + +Response PlayerCloakedSpyMedicSniper +{ + scene "scenes/Player/Sniper/low/1635.vcd" +} +Rule PlayerCloakedSpyMedicSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnMedic + Response PlayerCloakedSpyMedicSniper +} + +Response PlayerCloakedSpyPyroSniper +{ + scene "scenes/Player/Sniper/low/1632.vcd" +} +Rule PlayerCloakedSpyPyroSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnPyro + Response PlayerCloakedSpyPyroSniper +} + +Response PlayerCloakedSpyScoutSniper +{ + scene "scenes/Player/Sniper/low/1629.vcd" +} +Rule PlayerCloakedSpyScoutSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnScout + Response PlayerCloakedSpyScoutSniper +} + +Response PlayerCloakedSpySniperSniper +{ + scene "scenes/Player/Sniper/low/1637.vcd" +} +Rule PlayerCloakedSpySniperSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnSniper + Response PlayerCloakedSpySniperSniper +} + +Response PlayerCloakedSpySoldierSniper +{ + scene "scenes/Player/Sniper/low/1630.vcd" +} +Rule PlayerCloakedSpySoldierSniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnSoldier + Response PlayerCloakedSpySoldierSniper +} + +Response PlayerCloakedSpySpySniper +{ + scene "scenes/Player/Sniper/low/1634.vcd" +} +Rule PlayerCloakedSpySpySniper +{ + criteria ConceptPlayerCloakedSpy IsSniper IsOnSpy + Response PlayerCloakedSpySpySniper +} + + +// Modified to only have whisper lines when headshot with rifle. +// Other lines for when you get a kill with rifle/bow against a Soldier. +Response SniperKillSoldier +{ + scene "scenes/Player/Sniper/low/1719.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1727.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1731.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1757.vcd" predelay "1" +} +Rule SniperKillSoldier +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperRifle 50PercentChance IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillSoldier +} +Rule SniperKillSoldierClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle 50PercentChance IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillSoldier +} +Rule SniperKillSoldierBow +{ + criteria ConceptKilledPlayer IsSniper WeaponIsBow 50PercentChance IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillSoldier +} + +Response SniperHeadShotKillSoldier +{ + scene "scenes/Player/Sniper/low/1725.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1807.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1803.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1831.vcd" predelay "1.75" +} +Rule SniperHeadShotKillSoldier +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot 50PercentChance IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + Response SniperHeadShotKillSoldier +} +Rule SniperHeadShotKillSoldierClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle IsHeadShot 50PercentChance IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + Response SniperHeadShotKillSoldier +} + +// Same for the Heavy + +Response SniperKillHeavy +{ + scene "scenes/Player/Sniper/low/1758.vcd" predelay "1" +} +Rule SniperKillHeavy +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperRifle 50PercentChance IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillHeavy +} +Rule SniperKillHeavyClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle 50PercentChance IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillHeavy +} +Rule SniperKillHeavyBow +{ + criteria ConceptKilledPlayer IsSniper WeaponIsBow 50PercentChance IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillHeavy +} + +Response SniperHeadShotKillHeavy +{ + scene "scenes/Player/Sniper/low/1832.vcd" predelay "1.75" +} +Rule SniperHeadShotKillHeavy +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot 50PercentChance IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + Response SniperHeadShotKillHeavy +} +Rule SniperHeadShotKillHeavyClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle IsHeadShot 50PercentChance IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + Response SniperHeadShotKillHeavy +} + +// Modified to only have whisper lines when headshot with rifle. +// Other lines for when you get a kill with any weapon against a Spy. +Response SniperKillSpy +{ + scene "scenes/Player/Sniper/low/1712.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1723.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1729.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1732.vcd" predelay "1" +} +Rule SniperKillSpy +{ + criteria ConceptKilledPlayer IsSniper 50PercentChance IsVictimSpy + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillSpy +} + +Response SniperHeadShotKillSpy +{ + scene "scenes/Player/Sniper/low/1805.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1806.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1808.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1798.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1799.vcd" predelay "1.75" +} +Rule SniperHeadShotKillSpy +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot 50PercentChance IsVictimSpy + ApplyContext "SniperKillSpeech:1:10" + Response SniperHeadShotKillSpy +} +Rule SniperHeadShotKillSpyClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle IsHeadShot 50PercentChance IsVictimSpy + ApplyContext "SniperKillSpeech:1:10" + Response SniperHeadShotKillSpy +} + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksSniper +{ + scene "scenes/Player/Sniper/low/1761.vcd" + scene "scenes/Player/Sniper/low/1762.vcd" + scene "scenes/Player/Sniper/low/1763.vcd" +} +Rule HealThanksSniper +{ + criteria ConceptMedicChargeStopped IsSniper SuperHighHealthContext SniperNotSaidHealThanks 50PercentChance + ApplyContext "SniperSaidHealThanks:1:20" + Response HealThanksSniper +} + +// Custom achievement stuff +Response AwardSniper +{ + scene "scenes/Player/Sniper/low/2298.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2299.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2339.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2340.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2341.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2343.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2344.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2346.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2347.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2350.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2351.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2423.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2436.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2453.vcd" predelay "2.5" +} +Rule AwardSniper +{ + criteria ConceptAchievementAward IsSniper SniperNotAwardSpeech + ApplyContext "SniperAwardSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response AwardSniper +} +//End custom achievement + +Response PlayerRoundStartSniper +{ + scene "scenes/Player/Sniper/low/1612.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/1613.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/1614.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/1615.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/1616.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/1617.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartSniper +{ + criteria ConceptPlayerRoundStart IsSniper + Response PlayerRoundStartSniper +} + +Response PlayerCappedIntelligenceSniper +{ + scene "scenes/Player/Sniper/low/1603.vcd" + scene "scenes/Player/Sniper/low/1604.vcd" + scene "scenes/Player/Sniper/low/1605.vcd" + scene "scenes/Player/Sniper/low/1771.vcd" + scene "scenes/Player/Sniper/low/1772.vcd" +} +Rule PlayerCappedIntelligenceSniper +{ + criteria ConceptPlayerCapturedIntelligence IsSniper + Response PlayerCappedIntelligenceSniper +} + +Response PlayerCapturedPointSniper +{ + scene "scenes/Player/Sniper/low/1600.vcd" + scene "scenes/Player/Sniper/low/1601.vcd" + scene "scenes/Player/Sniper/low/1602.vcd" +} +Rule PlayerCapturedPointSniper +{ + criteria ConceptPlayerCapturedPoint IsSniper + Response PlayerCapturedPointSniper +} + +Response PlayerSuddenDeathSniper +{ + scene "scenes/Player/Sniper/low/1662.vcd" + scene "scenes/Player/Sniper/low/1663.vcd" + scene "scenes/Player/Sniper/low/1664.vcd" + scene "scenes/Player/Sniper/low/1665.vcd" + scene "scenes/Player/Sniper/low/1666.vcd" + scene "scenes/Player/Sniper/low/1667.vcd" + scene "scenes/Player/Sniper/low/1668.vcd" + scene "scenes/Player/Sniper/low/1669.vcd" +} +Rule PlayerSuddenDeathSniper +{ + criteria ConceptPlayerSuddenDeathStart IsSniper + Response PlayerSuddenDeathSniper +} + +Response PlayerStalemateSniper +{ + scene "scenes/Player/Sniper/low/1606.vcd" + scene "scenes/Player/Sniper/low/1607.vcd" + scene "scenes/Player/Sniper/low/1608.vcd" +} +Rule PlayerStalemateSniper +{ + criteria ConceptPlayerStalemate IsSniper + Response PlayerStalemateSniper +} + +Response PlayerTeleporterThanksSniper +{ + scene "scenes/Player/Sniper/low/1764.vcd" + scene "scenes/Player/Sniper/low/1765.vcd" + scene "scenes/Player/Sniper/low/1766.vcd" +} +Rule PlayerTeleporterThanksSniper +{ + criteria ConceptTeleported IsNotEngineer IsSniper 30PercentChance + Response PlayerTeleporterThanksSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Response CartMovingBackwardsDefenseSniper +{ + scene "scenes/Player/Sniper/low/2334.vcd" + scene "scenes/Player/Sniper/low/2335.vcd" + scene "scenes/Player/Sniper/low/2336.vcd" + scene "scenes/Player/Sniper/low/2352.vcd" + scene "scenes/Player/Sniper/low/2431.vcd" + scene "scenes/Player/Sniper/low/2432.vcd" + scene "scenes/Player/Sniper/low/2444.vcd" + scene "scenes/Player/Sniper/low/2445.vcd" +} +Rule CartMovingBackwardsDefenseSniper +{ + criteria ConceptCartMovingBackward IsOnDefense IsSniper + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseSniper +} + +// Custom added stuff +// We fire this response if the Sniper is scoped, these are softer versions of the normal lines. +Response CartMovingBackwardsDefenseScopedSniper +{ + scene "scenes/Player/Sniper/low/2518.vcd" + scene "scenes/Player/Sniper/low/2519.vcd" + scene "scenes/Player/Sniper/low/2520.vcd" + scene "scenes/Player/Sniper/low/2521.vcd" + scene "scenes/Player/Sniper/low/2540.vcd" + scene "scenes/Player/Sniper/low/2541.vcd" + scene "scenes/Player/Sniper/low/2542.vcd" + scene "scenes/Player/Sniper/low/2543.vcd" +} +Rule CartMovingBackwardsDefenseScopedSniper +{ + criteria ConceptCartMovingBackward IsOnDefense IsSniper DeployedContext + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseScopedSniper +} + +// Offense backwards +Response CartMovingBackwardsOffenseSniper +{ + scene "scenes/Player/Sniper/low/2331.vcd" + scene "scenes/Player/Sniper/low/2332.vcd" + scene "scenes/Player/Sniper/low/2333.vcd" + scene "scenes/Player/Sniper/low/2353.vcd" + scene "scenes/Player/Sniper/low/2354.vcd" + scene "scenes/Player/Sniper/low/2429.vcd" + scene "scenes/Player/Sniper/low/2430.vcd" +} +Rule CartMovingBackwardsOffenseSniper +{ + criteria ConceptCartMovingBackward IsOnOffense IsSniper Unzoomed + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseSniper +} + +Response CartMovingBackwardsOffenseScopedSniper +{ + scene "scenes/Player/Sniper/low/2515.vcd" + scene "scenes/Player/Sniper/low/2516.vcd" + scene "scenes/Player/Sniper/low/2517.vcd" + scene "scenes/Player/Sniper/low/2522.vcd" + scene "scenes/Player/Sniper/low/2523.vcd" + scene "scenes/Player/Sniper/low/2538.vcd" + scene "scenes/Player/Sniper/low/2539.vcd" +} +Rule CartMovingBackwardsOffenseScopedSniper +{ + criteria ConceptCartMovingBackward IsOnOffense IsSniper DeployedContext + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseScopedSniper +} + +// Defense forward +Response CartMovingForwardDefenseSniper +{ + scene "scenes/Player/Sniper/low/2328.vcd" + scene "scenes/Player/Sniper/low/2329.vcd" + scene "scenes/Player/Sniper/low/2330.vcd" + scene "scenes/Player/Sniper/low/2355.vcd" + scene "scenes/Player/Sniper/low/2446.vcd" + scene "scenes/Player/Sniper/low/2447.vcd" +} +Rule CartMovingForwardDefenseSniper +{ + criteria ConceptCartMovingForward IsOnDefense IsSniper Unzoomed + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseSniper +} + +Response CartMovingForwardDefenseScopedSniper +{ + scene "scenes/Player/Sniper/low/2512.vcd" + scene "scenes/Player/Sniper/low/2513.vcd" + scene "scenes/Player/Sniper/low/2514.vcd" + scene "scenes/Player/Sniper/low/2524.vcd" + scene "scenes/Player/Sniper/low/2544.vcd" + scene "scenes/Player/Sniper/low/2545.vcd" +} +Rule CartMovingForwardDefenseSniper +{ + criteria ConceptCartMovingForward IsOnDefense IsSniper DeployedContext + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseScopedSniper +} + +// Offense forward + +Response CartMovingForwardOffenseSniper +{ + scene "scenes/Player/Sniper/low/2307.vcd" + scene "scenes/Player/Sniper/low/2308.vcd" + scene "scenes/Player/Sniper/low/2309.vcd" + scene "scenes/Player/Sniper/low/2402.vcd" + scene "scenes/Player/Sniper/low/2403.vcd" + scene "scenes/Player/Sniper/low/2404.vcd" + scene "scenes/Player/Sniper/low/2406.vcd" + scene "scenes/Player/Sniper/low/2407.vcd" + scene "scenes/Player/Sniper/low/2408.vcd" + scene "scenes/Player/Sniper/low/2409.vcd" + scene "scenes/Player/Sniper/low/2301.vcd" + scene "scenes/Player/Sniper/low/2302.vcd" + scene "scenes/Player/Sniper/low/2303.vcd" + scene "scenes/Player/Sniper/low/2416.vcd" + scene "scenes/Player/Sniper/low/2424.vcd" + scene "scenes/Player/Sniper/low/2425.vcd" + scene "scenes/Player/Sniper/low/2454.vcd" +} +Rule CartMovingForwardOffenseSniper +{ + criteria ConceptCartMovingForward IsOnOffense IsSniper Unzoomed + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseSniper +} + +Response CartMovingForwardOffenseScopedSniper +{ + scene "scenes/Player/Sniper/low/2506.vcd" + scene "scenes/Player/Sniper/low/2507.vcd" + scene "scenes/Player/Sniper/low/2508.vcd" + scene "scenes/Player/Sniper/low/2525.vcd" + scene "scenes/Player/Sniper/low/2526.vcd" + scene "scenes/Player/Sniper/low/2527.vcd" + scene "scenes/Player/Sniper/low/2529.vcd" + scene "scenes/Player/Sniper/low/2530.vcd" + scene "scenes/Player/Sniper/low/2531.vcd" + scene "scenes/Player/Sniper/low/2532.vcd" + scene "scenes/Player/Sniper/low/2500.vcd" + scene "scenes/Player/Sniper/low/2501.vcd" + scene "scenes/Player/Sniper/low/2502.vcd" + scene "scenes/Player/Sniper/low/2535.vcd" + scene "scenes/Player/Sniper/low/2536.vcd" + scene "scenes/Player/Sniper/low/2537.vcd" + scene "scenes/Player/Sniper/low/2546.vcd" +} +Rule CartMovingForwardOffenseScopedSniper +{ + criteria ConceptCartMovingForward IsOnOffense IsSniper DeployedContext + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseScopedSniper +} +// Cart stopped Defense + +Response CartMovingStoppedDefenseSniper +{ + scene "scenes/Player/Sniper/low/2310.vcd" + scene "scenes/Player/Sniper/low/2311.vcd" + scene "scenes/Player/Sniper/low/2312.vcd" + scene "scenes/Player/Sniper/low/2414.vcd" + scene "scenes/Player/Sniper/low/2455.vcd" + scene "scenes/Player/Sniper/low/2456.vcd" +} +Rule CartMovingStoppedDefenseSniper +{ + criteria ConceptCartMovingStopped IsOnDefense IsSniper Unzoomed + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseSniper +} + +Response CartMovingStoppedDefenseScopedSniper +{ + scene "scenes/Player/Sniper/low/2509.vcd" + scene "scenes/Player/Sniper/low/2510.vcd" + scene "scenes/Player/Sniper/low/2511.vcd" + scene "scenes/Player/Sniper/low/2533.vcd" + scene "scenes/Player/Sniper/low/2558.vcd" +} +Rule CartMovingStoppedDefenseScopedSniper +{ + criteria ConceptCartMovingStopped IsOnDefense IsSniper DeployedContext + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseScopedSniper +} + +// Cart stopped Offense + +Response CartMovingStoppedOffenseSniper +{ + scene "scenes/Player/Sniper/low/2304.vcd" + scene "scenes/Player/Sniper/low/2305.vcd" + scene "scenes/Player/Sniper/low/2306.vcd" + scene "scenes/Player/Sniper/low/2415.vcd" + scene "scenes/Player/Sniper/low/2457.vcd" +} +Rule CartMovingStoppedOffenseSniper +{ + criteria ConceptCartMovingStopped IsOnOffense IsSniper Unzoomed + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseSniper +} + +Response CartMovingStoppedOffenseScopedSniper +{ + scene "scenes/Player/Sniper/low/2503.vcd" + scene "scenes/Player/Sniper/low/2504.vcd" + scene "scenes/Player/Sniper/low/2505.vcd" + scene "scenes/Player/Sniper/low/2534.vcd" + scene "scenes/Player/Sniper/low/2549.vcd" +} +Rule CartMovingStoppedOffenseScopedSniper +{ + criteria ConceptCartMovingStopped IsOnOffense IsSniper DeployedContext SniperNotSaidCartMovingStoppedO IsNotDisguised 75PercentChance + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseScopedSniper +} +// End custom + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointSniper +{ + scene "scenes/Player/Sniper/low/1736.vcd" + scene "scenes/Player/Sniper/low/1737.vcd" +} +Rule DefendOnThePointSniper +{ + criteria ConceptFireWeapon IsSniper IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointSniper +} + +// Custom stuff + +Response InvulnerableSpeechSniper +{ + scene "scenes/Player/Sniper/low/1750.vcd" + scene "scenes/Player/Sniper/low/1751.vcd" + scene "scenes/Player/Sniper/low/1754.vcd" + scene "scenes/Player/Sniper/low/1756.vcd" +} +Rule InvulnerableSpeechSniper +{ + criteria ConceptFireWeapon IsSniper IsInvulnerable 20PercentChance + ApplyContext "SniperInvulnerableSpeech:1:30" + Response InvulnerableSpeechSniper +} + +// End custom + +Response KilledPlayerManySniper +{ + scene "scenes/Player/Sniper/low/1670.vcd" + scene "scenes/Player/Sniper/low/1671.vcd" + scene "scenes/Player/Sniper/low/1672.vcd" + scene "scenes/Player/Sniper/low/1673.vcd" + scene "scenes/Player/Sniper/low/1674.vcd" + scene "scenes/Player/Sniper/low/1675.vcd" + scene "scenes/Player/Sniper/low/1715.vcd" + scene "scenes/Player/Sniper/low/1726.vcd" + scene "scenes/Player/Sniper/low/1810.vcd" +} +Rule KilledPlayerManySniper +{ + criteria ConceptKilledPlayer IsManyRecentKills IsWeaponPrimary IsSniper + ApplyContext "SniperKillSpeech:1:10" + Response KilledPlayerManySniper +} + +// Custom stuff +// Allow the Huntsman to use the above response group +Rule KilledPlayerManySniperBow +{ + criteria ConceptKilledPlayer IsManyRecentKills WeaponIsBow IsSniper + ApplyContext "SniperKillSpeech:1:10" + Response KilledPlayerManySniper +} + +// End custom + +Response KilledPlayerMeleeSniper +{ + scene "scenes/Player/Sniper/low/1717.vcd" + scene "scenes/Player/Sniper/low/1720.vcd" +} +Rule KilledPlayerMeleeSniper +{ + criteria ConceptKilledPlayer 30PercentChance IsWeaponMelee IsSniper + ApplyContext "SniperKillSpeechMelee:1:10" + Response KilledPlayerMeleeSniper +} + +Response KilledPlayerSaxxySniper +{ + scene "scenes/Player/Sniper/low/1718.vcd" + scene "scenes/Player/Sniper/low/1675.vcd" + scene "scenes/Player/Sniper/low/1670.vcd" + scene "scenes/Player/Sniper/low/1671.vcd" + scene "scenes/Player/Sniper/low/1674.vcd" +} +Rule KilledPlayerSaxxySniper +{ + criteria ConceptKilledPlayer 30PercentChance WeaponIsSaxxy IsSniper + ApplyContext "SniperKillSpeechMelee:1:10" + Response KilledPlayerSaxxySniper +} + +// Custom stuff +// Shiv kill + +Response KilledPlayerShivSniper +{ + scene "scenes/Player/Sniper/low/2387.vcd" +} +Rule KilledPlayerShivSniper +{ + criteria ConceptKilledPlayer 30PercentChance IsWeaponMelee WeaponIsShivMelee IsSniper + ApplyContext "SniperKillSpeechMelee:1:10" + Response KilledPlayerShivSniper + Response KilledPlayerMeleeSniper +} + +// End custom + +Response KilledPlayerVeryManySniper +{ + scene "scenes/Player/Sniper/low/1714.vcd" + scene "scenes/Player/Sniper/low/1718.vcd" + scene "scenes/Player/Sniper/low/1721.vcd" + scene "scenes/Player/Sniper/low/1742.vcd" + scene "scenes/Player/Sniper/low/1743.vcd" + scene "scenes/Player/Sniper/low/1744.vcd" + scene "scenes/Player/Sniper/low/1748.vcd" + scene "scenes/Player/Sniper/low/1755.vcd" +} +Rule KilledPlayerVeryManySniper +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary IsSniper + ApplyContext "SniperKillSpeech:1:10" + Response KilledPlayerVeryManySniper +} + +// Custom stuff +// Allow the Huntsman to use the above response group +Rule KilledPlayerVeryManySniperBow +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance WeaponIsBow IsSniper + ApplyContext "SniperKillSpeech:1:10" + Response KilledPlayerVeryManySniper +} + +Response MedicFollowSniper +{ + scene "scenes/Player/Sniper/low/2277.vcd" predelay ".25" + scene "scenes/Player/Sniper/low/2278.vcd" predelay ".25" + scene "scenes/Player/Sniper/low/2279.vcd" predelay ".25" + scene "scenes/Player/Sniper/low/2280.vcd" predelay ".25" + scene "scenes/Player/Sniper/low/2281.vcd" predelay ".25" +} +Rule MedicFollowSniper +{ + criteria ConceptPlayerMedic IsOnMedic IsSniper IsNotCrossHairEnemy NotLowHealth SniperIsNotStillonFire + ApplyContext "SniperKillSpeech:1:10" + Response MedicFollowSniper +} + +// Custom stuff +Response SniperJarateHit +{ + scene "scenes/Player/Sniper/low/1608.vcd" + scene "scenes/Player/Sniper/low/1688.vcd" + scene "scenes/Player/Sniper/low/1689.vcd" +} +Rule SniperJarateHit +{ + criteria ConceptJarateHit IsSniper 50PercentChance + Response SniperJarateHit +} + +Response SniperJarateHitScoped +{ + scene "scenes/Player/Sniper/low/1780.vcd" + scene "scenes/Player/Sniper/low/1690.vcd" + scene "scenes/Player/Sniper/low/1778.vcd" +} +Rule SniperJarateHitScoped +{ + criteria ConceptJarateHit IsSniper DeployedContext + Response SniperJarateHitScoped +} +// End custom + +Response PlayerJarateToss +{ + scene "scenes/Player/Sniper/low/3131.vcd" + scene "scenes/Player/Sniper/low/3132.vcd" + scene "scenes/Player/Sniper/low/3133.vcd" +} +Rule PlayerJarateToss +{ + criteria ConceptJarateLaunch IsSniper + Response PlayerJarateToss +} + +Response PlayerKilledCapperSniper +{ + scene "scenes/Player/Sniper/low/1614.vcd" + scene "scenes/Player/Sniper/low/1619.vcd" + scene "scenes/Player/Sniper/low/1620.vcd" + scene "scenes/Player/Sniper/low/1710.vcd" + scene "scenes/Player/Sniper/low/1733.vcd" +} +Rule PlayerKilledCapperSniper +{ + criteria ConceptCapBlocked IsSniper + ApplyContext "SniperKillSpeech:1:10" + Response PlayerKilledCapperSniper +} + +// Custom stuff +Response KilledPlayerAssistAutoSniper +{ + scene "scenes/Player/Sniper/low/1734.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1735.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoSniper +{ + criteria ConceptKilledPlayer IsSniper IsBeingHealed IsARecentKill 20PercentChance SniperNotAssistSpeech + ApplyContext "SniperAssistSpeech:1:20" + Response KilledPlayerAssistAutoSniper +} +// End custom + +Response KilledPlayerSMGSniper +{ + scene "scenes/Player/Sniper/low/2461.vcd" +} +Rule KilledPlayerSMGSniper +{ + criterion ConceptKilledPlayer 5PercentChance IsSniper WeaponIsSMG + ApplyContext "SniperKillSpeech:1:10" + Response KilledPlayerSMGSniper +} + +Response KilledPlayerDominatingSniper +{ + scene "scenes/Player/Sniper/low/2292.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2293.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2294.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2356.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2357.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2358.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2360.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2362.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2363.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2364.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2365.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2366.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2367.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2385.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2397.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2417.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2434.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2458.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2459.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2460.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2462.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2463.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2464.vcd" predelay "2.5" + +} +Rule KilledPlayerDominatingSniper +{ + criterion ConceptKilledPlayer IsSniper DeployedContext 50PercentChance IsDominated + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response KilledPlayerDominatingSniper +} +// End custom + +Response PlayerKilledDominatingDemomanSniper +{ + scene "scenes/Player/Sniper/low/3080.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3081.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3082.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3083.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3084.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemomanSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimDemoman + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemomanSniper +} + +Response PlayerKilledDominatingEngineerSniper +{ + scene "scenes/Player/Sniper/low/3085.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3086.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3087.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3088.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3089.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3090.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingEngineerSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimEngineer + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingEngineerSniper +} + +Response PlayerKilledDominatingHeavySniper +{ + scene "scenes/Player/Sniper/low/3091.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3092.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3093.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3094.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3095.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3096.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3097.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavySniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavySniper +} + +Response PlayerKilledDominatingMedicSniper +{ + scene "scenes/Player/Sniper/low/3098.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3099.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3100.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3101.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3102.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedicSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimMedic + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedicSniper +} + +Response PlayerKilledDominatingPyroSniper +{ + scene "scenes/Player/Sniper/low/3103.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3104.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3105.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3106.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3107.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyroSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimPyro + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyroSniper +} + +Response PlayerKilledDominatingScoutSniper +{ + scene "scenes/Player/Sniper/low/3108.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3109.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3110.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3111.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3112.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScoutSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimScout + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScoutSniper +} + +Response PlayerKilledDominatingSniperSniper +{ + scene "scenes/Player/Sniper/low/2366.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2397.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2417.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2434.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3113.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3114.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3115.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3116.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3117.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSniperSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimSniper + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSniperSniper +} + +Response PlayerKilledDominatingSoldierSniper +{ + scene "scenes/Player/Sniper/low/3118.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3119.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3120.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3121.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3122.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3123.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldierSniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldierSniper +} + +Response PlayerKilledDominatingSpySniper +{ + scene "scenes/Player/Sniper/low/3124.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3125.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3126.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3127.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3128.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3129.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/3130.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSpySniper +{ + criteria ConceptKilledPlayer IsSniper IsDominated IsVictimSpy + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSpySniper +} + +// Custom stuff +// Directed revenge lines +Response PlayerKilledForRevengeSniperSniper +{ + scene "scenes/Player/Sniper/low/2466.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2468.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2469.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2473.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSniperSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimSniper + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSniperSniper +} + +Response PlayerKilledForRevengeSpySniper +{ + scene "scenes/Player/Sniper/low/2381.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2383.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2384.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2391.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2325.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSpySniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimSpy + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSpySniper +} + +Response PlayerKilledForRevengeScoutSniper +{ + scene "scenes/Player/Sniper/low/2296.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2394.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2475.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeScoutSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimScout + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeScoutSniper +} + +Response PlayerKilledForRevengeDemomanSniper +{ + scene "scenes/Player/Sniper/low/2295.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2386.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeDemomanSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimDemoman + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeDemomanSniper +} + +Response PlayerKilledForRevengeEngineerSniper +{ + scene "scenes/Player/Sniper/low/2393.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeEngineerSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimEngineer + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeEngineerSniper +} + +Response PlayerKilledForRevengeSoldierSniper +{ + scene "scenes/Player/Sniper/low/2390.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2472.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSoldierSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimSoldier + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSoldierSniper +} + +Response PlayerKilledForRevengeMedicSniper +{ + scene "scenes/Player/Sniper/low/2474.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeMedicSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimMedic + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeMedicSniper +} + +Response PlayerKilledForRevengePyroSniper +{ + scene "scenes/Player/Sniper/low/2392.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2395.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2467.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengePyroSniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimPyro + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengePyroSniper +} + +Response PlayerKilledForRevengeHeavySniper +{ + scene "scenes/Player/Sniper/low/2465.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2471.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/2465.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeHeavySniper +{ + criterion ConceptKilledPlayer IsSniper IsRevenge IsVictimHeavy + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeHeavySniper +} + +// End directed revenge lines + +Response PlayerKilledForRevengeSniper +{ + scene "scenes/Player/Sniper/low/1622.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1641.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1708.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1709.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1741.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1740.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1752.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1753.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSniper +{ + criteria ConceptKilledPlayer IsSniper IsRevenge 50PercentChance + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSniper +} + +// Scoped revenge lines, whispers +Response PlayerKilledForRevengeSoftSniper +{ + scene "scenes/Player/Sniper/low/1814.vcd" predelay "2.5" + scene "scenes/Player/Sniper/low/1815.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSoftSniper +{ + criteria ConceptKilledPlayer IsSniper IsRevenge DeployedContext 50PercentChance + ApplyContext "SniperKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSoftSniper + Response PlayerKilledForRevengeSniper +} + +// Here we have normal kills, normal scoped kills and headshots +// Scoped kills are whisper lines, normal kills are not +// So Huntsman kills shouldn't be whispers +// Only headshot kills use all three response groups, to spice things up + +Response SniperKill +{ + scene "scenes/Player/Sniper/low/1724.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1834.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1759.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1745.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1746.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1747.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1750.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1751.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1754.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1756.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1739.vcd" predelay "1" +} + +Response SniperKillSoft +{ + scene "scenes/Player/Sniper/low/1809.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1813.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1826.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1827.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1828.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1816.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1817.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1818.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1819.vcd" predelay "1" + scene "scenes/Player/Sniper/low/1820.vcd" predelay "1" +} + +Rule SniperKill +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle 20PercentChance + ApplyContext "SniperKillSpeech:1:10" + Response SniperKill +} +Rule SniperKillClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle 20PercentChance + ApplyContext "SniperKillSpeech:1:10" + Response SniperKill +} + +Rule SniperKillSoft +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle DeployedContext 20PercentChance + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillSoft +} +Rule SniperKillSoftClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle DeployedContext 20PercentChance + ApplyContext "SniperKillSpeech:1:10" + Response SniperKillSoft +} + +Rule SniperKillBow +{ + criteria ConceptKilledPlayer IsSniper WeaponIsBow 20PercentChance + ApplyContext "SniperKillSpeech:1:10" + Response SniperKill +} + +Response SniperHeadShotKill +{ + scene "scenes/Player/Sniper/low/1790.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1795.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1801.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1802.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1713.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1728.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1789.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1791.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1792.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1800.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1811.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1738.vcd" predelay "1.75" + scene "scenes/Player/Sniper/low/1812.vcd" predelay "1.75" +} +Rule SniperHeadShotKill +{ + criteria ConceptKilledPlayer IsSniper WeaponIsSniperrifle IsHeadShot + ApplyContext "SniperKillSpeech:1:20" + Response SniperHeadShotKill + Response SniperKillSoft + Response SniperKill +} +Rule SniperHeadShotKillClassic +{ + criteria ConceptKilledPlayer IsSniper WeaponIsClassicSniperrifle IsHeadShot + ApplyContext "SniperKillSpeech:1:20" + Response SniperHeadShotKill + Response SniperKillSoft + Response SniperKill +} + +// Response to play when looking at enemy in scope + +Response SniperHoldStill +{ + scene "scenes/Player/Sniper/low/1835.vcd" + scene "scenes/Player/Sniper/low/1804.vcd" + scene "scenes/Player/Sniper/low/1833.vcd" + scene "scenes/Player/Sniper/low/1829.vcd" + scene "scenes/Player/Sniper/low/1830.vcd" + scene "scenes/Player/Sniper/low/1821.vcd" + scene "scenes/Player/Sniper/low/1822.vcd" + scene "scenes/Player/Sniper/low/1823.vcd" + scene "scenes/Player/Sniper/low/1824.vcd" + scene "scenes/Player/Sniper/low/1825.vcd" +} +Rule SniperHoldStill +{ + criteria ConceptPlayerExpression IsSniper IsCrossHairEnemy DeployedContext SniperNotHoldStill + ApplyContext "SniperHoldStill:1:10" + Response SniperHoldStill +} + +// End custom + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainSniper +{ + scene "scenes/Player/Sniper/low/1700.vcd" + scene "scenes/Player/Sniper/low/1701.vcd" + scene "scenes/Player/Sniper/low/1702.vcd" + scene "scenes/Player/Sniper/low/1838.vcd" +} +Rule PlayerAttackerPainSniper +{ + criteria ConceptAttackerPain IsSniper + Response PlayerAttackerPainSniper +} + +Response PlayerOnFireSniper +{ + scene "scenes/Player/Sniper/low/1609.vcd" + scene "scenes/Player/Sniper/low/1610.vcd" + scene "scenes/Player/Sniper/low/1611.vcd" +} +Rule PlayerOnFireSniper +{ + criteria ConceptFire IsSniper SniperIsNotStillonFire + ApplyContext "SniperOnFire:1:7" + Response PlayerOnFireSniper +} + +Response PlayerPainSniper +{ + scene "scenes/Player/Sniper/low/1705.vcd" + scene "scenes/Player/Sniper/low/1704.vcd" + scene "scenes/Player/Sniper/low/1703.vcd" + scene "scenes/Player/Sniper/low/1837.vcd" +} +Rule PlayerPainSniper +{ + criteria ConceptPain IsSniper + Response PlayerPainSniper +} + +Response PlayerStillOnFireSniper +{ + scene "scenes/Player/Sniper/low/1929.vcd" +} +Rule PlayerStillOnFireSniper +{ + criteria ConceptFire IsSniper SniperIsStillonFire + ApplyContext "SniperOnFire:1:7" + Response PlayerStillOnFireSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelSniper +{ + scene "scenes/Player/Sniper/low/2340.vcd" + scene "scenes/Player/Sniper/low/2341.vcd" + scene "scenes/Player/Sniper/low/2351.vcd" + scene "scenes/Player/Sniper/low/1613.vcd" + scene "scenes/Player/Sniper/low/1614.vcd" + scene "scenes/Player/Sniper/low/2321.vcd" + scene "scenes/Player/Sniper/low/2389.vcd" + scene "scenes/Player/Sniper/low/1749.vcd" + scene "scenes/Player/Sniper/low/1768.vcd" + scene "scenes/Player/Sniper/low/1769.vcd" +} +Rule AcceptedDuelSniper +{ + criteria ConceptIAcceptDuel IsSniper + Response AcceptedDuelSniper +} + +Response MeleeDareSniper +{ + scene "scenes/Player/Sniper/low/2320.vcd" + scene "scenes/Player/Sniper/low/2369.vcd" + scene "scenes/Player/Sniper/low/2372.vcd" + scene "scenes/Player/Sniper/low/2373.vcd" +} +Rule MeleeDareSniper +{ + criteria ConceptRequestDuel IsSniper + Response MeleeDareSniper +} + +Response RejectedDuelSniper +{ + scene "scenes/Player/Sniper/low/1606.vcd" + scene "scenes/Player/Sniper/low/1607.vcd" + scene "scenes/Player/Sniper/low/1608.vcd" + scene "scenes/Player/Sniper/low/3100.vcd" + scene "scenes/Player/Sniper/low/1663.vcd" + scene "scenes/Player/Sniper/low/1686.vcd" + scene "scenes/Player/Sniper/low/1687.vcd" + scene "scenes/Player/Sniper/low/1716.vcd" + scene "scenes/Player/Sniper/low/1722.vcd" +} +Rule RejectedDuelSniper +{ + criteria ConceptDuelRejected IsSniper + Response RejectedDuelSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoSniper +{ + scene "scenes/Player/Sniper/low/1640.vcd" + scene "scenes/Player/Sniper/low/1639.vcd" + scene "scenes/Player/Sniper/low/1638.vcd" +} +Rule PlayerGoSniper +{ + criteria ConceptPlayerGo IsSniper + Response PlayerGoSniper +} + +Response PlayerHeadLeftSniper +{ + scene "scenes/Player/Sniper/low/1644.vcd" + scene "scenes/Player/Sniper/low/1645.vcd" + scene "scenes/Player/Sniper/low/1646.vcd" +} +Rule PlayerHeadLeftSniper +{ + criteria ConceptPlayerLeft IsSniper + Response PlayerHeadLeftSniper +} + +Response PlayerHeadRightSniper +{ + scene "scenes/Player/Sniper/low/1647.vcd" + scene "scenes/Player/Sniper/low/1648.vcd" + scene "scenes/Player/Sniper/low/1649.vcd" +} +Rule PlayerHeadRightSniper +{ + criteria ConceptPlayerRight IsSniper + Response PlayerHeadRightSniper +} + +Response PlayerHelpSniper +{ + scene "scenes/Player/Sniper/low/1650.vcd" + scene "scenes/Player/Sniper/low/1651.vcd" + scene "scenes/Player/Sniper/low/1652.vcd" +} +Rule PlayerHelpSniper +{ + criteria ConceptPlayerHelp IsSniper + Response PlayerHelpSniper +} + +Response PlayerHelpCaptureSniper +{ + scene "scenes/Player/Sniper/low/1653.vcd" + scene "scenes/Player/Sniper/low/1654.vcd" + scene "scenes/Player/Sniper/low/1655.vcd" +} +Rule PlayerHelpCaptureSniper +{ + criteria ConceptPlayerHelp IsSniper IsOnCappableControlPoint + ApplyContext "SniperHelpCap:1:10" + Response PlayerHelpCaptureSniper +} + +Response PlayerHelpCapture2Sniper +{ + scene "scenes/Player/Sniper/low/1736.vcd" + scene "scenes/Player/Sniper/low/1737.vcd" +} +Rule PlayerHelpCapture2Sniper +{ + criteria ConceptPlayerHelp IsSniper IsOnCappableControlPoint IsHelpCapSniper + Response PlayerHelpCapture2Sniper +} + +// Custom stuff +// Response for when the Sniper is fighting on a cappable point +Response PlayerGetOnPointSniper +{ + scene "scenes/Player/Sniper/low/2289.vcd" + scene "scenes/Player/Sniper/low/2290.vcd" + scene "scenes/Player/Sniper/low/2291.vcd" + scene "scenes/Player/Sniper/low/2418.vcd" + scene "scenes/Player/Sniper/low/2419.vcd" + scene "scenes/Player/Sniper/low/2420.vcd" +} + +Rule PlayerGetOnPointSniper +{ + criterion ConceptFireWeapon IsSniper IsOnCappableControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:15" + applycontexttoworld + Response PlayerGetOnPointSniper +} +// End custom + +Response PlayerHelpDefendSniper +{ + scene "scenes/Player/Sniper/low/1656.vcd" + scene "scenes/Player/Sniper/low/1657.vcd" + scene "scenes/Player/Sniper/low/1658.vcd" +} +Rule PlayerHelpDefendSniper +{ + criteria ConceptPlayerHelp IsSniper IsOnFriendlyControlPoint + Response PlayerHelpDefendSniper +} + +Response PlayerMedicSniper +{ + scene "scenes/Player/Sniper/low/1678.vcd" + scene "scenes/Player/Sniper/low/1679.vcd" +} +Rule PlayerMedicSniper +{ + criteria ConceptPlayerMedic IsSniper + Response PlayerMedicSniper +} + +Response PlayerAskForBallSniper +{ +} +Rule PlayerAskForBallSniper +{ + criteria ConceptPlayerAskForBall IsSniper + Response PlayerAskForBallSniper +} + +Response PlayerMoveUpSniper +{ + scene "scenes/Player/Sniper/low/1681.vcd" + scene "scenes/Player/Sniper/low/1682.vcd" +} +Rule PlayerMoveUpSniper +{ + criteria ConceptPlayerMoveUp IsSniper + Response PlayerMoveUpSniper +} + +Response PlayerNoSniper +{ + scene "scenes/Player/Sniper/low/1694.vcd" + scene "scenes/Player/Sniper/low/1695.vcd" + scene "scenes/Player/Sniper/low/1696.vcd" + scene "scenes/Player/Sniper/low/1782.vcd" +} +Rule PlayerNoSniper +{ + criteria ConceptPlayerNo IsSniper + Response PlayerNoSniper +} + +Response PlayerThanksSniper +{ + scene "scenes/Player/Sniper/low/1760.vcd" + scene "scenes/Player/Sniper/low/1836.vcd" +} +Rule PlayerThanksSniper +{ + criteria ConceptPlayerThanks IsSniper + Response PlayerThanksSniper +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistSniper +{ + scene "scenes/Player/Sniper/low/1734.vcd" + scene "scenes/Player/Sniper/low/1735.vcd" +} +Rule KilledPlayerAssistSniper +{ + criteria ConceptPlayerThanks IsSniper IsARecentKill SniperNotAssistSpeech + ApplyContext "SniperAssistSpeech:1:20" + Response KilledPlayerAssistSniper +} +// End custom + +Response PlayerYesSniper +{ + scene "scenes/Player/Sniper/low/1767.vcd" + scene "scenes/Player/Sniper/low/1768.vcd" + scene "scenes/Player/Sniper/low/1769.vcd" +} +Rule PlayerYesSniper +{ + criteria ConceptPlayerYes IsSniper + Response PlayerYesSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeSniper +{ + scene "scenes/Player/Sniper/low/1597.vcd" + scene "scenes/Player/Sniper/low/1599.vcd" + scene "scenes/Player/Sniper/low/1598.vcd" + scene "scenes/Player/Sniper/low/1770.vcd" +} +Rule PlayerActivateChargeSniper +{ + criteria ConceptPlayerActivateCharge IsSniper + Response PlayerActivateChargeSniper +} + +Response PlayerCloakedSpySniper +{ + scene "scenes/Player/Sniper/low/1626.vcd" + scene "scenes/Player/Sniper/low/1627.vcd" + scene "scenes/Player/Sniper/low/1628.vcd" +} +Rule PlayerCloakedSpySniper +{ + criteria ConceptPlayerCloakedSpy IsSniper + Response PlayerCloakedSpySniper +} + +Response PlayerDispenserHereSniper +{ + scene "scenes/Player/Sniper/low/1683.vcd" +} +Rule PlayerDispenserHereSniper +{ + criteria ConceptPlayerDispenserHere IsSniper + Response PlayerDispenserHereSniper +} + +Response PlayerIncomingSniper +{ + scene "scenes/Player/Sniper/low/1659.vcd" + scene "scenes/Player/Sniper/low/1660.vcd" + scene "scenes/Player/Sniper/low/1661.vcd" + scene "scenes/Player/Sniper/low/1773.vcd" +} +Rule PlayerIncomingSniper +{ + criteria ConceptPlayerIncoming IsSniper + Response PlayerIncomingSniper +} + +Response PlayerSentryAheadSniper +{ + scene "scenes/Player/Sniper/low/1711.vcd" +} +Rule PlayerSentryAheadSniper +{ + criteria ConceptPlayerSentryAhead IsSniper + Response PlayerSentryAheadSniper +} + +Response PlayerSentryHereSniper +{ + scene "scenes/Player/Sniper/low/1684.vcd" +} +Rule PlayerSentryHereSniper +{ + criteria ConceptPlayerSentryHere IsSniper + Response PlayerSentryHereSniper +} + +Response PlayerTeleporterHereSniper +{ + scene "scenes/Player/Sniper/low/1685.vcd" +} +Rule PlayerTeleporterHereSniper +{ + criteria ConceptPlayerTeleporterHere IsSniper + Response PlayerTeleporterHereSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCrySniper +{ + scene "scenes/Player/Sniper/low/1612.vcd" + scene "scenes/Player/Sniper/low/1613.vcd" + scene "scenes/Player/Sniper/low/1614.vcd" + scene "scenes/Player/Sniper/low/1615.vcd" + scene "scenes/Player/Sniper/low/1616.vcd" + scene "scenes/Player/Sniper/low/1617.vcd" +} +Rule PlayerBattleCrySniper +{ + criteria ConceptPlayerBattleCry IsSniper + Response PlayerBattleCrySniper +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatSniper +{ + scene "scenes/Player/Sniper/low/2319.vcd" + scene "scenes/Player/Sniper/low/2320.vcd" + scene "scenes/Player/Sniper/low/2321.vcd" + scene "scenes/Player/Sniper/low/2369.vcd" + scene "scenes/Player/Sniper/low/2372.vcd" + scene "scenes/Player/Sniper/low/2373.vcd" + scene "scenes/Player/Sniper/low/2374.vcd" + scene "scenes/Player/Sniper/low/2388.vcd" + scene "scenes/Player/Sniper/low/2389.vcd" +} +Rule MeleeDareCombatSniper +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsSniper IsCrossHairEnemy + Response MeleeDareCombatSniper +} + +// New wepaon lines + +Response PlayerShinyCrySniper +{ + scene "scenes/Player/Sniper/low/2284.vcd" + scene "scenes/Player/Sniper/low/2285.vcd" + scene "scenes/Player/Sniper/low/2286.vcd" + scene "scenes/Player/Sniper/low/2287.vcd" + scene "scenes/Player/Sniper/low/2288.vcd" + scene "scenes/Player/Sniper/low/2421.vcd" + scene "scenes/Player/Sniper/low/2422.vcd" + scene "scenes/Player/Sniper/low/2433.vcd" + scene "scenes/Player/Sniper/low/2477.vcd" +} +Rule PlayerShinyCrySniper +{ + criteria ConceptPlayerBattleCry IsSniper 30PercentChance IsWeaponPrimary WeaponIsNotVanillaPrimary WeaponIsNotTaggedRifle + Response PlayerShinyCrySniper +} + +Rule PlayerShinyCrySniperBow +{ + criteria ConceptPlayerBattleCry IsSniper 30PercentChance WeaponIsBow WeaponIsNotVanillaPrimary + Response PlayerShinyCrySniper +} + +// This rule is here for future-proofing + +Rule PlayerShinyCrySniperSecondary +{ + criteria ConceptPlayerBattleCry IsSniper 30PercentChance IsWeaponSecondary WeaponIsNotVanillaSecondary WeaponIsNotTaggedSMG + Response PlayerShinyCrySniper +} + +// Some achievement weapons seem to use the item1 etc weapon mode, so we use a hard rule for Jarate or Bow +Rule PlayerShinyCrySniperJarate +{ + criteria ConceptPlayerBattleCry IsSniper 30PercentChance WeaponIsJarate WeaponIsNotVanillaSecondary + Response PlayerShinyCrySniper +} + +Rule PlayerShinyCrySniperMelee +{ + criteria ConceptPlayerBattleCry IsSniper 30PercentChance IsWeaponMelee IsNotCrossHairEnemy WeaponIsNotVanillaMelee WeaponIsNotTaggedKukri + Response PlayerShinyCrySniper +} + +//End custom + +Response PlayerCheersSniper +{ + scene "scenes/Player/Sniper/low/1618.vcd" + scene "scenes/Player/Sniper/low/1619.vcd" + scene "scenes/Player/Sniper/low/1620.vcd" + scene "scenes/Player/Sniper/low/1621.vcd" + scene "scenes/Player/Sniper/low/1622.vcd" + scene "scenes/Player/Sniper/low/1623.vcd" + scene "scenes/Player/Sniper/low/1624.vcd" + scene "scenes/Player/Sniper/low/1625.vcd" +} +Rule PlayerCheersSniper +{ + criteria ConceptPlayerCheers IsSniper + Response PlayerCheersSniper +} + +Response PlayerGoodJobSniper +{ + scene "scenes/Player/Sniper/low/1641.vcd" + scene "scenes/Player/Sniper/low/1642.vcd" + scene "scenes/Player/Sniper/low/1643.vcd" +} +Rule PlayerGoodJobSniper +{ + criteria ConceptPlayerGoodJob IsSniper + Response PlayerGoodJobSniper +} + +Response PlayerJeersSniper +{ + scene "scenes/Player/Sniper/low/1662.vcd" + scene "scenes/Player/Sniper/low/1663.vcd" + scene "scenes/Player/Sniper/low/1664.vcd" + scene "scenes/Player/Sniper/low/1665.vcd" + scene "scenes/Player/Sniper/low/1666.vcd" + scene "scenes/Player/Sniper/low/1667.vcd" + scene "scenes/Player/Sniper/low/1668.vcd" + scene "scenes/Player/Sniper/low/1669.vcd" +} +Rule PlayerJeersSniper +{ + criteria ConceptPlayerJeers IsSniper + Response PlayerJeersSniper +} + +Response PlayerLostPointSniper +{ + scene "scenes/Player/Sniper/low/1686.vcd" + scene "scenes/Player/Sniper/low/1687.vcd" + scene "scenes/Player/Sniper/low/1688.vcd" + scene "scenes/Player/Sniper/low/1689.vcd" + scene "scenes/Player/Sniper/low/1690.vcd" + scene "scenes/Player/Sniper/low/1778.vcd" + scene "scenes/Player/Sniper/low/1779.vcd" + scene "scenes/Player/Sniper/low/1780.vcd" + scene "scenes/Player/Sniper/low/1781.vcd" +} +Rule PlayerLostPointSniper +{ + criteria ConceptPlayerLostPoint IsSniper + Response PlayerLostPointSniper +} + +Response PlayerNegativeSniper +{ + scene "scenes/Player/Sniper/low/1686.vcd" + scene "scenes/Player/Sniper/low/1687.vcd" + scene "scenes/Player/Sniper/low/1688.vcd" + scene "scenes/Player/Sniper/low/1689.vcd" + scene "scenes/Player/Sniper/low/1690.vcd" + scene "scenes/Player/Sniper/low/1778.vcd" + scene "scenes/Player/Sniper/low/1779.vcd" + scene "scenes/Player/Sniper/low/1780.vcd" + scene "scenes/Player/Sniper/low/1781.vcd" +} +Rule PlayerNegativeSniper +{ + criteria ConceptPlayerNegative IsSniper + Response PlayerNegativeSniper +} + +Response PlayerNiceShotSniper +{ + scene "scenes/Player/Sniper/low/1691.vcd" + scene "scenes/Player/Sniper/low/1692.vcd" + scene "scenes/Player/Sniper/low/1693.vcd" +} +Rule PlayerNiceShotSniper +{ + criteria ConceptPlayerNiceShot IsSniper + Response PlayerNiceShotSniper +} + +Response PlayerPositiveSniper +{ + scene "scenes/Player/Sniper/low/1706.vcd" + scene "scenes/Player/Sniper/low/1707.vcd" + scene "scenes/Player/Sniper/low/1708.vcd" + scene "scenes/Player/Sniper/low/1709.vcd" + scene "scenes/Player/Sniper/low/1710.vcd" + scene "scenes/Player/Sniper/low/1783.vcd" + scene "scenes/Player/Sniper/low/1784.vcd" + scene "scenes/Player/Sniper/low/1785.vcd" + scene "scenes/Player/Sniper/low/1786.vcd" + scene "scenes/Player/Sniper/low/1787.vcd" +} + +Response PlayerTauntsSniper +{ + scene "scenes/Player/Sniper/low/1774.vcd" + scene "scenes/Player/Sniper/low/1676.vcd" + scene "scenes/Player/Sniper/low/1677.vcd" + scene "scenes/Player/Sniper/low/1775.vcd" + scene "scenes/Player/Sniper/low/1776.vcd" + scene "scenes/Player/Sniper/low/1777.vcd" +} +Rule PlayerPositiveSniper +{ + criteria ConceptPlayerPositive IsSniper + Response PlayerPositiveSniper + Response PlayerTauntsSniper +} + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_16.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_17.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompSniper +{ + criteria ConceptPlayerRoundStartComp IsSniper IsFirstRound IsNotComp6v6 40PercentChance + Response PlayerFirstRoundStartCompSniper +} + +Response PlayerFirstRoundStartComp6sSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_14.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_15.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_16.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_17.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_6s_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_6s_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_6s_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamefirst_6s_05.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartComp6sSniper +{ + criteria ConceptPlayerRoundStartComp IsSniper IsFirstRound IsComp6v6 40PercentChance + Response PlayerFirstRoundStartComp6sSniper +} + +Response PlayerWonPrevRoundCompSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamewonlast_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompSniper +{ + criteria ConceptPlayerRoundStartComp IsSniper IsNotFirstRound PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompSniper +} + +Response PlayerLostPrevRoundCompSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregamelostlast_rare_02.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompSniper +{ + criteria ConceptPlayerRoundStartComp IsSniper IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompSniper +} + +Response PlayerTiedPrevRoundCompSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_pregametie_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompSniper +{ + criteria ConceptPlayerRoundStartComp IsSniper IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompSniper +} + +Response PlayerGameWinCompSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_10.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_10.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_06.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompSniper +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsNotComp6v6 IsSniper 40PercentChance + Response PlayerGameWinCompSniper +} + +Response PlayerGameWinComp6sSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_10.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_10.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_comp_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_6s_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Sniper/low/cm_sniper_gamewon_6s_02.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinComp6sSniper +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsComp6v6 IsSniper 40PercentChance + Response PlayerGameWinComp6sSniper +} + +Response PlayerMatchWinCompSniper +{ + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_04.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_05.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_06.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_07.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_08.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_09.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_10.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_11.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_12.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_13.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_14.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_15.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Sniper/low/cm_sniper_matchwon_16.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompSniper +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsSniper 40PercentChance + Response PlayerMatchWinCompSniper +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/sniper_auto.lua b/gamemodes/tf/gamemode/contents/talker/sniper_auto.lua new file mode 100644 index 000000000..befe40d4d --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/sniper_auto.lua @@ -0,0 +1,126 @@ +//-------------------------------------------------------------------------------------------------------------- +// Sniper Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + +Response item_birdhead_kill_scopedSniper +{ + scene "scenes/Player/Sniper/low/7307.vcd" + scene "scenes/Player/Sniper/low/7308.vcd" + scene "scenes/Player/Sniper/low/7310.vcd" +} +Rule item_birdhead_kill_scopedSniper +{ + criteria ConceptKilledPlayer IsSniper DeployedContext 50PercentChance IsSniperBirdHead + Response item_birdhead_kill_scopedSniper +} + +Response item_birdhead_round_startSniper +{ + scene "scenes/Player/Sniper/low/7297.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7298.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7302.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7301.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7304.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7300.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7299.vcd" predelay "1.0, 5.0" +} +Rule item_birdhead_round_startSniper +{ + criteria ConceptPlayerRoundStart IsSniper 100PercentChance IsSniperBirdHead + Response item_birdhead_round_startSniper +} + +Response item_birdhead_uberSniper +{ + scene "scenes/Player/Sniper/low/7306.vcd" +} +Rule item_birdhead_uberSniper +{ + criteria ConceptMedicChargeDeployed IsSniper IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsSniperBirdHead + Response item_birdhead_uberSniper +} + +Response item_unicorn_scopekillSniper +{ + scene "scenes/Player/Sniper/low/7288.vcd" + scene "scenes/Player/Sniper/low/7289.vcd" + scene "scenes/Player/Sniper/low/7291.vcd" + scene "scenes/Player/Sniper/low/7292.vcd" + scene "scenes/Player/Sniper/low/7293.vcd" + scene "scenes/Player/Sniper/low/7295.vcd" +} +Rule item_unicorn_scopekillSniper +{ + criteria ConceptKilledPlayer IsSniper DeployedContext 50PercentChance IsUnicornHead + Response item_unicorn_scopekillSniper +} + +Response item_unicorn_uberSniper +{ + scene "scenes/Player/Sniper/low/7287.vcd" +} +Rule item_unicorn_uberSniper +{ + criteria ConceptMedicChargeDeployed IsSniper IsInvulnerable 20PercentChance IsUnicornHead + Response item_unicorn_uberSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_round_startSniper +{ + scene "scenes/Player/Sniper/low/7282.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Sniper/low/7283.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startSniper +{ + criteria ConceptPlayerRoundStart IsSniper 100PercentChance IsUnicornHead + Response item_unicorn_round_startSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Response item_birdhead_cart_pushSniper +{ + scene "scenes/Player/Sniper/low/7305.vcd" + scene "scenes/Player/Sniper/low/8485.vcd" +} +Rule item_birdhead_cart_pushSniper +{ + criteria ConceptCartMovingForward IsOnOffense IsSniper SniperNotSaidCartMovingForwardO 10PercentChance IsSniperBirdHead + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_birdhead_cart_pushSniper +} + +Response item_unicorn_cart_forwardSniper +{ + scene "scenes/Player/Sniper/low/7286.vcd" + scene "scenes/Player/Sniper/low/8484.vcd" +} +Rule item_unicorn_cart_forwardSniper +{ + criteria ConceptCartMovingForward IsOnOffense IsSniper SniperNotSaidCartMovingForwardO 30PercentChance IsUnicornHead + ApplyContext "SaidCartMovingForwardD:1:20" + Response item_unicorn_cart_forwardSniper +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_birdhead_jarateSniper +{ + scene "scenes/Player/Sniper/low/7315.vcd" +} +Rule item_birdhead_jarateSniper +{ + criteria ConceptJarateLaunch IsSniper 10PercentChance IsSniperBirdHead + Response item_birdhead_jarateSniper +} + diff --git a/gamemodes/tf/gamemode/contents/talker/soldier.lua b/gamemodes/tf/gamemode/contents/talker/soldier.lua new file mode 100644 index 000000000..b5965f053 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/soldier.lua @@ -0,0 +1,1845 @@ +//-------------------------------------------------------------------------------------------------------------- +// Soldier Response Rule File +//-------------------------------------------------------------------------------------------------------------- + +Criterion "SoldierIsKillSpeechObject" "SoldierKillSpeechObject" "1" "required" +Criterion "SoldierIsNotStillonFire" "SoldierOnFire" "!=1" "required" +Criterion "SoldierIsStillonFire" "SoldierOnFire" "1" "required" +Criterion "SoldierNotKillSpeech" "SoldierKillSpeech" "!=1" "required" +Criterion "SoldierNotKillSpeechMelee" "SoldierKillSpeechMelee" "!=1" "required" +Criterion "SoldierNotSaidHealThanks" "SoldierSaidHealThanks" "!=1" "required" +Criterion "SoldierNotRobotNoises" "SoldierRobotNoises" "!=1" "required" +Criterion "IsHelpCapSoldier" "SoldierHelpCap" "1" "required" +// Custom criterion +Criterion "SoldierNotAssistSpeech" "SoldierAssistSpeech" "!=1" "required" +Criterion "SoldierNotInvulnerableSpeech" "SoldierInvulnerableSpeech" "!=1" "required" +Criterion "SoldierNotAwardSpeech" "SoldierAwardSpeech" "!=1" "required" + +Response PlayerCloakedSpyDemomanSoldier +{ + scene "scenes/Player/Soldier/low/1082.vcd" +} +Rule PlayerCloakedSpyDemomanSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnDemoman + Response PlayerCloakedSpyDemomanSoldier +} + +Response PlayerCloakedSpyEngineerSoldier +{ + scene "scenes/Player/Soldier/low/1087.vcd" +} +Rule PlayerCloakedSpyEngineerSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnEngineer + Response PlayerCloakedSpyEngineerSoldier +} + +Response PlayerCloakedSpyHeavySoldier +{ + scene "scenes/Player/Soldier/low/1077.vcd" +} +Rule PlayerCloakedSpyHeavySoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnHeavy + Response PlayerCloakedSpyHeavySoldier +} + +Response PlayerCloakedSpyMedicSoldier +{ + scene "scenes/Player/Soldier/low/1085.vcd" +} +Rule PlayerCloakedSpyMedicSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnMedic + Response PlayerCloakedSpyMedicSoldier +} + +Response PlayerCloakedSpyPyroSoldier +{ + scene "scenes/Player/Soldier/low/1080.vcd" +} +Rule PlayerCloakedSpyPyroSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnPyro + Response PlayerCloakedSpyPyroSoldier +} + +Response PlayerCloakedSpyScoutSoldier +{ + scene "scenes/Player/Soldier/low/1074.vcd" +} +Rule PlayerCloakedSpyScoutSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnScout + Response PlayerCloakedSpyScoutSoldier +} + +Response PlayerCloakedSpySniperSoldier +{ + scene "scenes/Player/Soldier/low/1090.vcd" +} +Rule PlayerCloakedSpySniperSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnSniper + Response PlayerCloakedSpySniperSoldier +} + +Response PlayerCloakedSpySoldierSoldier +{ + scene "scenes/Player/Soldier/low/1075.vcd" +} +Rule PlayerCloakedSpySoldierSoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnSoldier + Response PlayerCloakedSpySoldierSoldier +} + +Response PlayerCloakedSpySpySoldier +{ + scene "scenes/Player/Soldier/low/1083.vcd" +} +Rule PlayerCloakedSpySpySoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier IsOnSpy + Response PlayerCloakedSpySpySoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksSoldier +{ + scene "scenes/Player/Soldier/low/1213.vcd" + scene "scenes/Player/Soldier/low/1214.vcd" + scene "scenes/Player/Soldier/low/1215.vcd" +} +Rule HealThanksSoldier +{ + criteria ConceptMedicChargeStopped IsSoldier SuperHighHealthContext SoldierNotSaidHealThanks 50PercentChance + ApplyContext "SoldierSaidHealThanks:1:20" + Response HealThanksSoldier +} + +// Custom achievement stuff +Response AwardSoldier +{ + scene "scenes/Player/Soldier/low/1043.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1048.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1135.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1347.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1182.vcd" predelay "2.5" +} +Rule AwardSoldier +{ + criteria ConceptAchievementAward IsSoldier SoldierNotAwardSpeech + ApplyContext "SoldierAwardSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response AwardSoldier +} +//End custom achievement + +Response PlayerRoundStartSoldier +{ + scene "scenes/Player/Soldier/low/1055.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/1057.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/1058.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/1059.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/1056.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/1060.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartSoldier +{ + criteria ConceptPlayerRoundStart IsSoldier + Response PlayerRoundStartSoldier +} + +Response PlayerCappedIntelligenceSoldier +{ + scene "scenes/Player/Soldier/low/1046.vcd" + scene "scenes/Player/Soldier/low/1048.vcd" + scene "scenes/Player/Soldier/low/1047.vcd" +} +Rule PlayerCappedIntelligenceSoldier +{ + criteria ConceptPlayerCapturedIntelligence IsSoldier + Response PlayerCappedIntelligenceSoldier +} + +Response PlayerCapturedPointSoldier +{ + scene "scenes/Player/Soldier/low/1043.vcd" + scene "scenes/Player/Soldier/low/1044.vcd" + scene "scenes/Player/Soldier/low/1045.vcd" +} +Rule PlayerCapturedPointSoldier +{ + criteria ConceptPlayerCapturedPoint IsSoldier + Response PlayerCapturedPointSoldier +} + +Response PlayerSuddenDeathSoldier +{ + scene "scenes/Player/Soldier/low/1120.vcd" + scene "scenes/Player/Soldier/low/1121.vcd" + scene "scenes/Player/Soldier/low/1122.vcd" + scene "scenes/Player/Soldier/low/1123.vcd" + scene "scenes/Player/Soldier/low/1124.vcd" + scene "scenes/Player/Soldier/low/1125.vcd" + scene "scenes/Player/Soldier/low/1126.vcd" + scene "scenes/Player/Soldier/low/1127.vcd" + scene "scenes/Player/Soldier/low/1128.vcd" + scene "scenes/Player/Soldier/low/1129.vcd" + scene "scenes/Player/Soldier/low/1130.vcd" + scene "scenes/Player/Soldier/low/1131.vcd" +} +Rule PlayerSuddenDeathSoldier +{ + criteria ConceptPlayerSuddenDeathStart IsSoldier + Response PlayerSuddenDeathSoldier +} + +Response PlayerStalemateSoldier +{ + scene "scenes/Player/Soldier/low/1049.vcd" + scene "scenes/Player/Soldier/low/1050.vcd" + scene "scenes/Player/Soldier/low/1051.vcd" +} +Rule PlayerStalemateSoldier +{ + criteria ConceptPlayerStalemate IsSoldier + Response PlayerStalemateSoldier +} + +Response PlayerTeleporterThanksSoldier +{ + scene "scenes/Player/Soldier/low/1216.vcd" + scene "scenes/Player/Soldier/low/1217.vcd" + scene "scenes/Player/Soldier/low/1218.vcd" +} +Rule PlayerTeleporterThanksSoldier +{ + criteria ConceptTeleported IsNotEngineer IsSoldier 30PercentChance + Response PlayerTeleporterThanksSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointSoldier +{ + scene "scenes/Player/Soldier/low/1187.vcd" + scene "scenes/Player/Soldier/low/1354.vcd" + scene "scenes/Player/Soldier/low/1355.vcd" +} +Rule DefendOnThePointSoldier +{ + criteria ConceptFireWeapon IsSoldier IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointSoldier +} + +Response KilledPlayerManySoldier +{ + scene "scenes/Player/Soldier/low/1181.vcd" + scene "scenes/Player/Soldier/low/1356.vcd" + scene "scenes/Player/Soldier/low/1197.vcd" + scene "scenes/Player/Soldier/low/1199.vcd" +} +Rule KilledPlayerManySoldier +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay SoldierNotKillSpeech IsSoldier + ApplyContext "SoldierKillSpeech:1:10" + Response KilledPlayerManySoldier +} + +Response KilledDemomanSoldier +{ + scene "scenes/Player/Soldier/low/3486.vcd" + scene "scenes/Player/Soldier/low/3487.vcd" + scene "scenes/Player/Soldier/low/3488.vcd" + scene "scenes/Player/Soldier/low/3489.vcd" + scene "scenes/Player/Soldier/low/3490.vcd" + scene "scenes/Player/Soldier/low/3491.vcd" +} +Rule KilledDemomanSoldier +{ + criterion ConceptKilledPlayer KilledPlayerDelay IsVictimDemoman 10PercentChance SoldierNotKillSpeech IsSoldier + ApplyContext "SoldierKillSpeech:1:10" + Response KilledDemomanSoldier +} + +Response KilledPlayerAssistAutoSoldier +{ + scene "scenes/Player/Soldier/low/1186.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsBeingHealed IsManyRecentKills KilledPlayerDelay 20PercentChance SoldierNotAssistSpeech + ApplyContext "SoldierAssistSpeech:1:20" + Response KilledPlayerAssistAutoSoldier +} + +// A custom rule for when you're on a pocket Soldier killing spree. +Response SpreeMedicSoldier +{ + scene "scenes/Player/Soldier/low/3492.vcd" + scene "scenes/Player/Soldier/low/3493.vcd" + scene "scenes/Player/Soldier/low/3494.vcd" +} +Rule SpreeMedicSoldier +{ + criteria ConceptKilledPlayer KilledPlayerDelay IsSoldier IsBeingHealed SoldierNotKillSpeech IsVeryManyRecentKills IsWeaponPrimary + ApplyContext "SoldierKillSpeech:1:20" + Response SpreeMedicSoldier +} + +// Custom Medic follow - because Soldier needs it more than most classes. +Response MedicFollowSoldier +{ + scene "scenes/Player/Soldier/low/3495.vcd" predelay ".25" + scene "scenes/Player/Soldier/low/3496.vcd" predelay ".25" + scene "scenes/Player/Soldier/low/3497.vcd" predelay ".25" + scene "scenes/Player/Soldier/low/3499.vcd" predelay ".25" +} +Rule MedicFollowSoldier +{ + criteria ConceptPlayerMedic IsOnMedic IsSoldier IsNotCrossHairEnemy NotLowHealth SoldierIsNotStillonFire + ApplyContext "ScoutKillSpeech:1:10" + Response MedicFollowSoldier +} + +Response SoldierJarateHit +{ + scene "scenes/Player/Soldier/low/1051.vcd" + scene "scenes/Player/Soldier/low/1155.vcd" + scene "scenes/Player/Soldier/low/1353.vcd" + scene "scenes/Player/Soldier/low/1152.vcd" +} +Rule SoldierJarateHit +{ + criteria ConceptJarateHit IsSoldier 50PercentChance + Response SoldierJarateHit +} + +// Invulnerable lines +Response InvulnerableSpeechSoldier +{ + scene "scenes/Player/Soldier/low/1191.vcd" + scene "scenes/Player/Soldier/low/1194.vcd" + scene "scenes/Player/Soldier/low/1200.vcd" + scene "scenes/Player/Soldier/low/1204.vcd" + scene "scenes/Player/Soldier/low/1192.vcd" + scene "scenes/Player/Soldier/low/1189.vcd" + scene "scenes/Player/Soldier/low/1201.vcd" +} +Rule InvulnerableSpeechSoldier +{ + criterion ConceptFireWeapon IsSoldier IsInvulnerable 20PercentChance + ApplyContext "SoldierInvulnerableSpeech:1:30" + Response InvulnerableSpeechSoldier +} + +// End custom stuff + +// Added the unused Direct Hit screams here, as they can't be added to the taunt. +Response KilledPlayerMeleeSoldier +{ + scene "scenes/Player/Soldier/low/1185.vcd" + scene "scenes/Player/Soldier/low/3403.vcd" + scene "scenes/Player/Soldier/low/3405.vcd" + scene "scenes/Player/Soldier/low/3406.vcd" +} +Rule KilledPlayerMeleeSoldier +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee SoldierNotKillSpeechMelee IsSoldier + ApplyContext "SoldierKillSpeechMelee:1:10" + Response KilledPlayerMeleeSoldier +} + +Response KilledPlayerVeryManySoldier +{ + scene "scenes/Player/Soldier/low/1206.vcd" + scene "scenes/Player/Soldier/low/1188.vcd" +} +Rule KilledPlayerVeryManySoldier +{ + criteria ConceptKilledPlayer IsVeryManyRecentKills 50PercentChance IsWeaponPrimary KilledPlayerDelay SoldierNotKillSpeech IsSoldier + ApplyContext "SoldierKillSpeech:1:10" + Response KilledPlayerVeryManySoldier +} + +Response PlayerKilledCapperSoldier +{ + scene "scenes/Player/Soldier/low/1064.vcd" + scene "scenes/Player/Soldier/low/1062.vcd" + scene "scenes/Player/Soldier/low/1063.vcd" +} +Rule PlayerKilledCapperSoldier +{ + criteria ConceptCapBlocked IsSoldier + ApplyContext "SoldierKillSpeech:1:10" + Response PlayerKilledCapperSoldier +} + +Response PlayerKilledDominatingSoldier +{ + scene "scenes/Player/Soldier/low/1132.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1346.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1348.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1133.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1134.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1347.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1135.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1349.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1195.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1202.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldier +} + +Response PlayerKilledDominatingDemomanSoldier +{ + scene "scenes/Player/Soldier/low/3407.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3408.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3409.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3410.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3411.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3412.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemomanSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimDemoman + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemomanSoldier +} + +Response PlayerKilledDominatingEngineerSoldier +{ + scene "scenes/Player/Soldier/low/3418.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3419.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3420.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3421.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3422.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3423.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingEngineerSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimEngineer + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingEngineerSoldier +} + +Response PlayerKilledDominatingHeavySoldier +{ + scene "scenes/Player/Soldier/low/3424.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3425.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3426.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3427.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3428.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3429.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3430.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavySoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimHeavy + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavySoldier +} + +Response PlayerKilledDominatingMedicSoldier +{ + scene "scenes/Player/Soldier/low/3431.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3432.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3433.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3434.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3435.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3436.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3437.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedicSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimMedic + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedicSoldier +} + +Response PlayerKilledDominatingPyroSoldier +{ + scene "scenes/Player/Soldier/low/3438.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3439.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3440.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3441.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3442.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3443.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3444.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3445.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3446.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyroSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimPyro + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyroSoldier +} + +Response PlayerKilledDominatingScoutSoldier +{ + scene "scenes/Player/Soldier/low/3447.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3448.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3449.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3450.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3451.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3452.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3453.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3454.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3455.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3456.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3457.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScoutSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimScout + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScoutSoldier +} + +Response PlayerKilledDominatingSniperSoldier +{ + scene "scenes/Player/Soldier/low/3458.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3459.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3460.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3461.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3462.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3463.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3464.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3465.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3466.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3467.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3468.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3469.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3470.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3471.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSniperSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimSniper + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSniperSoldier +} + +Response PlayerKilledDominatingSoldierSoldier +{ + scene "scenes/Player/Soldier/low/3472.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3473.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3474.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3475.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3476.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3477.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldierSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimSoldier + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldierSoldier +} + +Response PlayerKilledDominatingSpySoldier +{ + scene "scenes/Player/Soldier/low/3478.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3479.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3480.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3481.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3482.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3483.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3484.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/3485.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSpySoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsVictimSpy + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSpySoldier +} + +Response PlayerKilledForRevengeSoldier +{ + scene "scenes/Player/Soldier/low/1060.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1065.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1096.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsRevenge + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSoldier +} + +Response PlayerKilledObjectSoldier +{ + scene "scenes/Player/Soldier/low/1055.vcd" + scene "scenes/Player/Soldier/low/1345.vcd" + scene "scenes/Player/Soldier/low/1172.vcd" + scene "scenes/Player/Soldier/low/1175.vcd" + scene "scenes/Player/Soldier/low/1182.vcd" +} +Rule PlayerKilledObjectSoldier +{ + criteria ConceptKilledObject IsSoldier 30PercentChance IsARecentKill + ApplyContext "SoldierKillSpeechObject:1:30" + Response PlayerKilledObjectSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainSoldier +{ + scene "scenes/Player/Soldier/low/1165.vcd" + scene "scenes/Player/Soldier/low/1166.vcd" + scene "scenes/Player/Soldier/low/1167.vcd" + scene "scenes/Player/Soldier/low/1371.vcd" + scene "scenes/Player/Soldier/low/1372.vcd" + scene "scenes/Player/Soldier/low/1373.vcd" +} +Rule PlayerAttackerPainSoldier +{ + criteria ConceptAttackerPain IsSoldier + Response PlayerAttackerPainSoldier +} + +Response PlayerOnFireSoldier +{ + scene "scenes/Player/Soldier/low/1052.vcd" +} +Rule PlayerOnFireSoldier +{ + criteria ConceptFire IsSoldier SoldierIsNotStillonFire + ApplyContext "SoldierOnFire:1:7" + Response PlayerOnFireSoldier +} + +Response PlayerOnFireRareSoldier +{ + scene "scenes/Player/Soldier/low/1053.vcd" + scene "scenes/Player/Soldier/low/1054.vcd" +} +Rule PlayerOnFireRareSoldier +{ + criteria ConceptFire IsSoldier 10PercentChance SoldierIsNotStillonFire + ApplyContext "SoldierOnFire:1:7" + Response PlayerOnFireRareSoldier +} + +Response PlayerPainSoldier +{ + scene "scenes/Player/Soldier/low/1168.vcd" + scene "scenes/Player/Soldier/low/1169.vcd" + scene "scenes/Player/Soldier/low/1170.vcd" + scene "scenes/Player/Soldier/low/1374.vcd" + scene "scenes/Player/Soldier/low/1375.vcd" + scene "scenes/Player/Soldier/low/1376.vcd" + scene "scenes/Player/Soldier/low/1377.vcd" + scene "scenes/Player/Soldier/low/1378.vcd" +} +Rule PlayerPainSoldier +{ + criteria ConceptPain IsSoldier + Response PlayerPainSoldier +} + +Response PlayerStillOnFireSoldier +{ + scene "scenes/Player/Soldier/low/1926.vcd" +} +Rule PlayerStillOnFireSoldier +{ + criteria ConceptFire IsSoldier SoldierIsStillonFire + ApplyContext "SoldierOnFire:1:7" + Response PlayerStillOnFireSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelSoldier +{ + scene "scenes/Player/Soldier/low/1062.vcd" + scene "scenes/Player/Soldier/low/1172.vcd" + scene "scenes/Player/Soldier/low/1175.vcd" + scene "scenes/Player/Soldier/low/1174.vcd" + scene "scenes/Player/Soldier/low/1190.vcd" + scene "scenes/Player/Soldier/low/1221.vcd" +} +Rule AcceptedDuelSoldier +{ + criteria ConceptIAcceptDuel IsSoldier + Response AcceptedDuelSoldier +} + +Response MeleeDareSoldier +{ + scene "scenes/Player/Soldier/low/1094.vcd" + scene "scenes/Player/Soldier/low/1188.vcd" + scene "scenes/Player/Soldier/low/1195.vcd" + scene "scenes/Player/Soldier/low/1196.vcd" + scene "scenes/Player/Soldier/low/1202.vcd" + scene "scenes/Player/Soldier/low/1210.vcd" +} +Rule MeleeDareSoldier +{ + criteria ConceptRequestDuel IsSoldier + Response MeleeDareSoldier +} + +Response RejectedDuelSoldier +{ + scene "scenes/Player/Soldier/low/3487.vcd" + scene "scenes/Player/Soldier/low/1120.vcd" + scene "scenes/Player/Soldier/low/1207.vcd" +} +Rule RejectedDuelSoldier +{ + criteria ConceptDuelRejected IsSoldier + Response RejectedDuelSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoSoldier +{ + scene "scenes/Player/Soldier/low/1092.vcd" + scene "scenes/Player/Soldier/low/1093.vcd" + scene "scenes/Player/Soldier/low/1094.vcd" // Restored +} +Rule PlayerGoSoldier +{ + criteria ConceptPlayerGo IsSoldier + Response PlayerGoSoldier +} + +Response PlayerHeadLeftSoldier +{ + scene "scenes/Player/Soldier/low/1098.vcd" + scene "scenes/Player/Soldier/low/1100.vcd" + scene "scenes/Player/Soldier/low/1099.vcd" +} +Rule PlayerHeadLeftSoldier +{ + criteria ConceptPlayerLeft IsSoldier + Response PlayerHeadLeftSoldier +} + +Response PlayerHeadRightSoldier +{ + scene "scenes/Player/Soldier/low/1103.vcd" + scene "scenes/Player/Soldier/low/1101.vcd" + scene "scenes/Player/Soldier/low/1102.vcd" +} +Rule PlayerHeadRightSoldier +{ + criteria ConceptPlayerRight IsSoldier + Response PlayerHeadRightSoldier +} + +Response PlayerHelpSoldier +{ + scene "scenes/Player/Soldier/low/1104.vcd" + scene "scenes/Player/Soldier/low/1105.vcd" + scene "scenes/Player/Soldier/low/1106.vcd" +} +Rule PlayerHelpSoldier +{ + criteria ConceptPlayerHelp IsSoldier + Response PlayerHelpSoldier +} + +Response PlayerHelpCaptureSoldier +{ + scene "scenes/Player/Soldier/low/1109.vcd" + scene "scenes/Player/Soldier/low/1107.vcd" + scene "scenes/Player/Soldier/low/1108.vcd" +} +Rule PlayerHelpCaptureSoldier +{ + criteria ConceptPlayerHelp IsSoldier IsOnCappableControlPoint + ApplyContext "SoldierHelpCap:1:10" + Response PlayerHelpCaptureSoldier +} + +Response PlayerHelpCapture2Soldier +{ + scene "scenes/Player/Soldier/low/1187.vcd" + scene "scenes/Player/Soldier/low/1354.vcd" + scene "scenes/Player/Soldier/low/1355.vcd" +} +Rule PlayerHelpCapture2Soldier +{ + criteria ConceptPlayerHelp IsSoldier IsOnCappableControlPoint IsHelpCapSoldier + Response PlayerHelpCapture2Soldier +} + +Response PlayerHelpDefendSoldier +{ + scene "scenes/Player/Soldier/low/1110.vcd" + scene "scenes/Player/Soldier/low/1111.vcd" + scene "scenes/Player/Soldier/low/1112.vcd" + scene "scenes/Player/Soldier/low/1113.vcd" +} +Rule PlayerHelpDefendSoldier +{ + criteria ConceptPlayerHelp IsSoldier IsOnFriendlyControlPoint + Response PlayerHelpDefendSoldier +} + +Response PlayerMedicSoldier +{ + scene "scenes/Player/Soldier/low/1139.vcd" + scene "scenes/Player/Soldier/low/1140.vcd" + scene "scenes/Player/Soldier/low/1141.vcd" +} +Rule PlayerMedicSoldier +{ + criteria ConceptPlayerMedic IsSoldier + Response PlayerMedicSoldier +} + +Response PlayerAskForBallSoldier +{ +} +Rule PlayerAskForBallSoldier +{ + criteria ConceptPlayerAskForBall IsSoldier + Response PlayerAskForBallSoldier +} + +Response PlayerMoveUpSoldier +{ + scene "scenes/Player/Soldier/low/1142.vcd" + scene "scenes/Player/Soldier/low/1143.vcd" + scene "scenes/Player/Soldier/low/1144.vcd" +} +Rule PlayerMoveUpSoldier +{ + criteria ConceptPlayerMoveUp IsSoldier + Response PlayerMoveUpSoldier +} + +Response PlayerNoSoldier +{ + scene "scenes/Player/Soldier/low/1159.vcd" + scene "scenes/Player/Soldier/low/1161.vcd" + scene "scenes/Player/Soldier/low/1160.vcd" +} +Rule PlayerNoSoldier +{ + criteria ConceptPlayerNo IsSoldier + Response PlayerNoSoldier +} + +Response PlayerThanksSoldier +{ + scene "scenes/Player/Soldier/low/1211.vcd" + scene "scenes/Player/Soldier/low/1212.vcd" +} +Rule PlayerThanksSoldier +{ + criteria ConceptPlayerThanks IsSoldier + Response PlayerThanksSoldier +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistSoldier +{ + scene "scenes/Player/Soldier/low/1186.vcd" +} +Rule KilledPlayerAssistSoldier +{ + criteria ConceptPlayerThanks IsSoldier IsARecentKill KilledPlayerDelay SoldierNotAssistSpeech + ApplyContext "SoldierAssistSpeech:1:20" + Response KilledPlayerAssistSoldier +} +// End custom + +Response PlayerYesSoldier +{ + scene "scenes/Player/Soldier/low/1350.vcd" + scene "scenes/Player/Soldier/low/1220.vcd" + scene "scenes/Player/Soldier/low/1221.vcd" + scene "scenes/Player/Soldier/low/1219.vcd" +} +Rule PlayerYesSoldier +{ + criteria ConceptPlayerYes IsSoldier + Response PlayerYesSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeSoldier +{ + scene "scenes/Player/Soldier/low/1040.vcd" + scene "scenes/Player/Soldier/low/1041.vcd" + scene "scenes/Player/Soldier/low/1042.vcd" +} +Rule PlayerActivateChargeSoldier +{ + criteria ConceptPlayerActivateCharge IsSoldier + Response PlayerActivateChargeSoldier +} + +Response PlayerCloakedSpySoldier +{ + scene "scenes/Player/Soldier/low/1071.vcd" + scene "scenes/Player/Soldier/low/1072.vcd" + scene "scenes/Player/Soldier/low/1070.vcd" +} +Rule PlayerCloakedSpySoldier +{ + criteria ConceptPlayerCloakedSpy IsSoldier + Response PlayerCloakedSpySoldier +} + +Response PlayerDispenserHereSoldier +{ + scene "scenes/Player/Soldier/low/1146.vcd" +} +Rule PlayerDispenserHereSoldier +{ + criteria ConceptPlayerDispenserHere IsSoldier + Response PlayerDispenserHereSoldier +} + +Response PlayerIncomingSoldier +{ + scene "scenes/Player/Soldier/low/1114.vcd" +} +Rule PlayerIncomingSoldier +{ + criteria ConceptPlayerIncoming IsSoldier + Response PlayerIncomingSoldier +} + +Response PlayerSentryAheadSoldier +{ + scene "scenes/Player/Soldier/low/1177.vcd" + scene "scenes/Player/Soldier/low/1178.vcd" + scene "scenes/Player/Soldier/low/1176.vcd" +} +Rule PlayerSentryAheadSoldier +{ + criteria ConceptPlayerSentryAhead IsSoldier + Response PlayerSentryAheadSoldier +} + +Response PlayerSentryHereSoldier +{ + scene "scenes/Player/Soldier/low/1148.vcd" +} +Rule PlayerSentryHereSoldier +{ + criteria ConceptPlayerSentryHere IsSoldier + Response PlayerSentryHereSoldier +} + +Response PlayerTeleporterHereSoldier +{ + scene "scenes/Player/Soldier/low/1150.vcd" +} +Rule PlayerTeleporterHereSoldier +{ + criteria ConceptPlayerTeleporterHere IsSoldier + Response PlayerTeleporterHereSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCrySoldier +{ + scene "scenes/Player/Soldier/low/1055.vcd" + scene "scenes/Player/Soldier/low/1057.vcd" + scene "scenes/Player/Soldier/low/1058.vcd" + scene "scenes/Player/Soldier/low/1059.vcd" + scene "scenes/Player/Soldier/low/1056.vcd" + scene "scenes/Player/Soldier/low/1060.vcd" +} +Rule PlayerBattleCrySoldier +{ + criteria ConceptPlayerBattleCry IsSoldier + Response PlayerBattleCrySoldier +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatSoldier +{ + scene "scenes/Player/Soldier/low/1196.vcd" + scene "scenes/Player/Soldier/low/1210.vcd" + scene "scenes/Player/Soldier/low/1205.vcd" + scene "scenes/Player/Soldier/low/1208.vcd" + scene "scenes/Player/Soldier/low/1203.vcd" + scene "scenes/Player/Soldier/low/1190.vcd" +} +Rule MeleeDareCombatSoldier +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsSoldier IsCrossHairEnemy + Response MeleeDareCombatSoldier +} +//End custom + +Response PlayerCheersSoldier +{ + scene "scenes/Player/Soldier/low/1065.vcd" + scene "scenes/Player/Soldier/low/1068.vcd" + scene "scenes/Player/Soldier/low/1066.vcd" + scene "scenes/Player/Soldier/low/1064.vcd" + scene "scenes/Player/Soldier/low/1062.vcd" + scene "scenes/Player/Soldier/low/1063.vcd" +} +Rule PlayerCheersSoldier +{ + criteria ConceptPlayerCheers IsSoldier + Response PlayerCheersSoldier +} + +Response PlayerGoodJobSoldier +{ + scene "scenes/Player/Soldier/low/1095.vcd" + scene "scenes/Player/Soldier/low/1096.vcd" + scene "scenes/Player/Soldier/low/1097.vcd" +} +Rule PlayerGoodJobSoldier +{ + criteria ConceptPlayerGoodJob IsSoldier + Response PlayerGoodJobSoldier +} + +Response PlayerJeersSoldier +{ + scene "scenes/Player/Soldier/low/1120.vcd" + scene "scenes/Player/Soldier/low/1121.vcd" + scene "scenes/Player/Soldier/low/1122.vcd" + scene "scenes/Player/Soldier/low/1123.vcd" + scene "scenes/Player/Soldier/low/1124.vcd" + scene "scenes/Player/Soldier/low/1125.vcd" + scene "scenes/Player/Soldier/low/1126.vcd" + scene "scenes/Player/Soldier/low/1127.vcd" + scene "scenes/Player/Soldier/low/1128.vcd" + scene "scenes/Player/Soldier/low/1129.vcd" + scene "scenes/Player/Soldier/low/1130.vcd" + scene "scenes/Player/Soldier/low/1131.vcd" +} +Rule PlayerJeersSoldier +{ + criteria ConceptPlayerJeers IsSoldier + Response PlayerJeersSoldier +} + +Response PlayerLostPointSoldier +{ + scene "scenes/Player/Soldier/low/1151.vcd" + scene "scenes/Player/Soldier/low/1152.vcd" + scene "scenes/Player/Soldier/low/1153.vcd" + scene "scenes/Player/Soldier/low/1154.vcd" + scene "scenes/Player/Soldier/low/1155.vcd" + scene "scenes/Player/Soldier/low/1353.vcd" +} +Rule PlayerLostPointSoldier +{ + criteria ConceptPlayerLostPoint IsSoldier + Response PlayerLostPointSoldier +} + +Response PlayerNegativeSoldier +{ + scene "scenes/Player/Soldier/low/1151.vcd" + scene "scenes/Player/Soldier/low/1152.vcd" + scene "scenes/Player/Soldier/low/1153.vcd" + scene "scenes/Player/Soldier/low/1154.vcd" + scene "scenes/Player/Soldier/low/1155.vcd" + scene "scenes/Player/Soldier/low/1353.vcd" +} +Rule PlayerNegativeSoldier +{ + criteria ConceptPlayerNegative IsSoldier + Response PlayerNegativeSoldier +} + +Response PlayerNiceShotSoldier +{ + scene "scenes/Player/Soldier/low/1156.vcd" + scene "scenes/Player/Soldier/low/1157.vcd" + scene "scenes/Player/Soldier/low/1158.vcd" +} +Rule PlayerNiceShotSoldier +{ + criteria ConceptPlayerNiceShot IsSoldier + Response PlayerNiceShotSoldier +} + +Response PlayerPositiveSoldier +{ + scene "scenes/Player/Soldier/low/1345.vcd" + scene "scenes/Player/Soldier/low/1172.vcd" + scene "scenes/Player/Soldier/low/1175.vcd" + scene "scenes/Player/Soldier/low/1174.vcd" + scene "scenes/Player/Soldier/low/1171.vcd" +} + +Response PlayerTauntsSoldier +{ + scene "scenes/Player/Soldier/low/1136.vcd" + scene "scenes/Player/Soldier/low/1137.vcd" + scene "scenes/Player/Soldier/low/1138.vcd" + scene "scenes/Player/Soldier/low/1351.vcd" + scene "scenes/Player/Soldier/low/1352.vcd" +} +Rule PlayerPositiveSoldier +{ + criteria ConceptPlayerPositive IsSoldier + Response PlayerPositiveSoldier + Response PlayerTauntsSoldier +} + +Response PlayerRobotNoisesSoldier +{ + scene "scenes/Player/Soldier/low/robot01.vcd" + scene "scenes/Player/Soldier/low/robot02.vcd" + scene "scenes/Player/Soldier/low/robot03.vcd" + scene "scenes/Player/Soldier/low/robot04.vcd" + scene "scenes/Player/Soldier/low/robot05.vcd" + scene "scenes/Player/Soldier/low/robot06.vcd" + scene "scenes/Player/Soldier/low/robot07.vcd" +} +Rule PlayerRobotNoisesSoldier +{ + criteria ConceptFireWeapon IsSoldier IsRobotCostume SoldierNotRobotNoises 50PercentChance + ApplyContext "SoldierRobotNoises:1:30" + Response PlayerRobotNoisesSoldier +} + +Response PlayerBattleCryRobotSoldier +{ + scene "scenes/Player/Soldier/low/robot08.vcd" + scene "scenes/Player/Soldier/low/robot09.vcd" +} +Rule PlayerBattleCryRobotSoldier +{ + criteria ConceptPlayerBattleCry IsSoldier IsRobotCostume + Response PlayerBattleCryRobotSoldier +} + +Response KilledPlayerRobotSoldier +{ + scene "scenes/Player/Soldier/low/robot10.vcd" + scene "scenes/Player/Soldier/low/robot11.vcd" + scene "scenes/Player/Soldier/low/robot12.vcd" + scene "scenes/Player/Soldier/low/robot13.vcd" + scene "scenes/Player/Soldier/low/robot14.vcd" +} +Rule KilledPlayerRobotSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsRobotCostume SoldierNotKillSpeech 50PercentChance + ApplyContext "SoldierKillSpeech:1:10" + Response KilledPlayerRobotSoldier +} + +Response KilledPlayerManyRobotSoldier +{ + scene "scenes/Player/Soldier/low/robot15.vcd" + scene "scenes/Player/Soldier/low/robot16.vcd" + scene "scenes/Player/Soldier/low/robot17.vcd" + scene "scenes/Player/Soldier/low/robot18.vcd" + scene "scenes/Player/Soldier/low/robot19.vcd" +} +Rule KilledPlayerManyRobotSoldier +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponPrimary KilledPlayerDelay SoldierNotKillSpeech IsSoldier IsRobotCostume + ApplyContext "SoldierKillSpeech:1:10" + Response KilledPlayerManyRobotSoldier +} + +Response PlayerKilledForRevengeRobotSoldier +{ + scene "scenes/Player/Soldier/low/robot20.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1060.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/1065.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeRobotSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsRevenge IsRobotCostume + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeRobotSoldier +} + +Response PlayerKilledDominatingRobotSoldier +{ + scene "scenes/Player/Soldier/low/robot21.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot22.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot23.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot24.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot25.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot26.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot27.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/robot28.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingRobotSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated IsRobotCostume + ApplyContext "SoldierKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingRobotSoldier +} + +//-------------------------------------------------------------------------------------------------------------- +// MvM Speech +//-------------------------------------------------------------------------------------------------------------- +Response MvMBombDroppedSoldier +{ + scene "scenes/Player/Soldier/low/4284.vcd" + scene "scenes/Player/Soldier/low/4285.vcd" +} +Rule MvMBombDroppedSoldier +{ + criteria ConceptMvMBombDropped 5PercentChance IsMvMDefender IsSoldier + Response MvMBombDroppedSoldier +} + +Response MvMBombCarrierUpgrade1Soldier +{ + scene "scenes/Player/Soldier/low/4280.vcd" +} +Rule MvMBombCarrierUpgrade1Soldier +{ + criteria ConceptMvMBombCarrierUpgrade1 5PercentChance IsMvMDefender IsSoldier + Response MvMBombCarrierUpgrade1Soldier +} + +Response MvMBombCarrierUpgrade2Soldier +{ + scene "scenes/Player/Soldier/low/4281.vcd" +} +Rule MvMBombCarrierUpgrade2Soldier +{ + criteria ConceptMvMBombCarrierUpgrade2 5PercentChance IsMvMDefender IsSoldier + Response MvMBombCarrierUpgrade2Soldier +} + +Response MvMBombCarrierUpgrade3Soldier +{ + scene "scenes/Player/Soldier/low/4282.vcd" +} +Rule MvMBombCarrierUpgrade3Soldier +{ + criteria ConceptMvMBombCarrierUpgrade3 5PercentChance IsMvMDefender IsSoldier + Response MvMBombCarrierUpgrade3Soldier +} + +Response MvMDefenderDiedScoutSoldier +{ + scene "scenes/Player/Soldier/low/4246.vcd" +} +Rule MvMDefenderDiedScoutSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimScout IsSoldier + Response MvMDefenderDiedScoutSoldier +} + +Response MvMDefenderDiedSpySoldier +{ + scene "scenes/Player/Soldier/low/4247.vcd" +} +Rule MvMDefenderDiedSpySoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSpy IsSoldier + Response MvMDefenderDiedSpySoldier +} + +Response MvMDefenderDiedHeavySoldier +{ + scene "scenes/Player/Soldier/low/4248.vcd" +} +Rule MvMDefenderDiedHeavySoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimHeavy IsSoldier + Response MvMDefenderDiedHeavySoldier +} + +Response MvMDefenderDiedSoldierSoldier +{ + scene "scenes/Player/Soldier/low/4249.vcd" +} +Rule MvMDefenderDiedSoldierSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSoldier IsSoldier + Response MvMDefenderDiedSoldierSoldier +} + +Response MvMDefenderDiedMedicSoldier +{ + scene "scenes/Player/Soldier/low/4250.vcd" +} +Rule MvMDefenderDiedMedicSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimMedic IsSoldier + Response MvMDefenderDiedMedicSoldier +} + +Response MvMDefenderDiedDemomanSoldier +{ + scene "scenes/Player/Soldier/low/4251.vcd" +} +Rule MvMDefenderDiedDemomanSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimDemoman IsSoldier + Response MvMDefenderDiedDemomanSoldier +} + +Response MvMDefenderDiedPyroSoldier +{ + scene "scenes/Player/Soldier/low/4252.vcd" +} +Rule MvMDefenderDiedPyroSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimPyro IsSoldier + Response MvMDefenderDiedPyroSoldier +} + +Response MvMDefenderDiedSniperSoldier +{ + scene "scenes/Player/Soldier/low/4253.vcd" +} +Rule MvMDefenderDiedSniperSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimSniper IsSoldier + Response MvMDefenderDiedSniperSoldier +} + +Response MvMDefenderDiedEngineerSoldier +{ + scene "scenes/Player/Soldier/low/4254.vcd" +} +Rule MvMDefenderDiedEngineerSoldier +{ + criteria ConceptMvMDefenderDied 50PercentChance IsMvMDefender IsVictimEngineer IsSoldier + Response MvMDefenderDiedEngineerSoldier +} + +Response MvMFirstBombPickupSoldier +{ + scene "scenes/Player/Soldier/low/4277.vcd" + scene "scenes/Player/Soldier/low/4279.vcd" +} +Rule MvMFirstBombPickupSoldier +{ + criteria ConceptMvMFirstBombPickup 5PercentChance IsMvMDefender IsSoldier + Response MvMFirstBombPickupSoldier +} + +Response MvMBombPickupSoldier +{ + scene "scenes/Player/Soldier/low/4276.vcd" +} +Rule MvMBombPickupSoldier +{ + criteria ConceptMvMBombPickup 5PercentChance IsMvMDefender IsSoldier + Response MvMBombPickupSoldier +} + +Response MvMSniperCalloutSoldier +{ + scene "scenes/Player/Soldier/low/4258.vcd" +} +Rule MvMSniperCalloutSoldier +{ + criteria ConceptMvMSniperCallout 50PercentChance IsMvMDefender IsSoldier + Response MvMSniperCalloutSoldier +} + +Response MvMSentryBusterSoldier +{ + scene "scenes/Player/Soldier/low/4295.vcd" +} +Rule MvMSentryBusterSoldier +{ + criteria ConceptMvMSentryBuster 50PercentChance IsMvMDefender IsSoldier + Response MvMSentryBusterSoldier +} + +Response MvMSentryBusterDownSoldier +{ + scene "scenes/Player/Soldier/low/4296.vcd" +} +Rule MvMSentryBusterDownSoldier +{ + criteria ConceptMvMSentryBusterDown 20PercentChance IsMvMDefender IsSoldier + Response MvMSentryBusterDownSoldier +} + +Response MvMLastManStandingSoldier +{ + scene "scenes/Player/Soldier/low/4255.vcd" + scene "scenes/Player/Soldier/low/4257.vcd" +} +Rule MvMLastManStandingSoldier +{ + criteria ConceptMvMLastManStanding 20PercentChance IsMvMDefender IsSoldier + Response MvMLastManStandingSoldier +} + +Response MvMEncourageMoneySoldier +{ + scene "scenes/Player/Soldier/low/4270.vcd" +} +Rule MvMEncourageMoneySoldier +{ + criteria ConceptMvMEncourageMoney 50PercentChance IsMvMDefender IsSoldier + Response MvMEncourageMoneySoldier +} + +Response MvMEncourageUpgradeSoldier +{ + scene "scenes/Player/Soldier/low/4274.vcd" +} +Rule MvMEncourageUpgradeSoldier +{ + criteria ConceptMvMEncourageUpgrade 50PercentChance IsMvMDefender IsSoldier + Response MvMEncourageUpgradeSoldier +} + +Response MvMUpgradeCompleteSoldier +{ + scene "scenes/Player/Soldier/low/4271.vcd" + scene "scenes/Player/Soldier/low/4272.vcd" + scene "scenes/Player/Soldier/low/4273.vcd" +} +Rule MvMUpgradeCompleteSoldier +{ + criteria ConceptMvMUpgradeComplete 5PercentChance IsMvMDefender IsSoldier + Response MvMUpgradeCompleteSoldier +} + +Response MvMGiantCalloutSoldier +{ + scene "scenes/Player/Soldier/low/4297.vcd" + scene "scenes/Player/Soldier/low/4301.vcd" +} +Rule MvMGiantCalloutSoldier +{ + criteria ConceptMvMGiantCallout 20PercentChance IsMvMDefender IsSoldier + Response MvMGiantCalloutSoldier +} + +Response MvMGiantHasBombSoldier +{ + scene "scenes/Player/Soldier/low/4302.vcd" + scene "scenes/Player/Soldier/low/4303.vcd" +} +Rule MvMGiantHasBombSoldier +{ + criteria ConceptMvMGiantHasBomb 20PercentChance IsMvMDefender IsSoldier + Response MvMGiantHasBombSoldier +} + +Response MvMSappedRobotSoldier +{ + scene "scenes/Player/Soldier/low/4259.vcd" + scene "scenes/Player/Soldier/low/4260.vcd" +} +Rule MvMSappedRobotSoldier +{ + criteria ConceptMvMSappedRobot 50PercentChance IsMvMDefender IsSoldier + Response MvMSappedRobotSoldier +} + +Response MvMCloseCallSoldier +{ + scene "scenes/Player/Soldier/low/4283.vcd" +} +Rule MvMCloseCallSoldier +{ + criteria ConceptMvMCloseCall 50PercentChance IsMvMDefender IsSoldier + Response MvMCloseCallSoldier +} + +Response MvMTankCalloutSoldier +{ + scene "scenes/Player/Soldier/low/4287.vcd" + scene "scenes/Player/Soldier/low/4288.vcd" +} +Rule MvMTankCalloutSoldier +{ + criteria ConceptMvMTankCallout 50PercentChance IsMvMDefender IsSoldier + Response MvMTankCalloutSoldier +} + +Response MvMTankDeadSoldier +{ + scene "scenes/Player/Soldier/low/4293.vcd" + scene "scenes/Player/Soldier/low/4294.vcd" +} +Rule MvMTankDeadSoldier +{ + criteria ConceptMvMTankDead 50PercentChance IsMvMDefender IsSoldier + Response MvMTankDeadSoldier +} + +Response MvMTankDeployingSoldier +{ + scene "scenes/Player/Soldier/low/4292.vcd" +} +Rule MvMTankDeployingSoldier +{ + criteria ConceptMvMTankDeploying 50PercentChance IsMvMDefender IsSoldier + Response MvMTankDeployingSoldier +} + +Response MvMAttackTheTankSoldier +{ + scene "scenes/Player/Soldier/low/4289.vcd" + scene "scenes/Player/Soldier/low/4290.vcd" + scene "scenes/Player/Soldier/low/4291.vcd" +} +Rule MvMAttackTheTankSoldier +{ + criteria ConceptMvMAttackTheTank 50PercentChance IsMvMDefender IsSoldier + Response MvMAttackTheTankSoldier +} + +Response MvMTauntSoldier +{ + scene "scenes/Player/Soldier/low/4262.vcd" + scene "scenes/Player/Soldier/low/4263.vcd" + scene "scenes/Player/Soldier/low/4264.vcd" + scene "scenes/Player/Soldier/low/4265.vcd" + scene "scenes/Player/Soldier/low/4266.vcd" + scene "scenes/Player/Soldier/low/4267.vcd" +} +Rule MvMTauntSoldier +{ + criteria ConceptMvMTaunt 50PercentChance IsMvMDefender IsSoldier + Response MvMTauntSoldier +} + +Response MvMWaveWinSoldier +{ + scene "scenes/Player/Soldier/low/4231.vcd" + scene "scenes/Player/Soldier/low/4232.vcd" + scene "scenes/Player/Soldier/low/4233.vcd" + scene "scenes/Player/Soldier/low/4234.vcd" + scene "scenes/Player/Soldier/low/4235.vcd" +} +Rule MvMWaveWinSoldier +{ + criteria ConceptMvMWaveWin 50PercentChance IsMvMDefender IsSoldier + Response MvMWaveWinSoldier +} + +Response MvMWaveLoseSoldier +{ + scene "scenes/Player/Soldier/low/4236.vcd" + scene "scenes/Player/Soldier/low/4237.vcd" + scene "scenes/Player/Soldier/low/4238.vcd" + scene "scenes/Player/Soldier/low/4239.vcd" + scene "scenes/Player/Soldier/low/4240.vcd" +} +Rule MvMWaveLoseSoldier +{ + criteria ConceptMvMWaveLose 50PercentChance IsMvMDefender IsSoldier + Response MvMWaveLoseSoldier +} + +Response MvMMoneyPickupSoldier +{ + scene "scenes/Player/Soldier/low/4269.vcd" +} +Rule MvMMoneyPickupSoldier +{ + criteria ConceptMvMMoneyPickup 5PercentChance IsMvMDefender IsSoldier + Response MvMMoneyPickupSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Criterion "SoldierNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "SoldierNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "SoldierNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "SoldierNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "SoldierNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "SoldierNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Response CartMovingBackwardsDefenseSoldier +{ + scene "scenes/Player/Soldier/low/7371.vcd" + scene "scenes/Player/Soldier/low/7375.vcd" +} +Rule CartMovingBackwardsDefenseSoldier +{ + criteria ConceptCartMovingBackward IsOnDefense IsSoldier 75PercentChance + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseSoldier +} +Response CartMovingBackwardsOffenseSoldier +{ + scene "scenes/Player/Soldier/low/7363.vcd" + scene "scenes/Player/Soldier/low/7365.vcd" +} +Rule CartMovingBackwardsOffenseSoldier +{ + criteria ConceptCartMovingBackward IsOnOffense IsSoldier 75PercentChance + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseSoldier +} +Response CartMovingForwardDefenseSoldier +{ + scene "scenes/Player/Soldier/low/7368.vcd" + scene "scenes/Player/Soldier/low/7369.vcd" + scene "scenes/Player/Soldier/low/8559.vcd" +} +Rule CartMovingForwardDefenseSoldier +{ + criteria ConceptCartMovingForward IsOnDefense IsSoldier 75PercentChance + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseSoldier +} +Response CartMovingForwardOffenseSoldier +{ + scene "scenes/Player/Soldier/low/7345.vcd" + scene "scenes/Player/Soldier/low/7346.vcd" + scene "scenes/Player/Soldier/low/7347.vcd" + scene "scenes/Player/Soldier/low/7350.vcd" + scene "scenes/Player/Soldier/low/7351.vcd" + scene "scenes/Player/Soldier/low/7352.vcd" + scene "scenes/Player/Soldier/low/7353.vcd" + scene "scenes/Player/Soldier/low/7356.vcd" + scene "scenes/Player/Soldier/low/7355.vcd" + scene "scenes/Player/Soldier/low/7359.vcd" + scene "scenes/Player/Soldier/low/7362.vcd" + scene "scenes/Player/Soldier/low/7357.vcd" + scene "scenes/Player/Soldier/low/7349.vcd" + scene "scenes/Player/Soldier/low/7348.vcd" + scene "scenes/Player/Soldier/low/7354.vcd" + scene "scenes/Player/Soldier/low/7377.vcd" + scene "scenes/Player/Soldier/low/7378.vcd" + scene "scenes/Player/Soldier/low/7379.vcd" + scene "scenes/Player/Soldier/low/7382.vcd" + scene "scenes/Player/Soldier/low/7383.vcd" + scene "scenes/Player/Soldier/low/7385.vcd" +} +Rule CartMovingForwardOffenseSoldier +{ + criteria ConceptCartMovingForward IsOnOffense IsSoldier 75PercentChance + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseSoldier +} +Response CartMovingStoppedDefenseSoldier +{ + scene "scenes/Player/Soldier/low/7396.vcd" + scene "scenes/Player/Soldier/low/7398.vcd" + scene "scenes/Player/Soldier/low/7400.vcd" +} +Rule CartMovingStoppedDefenseSoldier +{ + criteria ConceptCartMovingStopped IsOnDefense IsSoldier 75PercentChance + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseSoldier +} +Response CartMovingStoppedOffenseSoldier +{ + scene "scenes/Player/Soldier/low/7389.vcd" + scene "scenes/Player/Soldier/low/7390.vcd" + scene "scenes/Player/Soldier/low/7388.vcd" +} +Rule CartMovingStoppedOffenseSoldier +{ + criteria ConceptCartMovingStopped IsOnOffense IsSoldier 75PercentChance + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseSoldier +} +//-------------------------------------------------------------------------------------------------------------- +// END OF Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompSoldier +{ + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_13.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_comp_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_comp_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_comp_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_comp_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_rare_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamefirst_rare_06.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompSoldier +{ + criteria ConceptPlayerRoundStartComp IsSoldier IsFirstRound 40PercentChance + Response PlayerFirstRoundStartCompSoldier +} + +Response PlayerWonPrevRoundCompSoldier +{ + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamewonlast_rare_04.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompSoldier +{ + criteria ConceptPlayerRoundStartComp IsSoldier IsNotFirstRound PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompSoldier +} + +Response PlayerLostPrevRoundCompSoldier +{ + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_rare_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregamelostlast_rare_05.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompSoldier +{ + criteria ConceptPlayerRoundStartComp IsSoldier IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompSoldier +} + +Response PlayerTiedPrevRoundCompSoldier +{ + scene "scenes/Player/Soldier/low/cm_soldier_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregametie_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregametie_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregametie_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_pregametie_06.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompSoldier +{ + criteria ConceptPlayerRoundStartComp IsSoldier IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompSoldier +} + +Response PlayerGameWinCompSoldier +{ + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_08.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_09.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Soldier/low/cm_soldier_gamewon_rare_08.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompSoldier +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsSoldier 40PercentChance + Response PlayerGameWinCompSoldier +} + +Response PlayerMatchWinCompSoldier +{ + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_04.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_05.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_06.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_07.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_08.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Soldier/low/cm_soldier_matchwon_09.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompSoldier +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsSoldier 40PercentChance + Response PlayerMatchWinCompSoldier +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/soldier_auto.lua b/gamemodes/tf/gamemode/contents/talker/soldier_auto.lua new file mode 100644 index 000000000..8884a69ff --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/soldier_auto.lua @@ -0,0 +1,201 @@ +//-------------------------------------------------------------------------------------------------------------- +// Soldier Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + +Criterion "SoldierNotIdleSpeech" "SoldierIdleSpeech" "!=1" "required" + + +Response item_birdhead_round_startSoldier +{ + scene "scenes/Player/Soldier/low/7464.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7464.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7465.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7466.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7469.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7470.vcd" predelay "1.0, 5.0" +} +Rule item_birdhead_round_startSoldier +{ + criteria ConceptPlayerRoundStart IsSoldier 100PercentChance IsSoldierBirdHead + Response item_birdhead_round_startSoldier +} + +Response item_birdhead_uberSoldier +{ + scene "scenes/Player/Soldier/low/7473.vcd" + scene "scenes/Player/Soldier/low/7474.vcd" +} +Rule item_birdhead_uberSoldier +{ + criteria ConceptMedicChargeDeployed IsSoldier IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsSoldierBirdHead + Response item_birdhead_uberSoldier +} + +Response item_maggot_idleSoldier +{ + scene "scenes/Player/Soldier/low/7494.vcd" + scene "scenes/Player/Soldier/low/7492.vcd" + scene "scenes/Player/Soldier/low/7493.vcd" + scene "scenes/Player/Soldier/low/7498.vcd" + scene "scenes/Player/Soldier/low/7496.vcd" + scene "scenes/Player/Soldier/low/7495.vcd" + scene "scenes/Player/Soldier/low/7497.vcd" + scene "scenes/Player/Soldier/low/7500.vcd" + scene "scenes/Player/Soldier/low/7502.vcd" + scene "scenes/Player/Soldier/low/7501.vcd" +} +Rule item_maggot_idleSoldier +{ + criteria ConceptPlayerExpression IsSoldier 30PercentChance IsSoldierMaggotHat SoldierNotIdleSpeech + ApplyContext "SoldierIdleSpeech:1:10" + Response item_maggot_idleSoldier +} + + +Response item_maggot_round_battlecrySoldier +{ + scene "scenes/Player/Soldier/low/7482.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7484.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7485.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7487.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7489.vcd" predelay "1.0, 5.0" +} + + +Rule item_maggot_round_battlecrySoldier +{ + criteria ConceptPlayerBattleCry IsHeavy IsSoldierMaggotHat + Response item_maggot_round_battlecrySoldier +} + + + +Response item_maggot_round_startSoldier +{ + scene "scenes/Player/Soldier/low/7482.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7484.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7485.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7487.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7489.vcd" predelay "1.0, 5.0" +} +Rule item_maggot_round_startSoldier +{ + criteria ConceptPlayerRoundStart IsSoldier 100PercentChance IsSoldierMaggotHat + Response item_maggot_round_startSoldier +} + +Response item_maggot_uberSoldier +{ + scene "scenes/Player/Soldier/low/7490.vcd" + scene "scenes/Player/Soldier/low/7491.vcd" +} +Rule item_maggot_uberSoldier +{ + criteria ConceptMedicChargeDeployed IsSoldier IsInvulnerable MedicNotInvulnerableSpeech 20PercentChance IsSoldierMaggotHat + Response item_maggot_uberSoldier +} + +Response item_wizard_dominationSoldier +{ + scene "scenes/Player/Soldier/low/7512.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/8570.vcd" predelay "2.5" +} +Rule item_wizard_dominationSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated 30PercentChance IsSoldierWizardHat + ApplyContext "SoldierKillSpeech:1:10" + Response item_wizard_dominationSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_maggot_healedSoldier +{ + scene "scenes/Player/Soldier/low/7505.vcd" + scene "scenes/Player/Soldier/low/7504.vcd" +} +Rule item_maggot_healedSoldier +{ + criteria ConceptMedicChargeStopped IsSoldier SuperHighHealthContext SoldierNotSaidHealThanks IsSoldierMaggotHat 10PercentChance + ApplyContext "SoldierSaidHealThanks:1:20" + Response item_maggot_healedSoldier +} + +Response item_unicorn_round_startSoldier +{ + scene "scenes/Player/Soldier/low/7457.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7456.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7454.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7455.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7453.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7452.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/7458.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/8562.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/8563.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Soldier/low/8564.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startSoldier +{ + criteria ConceptPlayerRoundStart IsSoldier 100PercentChance IsUnicornHead + Response item_unicorn_round_startSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_maggot_dominationSoldier +{ + scene "scenes/Player/Soldier/low/7510.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/8565.vcd" predelay "2.5" +} +Rule item_maggot_dominationSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated 30PercentChance IsSoldierMaggotHat + ApplyContext "SoldierKillSpeech:1:10" + Response item_maggot_dominationSoldier +} + +Response item_unicorn_dominationSoldier +{ + scene "scenes/Player/Soldier/low/7460.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/7459.vcd" predelay "2.5" + scene "scenes/Player/Soldier/low/7463.vcd" predelay "2.5" +} +Rule item_unicorn_dominationSoldier +{ + criteria ConceptKilledPlayer IsSoldier IsDominated 30PercentChance IsUnicornHead + ApplyContext "SoldierKillSpeech:1:10" + Response item_unicorn_dominationSoldier +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response item_birdhead_on_fireSoldier +{ + scene "scenes/Player/Soldier/low/7479.vcd" + scene "scenes/Player/Soldier/low/7481.vcd" +} +Rule item_birdhead_on_fireSoldier +{ + criteria ConceptFire IsSoldier SoldierIsNotStillonFire 40PercentChance IsSoldierBirdHead + ApplyContext "SoldierOnFire:1:7" + Response item_birdhead_on_fireSoldier +} + +Response item_maggot_on_fireSoldier +{ + scene "scenes/Player/Soldier/low/7508.vcd" + scene "scenes/Player/Soldier/low/7507.vcd" +} +Rule item_maggot_on_fireSoldier +{ + criteria ConceptFire IsSoldier SoldierIsNotStillonFire 20PercentChance IsSoldierMaggotHat + ApplyContext "SoldierOnFire:1:7" + Response item_maggot_on_fireSoldier +} + diff --git a/gamemodes/tf/gamemode/contents/talker/spy.lua b/gamemodes/tf/gamemode/contents/talker/spy.lua new file mode 100644 index 000000000..4ad2a05d9 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/spy.lua @@ -0,0 +1,1350 @@ +//-------------------------------------------------------------------------------------------------------------- +// Spy Response Rule File +//-------------------------------------------------------------------------------------------------------------- + + + +Response PlayerCloakedSpyDemomanSpy +{ + scene "scenes/Player/Spy/low/729.vcd" +} +Rule PlayerCloakedSpyDemomanSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnDemoman + Response PlayerCloakedSpyDemomanSpy +} + +Response PlayerCloakedSpyEngineerSpy +{ + scene "scenes/Player/Spy/low/735.vcd" +} +Rule PlayerCloakedSpyEngineerSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnEngineer + Response PlayerCloakedSpyEngineerSpy +} + +Response PlayerCloakedSpyHeavySpy +{ + scene "scenes/Player/Spy/low/725.vcd" +} +Rule PlayerCloakedSpyHeavySpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnHeavy + Response PlayerCloakedSpyHeavySpy +} + +Response PlayerCloakedSpyMedicSpy +{ + scene "scenes/Player/Spy/low/733.vcd" +} +Rule PlayerCloakedSpyMedicSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnMedic + Response PlayerCloakedSpyMedicSpy +} + +Response PlayerCloakedSpyPyroSpy +{ + scene "scenes/Player/Spy/low/727.vcd" +} +Rule PlayerCloakedSpyPyroSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnPyro + Response PlayerCloakedSpyPyroSpy +} + +Response PlayerCloakedSpyScoutSpy +{ + scene "scenes/Player/Spy/low/721.vcd" +} +Rule PlayerCloakedSpyScoutSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnScout + Response PlayerCloakedSpyScoutSpy +} + +Response PlayerCloakedSpySniperSpy +{ + scene "scenes/Player/Spy/low/737.vcd" +} +Rule PlayerCloakedSpySniperSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnSniper + Response PlayerCloakedSpySniperSpy +} + +Response PlayerCloakedSpySoldierSpy +{ + scene "scenes/Player/Spy/low/723.vcd" +} +Rule PlayerCloakedSpySoldierSpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnSoldier + Response PlayerCloakedSpySoldierSpy +} + +Response PlayerCloakedSpySpySpy +{ + scene "scenes/Player/Spy/low/731.vcd" + scene "scenes/Player/Spy/low/732.vcd" +} +Rule PlayerCloakedSpySpySpy +{ + criteria ConceptPlayerCloakedSpy IsSpy IsOnSpy + Response PlayerCloakedSpySpySpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response HealThanksSpy +{ + scene "scenes/Player/Spy/low/851.vcd" + scene "scenes/Player/Spy/low/852.vcd" + scene "scenes/Player/Spy/low/853.vcd" +} +Rule HealThanksSpy +{ + criteria ConceptMedicChargeStopped IsSpy SuperHighHealthContext SpyNotSaidHealThanks 50PercentChance + ApplyContext "SpySaidHealThanks:1:20" + Response HealThanksSpy +} + +Response PlayerRoundStartSpy +{ + scene "scenes/Player/Spy/low/708.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/709.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/1309.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/707.vcd" predelay "1.0, 5.0" +} +Rule PlayerRoundStartSpy +{ + criteria ConceptPlayerRoundStart IsSpy + Response PlayerRoundStartSpy +} + +Response PlayerCappedIntelligenceSpy +{ + scene "scenes/Player/Spy/low/698.vcd" + scene "scenes/Player/Spy/low/699.vcd" + scene "scenes/Player/Spy/low/700.vcd" +} +Rule PlayerCappedIntelligenceSpy +{ + criteria ConceptPlayerCapturedIntelligence IsSpy + Response PlayerCappedIntelligenceSpy +} + +Response PlayerCapturedPointSpy +{ + scene "scenes/Player/Spy/low/695.vcd" + scene "scenes/Player/Spy/low/696.vcd" + scene "scenes/Player/Spy/low/697.vcd" +} +Rule PlayerCapturedPointSpy +{ + criteria ConceptPlayerCapturedPoint IsSpy + Response PlayerCapturedPointSpy +} + +Response PlayerSuddenDeathSpy +{ + scene "scenes/Player/Spy/low/766.vcd" + scene "scenes/Player/Spy/low/767.vcd" + scene "scenes/Player/Spy/low/768.vcd" + scene "scenes/Player/Spy/low/769.vcd" + scene "scenes/Player/Spy/low/771.vcd" + scene "scenes/Player/Spy/low/770.vcd" +} +Rule PlayerSuddenDeathSpy +{ + criteria ConceptPlayerSuddenDeathStart IsSpy + Response PlayerSuddenDeathSpy +} + +Response PlayerStalemateSpy +{ + scene "scenes/Player/Spy/low/701.vcd" + scene "scenes/Player/Spy/low/702.vcd" + scene "scenes/Player/Spy/low/703.vcd" +} +Rule PlayerStalemateSpy +{ + criteria ConceptPlayerStalemate IsSpy + Response PlayerStalemateSpy +} + +Response PlayerTeleporterThanksSpy +{ + scene "scenes/Player/Spy/low/854.vcd" + scene "scenes/Player/Spy/low/855.vcd" + scene "scenes/Player/Spy/low/856.vcd" +} +Rule PlayerTeleporterThanksSpy +{ + criteria ConceptTeleported IsNotEngineer IsSpy 30PercentChance + Response PlayerTeleporterThanksSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response DefendOnThePointSpy +{ + scene "scenes/Player/Spy/low/830.vcd" + scene "scenes/Player/Spy/low/1323.vcd" + scene "scenes/Player/Spy/low/1324.vcd" + scene "scenes/Player/Spy/low/1325.vcd" +} +Rule DefendOnThePointSpy +{ + criteria ConceptFireWeapon IsSpy IsOnFriendlyControlPoint NotDefendOnThePointSpeech + ApplyContext "DefendOnThePointSpeech:1:30" + applycontexttoworld + Response DefendOnThePointSpy +} + +// Custom stuff +Response InvulnerableSpeechSpy +{ + scene "scenes/Player/Spy/low/836.vcd" + scene "scenes/Player/Spy/low/848.vcd" + scene "scenes/Player/Spy/low/843.vcd" +} +Rule InvulnerableSpeechSpy +{ + criteria ConceptFireWeapon IsSpy IsInvulnerable 20PercentChance + ApplyContext "SpyInvulnerableSpeech:1:30" + Response InvulnerableSpeechSpy +} + +// auto assist + +Response KilledPlayerAssistAutoSpy +{ + scene "scenes/Player/Spy/low/828.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/829.vcd" predelay "2.5" +} +Rule KilledPlayerAssistAutoSpy +{ + criteria ConceptKilledPlayer IsSpy IsBeingHealed IsARecentKill KilledPlayerDelay 20PercentChance SpyNotAssistSpeech + ApplyContext "SpyAssistSpeech:1:20" + Response KilledPlayerAssistAutoSpy +} + +// End custom + +Response KilledPlayerManySpy +{ + scene "scenes/Player/Spy/low/772.vcd" + scene "scenes/Player/Spy/low/1312.vcd" + scene "scenes/Player/Spy/low/773.vcd" + scene "scenes/Player/Spy/low/774.vcd" + scene "scenes/Player/Spy/low/1313.vcd" + scene "scenes/Player/Spy/low/775.vcd" + scene "scenes/Player/Spy/low/1322.vcd" + scene "scenes/Player/Spy/low/824.vcd" + scene "scenes/Player/Spy/low/825.vcd" +} +Rule KilledPlayerManySpy +{ + criteria ConceptKilledPlayer IsManyRecentKills 30PercentChance IsWeaponSecondary KilledPlayerDelay SpyNotKillSpeech IsSpy + ApplyContext "SpyKillSpeech:1:10" + Response KilledPlayerManySpy +} + +// Custom stuff +// If a Sapper has been removed in the past 10 seconds and the Spy gets a kill on an Engineer these can play +Response PlayerSapperKillSpy +{ + scene "scenes/Player/Spy/low/840.vcd" + scene "scenes/Player/Spy/low/839.vcd" +} +Rule PlayerSapperKillSpy +{ + criteria ConceptKilledPlayer IsSpy IsVictimEngineer 50PercentChance SapperDestroyed NotSapperLostSpeech + ApplyContext "SpyKillSpeechMelee:1:10" + ApplyContext "SpySapperLostSpeech:1:10" + Response PlayerSapperKillSpy +} + +Rule SapperLost +{ + criteria ConceptLostObject IsSpy + ApplyContext "LostSapper:1:10" + Response PlayerExpressionAttackSpy +} + +// This rule is for sapping after you kill an Engy +// It checks if you have already said the line in the past 10 seconds and fails if you have +// It checks if you have killed an Engineer in the past 10 seconds and fails if you have not +// +// Stab and Sap +Response PlayerKilledObjectSpy +{ + scene "scenes/Player/Spy/low/821.vcd" +} +Rule PlayerKilledObjectSpy +{ + criteria ConceptKilledObject IsSpy 50PercentChance EngineerWasKilled NotSapSpeech + ApplyContext "ObjectDestroyed:1:5" + Response PlayerKilledObjectSpy +} + +// This simply checks if you have killed an Engineer in the past 10 seconds +Rule EngineerKilled +{ + criteria ConceptKilledPlayer IsSpy IsVictimEngineer + ApplyContext "EngyKilled:1:10" + Response PlayerExpressionAttackSpy // Seems to require a response for the context to actually set +} + +// This checks if you have destroyed a building in the past five seconds +// Sap and Stab +Rule PlayerKilledObjectSpyContext +{ + criteria ConceptKilledObject IsSpy + ApplyContext "ObjectDestroyed:1:5" + Response PlayerExpressionAttackSpy +} + +// If you have then this checks if you have killed an Engineer in the past ten seconds +// If you have then the line plays +// So essentially we accommodate both stab and sap and sap and stab +Rule EngineerKilledAfterSap +{ + criteria ConceptKilledPlayer IsSpy IsVictimEngineer ToysMurdered + ApplyContext "SapKillSpeech:1:10" + Response PlayerKilledObjectSpy +} +// End custom + +Response KilledPlayerMeleeSpy +{ + scene "scenes/Player/Spy/low/817.vcd" + scene "scenes/Player/Spy/low/818.vcd" + scene "scenes/Player/Spy/low/826.vcd" +} + +Rule KilledPlayerMeleeSpy +{ + criteria ConceptKilledPlayer KilledPlayerDelay 30PercentChance IsWeaponMelee SpyNotKillSpeechMelee IsSpy + ApplyContext "SpyKillSpeechMelee:1:5" + Response KilledPlayerMeleeSpy +} + +// Custom stuff +Response KilledPlayerMeleeDisguisedSpy +{ + scene "scenes/Player/Spy/low/816.vcd" predelay "0.75" + scene "scenes/Player/Spy/low/823.vcd" predelay "0.75" + scene "scenes/Player/Spy/low/827.vcd" predelay "0.75" + scene "scenes/Player/Spy/low/838.vcd" predelay "0.75" + scene "scenes/Player/Spy/low/819.vcd" predelay "0.75" + scene "scenes/Player/Spy/low/820.vcd" predelay "0.75" + scene "scenes/Player/Spy/low/822.vcd" predelay "0.75" +} +Rule KilledPlayerMeleeDisguisedSpy +{ + criteria ConceptKilledPlayer KilledPlayerDelay IsDisguised 30PercentChance IsWeaponMelee SpyNotKillSpeechMelee IsSpy + ApplyContext "SpyKillSpeechMelee:1:5" + Response KilledPlayerMeleeDisguisedSpy + Response KilledPlayerMeleeSpy +} +// End custom + +Response MedicFollowSpy +{ + scene "scenes/Player/Spy/low/3030.vcd" predelay ".25" + scene "scenes/Player/Spy/low/3015.vcd" predelay ".25" +} +Rule MedicFollowSpy +{ + criteria ConceptPlayerMedic IsOnMedic IsSpy IsNotCrossHairEnemy NotLowHealth SpyIsNotStillonFire + ApplyContext "SpyKillSpeech:1:10" + Response MedicFollowSpy +} + +Response PlayerJarateHit +{ + scene "scenes/Player/Spy/low/3073.vcd" + scene "scenes/Player/Spy/low/3074.vcd" + scene "scenes/Player/Spy/low/3075.vcd" + scene "scenes/Player/Spy/low/3076.vcd" + scene "scenes/Player/Spy/low/3078.vcd" + scene "scenes/Player/Spy/low/3072.vcd" +} +Rule PlayerJarateHit +{ + criteria ConceptJarateHit IsSpy + Response PlayerJarateHit +} + +Response PlayerKilledCapperSpy +{ + scene "scenes/Player/Spy/low/713.vcd" + scene "scenes/Player/Spy/low/716.vcd" + scene "scenes/Player/Spy/low/809.vcd" + scene "scenes/Player/Spy/low/810.vcd" + scene "scenes/Player/Spy/low/811.vcd" +} +Rule PlayerKilledCapperSpy +{ + criteria ConceptCapBlocked IsSpy + ApplyContext "SpyKillSpeech:1:10" + Response PlayerKilledCapperSpy +} + +Response PlayerKilledDominatingDemomanSpy +{ + scene "scenes/Player/Spy/low/3008.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3025.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3065.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3066.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3067.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3068.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingDemomanSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimDemoman + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingDemomanSpy +} + +Response PlayerKilledDominatingEngineerSpy +{ + scene "scenes/Player/Spy/low/3009.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3037.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3062.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3063.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3064.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3070.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingEngineerSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimEngineer + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingEngineerSpy +} + +Response PlayerKilledDominatingHeavySpy +{ + scene "scenes/Player/Spy/low/3019.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3024.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3031.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3056.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3057.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3058.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3069.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3055.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingHeavySpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimHeavy + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingHeavySpy +} + +Response PlayerKilledDominatingMedicSpy +{ + scene "scenes/Player/Spy/low/3026.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3027.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3028.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3029.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3040.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3071.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingMedicSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimMedic + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingMedicSpy +} + +Response PlayerKilledDominatingPyroSpy +{ + scene "scenes/Player/Spy/low/3010.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3022.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3041.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3042.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3032.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingPyroSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimPyro + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingPyroSpy +} + +Response PlayerKilledDominatingScoutSpy +{ + scene "scenes/Player/Spy/low/3011.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3043.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3044.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3045.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3046.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3047.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3048.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3049.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingScoutSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimScout + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingScoutSpy +} + +Response PlayerKilledDominatingSniperSpy +{ + scene "scenes/Player/Spy/low/3012.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/831.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3020.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3033.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3050.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3036.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3052.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3051.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSniperSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimSniper + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSniperSpy +} + +Response PlayerKilledDominatingSoldierSpy +{ + scene "scenes/Player/Spy/low/3013.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3034.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3053.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3054.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3061.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSoldierSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimSoldier + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSoldierSpy +} + +Response PlayerKilledDominatingSpySpy +{ + scene "scenes/Player/Spy/low/3014.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3021.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3059.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3077.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3060.vcd" predelay "2.5" +} +Rule PlayerKilledDominatingSpySpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated IsVictimSpy + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledDominatingSpySpy +} + +Response PlayerKilledForRevengeSpy +{ + scene "scenes/Player/Spy/low/710.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/715.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/743.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/812.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/813.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/841.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3017.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3038.vcd" predelay "2.5" + scene "scenes/Player/Spy/low/3039.vcd" predelay "2.5" +} +Rule PlayerKilledForRevengeSpy +{ + criteria ConceptKilledPlayer IsSpy IsRevenge + ApplyContext "SpyKillSpeech:1:10" + ApplyContext "IsDominating:1:10" + Response PlayerKilledForRevengeSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Pain +//-------------------------------------------------------------------------------------------------------------- +Response PlayerAttackerPainSpy +{ + scene "scenes/Player/Spy/low/803.vcd" + scene "scenes/Player/Spy/low/804.vcd" + scene "scenes/Player/Spy/low/805.vcd" + scene "scenes/Player/Spy/low/1387.vcd" + scene "scenes/Player/Spy/low/1388.vcd" +} +Rule PlayerAttackerPainSpy +{ + criteria ConceptAttackerPain IsSpy + Response PlayerAttackerPainSpy +} + +Response PlayerOnFireSpy +{ + scene "scenes/Player/Spy/low/704.vcd" +} +Rule PlayerOnFireSpy +{ + criteria ConceptFire IsSpy SpyIsNotStillonFire + ApplyContext "SpyOnFire:1:7" + Response PlayerOnFireSpy +} + +Response PlayerOnFireRareSpy +{ + scene "scenes/Player/Spy/low/705.vcd" + scene "scenes/Player/Spy/low/706.vcd" +} +Rule PlayerOnFireRareSpy +{ + criteria ConceptFire IsSpy 10PercentChance SpyIsNotStillonFire + ApplyContext "SpyOnFire:1:7" + Response PlayerOnFireRareSpy +} + +Response PlayerPainSpy +{ + scene "scenes/Player/Spy/low/806.vcd" + scene "scenes/Player/Spy/low/807.vcd" + scene "scenes/Player/Spy/low/808.vcd" + scene "scenes/Player/Spy/low/1381.vcd" +} +Rule PlayerPainSpy +{ + criteria ConceptPain IsSpy + Response PlayerPainSpy +} + +Response PlayerStillOnFireSpy +{ + scene "scenes/Player/Spy/low/1928.vcd" +} +Rule PlayerStillOnFireSpy +{ + criteria ConceptFire IsSpy SpyIsStillonFire + ApplyContext "SpyOnFire:1:7" + Response PlayerStillOnFireSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Duel Speech +//-------------------------------------------------------------------------------------------------------------- +Response AcceptedDuelSpy +{ + scene "scenes/Player/Spy/low/709.vcd" + scene "scenes/Player/Spy/low/834.vcd" + scene "scenes/Player/Spy/low/833.vcd" + scene "scenes/Player/Spy/low/845.vcd" + scene "scenes/Player/Spy/low/847.vcd" + scene "scenes/Player/Spy/low/858.vcd" + scene "scenes/Player/Spy/low/859.vcd" +} +Rule AcceptedDuelSpy +{ + criteria ConceptIAcceptDuel IsSpy + Response AcceptedDuelSpy +} + +Response MeleeDareSpy +{ + scene "scenes/Player/Spy/low/3016.vcd" + scene "scenes/Player/Spy/low/3023.vcd" +} +Rule MeleeDareSpy +{ + criteria ConceptRequestDuel IsSpy + Response MeleeDareSpy +} + +Response RejectedDuelSpy +{ + scene "scenes/Player/Spy/low/703.vcd" + scene "scenes/Player/Spy/low/790.vcd" + scene "scenes/Player/Spy/low/791.vcd" + scene "scenes/Player/Spy/low/824.vcd" + scene "scenes/Player/Spy/low/825.vcd" + scene "scenes/Player/Spy/low/831.vcd" +} +Rule RejectedDuelSpy +{ + criteria ConceptDuelRejected IsSpy + Response RejectedDuelSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 1 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerGoSpy +{ + scene "scenes/Player/Spy/low/740.vcd" + scene "scenes/Player/Spy/low/741.vcd" + scene "scenes/Player/Spy/low/742.vcd" +} +Rule PlayerGoSpy +{ + criteria ConceptPlayerGo IsSpy + Response PlayerGoSpy +} + +Response PlayerHeadLeftSpy +{ + scene "scenes/Player/Spy/low/746.vcd" + scene "scenes/Player/Spy/low/747.vcd" + scene "scenes/Player/Spy/low/748.vcd" +} +Rule PlayerHeadLeftSpy +{ + criteria ConceptPlayerLeft IsSpy + Response PlayerHeadLeftSpy +} + +Response PlayerHeadRightSpy +{ + scene "scenes/Player/Spy/low/749.vcd" + scene "scenes/Player/Spy/low/750.vcd" + scene "scenes/Player/Spy/low/751.vcd" +} +Rule PlayerHeadRightSpy +{ + criteria ConceptPlayerRight IsSpy + Response PlayerHeadRightSpy +} + +Response PlayerHelpSpy +{ + scene "scenes/Player/Spy/low/752.vcd" + scene "scenes/Player/Spy/low/753.vcd" + scene "scenes/Player/Spy/low/754.vcd" +} +Rule PlayerHelpSpy +{ + criteria ConceptPlayerHelp IsSpy + Response PlayerHelpSpy +} + +Response PlayerHelpCaptureSpy +{ + scene "scenes/Player/Spy/low/755.vcd" + scene "scenes/Player/Spy/low/756.vcd" + scene "scenes/Player/Spy/low/757.vcd" +} +Rule PlayerHelpCaptureSpy +{ + criteria ConceptPlayerHelp IsSpy IsOnCappableControlPoint + ApplyContext "SpyHelpCap:1:10" + Response PlayerHelpCaptureSpy +} + +Response PlayerHelpCapture2Spy +{ + scene "scenes/Player/Spy/low/830.vcd" + scene "scenes/Player/Spy/low/1323.vcd" + scene "scenes/Player/Spy/low/1324.vcd" + scene "scenes/Player/Spy/low/1325.vcd" +} +Rule PlayerHelpCapture2Spy +{ + criteria ConceptPlayerHelp IsSpy IsOnCappableControlPoint IsHelpCapSpy + Response PlayerHelpCapture2Spy +} + +Response PlayerHelpDefendSpy +{ + scene "scenes/Player/Spy/low/758.vcd" + scene "scenes/Player/Spy/low/759.vcd" + scene "scenes/Player/Spy/low/760.vcd" +} +Rule PlayerHelpDefendSpy +{ + criteria ConceptPlayerHelp IsSpy IsOnFriendlyControlPoint + Response PlayerHelpDefendSpy +} + +Response PlayerMedicSpy +{ + scene "scenes/Player/Spy/low/779.vcd" + scene "scenes/Player/Spy/low/780.vcd" + scene "scenes/Player/Spy/low/781.vcd" +} +Rule PlayerMedicSpy +{ + criteria ConceptPlayerMedic IsSpy + Response PlayerMedicSpy +} + +Response PlayerAskForBallSpy +{ +} +Rule PlayerAskForBallSpy +{ + criteria ConceptPlayerAskForBall IsSpy + Response PlayerAskForBallSpy +} + +Response PlayerMoveUpSpy +{ + scene "scenes/Player/Spy/low/782.vcd" + scene "scenes/Player/Spy/low/1317.vcd" +} +Rule PlayerMoveUpSpy +{ + criteria ConceptPlayerMoveUp IsSpy + Response PlayerMoveUpSpy +} + +Response PlayerNoSpy +{ + scene "scenes/Player/Spy/low/797.vcd" + scene "scenes/Player/Spy/low/798.vcd" + scene "scenes/Player/Spy/low/799.vcd" +} +Rule PlayerNoSpy +{ + criteria ConceptPlayerNo IsSpy + Response PlayerNoSpy +} + +Response PlayerThanksSpy +{ + scene "scenes/Player/Spy/low/849.vcd" + scene "scenes/Player/Spy/low/850.vcd" + scene "scenes/Player/Spy/low/1326.vcd" +} +Rule PlayerThanksSpy +{ + criteria ConceptPlayerThanks IsSpy + Response PlayerThanksSpy +} + +// Custom Assist kill response +// As there is no actual concept for assist kills, this is the second best method. +// Say thanks after you kill more than one person. + +Response KilledPlayerAssistSpy +{ + scene "scenes/Player/Spy/low/828.vcd" + scene "scenes/Player/Spy/low/829.vcd" +} +Rule KilledPlayerAssistSpy +{ + criteria ConceptPlayerThanks IsSpy IsARecentKill KilledPlayerDelay SpyNotAssistSpeech + ApplyContext "SpyAssistSpeech:1:20" + Response KilledPlayerAssistSpy +} +// End custom + +Response PlayerYesSpy +{ + scene "scenes/Player/Spy/low/857.vcd" + scene "scenes/Player/Spy/low/858.vcd" + scene "scenes/Player/Spy/low/859.vcd" +} +Rule PlayerYesSpy +{ + criteria ConceptPlayerYes IsSpy + Response PlayerYesSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 2 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerActivateChargeSpy +{ + scene "scenes/Player/Spy/low/692.vcd" + scene "scenes/Player/Spy/low/693.vcd" + scene "scenes/Player/Spy/low/694.vcd" +} +Rule PlayerActivateChargeSpy +{ + criteria ConceptPlayerActivateCharge IsSpy + Response PlayerActivateChargeSpy +} + +Response PlayerCloakedSpySpy +{ + scene "scenes/Player/Spy/low/718.vcd" + scene "scenes/Player/Spy/low/719.vcd" + scene "scenes/Player/Spy/low/720.vcd" + scene "scenes/Player/Spy/low/1310.vcd" +} +Rule PlayerCloakedSpySpy +{ + criteria ConceptPlayerCloakedSpy IsSpy + Response PlayerCloakedSpySpy +} + +Response PlayerDispenserHereSpy +{ + scene "scenes/Player/Spy/low/783.vcd" +} +Rule PlayerDispenserHereSpy +{ + criteria ConceptPlayerDispenserHere IsSpy + Response PlayerDispenserHereSpy +} + +Response PlayerIncomingSpy +{ + scene "scenes/Player/Spy/low/761.vcd" + scene "scenes/Player/Spy/low/762.vcd" + scene "scenes/Player/Spy/low/763.vcd" +} +Rule PlayerIncomingSpy +{ + criteria ConceptPlayerIncoming IsSpy + Response PlayerIncomingSpy +} + +Response PlayerSentryAheadSpy +{ + scene "scenes/Player/Spy/low/815.vcd" + scene "scenes/Player/Spy/low/814.vcd" +} +Rule PlayerSentryAheadSpy +{ + criteria ConceptPlayerSentryAhead IsSpy + Response PlayerSentryAheadSpy +} + +Response PlayerSentryHereSpy +{ + scene "scenes/Player/Spy/low/786.vcd" +} +Rule PlayerSentryHereSpy +{ + criteria ConceptPlayerSentryHere IsSpy + Response PlayerSentryHereSpy +} + +Response PlayerTeleporterHereSpy +{ + scene "scenes/Player/Spy/low/788.vcd" +} +Rule PlayerTeleporterHereSpy +{ + criteria ConceptPlayerTeleporterHere IsSpy + Response PlayerTeleporterHereSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Speech Menu 3 +//-------------------------------------------------------------------------------------------------------------- +Response PlayerBattleCrySpy +{ + scene "scenes/Player/Spy/low/708.vcd" + scene "scenes/Player/Spy/low/709.vcd" + scene "scenes/Player/Spy/low/1309.vcd" + scene "scenes/Player/Spy/low/707.vcd" +} +Rule PlayerBattleCrySpy +{ + criteria ConceptPlayerBattleCry IsSpy + Response PlayerBattleCrySpy +} + +// Custom stuff - melee dare +// Look at enemy, then do battle cry voice command while holding a melee weapon. +Response MeleeDareCombatSpy +{ + scene "scenes/Player/Spy/low/3016.vcd" + scene "scenes/Player/Spy/low/3023.vcd" + scene "scenes/Player/Spy/low/834.vcd" + scene "scenes/Player/Spy/low/845.vcd" + scene "scenes/Player/Spy/low/847.vcd" + scene "scenes/Player/Spy/low/846.vcd" + scene "scenes/Player/Spy/low/824.vcd" +} +Rule MeleeDareCombatSpy +{ + criteria ConceptPlayerBattleCry IsWeaponMelee IsSpy IsCrossHairEnemy + Response MeleeDareCombatSpy +} + +Response PlayerCheersSpy +{ + scene "scenes/Player/Spy/low/710.vcd" + scene "scenes/Player/Spy/low/711.vcd" + scene "scenes/Player/Spy/low/712.vcd" + scene "scenes/Player/Spy/low/713.vcd" + scene "scenes/Player/Spy/low/714.vcd" + scene "scenes/Player/Spy/low/715.vcd" + scene "scenes/Player/Spy/low/716.vcd" + scene "scenes/Player/Spy/low/717.vcd" +} +Rule PlayerCheersSpy +{ + criteria ConceptPlayerCheers IsSpy + Response PlayerCheersSpy +} + +Response PlayerGoodJobSpy +{ + scene "scenes/Player/Spy/low/743.vcd" + scene "scenes/Player/Spy/low/744.vcd" + scene "scenes/Player/Spy/low/745.vcd" +} +Rule PlayerGoodJobSpy +{ + criteria ConceptPlayerGoodJob IsSpy + Response PlayerGoodJobSpy +} + +Response PlayerJeersSpy +{ + scene "scenes/Player/Spy/low/766.vcd" + scene "scenes/Player/Spy/low/767.vcd" + scene "scenes/Player/Spy/low/768.vcd" + scene "scenes/Player/Spy/low/769.vcd" + scene "scenes/Player/Spy/low/771.vcd" + scene "scenes/Player/Spy/low/770.vcd" +} +Rule PlayerJeersSpy +{ + criteria ConceptPlayerJeers IsSpy + Response PlayerJeersSpy +} + +Response PlayerLostPointSpy +{ + scene "scenes/Player/Spy/low/792.vcd" + scene "scenes/Player/Spy/low/793.vcd" + scene "scenes/Player/Spy/low/790.vcd" + scene "scenes/Player/Spy/low/791.vcd" + scene "scenes/Player/Spy/low/789.vcd" + scene "scenes/Player/Spy/low/1318.vcd" + scene "scenes/Player/Spy/low/1319.vcd" + scene "scenes/Player/Spy/low/1320.vcd" + scene "scenes/Player/Spy/low/1321.vcd" +} +Rule PlayerLostPointSpy +{ + criteria ConceptPlayerLostPoint IsSpy + Response PlayerLostPointSpy +} + +Response PlayerNegativeSpy +{ + scene "scenes/Player/Spy/low/792.vcd" + scene "scenes/Player/Spy/low/793.vcd" + scene "scenes/Player/Spy/low/790.vcd" + scene "scenes/Player/Spy/low/791.vcd" + scene "scenes/Player/Spy/low/789.vcd" + scene "scenes/Player/Spy/low/1318.vcd" + scene "scenes/Player/Spy/low/1319.vcd" + scene "scenes/Player/Spy/low/1320.vcd" + scene "scenes/Player/Spy/low/1321.vcd" +} +Rule PlayerNegativeSpy +{ + criteria ConceptPlayerNegative IsSpy + Response PlayerNegativeSpy +} + +Response PlayerNiceShotSpy +{ + scene "scenes/Player/Spy/low/794.vcd" + scene "scenes/Player/Spy/low/795.vcd" + scene "scenes/Player/Spy/low/796.vcd" +} +Rule PlayerNiceShotSpy +{ + criteria ConceptPlayerNiceShot IsSpy + Response PlayerNiceShotSpy +} + +Response PlayerPositiveSpy +{ + scene "scenes/Player/Spy/low/809.vcd" + scene "scenes/Player/Spy/low/837.vcd" + scene "scenes/Player/Spy/low/810.vcd" + scene "scenes/Player/Spy/low/811.vcd" + scene "scenes/Player/Spy/low/812.vcd" + scene "scenes/Player/Spy/low/813.vcd" +} + +Response PlayerTauntsSpy +{ + scene "scenes/Player/Spy/low/777.vcd" + scene "scenes/Player/Spy/low/778.vcd" + scene "scenes/Player/Spy/low/1314.vcd" + scene "scenes/Player/Spy/low/1315.vcd" + scene "scenes/Player/Spy/low/1316.vcd" +} +Rule PlayerPositiveSpy +{ + criteria ConceptPlayerPositive IsSpy + Response PlayerPositiveSpy + Response PlayerTauntsSpy +} + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- +Criterion "SpyNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "SpyNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "SpyNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "SpyNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "SpyNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "SpyNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Response CartMovingBackwardsDefenseSpy +{ + scene "scenes/Player/Spy/low/7588.vcd" + scene "scenes/Player/Spy/low/7589.vcd" +} +Rule CartMovingBackwardsDefenseSpy +{ + criteria ConceptCartMovingBackward IsOnDefense IsSpy 75PercentChance + ApplyContext "SaidCartMovingBackwardD:1:20" + Response CartMovingBackwardsDefenseSpy +} +Response CartMovingBackwardsOffenseSpy +{ + scene "scenes/Player/Spy/low/7582.vcd" + scene "scenes/Player/Spy/low/7583.vcd" +} +Rule CartMovingBackwardsOffenseSpy +{ + criteria ConceptCartMovingBackward IsOnOffense IsSpy 75PercentChance + ApplyContext "SaidCartMovingBackwardO:1:20" + Response CartMovingBackwardsOffenseSpy +} +Response CartMovingForwardDefenseSpy +{ + scene "scenes/Player/Spy/low/7584.vcd" + scene "scenes/Player/Spy/low/7585.vcd" + scene "scenes/Player/Spy/low/7587.vcd" + scene "scenes/Player/Spy/low/7586.vcd" +} +Rule CartMovingForwardDefenseSpy +{ + criteria ConceptCartMovingForward IsOnDefense IsSpy 75PercentChance + ApplyContext "SaidCartMovingForwardD:1:20" + Response CartMovingForwardDefenseSpy +} +Response CartMovingForwardOffenseSpy +{ + scene "scenes/Player/Spy/low/8553.vcd" + scene "scenes/Player/Spy/low/7573.vcd" + scene "scenes/Player/Spy/low/7574.vcd" + scene "scenes/Player/Spy/low/7575.vcd" + scene "scenes/Player/Spy/low/7576.vcd" + scene "scenes/Player/Spy/low/7577.vcd" + scene "scenes/Player/Spy/low/7578.vcd" + scene "scenes/Player/Spy/low/7581.vcd" + scene "scenes/Player/Spy/low/7591.vcd" + scene "scenes/Player/Spy/low/7592.vcd" + scene "scenes/Player/Spy/low/7593.vcd" + scene "scenes/Player/Spy/low/7595.vcd" +} +Rule CartMovingForwardOffenseSpy +{ + criteria ConceptCartMovingForward IsOnOffense IsSpy 75PercentChance + ApplyContext "SaidCartMovingForwardO:1:20" + Response CartMovingForwardOffenseSpy +} +Response CartMovingStoppedDefenseSpy +{ + scene "scenes/Player/Spy/low/7600.vcd" + scene "scenes/Player/Spy/low/7601.vcd" + scene "scenes/Player/Spy/low/7602.vcd" + scene "scenes/Player/Spy/low/7603.vcd" +} +Rule CartMovingStoppedDefenseSpy +{ + criteria ConceptCartMovingStopped IsOnDefense IsSpy 75PercentChance + ApplyContext "SaidCartMovingStoppedD:1:20" + Response CartMovingStoppedDefenseSpy +} +Response CartMovingStoppedOffenseSpy +{ + scene "scenes/Player/Spy/low/7596.vcd" + scene "scenes/Player/Spy/low/7598.vcd" + scene "scenes/Player/Spy/low/7599.vcd" +} +Rule CartMovingStoppedOffenseSpy +{ + criteria ConceptCartMovingStopped IsOnOffense IsSpy 75PercentChance + ApplyContext "SaidCartMovingStoppedO:1:20" + Response CartMovingStoppedOffenseSpy +} +//-------------------------------------------------------------------------------------------------------------- +// END OF Auto Speech Cart +//-------------------------------------------------------------------------------------------------------------- + +//-------------------------------------------------------------------------------------------------------------- +// Begin Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- +Response PlayerFirstRoundStartCompSpy +{ + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartCompSpy +{ + criteria ConceptPlayerRoundStartComp IsSpy IsFirstRound IsNotComp6v6 40PercentChance + Response PlayerFirstRoundStartCompSpy +} + +Response PlayerFirstRoundStartComp6sSpy +{ + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_11.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_12.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_comp_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_comp_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_comp_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_rare_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_rare_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_rare_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamefirst_6s_07.vcd" predelay "1.0, 5.0" +} +Rule PlayerFirstRoundStartComp6sSpy +{ + criteria ConceptPlayerRoundStartComp IsSpy IsFirstRound IsComp6v6 40PercentChance + Response PlayerFirstRoundStartComp6sSpy +} + +Response PlayerWonPrevRoundCompSpy +{ + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamewonlast_11.vcd" predelay "1.0, 5.0" +} +Rule PlayerWonPrevRoundCompSpy +{ + criteria ConceptPlayerRoundStartComp IsSpy IsNotFirstRound PlayerWonPreviousRound 40PercentChance + Response PlayerWonPrevRoundCompSpy +} + +Response PlayerLostPrevRoundCompSpy +{ + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_07.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_08.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_09.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_10.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregamelostlast_11.vcd" predelay "1.0, 5.0" +} +Rule PlayerLostPrevRoundCompSpy +{ + criteria ConceptPlayerRoundStartComp IsSpy IsNotFirstRound PlayerLostPreviousRound PreviousRoundWasNotTie 40PercentChance + Response PlayerLostPrevRoundCompSpy +} + +Response PlayerTiedPrevRoundCompSpy +{ + scene "scenes/Player/Spy/low/cm_spy_pregametie_01.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregametie_02.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregametie_03.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregametie_04.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregametie_05.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregametie_06.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_pregametie_rare_01.vcd" predelay "1.0, 5.0" +} +Rule PlayerTiedPrevRoundCompSpy +{ + criteria ConceptPlayerRoundStartComp IsSpy IsNotFirstRound PreviousRoundWasTie 40PercentChance + Response PlayerTiedPrevRoundCompSpy +} + +Response PlayerGameWinCompSpy +{ + scene "scenes/Player/Spy/low/cm_spy_gamewon_01.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_02.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_03.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_04.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_05.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_06.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_07.vcd" predelay "2.0, 5.0" + scene "scenes/Player/Spy/low/cm_spy_gamewon_08.vcd" predelay "2.0, 5.0" +} +Rule PlayerGameWinCompSpy +{ + criteria ConceptPlayerGameOverComp PlayerOnWinningTeam IsSpy 40PercentChance + Response PlayerGameWinCompSpy +} + +Response PlayerMatchWinCompSpy +{ + scene "scenes/Player/Spy/low/cm_spy_matchwon_01.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_02.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_03.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_04.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_05.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_06.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_07.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_08.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_09.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_10.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_11.vcd" predelay "1.0, 2.0" + scene "scenes/Player/Spy/low/cm_spy_matchwon_12.vcd" predelay "1.0, 2.0" +} +Rule PlayerMatchWinCompSpy +{ + criteria ConceptPlayerMatchOverComp PlayerOnWinningTeam IsSpy 40PercentChance + Response PlayerMatchWinCompSpy +} +//-------------------------------------------------------------------------------------------------------------- +// End Competitive Mode VO +//-------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/gamemodes/tf/gamemode/contents/talker/spy_auto.lua b/gamemodes/tf/gamemode/contents/talker/spy_auto.lua new file mode 100644 index 000000000..3a93cbd93 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/spy_auto.lua @@ -0,0 +1,75 @@ +//-------------------------------------------------------------------------------------------------------------- +// Spy Response Rule File - AUTO GENERATED DO NOT EDIT BY HAND +//-------------------------------------------------------------------------------------------------------------- + + + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_cappedSpy +{ + scene "scenes/Player/Spy/low/7688.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Spy/low/8477.vcd" predelay "2.0, 4.0" + scene "scenes/Player/Spy/low/7690.vcd" predelay "2.0, 4.0" +} +Rule item_unicorn_cappedSpy +{ + criteria ConceptPlayerCapturedPoint IsSpy IsUnicornHead + Response item_unicorn_cappedSpy +} + +Response item_unicorn_case_capSpy +{ + scene "scenes/Player/Spy/low/7545.vcd" predelay "2.0, 4.0" +} +Rule item_unicorn_case_capSpy +{ + criteria ConceptPlayerCapturedIntelligence IsSpy IsUnicornHead + Response item_unicorn_case_capSpy +} + +Response item_unicorn_round_startSpy +{ + scene "scenes/Player/Spy/low/7541.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/7542.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/7543.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/7544.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/8551.vcd" predelay "1.0, 5.0" + scene "scenes/Player/Spy/low/8552.vcd" predelay "1.0, 5.0" +} +Rule item_unicorn_round_startSpy +{ + criteria ConceptPlayerRoundStart IsSpy 100PercentChance IsUnicornHead + Response item_unicorn_round_startSpy +} + + +//-------------------------------------------------------------------------------------------------------------- +// Auto Speech Combat +//-------------------------------------------------------------------------------------------------------------- +Response item_unicorn_backstabSpy +{ + scene "scenes/Player/Spy/low/7540.vcd" + scene "scenes/Player/Spy/low/7548.vcd" +} +Rule item_unicorn_backstabSpy +{ + criteria ConceptKilledPlayer KilledPlayerDelay IsWeaponMelee SpyNotKillSpeechMelee IsSpy 20PercentChance IsUnicornHead + ApplyContext "SpyKillSpeechMelee:1:10" + applycontexttoworld + Response item_unicorn_backstabSpy +} + +Response item_unicorn_dominationSpy +{ + scene "scenes/Player/Spy/low/7546.vcd" predelay "2.5" +} +Rule item_unicorn_dominationSpy +{ + criteria ConceptKilledPlayer IsSpy IsDominated 30PercentChance IsUnicornHead + ApplyContext "SpyKillSpeech:1:10" + Response item_unicorn_dominationSpy +} + diff --git a/gamemodes/tf/gamemode/contents/talker/tf.lua b/gamemodes/tf/gamemode/contents/talker/tf.lua new file mode 100644 index 000000000..b4184d2b4 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/tf.lua @@ -0,0 +1,2021 @@ +//============================================================================================================ +// TF criteria - moved to response_rules.txt file. Please keep all definitions there. +//============================================================================================================ + + +//============================================================================================================ +// Taunts, idle expressions, firing expressions (not all chars have idle responses, depends on their 'default' face) +//============================================================================================================ + + +// Pyro +//------------------------------------------------------------------------------------------------------------ + + response "PyroTauntPrimary" + { + scene "scenes/player/pyro/low/taunt01_v1.vcd" + scene "scenes/player/pyro/low/taunt01_v2.vcd" + scene "scenes/player/pyro/low/taunt01_v3.vcd" + } + response "PyroTauntSecondary" + { + scene "scenes/player/pyro/low/taunt02.vcd" + } + response "PyroTauntMelee" + { + scene "scenes/player/pyro/low/taunt03.vcd" + } + response "PyroTauntItem1" + { + scene "scenes/player/pyro/low/taunt02.vcd" + } + response "PyroTauntRainblower" + { + scene "scenes/player/pyro/low/taunt_bubbles.vcd" + } + response "PyroTauntScorchShot" + { + scene "scenes/player/pyro/low/taunt_scorch_shot.vcd" + } + response "PyroTauntLollichop" + { + scene "scenes/player/pyro/low/taunt_lollichop.vcd" + } + response "PyroTauntHalloween" + { + scene "scenes/player/pyro/low/taunt06.vcd" + } + + rule PyroTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsPyro WeaponIsFlamethrower + response PyroTauntPrimary + } + rule PyroTauntDragonsFury + { + criteria ConceptPlayerTaunt IsPyro WeaponIsDragonsFury + response PyroTauntPrimary + } + + rule PyroTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsPyro WeaponIsShotgunPyro + response PyroTauntSecondary + } + rule PyroTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsPyro WeaponIsAxe + response PyroTauntMelee + } + rule PyroTauntPlayerItem1 + { + criteria ConceptPlayerTaunt IsPyro WeaponIsFlaregun + response PyroTauntItem1 + } + rule PyroTauntPlayerRainblower + { + criteria ConceptPlayerTaunt IsPyro WeaponIsRainblower + response PyroTauntRainblower + } + rule PyroTauntPlayerScorchShot + { + criteria ConceptPlayerTaunt IsPyro WeaponIsScorchShot + response PyroTauntScorchShot + } + rule PyroTauntPlayerLollichop + { + criteria ConceptPlayerTaunt IsPyro WeaponIsLollichop + response PyroTauntLollichop + } + rule PyroTauntHalloween + { + criteria ConceptPlayerTaunt IsPyro IsHalloweenTaunt + response PyroTauntHalloween + } + + Response "PyroTauntThirdDegree" + { + scene "scenes/player/pyro/low/drg_axe_taunt.vcd" + } + Rule PyroTauntThirdDegree + { + criteria ConceptPlayerTaunt IsPyro WeaponIsThirdDegree + response PyroTauntThirdDegree + } + + Rule PyroTauntManmelter + { + criteria ConceptPlayerTaunt IsPyro WeaponIsManmelter + response PyroTauntSecondary + } + + Response "PyroTauntAnnihilator" + { + scene "scenes/player/pyro/low/annihilator_taunt.vcd" + } + Rule PyroTauntAnnihilator + { + criteria ConceptPlayerTaunt IsPyro WeaponIsAnnihilator + response PyroTauntAnnihilator + } + Rule PyroTauntPromoAnnihilator + { + criteria ConceptPlayerTaunt IsPyro WeaponIsPromoAnnihilator + response PyroTauntAnnihilator + } + + Rule PyroTauntGasCan + { + criteria ConceptPlayerTaunt IsPyro WeaponIsGasCan + response PyroTauntSecondary + } + + Rule PyroTauntSlap + { + criteria ConceptPlayerTaunt IsPyro WeaponIsSlap + response PyroTauntSecondary + } + +//============================================================================================================ + + +// Heavy +//------------------------------------------------------------------------------------------------------------ + response "HeavyTauntPrimary" + { + scene "scenes/player/heavy/low/taunt01.vcd" + scene "scenes/player/heavy/low/taunt01_v2.vcd" + scene "scenes/player/heavy/low/taunt01_v3.vcd" + } + response "HeavyTauntSecondary" + { + scene "scenes/player/heavy/low/taunt02.vcd" + scene "scenes/player/heavy/low/taunt02_v1.vcd" + scene "scenes/player/heavy/low/taunt02_v2.vcd" + } + response "HeavyTauntMelee" + { + scene "scenes/player/heavy/low/taunt03_v1.vcd" + } + response "HeavyTauntPlayerItem1" + { + scene "scenes/player/heavy/low/taunt04.vcd" + } + response "HeavyTauntPlayerItem2" + { + scene "scenes/player/heavy/low/taunt04.vcd" + } + response "HeavyTauntPlayerItem2Alt" + { + scene "scenes/player/heavy/low/taunt04.vcd" + } + response "HeavyTauntPlayerItem3" + { + scene "scenes/player/heavy/low/taunt04.vcd" + } + response "HeavyTauntPlayerGloves" + { + scene "scenes/player/heavy/low/taunt05.vcd" + } + response "HeavyTauntHalloween" + { + scene "scenes/player/heavy/low/taunt06.vcd" + } + response "HeavyTauntFrankenHeavy" + { + scene "scenes/player/heavy/low/taunt07_halloween.vcd" + } + + rule HeavyTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsMinigun + response HeavyTauntPrimary + } + rule HeavyTauntSaxxy + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsSaxxy + response HeavyTauntMelee + } + rule HeavyTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsShotgunHwg + response HeavyTauntSecondary + } + rule HeavyTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsFists + response HeavyTauntMelee + } + rule HeavyTauntPlayerGloves + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsGloves + response HeavyTauntPlayerGloves + } + rule HeavyTauntPlayerItem1 + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsSandvich + response HeavyTauntPlayerItem1 + } + rule HeavyTauntPlayerRobotSandvich + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsRobotSandvich + response HeavyTauntPlayerItem1 + } + rule HeavyTauntPlayerFestiveSandvich + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsFestiveSandvich + response HeavyTauntPlayerItem1 + } + rule HeavyTauntPlayerLunchbox + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsLunchbox + response HeavyTauntPlayerItem1 + } + // Custom stuff + // This is to let you taunt with the items. + rule HeavyTauntPlayerItem2 + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsBenja + response HeavyTauntPlayerItem3 + } + rule HeavyTauntPlayerItem2Alt + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsFishcake + response HeavyTauntPlayerItem3 + } + rule HeavyTauntPlayerItem3 + { + criteria ConceptPlayerTaunt IsHeavy WeaponIsSteak + response HeavyTauntPlayerItem3 + } + //End Custom + rule HeavyTauntHalloween + { + criteria ConceptPlayerTaunt IsHeavy IsHalloweenTaunt + response HeavyTauntHalloween + } + rule HeavyTauntFrankenHeavy + { + criteria ConceptPlayerTaunt IsHeavy IsFrankenHeavy + response HeavyTauntFrankenHeavy + } + + Response PlayerExpressionIdleHeavy + { + scene "scenes/player/heavy/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleHeavy + { + criteria ConceptPlayerExpression IsHeavy + Response PlayerExpressionIdleHeavy + } + + Response PlayerExpressionIdleCompWinnerHeavy + { + scene "scenes/player/heavy/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerHeavy + { + criteria ConceptPlayerExpression IsHeavy IsCompWinner + Response PlayerExpressionIdleCompWinnerHeavy + } + + + Response PlayerExpressionFiringMinigunHeavy + { + scene "scenes/player/heavy/low/attackMinigun02.vcd" + } + Rule PlayerExpressionFiringMinigunHeavy + { + criteria ConceptPlayerExpression IsHeavy IsFiringMinigun + Response PlayerExpressionFiringMinigunHeavy + } + + // Minigun vocal stuff has been moved to Heavy.txt ! + + Response PlayerExpressionIdleHurtHeavy + { + scene "scenes/player/heavy/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtHeavy + { + criteria ConceptPlayerExpression IsHeavy LowHealthContext + Response PlayerExpressionIdleHurtHeavy + } + Rule PlayerExpressionRoundLossHeavy + { + criteria ConceptPlayerExpression IsHeavy GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtHeavy + } + + Response HeavyFireMinigun + { + //scene "scenes/player/heavy/low/attackMinigun01.vcd" *bug* + scene "scenes/player/heavy/low/attackMinigun02.vcd" + } + Rule HeavyFireMinigun + { + criteria ConceptFireMinigun IsHeavy WeaponIsMinigun + Response HeavyFireMinigun + } + + Response HeavyWindMinigun + { + scene "scenes/player/heavy/low/attackWindup01.vcd" + } + Rule HeavyWindMinigunHeavy + { + criteria ConceptWindMinigun IsHeavy WeaponIsMinigun + Response HeavyWindMinigun + } + + Response PlayerExpressionAttackHeavy + { + scene "scenes/player/heavy/low/attack01.vcd" + } + Rule PlayerExpressionAttackHeavy + { + criteria ConceptFireWeapon IsHeavy + Response PlayerExpressionAttackHeavy + } + + //-------------------------------------------------------------------------------------------------------------- + // Auto Speech Sandwich + //-------------------------------------------------------------------------------------------------------------- + Response AteSandwichHeavy + { + scene "scenes/Player/Heavy/low/SandwichTaunt01.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt02.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt03.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt04.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt05.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt06.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt07.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt08.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt09.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt10.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt11.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt12.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt13.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt14.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt15.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt16.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt17.vcd" predelay "1.0" + } + Rule AteSandwichHeavy + { + criteria ConceptAteFood IsHeavy WeaponIsSandvich + Response AteSandwichHeavy + } + Rule AteRobotSandwichHeavy + { + criteria ConceptAteFood IsHeavy WeaponIsRobotSandvich + Response AteSandwichHeavy + } + Rule AteFestiveSandwichHeavy + { + criteria ConceptAteFood IsHeavy WeaponIsFestiveSandvich + Response AteSandwichHeavy + } + // Custom stuff + // These have been designed as separate responses so that I can add non-sandvich lines I wanted to. + // There are two examples of this in the AteChocoHeavy response. + // It's possible to just have one of the responses below, but you would not be able to give the bar/steak separate lines then. + // The IsWeaponMelee allows this to happen, creating a distinction between the choco bar, sandvich and the steak. + Response AteSteakHeavy + { + scene "scenes/Player/Heavy/low/SandwichTaunt01.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt02.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt14.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt17.vcd" predelay "1.0" + } + Rule AteSteakHeavy + { + criteria ConceptAteFood IsHeavy IsWeaponMelee + Response AteSteakHeavy + } + Response AteChocoHeavy + { + scene "scenes/Player/Heavy/low/SandwichTaunt01.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt02.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt14.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/SandwichTaunt17.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/2066.vcd" predelay "1.0" + scene "scenes/Player/Heavy/low/2260.vcd" predelay "1.0" + } + Rule AteChocoHeavy + { + criteria ConceptAteFood IsHeavy + Response AteChocoHeavy + } + + +//============================================================================================================ + + +// Engineer +//------------------------------------------------------------------------------------------------------------ + response "EngineerTauntPrimary" + { + scene "scenes/player/engineer/low/taunt01_vocal01.vcd" + scene "scenes/player/engineer/low/taunt01_vocal02.vcd" + scene "scenes/player/engineer/low/taunt01_vocal03.vcd" + scene "scenes/player/engineer/low/taunt01_vocal04.vcd" + } + response "EngineerTauntSecondary" + { + scene "scenes/player/engineer/low/taunt02_vocal01.vcd" + scene "scenes/player/engineer/low/taunt02_vocal02.vcd" + scene "scenes/player/engineer/low/taunt02_vocal03.vcd" + } + response "EngineerTauntMelee" + { + scene "scenes/player/engineer/low/taunt03.vcd" + } + response "EngineerTauntHalloween" + { + scene "scenes/player/engineer/low/taunt06.vcd" + } + response "EngineerTauntGuitar" + { + scene "scenes/player/engineer/low/taunt07.vcd" + } + response "EngineerTauntRobotArm" + { + scene "scenes/player/engineer/low/taunt09.vcd" + } + + rule EngineerTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsShotgunPrimary + response EngineerTauntPrimary + } + rule EngineerTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsPistol + response EngineerTauntSecondary + } + rule EngineerTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsWrench + response EngineerTauntMelee + } + rule EngineerTauntPlayerShortCircuit + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsShortCircuit + response EngineerTauntMelee + } + rule EngineerTauntGuitar + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsFrontierJustice + response EngineerTauntGuitar + } + rule EngineerTauntFestiveGuitar + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsFestiveFrontierJustice + response EngineerTauntGuitar + } + rule EngineerTauntRobotArm + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsRobotArm + response EngineerTauntRobotArm + } + rule EngineerTauntLaserPointer + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsLaserPointer + response EngineerTauntSecondary + } + rule EngineerTauntHalloween + { + criteria ConceptPlayerTaunt IsEngineer IsHalloweenTaunt + response EngineerTauntHalloween + } + + Response PlayerExpressionIdleEngineer + { + scene "scenes/player/engineer/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleEngineer + { + criteria ConceptPlayerExpression IsEngineer + Response PlayerExpressionIdleEngineer + } + Response PlayerExpressionIdleCompWinnerEngineer + { + scene "scenes/player/engineer/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerEngineer + { + criteria ConceptPlayerExpression IsEngineer IsCompWinner + Response PlayerExpressionIdleCompWinnerEngineer + } + + Response PlayerExpressionIdleHurtEngineer + { + scene "scenes/player/engineer/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtEngineer + { + criteria ConceptPlayerExpression IsEngineer LowHealthContext + Response PlayerExpressionIdleHurtEngineer + } + Rule PlayerExpressionRoundLossEngineer + { + criteria ConceptPlayerExpression IsEngineer GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtEngineer + } + + Response PlayerExpressionAttackEngineer + { + scene "scenes/player/engineer/low/attack01.vcd" + } + Rule PlayerExpressionAttackEngineer + { + criteria ConceptFireWeapon IsEngineer + Response PlayerExpressionAttackEngineer + } + + Response "EngineerTauntEurekaEffect" + { + scene "scenes/player/engineer/low/taunt_drg_melee.vcd" + } + Rule EngineerTauntEurekaEffect + { + criteria ConceptTauntEurekaTeleport IsEngineer WeaponIsEurekaEffect + response EngineerTauntEurekaEffect + } + + Rule EngineerTauntPomson + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsPomson + response EngineerTauntPrimary + } + rule EngineerTauntPlayerRescueRanger + { + criteria ConceptPlayerTaunt IsEngineer WeaponIsRescueRanger + response EngineerTauntPrimary + } + +//============================================================================================================ + + +// Medic +//------------------------------------------------------------------------------------------------------------ + response "MedicTauntPrimary" + { + scene "scenes/player/medic/low/taunt01_vocal01.vcd" + scene "scenes/player/medic/low/taunt01_vocal03.vcd" + scene "scenes/player/medic/low/taunt01_vocal04.vcd" + scene "scenes/player/medic/low/taunt01_vocal05.vcd" + + + } + response "MedicTauntSecondary" + { + scene "scenes/player/medic/low/taunt02_v1.vcd" + } + response "MedicTauntMelee" + { + scene "scenes/player/medic/low/taunt03.vcd" + } + response "MedicTauntHalloween" + { + scene "scenes/player/medic/low/taunt07.vcd" + } + response "MedicTauntKritzkrieg" + { + scene "scenes/player/medic/low/taunt06.vcd" + } + response "MedicTauntUbersaw" + { + scene "scenes/player/medic/low/taunt08.vcd" + } + + rule MedicTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsMedic WeaponIsSyringe + response MedicTauntPrimary + } + rule MedicTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsMedic WeaponIsHeal + response MedicTauntSecondary + } + rule MedicTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsMedic WeaponIsBonesaw + response MedicTauntMelee + } + rule MedicTauntPlayerKritzkrieg + { + criteria ConceptPlayerTaunt IsMedic WeaponIsKritzkrieg + response MedicTauntKritzkrieg + } + rule MedicTauntHalloween + { + criteria ConceptPlayerTaunt IsMedic IsHalloweenTaunt + response MedicTauntHalloween + } + rule MedicTauntUbersaw + { + criteria ConceptPlayerTaunt IsMedic WeaponIsUbersaw + response MedicTauntUbersaw + } + rule MedicTauntFestiveUbersaw + { + criteria ConceptPlayerTaunt IsMedic WeaponIsFestiveUbersaw + response MedicTauntUbersaw + } + Rule MedicTauntSaxxy + { + criteria ConceptPlayerTaunt IsMedic WeaponIsSaxxy + response MedicTauntSecondary + } + Rule MedicTauntBust + { + criteria ConceptPlayerTaunt IsMedic WeaponIsHippocrates + response MedicTauntPrimary + } + Rule MedicTauntHealArrow + { + criteria ConceptPlayerTaunt IsMedic WeaponIsHealArrow + response MedicTauntPrimary + } + + Response PlayerExpressionIdleMedic + { + scene "scenes/player/medic/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleMedic + { + criteria ConceptPlayerExpression IsMedic + Response PlayerExpressionIdleMedic + } + Response PlayerExpressionIdleCompWinnerMedic + { + scene "scenes/player/medic/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerMedic + { + criteria ConceptPlayerExpression IsMedic IsCompWinner + Response PlayerExpressionIdleCompWinnerMedic + } + + Response PlayerExpressionIdleHurtMedic + { + scene "scenes/player/medic/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtMedic + { + criteria ConceptPlayerExpression IsMedic LowHealthContext + Response PlayerExpressionIdleHurtMedic + } + Rule PlayerExpressionRoundLossMedic + { + criteria ConceptPlayerExpression IsMedic GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtMedic + } + + Response PlayerExpressionAttackMedic + { + scene "scenes/player/medic/low/attack01.vcd" + } + Rule PlayerExpressionAttackMedic + { + criteria ConceptFireWeapon IsMedic + Response PlayerExpressionAttackMedic + } + +//============================================================================================================ + + +// Soldier +//------------------------------------------------------------------------------------------------------------ + response "SoldierTauntPrimary" + { + scene "scenes/player/soldier/low/taunt01_v1.vcd" + scene "scenes/player/soldier/low/taunt01_v2.vcd" + scene "scenes/player/soldier/low/taunt01_v3.vcd" + } + response "SoldierTauntBanner" + { + scene "scenes/player/soldier/low/taunt02_v1.vcd" + scene "scenes/player/soldier/low/taunt02_v2.vcd" + } + response "SoldierTauntSecondary" + { + scene "scenes/player/soldier/low/taunt04.vcd" + } + response "SoldierTauntMelee" + { + scene "scenes/player/soldier/low/taunt03_v1.vcd" + scene "scenes/player/soldier/low/taunt03_v2.vcd" + scene "scenes/player/soldier/low/taunt03_v3.vcd" + scene "scenes/player/soldier/low/taunt03_v4.vcd" + } + response "SoldierTauntHalloween" + { + scene "scenes/player/soldier/low/taunt06.vcd" + } + response "SoldierTauntRobot" + { + scene "scenes/player/soldier/low/taunt09.vcd" + } + response "SoldierTauntPickaxe" + { + scene "scenes/player/soldier/low/taunt05.vcd" + } + response "SoldierTauntDirectHit" + { + scene "scenes/player/soldier/low/taunt07.vcd" + } + response "SoldierTauntCowMangler" + { + scene "scenes/player/soldier/low/taunt08.vcd" + } + + rule SoldierTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsRocket + response SoldierTauntPrimary + } + rule SoldierTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsShotgunSoldier + response SoldierTauntSecondary + } + rule SoldierTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsShovel + response SoldierTauntMelee + } + rule SoldierTauntHalloween + { + criteria ConceptPlayerTaunt IsSoldier IsHalloweenTaunt + response SoldierTauntHalloween + } + rule SoldierTauntRobot + { + criteria ConceptPlayerTaunt IsSoldier IsRobotCostume + response SoldierTauntRobot + } + rule SoldierTauntEqualizer + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsEqualizer + response SoldierTauntPickaxe + } + rule SoldierTauntEscapePlan + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsEscapePlan + response SoldierTauntPickaxe + } + rule SoldierTauntDirectHit + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsDirectHit + response SoldierTauntDirectHit + } + rule SoldierTauntBeggarsBazooka + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsBeggarsBazooka + response SoldierTauntDirectHit + } + rule SoldierTauntBanner + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsBanner + response SoldierTauntBanner + } + rule SoldierTauntFestiveBanner + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsFestiveBanner + response SoldierTauntBanner + } + rule SoldierTauntSashimono + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsSashimono + response SoldierTauntBanner + } + rule SoldierTauntKatana + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsKatana + response SoldierTauntDirectHit + } + rule SoldierTauntCowMangler + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsCowMangler + response SoldierTauntCowMangler + } + rule SoldierTauntRayGun + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsRayGun + response SoldierTauntBanner + } + rule SoldierTauntBackup + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsBackup + response SoldierTauntBanner + } + rule SoldierTauntSaxxy + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsSaxxy + response SoldierTauntBanner + } + + Response PlayerExpressionIdleSoldier + { + scene "scenes/player/soldier/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleSoldier + { + criteria ConceptPlayerExpression IsSoldier + Response PlayerExpressionIdleSoldier + } + Response PlayerExpressionIdleCompWinnerSoldier + { + scene "scenes/player/soldier/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerSoldier + { + criteria ConceptPlayerExpression IsSoldier IsCompWinner + Response PlayerExpressionIdleCompWinnerSoldier + } + Response PlayerExpressionIdleHurtSoldier + { + scene "scenes/player/soldier/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtSoldier + { + criteria ConceptPlayerExpression IsSoldier LowHealthContext + Response PlayerExpressionIdleHurtSoldier + } + Rule PlayerExpressionRoundLossSoldier + { + criteria ConceptPlayerExpression IsSoldier GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtSoldier + } + + Response PlayerExpressionAttackSoldier + { + scene "scenes/player/soldier/low/attack01.vcd" + } + Rule PlayerExpressionAttackSoldier + { + criteria ConceptFireWeapon IsSoldier + Response PlayerExpressionAttackSoldier + } + rule SoldierTauntPlayerAirStrike + { + criteria ConceptPlayerTaunt IsSoldier WeaponIsRocketLauncherAirStrike + response SoldierTauntPrimary + } +//============================================================================================================ + + +// Scout +//------------------------------------------------------------------------------------------------------------ + response "ScoutTauntPrimary" + { + scene "scenes/player/scout/low/taunt01_vocal01.vcd" + scene "scenes/player/scout/low/taunt01_vocal02.vcd" + scene "scenes/player/scout/low/taunt01_vocal03.vcd" + } + response "ScoutTauntSecondary" + { + scene "scenes/player/scout/low/taunt02_vocal01.vcd" + scene "scenes/player/scout/low/taunt02_vocal02.vcd" + scene "scenes/player/scout/low/taunt02_vocal03.vcd" + } + response "ScoutTauntMelee" + { + scene "scenes/player/scout/low/taunt03_vocal01.vcd" + scene "scenes/player/scout/low/taunt03_vocal02.vcd" + scene "scenes/player/scout/low/taunt03_vocal03.vcd" + scene "scenes/player/scout/low/taunt03_vocal04.vcd" + scene "scenes/player/scout/low/taunt03_vocal05.vcd" + scene "scenes/player/scout/low/taunt03_vocal06.vcd" + } + response "ScoutTauntGrandSlam" + { + scene "scenes/player/scout/low/taunt05_v1.vcd" + } + response "ScoutTauntPrimaryDouble" + { + scene "scenes/player/scout/low/taunt01_alt_vocal01.vcd" + scene "scenes/player/scout/low/taunt01_alt_vocal02.vcd" + scene "scenes/player/scout/low/taunt01_alt_vocal03.vcd" + } + response "ScoutTauntHalloween" + { + scene "scenes/player/scout/low/taunt06_v1.vcd" + } + response "ScoutTauntPlayerItem1" + { + scene "scenes/player/scout/low/taunt04_v1.vcd" + } + + rule ScoutTauntPlayerItem1 + { + criteria ConceptPlayerTaunt IsScout WeaponIsLunchboxDrink + ApplyContext "ScoutIsCrit:1:3" // The crit context is set here. You can't fire while using BONK! so we can share the rule/response. + response ScoutTauntPlayerItem1 + } + rule ScoutTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsScout WeaponIsScattergun + response ScoutTauntPrimary + } + rule ScoutTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsScout WeaponIsPistolScout + response ScoutTauntSecondary + } + rule ScoutTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsScout WeaponIsBat + response ScoutTauntMelee + } + rule ScoutTauntWoodBat + { + criteria ConceptPlayerTaunt IsScout WeaponIsWoodBat + response ScoutTauntGrandSlam + } + rule ScoutTauntAtomizer + { + criteria ConceptPlayerTaunt IsScout WeaponIsAtomizer + response ScoutTauntGrandSlam + } + rule ScoutTauntScattergunDouble + { + criteria ConceptPlayerTaunt IsScout WeaponIsScattergunDouble + response ScoutTauntPrimaryDouble + } + rule ScoutTauntScattergunDoubleFestive + { + criteria ConceptPlayerTaunt IsScout WeaponIsScattergunDoubleFestive + response ScoutTauntPrimaryDouble + } + rule ScoutTauntSodaPopper + { + criteria ConceptPlayerTaunt IsScout WeaponIsSodaPopper + response ScoutTauntPrimaryDouble + } + rule ScoutTauntShortstop + { + criteria ConceptPlayerTaunt IsScout WeaponIsShortstop + response ScoutTauntSecondary + } + rule ScoutTauntPEPBrawlerBlaster + { + criteria ConceptPlayerTaunt IsScout WeaponIsPEPBrawlerBlaster + response ScoutTauntPrimaryDouble + } + rule ScoutTauntHandgunScoutSecondary + { + criteria ConceptPlayerTaunt IsScout WeaponIsHandgunScoutSecondary + response ScoutTauntSecondary + } + rule ScoutTauntMadMilk + { + criteria ConceptPlayerTaunt IsScout WeaponIsMadMilk + response ScoutTauntSecondary + } + rule ScoutTauntSDCleaver + { + criteria ConceptPlayerTaunt IsScout WeaponIsSDCleaver + response ScoutTauntSecondary + } + rule ScoutTauntHolyMackerel + { + criteria ConceptPlayerTaunt IsScout WeaponIsHolyMackerel + response ScoutTauntMelee + } + rule ScoutTauntFestiveHolyMackerel + { + criteria ConceptPlayerTaunt IsScout WeaponIsFestiveHolyMackerel + response ScoutTauntMelee + } + + rule ScoutTauntUnarmedCombat + { + criteria ConceptPlayerTaunt IsScout WeaponIsUnarmedCombat + response ScoutTauntMelee + } + rule ScoutTauntHalloween + { + criteria ConceptPlayerTaunt IsScout IsHalloweenTaunt + response ScoutTauntHalloween + } + + Response PlayerExpressionIdleScout + { + scene "scenes/player/scout/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleScout + { + criteria ConceptPlayerExpression IsScout + Response PlayerExpressionIdleScout + } + + Response PlayerExpressionIdleCompWinnerScout + { + scene "scenes/player/scout/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerScout + { + criteria ConceptPlayerExpression IsScout IsCompWinner + Response PlayerExpressionIdleCompWinnerScout + } + + Response PlayerExpressionIdleHurtScout + { + scene "scenes/player/scout/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtScout + { + criteria ConceptPlayerExpression IsScout LowHealthContext + Response PlayerExpressionIdleHurtScout + } + Rule PlayerExpressionRoundLossScout + { + criteria ConceptPlayerExpression IsScout GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtScout + } + + Response PlayerExpressionAttackScout + { + scene "scenes/player/scout/low/attack01.vcd" + } + Rule PlayerExpressionAttackScout + { + criteria ConceptFireWeapon IsScout + ApplyContext "ScoutFired:1:7" // Apply the ScoutFired context, to allow Scouts to say double jump lines + Response PlayerExpressionAttackScout + } + rule ScoutTauntMutatedMilk + { + criteria ConceptPlayerTaunt IsScout WeaponIsMutatedMilk + response ScoutTauntSecondary + } + //-------------------------------------------------------------------------------------------------------------- + // Auto Speech Drink + //-------------------------------------------------------------------------------------------------------------- + Response ScoutPostDrinkTired + { + scene "scenes/player/scout/low/dodgetired.vcd" + + + } + Rule ScoutPostDrinkTired + { + criteria ConceptTired IsScout + Response ScoutPostDrinkTired + } + + Rule ScoutTauntWrapAssassin + { + criteria ConceptPlayerTaunt IsScout WeaponIsWrapAssassin + response ScoutTauntMelee + } + + +//============================================================================================================ + + +// Sniper +//------------------------------------------------------------------------------------------------------------ + response "SniperTauntPrimary" + { + scene "scenes/player/sniper/low/taunt01_v1.vcd" + scene "scenes/player/sniper/low/taunt01_v2.vcd" + scene "scenes/player/sniper/low/taunt01_v3.vcd" + scene "scenes/player/sniper/low/taunt01_v4.vcd" + scene "scenes/player/sniper/low/taunt01_v5.vcd" + } + response "SniperTauntSecondary" + { + scene "scenes/player/sniper/low/taunt02_v1.vcd" + scene "scenes/player/sniper/low/taunt02_v2.vcd" + } + response "SniperTauntMelee" + { + scene "scenes/player/sniper/low/taunt03_v1.vcd" + scene "scenes/player/sniper/low/taunt03_v2.vcd" + scene "scenes/player/sniper/low/taunt03_v3.vcd" + scene "scenes/player/sniper/low/taunt03_v4.vcd" + } + response "SniperTauntSaxxy" + { + scene "scenes/player/sniper/low/taunt03_v1.vcd" + scene "scenes/player/sniper/low/taunt03_v3.vcd" + } + response "SniperTauntBow" + { + scene "scenes/player/sniper/low/taunt04.vcd" + } + response "SniperTauntHalloween" + { + scene "scenes/player/sniper/low/taunt06.vcd" + } + + rule SniperTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsSniper WeaponIsSniperrifle + response SniperTauntPrimary + } + rule SniperTauntPlayerPrimaryClassic + { + criteria ConceptPlayerTaunt IsSniper WeaponIsClassicSniperrifle + response SniperTauntPrimary + } + rule SniperTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsSniper WeaponIsSMG + response SniperTauntSecondary + } + rule SniperTauntPlayerChargedSecondary + { + criteria ConceptPlayerTaunt IsSniper WeaponIsChargedSMG + response SniperTauntSecondary + } + rule SniperTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsSniper WeaponIsClub + response SniperTauntMelee + } + rule SniperTauntPlayerBazaarBargain + { + criteria ConceptPlayerTaunt IsSniper WeaponIsBazaarBargain + response SniperTauntPrimary + } + rule SniperTauntPlayerBow + { + criteria ConceptPlayerTaunt IsSniper WeaponIsBow + response SniperTauntBow + } + rule SniperTauntHalloween + { + criteria ConceptPlayerTaunt IsSniper IsHalloweenTaunt + response SniperTauntHalloween + } + rule SniperTauntSaxxy + { + criteria ConceptPlayerTaunt IsSniper WeaponIsSaxxy + response SniperTauntSaxxy + } + + Response PlayerExpressionIdleSniper + { + scene "scenes/player/sniper/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleSniper + { + criteria ConceptPlayerExpression IsSniper + Response PlayerExpressionIdleSniper + } + Response PlayerExpressionIdleCompWinnerSniper + { + scene "scenes/player/sniper/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerSniper + { + criteria ConceptPlayerExpression IsSniper IsCompWinner + Response PlayerExpressionIdleCompWinnerSniper + } + response PlayerExpressionIdleDeployedSniper + { + scene "scenes/player/sniper/low/idleloopDeployed01.vcd" + } + rule PlayerExpressionIdleDeployedSniper + { + criteria ConceptPlayerExpression IsSniper DeployedContext WeaponIsSniperrifle + response PlayerExpressionIdleDeployedSniper + } + rule PlayerExpressionIdleDeployedSniperClassic + { + criteria ConceptPlayerExpression IsSniper DeployedContext WeaponIsClassicSniperrifle + response PlayerExpressionIdleDeployedSniper + } + Response PlayerExpressionIdleHurtSniper + { + scene "scenes/player/sniper/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtSniper + { + criteria ConceptPlayerExpression IsSniper LowHealthContext + Response PlayerExpressionIdleHurtSniper + } + Rule PlayerExpressionRoundLossSniper + { + criteria ConceptPlayerExpression IsSniper GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtSniper + } + + Response PlayerExpressionAttackSniper + { + scene "scenes/player/sniper/low/attack01.vcd" + } + Rule PlayerExpressionAttackSniper + { + criteria ConceptFireWeapon IsSniper + Response PlayerExpressionAttackSniper + } + + +//============================================================================================================ + + +// Spy +//------------------------------------------------------------------------------------------------------------ + response "SpyTauntPrimary" + { + scene "scenes/player/spy/low/taunt01_v1.vcd" + scene "scenes/player/spy/low/taunt01_v2.vcd" + scene "scenes/player/spy/low/taunt01_v3.vcd" + scene "scenes/player/spy/low/taunt01_v4.vcd" + scene "scenes/player/spy/low/taunt01_v5.vcd" + } + response "SpyTauntSecondary" + { + scene "scenes/player/spy/low/taunt02.vcd" + } + response "SpyTauntMelee" + { + scene "scenes/player/spy/low/taunt03_v1.vcd" + scene "scenes/player/spy/low/taunt03_v2.vcd" + } + response "SpyTauntPDA" + { + scene "scenes/player/spy/low/taunt04_v1.vcd" + scene "scenes/player/spy/low/taunt04_v2.vcd" + scene "scenes/player/spy/low/taunt04_v3.vcd" + scene "scenes/player/spy/low/taunt04_v4.vcd" + scene "scenes/player/spy/low/taunt04_v5.vcd" + scene "scenes/player/spy/low/taunt05.vcd" + } + response "SpyTauntHalloween" + { + scene "scenes/player/spy/low/taunt06.vcd" + } + + rule SpyTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsSpy WeaponIsRevolver + response SpyTauntPrimary + } + rule SpyTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsSpy WeaponIsBuild + response SpyTauntSecondary + } + rule SpyTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsSpy WeaponIsKnife + response SpyTauntMelee + } + rule SpyTauntPlayerPDA + { + criteria ConceptPlayerTaunt IsSpy WeaponIsSpyPDA + response SpyTauntPDA + } + rule SpyTauntHalloween + { + criteria ConceptPlayerTaunt IsSpy IsHalloweenTaunt + response SpyTauntHalloween + } + rule SpyTauntSharpDresser + { + criteria ConceptPlayerTaunt IsSpy WeaponIsSharpDresser + response SpyTauntSecondary + } + + Response PlayerExpressionIdleSpy + { + scene "scenes/player/spy/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleSpy + { + criteria ConceptPlayerExpression IsSpy + Response PlayerExpressionIdleSpy + } + + Response PlayerExpressionIdleCompWinnerSpy + { + scene "scenes/player/spy/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerSpy + { + criteria ConceptPlayerExpression IsSpy IsCompWinner + Response PlayerExpressionIdleCompWinnerSpy + } + + Response PlayerExpressionAttackSpy + { + scene "scenes/player/spy/low/attack01.vcd" + } + Rule PlayerExpressionAttackSpy + { + criteria ConceptFireWeapon IsSpy + Response PlayerExpressionAttackSpy + } + + Response "SpyTauntSpycicle" + { + scene "scenes/player/spy/low/taunt01_v1.vcd" + scene "scenes/player/spy/low/taunt01_v2.vcd" + scene "scenes/player/spy/low/taunt01_v3.vcd" + scene "scenes/player/spy/low/taunt01_v4.vcd" + scene "scenes/player/spy/low/taunt01_v5.vcd" + } + Rule SpyTauntSpycicle + { + criteria ConceptPlayerTaunt IsSpy WeaponIsSpycicle + response SpyTauntSpycicle + } + +//============================================================================================================ + + +// Demoman +//------------------------------------------------------------------------------------------------------------ + response "DemomanTauntPrimary" + { + scene "scenes/player/demoman/low/taunt01.vcd" + } + response "DemomanTauntSecondary" + { + scene "scenes/player/demoman/low/taunt02.vcd" + + } + response "DemomanTauntMelee" + { + scene "scenes/player/demoman/low/taunt03_v1.vcd" + scene "scenes/player/demoman/low/taunt03_v2.vcd" + scene "scenes/player/demoman/low/taunt03_v3.vcd" + } + response "DemomanTauntHalloween" + { + scene "scenes/player/demoman/low/taunt06.vcd" + } + response "DemomanTauntWolfHowl" + { + scene "scenes/player/demoman/low/taunt11.vcd" + } + response "DemomanTauntDefender" + { + scene "scenes/player/demoman/low/taunt08.vcd" + } + response "DemomanTauntSword" + { + scene "scenes/player/demoman/low/taunt09.vcd" + } + // Custom stuff + response "DemomanTauntCaber" + { + scene "scenes/player/demoman/low/taunt04_v1.vcd" + scene "scenes/player/demoman/low/taunt04_v2.vcd" + } + // Ullapool Caber taunt - from unused Bottle taunt. + + rule DemomanTauntDefender + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsDefender + response DemomanTauntDefender + } + rule DemomanTauntPlayerPrimary + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsPipebomb + response DemomanTauntPrimary + } + rule DemomanTauntPlayerSecondary + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsGrenade + response DemomanTauntSecondary + } + rule DemomanTauntPlayerMelee + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsBottle + ApplyContext "NotSober:1:10" // Apply the drunk context here + response DemomanTauntMelee + } + rule DemomanTauntPlayerScotsmansSkullcutter + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsScotsmansSkullcutter + response DemomanTauntSecondary + } + rule DemomanTauntHalloween + { + criteria ConceptPlayerTaunt IsDemoman IsHalloweenTaunt + response DemomanTauntHalloween + } + rule DemomanTauntWolfHowl + { + criteria ConceptPlayerTaunt IsDemoman IsDemowolf + response DemomanTauntWolfHowl + } + + rule DemomanTauntSword + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsSword WeaponIsNotAxe // Modified to exclude Skullcutter. + response DemomanTauntSword + } + rule DemomanTauntKatana + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsKatana + response DemomanTauntSword + } + // Custom Stuff + rule DemomanTauntCaber + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsCaber + response DemomanTauntCaber + } + Rule DemomanTauntSaxxy + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsSaxxy + Response DemomanTauntSecondary + } + Rule DemomanTauntPainTrain + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsPainTrain + Response DemomanTauntSecondary + } + + Response PlayerExpressionIdleDemoman + { + scene "scenes/player/demoman/low/idleloop01.vcd" + } + Rule PlayerExpressionIdleDemoman + { + criteria ConceptPlayerExpression IsDemoman + Response PlayerExpressionIdleDemoman + } + + Response PlayerExpressionIdleCompWinnerDemoman + { + scene "scenes/player/demoman/low/comp_winner_idle_face.vcd" + } + Rule PlayerExpressionIdleCompWinnerDemoman + { + criteria ConceptPlayerExpression IsDemoman IsCompWinner + Response PlayerExpressionIdleCompWinnerDemoman + } + + Response PlayerExpressionIdleHurtDemoman + { + scene "scenes/player/demoman/low/idleloopHurt01.vcd" + } + Rule PlayerExpressionIdleHurtDemoman + { + criteria ConceptPlayerExpression IsDemoman LowHealthContext + Response PlayerExpressionIdleHurtDemoman + } + Rule PlayerExpressionRoundLossDemoman + { + criteria ConceptPlayerExpression IsDemoman GameRulesInWinState PlayerOnLosingTeam + Response PlayerExpressionIdleHurtDemoman + } + + Response PlayerExpressionAttackDemoman + { + scene "scenes/player/demoman/low/attack01.vcd" + } + Rule PlayerExpressionAttackDemoman + { + criteria ConceptFireWeapon IsDemoman + Response PlayerExpressionAttackDemoman + } + rule DemomanTauntLooseCannon + { + criteria ConceptPlayerTaunt IsDemoman WeaponIsLooseCannon + response DemomanTauntSecondary + } + +//============================================================================================================ +// Taunt2 Responses based on items that are in the Action slot + + Response PlayerTaunt2_TestTauntEnabler_IsScout + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsScout + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsScout + response PlayerTaunt2_TestTauntEnabler_IsScout + } + Response PlayerTaunt2_TestTauntEnabler_IsSniper + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsSniper + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsSniper + response PlayerTaunt2_TestTauntEnabler_IsSniper + } + Response PlayerTaunt2_TestTauntEnabler_IsSoldier + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsSoldier + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsSoldier + response PlayerTaunt2_TestTauntEnabler_IsSoldier + } + Response PlayerTaunt2_TestTauntEnabler_IsDemoman + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsDemoman + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsDemoman + response PlayerTaunt2_TestTauntEnabler_IsDemoman + } + Response PlayerTaunt2_TestTauntEnabler_IsMedic + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsMedic + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsMedic + response PlayerTaunt2_TestTauntEnabler_IsMedic + } + Response PlayerTaunt2_TestTauntEnabler_IsHeavy + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsHeavy + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsHeavy + response PlayerTaunt2_TestTauntEnabler_IsHeavy + } + Response PlayerTaunt2_TestTauntEnabler_IsPyro + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsPyro + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsPyro + response PlayerTaunt2_TestTauntEnabler_IsPyro + } + Response PlayerTaunt2_TestTauntEnabler_IsSpy + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsSpy + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsSpy + response PlayerTaunt2_TestTauntEnabler_IsSpy + } + Response PlayerTaunt2_TestTauntEnabler_IsEngineer + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PlayerTaunt2_TestTauntEnabler_IsEngineer + { + criteria ConceptPlayerTaunt2 HasTaunt2Item_TauntEnablerTest IsEngineer + response PlayerTaunt2_TestTauntEnabler_IsEngineer + } + +//============================================================================================================ +// "Show off an Item" Responses + + Response ScoutShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule ScoutShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsScout + response ScoutShowItemTauntResponse + } + + Response SniperShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule SniperShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsSniper + response SniperShowItemTauntResponse + } + + Response SoldierShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule SoldierShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsSoldier + response SoldierShowItemTauntResponse + } + + Response DemomanShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule DemomanShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsDemoman + response DemomanShowItemTauntResponse + } + + Response MedicShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule MedicShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsMedic + response MedicShowItemTauntResponse + } + + Response HeavyShowItemTauntResponse + { + scene "scenes/player/heavy/high/show1.vcd" + } + Rule HeavyShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsHeavy + response HeavyShowItemTauntResponse + } + + Response PyroShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule PyroShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsPyro + response PyroShowItemTauntResponse + } + + Response SpyShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule SpyShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsSpy + response SpyShowItemTauntResponse + } + + Response ScoutShowItemTauntResponse + { + scene "scenes/player/pyro/low/taunt_highfiveSuccess.vcd" + } + Rule ScoutShowItemTaunt + { + criteria ConceptPlayerShowItemTaunt IsScout + response ScoutShowItemTauntResponse + } + +//============================================================================================================ +// "Replay Taunt" Responses + + response "PyroTauntReplay" + { + scene "scenes/player/pyro/low/taunt_replay.vcd" + scene "scenes/player/pyro/low/taunt_replay2.vcd" + } + rule PyroTauntReplay + { + criteria ConceptTauntReplay IsPyro + response PyroTauntReplay + } + + response "ScoutTauntReplay" + { + scene "scenes/player/scout/low/taunt_replay.vcd" + } + rule ScoutTauntReplay + { + criteria ConceptTauntReplay IsScout + response ScoutTauntReplay + } + + response "SoldierTauntReplay" + { + scene "scenes/player/soldier/low/taunt_replay.vcd" + } + rule SoldierTauntReplay + { + criteria ConceptTauntReplay IsSoldier + response SoldierTauntReplay + } + + response "SniperTauntReplay" + { + scene "scenes/player/sniper/low/taunt_replay.vcd" + } + rule SniperTauntReplay + { + criteria ConceptTauntReplay IsSniper + response SniperTauntReplay + } + + response "DemomanTauntReplay" + { + scene "scenes/player/demoman/low/taunt_replay.vcd" + } + rule DemomanTauntReplay + { + criteria ConceptTauntReplay IsDemoman + response DemomanTauntReplay + } + + response "MedicTauntReplay" + { + scene "scenes/player/medic/low/taunt_replay.vcd" + } + rule MedicTauntReplay + { + criteria ConceptTauntReplay IsMedic + response MedicTauntReplay + } + + response "HeavyTauntReplay" + { + scene "scenes/player/heavy/low/taunt_replay.vcd" + } + rule HeavyTauntReplay + { + criteria ConceptTauntReplay IsHeavy + response HeavyTauntReplay + } + + response "SpyTauntReplay" + { + scene "scenes/player/spy/low/taunt_replay.vcd" + } + rule SpyTauntReplay + { + criteria ConceptTauntReplay IsSpy + response SpyTauntReplay + } + + response "EngineerTauntReplay" + { + scene "scenes/player/engineer/low/taunt_replay.vcd" + } + rule EngineerTauntReplay + { + criteria ConceptTauntReplay IsEngineer + response EngineerTauntReplay + } + + response "MedicTauntLaugh" + { + scene "scenes/player/medic/low/taunt_laugh.vcd" + } + rule MedicTauntLaugh + { + criteria ConceptTauntLaugh IsMedic + response MedicTauntLaugh + } + + response "HeavyTauntLaugh" + { + scene "scenes/player/heavy/low/taunt_laugh.vcd" + } + rule HeavyTauntLaugh + { + criteria ConceptTauntLaugh IsHeavy + response HeavyTauntLaugh + } + + response "DemomanTauntLaugh" + { + scene "scenes/player/demoman/low/taunt_laugh.vcd" + } + rule DemomanTauntLaugh + { + criteria ConceptTauntLaugh IsDemoman + response DemomanTauntLaugh + } + + response "SpyTauntLaugh" + { + scene "scenes/player/spy/low/taunt_laugh.vcd" + } + rule SpyTauntLaugh + { + criteria ConceptTauntLaugh IsSpy + response SpyTauntLaugh + } + + response "SniperTauntLaugh" + { + scene "scenes/player/Sniper/low/taunt_laugh.vcd" + } + rule SniperTauntLaugh + { + criteria ConceptTauntLaugh IsSniper + response SniperTauntLaugh + } + + response "SoldierTauntLaugh" + { + scene "scenes/player/Soldier/low/taunt_laugh.vcd" + } + rule SoldierTauntLaugh + { + criteria ConceptTauntLaugh IsSoldier + response SoldierTauntLaugh + } + + response "ScoutTauntLaugh" + { + scene "scenes/player/Scout/low/taunt_laugh.vcd" + } + rule ScoutTauntLaugh + { + criteria ConceptTauntLaugh IsScout + response ScoutTauntLaugh + } + + response "EngineerTauntLaugh" + { + scene "scenes/player/Engineer/low/taunt_laugh.vcd" + } + rule EngineerTauntLaugh + { + criteria ConceptTauntLaugh IsEngineer + response EngineerTauntLaugh + } + + response "PyroTauntLaugh" + { + scene "scenes/player/pyro/low/taunt_laugh.vcd" + } + rule PyroTauntLaugh + { + criteria ConceptTauntLaugh IsPyro + response PyroTauntLaugh + } + + response "MedicTauntHeroicPose" + { + scene "scenes/player/medic/low/taunt09.vcd" + } + rule MedicTauntHeroicPose + { + criteria ConceptTauntHeroicPose IsMedic + response MedicTauntHeroicPose + } + + response "PyroTauntArmageddon" + { + scene "scenes/player/pyro/low/taunt_laugh.vcd" + } + rule PyroTauntArmageddon + { + criteria ConceptTauntPyroArmageddon IsPyro + response PyroTauntArmageddon + } + + response "ScoutTauntGuitarRiff" + { + scene "scenes/player/scout/low/taunt_brutalLegend.vcd" + } + rule ScoutTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsScout + response ScoutTauntGuitarRiff + } + + response "SoldierTauntGuitarRiff" + { + scene "scenes/player/soldier/low/taunt_brutalLegend.vcd" + } + rule SoldierTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsSoldier + response SoldierTauntGuitarRiff + } + + response "PyroTauntGuitarRiff" + { + scene "scenes/player/pyro/low/taunt_brutalLegend.vcd" + } + rule PyroTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsPyro + response PyroTauntGuitarRiff + } + + response "DemomanTauntGuitarRiff" + { + scene "scenes/player/demoman/low/taunt_brutalLegend.vcd" + } + rule DemomanTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsDemoman + response DemomanTauntGuitarRiff + } + + response "HeavyTauntGuitarRiff" + { + scene "scenes/player/heavy/low/taunt_brutalLegend.vcd" + } + rule HeavyTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsHeavy + response HeavyTauntGuitarRiff + } + + response "EngineerTauntGuitarRiff" + { + scene "scenes/player/engineer/low/taunt_brutalLegend.vcd" + } + rule EngineerTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsEngineer + response EngineerTauntGuitarRiff + } + + response "MedicTauntGuitarRiff" + { + scene "scenes/player/medic/low/taunt_brutalLegend.vcd" + } + rule MedicTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsMedic + response MedicTauntGuitarRiff + } + + response "SniperTauntGuitarRiff" + { + scene "scenes/player/sniper/low/taunt_brutalLegend.vcd" + } + rule SniperTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsSniper + response SniperTauntGuitarRiff + } + + response "SpyTauntGuitarRiff" + { + scene "scenes/player/spy/low/taunt_brutalLegend.vcd" + } + rule SpyTauntGuitarRiff + { + criteria ConceptTauntGuitarRiff IsSpy + response SpyTauntGuitarRiff + } + + +// APRIL FOOLS RESPONSE RULES + + rule ScoutTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsScout + response ScoutTauntLaugh + } + + rule SoldierTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsSoldier + response SoldierTauntLaugh + } + + rule PyroTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsPyro + response PyroTauntLaugh + } + + rule DemomanTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsDemoman + response DemomanTauntLaugh + } + + rule HeavyTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsHeavy + response HeavyTauntLaugh + } + + rule EngineerTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsEngineer + response EngineerTauntLaugh + } + + rule MedicTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsMedic + response MedicTauntLaugh + } + + rule SniperTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsSniper + response SniperTauntLaugh + } + + rule SpyTauntAprilFools + { + criteria ConceptPlayerTaunt IsAprilFoolsTaunt IsSpy + response SpyTauntLaugh + } + +//============================================================================================================ diff --git a/gamemodes/tf/gamemode/contents/talker/tf_response_rules.lua b/gamemodes/tf/gamemode/contents/talker/tf_response_rules.lua new file mode 100644 index 000000000..8828f6b26 --- /dev/null +++ b/gamemodes/tf/gamemode/contents/talker/tf_response_rules.lua @@ -0,0 +1,859 @@ +// This is the base rule script file for the AI response system for Expressive AI's who speak based on certain "Concepts" +// You can think of a concept as a high level state that the code is trying to convey, such as say hello, or say you're mad, etc. +// +// The format of this file is that there are five main types of commands: +// 1) #include "filename" // This just causes the included scriptfile to be parsed and added to the database +// 2) enumeration: this declares an enumerated type so that comparisons can be matched against the string versions of the type +// 3) response: this specifies a response to issue. A response consists of a weighted set of options and can recursively reference +// other responses by name +// 4) criterion: This is a match condition +// 5) rule: a rule consists of one or more criteria and a response +// +// In general, the system is presented with a criteria set, which is a set of key value pairs generated by the game code and +// various entity I/O and keyfields. For instance, the following criteria set was created in a map with a train terminal +// "speaker" entity wishing to fire random station announcements +// concept = 'train_speaker' (weight 5.000000) ; the high level concept for the search request +// map = 'terminal_pa' ; the name of the map +// classname = 'speaker' ; the classname and name of the "speaking" entity +// name = 'terminal_pa' +// health = '10' ; the absolute health of the speaking entity +// healthfrac = '0.000' ; the health fraction (health/maxhealth) of the speaking entity +// playerhealth = '100' ; similar data related to the current player: +// playerhealthfrac = '1.000' +// playerweapon = 'none' ; the name of the weapon the player is carrying +// playeractivity = 'ACT_WALK' ; animating activity of the player +// playerspeed = '0.000' ; how fast the player is moving +// +// Based on such a criteria set, the system checks each rule against the set. To do this, each criterion of the rule is +// given a numeric score as follows: +// score = 0 if criteria doesn't match or, criterion weight * keyvaliue weight if it does match +// The final score for a rule is the sum of all of the scores of its criteria. The best rule is the one with the highest +// score. Once a best rule is selected, then a response is looked up based on the response definitions and the engine is +// asked to dispatch that response. +// +// The specific syntax for the various keywords is as follows: +// +// ENUMERATIONS: +// +// enumeration +// { +// "key1" "value1" +// "key2" "value2" +// ...etc. +// } +// The code and criteria refer to enumerations with square brackets and a double colon separator, e.g.: +// [enumerationname::key1] +// +// +// RESPONSES: +// +// Single line: +// response [nodelay | defaultdelay | delay interval ] [speakonce] [noscene] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] responsetype parameters +// Multiple lines +// response +// { +// [permitrepeats] ; optional parameter, by default we visit all responses in group before repeating any +// [sequential] ; optional parameter, by default we randomly choose responses, but with this we walk through the list starting at the first and going to the last +// [norepeat] ; Once we've run through all of the entries, disable the response group +// responsetype1 parameters1 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] weight nnn +// responsetype2 parameters2 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] weight nnn +// etc. +// } +// Where: +// interval = "startnumber,endnumber" or "number" (e.g., "2.8,3.2" or "3.2") +// responsetype =: +// speak ; it's an entry in sounds.lua +// sentence ; it's a sentence name from sentences.lua +// scene ; it's a .vcd file +// response ; it's a reference to another response group by name +// print ; print the text in developer 2 (for placeholder responses) +// nodelay = an additional delay of 0 after speaking +// defaultdelay = an additional delay of 2.8 to 3.2 seconds after speaking +// delay interval = an additional delay based on a random sample from the interval after speaking +// predelay interval = delays the speech for the time interval. NOTE: Only works on scenes (i.e. no sentences/speak/print) +// speakonce = don't use this response more than one time (default off) +// noscene = For an NPC, play the sound immediately using EmitSound, don't play it through the scene system. Good for playing sounds on dying or dead NPCs. +// odds = if this response is selected, if odds < 100, then there is a chance that nothing will be said (default 100) +// respeakdelay = don't use this response again for at least this long (default 0) +// soundlevel = use this soundlevel for the speak/sentence (default SNDLVL_TALKING) +// weight = if there are multiple responses, this is a selection weighting so that certain responses are favored over others in the group (default 1) +// displayfirst/displaylast : this should be the first/last item selected (ignores weight) +// +// CRITERIA: +// +// criterion weight nnn required +// Where: +// matchkey matches one of the criteria in the set as shown above +// matchvalue is a string or number value or a range, the following are all valid: +// "0" ; numeric match to value 0 +// "1" ; numeric match to value 1 +// "weapon_smg1" ; string match to weapon_smg1 string +// "[npcstate::idle]" ; match enumeration by looking up numeric value +// ">0" ; match if greater than zero +// ">10,<=50" ; match if greater than ten and less than or equal to 50 +// ">0,<[npcstate::alert]" ; match if greater than zer and les then value of enumeration for alert +// "!=0" ; match if not equal to zero +// weight = floating point weighting for score assuming criteria match (default value 1.0) +// required: if a rule has one or more criteria with the required flag set, then if any such criteria +// fail, the entire rule receives a score of zero +// +// RULE: +// +// rule +// { +// criteria name1 [name2 name3 etc.] +// response responsegroupname [responsegroupname2 etc.] +// [matchonce] ; optional parameter +// [ weight nnn required ] +// } +// Where: +// criteria just lies one more more criterion names from above and response list one or more of the response +// names from above (usually just one) +// matchonce (off by default): means that the rule is deactivated after the first time it is matched +// Note that additional "unnamed" criteria can be specified inline in the rule using the same syntax +// as for defining a criterion, except for the criterion keyword and the criterion name keys +// +// Interaction with entity I/O system +// CBaseEntity contains an inputfunc called "DispatchResponse" which accepts a string which is a concept name +// Thus, a game entity can fire this input on another entity with a concept string and a criteria set will +// be generated and searched against the entities current response system rule set. +// Right now only the speaker entity and NPC_Talker derived NPCs have any response rules loaded +// In addition, map placed entities have up to three "context" keypairs that can be specified. +// They take the form: "key:value" (key, single colon separator, value) +// When an entity with any such context keypairs is asked to dispatch a response, the keypairs are added to the +// criteria set passed to the rule system. Thus, map placed entities and triggers can specify their +// own context keypairs and these can be hooked up to response rules to do map-specific and appropriate +// responses +// In addition, entity I/O can be used to add, remove and clear any such context keypairs via the +// AddContext, RemoveContext, and ClearContext input functions. +// AddContext takes a keypair of the "key:value" format, while RemoveContext take just the "key" +// ClearContext removes all context keypairs +// The game .dll code can enumerate context keypairs and change them via code based methods +// +// The player and the world have their context added with the string player or world as a prefix, e.g.: +// "playerkey:value" or "worldkey:value" to differentiate world/player context from the context of the +// responding entity. + +// Base script +enumeration "NPCState" +{ + "None" "0" + "Idle" "1" + "Alert" "2" + "Combat" "3" + "Scripted" "4" + "PlayDead" "5" + "Dead" "6" +} + +criterion "ConceptPlayerTaunt" "Concept" "TLK_PLAYER_TAUNT" "required" +criterion "ConceptPlayerThanks" "Concept" "TLK_PLAYER_THANKS" "required" +criterion "ConceptPlayerMedic" "Concept" "TLK_PLAYER_MEDIC" required +criterion "ConceptPlayerAskForBall" "Concept" "TLK_PLAYER_ASK_FOR_BALL" required +criterion "ConceptPlayerHelp" "Concept" "TLK_PLAYER_HELP" required +criterion "ConceptPlayerGo" "Concept" "TLK_PLAYER_GO" required +criterion "ConceptPlayerMoveUp" "Concept" "TLK_PLAYER_MOVEUP" required +criterion "ConceptPlayerLeft" "Concept" "TLK_PLAYER_LEFT" required +criterion "ConceptPlayerRight" "Concept" "TLK_PLAYER_RIGHT" required +criterion "ConceptPlayerYes" "Concept" "TLK_PLAYER_YES" required +criterion "ConceptPlayerNo" "Concept" "TLK_PLAYER_NO" required +criterion "ConceptPlayerIncoming" "Concept" "TLK_PLAYER_INCOMING" required +criterion "ConceptPlayerCloakedSpy" "Concept" "TLK_PLAYER_CLOAKEDSPY" required +criterion "ConceptPlayerSentryAhead" "Concept" "TLK_PLAYER_SENTRYAHEAD" required +criterion "ConceptPlayerTeleporterHere" "Concept" "TLK_PLAYER_TELEPORTERHERE" required +criterion "ConceptPlayerDispenserHere" "Concept" "TLK_PLAYER_DISPENSERHERE" required +criterion "ConceptPlayerSentryHere" "Concept" "TLK_PLAYER_SENTRYHERE" required +criterion "ConceptPlayerActivateCharge" "Concept" "TLK_PLAYER_ACTIVATECHARGE" required +criterion "ConceptPlayerChargeReady" "Concept" "TLK_PLAYER_CHARGEREADY" required +criterion "ConceptPlayerTaunts" "Concept" "TLK_PLAYER_TAUNTS" required +criterion "ConceptPlayerBattleCry" "Concept" "TLK_PLAYER_BATTLECRY" required +criterion "ConceptPlayerCheers" "Concept" "TLK_PLAYER_CHEERS" required +criterion "ConceptPlayerJeers" "Concept" "TLK_PLAYER_JEERS" required +criterion "ConceptPlayerPositive" "Concept" "TLK_PLAYER_POSITIVE" required +criterion "ConceptPlayerNegative" "Concept" "TLK_PLAYER_NEGATIVE" required +criterion "ConceptPlayerNiceShot" "Concept" "TLK_PLAYER_NICESHOT" required +criterion "ConceptPlayerGoodJob" "Concept" "TLK_PLAYER_GOODJOB" required +criterion "ConceptSpySapping" "Concept" "TLK_SPY_SAPPER" required +criterion "ConceptPain" "Concept" "TLK_PLAYER_PAIN" required +criterion "ConceptAttackerPain" "Concept" "TLK_PLAYER_ATTACKER_PAIN" required +criterion "ConceptFire" "Concept" "TLK_ONFIRE" required +criterion "ConceptCapBlocked" "Concept" "TLK_CAPTURE_BLOCKED" required +criterion "ConceptMedicChargeDeployed" "Concept" "TLK_MEDIC_CHARGEDEPLOYED" required +criterion "ConceptMedicChargeStopped" "Concept" "TLK_HEALTARGET_STOPPEDHEALING" required + +criterion "ConceptEngineerPickupBuilding" "Concept" "TLK_PICKUP_BUILDING" required +criterion "ConceptEngineerDeployBuilding" "Concept" "TLK_REDEPLOY_BUILDING" required +criterion "ConceptEngineerCarryingBuilding" "Concept" "TLK_CARRYING_BUILDING" required + + + + +criterion "ConceptScoutBallGrab" "Concept" "TLK_GRAB_BALL" required + +// Force weight to 2 so that this matches all classes +criterion "ConceptPlayerTaunt2" "Concept" "TLK_PLAYER_TAUNT2" required + +criterion "ConceptPlayerShowItemTaunt" "Concept" "TLK_PLAYER_SHOW_ITEM_TAUNT" required + +criterion "ConceptPlayerHoldTaunt" "Concept" "TLK_PLAYER_HOLDTAUNT" required + +//Auto fire concepts +criterion "ConceptPlayerCapturedPoint" "Concept" "TLK_CAPTURED_POINT" required +criterion "ConceptPlayerRoundStart" "Concept" "TLK_ROUND_START" required +criterion "ConceptPlayerRoundStartComp" "Concept" "TLK_ROUND_START_COMP" required +criterion "ConceptPlayerSuddenDeathStart" "Concept" "TLK_SUDDENDEATH_START" required +criterion "ConceptPlayerStalemate" "Concept" "TLK_STALEMATE" required +criterion "ConceptPlayerBuildingObject" "Concept" "TLK_BUILDING_OBJECT" required +criterion "ConceptPlayerDetonatedObject" "Concept" "TLK_DETONATED_OBJECT" required +criterion "ConceptLostObject" "Concept" "TLK_LOST_OBJECT" required +criterion "ConceptKilledObject" "Concept" "TLK_KILLED_OBJECT" required +criterion "ConceptMedicChargeReady" "Concept" "TLK_MEDIC_CHARGEREADY" required +criterion "ConceptTeleported" "Concept" "TLK_TELEPORTED" required +criterion "ConceptPlayerDead" "Concept" "TLK_DEAD" required + +criterion "ConceptPlayerGrabbedIntelligence" "Concept" "TLK_FLAGPICKUP" required +criterion "ConceptPlayerCapturedIntelligence" "Concept" "TLK_FLAGCAPTURED" required + +//cart stuff +criterion "ConceptCartMovingForward" "Concept" "TLK_CART_MOVING_FORWARD" required +criterion "ConceptCartMovingStopped" "Concept" "TLK_CART_STOP" required +criterion "ConceptCartMovingBackward" "Concept" "TLK_CART_MOVING_BACKWARD" required + +criterion "ConceptAteFood" "Concept" "TLK_ATE_FOOD" required + +//scout pack +criterion "ConceptDoubleJump" "Concept" "TLK_DOUBLE_JUMP" required +criterion "ConceptDodging" "Concept" "TLK_DODGING" required +criterion "ConceptDodgeShot" "Concept" "TLK_DODGE_SHOT" required +criterion "ConceptGrabBall" "Concept" "TLK_GRAB_BALL" required +criterion "ConceptRegenBall" "Concept" "TLK_REGEN_BALL" required +criterion "ConceptDeflected" "Concept" "TLK_DEFLECTED" required +criterion "ConceptBallMissed" "Concept" "TLK_BALL_MISSED" required +criterion "ConceptStunned" "Concept" "TLK_STUNNED" required +criterion "ConceptStunnedTarget" "Concept" "TLK_STUNNED_TARGET" required +criterion "ConceptTired" "Concept" "TLK_TIRED" required +criterion "ConceptBatBall" "Concept" "TLK_BAT_BALL" required +criterion "IsDoubleJumping" "DoubleJumping" "1" required +criterion "ConceptAchievementAward" "Concept" "TLK_ACHIEVEMENT_AWARD" required +// Custom stuff +criterion "IsNotDoubleJumping" "DoubleJumping" "0" required // Needed to stop Scout saying double jump lines when he lands. + +// spy / sniper pack +criterion "ConceptJarateLaunch" "Concept" "TLK_JARATE_LAUNCH" required +criterion "ConceptJarateHit" "Concept" "TLK_JARATE_HIT" required + +// Item Taunts +criterion "ConceptTauntReplay" "Concept" "TLK_TAUNT_REPLAY" required +criterion "ConceptTauntLaugh" "Concept" "TLK_TAUNT_LAUGH" required +criterion "ConceptTauntHeroicPose" "Concept" "TLK_TAUNT_HEROIC_POSE" required +criterion "ConceptTauntPyroArmageddon" "Concept" "TLK_TAUNT_PYRO_ARMAGEDDON" required +criterion "ConceptTauntGuitarRiff" "Concept" "TLK_TAUNT_GUITAR_RIFF" required +criterion "ConceptTauntEurekaTeleport" "Concept" "TLK_TAUNT_EUREKA_EFFECT" required + +criterion "IsOnOffense" "teamrole" "offense" required +criterion "IsOnDefense" "teamrole" "defense" required + + +// Expressions +criterion "ConceptPlayerExpression" "Concept" "TLK_PLAYER_EXPRESSION" required + + +criterion "ConceptPlayerLostPoint" "Concept" "TLK_LOST_CONTROL_POINT'" required + + +criterion "IsSapper" "objtype" "sapper" required +criterion "IsSentryGun" "objtype" "sentrygun" required +criterion "IsTeleporter" "objtype" "teleporter" required +criterion "IsDispenser" "objtype" "dispenser" required +criterion "IsDisguised" "disguised" "1" required +criterion "IsNotDisguised" "disguised" "!=1" required +criterion "IsWeaponPrimary" "weaponmode" "primary" required +criterion "IsWeaponSecondary" "weaponmode" "secondary" required +criterion "IsWeaponMelee" "weaponmode" "melee" required +criterion "IsNotWeaponMelee" "weaponmode" "!=melee" required +criterion "IsWeaponBuilding" "weaponmode" "building" required +criterion "IsWeaponPda" "weaponmode" "pda" required +criterion "IsCloaked" "cloaked" "1" required +criterion "IsNotCloaked" "cloaked" "!=1" required + +criterion "IsOnScout" "crosshair_on" "Scout" "required" +criterion "IsOnSniper" "crosshair_on" "Sniper" "required" +criterion "IsOnSoldier" "crosshair_on" "Soldier" "required" +criterion "IsOnDemoman" "crosshair_on" "Demoman" "required" +criterion "IsOnMedic" "crosshair_on" "Medic" "required" +criterion "IsOnHeavy" "crosshair_on" "Heavy" "required" +criterion "IsOnPyro" "crosshair_on" "Pyro" "required" +criterion "IsOnSpy" "crosshair_on" "Spy" "required" +criterion "IsOnEngineer" "crosshair_on" "Engineer" "required" + +// Custom not on Heavy +criterion "IsNotOnHeavy" "crosshair_on" "!=Heavy" "required" + +criterion "IsDominated" "domination" "dominated" "required" +criterion "IsRevenge" "domination" "revenge" "required" +criterion "IsHeadShot" "customdeath" "headshot" "required" + + + +criterion "ConceptKilledPlayer" "Concept" "TLK_KILLED_PLAYER" required +criterion "KilledPlayerDelay" "worldDontKilledPlayer" "!=1" "required" + +criterion "IsScout" "playerclass" "Scout" "required" +criterion "IsSniper" "playerclass" "Sniper" "required" +criterion "IsSoldier" "playerclass" "Soldier" "required" +criterion "IsDemoman" "playerclass" "Demoman" "required" +criterion "IsMedic" "playerclass" "Medic" "required" +criterion "IsHeavy" "playerclass" "Heavy" "required" +criterion "IsPyro" "playerclass" "Pyro" "required" +criterion "IsSpy" "playerclass" "Spy" "required" +criterion "IsEngineer" "playerclass" "Engineer" "required" + +criterion "Isscout" "playerclass" "Scout" "required" +criterion "Issniper" "playerclass" "Sniper" "required" +criterion "Issoldier" "playerclass" "Soldier" "required" +criterion "Isdemoman" "playerclass" "Demoman" "required" +criterion "Ismedic" "playerclass" "Medic" "required" +criterion "Isheavy" "playerclass" "Heavy" "required" +criterion "Ispyro" "playerclass" "Pyro" "required" +criterion "Isspy" "playerclass" "Spy" "required" +criterion "Isengineer" "playerclass" "Engineer" "required" + +criterion "IsNotScout" "playerclass" "!=Scout" "required" +criterion "IsNotSniper" "playerclass" "!=Sniper" "required" +criterion "IsNotSoldier" "playerclass" "!=Soldier" "required" +criterion "IsNotDemoman" "playerclass" "!=Demoman" "required" +criterion "IsNotMedic" "playerclass" "!=Medic" "required" +criterion "IsNotHeavy" "playerclass" "!=Heavy" "required" +criterion "IsNotPyro" "playerclass" "!=Pyro" "required" +criterion "IsNotSpy" "playerclass" "!=Spy" "required" +criterion "IsNotEngineer" "playerclass" "!=Engineer" "required" + + +criterion "IsVictimScout" "victimclass" "Scout" "required" +criterion "IsVictimSniper" "victimclass" "Sniper" "required" +criterion "IsVictimSoldier" "victimclass" "Soldier" "required" +criterion "IsVictimDemoman" "victimclass" "Demoman" "required" +criterion "IsVictimMedic" "victimclass" "Medic" "required" +criterion "IsVictimHeavy" "victimclass" "Heavy" "required" +criterion "IsVictimPyro" "victimclass" "Pyro" "required" +criterion "IsVictimSpy" "victimclass" "Spy" "required" +criterion "IsVictimEngineer" "victimclass" "Engineer" "required" + +criterion "IsNotVictimScout" "victimclass" "!=Scout" "required" +criterion "IsNotVictimSniper" "victimclass" "!=Sniper" "required" +criterion "IsNotVictimSoldier" "victimclass" "!=Soldier" "required" +criterion "IsNotVictimDemoman" "victimclass" "!=Demoman" "required" +criterion "IsNotVictimMedic" "victimclass" "!=Medic" "required" +criterion "IsNotVictimHeavy" "victimclass" "!=Heavy" "required" +criterion "IsNotVictimPyro" "victimclass" "!=Pyro" "required" +criterion "IsNotVictimSpy" "victimclass" "!=Spy" "required" +criterion "IsNotVictimEngineer" "victimclass" "!=Engineer" "required" + + + +criterion "2PercentChance" "randomnum" "=>98" required +criterion "5PercentChance" "randomnum" "=>95" required +criterion "10PercentChance" "randomnum" ">90" required +criterion "20PercentChance" "randomnum" ">80" required +criterion "30PercentChance" "randomnum" ">70" required +criterion "40PercentChance" "randomnum" ">60" required +criterion "50PercentChance" "randomnum" ">50" required +criterion "75PercentChance" "randomnum" ">25" required +criterion "100PercentChance" "randomnum" ">0" required weight 100 +criterion "IsARecentKill" "recentkills" ">0" required +criterion "IsManyRecentKills" "recentkills" ">1" required +criterion "IsVeryManyRecentKills" "recentkills" ">3" required +criterion "IsInvulnerable" "invulnerable" "1" required + +criterion "IsOnFriendlyControlPoint" "OnFriendlyControlPoint" "1" required +criterion "IsOnCappableControlPoint" "OnCappableControlPoint" "1" required + +criterion "WeaponIsLaserPointer" "playerweapon" "tf_weapon_laser_pointer" "required" +criterion "WeaponIsMinigun" "playerweapon" "tf_weapon_minigun" "required" +criterion "WeaponIsShotgun" "playerweapon" "tf_weapon_shotgun" "required" +criterion "WeaponIsShotgunSoldier" "playerweapon" "tf_weapon_shotgun" "required" +criterion "WeaponIsShotgunHwg" "playerweapon" "tf_weapon_shotgun" "required" +criterion "WeaponIsShotgunPyro" "playerweapon" "tf_weapon_shotgun" "required" +criterion "WeaponIsFists" "playerweapon" "tf_weapon_fists" "required" +criterion "WeaponIsFlamethrower" "playerweapon" "tf_weapon_flamethrower" "required" +criterion "WeaponIsAxe" "playerweapon" "tf_weapon_fireaxe" "required" +criterion "WeaponIsSyringe" "playerweapon" "tf_weapon_syringegun_medic" "required" +criterion "WeaponIsHeal" "playerweapon" "tf_weapon_medigun" "required" +criterion "WeaponIsBonesaw" "playerweapon" "tf_weapon_bonesaw" "required" +criterion "WeaponIsShotgunPrimary" "playerweapon" "tf_weapon_shotgun" "required" +criterion "WeaponIsPistol" "playerweapon" "tf_weapon_pistol" "required" +criterion "WeaponIsBuild" "playerweapon" "tf_weapon_builder" "required" +criterion "WeaponIsWrench" "playerweapon" "tf_weapon_wrench" "required" +criterion "WeaponIsScattergun" "playerweapon" "tf_weapon_scattergun" "required" +criterion "WeaponIsScattergunDouble" "item_name" "Force-a-Nature" "required" weight 10 +criterion "WeaponIsScattergunDoubleFestive" "item_name" "Festive Force-a-Nature" "required" weight 10 +criterion "WeaponIsPistolScout" "playerweapon" "tf_weapon_pistol_scout" "required" +criterion "WeaponIsBat" "playerweapon" "tf_weapon_bat" "required" +criterion "WeaponIsWoodBat" "playerweapon" "tf_weapon_bat_wood" "required" +criterion "WeaponIsSniperRifle" "playerweapon" "tf_weapon_sniperrifle" "required" +criterion "WeaponIsSniperrifle" "playerweapon" "tf_weapon_sniperrifle" "required" +criterion "WeaponIsSMG" "playerweapon" "tf_weapon_smg" "required" +criterion "WeaponIsChargedSMG" "playerweapon" "tf_weapon_charged_smg" "required" +criterion "WeaponIsSMGScout" "playerweapon" "tf_weapon_smg_scout" "required" +criterion "WeaponIsClub" "playerweapon" "tf_weapon_club" "required" +criterion "WeaponIsRevolver" "playerweapon" "tf_weapon_revolver" "required" +criterion "WeaponIsKnife" "playerweapon" "tf_weapon_knife" "required" +criterion "WeaponIsPipebomb" "playerweapon" "tf_weapon_pipebomblauncher" "required" +criterion "WeaponIsGrenade" "playerweapon" "tf_weapon_grenadelauncher" "required" +criterion "WeaponIsBottle" "playerweapon" "tf_weapon_bottle" "required" +criterion "WeaponIsSpyPDA" "playerweapon" "tf_weapon_pda_spy" "required" +criterion "WeaponIsRocket" "playerweapon" "tf_weapon_rocketlauncher" "required" +criterion "WeaponIsShovel" "playerweapon" "tf_weapon_shovel" "required" +criterion "WeaponIsFlaregun" "playerweapon" "tf_weapon_flaregun" "required" +// Lunchbox modified to fire for Sandvich only, so we don't share lines. +criterion "WeaponIsSandvich" "item_name" "Sandvich" "required" weight 5 +criterion "WeaponIsRobotSandvich" "item_name" "Robo-Sandvich" "required" weight 5 +criterion "WeaponIsFestiveSandvich" "item_name" "Festive Sandvich" "required" weight 5 +criterion "WeaponIsLunchboxDrink" "playerweapon" "tf_weapon_lunchbox_drink" "required" +criterion "WeaponIsLunchbox" "playerweapon" "tf_weapon_lunchbox" "required" +criterion "WeaponIsGloves" "item_type_name" "#TF_Weapon_Gloves" "required" weight 10 +criterion "WeaponIsKritzkrieg" "item_name" "Kritzkrieg" "required" weight 10 +criterion "WeaponIsBow" "item_type_name" "#TF_Weapon_CompoundBow" "required" weight 10 +criterion "WeaponIsEqualizer" "item_name" "Equalizer" "required" weight 10 +criterion "WeaponIsEscapePlan" "item_name" "Escape Plan" "required" weight 10 +criterion "WeaponIsDirectHit" "item_name" "Direct Hit" "required" weight 10 +criterion "WeaponIsBeggarsBazooka" "item_name" "Beggar's Bazooka" "required" weight 10 +criterion "WeaponIsBanner" "item_name" "Buff Banner" "required" weight 10 +criterion "WeaponIsFestiveBanner" "item_name" "Festive Buff Banner" "required" weight 10 +// Former "sword is Eyelander" equivalency +//criterion "WeaponIsSword" "item_name" "Eyelander" "required" weight 10 +// If valve add a new sword (and it uses the same tf_weapon_sword class) it will inherit the Eyelander taunt by default +criterion "WeaponIsSword" "playerweapon" "tf_weapon_sword" "required" weight 10 +criterion "WeaponIsDefender" "item_name" "Scottish Resistance" "required" weight 10 +criterion "WeaponIsUbersaw" "item_name" "Ubersaw" "required" weight 10 +criterion "WeaponIsFestiveUbersaw" "item_name" "Festive Ubersaw" "required" weight 10 +criterion "WeaponIsFrontierJustice" "item_name" "Frontier Justice" "required" weight 10 +criterion "WeaponIsFestiveFrontierJustice" "item_name" "Festive Frontier Justice" "required" weight 10 +criterion "WeaponIsRobotArm" "item_name" "Gunslinger" "required" weight 10 +criterion "WeaponIsGoldenWrench" "item_name" "Golden Wrench" "required" weight 10 +criterion "WeaponIsGoldenFryingPan" "item_name" "Gold Frying Pan" "required" weight 10 +criterion "WeaponIsShortstop" "item_name" "Shortstop" "required" weight 10 +criterion "WeaponIsMadMilk" "item_name" "Mad Milk" "required" weight 10 +criterion "WeaponIsSDCleaver" "playerweapon" "tf_weapon_cleaver" "required" weight 10 +criterion "WeaponIsHolyMackerel" "item_name" "Holy Mackerel" "required" weight 10 +criterion "WeaponIsFestiveHolyMackerel" "item_name" "Festive Holy Mackerel" "required" weight 10 +criterion "WeaponIsUnarmedCombat" "item_name" "Unarmed Combat" "required" weight 10 +criterion "WeaponIsKatana" "playerweapon" "tf_weapon_katana" "required" weight 10 +criterion "WeaponIsSashimono" "item_name" "Concheror" "required" weight 10 +criterion "WeaponIsSaxxy" "item_name" "Saxxy" "required" weight 10 +// Custom added criterion +criterion "WeaponIsBenja" "item_name" "Dalokohs Bar" "required" weight 10 +criterion "WeaponIsFishcake" "item_name" "Fishcake" "required" weight 10 +criterion "WeaponIsSteak" "item_name" "Buffalo Steak Sandvich" "required" weight 10 // Not actually used for the auto-eat response. Used for distinction in the taunts. +criterion "WeaponIsPainTrain" "item_name" "Pain Train" "required" weight 10 +criterion "WeaponIsNotPainTrain" "item_name" "!=The Pain Train" "required" weight 10 +criterion "WeaponIsFryingPan" "item_name" "Frying Pan" "required" weight 10 +criterion "WeaponIsNotFryingPan" "item_name" "!=Frying Pan" "required" weight 10 +criterion "WeaponIsNotScattergunDouble" "item_name" "!=The Force-a-Nature" "required" weight 10 +criterion "WeaponIsNotAxe" "item_name" "!=The Scotsman's Skullcutter" "required" weight 10 // Exclude the Skullcutter - has horrible clipping issues with the Eyelander taunt. Maybe give it a different taunt later. +criterion "WeaponClassIsNotAxe" "playerweapon" "!=tf_weapon_sword" "required" weight 10 +criterion "WeaponIsCaber" "playerweapon" "tf_weapon_stickbomb" "required" weight 10 +criterion "WeaponIsMetalFists" "item_name" "Fists of Steel" "required" weight 10 +// BUG: These loadout criterions are read in from the Steam Cloud +// As such, if the server loses connection to Steam, the responses bug out a bit. +criterion "WeaponIsNotVanillaPrimary" "loadout_slot_primary" "" "required" weight 10 +criterion "WeaponIsNotVanillaSecondary" "loadout_slot_secondary" "" "required" weight 10 +criterion "WeaponIsNotVanillaMelee" "loadout_slot_melee" "" "required" weight 10 +criterion "LoadoutIsDrink" "loadout_slot_secondary" "!=Crit-a-Cola" "required" weight 10 +criterion "LoadoutIsCritDrink" "loadout_slot_secondary" "Crit-a-Cola" "required" weight 10 +criterion "LoadoutIsNotRobotArm" "loadout_slot_melee" "!=The Gunslinger" "required" weight 10 +criterion "WeaponIsJarate" "item_name" "Jarate" "required" weight 10 +criterion "WeaponIsBasher" "item_name" "Boston basher" "required" weight 10 +criterion "WeaponIsCandy" "item_name" "Candy Cane" "required" weight 10 +criterion "WeaponIsMace" "item_name" "Sun-on-a-Stick" "required" weight 10 +criterion "WeaponIsNotBasher" "item_name" "!=The Boston basher" "required" weight 10 +criterion "WeaponIsNotCandy" "item_name" "!=The Candy Cane" "required" weight 10 +criterion "WeaponIsNotMace" "item_name" "!=Sun-on-a-Stick" "required" weight 10 +criterion "WeaponIsNotFish" "item_name" "!=The Holy Mackerel" "required" weight 10 +criterion "WeaponIsNotGunbai" "item_name" "!=The Fan O'War" "required" weight 10 +criterion "WeaponIsShiv" "item_name" "Tribalman's Shiv" "required" weight 10 +criterion "WeaponIsGunbai" "item_name" "Fan O'War" "required" weight 10 +criterion "WeaponIsNotMediGun" "playerweapon" "!=tf_weapon_medigun" "required" weight 10 +criterion "WeaponIsSodaPopper" "item_name" "Soda Popper" "required" weight 10 +criterion "WeaponIsAtomizer" "item_name" "Atomizer" "required" weight 10 +criterion "WeaponIsBazaarBargain" "item_name" "Bazaar Bargain" "required" weight 10 +criterion "WeaponIsCowMangler" "item_name" "Cow Mangler 5000" "required" weight 10 +criterion "WeaponIsNotTaggedMinigun" "item_name" "!=Upgradeable TF_WEAPON_MINIGUN" "required" weight 10 +criterion "WeaponIsNotTaggedRifle" "item_name" "!=Upgradeable TF_WEAPON_SNIPERRIFLE" "required" weight 10 +criterion "WeaponIsNotTaggedSMG" "item_name" "!=Upgradeable TF_WEAPON_SMG" "required" weight 10 +criterion "WeaponIsNotTaggedKukri" "item_name" "!=Upgradeable TF_WEAPON_CLUB" "required" weight 10 +criterion "WeaponIsNotTaggedMedigun" "item_name" "!=Upgradeable TF_WEAPON_MEDIGUN" "required" weight 10 +criterion "WeaponIsNotSaxxy" "item_name" "!=Saxxy" "required" weight 10 +criterion "WeaponIsTRBlade" "item_name" "Three-Rune Blade" "required" weight 10 +criterion "WeaponIsNotTRBlade" "item_name" "!=Three-Rune Blade" "required" weight 10 +criterion "WeaponIsBackup" "item_name" "Battalion's Backup" "required" weight 10 +criterion "WeaponIsHealArrow" "playerweapon" "tf_weapon_crossbow" "required" weight 10 +criterion "WeaponIsNotTomislav" "item_name" "!=Tomislav" "required" weight 10 +criterion "WeaponIsNotRobotArm" "item_name" "!=The Gunslinger" "required" weight 10 +criterion "WeaponIsRayGun" "item_name" "Righteous Bison" "required" weight 10 +criterion "WeaponIsHippocrates" "item_name" "Solemn Vow" "required" weight 10 +criterion "WeaponIsSharpDresser" "item_name" "Sharp Dresser" "required" weight 10 +criterion "WeaponIsEurekaEffect" "item_name" "Eureka Effect" "required" weight 10 +criterion "WeaponIsThirdDegree" "item_name" "Third Degree" "required" weight 10 +criterion "WeaponIsPomson" "item_name" "Pomson 6000" "required" weight 10 +criterion "WeaponIsManmelter" "item_name" "Manmelter" "required" weight 10 +criterion "WeaponIsWrapAssassin" "item_name" "Wrap Assassin" "required" weight 10 +criterion "WeaponIsSpycicle" "item_name" "Spy-cicle" "required" weight 10 +criterion "WeaponIsRainblower" "item_name" "Rainblower" "required" weight 10 +criterion "WeaponIsScorchShot" "item_name" "Scorch Shot" "required" weight 10 +criterion "WeaponIsLollichop" "item_name" "Lollichop" "required" weight 10 +criterion "WeaponIsPEPBrawlerBlaster" "playerweapon" "tf_weapon_pep_brawler_blaster" "required" weight 10 +criterion "WeaponIsHandgunScoutSecondary" "playerweapon" "tf_weapon_handgun_scout_secondary" "required" weight 10 +criterion "WeaponIsAnnihilator" "item_name" "Neon Annihilator" "required" weight 10 +criterion "WeaponIsPromoAnnihilator" "item_name" "Promo Neon Annihilator" "required" weight 10 +criterion "WeaponIsLooseCannon" "item_name" "Loose Cannon" "required" weight 10 +criterion "WeaponIsRescueRanger" "item_name" "Rescue Ranger" "required" weight 10 +criterion "WeaponIsShortCircuit" "item_name" "Short Circuit" "required" weight 10 +criterion "WeaponIsScotsmansSkullcutter" "item_name" "Scotsman's Skullcutter" "required" weight 10 +criterion "WeaponIsClassicSniperrifle" "playerweapon" "tf_weapon_sniperrifle_classic" "required" +criterion "WeaponIsRocketLauncherAirStrike" "playerweapon" "tf_weapon_rocketlauncher_airstrike" "required" +criterion "WeaponIsMutatedMilk" "item_name" "Mutated Milk" "required" weight 10 +criterion "WeaponIsDragonsFury" "item_name" "Dragon's Fury" "required" weight 10 +criterion "WeaponIsGasCan" "item_name" "Gas Passer" "required" weight 10 +criterion "WeaponIsSlap" "item_name" "Hot Hand" "required" weight 10 + +//Custom healed concept and critical hit +criterion "IsBeingHealed" "beinghealed" "1" "required" +criterion "IsNotBeingHealed" "beinghealed" "!=1" "required" +criterion "IsCritical" "damagecritical" "1" "required" +criterion "IsNotDominating" "IsDominating" "!=1" "required" + + +criterion "IsCrossHairEnemy" "crosshair_enemy" "Yes" "required" +criterion "IsNotCrossHairEnemy" "crosshair_enemy" "!=Yes" "required" + +criterion "WeaponIsMiniSentrygun" "customdeath" "minisentrygun" "required" +// Custom criterion to stop yeehaw lines when swinging with Gunslinger + getting a mini sentry kill at the same-ish time. +criterion "WeaponIsNotMiniSentrygun" "customdeath" "!=minisentrygun" "required" +criterion "WeaponIsSentrygun" "customdeath" "sentrygun" "required" +criterion "WeaponIsNotSentrygun" "customdeath" "" "required" +criterion "WeaponIsNotSentry" "customdeath" "none" "required" + +// Custom criterion to check if not scoped in, we do not want the lines to mix +criterion "Unzoomed" "sniperzoomed" "!=1" "required" +criterion "DeployedContext" "sniperzoomed" "1" "required" +criterion "ConceptFireWeapon" "Concept" "TLK_FIREWEAPON" required +criterion "ConceptFireMinigun" "Concept" "TLK_FIREMINIGUN" required +criterion "ConceptWindMinigun" "Concept" "TLK_WINDMINIGUN" required +criterion "LowHealthContext" "playerhealthfrac" "<0.25" required +// Custom stuff +criterion "CaberHealthContext" "playerhealthfrac" ">0.429" required +criterion "BonkHealthContext" "playerhealthfrac" "<0.641" required +criterion "NotLowHealth" "playerhealthfrac" ">0.5" required +// End custom +criterion "SuperHighHealthContext" "playerhealthfrac" ">1.400" required +criterion "GameRulesInWinState" "GameRound" "5" required +criterion "PlayerLostPreviousRound" "LostRound" "1" required +criterion "PlayerWonPreviousRound" "LostRound" "0" required +criterion "PlayerOnWinningTeam" "OnWinningTeam" "1" required +criterion "PlayerOnLosingTeam" "OnWinningTeam" "0" required +criterion "PreviousRoundWasTie" "PrevRoundWasTie" "1" required +criterion "PreviousRoundWasNotTie" "PrevRoundWasTie" "0" required + +criterion "IsRedTeam" "OnRedTeam" "1" required +criterion "IsBlueTeam" "OnRedTeam" "0" required + +criterion "IsFiringMinigun" "minigunfiretime" ">0.0" required +criterion "TimeFiringMinigunShort" "minigunfiretime" ">4.0,<=8.0" required +criterion "TimeFiringMinigunLong" "minigunfiretime" ">8.0,<=15.0" required +criterion "TimeFiringMinigunReallyLong" "minigunfiretime" ">15.0" required +criterion "ConceptFireMinigunTalk" "Concept" "TLK_FIREMINIGUN" "required" +Criterion "NotDefendOnThePointSpeech" "worldDefendOnThePointSpeech" "!=1" "required" + +criterion "IsAprilFoolsTaunt" "IsAprilFoolsTaunt" "1" "required" weight 100 +criterion "IsHalloweenTaunt" "IsHalloweenTaunt" "1" "required" weight 100 +criterion "IsRobotCostume" "IsRobotCostume" "1" "required" weight 100 +criterion "IsFairyHeavy" "IsFairyHeavy" "1" "required" weight 100 +criterion "IsDemowolf" "IsDemowolf" "1" "required" weight 100 +criterion "IsFrankenHeavy" "IsFrankenHeavy" "1" "required" weight 100 + +criterion "IsMedicDoubleFace" "IsMedicDoubleFace" "1" "required" weight 100 +criterion "IsMedicBirdHead" "IsMedicBirdHead" "1" "required" weight 100 +criterion "IsHeavyBirdHead" "IsHeavyBirdHead" "1" "required" weight 100 +criterion "IsSoldierBirdHead" "IsSoldierBirdHead" "1" "required" weight 100 +criterion "IsSniperBirdHead" "IsSniperBirdHead" "1" "required" weight 100 +criterion "IsSoldierMaggotHat" "IsSoldierMaggotHat" "1" "required" weight 100 +criterion "IsSoldierWizardHat" "IsSoldierWizardHat" "1" "required" weight 100 +criterion "IsUnicornHead" "IsUnicornHead" "1" "required" weight 100 +criterion "IsMedicZombieBird" "IsMedicZombieBird" "1" "required" weight 100 +criterion "IsHauntedHat" "IsHauntedHat" "1" "required" weight 100 + +criterion "HasTaunt2Item_TauntEnablerTest" "loadout_slot_action" "Taunt Enabler Test" "required" + + +criterion "ConceptRequestDuel" "Concept" "TLK_REQUEST_DUEL" required +criterion "ConceptDuelRejected" "Concept" "TLK_DUEL_WAS_REJECTED" required +criterion "ConceptIAcceptDuel" "Concept" "TLK_ACCEPT_DUEL" required +criterion "ConceptDuelAccepted" "Concept" "TLK_DUEL_WAS_ACCEPTED" required + + + + +criterion "DuelTargetIsScout" "dueltargetclass" "Scout" required +criterion "DuelTargetIsSniper" "dueltargetclass" "Sniper" required +criterion "DuelTargetIsSoldier" "dueltargetclass" "Soldier" required +criterion "DuelTargetIsDemoman" "dueltargetclass" "Demoman" required +criterion "DuelTargetIsMedic" "dueltargetclass" "Medic" required +criterion "DuelTargetIsHeavy" "dueltargetclass" "Heavy" required +criterion "DuelTargetIsPyro" "dueltargetclass" "Pyro" required +criterion "DuelTargetIsSpy" "dueltargetclass" "Spy" required +criterion "DuelTargetIsEngineer" "dueltargetclass" "Engineer" required + + +criterion "ConceptRocketDestroyed" "Concept" "TLK_ROCKET_DESTOYED" required + +criterion "ConceptComboKilled" "Concept" "TLK_COMBO_KILLED" required + +// MvM criterion +criterion "IsMvMDefender" "IsMvMDefender" "1" required +criterion "ConceptMvMBombDropped" "Concept" "TLK_MVM_BOMB_DROPPED" required +criterion "ConceptMvMBombCarrierUpgrade1" "Concept" "TLK_MVM_BOMB_CARRIER_UPGRADE1" required +criterion "ConceptMvMBombCarrierUpgrade2" "Concept" "TLK_MVM_BOMB_CARRIER_UPGRADE2" required +criterion "ConceptMvMBombCarrierUpgrade3" "Concept" "TLK_MVM_BOMB_CARRIER_UPGRADE3" required +criterion "ConceptMvMDefenderDied" "Concept" "TLK_MVM_DEFENDER_DIED" required +criterion "ConceptMvMFirstBombPickup" "Concept" "TLK_MVM_FIRST_BOMB_PICKUP" required +criterion "ConceptMvMBombPickup" "Concept" "TLK_MVM_BOMB_PICKUP" required +criterion "ConceptMvMSentryBuster" "Concept" "TLK_MVM_SENTRY_BUSTER" required +criterion "ConceptMvMSentryBusterDown" "Concept" "TLK_MVM_SENTRY_BUSTER_DOWN" required +criterion "ConceptMvMSniperCallout" "Concept" "TLK_MVM_SNIPER_CALLOUT" required +criterion "ConceptMvMLastManStanding" "Concept" "TLK_MVM_LAST_MAN_STANDING" required +criterion "ConceptMvMEncourageMoney" "Concept" "TLK_MVM_ENCOURAGE_MONEY" required +criterion "ConceptMvMMoneyPickup" "Concept" "TLK_MVM_MONEY_PICKUP" required +criterion "ConceptMvMEncourageUpgrade" "Concept" "TLK_MVM_ENCOURAGE_UPGRADE" required +criterion "ConceptMvMUpgradeComplete" "Concept" "TLK_MVM_UPGRADE_COMPLETE" required +criterion "ConceptMvMGiantCallout" "Concept" "TLK_MVM_GIANT_CALLOUT" required +criterion "ConceptMvMGiantHasBomb" "Concept" "TLK_MVM_GIANT_HAS_BOMB" required +criterion "ConceptMvMGiantKilled" "Concept" "TLK_MVM_GIANT_KILLED" required +criterion "ConceptMvMGiantKilledTeammate" "Concept" "TLK_MVM_GIANT_KILLED_TEAMMATE" required +criterion "ConceptMvMSappedRobot" "Concept" "TLK_MVM_SAPPED_ROBOT" required +criterion "ConceptMvMCloseCall" "Concept" "TLK_MVM_CLOSE_CALL" required +criterion "ConceptMvMTankCallout" "Concept" "TLK_MVM_TANK_CALLOUT" required +criterion "ConceptMvMTankDead" "Concept" "TLK_MVM_TANK_DEAD" required +criterion "ConceptMvMTankDeploying" "Concept" "TLK_MVM_TANK_DEPLOYING" required +criterion "ConceptMvMAttackTheTank" "Concept" "TLK_MVM_ATTACK_THE_TANK" required +criterion "ConceptMvMTaunt" "Concept" "TLK_MVM_TAUNT" required +criterion "ConceptMvMWaveStart" "Concept" "TLK_MVM_WAVE_START" required +criterion "ConceptMvMWaveWin" "Concept" "TLK_MVM_WAVE_WIN" required +criterion "ConceptMvMWaveLose" "Concept" "TLK_MVM_WAVE_LOSE" required +criterion "ConceptMvMDeployRage" "Concept" "TLK_MVM_DEPLOY_RAGE" required + +//A Tale of Two Cities Update +criterion "ConceptMannhattanGateAttack" "Concept" "TLK_MANNHATTAN_GATE_ATK" required +criterion "ConceptMannhattanGateTake" "Concept" "TLK_MANNHATTAN_GATE_TAKE" required +criterion "ConceptMvMResurrected" "Concept" "TLK_RESURRECTED" required +criterion "ConceptMvMMedicShield" "Concept" "TLK_MEDIC_HEAL_SHIELD" required +criterion "ConceptMvMLootCommon" "Concept" "TLK_MVM_LOOT_COMMON" required +criterion "ConceptMvMLootRare" "Concept" "TLK_MVM_LOOT_RARE" required +criterion "ConceptMvMLootUltraRare" "Concept" "TLK_MVM_LOOT_ULTRARARE" required + +// Halloween 2013 +criterion "ConceptPlayerCastFireball" "Concept" "TLK_PLAYER_CAST_FIREBALL" required +criterion "ConceptPlayerCastMerasmusZap" "Concept" "TLK_PLAYER_CAST_MERASMUS_ZAP" required +criterion "ConceptPlayerCastSelfHeal" "Concept" "TLK_PLAYER_CAST_SELF_HEAL" required +criterion "ConceptPlayerCastMirv" "Concept" "TLK_PLAYER_CAST_MIRV" required +criterion "ConceptPlayerCastBlastJump" "Concept" "TLK_PLAYER_CAST_BLAST_JUMP" required +criterion "ConceptPlayerCastStealth" "Concept" "TLK_PLAYER_CAST_STEALTH" required +criterion "ConceptPlayerCastTeleport" "Concept" "TLK_PLAYER_CAST_TELEPORT" required +criterion "ConceptPlayerCastBombHeadCurse" "Concept" "TLK_PLAYER_CAST_BOMB_HEAD_CURSE" required +criterion "ConceptPlayerCastLightningBall" "Concept" "TLK_PLAYER_CAST_LIGHTNING_BALL" required +criterion "ConceptPlayerCastMovementBuff" "Concept" "TLK_PLAYER_CAST_MOVEMENT_BUFF" required +criterion "ConceptPlayerCastMonoculous" "Concept" "TLK_PLAYER_CAST_MONOCULOUS" required +criterion "ConceptPlayerCastMeteorSwarm" "Concept" "TLK_PLAYER_CAST_METEOR_SWARM" required +criterion "ConceptPlayerCastSkeletonHorde" "Concept" "TLK_PLAYER_CAST_SKELETON_HORDE" required + +criterion "ConceptPlayerSpellFireball" "Concept" "TLK_PLAYER_SPELL_FIREBALL" required +criterion "ConceptPlayerSpellMerasmusZap" "Concept" "TLK_PLAYER_SPELL_MERASMUS_ZAP" required +criterion "ConceptPlayerSpellSelfHeal" "Concept" "TLK_PLAYER_SPELL_SELF_HEAL" required +criterion "ConceptPlayerSpellMirv" "Concept" "TLK_PLAYER_SPELL_MIRV" required +criterion "ConceptPlayerSpellBlastJump" "Concept" "TLK_PLAYER_SPELL_BLAST_JUMP" required +criterion "ConceptPlayerSpellStealth" "Concept" "TLK_PLAYER_SPELL_STEALTH" required +criterion "ConceptPlayerSpellTeleport" "Concept" "TLK_PLAYER_SPELL_TELEPORT" required +criterion "ConceptPlayerSpellLightningBall" "Concept" "TLK_PLAYER_SPELL_LIGHTNING_BALL" required +criterion "ConceptPlayerSpellMovementBuff" "Concept" "TLK_PLAYER_SPELL_MOVEMENT_BUFF" required +criterion "ConceptPlayerSpellMonoculous" "Concept" "TLK_PLAYER_SPELL_MONOCULOUS" required +criterion "ConceptPlayerSpellMeteorSwarm" "Concept" "TLK_PLAYER_SPELL_METEOR_SWARM" required +criterion "ConceptPlayerSpellSkeletonHorde" "Concept" "TLK_PLAYER_SPELL_SKELETON_HORDE" required + +criterion "ConceptPlayerSpellPickupCommon" "Concept" "TLK_PLAYER_SPELL_PICKUP_COMMON" required +criterion "ConceptPlayerSpellPickupRare" "Concept" "TLK_PLAYER_SPELL_PICKUP_RARE" required +criterion "ConceptPlayerHelltowerMidnight" "Concept" "TLK_PLAYER_HELLTOWER_MIDNIGHT" required +criterion "ConceptPlayerSkeletonKingAppear" "Concept" "TLK_PLAYER_SKELETON_KING_APPEAR" required + +criterion "IsMapHelltower" "map" "plr_hightower_event" required +criterion "IsInHell" "IsInHell" "1" required +criterion "IsNotInHell" "IsInHell" "0" required + +criterion "IsFirstRound" "RoundsPlayed" "<1" required +criterion "IsNotFirstRound" "RoundsPlayed" ">0" required +criterion "IsComp6v6" "IsComp6v6" "1" required +criterion "IsNotComp6v6" "IsComp6v6" "0" required +criterion "IsCompWinner" "IsCompWinner" "1" required + +criterion "ConceptPlayerGameOverComp" "Concept" "TLK_GAME_OVER_COMP" required +criterion "ConceptPlayerMatchOverComp" "Concept" "TLK_MATCH_OVER_COMP" required + +Criterion "DemomanIsKillSpeechObject" "DemomanKillSpeechObject" "1" "required" +Criterion "DemomanIsNotStillonFire" "DemomanOnFire" "!=1" "required" +Criterion "DemomanIsStillonFire" "DemomanOnFire" "1" "required" +Criterion "DemomanNotKillSpeech" "DemomanKillSpeech" "!=1" "required" +Criterion "DemomanNotKillSpeechMelee" "DemomanKillSpeechMelee" "!=1" "required" +Criterion "DemomanNotSaidHealThanks" "DemomanSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapDemoman" "DemomanHelpCap" "1" "required" +// Custom stuff +Criterion "DemomanNotInvulnerableSpeech" "DemomanInvulnerableSpeech" "!=1" "required" +Criterion "DemomanNotAssistSpeech" "DemomanAssistSpeech" "!=1" "required" +Criterion "IsDrunk" "NotSober" "1" "required" +Criterion "DemomanNotAwardSpeech" "DemomanAwardSpeech" "!=1" "required" + +Criterion "EngineerIsNotStillonFire" "EngineerOnFire" "!=1" "required" +Criterion "EngineerIsStillonFire" "EngineerOnFire" "1" "required" +Criterion "EngineerNotKillSpeech" "EngineerKillSpeech" "!=1" "required" +Criterion "EngineerNotKillSpeechMelee" "EngineerKillSpeechMelee" "!=1" "required" +Criterion "EngineerNotSaidHealThanks" "EngineerSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapEngineer" "EngineerHelpCap" "1" "required" +// Custom stuff +Criterion "EngineerNotAssistSpeech" "EngineerAssistSpeech" "!=1" "required" +Criterion "IsEngyFistSwung" "EngyFistSwung" "1" "required" +Criterion "IsNotEngyFistSwung" "EngyFistSwung" "!=1" "required" +Criterion "EngineerNotInvulnerableSpeech" "EngineerInvulnerableSpeech" "!=1" "required" +Criterion "IsMiniSentryKill" "MiniSentryKill" "1" "required" +Criterion "IsSentryKill" "SentryKill" "1" "required" + + +Criterion "HeavyIsKillSpeechObject" "HeavyKillSpeechObject" "1" "required" +Criterion "HeavyIsNotStillonFire" "HeavyOnFire" "!=1" "required" +Criterion "HeavyIsStillonFire" "HeavyOnFire" "1" "required" +Criterion "HeavyNotInvulnerableSpeech" "HeavyInvulnerableSpeech" "!=1" "required" +Criterion "HeavyNotKillSpeech" "HeavyKillSpeech" "!=1" "required" +Criterion "HeavyNotKillSpeechMelee" "HeavyKillSpeechMelee" "!=1" "required" +Criterion "HeavyNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "HeavyNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "HeavyNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "HeavyNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "HeavyNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "HeavyNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Criterion "HeavyNotSaidHealThanks" "HeavySaidHealThanks" "!=1" "required" +Criterion "IsHelpCapHeavy" "HeavyHelpCap" "1" "required" +// Custom stuff +Criterion "HeavyNotMedicSpeech" "HeavyMedicSpeech" "!=1" "required" +Criterion "HeavyNotAwardSpeech" "HeavyAwardSpeech" "!=1" "required" +Criterion "HeavyNotAssistSpeech" "HeavyAssistSpeech" "!=1" "required" +Criterion "IsHeavyFistsSwung" "HeavyFistsSwung" "1" "required" +Criterion "IsNotHeavyFistsSwung" "HeavyFistsSwung" "!=1" "required" +Criterion "IsHeavyFistsSwinging" "HeavyFistsSwinging" "1" "required" +Criterion "IsNotHeavyFistsSwinging" "HeavyFistsSwinging" "!=1" "required" +Criterion "NotGunTauntHeavy" "GunTauntHeavy" "!=1" "required" +Criterion "IsNotDaring" "IsDaring" "!=1" "required" +Criterion "HeavyNotKillSpeechObject" "HeavyKillSpeechObject" "!=1" "required" +Criterion "HeavyNotShinySpeech" "HeavyShinySpeech" "!=1" "required" +Criterion "HeavyNotFairyNoises" "HeavyFairyNoises" "!=1" "required" + +Criterion "MedicIsKillSpeechObject" "MedicKillSpeechObject" "1" "required" +Criterion "MedicIsNotStillonFire" "MedicOnFire" "!=1" "required" +Criterion "MedicIsStillonFire" "MedicOnFire" "1" "required" +Criterion "MedicNotInvulnerableSpeech" "MedicInvulnerableSpeech" "!=1" "required" +Criterion "MedicNotKillSpeech" "MedicKillSpeech" "!=1" "required" +Criterion "MedicNotKillSpeechMelee" "MedicKillSpeechMelee" "!=1" "required" +Criterion "MedicNotSaidHealThanks" "MedicSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapMedic" "MedicHelpCap" "1" "required" +// Custom stuff +Criterion "MedicNotAssistSpeech" "MedicAssistSpeech" "!=1" "required" + + +Criterion "PyroIsNotStillonFire" "PyroOnFire" "!=1" "required" +Criterion "PyroIsStillonFire" "PyroOnFire" "1" "required" +Criterion "PyroNotKillSpeech" "PyroKillSpeech" "!=1" "required" +Criterion "PyroNotKillSpeechMelee" "PyroKillSpeechMelee" "!=1" "required" +Criterion "PyroNotSaidHealThanks" "PyroSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapPyro" "PyroHelpCap" "1" "required" +// Custom stuff +Criterion "PyroNotAssistSpeech" "PyroAssistSpeech" "!=1" "required" +Criterion "PyroNotInvulnerableSpeech" "PyroInvulnerableSpeech" "!=1" "required" +Criterion "PyroNotKillSpeechSapper" "PyroKillSpeechSapper" "!=1" "required" + + +Criterion "ScoutIsKillSpeechObject" "ScoutKillSpeechObject" "1" "required" +Criterion "ScoutIsNotStillonFire" "ScoutOnFire" "!=1" "required" +Criterion "ScoutIsStillonFire" "ScoutOnFire" "1" "required" +Criterion "ScoutNotKillSpeech" "ScoutKillSpeech" "!=1" "required" +Criterion "ScoutNotKillSpeechMelee" "ScoutKillSpeechMelee" "!=1" "required" +Criterion "ScoutNotKillSpeechMeleeFat" "ScoutKillSpeechMeleeFat" "!=1" "required" +Criterion "ScoutNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "ScoutNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "ScoutNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "ScoutNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "ScoutNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "ScoutNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Criterion "ScoutNotSaidHealThanks" "ScoutSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapScout" "ScoutHelpCap" "1" "required" +Criterion "NotSaidScoutHitBallSpeech" "ScoutHitBallSpeech" "!=1" "required" +Criterion "NotScoutGrabbedIntelligence" "ScoutGrabbedIntelligence" "!=1" "required" +Criterion "ScoutIsNotInvuln" "ScoutInvuln" "!=1" "required" +//Custom stuff +Criterion "ScoutNotInvulnerableSpeech" "ScoutInvulnerableSpeech" "!=1" "required" +Criterion "ScoutNotAssistSpeech" "ScoutAssistSpeech" "!=1" "required" +Criterion "ScoutNotDoubleJumpSpeech" "ScoutDoubleJumpSpeech" "!=1" "required" +Criterion "ScoutNotAwardSpeech" "ScoutAwardSpeech" "!=1" "required" +Criterion "ScoutNotDrinkReadySpeech" "ScoutDrinkReadySpeech" "!=1" "required" +Criterion "ScoutIsNotCrit" "ScoutIsCrit" "1" "required" +Criterion "ScoutHasFired" "ScoutFired" "1" "required" + +Criterion "SniperIsNotStillonFire" "SniperOnFire" "!=1" "required" +Criterion "SniperIsStillonFire" "SniperOnFire" "1" "required" +Criterion "SniperNotKillSpeech" "SniperKillSpeech" "!=1" "required" +Criterion "SniperNotKillSpeechMelee" "SniperKillSpeechMelee" "!=1" "required" +Criterion "SniperNotSaidCartMovingBackwardD" "SaidCartMovingBackwardD" "!=1" "required" +Criterion "SniperNotSaidHealThanks" "SniperSaidHealThanks" "!=1" "required" +Criterion "IsHelpCapSniper" "SniperHelpCap" "1" "required" +// Custom stuff +Criterion "SniperNotInvulnerableSpeech" "SniperInvulnerableSpeech" "!=1" "required" +Criterion "SniperNotSaidCartMovingBackwardO" "SaidCartMovingBackwardO" "!=1" "required" +Criterion "SniperNotSaidCartMovingForwardD" "SaidCartMovingForwardD" "!=1" "required" +Criterion "SniperNotSaidCartMovingForwardO" "SaidCartMovingForwardO" "!=1" "required" +Criterion "SniperNotSaidCartMovingStoppedD" "SaidCartMovingStoppedD" "!=1" "required" +Criterion "SniperNotSaidCartMovingStoppedO" "SaidCartMovingStoppedO" "!=1" "required" +Criterion "SniperNotAwardSpeech" "SniperAwardSpeech" "!=1" "required" +Criterion "SniperNotAssistSpeech" "SniperAssistSpeech" "!=1" "required" +Criterion "SniperNotHoldStill" "SniperHoldStill" "!=1" "required" + +Criterion "SpyIsNotStillonFire" "SpyOnFire" "!=1" "required" +Criterion "SpyIsStillonFire" "SpyOnFire" "1" "required" +Criterion "SpyNotKillSpeech" "SpyKillSpeech" "!=1" "required" +Criterion "SpyNotKillSpeechMelee" "SpyKillSpeechMelee" "!=1" "required" +Criterion "SpyNotSaidHealThanks" "SpySaidHealThanks" "!=1" "required" +Criterion "IsHelpCapSpy" "SpyHelpCap" "1" "required" +// Custom stuff +Criterion "EngineerWasKilled" "EngyKilled" "1" "required" +Criterion "SapperDestroyed" "LostSapper" "1" "required" +Criterion "ToysMurdered" "ObjectDestroyed" "1" "required" +Criterion "NotSapSpeech" "SapKillSpeech" "!=1" "required" +Criterion "NotSapperLostSpeech" "SpySapperLostSpeech" "!=1" "required" +Criterion "SpyNotAssistSpeech" "SpyAssistSpeech" "!=1" "required" +Criterion "SpyNotInvulnerableSpeech" "SpyInvulnerableSpeech" "!=1" "required" +// Test rules +#include "talker/tf.lua" +#include "talker/Heavy.lua" +#include "talker/Scout.lua" +#include "talker/Engineer.lua" +#include "talker/Sniper.lua" +#include "talker/Soldier.lua" +#include "talker/Demoman.lua" +#include "talker/Medic.lua" +#include "talker/Pyro.lua" +#include "talker/Spy.lua" +#include "talker/events.lua" +#include "talker/Heavy_auto.lua" +#include "talker/Scout_auto.lua" +#include "talker/Engineer_auto.lua" +#include "talker/Sniper_auto.lua" +#include "talker/Soldier_auto.lua" +#include "talker/Demoman_auto.lua" +#include "talker/Medic_auto.lua" +#include "talker/Pyro_auto.lua" +#include "talker/Spy_auto.lua" + diff --git a/addon/gamemodes/teamfortress/gamemode/ent_extension.lua b/gamemodes/tf/gamemode/ent_extension.lua similarity index 78% rename from addon/gamemodes/teamfortress/gamemode/ent_extension.lua rename to gamemodes/tf/gamemode/ent_extension.lua index 8f89afbd3..8063470d5 100644 --- a/addon/gamemodes/teamfortress/gamemode/ent_extension.lua +++ b/gamemodes/tf/gamemode/ent_extension.lua @@ -8,17 +8,31 @@ RegisterNetworkedTable("TFPlayerData", { }) ]] -if not meta.SetTriggerOLD then - meta.SetTriggerOLD = meta.SetTrigger -end -function meta:SetTrigger(b) - self:SetTriggerOLD(b) - self.__IsTrigger = b +function meta:EmitSoundEx(soundName, soundLevel, pitchPercent, volume, channel, soundFlags, dsp, filter) + if SERVER then + local rf = RecipientFilter() + rf:AddAllPlayers() + self:EmitSound(soundName,soundLevel,pitchPercent,volume,channel,soundFlags,dsp,filter) + else + if (channel == CHAN_VOICE) then + self:StopSound(soundName) + end + self:EmitSound(soundName,soundLevel,pitchPercent,volume,channel,soundFlags,dsp,nil) + end end +function meta:PlaySceneToClient(b) + if CLIENT then + ClientsideScene( b, self ) + end +end -- NPCs are considered as players in this gamemode -function meta:IsTFPlayer() - return self:IsPlayer() or self:IsNPC() +function meta:IsTFPlayer() + if (self:GetClass() == "ctf_bot_navigator") then + return false + else + return self:IsPlayer() or self:IsNextBot() or self:IsNPC() or self:GetClass() == "reviver" or self:GetClass() == "eyeball_boss" or self:GetClass() == "headless_hatman" or self:GetClass() == "tf_zombie" or self.Base == "npc_tf2base" or self.Base == "npc_tf2base_mvm" or self.Base == "npc_demo_red" or self.Base == "npc_demo_mvm" or self.Base == "npc_scout_mvm" or self.Base == "npc_hwg_red" or self.Base == "npc_heavy_mvm" or self.Base == "npc_heavy_mvm_shotgun" or self.Base == "npc_soldier_red" or self.Base == "npc_sniper_red" or self.Base == "npc_spy_red" or self.Base == "npc_scout_red" or self.Base == "npc_pyro_red" or self.Base == "npc_medic_red" or self.Base == "npc_engineer_red" + end end -- Entity name is the name attributed to an entity by the gamemode @@ -26,6 +40,14 @@ function meta:EntityName() return GAMEMODE:EntityName(self) end +function meta:IsL4D() + if (self:IsPlayer()) then + return self:GetNWBool("IsL4D") + else + return self:GetClass() == "infected" + end +end + -- Entity team is the team attributed to an entity by the gamemode (this is important for placing NPCs into the correct team) function meta:EntityTeam() return GAMEMODE:EntityTeam(self) @@ -163,6 +185,17 @@ function meta:GetMaxOverheal() return h end +function meta:IsMiniBoss() + if (string.find(self:GetModel(),"_boss.mdl") or (string.find(self:GetModel(),"/bot_") and !string.find(self:GetModel(),"_boss.mdl") and self:LookupBone("bip_head") != nil and self:GetManipulateBoneScale(self:LookupBone("bip_head")) == Vector(0.7, 0.7, 0.7)) or self:GetModel() == "models/bots/demo/bot_sentry_buster.mdl") then + return true + else + if (self:GetNWBool("IsBoss",false) == true) then + return true + else + return false + end + end +end function meta:GiveHealth(c, is_fraction, allow_overheal) if c==0 then return 0 end @@ -207,14 +240,40 @@ end -- Team related functions function meta:IsFriendly(target) local t1, t2 = self:EntityTeam(), target:EntityTeam() - + if t1 == TEAM_FRIENDLY || t2 == TEAM_FRIENDLY then + return true + end + if self:IsPlayer() and self:EntityTeam() == TEAM_SPECTATOR and t2~=t1 then + return true + end + if target:IsPlayer() and target:EntityTeam() == TEAM_SPECTATOR and t1~=t2 then + return true + end return (self:HasNPCFlag(NPC_ALWAYSFRIENDLY) or target:HasNPCFlag(NPC_ALWAYSFRIENDLY) or - (t1==TEAM_RED or t1==TEAM_BLU) and t1==t2) + (t1==TEAM_RED or t1==TEAM_BLU or t1==TEAM_YELLOW or t1==TEAM_GREEN or t1==TF_TEAM_PVE_INVADERS or t1==TEAM_INFECTED) and t1==t2) end function meta:CanDamage(target) - return self==target or ((!GetConVar("mp_friendlyfire"):GetBool() and not self:IsFriendly(target)) or GetConVar("mp_friendlyfire"):GetBool()) + if (self:IsL4D() and target:IsNPC() and target:Classify() == CLASS_ZOMBIE) then + return false + end + if (self:IsL4D() and target:IsNPC() and target:Classify() != CLASS_ZOMBIE) then + return true + end + if (self:IsL4D() and target:IsTFPlayer()) then + return true + end + if (target:IsL4D() and self:IsTFPlayer()) then + return true + end + if self:EntityTeam() == TEAM_FRIENDLY then + return self==target + end + if target:EntityTeam() == TEAM_FRIENDLY then + return false + end + return self==target or ((!GetConVar("mp_friendlyfire"):GetBool() and not self:IsFriendly(target)) or GetConVar("mp_friendlyfire"):GetBool()) or target:IsL4D() or self:IsL4D() end function meta:IsValidEnemy(target) @@ -231,6 +290,8 @@ DF_BACKSTAB = 4 -- death by backstab, play the backstab death pose DF_DECAP = 8 -- death from decapitation, drop a headless ragdoll and a head gib DF_GOLDEN = 16 -- death from the Golden Wrench, drop a golden ragdoll DF_SILENCED = 32 -- death from Your Eternal Reward, suppress death sound and cloak ragdoll +DF_FROZEN = 64 -- death from Your Eternal Reward, suppress death sound and cloak ragdoll +DF_GIB = 128 function meta:AddDeathFlag(f) --[[local dt = self:GetDataTableEntity() @@ -437,6 +498,7 @@ function Callback(attacker,traceres,damageinfo) local ForceDamageClasses = { npc_combinegunship = true, + npc_helicopter = true, } local function TFBulletCallback(attacker, trace, dmginfo) @@ -444,7 +506,6 @@ local function TFBulletCallback(attacker, trace, dmginfo) local self = dmginfo:GetInflictor() local dmg = self.TempDamageInfo - if dmg then if trace.Entity and trace.Entity:IsValid() then dmg.HitPos = trace.HitPos @@ -456,9 +517,11 @@ local function TFBulletCallback(attacker, trace, dmginfo) trace.Entity:TakeDamageInfo(dmginfo) --gamemode.Call("EntityTakeDamage", trace.Entity, self, attacker, 1, dmginfo) end - + if (trace.Entity:GetClass() == "npc_helicopter") then + trace.Entity:TakeDamageInfo(dmginfo) + end if (trace.Entity:IsPlayer() or trace.Entity:IsNPC()) and dmg.Critical then - if attacker:EntityTeam()==TEAM_BLU then + if attacker:EntityTeam()==TEAM_BLU or attacker:EntityTeam()==TF_TEAM_PVE_INVADERS then ParticleEffect("bullet_impact1_blue_crit", trace.HitPos, Angle(0,0,0)) else ParticleEffect("bullet_impact1_red_crit", trace.HitPos, Angle(0,0,0)) @@ -467,16 +530,16 @@ local function TFBulletCallback(attacker, trace, dmginfo) end if dmg.Tracer>0 and math.random(1,dmg.Tracer)==1 then - local tracer = dmg.TracerName.."_" + local tracer = dmg.TracerName - if attacker:EntityTeam()==TEAM_BLU then - tracer = tracer.."blue" + if attacker:EntityTeam()==TEAM_BLU or attacker:EntityTeam()==TF_TEAM_PVE_INVADERS then + tracer = tracer.."_blue" else - tracer = tracer.."red" + tracer = tracer.."_red" end if dmg.Critical then - tracer = tracer.."_crit" + tracer = tracer.."_crit" end umsg.Start("DoBulletTracer") @@ -493,19 +556,14 @@ end function meta:FireTFBullets(b) self.TempDamageInfo = { BaseDamage = b.Damage, - MaxDamageFalloff = b.Falloff, - MaxDamageRampUp = b.RampUp, - DamageModifier = b.DamageModifier, - DamageRandomize = b.DamageRandomize, Src = b.Src, - Critical = b.Critical, - CritDamageMultiplier = b.CritMultiplier, + Critical = false, Tracer = b.Tracer or 1, TracerName = b.TracerName or "bullet_tracer01", Force = b.Force or 1, } - b.Damage = 1 + b.Damage = self.TempDamageInfo.BaseDamage b.Tracer = 0 b.TracerName = "" b.Callback = TFBulletCallback @@ -541,7 +599,7 @@ local function DoBulletTracer(tracer, hitpos, weapon) local att = ent:GetAttachment(id) if not att then return end - --print("DoBulletTracer", tracer, ent, ent:EntIndex(), id) + ----print("DoBulletTracer", tracer, ent, ent:EntIndex(), id) util.ParticleTracerEx(tracer, att.Pos, hitpos, true, ent:EntIndex(), id) end diff --git a/gamemodes/tf/gamemode/init.lua b/gamemodes/tf/gamemode/init.lua new file mode 100644 index 000000000..6abe266b0 --- /dev/null +++ b/gamemodes/tf/gamemode/init.lua @@ -0,0 +1,2641 @@ +include("sv_clientfiles.lua") +include("sv_resource.lua") +include("sv_response_rules.lua") +include("sv_ctf_bots.lua") +include("shared.lua") +include("sv_gamelogic.lua") +include("sv_hl2replace.lua") +include("sv_damage.lua") +include("sv_death.lua") +include("shd_gravitygun.lua") +include("sv_chat.lua") +include("sv_loadout.lua") +include("shd_taunts.lua") +resource.AddWorkshop( "1932936017" ) +resource.AddWorkshop( "3323795558" ) +local LOGFILE = "tf/log_server.txt" +file.Delete(LOGFILE) +file.Append(LOGFILE, "Loading serverside script\n") +local load_time = SysTime() + +include("sv_npc_relationship.lua") +include("sv_ent_substitute.lua") + +CreateConVar("grapple_distance", -1, false) +response_rules.Load("talker/tf_response_rules.lua") + +util.AddNetworkString("TFRagdollCreate") +util.AddNetworkString("TauntAnim") +util.AddNetworkString("TFGestureAnim") +util.AddNetworkString("UpdatePhonemes") + +-- Quickfix for Valve's typo in tf_reponse_rules.txt + +--concommand.Add("lua_pick", function(pl, cmd, args) +-- getfenv()[args[1]] = pl:GetEyeTrace().Entity +--end) + +hook.Add("Think", "NoAttackPuppet", function() + for k,v in ipairs(player.GetAll()) do + if (v:WaterLevel() < 2 and !v.IsDrowning) then + timer.Stop("Drown"..v:EntIndex()) + timer.Stop("DrownContinue"..v:EntIndex()) + end + end +end) + + +concommand.Add("voicemenu_gesture", function(pl, cmd, args) + local a, b = tonumber(args[1]), tonumber(args[2]) + if not a or not b then return end + if a == 0 and b == 0 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( "SC_PHELLO" .. math.random( 0, 6 ), pl:GetPos(), pl:EntIndex() , CHAN_AUTO, 1, 75, 0, 100 ) + end + elseif a == 0 and b == 1 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( table.Random({"SC_GOODWORK","SC_HARDLYNOTICE"}), pl:GetPos(), pl:EntIndex() , CHAN_AUTO, 1, 75, 0, 100 ) + end + elseif a == 0 and b == 2 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( table.Random({"SC_ZOMBIE1A","SC_GETAWAY"}), pl:GetPos(), pl:EntIndex() , CHAN_AUTO, 1, 75, 0, 100 ) + end + elseif a == 0 and b == 3 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( table.Random({"SC_ZOMBIE1A"}), pl:GetPos(), pl:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + end + elseif a == 0 and b == 6 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( table.Random({"SC_ANSWER10","SC_ANSWER16","SC_ANSWER14","SC_ANSWER8","SC_ANSWER9"}), pl:GetPos(), pl:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + end + elseif a == 0 and b == 7 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( table.Random({"SC_ANSWER19","SC_ANSWER17","SC_ANSWER18","SC_ANSWER20","SC_ANSWER25"}), pl:GetPos(), pl:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + end + elseif a == 2 and b == 8 then + NextSpeak = CurTime() + 1.5 + if not NextSpeak and CurTime()>=NextSpeak then + if pl:GetPlayerClass() == "heavy" or pl:GetPlayerClass() == "scout" then + pl:EmitSound("vo/"..pl:GetPlayerClass().."_mvm_loot_godlike0"..math.random(1,3)..".wav") + else + pl:EmitSound("vo/"..pl:GetPlayerClass().."_mvm_loot_godlike0"..math.random(1,3)..".wav") + end + end + elseif a == 1 and b == 0 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( "SC_HEAR"..math.random(0,2), pl:GetPos(), pl:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + end + elseif a == 1 and b == 1 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( "SC_QUESTION"..math.random(0,26), pl:GetPos(), pl:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + end + elseif a == 1 and b == 2 then + if (pl:GetPlayerClass() == "hl1scientist") then + EmitSentence( "SC_ANSWER"..math.random(0,29), pl:GetPos(), pl:EntIndex(), CHAN_VOICE, 1, 75, 0, 100 ) + end + end + if pl:GetPlayerClass() == "zombie" then + pl:EmitSound("Zombie.Alert") + end +end) + +concommand.Add("addcond", function(pl, cmd, args) + local a, b = tonumber(args[1]), tonumber(args[2]) + if !GetConVar("sv_cheats"):GetBool() then return end + if not a then return end + if a == 5 then + pl:GodEnable() + if pl:Team() == TEAM_RED or pl:Team() != TEAM_BLU then + pl:SetSkin(2) + else + pl:SetSkin(3) + end + end + if a == 11 or a == 37 or a == 35 then + GAMEMODE:StartCritBoost(pl) + end + if a == 91 then + pl:GetWeapons()[1].Primary.ClipSize = pl:GetWeapons()[1].Primary.ClipSize + 6 + pl:GetWeapons()[2].Primary.ClipSize = pl:GetWeapons()[1].Primary.ClipSize + 6 + pl:GetWeapons()[1].ReloadTime = pl:GetWeapons()[1].ReloadTime - 0.6 + pl:GetWeapons()[2].ReloadTime = pl:GetWeapons()[2].ReloadTime - 0.6 + pl:GetWeapons()[1].Primary.Delay = pl:GetWeapons()[1].Primary.Delay - 0.4 + pl:GetWeapons()[2].Primary.Delay = pl:GetWeapons()[2].Primary.Delay - 0.4 + pl:GetWeapons()[3].Primary.Delay = pl:GetWeapons()[3].Primary.Delay - 0.4 + pl:EmitSound("items/powerup_pickup_haste.wav") + timer.Create("Haste1"..pl:EntIndex(), 0.00, 0, function() + if !pl:Alive() then timer.Stop("Haste1"..pl:EntIndex()) return end + + pl:SetClassSpeed(pl:GetPlayerClassTable().Speed + 60) + + end) + end + if a == 666 then + pl:GetWeapons()[3].DamageType = DMG_DISSOLVE + end + if a == 72 then + pl:GetWeapons()[1].Primary.Delay = pl:GetWeapons()[1].Primary.Delay - 0.1 + pl:GetWeapons()[2].Primary.Delay = pl:GetWeapons()[2].Primary.Delay - 0.1 + pl:GetWeapons()[3].Primary.Delay = pl:GetWeapons()[3].Primary.Delay - 0.1 + pl:EmitSound("items/powerup_pickup_haste.wav", 95, 110) + timer.Create("Haste2"..pl:EntIndex(), 0.00, 0, function() + if !pl:Alive() then timer.Stop("Haste2"..pl:EntIndex()) return end + + pl:SetClassSpeed(pl:GetPlayerClassTable().Speed * 1.2) + + end) + end +end) +concommand.Add("taunt", function(pl) + GAMEMODE:PlayerStartTaunt(pl, ACT_DIESIMPLE, 1 ) +end) + +concommand.Add("select_slot", function(pl, cmd, args) + local n = tonumber(args[1] or "") + local w = pl:GetActiveWeapon() + if n and w and w:IsValid() and w.OnSlotSelected then + w:OnSlotSelected(n) + end +end) + +concommand.Add("decapme", function(pl, cmd, args) +-- pl:SetNWBool("ShouldDropDecapitatedRagdoll", true) + pl:AddDeathFlag(DF_DECAP) + pl:Kill() +end) + +concommand.Add("tf_stripme", function(pl, cmd, args) + pl:StripWeapons() +end) + + +hook.Add("PlayerSelectSpawn", "PlayerSelectTeamSpawn", function(pl) + if !string.find(game.GetMap(), "mvm_") then + for k,v in pairs(ents.FindByClass("info_player_redspawn"), ents.FindByClass("info_player_bluspawn")) do + if v:IsValid() then + local spawns1 = ents.FindByClass( "info_player_redspawn" ) + local random_entry = math.random( #spawns1 ) + local spawns2 = ents.FindByClass( "info_player_bluspawn" ) + local random_entry2 = math.random( #spawns2 ) + if pl:Team() == TEAM_RED or pl:Team() == TEAM_NEUTRAL then + return spawns1[ random_entry ] + elseif pl:Team() == TEAM_BLU or pl:Team() == TF_TEAM_PVE_INVADERS then + return spawns2[ random_entry2 ] + end + end + end + else + for k,v in pairs( ents.FindByClass("info_player_bluspawn")) do + if v:IsValid() then + local spawns1 = ents.FindByClass( "info_player_bluspawn" ) + local random_entry = math.random( #spawns1 ) + if pl:Team() == TEAM_BLU then + return spawns1[ random_entry ] + end + end + end + end +end) + +hook.Add("PlayerHurt", "RoboIsHurt", function( ply, pos, foot, sound, volume, rf ) + local dmginfo = DamageInfo() + if ply:Alive() and ply:GetModel() == "models/l4d2/survivor_mechanic.mdl" then + if ply:Health() >= 50 then + ply:EmitSound("player/survivor/voice/mechanic/hurtminor0"..math.random(1,7)..".wav") + else + ply:EmitSound("player/survivor/voice/mechanic/hurtcritical0"..math.random(2,5)..".wav") + end + end + if ply:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_PAIN" .. math.random( 0, 3 ), ply:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + if ply:GetPlayerClass() == "metrocop" then + EmitSentence( "METROPOLICE_PAIN" .. math.random( 0, 3 ), ply:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + + if not ply:IsHL2() and ply:GetInfoNum("tf_hhh", 0) == 1 then + ply:EmitSound( "Halloween.HeadlessBossPain" ) -- Play the footsteps hunter is using + end + + if ply:GetPlayerClass() == "merc_dm" then + if ( shouldOccur ) then + if ply:Health() <= 50 then + ply:EmitSound("vo/mercenary_painsevere0"..math.random(1,6)..".wav") + elseif dmginfo:IsFallDamage() then + ply:EmitSound("vo/mercenary_painsevere0"..math.random(1,6)..".wav") + else + ply:EmitSound("vo/mercenary_painsharp0"..math.random(1,8)..".wav") + end + shouldOccur = false + timer.Simple( hurtdelay, function() shouldOccur = true end ) + end + end + + + if not ply:IsHL2() and ply:GetInfoNum("jakey_antlionfbii", 0) == 1 then + ply:EmitSound("npc/antlion/shell_impact"..math.random(1,4)..".wav", 80, 100) + if ( shouldOccur ) then + ply:EmitSound( "npc/antlion_guard/antlion_guard_pain"..math.random(1,2)..".wav", 150, math.random(87, 103) ) + shouldOccur = false + timer.Simple( hurtdelay, function() shouldOccur = true end ) + end + end + if ply:GetInfoNum("dylan_rageheavy", 0) == 1 then + ply:EmitSound("vo/heavy_paincrticialdeath0"..math.random(1,3)..".wav", 150, 100) + if ply:GetInfoNum("tf_giant_robot", 0) == 1 then + ply:SetModelScale(6) + ply:EmitSound("music/stingers/hl1_stinger_song28.wav", 0, 80) + ply:EmitSound("music/stingers/hl1_stinger_song28.wav", 0, 75) + end + end + if (ply:IsHL2()) then + ply:GetViewModel():SetMaterial("") + else + ply:GetViewModel():SetMaterial("color") + end + if not ply:IsHL2() and ply:GetInfoNum("tf_robot", 0) == 1 then + ply:EmitSound( "MVM_Giant.BulletImpact" ) + end + if not ply:IsHL2() and ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 1 then + ply:EmitSound( "MVM_Giant.BulletImpact" ) + end + if ply:GetPlayerClass() == "spy" then + for k,v in pairs(ents.FindByClass("tf_weapon_invis_dringer")) do + if v.Owner == ply and v.dt.Ready == true then + v:StartCloaking() + ply:CreateRagdoll() + end + end + end +end) + + +concommand.Add("voicemenu_combine", function(pl, cmd, args) + local a, b = tonumber(args[1]), tonumber(args[2]) + if not a or not b then return end + + if a == 0 and b == 6 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_ANSWER" .. math.random( 0, 4 ), pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end + if a == 0 and b == 2 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "METROPOLICE_IDLE_HARASS_PLAYER1", pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end + if a == 0 and b == 3 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "METROPOLICE_IDLE_HARASS_PLAYER0", pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end + if a == 2 and b == 5 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_LAST_OF_SQUAD" .. math.random( 0, 7 ), pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end + if a == 1 and b == 0 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_ALERT" .. math.random( 0, 9 ), pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end + if a == 1 and b == 1 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_TAUNT" .. math.random( 0, 2 ), pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end + if a == 1 and b == 2 then + if pl:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_QUEST" .. math.random( 0, 5 ), pl:GetPos(), 1, CHAN_AUTO, 1, 95, 0, 100 ) + end + end +end) + + +hook.Add("PlayerDeath", "PlayerRobotDeath", function( ply, attacker, inflictor) + local dmginfo = DamageInfo() + ply:SetParent() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 110)) do + if v:IsPlayer() then + v:SetParent() + end + end + + if attacker:IsPlayer() and !attacker:IsFriendly(ply) and attacker:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_PLAYER_DEAD" .. math.random( 0, 6 ), attacker:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + + for k,v in ipairs(team.GetPlayers(ply:Team())) do + if v:Alive() and v:Nick() != ply:Nick() and v:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_MAN_DOWN" .. math.random( 0, 4 ), v:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + end + + for k,v in ipairs(team.GetPlayers(ply:Team())) do + if v:Alive() and v:Nick() != ply:Nick() and v:GetPlayerClass() == "metrocop" then + EmitSentence( "METROPOLICE_MAN_DOWN" .. math.random( 0, 3 ), v:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + end + + if ply:IsHL2() then + if ply:GetPlayerClass() == "gmodplayer" then + if ply:GetModel() == "models/l4d2/survivor_mechanic.mdl" then + ply:EmitSound("player/survivor/voice/mechanic/deathscream0"..math.random(1,6)..".wav") + elseif ply:GetModel() == "models/l4d2/survivor_namvet.mdl" then + ply:EmitSound("player/survivor/voice/namvet/deathscream0"..math.random(1,8)..".wav") + elseif ply:GetModel() == "models/l4d2/survivor_manager.mdl" then + ply:EmitSound("player/survivor/voice/manager/deathscream0"..math.random(1,9)..".wav") + elseif ply:GetModel() == "models/l4d2/survivor_biker.mdl" then + ply:EmitSound("player/survivor/voice/biker/deathscream0"..math.random(1,9)..".wav") + end + end + end + if ply:GetPlayerClass() == "charger" then + ply:EmitSound("ChargerZombie.Death") + end + if ply:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_DIE" .. math.random( 0, 3 ), ply:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + + if ply:GetPlayerClass() == "metrocop" then + EmitSentence( "METROPOLICE_DIE" .. math.random( 0, 4 ), ply:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + + if ply:GetPlayerClass() == "tank_l4d" then + for k,v in ipairs(player.GetAll()) do + v:StopSound("TankMusicLoop") + v:StopSound("TankMidnightMusicLoop") + end + + if (string.find(ply:GetModel(),"l4d1")) then + ply:EmitSound("L4D1_HulkZombie.Death") + else + ply:EmitSound("HulkZombie.Death") + end + end + if ply:GetPlayerClass() == "jockey" then + ply:EmitSound("JockeyZombie.Death") + end + if not ply:IsHL2() and ply:GetInfoNum("tf_sentrybuster", 0) == 1 then + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(ply) and v:Alive() and not v:IsHL2() then + if v:GetPlayerClass() == "heavy" then + v:EmitSound("vo/heavy_mvm_sentry_buster02.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "medic" then + v:EmitSound("vo/medic_mvm_sentry_buster02.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "soldier" then + v:EmitSound("vo/soldier_mvm_sentry_buster02.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "engineer" then + v:EmitSound("vo/engineer_mvm_sentry_buster02.wav", 85, 100, 1, CHAN_REPLACE) + end + end + end + end + if not ply:IsHL2() and ply:GetInfoNum("jakey_antlionfbii", 0) == 1 then + ply:EmitSound("npc/antlion_guard/antlion_guard_die"..math.random(1,2)..".wav", 120, 100) + end + if not ply:IsHL2() and ply:GetInfoNum("tf_merasmus", 0) == 1 then + ply:EmitSound("Halloween.MerasmusBanish") + ply:EmitSound("Halloween.HeadlessBossDeath") + ply:PrecacheGibs() + ply:GibBreakClient( Vector(math.random(1,4), math.random(1,4), math.random(1,4)) ) + ply:GetRagdollEntity():Remove() + end + if attacker:IsPlayer() and victim ~= attacker and attacker:GetInfoNum("tf_merasmus", 0) == 1 then + attacker:EmitSound("Halloween.MerasmusBombTaunt") + end + if attacker:IsPlayer() and victim ~= attacker and attacker:GetInfoNum("tf_saxxy", 0) == 1 then + attacker:EmitSound("SaxtonHale.KillVictim") + end + if attacker:IsPlayer() and victim ~= attacker and attacker:GetInfoNum("tf_merasmus", 0) == 1 and victim:IsNPC() then + attacker:EmitSound("Halloween.MerasmusBombTaunt") + end + if not ply:IsHL2() and ply:GetInfoNum("tf_robot", 0) == 1 then + if eyeparticle1:IsValid() then + eyeparticle1:Fire("kill", 0.001) + end + if eyeparticle2:IsValid() then + eyeparticle2:Fire("kill", 0.001) + end + if ply:GetPlayerClass() == "scout" then + ply:EmitSound("vo/mvm/norm/scout_mvm_painsevere0"..math.random(1,6)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "soldier" then + ply:EmitSound("vo/mvm/norm/soldier_mvm_painsevere0"..math.random(1,6)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "pyro" then + ply:EmitSound("vo/mvm/norm/pyro_mvm_painsevere0"..math.random(1,6)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "demoman" then + ply:EmitSound("vo/mvm/norm/demoman_mvm_painsevere0"..math.random(1,4)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "heavy" then + ply:EmitSound("vo/mvm/norm/heavy_mvm_painsevere0"..math.random(1,3)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "engineer" then + ply:EmitSound("vo/mvm/norm/engineer_mvm_painsevere0"..math.random(1,7)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "medic" then + ply:EmitSound("vo/mvm/norm/medic_mvm_painsevere0"..math.random(1,4)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "sniper" then + ply:EmitSound("vo/mvm/norm/sniper_mvm_painsevere0"..math.random(1,4)..".mp3", 95, 100, 1, CHAN_VOICE) + elseif ply:GetPlayerClass() == "spy" then + ply:EmitSound("vo/mvm/norm/spy_mvm_painsevere0"..math.random(1,5)..".mp3", 95, 100, 1, CHAN_VOICE) + end + end + ply:StopSound("BusterLoop") + if not ply:IsHL2() and ply:GetPlayerClass() == "sentrybuster" then + ply:EmitSound("MVM.SentryBusterExplode") + end + if not ply:IsHL2() and ply:GetInfoNum("tf_sentrybuster", 0) == 1 then + ply:EmitSound("MVM.SentryBusterExplode") + end + if ply:GetPlayerClass() == "giantheavyheater" and ply:GetPlayerClass() == "giantheavyshotgun" and ply:GetPlayerClass() == "giantsoldierrapidfire" and ply:GetPlayerClass() == "giantsoldiercharged" then + ply:EmitSound( "MVM.GiantCommonExplodes" ) -- Play the footsteps hunter is using + ply:EmitSound( "MVM.GiantCommonExplodes" ) -- Play the footsteps hunter is using + ply:PrecacheGibs() + ply:GibBreakClient( Vector(math.random(1,4), math.random(1,4), math.random(1,4)) ) + ply:GetRagdollEntity():Remove() + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(ply) and v:Alive() and not v:IsHL2() then + if v:GetPlayerClass() == "heavy" then + v:EmitSound("vo/heavy_mvm_giant_robot02.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "medic" then + v:EmitSound("vo/medic_mvm_giant_robot02.wav", 85, 100, 1, CHAN_REPLACE) + end + end + end + end + if not ply:IsHL2() and ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 1 then + ply:EmitSound( "MVM.GiantCommonExplodes" ) -- Play the footsteps hunter is using + ply:PrecacheGibs() + ply:GibBreakClient( Vector(math.random(1,4), math.random(1,4), math.random(1,4)) ) + ply:GetRagdollEntity():Remove() + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(ply) and v:Alive() and not v:IsHL2() then + if ply:GetPlayerClass() == "heavy" then + ply:EmitSound("vo/heavy_mvm_giant_robot02.wav", 85, 100, 1, CHAN_REPLACE) + elseif ply:GetPlayerClass() == "medic" then + ply:EmitSound("vo/medic_mvm_giant_robot02.wav", 85, 100, 1, CHAN_REPLACE) + end + end + end + end +end) + + + +hook.Remove("PlayerFootstep", "TA:Paint_Footsteps") + +local function CopyPoseParams(pEntityFrom, pEntityTo) + if (SERVER) then + for i = 0, pEntityFrom:GetNumPoseParameters() - 1 do + local sPose = pEntityFrom:GetPoseParameterName(i) + pEntityTo:SetPoseParameter(sPose, pEntityFrom:GetPoseParameter(sPose)) + end + else + for i = 0, pEntityFrom:GetNumPoseParameters() - 1 do + local flMin, flMax = pEntityFrom:GetPoseParameterRange(i) + local sPose = pEntityFrom:GetPoseParameterName(i) + pEntityTo:SetPoseParameter(sPose, math.Remap(pEntityFrom:GetPoseParameter(sPose), 0, 1, flMin, flMax)) + end + end +end +hook.Add("Think", "CanYouSetMovea_XParameterToThePlayers?", function() + if (math.random(1,3+(table.Count(player.GetAll())*0.4)) == 1) then + for k,pl in ipairs(player.GetAll()) do + if (pl.IsL4DZombie) then + pl:SetSaveValue("m_iClass",CLASS_ZOMBIE) + elseif (pl:Team() == TEAM_BLU and !pl.IsL4DZombie) then + pl:SetSaveValue("m_iClass",CLASS_COMBINE) + elseif (pl:Team() == TEAM_RED and !pl.IsL4DZombie) then + pl:SetSaveValue("m_iClass",CLASS_PLAYER) + else + pl:SetSaveValue("m_iClass",CLASS_HUMAN_MILITARY) + end + if (pl:WaterLevel() > 1) then + if (pl:IsOnFire()) then + pl:Extinguish() + end + end + end + end +end) + +concommand.Add( "tf_sentrybuster_explode", function( ply, cmd ) + + if (ply:GetPlayerClass() == "sentrybuster") then + ply:SetNoDraw(true) + ply:EmitSound("MVM.SentryBusterSpin") + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(ply) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used as a reference for the bone positioning + animent:SetModel( ply:GetModel() ) + animent:SetModelScale( ply:GetModelScale() ) + timer.Create("SetAnimPos", 0.01, 0, function() + if not animent:IsValid() then timer.Stop("SetAnimPos") return end + animent:SetPos( ply:GetPos() ) + animent:SetAngles( ply:GetAngles() ) + end ) + animent:SetNoDraw( false ) -- The ragdoll is the thing getting seen + animent:Spawn() + + animent:SetSequence( "sentry_buster_preexplode" ) -- If the sequence isn't valid, the sequence length is 0, so the timer takes care of things + animent:SetPlaybackRate( 1 ) + animent.AutomaticFrameAdvance = true + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetMoveType( MOVETYPE_FLYGRAVITY ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:PhysWake() + + function animent:Think() -- This makes the animation work + self:NextThink( CurTime() ) + return true + end + timer.Simple(2.5, function() + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", ply:GetPos(), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", ply:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(50,50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(-50,-50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(-50,50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(50,-50,25), ply:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(50,50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(-50,-50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(-50,50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(50,-50,25), ply:GetAngles()) + + if animent:IsValid() then + animent:Remove() + end + + ply:EmitSound("MvM.SentryBusterExplode") + ply:SetNoDraw(false) + + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + net.Start("DeActivateTauntCam") + net.Send(ply) + if ply:GetRagdollEntity():IsValid() then + ply:GetRagdollEntity():Remove() + end + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 800)) do + if !v:IsPlayer() and v:Health() >= 0 and not v:IsFriendly(ply) then + v:TakeDamage( v:Health(), ply, ply:GetActiveWeapon() ) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:Alive() and v:Nick() != ply:Nick() then + v:TakeDamage( v:Health(), ply, ply:GetActiveWeapon() ) + end + end + ply:TakeDamage( ply:Health(), ply, ply:GetActiveWeapon() ) + end) + end +end) + + +hook.Add( "DoAnimationEvent" , "AnimEventTest" , function( ply , event , data ) + if event == PLAYERANIMEVENT_ATTACK_GRENADE then + if data == 123 then + ply:AnimRestartGesture( GESTURE_SLOT_GRENADE, ACT_GMOD_GESTURE_ITEM_THROW, true ) + return ACT_INVALID + end + + if data == 321 then + ply:AnimRestartGesture( GESTURE_SLOT_GRENADE, ACT_GMOD_GESTURE_ITEM_DROP, true ) + return ACT_INVALID + end + end +end ) + +concommand.Add("merc_impulse101", function(ply) + if ply:GetPlayerClass() == "merc_dm" then + ply:Give("tf_weapon_pistol_merc") + ply:Give("tf_weapon_shotgun_merc") + ply:Give("tf_weapon_rocketlauncher_merc") + ply:Give("tf_weapon_rocketlauncher_rapidfire") + ply:Give("tf_weapon_nailgun_merc") + ply:Give("tf_weapon_revolver_merc") + ply:Give("tf_weapon_grenadelauncher_merc") + ply:Give("tf_weapon_smg_dm_merc") + ply:Give("tf_weapon_smg_merc") + ply:Give("tf_weapon_gatlinggun") + ply:Give("tf_weapon_supershotgun_merc") + ply:Give("tf_weapon_sniperrifle_merc") + ply:Give("tf_weapon_medigun_merc") + ply:Give("tf_weapon_flamethrower_merc") + ply:Give("tf_weapon_knife_merc") + ply:Give("tf_weapon_railgun_merc") + ply:Give("tf_weapon_minigun_merc") + ply:Give("tf_weapon_pda_engineer_destroy_merc") + ply:Give("tf_weapon_pda_engineer_build_merc") + ply:Give("tf_weapon_wrench_merc") + ply:Give("tf_weapon_scattergun_merc") + ply:Give("tf_weapon_pipebomblauncher_merc") + ply:GiveItem("TF_WEAPON_BUILDER") + ply:EmitSound("items/spawn_item.wav") + end +end) + +concommand.Add("tf_givegravitygun", function(ply) + if not ply:IsHL2() then + ply:Give("tf_weapon_physcannon") + ply:EmitSound("weapons/physcannon/physcannon_charge.wav") + end +end) + + + +concommand.Add("tf_givemegagravitygun", function(ply) + if not ply:IsHL2() then + ply:Give("tf_weapon_superphyscannon") + ply:EmitSound("weapons/physcannon/superphys_chargeup.wav") + end +end) + + +local function PlayerGiantBotSpawn( ply, mv ) + if (!IsValid(ply)) then return end + -- dun dun dun dun dun dun dun dun DO THE LOSKY ~ seamusmario + -- oh hell no boy, don't you be mentioning that leafer ~ future seamusmario + --[[ + if ply:GetModel() == "models/player/loskybasics/losky_pm.mdl" then + ply:EmitSound("vo/losky_respawn01.wav") + end]] + timer.Simple(0.4, function() + if ply:GetInfoNum("tf_lazyzombie", 0) == 1 then + if ply:GetPlayerClass() != "demoman" then + ply:SetModel("models/lazy_zombies_v2/"..ply:GetPlayerClass()..".mdl") + else + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + end + end + if GetConVar("tf_muselk_zombies"):GetBool() then + if ply:Team() == TEAM_RED then + ply:SetPlayerClass("engineer") + + ply:PrintMessage(HUD_PRINTCENTER, "You are now defending! You must find a place to hide! If the zombies team doesn't do it in the next 5 minutes, YOU WIN!") + + elseif ply:Team() == TEAM_NEUTRAL then + ply:SetTeam(TEAM_RED) + ply:SetPlayerClass("engineer") + + ply:PrintMessage(HUD_PRINTCENTER, "You are now defending! You must find a place to hide! If the zombies team doesn't do it in the next 5 minutes, YOU WIN!") + elseif ply:Team() == TEAM_BLU then + ply:GetWeapons()[1]:Remove() + ply:GetWeapons()[2]:Remove() + ply:SetPos(Vector(9086.43, 10060.49, -10786.25)) + ply:PrintMessage(HUD_PRINTCENTER, "You are now attacking! You must find the engineers and infect them! If your team doesn't do it in the next 5 minutes, YOU LOSE!") + timer.Simple(0.4, function() + if ply:GetPlayerClass() != "demoman" then + ply:SetModel("models/lazy_zombies_v2/"..ply:GetPlayerClass()..".mdl") + else + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + end + end) + end + end + end) + timer.Simple(0.3, function() + if (IsValid(ply)) then + if not ply:IsHL2() and ply:GetInfoNum("tf_sentrybuster", 0) == 1 then + if ply:GetPlayerClass() != "demoman" then ply:SetPlayerClass("demoman") end + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(ply) and v:Alive() and not v:IsHL2() then + if v:GetPlayerClass() == "heavy" then + v:EmitSound("vo/heavy_mvm_sentry_buster01.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "medic" then + v:EmitSound("vo/medic_mvm_sentry_buster01.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "soldier" then + v:EmitSound("vo/soldier_mvm_sentry_buster01.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "engineer" then + v:EmitSound("vo/engineer_mvm_sentry_buster01.wav", 85, 100, 1, CHAN_REPLACE) + end + end + end + for k,v in ipairs(player.GetAll()) do + v:EmitSound("Announcer.MVM_Sentry_Buster_Alert") + end + ply:EmitSound("MVM.SentryBusterIntro") + ply:EmitSound("BusterLoop") + ply:SetModel("models/bots/demo/bot_sentry_buster.mdl") + ply:SetHealth(3600) + ply:StripWeapon("tf_weapon_grenadelauncher") + ply:StripWeapon("tf_weapon_pipebomblauncher") + ply:SetModelScale(1.75) + ply:SetClassSpeed(400) + + timer.Create("SentryBusterIntroLoop", 4, 0, function() + if not ply:Alive() then timer.Stop("HHHSpeed2") return end + if ply:GetInfoNum("tf_sentrybuster", 0) == 0 then timer.Stop("HHHSpeed2") return end + ply:EmitSound("MVM.SentryBusterIntro") + end) + + timer.Create("SentryBusterExplodeNearSentry"..ply:EntIndex(), 0.1, 0, function() + if !ply:Alive() then timer.Stop("SentryBusterExplodeNearSentry"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_sentrybuster",0) != 1 then timer.Stop("SentryBusterExplodeNearSentry"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_sentrybuster",0) != 1 then return end + for _,building in pairs(ents.FindInSphere(ply:GetPos(), 80)) do + if building:GetClass() == "obj_sentrygun" then + ply:SetNoDraw(true) + ply:EmitSound("MVM.SentryBusterSpin") + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(ply) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used as a reference for the bone positioning + animent:SetModel( ply:GetModel() ) + animent:SetModelScale( ply:GetModelScale() ) + timer.Create("SetAnimPos", 0.01, 0, function() + if not animent:IsValid() then timer.Stop("SetAnimPos") return end + animent:SetPos( ply:GetPos() ) + animent:SetAngles( ply:GetAngles() ) + end ) + animent:SetNoDraw( false ) -- The ragdoll is the thing getting seen + animent:Spawn() + + animent:SetSequence( "sentry_buster_preexplode" ) -- If the sequence isn't valid, the sequence length is 0, so the timer takes care of things + animent:SetPlaybackRate( 1 ) + animent.AutomaticFrameAdvance = true + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetMoveType( MOVETYPE_FLYGRAVITY ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:PhysWake() + + function animent:Think() -- This makes the animation work + self:NextThink( CurTime() ) + return true + end + timer.Simple(2.5, function() + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", ply:GetPos(), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", ply:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(50,50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(-50,-50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(-50,50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(50,-50,25), ply:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(50,50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(-50,-50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(-50,50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(50,-50,25), ply:GetAngles()) + + if animent:IsValid() then + animent:Remove() + end + + ply:EmitSound("MvM.SentryBusterExplode") + ply:EmitSound("MvM.SentryBusterExplode") + ply:EmitSound("MvM.SentryBusterExplode") + ply:SetNoDraw(false) + + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + net.Start("DeActivateTauntCam") + net.Send(ply) + if ply:GetRagdollEntity():IsValid() then + ply:GetRagdollEntity():Remove() + end + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 800)) do + if !v:IsPlayer() and v:Health() >= 0 and not v:IsFriendly(ply) then + v:TakeDamage( v:Health(), ply, ply:GetActiveWeapon() ) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:Alive() and v:Nick() != ply:Nick() then + v:TakeDamage( v:Health(), ply, ply:GetActiveWeapon() ) + end + end + ply:TakeDamage( ply:Health(), ply, ply:GetActiveWeapon() ) + end) + timer.Stop("SentryBusterExplodeNearSentry"..ply:EntIndex()) + end + end + end) + timer.Create("SentryBusterExplodeOnDeath", 0.1, 0, function() + if !ply:Alive() then timer.Stop("SentryBusterExplodeOnDeath"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_sentrybuster",0) != 1 then timer.Stop("SentryBusterExplodeOnDeath"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_sentrybuster",0) != 1 then return end + if ply:Health() <= 30 then + ply:EmitSound("MVM.SentryBusterSpin") + timer.Simple(0.1, function() + ply:GodEnable() + ply:SetNoDraw(true) + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + local animent = ents.Create( 'base_gmodentity' ) -- The entity used as a reference for the bone positioning + animent:SetModel( ply:GetModel() ) + animent:SetModelScale( ply:GetModelScale() ) + timer.Create("SetAnimPos", 0.01, 0, function() + if not animent:IsValid() then timer.Stop("SetAnimPos") return end + animent:SetPos( ply:GetPos() ) + animent:SetAngles( ply:GetAngles() ) + end ) + animent:SetNoDraw( false ) -- The ragdoll is the thing getting seen + animent:Spawn() + + animent:SetSequence( "sentry_buster_preexplode" ) -- If the sequence isn't valid, the sequence length is 0, so the timer takes care of things + animent:SetPlaybackRate( 1 ) + animent.AutomaticFrameAdvance = true + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetMoveType( MOVETYPE_FLYGRAVITY ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:PhysWake() + + function animent:Think() -- This makes the animation work + self:NextThink( CurTime() - 5 ) + return true + end + timer.Simple(2, function() + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", ply:GetPos() + Vector(0,0,35), ply:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", ply:GetPos(), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", ply:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(50,50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(-50,-50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(-50,50,25), ply:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", ply:GetPos() + Vector(50,-50,25), ply:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(50,50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(-50,-50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(-50,50,25), ply:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", ply:GetPos() + Vector(50,-50,25), ply:GetAngles()) + + if animent:IsValid() then + animent:Remove() + end + + ply:EmitSound("MvM.SentryBusterExplode") + ply:SetNoDraw(false) + ply:GodDisable() + + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + net.Start("DeActivateTauntCam") + if ply:GetRagdollEntity():IsValid() then + ply:GetRagdollEntity():Remove() + end + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 800)) do + if v:IsNPC() and not v:IsFriendly(ply) then + v:TakeDamage( v:Health(), ply, ply:GetActiveWeapon() ) + elseif v:IsPlayer() and not v:IsFriendly(ply) and ply:Alive() then + v:TakeDamage( v:Health(), ply, ply:GetActiveWeapon() ) + end + end + ply:Kill() + end) + end) + timer.Stop("SentryBusterExplodeOnDeath") + end + end) + end + if not ply:IsHL2() and ply:GetInfoNum("tf_robot", 0) == 1 then + local ID = ply:LookupAttachment( "eye_1" ) + local Attachment = ply:GetAttachment( ID ) + if (Attachment == nil) then return end + + eyeparticle1 = ents.Create( "info_particle_system" ) + eyeparticle1:SetPos( Attachment.Pos ) + eyeparticle1:SetAngles( Attachment.Ang ) + eyeparticle1:SetName("eyeparticle1") + eyeparticle1:SetOwner(ply) + ply:DeleteOnRemove(eyeparticle1) + + PrecacheParticleSystem("bot_eye_glow") + eyeparticle1:SetKeyValue( "effect_name", "bot_eye_glow" ) + eyeparticle1:SetKeyValue( "start_active", "1") + + local colorcontrol = ents.Create( "info_particle_system" ) + if (ply.Difficulty == 3) then + colorcontrol:SetPos( Vector(255,180,36) ) + else + if ply:Team() == TEAM_RED then + colorcontrol:SetPos( Vector(204,0,0) ) + elseif ply:Team() == TEAM_BLU then + colorcontrol:SetPos( Vector(51,255,255) ) + end + end + eyeparticle1:DeleteOnRemove(colorcontrol) + colorcontrol:SetKeyValue( "effect_name", "bot_eye_glow" ) + --colorcontrol:SetKeyValue( "globalname", "colorcontrol_".. eyeparticle1:EntIndex()) + colorcontrol:SetName("colorcontrol_".. eyeparticle1:EntIndex()) + colorcontrol:Spawn() + + eyeparticle1:SetParent(ply) + eyeparticle1:Fire("setparentattachment", "eye_1", 0.01) + eyeparticle1:SetKeyValue( "cpoint1", "colorcontrol_".. eyeparticle1:EntIndex() ) --the color is controlled by the position of this entity - + --if the colorcontroller's position is 255, 255, 255, + --the color of the particle becomes white (255 255 255) + eyeparticle1:Spawn() + eyeparticle1:Activate() + --now for eye two + local ID = ply:LookupAttachment( "eye_2" ) + local Attachment = ply:GetAttachment( ID ) + if (Attachment != nil) then + eyeparticle2 = ents.Create( "info_particle_system" ) + eyeparticle2:SetPos( Attachment.Pos ) + eyeparticle2:SetAngles( Attachment.Ang ) + eyeparticle1:DeleteOnRemove(eyeparticle2) + eyeparticle2:SetKeyValue( "effect_name", "bot_eye_glow" ) + eyeparticle2:SetKeyValue( "start_active", "1") + eyeparticle2:SetParent(ply) + eyeparticle2:SetName("eyeparticle2") + eyeparticle2:Fire("setparentattachment", "eye_2", 0.01) + eyeparticle2:SetKeyValue( "cpoint1", "colorcontrol_".. eyeparticle1:EntIndex() ) + eyeparticle2:Spawn() + eyeparticle2:Activate() + + end + timer.Create("KillParticlesOnDeath", 0.001, 0, function() + if ply:Alive() then + return true + else + for k,v in pairs(ents.FindByName("eyeparticle1")) do + if v:GetOwner() == ply then + v:Remove() + end + end + timer.Stop("KillParticlesOnDeath") + return false + end + end) + end + + if not ply:IsHL2() and ply:GetInfoNum("tf_giant_robot", 0) == 1 then + + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(ply) and v:Alive() and not v:IsHL2() then + if v:GetPlayerClass() == "heavy" then + v:EmitSound("vo/heavy_mvm_giant_robot04.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "medic" then + v:EmitSound("vo/medic_mvm_giant_robot01.wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "soldier" then + v:EmitSound("vo/soldier_mvm_giant_robot0"..math.random(1,2)..".wav", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "engineer" then + v:EmitSound("vo/engineer_mvm_giant_robot0"..math.random(1,2)..".wav", 85, 100, 1, CHAN_REPLACE) + end + end + end + if ply:GetPlayerClass() == "scout" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + end) + ply:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(1600) + ply:SetMaxHealth(1600) + elseif ply:GetPlayerClass() == "soldier" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + end) + ply:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(3600) + ply:SetMaxHealth(3600) + elseif ply:GetPlayerClass() == "demoman" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:SetModel("models/bots/demo_boss/bot_demo_boss.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(3600) + ply:SetMaxHealth(3600) + elseif ply:GetPlayerClass() == "heavy" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:EmitSound("MVM.GiantHeavyEntrance") + ply:SetModel("models/bots/heavy_boss/bot_heavy_boss.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(5000) + elseif ply:GetPlayerClass() == "pyro" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:SetModel("models/bots/pyro_boss/bot_pyro_boss.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(3600) + ply:SetMaxHealth(3600) + elseif ply:GetPlayerClass() == "medic" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:SetModel("models/bots/medic/bot_medic.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(3600) + ply:SetMaxHealth(3600) + elseif ply:GetPlayerClass() == "engineer" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:SetModel("models/bots/engineer/bot_engineer.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(1600) + ply:SetMaxHealth(1600) + elseif ply:GetPlayerClass() == "sniper" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:SetModel("models/bots/sniper/bot_sniper.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(1800) + ply:SetMaxHealth(1800) + elseif ply:GetPlayerClass() == "spy" then + timer.Create("GiantRobotSpeed"..ply:EntIndex(), 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + if ply:GetInfoNum("tf_giant_robot", 0) == 0 then timer.Stop("GiantRobotSpeed"..ply:EntIndex()) return end + //ply:SetPoseParameter("move_x", 1) + end) + ply:SetModel("models/bots/spy/bot_spy.mdl") + ply:SetModelScale(1.75) + ply:SetHealth(1200) + ply:SetMaxHealth(1200) + end + end + if ply:GetInfoNum("tf_zombie", 0) == 1 then + if ply:GetPlayerClass() == "scout" then + ply:SetModel("models/lazy_zombies_v2/scout.mdl") + ply:StripWeapon("tf_weapon_scattergun") + ply:StripWeapon("tf_weapon_pistol_scout") + elseif ply:GetPlayerClass() == "gmodplayer" then + timer.Create("GiantRobotSpeed2", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed2") return end + if ply:GetInfoNum("tf_zombie", 0) == 0 then timer.Stop("GiantRobotSpeed2") return end + ply:SetWalkSpeed(65) + ply:SetRunSpeed(105) + end) + ply:SetModel( table.Random(zombiemodel) ) + ply:StripWeapons() + ply:Give("weapon_fists") + elseif ply:GetPlayerClass() == "soldier" then + ply:SetModel("models/lazy_zombies_v2/soldier.mdl") + ply:StripWeapon("tf_weapon_rocketlauncher") + ply:StripWeapon("tf_weapon_shotgun_soldier") + elseif ply:GetPlayerClass() == "demoman" then + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + ply:StripWeapon("tf_weapon_grenadelauncher") + ply:StripWeapon("tf_weapon_pipebomblauncher") + elseif ply:GetPlayerClass() == "heavy" then + ply:SetModel("models/lazy_zombies_v2/heavy.mdl") + ply:StripWeapon("tf_weapon_minigun") + ply:StripWeapon("tf_weapon_shotgun_heavy") + elseif ply:GetPlayerClass() == "pyro" then + ply:SetModel("models/lazy_zombies_v2/pyro.mdl") + ply:StripWeapon("tf_weapon_flamethrower") + ply:StripWeapon("tf_weapon_shotgun_pyro") + elseif ply:GetPlayerClass() == "medic" then + ply:SetModel("models/lazy_zombies_v2/medic.mdl") + ply:StripWeapon("tf_weapon_syringegun") + ply:StripWeapon("tf_weapon_medigun") + elseif ply:GetPlayerClass() == "engineer" then + ply:SetModel("models/lazy_zombies_v2/engineer.mdl") + ply:StripWeapon("tf_weapon_shotgun_primary") + ply:StripWeapon("tf_weapon_pistol") + elseif ply:GetPlayerClass() == "sniper" then + ply:SetModel("models/lazy_zombies_v2/sniper.mdl") + ply:StripWeapon("tf_weapon_sniperrifle") + ply:StripWeapon("tf_weapon_smg") + elseif ply:GetPlayerClass() == "spy" then + ply:SetModel("models/lazy_zombies_v2/spy.mdl") + ply:StripWeapon("tf_weapon_revolver") + ply:StripWeapon("tf_weapon_builder") + ply:StripWeapon("tf_weapon_pda_spy") + end + end + if not ply:IsHL2() and ply:GetInfoNum("tf_voodoo", 0) == 1 then + if ply:GetPlayerClass() == "scout" then + ply:SetModel("models/lazy_zombies_v2/scout.mdl") + elseif ply:GetPlayerClass() == "soldier" then + ply:SetModel("models/lazy_zombies_v2/soldier.mdl") + elseif ply:GetPlayerClass() == "demoman" then + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + elseif ply:GetPlayerClass() == "heavy" then + ply:SetModel("models/lazy_zombies_v2/heavy.mdl") + elseif ply:GetPlayerClass() == "pyro" then + ply:SetModel("models/lazy_zombies_v2/pyro.mdl") + elseif ply:GetPlayerClass() == "medic" then + ply:SetModel("models/lazy_zombies_v2/medic.mdl") + elseif ply:GetPlayerClass() == "engineer" then + ply:SetModel("models/lazy_zombies_v2/engineer.mdl") + ply:StripWeapon("tf_weapon_pistol") + elseif ply:GetPlayerClass() == "sniper" then + ply:SetModel("models/lazy_zombies_v2/sniper.mdl") + elseif ply:GetPlayerClass() == "spy" then + ply:SetModel("models/lazy_zombies_v2/spy.mdl") + end + end + if not ply:IsHL2() and ply:GetInfoNum("tf_bigzombie", 0) == 1 then + ply:SetModelScale(1.85) + if ply:GetPlayerClass() == "scout" then + ply:SetModel("models/lazy_zombies_v2/scout.mdl") + ply:StripWeapon("tf_weapon_scattergun") + ply:StripWeapon("tf_weapon_pistol_scout") + elseif ply:GetPlayerClass() == "soldier" then + ply:SetModel("models/lazy_zombies_v2/soldier.mdl") + ply:StripWeapon("tf_weapon_rocketlauncher") + ply:StripWeapon("tf_weapon_shotgun_soldier") + elseif ply:GetPlayerClass() == "demoman" then + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + ply:StripWeapon("tf_weapon_grenadelauncher") + ply:StripWeapon("tf_weapon_pipebomblauncher") + elseif ply:GetPlayerClass() == "heavy" then + ply:SetModel("models/lazy_zombies_v2/heavy.mdl") + ply:StripWeapon("tf_weapon_minigun") + ply:StripWeapon("tf_weapon_shotgun_heavy") + elseif ply:GetPlayerClass() == "pyro" then + ply:SetModel("models/lazy_zombies_v2/pyro.mdl") + ply:StripWeapon("tf_weapon_flamethrower") + ply:StripWeapon("tf_weapon_shotgun_pyro") + elseif ply:GetPlayerClass() == "medic" then + ply:SetModel("models/lazy_zombies_v2/medic.mdl") + ply:StripWeapon("tf_weapon_syringegun") + ply:StripWeapon("tf_weapon_medigun") + elseif ply:GetPlayerClass() == "engineer" then + ply:SetModel("models/lazy_zombies_v2/engineer.mdl") + ply:StripWeapon("tf_weapon_shotgun_primary") + ply:StripWeapon("tf_weapon_pistol") + elseif ply:GetPlayerClass() == "sniper" then + ply:SetModel("models/lazy_zombies_v2/sniper.mdl") + ply:StripWeapon("tf_weapon_sniperrifle") + ply:StripWeapon("tf_weapon_smg") + elseif ply:GetPlayerClass() == "spy" then + ply:SetModel("models/lazy_zombies_v2/spy.mdl") + ply:StripWeapon("tf_weapon_revolver") + ply:StripWeapon("tf_weapon_builder") + ply:StripWeapon("tf_weapon_pda_spy") + end + end + + if not ply:IsHL2() and ply:GetInfoNum("jakey_antlionfbii", 0) == 1 then + if ply:GetPlayerClass() != "heavy" then ply:SetPlayerClass("heavy") end + ply:SetModel("models/player/antlion_fbi/antlion_guard.mdl") + ply:SetHealth(5200) + ply:SetMaxHealth(5000) + ply:StripWeapon("tf_weapon_minigun") + ply:StripWeapon("tf_weapon_shotgun_hwg") + ply:SetWalkSpeed(600) + ply:SetRunSpeed(600) + end + if ply:GetInfoNum("dylan_rageheavy", 0) == 1 then + if !ply:IsAdmin() then return end + if ply:GetPlayerClass() != "heavy" then ply:SetPlayerClass("heavy") end + ply:SetHealth(1000000000000) + ply:SetMaxHealth(1000000000000) + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("dylan_rageheavy", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(1250) + ply:SetMaxSpeed(1250) + ply:SetRunSpeed(1250) + end) + end + if ply:GetInfoNum("hahahahahahahahaowneronly_ragespy", 0) == 1 then + if !ply:IsAdmin() then return end + if ply:GetPlayerClass() != "spy" then ply:SetPlayerClass("spy") end + ply:SetHealth(1000000000000) + ply:SetMaxHealth(1000000000000) + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("hahahahahahahahaowneronly_ragespy", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(1250) + ply:SetMaxSpeed(1250) + ply:SetRunSpeed(1250) + end) + end + + if not ply:IsHL2() and ply:GetPlayerClass() == "sniper" and ply:GetInfoNum("tf_skeleton", 0) == 1 then + ply:SetModel("models/bots/skeleton_sniper/skeleton_sniper.mdl") + elseif not ply:IsHL2() and ply:GetPlayerClass() == "heavy" and ply:GetInfoNum("tf_yeti", 0) == 1 then + ply:SetModel("models/player/yeti.mdl") + elseif not ply:IsHL2() and ply:GetPlayerClass() == "demoman" and ply:GetInfoNum("tf_hhh", 0) == 1 then + ply:SetModel("models/bots/small_headless_hatman.mdl") + elseif not ply:IsHL2() and ply:GetPlayerClass() == "heavy" and ply:GetInfoNum("civ2_bootleg_charger", 0) == 1 then + ply:SetModel("models/infected/not_a_charger.mdl") + end + if not ply:IsHL2() and ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 1 then + ply:SetModelScale(1.75) + if ply:GetPlayerClass() == "scout" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(500) + ply:SetMaxSpeed(500) + ply:SetRunSpeed(500) + end) + ply:SetModel("models/lazy_zombies_v2/scout.mdl") + elseif ply:GetPlayerClass() == "soldier" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/soldier.mdl") + elseif ply:GetPlayerClass() == "demoman" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + elseif ply:GetPlayerClass() == "heavy" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/heavy.mdl") + elseif ply:GetPlayerClass() == "pyro" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/pyro.mdl") + elseif ply:GetPlayerClass() == "medic" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/medic.mdl") + elseif ply:GetPlayerClass() == "engineer" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/engineer.mdl") + elseif ply:GetPlayerClass() == "sniper" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/sniper.mdl") + elseif ply:GetPlayerClass() == "spy" then + timer.Create("GiantRobotSpeed", 0.01, 0, function() + if not ply:Alive() then timer.Stop("GiantRobotSpeed") return end + if ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 0 then timer.Stop("GiantRobotSpeed") return end + ply:SetWalkSpeed(150) + ply:SetMaxSpeed(150) + ply:SetRunSpeed(150) + end) + ply:SetModel("models/lazy_zombies_v2/spy.mdl") + end + end + if not ply:IsHL2() and ply:GetInfoNum("tf_mvm_voodoo", 0) == 1 then + if ply:GetPlayerClass() == "scout" then + ply:SetModel("models/lazy_zombies_v2/scout.mdl") + elseif ply:GetPlayerClass() == "soldier" then + ply:SetModel("models/lazy_zombies_v2/soldier.mdl") + elseif ply:GetPlayerClass() == "demoman" then + ply:SetModel("models/lazy_zombies_v2/demo.mdl") + elseif ply:GetPlayerClass() == "heavy" then + ply:SetModel("models/lazy_zombies_v2/heavy.mdl") + elseif ply:GetPlayerClass() == "pyro" then + ply:SetModel("models/lazy_zombies_v2/pyro.mdl") + elseif ply:GetPlayerClass() == "medic" then + ply:SetModel("models/lazy_zombies_v2/medic.mdl") + elseif ply:GetPlayerClass() == "engineer" then + ply:SetModel("models/lazy_zombies_v2/engineer.mdl") + elseif ply:GetPlayerClass() == "sniper" then + ply:SetModel("models/lazy_zombies_v2/sniper.mdl") + elseif ply:GetPlayerClass() == "spy" then + ply:SetModel("models/lazy_zombies_v2/spy.mdl") + end + end + end + end) +end + +concommand.Add("check_save_table_for_entity", function(ply) + PrintTable(ply:GetEyeTrace().Entity:GetSaveTable()) +end) +hook.Add( "OnEntityWaterLevelChanged", "UnderwaterAmbience", function(ent,old,new) + if (new > 0 and !ent:IsFlagSet(FL_INWATER)) then + if (ent:IsPlayer()) then + ent:EmitSound("Physics.WaterSplash") + end + end + if (new > 2) then + if (ent:IsPlayer()) then + ent:SendLua('LocalPlayer():StopSound("Player.AmbientUnderWater")') + ent:SetDSP(14) + ent:SendLua('LocalPlayer():EmitSound("Player.AmbientUnderWater")') + timer.Create("Drown"..ent:EntIndex(), 12, 1, function() + if (ent:WaterLevel() > 2 and !ent:HasGodMode()) then + ent.IsDrowning = true + ent:EmitSound("Player.DrownContinue") + ent:TakeDamage(8) + ent:ScreenFade( SCREENFADE.IN, Color( 0, 0, 100, 128 ), 1, 0 ) + timer.Create("DrownContinue"..ent:EntIndex(), 1, 0, function() + if (!ent:Alive()) then + ent.IsDrowning = false + end + ent:TakeDamage(8) + ent:EmitSound("Player.DrownContinue") + ent:ScreenFade( SCREENFADE.IN, Color( 0, 0, 100, 128 ), 1, 0 ) + end) + end + end) + end + else + if (ent:IsPlayer()) then + if (new < 3) then + if (ent.IsDrowning) then + timer.Stop("Drown"..ent:EntIndex()) + timer.Stop("DrownContinue"..ent:EntIndex()) + ent:SetHealth(ent:Health() + ent:GetMaxHealth() * 0.5) + ent:EmitSound("Player.DrownStart") + ent.IsDrowning = false + end + ParticleEffectAttach("water_playeremerge", PATTACH_ABSORIGIN_FOLLOW, ent, 0) + end + ent:SetDSP(0) + ent:SendLua('LocalPlayer():StopSound("Player.AmbientUnderWater")') + end + end +end) +hook.Add( "PlayerSpawn", "PlayerGiantRoBotSpawn", PlayerGiantBotSpawn) + + +concommand.Add( "random_team", function( ply, cmd, args ) + + local nDiffBetweenTeams = 0; + local m_iLightestTeam = 0; + local m_iHeaviestTeam = 0; + local iMostPlayers = 0; + local iLeastPlayers = game.MaxPlayers() + 1; + local i = 1; + for k,v in ipairs(team.GetAllTeams()) do + local iNumPlayers = team.NumPlayers(v); + + if ( iNumPlayers < iLeastPlayers ) then + iLeastPlayers = iNumPlayers; + m_iLightestTeam = k; + end + + if ( iNumPlayers > iMostPlayers ) then + iMostPlayers = iNumPlayers; + m_iHeaviestTeam = k; + end + end + + nDiffBetweenTeams = ( iMostPlayers - iLeastPlayers ); + if (team.NumPlayers(TEAM_RED) > team.NumPlayers(TEAM_BLU)) then + ply:SetTeam(TEAM_BLU) + elseif (team.NumPlayers(TEAM_RED) < team.NumPlayers(TEAM_BLU)) then + ply:SetTeam(TEAM_RED) + else + ply:SetTeam(table.Random({TEAM_RED,TEAM_BLU})) + end + if ply:Alive() and ply:Team() != TEAM_SPECTATOR then ply:Kill() end + +end) +concommand.Add( "changeteam", function( pl, cmd, args ) + --if ( tonumber( args[ 1 ] ) >= 5 and args[ 1 ] ~= 1002 ) then return end + if ( tonumber( args[ 1 ] ) == 0 or tonumber( args[ 1 ] ) < 0 or tonumber( args[ 1 ] ) > TEAM_FRIENDLY) then pl:ChatPrint("Invalid Team!") return end + if ( !GetConVar("tf_competitive"):GetBool() and pl:Team() == tonumber( args[ 1 ] ) ) then pl:PrintMessage(HUD_PRINTTALK,"You are already in this team!") return false end + if ( GetConVar("tf_competitive"):GetBool() and tonumber( args[ 1 ] ) == 4 ) then pl:ChatPrint("Competitive mode is on!") return end + if ( string.find(game.GetMap(), "mvm_") and tonumber( args[ 1 ] ) == 6 and !pl:IsAdmin() ) then pl:ChatPrint("Friendly Team is disabled!") return end + if ( string.find(game.GetMap(), "mvm_") and !pl:IsAdmin() and tonumber( args[ 1 ] ) == 5 and !pl:IsAdmin() ) then pl:ChatPrint("Neutral Team is disabled!") return end + if ( GetConVar("tf_competitive"):GetBool() and tonumber( args[ 1 ] ) == 6 and !pl:IsAdmin() ) then pl:ChatPrint("Friendly Team is disabled!") return end + if ( GetConVar("tf_competitive"):GetBool() and tonumber( args[ 1 ] ) == 5 and !pl:IsAdmin() ) then pl:ChatPrint("Neutral Team is disabled!") return end + if ( GetConVar("tf_competitive"):GetBool() and tonumber( args[ 1 ] ) == 4 and !pl:IsAdmin() ) then pl:ChatPrint("Green Team is disabled!") return end + if ( GetConVar("tf_competitive"):GetBool() and tonumber( args[ 1 ] ) == 3 and !pl:IsAdmin() ) then pl:ChatPrint("Yellow Team is disabled!") return end + + if ( GetConVar("tf_competitive"):GetBool() ) then + local theteam = tonumber( args[ 1 ] ) + local nDiffBetweenTeams = 0; + local m_iLightestTeam = 0; + local m_iHeaviestTeam = 0; + local iMostPlayers = 0; + local iLeastPlayers = game.MaxPlayers() + 1; + local i = 1; + for k,v in ipairs(team.GetAllTeams()) do + local iNumPlayers = team.NumPlayers(v); + + if ( iNumPlayers < iLeastPlayers ) then + iLeastPlayers = iNumPlayers; + m_iLightestTeam = k; + end + + if ( iNumPlayers > iMostPlayers ) then + iMostPlayers = iNumPlayers; + m_iHeaviestTeam = k; + end + end + + nDiffBetweenTeams = ( iMostPlayers - iLeastPlayers ); + if (team.NumPlayers(TEAM_RED) > team.NumPlayers(TEAM_BLU) and theteam == TEAM_RED) then + pl:PrintMessage(HUD_PRINTTALK,"The team is full. Press the dot key to change teams again.") + return false + elseif (team.NumPlayers(TEAM_BLU) < team.NumPlayers(TEAM_) and theteam == 2) then + pl:PrintMessage(HUD_PRINTTALK,"The team is full. Press the dot key to change teams again.") + return false + else + if (pl:Team() == theteam) then + pl:PrintMessage(HUD_PRINTTALK,"You are already in this team!") + return false + else + pl:SetTeam( tonumber( args[ 1 ] ) ) + end + end + else + pl:SetTeam( tonumber( args[ 1 ] ) ) + end + pl:ConCommand("tf_changeclass") + timer.Simple(0.3, function() if !IsValid(pl) then return end PrintMessage(HUD_PRINTTALK, 'Player '.. pl:Nick() .. ' joined team '.. team.GetName(pl:Team()) ) end) + if pl:Alive() and pl:Team() != TEAM_SPECTATOR then pl:Kill() end + if pl:Alive() and pl:Team() == TEAM_SPECTATOR then pl:Spawn() end +end ) + + +local SpawnableItems = { + "item_ammopack_small", + "item_ammopack_medium", + "item_ammopack_full", + "item_healthkit_small", + "item_healthkit_medium", + "item_healthkit_full", + "item_duck", +} + +hook.Add("InitPostEntity", "TF_InitSpawnables", function() + local base = scripted_ents.GetStored("item_base") + if not base or not base.t or not base.t.SpawnFunction then return end + + for _,v in ipairs(SpawnableItems) do + local ent = scripted_ents.GetStored(v) + if ent and ent.t then + ent.t.SpawnFunction = base.t.SpawnFunction + end + end +end) +local function GetFirstObserverPoint() + local tbl = {} + for k,v in ipairs(ents.FindByClass("info_observer_point")) do + if (IsValid(v)) then + table.insert(tbl, v) + end + end + return table.Random(tbl) +end +function GM:PlayerInitialSpawn(ply) + if (!ply:IsBot()) then + ply:ConCommand("tf_merge_loadout_ask") + ply:SetTeam(TEAM_SPECTATOR) + ply:Spectate(OBS_MODE_IN_EYE) + if (GetFirstObserverPoint() != nil) then + ply:SpectateEntity(GetFirstObserverPoint()) + end + else + + local nDiffBetweenTeams = 0; + local m_iLightestTeam = 0; + local m_iHeaviestTeam = 0; + local iMostPlayers = 0; + local iLeastPlayers = game.MaxPlayers() + 1; + local i = 1; + for k,v in ipairs(team.GetAllTeams()) do + local iNumPlayers = team.NumPlayers(v); + + if ( iNumPlayers < iLeastPlayers ) then + iLeastPlayers = iNumPlayers; + m_iLightestTeam = k; + end + + if ( iNumPlayers > iMostPlayers ) then + iMostPlayers = iNumPlayers; + m_iHeaviestTeam = k; + end + end + + nDiffBetweenTeams = ( iMostPlayers - iLeastPlayers ); + if (team.NumPlayers(TEAM_RED) > team.NumPlayers(TEAM_BLU)) then + ply:SetTeam(TEAM_BLU) + elseif (team.NumPlayers(TEAM_RED) < team.NumPlayers(TEAM_BLU)) then + ply:SetTeam(TEAM_RED) + else + ply:SetTeam(table.Random({TEAM_RED,TEAM_BLU})) + end + + end + -- Wait until InitPostEntity has been called + if not self.PostEntityDone then + timer.Simple(0.05, function() self:PlayerInitialSpawn(ply) end) + return + end + + -- Msg("PlayerInitialSpawn : "..ply:GetName().." "..tostring(self.Landmark).."\n") + if self.Landmark then--and self.Landmark:IsValidMap() then + --self.Landmark:LoadPlayerData(ply) + end +end + +function GM:OnPlayerChangedTeam(ply, oldteam, newteam) + if newteam == TEAM_SPECTATOR then + local Pos = ply:EyePos() + ply:Spawn() + ply:SetPos( Pos ) + elseif oldteam == TEAM_SPECTATOR then + ply:Spawn() + end + + PrintMessage(HUD_PRINTTALK, Format("%s joined '%s'", ply:Nick(), team.GetName(newteam))) + + self:ClearDominations(ply) + self:UpdateEntityRelationship(ply) +end + +local function CanSpawn(ply) if (ply:Team() == TEAM_SPECTATOR && !ply:IsAdmin()) or GetConVar("tf_competitive"):GetBool() && !ply:IsAdmin() then return false end return true end + +function GM:CanPlayerSuicide(ply) + if ply:Team() == TEAM_SPECTATOR then return false end + return true +end + +function GM:PlayerSpawnSWEP(ply) + return CanSpawn(ply) +end +hook.Add("CanArmDupe","ArmDupe?",function(ply) + return CanSpawn(ply) +end) + +function GM:PlayerSpawnVehicle(ply) + return CanSpawn(ply) +end + +function GM:PlayerSpawnNPC(ply) + return CanSpawn(ply) +end + +function GM:PlayerSpawnSENT(ply) + return CanSpawn(ply) +end + +function GM:PlayerSpawnObject(ply) + return CanSpawn(ply) +end + +function GM:PlayerSpawnProp(ply) + return CanSpawn(ply) +end + +function GM:PlayerSpawnRagdoll(ply) + return CanSpawn(ply) +end + +function GM:PlayerSpawnEffect(ply) + return CanSpawn(ply) +end + +function RandomWeapon(ply, wepslot) + local weps = tf_items.ReturnItems() + local validweapons = {} + for k, v in pairs(weps) do + if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and !string.StartWith(v["name"], "Australium") and v["craft_class"] == "weapon" then + PrintTable(v) + table.insert(validweapons, v["name"]) + end + end + + local wep = table.Random(validweapons) + + ply:PrintMessage(HUD_PRINTTALK, "You were given " .. wep .. "!") + ply:EquipInLoadout(wep) +end + +-- by hl2 campaign https:--github.com/daunknownfox2010/half-life-2-campaign/blob/master/gamemode/init.lua but edited +function GM:EntityKeyValue( ent, key, value ) + + if ( ( ent:GetClass() == "trigger_changelevel" ) && ( key == "map" ) ) then + + ent.map = value + + end + + if ( ( ent:GetClass() == "npc_combine_s" ) && ( key == "additionalequipment" ) && ( value == "weapon_shotgun" ) ) then + + ent:SetSkin( 1 ) + + end + +end + +concommand.Add("changelevel2", function(ply,com,arg) + if ply:IsValid() then return end --only let server console access this command + RunConsoleCommand("changelevel", arg[1]) +end) + + +if ( file.Exists( "tf/gamemode/maps/"..game.GetMap()..".lua", "LUA" ) ) then + + include( "maps/"..game.GetMap()..".lua" ) + +end + +-- Called by GoToNextLevel +function GM:GrabAndSwitch() + + changingLevel = true + + game.ConsoleCommand( "changelevel "..NEXT_MAP.."\n" ) + +end + + +hook.Add( "PlayerButtonDown", "PlayerButtonDownTF", function( pl, key ) + if key == KEY_G then + if (pl:GetPlayerClass() == "sentrybuster") then + pl:ConCommand("tf_sentrybuster_explode") + else + for k,v in ipairs(ents.FindInSphere(pl:GetPos(), 300)) do + if (v:IsPlayer() and v:GetNWBool("Congaing") and !pl:GetNWBool("Congaing",false)) then + pl:ConCommand("tf_taunt_conga_start") + return + elseif (v:IsPlayer() and v:GetNWBool("Russian") and !pl:GetNWBool("Russian",false)) then + pl:ConCommand("tf_taunt_russian_start") + return + end + end + timer.Simple(0.05, function() + + if (pl:GetNWBool("Congaing",false)) then + pl:ConCommand("tf_taunt_conga_stop") + return + end + if (pl:GetNWBool("Russian",false)) then + pl:ConCommand("tf_taunt_russian_stop") + return + end + + if (pl:GetActiveWeapon():GetClass() == "weapon_physcannon") then + if (pl:GetPlayerClass() == "scout") then + pl:ConCommand("tf_taunt_come_and_get_me") + else + pl:ConCommand("tf_taunt_laugh") + end + elseif (pl:GetActiveWeapon():GetClass() == "weapon_physgun") then + pl:ConCommand("tf_taunt_directors_vision") + else + local date = os.date("%b",os.time()) + if (date == "Oct" and math.random(1,2) == 1) then + pl:ConCommand("tf_taunt_thriller") + else + pl:ConCommand("tf_taunt "..pl:GetActiveWeapon():GetSlot() + 1) + end + end + --print("taunt") + --print(pl:GetWeapon(pl:GetActiveWeapon():GetClass()):GetSlot() + 1) + + end) + end + end + if key == KEY_SPACE then + if (!pl:Alive() and pl:GetObserverMode() != OBS_MODE_DEATHCAM and pl:Team() != TEAM_SPECTATOR and !pl.IsSpectating) then + pl:SetObserverMode(OBS_MODE_CHASE) + pl:ConCommand("tf_spectate_respawn") + end + end + if key == KEY_H and GetConVar("tf_grapplinghook_enable"):GetBool() then + pl:SelectWeapon("tf_weapon_grapplinghook") + timer.Simple(0.1, function() + if (pl:GetActiveWeapon():GetClass() == "tf_weapon_grapplinghook") then + pl:ConCommand("+attack") + end + end) + end + if key == KEY_Z then + pl:ConCommand("voice_menu_1") + end + if pl:GetPlayerClass() == "fastzombie" then + if key == KEY_SPACE and pl:OnGround() then + pl:EmitSound("NPC_FastZombie.Scream") + pl:SetJumpPower(600) + end + end + if key == KEY_X then + pl:ConCommand("voice_menu_2") + end + if key == KEY_L then + pl:ConCommand("gmod_undo") + end + if key == KEY_C then + pl:ConCommand("voice_menu_3") + end + if key == KEY_COMMA then + pl:ConCommand("tf_changeclass") + end + if key == KEY_M then + pl:ConCommand("hud_showloadout 1") + end + if key == KEY_N then + pl:ConCommand("gm_showspare1") + end + if key == KEY_PERIOD then + pl:ConCommand("tf_changeteam") + end + +end) + +hook.Add( "PlayerButtonUp", "PlayerButtonUpTF", function( pl, key ) + if key == KEY_H and GetConVar("tf_grapplinghook_enable"):GetBool() then + if (pl:GetActiveWeapon():GetClass() == "tf_weapon_grapplinghook") then + pl:GetActiveWeapon():EndAttack(true) + end + pl:ConCommand("-attack") + pl:ConCommand("lastinv") + pl:StopSound("Grappling") + end +end) + + +concommand.Add("changeclass", function(pl, cmd, args) + if SERVER then + if pl:Team()==TEAM_SPECTATOR then return end + if pl:GetObserverMode() ~= OBS_MODE_NONE then pl:Spectate(OBS_MODE_NONE) end + if (!pl:Alive()) then + timer.Simple(0.1, function() + pl:Spawn() + end) + end + if pl:Alive() and GetConVar("tf_kill_on_change_class"):GetInt() ~= 0 then pl:Kill() end + --if GetConVar("tf_kill_on_change_class"):GetInt() ~= 0 then pl:SetPlayerClass("gmodplayer") end + pl:SetPlayerClass(args[1]) + end +end, function() return GAMEMODE.PlayerClassesAutoComplete end) + +concommand.Add("join_class", function(pl, cmd, args) + if SERVER then + if pl:Team()==TEAM_SPECTATOR then return end + if pl:GetObserverMode() ~= OBS_MODE_NONE then pl:Spectate(OBS_MODE_NONE) end + if pl:Alive() and GetConVar("tf_kill_on_change_class"):GetInt() ~= 0 then pl:Kill() end + --if GetConVar("tf_kill_on_change_class"):GetInt() ~= 0 then pl:SetPlayerClass("gmodplayer") end + pl:SetPlayerClass(args[1]) + end +end, function() return GAMEMODE.PlayerClassesAutoComplete end) + +function RandomWeapon2(ply, wepslot) + local weps = tf_items.ReturnItems() + local class = ply:GetPlayerClass() + local validweapons = {} + for k, v in pairs(weps) do + if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and v["used_by_classes"] and v["used_by_classes"][class] and !string.StartWith(v["name"], "Australium") and v["craft_class"] == "weapon" then + table.insert(validweapons, v["name"]) + end + end + + local wep = table.Random(validweapons) + ply:EquipInLoadout(wep) +end + +function RandomCosmetic(ply, wepslot) + local weps = tf_items.ReturnItems() + local class = ply:GetPlayerClass() + local validweapons = {} + for k, v in pairs(weps) do + if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and v["used_by_classes"] and v["used_by_classes"][class] and !string.StartWith(v["name"], "Australium") and (v["item_class"] == "tf_wearable" || !IsValid(v["item_class"]) ) then + table.insert(validweapons, v["name"]) + end + end + + local wep = table.Random(validweapons) + ply:EquipInLoadout(wep) +end + +function RandomWeapon(ply, wepslot) + local weps = tf_items.ReturnItems() + local validweapons = {} + for k, v in pairs(weps) do + if v and istable(v) and isstring(wepslot) and v["name"] and v["item_slot"] == wepslot and !string.StartWith(v["name"], "Australium") and v["craft_class"] == "weapon" then + PrintTable(v) + table.insert(validweapons, v["name"]) + end + end + + local wep = table.Random(validweapons) + + ply:PrintMessage(HUD_PRINTTALK, "You were given " .. wep .. "!") + ply:ConCommand("giveitem " .. wep) +end + +concommand.Add("randomweapon", function(ply, _, args) + if !args[1] then + local random = math.random(1, 3) + if random == 1 then + RandomWeapon(ply, "primary") + elseif random == 2 then + RandomWeapon(ply, "secondary") + elseif random == 3 then + RandomWeapon(ply, "melee") + end + else + RandomWeapon(ply, args[1]) + end +end) + +function GM:PlayerSpawn(ply) + + if (ply:GetPlayerClass() != "") then + local c = GAMEMODE.PlayerClasses[ply:GetPlayerClass()] + ply.ItemLoadout = table.Copy(c.DefaultLoadout) + ply.ItemProperties = {} + end + ply:SetNWBool("SpawnGlows",true) + timer.Simple(10, function() + ply:SetNWBool("SpawnGlows",false) + end) + --[[ + if (string.StartWith(game.GetMap(),"c1m") or string.StartWith(game.GetMap(),"c2m") or string.StartWith(game.GetMap(),"c3m") or string.StartWith(game.GetMap(),"c4m") + or string.StartWith(game.GetMap(),"c5m") or string.StartWith(game.GetMap(),"c6m") or string.StartWith(game.GetMap(),"c7m") or string.StartWith(game.GetMap(),"c8m") + or string.StartWith(game.GetMap(),"c9m") or string.StartWith(game.GetMap(),"c10m") or string.StartWith(game.GetMap(),"c11m") or string.StartWith(game.GetMap(),"c12m") + or string.StartWith(game.GetMap(),"c13m") or string.StartWith(game.GetMap(),"c14m")) then + if (!IsValid(GAMEMODE.Director)) then + local director = ents.Create("ai_director") + director:SetPos(ply:GetPos()) + director:SetAngles(ply:EyeAngles()) + director:Spawn() + director:Activate() + GAMEMODE.Director = director + end + end]] + for k,v in ipairs(ents.GetAll()) do + if (v:IsNPC()) then + GAMEMODE:UpdateEntityRelationship(v) + end + end + -- engage a rare chance of getting the hacker bot's fake aim (derp) + if (ply:IsBot() and math.random(1,1000) == 1) then + ply:SetNWBool("IsDerpAim",false) + else + ply:SetNWBool("IsDerpAim",false) + end + for k,v in ipairs(player.GetAll()) do + if (player.GetCount() == 1) then + + if (!GAMEMODE.round_active and ply:Team() != TEAM_SPECTATOR) then + RunConsoleCommand("gmod_admin_cleanup") + GAMEMODE.round_active = true + timer.Simple(0.1, function() + local roundtimer = ents.Create("team_round_timer") + roundtimer.Properties = { + start_paused = 0, + timer_length = 15, + max_length = 15, + auto_countdown = 1, + show_in_hud = 1, + setup_length = 0, + } + roundtimer:Spawn() + roundtimer:Activate() + timer.Simple(1, function() + roundtimer:SetAndResumeTimer2(15,false) + roundtimer.WaitingForPlayers = true + end) + + for k,v in ipairs(player.GetAll()) do + v:Spawn() + v:SetNWBool("Taunting",true) + timer.Create("SlowGuydown"..v:EntIndex(), 0.1, 48, function() + v:SetWalkSpeed(1) + v:SetRunSpeed(1) + end) + timer.Simple(5, function() + v:SetNWBool("Taunting",false) + v:ResetClassSpeed() + end) + end + timer.Stop("WaitingForPlayers",18,1) + timer.Create("WaitingForPlayers",18,1,function() + timer.Simple(0.1, function() + + GAMEMODE.round_active = true + RunConsoleCommand("gmod_admin_cleanup") + for k,v in ipairs(player.GetAll()) do + v:Spawn() + v:SetNWBool("Taunting",true) + timer.Create("SlowGuydown"..v:EntIndex(), 0.1, 48, function() + v:SetWalkSpeed(1) + v:SetRunSpeed(1) + end) + timer.Simple(5, function() + v:SetNWBool("Taunting",false) + v:ResetClassSpeed() + v:Speak("TLK_ROUND_START") + end) + end + + end) + end) + end) + end + + end + end + ply:PrecacheGibs() + + ply:DoAnimationEvent(ACT_MP_ATTACK_STAND_POSTFIRE, true) + --ply:ScreenFade( SCREENFADE.IN, Color( 0, 0, 0, 255 ), 0.01, 0 ) + + -- Fix the blackness glitch in TSP maps + if (game.GetMap() == "map1") then + for k,v in ipairs(ents.GetAll()) do + if (v:GetName() == "cam_black") then + v:Fire("Disable","",0) + end + end + end + ply:SetGravity(0) + if ply.CPPos and ply.CPAng then + ply:SetPos(ply.CPPos) + ply:SetEyeAngles(ply.CPAng) + end + ply.anim_Deployed = false + if (ply:Team() != TEAM_NEUTRAL && ply:Team() != TEAM_FRIENDLY) then + ply:SetNoCollideWithTeammates(true) + else + ply:SetNoCollideWithTeammates(false) + end + if string.find(game.GetMap(), "mvm_") then + timer.Simple(0.4, function() + for k,v in ipairs(ents.FindByClass("obj_teleporter")) do + if GAMEMODE:EntityTeam(v) == TEAM_BLU then + if ply:Team() == TEAM_BLU then + ply:SetPos(v:GetPos()) + v:Teleport(ply) + v:EmitSound("MVM.Robot_Teleporter_Deliver") + end + end + end + end) + end + if ply:GetPlayerClass() == "engineer" and ply.TFBot then + for k,v in ipairs(ents.FindByClass("bot_hint_sentrygun")) do + if (IsValid(v)) then + timer.Simple(0.1, function() + ply:SelectWeapon("tf_weapon_wrench") + end) + timer.Simple(0.8, function() + ply:Build(2,0) + end) + end + end + end + timer.Simple(0.5, function() + if ply:GetPlayerClass() == "engineer" and (string.find(ply:GetModel(),"/bot_") or (ply.TFBot and ply:Team() == TEAM_BLU and string.find(game.GetMap(),"mvm_"))) then + ply:EmitSound("MVM.Robot_Engineer_Spawn") + + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_First_Engineer_Teleport_Spawned") + umsg.End() + end + end) + ply:ShouldDropWeapon(false) + --[[ply:SetNWBool("ShouldDropBurningRagdoll", false) + ply:SetNWBool("ShouldDropDecapitatedRagdoll", false) + ply:SetNWBool("DeathByHeadshot", false)]] + ply:ResetDeathFlags() + ply:SetNoCollideWithTeammates( true ) + ply.LastWeapon = nil + timer.Create("ItsHealing"..ply:EntIndex(), 1, 0, function() + if (ply:GetPlayerClass() != "medic") then return end + if (!ply:Alive()) then return end + if (ply:Health() < ply:GetMaxHealth()) then + GAMEMODE:HealPlayer(ply, ply, 2, false, false) + end + end) + if GetConVar("tf_crossover_mode"):GetBool() then + if ply:IsHL2() then + if ply:Team() == TEAM_RED then + ply:SetPlayerClass(table.Random({"bill","louis","zoey","francis","nick","coach"})) + else + ply:SetPlayerClass(table.Random({"charger","hunter","boomer","smoker","tank"})) + end + elseif !ply:IsHL2() then + if ply:IsL4D() then return end + if ply:Team() == TEAM_RED then + ply:SetPlayerClass(table.Random({"bill","louis","zoey","francis","nick","coach"})) + else + ply:SetPlayerClass(table.Random({"charger","hunter","boomer","smoker","tank"})) + end + end + end + self:ResetKills(ply) + self:ResetDamageCounter(ply) + self:ResetCooperations(ply) + self:StopCritBoost(ply) + for k,v in ipairs(ents.FindByClass("trigger_weapon_strip")) do + if IsValid(v) then + v:Fire("Kill", "", 0.1) + end + end + for k,v in ipairs(ents.FindByClass("player_weaponstrip")) do + if IsValid(v) then + v:Fire("Kill", "", 0.1) + end + end + ply:UnSpectate() + -- Reinitialize class + if ply:GetPlayerClass()=="" and ply:Team() != TEAM_SPECTATOR then + ply:ConCommand("tf_changeclass") + ply:SetPlayerClass("gmodplayer") + --ply:Spectate(OBS_MODE_FIXED) + --ply:StripWeapons() + --[[elseif ply:GetPlayerClass()=="sniper" then -- dumb hack wtf?? + ply:SetPlayerClass("scout") + timer.Simple(0.1, function() + if IsValid(ply) then + ply:SetPlayerClass("sniper") + end + end) + if ply:GetObserverMode() ~= OBS_MODE_NONE then + ply:UnSpectate() + end]] + elseif ply:GetPlayerClass()=="" and ply:Team() == TEAM_SPECTATOR then + ply:ConCommand("tf_changeteam") + ply:ConCommand("tf_spectate","2") + --ply:Spectate(OBS_MODE_FIXED) + --ply:StripWeapons() + --[[elseif ply:GetPlayerClass()=="sniper" then -- dumb hack wtf?? + ply:SetPlayerClass("scout") + timer.Simple(0.1, function() + if IsValid(ply) then + ply:SetPlayerClass("sniper") + end + end) + if ply:GetObserverMode() ~= OBS_MODE_NONE then + ply:UnSpectate() + end]] + elseif ply:GetPlayerClass()=="sniper" then + ply:SetPlayerClass("scout") + ply:SetPlayerClass("sniper") + timer.Simple(0.1, function() + + if ply:GetInfoNum("tf_skeleton", 0) == 1 then + ply:SetModel("models/bots/skeleton_sniper/skeleton_sniper.mdl") + end + ply:SetPlayerClass("sniper") + end) + elseif ply:GetPlayerClass()=="heavy" then + timer.Simple(0.1, function() + + if ply:GetInfoNum("tf_yeti", 0) == 1 then + ply:SetModel("models/player/yeti.mdl") + end + end) + end + + timer.Simple(0.0, function() -- god i'm such a timer whore + -- are you sure about that + ply:SetPlayerClass(ply:GetPlayerClass()) + + end) + if ply:GetObserverMode() ~= OBS_MODE_NONE then + ply:UnSpectate() + end + + if ply:Team()==TEAM_SPECTATOR then + GAMEMODE:PlayerSpawnAsSpectator( ply ) + end + ply:SetupHands() + + if ply:IsHL2() then + ply:EquipSuit() + ply:AllowFlashlight(true) + local cl_playermodel = ply:GetInfo("cl_playermodel") + local modelname = player_manager.TranslatePlayerModel(cl_playermodel) + util.PrecacheModel(modelname) + ply:SetModel(modelname) + end + + if !ply:IsHL2() then + ply:RemoveSuit() + ply:AllowFlashlight(GetConVar("tf_flashlight"):GetBool()) + + if ply:Team()==TEAM_BLU or ply:Team()==TEAM_GREEN then + ply:SetSkin(1) + else + ply:SetSkin(0) + end + + for k, v in pairs(ents.FindByClass('tf_wearable_item')) do + if v:GetClass() == 'tf_wearable_item' then + if v:GetOwner() == ply and string.find(v:GetModel(), "zombie") then + if ply:Team()==TEAM_BLU then + ply:SetSkin(5) + else + ply:SetSkin(4) + end + end + end + end + end + if (GetConVar("tf_grapplinghook_enable"):GetBool()) then + ply:GiveItem("Grappling Hook") + end + ply:Speak("TLK_PLAYER_EXPRESSION", true) + ply.Warned = false + + local playercolorconv = ply:GetInfo("cl_playercolor") + local weaponcolorconv = ply:GetInfo("cl_weaponcolor") + local playercolor = Vector(string.sub(playercolorconv, 1, 8), string.sub(playercolorconv, 10, 17), string.sub(playercolorconv, 19, 26)) + local weaponcolor = Vector(string.sub(weaponcolorconv, 1, 8), string.sub(weaponcolorconv, 10, 17), string.sub(weaponcolorconv, 19, 26)) + + local groups = ply:GetInfo( "cl_playerbodygroups" ) + if ( groups == nil ) then groups = "" end + local groups = string.Explode( " ", groups ) + ply:SetCustomCollisionCheck(true) + if (ply:Team() != TEAM_NEUTRAL and ply:Team() != TEAM_FRIENDLY) then + + ply:SetPlayerColor(Vector(team.GetColor(ply:Team()).r / 255,team.GetColor(ply:Team()).g / 255,team.GetColor(ply:Team()).b / 255)) + ply:SetWeaponColor(Vector(team.GetColor(ply:Team()).r / 255,team.GetColor(ply:Team()).g / 255,team.GetColor(ply:Team()).b / 255)) + for k = 0, ply:GetNumBodyGroups() - 1 do + ply:SetBodygroup( k, tonumber( groups[ k + 1 ] ) or 0 ) + end + + else + for k = 0, ply:GetNumBodyGroups() - 1 do + ply:SetBodygroup( k, tonumber( groups[ k + 1 ] ) or 0 ) + end + ply:SetPlayerColor(playercolor) + ply:SetWeaponColor(weaponcolor) + end + if (ply:Team() == TEAM_FRIENDLY) then + ply:SetAvoidPlayers(false) + ply:SetCollisionGroup(COLLISION_GROUP_WORLD) + else + ply:SetAvoidPlayers(true) + end + + if !ply:IsHL2() then + timer.Simple(0.01, function() + + ply:GiveLoadout() + + end) + end + + timer.Simple(0.3, function() + + if (ply:IsBot() and !ply.TFBot) then + ply:SetPlayerClass(table.Random({"scout","soldier","pyro","demoman","heavy","engineer","medic","sniper","spy"})) + end + for k,v in ipairs(team.GetPlayers(TEAM_RED)) do + if ply:IsMiniBoss() then + v:Speak("TLK_MVM_GIANT_CALLOUT") + end + end + + end) + umsg.Start("ExitFreezecam", ply) + umsg.End() + + net.Start("TF_PlayerSpawn") + net.WriteEntity(ply) + net.Broadcast() + ply:SetMaterial("") + --[[ + timer.Simple(0.5, function() + if (ply:IsBot()) then + if (ply:GetWeapons()[2]:GetClass() == "tf_weapon_lunchbox_drink" or ply:GetWeapons()[1]:GetClass() == "tf_weapon_lunchbox_drink") then + + ply:SelectWeapon("tf_weapon_lunchbox_drink") + timer.Simple(0.8, function() + ply:GetActiveWeapon():PrimaryAttack() + timer.Simple(0.95, function() + ply:SelectWeapon("tf_weapon_bat") + end) + end) + end + end + end)]] + + umsg.Start("PlayerClassChanged") + umsg.Long(ply:EntIndex()) + umsg.String(ply:GetPlayerClass()) + umsg.String(ply:GetPlayerClass()) + umsg.End() + if (ply:GetInfoNum("civ2_playermodel_reference_pose_prevention",0) == 1) then + if (!ply:IsHL2()) then + + local axe = ents.Create("prop_animated") + local cl_playermodel = ply:GetInfo("cl_playermodel") + local modelname = player_manager.TranslatePlayerModel(cl_playermodel) + util.PrecacheModel(modelname) + axe:SetModel(modelname) + axe:SetParent(ply) + axe:SetPos(ply:GetPos()) + axe:SetAngles(ply:GetAngles()) + axe:Spawn() + axe:SetPuppeteerModel(GAMEMODE.PlayerClasses[ply:GetPlayerClass()].Model) + axe:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + axe:GetPuppeteer():SetCollisionGroup(COLLISION_GROUP_DEBRIS) + ply.PuppetAnim = axe + ply:SetMaterial("color") + end + end +end + +function GM:PlayerSetHandsModel( ply, ent ) + local simplemodel = player_manager.TranslateToPlayerModelName( ply:GetModel() ) + local info = player_manager.TranslatePlayerHands( simplemodel ) + if (!IsValid(ent)) then return end + if ( info ) then + if ply:IsHL2() then + ent:SetModel( info.model ) + ent:SetSkin( info.skin ) + ent:SetBodyGroups( info.body ) + else + if (ply.IsL4DZombie and !ply:IsL4D()) then + local class = ply.playerclass + if (string.find(class,"demoman")) then + class = "demo" + elseif (string.find(class,"Demoman")) then + class = "demo" + elseif (string.find(class,"demoknight")) then + class = "demo" + end + ent:SetModel("models/weapons/c_models/c_"..class.."_arms.mdl") + elseif (ply:GetPlayerClass() == "demoman") then + if ((IsValid(ply:GetActiveWeapon()) and string.find(ply:GetActiveWeapon():GetClass(),"tf_weapon")) or !IsValid(ply:GetActiveWeapon())) then + + ent:SetModel( "models/weapons/c_models/c_demo_arms.mdl" ) + + else + + if (file.Exists("models/player/demomanplayer/demonstrationman_hands.mdl", "WORKSHOP")) then + ent:SetModel( "models/player/demomanplayer/demonstrationman_hands.mdl" ) + else + ent:SetModel("models/weapons/v_hands.mdl") + end + + end + elseif (ply:GetPlayerClass() == "mercenary") then + if ((IsValid(ply:GetActiveWeapon()) and string.find(ply:GetActiveWeapon():GetClass(),"tf_weapon")) or !IsValid(ply:GetActiveWeapon())) then + + ent:SetModel( "models/weapons/c_models/c_merc_arms.mdl" ) + + else + + ent:SetModel("models/weapons/v_hands.mdl") + + end + elseif (ply:GetPlayerClass() == "civilian_") then + ent:SetModel( "models/weapons/c_models/c_civilian_arms.mdl" ) + elseif (ply:GetPlayerClass() == "civilian") then + ent:SetModel( "models/weapons/c_models/c_scout_arms.mdl" ) + elseif (ply:GetPlayerClass() == "medicshotgun") then + ent:SetModel( "models/weapons/c_models/c_medic_arms.mdl" ) + else + local t = ply:GetPlayerClassTable() + if (ply:IsL4D()) then + if (ply:GetPlayerClass() == "charger" or ply:GetPlayerClass() == "jockey" or ply:GetPlayerClass() == "spitter") then + ent:SetModel( "models/weapons/arms/v_"..ply:GetPlayerClass().."_arms.mdl" ) + else + local class = ply:GetPlayerClass() + if (ply:GetPlayerClass() == "tank_l4d") then + class = "hulk" + end + if (string.find(ply:GetModel(),"l4d1")) then + ent:SetModel( "models/v_models/weapons/v_claw_"..class.."_l4d1.mdl" ) + elseif (string.find(ply:GetModel(),"dlc3")) then + ent:SetModel( "models/v_models/weapons/v_claw_"..class.."_dlc3.mdl" ) + else + ent:SetModel( "models/v_models/weapons/v_claw_"..class..".mdl" ) + end + end + else + + if ((IsValid(ply:GetActiveWeapon()) and string.find(ply:GetActiveWeapon():GetClass(),"tf_weapon")) or !IsValid(ply:GetActiveWeapon())) then + + if (file.Exists("models/weapons/c_models/c_"..ply:GetPlayerClass().."_arms.mdl", "GAME")) then + ent:SetModel( "models/weapons/c_models/c_"..ply:GetPlayerClass().."_arms.mdl" ) + else + ent:SetModel( "models/weapons/c_models/c_sniper_arms.mdl" ) + end + + else + + ent:SetModel("models/weapons/v_hands.mdl") + + end + end + end + if (ply:Team() == TEAM_BLU or ply:Team() == TEAM_GREEN) then + ent:SetSkin( 1 ) + else + ent:SetSkin( 0 ) + end + end + end +end + +-- Fixing spawning at the wrong spawnpoint on HL2 maps +function GM:PlayerSelectSpawn(pl) + if self.MasterSpawn==nil then + self.MasterSpawn = false + for _,v in pairs(ents.FindByClass("info_player_start")) do + if v.IsMasterSpawn then + self.MasterSpawn = v + break + end + end + end + + if self.MasterSpawn then + return self.MasterSpawn + end + + local spawnsred = {} + local spawnsblu = {} + + for k, v in pairs(ents.FindByClass("info_player_teamspawn")) do + ----print(v, "says") + if v:GetKeyValues()["StartDisabled"] == 0 then + if v:GetKeyValues()["TeamNum"] == 3 then + table.insert(spawnsblu, v) + elseif v:GetKeyValues()["TeamNum"] == 2 then + table.insert(spawnsred, v) + end + end + end + + + if pl:Team() == TEAM_RED and IsValid(spawnsred[1]) then + return table.Random(spawnsred) + elseif pl:Team() == TEAM_BLU and IsValid(spawnsblu[1]) then + return table.Random(spawnsblu) + elseif pl:Team() == TF_TEAM_PVE_INVADERS and IsValid(spawnsblu[1]) then + return table.Random(spawnsblu) + end + + return self.BaseClass:PlayerSelectSpawn(pl) +end +hook.Add( "PlayerGiveSWEP", "BlockPlayerSWEPs", function( ply, class, swep ) + if ( GetConVar("tf_competitive"):GetBool() and not ply:IsAdmin() ) then + return false + end + if ( ply:Team() == TEAM_BLU and string.find(game.GetMap(), "mvm_") ) then + return false + end +end ) +local PlayerGiveAmmoTypes = {TF_PRIMARY, TF_SECONDARY, TF_METAL} +function GM:GiveAmmoPercent(pl, pc, nometal) + --Msg("Giving "..pc.."% ammo to "..pl:GetName().." : ") + local ammo_given = false + + for _,v in ipairs(PlayerGiveAmmoTypes) do + if not nometal or v ~= TF_METAL then + if pl:GiveTFAmmo(pc * 0.01, v, true) then + ammo_given = true + end + end + end + + --Msg("\n") + if ammo_given then + if pl:GetActiveWeapon().CheckAutoReload then + pl:GetActiveWeapon():CheckAutoReload() + end + end + + return ammo_given +end + +function GM:GiveAmmoPercentNoMetal(pl, pc) + return self:GiveAmmoPercent(pl, pc, true) +end + +function GM:GiveHealthPercent(pl, pc) + return pl:GiveHealth(pc * 0.01, true) +end + +function GM:ShowHelp(ply) + ply:ConCommand("tf_hatpainter") +end + +function GM:ShowTeam(ply) + ply:ConCommand("tf_menu") +end + +function GM:ShowSpare1(ply) + ply:ConCommand("tf_itempicker hat") +end + +function GM:ShowSpare2(ply) + ply:ConCommand("open_charinfo_direct") +end + +function GM:HealPlayer(healer, pl, h, effect, allowoverheal) + local health_given = pl:GiveHealth(h, false, allowoverheal) + ----print(health_given) + if effect then + if pl:IsPlayer() then + umsg.Start("PlayerHealthBonus", pl) + umsg.Short(h) + umsg.End() + + umsg.Start("PlayerHealthBonusEffect") + umsg.Long(pl:UserID()) + umsg.Bool(h>0) + umsg.Bool(h>100) + umsg.End() + else + umsg.Start("EntityHealthBonusEffect") + umsg.Entity(pl) + umsg.Bool(h>0) + umsg.Bool(h>100) + umsg.End() + end + end + + if health_given <= 0 then return end + if not healer or not healer:IsPlayer() then return end + + healer.AddedHealing = (healer.AddedHealing or 0) + health_given + healer.HealingScoreProgress = (healer.HealingScoreProgress or 0) + health_given +end + +-- Deprecated, use HealPlayer instead +function GM:GiveHealthBonus(pl, h, allowoverheal) + pl:GiveHealth(h, false, allowoverheal) + + if pl:IsPlayer() then + umsg.Start("PlayerHealthBonus", pl) + umsg.Short(h) + umsg.End() + + umsg.Start("PlayerHealthBonusEffect") + umsg.Long(pl:UserID()) + umsg.Bool(h>0) + umsg.End() + else + umsg.Start("EntityHealthBonusEffect") + umsg.Entity(pl) + umsg.Bool(h>0) + umsg.End() + end + + return true +end + +file.Append(LOGFILE, Format("Done loading, time = %f\n", SysTime() - load_time)) +local load_time = SysTime() + +--Half-Life 2 Campaign + +-- Include the configuration for this map +function GM:GrabAndSwitch() + for _, pl in pairs(player.GetAll()) do + local plInfo = {} + local plWeapons = pl:GetWeapons() + + plInfo.predicted_map = NEXT_MAP + plInfo.health = pl:Health() + plInfo.armor = pl:Armor() + plInfo.score = pl:Frags() + plInfo.deaths = pl:Deaths() + plInfo.model = pl.modelName + + if plWeapons && #plWeapons > 0 then + plInfo.loadout = {} + + for _, wep in pairs(plWeapons) do + plInfo.loadout[wep:GetClass()] = {pl:GetAmmoCount(wep:GetPrimaryAmmoType()), pl:GetAmmoCount(wep:GetSecondaryAmmoType())} + end + end + + file.Write("tf2_userid_info/tf2_userid_info_"..pl:UniqueID()..".txt", util.TableToKeyValues(plInfo)) + end + + -- Crash Recovery -- + if game.IsDedicated(true) then + local savedMap = {} + + savedMap.predicted_crash = NEXT_MAP + + file.Write("tf2_data/tf2_crash_recovery.txt", util.TableToKeyValues(savedMap)) + end + -- End -- + + -- Switch maps + game.ConsoleCommand("changelevel "..NEXT_MAP.."\n") +end + +if file.Exists("tf2/maps/"..game.GetMap()..".lua", "LUA") then + include("tf2/maps/"..game.GetMap()..".lua") +elseif file.Exists("maps/"..game.GetMap()..".lua", "LUA") then + include("maps/"..game.GetMap()..".lua") +end + +RunConsoleCommand("sk_player_head", "1") +RunConsoleCommand("sv_friction", "4") +RunConsoleCommand("sv_stopspeed", "100") +--Disables use key on objects (Can Be Re-enabled) +-- WHAT WERE YOU THINKING +RunConsoleCommand("sv_playerpickupallowed", "1") +--Sets the gravity to 800 (Can be set back to default "600") +RunConsoleCommand("sv_gravity", "600") +--Sets to a impact force similar to TF2 so things to go flying balls of the walls! +RunConsoleCommand("phys_impactforcescale", "0.05") +--Ditto +RunConsoleCommand("phys_pushscale", "0.10") + +function GM:PlayerNoClip( pl ) + if GetConVar("sbox_noclip"):GetInt() <= 0 then + return + end + + if pl:Team() == TEAM_SPECTATOR then + return false + else + return true + end +end + +function GM:EntityRemoved(ent, ply) + if ent:GetClass() == "item_battery" then + ent:Remove("item_battery") + end +end + +function GM:PlayerRequestTeam( ply, teamid ) + -- This team isn't joinable + if ( !team.Joinable( teamid ) or teamid == 0 or teamid == 3 ) then + ply:ChatPrint( "You can't join that team" ) + return end + + -- This team isn't joinable + if ( !GAMEMODE:PlayerCanJoinTeam( ply, teamid ) ) then + -- Messages here should be outputted by this function + return end + + GAMEMODE:PlayerJoinTeam( ply, teamid ) +end + +function GM:PlayerCanJoinTeam( ply, teamid ) + ----print("Requested "..teamid.." for "..ply:GetName().."!".." (aka team "..team.GetName(teamid).."!)") + local TimeBetweenSwitches = GAMEMODE.SecondsBetweenTeamSwitches or 5 + if ( ply.LastTeamSwitch && RealTime()-ply.LastTeamSwitch < TimeBetweenSwitches ) then + ply.LastTeamSwitch = ply.LastTeamSwitch + 1 + ply:ChatPrint( Format( "Please wait %i more seconds before trying to change team again!", ( TimeBetweenSwitches - ( RealTime() - ply.LastTeamSwitch ) ) + 1 ) ) + return false + end + + -- Already on this team! + if ( ply:Team() == teamid ) then + ply:ChatPrint( "You're already on that team" ) + return false + end + + return true +end + +-- Networking +util.AddNetworkString("UpdateLoadout") +util.AddNetworkString("TF_PlayerSpawn") + +function GM:PlayerDroppedWeapon(ply) + if IsValid(ply) and ply:IsPlayer() and !ply:IsHL2() then + net.Start("UpdateLoadout") + net.Send(ply) + end +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/items_game.lua b/gamemodes/tf/gamemode/items/items_game.lua similarity index 95% rename from addon/gamemodes/teamfortress/gamemode/items/items_game.lua rename to gamemodes/tf/gamemode/items/items_game.lua index 7a63a1077..106c98d5a 100644 --- a/addon/gamemodes/teamfortress/gamemode/items/items_game.lua +++ b/gamemodes/tf/gamemode/items/items_game.lua @@ -18,6 +18,10 @@ { "value" "2" } + "vintage" + { + "value" "3" + } "rarity3" { "value" "4" @@ -42,9 +46,25 @@ { "value" "10" } - "vintage" + "strange" { - "value" "3" + "value" "11" + } + "completed" + { + "value" "12" + } + "haunted" + { + "value" "13" + } + "collectors" + { + "value" "14" + } + "paintkitweapon" + { + "value" "15" } } "items" @@ -57,7 +77,7 @@ "item_type_name" "#TF_Weapon_Bat" "item_name" "#TF_Weapon_Bat" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -81,7 +101,7 @@ "item_type_name" "#TF_Weapon_Bottle" "item_name" "#TF_Weapon_Bottle" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -105,7 +125,7 @@ "item_type_name" "#TF_Weapon_FireAxe" "item_name" "#TF_Weapon_FireAxe" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -129,7 +149,7 @@ "item_type_name" "#TF_Weapon_Club" "item_name" "#TF_Weapon_Club" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -153,7 +173,7 @@ "item_type_name" "#TF_Weapon_Knife" "item_name" "#TF_Weapon_Knife" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -177,7 +197,7 @@ "item_type_name" "#TF_Weapon_Fists" "item_name" "#TF_Weapon_Fists" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -227,7 +247,7 @@ "item_type_name" "#TF_Weapon_Shovel" "item_name" "#TF_Weapon_Shovel" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -251,7 +271,7 @@ "item_type_name" "#TF_Weapon_Wrench" "item_name" "#TF_Weapon_Wrench" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -275,7 +295,7 @@ "item_type_name" "#TF_Weapon_Bonesaw" "item_name" "#TF_Weapon_Bonesaw" "item_slot" "melee" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -294,12 +314,12 @@ "9" { "name" "TF_WEAPON_SHOTGUN_PRIMARY" - "item_class" "tf_weapon_shotgun_primary" + "item_class" "tf_weapon_shotgun" "craft_class" "weapon" "item_type_name" "#TF_Weapon_Shotgun" "item_name" "#TF_Weapon_Shotgun" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -324,12 +344,12 @@ "10" { "name" "TF_WEAPON_SHOTGUN_SOLDIER" - "item_class" "tf_weapon_shotgun_soldier" + "item_class" "tf_weapon_shotgun" "craft_class" "weapon" "item_type_name" "#TF_Weapon_Shotgun" "item_name" "#TF_Weapon_Shotgun" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -354,13 +374,13 @@ "11" { "name" "TF_WEAPON_SHOTGUN_HWG" - "item_class" "tf_weapon_shotgun_hwg" + "item_class" "tf_weapon_shotgun" "craft_class" "weapon" "tool_class" "weapon" "item_type_name" "#TF_Weapon_Shotgun" "item_name" "#TF_Weapon_Shotgun" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -385,12 +405,12 @@ "12" { "name" "TF_WEAPON_SHOTGUN_PYRO" - "item_class" "tf_weapon_shotgun_pyro" + "item_class" "tf_weapon_shotgun" "craft_class" "weapon" "item_type_name" "#TF_Weapon_Shotgun" "item_name" "#TF_Weapon_Shotgun" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -420,7 +440,7 @@ "item_type_name" "#TF_Weapon_Scattergun" "item_name" "#TF_Weapon_Scattergun" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -449,7 +469,7 @@ "item_type_name" "#TF_Weapon_SniperRifle" "item_name" "#TF_Weapon_SniperRifle" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -478,7 +498,7 @@ "item_type_name" "#TF_Weapon_Minigun" "item_name" "#TF_Weapon_Minigun" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -507,7 +527,7 @@ "item_type_name" "#TF_Weapon_SMG" "item_name" "#TF_Weapon_SMG" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -536,7 +556,7 @@ "item_type_name" "#TF_Weapon_SyringeGun" "item_name" "#TF_Weapon_SyringeGun" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -565,7 +585,7 @@ "item_type_name" "#TF_Weapon_RocketLauncher" "item_name" "#TF_Weapon_RocketLauncher" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -594,7 +614,7 @@ "item_type_name" "#TF_Weapon_GrenadeLauncher" "item_name" "#TF_Weapon_GrenadeLauncher" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -623,7 +643,7 @@ "item_type_name" "#TF_Weapon_PipebombLauncher" "item_name" "#TF_Weapon_PipebombLauncher" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -653,7 +673,7 @@ "item_type_name" "#TF_Weapon_FlameThrower" "item_name" "#TF_Weapon_FlameThrower" "item_slot" "primary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -677,7 +697,7 @@ "item_type_name" "#TF_Weapon_Pistol" "item_name" "#TF_Weapon_Pistol" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -707,7 +727,7 @@ "item_type_name" "#TF_Weapon_Pistol" "item_name" "#TF_Weapon_Pistol" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -737,7 +757,7 @@ "item_type_name" "#TF_Weapon_Revolver" "item_name" "#TF_Weapon_Revolver" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -766,7 +786,7 @@ "item_type_name" "#TF_Weapon_PDA_Engineer" "item_name" "#TF_Weapon_PDA_Engineer" "item_slot" "pda" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -802,7 +822,7 @@ "item_type_name" "#TF_Weapon_PDA_Engineer" "item_name" "#TF_Weapon_PDA_Engineer" "item_slot" "pda2" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -838,7 +858,7 @@ "item_type_name" "#TF_Weapon_PDA_Engineer" "item_name" "#TF_Weapon_PDA_Engineer" "item_slot" "pda" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -859,7 +879,7 @@ "item_type_name" "#TF_Weapon_PDA_Engineer" "item_name" "#TF_Weapon_PDA_Engineer" "item_slot" "building" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -896,7 +916,7 @@ "item_type_name" "#TF_Weapon_Medigun" "item_name" "#TF_Weapon_Medigun" "item_slot" "secondary" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -921,7 +941,7 @@ "item_name" "#TF_Weapon_Watch" "item_slot" "pda2" "anim_slot" "FORCE_NOT_USED" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -996,7 +1016,7 @@ "item_name" "#Weapon_Passtime_Gun" "item_slot" "utility" "attach_to_hands" "1" - "item_quality" "normal" + "item_quality" "unique" "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" @@ -1019,6 +1039,156 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } + "10000055" + { + "name" "Gas Mask" + "item_class" "tf_wearable_item" + "loadondemand" "1" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_gift_wrap" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "Gas Mask" + "item_description" "Combine Metrocop Mask" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_afro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/nova/w_headgear.mdl" + "drop_type" "none" + "used_by_classes" + { + "gmodplayer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_pickup.wav" + } + "10000056" + { + "name" "Headcrab" + "item_class" "tf_wearable_item" + "loadondemand" "1" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_gift_wrap" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "Headcrab" + "item_description" "Alien Parasite" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_afro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/nova/w_headcrab.mdl" + "drop_type" "none" + "used_by_classes" + { + "gmodplayer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_pickup.wav" + } + "10000059" + { + "name" "Graduation Cap" + "item_class" "tf_wearable_item" + "loadondemand" "1" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_gift_wrap" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "Graduation Cap" + "item_description" "Alien Parasite" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_afro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/humans/graduation_cap.mdl" + "drop_type" "none" + "used_by_classes" + { + "gmodplayer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_pickup.wav" + } + "10000060" + { + "name" "Top Hat" + "item_class" "tf_wearable_item" + "loadondemand" "1" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_gift_wrap" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "Top Hat" + "item_description" "Alien Parasite" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_afro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/humans/top_hat.mdl" + "drop_type" "none" + "used_by_classes" + { + "gmodplayer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_pickup.wav" + } + "10000061" + { + "name" "Chef Hat" + "item_class" "tf_wearable_item" + "loadondemand" "1" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_gift_wrap" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "Chef Hat" + "item_description" "Alien Parasite" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_afro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/chefhat.mdl" + "drop_type" "none" + "used_by_classes" + { + "gmodplayer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_pickup.wav" + } } "attributes" { diff --git a/gamemodes/tf/gamemode/items/items_game_nomount.lua b/gamemodes/tf/gamemode/items/items_game_nomount.lua new file mode 100644 index 000000000..0668c1b73 --- /dev/null +++ b/gamemodes/tf/gamemode/items/items_game_nomount.lua @@ -0,0 +1,241310 @@ +"items_game" +{ + "game_info" + { + "first_valid_class" "1" + "last_valid_class" "9" + "account_class_index" "16" + "account_first_valid_item_slot" "0" + "account_last_valid_item_slot" "3" + "first_valid_item_slot" "0" + "last_valid_item_slot" "18" + "num_item_presets" "4" + } + "qualities" + { + "normal" + { + "value" "0" + } + "unique" + { + "value" "6" + } + "rarity1" + { + "value" "1" + } + "rarity2" + { + "value" "2" + } + "vintage" + { + "value" "3" + } + "rarity3" + { + "value" "4" + } + "rarity4" + { + "value" "5" + } + "community" + { + "value" "7" + } + "developer" + { + "value" "8" + } + "selfmade" + { + "value" "9" + } + "customized" + { + "value" "10" + } + "strange" + { + "value" "11" + } + "completed" + { + "value" "12" + } + "haunted" + { + "value" "13" + } + "collectors" + { + "value" "14" + } + "paintkitweapon" + { + "value" "15" + } + } + "colors" + { + "desc_level" + { + "color_name" "ItemAttribLevel" + } + "desc_attrib_neutral" + { + "color_name" "ItemAttribNeutral" + } + "desc_attrib_positive" + { + "color_name" "ItemAttribPositive" + } + "desc_attrib_negative" + { + "color_name" "ItemAttribNegative" + } + "desc_itemset_name" + { + "color_name" "ItemSetName" + } + "desc_itemset_equipped" + { + "color_name" "ItemSetItemEquipped" + } + "desc_itemset_missing" + { + "color_name" "ItemSetItemMissing" + } + "desc_bundle" + { + "color_name" "ItemBundleItem" + } + "desc_limited_use" + { + "color_name" "ItemLimitedUse" + } + "desc_flags" + { + "color_name" "ItemFlags" + } + "web_item_background_color" + { + "color_name" "(web only)" + } + "desc_limited_quantity" + { + "color_name" "ItemLimitedQuantity" + } + "desc_default" + { + "color_name" "ItemRarityDefault" + } + "desc_common" + { + "color_name" "ItemRarityCommon" + } + "desc_uncommon" + { + "color_name" "ItemRarityUncommon" + } + "desc_rare" + { + "color_name" "ItemRarityRare" + } + "desc_mythical" + { + "color_name" "ItemRarityMythical" + } + "desc_legendary" + { + "color_name" "ItemRarityLegendary" + } + "desc_ancient" + { + "color_name" "ItemRarityAncient" + } + "desc_immortal" + { + "color_name" "ItemRarityImmortal" + } + "desc_strange" + { + "color_name" "QualityColorStrange" + } + "desc_unusual" + { + "color_name" "QualityColorrarity4" + } + } + "rarities" + { + "default" + { + "value" "0" + "loc_key" "Rarity_Default" + "loc_key_weapon" "Rarity_Default_Weapon" + "color" "desc_default" + "drop_sound" "EndMatch.ItemRevealRarityCommon" + } + "common" + { + "value" "1" + "loc_key" "Rarity_Common" + "loc_key_weapon" "Rarity_Common_Weapon" + "color" "desc_common" + "next_rarity" "uncommon" + } + "uncommon" + { + "value" "2" + "loc_key" "Rarity_Uncommon" + "loc_key_weapon" "Rarity_Uncommon_Weapon" + "color" "desc_uncommon" + "next_rarity" "rare" + } + "rare" + { + "value" "3" + "loc_key" "Rarity_Rare" + "loc_key_weapon" "Rarity_Rare_Weapon" + "color" "desc_rare" + "loot_list" "rare_drops" + "next_rarity" "mythical" + } + "mythical" + { + "value" "4" + "loc_key" "Rarity_Mythical" + "loc_key_weapon" "Rarity_Mythical_Weapon" + "color" "desc_mythical" + "next_rarity" "legendary" + } + "legendary" + { + "value" "5" + "loc_key" "Rarity_Legendary" + "loc_key_weapon" "Rarity_Legendary_Weapon" + "color" "desc_legendary" + "next_rarity" "ancient" + } + "ancient" + { + "value" "6" + "loc_key" "Rarity_Ancient" + "loc_key_weapon" "Rarity_Ancient_Weapon" + "color" "desc_ancient" + } + "immortal" + { + "value" "7" + "loc_key" "Rarity_Immortal" + "loc_key_weapon" "Rarity_Immortal_Weapon" + "color" "desc_immortal" + } + "unusual" + { + "value" "99" + "loc_key" "Unusual" + "loc_key_weapon" "Rarity_Unusual" + "color" "desc_unusual" + } + } + "equip_regions_list" + { + "whole_head" "1" + "hat" "1" + "face" "1" + "glasses" "1" + "lenses" "1" + "pants" "1" + "beard" "1" + "shirt" "1" + "medal" "1" + "arms" "1" + "back" "1" + "feet" "1" + "necklace" "1" + "grenades" "1" + "arm_tattoos" "1" + "flair" "1" + "head_skin" "1" + "ears" "1" + "left_shoulder" "1" + "belt_misc" "1" + "disconnected_floating_item" "1" + "zombie_body" "1" + "sleeves" "1" + "right_shoulder" "1" + + "shared" + { + "pyro_spikes" "1" + "scout_bandages" "1" + "engineer_pocket" "1" + "heavy_belt_back" "1" + "demo_eyepatch" "1" + "soldier_gloves" "1" + "spy_gloves" "1" + } + "shared" + { + "scout_backpack" "1" + "heavy_pocket" "1" + "engineer_belt" "1" + "soldier_pocket" "1" + "demo_belt" "1" + "sniper_quiver" "1" + } + "shared" + { + "pyro_wings" "1" + "sniper_bullets" "1" + "medigun_accessories" "1" + "soldier_coat" "1" + "heavy_hip" "1" + "scout_hands" "1" + } + "shared" + { + "engineer_left_arm" "1" + "pyro_tail" "1" + "sniper_legs" "1" + "medic_gloves" "1" + "soldier_cigar" "1" + "demoman_collar" "1" + "heavy_towel" "1" + } + "shared" + { + "engineer_wings" "1" + "pyro_head_replacement" "1" + "scout_wings" "1" + "heavy_hair" "1" + "medic_pipe" "1" + "soldier_legs" "1" + "demo_head_replacement" "1" + "sniper_headband" "1" + } + "shared" + { + "scout_pants" "1" + "heavy_bullets" "1" + "engineer_hair" "1" + "sniper_vest" "1" + "medigun_backpack" "1" + "sniper_pocket_left" "1" + } + "shared" + { + "sniper_pocket" "1" + "heavy_hip_pouch" "1" + "spy_coat" "1" + "medic_hip" "1" + } + } + "equip_conflicts" + { + "glasses" + { + "face" "1" + "lenses" "1" + } + "whole_head" + { + "hat" "1" + "face" "1" + "glasses" "1" + } + } +"quest_objective_conditions" +{ + "0" + { + "name" "Score points as Scout" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_score_changed" + "score_key_name" "delta" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "player" + "get_player" "by_entindex" + "value" "scout" + } + } + } + } + "1" + { + "name" "Kill while jumping as Scout" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_jumping" + "player_key" "attacker" + "get_player" "by_id" + "jumping_state" "1" + } + "2" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "scout" + } + } + "1" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_jumping" + "player_key" "assister" + "get_player" "by_id" + "jumping_state" "1" + } + "2" + { + "type" "player_class" + "player_key" "assister" + "get_player" "by_id" + "value" "scout" + } + } + } + "1" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + } + } + } + } + "2" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Demoman as Scout" + } + "3" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "event_key" "eventtype" + "type" "flag_event_type" + "value" "TF_FLAGEVENT_CAPTURE" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "teamplay_flag_event" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_cappers" + "player_key" "cappers" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "action" "increment" + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "2" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "action" "increment" + "event_name" "pass_score" + "type" "event_listener" + } + "end" "1" + "type" "counter" + } + "name" "Capture an objective as Scout" + } + "4" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill as Scout" + } + "5" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Medic as Scout" + } + "6" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Soldier" + } + "7" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "loadout_key" "weapon_def_index" + "player_key" "attacker" + "type" "loadout_position" + "value" "LOADOUT_POSITION_SECONDARY" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Secondary weapon kill as Soldier" + } + "8" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_BLASTJUMPING" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_BLASTJUMPING" + } + "type" "AND" + } + "type" "OR" + } + "2" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill while blast jumping as Soldier" + } + "9" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill as Soldier" + } + "10" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "loadout_key" "weapon_def_index" + "player_key" "attacker" + "type" "loadout_position" + "value" "LOADOUT_POSITION_SECONDARY" + } + "2" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "jumping_state" "1" + "player_key" "userid" + "type" "player_jumping" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill an airborne target with your secondary" + } + "11" + { + "name" "Get a direct hit with a rocket" + "condition_logic" + { + "type" "event_listener" + "event_name" "projectile_direct_hit" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_entindex" + "value" "soldier" + } + "2" + { + "type" "OR" + "0" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "tf_weapon_rocketlauncher" + } + "1" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "tf_weapon_particle_cannon" + } + "2" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "tf_weapon_rocketlauncher_directhit" + } + "3" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "tf_weapon_rocketlauncher_airstrike" + } + } + "2" + { + "type" "player_is_owner" + "player_key" "victim" + "get_player" "by_entindex" + "is_owner" "0" + } + } + } + } + "12" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Pyro" + } + "13" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "healer" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "event_name" "player_extinguished" + "type" "event_listener" + } + "name" "Extinguish a teammate as Pyro" + } + "14" + { + "name" "Kill with a reflected projectile as Pyro" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "pyro" + } + "1" + { + "type" "deflected_projectile" + "key_to_lookup" "weapon" + "value" "deflect_" + } + } + } + } + } + "15" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "killer" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "environmental_death" + "type" "event_listener" + } + "name" "Environment kill as Pyro" + } + "16" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "pyro_entindex" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "pyro_entindex" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim_entindex" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "victim_entindex" + "type" "player_condition" + "value" "TF_COND_STEALTHED" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim_entindex" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "victim_entindex" + "type" "player_condition" + "value" "TF_COND_DISGUISED" + } + "type" "AND" + } + "2" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim_entindex" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "victim_entindex" + "type" "player_condition" + "value" "TF_COND_DISGUISING" + } + "type" "AND" + } + "3" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim_entindex" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "victim_entindex" + "type" "player_condition" + "value" "TF_COND_STEALTHED_BLINK" + } + "type" "AND" + } + "type" "OR" + } + "2" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim_entindex" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "victim_entindex" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_ignited" + "type" "event_listener" + } + "name" "Ignite an invisible or disguised Spy as Pyro" + } + "17" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill as Pyro" + } + "18" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Demoman" + } + "19" + { + "name" "Sticky grenade kill as Demoman" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "demoman" + } + "2" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "type" "weapon_type" + "key_to_lookup" "weaponid" + "value" "35" + } + } + } + } + "20" + { + "name" "Melee kill as Demoman" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "demoman" + } + } + } + "1" + { + "type" "loadout_position" + "player_key" "attacker" + "get_player" "by_id" + "loadout_key" "weapon_def_index" + "value" "LOADOUT_POSITION_MELEE" + } + "2" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + } + } + } + } + "21" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "1" + { + "event_key" "eventtype" + "type" "flag_event_type" + "value" "TF_FLAGEVENT_DEFEND" + } + "type" "AND" + } + "action" "increment" + "event_name" "teamplay_flag_event" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "killer" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "assister" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "killed_capping_player" + "type" "event_listener" + } + "end" "1" + "type" "counter" + } + "name" "As Demoman, kill an enemy doing the objective" + } + "22" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill as Demoman" + } + "23" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "1" + { + "custom_damage_key" "custom" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_CHARGE_IMPACT" + } + "type" "AND" + } + "event_name" "player_hurt" + "score_key_name" "none" + "type" "event_listener" + } + "name" "Bash an enemy with a shield" + "required_items" + { + "0" + { + "loaner_defindex" "406" + "qualifying_items" + { + "1" + { + "defindex" "406" + } + "2" + { + "defindex" "131" + } + "3" + { + "defindex" "1099" + } + } + } + } + } + "24" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Heavy" + } + "25" + { + "name" "Capture or defend an objective as Heavy" + "condition_logic" + { + "type" "counter" + "end" "1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_point_captured" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "cappers" + "get_player" "by_cappers" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "cappers" + "get_player" "by_cappers" + "value" "heavy" + } + } + } + "1" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "player" + "get_player" "by_entindex" + "value" "heavy" + } + } + "1" + { + "type" "flag_event_type" + "event_key" "eventtype" + "value" "TF_FLAGEVENT_CAPTURE" + } + } + } + "2" + { + "type" "event_listener" + "action" "increment" + "event_name" "capper_killed" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "blocker" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "blocker" + "get_player" "by_entindex" + "value" "heavy" + } + } + } + "3" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_class" + "player_key" "player" + "get_player" "by_entindex" + "value" "heavy" + } + } + } + } + } + "26" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Scout as Heavy" + } + "27" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "OR" + } + "event_name" "object_destroyed" + "type" "event_listener" + } + "name" "Destroy an Engineer building as Heavy" + } + "28" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Heavy as Heavy" + } + "29" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "heavy" + } + "1" + { + "alive_state" "1" + "get_player" "by_id" + "player_key" "userid" + "type" "player_alive" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_hurt" + "score_key_name" "damageamount" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "1000" + "type" "counter" + } + "name" "Take 1000 damage in a single life as Heavy" + } + "30" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill as Heavy" + } + "31" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "engineer" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Engineer" + } + "32" + { + "name" "[Template] Get var1 sentry kills in a single life as Engineer" + "condition_logic" + { + "type" "counter" + "end" "$var1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "AND" + "0" + { + "type" "scorer" + "player_key" "attacker" + "get_player" "by_id" + "scorer_key" "inflictor_entindex" + } + "1" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "engineer" + } + } + "1" + { + "type" "AND" + "0" + { + "type" "scorer" + "player_key" "assister" + "get_player" "by_id" + "scorer_key" "inflictor_entindex" + } + "1" + { + "type" "player_class" + "player_key" "assister" + "get_player" "by_id" + "value" "engineer" + } + } + } + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "33" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "scorer_key" "inflictor_entindex" + "type" "scorer" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "scorer_key" "inflictor_entindex" + "type" "scorer" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "OR" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill with a Sentry" + } + "34" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "builderid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "builderid" + "type" "player_class" + "value" "engineer" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_teleported" + "type" "event_listener" + } + "name" "Teleport a teammate" + } + "35" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "engineer" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "engineer" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "2" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "scorer_key" "inflictor_entindex" + "type" "scorer" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "scorer_key" "inflictor_entindex" + "type" "scorer" + } + "type" "OR" + } + "type" "NOT" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill as Engineer" + } + "36" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "patient" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_healed" + "score_key_name" "amount" + "type" "event_listener" + } + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "$var1" + "type" "counter" + "period" "$var2" + } + "name" "[Template] Heal var1 health to teammates within var2 period" + } + "37" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Medic" + } + "38" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "2" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "3" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get an assist with an Ubered Heavy" + } + "39" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "object_destroyed" + "type" "event_listener" + } + "name" "Assist in destroying a sentry while Ubered" + } + "40" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "2" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "3" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get an assist with an Ubered Demoman" + } + "41" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Sniper" + } + "42" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_ZOOMED" + } + "type" "AND" + } + "2" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT" + } + "1" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT_DECAPITATION" + } + "type" "OR" + } + "type" "NOT" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Scoped bodyshot kill as Sniper" + } + "43" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "1" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT" + } + "1" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT_DECAPITATION" + } + "type" "OR" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Headshot kill as Sniper" + } + "44" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Medic as Sniper" + } + "45" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Heavy as Sniper" + } + "46" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Sniper as Sniper" + } + "47" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill as Sniper" + } + "48" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "player" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points as Spy" + } + "49" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "1" + { + "0" + { + "key_to_lookup" "weapon" + "type" "weapon_name" + "value" "OBJ_ATTACHMENT_SAPPER" + } + "1" + { + "key_to_lookup" "weapon" + "type" "weapon_name" + "value" "recorder" + } + "2" + { + "key_to_lookup" "weapon" + "type" "weapon_name" + "value" "psapper" + } + "3" + { + "key_to_lookup" "weapon" + "type" "weapon_name" + "value" "snack_attack" + } + "type" "OR" + } + "type" "AND" + } + "event_name" "object_destroyed" + "type" "event_listener" + } + "name" "Destroy a building with a Sapper" + } + "50" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "1" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_BACKSTAB" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a Backstab" + } + "51" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Medic as Spy" + } + "52" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "engineer" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill an Engineer as Spy" + } + "53" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Sniper as Spy" + } + "54" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill as Spy" + } + "55" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "type" "map" + "value" "cp_powerhouse" + } + "2" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill on Powerhouse" + } + "56" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "cp_powerhouse" + } + "type" "AND" + } + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "name" "Capture an objective on Powerhouse" + } + "57" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "type" "map" + "value" "cp_powerhouse" + } + "2" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "killed_capping_player" + "type" "event_listener" + } + "name" "Kill an enemy capturing a point on Powerhouse" + } + "58" + { + "condition_logic" + { + "0" + { + "0" + { + "team_key" "team" + "team_requirement" "1" + "type" "team_restriction" + } + "1" + { + "type" "map" + "value" "cp_powerhouse" + } + "type" "AND" + } + "event_name" "teamplay_round_win" + "type" "event_listener" + } + "name" "Win a round on Powerhouse" + } + "59" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "cp_powerhouse" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points on Powerhouse" + } + "60" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "cp_snowplow" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points on Snowplow" + } + "61" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "cp_snowplow" + } + "type" "AND" + } + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "name" "Capture an objective on Snowplow" + } + "62" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "type" "map" + "value" "cp_snowplow" + } + "2" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "killed_capping_player" + "type" "event_listener" + } + "name" "Defend an objective on Snowplow" + } + "63" + { + "condition_logic" + { + "0" + { + "0" + { + "team_key" "team" + "team_requirement" "1" + "type" "team_restriction" + } + "1" + { + "type" "map" + "value" "cp_snowplow" + } + "type" "AND" + } + "event_name" "teamplay_round_win" + "type" "event_listener" + } + "name" "Win a round on Snowplow" + } + "64" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "pl_borneo" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points on Borneo" + } + "65" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "pl_borneo" + } + "type" "AND" + } + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "name" "Capture an objective on Borneo" + } + "66" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "type" "map" + "value" "pl_borneo" + } + "2" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "killed_capping_player" + "type" "event_listener" + } + "name" "Defend the cart on Borneo" + } + "67" + { + "condition_logic" + { + "0" + { + "0" + { + "team_key" "team" + "team_requirement" "1" + "type" "team_restriction" + } + "1" + { + "type" "map" + "value" "pl_borneo" + } + "type" "AND" + } + "event_name" "teamplay_round_win" + "type" "event_listener" + } + "name" "Win a round on Borneo" + } + "68" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "koth_suijin" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points on Suijin" + } + "69" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "type" "map" + "value" "koth_suijin" + } + "2" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "killed_capping_player" + "type" "event_listener" + } + "name" "Defend the objective on Suijin" + } + "70" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "type" "map" + "value" "koth_suijin" + } + "type" "AND" + } + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "name" "Capture the objective on Suijin" + } + "71" + { + "condition_logic" + { + "0" + { + "0" + { + "team_key" "team" + "team_requirement" "1" + "type" "team_restriction" + } + "1" + { + "type" "map" + "value" "koth_suijin" + } + "type" "AND" + } + "event_name" "teamplay_round_win" + "type" "event_listener" + } + "name" "Win a round on Suijin" + } + "72" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points" + } + "73" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "10" + "type" "counter" + } + "name" "Score 10 points in a single life" + } + "74" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a kill" + } + "75" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_death" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "5" + "type" "counter" + } + "name" "Get 5 kills in a single life" + } + "76" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Scout" + } + "77" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Soldier" + } + "78" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "pyro" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Pyro" + } + "79" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "demoman" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Demoman" + } + "80" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Heavy" + } + "81" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "engineer" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill an Engineer" + } + "82" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Medic" + } + "83" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Sniper" + } + "84" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Spy" + } + "85" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "2" + { + "get_player" "by_id" + "jumping_state" "3" + "player_key" "attacker" + "type" "player_jumping" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "scout" + } + "2" + { + "get_player" "by_id" + "jumping_state" "3" + "player_key" "assister" + "type" "player_jumping" + } + "type" "AND" + } + "type" "OR" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a triple jump kill" + "required_items" + { + "1" + { + "loaner_defindex" "450" + "qualifying_items" + { + "1" + { + "defindex" "450" + } + "2" + { + "defindex" "448" + } + "3" + { + "defindex" "45" + } + } + } + } + } + "86" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "healer" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_healed" + "score_key_name" "amount" + "type" "event_listener" + } + "end" "100" + "type" "counter" + } + "name" "Heal 100 health as Scout" + "required_items" + { + "1" + { + "loaner_defindex" "222" + "qualifying_items" + { + "1" + { + "defindex" "222" + } + "2" + { + "defindex" "773" + } + } + } + } + } + "87" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "TF_COND_BLEEDING" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a bleeding enemy as Scout" + "required_items" + { + "1" + { + "loaner_defindex" "812" + "qualifying_items" + { + "1" + { + "defindex" "812" + } + "2" + { + "defindex" "325" + } + "3" + { + "defindex" "452" + } + "4" + { + "defindex" "648" + } + } + } + } + } + "88" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "TF_COND_STUNNED" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill stunned enemy as Scout" + "required_items" + { + "1" + { + "loaner_defindex" "44" + "qualifying_items" + { + "1" + { + "defindex" "44" + } + } + } + } + } + "89" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "preventor" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "player_key" "preventor" + "type" "player_class" + "value" "scout" + } + "type" "AND" + } + "action" "increment" + "event_name" "damage_prevented" + "score_key_name" "amount" + "type" "event_listener" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "100" + "type" "counter" + } + "name" "Prevent damage as Scout" + "required_items" + { + "1" + { + "loaner_defindex" "46" + "qualifying_items" + { + "1" + { + "defindex" "46" + } + } + } + } + } + "90" + { + "condition_logic" + { + "0" + { + "0" + { + "key_to_lookup" "crit_type" + "type" "crit_kill" + "value" "1" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "soldier" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get a minicrit kill as Soldier" + "required_items" + { + "1" + { + "loaner_defindex" "129" + "qualifying_items" + { + "1" + { + "defindex" "129" + } + "2" + { + "defindex" "127" + } + "3" + { + "defindex" "415" + } + } + } + } + } + "91" + { + "condition_logic" + { + "2" + { + "1" + { + "key_to_lookup" "crit_type" + "type" "crit_kill" + "value" "1" + } + "2" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "scout" + } + "3" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "4" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Minicrit kill as Scout" + "required_items" + { + "1" + { + "loaner_defindex" "1103" + "qualifying_items" + { + "1" + { + "defindex" "1103" + } + "2" + { + "defindex" "163" + } + "3" + { + "defindex" "355" + } + } + } + } + } + "92" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "healer" + "type" "player_class" + "value" "soldier" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_healed" + "score_key_name" "amount" + "type" "event_listener" + } + "3" + { + "4" + { + "1" + { + "get_player" "by_entindex" + "player_key" "entindex" + "type" "player_class" + "value" "soldier" + } + "2" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "entindex" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_healonhit" + "score_key_name" "amount" + "type" "event_listener" + } + "end" "200" + "type" "counter" + } + "name" "Heal 200 damage as Soldier" + "required_items" + { + "1" + { + "loaner_defindex" "354" + "qualifying_items" + { + "1" + { + "defindex" "228" + } + "2" + { + "defindex" "354" + } + } + } + } + } + "93" + { + "condition_logic" + { + "0" + { + "0" + { + "key_to_lookup" "crit_type" + "type" "crit_kill" + "value" "2" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "pyro" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Crit kill as Pyro" + "required_items" + { + "1" + { + "loaner_defindex" "40" + "qualifying_items" + { + "1" + { + "defindex" "40" + } + "2" + { + "defindex" "594" + } + "3" + { + "defindex" "38" + } + } + } + } + } + "94" + { + "condition_logic" + { + "0" + { + "0" + { + "key_to_lookup" "crit_type" + "type" "crit_kill" + "value" "1" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "pyro" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Minicrit kill as Pyro" + "required_items" + { + "1" + { + "loaner_defindex" "351" + "qualifying_items" + { + "1" + { + "defindex" "39" + } + "2" + { + "defindex" "351" + } + "3" + { + "defindex" "740" + } + "4" + { + "defindex" "38" + } + "5" + { + "defindex" "415" + } + } + } + } + } + "95" + { + "name" "Collect a head as Demo" + "required_items" + { + "1" + { + "loaner_defindex" "132" + "qualifying_items" + { + "1" + { + "defindex" "132" + } + "2" + { + "defindex" "266" + } + "3" + { + "defindex" "482" + } + } + } + } + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "demoman" + } + "1" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "2" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "3" + { + "type" "OR" + "0" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "132" + } + "1" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "482" + } + "2" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "266" + } + "2" + { + "type" "AND" + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_TAUNTATK_BARBARIAN_SWING" + } + "0" + { + "type" "OR" + "0" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "132" + } + "0" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "482" + } + "0" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "266" + } + } + } + } + } + } + } + "96" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "patient" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "healer" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "event_name" "player_healed" + "score_key_name" "none" + "type" "event_listener" + } + "name" "Feed a teammate" + "required_items" + { + "1" + { + "loaner_defindex" "42" + "qualifying_items" + { + "1" + { + "defindex" "42" + } + "2" + { + "defindex" "159" + } + "3" + { + "defindex" "433" + } + "4" + { + "defindex" "311" + } + "5" + { + "defindex" "863" + } + } + } + } + } + "97" + { + "name" "Wrangled sentry kill" + "required_items" + { + "1" + { + "loaner_defindex" "140" + "qualifying_items" + { + "1" + { + "defindex" "140" + } + } + } + } + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "scorer" + "player_key" "attacker" + "get_player" "by_id" + "scorer_key" "inflictor_entindex" + } + "1" + { + "type" "scorer" + "player_key" "assister" + "get_player" "by_id" + "scorer_key" "inflictor_entindex" + } + } + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_PLAYER_SENTRY" + } + "2" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + } + "98" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "engineer" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "3" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_SHOTGUN_REVENGE_CRIT" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Revenge kill as Engineer" + "required_items" + { + "1" + { + "loaner_defindex" "141" + "qualifying_items" + { + "1" + { + "defindex" "141" + } + } + } + } + } + "99" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "userid" + "provider_must_be_owner" "0" + "type" "player_condition" + "value" "TF_COND_URINE" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Jarate kill as Sniper" + "required_items" + { + "1" + { + "loaner_defindex" "58" + "qualifying_items" + { + "1" + { + "defindex" "58" + } + "2" + { + "defindex" "230" + } + } + } + } + } + "100" + { + "condition_logic" + { + "0" + { + "0" + { + "key_to_lookup" "weapon_def_index" + "type" "weapon_def_index" + "value" "232" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "4" + { + "get_player" "by_id" + "player_key" "userid" + "provider_must_be_owner" "0" + "type" "player_condition" + "value" "TF_COND_URINE" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Buschwacka kill a Jarated enemy" + "required_items" + { + "1" + { + "loaner_defindex" "232" + "qualifying_items" + { + "1" + { + "defindex" "232" + } + } + } + "2" + { + "loaner_defindex" "58" + "qualifying_items" + { + "1" + { + "defindex" "58" + } + "2" + { + "defindex" "230" + } + } + } + } + } + "101" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "1" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_ZOOMED" + } + "type" "NOT" + } + "2" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT" + } + "3" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "4" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "No-Scope Headshot as Sniper" + "required_items" + { + "1" + { + "loaner_defindex" "1098" + "qualifying_items" + { + "1" + { + "defindex" "1098" + } + } + } + } + } + "102" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "sniper" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "3" + { + "key_to_lookup" "weapon_def_index" + "type" "weapon_class" + "value" "tf_weapon_compound_bow" + } + "4" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Headshot with an arrow as Sniper" + "required_items" + { + "1" + { + "loaner_defindex" "56" + "qualifying_items" + { + "1" + { + "defindex" "56" + } + "2" + { + "defindex" "1092" + } + } + } + } + } + "103" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_HEADSHOT" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Headshot kill as Spy" + "required_items" + { + "1" + { + "loaner_defindex" "61" + "qualifying_items" + { + "1" + { + "defindex" "61" + } + "2" + { + "defindex" "1006" + } + } + } + } + } + "104" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_BACKSTAB" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "4" + { + "0" + { + "key_to_lookup" "weapon_def_index" + "type" "weapon_def_index" + "value" "574" + } + "1" + { + "key_to_lookup" "weapon_def_index" + "type" "weapon_def_index" + "value" "225" + } + "type" "OR" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Silent backstab as Spy" + "required_items" + { + "1" + { + "loaner_defindex" "225" + "qualifying_items" + { + "1" + { + "defindex" "225" + } + "2" + { + "defindex" "574" + } + } + } + } + } + "105" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Pumpkin bomb kill" + } + "106" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_CRITBOOSTED_PUMPKIN" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Crumpkin kill" + } + "107" + { + "condition_logic" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "event_name" "halloween_pumpkin_grab" + "type" "event_listener" + } + "name" "Collect a crumpkin" + } + "108" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "TF_COND_STUNNED" + } + "3" + { + "0" + { + "type" "map" + "value" "koth_harvest_event" + } + "1" + { + "type" "map" + "value" "koth_viaduct_event" + } + "2" + { + "type" "map" + "value" "koth_lakeside_event" + } + "3" + { + "type" "map" + "value" "sd_doomsday_event" + } + "4" + { + "type" "map" + "value" "plr_hightower_event" + } + "type" "OR" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill 'Yikes'd enemy" + } + "109" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "1" + { + "key_to_lookup" "boss" + "type" "halloween_boss_type" + "value" "1" + } + "type" "AND" + } + "event_name" "halloween_boss_killed" + "type" "event_listener" + } + "name" "Kill HHH" + } + "110" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "1" + { + "key_to_lookup" "boss" + "type" "halloween_boss_type" + "value" "3" + } + "2" + { + "type" "map" + "value" "koth_lakeside_event" + } + "type" "AND" + } + "event_name" "halloween_boss_killed" + "type" "event_listener" + } + "name" "Kill Merasmus" + } + "111" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "1" + { + "key_to_lookup" "boss" + "type" "halloween_boss_type" + "value" "2" + } + "2" + { + "type" "map" + "value" "koth_viaduct_event" + } + "type" "AND" + } + "event_name" "halloween_boss_killed" + "type" "event_listener" + } + "name" "Kill Monoculus" + } + "112" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_PURGATORY" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_PURGATORY" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "TF_COND_PURGATORY" + } + "3" + { + "type" "map" + "value" "koth_viaduct_event" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill an enemy in Purgatory in Eyaduct" + } + "113" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "koth_viaduct_event" + } + "type" "AND" + } + "event_name" "escaped_loot_island" + "type" "event_listener" + } + "name" "Escape Loot Island on Eyaduct" + } + "114" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "koth_lakeside_event" + } + "type" "AND" + } + "event_name" "escaped_loot_island" + "type" "event_listener" + } + "name" "Escape Skull Island on Ghost Fort" + } + "115" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "cp_manor_event" + } + "type" "AND" + } + "event_name" "tagged_player_as_it" + "type" "event_listener" + } + "name" "Tag a player as 'it' on Mann Manor" + } + "116" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "koth_lakeside_event" + } + "type" "AND" + } + "event_name" "merasmus_stunned" + "type" "event_listener" + } + "name" "Stun Merasmus with your Bomb Head" + } + "117" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "koth_lakeside_event" + } + "type" "AND" + } + "event_name" "merasmus_prop_found" + "type" "event_listener" + } + "name" "Find the prop Merasmus is hiding in" + } + "118" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "plr_hightower_event" + } + "type" "AND" + } + "event_name" "halloween_skeleton_killed" + "type" "event_listener" + } + "name" "Kill a Skeleton on Hell Tower" + } + "119" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "escape_hell" + "type" "event_listener" + } + "name" "Escape Hell on Hell Tower" + } + "120" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_HALLOWEEN_IN_HELL" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_HALLOWEEN_IN_HELL" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "OR" + } + "1" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "TF_COND_HALLOWEEN_GHOST_MODE" + } + "3" + { + "type" "map" + "value" "plr_hightower_event" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill an enemy in Hell on Hell Tower" + } + "121" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "plr_hightower_event" + } + "type" "AND" + } + "event_name" "cross_spectral_bridge" + "type" "event_listener" + } + "name" "Cross Spectral Bridge in Hell Tower" + } + "122" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "sd_doomsday_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "minigame_won" + "type" "event_listener" + } + "name" "Win a Bumper Kart minigame" + } + "123" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "reviver" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "sd_doomsday_event" + } + "type" "AND" + } + "event_name" "respawn_ghost" + "type" "event_listener" + } + "name" "Revive a Ghost in Bumper Cars" + } + "124" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "2" + { + "type" "map" + "value" "sd_doomsday_event" + } + "type" "AND" + } + "event_name" "kill_in_hell" + "type" "event_listener" + } + "name" "Bump an enemy to death" + } + "125" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collector" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "sd_doomsday_event" + } + "type" "AND" + } + "event_name" "halloween_duck_collected" + "type" "event_listener" + } + "name" "Collect a Duck in Bumper Karts" + } + "126" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_viaduct_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a soul on Eyeaduct" + } + "127" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_lakeside_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a Soul on Ghost Fort" + } + "128" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "plr_hightower_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a soul on Helltower" + } + "129" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "sd_doomsday_event" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_MELEE_ONLY" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_SWIMMING_CURSE" + } + "2" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_BALLOON_HEAD" + } + "type" "OR" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "0" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_AIMING" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_AIMING" + } + "2" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "value" "TF_COND_AIMING" + } + "type" "OR" + } + "type" "AND" + } + "type" "OR" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill while cursed on Carnival of Carnage" + } + "130" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "sd_doomsday_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a soul on Carnival of Carnage" + } + "131" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "cp_manor_event" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a soul on Mann Manor" + } + "132" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "cp_manor_event" + } + "type" "AND" + } + "action" "increment" + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "blocker" + "type" "player_is_owner" + } + "1" + { + "type" "map" + "value" "cp_manor_event" + } + "type" "AND" + } + "action" "increment" + "event_name" "capper_killed" + "type" "event_listener" + } + "end" "1" + "type" "counter" + } + "name" "Capture or Defend an objective on Mann Manor" + } + "133" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "TF_COND_STUNNED" + } + "3" + { + "type" "map" + "value" "koth_harvest_event" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill a Yikes'd enemy on Harvest Event" + } + "134" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_harvest_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a soul on Harvest Event" + } + "135" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_harvest_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_pumpkin_grab" + "type" "event_listener" + } + "name" "Collect a Halloween Pumpkin on Harvest Event: %s1" + } + "136" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_harvest_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "2" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill with pumpkin bomb on Harvest Event" + } + "137" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "cp_gorge_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect souls on Gorge Event" + } + "138" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_moonshine_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect souls on Moonshine Event" + } + "139" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "pl_millstone_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect souls on Hellstone" + } + "140" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "cp_sunshine_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "intended_target" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect souls on Sinshin" + } + "141" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "cp_gorge_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_pumpkin_grab" + "type" "event_listener" + } + "name" "Coolect a crumpkin on Gorge_event" + } + "142" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "koth_moonshine_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_pumpkin_grab" + "type" "event_listener" + } + "name" "Collect a crumpkin on Moonshine" + } + "143" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "pl_millstone_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_pumpkin_grab" + "type" "event_listener" + } + "name" "Collect a crumpkin on Hellstone" + } + "144" + { + "condition_logic" + { + "0" + { + "0" + { + "type" "map" + "value" "cp_sunshine_event" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "halloween_pumpkin_grab" + "type" "event_listener" + } + "name" "Collect a crumpkin on Sinshine" + } + "145" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + "1" + { + "type" "map" + "value" "cp_gorge_event" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill with pumpkin bomb on Gorge_event" + } + "146" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + "1" + { + "type" "map" + "value" "koth_moonshine_event" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill with pumpkin bomb on Moonshine (event)" + } + "147" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + "1" + { + "type" "map" + "value" "pl_millstone_event" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill with pumpkin bomb on Hellstone" + } + "148" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + "1" + { + "type" "map" + "value" "cp_sunshine_event" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill with pumpkin bomb on Sinshine" + } + "149" + { + "name" "[Template] Get var1 direct air-hits with weapon defindex var2 in a row" + "condition_logic" + { + "type" "counter" + "end" "$var1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "projectile_direct_hit" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "victim" + "get_player" "by_entindex" + "is_owner" "0" + } + "2" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "$var2" + } + "3" + { + "type" "player_jumping" + "player_key" "victim" + "get_player" "by_entindex" + "jumping_state" "1" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "projectile_removed" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "$var2" + } + "1" + { + "type" "num_direct_hit" + "key_to_lookup" "num_direct_hit" + "value" "0" + } + } + } + } + } + "150" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "spy" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "spy" + "type" "player_class" + "value" "spy" + } + "type" "AND" + } + "event_name" "deadringer_cheat_death" + "type" "event_listener" + } + "name" "Spy Deadringer cheat death" + "required_items" + { + "1" + { + "loaner_defindex" "59" + "qualifying_items" + { + "1" + { + "defindex" "59" + } + } + } + } + } + "151" + { + "condition_logic" + { + "0" + { + "0" + { + "custom_damage_key" "customkill" + "type" "custom_damage" + "value" "TF_DMG_CUSTOM_BACKSTAB" + } + "0" + { + "disguise_target" "0" + "get_player" "by_id" + "player_key" "userid" + "type" "player_disguise" + } + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Spy backstab disguise target" + } + "152" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_condition" + "value" "TF_COND_DISGUISED" + } + "type" "NOT" + } + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Spy backstab undisguised" + } + "153" + { + "condition_logic" + { + "0" + { + "0" + { + "key_to_lookup" "weapon_def_index" + "type" "weapon_class" + "value" "tf_weapon_revolver" + } + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Spy revolver kill" + } + "154" + { + "name" "Sniper Huntsman long kill" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_distance" + "player_key" "userid" + "get_player" "by_id" + "distance_check_type" "2" + "distance_to_check" "500" + } + "1" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "tf_weapon_compound_bow" + } + "2" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "3" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "4" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "sniper" + } + } + } + } + "155" + { + "name" "Close Sniper Huntsman kill" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_distance" + "player_key" "userid" + "get_player" "by_id" + "distance_check_type" "1" + "distance_to_check" "501" + } + "1" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "2" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "3" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "sniper" + } + "4" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "tf_weapon_compound_bow" + } + } + } + } + "157" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Assist in a kill as Medic" + } + "158" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "userid" + "provider_must_be_owner" "1" + "type" "player_condition" + "value" "TF_COND_URINE" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "sniper" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Jarate assist as Sniper" + "required_items" + { + "1" + { + "loaner_defindex" "58" + "qualifying_items" + { + "1" + { + "defindex" "58" + } + "2" + { + "defindex" "230" + } + } + } + } + } + "159" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "target" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "2" + { + "get_player" "by_id" + "player_key" "healer" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "action" "increment" + "event_name" "crossbow_heal" + "score_key_name" "amount" + "type" "event_listener" + } + "end" "50" + "type" "counter" + } + "name" "Medic heal 50 with a crusader's crossbow" + "required_items" + { + "1" + { + "loaner_defindex" "305" + "qualifying_items" + { + "1" + { + "defindex" "305" + } + } + } + } + } + "160" + { + "name" "Long range medic crusader's crossbow heal" + "condition_logic" + { + "type" "event_listener" + "event_name" "crossbow_heal" + "score_key_name" "none" + "0" + { + "type" "AND" + "0" + { + "type" "player_distance" + "player_key" "target" + "get_player" "by_id" + "distance_check_type" "2" + "distance_to_check" "500" + } + "1" + { + "type" "player_is_owner" + "player_key" "healer" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "161" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "healer" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "player_key" "healer" + "type" "player_class" + "value" "medic" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "patient" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_healed" + "score_key_name" "amount" + "type" "event_listener" + } + "end" "200" + "type" "counter" + } + "name" "Medic self heal 200 health" + } + "162" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "demoman" + } + "1" + { + "key_to_lookup" "bonuseffect" + "type" "bonuseffect" + "value" "2" + } + "2" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "3" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_hurt" + "score_key_name" "none" + "type" "event_listener" + } + "name" "Double-Donk! as Demoman" + "required_items" + { + "1" + { + "loaner_defindex" "996" + "qualifying_items" + { + "1" + { + "defindex" "996" + } + } + } + } + } + "163" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "mitigator" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "damaged" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "player_key" "mitigator" + "type" "player_class" + "value" "heavy" + } + "type" "AND" + } + "action" "increment" + "event_name" "damage_mitigated" + "score_key_name" "amount" + "type" "event_listener" + } + "end" "500" + "type" "counter" + } + "name" "Mitigate 500 damage as heavy" + "required_items" + { + "1" + { + "loaner_defindex" "331" + "qualifying_items" + { + "1" + { + "defindex" "331" + } + } + } + } + } + "164" + { + "name" "Push a payload cart ~20 feet" + "condition_logic" + { + "type" "counter" + "end" "20" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "payload_pushed" + "score_key_name" "distance" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "pusher" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "game_type" + "value" "TF_GAMETYPE_ESCORT" + } + } + } + } + } + "165" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "0" + { + "type" "game_type" + "value" "TF_GAMETYPE_ESCORT" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points in payload" + } + "166" + { + "name" "Win a payload round" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "AND" + "0" + { + "type" "game_type" + "value" "TF_GAMETYPE_ESCORT" + } + "0" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + } + } + } + "167" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "1" + { + "type" "game_type" + "value" "TF_GAMETYPE_ESCORT" + } + "2" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "killed_capping_player" + "type" "event_listener" + } + "name" "Defend the cart on payload" + } + "168" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "0" + { + "type" "game_type" + "value" "TF_GAMETYPE_CP" + } + "type" "AND" + } + "event_name" "player_score_changed" + "score_key_name" "delta" + "type" "event_listener" + } + "name" "Score points on CP" + } + "169" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_cappers" + "is_owner" "1" + "player_key" "cappers" + "type" "player_is_owner" + } + "0" + { + "type" "game_type" + "value" "TF_GAMETYPE_CP" + } + "type" "AND" + } + "event_name" "teamplay_point_captured" + "type" "event_listener" + } + "name" "Capture a CP on CP" + } + "170" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "killer" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "OR" + } + "0" + { + "type" "game_type" + "value" "TF_GAMETYPE_CP" + } + "type" "AND" + } + "event_name" "killed_capping_player" + "type" "event_listener" + } + "name" "Defend a CP on CP" + } + "171" + { + "name" "Win a round of CP" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "AND" + "1" + { + "type" "game_type" + "value" "TF_GAMETYPE_CP" + } + "1" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + } + } + } + "172" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "provider_must_be_owner" "1" + "type" "player_condition" + "value" "TF_COND_CRITBOOSTED" + } + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "0" + { + "get_player" "by_id" + "player_key" "assister" + "provider_must_be_owner" "1" + "type" "player_condition" + "value" "TF_COND_CRITBOOSTED" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Assist in a Kritz kill" + } + "173" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "action" "reset" + "event_name" "player_chargedeployed" + "type" "event_listener" + } + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "assister" + "provider_must_be_owner" "1" + "type" "player_condition" + "value" "TF_COND_CRITBOOSTED" + } + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "provider_must_be_owner" "1" + "type" "player_condition" + "value" "TF_COND_CRITBOOSTED" + } + "0" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_death" + "type" "event_listener" + } + "end" "3" + "type" "counter" + } + "name" "Assist in 3 Crit-Boosted kills in one deploy as medic" + } + "174" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "mitigator" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "mitigator" + "type" "player_class" + "value" "spy" + } + "2" + { + "key_to_lookup" "itemdefindex" + "type" "weapon_def_index" + "value" "59" + } + "type" "AND" + } + "action" "increment" + "event_name" "damage_mitigated" + "score_key_name" "amount" + "type" "event_listener" + } + "end" "125" + "type" "counter" + } + "name" "Absorb 125 health with the Deadringer" + "required_items" + { + "1" + { + "loaner_defindex" "59" + "qualifying_items" + { + "1" + { + "defindex" "59" + } + } + } + } + } + "175" + { + "name" "Undisguised kill as Spy" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "type" "player_class" + "player_key" "attacker" + "get_player" "by_id" + "value" "spy" + } + "3" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "3" + { + "type" "NOT" + "0" + { + "type" "player_condition" + "player_key" "attacker" + "get_player" "by_id" + "value" "TF_COND_DISGUISED" + "provider_must_be_owner" "0" + } + } + } + } + } + "176" + { + "name" "Snowycoast Community Map score points" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_score_changed" + "score_key_name" "delta" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "map" + "value" "pl_snowycoast" + } + } + } + } + "177" + { + "name" "Snowycoast Community Map Win a round" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "AND" + "0" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + "1" + { + "type" "map" + "value" "pl_snowycoast" + } + } + } + } + "178" + { + "name" "Vanguard Community Map score points" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_score_changed" + "score_key_name" "delta" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "map" + "value" "cp_vanguard" + } + } + } + } + "179" + { + "name" "Vanguard Community Map win a round" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "AND" + "0" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + "0" + { + "type" "map" + "value" "cp_vanguard" + } + } + } + } + "180" + { + "name" "Landfall Community Map score points" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_score_changed" + "score_key_name" "delta" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "map" + "value" "ctf_landfall" + } + } + } + } + "181" + { + "name" "Landfall Community Map win a round" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "ctf_landfall" + } + "0" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + } + } + } + "182" + { + "name" "Highpass Community Map score points" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_score_changed" + "score_key_name" "delta" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "map" + "value" "koth_highpass" + } + } + } + } + "183" + { + "name" "Highpass Community Map win a round" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "koth_highpass" + } + "0" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + } + } + } + "184" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "attacker" + "type" "player_class" + "value" "spy" + } + "0" + { + "0" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "medic" + } + "0" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "heavy" + } + "0" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "engineer" + } + "0" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_class" + "value" "sniper" + } + "type" "OR" + } + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Kill high priority target as Spy" + } + "185" + { + "name" "Taunt kill as Demoman" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_TAUNTATK_BARBARIAN_SWING" + } + } + } + } + "186" + { + "name" "Heal 100 damage on hit in a single life as Soldier" + "condition_logic" + { + "type" "counter" + "end" "100" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_healonhit" + "score_key_name" "amount" + "0" + { + "type" "AND" + "0" + { + "type" "player_class" + "player_key" "entindex" + "get_player" "by_entindex" + "value" "soldier" + } + "1" + { + "type" "player_is_owner" + "player_key" "entindex" + "get_player" "by_entindex" + "is_owner" "1" + } + "2" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "228" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "187" + { + "name" "Taunt kill as Sniper" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_TAUNTATK_ARROW_STAB" + } + } + } + } + "188" + { + "name" "Collect souls on Maple Ridge Event" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "koth_maple_ridge_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "collecting_player" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "189" + { + "name" "Collect crumpkins on Maple Ridge" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_pumpkin_grab" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "koth_maple_ridge_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "190" + { + "name" "Kill with pumpkin bomb on Maple Ridge" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "koth_maple_ridge_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + } + } + } + "191" + { + "name" "Collect souls on Brimstone" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "pl_fifthcurve_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "collecting_player" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "192" + { + "name" "Collect crumpkins on Brimstone" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_pumpkin_grab" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "pl_fifthcurve_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "193" + { + "name" "Kill with pumpkin bomb on Brimstone" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "pl_fifthcurve_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + } + } + } + "194" + { + "name" "Collect souls on Pit of Death" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "pd_pit_of_death_event" + } + "0" + { + "type" "player_is_owner" + "player_key" "collecting_player" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "195" + { + "name" "Collect lost souls on Pit of Death" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "pd_pit_of_death_event" + } + "1" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + "196" + { + "name" "Deposit lost souls on Pit of Death" + "condition_logic" + { + "type" "event_listener" + "event_name" "special_score" + "0" + { + "type" "AND" + "0" + { + "type" "map" + "value" "pd_pit_of_death_event" + } + "1" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + "199" + { + "name" "Capture objective" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_point_captured" + "0" + { + "type" "player_is_owner" + "player_key" "cappers" + "get_player" "by_cappers" + "is_owner" "1" + } + } + } + "201" + { + "name" "Defend objective" + "condition_logic" + { + "type" "event_listener" + "event_name" "capper_killed" + "0" + { + "type" "player_is_owner" + "player_key" "blocker" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + "203" + { + "name" "[Template] var1 Kills in single life" + "condition_logic" + { + "type" "counter" + "end" "$var1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "204" + { + "name" "Score points" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_score_changed" + "score_key_name" "delta" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + "206" + { + "name" "Win a round" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_round_win" + "0" + { + "type" "team_restriction" + "team_key" "team" + "team_requirement" "1" + } + } + } + "207" + { + "name" "Capture point/flag" + "condition_logic" + { + "type" "counter" + "end" "1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_point_captured" + "0" + { + "type" "player_is_owner" + "player_key" "cappers" + "get_player" "by_cappers" + "is_owner" "1" + } + } + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "flag_event_type" + "event_key" "eventtype" + "value" "TF_FLAGEVENT_CAPTURE" + } + } + } + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "pass_score" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "scorer" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + } + "210" + { + "name" "Get a domination" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_domination" + "score_key_name" "none" + "0" + { + "type" "player_is_owner" + "player_key" "dominator" + "get_player" "by_id" + "is_owner" "1" + } + } + } + "211" + { + "name" "[Template] Deal var1 of damage type var2 in a single life" + "condition_logic" + { + "type" "counter" + "end" "$var1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_hurt" + "score_key_name" "damageamount" + "0" + { + "type" "AND" + "0" + { + "type" "player_alive" + "player_key" "attacker" + "get_player" "by_id" + "alive_state" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "2" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "3" + { + "type" "custom_damage" + "custom_damage_key" "custom" + "value" "$var2" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "212" + { + "name" "[Template] Extinguish a player with var1" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_extinguished" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "healer" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "victim" + "get_player" "by_entindex" + "is_owner" "0" + } + "0" + { + "type" "weapon_def_index" + "key_to_lookup" "itemdefindex" + "value" "$var1" + } + } + } + } + "213" + { + "name" "Push back with rocketpack" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_rocketpack_pushed" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "pusher" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "214" + { + "name" "Defend objective" + "condition_logic" + { + "type" "counter" + "end" "1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "capper_killed" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "blocker" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "victim" + "get_player" "by_entindex" + "is_owner" "0" + } + } + } + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "killed_capping_player" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "killer" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "flag_event_type" + "event_key" "eventtype" + "value" "TF_FLAGEVENT_DEFEND" + } + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + } + "215" + { + "name" "Be MVP" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_win_panel" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "player_0" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "player_1" + "get_player" "by_entindex" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "player_2" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + "216" + { + "name" "Capture or defend an objective" + "condition_logic" + { + "type" "counter" + "end" "1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_point_captured" + "0" + { + "type" "player_is_owner" + "player_key" "cappers" + "get_player" "by_cappers" + "is_owner" "1" + } + } + "1" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "flag_event_type" + "event_key" "eventtype" + "value" "TF_FLAGEVENT_CAPTURE" + } + } + } + "2" + { + "type" "event_listener" + "action" "increment" + "event_name" "capper_killed" + "0" + { + "type" "player_is_owner" + "player_key" "blocker" + "get_player" "by_entindex" + "is_owner" "1" + } + } + "3" + { + "type" "event_listener" + "action" "increment" + "event_name" "teamplay_flag_event" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + "217" + { + "name" "[Template] Kill enemy who has condition var1" + "condition_logic" + { + "0" + { + "type" "AND" + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "type" "OR" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "userid" + "type" "player_condition" + "value" "$var1" + } + "type" "AND" + } + } + "event_name" "player_death" + "type" "event_listener" + } + } + "218" + { + "name" "Kill enemy with a rune" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "OR" + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_STRENGTH" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_HASTE" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_REGEN" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_RESIST" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_VAMPIRE" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_REFLECT" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_PRECISION" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_AGILITY" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_KNOCKOUT" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_KING" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_PLAGUE" + "provider_must_be_owner" "0" + } + "0" + { + "type" "player_condition" + "player_key" "userid" + "get_player" "by_id" + "value" "TF_COND_RUNE_SUPERNOVA" + "provider_must_be_owner" "0" + } + } + } + } + } + "219" + { + "name" "[Template] Custom Damage var1 kill count var2" + "condition_logic" + { + "type" "counter" + "end" "$var2" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "$var1" + } + } + } + } + } + "220" + { + "name" "[Template] Weapon slot var1 kill count var2" + "condition_logic" + { + "type" "counter" + "end" "$var2" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "loadout_position" + "player_key" "attacker" + "get_player" "by_id" + "loadout_key" "weapon_def_index" + "value" "$var1" + } + } + } + } + } + "221" + { + "name" "[Template] Weapon defindex var1 kill count var2 within var3 period" + "condition_logic" + { + "type" "counter" + "period" "$var3" + "end" "$var2" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "$var1" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "222" + { + "name" "[Template] Take var1 damage in a single life" + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "alive_state" "1" + "get_player" "by_id" + "player_key" "userid" + "type" "player_alive" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_hurt" + "score_key_name" "damageamount" + "type" "event_listener" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "$var1" + "type" "counter" + } + } + "223" + { + "name" "[Template] Get var1 direct hits with weapon defindex var2 in a row" + "condition_logic" + { + "type" "counter" + "end" "$var1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "projectile_direct_hit" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "victim" + "get_player" "by_entindex" + "is_owner" "0" + } + "2" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "$var2" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "projectile_removed" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_entindex" + "is_owner" "1" + } + "1" + { + "type" "weapon_def_index" + "key_to_lookup" "weapon_def_index" + "value" "$var2" + } + "1" + { + "type" "num_direct_hit" + "key_to_lookup" "num_direct_hit" + "value" "0" + } + } + } + } + } + "224" + { + "name" "[Template] var1 Kills of crit type var2 in single life" + "condition_logic" + { + "type" "counter" + "end" "$var1" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "key_to_lookup" "crit_type" + "type" "crit_kill" + "value" "$var2" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "225" + { + "name" "[Template] Weapon class var1 kill count var2 within var3 period" + "condition_logic" + { + "type" "counter" + "end" "$var2" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "1" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "1" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "2" + { + "type" "weapon_class" + "key_to_lookup" "weapon_def_index" + "value" "$var1" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + "perdiod" "$var3" + } + } + } + } + "226" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_class" + "value" "medic" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "assister" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "assister" + "type" "player_condition" + "provider_must_be_owner" "1" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "2" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_id" + "player_key" "attacker" + "provider_must_be_owner" "1" + "type" "player_condition" + "value" "TF_COND_INVULNERABLE" + } + "type" "AND" + } + "type" "AND" + } + "event_name" "player_death" + "type" "event_listener" + } + "name" "Get an assist with an Ubered teammate" + } + "227" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "douser" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "gas_doused_player_ignited" + "type" "event_listener" + } + "name" "Have one of your gas-doused enemies get ignited" + } + "228" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "igniter" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "is_owner" "0" + "player_key" "victim" + "type" "player_is_owner" + } + "type" "AND" + } + "event_name" "gas_doused_player_ignited" + "type" "event_listener" + } + "name" "Ignite a gas-doused enemy" + } + "229" + { + "condition_logic" + { + "0" + { + "0" + { + "get_player" "by_entindex" + "is_owner" "1" + "player_key" "catcher" + "type" "player_is_owner" + } + "1" + { + "get_player" "by_entindex" + "is_enemy" "1" + "player_key" "passer" + "type" "player_is_enemy" + } + "type" "AND" + } + "event_name" "pass_pass_caught" + "type" "event_listener" + } + "name" "Intercept a PASS Time ball" + } + "230" + { + "name" "[Template] var1 string equal to var2 for var3 count. Substring var4" + "condition_logic" + { + "type" "counter" + "end" "$var3" + "0" + { + "type" "event_listener" + "action" "increment" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "OR" + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "player_is_owner" + "player_key" "assister" + "get_player" "by_id" + "is_owner" "1" + } + } + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "key_to_lookup" "$var1" + "type" "var" + "value" "$var2" + "strings_equal" "$var4" + } + } + } + "1" + { + "type" "event_listener" + "action" "reset" + "event_name" "player_death" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + } + "231" + { + "condition_logic" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "collecting_player" + "type" "player_is_owner" + } + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "type" "event_listener" + } + "name" "Collect a Soul" + } + "232" + { + "name" "Collect souls" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_soul_collected" + "score_key_name" "soul_count" + "0" + { + "type" "player_is_owner" + "player_key" "collecting_player" + "get_player" "by_id" + "is_owner" "1" + } + } + } + "233" + { + "name" "Collect crumpkins" + "condition_logic" + { + "type" "event_listener" + "event_name" "halloween_pumpkin_grab" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "1" + } + } + } + "234" + { + "name" "Kill with pumpkin bomb" + "condition_logic" + { + "type" "event_listener" + "event_name" "player_death" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "userid" + "get_player" "by_id" + "is_owner" "0" + } + "0" + { + "type" "player_is_owner" + "player_key" "attacker" + "get_player" "by_id" + "is_owner" "1" + } + "0" + { + "type" "custom_damage" + "custom_damage_key" "customkill" + "value" "TF_DMG_CUSTOM_PUMPKIN_BOMB" + } + } + } + } + "235" + { + "name" "Deposit lost souls" + "condition_logic" + { + "type" "event_listener" + "event_name" "special_score" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + "236" + { + "condition_logic" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "event_name" "halloween_skeleton_killed" + "type" "event_listener" + } + "name" "Kill a Skeleton" + } + "237" + { + "condition_logic" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "event_name" "skeleton_king_killed_quest" + "type" "event_listener" + } + "name" "Kill a Skeleton King" + } + "238" + { + "condition_logic" + { + "0" + { + "0" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "1" + { + "alive_state" "1" + "get_player" "by_id" + "player_key" "userid" + "type" "player_alive" + } + "type" "AND" + } + "1" + { + "0" + { + "get_player" "by_id" + "is_owner" "0" + "player_key" "attacker" + "type" "player_is_owner" + } + "type" "AND" + } + "type" "AND" + } + "action" "increment" + "event_name" "player_hurt" + "score_key_name" "damageamount" + "type" "event_listener" + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "$var1" + "type" "counter" + } + "name" "Take var1 damage in a single life" + } + "239" + { + "name" "Collect PD objective / pickup flag" + "condition_logic" + { + "type" "event_listener" + "event_name" "teamplay_flag_event" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + } + "240" + { + "condition_logic" + { + "0" + { + "type" "event_listener" + "event_name" "special_score" + "action" "increment" + "0" + { + "type" "AND" + "0" + { + "type" "player_is_owner" + "player_key" "player" + "get_player" "by_entindex" + "is_owner" "1" + } + } + } + "1" + { + "0" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "userid" + "type" "player_is_owner" + } + "type" "AND" + } + "action" "reset" + "event_name" "player_death" + "type" "event_listener" + } + "end" "$var1" + "type" "counter" + } + "name" "[Template] Deposit PD objective [var1] times in single life" + } + "241" + { + "condition_logic" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "event_name" "skeleton_killed_quest" + "type" "event_listener" + } + "name" "Kill a Skeleton" + } + "242" + { + "condition_logic" + { + "0" + { + "get_player" "by_id" + "is_owner" "1" + "player_key" "player" + "type" "player_is_owner" + } + "event_name" "escaped_loot_island" + "type" "event_listener" + } + "name" "Escape Purgatory / Underworld / Hell" + } +} + "item_series_types" + { + "card_type_old" + { + "value" "0" + "loc_key" "tf_series_legacy" + "ui" "blah.res" + } + "card_type_v2" + { + "value" "2" + "loc_key" "tf_series_v2" + "ui" "blah.res" + } + } + "item_collections" + { + "Operation_gun_mettle_master_collection" + { + "name" "#operation_gun_mettle_master_collection" + "description" "#operation_gun_mettle_master_collection_desc" + "is_reference_collection" "1" + "items" + { + "Concealed Killer Collection Dummy" "10" + "Craftsmann Collection Dummy" "10" + "Powerhouse Collection Dummy" "10" + "Teufort Collection Dummy" "10" + "Gun Mettle Cosmetics Collection Dummy" "10" + } + } + + "Concealed_killer_collection" + { + "name" "#concealedkiller_collection" + "description" "#concealedkiller_collection_desc" + "items" + { + "ancient" + { + "concealedkiller_pistol_redrockroscoe" "10" + "concealedkiller_rocketlauncher_sandcannon" "10" + } + "legendary" + { + "concealedkiller_stickybomblauncher_suddenflurry" "10" + "concealedkiller_revolver_psychedelicslugger" "10" + "concealedkiller_sniperrifle_purplerange" "10" + } + "mythical" + { + "concealedkiller_scattergun_nightterror" "10" + "concealedkiller_stickybomblauncher_carpetbomber" "10" + "concealedkiller_rocketlauncher_woodlandwarrior" "10" + "concealedkiller_medigun_wrappedreviver" "10" + } + "rare" + { + "concealedkiller_flamethrower_forestfire" "10" + "concealedkiller_sniperrifle_nightowl" "10" + "concealedkiller_smg_woodsywidowmaker" "10" + "concealedkiller_shotgun_backwoodsboomstick" "10" + "concealedkiller_minigun_kingofthejungle" "10" + "concealedkiller_medigun_maskedmender" "10" + } + } + } + + "Craftsmann_collection" + { + "name" "#craftsmann_collection" + "description" "#craftsmann_collection_desc" + "items" + { + "mythical" + { + "craftsmann_scattergun_tartantorpedo" "10" + "craftsmann_sniperrifle_lumberfromdownunder" "10" + } + "rare" + { + "craftsmann_shotgun_rusticruiner" "10" + "craftsmann_flamethrower_barnburner" "10" + "craftsmann_pistol_homemadeheater" "10" + } + "uncommon" + { + "craftsmann_smg_plaidpotshotter" "10" + "craftsmann_scattergun_countrycrusher" "10" + "craftsmann_minigun_ironwood" "10" + "craftsmann_sniperrifle_shotinthedark" "10" + "craftsmann_stickybomblauncher_blastedbombardier" "10" + } + "common" + { + "craftsmann_scattergun_backcountryblaster" "10" + "craftsmann_minigun_antiqueannihilator" "10" + "craftsmann_revolver_oldcountry" "10" + "craftsmann_rocketlauncher_americanpastoral" "10" + "craftsmann_medigun_reclaimedreanimator" "10" + } + } + } + + "Teufort_collection" + { + "name" "#teufort_collection" + "description" "#teufort_collection_desc" + "items" + { + "mythical" + { + "teufort_flamethrower_bovineblazemaker" "10" + "teufort_minigun_warroom" "10" + } + "rare" + { + "teufort_smg_treadplatetormenter" "10" + "teufort_sniperrifle_bogtrotter" "10" + "teufort_flamethrower_earthskyandfire" "10" + } + "uncommon" + { + "teufort_smg_teamsprayer" "10" + "teufort_scattergun_sprucedeuce" "10" + "teufort_pistol_hickoryholepuncher" "10" + "teufort_stickybomblauncher_rooftopwrangler" "10" + } + "common" + { + "teufort_shotgun_civicduty" "10" + "teufort_medigun_civilservant" "10" + "teufort_pistol_localhero" "10" + "teufort_revolver_mayor" "10" + "teufort_rocketlauncher_smalltownbringdown" "10" + "teufort_minigun_citizenpain" "10" + } + } + } + + "Powerhouse_collection" + { + "name" "#Powerhouse_collection" + "description" "#Powerhouse_collection_desc" + "items" + { + "ancient" + { + "powerhouse_sniperrifle_thunderbolt" "10" + "powerhouse_stickybomblauncher_liquidasset" "10" + } + "legendary" + { + "powerhouse_rocketlauncher_shellshocker" "10" + "powerhouse_scattergun_currentevent" "10" + "powerhouse_stickybomblauncher_pinkelephant" "10" + } + "mythical" + { + "powerhouse_flamethrower_flashfryer" "10" + "powerhouse_medigun_sparkoflife" "10" + "powerhouse_revolver_deadreckoner" "10" + "powerhouse_pistol_blackdahlia" "10" + "powerhouse_pistol_sandstonespecial" "10" + } + "rare" + { + "powerhouse_shotgun_lightningrod" "10" + "powerhouse_minigun_brickhouse" "10" + "powerhouse_rocketlauncher_aquamarine" "10" + "powerhouse_smg_lowprofile" "10" + "powerhouse_flamethrower_turbinetorcher" "10" + } + } + } + + "GunMettleCosmetics_collection" + { + "name" "#GunMettleCosmetics_collection" + "description" "#GunMettleCosmetics_collection_desc" + "items" + { + "ancient" + { + "Captain Cardbeard Cutthroat" "10" + "Potassium Bonnett" "10" + } + "legendary" + { + "Bruce's Bonnet" "10" + "El Duderino" "10" + "Sheriff's Stetson" "10" + } + "mythical" + { + "The Physician's Protector" "10" + "Outta' Sight" "10" + "Fortunate Son" "10" + "White Russian" "10" + } + "rare" + { + "The Rotation Sensation" "10" + "The Vascular Vestment" "10" + "Support Spurs" "10" + "Lurker's Leathers" "10" + "Commissar's Coat" "10" + "Wild West Waistcoat" "10" + "Flak Jack" "10" + } + } + } + + "Halloween_master_collection" + { + "name" "#Halloween_master_collection" + "description" "#Halloween_master_collection_desc" + "is_reference_collection" "1" + "items" + { + "Halloween 2015 Collection Dummy" "10" + "Halloween 2016 Collection Dummy" "10" + "Halloween 2018 Collection Dummy" "10" + "Scream Fortress 2018 War Paint Dummy" "10" + "Halloween 2019 Collection Dummy" "10" + "Halloween 2020 Collection Dummy" "10" + "Scream Fortress 2020 War Paint Dummy" "10" + "Halloween 2021 Collection Dummy" "10" + "Scream Fortress 2021 War Paint Dummy" "10" + "Halloween 2022 Collection Dummy" "10" + "Scream Fortress 2022 War Paint Dummy" "10" + "Halloween 2023 Collection Dummy" "10" + } + } + + "invasion_master_collection" + { + "name" "#invasion_master_collection" + "description" "#invasion_master_collection_desc" + "is_reference_collection" "1" + "items" + { + "Invasion Collection Dummy 01" "10" + "Invasion Collection Dummy 02" "10" + } + } + + "Invasion_collection_01_lootlist" + { + "name" "#Invasion_collection_01" + "description" "#Invasion_collection_01_desc" + "items" + { + "rare" + { + "Universal Translator" "10" + "Phobos Filter" "10" + "Final Frontiersman" "10" + "Life Support System" "10" + } + "mythical" + { + "Captain Space Mann" "10" + "Shooting Star" "10" + "Rocket Operator" "10" + } + "legendary" + { + "The Giger Counter" "10" + "Starduster" "10" + } + "ancient" + { + "Corona Australis" "10" + "Sucker Slug" "10" + } + } + } + + "Invasion_collection_02_lootlist" + { + "name" "#Invasion_collection_02" + "description" "#Invasion_collection_02_desc" + "items" + { + "rare" + { + "The Graylien" "10" + "Cadet Visor" "10" + "The Space Diver" "10" + "A Head Full of Hot Air" "10" + } + "mythical" + { + "Phononaut" "10" + "Jupiter Jetpack" "10" + "The C.A.P.P.E.R" "10" + } + "legendary" + { + "Space Hamster Hammy" "10" + "Taunt: Burstchester" "10" + } + "ancient" + { + "Batsaber" "10" + } + } + } + + "halloween2015_collection_lootlist" + { + "name" "#halloween2015_collection_name" + "description" "#halloween2015_collection_name_desc" + "items" + { + "rare" + { + "Roboot" "10" + "The Face of Mercy" "10" + "El Patron" "10" + "Smokey Sombrero" "10" + "Thrilling Tracksuit" "10" + "Prehistoric Pullover" "10" + "The Hellmet" "10" + "B'aaarrgh-n-Britches" "10" + } + "mythical" + { + "Neptune's Nightmare" "10" + "Death Racer's Helmet" "10" + "Duck Billed Hatypus" "10" + "Iron Lung" "10" + "B'aaarrgh-n-Bicorne" "10" + "El Caballero" "10" + } + "legendary" + { + "Grim Tweeter" "10" + "Crusader's Getup" "10" + "Dead'er Alive" "10" + } + "ancient" + { + "Arthropod's Aspect" "10" + "Catastrophic Companions" "10" + } + } + } + + "operation_tough_break_master_collection" + { + "name" "#operation_tough_break_master_collection" + "description" "#operation_tough_break_master_collection_desc" + "is_reference_collection" "1" + "items" + { + "common" + { + "Tough Break Collection Dummy 01" "10" + "Tough Break Collection Dummy 02" "10" + } + "rare" + { + "Tough Break Collection Dummy 03" "10" + "Tough Break Collection Dummy 04" "10" + "Tough Break Cosmetics Collection Dummy" "10" + } + } + } + + "tough_break_drop_collection_01" + { + "name" "#tough_break_drop_collection_01" + "description" "#tough_break_drop_collection_01_desc" + "items" + { + "mythical" + { + "harvest_revolver_boneyard" "10" + "harvest_sniperrifle_boneyard" "10" + "harvest_wrench_boneyard" "10" + } + "rare" + { + "harvest_knife_boneyard" "10" + "harvest_flamethrower_pumpkinpatch" "10" + "harvest_minigun_pumpkinpatch" "10" + "harvest_sniperrifle_pumpkinpatch" "10" + "harvest_stickybomblauncher_pumpkinpatch" "10" + } + "uncommon" + { + "harvest_pistol_macabreweb" "10" + "harvest_revolver_macabreweb" "10" + "harvest_scattergun_macabreweb" "10" + "harvest_grenadelauncher_macabreweb" "10" + "harvest_stickybomblauncher_macabreweb" "10" + "harvest_minigun_macabreweb" "10" + "harvest_flamethrower_autumn" "10" + "harvest_grenadelauncher_autumn" "10" + "harvest_stickybomblauncher_autumn" "10" + } + "common" + { + "harvest_rocketlauncher_autumn" "10" + "harvest_shotgun_autumn" "10" + "harvest_wrench_autumn" "10" + "harvest_flamethrower_nutcracker" "10" + "harvest_minigun_nutcracker" "10" + "harvest_pistol_nutcracker" "10" + "harvest_scattergun_nutcracker" "10" + "harvest_wrench_nutcracker" "10" + "harvest_medigun_wildwood" "10" + "harvest_revolver_wildwood" "10" + "harvest_smg_wildwood" "10" + "harvest_sniperrifle_wildwood" "10" + } + } + } + + "tough_break_drop_collection_02" + { + "name" "#tough_break_drop_collection_02" + "description" "#tough_break_drop_collection_02_desc" + "items" + { + "mythical" + { + "gentlemanne_grenadelauncher_topshelf" "10" + "gentlemanne_minigun_topshelf" "10" + "gentlemanne_wrench_topshelf" "10" + } + "rare" + { + "gentlemanne_knife_topshelf" "10" + "gentlemanne_revolver_topshelf" "10" + "gentlemanne_medigun_highrollers" "10" + "gentlemanne_smg_highrollers" "10" + } + "uncommon" + { + "gentlemanne_grenadelauncher_coffinnail" "10" + "gentlemanne_rocketlauncher_coffinnail" "10" + "gentlemanne_scattergun_coffinnail" "10" + "gentlemanne_shotgun_coffinnail" "10" + "gentlemanne_rocketlauncher_highrollers" "10" + } + "common" + { + "gentlemanne_flamethrower_coffinnail" "10" + "gentlemanne_medigun_coffinnail" "10" + "gentlemanne_minigun_coffinnail" "10" + "gentlemanne_revolver_coffinnail" "10" + "gentlemanne_sniperrifle_coffinnail" "10" + "gentlemanne_stickybomblauncher_coffinnail" "10" + "gentlemanne_knife_dressedtokill" "10" + "gentlemanne_medigun_dressedtokill" "10" + "gentlemanne_minigun_dressedtokill" "10" + "gentlemanne_pistol_dressedtokill" "10" + "gentlemanne_shotgun_dressedtokill" "10" + "gentlemanne_sniperrifle_dressedtokill" "10" + "gentlemanne_stickybomblauncher_dressedtokill" "10" + "gentlemanne_wrench_dressedtokill" "10" + } + } + } + + "tough_break_case_collection_01_pyroland" + { + "name" "#tough_break_case_collection_01" + "description" "#tough_break_case_collection_01_desc" + "items" + { + "ancient" + { + "pyroland_flamethrower_rainbow" "10" + "pyroland_grenadelauncher_rainbow" "10" + "pyroland_sniperrifle_rainbow" "10" + } + "legendary" + { + "pyroland_flamethrower_balloonicorn" "10" + "pyroland_sniperrifle_balloonicorn" "10" + "pyroland_grenadelauncher_sweetdreams" "10" + "pyroland_stickybomblauncher_sweetdreams" "10" + } + "mythical" + { + "pyroland_minigun_mistercuddles" "10" + "pyroland_knife_bluemew" "10" + "pyroland_pistol_bluemew" "10" + "pyroland_rocketlauncher_bluemew" "10" + "pyroland_scattergun_bluemew" "10" + "pyroland_scattergun_shottohell" "10" + "pyroland_wrench_torquedtohell" "10" + } + "rare" + { + "pyroland_smg_bluemew" "10" + "pyroland_knife_stabbedtohell" "10" + "pyroland_pistol_shottohell" "10" + "pyroland_knife_braincandy" "10" + "pyroland_minigun_braincandy" "10" + "pyroland_pistol_braincandy" "10" + "pyroland_rocketlauncher_braincandy" "10" + "pyroland_medigun_flowerpower" "10" + "pyroland_revolver_flowerpower" "10" + "pyroland_scattergun_flowerpower" "10" + "pyroland_shotgun_flowerpower" "10" + } + } + } + + "tough_break_case_collection_02_warbirds" + { + "name" "#tough_break_case_collection_02" + "description" "#tough_break_case_collection_02_desc" + "items" + { + "ancient" + { + "warbird_rocketlauncher_warhawk" "10" + "warbird_scattergun_killerbee" "10" + } + "legendary" + { + "warbird_flamethrower_warhawk" "10" + "warbird_grenadelauncher_warhawk" "10" + "warbird_shotgun_redbear" "10" + } + "mythical" + { + "warbird_minigun_butcherbird" "10" + "warbird_sniperrifle_airwolf" "10" + "warbird_stickybomblauncher_blitzkrieg" "10" + "warbird_medigun_corsair" "10" + "warbird_knife_airwolf" "10" + } + "rare" + { + "warbird_knife_blitzkrieg" "10" + "warbird_medigun_blitzkrieg" "10" + "warbird_pistol_blitzkrieg" "10" + "warbird_revolver_blitzkrieg" "10" + "warbird_smg_blitzkrieg" "10" + "warbird_wrench_airwolf" "10" + "warbird_scattergun_corsair" "10" + "warbird_grenadelauncher_butcherbird" "10" + } + } + } + + "ToughBreakCosmetics_collection" + { + "name" "#ToughBreakCosmetics_collection" + "description" "#ToughBreakCosmetics_collection_desc" + "items" + { + "legendary" + { + "A Well Wrapped Hat" "10" + } + "mythical" + { + "The Chill Chullo" "10" + "The Gift Bringer" "10" + "Bonk Batter's Backup" "10" + "Winter Backup" "10" + } + "rare" + { + "Shin Shredders" "10" + "The Patriot Peak" "10" + "The Diplomat" "10" + "Siberian Sweater" "10" + "Medical Monarch" "10" + "Chicago Overcoat" "10" + "A Hat to Kill For" "10" + "Hot Heels" "10" + "Berlin Brain Bowl" "10" + "Bunnyhopper's Ballistics Vest" "10" + } + } + } + + "MayflowerCosmetics_collection" + { + "name" "MayflowerCosmetics_collection" + "description" "MayflowerCosmetics_collection_desc" + "items" + { + "ancient" + { + "Bedouin Bandana" "10" + "The Dead Head" "10" + } + "legendary" + { + "The Dayjogger" "10" + "Dad Duds" "10" + } + "mythical" + { + "Herald's Helm" "10" + "The Lurking Legionnaire" "10" + "The Gauzed Gaze" "10" + "The Patriot's Pouches" "10" + } + "rare" + { + "The Airdog" "10" + "Courtly Cuirass" "10" + "Squire's Sabatons" "10" + "The Surgical Survivalist" "10" + "The Demo's Dustcatcher" "10" + "The Scoped Spartan" "10" + } + } + } + + "halloween2016_collection_lootlist" + { + "name" "#halloween2016_collection_name" + "description" "#halloween2016_collection_desc" + "items" + { + "ancient" + { + "Combustible Cutie" "10" + "Class Crown" "10" + } + "legendary" + { + "Burly Beast" "10" + "Pestering Jester" "10" + "Mo'Horn" "10" + } + "mythical" + { + "The Toadstool Topper" "10" + "Big Topper" "10" + "Heavy Tourism" "10" + "The Corpus Christi Cranium" "10" + "Spirit of the Bombing Past" "10" + "Lil' Bitey" "10" + } + "rare" + { + "Colossal Cranium" "10" + "Showstopper" "10" + "The Cranial Carcharodon" "10" + "Spooktacles" "10" + "The El Paso Poncho" "10" + "The Wide-Brimmed Bandito" "10" + "Nasty Norsemann" "10" + "The Surgeon's Sidearms" "10" + "Mad Mask" "10" + "The Wing Mann" "10" + } + } + } + + "Winter2016_Cosmetics_collection" + { + "name" "#Winter2016Cosmetics_collection" + "description" "#Winter2016Cosmetics_collection_desc" + "items" + { + "ancient" + { + "The Snowmann" "10" + "The Bomber Knight" "10" + } + "legendary" + { + "The Head Prize" "10" + "Pyro the Flamedeer" "10" + "Snowwing" "10" + } + "mythical" + { + "Flammable Favor" "10" + "The Electric Twanger" "10" + "Bomb Beanie" "10" + "Woolen Warmer" "10" + "Socked and Loaded" "10" + } + "rare" + { + "Sweet Smissmas Sweater" "10" + "Handy Canes" "10" + "Elf Esteem" "10" + "Packable Provisions" "10" + "Brain-Warming Wear" "10" + "Reader's Choice" "10" + "Santarchimedes" "10" + } + } + } + + "RainyDayCosmetics_collection" + { + "name" "RainyDayCosmetics_collection" + "description" "RainyDayCosmetics_collection_desc" + "items" + { + "ancient" + { + "Flash of Inspiration" "10" + "The Lightning Lid" "10" + } + "legendary" + { + "Plumber's Cap" "10" + "Legendary Lid" "10" + "Guilden Guardian" "10" + } + "mythical" + { + "Archer's Sterling" "10" + "Pocket Pauling" "10" + "Messenger's Mail Bag" "10" + "Hawk Eyed Hunter" "10" + "Down Under Duster" "10" + } + "rare" + { + "Speedster's Spandex" "10" + "The Upgrade" "10" + "Blast Defense" "10" + "Head Mounted Double Observatory" "10" + "Field Practice" "10" + "Warhood" "10" + "Airborne Attire" "10" + "Flakcatcher" "10" + "Airtight Arsonist" "10" + } + } + } + + "campaign3_master_collection" + { + "name" "#campaign3_master_collection" + "description" "#campaign3_master_collection_desc" + "is_reference_collection" "1" + "items" + { + "Campaign 3 Cosmetics Case 1 Collection Dummy" "10" + "Campaign 3 Cosmetics Case 2 Collection Dummy" "10" + "Campaign 3 Contract Paintkit Collection Dummy 1" "10" + "Campaign 3 Contract Paintkit Collection Dummy 2" "10" + "Campaign 3 Paintkit Case Collection Dummy 1" "10" + "Campaign 3 Paintkit Case Collection Dummy 2" "10" + } + } + + "Campaign3Cosmetics_Case1_collection" + { + "name" "#Campaign3Cosmetics_Case1_collection" + "description" "#Campaign3Cosmetics_Case1_collection_desc" + "items" + { + "ancient" + { + "Quizzical Quetzal" "10" + "The War Eagle" "10" + } + "legendary" + { + "The Aztec Aggressor" "10" + "Jungle Jersey" "10" + "Tropical Toad" "10" + } + "mythical" + { + "The Hunter in Darkness" "10" + "D-eye-monds" "10" + "Transparent Trousers" "10" + "The Croaking Hazard" "10" + "Rifleman's Regalia" "10" + } + "rare" + { + "Bait and Bite" "10" + "The Nuke" "10" + "Attack Packs" "10" + "The Shellmet" "10" + "Forest Footwear" "10" + "The Most Dangerous Mane" "10" + "The Classy Capper" "10" + "The Pithy Professional" "10" + "Conaghers' Utility Idol" "10" + "Fireman's Essentials" "10" + } + } + } + + "Campaign3Cosmetics_Case2_collection" + { + "name" "#Campaign3Cosmetics_Case2_collection" + "description" "#Campaign3Cosmetics_Case2_collection_desc" + "items" + { + "ancient" + { + "The Slithering Scarf" "10" + "The Aztec Warrior" "10" + } + "legendary" + { + "Jungle Wreath" "10" + "Bananades" "10" + "Sacrificial Stone" "10" + } + "mythical" + { + "The Crit Cloak" "10" + "Pocket Saxton" "10" + "The Hot Huaraches" "10" + "Feathered Fiend" "10" + "The Conspicuous Camouflage" "10" + } + "rare" + { + "Fat Man's Field Cap" "10" + "Heavy Harness" "10" + "Battle Boonie" "10" + "Vitals Vest" "10" + "Sharp Chest Pain" "10" + "Deity's Dress" "10" + "The Cammy Jammies" "10" + "Siberian Tigerstripe" "10" + "Commando Elite" "10" + "Aloha Apparel" "10" + } + } + } + + "Campaign3Paintkits_contract1_collection" + { + "name" "#Campaign3Paintkits_contract1_collection" + "description" "#Campaign3Paintkits_contract1_collection_desc" + "items" + { + "mythical" + { + "Paintkit 102" "10" + "Paintkit 104" "10" + "Paintkit 106" "10" + } + "rare" + { + "Paintkit 109" "10" + "Paintkit 113" "10" + "Paintkit 114" "10" + } + "uncommon" + { + "Paintkit 122" "10" + "Paintkit 160" "10" + } + "common" + { + "Paintkit 139" "10" + "Paintkit 144" "10" + } + } + } + + "Campaign3Paintkits_contract2_collection" + { + "name" "#Campaign3Paintkits_contract2_collection" + "description" "#Campaign3Paintkits_contract2_collection_desc" + "items" + { + "mythical" + { + "Paintkit 130" "10" + "Paintkit 151" "10" + } + "rare" + { + "Paintkit 105" "10" + "Paintkit 112" "10" + } + "uncommon" + { + "Paintkit 120" "10" + "Paintkit 163" "10" + } + "common" + { + "Paintkit 143" "10" + "Paintkit 161" "10" + } + } + } + + "Campaign3Paintkits_case1_collection" + { + "name" "#Campaign3Paintkits_case1_collection" + "description" "#Campaign3Paintkits_case1_collection_desc" + "items" + { + "ancient" + { + "Paintkit 301" "10" + } + "legendary" + { + "Paintkit 300" "10" + "Paintkit 304" "10" + } + "mythical" + { + "Paintkit 303" "10" + "Paintkit 308" "10" + "Paintkit 309" "10" + } + "rare" + { + "Paintkit 302" "10" + "Paintkit 305" "10" + "Paintkit 306" "10" + "Paintkit 307" "10" + "Paintkit 310" "10" + } + } + } + + "Campaign3Paintkits_case2_collection" + { + "name" "#Campaign3Paintkits_case2_collection" + "description" "#Campaign3Paintkits_case2_collection_desc" + "items" + { + "ancient" + { + "Paintkit 205" "10" + } + "legendary" + { + "Paintkit 207" "10" + "Paintkit 210" "10" + "Paintkit 212" "10" + } + "mythical" + { + "Paintkit 202" "10" + "Paintkit 204" "10" + "Paintkit 206" "10" + "Paintkit 209" "10" + } + "rare" + { + "Paintkit 200" "10" + "Paintkit 201" "10" + "Paintkit 203" "10" + "Paintkit 208" "10" + "Paintkit 211" "10" + } + } + } + + "Winter2017Paintkits_collection" + { + "name" "#Winter2017Paintkits_collection" + "description" "#Winter2017Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 213" "10" + } + "legendary" + { + "Paintkit 228" "10" + "Paintkit 230" "10" + } + "mythical" + { + "Paintkit 214" "10" + "Paintkit 225" "10" + "Paintkit 223" "10" + "Paintkit 218" "10" + } + "rare" + { + "Paintkit 226" "10" + "Paintkit 234" "10" + "Paintkit 224" "10" + "Paintkit 232" "10" + "Paintkit 220" "10" + "Paintkit 221" "10" + "Paintkit 217" "10" + "Paintkit 215" "10" + } + } + } + + "UniqueSkins_collection" + { + "name" "#UniqueSkins_collection" + "description" "#UniqueSkins_collection_desc" + "items" + { + "ancient" + { + "Paintkit 390" "10" + } + } + } + + "UniqueFreeSkins_collection" + { + "name" "#UniqueFreeSkins_collection" + "description" "#UniqueFreeSkins_collection_desc" + "items" + { + "mythical" + { + "Paintkit 391" "10" + } + } + } + + "Winter2017Cosmetics_collection" + { + "name" "Winter2017Cosmetics_collection" + "description" "Winter2017Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Balloonihoodie" "10" + "Hungover Hero" "10" + } + "legendary" + { + "Coldfront Carapace" "10" + "The Cat's Pajamas" "10" + "The Handsome Hitman" "10" + } + "mythical" + { + "Sledder's Sidekick" "10" + "Burning Beanie" "10" + "Coldfront Commander" "10" + "Wild West Whiskers" "10" + "Melody Of Misery" "10" + } + "rare" + { + "Pocket Yeti" "10" + "Blast Blocker" "10" + "Puffy Polar Cap" "10" + "The Sinner's Shade" "10" + "Polar Bear" "10" + "Brass Bucket" "10" + "Down Tundra Coat" "10" + "Pocket Santa" "10" + "The Caribou Companion" "10" + "Trucker's Topper" "10" + } + } + } + + "BlueMoonCosmetics_collection" + { + "name" "BlueMoonCosmetics_collection" + "description" "BlueMoonCosmetics_collection_desc" + "items" + { + "ancient" + { + "Robin Walkers" "10" + } + "legendary" + { + "The Frag Proof Fragger" "10" + "Private Maggot Muncher" "10" + "The Cold Case" "10" + } + "mythical" + { + "Starboard Crusader" "10" + "Scourge of the Sky" "10" + "Veterans Attire" "10" + "The Burning Question" "10" + "Aristotle" "10" + "Blizzard Britches" "10" + "Punk's Pomp" "10" + } + "rare" + { + "The Tundra Top" "10" + "Antarctic Eyewear" "10" + "The Head Hedge" "10" + "Tsar Platinum" "10" + "Sky High Fly Guy" "10" + "The Hot Case" "10" + "Assassin's Attire" "10" + "Wipe Out Wraps" "10" + } + } + } + + "halloween2018_collection" + { + "name" "#halloween2018_collection_name" + "description" "#halloween2018_collection_desc" + "items" + { + "ancient" + { + "Lucky Cat Hat" "10" + } + "legendary" + { + "Mr. Quackers" "10" + "Terror-antula" "10" + "Defragmenting Hard Hat 17%" "10" + } + "mythical" + { + "The Tank Top" "10" + "Gaelic Glutton" "10" + "Athenian Attire" "10" + "Pyro in Chinatown" "10" + "Dressperado" "10" + "Aim Assistant" "10" + } + "rare" + { + "Mini-Engy" "10" + "Deadbeats" "10" + "Mann-O-War" "10" + "Hephaistos' Handcraft" "10" + "Olympic Leapers" "10" + "Vampire Vanquisher" "10" + "Highway Star" "10" + "Bandit's Boots" "10" + "Murderer's Motif" "10" + "The Arachno-Arsonist" "10" + } + } + } + + "Halloween2018Paintkits_collection" + { + "name" "#Halloween2018Paintkits_collection" + "description" "#Halloween2018Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 241" "10" + } + "legendary" + { + "Paintkit 242" "10" + "Paintkit 243" "10" + } + "mythical" + { + "Paintkit 235" "10" + "Paintkit 237" "10" + "Paintkit 244" "10" + } + "rare" + { + "Paintkit 236" "10" + "Paintkit 238" "10" + "Paintkit 239" "10" + "Paintkit 240" "10" + } + } + } + + "Winter2018Cosmetics_collection" + { + "name" "Winter2018Cosmetics_collection" + "description" "Winter2018Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Bread Heads" "10" + } + "legendary" + { + "Millennial Mercenary" "10" + "The Dumb Bell" "10" + "The Polar Pal" "10" + } + "mythical" + { + "The Puggyback" "10" + "Harry" "10" + "Pocket Admin" "10" + "Cool Capuchon" "10" + "Miser's Muttonchops" "10" + } + "rare" + { + "Pocket Pardner" "10" + "Climbing Commander" "10" + "The Crack Pot" "10" + "Juvenile's Jumper" "10" + "The Catcher's Companion" "10" + "Paka Parka" "10" + "Snowcapped" "10" + "Wise Whiskers" "10" + "Mighty Mitre" "10" + } + } + } + + "Summer2019Cosmetics_collection" + { + "name" "Summer2019Cosmetics_collection" + "description" "Summer2019Cosmetics_collection_desc" + "items" + { + "ancient" + { + "The Peacebreaker" "10" + "Texas Toast" "10" + } + "legendary" + { + "Unforgiven Glory" "10" + "Bobby Bonnet" "10" + "The Bare Necessities" "10" + "The Fiery Phoenix" "10" + } + "mythical" + { + "Spawn Camper" "10" + "Backbreaker's Skullcracker" "10" + "Kapitan's Kaftan" "10" + "Wagga Wagga Wear" "10" + "Speedy Scoundrel" "10" + "Dynamite Abs" "10" + } + "rare" + { + "Shutterbug" "10" + "Melted Mop" "10" + "Wanderer's Wear" "10" + "Backbreaker's Guards" "10" + "Mediterranean Mercenary" "10" + "Stapler's Specs" "10" + "The Pompous Privateer" "10" + "The Bottle Cap" "10" + "Brain Interface" "10" + "Dancing Doe" "10" + } + } + } + + "halloween2019_collection" + { + "name" "#halloween2019_collection_name" + "description" "#halloween2019_collection_desc" + "items" + { + "ancient" + { + "Mister Bones" "10" + "Pyr'o Lantern" "10" + } + "legendary" + { + "Racc Mann" "10" + "Head of the Dead" "10" + "Elizabeth the Third" "10" + "The Trick Stabber" "10" + } + "mythical" + { + "Madmann's Muzzle" "10" + "The Horrible Horns" "10" + "Skullbrero" "10" + "Soviet Strongmann" "10" + "Voodoo Vizier" "10" + "El Zapateador" "10" + } + "rare" + { + "Bat Hat" "10" + "Bread Biter" "10" + "Derangement Garment" "10" + "El Mostacho" "10" + "Candy Cranium" "10" + "Convict Cap" "10" + "Pocket Halloween Boss" "10" + "Party Poncho" "10" + "Fuel Injector" "10" + "Binoculus" "10" + } + } + } + + "Winter2019Cosmetics_collection" + { + "name" "Winter2019Cosmetics_collection" + "description" "Winter2019Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Candy Crown" "10" + } + "legendary" + { + "Provisions Cap" "10" + "Smissmas Saxton" "10" + "Public Speaker" "10" + } + "mythical" + { + "Discovision" "10" + "Winter Wrap Up" "10" + "Globetrotter" "10" + "Telefragger Toque" "10" + "The Mislaid Sweater" "10" + } + "rare" + { + "Pebbles the Penguin" "10" + "Spiky Viking" "10" + "Bumble Beenie" "10" + "Gingerbread Mann" "10" + "Yule Hog" "10" + "Glittering Garland" "10" + "The Missing Piece" "10" + "Citizen Cane" "10" + "Pocket-Medes" "10" + } + } + } + + "Winter2019Paintkits_collection" + { + "name" "#Winter2019Paintkits_collection" + "description" "#Winter2019Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 254" "10" + } + "legendary" + { + "Paintkit 250" "10" + "Paintkit 247" "10" + } + "mythical" + { + "Paintkit 246" "10" + "Paintkit 245" "10" + "Paintkit 251" "10" + } + "rare" + { + "Paintkit 252" "10" + "Paintkit 248" "10" + "Paintkit 249" "10" + "Paintkit 253" "10" + } + } + } + + "Summer2020Cosmetics_collection" + { + "name" "Summer2020Cosmetics_collection" + "description" "Summer2020Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Hypno-eyes" "10" + "Breadcrab" "10" + } + "legendary" + { + "Hawk Warrior" "10" + "Smoking Jacket" "10" + "Loaf Loafers" "10" + "Flamehawk" "10" + } + "mythical" + { + "Flatliner" "10" + "Breach and Bomb" "10" + "Bird's Eye Viewer" "10" + "Hazard Headgear" "10" + "Tools of the Tourist" "10" + "Momma Kiev" "10" + } + "rare" + { + "Fire Fighter" "10" + "Self-Care" "10" + "Bazaar Bauble" "10" + "Crabe de Chapeau" "10" + "Poolside Polo" "10" + "California Cap" "10" + "Soda Specs" "10" + "Sophisticated Smoker" "10" + "The Jarmaments" "10" + "Head Of Defense" "10" + } + } + } + + "halloween2020_collection" + { + "name" "#halloween2020_collection_name" + "description" "#halloween2020_collection_desc" + "items" + { + "ancient" + { + "All Hallows' Hatte" "10" + "Balloonicorpse" "10" + } + "legendary" + { + "Wrap-A-Khamon" "10" + "Misfortune Fedora" "10" + "Wavefinder" "10" + "The Fire Tooth" "10" + } + "mythical" + { + "Glow from Below" "10" + "Gourd Grin" "10" + "Sir Pumpkinton" "10" + "Impish Ears" "10" + "Eye-see-you" "10" + "Semi-tame Trapper's Hat" "10" + } + "rare" + { + "Calamitous Cauldron" "10" + "The Seared Sorcerer" "10" + "Goblineer" "10" + "Handsome Devil" "10" + "A Handsome Handy Thing" "10" + "Hollowed Helm" "10" + "Flavorful Baggies" "10" + "King Cardbeard" "10" + "The Boom Boxers" "10" + "The Ghoul Box" "10" + } + } + } + + "Halloween2020Paintkits_collection" + { + "name" "#Halloween2020Paintkits_collection" + "description" "#Halloween2020Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 257" "10" + } + "legendary" + { + "Paintkit 255" "10" + "Paintkit 259" "10" + "Paintkit 268" "10" + } + "mythical" + { + "Paintkit 260" "10" + "Paintkit 261" "10" + "Paintkit 264" "10" + "Paintkit 266" "10" + } + "rare" + { + "Paintkit 256" "10" + "Paintkit 258" "10" + "Paintkit 262" "10" + "Paintkit 263" "10" + "Paintkit 265" "10" + "Paintkit 267" "10" + "Paintkit 269" "10" + } + } + } + + "Winter2020Cosmetics_collection" + { + "name" "Winter2020Cosmetics_collection" + "description" "Winter2020Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Towering Pile Of Presents" "1" + } + "legendary" + { + "The Round-A-Bout" "1" + "Towering Pillar of Beanies" "1" + "Helm Helm" "1" + } + "mythical" + { + "Blitzen Bowl" "1" + "The Smissmass Sorcerer" "1" + "Professional's Pom Pom" "1" + "BedBug Protection" "1" + "SandMann's Brush" "1" + "Night Ward" "1" + } + "rare" + { + "Particulate Protector" "1" + "Elf Care Provider" "1" + "Jolly Jingler" "1" + "Festive Fascinator" "1" + "Candy Cantlers" "1" + "Reindoonibeanie" "1" + "Shoestring Santa" "1" + "Festive Flip-thwomps" "1" + "Bear Walker" "1" + "The Killing Tree" "1" + } + } + } + + "Winter2020Paintkits_collection" + { + "name" "#Winter2020Paintkits_collection" + "description" "#Winter2020Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 280" "10" + } + "legendary" + { + "Paintkit 281" "10" + "Paintkit 271" "10" + } + "mythical" + { + "Paintkit 283" "10" + "Paintkit 279" "10" + "Paintkit 272" "10" + "Paintkit 278" "10" + } + "rare" + { + "Paintkit 277" "10" + "Paintkit 270" "10" + "Paintkit 273" "10" + "Paintkit 276" "10" + "Paintkit 282" "10" + "Paintkit 275" "10" + } + } + } + + "Summer2021Cosmetics_collection" + { + "name" "Summer2021Cosmetics_collection" + "description" "Summer2021Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Ballooniphones" "10" + } + "legendary" + { + "Crustaceous Cowl" "10" + "Fast Food" "10" + "The Panisher" "10" + } + "mythical" + { + "Snack Stack" "10" + "Water Waders" "10" + "Meal Dealer" "10" + "Crocodile Dandy" "10" + "The Sightliner" "10" + } + "rare" + { + "Manndatory Attire" "10" + "Hook Line and Cinder" "10" + "Two Punch Mann" "10" + "Reel Fly Hat" "10" + "Fried Batter" "10" + "Wild Brim Slouch" "10" + "Brim of Fire" "10" + "Roaming Roman" "10" + "Thousand-Yard Stare" "10" + } + } + } + + "halloween2021_collection" + { + "name" "#halloween2021_collection_name" + "description" "#halloween2021_collection_desc" + "items" + { + "ancient" + { + "Towering Patch of Pumpkins" "10" + } + "legendary" + { + "Wandering Wraith" "10" + "The Bone Cone" "10" + "Gruesome Gourd" "10" + } + "mythical" + { + "The Hook, Line, and Thinker" "10" + "Second-head Headwear" "10" + "Alakablamicon" "10" + "Goalkeeper" "10" + "Eyequarium" "10" + "Optic Nerve" "10" + } + "rare" + { + "Beanie The All-Gnawing" "10" + "Twisted Topper" "10" + "Spooky Head-Bouncers" "10" + "Creepy Crawlers" "10" + "Trickster's Treats" "10" + "The Scariest Mask EVER" "10" + "Hat Outta Hell" "10" + "Death Stare" "10" + "Smiling Somen" "10" + } + } + } + + "Halloween2021Paintkits_collection" + { + "name" "#Halloween2021Paintkits_collection" + "description" "#Halloween2021Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 287" "10" + } + "legendary" + { + "Paintkit 291" "10" + "Paintkit 294" "10" + } + "mythical" + { + "Paintkit 285" "10" + "Paintkit 289" "10" + "Paintkit 295" "10" + "Paintkit 297" "10" + } + "rare" + { + "Paintkit 284" "10" + "Paintkit 286" "10" + "Paintkit 290" "10" + "Paintkit 292" "10" + "Paintkit 293" "10" + "Paintkit 296" "10" + } + } + } + + "Winter2021Cosmetics_collection" + { + "name" "Winter2021Cosmetics_collection" + "description" "Winter2021Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Oh Deer!" "1" + } + "legendary" + { + "Jolly Jester" "1" + "Merry Cone" "1" + "Hat Chocolate" "1" + } + "mythical" + { + "Seasonal Spring" "1" + "Reindoonihorns" "1" + "Elf Ignition" "1" + "Train Of Thought" "1" + "Seasonal Employee" "1" + "Elf-Made Bandanna" "1" + } + "rare" + { + "El Fiestibrero" "1" + "Gnome Dome" "1" + "The Giftcrafter" "1" + "Brain Cane" "1" + "Cozy Catchers" "1" + "Ominous Offering" "1" + "Festive Frames" "1" + "Mooshanka" "1" + "Elf Defence" "1" + "Festive Cover-Up" "1" + } + } + } + + "Summer2022Cosmetics_collection" + { + "name" "Summer2022Cosmetics_collection" + "description" "Summer2022Cosmetics_collection_desc" + "items" + { + "ancient" + { + "The Decorated Veteran" "10" + "Rocko" "10" + } + "legendary" + { + "Kazan Karategi" "10" + "Soda Cap" "10" + "Monsieur Grenouille" "10" + "Head Banger" "10" + "Night Vision Gawkers" "10" + } + "mythical" + { + "Fizzy Pharmacist" "10" + "Squatter's Right" "10" + "Tropical Camo" "10" + "The Hawaiian Hangover" "10" + "The Detective" "10" + "The Lawnmaker" "10" + "The Ripped Rider" "10" + "Boston Brain Bucket" "10" + } + "rare" + { + "Undercover Brolly" "10" + "The Western Wraps" "10" + "Combat Casual" "10" + "Hawaiian Hunter" "10" + "Barefoot Brawler" "10" + "The Chaser" "10" + "Tactical Turtleneck" "10" + "The Throttlehead" "10" + "The Team Player" "10" + "Pest's Pads" "10" + } + } + } + + "halloween2022_collection" + { + "name" "#halloween2022_collection_name" + "description" "#halloween2022_collection_desc" + "items" + { + "ancient" + { + "The Onimann" "10" + "Propaniac" "10" + } + "legendary" + { + "Victorian Villainy" "10" + "Road Rage" "10" + "Alcoholic Automaton" "10" + "Cranial Cowl" "10" + } + "mythical" + { + "Dustbowl Devil" "10" + "The Lavish Labwear" "10" + "Road Block" "10" + "Safety Stripes" "10" + "The Masked Fiend" "10" + "Headhunter's Brim" "10" + } + "rare" + { + "Starlight Sorcerer" "10" + "Nightbane Brim" "10" + "Horror Shawl" "10" + "Bombard Brigadier" "10" + "Beaten and Bruised" "10" + "Firearm Protector" "10" + "The Imp's Imprint" "10" + "Hunting Cloak" "10" + "More Gun Marshal" "10" + "The Turncoat" "10" + } + } + } + + "Halloween2022Paintkits_collection" + { + "name" "#Halloween2022Paintkits_collection" + "description" "#Halloween2022Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 403" "10" + } + "legendary" + { + "Paintkit 400" "10" + "Paintkit 405" "10" + } + "mythical" + { + "Paintkit 404" "10" + "Paintkit 409" "10" + "Paintkit 410" "10" + } + "rare" + { + "Paintkit 401" "10" + "Paintkit 402" "10" + "Paintkit 406" "10" + "Paintkit 407" "10" + "Paintkit 408" "10" + } + } + } + + "Winter2022Cosmetics_collection" + { + "name" "Winter2022Cosmetics_collection" + "description" "Winter2022Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Festive Rack" "1" + "Trapper's Flap" "1" + } + "legendary" + { + "The Wooly Pulli" "1" + "Motley Sleeves" "1" + "Battle Bear" "1" + "Colonel Kringle" "1" + } + "mythical" + { + "Infiltrator's Insulation" "1" + "Frostbite Bonnet" "1" + "Firebrand" "1" + "Plaid Lad" "1" + "Underminer's Overcoat" "1" + "Ol' Reliable" "1" + "The Cool Warm Sweater" "1" + } + "rare" + { + "Oktoberfester" "1" + "Crosshair Cardigan" "1" + "Bulb Bonnet" "1" + "Cold Blooded Coat" "1" + "Partizan" "1" + "Glasgow Bankroll" "1" + "Arctic Mole" "1" + "Heavy Heating" "1" + "The Soft Hard Hat" "1" + "Lumbercap" "1" + } + } + } + + "Summer2023Cosmetics_collection" + { + "name" "Summer2023Cosmetics_collection" + "description" "Summer2023Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Full Metal Helmet" "1" + "Cranium Cooler" "1" + } + "legendary" + { + "Brother Mann" "1" + "The Glorious Gambeson" "1" + "The Flame Warrior" "1" + "Uber-Wear" "1" + "Cranium Cover" "1" + } + "mythical" + { + "Cleaner's Cap" "1" + "The Shrapnel Shell" "1" + "Hog Heels" "1" + "Close Quarters Cover" "1" + "The Soho Sleuth" "1" + "Hazard Handler" "1" + "Preventative Measure" "1" + "Prohibition Opposition" "1" + } + "rare" + { + "Brothers in Blues" "1" + "The Firestalker" "1" + "The Bushman" "1" + "Medical Emergency" "1" + "Brimmed Bootlegger" "1" + "Heavy Metal" "1" + "The Blast Bowl" "1" + "Cargo Constructor" "1" + "Le Professionnel" "1" + "Stealth Bomber" "1" + } + } + } + + "Summer2023Paintkits_collection" + { + "name" "#Summer2023Paintkits_collection" + "description" "#Summer2023Paintkits_collection_desc" + "items" + { + "ancient" + { + "Paintkit 413" "10" + } + "legendary" + { + "Paintkit 415" "10" + "Paintkit 416" "10" + } + "mythical" + { + "Paintkit 411" "10" + "Paintkit 418" "10" + "Paintkit 420" "10" + } + "rare" + { + "Paintkit 412" "10" + "Paintkit 414" "10" + "Paintkit 417" "10" + "Paintkit 419" "10" + } + } + } + + "halloween2023_collection" + { + "name" "#halloween2023_collection_name" + "description" "#halloween2023_collection_desc" + "items" + { + "ancient" + { + "Demonic Dome" "10" + "Bare Bear Bones" "10" + } + "legendary" + { + "Clown's Cover-Up" "10" + "Power Spike" "10" + "Sightseer" "10" + "The Last Laugh" "10" + "Mad Lad" "10" + } + "mythical" + { + "Warlock's Warcloak" "10" + "Dead Heat" "10" + "Stunt Suit" "10" + "Dell Dynamic" "10" + "Classic Criminal" "10" + "The Main Cast" "10" + "Sharpshooter's Shroud" "10" + "Jumping Jester" "10" + } + "rare" + { + "Ludicrously Lunatic Lunon Fedora" "10" + "The Mean Captain" "10" + "Shortness Of Breath" "10" + "Splitting Headache" "10" + "Thunder Dome" "10" + "Constructor's Cover" "10" + "Concealed Convict" "10" + "Six-Eyed Specs" "10" + "Medical Mummy" "10" + "The Make Ogre" "10" + } + } + } + + "Winter2023Cosmetics_collection" + { + "name" "Winter2023Cosmetics_collection" + "description" "Winter2023Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Boarder's Beanie" "1" + "Scruffed 'n Stitched" "1" + } + "legendary" + { + "The Dapper Dickens" "1" + "Lazy Lounger" "1" + "Masked Loyalty" "1" + "Bonk Beanie" "1" + } + "mythical" + { + "Trench Warefarer" "1" + "The Frigid Fashion" "1" + "Slumber Slacks" "1" + "Clue Hairdo" "1" + "Strasbourg Scholar" "1" + "Torcher's Trench Coat" "1" + "Isotopic Insulator" "1" + } + "rare" + { + "Cozy Cover-Up" "1" + "Wanderer's Wool" "1" + "The Puffed Practitioner" "1" + "Nightcap" "1" + "Sleuth Suit" "1" + "The Covert Covers" "1" + "Rugged Rags" "1" + "Impact Impaler" "1" + "Balkan's Brute" "1" + "Bigger Mann on Campus" "1" + } + } + } + + "Summer2024Cosmetics_collection" + { + "name" "Summer2024Cosmetics_collection" + "description" "Summer2024Cosmetics_collection_desc" + "items" + { + "ancient" + { + "Botler 2000" "1" + "Hazardous Environment Vest" "1" + } + "legendary" + { + "Tuxedo Royale" "1" + "Control Patrol" "1" + "Free Mann's Fashion" "1" + "Fire Marshal" "1" + } + "mythical" + { + "The Big Star" "1" + "Sneaky Blinder" "1" + "Justice Johns" "1" + "Crook's Cap" "1" + "The Tropical Brim" "1" + "Tanker's Top" "1" + "Scorched Earth Stompers" "1" + } + "rare" + { + "The Brand Loyalist" "1" + "Desk Engineer" "1" + "Daring Dell" "1" + "Pathfinder" "1" + "Brute's Braces" "1" + "Watchmann's Wetsuit" "1" + "The Aimframe" "1" + "Commonwealth Commando" "1" + "The Vaudeville Visor" "1" + "Invisible Flame" "1" + } + } + } + + } + "operations" + { + "5809" + { + "name" "operation_summer2015" + "gateway_item_name" "Unused Summer 2015 Operation Pass" + "required_item_name" "Activated Summer 2015 Operation Pass" + "operation_start_date" "2015-07-01 00:00:00" + "stop_adding_to_queue_date" "2015-10-01 00:00:00" + "stop_giving_to_player_date" "2015-10-12 00:00:00" + "contracts_end_date" "2038-01-01 00:00:00" + "operation_lootlist" "periodic_quest_drop" + "is_campaign" "1" + } + + "5820" + { + "name" "operation_invasion2015" + "gateway_item_name" "Unused Invasion Pass" + "required_item_name" "Activated Invasion Pass" + "operation_start_date" "2015-10-07 00:00:00" + "stop_adding_to_queue_date" "2016-01-01 00:00:00" + "stop_giving_to_player_date" "2016-01-01 00:00:00" + "contracts_end_date" "2038-01-01 00:00:00" + "operation_lootlist" "timed_reward_invasion_drop" + } + + "0" + { + "name" "old crate drops" + "operation_start_date" "2015-10-16 00:00:00" + "stop_adding_to_queue_date" "2038-01-01 00:00:00" + "stop_giving_to_player_date" "2038-01-01 00:00:00" + "contracts_end_date" "2038-01-01 00:00:00" + "operation_lootlist" "timed_supply_case_drop" + } + + "1" + { + "name" "campaign drops" + "gateway_item_name" "Unused Campaign 3 Pass" + "required_item_name" "Activated Campaign 3 Pass" + "operation_start_date" "2015-10-16 00:00:00" + "stop_adding_to_queue_date" "2018-02-01 00:00:00" + "stop_giving_to_player_date" "2018-02-01 00:00:00" + "contracts_end_date" "2018-02-01 00:00:00" + "operation_lootlist" "timed_reward_operation_drop" + } + + "3" + { + "name" "operation_halloween2015" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2015-10-28 00:00:00" + "stop_adding_to_queue_date" "2015-11-10 00:00:00" + "stop_giving_to_player_date" "2015-11-12 00:00:00" + "contracts_end_date" "2015-11-12 00:00:00" + "quest_log_res_file" "Resource/UI/econ/QuestLogPanel_Halloween.res" + "quest_list_res_file" "Resource/UI/econ/ScrollableQuestList_Halloween.res" + "operation_lootlist" "halloween_quest_drop" + "is_campaign" "1" + } + + "4" + { + "name" "Operation 2 Contracts" + "gateway_item_name" "Unused Operation Tough Break Pass" + "required_item_name" "Activated Operation Tough Break Pass" + "operation_start_date" "2015-12-14 00:00:00" + "stop_adding_to_queue_date" "2016-04-04 00:00:00" + "stop_giving_to_player_date" "2016-04-05 00:00:00" + "contracts_end_date" "2016-04-05 00:00:00" + "quest_list_res_file" "Resource/UI/econ/ScrollableQuestList_ToughBreak.res" + "operation_lootlist" "operation_2_quest_drop" + "is_campaign" "1" + "max_drop_count" "26" + } + + "5" + { + "name" "operation_halloween2016" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2016-10-19 00:00:00" + "stop_adding_to_queue_date" "2016-11-15 00:00:00" + "stop_giving_to_player_date" "2016-11-17 00:00:00" + "contracts_end_date" "2016-11-17 00:00:00" + "quest_log_res_file" "Resource/UI/econ/QuestLogPanel_Halloween.res" + "quest_list_res_file" "Resource/UI/econ/ScrollableQuestList_Halloween.res" + "operation_lootlist" "halloween_quest_drop" + "is_campaign" "1" + "max_drop_count" "26" + } + + "6" + { + "name" "operation_summer2017" + "gateway_item_name" "Unused Campaign 3 Pass" + "required_item_name" "Activated Campaign 3 Pass" + "operation_start_date" "2017-10-15 00:00:00" + "stop_adding_to_queue_date" "2038-01-01 00:00:00" + "stop_giving_to_player_date" "2038-01-01 00:00:00" + "contracts_end_date" "2038-01-01 00:00:00" + "is_campaign" "1" + "uses_credits" "1" + "operation_lootlist" "timed_reward_operation_drop" + } + + "7" + { + "name" "operation_halloween2017" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2017-10-15 00:00:00" + "stop_adding_to_queue_date" "2017-11-09 00:00:00" + "stop_giving_to_player_date" "2017-11-09 00:00:00" + "contracts_end_date" "2017-11-09 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + + "8" + { + "name" "jungle_inferno_contracts" + "gateway_item_name" "Jungle Inferno Contracts Pass" + "required_item_name" "Activated Campaign 3 Pass" + "operation_start_date" "2018-02-10 00:00:00" + "stop_adding_to_queue_date" "2038-01-01 00:00:00" + "stop_giving_to_player_date" "2038-01-01 00:00:00" + "contracts_end_date" "2038-01-01 00:00:00" + "is_campaign" "1" + "uses_credits" "1" + } + + "9" + { + "name" "operation_halloween2018" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2018-10-01 00:00:00" + "stop_adding_to_queue_date" "2018-11-15 00:00:00" + "stop_giving_to_player_date" "2018-11-15 00:00:00" + "contracts_end_date" "2018-11-15 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + + "10" + { + "name" "operation_halloween2019" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2019-10-01 00:00:00" + "stop_adding_to_queue_date" "2019-11-08 00:00:00" + "stop_giving_to_player_date" "2019-11-08 00:00:00" + "contracts_end_date" "2019-11-08 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + + "11" + { + "name" "operation_halloween2020" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2020-09-26 00:00:00" + "stop_adding_to_queue_date" "2020-11-08 00:00:00" + "stop_giving_to_player_date" "2020-11-08 00:00:00" + "contracts_end_date" "2020-11-08 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + + "12" + { + "name" "operation_halloween2021" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2021-09-26 00:00:00" + "stop_adding_to_queue_date" "2021-11-08 00:00:00" + "stop_giving_to_player_date" "2021-11-08 00:00:00" + "contracts_end_date" "2021-11-08 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + + "13" + { + "name" "operation_halloween2022" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2022-09-26 00:00:00" + "stop_adding_to_queue_date" "2022-11-08 00:00:00" + "stop_giving_to_player_date" "2022-11-08 00:00:00" + "contracts_end_date" "2022-11-08 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + + "14" + { + "name" "operation_halloween2023" + "required_item_name" "Activated Halloween Pass" + "operation_start_date" "2023-09-26 00:00:00" + "stop_adding_to_queue_date" "2023-11-08 00:00:00" + "stop_giving_to_player_date" "2023-11-08 00:00:00" + "contracts_end_date" "2023-11-08 00:00:00" + "is_campaign" "1" + "max_drop_count" "26" + "uses_credits" "1" + } + } + "prefabs" + { + + + "valve" + { + } + "default_bundle_payment" + { + } + "promo" + { + "craft_class" "" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "halloween" + { + "craft_class" "" + "capabilities" + { + "can_craft_count" "0" + } + "holiday_restriction" "halloween_or_fullmoon" + } + + "dummy_item" + { + "show_in_armory" "0" + "item_class" "craft_item" + "image_inventory" "backpack/crafting/pile_of_junk" + "min_ilevel" "1" + "max_ilevel" "1" + } + + "cosmetic" + { + "public_prefab" "1" + "triangle_budget_lod0" "1400" + "triangle_budget_lod1" "1000" + "triangle_budget_lod2" "700" + "qc_template" "scripts/itemtest_qc_template_misc.txt" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_class" "tf_wearable" + "item_quality" "unique" + "item_slot" "misc" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "craft_class" "hat" + "craft_material_type" "hat" + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "cosmetic_killeater_attribs" + { + "public_prefab" "1" + "tags" + { + "is_cosmetic" "1" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "64" + } + "kill eater kill type" + { + "attribute_class" "kill_eater_kill_type" + "value" "64" + } + } + } + + "base_misc" + { + "public_prefab" "1" + "prefab" "cosmetic_killeater_attribs" + "static_attrs" + { + "cosmetic_allow_inspect" "1" + } + } + + "misc" + { + "public_prefab" "1" + "prefab" "cosmetic base_misc" + "item_type_name" "#TF_Wearable_CosmeticItem" + } + + "base_hat" + { + "public_prefab" "1" + "prefab" "cosmetic_killeater_attribs" + "static_attrs" + { + "cosmetic_allow_inspect" "1" + } + } + + "hat" + { + "public_prefab" "1" + "prefab" "cosmetic base_hat" + "qc_template" "scripts/itemtest_qc_template_hat.txt" + "item_type_name" "#TF_Wearable_Hat" + "item_slot" "head" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "taunt" + { + "public_prefab" "1" + "qc_template" "scripts/itemtest_qc_template_taunt.txt" + "tags" + { + "is_taunt_item" "1" + } + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + "can_unusualify" "1" + } + "show_in_armory" "1" + "armory_desc" "action tauntenabler" + "item_class" "no_entity" + "item_type_name" "#TF_TauntEnabler" + "item_slot" "taunt" + "item_quality" "unique" + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "100" + } + } + "static_attrs" + { + "cosmetic_allow_inspect" "1" + } + } + + "score_reward_hat" + { + "prefab" "promo hat" + "craft_material_type" "" + "capabilities" + { + "paintable" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "cannot_transmute" "1" + } + } + + "hat_decoration" + { + "prefab" "cosmetic base_hat" + "item_type_name" "#TF_Wearable_Hat" + "item_slot" "head" + "equip_region" "hat" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "mask" + { + "prefab" "misc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "head_skin" + } + + "beard" + { + "public_prefab" "1" + "prefab" "misc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + } + + "backpack" + { + "public_prefab" "1" + "prefab" "misc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + "medic_backpack" "1" + } + } + } + + "grenades" + { + "public_prefab" "1" + "prefab" "misc" + "item_type_name" "#TF_Wearable_Bombs" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + } + + "mvm_robits" + { + "item_class" "craft_item" + "item_type_name" "#TF_RobotPart_Type" + "show_in_armory" "0" + "image_inventory" "backpack/crafting/mvm_robits_01" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + "static_attrs" + { + "is commodity" "1" + } + } + + "paint_can" + { + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "paint_can" + "usage_capabilities" + { + "paintable" "1" + } + } + "armory_desc" "paintcan" + "armory_remap" "Paint Can" + "item_type_name" "#TF_T" + "item_description" "#TF_Tool_PaintCan_Desc" + "image_inventory" "backpack/player/items/crafting/paintcan" + "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "static_attrs" + { + "is commodity" "1" + "cannot restore" "1" + } + "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" + "drop_sound" "ui/item_paint_can_pickup.wav" + } + + "paint_can_team_color" + { + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "paint_can" + "usage_capabilities" + { + "paintable_team_colors" "1" + } + } + "armory_desc" "paintcan" + "armory_remap" "Paint Can" + "item_type_name" "#TF_T" + "item_description" "#TF_Tool_PaintCan_TeamColor_Desc" + "image_inventory" "backpack/player/items/crafting/teampaint" + "image_inventory_overlay" "backpack/player/items/crafting/teampaint_blu_mask" + "image_inventory_overlay2" "backpack/player/items/crafting/teampaint_red_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + "cannot restore" "1" + } + "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" + "drop_sound" "ui/item_paint_can_pickup.wav" + } + + "tool_nametag" + { + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "name" + "usage_capabilities" + { + "nameable" "1" + } + } + "armory_desc" "nametag" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_T_Nt" + "item_description" "#TF_Tool_Nametag_Desc" + "image_inventory" "backpack/crafting/tag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "static_attrs" + { + "is commodity" "1" + } + } + + "tournament_medal" + { + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + } + "show_in_armory" "0" + "armory_remap" "Tournament Medal (Armory)" + "item_type_name" "#TF_Wearable_TournamentMedal" + "item_slot" "misc" + "equip_region" "medal" + "item_quality" "unique" + "min_ilevel" "25" + "max_ilevel" "25" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "etf2l_participation_styles" + { + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style1" + } + "2" + { + "skin" "2" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style2" + } + "3" + { + "skin" "3" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style3" + } + "4" + { + "skin" "4" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style4" + } + "5" + { + "skin" "5" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style5" + } + "6" + { + "skin" "6" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style6" + } + "7" + { + "skin" "7" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style7" + } + "8" + { + "skin" "8" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style8" + } + "9" + { + "skin" "9" + "name" "#TF_TournamentMedal_ETF2L_Participation_Style9" + } + } + } + } + + "pyrovision_goggles" + { + "first_sale_date" "2012/06/27" + "prefab" "cosmetic_killeater_attribs" + "item_class" "tf_wearable" + "hidden" "0" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "item_name" "#TF_Pyrovision_Goggles" + "item_type_name" "#TF_Wearable_Pyrovision_Goggles_Type" + "item_description" "#TF_Pyrovision_Goggles_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "drop_type" "drop" + "image_inventory" "backpack/player/items/all_class/pyrovision_goggles_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "scout" "models/player/items/all_class/pyrovision_goggles_scout.mdl" + "sniper" "models/player/items/all_class/pyrovision_goggles_sniper.mdl" + "soldier" "models/player/items/all_class/pyrovision_goggles_soldier.mdl" + "demoman" "models/player/items/all_class/pyrovision_goggles_demo.mdl" + "medic" "models/player/items/all_class/pyrovision_goggles_medic.mdl" + "heavy" "models/player/items/all_class/pyrovision_goggles_heavy.mdl" + "spy" "models/player/items/all_class/pyrovision_goggles_spy.mdl" + "engineer" "models/player/items/all_class/pyrovision_goggles_engineer.mdl" + "pyro" "models/player/items/all_class/pyrovision_goggles_pyro.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "cosmetic_allow_inspect" "1" + "min_viewmodel_offset" "10 0 -7" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_mtp_pickup.wav" + "drop_sound" "ui/item_mtp_drop.wav" + } + + "ash_remains" + { + "item_class" "craft_item" + "craft_material_type" "craft_material_burned" + "item_type_name" "#TF_Ash_Type" + "show_in_armory" "0" + "image_inventory" "backpack/crafting/ash" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + } + + + + "strange_part" + { + "item_class" "tool" + "craft_material_type" "strangepart" + "tool" + { + "type" "strange_part" + "usage_capabilities" + { + "strange_parts" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "0" + "armory_remap" "Strange Part (Armory)" + "item_type_name" "#TF_StrangePart" + "image_inventory" "backpack/crafting/strange_parts" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "strange_part_restriction" + { + "item_class" "tool" + "tool" + { + "type" "strange_part_restriction" + "usage_capabilities" + { + "strange_parts" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "0" + "item_type_name" "#TF_StrangePartRestriction" + "image_inventory" "backpack/crafting/strange_filter_generic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "strangifier_base" + { + "item_class" "tool" + "tool" + { + "type" "strangifier" + "usage" + { + "item_desc_tool_target" "#ItemDescStrangify" + } + "usage_capabilities" + { + "can_strangify" "1" + } + } + "static_attrs" + { + "is commodity" "1" + "tool_target_item_icon_offset" "0.285 0.43 0.35" + } + "show_in_armory" "0" + "item_type_name" "#TF_StrangifierTool" + "item_name" "#TF_Strangifier_Name" + "item_description" "#TF_Strangifier_Desc" + "image_inventory" "backpack/crafting/strange_generic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "unusualifier_base" + { + "item_class" "tool" + "tool" + { + "type" "unusualifier" + "usage" + { + "item_desc_tool_target" "#ItemDescUnusualify" + } + "usage_capabilities" + { + "can_unusualify" "1" + } + } + "static_attrs" + { + "tool_target_item_icon_offset" "0.35 0.5 0.4" + "cosmetic_allow_inspect" "1" + "never craftable" "1" + "cannot restore" "1" + } + "show_in_armory" "0" + "item_name" "#TF_Unusualifier" + "item_description" "#TF_Unusualifier_Desc" + "item_type_name" "#TF_Unusualifier" + "image_inventory" "backpack/crafting/unusualifier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "killstreakifier_base" + { + "item_class" "tool" + "tool" + { + "type" "killstreakifier" + "usage" + { + "item_desc_tool_target" "#ItemDescKillStreakify" + } + "usage_capabilities" + { + "can_killstreakify" "1" + } + } + "static_attrs" + { + "tool_target_item_icon_offset" "0.285 0.43 0.35" + } + "attributes" + { + "never craftable" + { + "attribute_class" "never_craftable" + "value" "1" + } + "cannot restore" + { + "attribute_class" "cannot_restore" + "value" "1" + } + } + "show_in_armory" "0" + "item_name" "#TF_KillStreakifier_Name" + "item_description" "#TF_KillStreakifier_Desc" + "item_type_name" "#TF_KillStreakifierToolA" + "image_inventory" "backpack/crafting/professional_grease_basic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "killstreakifier_kit_basic" + { + "prefab" "killstreakifier_base" + "item_description" "#TF_KillStreakifierBasic_Desc" + "image_inventory" "backpack/crafting/professional_grease_basic" + "attributes" + { + "killstreak tier" + { + "attribute_class" "killstreak_tier" + "value" "1" + } + } + } + + "dynamic_recipe_base" + { + "item_class" "tool" + "craft_class" "tool" + "item_name" "#TF_ItemDynamicRecipeTool" + "item_description" "#TF_ItemDynamicRecipe_Desc" + "item_type_name" "#TF_ItemDynamicRecipeTool" + "tool" + { + "type" "dynamic_recipe" + "use_string" "#TF_ItemDynamicRecipe_Use" + "usage_capabilities" + { + "can_consume" "1" + } + } + "show_in_armory" "0" + "image_inventory" "backpack/player/items/crafting/construction_kit" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + "recipe_partial_complete_sound" "ui/chem_set_add_element.wav" + "recipe_complete_sound" "ui/chem_set_creation.wav" + } + + "dynamic_quest_base" + { + "item_class" "tool" + "craft_class" "tool" + "item_name" "#TF_ItemDynamicQuestTool" + "item_description" "NOT YET IMPLEMENTED" + "item_type_name" "#TF_ItemDynamicQuestTool" + "item_slot" "quest" + "equip_type" "account" + "hidden" "1" + "show_in_armory" "0" + "image_inventory" "backpack/crafting/quest_folder_blue" + "attributes" + { + } + } + + "mvm_killstreak_recipe_base" + { + "prefab" "dynamic_recipe_base" + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "recipe_partial_complete_sound" "weapons/sentry_wire_connect.wav" + "recipe_complete_sound" "weapons/drg_wrench_teleport.wav" + } + + + + + + "powerup_bottle" + { + "item_class" "tf_powerup_bottle" + "tool" + { + "type" "powerup_bottle" + } + "capabilities" + { + "nameable" "1" + "usable" "1" + "can_craft_count" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_UsableItem" + "item_name" "#TF_Usable_PowerupBottle" + "item_description" "#TF_Usable_PowerupBottle_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/all_class/powerupbottle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/mvm_loot/all_class/mvm_flask_generic.mdl" + "armory_desc" "action" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "powerup charges" + { + "attribute_class" "powerup_charges" + "value" "0" + } + "powerup max charges" + { + "attribute_class" "powerup_max_charges" + "value" "3" + } + "powerup duration" + { + "attribute_class" "powerup_duration" + "value" "5" + } + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "no_craft" + { + "craft_class" "" + } + + "robokey_rules" + { + } + + "eotlkey_rules" + { + } + + "keylesscrate_base" + { + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "chance_restricted" "1" + "show_in_armory" "1" + "item_slot" "action" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + + "keylesscrate" + { + "prefab" "keylesscrate_base" + "first_sale_date" "2016/06/15" + } + + "eventcratebase" + { + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + } + "capabilities" + { + "decodable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + "static_attrs" + { + "is commodity" "1" + } + } + + "base_case" + { + "prefab" "eventcratebase" + "lootlist_job_templates" + { + "cosmetic_and_weapon_case_strange_quality_chance" "1" + "case_additional_drop_taunt_unusualifier" "1" + "case_additional_drop_paint_cans" "1" + "case_additional_drop_common_tools" "1" + "case_additional_drop_strange_transfer_tool" "1" + "case_additional_drop_mvm_ticket" "1" + "case_additional_drop_strange_parts" "1" + } + } + + "base_cosmetic_case" + { + "prefab" "base_case" + "lootlist_job_templates" + { + "cosmetic_case_unusual_hat_chance" "1" + } + } + + "base_keylesscase" + { + "prefab" "base_case" + "tool" + { + "type" "keyless_case" + "use_string" "#OpenKeylessCase" + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + "decodable" "0" + } + "tags" + { + "not_required_decoder" "1" + } + "chance_restricted" "1" + } + + "base_keyless_cosmetic_case" + { + "prefab" "base_keylesscase" + "lootlist_job_templates" + { + "cosmetic_case_unusual_hat_chance" "1" + } + } + + "base_weapon_case" + { + "prefab" "base_case" + "lootlist_job_templates" + { + "weapon_case_unusual_weapon_chance" "1" + "wear_level_normal_distribution" "1" + } + } + + "base_paintkit_keylesscase" + { + "prefab" "base_keylesscase" + "model_player" "models/items/paintkit_tool.mdl" + "image_inventory" "backpack/items/paintkit_tool" + "item_type_name" "" + "loot_list_rare_item_footer" "" + "static_attrs" + { + "hide crate series number" "1" + "random drop line item footer desc" "" + "force center wrap" "1" + } + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + "cosmetic_and_weapon_case_strange_quality_chance" "0" + "case_additional_drop_taunt_unusualifier" "0" + "case_additional_drop_paint_cans" "0" + "case_additional_drop_common_tools" "0" + "case_additional_drop_strange_transfer_tool" "0" + "case_additional_drop_mvm_ticket" "0" + "case_additional_drop_strange_parts" "0" + } + } + + "eventkey" + { + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "randomgift" + { + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + } + "capabilities" + { + "usable_gc" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Gift" + "item_slot" "action" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "randomgiftself" + { + "prefab" "randomgift" + "tool" + { + "usage" + { + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "min_ilevel" "1" + "max_ilevel" "1" + } + + "randomgiftserver" + { + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "dev_duck_tracker_gift_output" + "num_items" "1" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "min_ilevel" "23" + "max_ilevel" "23" + } + + "marketable" + { + "static_attrs" + { + "is marketable" "1" + } + } + + "map_token" + { + "capabilities" + { + "can_craft_if_purchased" "1" + } + "item_class" "map_token" + "item_type_name" "#TF_MapToken" + "show_in_armory" "1" + "armory_desc" "maptoken" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "halloween_costume_piece_2011" + { + "first_sale_date" "2011/10/26" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "holiday_restriction" "halloween_or_fullmoon" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Costume" + "min_ilevel" "1" + "max_ilevel" "100" + "item_quality" "unique" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2011" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "hw2013_transmogrifier_base" + { + "item_class" "tool" + "craft_class" "tool" + "expiration_date" "2014-11-11 01:00:00" + "capabilities" + { + "can_card_upgrade" "0" + } + "tool" + { + "type" "class_transmogrifier" + "usage_capabilities" + { + "can_card_upgrade" "1" + } + "usage" + { + "required_tags" + { + "halloween2013_community" "1" + } + } + } + "show_in_armory" "0" + "item_type_name" "#TF_SpellTool" + "image_inventory" "backpack/player/items/crafting/flask_florence" + "image_inventory_size_w""128" + "image_inventory_size_h""96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "halloween2013" + { + "first_sale_date" "2013/10/27" + "craft_class" "" + "craft_material_type" "" + "tags" + { + "halloween2013_community" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + } + + "halloween2013_spellbook" + { + "item_class" "tf_weapon_spellbook" + "item_type_name" "#TF_UsableItem" + "item_slot" "action" + "anim_slot" "MELEE_ALLCLASS" + "attach_to_hands" "1" + "act_as_weapon" "1" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "0" + "image_inventory" "backpack/crafting/diary_book" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "100" + "model_player" "" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "single wep deploy time decreased" + { + "attribute_class" "mult_single_wep_deploy_time" + "value" "0.5" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_MP_ATTACK_STAND_MELEE_ALLCLASS" "ACT_MP_THROW" + "ACT_VM_DRAW" "ACT_SPELL_VM_DRAW" + "ACT_VM_IDLE" "ACT_SPELL_VM_IDLE" + "ACT_VM_PRIMARYATTACK" "ACT_SPELL_VM_FIRE" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "halloween2013_spellbookpage" + { + "tool" + { + "type" "tf_spellbook_page" + "usage_capabilities" + { + "can_spell_page" "1" + } + } + "item_class" "tool" + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "0" + "item_type_name" "#TF_SpellbookPage_Type" + "item_name" "#TF_SpellbookPage" + "item_description" "#TF_SpellbookPage_Desc" + "image_inventory" "backpack/props_halloween/hwn_spellbook_page" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "halloween2014" + { + "public_prefab" "1" + "first_sale_date" "2014/10/28" + "holiday_restriction" "halloween_or_fullmoon" + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "90" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "91" + } + "kill eater score type 3" + { + "attribute_class" "kill_eater_score_type_3" + "value" "92" + } + } + } + + "halloween2014keylesscrate" + { + "prefab" "keylesscrate_base" + "first_sale_date" "2014/10/31" + "holiday_restriction" "halloween_or_fullmoon" + "item_type_name" "#TF_UnlockedCrate_Type" + "item_description" "#TF_Halloween2014Crate_Desc" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + + "spell_base" + { + "item_class" "tool" + "craft_class" "tool" + "expiration_date" "2014-11-11 01:00:00" + "tool" + { + "type" "apply_custom_attrib" + "usage_capabilities" + { + "can_card_upgrade" "1" + } + } + "show_in_armory" "0" + "item_type_name" "#TF_SpellTool" + "image_inventory" "backpack/player/items/crafting/flask_florence" + "image_inventory_overlay" "backpack/player/items/crafting/flask_florence_paintcolor" + "image_inventory_size_w""128" + "image_inventory_size_h""96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "voice_spell_base" + { + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__slot_misc" "1" + } + "attributes" + { + "SPELL: Halloween voice modulation" "1" + } + } + } + "image_inventory" "backpack/player/items/crafting/flask_erlenmeyer" + "image_inventory_overlay" "backpack/player/items/crafting/flask_erlenmeyer_paintcolor" + } + + "spell_base_footprints" + { + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__slot_misc" "1" + } + } + } + "image_inventory" "backpack/player/items/crafting/flask_bottle" + "image_inventory_overlay" "backpack/player/items/crafting/flask_bottle_paintcolor" + } + + "spell_base_pumpkinbombs" + { + "prefab" "spell_base" + "image_inventory" "backpack/player/items/crafting/flask_tub" + "image_inventory_overlay" "backpack/player/items/crafting/flask_tub_paintcolor" + } + + "voodoo_cursed" + { + "item_class" "craft_item" + "craft_material_type" "craft_material_voodoocursed" + "expiration_date" "2014-11-11 01:00:00" + "item_type_name" "#TF_VoodooCursed_Type" + "show_in_armory" "1" + "armory_remap" "Voodoo-Cursed Item (Armory)" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + } + + "zombie" + { + "prefab" "base_misc" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_VoodooCursedSoul_Type" + "show_in_armory" "0" + "armory_remap" "Voodoo-Cursed Soul (Armory)" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_slot" "misc" + "equip_region" "zombie_body" + "holiday_restriction" "halloween_or_fullmoon" + "attributes" + { + "player skin override" + { + "attribute_class" "player_skin_override" + "value" "1" + } + "zombiezombiezombiezombie" + { + "attribute_class" "zombiezombiezombiezombie" + "value" "1" + } + } + } + + "quest_deprecated" + { + "show_in_armory" "0" + "hidden" "1" + "equip_type" "account" + "expiration_date" "2016-10-11 23:59:59" + "item_class" "tool" + "craft_class" "tool" + } + + "quest_prefab_1st_operation_pauling" + { + "prefab" "dynamic_quest_base" + "expiration_date" "2015-10-12 23:59:59" + } + + "quest_prefab_2nd_operation_pauling" + { + "prefab" "dynamic_quest_base" + "expiration_date" "2016-04-06 00:00:00" + } + + "quest_prefab_halloween" + { + "prefab" "dynamic_quest_base" + "expiration_date" "2016-11-16 23:59:59" + } + + "quest_theme_pauling_base" + { + "notification_res" "Resource/UI/econ/QuestNotificationPanel_Pauling_standard.res" + "quest_item_res" "Resource/UI/econ/QuestItemPanel_Pauling_Base.res" + "in_game_res" "Resource/UI/quests/pauling/QuestItemTrackerPanel_InGame.res" + "sounds" + { + "give_quest" + { + "undefined" "" + "demoman" "plng_give_contract_demo" + "engineer" "plng_give_contract_engie" + "heavy" "plng_give_contract_heavy" + "medic" "plng_give_contract_medic" + "pyro" "plng_give_contract_pyro" + "scout" "plng_give_contract_scout" + "soldier" "plng_give_contract_soldier" + "sniper" "plng_give_contract_sniper" + "spy" "plng_give_contract_spy" + } + + "complete_quest" + { + "undefined" "plng_contract_complete_allclass" + "demoman" "plng_contract_complete_demo" + "engineer" "plng_contract_complete_engie" + "heavy" "plng_contract_complete_heavy" + "medic" "plng_contract_complete_medic" + "pyro" "plng_contract_complete_pyro" + "scout" "plng_contract_complete_scout" + "soldier" "plng_contract_complete_soldier" + "sniper" "plng_contract_complete_sniper" + "spy" "plng_contract_complete_spy" + } + + "give_reward" "plng_contract_complete_give_item_allclass" + "discard_quest" "plng_contract_fail_allclass" + } + } + + "quest_theme_pauling_operation_1" + { + "prefab" "quest_theme_pauling_base" + } + + "quest_theme_pauling_operation_2" + { + "prefab" "quest_theme_pauling_base" + + "sounds" + { + "give_quest" + { + "undefined" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "demoman" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "engineer" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "heavy" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "medic" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "pyro" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "scout" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "soldier" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "sniper" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + "spy" + { + "toughbreak_get_contract" "10" + "toughbreak_get_contract_rare" "90" + } + } + + "complete_quest" + { + "undefined" "toughbreak_win_contract_pauling" + "demoman" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_demo" "70" + } + "engineer" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_engie" "70" + } + "heavy" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_heavy" "70" + } + "medic" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_medic" "70" + } + "pyro" "toughbreak_win_contract_pauling" + "scout" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_scout" "70" + } + "soldier" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_soldier" "70" + } + "sniper" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_sniper" "70" + } + "spy" + { + "toughbreak_win_contract_pauling" "30" + "toughbreak_win_contract_spy" "70" + } + } + + "fully_complete_quest" + { + "undefined" "" + "demoman" "toughbreak_win_bigcontract_demo" + "engineer" "toughbreak_win_bigcontract_engie" + "heavy" "toughbreak_win_bigcontract_heavy" + "medic" "toughbreak_win_bigcontract_medic" + "pyro" "" + "scout" "toughbreak_win_bigcontract_scout" + "soldier" "toughbreak_win_bigcontract_soldier" + "sniper" "toughbreak_win_bigcontract_sniper" + "spy" "toughbreak_win_bigcontract_spy" + } + } + } + + "quest_theme_merasmus_base" + { + "notification_res" "Resource/UI/econ/QuestNotificationPanel_Merasmus_standard.res" + "quest_item_res" "Resource/UI/econ/QuestItemPanel_Merasmus_Base.res" + "in_game_res" "Resource/UI/quests/merasmus/QuestItemTrackerPanel_InGame.res" + "unack_position" "26" + + "sounds" + { + "give_quest" + { + "undefined" "hall2015_get_contract" + "demoman" "hall2015_get_contract" + "engineer" "hall2015_get_contract" + "heavy" "hall2015_get_contract" + "medic" "hall2015_get_contract" + "pyro" "hall2015_get_contract" + "scout" "hall2015_get_contract" + "soldier" "hall2015_get_contract" + "sniper" "hall2015_get_contract" + "spy" "hall2015_get_contract" + } + + "complete_quest" + { + "undefined" "hall2015_win_contract" + "demoman" "hall2015_win_contract" + "engineer" "hall2015_win_contract" + "heavy" "hall2015_win_contract" + "medic" "hall2015_win_contract" + "pyro" "hall2015_win_contract" + "scout" "hall2015_win_contract" + "soldier" "hall2015_win_contract" + "sniper" "hall2015_win_contract" + "spy" "hall2015_win_contract" + } + + "give_reward" "hall2015_reward" + "discard_quest" "plng_contract_fail_allclass" + } + } + + "quest_theme_merasmus_merasmus" + { + "prefab" "quest_theme_merasmus_base" + + "sounds" + { + "complete_quest" + { + "undefined" "hall2015_beat_merasmus" + "demoman" "hall2015_beat_merasmus" + "engineer" "hall2015_beat_merasmus" + "heavy" "hall2015_beat_merasmus" + "medic" "hall2015_beat_merasmus" + "pyro" "hall2015_beat_merasmus" + "scout" "hall2015_beat_merasmus" + "soldier" "hall2015_beat_merasmus" + "sniper" "hall2015_beat_merasmus" + "spy" "hall2015_beat_merasmus" + } + + "reveal_sound" "hall2015_fight_merasmus" + } + } + + "triad_trinket" + { + "first_sale_date" "2012/08/02" + "prefab" "base_misc" + "enabled" "1" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_SD_Chain" + "item_description" "#TF_SD_Chain_Desc" + "item_slot" "misc" + "equip_region" "shirt" + "propername" "1" + "show_in_armory" "1" + "item_quality" "unique" + "drop_type" "none" + "image_inventory" "backpack/workshop_partner/player/items/all_class/sd_shirt/sd_shirt_sniper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "xifier_class_remap" "triad_trinket" + "model_player_per_class" + { + "scout" "models/workshop_partner/player/items/all_class/sd_shirt/sd_shirt_scout.mdl" + "sniper" "models/workshop_partner/player/items/all_class/sd_shirt/sd_shirt_sniper.mdl" + "heavy" "models/workshop_partner/player/items/all_class/sd_shirt/sd_shirt_heavy.mdl" + "spy" "models/workshop_partner/player/items/all_class/sd_shirt/sd_shirt_spy.mdl" + "engineer" "models/workshop_partner/player/items/all_class/sd_shirt/sd_shirt_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SD_Chain_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_SD_Chain_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "champ_stamp" + { + "prefab" "base_misc" + "first_sale_date" "2012/08/02" + "enabled" "1" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_type_name" "#TF_Wearable_Tattoos" + "item_name" "#TF_SD_Tattoos" + "item_description" "#TF_SD_Tattoos_Desc" + "item_slot" "misc" + "equip_region" "arm_tattoos" + "show_in_armory" "1" + "item_quality" "unique" + "drop_type" "none" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/sd_tattoos/sd_tattoos_scout" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "xifier_class_remap" "champ_stamp" + "model_player_per_class" + { + "scout" "models/workshop_partner/player/items/all_class/sd_tattoos/sd_tattoos_scout.mdl" + "sniper" "models/workshop_partner/player/items/all_class/sd_tattoos/sd_tattoos_sniper.mdl" + "heavy" "models/workshop_partner/player/items/all_class/sd_tattoos/sd_tattoos_heavy.mdl" + "engineer" "models/workshop_partner/player/items/all_class/sd_tattoos/sd_tattoos_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "heavy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "marxman" + { + "first_sale_date" "2012/08/02" + "prefab" "base_misc" + "enabled" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_SD_Glasses" + "item_description" "#TF_SD_Glasses_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "loadondemand" "1" + "show_in_armory" "1" + "item_quality" "unique" + "drop_type" "drop" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/sd_glasses/sd_glasses" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "xifier_class_remap" "marxman" + "model_player_per_class" + { + "scout" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_scout.mdl" + "sniper" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_sniper.mdl" + "soldier" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_soldier.mdl" + "demoman" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_demo.mdl" + "medic" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_medic.mdl" + "heavy" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_heavy.mdl" + "spy" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_spy.mdl" + "engineer" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_engineer.mdl" + "pyro" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_pyro.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "scout" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_scout.mdl" + "sniper" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_sniper.mdl" + "soldier" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_soldier.mdl" + "demoman" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_demo.mdl" + "medic" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_medic.mdl" + "heavy" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_heavy.mdl" + "spy" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_spy.mdl" + "engineer" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_engineer.mdl" + "pyro" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_pyro.mdl" + } + "name" "#TF_SD_Glasses_Style0" + } + "1" + { + "model_player_per_class" + { + "scout" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_scout_cigar.mdl" + "sniper" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_sniper_cigar.mdl" + "soldier" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_soldier_cigar.mdl" + "demoman" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_demo_cigar.mdl" + "medic" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_medic_cigar.mdl" + "heavy" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_heavy_cigar.mdl" + "spy" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_spy_cigar.mdl" + "engineer" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_engineer_cigar.mdl" + "pyro" "models/workshop_partner/player/items/all_class/sd_glasses/sd_glasses_pyro_cigar.mdl" + } + "name" "#TF_SD_Glasses_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "cannonball" + { + "first_sale_date" "2012/08/02" + "enabled" "1" + "prefab" "base_hat" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_SD_Helmet" + "item_description" "#TF_SD_Helmet_Desc" + "loadondemand" "1" + "show_in_armory" "1" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "drop_type" "drop" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/sd_helm/sd_helm_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "xifier_class_remap" "cannonball" + "model_player_per_class" + { + "scout" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_scout.mdl" + "sniper" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_sniper.mdl" + "soldier" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_soldier.mdl" + "demoman" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_demo.mdl" + "medic" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_medic.mdl" + "heavy" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_heavy.mdl" + "spy" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_spy.mdl" + "engineer" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_engineer.mdl" + "pyro" "models/workshop_partner/player/items/all_class/sd_helm/sd_helm_pyro.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SD_Helmet_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_SD_Helmet_Style1" + } + "2" + { + "skin_red" "4" + "skin_blu" "5" + "name" "#TF_SD_Helmet_Style2" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "item_bak_fear_monger" + { + "prefab" "no_craft hat" + "import_name" "bak_fear_monger" + "item_name" "#TF_bak_fear_monger" + "item_description" "#TF_bak_fear_monger_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "image_inventory" "backpack/workshop/player/items/pyro/bak_fear_monger/bak_fear_monger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/bak_fear_monger/bak_fear_monger.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + "visuals" + { + "player_bodygroups" + { + "head" "0" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/bak_fear_monger/bak_fear_monger.mdl" + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "head" "1" + } + } + "1" + { + "model_player" "models/workshop/player/items/pyro/bak_fear_monger_s1/bak_fear_monger_s1.mdl" + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + + "item_bak_arkham_cowl" + { + "prefab" "no_craft hat" + "import_name" "bak_arkham_cowl" + "item_name" "#TF_bak_arkham_cowl" + "item_description" "#TF_bak_arkham_cowl_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "head_skin" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_scout.mdl" + "sniper" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_demo.mdl" + "medic" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_medic.mdl" + "heavy" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_pyro.mdl" + "spy" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_spy.mdl" + "engineer" "models/workshop/player/items/all_class/bak_arkham_cowl/bak_arkham_cowl_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "item_bak_firefly" + { + "import_name" "bak_firefly" + "prefab" "no_craft misc" + "item_name" "#TF_bak_firefly" + "item_description" "#TF_bak_firefly_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/bak_firefly/bak_firefly" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/bak_firefly/bak_firefly.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "weapon_atom_launcher" + { + "enabled" "1" + "item_class" "tf_weapon_rocketlauncher_airstrike" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "propername" "1" + "item_name" "#TF_Weapon_AirStrike" + "item_logname" "airstrike" + "item_iconname" "airstrike" + "item_slot" "primary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "image_inventory" "backpack/workshop/weapons/c_models/c_atom_launcher/c_atom_launcher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_atom_launcher/c_atom_launcher.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "60" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + } + "attributes" + { + "Blast radius decreased" + { + "attribute_class" "mult_explosion_radius" + "value" "0.90" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.85" + } + "rocket jump damage reduction" + { + "attribute_class" "rocket_jump_dmg_reduction" + "value" "0.85" + } + "rocketjump attackrate bonus" + { + "attribute_class" "rocketjump_attackrate_bonus" + "value" "0.35" + } + "mini rockets" + { + "attribute_class" "mini_rockets" + "value" "1" + } + "clipsize increase on kill" + { + "attribute_class" "clipsize_increase_on_kill" + "value" "4" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Airstrike.AltFire" + "sound_special1" "Weapon_Airstrike.Explosion" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_ambassador" + { + "enabled" "1" + "item_class" "tf_weapon_revolver" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_headshot" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "The Ambassador" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_Unique_Achievement_Revolver" + "item_slot" "secondary" + "item_quality" "unique" + "propername" "1" + "item_logname" "ambassador" + "item_iconname" "ambassador" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/weapons/c_models/c_ambassador/parts/c_ambassador_opt" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_ambassador/c_ambassador.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "32" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + "crit_dmg_falloff" "1" + } + "attributes" + { + "revolver use hit locations" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.85" + } + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Ambassador.Single" + "sound_burst" "Weapon_Ambassador.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "weapon_amputator" + { + "enabled" "1" + "item_class" "tf_weapon_bonesaw" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_heal_allies" "1" + } + "item_logname" "amputator" + "item_iconname" "amputator" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bonesaw" + "item_name" "#TF_Amputator" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_amputator/c_amputator" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_amputator/c_amputator.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "42" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "15" + "max_ilevel" "15" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.80" + } + "enables aoe heal" + { + "attribute_class" "enables_aoe_heal" + "value" "1" + } + "health regen" + { + "attribute_class" "add_health_regen" + "value" "3" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_annihilator" + { + "first_sale_date" "2012/08/02" + "enabled" "1" + "item_class" "tf_weapon_breakable_sign" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "base_item_name" "The Neon Annihilator" + "item_logname" "annihilator" + "item_iconname" "annihilator" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Sign" + "item_name" "#TF_SD_Sign" + "item_slot" "melee" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_sd_neonsign/c_sd_neonsign" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/weapons/c_models/c_sd_neonsign/c_sd_neonsign.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "xifier_class_remap" "neon_annihilator" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -15" + } + "attributes" + { + "dmg penalty vs players" + { + "attribute_class" "mult_dmg_vs_players" + "value" "0.80" + } + "ragdolls plasma effect" + { + "attribute_class" "ragdolls_plasma_effect" + "value" "1" + } + "crit vs wet players" + { + "attribute_class" "crit_vs_wet_players" + "value" "1" + } + "damage applies to sappers" + { + "attribute_class" "set_dmg_apply_to_sapper" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + "visuals" + { + "sound_melee_hit" "Neon_Sign.ImpactFlesh" + "sound_melee_hit_world" "Neon_Sign.ImpactWorld" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + + "weapon_axtinguisher" + { + "enabled" "1" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "base_item_name" "The Axtinguisher" + "item_logname" "axtinguisher" + "item_iconname" "axtinguisher" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_FireAxe" + "item_name" "#TF_Unique_Achievement_FireAxe1" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "55" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "attack_minicrits_and_consumes_burning" "1" + "damage penalty" "0.67" + "single wep holster time increased" "1.35" + "crit mod disabled" "0" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_back_scratcher" + { + "enabled" "1" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "back_scratcher" + "item_iconname" "back_scratcher" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_GardenRake" + "item_name" "#TF_BackScratcher" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_back_scratcher/c_back_scratcher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_back_scratcher/c_back_scratcher.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.455" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + "attributes" + { + "damage bonus" + { + "attribute_class" "mult_dmg" + "value" "1.25" + } + "health from healers reduced" + { + "attribute_class" "mult_health_fromhealers" + "value" "0.25" + } + "health from packs increased" + { + "attribute_class" "mult_health_frompacks" + "value" "1.5" + } + } + } + + "weapon_baseflamethrower" + { + "item_class" "tf_weapon_flamethrower" + "prefab" "weapon_newflame" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_FlameThrower" + "item_slot" "primary" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "extinguish restores health" "20" + } + "visuals" + { + "animation_replacement" + { + "ACT_MP_ATTACK_CROUCH_SECONDARYFIRE" "ACT_MP_ATTACK_CROUCH_PRIMARY_ALT" + "ACT_MP_ATTACK_STAND_SECONDARYFIRE" "ACT_MP_ATTACK_STAND_PRIMARY_ALT" + "ACT_MP_ATTACK_SWIM_SECONDARYFIRE" "ACT_MP_ATTACK_SWIM_PRIMARY_ALT" + } + } + } + + "weapon_newflame" + { + "static_attrs" + { + "flame_gravity" "0" + "flame_drag" "8.5" + "flame_up_speed" "50" + "flame_speed" "2450" + "flame_spread_degree" "2.8" + "flame_lifetime" "0.6" + "flame_random_life_time_offset" "0.1" + } + } + + "weapon_backburner" + { + "enabled" "1" + "prefab" "weapon_baseflamethrower" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_reflect_projectiles" "1" + "can_extinguish" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "is_flamethrower" "1" + } + "base_item_name" "The Backburner" + "item_logname" "backburner" + "item_iconname" "backburner" + "show_in_armory" "1" + "item_name" "#TF_Unique_Achievement_Flamethrower" + "image_inventory" "backpack/weapons/c_models/c_backburner/c_backburner" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_flamethrower/c_backburner.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "99" + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + "airblast cost increased" "2.5" + "mod flamethrower back crit" "1" + "crit mod disabled hidden" "0" + } + "visuals" + { + "sound_single_shot" "Weapon_BackBurner.FireStart" + "sound_special1" "Weapon_BackBurner.FireLoop" + "sound_burst" "Weapon_BackBurner.FireLoopCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "xifier_class_remap" "weapon_backburner" + } + + "weapon_bat" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "base_item_name" "TF_WEAPON_BAT" + "enabled" "0" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Bat" + "item_name" "#TF_Weapon_Bat" + "inspect_panel_dist" "35" + "item_slot" "melee" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_bat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_bat.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_sword" + { + "enabled" "1" + "item_class" "tf_weapon_sword" + "craft_class" "weapon" + "craft_material_type" "weapon" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Sword" + "item_slot" "melee" + "anim_slot" "item1" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "visuals" + { + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_SPECIAL_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_SPECIAL_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_SPECIAL_VM_INSPECT_END" + } + } + } + + "weapon_battleaxe" + { + "prefab" "weapon_sword" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "battleaxe" + "item_iconname" "battleaxe" + "item_type_name" "#TF_Weapon_Axe" + "item_name" "#TF_Unique_BattleAxe" + "item_description" "#TF_Unique_BattleAxe_desc" + "image_inventory" "backpack/workshop/weapons/c_models/c_battleaxe/c_battleaxe" + "image_inventory_size_h" "96" + "model_player" "models/workshop/weapons/c_models/c_battleaxe/c_battleaxe.mdl" + "propername" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + "weapon_stattrak_module_scale" "0.455" + } + "attributes" + { + "is_a_sword" + { + "attribute_class" "is_a_sword" + "value" "72" + } + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "damage bonus" + { + "attribute_class" "mult_dmg" + "value" "1.2" + } + "move speed penalty" + { + "attribute_class" "mult_player_movespeed" + "value" "0.85" + } + } + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Weapon_Sword.HitFlesh" + "sound_melee_hit_world" "Weapon_Sword.HitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_bazaar_sniper" + { + "enabled" "1" + "item_class" "tf_weapon_sniperrifle_decap" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_headshot" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "bazaar_bargain" + "item_iconname" "bazaar_bargain" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_BazaarBargain" + "item_description" "#TF_BazaarBargain_Desc" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_bazaar_sniper/c_bazaar_sniper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_bazaar_sniper/c_bazaar_sniper.mdl" + "attach_to_hands" "1" + "visuals" + { + "sound_single_shot" "Weapon_Bazaar_Bargain.Single" + "sound_burst" "Weapon_Bazaar_Bargain.SingleCrit" + } + "attributes" + { + "mult sniper charge penalty DISPLAY ONLY" + { + "attribute_class" "mult_sniper_charge_base_dummy" + "value" "1.5" + } + } + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 0 -8" + "weapon_stattrak_module_scale" "0.676" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_blackbox" + { + "enabled" "1" + "item_class" "tf_weapon_rocketlauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "The Black Box" + "item_logname" "blackbox" + "item_iconname" "blackbox" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_TheBlackBox" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop/weapons/c_models/c_blackbox/c_blackbox" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_blackbox/c_blackbox.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "55" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "12 -4 -8" + } + "attributes" + { + "health on radius damage" + { + "attribute_class" "add_health_on_radius_damage" + "value" "20" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.75" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_RPG_BlackBox.Single" + "sound_burst" "Weapon_RPG_BlackBox.SingleCrit" + "sound_special1" "Weapon_RPG_BlackBox.Explode" + "animation_replacement" + { + "ACT_VM_RELOAD" "ACT_PRIMARY_VM_RELOAD_2" + "ACT_RELOAD_START" "ACT_PRIMARY_RELOAD_START_2" + "ACT_RELOAD_FINISH" "ACT_PRIMARY_RELOAD_FINISH_2" + "ACT_MP_RELOAD_STAND" "ACT_MP_RELOAD_STAND_PRIMARY_2" + "ACT_MP_RELOAD_STAND_LOOP" "ACT_MP_RELOAD_STAND_PRIMARY_2" + "ACT_MP_RELOAD_STAND_END" "ACT_MP_RELOAD_STAND_PRIMARY_END_2" + "ACT_MP_RELOAD_CROUCH" "ACT_MP_RELOAD_CROUCH_PRIMARY_2" + "ACT_MP_RELOAD_CROUCH_END" "ACT_MP_RELOAD_CROUCH_PRIMARY_END_2" + "ACT_MP_RELOAD_CROUCH_LOOP" "ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP_2" + "ACT_MP_RELOAD_AIRWALK" "ACT_MP_RELOAD_AIRWALK_PRIMARY_2" + "ACT_MP_RELOAD_AIRWALK_END" "ACT_MP_RELOAD_AIRWALK_PRIMARY_END_2" + "ACT_MP_RELOAD_AIRWALK_LOOP" "ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP_2" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/workshop/weapons/c_models/c_blackbox/c_blackbox_gold" + } + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "xifier_class_remap" "blackbox" + "particle_suffix" "blackbox" + } + + "weapon_bonesaw" + { + "enabled" "1" + "item_class" "tf_weapon_bonesaw" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "base_item_name" "TF_WEAPON_BONESAW" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bonesaw" + "item_name" "#TF_Weapon_Bonesaw" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_bonesaw/c_bonesaw" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "42" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_bonesaw/c_bonesaw.mdl" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "weapon_bonesaw" + } + + "weapon_bonk" + { + "prefab" "weapon_scout_drink" + "base_item_name" "Bonk! Atomic Punch" + "item_name" "#TF_Unique_Achievement_EnergyDrink" + "inspect_panel_dist" "20" + "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_energy_drink" + "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" + "xifier_class_remap" "weapon_bonk" + } + + "weapon_bottle" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_bottle" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Bottle" + "item_name" "#TF_Weapon_Bottle" + "item_slot" "melee" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_bottle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "30" + "model_player" "models/weapons/c_models/c_bottle/c_bottle.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -14" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "weapon_buff_banner" + { + "enabled" "1" + "item_class" "tf_weapon_buff_item" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_apply_soldier_buff" "1" + } + "base_item_name" "The Buff Banner" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Battle_Banner" + "item_name" "#TF_Unique_Achievement_SoldierBuff" + "item_description" "#TF_Unique_Achievement_SoldierBuff_Desc" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/weapons/c_models/c_buffpack/c_buffpack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "35" + "model_player" "models/weapons/c_models/c_bugle/c_bugle.mdl" + "attach_to_hands" "1" + "extra_wearable" "models/weapons/c_models/c_buffpack/c_buffpack.mdl" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -2 -5" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "51" + } + "mod soldier buff type" + { + "attribute_class" "set_buff_type" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_MP_ATTACK_STAND_MELEE_SECONDARY" "ACT_MP_ATTACK_STAND_ITEM1_SECONDARY" + "ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY" "ACT_MP_ATTACK_STAND_ITEM1_SECONDARY" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + + "weapon_claidheamohmor" + { + "prefab" "weapon_sword" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_logname" "claidheamohmor" + "item_iconname" "claidheamohmor" + "item_name" "#TF_Claidheamohmor" + "item_description" "#TF_Claidheamohmor_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_claidheamohmor/c_claidheamohmor" + "model_player" "models/workshop/weapons/c_models/c_claidheamohmor/c_claidheamohmor.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + "weapon_stattrak_module_scale" "0.455" + } + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Weapon_Sword.HitFlesh" + "sound_melee_hit_world" "Weapon_Sword.HitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + } + "attributes" + { + "kill refills meter" + { + "attribute_class" "kill_refills_meter" + "value" "0.25" + } + "is_a_sword" + { + "attribute_class" "is_a_sword" + "value" "72" + } + "charge time increased" + { + "attribute_class" "mod_charge_time" + "value" "0.5" + } + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "dmg taken increased" + { + "attribute_class" "mult_dmgtaken" + "value" "1.15" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_club" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_club" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Club" + "item_name" "#TF_Weapon_Club" + "item_slot" "melee" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_machete" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_machete/c_machete.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_crusaders_crossbow" + { + "enabled" "1" + "item_class" "tf_weapon_crossbow" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + "can_heal_allies" "1" + } + "base_item_name" "The Crusader's Crossbow" + "item_type_name" "#TF_Weapon_Crossbow" + "item_name" "#TF_CrusadersCrossbow" + "item_description" "#TF_CrusadersCrossbow_desc" + "item_logname" "crusaders_crossbow" + "item_iconname" "crusaders_crossbow" + "item_slot" "primary" + "item_quality" "unique" + "min_ilevel" "15" + "max_ilevel" "15" + "image_inventory" "backpack/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "42" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -14" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "sniper no headshots" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "maxammo primary reduced" + { + "attribute_class" "mult_maxammo_primary" + "value" "0.25" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_CrusadersCrossbow.Single" + "sound_burst" "Weapon_CrusadersCrossbow.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "crusaders_crossbow" + } + + "weapon_degreaser" + { + "enabled" "1" + "prefab" "weapon_baseflamethrower" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_reflect_projectiles" "1" + "can_extinguish" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "is_flamethrower" "1" + } + "item_logname" "degreaser" + "item_iconname" "degreaser" + "show_in_armory" "1" + "item_name" "#TF_TheDegreaser" + "image_inventory" "backpack/workshop/weapons/c_models/c_degreaser/c_degreaser" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_degreaser/c_degreaser.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "91" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "single wep deploy time decreased" "0.4" + "switch from wep deploy time decreased" "0.7" + "weapon burn dmg reduced" "0.34" + "airblast cost increased" "1.25" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_degreaser/c_degreaser_pilotlight.mdl" + } + } + "sound_single_shot" "Weapon_Degreaser.FireStart" + "sound_special1" "Weapon_Degreaser.FireLoop" + "sound_burst" "Weapon_Degreaser.FireLoopCrit" + "sound_special3" "Weapon_Degreaser.FireEnd" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_demo_cannon" + { + "enabled" "1" + "item_class" "tf_weapon_cannon" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_gib_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_logname" "loose_cannon" + "item_iconname" "loose_cannon_explosion" + "item_type_name" "#TF_Weapon_GrenadeLauncher" + "item_name" "#TF_Weapon_Cannon" + "item_description" "#TF_Weapon_Cannon_desc" + "item_slot" "primary" + "anim_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "50" + "image_inventory" "backpack/workshop/weapons/c_models/c_demo_cannon/c_demo_cannon" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_demo_cannon/c_demo_cannon.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "17" + } + "grenade launcher mortar mode" + { + "attribute_class" "grenade_launcher_mortar_mode" + "value" "1" + } + "grenade not explode on impact" + { + "attribute_class" "grenade_not_explode_on_impact" + "value" "1" + } + "Projectile speed increased" + { + "attribute_class" "mult_projectile_speed" + "value" "1.2" + } + "cannonball push back" + { + "attribute_class" "cannonball_push_back" + "value" "1" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "65" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + } + + "weapon_demo_sultan_sword" + { + "prefab" "weapon_sword" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_name" "#TF_PersianPersuader" + "item_description" "#TF_PersianPersuader_Desc" + "item_logname" "persian_persuader" + "item_iconname" "persian_persuader" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_demo_sultan_sword/c_demo_sultan_sword" + "model_player" "models/workshop/weapons/c_models/c_demo_sultan_sword/c_demo_sultan_sword.mdl" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + "weapon_stattrak_module_scale" "0.455" + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Weapon_Sword.HitFlesh" + "sound_melee_hit_world" "Weapon_Sword.HitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALLCLASS_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALLCLASS_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALLCLASS_VM_INSPECT_END" + } + } + "attributes" + { + "is_a_sword" + { + "attribute_class" "is_a_sword" + "value" "72" + } + "maxammo primary reduced" + { + "attribute_class" "mult_maxammo_primary" + "value" "0.20" + } + "maxammo secondary reduced" + { + "attribute_class" "mult_maxammo_secondary" + "value" "0.20" + } + "ammo gives charge" + { + "attribute_class" "ammo_gives_charge" + "value" "1" + } + "charge meter on hit" + { + "attribute_class" "charge_meter_on_hit" + "value" "0.20" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + } + + "weapon_demoman_boots" + { + "enabled" "1" + "item_class" "tf_wearable" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Wearable_Boots" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "base_item_name" "The Bootlegger" + "show_in_armory" "1" + "item_slot" "primary" + "equip_region" "feet" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "10" + "max_ilevel" "10" + "act_as_wearable" "1" + "drop_type" "none" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "mult charge turn control" + { + "attribute_class" "charge_turn_control" + "value" "3" + } + "max health additive bonus" + { + "attribute_class" "add_maxhealth" + "value" "25" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + "kill refills meter" + { + "attribute_class" "kill_refills_meter" + "value" "0.25" + } + "move speed bonus shield required" + { + "attribute_class" "mult_player_movespeed_shieldrequired" + "value" "1.10" + } + } + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "weapon_detonator" + { + "enabled" "1" + "item_class" "tf_weapon_flaregun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flaregun" + "item_logname" "detonator" + "item_iconname" "detonator" + "item_name" "#TF_Weapon_Flaregun_Detonator" + "item_description" "#TF_Weapon_Flaregun_Detonator_Desc" + "item_slot" "secondary" + "anim_slot" "ITEM1" + "image_inventory" "backpack/workshop/weapons/c_models/c_detonator/c_detonator" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_detonator/c_detonator.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "40" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "hidden secondary max ammo penalty" + { + "attribute_class" "mult_maxammo_secondary" + "value" "0.5" + } + "blast dmg to self increased" + { + "attribute_class" "blast_dmg_to_self" + "value" "1.50" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "minicrit vs burning player" + { + "attribute_class" "or_minicrit_vs_playercond_burning" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Detonator.Fire" + "sound_special1" "Weapon_Detonator.Detonate" + "sound_special2" "Weapon_Detonator.DetonateWorld" + + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "weapon_disciplinary_action" + { + "enabled" "1" + "item_class" "tf_weapon_shovel" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Riding_Crop" + "item_name" "#TF_DisciplinaryAction" + "item_logname" "disciplinary_action" + "item_iconname" "disciplinary_action" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_riding_crop/c_riding_crop" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_riding_crop/c_riding_crop.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "50" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -5 -20" + "weapon_stattrak_module_scale" "0.455" + } + "attributes" + { + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "speed buff ally" + { + "attribute_class" "speed_buff_ally" + "value" "1" + } + "melee range multiplier" + { + "attribute_class" "melee_range_multiplier" + "value" "1.7" + } + "melee bounds multiplier" + { + "attribute_class" "melee_bounds_multiplier" + "value" "1.55" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "66" + } + } + "visuals" + { + "sound_melee_miss" "DisciplineDevice.Swing" + "sound_melee_hit" "DisciplineDevice.Impact" + "sound_melee_hit_world" "DisciplineDevice.HitWorld" + "sound_melee_burst" "DisciplineDevice.ImpactCrit" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_spy_knife_item2" + { + "enabled" "1" + "item_class" "tf_weapon_knife" + "craft_class" "weapon" + "craft_material_type" "weapon" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Knife" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_ITEM2_VM_DRAW" + "ACT_VM_IDLE" "ACT_ITEM2_VM_IDLE" + "ACT_VM_HITCENTER" "ACT_ITEM2_VM_HITCENTER" + "ACT_VM_SWINGHARD" "ACT_ITEM2_VM_SWINGHARD" + "ACT_BACKSTAB_VM_UP" "ACT_ITEM2_BACKSTAB_VM_UP" + "ACT_BACKSTAB_VM_DOWN" "ACT_ITEM2_BACKSTAB_VM_DOWN" + "ACT_BACKSTAB_VM_IDLE" "ACT_ITEM2_BACKSTAB_VM_IDLE" + "ACT_MELEE_VM_STUN" "ACT_MELEE_VM_ITEM2_STUN" + "ACT_MELEE_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + + } + + "weapon_eternal_reward" + { + "prefab" "weapon_spy_knife_item2" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_name" "#TF_EternalReward" + "propername" "0" + "item_logname" "eternal_reward" + "item_iconname" "eternal_reward" + "image_inventory" "backpack/workshop/weapons/c_models/c_eternal_reward/c_eternal_reward" + "model_player" "models/workshop/weapons/c_models/c_eternal_reward/c_eternal_reward.mdl" + "static_attrs" + { + "min_viewmodel_offset" "5 0 -4" + } + "attributes" + { + "disguise on backstab" + { + "attribute_class" "set_disguise_on_backstab" + "value" "1" + } + "silent killer" + { + "attribute_class" "set_silent_killer" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "mult cloak meter consume rate" + { + "attribute_class" "mult_cloak_meter_consume_rate" + "value" "1.33" + } + "mod_disguise_consumes_cloak" + { + "attribute_class" "mod_disguise_consumes_cloak" + "value" "1" + } + } + } + + "weapon_eyelander" + { + "prefab" "weapon_sword" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "The Eyelander" + "item_name" "#TF_Unique_Achievement_Sword" + "item_description" "#TF_Unique_Achievement_Sword_Desc" + "propername" "1" + "image_inventory" "backpack/weapons/c_models/c_claymore/c_claymore" + "model_player" "models/weapons/c_models/c_claymore/c_claymore.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "12 -3 -10" + } + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Weapon_Sword.HitFlesh" + "sound_melee_hit_world" "Weapon_Sword.HitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_claymore/c_claymore_gold" + } + } + } + "attributes" + { + "is_a_sword" + { + "attribute_class" "is_a_sword" + "value" "72" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "max health additive penalty" + { + "attribute_class" "add_maxhealth" + "value" "-25" + } + "decapitate type" + { + "attribute_class" "decapitate_type" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "6" + } + "kill eater kill type" + { + "attribute_class" "kill_eater_kill_type" + "value" "6" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "eyelander" + } + + "weapon_fireaxe" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_FireAxe" + "item_name" "#TF_Weapon_FireAxe" + "item_slot" "melee" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_fists" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Fists" + "item_name" "#TF_Weapon_Fists" + "item_slot" "melee" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/v_models/v_fist_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "" + "attach_to_hands" "1" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_FISTS_VM_IDLE" + "ACT_VM_HITLEFT" "ACT_FISTS_VM_HITLEFT" + "ACT_VM_HITRIGHT" "ACT_FISTS_VM_HITRIGHT" + "ACT_VM_SWINGHARD" "ACT_FISTS_VM_SWINGHARD" + "ACT_VM_DRAW" "ACT_FISTS_VM_DRAW" + } + "styles" + { + "0" + { + "skin_red" "2" + "skin_blu" "3" + "v_skin_red" "2" + "v_skin_blu" "3" + "selectable" "0" + } + } + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + } + + "weapon_flamethrower" + { + "prefab" "weapon_baseflamethrower" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_reflect_projectiles" "1" + "can_extinguish" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "is_flamethrower" "1" + } + "base_item_name" "TF_WEAPON_FLAMETHROWER" + "inspect_panel_dist" "91" + "enabled" "1" + "item_name" "#TF_Weapon_FlameThrower" + "item_description" "#TF_Weapon_FlameThrower_desc" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_flamethrower/c_flamethrower" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" + "attach_to_hands" "1" + "static_attrs" + { + "weapon_stattrak_module_scale" "1" + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "flamethrower" + } + + "weapon_flaregun" + { + "enabled" "1" + "item_class" "tf_weapon_flaregun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "The Flare Gun" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flaregun" + "item_name" "#TF_Unique_Achievement_Flaregun" + "item_description" "#TF_Unique_Achievement_Flaregun_desc" + "item_slot" "secondary" + "anim_slot" "ITEM1" + "image_inventory" "backpack/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "model_player" "models/weapons/c_models/c_flaregun_pyro/c_flaregun_pyro.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "30" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "hidden secondary max ammo penalty" + { + "attribute_class" "mult_maxammo_secondary" + "value" "0.5" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "crit_vs_burning_FLARES_DISPLAY_ONLY" + { + "attribute_class" "crit_vs_burning_FLARES_DISPLAY_ONLY" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "flaregun" + } + + "weapon_force_a_nature" + { + + "enabled" "1" + "item_class" "tf_weapon_scattergun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_collect" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "The Force-a-Nature" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Scattergun" + "item_name" "#TF_Unique_Achievement_Scattergun_Double" + "item_description" "#TF_Unique_Achievement_Scattergun_Double_desc" + "item_logname" "force_a_nature" + "item_iconname" "force_a_nature" + "item_slot" "primary" + "anim_slot" "item2" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/weapons/c_models/c_double_barrel" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_double_barrel.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "38" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "scattergun has knockback" + { + "attribute_class" "set_scattergun_has_knockback" + "value" "1" + } + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.5" + } + "bullets per shot bonus" + { + "attribute_class" "mult_bullets_per_shot" + "value" "1.2" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.9" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.34" + } + "scattergun no reload single" + { + "attribute_class" "set_scattergun_no_reload_single" + "value" "1" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Scatter_Gun_Double.Single" + "sound_burst" "Weapon_Scatter_Gun_Double.SingleCrit" + "muzzle_flash" "muzzle_bignasty" + "tracer_effect" "bullet_bignasty_tracer01" + + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "xifier_class_remap" "force_a_nature" + } + + "weapon_frontier_justice" + { + "enabled" "1" + "item_class" "tf_weapon_sentry_revenge" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "The Frontier Justice" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Shotgun" + "item_name" "#TF_Unique_Sentry_Shotgun" + "item_slot" "primary" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "item_logname" "frontier_justice" + "item_iconname" "frontier_kill" + "image_inventory" "backpack/weapons/c_models/c_frontierjustice/c_frontierjustice" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_frontierjustice/c_frontierjustice.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "60" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "mod sentry killed revenge" + { + "attribute_class" "sentry_killed_revenge" + "value" "1" + } + "lose revenge crits on death DISPLAY ONLY" + { + "attribute_class" "lose_revenge_crits_on_death_DISPLAY_ONLY" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.5" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_FrontierJustice.Single" + "sound_burst" "Weapon_FrontierJustice.SingleCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_gatling_gun" + { + "enabled" "1" + "item_class" "tf_weapon_minigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Minigun" + "item_name" "#TF_GatlingGun" + "item_slot" "primary" + "item_logname" "brass_beast" + "item_iconname" "brass_beast" + "image_inventory" "backpack/workshop/weapons/c_models/c_gatling_gun/c_gatling_gun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_gatling_gun/c_gatling_gun.mdl" + "attach_to_hands" "1" + "propername" "1" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "visuals" + { + "sound_reload" "Weapon_Gatling.Reload" + "sound_empty" "Weapon_Gatling.ClipEmpty" + "sound_double_shot" "Weapon_Gatling.Fire" + "sound_special1" "Weapon_Gatling.WindUp" + "sound_special2" "Weapon_Gatling.WindDown" + "sound_special3" "Weapon_Gatling.Spin" + "sound_burst" "Weapon_Gatling.FireCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "damage bonus" + { + "attribute_class" "mult_dmg" + "value" "1.20" + } + "minigun spinup time increased" + { + "attribute_class" "mult_minigun_spinup_time" + "value" "1.5" + } + "aiming movespeed decreased" + { + "attribute_class" "mult_player_aiming_movespeed" + "value" "0.4" + } + "spunup_damage_resistance" + { + "attribute_class" "spunup_damage_resistance" + "value" "0.80" + } + } + } + + "weapon_grenade_launcher" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_gib_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_long_distance_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "base_item_name" "TF_WEAPON_GRENADELAUNCHER" + "enabled" "0" + "item_class" "tf_weapon_grenadelauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_GrenadeLauncher" + "item_name" "#TF_Weapon_GrenadeLauncher" + "item_slot" "primary" + "anim_slot" "secondary" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_grenadelauncher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "55" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "1" + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "grenade_launcher" + } + + "weapon_gru" + { + "enabled" "1" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "base_item_name" "Gloves of Running Urgently" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gloves" + "item_name" "#TF_Unique_Gloves_of_Running_Urgently" + "item_slot" "melee" + "item_logname" "gloves_running_urgently" + "item_iconname" "gloves_running_urgently" + "image_inventory" "backpack/weapons/c_models/c_boxing_gloves_urgency/c_boxing_gloves_urgency" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "mult_player_movespeed_active" "1.3" + "mod_maxhealth_drain_rate" "10.0" + } + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "single wep holster time increased" + { + "attribute_class" "mult_switch_from_wep_deploy_time" + "value" "1.5" + } + } + "hide_bodygroups_deployed_only" "1" + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" + "drop_sound" "ui/item_boxing_gloves_drop.wav" + "xifier_class_remap" "gru" + } + + "weapon_gunboats" + { + "enabled" "1" + "item_class" "tf_wearable" + "craft_material_type" "weapon" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "base_item_name" "The Gunboats" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_Unique_Blast_Boots" + "item_slot" "secondary" + "equip_region" "feet" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_rocketboots_soldier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_rocketboots_soldier.mdl" + "act_as_wearable" "1" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "rocket jump damage reduction" + { + "attribute_class" "rocket_jump_dmg_reduction" + "value" "0.4" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_guillotine" + { + "first_sale_date" "2012/08/02" + "enabled" "1" + "item_class" "tf_weapon_cleaver" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_long_distance_damage" "1" + "cannot_damage_buildings" "1" + } + "base_item_name" "The Flying Guillotine" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Cleaver" + "item_name" "#TF_SD_Cleaver" + "item_logname" "guillotine" + "item_iconname" "guillotine" + "item_slot" "secondary" + "anim_slot" "item1" + "item_quality" "unique" + "propername" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_sd_cleaver/c_sd_cleaver" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/weapons/c_models/c_sd_cleaver/c_sd_cleaver.mdl" + "xifier_class_remap" "guillotine" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -8" + } + "attributes" + { + "cleaver description" + { + "attribute_class" "desc_cleaver_description" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "sound_deploy" "Cleaver.Draw" + "sound_single_shot" "Cleaver.Single" + + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_SD_Cleaver_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_SD_Cleaver_Style1" + } + } + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ITEM3_VM_IDLE" + "ACT_VM_DRAW" "ACT_ITEM3_VM_DRAW" + "ACT_VM_PRIMARYATTACK" "ACT_ITEM3_VM_THROW" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_SECONDARY_ALT1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_SECONDARY_ALT1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_SECONDARY_ALT1_VM_INSPECT_END" + + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_holymackerel" + { + "enabled" "1" + "item_class" "tf_weapon_bat_fish" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "base_item_name" "The Holy Mackerel" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Fish" + "item_name" "#TF_TheHolyMackerel" + "item_description" "#TF_TheHolyMackerel_Desc" + "item_slot" "melee" + "item_quality" "unique" + "item_logname" "holymackerel" + "item_iconname" "holymackerel" + "propername" "1" + "min_ilevel" "42" + "max_ilevel" "42" + "attach_to_hands" "1" + "inspect_panel_dist" "35" + "image_inventory" "backpack/workshop/weapons/c_models/c_holymackerel/c_holymackerel" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_holymackerel/c_holymackerel.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + "weapon_stattrak_module_scale" "0.455" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "7" + } + "kill eater kill type" + { + "attribute_class" "kill_eater_kill_type" + "value" "7" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + + "weapon_huntsman" + { + "enabled" "1" + "item_class" "tf_weapon_compound_bow" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_headshot" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "The Huntsman" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_CompoundBow" + "item_name" "#TF_Unique_Achievement_CompoundBow" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "item_iconname" "huntsman" + "min_ilevel" "10" + "max_ilevel" "10" + "anim_slot" "item2" + "image_inventory" "backpack/weapons/c_models/c_bow/c_bow" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "65" + "model_player" "models/weapons/c_models/c_bow/c_bow.mdl" + "attach_to_hands" "1" + "flip_viewmodel" "1" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -4 -10" + } + "attributes" + { + "hidden primary max ammo bonus" + { + "attribute_class" "mult_maxammo_primary" + "value" "0.5" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "arrows" "1" + } + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + + "weapon_invis" + { + "capabilities" + { + "nameable" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_invis" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Watch" + "item_name" "#TF_Weapon_Watch" + "item_description" "#TF_Weapon_Watch_desc" + "item_slot" "pda2" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_spy_watch/parts/c_spy_watch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/v_models/v_watch_spy.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "8 0 -6" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "58" + } + } + "mouse_pressed_sound" "ui/item_watch_pickup.wav" + "drop_sound" "ui/item_watch_drop.wav" + } + + "weapon_jag" + { + "enabled" "1" + "item_class" "tf_weapon_wrench" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Wrench" + "item_name" "#TF_Jag" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "15" + "max_ilevel" "15" + "propername" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "45" + "item_logname" "wrench_jag" + "item_iconname" "wrench_jag" + "image_inventory" "backpack/workshop/weapons/c_models/c_jag/c_jag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_jag/c_jag.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -2 -9" + "weapon_stattrak_module_scale" "0.756" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "attributes" + { + "Construction rate increased" + { + "attribute_class" "mult_construction_value" + "value" "1.3" + } + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.85" + } + "Repair rate decreased" + { + "attribute_class" "mult_repair_value" + "value" "0.80" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "dmg penalty vs buildings" + { + "attribute_class" "mult_dmg_vs_buildings" + "value" "0.67" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "3" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "0" + } + } + } + + "weapon_jarate" + { + "enabled" "1" + "item_class" "tf_weapon_jar" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_extinguish" "1" + } + "base_item_name" "Jarate" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Jar" + "item_name" "#TF_Unique_Achievement_Jar" + "item_slot" "secondary" + "item_quality" "unique" + "anim_slot" "item1" + "min_ilevel" "5" + "max_ilevel" "5" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/c_models/urinejar" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "22" + "model_player" "models/weapons/c_models/urinejar.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "jarate description" + { + "attribute_class" "desc_jarate_description" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "4" + } + "extinguish reduces cooldown" + { + "attribute_class" "extinguish_reduces_cooldown" + "value" "0.8" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "xifier_class_remap" "jarate" + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "weapon_knife" + { + "inspect_panel_dist" "25" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "TF_WEAPON_KNIFE" + "enabled" "0" + "item_class" "tf_weapon_knife" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Knife" + "item_name" "#TF_Weapon_Knife" + "item_description" "#TF_Weapon_Knife_desc" + "item_slot" "melee" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_knife" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_knife/c_knife.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.455" + "min_viewmodel_offset" "5 0 -4" + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_HITCENTER" "ACT_MELEE_VM_HITCENTER" + "ACT_VM_SWINGHARD" "ACT_MELEE_VM_SWINGHARD" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "particle_suffix" "knife" + } + + "weapon_kritzkrieg" + { + "prefab" "valve" + "enabled" "1" + "item_class" "tf_weapon_medigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Medigun" + "item_name" "#TF_Unique_Achievement_Medigun1" + "item_slot" "secondary" + "equip_region" "medigun_backpack" + "image_inventory" "backpack/weapons/c_models/c_overhealer/c_overhealer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_medigun/c_medigun.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "8" + "max_ilevel" "8" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "medigun charge is crit boost" + { + "attribute_class" "set_charge_type" + "value" "1" + } + "ubercharge rate bonus" + { + "attribute_class" "mult_medigun_uberchargerate" + "value" "1.25" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "2" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals_red" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_overhealer/c_overhealer.mdl" + } + } + "custom_particlesystem" + { + "system" "medicgun_beam_attrib_overheal_red" + } + } + "visuals_blu" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_overhealer/c_overhealer.mdl" + } + } + "custom_particlesystem" + { + "system" "medicgun_beam_attrib_overheal_blue" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_lochnload" + { + "enabled" "1" + "item_class" "tf_weapon_grenadelauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_logname" "loch_n_load" + "item_iconname" "loch_n_load" + "item_type_name" "#TF_Weapon_GrenadeLauncher" + "item_name" "#TF_LochNLoad" + "item_slot" "primary" + "anim_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "55" + "image_inventory" "backpack/workshop/weapons/c_models/c_lochnload/c_lochnload" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_lochnload/c_lochnload.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.75" + } + "dmg bonus vs buildings" + { + "attribute_class" "mult_dmg_vs_buildings" + "value" "1.2" + } + "Projectile speed increased" + { + "attribute_class" "mult_projectile_speed" + "value" "1.25" + } + "Blast radius decreased" + { + "attribute_class" "mult_explosion_radius" + "value" "0.75" + } + "sticky air burst mode" + { + "attribute_class" "set_detonate_mode" + "value" "2" + } + "grenade no spin" + { + "attribute_class" "grenade_no_spin" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_LochnLoad.Single" + "sound_burst" "Weapon_LochnLoad.SingleCrit" + "animation_replacement" + { + "ACT_RELOAD_START" "ACT_PRIMARY_RELOAD_START_2" + "ACT_VM_RELOAD" "ACT_PRIMARY_VM_RELOAD_2" + "ACT_RELOAD_FINISH" "ACT_PRIMARY_RELOAD_FINISH_2" + + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + } + + "weapon_long_heatmaker" + { + "first_sale_date" "2012/08/02" + "enabled" "1" + "item_class" "tf_weapon_minigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_posthumous_damage" "1" + } + "base_item_name" "The Huo Long Heatmaker" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Minigun" + "item_name" "#TF_SD_Minigun" + "item_slot" "primary" + "item_logname" "long_heatmaker" + "item_iconname" "long_heatmaker" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_canton/c_canton" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/weapons/c_models/c_canton/c_canton.mdl" + "attach_to_hands" "1" + "propername" "1" + "item_quality" "unique" + "xifier_class_remap" "long_heatmaker" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "sound_double_shot" "Dragon_Minigun.Fire" + "sound_special1" "Dragon_Minigun.WindUp" + "sound_special2" "Dragon_Minigun.WindDown" + "sound_special3" "Dragon_Minigun.Spin" + "sound_burst" "Dragon_Minigun.FireCrit" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "ring of fire while aiming" + { + "attribute_class" "ring_of_fire_while_aiming" + "value" "12" + } + "uses ammo while aiming" + { + "attribute_class" "uses_ammo_while_aiming" + "value" "4" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.9" + } + "damage bonus vs burning" + { + "attribute_class" "mult_dmg_vs_burning" + "value" "1.25" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_sniperrifle_alt1" + { + "visuals" + { + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + } + + "weapon_machina" + { + "prefab" "weapon_sniperrifle_alt1" + "enabled" "1" + "item_class" "tf_weapon_sniperrifle" + "craft_material_type" "weapon" + "craft_class" "weapon" + "base_item_name" "The Machina" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_headshot" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_DEX_Rifle" + "item_description" "#TF_DEX_Rifle_Desc" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "item_logname" "machina" + "item_iconname" "machina" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_dex_sniperrifle/c_dex_sniperrifle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/weapons/c_models/c_dex_sniperrifle/c_dex_sniperrifle.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 0 -8" + } + "attributes" + { + "sniper penetrate players when charged" + { + "attribute_class" "sniper_penetrate_players_when_charged" + "value" "1" + } + "sniper only fire zoomed" + { + "attribute_class" "sniper_only_fire_zoomed" + "value" "1" + } + "sniper full charge damage bonus" + { + "attribute_class" "sniper_full_charge_damage_bonus" + "value" "1.15" + } + "sniper fires tracer" + { + "attribute_class" "sniper_fires_tracer" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + } + "visuals" + { + "sound_single_shot" "Weapon_SniperRailgun_Large.Single" + "sound_burst" "Weapon_SniperRailgun_Large.SingleCrit" + "sound_reload" "Weapon_SniperRailgun.WorldReload" + "sound_empty" "Weapon_SniperRailgun.ClipEmpty" + "sound_special2" "Weapon_SniperRailgun.NonScoped" + "sound_special3" "Weapon_SniperRailgun.Single" + "muzzle_flash" "dxhr_sniper_muzzleflash" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + + } + + "weapon_madmilk" + { + "enabled" "1" + "item_class" "tf_weapon_jar_milk" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_extinguish" "1" + } + "base_item_name" "Mad Milk" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Jar_Milk" + "item_description" "#TF_MadMilk_Desc" + "item_name" "#TF_MadMilk" + "item_slot" "secondary" + "item_quality" "unique" + "anim_slot" "item1" + "min_ilevel" "5" + "max_ilevel" "5" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_madmilk/c_madmilk" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_madmilk/c_madmilk.mdl" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "4" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + "extinguish reduces cooldown" + { + "attribute_class" "extinguish_reduces_cooldown" + "value" "0.8" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "xifier_class_remap" "madmilk" + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + + "weapon_medigun" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + } + "base_item_name" "TF_WEAPON_MEDIGUN" + "inspect_panel_dist" "70" + "enabled" "1" + "item_class" "tf_weapon_medigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Medigun" + "item_name" "#TF_Weapon_Medigun" + "item_slot" "secondary" + "equip_region" "medigun_backpack" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_medigun/c_medigun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_medigun/c_medigun.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "1" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "2" + } + } + "static_attrs" + { + "weapon_stattrak_module_scale" "1" + "min_viewmodel_offset" "10 0 -9" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "medigun" + } + + "weapon_melee_allclass" + { + "base_item_name" "Frying Pan" + + "visuals" + { + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALLCLASS_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALLCLASS_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALLCLASS_VM_INSPECT_END" + } + } + } + + "weapon_minigun" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_MINIGUN" + "enabled" "1" + "item_class" "tf_weapon_minigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Minigun" + "item_name" "#TF_Weapon_Minigun" + "item_slot" "primary" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_minigun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_minigun/c_minigun.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "88" + "used_by_classes" + { + "heavy" "1" + } + "visuals_mvm_boss" + { + "sound_double_shot" "MVM.GiantHeavyGunFire" + "sound_burst" "MVM.GiantHeavyGunFire" + "sound_special1" "MVM.GiantHeavyGunWindUp" + "sound_special2" "MVM.GiantHeavyGunWindDown" + "sound_special3" "MVM.GiantHeavyGunSpin" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "1" + "min_viewmodel_offset" "10 0 -9" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "minigun" + } + + "weapon_pda" + { + "capabilities" + { + "nameable" "1" + } + "base_item_name" "TF_WEAPON_BUILDER" + "enabled" "1" + "item_class" "tf_weapon_pda_engineer_build" + "craft_material_type" "weapon" + "item_name" "#TF_Weapon_PDA_Engineer_Builder" + "item_type_name" "#TF_Weapon_PDA_Engineer" + "item_slot" "pda" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "99" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/w_models/w_builder" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_builder/c_builder.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "3" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "59" + } + "kill eater score type 3" + { + "attribute_class" "kill_eater_score_type_3" + "value" "60" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ENGINEER_PDA2_VM_IDLE" + "ACT_VM_DRAW" "ACT_ENGINEER_PDA2_VM_DRAW" + } + } + } + + "weapon_pistol" + { + "craft_class" "" + "baseitem" "0" + "enabled" "1" + "item_class" "tf_weapon_pistol" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_PISTOL" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Pistol" + "item_name" "#TF_Weapon_Pistol" + "item_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "31" + "image_inventory" "backpack/weapons/c_models/c_pistol" + "model_player" "models/weapons/c_models/c_pistol/c_pistol.mdl" + "used_by_classes" + { + "engineer" "1" + "scout" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.723" + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "particle_suffix" "pistol" + } + + "weapon_powerjack" + { + "enabled" "1" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "powerjack" + "item_iconname" "powerjack" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SledgeHammer" + "item_name" "#TF_ThePowerjack" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_powerjack/c_powerjack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_powerjack/c_powerjack.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "65" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 2 -9" + "weapon_stattrak_module_scale" "0.6" + } + "attributes" + { + "heal on kill" + { + "attribute_class" "heal_on_kill" + "value" "25" + } + "move speed bonus" + { + "attribute_class" "mult_player_movespeed" + "value" "1.15" + } + "dmg taken increased" + { + "attribute_class" "mult_dmgtaken" + "value" "1.2" + } + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_Machete.HitFlesh" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_quadball" + { + "enabled" "1" + "item_class" "tf_weapon_grenadelauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_logname" "iron_bomber" + "item_iconname" "iron_bomber" + "item_type_name" "#TF_Weapon_GrenadeLauncher" + "item_name" "#TF_Weapon_Iron_bomber" + "item_slot" "primary" + "anim_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "99" + "propername" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "55" + "image_inventory" "backpack/workshop/weapons/c_models/c_quadball/c_quadball" + "model_player" "models/workshop/weapons/c_models/c_quadball/c_quadball.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "Blast radius decreased" + { + "attribute_class" "mult_explosion_radius" + "value" "0.85" + } + "grenade no bounce" + { + "attribute_class" "grenade_no_bounce" + "value" "1" + } + "custom projectile model" + { + "attribute_class" "custom_projectile_model" + "value" "models/workshop/weapons/c_models/c_quadball/w_quadball_grenade.mdl" + } + "fuse bonus" + { + "attribute_class" "fuse_mult" + "value" "0.7" + } + } + "visuals" + { + "sound_single_shot" "Weapon_TackyGrenadier.Single" + "sound_burst" "Weapon_TackyGrenadier.SingleCrit" + "sound_special1" "Weapon_Airstrike.Explosion" + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_red_tape_recorder" + { + "first_sale_date" "2012/08/02" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "base_item_name" "The Red-Tape Recorder" + "enabled" "0" + "item_class" "tf_weapon_sapper" + "craft_class" "weapon" + "craft_material_type" "weapon" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Spy_Sapper" + "item_name" "#TF_SD_Sapper" + "item_slot" "building" + "item_quality" "unique" + "item_logname" "recorder" + "item_iconname" "recorder" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_sd_sapper/c_sd_sapper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "25" + "anim_slot" "building" + "attach_to_hands" "0" + "propername" "1" + "attach_to_hands" "1" + "model_player" "models/workshop_partner/weapons/c_models/c_sd_sapper/c_sd_sapper.mdl" + "xifier_class_remap" "red_tape_recorder" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 -2 -4" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "24" + } + "sapper degenerates buildings" + { + "attribute_class" "sapper_degenerates_buildings" + "value" "0.5" + } + "sapper damage penalty" + { + "attribute_class" "mult_sapper_damage" + "value" "0.0" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_ITEM3_VM_DRAW" + "ACT_VM_DRAW_DEPLOYED" "ACT_ITEM3_VM_DRAW" + "ACT_VM_IDLE" "ACT_ITEM3_VM_IDLE" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_rescue_ranger" + { + "enabled" "1" + "item_class" "tf_weapon_shotgun_building_rescue" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_logname" "rescue_ranger" + "item_iconname" "rescue_ranger" + "item_type_name" "#TF_Weapon_Shotgun" + "item_name" "#TF_Weapon_Shotgun_Building_Rescue" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "attach_to_hands" "1" + "inspect_panel_dist" "45" + "image_inventory" "backpack/workshop/weapons/c_models/c_tele_shotgun/c_tele_shotgun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_tele_shotgun/c_tele_shotgun.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "engineer building teleporting pickup" + { + "attribute_class" "building_teleporting_pickup" + "value" "100" + } + "arrow heals buildings" + { + "attribute_class" "arrow_heals_buildings" + "value" "60" + } + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "18" + } + "mark for death on building pickup" + { + "attribute_class" "mark_for_death_on_building_pickup" + "value" "1" + } + "maxammo primary reduced" + { + "attribute_class" "mult_maxammo_primary" + "value" "0.5" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.66" + } + "repair health to metal ratio DISPLAY ONLY" + { + "attribute_class" "repair_health_to_metal_ratio_DISPLAY_ONLY" + "value" "4" + } + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_tele_shotgun/c_tele_shotgun_screen.mdl" + } + } + "sound_single_shot" "Weapon_RescueRanger.Single" + "sound_burst" "Weapon_RescueRanger.SingleCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_reserve_shooter" + { + "enabled" "1" + "item_class" "tf_weapon_shotgun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_type_name" "#TF_Weapon_Shotgun" + "item_name" "#TF_ReserveShooter" + "item_slot" "secondary" + "item_logname" "reserve_shooter" + "item_iconname" "reserve_shooter" + "show_in_armory" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "attach_to_hands" "1" + "inspect_panel_dist" "45" + "image_inventory" "backpack/workshop/weapons/c_models/c_reserve_shooter/c_reserve_shooter" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "used_by_classes" + { + "soldier" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.608" + } + "model_player" "models/workshop/weapons/c_models/c_reserve_shooter/c_reserve_shooter.mdl" + "visuals" + { + "sound_single_shot" "Weapon_Reserve_Shooter.Single" + "sound_burst" "Weapon_Reserve_Shooter.SingleCrit" + } + "attributes" + { + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.66" + } + "mod mini-crit airborne" + { + "attribute_class" "mini_crit_airborne" + "value" "1" + } + "single wep deploy time decreased" + { + "attribute_class" "mult_single_wep_deploy_time" + "value" "0.80" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_revolver" + { + "enabled" "1" + "item_class" "tf_weapon_revolver" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_REVOLVER" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_Weapon_Revolver" + "item_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/w_models/w_revolver" + "model_player" "models/weapons/c_models/c_revolver/c_revolver.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "31" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.497" + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "weapon_revolver" + "particle_suffix" "revolver" + } + + "weapon_rocketlauncher" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_gib_damage" "1" + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_ROCKETLAUNCHER" + "enabled" "1" + "item_class" "tf_weapon_rocketlauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_Weapon_RocketLauncher" + "item_slot" "primary" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_rocketlauncher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "inspect_panel_dist" "68" + "model_player" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals_mvm_boss" + { + "sound_single_shot" "MVM.GiantSoldierRocketShoot" + "sound_burst" "MVM.GiantSoldierRocketShootCrit" + "sound_special1" "MVM.GiantSoldierRocketExplode" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "1" + "min_viewmodel_offset" "10 -3 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "rocketlauncher" + } + + "weapon_russian_riot" + { + "enabled" "1" + "item_class" "tf_weapon_shotgun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_type_name" "#TF_Weapon_Shotgun" + "item_logname" "family_business" + "item_iconname" "family_business" + "item_name" "#TF_RussianRiot" + "item_slot" "secondary" + "show_in_armory" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_russian_riot/c_russian_riot" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_russian_riot/c_russian_riot.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "45" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.85" + } + "clip size bonus" + { + "attribute_class" "mult_clipsize" + "value" "1.33" + } + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.85" + } + } + "visuals" + { + "sound_single_shot" "Weapon_FamilyBusiness.Single" + "sound_burst" "Weapon_FamilyBusiness.SingleCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_lunchbox" + { + "enabled" "1" + "item_class" "tf_weapon_lunchbox" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_LunchBox" + "item_slot" "secondary" + "anim_slot" "ITEM1" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + + "visuals" + { + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + + "mouse_pressed_sound" "ui/item_sandwich_drop.wav" + "drop_sound" "ui/item_sandwich_pickup.wav" + } + + "weapon_sandvich" + { + "prefab" "weapon_lunchbox" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + "can_extinguish" "1" + } + "base_item_name" "The Sandvich" + "item_name" "#TF_Unique_Achievement_LunchBox" + "item_description" "#TF_Sandvich_desc" + "inspect_panel_dist" "31" + "image_inventory" "backpack/weapons/c_models/c_sandwich/c_sandwich" + "model_player" "models/weapons/c_models/c_sandwich/c_sandwich.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "30" + "meter_label" "#TF_Sandwich" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "50" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "xifier_class_remap" "sandvich" + } + + "weapon_sapper" + { + "enabled" "1" + "capabilities" + { + "nameable" "1" + } + "base_item_name" "TF_WEAPON_BUILDER_SPY" + "item_class" "tf_weapon_builder" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_name" "#TF_Weapon_Spy_Sapper" + "item_description" "#TF_Weapon_Spy_Sapper_desc" + "item_type_name" "#TF_Weapon_Spy_Sapper" + "item_slot" "building" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_sapper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "25" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_sapper/c_sapper.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 -2 -4" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "24" + } + } + "xifier_class_remap" "sapper" + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_scattergun" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_SCATTERGUN" + "enabled" "1" + "item_class" "tf_weapon_scattergun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Scattergun" + "item_name" "#TF_Weapon_Scattergun" + "item_slot" "primary" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_scattergun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "inspect_panel_dist" "35" + "model_player" "models/weapons/c_models/c_scattergun.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.608" + "min_viewmodel_offset" "10 0 -11" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "scattergun" + } + + "weapon_scimitar" + { + "enabled" "1" + "item_class" "tf_weapon_club" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "shahanshah" + "item_iconname" "shahanshah" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Club" + "item_name" "#TF_Shahanshah" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_scimitar/c_scimitar" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_scimitar/c_scimitar.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + "weapon_stattrak_module_scale" "0.455" + } + "attributes" + { + "dmg bonus while half dead" + { + "attribute_class" "mult_dmg_bonus_while_half_dead" + "value" "1.25" + } + "dmg penalty while half alive" + { + "attribute_class" "mult_dmg_penalty_while_half_alive" + "value" "0.75" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_scorch_shot" + { + "enabled" "1" + "item_class" "tf_weapon_flaregun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_logname" "scorch_shot" + "item_iconname" "scorch_shot" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flaregun" + "item_name" "#TF_ScorchShot" + "item_description" "#TF_ScorchShot_Desc" + "item_slot" "secondary" + "anim_slot" "ITEM1" + "image_inventory" "backpack/workshop/weapons/c_models/c_scorch_shot/c_scorch_shot" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_scorch_shot/c_scorch_shot.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "30" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "hidden secondary max ammo penalty" + { + "attribute_class" "mult_maxammo_secondary" + "value" "0.5" + } + "self dmg push force decreased" + { + "attribute_class" "mult_dmgself_push_force" + "value" "0.65" + } + "minicrit vs burning player" + { + "attribute_class" "or_minicrit_vs_playercond_burning" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.65" + } + "mod flaregun fires pellets with knockback" + { + "attribute_class" "set_weapon_mode" + "value" "3" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_ScorchShot.Single" + "sound_burst" "Weapon_ScorchShot.SingleCrit" + + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "weapon_scout_drink" + { + "enabled" "1" + "item_class" "tf_weapon_lunchbox_drink" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_collect" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_LunchBox" + "anim_slot" "ITEM1" + "item_slot" "secondary" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "0 0 -5" + } + "visuals" + { + "sound_deploy" "Scout.DodgeCanOpen" + + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + + "player_poseparam" + { + "r_hand_grip" "16" + } + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "50" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_soda_can_pickup.wav" + "drop_sound" "ui/item_soda_can_drop.wav" + } + + "weapon_shortstop" + { + "enabled" "1" + "item_class" "tf_weapon_handgun_scout_primary" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "weapon_stattrak_module_scale" "0.66" + + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Peppergun" + "item_description" "#TF_TheShortstop_Desc" + "item_name" "#TF_TheShortstop" + "item_slot" "primary" + "anim_slot" "secondary" + "item_quality" "unique" + "item_logname" "shortstop" + "item_iconname" "shortstop" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_shortstop/c_shortstop" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_shortstop/c_shortstop.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "27" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "reload time increased hidden" + { + "attribute_class" "mult_reload_time_hidden" + "value" "1.5" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + "damage force increase text" + { + "attribute_class" "damage_force_reduction" + "value" "1" + } + "damage force increase hidden" + { + "attribute_class" "damage_force_reduction" + "value" "1.2" + } + "airblast vulnerability multiplier hidden" + { + "attribute_class" "airblast_vulnerability_multiplier" + "value" "1.2" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Short_Stop.Single" + "sound_burst" "Weapon_Short_Stop.SingleCrit" + "sound_reload" "Weapon_Short_Stop.Reload" + "muzzle_flash" "muzzle_bignasty" + "tracer_effect" "bullet_bignasty_tracer01" + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_SECONDARY_VM_IDLE_2" + "ACT_VM_DRAW" "ACT_SECONDARY_VM_DRAW_2" + "ACT_VM_PRIMARYATTACK" "ACT_SECONDARY_VM_PRIMARYATTACK_2" + "ACT_MP_ATTACK_STAND_SECONDARYFIRE" "ACT_MP_PUSH_STAND_SECONDARY" + "ACT_MP_ATTACK_CROUCH_SECONDARYFIRE""ACT_MP_PUSH_CROUCH_SECONDARY" + "ACT_MP_ATTACK_SWIM_SECONDARYFIRE" "ACT_MP_PUSH_SWIM_SECONDARY" + "ACT_VM_RELOAD" "ACT_SECONDARY_VM_RELOAD_2" + "ACT_MP_RELOAD_STAND" "ACT_MP_RELOAD_STAND_SECONDARY_2" + "ACT_MP_RELOAD_CROUCH" "ACT_MP_RELOAD_CROUCH_SECONDARY_2" + "ACT_MP_RELOAD_SWIM" "ACT_MP_RELOAD_SWIM_SECONDARY_2" + "ACT_MP_RELOAD_AIRWALK" "ACT_MP_RELOAD_AIRWALK_SECONDARY_2" + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "weapon_shotgun" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_SHOTGUN_PRIMARY" + "enabled" "1" + "item_class" "tf_weapon_shotgun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Shotgun" + "item_name" "#TF_Weapon_Shotgun" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "40" + "image_inventory" "backpack/weapons/w_models/w_shotgun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_shotgun/c_shotgun.mdl" + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "shotgun" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + } + + "weapon_shotgun_multiclass" + { + "prefab" "weapon_shotgun" + "enabled" "1" + "item_class" "tf_weapon_shotgun" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "TF_WEAPON_SHOTGUN_PRIMARY" + "baseitem" "0" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Shotgun" + "item_name" "#TF_Weapon_Shotgun" + "item_slot" "primary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "99" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/w_models/w_shotgun" + "model_player" "models/weapons/c_models/c_shotgun/c_shotgun.mdl" + "used_by_classes" + { + "engineer" "primary" + "pyro" "secondary" + "soldier" "secondary" + "heavy" "secondary" + } + "attributes" + { + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.608" + "min_viewmodel_offset" "5 -2 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "xifier_class_remap" "weapon_shotgun" + "particle_suffix" "shotgun" + } + + "weapon_shovel" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_shovel" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Shovel" + "item_name" "#TF_Weapon_Shovel" + "item_slot" "melee" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_shovel" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_shovel/c_shovel.mdl" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -6 -12" + } + "mouse_pressed_sound" "ui/item_shovel_pickup.wav" + "drop_sound" "ui/item_shovel_drop.wav" + } + + "weapon_smg" + { + "enabled" "1" + "item_class" "tf_weapon_smg" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_SMG" + "inspect_panel_dist" "39" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SMG" + "item_name" "#TF_Weapon_SMG" + "item_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_smg" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_smg/c_smg.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_smg/c_smg_gold" + } + } + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.505" + "min_viewmodel_offset" "10 0 -7" + } + "xifier_class_remap" "weapon_smg" + "particle_suffix" "smg" + } + + "weapon_sniperrifle" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_headshot" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_SNIPERRIFLE" + "inspect_panel_dist" "71" + "enabled" "1" + "item_class" "tf_weapon_sniperrifle" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_Weapon_SniperRifle" + "item_slot" "primary" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_sniperrifle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_sniperrifle/c_sniperrifle.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.676" + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "sniperrifle" + } + + "weapon_soda_popper" + { + "enabled" "1" + "item_class" "tf_weapon_soda_popper" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Scattergun" + "item_name" "#TF_SodaPopper" + "item_description" "#TF_SodaPopper_Desc" + "item_logname" "soda_popper" + "item_iconname" "soda_popper" + "item_slot" "primary" + "anim_slot" "item2" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_soda_popper/c_soda_popper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_soda_popper/c_soda_popper.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "34" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.5" + } + "attributes" + { + "Reload time decreased" + { + "attribute_class" "mult_reload_time" + "value" "0.75" + } + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.5" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.34" + } + "scattergun no reload single" + { + "attribute_class" "set_scattergun_no_reload_single" + "value" "1" + } + "hype on damage" + { + "attribute_class" "hype_on_damage" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ITEM2_VM_IDLE" + "ACT_VM_DRAW" "ACT_ITEM2_VM_DRAW" + "ACT_VM_HOLSTER" "ACT_ITEM2_VM_HOLSTER" + "ACT_VM_PULLBACK" "ACT_ITEM2_VM_PULLBACK" + "ACT_VM_PRIMARYATTACK" "ACT_ITEM2_VM_PRIMARYATTACK" + "ACT_VM_SECONDARYATTACK" "ACT_ITEM2_VM_SECONDARYATTACK" + "ACT_VM_RELOAD" "ACT_ITEM2_VM_RELOAD" + "ACT_VM_DRYFIRE" "ACT_ITEM2_VM_DRYFIRE" + "ACT_VM_IDLE_TO_LOWERED" "ACT_ITEM2_VM_IDLE_TO_LOWERED" + "ACT_VM_IDLE_LOWERED" "ACT_ITEM2_VM_IDLE_LOWERED" + "ACT_VM_LOWERED_TO_IDLE" "ACT_ITEM2_VM_LOWERED_TO_IDLE" + "ACT_PRIMARY_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + "sound_single_shot" "Weapon_Soda_Popper.Single" + "sound_burst" "Weapon_Soda_Popper.SingleCrit" + "muzzle_flash" "muzzle_bignasty" + "tracer_effect" "bullet_bignasty_tracer01" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_stickybomb_launcher" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_gib_damage" "1" + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "TF_WEAPON_PIPEBOMBLAUNCHER" + "enabled" "1" + "item_class" "tf_weapon_pipebomblauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_PipebombLauncher" + "item_name" "#TF_Weapon_PipebombLauncher" + "item_description" "#TF_Weapon_PipebombLauncher_desc" + "item_slot" "secondary" + "anim_slot" "primary" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_stickybomb_launcher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher.mdl" + "inspect_panel_dist" "50" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.9" + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "particle_suffix" "stickybomb_launcher" + } + + "weapon_syringegun" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_long_distance_damage" "1" + } + "first_sale_date" "2010/09/29" + "enabled" "0" + "item_class" "tf_weapon_syringegun_medic" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_SyringeGun" + "item_name" "#TF_Weapon_SyringeGun" + "item_slot" "primary" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_syringegun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "44" + "model_player" "models/weapons/c_models/c_syringegun/c_syringegun.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "weapon_targe" + { + "enabled" "1" + "item_class" "tf_wearable_demoshield" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "base_item_name" "The Chargin' Targe" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Shield" + "item_name" "#TF_Unique_Achievement_Shield" + "item_description" "#TF_Unique_Achievement_Shield_Desc" + "item_slot" "secondary" + "equip_region" "arms" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "99" + "item_logname" "demoshield" + "item_iconname" "demoshield" + "image_inventory" "backpack/weapons/c_models/c_targe/c_targe" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "33" + "model_player" "models/weapons/c_models/c_targe/c_targe.mdl" + "act_as_wearable" "1" + "attach_to_hands" "0" + "attach_to_hands_vm_only" "1" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "dmg taken from fire reduced" + { + "attribute_class" "mult_dmgtaken_from_fire" + "value" "0.5" + } + "dmg taken from blast reduced" + { + "attribute_class" "mult_dmgtaken_from_explosions" + "value" "0.7" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + "xifier_class_remap" "weapon_targe" + } + + "weapon_tomislav" + { + "enabled" "1" + "item_class" "tf_weapon_minigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Minigun" + "item_name" "#TF_Tomislav" + "item_slot" "primary" + "item_logname" "tomislav" + "item_iconname" "tomislav" + "image_inventory" "backpack/workshop/weapons/c_models/c_tomislav/c_tomislav" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_tomislav/c_tomislav.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "88" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "visuals" + { + "sound_reload" "Weapon_Gatling.Reload" + "sound_empty" "Weapon_Tomislav.WindDown" + "sound_double_shot" "Weapon_Tomislav.Fire" + "sound_burst" "Weapon_Tomislav.FireCrit" + "sound_special1" "Weapon_Tomislav.WindUp" + "sound_special2" "Weapon_Tomislav.WindDown" + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/workshop/weapons/c_models/c_tomislav/c_tomislav_gold" + } + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "minigun spinup time decreased" + { + "attribute_class" "mult_minigun_spinup_time" + "value" "0.8" + } + "minigun no spin sounds" + { + "attribute_class" "minigun_no_spin_sounds" + "value" "1" + } + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + "weapon spread bonus" + { + "attribute_class" "mult_spread_scale" + "value" "0.8" + } + } + } + + "weapon_trenchgun" + { + "enabled" "1" + "item_class" "tf_weapon_shotgun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Shotgun" + "item_name" "#TF_Weapon_PanicAttack" + "item_logname" "panic_attack" + "item_iconname" "panic_attack" + "item_slot" "primary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "99" + "propername" "1" + "attach_to_hands" "1" + "inspect_panel_dist" "40" + "image_inventory" "backpack/workshop/weapons/c_models/c_trenchgun/c_trenchgun" + "model_player" "models/workshop/weapons/c_models/c_trenchgun/c_trenchgun.mdl" + "used_by_classes" + { + "engineer" "primary" + "pyro" "secondary" + "soldier" "secondary" + "heavy" "secondary" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.8" + } + "single wep deploy time decreased" + { + "attribute_class" "mult_single_wep_deploy_time" + "value" "0.5" + } + "mult_spread_scales_consecutive" + { + "attribute_class" "mult_spread_scales_consecutive" + "value" "1" + } + "bullets per shot bonus" + { + "attribute_class" "mult_bullets_per_shot" + "value" "1.5" + } + "fixed_shot_pattern" + { + "attribute_class" "fixed_shot_pattern" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_BackShot_Shotty.Single" + "sound_burst" "Weapon_BackShot_Shotty.SingleCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "weapon_ubersaw" + { + "enabled" "1" + "item_class" "tf_weapon_bonesaw" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "base_item_name" "The Ubersaw" + "item_logname" "ubersaw" + "item_iconname" "ubersaw" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bonesaw" + "item_name" "#TF_Unique_Achievement_Bonesaw1" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_ubersaw/c_ubersaw" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_ubersaw/c_ubersaw.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "42" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + "weapon_stattrak_module_scale" "0.608" + } + "attributes" + { + "add uber charge on hit" + { + "attribute_class" "add_onhit_ubercharge" + "value" "0.25" + } + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_UberSaw.HitFlesh" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + "weapon_winger_pistol" + { + "enabled" "1" + "item_class" "tf_weapon_handgun_scout_secondary" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_type_name" "#TF_Weapon_Pistol" + "item_logname" "the_winger" + "item_iconname" "the_winger" + "item_name" "#TF_Winger" + "item_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "15" + "max_ilevel" "15" + "attach_to_hands" "1" + "inspect_panel_dist" "31" + "propername" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_winger_pistol/c_winger_pistol" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_winger_pistol/c_winger_pistol.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "weapon_stattrak_module_scale" "0.723" + } + "attributes" + { + "damage bonus" + { + "attribute_class" "mult_dmg" + "value" "1.15" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.4" + } + "increased jump height from weapon" + { + "attribute_class" "mod_jump_height_from_weapon" + "value" "1.25" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Winger.Single" + "sound_burst" "Weapon_Winger.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "weapon_wrangler" + { + "enabled" "1" + "item_class" "tf_weapon_laser_pointer" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Laser_Pointer" + "item_name" "#TF_Unique_Achievement_Laser_Pointer" + "item_description" "#TF_Wrangler_Desc" + "inspect_panel_dist" "40" + "item_slot" "secondary" + "anim_slot" "item1" + "item_quality" "unique" + "propername" "1" + "item_logname" "laser_pointer" + "item_iconname" "laser_pointer" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/weapons/c_models/c_wrangler" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_wrangler.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "12 0 -8" + } + "visuals" + { + "sound_single_shot" "Weapon_Ambassador.Single" + "sound_burst" "Weapon_Ambassador.SingleCrit" + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "tags" + { + "can_deal_gib_damage" "1" + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_long_distance_damage" "1" + } + "base_item_name" "The Wrangler" + "xifier_class_remap" "the_wrangler" + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "86" + } + } + } + + "weapon_wrench" + { + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "inspect_panel_dist" "45" + "base_item_name" "TF_WEAPON_WRENCH" + "enabled" "0" + "item_class" "tf_weapon_wrench" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Wrench" + "item_name" "#TF_Weapon_Wrench" + "item_description" "#TF_Weapon_Wrench_Desc" + "item_slot" "melee" + "item_quality" "normal" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_wrench" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_wrench/c_wrench.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "weapon_stattrak_module_scale" "0.756" + "min_viewmodel_offset" "10 -2 -9" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "3" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "0" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "particle_suffix" "wrench" + } + + "paintkit_base" + { + "static_attrs" + { + "weapon_uses_stattrak_module" "models/weapons/c_models/stattrack.mdl" + "weapon_allow_inspect" "1" + } + } + + "paintkit_tool" + { + "prefab" "paintkit_base" + "enabled" "1" + "item_class" "tool" + "inspect_panel_dist" "85" + "tool" + { + "type" "paintkit" + "usage" + { + "required_tags" + { + "can_apply_paintkit" "1" + } + } + "usage_capabilities" + { + "can_killstreakify" "1" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "cannot restore" "1" + "is marketable" "1" + "texture_wear_default" "0" + "weapon_stattrak_module_scale" "2" + } + "show_in_armory" "0" + "propername" "1" + "item_name" "#TF_PaintKitTool" + "item_description" "#TF_PaintKitTool_desc" + "item_type_name" "#TF_PaintKitTool" + "model_player" "models/items/paintkit_tool.mdl" + "image_inventory" "backpack/items/paintkit_tool" + "item_quality" "paintkitweapon" + "min_ilevel" "99" + "max_ilevel" "99" + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_soda_can_drop.wav" + "particle_suffix" "paintkit" + "remapped_item_def_index" "Paintkit" + } + + + "paintkit_weapon" + { + "prefab" "paintkit_base" + "craft_class" "" + "craft_material_type" "" + "item_series" "card_type_v2" + "item_quality" "paintkitweapon" + "min_ilevel" "1" + "max_ilevel" "1" + "enabled" "1" + "tags" + { + "can_be_festivized" "1" + "can_apply_paintkit" "1" + } + "static_attrs" + { + "is marketable" "1" + "texture_wear_default" "0.6" + } + "attributes" + { + } + } + + "paintkit_weapon_ambassador" + { + "prefab" "paintkit_weapon weapon_ambassador" + "xifier_class_remap" "ambassador" + } + + "paintkit_weapon_atom_launcher" + { + "prefab" "paintkit_weapon weapon_atom_launcher" + "xifier_class_remap" "airstrike" + } + + "paintkit_weapon_amputator" + { + "prefab" "paintkit_weapon weapon_amputator" + "xifier_class_remap" "amputator" + } + + "paintkit_weapon_back_scratcher" + { + "prefab" "paintkit_weapon weapon_back_scratcher" + "xifier_class_remap" "back_scratcher" + } + + "paintkit_weapon_battleaxe" + { + "prefab" "paintkit_weapon weapon_battleaxe" + "xifier_class_remap" "battleaxe" + } + + "paintkit_weapon_bazaar_sniper" + { + "prefab" "paintkit_weapon weapon_bazaar_sniper" + "xifier_class_remap" "bazaar_sniper" + } + + "paintkit_weapon_blackbox" + { + "prefab" "paintkit_weapon weapon_blackbox" + "xifier_class_remap" "blackbox" + } + + "paintkit_weapon_claidheamohmor" + { + "prefab" "paintkit_weapon weapon_claidheamohmor" + "xifier_class_remap" "claidheamohmor" + } + + "paintkit_weapon_crusaders_crossbow" + { + "prefab" "paintkit_weapon weapon_crusaders_crossbow" + "xifier_class_remap" "crusaders_crossbow" + } + + "paintkit_weapon_demo_cannon" + { + "prefab" "paintkit_weapon weapon_demo_cannon" + "xifier_class_remap" "demo_cannon" + } + + "paintkit_weapon_demo_sultan_sword" + { + "prefab" "paintkit_weapon weapon_demo_sultan_sword" + "xifier_class_remap" "demo_sultan_sword" + } + + "paintkit_weapon_degreaser" + { + "prefab" "paintkit_weapon weapon_degreaser" + "xifier_class_remap" "degreaser" + } + + "paintkit_weapon_detonator" + { + "prefab" "paintkit_weapon weapon_detonator" + "xifier_class_remap" "detonator" + } + + "paintkit_weapon_disciplinary_action" + { + "prefab" "paintkit_weapon weapon_disciplinary_action" + "xifier_class_remap" "disciplinary_action" + } + + "paintkit_weapon_flamethrower" + { + "prefab" "paintkit_weapon weapon_flamethrower" + "xifier_class_remap" "flamethrower" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + } + + "paintkit_weapon_gatling_gun" + { + "prefab" "paintkit_weapon weapon_gatling_gun" + "xifier_class_remap" "gatling_gun" + } + + "paintkit_weapon_grenadelauncher" + { + "prefab" "paintkit_weapon weapon_grenade_launcher" + "xifier_class_remap" "grenade_launcher" + } + + "paintkit_weapon_holymackerel" + { + "prefab" "paintkit_weapon weapon_holymackerel" + "xifier_class_remap" "holymackerel" + } + + "paintkit_weapon_jag" + { + "prefab" "paintkit_weapon weapon_jag" + "xifier_class_remap" "jag" + } + + "paintkit_weapon_knife" + { + "prefab" "paintkit_weapon weapon_knife" + "xifier_class_remap" "knife" + } + + "paintkit_weapon_lochnload" + { + "prefab" "paintkit_weapon weapon_lochnload" + "xifier_class_remap" "lochnload" + } + + "paintkit_weapon_medigun" + { + "prefab" "paintkit_weapon weapon_medigun" + "xifier_class_remap" "medigun" + } + + "paintkit_weapon_minigun" + { + "prefab" "paintkit_weapon weapon_minigun" + "xifier_class_remap" "minigun" + } + + "paintkit_weapon_pistol" + { + "prefab" "paintkit_weapon weapon_pistol" + "xifier_class_remap" "weapon_pistol" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + + "paintkit_weapon_powerjack" + { + "prefab" "paintkit_weapon weapon_powerjack" + "xifier_class_remap" "powerjack" + } + + "paintkit_weapon_quadball" + { + "prefab" "paintkit_weapon weapon_quadball" + "xifier_class_remap" "quadball" + } + + "paintkit_weapon_rescue_ranger" + { + "prefab" "paintkit_weapon weapon_rescue_ranger" + "xifier_class_remap" "rescue_ranger" + } + + "paintkit_weapon_reserve_shooter" + { + "prefab" "paintkit_weapon weapon_reserve_shooter" + "xifier_class_remap" "reserve_shooter" + } + + "paintkit_weapon_revolver" + { + "prefab" "paintkit_weapon weapon_revolver" + "xifier_class_remap" "weapon_revolver" + } + + "paintkit_weapon_rocketlauncher" + { + "prefab" "paintkit_weapon weapon_rocketlauncher" + "xifier_class_remap" "rocket_launcher" + } + + "paintkit_weapon_russian_riot" + { + "prefab" "paintkit_weapon weapon_russian_riot" + "xifier_class_remap" "russian_riot" + } + + "paintkit_weapon_scattergun" + { + "prefab" "paintkit_weapon weapon_scattergun" + "xifier_class_remap" "scattergun" + } + + "paintkit_weapon_scimitar" + { + "prefab" "paintkit_weapon weapon_scimitar" + "xifier_class_remap" "scimitar" + } + + "paintkit_weapon_scorch_shot" + { + "prefab" "paintkit_weapon weapon_scorch_shot" + "xifier_class_remap" "scorch_shot" + } + + "paintkit_weapon_shortstop" + { + "prefab" "paintkit_weapon weapon_shortstop" + "xifier_class_remap" "shortstop" + } + + "paintkit_weapon_shotgun" + { + "prefab" "paintkit_weapon weapon_shotgun_multiclass" + "xifier_class_remap" "weapon_shotgun" + } + + "paintkit_weapon_smg" + { + "prefab" "paintkit_weapon weapon_smg" + "xifier_class_remap" "weapon_smg" + } + + "paintkit_weapon_sniperrifle" + { + "prefab" "paintkit_weapon weapon_sniperrifle" + "xifier_class_remap" "sniper_rifle" + } + + "paintkit_weapon_soda_popper" + { + "prefab" "paintkit_weapon weapon_soda_popper" + "xifier_class_remap" "soda_popper" + } + + "paintkit_weapon_stickybomb_launcher" + { + "prefab" "paintkit_weapon weapon_stickybomb_launcher" + "xifier_class_remap" "stickybomb_launcher" + } + + "paintkit_weapon_tomislav" + { + "prefab" "paintkit_weapon weapon_tomislav" + "xifier_class_remap" "tomislav" + } + + "paintkit_weapon_trenchgun" + { + "prefab" "paintkit_weapon weapon_trenchgun" + "xifier_class_remap" "trenchgun" + } + + "paintkit_weapon_ubersaw" + { + "prefab" "paintkit_weapon weapon_ubersaw" + "xifier_class_remap" "ubersaw" + } + + "paintkit_weapon_winger_pistol" + { + "prefab" "paintkit_weapon weapon_winger_pistol" + "xifier_class_remap" "winger_pistol" + } + + "paintkit_weapon_wrench" + { + "prefab" "paintkit_weapon weapon_wrench" + "xifier_class_remap" "wrench" + } + + + + } + "items" + { + "default" + { + "name" "default" + "hidden" "1" + "item_class" "tf_wearable" + "item_name" "#TF_Default_ItemDef" + "item_slot" "melee" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + } + + + "0" + { + "name" "TF_WEAPON_BAT" + "first_sale_date" "2010/09/29" + "prefab" "weapon_bat" + "baseitem" "1" + } + "1" + { + "name" "TF_WEAPON_BOTTLE" + "first_sale_date" "2010/09/29" + "prefab" "weapon_bottle" + "baseitem" "1" + } + "2" + { + "name" "TF_WEAPON_FIREAXE" + "first_sale_date" "2010/09/29" + "prefab" "weapon_fireaxe" + "baseitem" "1" + } + "3" + { + "name" "TF_WEAPON_CLUB" + "first_sale_date" "2010/09/29" + "prefab" "weapon_club" + "baseitem" "1" + } + "4" + { + "name" "TF_WEAPON_KNIFE" + "first_sale_date" "2010/09/29" + "prefab" "weapon_knife" + "baseitem" "1" + } + "5" + { + "name" "TF_WEAPON_FISTS" + "first_sale_date" "2010/09/29" + "prefab" "weapon_fists" + "baseitem" "1" + } + "6" + { + "name" "TF_WEAPON_SHOVEL" + "first_sale_date" "2010/09/29" + "prefab" "weapon_shovel" + "baseitem" "1" + } + "7" + { + "name" "TF_WEAPON_WRENCH" + "first_sale_date" "2010/09/29" + "prefab" "weapon_wrench" + "baseitem" "1" + } + "8" + { + "name" "TF_WEAPON_BONESAW" + "prefab" "weapon_bonesaw" + "first_sale_date" "2010/09/29" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + } + "9" + { + "name" "TF_WEAPON_SHOTGUN_PRIMARY" + "first_sale_date" "2010/09/29" + "prefab" "weapon_shotgun" + "item_slot" "primary" + "used_by_classes" + { + "engineer" "1" + } + "baseitem" "1" + } + "10" + { + "name" "TF_WEAPON_SHOTGUN_SOLDIER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_shotgun" + "hidden" "1" + "item_slot" "secondary" + "used_by_classes" + { + "soldier" "1" + } + "baseitem" "1" + } + "11" + { + "name" "TF_WEAPON_SHOTGUN_HWG" + "first_sale_date" "2010/09/29" + "prefab" "weapon_shotgun" + "hidden" "1" + "item_slot" "secondary" + "used_by_classes" + { + "heavy" "1" + } + "baseitem" "1" + } + "12" + { + "name" "TF_WEAPON_SHOTGUN_PYRO" + "first_sale_date" "2010/09/29" + "prefab" "weapon_shotgun" + "hidden" "1" + "item_slot" "secondary" + "used_by_classes" + { + "pyro" "1" + } + "baseitem" "1" + } + "13" + { + "name" "TF_WEAPON_SCATTERGUN" + "first_sale_date" "2010/09/29" + "prefab" "weapon_scattergun" + "baseitem" "1" + } + "14" + { + "name" "TF_WEAPON_SNIPERRIFLE" + "first_sale_date" "2010/09/29" + "prefab" "weapon_sniperrifle" + "baseitem" "1" + } + "15" + { + "name" "TF_WEAPON_MINIGUN" + "first_sale_date" "2010/09/29" + "prefab" "weapon_minigun" + "baseitem" "1" + } + "16" + { + "name" "TF_WEAPON_SMG" + "prefab" "weapon_smg" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_smg" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_SMG" + "item_name" "#TF_Weapon_SMG" + "item_slot" "secondary" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_smg" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_smg/c_smg.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "17" + { + "name" "TF_WEAPON_SYRINGEGUN_MEDIC" + "first_sale_date" "2010/09/29" + "prefab" "weapon_syringegun" + "baseitem" "1" + } + "18" + { + "name" "TF_WEAPON_ROCKETLAUNCHER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_rocketlauncher" + "xifier_class_remap" "rocket_launcher" + "baseitem" "1" + } + "19" + { + "name" "TF_WEAPON_GRENADELAUNCHER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_grenade_launcher" + "baseitem" "1" + } + "20" + { + "name" "TF_WEAPON_PIPEBOMBLAUNCHER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_stickybomb_launcher" + "baseitem" "1" + } + "21" + { + "name" "TF_WEAPON_FLAMETHROWER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_flamethrower" + "baseitem" "1" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + } + "22" + { + "name" "TF_WEAPON_PISTOL" + "prefab" "weapon_pistol" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pistol" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Pistol" + "item_name" "#TF_Weapon_Pistol" + "item_slot" "secondary" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/c_models/c_pistol" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_pistol/c_pistol.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "23" + { + "name" "TF_WEAPON_PISTOL_SCOUT" + "prefab" "weapon_pistol" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "hidden" "1" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pistol" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Pistol" + "item_name" "#TF_Weapon_Pistol" + "item_slot" "secondary" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/c_models/c_pistol" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_pistol/c_pistol.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "24" + { + "name" "TF_WEAPON_REVOLVER" + "prefab" "weapon_revolver" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_revolver" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_Weapon_Revolver" + "item_slot" "secondary" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_revolver" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_revolver/c_revolver.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "25" + { + "name" "TF_WEAPON_PDA_ENGINEER_BUILD" + "capabilities" + { + "nameable" "1" + } + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pda_engineer_build" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_name" "#TF_Weapon_PDA_Engineer_Builder" + "item_type_name" "#TF_Weapon_PDA_Engineer" + "item_slot" "pda" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/w_models/w_builder" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_builder/c_builder.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "3" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "59" + } + "kill eater score type 3" + { + "attribute_class" "kill_eater_score_type_3" + "value" "60" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ENGINEER_PDA2_VM_IDLE" + "ACT_VM_DRAW" "ACT_ENGINEER_PDA2_VM_DRAW" + } + } + } + "26" + { + "name" "TF_WEAPON_PDA_ENGINEER_DESTROY" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pda_engineer_destroy" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_name" "#TF_Weapon_PDA_Engineer_Destroyer" + "item_type_name" "#TF_Weapon_PDA_Engineer" + "item_slot" "pda2" + "anim_slot" "pda" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/w_models/w_pda_engineer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_pda_engineer/c_pda_engineer.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ENGINEER_PDA1_VM_IDLE" + "ACT_VM_DRAW" "ACT_ENGINEER_PDA1_VM_DRAW" + } + } + } + "27" + { + "name" "TF_WEAPON_PDA_SPY" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pda_spy" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_name" "#TF_Weapon_Disguise_Kit" + "item_type_name" "#TF_Weapon_Disguise_Kit_Type" + "item_slot" "pda" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_cigarette_case" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/w_models/w_cigarette_case.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + } + "28" + { + "name" "TF_WEAPON_BUILDER" + "hidden" "1" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_builder" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_PDA_Engineer" + "item_name" "#TF_Weapon_PDA_Engineer" + "item_slot" "building" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_pda_engineer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_toolbox/c_toolbox.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -8" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ENGINEER_BLD_VM_IDLE" + "ACT_VM_DRAW" "ACT_ENGINEER_BLD_VM_DRAW" + } + } + } + "29" + { + "name" "TF_WEAPON_MEDIGUN" + "first_sale_date" "2010/09/29" + "prefab" "weapon_medigun" + "baseitem" "1" + } + "30" + { + "name" "TF_WEAPON_INVIS" + "first_sale_date" "2010/09/29" + "prefab" "weapon_invis" + "baseitem" "1" + } + + + "735" + { + "name" "TF_WEAPON_BUILDER_SPY" + "prefab" "weapon_sapper" + "item_quality" "normal" + "baseitem" "1" + } + "736" + { + "name" "Upgradeable TF_WEAPON_BUILDER_SPY" + "prefab" "weapon_sapper" + "first_sale_date" "2010/09/29" + "show_in_armory" "1" + "armory_desc" "stockitem" + } + "737" + { + "name" "Upgradeable TF_WEAPON_PDA_ENGINEER_BUILD" + "prefab" "weapon_pda" + "capabilities" + { + "nameable" "1" + } + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pda_engineer_build" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_name" "#TF_Weapon_PDA_Engineer_Builder" + "item_type_name" "#TF_Weapon_PDA_Engineer" + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_slot" "pda" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/w_models/w_builder" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_builder/c_builder.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ENGINEER_PDA2_VM_IDLE" + "ACT_VM_DRAW" "ACT_ENGINEER_PDA2_VM_DRAW" + } + } + } + "1132" + { + "name" "TF_WEAPON_SPELLBOOK" + "prefab" "halloween2013_spellbook" + "item_type_name" "#TF_Spellbook_Type" + "item_name" "#TF_Spellbook_Basic" + "item_description" "#TF_SpellBook_Basic_Desc" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/props_halloween/hwn_spellbook_magazine" + } + "1152" + { + "name" "TF_WEAPON_GRAPPLINGHOOK" + "item_class" "tf_weapon_grapplinghook" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "baseitem" "1" + "item_type_name" "#TF_Weapon_GrapplingHook" + "item_name" "#TF_Weapon_GrapplingHook" + "item_description" "#TF_Weapon_GrapplingHook_desc" + "item_logname" "grappling_hook" + "item_iconname" "grappling_hook" + "item_slot" "action" + "item_quality" "normal" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_grappling_hook/c_grappling_hook" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_grappling_hook/c_grappling_hook.mdl" + "attach_to_hands" "1" + "act_as_weapon" "1" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "reload time increased hidden" + { + "attribute_class" "mult_reload_time_hidden" + "value" "0" + } + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "26" + } + "single wep deploy time decreased" + { + "attribute_class" "mult_single_wep_deploy_time" + "value" "0" + } + "switch from wep deploy time decreased" + { + "attribute_class" "mult_switch_from_wep_deploy_time" + "value" "0.2" + } + "force weapon switch" + { + "attribute_class" "force_weapon_switch" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "grappling_hook" + } + + "1163" + { + "name" "Default Power Up Canteen (MvM)" + "prefab" "powerup_bottle" + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + } + "item_quality" "normal" + "baseitem" "1" + } + + + + "35" + { + "name" "The Kritzkrieg" + "prefab" "weapon_kritzkrieg" + "first_sale_date" "2010/09/29" + "tags" + { + "can_be_festivized" "1" + } + "visuals_red" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_overhealer/c_overhealer_festivizer.mdl" + } + } + } + "visuals_blu" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_overhealer/c_overhealer_festivizer.mdl" + } + } + } + } + "36" + { + "name" "The Blutsauger" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_syringegun_medic" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "blutsauger" + "item_iconname" "blutsauger" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SyringeGun" + "item_name" "#TF_Unique_Achievement_Syringegun1" + "item_slot" "primary" + "image_inventory" "backpack/weapons/c_models/c_leechgun/c_leechgun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_leechgun/c_leechgun.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "50" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_leechgun/c_leechgun_gold" + } + } + } + "attributes" + { + "heal on hit for rapidfire" + { + "attribute_class" "add_onhit_addhealth" + "value" "3" + } + "health drain medic" + { + "attribute_class" "add_health_regen" + "value" "-2" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "37" + { + "name" "The Ubersaw" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_ubersaw paintkit_base" + "particle_suffix" "ubersaw" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_ubersaw/c_ubersaw_festivizer.mdl" + } + } + } + "xifier_class_remap" "ubersaw" + } + "38" + { + "name" "The Axtinguisher" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_axtinguisher" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_axtinguisher/c_axtinguisher_pyro_gold" + } + } + } + "xifier_class_remap" "axtinguisher" + } + "39" + { + "name" "The Flare Gun" + "prefab" "valve weapon_flaregun" + "first_sale_date" "2011/04/14" + } + "40" + { + "name" "The Backburner" + "prefab" "valve weapon_backburner" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_flamethrower" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_reflect_projectiles" "1" + "can_extinguish" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "is_flamethrower" "1" + } + "item_logname" "backburner" + "item_iconname" "backburner" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flamethrower" + "item_name" "#TF_Unique_Achievement_Flamethrower" + "item_slot" "primary" + "image_inventory" "backpack/weapons/c_models/c_backburner/c_backburner" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_flamethrower/c_backburner.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + } + "visuals" + { + "sound_single_shot" "Weapon_BackBurner.FireStart" + "sound_special1" "Weapon_BackBurner.FireLoop" + "sound_burst" "Weapon_BackBurner.FireLoopCrit" + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "xifier_class_remap" "weapon_backburner" + } + "41" + { + "name" "Natascha" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_minigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Minigun" + "item_name" "#TF_Unique_Achievement_Minigun" + "item_slot" "primary" + "item_logname" "natascha" + "item_iconname" "natascha" + "image_inventory" "backpack/weapons/c_models/c_w_ludmila/c_w_ludmila" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_minigun/c_minigun_natascha.mdl" + "inspect_panel_dist" "88" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "slow enemy on hit" + { + "attribute_class" "mult_onhit_enemyspeed" + "value" "1.0" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "minigun spinup time increased" + { + "attribute_class" "mult_minigun_spinup_time" + "value" "1.3" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "spunup_damage_resistance" + { + "attribute_class" "spunup_damage_resistance" + "value" "0.80" + } + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + "sound_reload" "Weapon_Minifun.Reload" + "sound_empty" "Weapon_Minifun.ClipEmpty" + "sound_double_shot" "Weapon_Minifun.Fire" + "sound_special1" "Weapon_Minifun.WindUp" + "sound_special2" "Weapon_Minifun.WindDown" + "sound_special3" "Weapon_Minifun.Spin" + "sound_burst" "Weapon_Minifun.FireCrit" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "42" + { + "name" "The Sandvich" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_sandvich" + } + "43" + { + "name" "The Killing Gloves of Boxing" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gloves" + "item_name" "#TF_Unique_Achievement_Fists" + "item_slot" "melee" + "item_logname" "gloves" + "item_iconname" "gloves" + "image_inventory" "backpack/weapons/c_models/c_boxing_gloves/c_boxing_gloves" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "7" + "max_ilevel" "7" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "critboost on kill" + { + "attribute_class" "add_onkill_critboost_time" + "value" "5" + } + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + } + "hide_bodygroups_deployed_only" "1" + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" + "drop_sound" "ui/item_boxing_gloves_drop.wav" + } + "44" + { + "name" "The Sandman" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_bat_wood" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_collect" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bat" + "item_name" "#TF_Unique_Achievement_Bat" + "item_logname" "sandman" + "item_iconname" "sandman" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "15" + "max_ilevel" "15" + "inspect_panel_dist" "45" + "attach_to_hands" "1" + "image_inventory" "backpack/weapons/c_models/c_wooden_bat/c_wooden_bat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_wooden_bat/c_wooden_bat.mdl" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wooden_bat/c_wooden_bat_festivizer.mdl" + } + } + } + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "mod bat launches balls" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "max health additive penalty" + { + "attribute_class" "add_maxhealth" + "value" "-15" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "45" + { + "name" "The Force-a-Nature" + "prefab" "valve weapon_force_a_nature" + "first_sale_date" "2010/09/29" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_double_barrel_gold" + } + } + } + } + "46" + { + "name" "Bonk! Atomic Punch" + "prefab" "valve weapon_bonk" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Unique_Achievement_EnergyDrink" + "item_description" "#TF_Unique_Achievement_EnergyDrink_desc" + "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_energy_drink" + "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" + } + "47" + { + "name" "Demoman's Fro" + "first_sale_date" "2010/09/29" + "prefab" "valve hat" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Demo_Hat_1" + "item_description" "#TF_Demo_Hat_1_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/player/items/demo/demo_afro" + "model_player" "models/player/items/demo/demo_afro.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "48" + { + "name" "Mining Light" + "first_sale_date" "2010/09/29" + "prefab" "valve misc" + "craft_class" "" + "item_name" "#TF_Engineer_Hat_1" + "item_description" "#TF_Engineer_Hat_1_Desc" + "image_inventory" "backpack/player/items/engineer/mining_hat" + "model_player" "models/player/items/engineer/mining_hat.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "49" + { + "name" "Football Helmet" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Heavy_Hat_1" + "item_description" "#TF_Heavy_Hat_1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/football_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/football_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "50" + { + "name" "Prussian Pickelhaube" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Medic_Hat_1" + "item_description" "#TF_Medic_Hat_1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "51" + { + "name" "Pyro's Beanie" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "paintable" "1" + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Pyro_Hat_1" + "item_description" "#TF_Pyro_Hat_1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "52" + { + "name" "Batter's Helmet" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Scout_Hat_1" + "item_description" "#TF_Scout_Hat_1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/batter_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/batter_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_HatAndHeadphones_Style" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_NoHat_NoHeadphones_Style" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "2" + { + "name" "#TF_NoHat_Style" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "53" + { + "name" "Trophy Belt" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Sniper_Hat_1" + "item_description" "#TF_Sniper_Hat_1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/tooth_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/tooth_hat.mdl" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "54" + { + "name" "Soldier's Stash" + "prefab" "valve misc" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_name" "#TF_Soldier_Hat_1" + "item_description" "#TF_Soldier_Hat_1_Desc" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_hat.mdl" + "drop_type" "none" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "55" + { + "name" "Fancy Fedora" + "prefab" "valve hat" + "craft_class" "" + "first_sale_date" "2010/09/29" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Spy_Hat_1" + "item_description" "#TF_Spy_Hat_1_Desc" + "image_inventory" "backpack/player/items/spy/spy_hat" + "model_player" "models/player/items/spy/spy_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "56" + { + "name" "The Huntsman" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_huntsman" + "xifier_class_remap" "huntsman" + } + "57" + { + "name" "The Razorback" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable_razorback" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Shield" + "item_name" "#TF_Unique_Backstab_Shield" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/sniper/knife_shield" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/knife_shield.mdl" + "extra_wearable" "models/player/items/sniper/knife_shield.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "item_meter_charge_type" "1" + "item_meter_charge_rate" "30" + "meter_label" "#TF_Unique_Backstab_Shield" + } + "attributes" + { + "backstab shield" + { + "attribute_class" "set_blockbackstab_once" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "5" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + "patient overheal penalty" + { + "attribute_class" "mult_patient_overheal_penalty" + "value" "0.0" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "58" + { + "name" "Jarate" + "prefab" "valve weapon_jarate" + "first_sale_date" "2010/09/29" + } + "59" + { + "name" "The Dead Ringer" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_invis" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Watch" + "item_name" "#TF_Unique_Achievement_FeignWatch" + "item_slot" "pda2" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/weapons/c_models/c_pocket_watch/parts/c_pocket_watch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/v_models/v_watch_pocket_spy.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "8 0 -6" + } + "attributes" + { + "set cloak is feign death" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "cloak consume rate decreased" + { + "attribute_class" "mult_cloak_meter_consume_rate" + "value" "0.6" + } + "cloak_consume_on_feign_death_activate" + { + "attribute_class" "cloak_consume_on_feign_death_activate" + "value" "0.5" + } + "mult cloak meter regen rate" + { + "attribute_class" "mult_cloak_meter_regen_rate" + "value" "1.5" + } + "mod_cloak_no_regen_from_items" + { + "attribute_class" "mod_cloak_no_regen_from_items" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "9" + } + } + "mouse_pressed_sound" "ui/item_watch_pickup.wav" + "drop_sound" "ui/item_watch_drop.wav" + } + "60" + { + "name" "The Cloak and Dagger" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_invis" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Watch" + "item_name" "#TF_Unique_Achievement_CloakWatch" + "item_slot" "pda2" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/weapons/c_models/c_leather_watch/parts/c_leather_watch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/v_models/v_watch_leather_spy.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "8 0 -6" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "58" + } + "set cloak is movement based" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "mult cloak meter regen rate" + { + "attribute_class" "mult_cloak_meter_regen_rate" + "value" "2.0" + } + "NoCloakWhenCloaked" + { + "attribute_class" "NoCloakWhenCloaked" + "value" "1" + } + "ReducedCloakFromAmmo" + { + "attribute_class" "ReducedCloakFromAmmo" + "value" "0.65" + } + } + "mouse_pressed_sound" "ui/item_watch_pickup.wav" + "drop_sound" "ui/item_watch_drop.wav" + } + "61" + { + "name" "The Ambassador" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_ambassador" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_ambassador/c_ambassador_gold" + } + } + } + "xifier_class_remap" "ambassador" + } + "94" + { + "name" "Texas Ten Gallon" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Engineer_Cowboy_Hat" + "item_description" "#TF_Engineer_Cowboy_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/engineer_cowboy_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/engineer_cowboy_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "95" + { + "name" "Engineer's Cap" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Engineer_Train_Hat" + "item_description" "#TF_Engineer_Train_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/engineer_train_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/engineer_train_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "96" + { + "name" "Officer's Ushanka" + "prefab" "valve hat" + "first_sale_date" "2010/09/29" + "capabilities" + { + "paintable" "1" + "can_craft_if_purchased" "1" + } + "item_name" "#TF_Heavy_Ushanka_Hat" + "item_description" "#TF_Heavy_Ushanka_Hat_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_ushanka" + "model_player" "models/player/items/heavy/heavy_ushanka.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + } + "97" + { + "name" "Tough Guy's Toque" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Heavy_Stocking_cap" + "item_description" "#TF_Heavy_Stocking_cap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/heavy_stocking_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/heavy_stocking_cap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "98" + { + "name" "Stainless Pot" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Soldier_Pot_Hat" + "item_description" "#TF_Soldier_Pot_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_pot" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_pot.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" + "drop_sound" "ui/item_metal_pot_drop.wav" + } + "99" + { + "name" "Tyrant's Helm" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Soldier_Viking_Hat" + "item_description" "#TF_Soldier_Viking_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_viking" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_viking.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "100" + { + "name" "Glengarry Bonnet" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Demo_Scott_Hat" + "item_description" "#TF_Demo_Scott_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_scott" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/demo_scott.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "101" + { + "name" "Vintage Tyrolean" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "paintable" "1" + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Medic_Tyrolean_Hat" + "item_description" "#TF_Medic_Tyrolean_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_tyrolean" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_tyrolean.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "102" + { + "name" "Respectless Rubber Glove" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Pyro_Chicken_Hat" + "item_description" "#TF_Pyro_Chicken_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_chicken" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_chicken.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "103" + { + "name" "Camera Beard" + "prefab" "valve base_misc" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_Spy_Camera_Beard" + "item_description" "#TF_Spy_Camera_Beard_Desc" + "item_slot" "misc" + "equip_region" "beard" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/spy_camera_beard" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_camera_beard.mdl" + "drop_type" "none" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "104" + { + "name" "Otolaryngologist's Mirror" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Medic_Mirror_Hat" + "item_description" "#TF_Medic_Mirror_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_mirror" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_mirror.mdl" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "105" + { + "name" "Brigade Helm" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Pyro_Fireman_Helmet" + "item_description" "#TF_Pyro_Fireman_Helmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/fireman_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/fireman_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "106" + { + "name" "Bonk Helm" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Scout_Bonk_Helmet" + "item_description" "#TF_Scout_Bonk_Helmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/bonk_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/bonk_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "107" + { + "name" "Ye Olde Baker Boy" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Scout_Newsboy_Cap" + "item_description" "#TF_Scout_Newsboy_Cap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/newsboy_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/newsboy_cap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "108" + { + "name" "Backbiter's Billycock" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Spy_Derby_Hat" + "item_description" "#TF_Spy_Derby_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/derby_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/derby_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "109" + { + "name" "Professional's Panama" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Sniper_Straw_Hat" + "item_description" "#TF_Sniper_Straw_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/straw_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/straw_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "110" + { + "name" "Master's Yellow Belt" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Sniper_Jarate_Headband" + "item_description" "#TF_Sniper_Jarate_Headband_Desc" + "item_slot" "head" + "equip_region" "sniper_headband" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/jarate_headband" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/jarate_headband.mdl" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "111" + { + "name" "Baseball Bill's Sports Shine" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_CosmeticItem" + "item_name" "#TF_Hatless_Scout" + "item_description" "#TF_Hatless_Scout_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/scout_nohat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/scout_nohat.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "115" + { + "name" "Mildly Disturbing Halloween Mask" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Holiday_Hat" + "item_name" "#TF_Halloween_Hat" + "item_description" "#TF_Halloween_Hat_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/all_halloween" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_halloween.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "116" + { + "name" "Ghastly Gibus" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Domination_Hat_Ghastlierest" + "item_description" "#TF_Domination_Hat_Ghastlierest_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/all_domination_b_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_b_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2009" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_2009_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghastlier" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghastly" + } + "2" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_b_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghastlierest" + } + "3" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/ghostly_gibus_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghostly" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "117" + { + "name" "Ritzy Rick's Hair Fixative" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_CosmeticItem" + "item_name" "#TF_Hatless_Sniper" + "item_description" "#TF_Hatless_Sniper_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/sniper_nohat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/sniper_nohat.mdl" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "118" + { + "name" "Texas Slim's Dome Shine" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_CosmeticItem" + "item_name" "#TF_Hatless_Engineer" + "item_description" "#TF_Hatless_Engineer_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/engineer_nohat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/engineer_nohat.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_bald_head_pickup.wav" + "drop_sound" "ui/item_bald_head_pickup.wav" + } + "120" + { + "name" "Scotsman's Stove Pipe" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Demo_Top_Hat" + "item_description" "#TF_Demo_Top_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/top_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/top_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_StovePipe_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_StovePipe_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "121" + { + "name" "Web Easteregg Medal" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Medal" + "item_name" "#TF_Soldier_Medal_Web_Sleuth" + "item_description" "#TF_Soldier_Medal_Web_Sleuth_Desc" + "item_slot" "misc" + "equip_region" "medal" + "item_quality" "unique" + "min_ilevel" "100" + "max_ilevel" "100" + "image_inventory" "backpack/player/items/soldier/medal" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "" + "drop_type" "none" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "medal" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "122" + { + "name" "CheatDetectedMinor" + "first_sale_date" "2010/09/29" + "expiration_date" "2014-09-29 06:00:00" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "1" + "item_class" "tf_wearable" + "item_type_name" "CheatDetector" + "item_name" "#TF_CheatDetectedMinor" + "item_slot" "misc" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "100" + "max_ilevel" "100" + "image_inventory" "" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "" + "used_by_classes" + { + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "123" + { + "name" "CheatDetectedMajor" + "first_sale_date" "2010/09/29" + "expiration_date" "2014-09-29 06:00:00" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "1" + "item_class" "tf_wearable" + "item_type_name" "CheatDetector" + "item_name" "#TF_CheatDetectedMajor" + "item_slot" "misc" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "100" + "max_ilevel" "100" + "image_inventory" "" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "" + "used_by_classes" + { + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "124" + { + "name" "CheatDetectedHonesty" + "first_sale_date" "2010/09/29" + "expiration_date" "2014-09-29 06:00:00" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "1" + "item_class" "tf_wearable" + "item_type_name" "CheatDetector" + "item_name" "#TF_HonestyReward" + "item_slot" "misc" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "100" + "max_ilevel" "100" + "image_inventory" "" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "" + "used_by_classes" + { + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "125" + { + "name" "Honest Halo" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_HonestyHalo" + "item_name" "#TF_HonestyHalo" + "item_description" "#TF_HonestyHalo_Desc" + "item_slot" "head" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/player/items/all_class/all_halo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/all_class/all_halo.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "0" + } + "styles" + { + "0" + { + "name" "#TF_HonestyHalo_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_HonestyHalo_Style1" + } + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "5" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "126" + { + "name" "L4D Hat" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_L4DHat" + "item_name" "#TF_L4DHat" + "item_description" "#TF_L4DHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/demo/demo_bill" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_bill.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "127" + { + "name" "The Direct Hit" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_rocketlauncher_directhit" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_Unique_Achievement_RocketLauncher" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_directhit/c_directhit" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_directhit/c_directhit.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + } + "attributes" + { + "Blast radius decreased" + { + "attribute_class" "mult_explosion_radius" + "value" "0.3" + } + "Projectile speed increased" + { + "attribute_class" "mult_projectile_speed" + "value" "1.8" + } + "damage bonus" + { + "attribute_class" "mult_dmg" + "value" "1.25" + } + "mod mini-crit airborne" + { + "attribute_class" "mini_crit_airborne" + "value" "1" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "128" + { + "name" "The Equalizer" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_shovel" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Pickaxe" + "item_name" "#TF_Unique_Achievement_Pickaxe" + "item_logname" "unique_pickaxe" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/weapons/c_models/c_pickaxe/c_pickaxe_s2" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "50" + "model_player" "models/weapons/c_models/c_pickaxe/c_pickaxe_s2.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -11" + } + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "mod shovel damage boost" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "reduced_healing_from_medics" + { + "attribute_class" "mult_healing_from_medics" + "value" "0.1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_melee_miss" "Weapon_PickAxe.Swing" + "sound_melee_hit" "Weapon_PickAxe.HitFlesh" + "sound_burst" "Weapon_PickAxe.SwingCrit" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "129" + { + "name" "The Buff Banner" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_buff_banner" + "xifier_class_remap" "buff_banner" + } + "130" + { + "name" "The Scottish Resistance" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pipebomblauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_PipebombLauncher" + "item_name" "#TF_Unique_Achievement_StickyLauncher" + "item_slot" "secondary" + "anim_slot" "primary" + "item_quality" "unique" + "propername" "1" + "item_logname" "stickybomb_defender" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/weapons/w_models/w_stickybomb_defender" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "inspect_panel_dist" "50" + "model_player" "models/weapons/c_models/c_scottish_resistance/c_scottish_resistance.mdl" + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scottish_resistance/c_scottish_resistance_festivizer.mdl" + } + } + } + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.75" + } + "sticky detonate mode" + { + "attribute_class" "set_detonate_mode" + "value" "1" + } + "stickies detonate stickies" + { + "attribute_class" "stickies_detonate_stickies" + "value" "1" + } + "maxammo secondary increased" + { + "attribute_class" "mult_maxammo_secondary" + "value" "1.5" + } + "max pipebombs increased" + { + "attribute_class" "add_max_pipebombs" + "value" "6" + } + "sticky arm time penalty" + { + "attribute_class" "sticky_arm_time" + "value" "0.8" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "131" + { + "name" "The Chargin' Targe" + "prefab" "valve weapon_targe" + "first_sale_date" "2010/09/29" + "xifier_class_remap" "weapon_targe" + } + "132" + { + "name" "The Eyelander" + "prefab" "valve weapon_eyelander" + "first_sale_date" "2010/09/29" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + } + } + "133" + { + "name" "The Gunboats" + "prefab" "valve weapon_gunboats" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "craft_class" "weapon" + "craft_material_type" "weapon" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_Unique_Blast_Boots" + "item_slot" "secondary" + "equip_region" "feet" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/weapons/c_models/c_rocketboots_soldier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_rocketboots_soldier.mdl" + "act_as_wearable" "1" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "rocket jump damage reduction" + { + "attribute_class" "rocket_jump_dmg_reduction" + "value" "0.4" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "134" + { + "name" "Propaganda Contest First Place" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PropagandaContest_FirstPlace" + "item_description" "#TF_PropagandaContest_FirstPlace_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hat_first" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hat_first.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "135" + { + "name" "Towering Pillar of Hats" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_ToweringPillar_Hat" + "item_description" "#TF_ToweringPillar_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hat_first_nr" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hat_first_nr.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "136" + { + "name" "Propaganda Contest Second Place" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PropagandaContest_SecondPlace" + "item_description" "#TF_PropagandaContest_SecondPlace_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hat_second" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hat_second.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "137" + { + "name" "Noble Amassment of Hats" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_NobleAmassment_Hat" + "item_description" "#TF_NobleAmassment_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hat_second_nr" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hat_second_nr.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "138" + { + "name" "Propaganda Contest Third Place" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PropagandaContest_ThirdPlace" + "item_description" "#TF_PropagandaContest_ThirdPlace_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hat_third" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hat_third.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "139" + { + "name" "Modest Pile of Hat" + "prefab" "valve base_hat" + "first_sale_date" "2010/09/29" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_ModestPile_Hat" + "item_description" "#TF_ModestPile_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hat_third_nr" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hat_third_nr.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "140" + { + "name" "The Wrangler" + "prefab" "valve weapon_wrangler" + "first_sale_date" "2010/09/29" + } + "141" + { + "name" "The Frontier Justice" + "first_sale_date" "2010/09/29" + "prefab" "valve weapon_frontier_justice" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_frontierjustice/c_frontierjustice_gold" + } + } + } + "xifier_class_remap" "frontier_justice" + } + "142" + { + "name" "The Gunslinger" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_robot_arm" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Robot_Arm" + "item_name" "#TF_Unique_Robot_Arm" + "item_slot" "melee" + "equip_region" "arms" + "item_quality" "unique" + "anim_slot" "item2" + "min_ilevel" "15" + "max_ilevel" "15" + "propername" "1" + "item_logname" "robot_arm" + "item_iconname" "robot_arm_kill" + "image_inventory" "backpack/weapons/gunslinger" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "attach_to_hands" "1" + "disable_backpack_inspect" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -2 -7" + } + "attributes" + { + "gunslinger punch combo" + { + "attribute_class" "gunslinger_punch_combo" + "value" "1" + } + "mod wrench builds minisentry" + { + "attribute_class" "wrench_builds_minisentry" + "value" "1" + } + "max health additive bonus" + { + "attribute_class" "add_maxhealth" + "value" "25" + } + "engineer sentry build rate multiplier" + { + "attribute_class" "sentry_build_rate_multiplier" + "value" "2.5" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "3" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "0" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "rightarm" "1" + } + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "143" + { + "name" "OSX Item" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headphones" + "item_name" "#TF_OSXItem" + "item_description" "#TF_OSXItem_Desc" + "item_slot" "misc" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/earbuds" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_earbuds.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "attached_particlesystems" + { + "0" + { + "system" "headphone_notes" + "attachment" "ear_R" + } + "1" + { + "system" "headphone_notes" + "attachment" "ear_L" + } + } + } + "capabilities" + { + "nameable" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "144" + { + "name" "Medic Mask" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_MedicMask" + "item_description" "#TF_MedicMask_Desc" + "item_slot" "misc" + "equip_region" "beard" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/medic/medic_mask/medic_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/medic/medic_mask/medic_mask.mdl" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "145" + { + "name" "Heavy Hair" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_HeavyHair" + "item_description" "#TF_HeavyHair_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/hounddog" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/hounddog.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "146" + { + "name" "Demoman Hallmark" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DemomanHallmark" + "item_description" "#TF_DemomanHallmark_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hallmark" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/hallmark.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "147" + { + "name" "Spy Noble Hair" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_SpyNobleHair" + "item_description" "#TF_SpyNobleHair_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/noblehair" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/noblehair.mdl" + "drop_type" "none" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "148" + { + "name" "Engineer Welding Mask" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_EngineerWeldingMask" + "item_description" "#TF_EngineerWeldingMask_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/weldingmask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/weldingmask.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "playback_activity" + { + "on_spawn" "ACT_IDLE" + "start_building" "ACT_RUN" + "stop_building" "ACT_IDLE" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "150" + { + "name" "Scout Beanie" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_ScoutBeanie" + "item_description" "#TF_ScoutBeanie_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/beanie" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/beanie.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ScoutBeanie_Style0" + } + "1" + { + "skin_red" "4" + "skin_blu" "5" + "name" "#TF_ScoutBeanie_Style1" + } + "2" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_ScoutBeanie_Style2" + } + "3" + { + "skin_red" "6" + "skin_blu" "7" + "name" "#TF_ScoutBeanie_Style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "151" + { + "name" "Pyro Brain Sucker" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_PyroBrainSucker" + "item_description" "#TF_PyroBrainSucker_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_brainsucker" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_brainsucker.mdl" + "drop_type" "none" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "152" + { + "name" "Soldier Samurai Hat" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_SoldierSamurai" + "item_description" "#TF_SoldierSamurai_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_samurai" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_samurai.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "153" + { + "name" "The Homewrecker" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "item_logname" "sledgehammer" + "item_iconname" "sledgehammer" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SledgeHammer" + "item_name" "#TF_Unique_SledgeHammer" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_sledgehammer/c_sledgehammer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_sledgehammer/c_sledgehammer.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "dmg bonus vs buildings" + { + "attribute_class" "mult_dmg_vs_buildings" + "value" "2.0" + } + "dmg penalty vs players" + { + "attribute_class" "mult_dmg_vs_players" + "value" "0.75" + } + "damage applies to sappers" + { + "attribute_class" "set_dmg_apply_to_sapper" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_Machete.HitFlesh" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "154" + { + "name" "The Pain Train" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_shovel" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "paintrain" + "item_iconname" "paintrain" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_MakeshiftClub" + "item_name" "#TF_Unique_Makeshiftclub" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_paintrain/c_paintrain" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "55" + "model_player" "models/workshop/weapons/c_models/c_paintrain/c_paintrain.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "demoman" "1" + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -11" + } + "attributes" + { + "increase player capture value" + { + "attribute_class" "add_player_capturevalue" + "value" "1" + } + "dmg taken from bullets increased" + { + "attribute_class" "mult_dmgtaken_from_bullets" + "value" "1.1" + } + } + "visuals" + { + "sound_melee_miss" "Weapon_PickAxe.Swing" + "sound_melee_hit" "Weapon_PickAxe.HitFlesh" + "sound_burst" "Weapon_PickAxe.SwingCrit" + "sound_melee_hit_world" "Weapon_Shovel.HitWorld" + + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "155" + { + "name" "The Southern Hospitality" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_wrench" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_destroy_sappers" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Wrench" + "item_name" "#TF_Unique_Combat_Wrench" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "item_logname" "southern_hospitality" + "item_iconname" "southern_comfort_kill" + "image_inventory" "backpack/workshop/weapons/c_models/c_spikewrench/c_spikewrench" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_spikewrench/c_spikewrench.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -2 -9" + } + "attributes" + { + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "bleeding duration" + { + "attribute_class" "bleeding_duration" + "value" "5" + } + "dmg taken from fire increased" + { + "attribute_class" "mult_dmgtaken_from_fire" + "value" "1.20" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "0" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "3" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ITEM3_VM_IDLE" + "ACT_VM_DRAW" "ACT_ITEM3_VM_DRAW" + "ACT_VM_HITCENTER" "ACT_ITEM3_VM_HITCENTER" + "ACT_VM_SWINGHARD" "ACT_ITEM3_VM_SWINGHARD" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "158" + { + "name" "Sniper Pith Helmet" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_SniperPithHelmet" + "item_description" "#TF_SniperPithHelmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/pith_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/pith_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "159" + { + "name" "The Dalokohs Bar" + "first_sale_date" "2010/09/29" + "prefab" "weapon_lunchbox" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + "can_extinguish" "1" + } + "item_name" "#TF_Unique_Lunchbox_Chocolate" + "item_description" "#TF_Lunchbox_Chocolate_desc" + "image_inventory" "backpack/workshop/weapons/c_models/c_chocolate/c_chocolate" + "model_player" "models/workshop/weapons/c_models/c_chocolate/c_chocolate.mdl" + "propername" "1" + "inspect_panel_dist" "31" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "10" + "meter_label" "#TF_Sandwich" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "50" + } + "lunchbox adds maxhealth bonus" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + } + "160" + { + "name" "TTG Max Pistol" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_pistol" + "prefab" "weapon_pistol" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Pistol" + "item_name" "#TF_TTG_MaxGun" + "item_description" "#TF_TTG_MaxGun_Desc" + "item_slot" "secondary" + "item_logname" "maxgun" + "item_iconname" "maxgun" + "image_inventory" "backpack/workshop/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "TTG Max Pistol" + } + "161" + { + "name" "TTG Sam Revolver" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_revolver" + "prefab" "weapon_revolver" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_TTG_SamRevolver" + "item_description" "#TF_TTG_SamRevolver_Desc" + "craft_class" "" + "craft_material_type" "" + "item_slot" "secondary" + "item_quality" "unique" + "item_logname" "samrevolver" + "item_iconname" "samrevolver" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop/weapons/c_models/c_ttg_sam_gun/c_ttg_sam_gun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_ttg_sam_gun/c_ttg_sam_gun.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "TTG Sam Revolver" + } + "162" + { + "name" "TTG Max Hat" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TTG_MaxsHat" + "item_description" "#TF_TTG_MaxsHat_Desc" + "item_slot" "head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_ttg_max" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_ttg_max.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "163" + { + "name" "Crit-a-Cola" + "prefab" "valve weapon_scout_drink" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Unique_EnergyDrink_CritCola" + "item_description" "#TF_Unique_EnergyDrink_CritCola_Desc" + "image_inventory" "backpack/weapons/c_models/c_energy_drink/c_critcola" + "inspect_panel_dist" "20" + "model_player" "models/weapons/c_models/c_energy_drink/c_energy_drink.mdl" + "visuals" + { + "skin" "2" + "custom_particlesystem" + { + "system" "energydrink_cola_splash" + } + "sound_deploy" "Scout.DodgeCanOpen" + } + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "mod_mark_attacker_for_death" + { + "attribute_class" "mod_mark_attacker_for_death" + "value" "5.0" + } + } + } + "164" + { + "name" "Employee Badge A" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Employee_Badge_A" + "item_description" "#TF_Employee_Badge_A_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/id_badge_gold" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/id_badge.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "0" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "165" + { + "name" "Employee Badge B" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Employee_Badge_B" + "item_description" "#TF_Employee_Badge_B_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/id_badge_silver" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/id_badge.mdl" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "1" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "166" + { + "name" "Employee Badge C" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Employee_Badge_C" + "item_description" "#TF_Employee_Badge_C_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/id_badge_bronze" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/id_badge.mdl" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "2" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "167" + { + "name" "High Five Taunt" + "prefab" "valve taunt" + "first_sale_date" "2011/10/13" + "item_name" "#TF_TauntEnabler_HighFive" + "item_description" "#TF_TauntEnabler_HighFive_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_highfive" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt attack name" + { + "attribute_class" "taunt_attack_name" + "value" "TAUNTATK_HIGHFIVE_PARTICLE" + } + "taunt attack time" + { + "attribute_class" "taunt_attack_time" + "value" "1.9" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_hi5_start.vcd" + "sniper" "scenes\player\sniper\low\taunt_hi5_start.vcd" + "soldier" "scenes\player\soldier\low\taunt_hi5_start.vcd" + "demoman" "scenes\player\demoman\low\taunt_hi5_start.vcd" + "medic" "scenes\player\medic\low\taunt_hi5_start.vcd" + "heavy" "scenes\player\heavy\low\taunt_hi5_start.vcd" + "spy" "scenes\player\spy\low\taunt_hi5_start.vcd" + "engineer" "scenes\player\engineer\low\taunt_hi5_start.vcd" + "pyro" "scenes\player\pyro\low\taunt_hi5_start.vcd" + } + "custom_partner_taunt_per_class" + { + "scout" + { + "1" "scenes\player\scout\low\taunt_hi5_a.vcd" + "2" "scenes\player\scout\low\taunt_hi5_b.vcd" + } + "sniper" + { + "1" "scenes\player\sniper\low\taunt_hi5_a.vcd" + "2" "scenes\player\sniper\low\taunt_hi5_b.vcd" + } + "soldier" + { + "1" "scenes\player\soldier\low\taunt_hi5_a.vcd" + "2" "scenes\player\soldier\low\taunt_hi5_b.vcd" + } + "demoman" + { + "1" "scenes\player\demoman\low\taunt_hi5_a.vcd" + "2" "scenes\player\demoman\low\taunt_hi5_b.vcd" + } + "medic" + { + "1" "scenes\player\medic\low\taunt_hi5_a.vcd" + "2" "scenes\player\medic\low\taunt_hi5_b.vcd" + } + "heavy" + { + "1" "scenes\player\heavy\low\taunt_hi5_a.vcd" + "2" "scenes\player\heavy\low\taunt_hi5_b.vcd" + } + "spy" + { + "1" "scenes\player\spy\low\taunt_hi5_a.vcd" + "2" "scenes\player\spy\low\taunt_hi5_b.vcd" + } + "engineer" + { + "1" "scenes\player\engineer\low\taunt_hi5_a.vcd" + "2" "scenes\player\engineer\low\taunt_hi5_b.vcd" + } + "pyro" + { + "1" "scenes\player\pyro\low\taunt_hi5_a.vcd" + "2" "scenes\player\pyro\low\taunt_hi5_b.vcd" + } + } + "taunt_separation_forward_distance" "60" + "is_partner_taunt" "1" + } + "visuals" + { + "custom_sound0" "TFPlayer.HighFive" + } + } + + + "169" + { + "name" "Golden Wrench" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_wrench" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Wrench" + "item_name" "#TF_Unique_Golden_Wrench" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "25" + "max_ilevel" "25" + "propername" "1" + "attach_to_hands" "1" + "item_logname" "wrench_golden" + "item_iconname" "wrench_golden" + "image_inventory" "backpack/weapons/c_models/c_wrench/gold_wrench" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_wrench/c_wrench.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "material_override" "models/weapons/c_items/gold_wrench.vmt" + } + "attributes" + { + "turn to gold" + { + "attribute_class" "set_turn_to_gold" + "value" "1" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 -2 -9" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + "xifier_class_remap" "wrench" + } + "170" + { + "name" "Employee Badge Plat" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Employee_Badge_Plat" + "item_description" "#TF_Employee_Badge_Plat_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/id_badge_platinum" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/id_badge.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "3" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "171" + { + "name" "The Tribalman's Shiv" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_club" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "tribalkukri" + "item_iconname" "tribalkukri" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Club" + "item_name" "#TF_Unique_TribalmanKukri" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_wood_machete/c_wood_machete" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_wood_machete/c_wood_machete.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "bleeding duration" + { + "attribute_class" "bleeding_duration" + "value" "6" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.5" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "172" + { + "name" "The Scotsman's Skullcutter" + "prefab" "weapon_battleaxe paintkit_base" + "first_sale_date" "2010/09/29" + "particle_suffix" "scotsmans_skullcutter" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_battleaxe/c_battleaxe_festivizer.mdl" + } + } + } + } + "173" + { + "name" "The Vita-Saw" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_bonesaw" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "battleneedle" + "item_iconname" "battleneedle" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bonesaw" + "item_name" "#TF_Unique_BattleSaw" + "item_description" "#TF_Unique_BattleSaw_Desc" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_uberneedle/c_uberneedle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "50" + "model_player" "models/workshop/weapons/c_models/c_uberneedle/c_uberneedle.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + } + "attributes" + { + "ubercharge_preserved_on_spawn_max" + { + "attribute_class" "ubercharge_preserved_on_spawn_max" + "value" "0.6" + } + "max health additive penalty" + { + "attribute_class" "add_maxhealth" + "value" "-10" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + } + "visuals" + { + "sound_taunt" "Taunt.MedicViolinUber" + "sound_melee_hit" "Weapon_UberSaw.HitFlesh" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "174" + { + "name" "Scout Whoopee Cap" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_ScoutWhoopee" + "item_description" "#TF_ScoutWhoopee_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/scout_whoopee" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/scout_whoopee.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "175" + { + "name" "Pyro Monocle" + "first_sale_date" "2010/09/29" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_PyroMonocle" + "equip_region" "beard" + "item_description" "#TF_PyroMonocle_Desc" + "item_slot" "misc" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_monocle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_monocle.mdl" + "drop_type" "none" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "177" + { + "name" "Medic Goggles" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_MedicGoggles" + "item_description" "#TF_MedicGoggles_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_goggles" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_goggles.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_nvg_pickup.wav" + } + "178" + { + "name" "Engineer Earmuffs" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_EngineerEarmuffs" + "item_description" "#TF_EngineerEarmuffs_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/engy_earphones" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/engy_earphones.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "179" + { + "name" "Demoman Tricorne" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DemomanTricorne" + "item_description" "#TF_DemomanTricorne_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_tricorne" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/demo_tricorne.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "180" + { + "name" "Spy Beret" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SpyBeret" + "item_description" "#TF_SpyBeret_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/spy_beret" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_beret.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "181" + { + "name" "Sniper Fishing Hat" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SniperFishingHat" + "item_description" "#TF_SniperFishingHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/sniper_fishinghat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/sniper_fishinghat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "182" + { + "name" "Pyro Helm" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_PyroHelm" + "item_description" "#TF_PyroHelm_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_pyrolean" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_pyrolean.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "183" + { + "name" "Soldier Drill Hat" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SoldierDrillHat" + "item_description" "#TF_SoldierDrillHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_sargehat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_sargehat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "184" + { + "name" "Medic Gatsby" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "paintable" "1" + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MedicGatsby" + "item_description" "#TF_MedicGatsby_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_gatsby" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_gatsby.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "185" + { + "name" "Heavy Do-rag" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Bandana" + "item_name" "#TF_HeavyDorag" + "item_description" "#TF_HeavyDorag_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/heavy_bandana" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/heavy_bandana.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "189" + { + "name" "Parasite Hat" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_Parasite_Hat" + "item_description" "#TF_Parasite_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "image_inventory" "backpack/player/items/all_class/parasite_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player_per_class" + { + "basename" "models/player/items/all_class/parasite_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + "mouse_pressed_sound" "ui/item_as_parasite_pickup.wav" + "drop_sound" "ui/item_as_parasite_drop.wav" + } + "190" + { + "name" "Upgradeable TF_WEAPON_BAT" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_bat" + "prefab" "weapon_bat" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Bat" + "item_name" "#TF_Weapon_Bat" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_bat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_bat.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "bat" + } + "191" + { + "name" "Upgradeable TF_WEAPON_BOTTLE" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_bottle" + "prefab" "weapon_bottle" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Bottle" + "item_name" "#TF_Weapon_Bottle" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_bottle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_bottle/c_bottle.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "192" + { + "name" "Upgradeable TF_WEAPON_FIREAXE" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_fireaxe" + "prefab" "weapon_fireaxe" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_FireAxe" + "item_name" "#TF_Weapon_FireAxe" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "55" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro.mdl" + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro_festivizer.mdl" + } + } + } + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "193" + { + "name" "Upgradeable TF_WEAPON_CLUB" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_club" + "prefab" "weapon_club" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Club" + "item_name" "#TF_Weapon_Club" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_machete" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_machete/c_machete.mdl" + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_machete/c_machete_festivizer.mdl" + } + } + } + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "194" + { + "name" "Upgradeable TF_WEAPON_KNIFE" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_knife" + "prefab" "weapon_knife paintkit_base" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Knife" + "item_name" "#TF_Weapon_Knife" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_knife" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_knife/c_knife.mdl" + "used_by_classes" + { + "spy" "1" + } + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "v_skin_red" "8" + "v_skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_knife_gold" + } + } + "animation_replacement" + { + "ACT_VM_HITCENTER" "ACT_MELEE_VM_HITCENTER" + "ACT_VM_SWINGHARD" "ACT_MELEE_VM_SWINGHARD" + } + } + "attributes" + { + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "knife" + } + "195" + { + "name" "Upgradeable TF_WEAPON_FISTS" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_fists" + "prefab" "weapon_fists" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Fists" + "item_name" "#TF_Weapon_Fists" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/v_models/v_fist_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "" + "attach_to_hands" "1" + "disable_backpack_inspect" "1" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_FISTS_VM_IDLE" + "ACT_VM_HITLEFT" "ACT_FISTS_VM_HITLEFT" + "ACT_VM_HITRIGHT" "ACT_FISTS_VM_HITRIGHT" + "ACT_VM_SWINGHARD" "ACT_FISTS_VM_SWINGHARD" + "ACT_VM_DRAW" "ACT_FISTS_VM_DRAW" + } + "styles" + { + "0" + { + "skin_red" "2" + "skin_blu" "3" + "v_skin_red" "2" + "v_skin_blu" "3" + "selectable" "0" + } + } + } + } + "196" + { + "name" "Upgradeable TF_WEAPON_SHOVEL" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_shovel" + "prefab" "weapon_shovel" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Shovel" + "item_name" "#TF_Weapon_Shovel" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_shovel" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_shovel/c_shovel.mdl" + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shovel/c_shovel_festivizer.mdl" + } + } + } + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_shovel_pickup.wav" + "drop_sound" "ui/item_shovel_drop.wav" + } + "197" + { + "name" "Upgradeable TF_WEAPON_WRENCH" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_wrench" + "prefab" "weapon_wrench paintkit_base" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Wrench" + "item_name" "#TF_Weapon_Wrench" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_wrench" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "attach_to_hands" "1" + "model_player" "models/weapons/c_models/c_wrench/c_wrench.mdl" + "used_by_classes" + { + "engineer" "1" + } + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_wrench_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "wrench" + } + "198" + { + "name" "Upgradeable TF_WEAPON_BONESAW" + "first_sale_date" "2010/09/29" + "prefab" "weapon_bonesaw" + "craft_class" "" + "craft_material_type" "weapon" + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + } + "199" + { + "name" "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" + "first_sale_date" "2010/09/29" + "prefab" "weapon_shotgun_multiclass paintkit_base" + "craft_class" "" + "min_ilevel" "1" + "max_ilevel" "1" + "show_in_armory" "1" + "armory_desc" "stockitem" + "xifier_class_remap" "weapon_shotgun" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + } + "200" + { + "name" "Upgradeable TF_WEAPON_SCATTERGUN" + "first_sale_date" "2010/09/29" + "prefab" "weapon_scattergun paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_scattergun_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "xifier_class_remap" "scattergun" + } + "201" + { + "name" "Upgradeable TF_WEAPON_SNIPERRIFLE" + "first_sale_date" "2010/09/29" + "prefab" "weapon_sniperrifle paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "v_skin_red" "8" + "v_skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_sniperrifle_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "xifier_class_remap" "sniper_rifle" + } + "202" + { + "name" "Upgradeable TF_WEAPON_MINIGUN" + "first_sale_date" "2010/09/29" + "prefab" "weapon_minigun paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_minigun_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "xifier_class_remap" "minigun" + } + "203" + { + "name" "Upgradeable TF_WEAPON_SMG" + "first_sale_date" "2010/09/29" + "prefab" "weapon_smg paintkit_base" + "craft_class" "" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_smg/c_smg_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "xifier_class_remap" "weapon_smg" + } + "204" + { + "name" "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_syringegun_medic" + "prefab" "weapon_syringegun" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_SyringeGun" + "item_name" "#TF_Weapon_SyringeGun" + "item_slot" "primary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_syringegun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_syringegun/c_syringegun.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "205" + { + "name" "Upgradeable TF_WEAPON_ROCKETLAUNCHER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_rocketlauncher paintkit_base" + "craft_class" "" + "craft_material_type" "weapon" + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_slot" "primary" + "item_quality" "unique" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "v_skin_red" "8" + "v_skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_rocketlauncher_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "xifier_class_remap" "rocket_launcher" + } + "206" + { + "name" "Upgradeable TF_WEAPON_GRENADELAUNCHER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_grenade_launcher paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_grenadelauncher_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "xifier_class_remap" "grenade_launcher" + } + "207" + { + "name" "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_stickybomb_launcher paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "v_skin_red" "8" + "v_skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_stickybomb_launcher_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "208" + { + "name" "Upgradeable TF_WEAPON_FLAMETHROWER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_flamethrower paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/c_models/c_flamethrower/c_flamethrower_gold" + } + } + } + "xifier_class_remap" "flamethrower" + } + "209" + { + "name" "Upgradeable TF_WEAPON_PISTOL" + "first_sale_date" "2010/09/29" + "prefab" "weapon_pistol paintkit_base" + "craft_class" "" + "show_in_armory" "1" + "armory_desc" "stockitem" + "xifier_class_remap" "weapon_pistol" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + } + "210" + { + "name" "Upgradeable TF_WEAPON_REVOLVER" + "first_sale_date" "2010/09/29" + "prefab" "weapon_revolver paintkit_base" + "craft_class" "" + "min_ilevel" "1" + "max_ilevel" "1" + "show_in_armory" "1" + "armory_desc" "stockitem" + "xifier_class_remap" "weapon_revolver" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + } + "211" + { + "name" "Upgradeable TF_WEAPON_MEDIGUN" + "first_sale_date" "2010/09/29" + "prefab" "weapon_medigun paintkit_base" + "craft_class" "" + "item_quality" "unique" + "show_in_armory" "1" + "armory_desc" "stockitem" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + "1" + { + "skin_red" "8" + "skin_blu" "9" + "selectable" "0" + "image_inventory" "backpack/weapons/w_models/w_medigun_gold" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "xifier_class_remap" "medigun" + } + "212" + { + "name" "Upgradeable TF_WEAPON_INVIS" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_invis" + "prefab" "weapon_invis" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_desc" "stockitem" + "item_type_name" "#TF_Weapon_Watch" + "item_name" "#TF_Weapon_Watch" + "item_slot" "pda2" + "item_quality" "unique" + "anim_slot" "FORCE_NOT_USED" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/c_models/c_spy_watch/parts/c_spy_watch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/v_models/v_watch_spy.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_watch_pickup.wav" + "drop_sound" "ui/item_watch_drop.wav" + } + "213" + { + "name" "The Attendant" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "craft_class" "hat" + "craft_material_type" "hat" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TheAttendant" + "item_description" "#TF_TheAttendant_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/attendant" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/attendant.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "214" + { + "name" "The Powerjack" + "prefab" "weapon_powerjack paintkit_base" + "first_sale_date" "2010/09/29" + "particle_suffix" "powerjack" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_powerjack/c_powerjack_festivizer.mdl" + } + } + } + } + "215" + { + "name" "The Degreaser" + "prefab" "weapon_degreaser paintkit_base" + "first_sale_date" "2010/09/29" + "particle_suffix" "degreaser" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_degreaser/c_degreaser_festivizer.mdl" + } + } + } + } + "216" + { + "name" "Rimmed Raincatcher" + "first_sale_date" "2011/04/07" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DemomanPirate" + "item_description" "#TF_DemomanPirate_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/drinking_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/drinking_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "219" + { + "name" "The Milkman" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TheMilkman" + "item_description" "#TF_TheMilkman_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/milkhat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/milkhat.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "220" + { + "name" "The Shortstop" + "prefab" "weapon_shortstop paintkit_base" + "first_sale_date" "2010/09/29" + "particle_suffix" "shortstop" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + } + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_shortstop/c_shortstop_festivizer.mdl" + } + } + } + } + "221" + { + "name" "The Holy Mackerel" + "prefab" "weapon_holymackerel paintkit_base" + "first_sale_date" "2010/09/29" + "particle_suffix" "holy_mackerel" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_holymackerel/c_holymackerel_festivizer.mdl" + } + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + } + } + "xifier_class_remap" "holymackerel" + } + "222" + { + "name" "Mad Milk" + "prefab" "weapon_madmilk" + "first_sale_date" "2010/09/29" + "min_ilevel" "5" + "max_ilevel" "5" + "attach_to_hands" "1" + "inspect_panel_dist" "25" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "visuals" + { + "skin" "2" + "custom_particlesystem" + { + "system" "energydrink_milk_splash" + } + "sound_deploy" "Weapon_MadMilk.Draw" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "223" + { + "name" "The Familiar Fez" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TheFamiliarFez" + "item_description" "#TF_TheFamiliarFez_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/fez" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/fez.mdl" + "drop_type" "none" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "224" + { + "name" "L'Etranger" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_revolver" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_LEtranger" + "item_slot" "secondary" + "item_quality" "unique" + "propername" "0" + "item_logname" "letranger" + "item_iconname" "letranger" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop/weapons/c_models/c_letranger/c_letranger" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "32" + "model_player" "models/workshop/weapons/c_models/c_letranger/c_letranger.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "attributes" + { + "add cloak on hit" + { + "attribute_class" "add_cloak_on_hit" + "value" "15" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.8" + } + "cloak consume rate decreased" + { + "attribute_class" "mult_cloak_meter_consume_rate" + "value" "0.6" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Letranger.Single" + "sound_burst" "Weapon_Letranger.SingleCrit" + } + } + "225" + { + "name" "Your Eternal Reward" + "first_sale_date" "2010/09/29" + "prefab" "weapon_eternal_reward" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_name" "#TF_EternalReward" + "propername" "0" + "item_logname" "eternal_reward" + "item_iconname" "eternal_reward" + "inspect_panel_dist" "38" + "image_inventory" "backpack/workshop/weapons/c_models/c_eternal_reward/c_eternal_reward" + "model_player" "models/workshop/weapons/c_models/c_eternal_reward/c_eternal_reward.mdl" + "static_attrs" + { + "min_viewmodel_offset" "5 0 -4" + } + } + "226" + { + "name" "The Battalion's Backup" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_buff_item" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_apply_soldier_buff" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Battle_Banner" + "item_name" "#TF_TheBattalionsBackup" + "item_description" "#TF_TheBattalionsBackup_Desc" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_battalion_buffpack/c_battalion_buffpack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "35" + "model_player" "models/workshop/weapons/c_models/c_battalion_bugle/c_battalion_bugle.mdl" + "attach_to_hands" "1" + "extra_wearable" "models/workshop/weapons/c_models/c_battalion_buffpack/c_battalion_buffpack.mdl" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -2 -5" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "51" + } + "mod soldier buff type" + { + "attribute_class" "set_buff_type" + "value" "2" + } + "max health additive bonus" + { + "attribute_class" "add_maxhealth" + "value" "20" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_MP_ATTACK_STAND_MELEE_SECONDARY" "ACT_MP_ATTACK_STAND_ITEM1_SECONDARY" + "ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY" "ACT_MP_ATTACK_STAND_ITEM1_SECONDARY" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + } + "227" + { + "name" "The Grenadier's Softcap" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TheGrenadiersSoftcap" + "item_description" "#TF_TheGrenadiersSoftcap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/grenadier_softcap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/grenadier_softcap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "228" + { + "name" "The Black Box" + "prefab" "weapon_blackbox paintkit_base" + "first_sale_date" "2010/09/29" + "particle_suffix" "black_box" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_blackbox/c_blackbox_festivizer.mdl" + } + } + } + } + "229" + { + "name" "Ol' Snaggletooth" + "first_sale_date" "2010/09/29" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_OlSnaggletooth" + "item_description" "#TF_OlSnaggletooth_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/snaggletooth" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/snaggletooth.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "230" + { + "name" "The Sydney Sleeper" + "first_sale_date" "2010/09/29" + "prefab" "weapon_sniperrifle_alt1" + "item_class" "tf_weapon_sniperrifle" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_extinguish" "1" + } + "item_logname" "sydney_sleeper" + "item_iconname" "sydney_sleeper" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_SydneySleeper" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_sydney_sleeper/c_sydney_sleeper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_sydney_sleeper/c_sydney_sleeper.mdl" + "attach_to_hands" "1" + "visuals" + { + "player_bodygroups" + { + "bullets" "1" + } + "sound_single_shot" "Weapon_SydneySleeper.Single" + "sound_burst" "Weapon_SydneySleeper.SingleCrit" + } + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 0 -8" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "brass_eject_model" "" + "attributes" + { + "sniper no headshots" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "jarate duration" + { + "attribute_class" "jarate_duration" + "value" "5" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "sniper charge per sec" + { + "attribute_class" "mult_sniper_charge_per_sec" + "value" "1.25" + } + } + } + "231" + { + "name" "Darwin's Danger Shield" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Shield" + "item_name" "#TF_DarwinsDangerShield" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/player/items/sniper/croc_shield/croc_shield" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/sniper/croc_shield/croc_shield.mdl" + "extra_wearable" "models/workshop/player/items/sniper/croc_shield/croc_shield.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "afterburn immunity" + { + "attribute_class" "afterburn_immunity" + "value" "1" + } + "dmg taken from fire reduced" + { + "attribute_class" "mult_dmgtaken_from_fire" + "value" "0.5" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "232" + { + "name" "The Bushwacka" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_club" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "bushwacka" + "item_iconname" "bushwacka" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Club" + "item_name" "#TF_TheBushwacka" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_croc_knife/c_croc_knife" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_croc_knife/c_croc_knife.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "dmg taken increased" + { + "attribute_class" "mult_dmgtaken" + "value" "1.2" + } + "minicrits become crits" + { + "attribute_class" "minicrits_become_crits" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + } + "233" + { + "name" "Gift - 1 Player" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "gift_standard_1_loot_list" + "num_items" "1" + "max_recipients" "1" + } + } + "capabilities" + { + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_1" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_RandomPerson" + "item_description" "#TF_Gift_RandomPerson_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_single" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "234" + { + "name" "Gift - 24 Players" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "gift_standard_24_loot_list" + "num_items" "1" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_24" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_EntireServer" + "item_description" "#TF_Gift_EntireServer_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_multiple" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "23" + "max_ilevel" "23" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + + + "237" + { + "name" "Rocket Jumper" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_weapon_rocketlauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_Weapon_RocketLauncher_Jump" + "item_description" "#TF_Weapon_RocketLauncher_Jump_Desc" + "item_slot" "primary" + "item_quality" "unique" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "propername" "1" + "image_inventory" "backpack/weapons/c_models/c_rocketjumper/c_rocketjumper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_rocketjumper/c_rocketjumper.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "no self blast dmg" + { + "attribute_class" "no_self_blast_dmg" + "value" "2" + } + "maxammo primary increased" + { + "attribute_class" "mult_maxammo_primary" + "value" "3.0" + } + "cannot pick up intelligence" + { + "attribute_class" "cannot_pick_up_intelligence" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Rocket_Jumper.Single" + "sound_special1" "Weapon_Rocket_Jumper.Explode" + } + } + "239" + { + "name" "Gloves of Running Urgently" + "prefab" "valve weapon_gru" + "first_sale_date" "2010/09/29" + "visuals_red" + { + "use_visualsblock_as_base" "visuals" + "skin" "2" + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + } + "visuals_blu" + { + "use_visualsblock_as_base" "visuals" + "skin" "3" + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + } + } + "240" + { + "name" "Worms Gear" + "loadondemand" "1" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_Worms_Gear" + "item_description" "#TF_Worms_Gear_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "grenades" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/worms_gear" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/worms_gear.mdl" + "drop_type" "none" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "grenades" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "241" + { + "name" "Duel MiniGame" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tf_wearable" + "tool" + { + "type" "duel_minigame" + } + "capabilities" + { + "usable_gc" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_UsableItem" + "item_name" "#TF_Usable_Duel" + "item_description" "#TF_Usable_Duel_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/icon_dueling" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "5" + "max_ilevel" "5" + "armory_desc" "action duel" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_dueling_pistols_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "242" + { + "name" "Duel Medal Bronze" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Duel_Medal_Bronze" + "item_description" "#TF_Duel_Medal_Bronze_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/dueling_medal_bronze" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/dueling_medal.mdl" + "min_ilevel" "1" + "max_ilevel" "1" + "armory_desc" "duel_medal" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "2" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "243" + { + "name" "Duel Medal Silver" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Duel_Medal_Silver" + "item_description" "#TF_Duel_Medal_Silver_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/dueling_medal_silver" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/dueling_medal.mdl" + "min_ilevel" "25" + "max_ilevel" "25" + "armory_desc" "duel_medal" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "1" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "244" + { + "name" "Duel Medal Gold" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Duel_Medal_Gold" + "item_description" "#TF_Duel_Medal_Gold_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/dueling_medal_gold" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/dueling_medal.mdl" + "min_ilevel" "50" + "max_ilevel" "50" + "armory_desc" "duel_medal" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "0" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "245" + { + "name" "Duel Medal Plat" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Duel_Medal_Plat" + "item_description" "#TF_Duel_Medal_Plat_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/dueling_medal_platinum" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/dueling_medal.mdl" + "min_ilevel" "75" + "max_ilevel" "75" + "armory_desc" "duel_medal" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "skin" "3" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + + "246" + { + "name" "Pugilist's Protector" + "prefab" "base_hat" + "first_sale_date" "2011/02/28" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headgear" + "item_name" "#TF_HeavyPugilistProtector" + "item_description" "#TF_HeavyPugilistProtector_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/pugilist_protector" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/pugilist_protector.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "247" + { + "name" "Old Guadalajara" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PyroFiestaSombrero" + "item_description" "#TF_PyroFiestaSombrero_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/fiesta_sombrero" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/fiesta_sombrero.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "248" + { + "name" "Napper's Respite" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PyroBeanie" + "item_description" "#TF_PyroBeanie_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_beanie" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_beanie.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "249" + { + "name" "Bombing Run" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_ScoutBombingRun" + "item_description" "#TF_ScoutBombingRun_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/pilot_protector" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/pilot_protector.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "250" + { + "name" "Chieftain's Challenge" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SoldierChiefRocketeer" + "item_description" "#TF_SoldierChiefRocketeer_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/chief_rocketeer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/chief_rocketeer.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "251" + { + "name" "Stout Shako" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SoldierShako" + "item_description" "#TF_SoldierShako_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_shako" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_shako.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "252" + { + "name" "Dr's Dapper Topper" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Seuss" + "item_description" "#TF_Seuss_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/all_class/dappertopper/dappertopper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dappertopper/dappertopper_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "Demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "253" + { + "name" "Handyman's Handle" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PyroPlunger" + "item_description" "#TF_PyroPlunger_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_plunger" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_plunger.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "254" + { + "name" "Hard Counter" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_HeavyUmbrella" + "item_description" "#TF_HeavyUmbrella_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/heavy_umbrella" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/heavy_umbrella.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_umbrella_pickup.wav" + "drop_sound" "ui/item_umbrella_pickup.wav" + } + "255" + { + "name" "Sober Stuntman" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_DemoStuntHelmet" + "item_description" "#TF_DemoStuntHelmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/stunt_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/stunt_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "259" + { + "name" "Carouser's Capotain" + "first_sale_date" "2011/02/28" + "prefab" "base_hat" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DemoInquisitor" + "item_description" "#TF_DemoInquisitor_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/demo/inquisitor/inquisitor" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/demo/inquisitor/inquisitor.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "260" + { + "name" "Wiki Cap" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_WikiCap" + "item_description" "#TF_WikiCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "image_inventory" "backpack/player/items/all_class/wikicap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player_per_class" + { + "basename" "models/player/items/all_class/wikicap_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "261" + { + "name" "Mann Co. Cap" + "prefab" "valve base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MannCoCap" + "item_description" "#TF_MannCoCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/all_manncap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_cap.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "262" + { + "name" "Polycount Pin" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Polycount_Pin" + "item_description" "#TF_Polycount_Pin_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/polypack_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/polypack_badge.mdl" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + "263" + { + "name" "Ellis Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "craft_material_type" "hat" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_EllisHat" + "item_description" "#TF_EllisHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/all_ellis" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_ellis.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "264" + { + "name" "Frying Pan" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "item_logname" "fryingpan" + "item_iconname" "fryingpan" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_FryingPan" + "item_name" "#TF_Unique_FryingPan" + "item_slot" "melee" + "image_inventory" "backpack/player/items/all_class/all_pan" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_frying_pan/c_frying_pan.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "40" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "anim_slot" "MELEE_ALLCLASS" + "xifier_class_remap" "Frying Pan" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "FryingPan.HitFlesh" + "sound_melee_hit_world" "FryingPan.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "265" + { + "name" "Stickybomb Jumper" + "prefab" "valve" + "first_sale_date" "2010/10/11" + "item_class" "tf_weapon_pipebomblauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#Tf_Weapon_Pipebomblauncher" + "item_name" "#TF_Weapon_StickyBomb_Jump" + "item_description" "#TF_Weapon_StickyBomb_Jump_Desc" + "item_slot" "secondary" + "anim_slot" "primary" + "item_quality" "unique" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "propername" "1" + "image_inventory" "backpack/weapons/c_models/c_sticky_jumper/c_sticky_jumper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "50" + "model_player" "models/weapons/c_models/c_sticky_jumper/c_sticky_jumper.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "no self blast dmg" + { + "attribute_class" "no_self_blast_dmg" + "value" "1" + } + "maxammo secondary increased" + { + "attribute_class" "mult_maxammo_secondary" + "value" "3.0" + } + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "14" + } + "max pipebombs decreased" + { + "attribute_class" "add_max_pipebombs" + "value" "-6" + } + "cannot pick up intelligence" + { + "attribute_class" "cannot_pick_up_intelligence" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Sticky_Jumper.Single" + "sound_special1" "Weapon_Sticky_Jumper.Explode" + } + } + "266" + { + "name" "The Horseless Headless Horseman's Headtaker" + "prefab" "weapon_eyelander" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_type_name" "#TF_Weapon_Axe" + "item_name" "#TF_HalloweenBoss_Axe" + "item_description" "#TF_HalloweenBoss_Axe_Desc" + "item_quality" "rarity4" + "item_logname" "headtaker" + "item_iconname" "headtaker" + "propername" "1" + "image_inventory" "backpack/weapons/c_models/c_headtaker/c_headtaker" + "model_player" "models/weapons/c_models/c_headtaker/c_headtaker.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Halloween.HeadlessBossAxeHitFlesh" + "sound_melee_hit_world" "Halloween.HeadlessBossAxeHitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "Horseman's Headtaker" + } + + "267" + { + "name" "Haunted Metal Scrap" + "item_class" "craft_item" + "craft_class" "craft_bar" + "craft_material_type" "craft_bar" + "show_in_armory" "1" + "item_type_name" "#TF_CraftItem" + "item_name" "#TF_Haunted_Metal" + "item_description" "#TF_Haunted_Metal_Desc" + "image_inventory" "backpack/crafting/haunted_metal" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "rarity4" + "min_ilevel" "4" + "max_ilevel" "4" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "268" + { + "name" "Halloween Mask - Scout" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Scout" + "item_description" "#TF_Halloween_Mask_Scout_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_scout_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_scout" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "269" + { + "name" "Halloween Mask - Sniper" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Sniper" + "item_description" "#TF_Halloween_Mask_Sniper_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_sniper_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_sniper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "270" + { + "name" "Halloween Mask - Soldier" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Soldier" + "item_description" "#TF_Halloween_Mask_Soldier_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_soldier_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_soldier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "271" + { + "name" "Halloween Mask - Demoman" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Demoman" + "item_description" "#TF_Halloween_Mask_Demoman_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_demo_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "272" + { + "name" "Halloween Mask - Medic" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Medic" + "item_description" "#TF_Halloween_Mask_Medic_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_medic_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_medic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "273" + { + "name" "Halloween Mask - Heavy" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Heavy" + "item_description" "#TF_Halloween_Mask_Heavy_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_heavy_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "274" + { + "name" "Halloween Mask - Spy" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Spy" + "item_description" "#TF_Halloween_Mask_Spy_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_spy_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_spy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "275" + { + "name" "Halloween Mask - Engineer" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Engineer" + "item_description" "#TF_Halloween_Mask_Engineer_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_engineer_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_engineer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "276" + { + "name" "Halloween Mask - Pyro" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_Pyro" + "item_description" "#TF_Halloween_Mask_Pyro_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_pyro_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween_or_fullmoon" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "277" + { + "name" "Halloween Mask - Saxton Hale" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Mask_SaxtonHale" + "item_description" "#TF_Halloween_Mask_SaxtonHale_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "model_player_per_class" + { + "basename" "models/player/items/all_class/halloween_bag_saxton_%s.mdl" + } + "image_inventory" "backpack/player/items/all_class/halloween_bag_saxton" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "278" + { + "name" "Horseless Headless Horseman's Head" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Head" + "item_description" "#TF_Halloween_Head_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/pumkin_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/pumpkin_hat_%s.mdl" + } + "drop_type" "none" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "279" + { + "name" "Ghastly Gibus 2010" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Domination_Hat_Ghastlier" + "item_description" "#TF_Domination_Hat_Ghastlier_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/all_domination_2009" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_2009_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2010" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_2009_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghastlier" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghastly" + } + "2" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/ghostly_gibus_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghostly" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "280" + { + "name" "Halloween Noise Maker - Black Cat" + "first_sale_date" "2010/10/15" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_BlackCat" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_cat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.BlackCat" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.BlackCat" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "281" + { + "name" "Halloween Noise Maker - Gremlin" + "first_sale_date" "2010/10/15" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Gremlin" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_gremlin" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.Gremlin" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.Gremlin" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "282" + { + "name" "Halloween Noise Maker - Werewolf" + "first_sale_date" "2010/10/15" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Werewolf" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_wolf" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.Werewolf" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.Werewolf" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "283" + { + "name" "Halloween Noise Maker - Witch" + "first_sale_date" "2010/10/15" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Witch" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_witch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.Witch" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.Witch" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "284" + { + "name" "Halloween Noise Maker - Banshee" + "first_sale_date" "2010/10/15" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Banshee" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_banshee" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.Banshee" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.Banshee" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "286" + { + "name" "Halloween Noise Maker - Crazy Laugh" + "first_sale_date" "2010/10/15" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_CrazyLaugh" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_laugh" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.CrazyLaugh" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.CrazyLaugh" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "287" + { + "name" "Spine-Chilling Skull" + "first_sale_date" "2010/10/22" + "prefab" "valve base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Skullcap" + "item_description" "#TF_Halloween_Skullcap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/skull" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/skull_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2010" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "288" + { + "name" "Halloween Noise Maker - Stabby" + "first_sale_date" "2010/10/22" + "prefab" "valve" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Stabby" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_stabby" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Halloween.Stabby" + "particle_effect" "halloween_notes" + } + "mouse_pressed_sound" "Halloween.Stabby" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "289" + { + "name" "Voodoo Juju" + "first_sale_date" "2010/10/25" + "prefab" "valve base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Voodoo" + "item_description" "#TF_Halloween_Voodoo_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/voodoojuju_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/voodoojuju_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2010" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "290" + { + "name" "Cadaver's Cranium" + "prefab" "base_hat" + "first_sale_date" "2010/10/26" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Cadavers_Cranium" + "item_description" "#TF_Cadavers_Cranium_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/heavy/cadavers_cranium" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/cadavers_cranium.mdl" + "drop_type" "none" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "291" + { + "name" "Horrific Headsplitter" + "prefab" "base_hat" + "first_sale_date" "2010/10/26" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Horrific_Headsplitter" + "item_description" "#TF_Horrific_Headsplitter_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/headsplitter" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/headsplitter_%s.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "292" + { + "name" "Poker Visor" + "prefab" "base_hat" + "first_sale_date" "2010/11/05" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_TTG_PokerVisor" + "item_description" "#TF_TTG_PokerVisor_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/heavy/ttg_visor" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/ttg_visor.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "294" + { + "name" "TTG Max Pistol - Poker Night" + "item_class" "tf_weapon_pistol" + "prefab" "weapon_pistol" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "0" + "item_type_name" "#TF_Weapon_Pistol" + "item_name" "#TF_TTG_MaxGun" + "item_description" "#TF_TTG_MaxGun_Desc" + "item_slot" "secondary" + "item_logname" "maxgun" + "item_iconname" "maxgun" + "image_inventory" "backpack/workshop/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_ttg_max_gun/c_ttg_max_gun.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "craft_class" "" + "craft_material_type" "" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "xifier_class_remap" "TTG Max Pistol" + } + "295" + { + "name" "TTG Glasses" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_TTG_Glasses" + "item_description" "#TF_TTG_Glasses_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "image_inventory" "backpack/player/items/demo/ttg_glasses" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player" "models/player/items/demo/ttg_glasses.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "296" + { + "name" "TTG Badge" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_TTG_Badge" + "item_description" "#TF_TTG_Badge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/ttg_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player" "models/player/items/all_class/ttg_badge.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "297" + { + "name" "TTG Watch" + "item_class" "tf_weapon_invis" + "prefab" "weapon_invis" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Watch" + "item_name" "#TF_TTG_Watch" + "item_slot" "pda2" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "craft_class" "" + "craft_material_type" "" + "image_inventory" "backpack/weapons/c_models/c_ttg_watch/c_ttg_watch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/v_models/v_ttg_watch_spy.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_watch_pickup.wav" + "drop_sound" "ui/item_watch_drop.wav" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "298" + { + "name" "Iron Curtain" + "item_class" "tf_weapon_minigun" + "prefab" "weapon_minigun" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Minigun" + "item_name" "#TF_Iron_Curtain" + "item_slot" "primary" + "item_logname" "iron_curtain" + "item_iconname" "iron_curtain" + "image_inventory" "backpack/workshop/weapons/c_models/c_iron_curtain/c_iron_curtain" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_iron_curtain/c_iron_curtain.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "299" + { + "name" "Portal 2 Pin" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Portal2_Pin" + "item_description" "#TF_Portal2_Pin_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/p2_pin" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player" "models/player/items/all_class/p2_pin.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "302" + { + "name" "Camera Helm" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headgear" + "item_name" "#TF_CameraHelm" + "item_description" "#TF_CameraHelm_Desc" + "item_slot" "head" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/player/items/all_class/replay_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player_per_class" + { + "basename" "models/player/items/all_class/replay_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "303" + { + "name" "Berliner's Bucket Helm" + "prefab" "base_hat" + "first_sale_date" "2010/12/08" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_BerlinersBucketHelm" + "item_description" "#TF_BerlinersBucketHelm_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/berliners_bucket_helm" + "image_inventory_size_w""128" + "image_inventory_size_h""82" + "model_player" "models/player/items/medic/berliners_bucket_helm.mdl" + "drop_type" "drop" + "propername" "0" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "304" + { + "name" "The Amputator" + "prefab" "weapon_amputator paintkit_base" + "first_sale_date" "2010/12/08" + "particle_suffix" "amputator" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_amputator/c_amputator_festivizer.mdl" + } + } + } + } + "305" + { + "name" "The Crusader's Crossbow" + "first_sale_date" "2010/12/08" + "prefab" "weapon_crusaders_crossbow paintkit_base" + "particle_suffix" "crusaders_crossbow" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow_festivizer.mdl" + } + } + } + } + "306" + { + "name" "Scotch Bonnet" + "first_sale_date" "2010/12/08" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headgear" + "item_name" "#TF_ScotchBonnet" + "item_description" "#TF_ScotchBonnet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_scotchbonnet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/demo_scotchbonnet.mdl" + "drop_type" "drop" + "propername" "0" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "307" + { + "name" "The Ullapool Caber" + "first_sale_date" "2010/12/08" + "item_class" "tf_weapon_stickbomb" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_StickBomb" + "item_name" "#TF_UllapoolCaber" + "item_description" "#TF_UllapoolCaber_Desc" + "item_logname" "ullapool_caber" + "item_iconname" "ullapool_caber" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_caber/c_caber" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "35" + "model_player" "models/workshop/weapons/c_models/c_caber/c_caber.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "12 0 -17" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "attributes" + { + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + "single wep deploy time increased" + { + "attribute_class" "mult_single_wep_deploy_time" + "value" "2.0" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + } + "308" + { + "name" "The Loch-n-Load" + "prefab" "weapon_lochnload paintkit_base" + "first_sale_date" "2010/12/08" + "particle_suffix" "loch_n_load" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_lochnload/c_lochnload_festivizer.mdl" + } + } + } + } + "309" + { + "name" "Big Chief" + "prefab" "base_hat" + "first_sale_date" "2010/12/08" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_BigChief" + "item_description" "#TF_BigChief_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/heavy_big_chief" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/heavy_big_chief.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "310" + { + "name" "Warrior's Spirit" + "first_sale_date" "2010/12/08" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gloves" + "item_name" "#TF_WarriorsSpirit" + "item_slot" "melee" + "item_logname" "warrior_spirit" + "item_iconname" "warrior_spirit" + "image_inventory" "backpack/workshop/weapons/c_models/c_bear_claw/c_bear_claw" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/workshop/weapons/c_models/c_bear_claw/c_bear_claw.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + } + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "dmg taken increased" + { + "attribute_class" "mult_dmgtaken" + "value" "1.3" + } + "damage bonus" + { + "attribute_class" "mult_dmg" + "value" "1.3" + } + "heal on kill" + { + "attribute_class" "heal_on_kill" + "value" "50" + } + } + "visuals" + { + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_FISTS_VM_IDLE" + "ACT_VM_HITLEFT" "ACT_FISTS_VM_HITLEFT" + "ACT_VM_HITRIGHT" "ACT_FISTS_VM_HITRIGHT" + "ACT_VM_SWINGHARD" "ACT_FISTS_VM_SWINGHARD" + "ACT_VM_DRAW" "ACT_FISTS_VM_DRAW" + } + } + "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" + "drop_sound" "ui/item_boxing_gloves_drop.wav" + } + "311" + { + "name" "The Buffalo Steak Sandvich" + "first_sale_date" "2010/12/08" + "prefab" "weapon_lunchbox" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + } + "item_name" "#TF_BuffaloSteak" + "item_description" "#TF_BuffaloSteak_Desc" + "image_inventory" "backpack/workshop/weapons/c_models/c_buffalo_steak/c_buffalo_steak" + "model_player" "models/workshop/weapons/c_models/c_buffalo_steak/c_buffalo_steak.mdl" + "propername" "1" + "inspect_panel_dist" "31" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "30" + "meter_label" "#TF_Sandwich" + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "50" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + "energy buff dmg taken multiplier" + { + "attribute_class" "energy_buff_dmg_taken_multiplier" + "value" "1.2" + } + } + } + "312" + { + "name" "The Brass Beast" + "prefab" "weapon_gatling_gun paintkit_base" + "first_sale_date" "2010/12/08" + "particle_suffix" "brass_beast" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_gatling_gun/c_gatling_gun_festivizer.mdl" + } + } + } + } + "313" + { + "name" "Magnificent Mongolian" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MagnificentMongolian" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/heavy_magnificent_mongolian" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/heavy_magnificent_mongolian.mdl" + "drop_type" "drop" + "propername" "0" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "314" + { + "name" "Larrikin Robin" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_LarrikinRobin" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/larrikin_robin" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/larrikin_robin.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "315" + { + "name" "Blighted Beak" + "prefab" "base_misc" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_BlightedBeak" + "item_slot" "misc" + "equip_region" "face" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/blighted_beak" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_blighted_beak.mdl" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_BlightedBeak_Style1" + } + "1" + { + "skin" "1" + "name" "#TF_BlightedBeak_Style2" + } + } + } + } + "316" + { + "name" "Pyromancer's Mask" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_PyromancersMask" + "item_slot" "head" + "equip_region" "beard" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_pyromancers_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_pyromancers_mask.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_Pyromancer_Style1" + } + "1" + { + "skin" "1" + "name" "#TF_Pyromancer_Style2" + } + "2" + { + "skin" "2" + "name" "#TF_Pyromancer_Style3" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "317" + { + "name" "The Candy Cane" + "first_sale_date" "2010/12/20" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bat" + "item_name" "#TF_CandyCane" + "item_logname" "candy_cane" + "item_iconname" "candy_cane" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "25" + "max_ilevel" "25" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_candy_cane/c_candy_cane" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_candy_cane/c_candy_cane.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + "attributes" + { + "drop health pack on kill" + { + "attribute_class" "drop_health_pack_on_kill" + "value" "1" + } + "dmg taken from blast increased" + { + "attribute_class" "mult_dmgtaken_from_explosions" + "value" "1.25" + } + } + } + "318" + { + "name" "Prancer's Pride" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PrancersPride" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/prancers_pride" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/prancers_pride.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "319" + { + "name" "Detective Noir" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DetectiveNoir" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/spy_detective_noir" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_detective_noir.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "321" + { + "name" "Madame Dixie" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "paintable" "1" + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MadameDixie" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_madame_dixie" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_madame_dixie.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "322" + { + "name" "Buckaroos Hat" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_BuckaroosHat" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/engineer_buckaroos_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/engineer_buckaroos_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "323" + { + "name" "German Gonzila" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_GermanGonzila" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_german_gonzila" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_german_gonzila.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "324" + { + "name" "Flipped Trilby" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_FlippedTrilby" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/scout_flipped_trilby" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/scout_flipped_trilby.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "325" + { + "name" "The Boston Basher" + "first_sale_date" "2010/12/20" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bat" + "item_name" "#TF_BostonBasher" + "item_logname" "boston_basher" + "item_iconname" "boston_basher" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "25" + "max_ilevel" "25" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_boston_basher/c_boston_basher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_boston_basher/c_boston_basher.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + "attributes" + { + "bleeding duration" + { + "attribute_class" "bleeding_duration" + "value" "5" + } + "hit self on miss" + { + "attribute_class" "hit_self_on_miss" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "BostonBasher.Impact" + "sound_melee_hit_world" "BostonBasher.HitWorld" + } + } + "326" + { + "name" "The Back Scratcher" + "prefab" "weapon_back_scratcher paintkit_base" + "first_sale_date" "2010/12/20" + "particle_suffix" "back_scratcher" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_back_scratcher/c_back_scratcher_festivizer.mdl" + } + } + } + } + "327" + { + "name" "The Claidheamohmor" + "prefab" "weapon_claidheamohmor paintkit_base" + "first_sale_date" "2010/12/20" + "particle_suffix" "claidheamohmor" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_claidheamohmor/c_claidheamohmor_festivizer.mdl" + } + } + } + } + "329" + { + "name" "The Jag" + "prefab" "weapon_jag paintkit_base" + "first_sale_date" "2010/12/20" + "particle_suffix" "jag" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_jag/c_jag_festivizer.mdl" + } + } + } + } + "330" + { + "name" "Coupe D'isaster" + "prefab" "base_hat" + "first_sale_date" "2010/12/20" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_CoupeDisaster" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/coupe_disaster" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/coupe_disaster.mdl" + "drop_type" "none" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "331" + { + "name" "Fists of Steel" + "first_sale_date" "2010/12/20" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gloves" + "item_name" "#TF_FistsOfSteel" + "item_slot" "melee" + "item_logname" "steel_fists" + "item_iconname" "steel_fists" + "image_inventory" "backpack/workshop/weapons/c_models/c_fists_of_steel/c_fists_of_steel" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/workshop/weapons/c_models/c_fists_of_steel/c_fists_of_steel.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + "mult_patient_overheal_penalty_active" "0.6" + "mult_health_fromhealers_penalty_active""0.6" + } + "hide_bodygroups_deployed_only" "1" + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + "sound_melee_miss" "Weapon_MetalGloves.Miss" + "sound_melee_hit" "Weapon_MetalGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_MetalGloves.HitWorld" + "sound_burst" "Weapon_MetalGloves.MissCrit" + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_MELEE_VM_ITEM1_DRAW" + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "dmg from ranged reduced" + { + "attribute_class" "dmg_from_ranged" + "value" "0.6" + } + "dmg from melee increased" + { + "attribute_class" "dmg_from_melee" + "value" "2.0" + } + "single wep holster time increased" + { + "attribute_class" "mult_switch_from_wep_deploy_time" + "value" "2.0" + } + } + } + + "332" + { + "name" "Treasure Hat 1" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TreasureHat_1" + "item_description" "#TF_TreasureHat_1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/player/items/all_class/treasure_hat_01" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/treasure_hat_01_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "333" + { + "name" "Treasure Hat 2" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TreasureHat_2" + "item_description" "#TF_TreasureHat_2_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "15" + "max_ilevel" "15" + "image_inventory" "backpack/player/items/all_class/treasure_hat_02" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/treasure_hat_02_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/treasure_hat_02_%s.mdl" + } + "name" "#TF_TreasureHat_2" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/treasure_hat_01_%s.mdl" + } + "name" "#TF_TreasureHat_1" + } + } + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "attached_particlesystems" + { + "0" + { + "system" "coin_spin" + "attachment" "root" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "334" + { + "name" "Treasure Hat 3" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TreasureHat_3" + "item_description" "#TF_TreasureHat_3_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "28" + "max_ilevel" "28" + "image_inventory" "backpack/player/items/all_class/treasure_hat_oct" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/treasure_hat_oct.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/%s/treasure_hat_oct.mdl" + } + "name" "#TF_TreasureHat_3_Style" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/treasure_hat_02_%s.mdl" + } + "name" "#TF_TreasureHat_2" + } + "2" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/treasure_hat_01_%s.mdl" + } + "name" "#TF_TreasureHat_1" + } + } + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "335" + { + "name" "KF Pyro Mask" + "prefab" "base_misc" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_KF_Pyro_Mask" + "item_slot" "misc" + "equip_region" "pyro_head_replacement" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_tripwire_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_tripwire_mask.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "head" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "336" + { + "name" "KF Pyro Tie" + "prefab" "base_misc" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_KF_Pyro_Tie" + "item_slot" "misc" + "equip_region" "necklace" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_tripwire_tie" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_tripwire_tie.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "337" + { + "name" "Le Party Phantom" + "first_sale_date" "2010/12/20" + "prefab" "mask" + "item_name" "#TF_PartyPhantom" + "image_inventory" "backpack/player/items/spy/spy_party_phantom" + "model_player" "models/player/items/spy/spy_party_phantom.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "338" + { + "name" "Industrial Festivizer" + "first_sale_date" "2010/12/20" + "prefab" "hat_decoration" + "item_name" "#TF_ColoredLights" + "image_inventory" "backpack/player/items/engineer/engineer_colored_lights" + "model_player" "models/player/items/engineer/engineer_colored_lights.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "339" + { + "name" "Exquisite Rack" + "first_sale_date" "2010/12/20" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_ExquisiteRack" + "image_inventory" "backpack/player/items/soldier/soldier_holiday_antlers" + "model_player" "models/player/items/soldier/soldier_holiday_antlers.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "340" + { + "name" "Defiant Spartan" + "first_sale_date" "2010/12/20" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "equip_regions" + { + "hat" "1" + "face" "1" + } + "item_name" "#TF_DefiantSpartan" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/player/items/soldier/soldier_spartan" + "model_player" "models/player/items/soldier/soldier_spartan.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "341" + { + "name" "A Rather Festive Tree" + "first_sale_date" "2010/12/20" + "prefab" "hat" + "item_name" "#TF_FestiveTree" + "image_inventory" "backpack/player/items/all_class/oh_xmas_tree" + "model_player_per_class" + { + "basename" "models/player/items/all_class/oh_xmas_tree_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + "soldier" "1" + "heavy" "1" + "demoman" "1" + "pyro" "1" + "scout" "1" + "medic" "1" + "sniper" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "342" + { + "name" "Prince Tavish's Crown" + "first_sale_date" "2010/12/20" + "prefab" "valve hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TavishCrown" + "image_inventory" "backpack/player/items/demo/crown" + "model_player" "models/player/items/demo/crown.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "343" + { + "name" "Friendly Item" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_HelpedNewUserHat" + "item_description" "#TF_HelpedNewUserHat_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/player/items/all_class/professor_speks" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/professor_speks.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "344" + { + "name" "Crocleather Slouch" + "first_sale_date" "2011/05/03" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_CrocLeather_Slouch" + "item_description" "#TF_CrocLeather_Slouch_Desc" + "image_inventory" "backpack/player/items/sniper/sniper_crocleather_slouch" + "model_player" "models/player/items/sniper/sniper_crocleather_slouch.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "345" + { + "name" "MNC Hat" + "prefab" "hat" + "item_name" "#TF_MNC_Hat" + "item_description" "#TF_MNC_Hat_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/mnc_hat" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_mnc.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "346" + { + "name" "MNC Mascot Hat" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_MNC_Mascot_Hat" + "item_description" "#TF_MNC_Mascot_Hat_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/scout/mnc_mascot_hat" + "model_player" "models/player/items/scout/mnc_mascot_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "347" + { + "name" "MNC Mascot Outfit" + "prefab" "base_misc" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_MNC_Mascot_Outfit" + "item_description" "#TF_MNC_Mascot_Outfit_Desc" + "item_slot" "misc" + "equip_regions" + { + "sleeves" "1" + "feet" "1" + } + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/scout/mnc_mascot_outfit" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/mnc_mascot_outfit.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "348" + { + "name" "Sharpened Volcano Fragment" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RiftFireAxe" + "item_name" "#TF_Unique_RiftFireAxe" + "item_description" "#TF_RiftFireAxe_Desc" + "item_slot" "melee" + "item_logname" "lava_axe" + "item_iconname" "lava_axe" + "item_quality" "unique" + "image_inventory" "backpack/workshop/weapons/c_models/c_rift_fire_axe/c_rift_fire_axe" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "55" + "model_player" "models/workshop/weapons/c_models/c_rift_fire_axe/c_rift_fire_axe.mdl" + "attach_to_hands" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "0" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "attributes" + { + "Set DamageType Ignite" + { + "attribute_class" "set_dmgtype_ignite" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.8" + } + } + } + "349" + { + "name" "Sun-on-a-Stick" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RiftFireMace" + "item_name" "#TF_Unique_RiftFireMace" + "item_description" "#TF_RiftFireMace_Desc" + "item_slot" "melee" + "item_logname" "lava_bat" + "item_iconname" "lava_bat" + "item_quality" "unique" + "image_inventory" "backpack/workshop/weapons/c_models/c_rift_fire_mace/c_rift_fire_mace" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "55" + "model_player" "models/workshop/weapons/c_models/c_rift_fire_mace/c_rift_fire_mace.mdl" + "attach_to_hands" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "attributes" + { + "crit vs burning players" + { + "attribute_class" "or_crit_vs_playercond" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "dmg taken from fire reduced on active" + { + "attribute_class" "mult_dmgtaken_from_fire_active" + "value" "0.75" + } + } + } + + "351" + { + "name" "The Detonator" + "prefab" "weapon_detonator paintkit_base" + "first_sale_date" "2011/06/17" + "particle_suffix" "detonator" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_detonator/c_detonator_festivizer.mdl" + } + } + } + } + + "354" + { + "name" "The Concheror" + "first_sale_date" "2011/03/08" + "item_class" "tf_weapon_buff_item" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_apply_soldier_buff" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SoldierSashimono" + "item_name" "#TF_SoldierSashimono" + "item_description" "#TF_SoldierSashimono_Desc" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_shogun_warpack/c_shogun_warpack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "35" + "model_player" "models/workshop_partner/weapons/c_models/c_shogun_warhorn/c_shogun_warhorn.mdl" + "attach_to_hands" "1" + "extra_wearable" "models/workshop_partner/weapons/c_models/c_shogun_warpack/c_shogun_warpack.mdl" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -5 -2" + } + "visuals" + { + "animation_replacement" + { + "ACT_ITEM1_VM_DRAW" "ACT_ITEM2_VM_DRAW" + "ACT_ITEM1_VM_IDLE" "ACT_ITEM2_VM_IDLE" + "ACT_ITEM1_VM_PRIMARYATTACK" "ACT_ITEM2_VM_PRIMARYATTACK" + "ACT_ITEM1_VM_SECONDARYATTACK" "ACT_ITEM2_VM_SECONDARYATTACK" + "ACT_MP_ATTACK_STAND_MELEE_SECONDARY" "ACT_MP_ATTACK_STAND_ITEM2_SECONDARY" + "ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY" "ACT_MP_ATTACK_STAND_ITEM2_SECONDARY" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + } + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "51" + } + "mod soldier buff type" + { + "attribute_class" "set_buff_type" + "value" "3" + } + "health regen" + { + "attribute_class" "add_health_regen" + "value" "4" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "355" + { + "name" "The Fan O'War" + "first_sale_date" "2011/03/08" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "warfan" + "item_iconname" "warfan" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gunbai" + "item_name" "#TF_Gunbai" + "item_description" "#TF_Gunbai_Desc" + "item_slot" "melee" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_shogun_warfan/c_shogun_warfan" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "55" + "model_player" "models/workshop_partner/weapons/c_models/c_shogun_warfan/c_shogun_warfan.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "mark for death" + { + "attribute_class" "mark_for_death" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.25" + } + "minicrits become crits" + { + "attribute_class" "minicrits_become_crits" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "356" + { + "name" "Conniver's Kunai" + "first_sale_date" "2011/03/08" + "prefab" "weapon_spy_knife_item2" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_name" "#TF_Kunai" + "item_description" "#TF_Kunai_Desc" + "propername" "0" + "item_logname" "kunai" + "item_iconname" "kunai" + "inspect_panel_dist" "35" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_shogun_kunai/c_shogun_kunai" + "model_player" "models/workshop_partner/weapons/c_models/c_shogun_kunai/c_shogun_kunai.mdl" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "sanguisuge" + { + "attribute_class" "sanguisuge" + "value" "1" + } + "max health additive penalty" + { + "attribute_class" "add_maxhealth" + "value" "-55" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + } + "357" + { + "name" "The Half-Zatoichi" + "first_sale_date" "2011/03/08" + "prefab" "weapon_sword" + "item_class" "tf_weapon_katana" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_logname" "demokatana" + "item_iconname" "demokatana" + "item_type_name" "#TF_Weapon_SoldierKatana" + "item_name" "#TF_SoldierKatana" + "item_description" "#TF_SoldierKatana_Desc" + "anim_slot" "" + "propername" "1" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_shogun_katana/c_shogun_katana" + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -5 -10" + } + "model_player_per_class" + { + "soldier" "models/workshop_partner/weapons/c_models/c_shogun_katana/c_shogun_katana_soldier.mdl" + "demoman" "models/workshop_partner/weapons/c_models/c_shogun_katana/c_shogun_katana.mdl" + } + "attributes" + { + "is_a_sword" + { + "attribute_class" "is_a_sword" + "value" "72" + } + "decapitate type" + { + "attribute_class" "decapitate_type" + "value" "1" + } + "restore health on kill" + { + "attribute_class" "restore_health_on_kill" + "value" "50" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "honorbound" + { + "attribute_class" "honorbound" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "358" + { + "name" "Heavy Topknot" + "prefab" "base_hat" + "first_sale_date" "2011/03/08" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_HeavyTopknot" + "item_description" "#TF_HeavyTopknot_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/heavy/heavy_shogun_topknot/heavy_shogun_topknot" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/heavy/heavy_shogun_topknot/heavy_shogun_topknot.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "359" + { + "name" "Demo Kabuto" + "prefab" "base_hat" + "first_sale_date" "2011/03/08" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_DemoKabuto" + "item_description" "#TF_DemoKabuto_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/demo/demo_shogun_kabuto/demo_shogun_kabuto" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/demo/demo_shogun_kabuto/demo_shogun_kabuto.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "360" + { + "name" "Hero's Hachimaki" + "prefab" "base_hat" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Bandana" + "item_name" "#TF_Homefront_Blindfold" + "item_description" "#TF_Homefront_Blindfold_Desc" + "item_slot" "head" + "equip_region" "glasses" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/homefront_blindfold" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/homefront_blindfold.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "361" + { + "name" "Spy Oni Mask" + "prefab" "base_misc" + "first_sale_date" "2011/03/08" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_SpyOniMask" + "item_description" "#TF_SpyOniMask_Desc" + "item_slot" "misc" + "equip_region" "face" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/spy/shogun_ninjamask/shogun_ninjamask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/spy/shogun_ninjamask/shogun_ninjamask.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "362" + { + "name" "Charity Noise Maker - Bell" + "first_sale_date" "2010/03/21" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "charity" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Charity_Bell" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_bell" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Fundraiser.Bell" + } + "mouse_pressed_sound" "Fundraiser.Bell" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "363" + { + "name" "Medic Geisha Hair" + "prefab" "base_hat" + "first_sale_date" "2011/03/08" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_MedicGeishaHair" + "item_description" "#TF_MedicGeishaHair_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/medic/shogun_geishahair/shogun_geishahair" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/medic/shogun_geishahair/shogun_geishahair.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "364" + { + "name" "Charity Noise Maker - Tingsha" + "first_sale_date" "2010/03/21" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "charity" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Charity_Tingsha" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_gong" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Fundraiser.Tingsha" + } + "mouse_pressed_sound" "Fundraiser.Tingsha" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "365" + { + "name" "Promotional Noise Maker - Koto" + "first_sale_date" "2011/03/09" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Shogun" + "item_slot" "action" + "image_inventory" "backpack/workshop_partner/crafting/noisemaker_harp/noisemaker_harp" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Samurai.Koto" + } + "mouse_pressed_sound" "Samurai.Koto" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "377" + { + "name" "Hottie's Hoodie" + "first_sale_date" "2011/04/25" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + } + "item_name" "#TF_HottiesHoodie" + "item_description" "#TF_HottiesHoodie_Desc" + "item_type_name" "#TF_Wearable_Hood" + "image_inventory" "backpack/player/items/pyro/hotties_hoodie" + "model_player" "models/player/items/pyro/hotties_hoodie.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "378" + { + "name" "The Team Captain" + "prefab" "base_hat" + "first_sale_date" "2011/04/25" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TeamCaptain" + "item_description" "#TF_TeamCaptain_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/soldier/soldier_officer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_officer.mdl" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_officer.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + "soldier" "1" + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "379" + { + "name" "Western Wear" + "prefab" "base_hat" + "first_sale_date" "2011/04/13" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_EngineerTopHat" + "item_description" "#TF_EngineerTopHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/engineer_top_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/engineer_top_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "380" + { + "name" "Large Luchadore" + "prefab" "base_misc" + "first_sale_date" "2011/04/13" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_LargeLuchadore" + "item_description" "#TF_LargeLuchadore_Desc" + "item_slot" "misc" + "equip_region" "head_skin" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/wrestling_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/wrestling_mask.mdl" + "drop_type" "none" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Luchadore_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_Luchadore_Style1" + } + "2" + { + "skin_red" "4" + "skin_blu" "5" + "name" "#TF_Luchadore_Style2" + } + } + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "381" + { + "name" "Medic's Mountain Cap" + "prefab" "base_hat" + "first_sale_date" "2011/03/22" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MountainCap" + "item_description" "#TF_MountainCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/medic/fieldcap/fieldcap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/medic/fieldcap/fieldcap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "382" + { + "name" "Big Country" + "first_sale_date" "2011/03/22" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_BigCountry" + "item_description" "#TF_BigCountry_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/player/items/crafting/mullet_hat_icon" + "model_player" "models/player/items/engineer/mullet_hat.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "0" + } + "styles" + { + "0" + { + "name" "#TF_BigCountry_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_BigCountry_Style1" + } + } + } + } + "383" + { + "name" "Grimm Hatte" + "prefab" "base_hat" + "first_sale_date" "2011/03/22" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_GrimmHatte" + "item_description" "#TF_GrimmHatte_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/medic/grimm_hatte/grimm_hatte" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/medic/grimm_hatte/grimm_hatte.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "384" + { + "name" "Professor's Peculiarity" + "first_sale_date" "2011/03/21" + "prefab" "valve hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_ProfessorHair" + "item_description" "#TF_ProfessorHair_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/player/items/crafting/professor_hair_icon" + "model_player" "models/player/items/engineer/professor_hair.mdl" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "0" + } + "styles" + { + "0" + { + "name" "#TF_ProfessorHair_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_ProfessorHair_Style1" + } + } + } + } + "386" + { + "name" "Teddy Roosebelt" + "prefab" "base_misc" + "first_sale_date" "2011/03/21" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_TeddyRoosebelt" + "item_description" "#TF_TeddyRoosebelt_Desc" + "item_slot" "misc" + "equip_region" "engineer_pocket" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/teddy_roosebelt" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/teddy_roosebelt.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "387" + { + "name" "Sight for Sore Eyes" + "prefab" "base_misc" + "first_sale_date" "2011/03/18" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Eyes" + "item_name" "#TF_SoreEyes" + "item_description" "#TF_SoreEyes_Desc" + "item_slot" "misc" + "equip_region" "lenses" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/sore_eyes" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/sore_eyes.mdl" + "drop_type" "none" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "388" + { + "name" "Private Eye" + "prefab" "base_hat" + "first_sale_date" "2011/03/18" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Private_Eye" + "item_description" "#TF_Private_Eye_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/spy_private_eye" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_private_eye.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + "spy" "1" + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "389" + { + "name" "Googly Gazer" + "prefab" "base_misc" + "first_sale_date" "2011/03/17" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Augmentation" + "item_name" "#TF_GooglyGazer" + "item_description" "#TF_GooglyGazer_Desc" + "item_slot" "misc" + "equip_region" "lenses" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/mad_eye" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/mad_eye.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Gazer_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_Gazer_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "390" + { + "name" "Reggaelator" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Reggaelator" + "item_description" "#TF_Reggaelator_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_dreads" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/demo_dreads.mdl" + "drop_type" "none" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_Reggaelator_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_Reggaelator_Style1" + } + "2" + { + "skin" "2" + "name" "#TF_Reggaelator_Style2" + } + "3" + { + "skin" "3" + "name" "#TF_Reggaelator_Style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "391" + { + "name" "Honcho's Headgear" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_HonchosHeadgear" + "item_description" "#TF_HonchosHeadgear_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/honchos_headgear" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/honchos_headgear.mdl" + "drop_type" "none" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "392" + { + "name" "Pocket Medic" + "prefab" "base_misc" + "first_sale_date" "2011/03/17" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_PocketMedic" + "item_description" "#TF_PocketMedic_Desc" + "item_slot" "misc" + "equip_region" "heavy_pocket" + "image_inventory" "backpack/player/items/heavy/pocket_medic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player_per_class" + { + "soldier" "models/player/items/soldier/fwk_soldier_pocketmedic.mdl" + "heavy" "models/player/items/heavy/pocket_medic.mdl" + } + "min_ilevel" "15" + "max_ilevel" "15" + "used_by_classes" + { + "soldier" "1" + "heavy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "393" + { + "name" "Villain's Veil" + "prefab" "base_misc" + "first_sale_date" "2011/03/17" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Bandana" + "item_name" "#TF_VillainsVeil" + "item_description" "#TF_VillainsVeil_Desc" + "item_slot" "misc" + "equip_region" "beard" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/kerch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/kerch.mdl" + "drop_type" "none" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_VillainsVeil_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_VillainsVeil_Style1" + } + "2" + { + "skin" "2" + "name" "#TF_VillainsVeil_Style2" + } + } + } + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "394" + { + "name" "Connoisseur's Cap" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Connoisseurs_Cap" + "item_description" "#TF_Connoisseurs_Cap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/pyro_chef_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/pyro_chef_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "395" + { + "name" "Furious Fukaamigasa" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_FuriousFukaamigasa" + "item_description" "#TF_FuriousFukaamigasa_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/asian_merc" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/asian_merc.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "397" + { + "name" "Charmer's Chapeau" + "prefab" "base_hat" + "first_sale_date" "2011/03/16" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Charmers_Chapeau" + "item_description" "#TF_Charmers_Chapeau_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/spy_charmers_chapeau" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_charmers_chapeau.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "398" + { + "name" "Doctor's Sack" + "prefab" "base_hat" + "first_sale_date" "2011/03/07" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Doctors_Sack" + "item_description" "#TF_Doctors_Sack_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/icepack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/icepack.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "399" + { + "name" "Ol' Geezer" + "prefab" "base_hat" + "first_sale_date" "2011/03/07" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Ol_Geezer" + "item_description" "#TF_Ol_Geezer_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/prospector_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/prospector_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "400" + { + "name" "Desert Marauder" + "prefab" "base_hat" + "first_sale_date" "2011/03/07" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DesertMarauder" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/desert_marauder" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/desert_marauder.mdl" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "401" + { + "name" "The Shahanshah" + "prefab" "weapon_scimitar paintkit_base" + "first_sale_date" "2011/03/07" + "particle_suffix" "shahanshah" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_scimitar/c_scimitar_festivizer.mdl" + } + } + } + } + "402" + { + "name" "The Bazaar Bargain" + "prefab" "weapon_bazaar_sniper paintkit_base" + "first_sale_date" "2011/03/07" + "particle_suffix" "bazaar_bargain" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_bazaar_sniper/c_bazaar_sniper_festivizer.mdl" + } + } + } + } + "403" + { + "name" "Sultan's Ceremonial" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SultansCeremonial" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_sultan_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/demo_sultan_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "404" + { + "name" "The Persian Persuader" + "prefab" "weapon_demo_sultan_sword paintkit_base" + "first_sale_date" "2011/03/17" + "particle_suffix" "persian_persuader" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_demo_sultan_sword/c_demo_sultan_sword_festivizer.mdl" + } + } + } + } + "405" + { + "name" "Ali Baba's Wee Booties" + "first_sale_date" "2011/03/17" + "prefab" "weapon_demoman_boots" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_Ali_Babas_Wee_Booties" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/player/items/demo/demo_booties/demo_booties" + "model_player" "models/workshop/player/items/demo/demo_booties/demo_booties.mdl" + } + "406" + { + "name" "The Splendid Screen" + "first_sale_date" "2011/03/21" + "item_class" "tf_wearable_demoshield" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Shield" + "item_logname" "splendid_screen" + "item_iconname" "splendid_screen" + "item_name" "#TF_SplendidScreen" + "item_description" "#TF_SplendidScreen_Desc" + "item_slot" "secondary" + "equip_region" "arms" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_persian_shield/c_persian_shield" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "35" + "model_player" "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield.mdl" + "act_as_wearable" "1" + "attach_to_hands" "0" + "attach_to_hands_vm_only" "1" + "drop_type" "none" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "charge recharge rate increased" + { + "attribute_class" "charge_recharge_rate" + "value" "1.5" + } + "charge impact damage increased" + { + "attribute_class" "charge_impact_damage" + "value" "1.7" + } + "dmg taken from fire reduced" + { + "attribute_class" "mult_dmgtaken_from_fire" + "value" "0.8" + } + "dmg taken from blast reduced" + { + "attribute_class" "mult_dmgtaken_from_explosions" + "value" "0.8" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield.mdl" + "name" "#TF_SplendidScreen_Style1" + } + "1" + { + "model_player" "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield_spike.mdl" + "name" "#TF_SplendidScreen_Style2" + } + "2" + { + "model_player" "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield_arrow.mdl" + "name" "#TF_SplendidScreen_Style3" + } + "3" + { + "model_player" "models/workshop/weapons/c_models/c_persian_shield/c_persian_shield_all.mdl" + "name" "#TF_SplendidScreen_Style4" + } + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + + + "408" + { + "name" "Humanitarian's Hachimaki" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "armory_desc" "charity" + "item_type_name""#TF_Wearable_Bandana" + "item_name" "#TF_CharityHat_A" + "item_description" "#TF_CharityHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/japan_hachimaki" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/japan_hachimaki.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "409" + { + "name" "Benefactor's Kanmuri" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "armory_desc" "charity" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_CharityHat_B" + "item_description" "#TF_CharityHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/japan_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/japan_hat.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "410" + { + "name" "Mangnanimous Monarch" + "prefab" "base_hat" + "first_sale_date" "2011/03/17" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "armory_desc" "charity" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_CharityHat_C" + "item_description" "#TF_CharityHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/japan_hat_monarch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/japan_hat_monarch.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "411" + { + "name" "The Quick-Fix" + "prefab" "valve" + "first_sale_date" "2011/03/22" + "item_class" "tf_weapon_medigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Medigun_Prototype" + "item_name" "#TF_Unique_MediGun_QuickFix" + "item_description" "#TF_Unique_MediGun_QuickFix_Desc" + "propername" "1" + "item_slot" "secondary" + "equip_region" "medigun_backpack" + "image_inventory" "backpack/weapons/c_models/c_proto_medigun/c_proto_medigun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_proto_medigun/c_proto_medigun.mdl" + "extra_wearable" "models/weapons/c_models/c_proto_backpack/c_proto_backpack.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "8" + "max_ilevel" "8" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "heal rate bonus" + { + "attribute_class" "mult_medigun_healrate" + "value" "1.4" + } + "medigun charge is megaheal" + { + "attribute_class" "set_charge_type" + "value" "2" + } + "ubercharge rate bonus" + { + "attribute_class" "mult_medigun_uberchargerate" + "value" "1.1" + } + "overheal penalty" + { + "attribute_class" "mult_medigun_overheal_amount" + "value" "0.5" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "1" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "2" + } + } + "visuals" + { + "player_bodygroups" + { + "medic_backpack" "1" + } + } + "visuals_red" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_proto_medigun/c_proto_medigun_festivizer.mdl" + } + } + "skin" "0" + "custom_particlesystem" + { + "system" "medicgun_beam_attrib_overheal_red" + } + } + "visuals_blu" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_proto_medigun/c_proto_medigun_festivizer.mdl" + } + } + "skin" "1" + "custom_particlesystem" + { + "system" "medicgun_beam_attrib_overheal_blue" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "412" + { + "name" "The Overdose" + "prefab" "valve" + "first_sale_date" "2011/03/22" + "item_class" "tf_weapon_syringegun_medic" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "proto_syringe" + "item_iconname" "proto_syringe" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SyringeGun_Prototype" + "item_name" "#TF_Overdose" + "item_description" "#TF_Overdose_Desc" + "item_slot" "primary" + "image_inventory" "backpack/weapons/c_models/c_proto_syringegun/c_proto_syringegun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_proto_syringegun/c_proto_syringegun.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -14" + } + "attributes" + { + "move speed bonus resource level" + { + "attribute_class" "mult_player_movespeed_resource_level" + "value" "1.2" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.85" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Overdose.Single" + "sound_burst" "Weapon_Overdose.SingleCrit" + } + "visuals_red" + { + "skin" "0" + "sound_single_shot" "Weapon_Overdose.Single" + "sound_burst" "Weapon_Overdose.SingleCrit" + } + "visuals_blu" + { + "skin" "1" + "sound_single_shot" "Weapon_Overdose.Single" + "sound_burst" "Weapon_Overdose.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "413" + { + "name" "The Solemn Vow" + "prefab" "valve weapon_melee_allclass" + "first_sale_date" "2011/03/22" + "item_class" "tf_weapon_bonesaw" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "anim_slot" "MELEE_ALLCLASS" + "item_logname" "solemn_vow" + "item_iconname" "solemn_vow" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bust" + "item_description" "#TF_SolemnVow_Desc" + "item_name" "#TF_SolemnVow" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_hippocrates_bust/c_hippocrates_bust" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "model_player" "models/weapons/c_models/c_hippocrates_bust/c_hippocrates_bust.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -4 -12" + } + "attributes" + { + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.1" + } + "mod see enemy health" + { + "attribute_class" "see_enemy_health" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_Machete.HitFlesh" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "414" + { + "name" "The Liberty Launcher" + "first_sale_date" "2011/03/23" + "item_class" "tf_weapon_rocketlauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_LibertyLauncher" + "item_slot" "primary" + "item_quality" "unique" + "item_logname" "liberty_launcher" + "item_iconname" "liberty_launcher" + "propername" "1" + "min_ilevel" "25" + "max_ilevel" "25" + "inspect_panel_dist" "68" + "image_inventory" "backpack/workshop/weapons/c_models/c_liberty_launcher/c_liberty_launcher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_liberty_launcher/c_liberty_launcher.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "Projectile speed increased" + { + "attribute_class" "mult_projectile_speed" + "value" "1.4" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "clip size bonus" + { + "attribute_class" "mult_clipsize" + "value" "1.25" + } + "rocket jump damage reduction" + { + "attribute_class" "rocket_jump_dmg_reduction" + "value" "0.75" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Liberty_Launcher.Single" + "sound_burst" "Weapon_Liberty_Launcher.SingleCrit" + } + } + "415" + { + "name" "The Reserve Shooter" + "prefab" "weapon_reserve_shooter paintkit_base" + "first_sale_date" "2011/03/23" + "particle_suffix" "reserve_shooter" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_reserve_shooter/c_reserve_shooter_festivizer.mdl" + } + } + } + } + "416" + { + "name" "The Market Gardener" + "first_sale_date" "2011/03/23" + "item_class" "tf_weapon_shovel" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Shovel" + "item_name" "#TF_MarketGardener" + "item_logname" "market_gardener" + "item_iconname" "market_gardener" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_market_gardener/c_market_gardener" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_market_gardener/c_market_gardener.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -11" + } + "attributes" + { + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + "mod crit while airborne" + { + "attribute_class" "crit_while_airborne" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + "mouse_pressed_sound" "ui/item_shovel_pickup.wav" + "drop_sound" "ui/item_shovel_drop.wav" + } + "417" + { + "name" "Jumper's Jeepcap" + "prefab" "base_hat" + "first_sale_date" "2011/03/23" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_JumpersJeepcap" + "item_description" "#TF_JumpersJeepcap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_jeepcap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/soldier_jeepcap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "420" + { + "name" "Potato Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_PotatoHat" + "item_description" "#TF_PotatoHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/hardhat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hardhat.mdl" + } + "drop_type" "drop" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_PotatoHatStyle_Classified" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_PotatoHatStyle_Logo" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "422" + { + "name" "Resurrection Associate Pin" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Resurrection_Associate_Pin" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/p2_pin" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "13" + "max_ilevel" "13" + "model_player" "models/player/items/all_class/p2_pin.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + } + "423" + { + "name" "Saxxy" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Award" + "item_name" "#TF_Saxxy" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "25" + "max_ilevel" "25" + "propername" "1" + "attach_to_hands" "1" + "item_logname" "saxxy" + "item_iconname" "saxxy" + "image_inventory" "backpack/weapons/c_models/c_saxxy/c_saxxy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "model_player" "models/weapons/c_models/c_saxxy/c_saxxy.mdl" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + "attributes" + { + "turn to gold" + { + "attribute_class" "set_turn_to_gold" + "value" "1" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit_world" "Saxxy.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "424" + { + "name" "Tomislav" + "prefab" "weapon_tomislav paintkit_base" + "first_sale_date" "2011/04/14" + "particle_suffix" "tomislav" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_tomislav/c_tomislav_festivizer.mdl" + } + } + } + } + "425" + { + "name" "The Family Business" + "prefab" "weapon_russian_riot paintkit_base" + "first_sale_date" "2011/04/14" + "particle_suffix" "family_business" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_russian_riot/c_russian_riot_festivizer.mdl" + } + } + } + } + "426" + { + "name" "The Eviction Notice" + "first_sale_date" "2011/04/14" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gloves" + "item_name" "#TF_EvictionNotice" + "item_slot" "melee" + "item_logname" "eviction_notice" + "item_iconname" "eviction_notice" + "image_inventory" "backpack/workshop/weapons/c_models/c_eviction_notice/c_eviction_notice" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/workshop/weapons/c_models/c_eviction_notice/c_eviction_notice.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -8" + "mult_player_movespeed_active" "1.15" + "mod_maxhealth_drain_rate" "5.0" + } + "attributes" + { + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.4" + } + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.6" + } + "speed_boost_on_hit" + { + "attribute_class" "speed_boost_on_hit" + "value" "3" + } + } + "visuals" + { + "sound_melee_miss" "EvictionNotice.Swing" + "sound_melee_hit" "EvictionNotice.Impact" + "sound_melee_hit_world" "EvictionNotice.HitWorld" + "sound_melee_burst" "EvictionNotice.ImpactCrit" + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_FISTS_VM_IDLE" + "ACT_VM_HITLEFT" "ACT_FISTS_VM_HITLEFT" + "ACT_VM_HITRIGHT" "ACT_FISTS_VM_HITRIGHT" + "ACT_VM_SWINGHARD" "ACT_FISTS_VM_SWINGHARD" + "ACT_VM_DRAW" "ACT_FISTS_VM_DRAW" + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT3_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT3_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT3_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "427" + { + "name" "Capone's Capper" + "prefab" "base_hat" + "first_sale_date" "2011/04/14" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_CaponesCapper" + "item_description" "#TF_CaponesCapper_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/capones_capper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/capones_capper.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "429" + { + "name" "Moustachium Bar" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_CraftItem" + "item_name" "#TF_SpaceChem_MoustachiumBar" + "item_description" "#TF_SpaceChem_MoustachiumBar_Desc" + "image_inventory" "backpack/crafting/moustachium" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "430" + { + "name" "SpaceChem Fishcake Fragment" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_SpaceChem_FishcakeFragmentType" + "item_name" "#TF_SpaceChem_FishcakeFragment" + "item_description" "#TF_SpaceChem_FishcakeFragment_Desc" + "image_inventory" "backpack/crafting/fish" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "431" + { + "name" "SpaceChem Pin Fragment" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_SpaceChem_PinFragmentType" + "item_name" "#TF_SpaceChem_PinFragment" + "image_inventory" "backpack/crafting/spacechem_token_01" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "432" + { + "name" "SpaceChem Pin" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_SpaceChem_Pin" + "item_description" "#TF_SpaceChem_Pin_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/spacechem_pin" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player" "models/player/items/all_class/spacechem_pin.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + } + "433" + { + "name" "Fishcake" + "prefab" "weapon_lunchbox" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_SpaceChem_Fishcake_Type" + "item_name" "#TF_SpaceChem_Fishcake" + "item_description" "#TF_SpaceChem_Fishcake_Desc" + "image_inventory" "backpack/workshop/weapons/c_models/c_fishcake/c_fishcake" + "model_player" "models/workshop/weapons/c_models/c_fishcake/c_fishcake.mdl" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "10" + "meter_label" "#TF_Sandwich" + } + "attributes" + { + "lunchbox adds maxhealth bonus" + { + "attribute_class" "set_weapon_mode" + "value" "7" + } + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + } + + "434" + { + "name" "Bucket Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_BucketHat" + "item_description" "#TF_BucketHat_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/bucket" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/bucket.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" + "drop_sound" "ui/item_metal_pot_drop.wav" + } + "435" + { + "name" "Traffic Cone" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TrafficCone" + "item_description" "#TF_TrafficCone_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/traffic_cone" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/traffic_cone.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + + "436" + { + "name" "Polish War Babushka" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PolishWarBabushka" + "item_description" "#TF_PolishWarBabushka_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/mbsf_engineer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/mbsf_engineer.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "437" + { + "name" "Janissary Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_JanissaryHat" + "item_description" "#TF_JanissaryHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/mbsf_spy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/mbsf_spy.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "438" + { + "name" "Replay Taunt" + "prefab" "taunt" + "item_name" "#TF_TauntEnabler_Replay" + "item_description" "#TF_TauntEnabler_Replay_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_replay" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_replay.vcd" + "sniper" "scenes\player\sniper\low\taunt_replay.vcd" + "soldier" "scenes\player\soldier\low\taunt_replay.vcd" + "demoman" "scenes\player\demoman\low\taunt_replay.vcd" + "medic" "scenes\player\medic\low\taunt_replay.vcd" + "heavy" "scenes\player\heavy\low\taunt_replay.vcd" + "spy" "scenes\player\spy\low\taunt_replay.vcd" + "engineer" "scenes\player\engineer\low\taunt_replay.vcd" + "pyro" + { + "1" "scenes\player\pyro\low\taunt_replay.vcd" + "2" "scenes\player\pyro\low\taunt_replay2.vcd" + } + } + } + "visuals" + { + "animation_replacement" + { + "taunt_concept" "TLK_TAUNT_REPLAY" + } + } + } + + "439" + { + "name" "Lord Cockswain's Pith Helmet" + "first_sale_date" "2011/07/13" + "prefab" "base_hat" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headgear" + "item_name" "#TF_LordCockswainPith" + "item_description" "#TF_LordCockswainPith_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "0" + "image_inventory" "backpack/player/items/soldier/drg_pith_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/drg_pith_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "440" + { + "name" "Lord Cockswain's Novelty Mutton Chops and Pipe" + "first_sale_date" "2011/07/13" + "prefab" "base_misc" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_mark" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_LordCockswainChops" + "item_description" "#TF_LordCockswainChops_Desc" + "item_slot" "misc" + "equip_regions" + { + "beard" "1" + "soldier_cigar" "1" + } + "item_quality" "unique" + "propername" "0" + "image_inventory" "backpack/player/items/crafting/drg_hair_beard_icon" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/drg_hair_beard.mdl" + "drop_type" "none" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "0" + } + "styles" + { + "0" + { + "name" "#TF_LordCockswainChops_style0" + } + "1" + { + "name" "#TF_LordCockswainChops_style1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "441" + { + "name" "The Cow Mangler 5000" + "first_sale_date" "2011/07/13" + "item_class" "tf_weapon_particle_cannon" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "cow_mangler" + "item_iconname" "cow_mangler" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_FocusedWaveProjector" + "item_name" "#TF_CowMangler" + "item_slot" "primary" + "anim_slot" "primary2" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "30" + "max_ilevel" "30" + "inspect_panel_dist" "68" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_cowmangler/c_drg_cowmangler" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_drg_cowmangler/c_drg_cowmangler.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "energy weapon no ammo" "1" + "energy weapon charged shot" "1" + "energy weapon no hurt building" "1" + "crits_become_minicrits" "1" + "crit mod disabled" "0" + } + "visuals" + { + "sound_single_shot" "Weapon_CowMangler.Single" + "sound_burst" "Weapon_CowMangler.SingleCharged" + "sound_reload" "Weapon_CowMangler.Reload" + "sound_special1" "Weapon_CowMangler.Charging" + "sound_special2" "Weapon_CowMangler.Idle" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "442" + { + "name" "The Righteous Bison" + "first_sale_date" "2011/07/13" + "item_class" "tf_weapon_raygun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_IndivisibleParticleSmasher" + "item_description" "#TF_RighteousBison_Desc" + "item_name" "#TF_RighteousBison" + "item_slot" "secondary" + "anim_slot" "secondary2" + "item_quality" "unique" + "item_logname" "righteous_bison" + "item_iconname" "righteous_bison" + "propername" "1" + "min_ilevel" "30" + "max_ilevel" "30" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_righteousbison/c_drg_righteousbison" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_drg_righteousbison/c_drg_righteousbison.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "energy weapon no ammo" + { + "attribute_class" "energy_weapon_no_ammo" + "value" "1" + } + "energy weapon penetration" + { + "attribute_class" "energy_weapon_penetration" + "value" "1" + } + "energy weapon no hurt building" + { + "attribute_class" "energy_weapon_no_hurt_building" + "value" "1" + } + "energy weapon no deflect" + { + "attribute_class" "energy_weapon_no_deflect" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Bison.Single" + "sound_burst" "Weapon_Bison.SingleCrit" + "sound_reload" "Weapon_Bison.Reload" + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_SECONDARY_ALT1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_SECONDARY_ALT1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_SECONDARY_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "443" + { + "name" "Dr. Grordbort's Crest" + "first_sale_date" "2011/07/13" + "prefab" "base_misc" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "craft_material_type" "hat" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_DrGrordbortBadge" + "item_description" "#TF_DrGrordbortBadge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/drg_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/drg_badge.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "visuals" + { + "skin" "0" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + "444" + { + "name" "The Mantreads" + "first_sale_date" "2011/05/10" + "item_class" "tf_wearable" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "cannot_damage_tanks" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Boots" + "item_logname" "mantreads" + "item_iconname" "mantreads" + "item_name" "#TF_Mantreads" + "item_slot" "secondary" + "equip_region" "feet" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/player/items/soldier/mantreads/mantreads" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/soldier/mantreads/mantreads.mdl" + "act_as_wearable" "1" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "damage force reduction" + { + "attribute_class" "damage_force_reduction" + "value" "0.25" + } + "airblast vulnerability multiplier" + { + "attribute_class" "airblast_vulnerability_multiplier" + "value" "0.25" + } + "boots falling stomp" + { + "attribute_class" "boots_falling_stomp" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "26" + } + "kill eater kill type" + { + "attribute_class" "kill_eater_kill_type" + "value" "26" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + "mod_air_control_blast_jump" + { + "attribute_class" "mod_air_control_blast_jump" + "value" "3.0" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "445" + { + "name" "Armored Authority" + "first_sale_date" "2011/05/10" + "prefab" "base_hat" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_ArmoredAuthority" + "item_description" "#TF_ArmoredAuthority_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "0" + "image_inventory" "backpack/player/items/soldier/armored_authority" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/armored_authority.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "446" + { + "name" "Fancy Dress Uniform" + "first_sale_date" "2011/05/10" + "prefab" "base_misc" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Uniform" + "item_name" "#TF_FancyDressUniform" + "item_description" "#TF_FancyDressUniform_Desc" + "item_slot" "misc" + "equip_region" "shirt" + "item_quality" "unique" + "propername" "0" + "image_inventory" "backpack/player/items/soldier/fdu" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/soldier/fdu.mdl" + "drop_type" "none" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "447" + { + "name" "The Disciplinary Action" + "prefab" "weapon_disciplinary_action paintkit_base" + "first_sale_date" "2011/05/10" + "particle_suffix" "disciplinary_action" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_riding_crop/c_riding_crop_festivizer.mdl" + } + } + } + } + "448" + { + "name" "The Soda Popper" + "prefab" "weapon_soda_popper paintkit_base" + "first_sale_date" "2011/05/10" + "particle_suffix" "soda_popper" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_soda_popper/c_soda_popper_festivizer.mdl" + } + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + } + } + } + "449" + { + "name" "The Winger" + "prefab" "weapon_winger_pistol paintkit_base" + "first_sale_date" "2011/05/10" + "particle_suffix" "winger" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_winger_pistol/c_winger_pistol_festivizer.mdl" + } + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "selectable" "0" + } + } + } + } + "450" + { + "name" "The Atomizer" + "first_sale_date" "2011/05/10" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_type_name" "#TF_Weapon_Bat" + "item_logname" "atomizer" + "item_iconname" "atomizer" + "item_name" "#TF_Atomizer" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_bonk_bat/c_bonk_bat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "attach_to_hands" "1" + "model_player" "models/workshop/weapons/c_models/c_bonk_bat/c_bonk_bat.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + "attributes" + { + "air dash count" + { + "attribute_class" "air_dash_count" + "value" "1" + } + "single wep deploy time increased" + { + "attribute_class" "mult_single_wep_deploy_time" + "value" "1.5" + } + "dmg penalty vs players" + { + "attribute_class" "mult_dmg_vs_players" + "value" "0.85" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "451" + { + "name" "Bonk Boy" + "first_sale_date" "2011/05/10" + "prefab" "base_misc" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_BonkBoy" + "item_description" "#TF_BonkBoy_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "propername" "0" + "image_inventory" "backpack/workshop/player/items/scout/bonk_mask/bonk_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/scout/bonk_mask/bonk_mask.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_BonkBoy_Style_WithNoHat" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_BonkBoy_Style_WithHat" + "skin_red" "0" + "skin_blu" "1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "452" + { + "name" "Three-Rune Blade" + "item_class" "tf_weapon_bat" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Sword" + "item_name" "#TF_ScoutSword" + "item_description" "#TF_ScoutSword_Desc" + "item_logname" "scout_sword" + "item_iconname" "scout_sword" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_scout_sword/c_scout_sword" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "60" + "model_player" "models/workshop/weapons/c_models/c_scout_sword/c_scout_sword.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Weapon_Sword.HitFlesh" + "sound_melee_hit_world" "Weapon_Sword.HitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "attributes" + { + "bleeding duration" + { + "attribute_class" "bleeding_duration" + "value" "5" + } + "hit self on miss" + { + "attribute_class" "hit_self_on_miss" + "value" "1" + } + } + } + "453" + { + "name" "Hero's Tail" + "prefab" "base_hat" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_ScoutHair" + "item_description" "#TF_ScoutHair_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/crafting/scout_hair_icon" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/scout_hair.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_HerosTail_Style0" + } + "1" + { + "skin" "2" + "name" "#TF_HerosTail_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "454" + { + "name" "Sign of the Wolf's School" + "prefab" "base_misc" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Medallion" + "item_name" "#TF_ScoutMedallion" + "item_description" "#TF_ScoutMedallion_Desc" + "item_slot" "misc" + "equip_region" "necklace" + "image_inventory" "backpack/player/items/scout/scout_medallion" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/scout/scout_medallion.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + + + "457" + { + "name" "The Postal Pummeler" + "prefab" "weapon_axtinguisher" + "first_sale_date" "2011/06/30" + "item_logname" "mailbox" + "item_iconname" "mailbox" + "show_in_armory" "1" + "item_name" "#TF_Mailbox" + "item_type_name" "#TF_Weapon_Mailbox" + "image_inventory" "backpack/workshop/weapons/c_models/c_mailbox/c_mailbox" + "model_player" "models/workshop/weapons/c_models/c_mailbox/c_mailbox.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "inspect_panel_dist" "70" + "static_attrs" + { + "min_viewmodel_offset" "15 2 -12" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + + + "459" + { + "name" "Cosa Nostra Cap" + "prefab" "base_hat" + "first_sale_date" "2011/05/15" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_CosaNostraCap" + "item_description" "#TF_CosaNostraCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/spy_gang_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_gang_cap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "460" + { + "name" "The Enforcer" + "first_sale_date" "2011/05/15" + "item_class" "tf_weapon_revolver" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_Enforcer" + "item_slot" "secondary" + "item_quality" "unique" + "propername" "1" + "item_logname" "enforcer" + "item_iconname" "enforcer" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop/weapons/c_models/c_snub_nose/c_snub_nose" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "32" + "model_player" "models/workshop/weapons/c_models/c_snub_nose/c_snub_nose.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + "attributes" + { + "dmg pierces resists absorbs" + { + "attribute_class" "mod_pierce_resists_absorbs" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.2" + } + "damage bonus while disguised" + { + "attribute_class" "mult_dmg_disguised" + "value" "1.2" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Enforcer.Single" + "sound_burst" "Weapon_Enforcer.SingleCrit" + } + } + "461" + { + "name" "The Big Earner" + "first_sale_date" "2011/05/15" + "prefab" "weapon_spy_knife_item2" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_name" "#TF_BigEarner" + "propername" "1" + "item_logname" "big_earner" + "item_iconname" "big_earner" + "inspect_panel_dist" "40" + "image_inventory" "backpack/workshop/weapons/c_models/c_switchblade/c_switchblade" + "model_player" "models/workshop/weapons/c_models/c_switchblade/c_switchblade.mdl" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "add cloak on kill" + { + "attribute_class" "add_cloak_on_kill" + "value" "30" + } + "max health additive penalty" + { + "attribute_class" "add_maxhealth" + "value" "-25" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "speed_boost_on_kill" + { + "attribute_class" "speed_boost_on_kill" + "value" "3" + } + } + } + "462" + { + "name" "The Made Man" + "prefab" "base_misc" + "first_sale_date" "2011/05/15" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Rose" + "item_name" "#TF_MadeMan" + "item_description" "#TF_MadeMan_Desc" + "item_slot" "misc" + "equip_region" "medal" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/spy/spy_rose" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/spy/spy_rose.mdl" + "drop_type" "none" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "463" + { + "name" "Laugh Taunt" + "prefab" "valve taunt" + "first_sale_date" "2011/05/24" + "item_name" "#TF_TauntEnabler_Laugh" + "item_description" "#TF_TauntEnabler_Laugh_Desc" + "image_inventory" "backpack/player/items/all_class/all_laugh_taunt" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_laugh.vcd" + "sniper" "scenes\player\sniper\low\taunt_laugh.vcd" + "soldier" "scenes\player\soldier\low\taunt_laugh.vcd" + "demoman" "scenes\player\demoman\low\taunt_laugh.vcd" + "medic" "scenes\player\medic\low\taunt_laugh.vcd" + "heavy" "scenes\player\heavy\low\taunt_laugh.vcd" + "spy" "scenes\player\spy\low\taunt_laugh.vcd" + "engineer" "scenes\player\engineer\low\taunt_laugh.vcd" + "pyro" "scenes\player\pyro\low\taunt_laugh.vcd" + } + } + "visuals" + { + "animation_replacement" + { + "taunt_concept" "TLK_TAUNT_LAUGH" + } + } + } + + + "465" + { + "name" "Conjurer's Cowl" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hood" + "item_name" "#TF_ConjurersCowl" + "item_description" "#TF_ConjurersCowl_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/demo_hood" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/demo_hood.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "466" + { + "name" "The Maul" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "item_logname" "the_maul" + "item_iconname" "the_maul" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SledgeHammer" + "item_name" "#TF_RFAHammer" + "item_description" "#TF_RFAHammer_Desc" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_rfa_hammer/c_rfa_hammer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_rfa_hammer/c_rfa_hammer.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "15 2 -12" + } + "attributes" + { + "dmg bonus vs buildings" + { + "attribute_class" "mult_dmg_vs_buildings" + "value" "2.0" + } + "dmg penalty vs players" + { + "attribute_class" "mult_dmg_vs_players" + "value" "0.75" + } + "damage applies to sappers" + { + "attribute_class" "set_dmg_apply_to_sapper" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_Machete.HitFlesh" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "467" + { + "name" "Medic MtG Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_MedicMtGHat" + "item_description" "#TF_MedicMtGHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/medic/medic_mtg" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/medic/medic_mtg.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "468" + { + "name" "Scout MtG Hat" + "prefab" "base_misc" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_ScoutMtGHat" + "item_description" "#TF_ScoutMtGHat_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/scout_mtg" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/scout_mtg.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + + + "470" + { + "name" "Lo-Fi Longwave" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_TowerHardhat" + "item_description" "#TF_TowerHardhat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/hardhat_tower" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/hardhat_tower.mdl" + } + "drop_type" "drop" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "471" + { + "name" "Loyalty Reward" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_LoyaltyReward" + "item_description" "#TF_LoyaltyReward_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/veteran_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/veteran_hat.mdl" + } + "drop_type" "drop" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "472" + { + "name" "Free Trial Premium Upgrade" + "item_class" "upgrade" + "item_type_name" "#TF_MapToken" + "item_name" "#TF_Trial_UpgradeItem" + "show_in_armory" "0" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/crafting/null" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + } + + "473" + { + "name" "Spiral Sallet" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_SpiralSallet" + "item_description" "#TF_SpiralSallet_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/soldier_spiral" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_spiral.mdl" + } + "drop_type" "drop" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "474" + { + "name" "The Conscientious Objector" + "first_sale_date" "2011/09/07" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_customize_texture" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Sign" + "item_name" "#TF_ConscientiousObjector" + "item_description" "#TF_ConscientiousObjector_Desc" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "25" + "max_ilevel" "25" + "propername" "1" + "attach_to_hands" "1" + "item_logname" "nonnonviolent_protest" + "item_iconname" "nonnonviolent_protest" + "image_inventory" "backpack/workshop/weapons/c_models/c_picket/c_picket" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "80" + "model_player" "models/workshop/weapons/c_models/c_picket/c_picket.mdl" + "anim_slot" "MELEE_ALLCLASS" + "armory_desc" "can_customize_texture" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -5" + "inspect_viewmodel_offset" "0 0 -18" + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + "custom_texture_blend_steps" + { + "1" + { + "op" "normal" + "image" "scripts/items/custom_texture_blend_layers/paper_overlay.png" + } + } + } + + + + "477" + { + "name" "Meet the Medic Heroic Taunt" + "prefab" "valve taunt" + "first_sale_date" "2011/06/22" + "item_name" "#TF_TauntEnabler_MedicHeroicPose" + "item_description" "#TF_TauntEnabler_MedicHeroicPose_Desc" + "image_inventory" "backpack/player/items/medic/medic_heroic_taunt" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "taunt attack name" + { + "attribute_class" "taunt_attack_name" + "value" "TAUNTATK_MEDIC_HEROIC_TAUNT" + } + "taunt attack time" + { + "attribute_class" "taunt_attack_time" + "value" "0" + } + "taunt force weapon slot" + { + "attribute_class" "taunt_force_weapon_slot" + "value" "SECONDARY" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes\player\medic\low\taunt09.vcd" + } + } + "visuals" + { + "animation_replacement" + { + "taunt_concept" "TLK_TAUNT_HEROIC_POSE" + } + } + } + + "478" + { + "name" "Copper's Hard Top" + "first_sale_date" "2011/07/05" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_CopHelmet" + "item_description" "#TF_CopHelmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/cop_helmet" + "model_player" "models/player/items/heavy/cop_helmet.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_CopHelmet_Style0" + "skin_red" "0" + "skin_blu" "1" + + } + "1" + { + "name" "#TF_CopHelmet_Style1" + "skin_red" "2" + "skin_blu" "2" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "479" + { + "name" "Security Shades" + "first_sale_date" "2011/07/05" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_CopGlasses" + "item_description" "#TF_CopGlasses_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/cop_glasses" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/cop_glasses.mdl" + "drop_type" "drop" + "propername" "0" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "480" + { + "name" "Tam O'Shanter" + "first_sale_date" "2011/07/05" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TamOShanter" + "item_description" "#TF_TamOShanter_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/tamoshanter" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/tamoshanter.mdl" + "drop_type" "drop" + "propername" "0" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "481" + { + "name" "Stately Steel Toe" + "first_sale_date" "2011/07/05" + "prefab" "base_hat" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_StatelySteelToe" + "item_description" "#TF_StatelySteelToe_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/boot_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/pyro/boot_hat.mdl" + "drop_type" "drop" + "propername" "0" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "482" + { + "name" "Nessie's Nine Iron" + "first_sale_date" "2011/07/05" + "prefab" "weapon_eyelander" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_logname" "nessieclub" + "item_iconname" "nessieclub" + "item_type_name" "#TF_Weapon_GolfClub" + "item_name" "#TF_NineIron" + "item_description" "#TF_NineIron_Desc" + "propername" "0" + "image_inventory" "backpack/workshop/weapons/c_models/c_golfclub/c_golfclub" + "model_player" "models/workshop/weapons/c_models/c_golfclub/c_golfclub.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + } + "visuals" + { + "sound_melee_miss" "Weapon_Sword.Swing" + "sound_melee_hit" "Weapon_Sword.HitFlesh" + "sound_melee_hit_world" "Weapon_Sword.HitWorld" + "sound_burst" "Weapon_Sword.SwingCrit" + "sound_special1" "Sword.Hit" + "sound_special2" "Sword.Idle" + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + "xifier_class_remap" "Nessie's Nine Iron" + } + "483" + { + "name" "Rogue's Col Roule" + "first_sale_date" "2011/07/05" + "prefab" "base_misc" + "craft_material_type" "hat" + "craft_class" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_RoguesColRoule" + "item_description" "#TF_RoguesColRoule_Desc" + "item_slot" "misc" + "equip_regions" + { + "shirt" "1" + "sleeves" "1" + } + "image_inventory" "backpack/player/items/crafting/tneck_backpack_icon" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/spy/tneck.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "drop_type" "none" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "484" + { + "name" "Prairie Heel Biters" + "first_sale_date" "2011/07/05" + "prefab" "base_misc" + "craft_material_type" "hat" + "craft_class" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Spurs" + "item_name" "#TF_HeelBiters" + "item_description" "#TF_HeelBiters_Desc" + "item_slot" "misc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/crafting/spurs_backpack_icon" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/engineer/spurs.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "485" + { + "name" "Big Steel Jaw of Summer Fun" + "first_sale_date" "2011/07/05" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headgear" + "item_name" "#TF_SteelJaw" + "item_description" "#TF_SteelJaw_Desc" + "item_slot" "misc" + "equip_region" "beard" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/big_jaw" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/big_jaw.mdl" + "drop_type" "none" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "486" + { + "name" "Summer Shades" + "prefab" "base_misc" + "craft_material_type" "hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_Summer_Shades" + "item_description" "#TF_Summer_Shades_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/summer_shades" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/summer_shades.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "489" + { + "name" "Power Up Canteen (MvM)" + "first_sale_date" "2012/12/25" + "prefab" "powerup_bottle" + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + } + } + + "490" + { + "name" "Scout Flip-Flops" + "prefab" "valve base_misc" + "first_sale_date" "2011/06/30" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_FlipFlops" + "item_name" "#TF_Scout_FlipFlops" + "item_description" "#TF_Scout_FlipFlops_Desc" + "item_slot" "misc" + "equip_region" "feet" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/flipflops" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/flipflops.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "491" + { + "name" "Lucky No. 42" + "prefab" "valve base_misc" + "first_sale_date" "2011/06/30" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Towels" + "item_name" "#TF_Scout_Towels" + "item_description" "#TF_Scout_Towels_Desc" + "item_slot" "misc" + "equip_region" "scout_backpack" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/summer_pack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/scout/summer_pack.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "492" + { + "name" "Summer Hat" + "prefab" "valve base_hat" + "first_sale_date" "2011/06/30" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SummerHat" + "item_description" "#TF_SummerHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/summer_hat_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/%s/summer_hat_%s.mdl" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_SummerHat_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_SummerHat_Style1" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "493" + { + "name" "Promotional Noise Maker - Fireworks" + "prefab" "valve" + "first_sale_date" "2011/06/30" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Fireworks" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_fireworks" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Summer.Fireworks" + } + "mouse_pressed_sound" "Summer.Fireworks" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + + + + "513" + { + "name" "The Original" + "first_sale_date" "2011/08/09" + "item_class" "tf_weapon_rocketlauncher" + "craft_material_type" "weapon" + "craft_class" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "quake_rl" + "item_iconname" "quake_rl" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_TheOriginal" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "inspect_panel_dist" "68" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/weapons/c_models/c_bet_rocketlauncher/c_bet_rocketlauncher.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -5" + } + "attributes" + { + "centerfire projectile" + { + "attribute_class" "centerfire_projectile" + "value" "1" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_VM_DRAW_QRL" + "ACT_VM_IDLE" "ACT_VM_IDLE_QRL" + "ACT_VM_PULLBACK" "ACT_VM_PULLBACK_QRL" + "ACT_VM_PRIMARYATTACK" "ACT_VM_PRIMARYATTACK_QRL" + "ACT_VM_RELOAD" "ACT_VM_RELOAD_QRL" + "ACT_RELOAD_START" "ACT_VM_RELOAD_START_QRL" + "ACT_RELOAD_FINISH" "ACT_VM_RELOAD_FINISH_QRL" + "ACT_MP_RELOAD_STAND_PRIMARY" "ACT_MP_RELOAD_STAND_PRIMARY3" + "ACT_MP_RELOAD_CROUCH_PRIMARY" "ACT_MP_RELOAD_CROUCH_PRIMARY3" + "ACT_MP_RELOAD_AIRWALK_PRIMARY" "ACT_MP_RELOAD_AIRWALK_PRIMARY3" + "ACT_MP_RELOAD_STAND_PRIMARY_LOOP" "ACT_MP_RELOAD_STAND_PRIMARY3_LOOP" + "ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP" "ACT_MP_RELOAD_CROUCH_PRIMARY3_LOOP" + "ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP" "ACT_MP_RELOAD_AIRWALK_PRIMARY3_LOOP" + "ACT_MP_RELOAD_STAND_PRIMARY_END" "ACT_MP_RELOAD_STAND_PRIMARY3_END" + "ACT_MP_RELOAD_CROUCH_PRIMARY_END" "ACT_MP_RELOAD_CROUCH_PRIMARY3_END" + "ACT_MP_RELOAD_AIRWALK_PRIMARY_END" "ACT_MP_RELOAD_AIRWALK_PRIMARY3_END" + "ACT_MP_RELOAD_SWIM_PRIMARY" "ACT_MP_RELOAD_SWIM_PRIMARY3" + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + "sound_single_shot" "Weapon_QuakeRPG.Single" + "sound_burst" "Weapon_QuakeRPG.SingleCrit" + "sound_deploy" "Weapon_QuakeRPG.Draw" + "sound_reload" "Weapon_QuakeRPG.Reload" + "sound_special1" "Weapon_QuakeRPG.Explode" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + + "514" + { + "name" "Mask of the Shaman" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "show_in_armory" "1" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_MaskOfTheShaman" + "item_description" "#TF_MaskOfTheShaman_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "item_quality" "unique" + "image_inventory" "backpack/player/items/demo/dust_mask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "model_player" "models/player/items/demo/dust_mask.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "515" + { + "name" "Pilotka" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "show_in_armory" "1" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Pilotka" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/ro_pilotka" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "model_player" "models/player/items/heavy/ro_pilotka.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "516" + { + "name" "Stahlhelm" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_RO_SoldierHelmet" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/soldier/ro_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "model_player" "models/player/items/soldier/ro_helmet.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "517" + { + "name" "Dragonborn Helmet" + "prefab" "base_hat" + "first_sale_date" "2011/08/09" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_DragonbornHelmet" + "item_description" "#TF_DragonbornHelmet_Desc" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/heavy/skyrim_helmet/skyrim_helmet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "model_player" "models/workshop_partner/player/items/heavy/skyrim_helmet/skyrim_helmet.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "518" + { + "name" "The Anger" + "prefab" "base_hat" + "first_sale_date" "2011/08/09" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Hood" + "item_name" "#TF_BrinkHood" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/sniper/c_bet_brinkhood/c_bet_brinkhood" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "model_player" "models/workshop_partner/player/items/sniper/c_bet_brinkhood/c_bet_brinkhood.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "519" + { + "name" "Pip-Boy" + "prefab" "base_misc" + "first_sale_date" "2011/08/09" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Armband" + "item_name" "#TF_Pipboy" + "item_description" "#TF_Pipboy_Desc" + "item_slot" "misc" + "equip_region" "engineer_left_arm" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/engineer/bet_pb/bet_pb" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "model_player" "models/workshop_partner/player/items/engineer/bet_pb/bet_pb.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "has pipboy build interface" + { + "attribute_class" "set_custom_buildmenu" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "3" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "0" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "520" + { + "name" "Wingstick" + "prefab" "base_misc" + "first_sale_date" "2011/08/09" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Wingstick" + "item_name" "#TF_Wingstick" + "item_slot" "misc" + "equip_region" "engineer_belt" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/engineer/bet_wingstick/bet_wingstick" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "model_player" "models/workshop_partner/player/items/engineer/bet_wingstick/bet_wingstick.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "521" + { + "name" "Belltower Spec Ops" + "prefab" "base_hat" + "first_sale_date" "2011/08/12" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DEX_Helmet" + "item_description" "#TF_DEX_Helmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/spy/dex_belltower/dex_belltower" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/spy/dex_belltower/dex_belltower.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "522" + { + "name" "The Deus Specs" + "prefab" "base_misc" + "first_sale_date" "2011/08/17" + "craft_material_type" "hat" + "craft_class" "hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_DEX_Glasses" + "item_description" "#TF_DEX_Glasses_Desc" + "item_slot" "misc" + "equip_region" "lenses" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/dex_glasses/dex_glasses" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/dex_glasses/dex_glasses_%s.mdl" + } + "drop_type" "none" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "523" + { + "name" "The Sarif Cap" + "prefab" "base_hat" + "first_sale_date" "2011/08/17" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DEX_Hat" + "item_description" "#TF_DEX_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/all_class/dex_hat/dex_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/dex_hat_%s/dex_hat_%s.mdl" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "524" + { + "name" "The Purity Fist" + "prefab" "base_misc" + "first_sale_date" "2011/08/17" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "item_type_name" "#TF_Wearable_Augmentation" + "item_name" "#TF_DEX_Arm" + "item_description" "#TF_DEX_Arm_Desc" + "item_slot" "misc" + "equip_region" "arms" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/heavy/dex_sarifarm/dex_sarifarm" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "model_player" "models/workshop_partner/player/items/heavy/dex_sarifarm/dex_sarifarm.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "wm_bodygroup_override" "1" + "wm_bodygroup_state_override" "2" + "vm_bodygroup_override" "1" + "vm_bodygroup_state_override" "2" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "525" + { + "name" "The Diamondback" + "first_sale_date" "2011/08/11" + "item_class" "tf_weapon_revolver" + "craft_material_type" "weapon" + "craft_class" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Revolver" + "item_name" "#TF_DEX_Revolver" + "item_description" "#TF_DEX_Revolver_Desc" + "item_slot" "secondary" + "item_quality" "unique" + "propername" "1" + "item_logname" "diamondback" + "item_iconname" "diamondback" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_dex_revolver/c_dex_revolver" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "32" + "model_player" "models/workshop_partner/weapons/c_models/c_dex_revolver/c_dex_revolver.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "sapper kills collect crits" + { + "attribute_class" "sapper_kills_collect_crits" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.85" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Diamond_Back.Single" + "sound_burst" "Weapon_Diamond_Back.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "526" + { + "name" "The Machina" + "first_sale_date" "2011/08/11" + "prefab" "weapon_machina" + "item_name" "#TF_DEX_Rifle" + "item_description" "#TF_DEX_Rifle_Desc" + "visuals" + { + "sound_single_shot" "Weapon_SniperRailgun_Large.Single" + "sound_burst" "Weapon_SniperRailgun_Large.SingleCrit" + "sound_reload" "Weapon_SniperRailgun.WorldReload" + "sound_empty" "Weapon_SniperRailgun.ClipEmpty" + "sound_special2" "Weapon_SniperRailgun.NonScoped" + "sound_special3" "Weapon_SniperRailgun.Single" + "muzzle_flash" "dxhr_sniper_muzzleflash" + } + } + "527" + { + "name" "The Widowmaker" + "first_sale_date" "2011/08/11" + "item_class" "tf_weapon_shotgun_primary" + "craft_material_type" "weapon" + "craft_class" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_type_name" "#TF_Weapon_Shotgun" + "item_logname" "widowmaker" + "item_iconname" "widowmaker" + "item_name" "#TF_DEX_Shotgun" + "item_description" "#TF_DEX_Shotgun_Desc" + "item_slot" "primary" + "show_in_armory" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "inspect_panel_dist" "40" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_dex_shotgun/c_dex_shotgun" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "38" + "model_player" "models/workshop_partner/weapons/c_models/c_dex_shotgun/c_dex_shotgun.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "damage bonus bullet vs sentry target" + { + "attribute_class" "mult_dmg_bullet_vs_sentry_target" + "value" "1.1" + } + "mod ammo per shot" + { + "attribute_class" "mod_ammo_per_shot" + "value" "30" + } + "mod use metal ammo type" + { + "attribute_class" "mod_use_metal_ammo_type" + "value" "1" + } + "mod no reload DISPLAY ONLY" + { + "attribute_class" "mod_no_reload_display_only" + "value" "1" + } + "mod max primary clip override" + { + "attribute_class" "mod_max_primary_clip_override" + "value" "-1" + } + "add onhit addammo" + { + "attribute_class" "add_onhit_addammo" + "value" "100" + } + } + "visuals" + { + "sound_single_shot" "Weapon_WidowMaker.Single" + "sound_burst" "Weapon_WidowMaker.SingleCrit" + "sound_empty" "Weapon_WidowMaker.Empty" + "animation_replacement" + { + "ACT_VM_PRIMARYATTACK" "ACT_VM_PRIMARYATTACK_SPECIAL" + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "528" + { + "name" "The Short Circuit" + "first_sale_date" "2011/08/17" + "item_class" "tf_weapon_mechanical_arm" + "craft_material_type" "weapon" + "craft_class" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "item_type_name" "#TF_Weapon_Robot_Arm" + "item_logname" "short_circuit" + "item_iconname" "short_circuit" + "item_name" "#TF_DEX_Pistol" + "item_description" "#TF_DEX_Pistol_Desc" + "item_slot" "secondary" + "anim_slot" "secondary" + "show_in_armory" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_dex_arm/c_dex_arm" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "model_player" "models/workshop_partner/weapons/c_models/c_dex_arm/c_dex_arm.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -8" + } + "attributes" + { + "mod ammo per shot" + { + "attribute_class" "mod_ammo_per_shot" + "value" "5" + } + "electrical airblast DISPLAY ONLY" + { + "attribute_class" "electrical_airblast_DISPLAY_ONLY" + "value" "1" + } + "mod use metal ammo type" + { + "attribute_class" "mod_use_metal_ammo_type" + "value" "1" + } + "mod no reload DISPLAY ONLY" + { + "attribute_class" "mod_no_reload_display_only" + "value" "1" + } + "mod max primary clip override" + { + "attribute_class" "mod_max_primary_clip_override" + "value" "-1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "disable weapon hiding for animations" + { + "attribute_class" "disable_weapon_hiding_for_animations" + "value" "1" + } + } + "hide_bodygroups_deployed_only" "1" + "visuals" + { + "sound_single_shot" "Weapon_BarretsArm.Zap" + "sound_empty" "Weapon_BarretsArm.Fizzle" + "sound_deploy" "Weapon_BarretsArm.Draw" + "sound_special3" "Weapon_BarretsArm.Shot" + "wm_bodygroup_override" "2" + "wm_bodygroup_state_override" "2" + "animation_replacement" + { + "ACT_SECONDARY_VM_INSPECT_START" "ACT_SECONDARY_ALT2_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_SECONDARY_ALT2_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_SECONDARY_ALT2_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + + + + "533" + { + "name" "Clockwerk's Helm" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "min_ilevel" "20" + "max_ilevel" "20" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Clockwerk_Hat" + "item_description" "#TF_DotaGamescom2011_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/clockwerk_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/clockwerk_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "534" + { + "name" "Sniper's Snipin' Glass" + "prefab" "base_misc" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "min_ilevel" "20" + "max_ilevel" "20" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_DotaSniper_Hat" + "item_description" "#TF_DotaGamescom2011_Hat_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "image_inventory" "backpack/player/items/sniper/dotasniper_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/sniper/dotasniper_hat.mdl" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "535" + { + "name" "Storm Spirit's Jolly Hat" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "min_ilevel" "20" + "max_ilevel" "20" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Stormspirit_Hat" + "item_description" "#TF_DotaGamescom2011_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/stormspirit_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/stormspirit_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "536" + { + "name" "Noise Maker - TF Birthday" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_TFBirthday" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_birthday" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "holiday_restriction" "birthday" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + "unlimited quantity" + { + "attribute_class" "unlimited_quantity" + "value" "1" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "Game.HappyBirthdayNoiseMaker" + "particle_effect" "bday_confetti" + } + "mouse_pressed_sound" "Game.HappyBirthdayNoiseMaker" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "537" + { + "name" "TF Birthday Hat 2011" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Birthday2011_Hat" + "item_description" "#TF_Birthday2011_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/bdayhat_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/all_class/bdayhat_%s.mdl" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "538" + { + "name" "Killer Exclusive" + "prefab" "base_hat" + "first_sale_date" "2012/01/10" + "hidden" "0" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_KillerExclusive" + "item_description" "#TF_KillerExclusive_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/pcg_hat_engineer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/pcg_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "539" + { + "name" "The El Jefe" + "prefab" "base_hat" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Tropico4_Hat" + "item_description" "#TF_Tropico4_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/scout/rebel_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "model_player" "models/player/items/scout/rebel_cap.mdl" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + + "540" + { + "name" "Ball-Kicking Boots" + "prefab" "base_misc" + "first_sale_date" "2011/10/25" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_Football_Boots" + "item_description" "#TF_Football_Boots_Desc" + "item_slot" "misc" + "equip_region" "feet" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/scout/fm2012_cleats/fm2012_cleats" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "model_player" "models/workshop_partner/player/items/scout/fm2012_cleats/fm2012_cleats.mdl" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "attributes" + { + "override footstep sound set" + { + "attribute_class" "override_footstep_sound_set" + "value" "1" + } + "spawn with physics toy" + { + "attribute_class" "spawn_with_physics_toy" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "541" + { + "name" "Merc's Pride Scarf" + "prefab" "base_misc" + "first_sale_date" "2011/10/25" + "craft_material_type" "hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Scarf" + "item_name" "#TF_Football_Scarf" + "item_description" "#TF_Football_Scarf_Desc" + "item_slot" "misc" + "equip_region" "necklace" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/demo/scarf_soccer/scarf_soccer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/scarf_soccer/scarf_soccer.mdl" + } + "drop_type" "none" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "542" + { + "name" "Noise Maker - Vuvuzela" + "first_sale_date" "2011/10/25" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Vuvuzela" + "item_slot" "action" + "image_inventory" "backpack/workshop_partner/crafting/noisemaker_soccer/noisemaker_soccer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "soccer.vuvezela" + "particle_effect" "bday_confetti" + } + "mouse_pressed_sound" "soccer.vuvezela" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "543" + { + "name" "Hair of the Dog" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_DemoHat" + "item_description" "#TF_Hwn_DemoHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/player/items/demo/hwn_demo_hat" + "model_player" "models/player/items/demo/hwn_demo_hat.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "544" + { + "name" "Scottish Snarl" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_DemoMisc1" + "item_description" "#TF_Hwn_DemoMisc1_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "face" + "image_inventory" "backpack/player/items/demo/hwn_demo_misc1" + "model_player" "models/player/items/demo/hwn_demo_misc1.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "545" + { + "name" "Pickled Paws" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_DemoMisc2" + "item_description" "#TF_Hwn_DemoMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/demo/hwn_demo_misc2" + "model_player" "models/player/items/demo/hwn_demo_misc2.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + } + "546" + { + "name" "Wrap Battler" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_ScoutHat" + "item_description" "#TF_Hwn_ScoutHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/player/items/scout/hwn_scout_hat" + "model_player" "models/player/items/scout/hwn_scout_hat.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "547" + { + "name" "B-ankh!" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_ScoutMisc1" + "item_description" "#TF_Hwn_ScoutMisc1_Desc" + "equip_regions" + { + "sleeves" "1" + "necklace" "1" + } + "item_slot" "misc" + "propername" "0" + "image_inventory" "backpack/player/items/scout/hwn_scout_misc1" + "model_player" "models/player/items/scout/hwn_scout_misc1.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + } + "548" + { + "name" "Futankhamun" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_ScoutMisc2" + "item_description" "#TF_Hwn_ScoutMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/scout/hwn_scout_misc2" + "model_player" "models/player/items/scout/hwn_scout_misc2.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + } + "549" + { + "name" "Blazing Bull" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_PyroHat" + "item_description" "#TF_Hwn_PyroHat_Desc" + "item_slot" "head" + "equip_region" "lenses" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/hwn_pyro_hat" + "model_player" "models/player/items/pyro/hwn_pyro_hat.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "550" + { + "name" "Fallen Angel" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_PyroMisc1" + "item_description" "#TF_Hwn_PyroMisc1_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "pyro_wings" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/hwn_pyro_misc1" + "model_player" "models/player/items/pyro/hwn_pyro_misc1.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "551" + { + "name" "Tail From the Crypt" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_PyroMisc2" + "item_description" "#TF_Hwn_PyroMisc2_Desc" + "propername" "0" + "item_slot" "misc" + "equip_region" "pyro_tail" + "item_quality" "unique" + "image_inventory" "backpack/player/items/pyro/hwn_pyro_misc2" + "model_player" "models/player/items/pyro/hwn_pyro_misc2.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "552" + { + "name" "Einstein" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_MedicHat" + "item_description" "#TF_Hwn_MedicHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/player/items/medic/hwn_medic_hat" + "model_player" "models/player/items/medic/hwn_medic_hat.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "553" + { + "name" "Dr. Gogglestache" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_MedicMisc1" + "item_description" "#TF_Hwn_MedicMisc1_Desc" + "propername" "0" + "item_slot" "misc" + "equip_region" "face" + "image_inventory" "backpack/player/items/medic/hwn_medic_misc1" + "model_player" "models/player/items/medic/hwn_medic_misc1.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "554" + { + "name" "Emerald Jarate" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_MedicMisc2" + "item_description" "#TF_Hwn_MedicMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "medigun_accessories" + "image_inventory" "backpack/player/items/medic/hwn_medic_misc2" + "model_player" "models/player/items/medic/hwn_medic_misc2.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "555" + { + "name" "Idiot Box" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_SoldierHat" + "item_description" "#TF_Hwn_SoldierHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/soldier/hwn_soldier_hat" + "model_player" "models/player/items/soldier/hwn_soldier_hat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + } + "556" + { + "name" "Steel Pipes" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_SoldierMisc1" + "item_description" "#TF_Hwn_SoldierMisc1_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "sleeves" + "image_inventory" "backpack/player/items/soldier/hwn_soldier_misc1" + "model_player" "models/player/items/soldier/hwn_soldier_misc1.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "557" + { + "name" "Shoestring Budget" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_SoldierMisc2" + "item_description" "#TF_Hwn_SoldierMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/soldier/hwn_soldier_misc2" + "model_player" "models/player/items/soldier/hwn_soldier_misc2.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "558" + { + "name" "Under Cover" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_SpyHat" + "item_description" "#TF_Hwn_SpyHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/player/items/spy/hwn_spy_hat" + "model_player" "models/player/items/spy/hwn_spy_hat.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "559" + { + "name" "Griffin's Gog" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_SpyMisc1" + "item_description" "#TF_Hwn_SpyMisc1_Desc" + "propername" "0" + "item_slot" "misc" + "equip_region" "glasses" + "image_inventory" "backpack/player/items/spy/hwn_spy_misc1" + "model_player" "models/player/items/spy/hwn_spy_misc1.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "560" + { + "name" "Intangible Ascot" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_SpyMisc2" + "item_description" "#TF_Hwn_SpyMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "shirt" + "item_quality" "unique" + "image_inventory" "backpack/player/items/spy/hwn_spy_misc2" + "model_player" "models/player/items/spy/hwn_spy_misc2.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "561" + { + "name" "Can Opener" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_HeavyHat" + "item_description" "#TF_Hwn_HeavyHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/player/items/heavy/hwn_heavy_hat" + "model_player" "models/player/items/heavy/hwn_heavy_hat.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "562" + { + "name" "Soviet Stitch-Up" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_HeavyMisc1" + "item_description" "#TF_Hwn_HeavyMisc1_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "sleeves" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/hwn_heavy_misc1" + "model_player" "models/player/items/heavy/hwn_heavy_misc1.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "563" + { + "name" "Steel-Toed Stompers" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_HeavyMisc2" + "item_description" "#TF_Hwn_HeavyMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/heavy/hwn_heavy_misc2" + "model_player" "models/player/items/heavy/hwn_heavy_misc2.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "564" + { + "name" "Holy Hunter" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_SniperHat" + "item_description" "#TF_Hwn_SniperHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/player/items/sniper/hwn_sniper_hat" + "model_player" "models/player/items/sniper/hwn_sniper_hat.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + } + "565" + { + "name" "Silver Bullets" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_SniperMisc1" + "item_description" "#TF_Hwn_SniperMisc1_Desc" + "propername" "0" + "item_slot" "misc" + "equip_regions" + { + "necklace" "1" + "sniper_bullets" "1" + } + "image_inventory" "backpack/player/items/sniper/hwn_sniper_misc1" + "model_player" "models/player/items/sniper/hwn_sniper_misc1.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "566" + { + "name" "Garlic Flank Stake" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_SniperMisc2" + "item_description" "#TF_Hwn_SniperMisc2_Desc" + "propername" "0" + "item_slot" "misc" + "equip_region" "sniper_legs" + "image_inventory" "backpack/player/items/sniper/hwn_sniper_misc2" + "model_player" "models/player/items/sniper/hwn_sniper_misc2.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "567" + { + "name" "Buzz Killer" + "prefab" "valve halloween_costume_piece_2011 base_hat" + "item_name" "#TF_Hwn_EngineerHat" + "item_description" "#TF_Hwn_EngineerHat_Desc" + "item_slot" "head" + "equip_region" "whole_head" + "propername" "1" + "image_inventory" "backpack/player/items/engineer/hwn_engineer_hat" + "model_player" "models/player/items/engineer/hwn_engineer_hat.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + } + "568" + { + "name" "Frontier Flyboy" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_EngineerMisc1" + "item_description" "#TF_Hwn_EngineerMisc1_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "engineer_wings" + "image_inventory" "backpack/player/items/engineer/hwn_engineer_misc1" + "model_player" "models/player/items/engineer/hwn_engineer_misc1.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "569" + { + "name" "Legend of Bugfoot" + "prefab" "valve halloween_costume_piece_2011 base_misc" + "item_name" "#TF_Hwn_EngineerMisc2" + "item_description" "#TF_Hwn_EngineerMisc2_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/engineer/hwn_engineer_misc2" + "model_player" "models/player/items/engineer/hwn_engineer_misc2.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + + "570" + { + "name" "The Last Breath" + "prefab" "base_misc" + "first_sale_date" "2011/10/28" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_Hwn_PyroGasmask" + "item_description" "#TF_Hwn_PyroGasmask_Desc" + "min_ilevel" "13" + "max_ilevel" "13" + "item_slot" "misc" + "equip_region" "pyro_head_replacement" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/pyro/pyro_halloween_gasmask/pyro_halloween_gasmask" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/pyro/pyro_halloween_gasmask/pyro_halloween_gasmask.mdl" + "drop_type" "none" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "571" + { + "name" "Apparition's Aspect" + "prefab" "base_misc" + "first_sale_date" "2011/10/28" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "min_ilevel" "13" + "max_ilevel" "13" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_Ghost_Aspect" + "item_slot" "misc" + "equip_region" "pyro_head_replacement" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/pyro/ghost_aspect/ghost_aspect" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/pyro/ghost_aspect/ghost_aspect.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "head" "1" + } + } + "drop_type" "none" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "572" + { + "name" "Unarmed Combat" + "first_sale_date" "2011/10/28" + "item_class" "tf_weapon_bat_fish" + "craft_material_type" "weapon" + "craft_class" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Severed_Arm" + "item_name" "#TF_UnarmedCombat" + "item_description" "#TF_UnarmedCombat_Desc" + "item_slot" "melee" + "item_quality" "unique" + "item_logname" "unarmed_combat" + "item_iconname" "unarmed_combat" + "min_ilevel" "1" + "max_ilevel" "100" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_unarmed_combat/c_unarmed_combat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_unarmed_combat/c_unarmed_combat.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "15 11 -9" + } + "attributes" + { + "fish damage override" + { + "attribute_class" "fish_damage_override" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "7" + } + "kill eater kill type" + { + "attribute_class" "kill_eater_kill_type" + "value" "7" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + } + "visuals_red" + { + "skin" "0" + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + } + "visuals_blu" + { + "skin" "1" + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + + + "574" + { + "name" "The Wanga Prick" + "first_sale_date" "2011/10/28" + "prefab" "weapon_eternal_reward" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "item_name" "#TF_VoodooPin" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "100" + "inspect_panel_dist" "35" + "item_logname" "voodoo_pin" + "item_iconname" "voodoo_pin" + "image_inventory" "backpack/workshop/weapons/c_models/c_voodoo_pin/c_voodoo_pin" + "model_player" "models/workshop/weapons/c_models/c_voodoo_pin/c_voodoo_pin.mdl" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + } + "575" + { + "name" "The Infernal Impaler" + "prefab" "base_hat" + "first_sale_date" "2011/10/28" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headgear" + "item_name" "#TF_InfernalImpaler" + "min_ilevel" "13" + "max_ilevel" "13" + "item_slot" "head" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/soldier/infernal_impaler/infernal_impaler" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/soldier/infernal_impaler/infernal_impaler.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "drop_type" "drop" + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "576" + { + "name" "Spine-Chilling Skull 2011" + "prefab" "valve base_hat" + "hidden" "0" + "first_sale_date" "2011/10/28" + "item_class" "tf_wearable" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Skullcap2011" + "item_description" "#TF_Halloween_Skullcap2011_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/skull_horns_b" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b.mdl" + } + "name" "#TF_SpineChillingSkull2011_Style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b2.mdl" + } + "name" "#TF_SpineChillingSkull2011_Style2" + } + "2" + { + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b3.mdl" + } + "name" "#TF_SpineChillingSkull2011_Style3" + } + } + } + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2011" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "577" + { + "name" "Halloween Giveaway Package 2011 (Cauldron)" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_cauldron_2011" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_HalloweenCauldron2011" + "item_description" "#TF_HalloweenCauldron2011_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_halloween" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "578" + { + "name" "Spine-Chilling Skull 2011 Style 1" + "prefab" "base_hat" + "hidden" "0" + "first_sale_date" "2011/10/26" + "item_class" "tf_wearable" + "craft_class" "haunted_hat" + "craft_material_type" "haunted_hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Skullcap2011_Style1" + "item_description" "#TF_Halloween_Skullcap2011_Style1_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/skull_horns_b" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2011" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "579" + { + "name" "Spine-Chilling Skull 2011 Style 2" + "prefab" "base_hat" + "hidden" "0" + "first_sale_date" "2011/10/26" + "item_class" "tf_wearable" + "craft_class" "haunted_hat" + "craft_material_type" "haunted_hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Skullcap2011_Style2" + "item_description" "#TF_Halloween_Skullcap2011_Style2_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/skull_horns_b2" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b2.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2011" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "580" + { + "name" "Spine-Chilling Skull 2011 Style 3" + "prefab" "base_hat" + "hidden" "0" + "first_sale_date" "2011/10/26" + "item_class" "tf_wearable" + "craft_class" "haunted_hat" + "craft_material_type" "haunted_hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Skullcap2011_Style3" + "item_description" "#TF_Halloween_Skullcap2011_Style3_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/skull_horns_b3" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/skull_horns_b3.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2011" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "581" + { + "name" "MONOCULUS!" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Halloween_Eyeball_Boss_Hat" + "item_description" "#TF_Halloween_Eyeball_Boss_Hat_Desc" + "item_slot" "head" + "equip_regions" + { + "whole_head" "1" + "beard" "1" + } + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/haunted_eyeball_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/haunted_eyeball_hat_%s.mdl" + } + "drop_type" "none" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "582" + { + "name" "Seal Mask" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_Halloween_Seal_Mask" + "item_description" "#TF_Halloween_Seal_Mask_Desc" + "item_slot" "head" + "equip_region" "face" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/seal_mask_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/seal_mask_%s.mdl" + } + "drop_type" "none" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "583" + { + "name" "Bombinomicon" + "prefab" "base_misc" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Bombinomicon_Badge" + "item_description" "#TF_Bombinomicon_Badge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "image_inventory" "backpack/player/items/all_class/bombonomicon" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/all_class/bombonomicon.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "bombinomicon effect on death" + { + "attribute_class" "bombinomicon_effect_on_death" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "584" + { + "name" "Ghastly Gibus 2011" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Domination_Hat_Ghastly" + "item_description" "#TF_Domination_Hat_Ghastly_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/all_domination" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + "halloween item" + { + "attribute_class" "halloween_item" + "value" "2011" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_domination_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghastly" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/ghostly_gibus_%s.mdl" + } + "name" "#TF_Gibus_Style_Ghostly" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "585" + { + "name" "Cold War Luchador" + "prefab" "mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_Luchador" + "item_description" "#TF_Luchador_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/heavy/sr3_heavy_mask" + "model_player" "models/player/items/heavy/sr3_heavy_mask.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "586" + { + "name" "Mark of the Saint" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Saint_Pin" + "item_description" "#TF_Saint_Pin_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/sr3_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "1" + "model_player" "models/player/items/all_class/sr3_badge.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "587" + { + "name" "Apoco-Fists" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Fists" + "item_name" "#TF_Apocofists" + "item_description" "#TF_Apocofists_Desc" + "item_slot" "melee" + "item_logname" "apocofists" + "item_iconname" "apocofists" + "image_inventory" "backpack/workshop/weapons/c_models/c_sr3_punch/c_sr3_punch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/workshop/weapons/c_models/c_sr3_punch/c_sr3_punch.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "crit kill will gib" + { + "attribute_class" "crit_kill_will_gib" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "hide_bodygroups_deployed_only" "1" + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" + "drop_sound" "ui/item_boxing_gloves_drop.wav" + } + + "588" + { + "name" "The Pomson 6000" + "first_sale_date" "2011/12/15" + "item_class" "tf_weapon_drg_pomson" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_type_name" "#TF_Weapon_IndivisibleParticleSmasher" + "item_name" "#TF_Pomson" + "item_description" "#TF_Pomson_Desc" + "item_slot" "primary" + "item_logname" "pomson" + "item_iconname" "pomson" + "show_in_armory" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_pomson/c_drg_pomson" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "55" + "model_player" "models/workshop/weapons/c_models/c_drg_pomson/c_drg_pomson.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "energy weapon no ammo" + { + "attribute_class" "energy_weapon_no_ammo" + "value" "1" + } + "energy weapon no deflect" + { + "attribute_class" "energy_weapon_no_deflect" + "value" "1" + } + "subtract victim medigun charge on hit" + { + "attribute_class" "subtract_victim_medigun_charge_onhit" + "value" "10" + } + "subtract victim cloak on hit" + { + "attribute_class" "subtract_victim_cloak_on_hit" + "value" "20" + } + "energy weapon no hurt building" + { + "attribute_class" "energy_weapon_no_hurt_building" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Pomson.Single" + "sound_burst" "Weapon_Pomson.SingleCrit" + "sound_reload" "Weapon_Pomson.Reload" + "muzzle_flash" "drg_pomson_muzzleflash" + + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_SECONDARY2_VM_IDLE" + "ACT_VM_DRAW" "ACT_SECONDARY2_VM_DRAW" + "ACT_VM_PRIMARYATTACK" "ACT_SECONDARY2_VM_PRIMARYATTACK" + "ACT_RELOAD_START" "ACT_SECONDARY2_RELOAD_START" + "ACT_RELOAD_FINISH" "ACT_SECONDARY2_RELOAD_FINISH" + "ACT_VM_RELOAD" "ACT_SECONDARY2_VM_RELOAD" + "ACT_MP_RELOAD_STAND" "ACT_MP_RELOAD_STAND_SECONDARY2" + "ACT_MP_RELOAD_STAND_LOOP" "ACT_MP_RELOAD_STAND_SECONDARY2_LOOP" + "ACT_MP_RELOAD_STAND_END" "ACT_MP_RELOAD_STAND_SECONDARY2_END" + "ACT_MP_RELOAD_CROUCH" "ACT_MP_RELOAD_CROUCH_SECONDARY2" + "ACT_MP_RELOAD_CROUCH_LOOP" "ACT_MP_RELOAD_CROUCH_SECONDARY2_LOOP" + "ACT_MP_RELOAD_CROUCH_END" "ACT_MP_RELOAD_CROUCH_SECONDARY2_END" + "ACT_MP_RELOAD_SWIM" "ACT_MP_RELOAD_SWIM_SECONDARY2" + "ACT_MP_RELOAD_SWIM_LOOP" "ACT_MP_RELOAD_SWIM_SECONDARY2_LOOP" + "ACT_MP_RELOAD_SWIM_END" "ACT_MP_RELOAD_SWIM_SECONDARY2_END" + "ACT_MP_RELOAD_AIRWALK" "ACT_MP_RELOAD_AIRWALK_SECONDARY2" + "ACT_MP_RELOAD_AIRWALK_LOOP" "ACT_MP_RELOAD_AIRWALK_SECONDARY2_LOOP" + "ACT_MP_RELOAD_AIRWALK_END" "ACT_MP_RELOAD_AIRWALK_SECONDARY2_END" + "ACT_PRIMARY_VM_INSPECT_START" "ACT_SECONDARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_SECONDARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_SECONDARY_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "589" + { + "name" "The Eureka Effect" + "first_sale_date" "2011/12/15" + "item_class" "tf_weapon_wrench" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_destroy_sappers" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Wrench" + "item_name" "#TF_Wrenchmotron" + "item_description" "#TF_Wrenchmotron_Desc" + "item_slot" "melee" + "item_quality" "unique" + "item_logname" "eureka_effect" + "item_iconname" "eureka_effect" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_wrenchmotron/c_drg_wrenchmotron" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "50" + "model_player" "models/workshop/weapons/c_models/c_drg_wrenchmotron/c_drg_wrenchmotron.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -2 -9" + } + "attributes" + { + "alt fire teleport to spawn" + { + "attribute_class" "alt_fire_teleport_to_spawn" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "Construction rate decreased" + { + "attribute_class" "mult_construction_value" + "value" "0.50" + } + "metal_pickup_decreased" + { + "attribute_class" "mult_metal_pickup" + "value" "0.8" + } + "mod teleporter cost" + { + "attribute_class" "mod_teleporter_cost" + "value" "0.5" + } + } + "visuals" + { + "attached_particlesystems" + { + "0" + { + "system" "drg_wrenchmotron_idle" + "attachment" "electrode_0" + } + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "590" + { + "name" "The Brainiac Hairpiece" + "prefab" "base_misc" + "first_sale_date" "2011/12/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_Brainiac" + "item_description" "#TF_Brainiac_Desc" + "item_slot" "misc" + "equip_region" "engineer_hair" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/engineer/drg_brainiac_hair" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/drg_brainiac_hair.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_Brainiac_Style_Helmet" + } + "1" + { + "name" "#TF_Brainiac_Style_NoHelmet" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "591" + { + "name" "The Brainiac Goggles" + "prefab" "base_misc" + "first_sale_date" "2011/12/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "min_ilevel" "20" + "max_ilevel" "20" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_Brainiac_Goggles" + "item_description" "#TF_Brainiac_Goggles_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/engineer/drg_brainiac_goggles" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/drg_brainiac_goggles.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "592" + { + "name" "Dr. Grordbort's Copper Crest" + "prefab" "base_misc" + "first_sale_date" "2011/12/15" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "craft_material_type" "hat" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_DRG_CopperBadge" + "item_description" "#TF_DRG_CopperBadge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/drg_badge_copper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/drg_badge.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "visuals" + { + "skin" "2" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + "593" + { + "name" "The Third Degree" + "first_sale_date" "2011/12/15" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "thirddegree" + "item_iconname" "thirddegree" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_FireAxe" + "item_name" "#TF_ThirdDegree" + "item_description" "#TF_ThirdDegree_Desc" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_thirddegree/c_drg_thirddegree" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_drg_thirddegree/c_drg_thirddegree.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "damage all connected" + { + "attribute_class" "damage_all_connected" + "value" "1" + } + "ragdolls become ash" + { + "attribute_class" "ragdolls_become_ash" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "Weapon_3rd_degree.HitFlesh" + "sound_melee_hit_world" "Weapon_3rd_degree.HitWorld" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "594" + { + "name" "The Phlogistinator" + "prefab" "weapon_newflame" + "first_sale_date" "2011/12/15" + "item_class" "tf_weapon_flamethrower" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "is_flamethrower" "1" + } + "item_logname" "phlogistinator" + "item_iconname" "phlogistinator" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flamethrower" + "item_name" "#TF_Phlogistinator" + "item_description" "#TF_Phlogistinator_Desc" + "item_slot" "primary" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_drg_phlogistinator/c_drg_phlogistinator.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + } + "visuals" + { + "sound_single_shot" "Weapon_phlogistinator.FireStart" + "sound_special1" "Weapon_phlogistinator.FireLoop" + "sound_special3" "Weapon_phlogistinator.WindDown" + "sound_burst" "Weapon_phlogistinator.FireLoopCrit" + + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + "attributes" + { + "burn damage earns rage" + { + "attribute_class" "burn_damage_earns_rage" + "value" "1" + } + "mod soldier buff type" + { + "attribute_class" "set_buff_type" + "value" "5" + } + "airblast disabled" + { + "attribute_class" "airblast_disabled" + "value" "1" + } + "ragdolls become ash" + { + "attribute_class" "ragdolls_become_ash" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "595" + { + "name" "The Manmelter" + "first_sale_date" "2011/12/15" + "item_class" "tf_weapon_flaregun_revenge" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_taunt_damage" "1" + "can_extinguish" "1" + } + "item_logname" "manmelter" + "item_iconname" "manmelter" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_IndivisibleParticleSmasher" + "item_name" "#TF_ManMelter" + "item_description" "#TF_ManMelter_Desc" + "item_slot" "secondary" + "anim_slot" "ITEM1" + "image_inventory" "backpack/workshop/weapons/c_models/c_drg_manmelter/c_drg_manmelter" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_drg_manmelter/c_drg_manmelter.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "30" + "max_ilevel" "30" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "energy weapon no ammo" + { + "attribute_class" "energy_weapon_no_ammo" + "value" "1" + } + "Projectile speed increased" + { + "attribute_class" "mult_projectile_speed" + "value" "1.5" + } + "extinguish earns revenge crits" + { + "attribute_class" "extinguish_revenge" + "value" "1" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "ragdolls become ash" + { + "attribute_class" "ragdolls_become_ash" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "extinguish restores health" + { + "attribute_class" "extinguish_restores_health" + "value" "20" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_SECONDARY2_VM_IDLE" + "ACT_VM_DRAW" "ACT_SECONDARY2_VM_DRAW" + "ACT_VM_PRIMARYATTACK" "ACT_SECONDARY2_VM_PRIMARYATTACK" + "ACT_MP_ATTACK_STAND_PRIMARYFIRE" "ACT_MP_ATTACK_STAND_SECONDARY2" + "ACT_MP_ATTACK_CROUCH_PRIMARYFIRE" "ACT_MP_ATTACK_CROUCH_SECONDARY2" + "ACT_MP_ATTACK_SWIM_PRIMARYFIRE" "ACT_MP_ATTACK_SWIM_SECONDARY2" + "ACT_MP_ATTACK_STANDACT_MP_ATTACK_AIRWALK_PRIMARYFIRE_PRIMARYFIRE" "ACT_MP_ATTACK_AIRWALK_SECONDARY2" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "596" + { + "name" "The Moonman Backpack" + "first_sale_date" "2011/12/15" + "prefab" "backpack" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_FuelTank" + "item_name" "#TF_GrordbortPyro_Tank" + "item_description" "#TF_GrordbortPyro_Tank_Desc" + "image_inventory" "backpack/player/items/pyro/drg_pyro_fueltank" + "propername" "1" + "model_player" "models/player/items/pyro/drg_pyro_fuelTank.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "used_by_classes" + { + "pyro" "1" + } + } + "597" + { + "name" "The Bubble Pipe" + "first_sale_date" "2011/12/15" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_Bubble_Helmet" + "item_description" "#TF_Bubble_Helmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/drg_pyro_bubblehelmet" + "model_player" "models/player/items/pyro/drg_pyro_bubbleHelmet.mdl" + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "598" + { + "name" "Manniversary Paper Hat" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_ManniversaryPaperHat" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/paper_hat" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/%s/paper_hat.mdl" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "599" + { + "name" "Manniversary Giveaway Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "package_manniversary_2011" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_ManniversaryPackage" + "item_description" "#TF_ManniversaryPackage_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_fashion" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "600" + { + "name" "Your Worst Nightmare" + "first_sale_date" "2011/09/06" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SniperHat1" + "item_description" "#TF_SniperHat1_Desc" + "item_type_name" "#TF_Wearable_Hair" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/player/items/sniper/fwk_sniper_bandanahair/fwk_sniper_bandanahair" + "model_player" "models/workshop/player/items/sniper/fwk_sniper_bandanahair/fwk_sniper_bandanahair.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/fwk_sniper_bandanahair/fwk_sniper_bandanahair.mdl" + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/fwk_sniper_bandanahair_s2/fwk_sniper_bandanahair_s2.mdl" + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "601" + { + "name" "The One-Man Army" + "first_sale_date" "2011/09/06" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_HeavyHat1" + "item_description" "#TF_HeavyHat1_Desc" + "item_type_name" "#TF_Wearable_Hair" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/fwk_heavy_bandanahair/fwk_heavy_bandanahair" + "model_player" "models/workshop/player/items/heavy/fwk_heavy_bandanahair/fwk_heavy_bandanahair.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/fwk_heavy_bandanahair/fwk_heavy_bandanahair.mdl" + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/fwk_heavy_bandanahair_s2/fwk_heavy_bandanahair_s2.mdl" + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "602" + { + "name" "The Counterfeit Billycock" + "first_sale_date" "2011/09/06" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SpyHat1" + "item_description" "#TF_SpyHat1_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/spy/fwk_spy_disguisedhat" + "model_player" "models/player/items/spy/fwk_spy_disguisedhat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + } + "603" + { + "name" "The Outdoorsman" + "first_sale_date" "2011/09/06" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_HeavyHat2" + "item_description" "#TF_HeavyHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/heavy/fwk_heavy_lumber" + "model_player" "models/player/items/heavy/fwk_heavy_lumber.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + } + "604" + { + "name" "The Tavish DeGroot Experience" + "first_sale_date" "2011/09/07" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_DemoHat1" + "item_description" "#TF_DemoHat1_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/demo/fwk_demo_sashhat" + "model_player" "models/player/items/demo/fwk_demo_sashhat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + } + "605" + { + "name" "The Pencil Pusher" + "first_sale_date" "2011/09/07" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_EngineerHat1" + "item_description" "#TF_EngineerHat1_Desc" + "item_type_name" "#TF_Wearable_Hair" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/heavy_thinker" + "model_player" "models/player/items/engineer/heavy_thinker.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + } + "606" + { + "name" "The Builder's Blueprints" + "prefab" "base_misc" + "first_sale_date" "2011/09/07" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Blueprints" + "item_name" "#TF_EngineerBlueprints" + "item_description" "#TF_EngineerBlueprints_Desc" + "min_ilevel" "15" + "max_ilevel" "15" + "propername" "1" + "item_slot" "misc" + "equip_region" "engineer_pocket" + "item_quality" "unique" + "image_inventory" "backpack/player/items/engineer/fwk_engineer_blueprints" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/engineer/fwk_engineer_blueprints.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "607" + { + "name" "The Buccaneer's Bicorne" + "prefab" "base_hat" + "first_sale_date" "2011/09/07" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_BuccaneersBicorne" + "item_description" "#TF_BuccaneersBicorne_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/demo/mightypirate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/demo/mighty_pirate.mdl" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "608" + { + "name" "The Bootlegger" + "first_sale_date" "2011/09/07" + "prefab" "weapon_demoman_boots" + "show_in_armory" "1" + "propername" "1" + "item_name" "#TF_Bootlegger" + "item_description" "#TF_Bootlegger_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/player/items/demo/pegleg/pegleg" + "model_player" "models/workshop/player/items/demo/pegleg/pegleg.mdl" + } + "609" + { + "name" "The Scottish Handshake" + "first_sale_date" "2011/09/07" + "item_class" "tf_weapon_bottle" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bottle" + "item_name" "#TF_ScottishHandshake" + "item_description" "#TF_ScottishHandshake_Desc" + "item_logname" "scotland_shard" + "item_iconname" "scotland_shard" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/weapons/c_models/c_scotland_shard/c_scotland_shard" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "30" + "model_player" "models/workshop/weapons/c_models/c_scotland_shard/c_scotland_shard.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -14" + } + "attributes" + { + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "610" + { + "name" "A Whiff of the Old Brimstone" + "prefab" "grenades" + "first_sale_date" "2011/09/07" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_OldBrimstone" + "item_description" "#TF_OldBrimstone_Desc" + "image_inventory" "backpack/player/items/demo/bombs" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player" "models/player/items/demo/demo_bombs.mdl" + "model_vision_filtered" "models/player/items/all_class/mtp_bottle_demo.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "611" + { + "name" "The Salty Dog" + "first_sale_date" "2011/09/07" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SoldierHat1" + "item_description" "#TF_SoldierHat1_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fwk_seacaptain/fwk_seacaptain" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fwk_seacaptain/fwk_seacaptain_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "Demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fwk_seacaptain/fwk_seacaptain_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SoldierHat1_Style0" + "use_smoke_particle_effect" "0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fwk_seacaptain_s2/fwk_seacaptain_s2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SoldierHat1_Style1" + } + } + } + } + "612" + { + "name" "The Little Buddy" + "first_sale_date" "2011/09/09" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_PyroHat1" + "item_description" "#TF_PyroHat1_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/fwk_pyro_sailor" + "model_player" "models/player/items/pyro/fwk_pyro_sailor.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + } + "613" + { + "name" "The Gym Rat" + "first_sale_date" "2011/09/09" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_HeavyHat3" + "item_description" "#TF_HeavyHat3_Desc" + "item_type_name" "#TF_Wearable_Hair" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/heavy/fwk_heavy_gym" + "model_player" "models/player/items/heavy/fwk_heavy_gym.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "614" + { + "name" "The Hot Dogger" + "first_sale_date" "2011/09/12" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_ScoutHat1" + "item_description" "#TF_ScoutHat1_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fwk_hotdog/fwk_hotdog" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fwk_hotdog/fwk_hotdog_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "Demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "615" + { + "name" "The Birdcage" + "first_sale_date" "2011/09/12" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_PyroHat2" + "item_description" "#TF_PyroHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/fwk_pyro_birdcage" + "model_player" "models/player/items/pyro/fwk_pyro_birdcage.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "616" + { + "name" "The Surgeon's Stahlhelm" + "first_sale_date" "2011/09/14" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_MedicHat1" + "item_description" "#TF_MedicHat1_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/medic/fwk_medic_stahlhelm" + "model_player" "models/player/items/medic/fwk_medic_stahlhelm.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "617" + { + "name" "The Backwards Ballcap" + "first_sale_date" "2011/09/14" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_ScoutHat2" + "item_description" "#TF_ScoutHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/scout/fwk_scout_cap" + "model_player" "models/player/items/scout/fwk_scout_cap.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_ScoutBackwardsCap_Style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_ScoutBackwardsCap_Style1" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + } + } + } + "618" + { + "name" "The Crocodile Smile" + "prefab" "base_misc" + "first_sale_date" "2011/09/14" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Necklace" + "item_name" "#TF_SniperNecklace" + "item_description" "#TF_SniperNecklace_Desc" + "propername" "1" + "item_slot" "misc" + "equip_region" "necklace" + "image_inventory" "backpack/player/items/sniper/fwk_sniper_necklace" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/sniper/fwk_sniper_necklace.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "619" + { + "name" "Flair!" + "prefab" "base_misc" + "first_sale_date" "2011/09/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_customize_texture" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Flair" + "item_name" "#TF_FlairButtons" + "item_description" "#TF_FlairButtons_Desc" + "item_slot" "misc" + "equip_region" "flair" + "image_inventory" "backpack/player/items/all_class/flair_buttons" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "propername" "0" + "armory_desc" "can_customize_texture" + "model_player_per_class" + { + "basename" "models/player/items/all_class/flair_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "custom_texture_blend_steps" + { + "1" + { + "op" "multiply" + "image" "scripts/items/custom_texture_blend_layers/flair_template_guide.png" + } + } + } + "620" + { + "name" "Couvre Corner" + "prefab" "base_misc" + "first_sale_date" "2011/09/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_PocketSquare" + "item_name" "#TF_MedicPocketSquare" + "item_description" "#TF_MedicPocketSquare_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/medic/fwk_medic_pocketsquare" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/medic/fwk_medic_pocketsquare.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "621" + { + "name" "The Surgeon's Stethoscope" + "prefab" "base_misc" + "first_sale_date" "2011/09/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Stethoscope" + "item_name" "#TF_MedicStethoscope" + "item_description" "#TF_MedicStethoscope_Desc" + "item_slot" "misc" + "equip_region" "necklace" + "image_inventory" "backpack/player/items/medic/fwk_medic_stethoscope" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/medic/fwk_medic_stethoscope.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "622" + { + "name" "L'Inspecteur" + "first_sale_date" "2011/09/15" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SpyHat2" + "item_description" "#TF_SpyHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/spy/fwk_spy_inspector" + "model_player" "models/player/items/spy/fwk_spy_inspector.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + } + "623" + { + "name" "Photo Badge" + "prefab" "base_misc" + "first_sale_date" "2011/09/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_customize_texture" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_PhotoBadge" + "item_description" "#TF_PhotoBadge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/photo_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "propername" "0" + "model_player" "models/player/items/all_class/photo_badge.mdl" + "armory_desc" "can_customize_texture" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + + + "625" + { + "name" "Clan Pride" + "prefab" "base_misc" + "first_sale_date" "2011/09/15" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_customize_texture" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Medallion" + "item_name" "#TF_StampableMedal" + "item_description" "#TF_StampableMedal_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/stampable_medal" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "propername" "0" + "model_player" "models/player/items/all_class/stampable_medal.mdl" + "armory_desc" "can_customize_texture" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "626" + { + "name" "The Swagman's Swatter" + "first_sale_date" "2011/09/19" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SniperHat2" + "item_description" "#TF_SniperHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/sniper/fwk_sniper_corkhat" + "model_player" "models/player/items/sniper/fwk_sniper_corkhat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + } + "627" + { + "name" "The Flamboyant Flamenco" + "first_sale_date" "2011/09/19" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_PyroHat3" + "item_description" "#TF_PyroHat3_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/fwk_pyro_flamenco" + "model_player" "models/player/items/pyro/fwk_pyro_flamenco.mdl" + "drop_type" "drop" + "used_by_classes" + { + "pyro" "1" + } + } + "628" + { + "name" "The Virtual Reality Headset" + "first_sale_date" "2011/09/19" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Headset" + "item_name" "#TF_EngineerHat2" + "item_description" "#TF_EngineerHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/engineer/fwk_engineer_cranial" + "model_player" "models/player/items/engineer/fwk_engineer_cranial.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "629" + { + "name" "The Spectre's Spectacles" + "prefab" "base_misc" + "first_sale_date" "2011/09/19" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_SpyGlasses" + "item_description" "#TF_SpyGlasses_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "image_inventory" "backpack/player/items/spy/fwk_spy_specs" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "1" + "model_player" "models/player/items/spy/fwk_spy_specs.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "630" + { + "name" "The Stereoscopic Shades" + "prefab" "base_misc" + "first_sale_date" "2011/09/20" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_ScoutGlasses" + "item_description" "#TF_ScoutGlasses_Desc" + "item_slot" "misc" + "equip_region" "glasses" + "image_inventory" "backpack/player/items/scout/fwk_scout_3d" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "1" + "model_player" "models/player/items/scout/fwk_scout_3d.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "631" + { + "name" "The Hat With No Name" + "first_sale_date" "2011/09/21" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SoldierHat2" + "item_description" "#TF_SoldierHat2_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fwk_cowboyhat/fwk_cowboyhat" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fwk_cowboyhat/fwk_cowboyhat_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "soldier" "1" + "demoman" "1" + "engineer" "1" + } + } + "632" + { + "name" "The Cremator's Conscience" + "first_sale_date" "2011/09/21" + "prefab" "grenades" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_type_name" "#TF_Wearable_Conscience" + "item_name" "#TF_PyroConscience" + "item_description" "#TF_PyroConscience_Desc" + "image_inventory" "backpack/player/items/pyro/fwk_pyro_conscience" + "model_player" "models/player/items/pyro/fwk_pyro_conscience.mdl" + "propername" "1" + "min_ilevel" "15" + "max_ilevel" "15" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "633" + { + "name" "The Hermes" + "first_sale_date" "2011/09/22" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_ScoutHat3" + "item_description" "#TF_ScoutHat3_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/scout/fwk_scout_provision" + "model_player" "models/player/items/scout/fwk_scout_provision.mdl" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + + "634" + { + "name" "Point and Shoot" + "first_sale_date" "2012/02/09" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_TrnHat" + "item_description" "#TF_TrnHat_Desc" + "image_inventory" "backpack/player/items/all_class/trn_wiz_hat_demo" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "model_player_per_class" + { + "basename" "models/player/items/all_class/trn_wiz_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "635" + { + "name" "War Head" + "prefab" "base_hat" + "first_sale_date" "2012/02/09" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_TrnHelmet" + "item_description" "#TF_TrnHelmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/heavy/trn_heavy_knight" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/trn_heavy_knight.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + + "636" + { + "name" "Dr. Grordbort's Silver Crest" + "prefab" "base_misc" + "first_sale_date" "2011/11/15" + "capabilities" + { + "nameable" "1" + "can_craft_if_purchased" "1" + } + "craft_material_type" "hat" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_DRG_SilverBadge" + "item_description" "#TF_DRG_SilverBadge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/drg_badge_silver" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/all_class/drg_badge.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "visuals" + { + "skin" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + "637" + { + "name" "The Dashin' Hashshashin" + "first_sale_date" "2011/11/23" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_DashinHashshashin" + "item_description" "#TF_DashinHashshashin_Desc" + "item_type_name" "#TF_Wearable_Hood" + "image_inventory" "backpack/player/items/spy/acr_assassins_cowl" + "propername" "1" + "model_player" "models/player/items/spy/acr_assassins_cowl.mdl" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "spy" "1" + } + } + "638" + { + "name" "The Sharp Dresser" + "first_sale_date" "2011/11/23" + "item_class" "tf_weapon_knife" + "prefab" "weapon_knife" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Knife" + "item_name" "#TF_SharpDresser" + "item_description" "#TF_SharpDresser_Desc" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "item_logname" "sharp_dresser" + "item_iconname" "sharp_dresser" + "image_inventory" "backpack/workshop/weapons/c_models/c_acr_hookblade/c_acr_hookblade" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "30" + "attach_to_hands" "1" + "model_player" "models/workshop/weapons/c_models/c_acr_hookblade/c_acr_hookblade.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "anim_slot" "ITEM1" + "visuals" + { + "sound_melee_hit" "Weapon_Assassin_Knife.HitFlesh" + + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_ITEM1_VM_DRAW" + "ACT_VM_IDLE" "ACT_ITEM1_VM_IDLE" + "ACT_VM_HITCENTER" "ACT_ITEM1_VM_HITCENTER" + "ACT_VM_HITCENTER2" "ACT_ITEM1_VM_HITCENTER2" + "ACT_VM_SWINGHARD" "ACT_ITEM1_VM_SWINGHARD" + "ACT_BACKSTAB_VM_UP" "ACT_ITEM1_BACKSTAB_VM_UP" + "ACT_BACKSTAB_VM_DOWN" "ACT_ITEM1_BACKSTAB_VM_DOWN" + "ACT_BACKSTAB_VM_IDLE" "ACT_ITEM1_BACKSTAB_VM_IDLE" + "ACT_MELEE_VM_STUN" "ACT_MELEE_VM_ITEM1_STUN" + "ACT_MELEE_VM_INSPECT_START" "ACT_ITEM1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_ITEM1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_ITEM1_VM_INSPECT_END" + } + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "639" + { + "name" "Bowtie" + "prefab" "base_misc" + "first_sale_date" "2011/11/16" + "craft_material_type" "hat" + "craft_class" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_Bowtie" + "item_description" "#TF_Bowtie_Desc" + "item_slot" "misc" + "equip_regions" + { + "necklace" "1" + "shirt" "1" + } + "image_inventory" "backpack/player/items/medic/bowtie" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player_per_class" + { + "basename" "models/player/items/%s/bowtie.mdl" + } + "min_ilevel" "15" + "max_ilevel" "15" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "640" + { + "name" "The Top Notch" + "prefab" "base_hat" + "first_sale_date" "2011/11/23" + "item_class" "tf_wearable" + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TopNotch" + "item_description" "#TF_TopNotch_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/notch_head_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/notch_head_%s.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "641" + { + "name" "The Ornament Armament" + "prefab" "grenades" + "first_sale_date" "2011/12/19" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_ShinyBauls" + "item_description" "#TF_ShinyBauls_Desc" + "image_inventory" "backpack/player/items/soldier/xms_soldier_ornaments" + "propername" "1" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player_per_class" + { + "soldier" "models/player/items/soldier/xms_soldier_ornaments.mdl" + "demoman" "models/player/items/soldier/xms_demo_ornaments.mdl" + "pyro" "models/player/items/soldier/xms_pyro_ornaments.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "642" + { + "name" "The Cozy Camper" + "first_sale_date" "2012/03/15" + "item_class" "tf_wearable" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_CozyCamper" + "item_description" "#TF_CozyCamper_Desc" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop/player/items/sniper/xms_sniper_commandobackpack/xms_sniper_commandobackpack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/sniper/xms_sniper_commandobackpack/xms_sniper_commandobackpack.mdl" + "extra_wearable" "models/workshop/player/items/sniper/xms_sniper_commandobackpack/xms_sniper_commandobackpack.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "health regen" + { + "attribute_class" "add_health_regen" + "value" "4" + } + "aiming knockback resistance" + { + "attribute_class" "mult_aiming_knockback_resistance" + "value" "0.80" + } + "aiming no flinch" + { + "attribute_class" "aiming_no_flinch" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "643" + { + "name" "The Sandvich Safe" + "prefab" "base_misc" + "first_sale_date" "2011/12/19" + "craft_class" "hat" + "craft_material_type" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Lunchbox" + "item_name" "#TF_SandvichSafe" + "item_description" "#TF_SandvichSafe_Desc" + "item_slot" "misc" + "equip_region" "heavy_hip" + "image_inventory" "backpack/player/items/heavy/xms_heavy_sandvichsafe" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "1" + "model_player" "models/player/items/heavy/xms_heavy_sandvichsafe.mdl" + "drop_type" "none" + "min_ilevel" "15" + "max_ilevel" "15" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" + "drop_sound" "ui/item_metal_pot_drop.wav" + } + "644" + { + "name" "The Head Warmer" + "first_sale_date" "2011/12/19" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "item_name" "#TF_IncineratorsInsulator" + "item_description" "#TF_IncineratorsInsulator_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/xms_pyro_parka" + "model_player" "models/player/items/pyro/xms_pyro_parka.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "645" + { + "name" "The Outback Intellectual" + "prefab" "base_misc" + "first_sale_date" "2011/12/19" + "craft_material_type" "hat" + "craft_class" "hat" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_TouchingStory" + "item_description" "#TF_TouchingStory_Desc" + "item_slot" "misc" + "equip_region" "shirt" + "image_inventory" "backpack/player/items/sniper/xms_sniper_sweater_vest" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "1" + "model_player" "models/player/items/sniper/xms_sniper_sweater_vest.mdl" + "min_ilevel" "15" + "max_ilevel" "15" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "646" + { + "name" "The Itsy Bitsy Spyer" + "prefab" "base_misc" + "first_sale_date" "2011/12/01" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_ItsyBitsySpyer" + "item_description" "#TF_ItsyBitsySpyer_Desc" + "item_slot" "misc" + "equip_regions" + { + "sniper_pocket" "1" + "engineer_pocket" "1" + } + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/player/items/engineer/xms_engineer_voodoospy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "sniper" "models/player/items/sniper/sniper_voodoospy.mdl" + "engineer" "models/player/items/engineer/xms_engineer_voodoospy.mdl" + } + "min_ilevel" "15" + "max_ilevel" "15" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "647" + { + "name" "The All-Father" + "prefab" "base_misc" + "first_sale_date" "2011/12/19" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_AllFather" + "item_description" "#TF_AllFather_Desc" + "item_slot" "misc" + "equip_region" "beard" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/xms_beard/xms_beard" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "min_ilevel" "15" + "max_ilevel" "15" + "drop_type" "none" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms_beard/xms_beard_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "soldier" "1" + "Demoman" "1" + "medic" "1" + "heavy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms_beard/xms_beard_%s.mdl" + } + "name" "#TF_AllFather_Style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms_beard_s2/xms_beard_s2_%s.mdl" + } + "name" "#TF_AllFather_Style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "648" + { + "name" "The Wrap Assassin" + "first_sale_date" "2011/12/19" + "item_class" "tf_weapon_bat_giftwrap" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Bat" + "item_name" "#TF_BallBuster" + "item_description" "#TF_BallBuster_Desc" + "item_logname" "wrap_assassin" + "item_iconname" "wrap_assassin" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "15" + "max_ilevel" "15" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_xms_giftwrap/c_xms_giftwrap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_xms_giftwrap/c_xms_giftwrap.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "mod bat launches ornaments" + { + "attribute_class" "set_weapon_mode" + "value" "1" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.35" + } + "effect bar recharge rate increased" + { + "attribute_class" "effectbar_recharge_rate" + "value" "0.75" + } + } + "visuals" + { + "sound_deploy" "BallBuster.Ornament_DrawCatch" + "sound_melee_hit" "BallBuster.HitFlesh" + "sound_melee_hit_world" "BallBuster.HitWorld" + "sound_special2" "BallBuster.HitBall" + } + "visuals_red" + { + "skin" "2" + "sound_deploy" "BallBuster.Ornament_DrawCatch" + "sound_melee_hit" "BallBuster.HitFlesh" + "sound_melee_hit_world" "BallBuster.HitWorld" + "sound_special2" "BallBuster.HitBall" + } + "visuals_blu" + { + "skin" "1" + "sound_deploy" "BallBuster.Ornament_DrawCatch" + "sound_melee_hit" "BallBuster.HitFlesh" + "sound_melee_hit_world" "BallBuster.HitWorld" + "sound_special2" "BallBuster.HitBall" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "649" + { + "name" "The Spy-cicle" + "first_sale_date" "2011/12/19" + "prefab" "weapon_spy_knife_item2" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_festivized" "1" + } + "item_name" "#TF_SpyCicle" + "item_description" "#TF_SpyCicle_Desc" + "propername" "1" + "item_logname" "spy_cicle" + "item_iconname" "spy_cicle" + "image_inventory" "backpack/workshop/weapons/c_models/c_xms_cold_shoulder/c_xms_cold_shoulder" + "inspect_panel_dist" "25" + "model_player" "models/workshop/weapons/c_models/c_xms_cold_shoulder/c_xms_cold_shoulder.mdl" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "freeze backstab victim" + { + "attribute_class" "freeze_backstab_victim" + "value" "1" + } + "melts in fire" + { + "attribute_class" "melts_in_fire" + "value" "15" + } + "become fireproof on hit by fire" + { + "attribute_class" "become_fireproof_on_hit_by_fire" + "value" "10" + } + "set icicle knife mode" + { + "attribute_class" "set_weapon_mode" + "value" "3" + } + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_xms_cold_shoulder/c_xms_cold_shoulder_festivizer.mdl" + } + } + "attached_particlesystems" + { + "0" + { + "system" "xms_icicle_idle" + "attachment" "bip_middle_0_R" + } + } + + "sound_melee_miss" "" + "sound_melee_hit" "" + "sound_melee_hit_world" "Icicle.HitWorld" + } + } + "650" + { + "name" "The Kringle Collection" + "first_sale_date" "2011/12/19" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_SoldierWinterCoat" + "item_type_name" "#TF_Wearable_Coat" + "item_description" "#TF_SoldierWinterCoat_Desc" + "equip_region" "soldier_coat" + "propername" "1" + "image_inventory" "backpack/player/items/soldier/xms_snowcoat" + "model_player" "models/player/items/soldier/xms_snowcoat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "651" + { + "name" "The Jingle Belt" + "first_sale_date" "2011/12/19" + "prefab" "grenades" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_JingleHell" + "item_description" "#TF_JingleHell_Desc" + "item_type_name" "#TF_Wearable_Bells" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/xms_pyro_bells" + "model_player" "models/player/items/pyro/xms_pyro_bells.mdl" + "model_vision_filtered" "models/player/items/all_class/mtp_bottle_pyro.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + } + "652" + { + "name" "The Big Elfin Deal" + "prefab" "base_hat" + "first_sale_date" "2011/12/19" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_TheElf" + "item_description" "#TF_TheElf_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/xms_scout_elf_hat/xms_scout_elf_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/scout/xms_scout_elf_hat/xms_scout_elf_hat.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/xms_scout_elf_hat/xms_scout_elf_hat.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TheElf_Style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/xms_scout_elf_hat_style1/xms_scout_elf_hat_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TheElf_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "653" + { + "name" "The Bootie Time" + "prefab" "base_misc" + "first_sale_date" "2011/12/19" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_Scout_Elf_Boots" + "item_description" "#TF_Scout_Elf_Boots_Desc" + "item_slot" "misc" + "equip_region" "feet" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/xms_scout_elf_sneakers/xms_scout_elf_sneakers" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/scout/xms_scout_elf_sneakers/xms_scout_elf_sneakers.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "2" + } + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/xms_scout_elf_sneakers/xms_scout_elf_sneakers.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Scout_Elf_Boots_Style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/xms_scout_elf_sneakers_style1/xms_scout_elf_sneakers_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Scout_Elf_Boots_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "654" + { + "name" "Festive Minigun 2011" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_minigun/c_minigun_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_xmas.mdl" + } + } + } + "attach_to_hands" "1" + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "minigun" + } + "655" + { + "name" "Spirit Of Giving" + "prefab" "base_misc" + "loadondemand" "1" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Gifting_Badge" + "item_description" "#TF_Gifting_Badge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/xms_allclass_giftbadge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "strange" + "model_player" "models/player/items/all_class/xms_allclass_giftbadge.mdl" + "min_ilevel" "1" + "max_ilevel" "1" + "armory_desc" "duel_medal" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "8" + } + } + "visuals" + { + "skin" "2" + "use_per_class_bodygroups" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "656" + { + "name" "The Holiday Punch" + "first_sale_date" "2011/12/19" + "item_class" "tf_weapon_fists" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Fists" + "item_name" "#TF_MasculineMittens" + "item_description" "#TF_MasculineMittens_Desc" + "item_slot" "melee" + "item_logname" "holiday_punch" + "item_iconname" "holiday_punch" + "image_inventory" "backpack/workshop/weapons/c_models/c_xms_gloves/c_xms_gloves" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "53" + "model_player" "models/workshop/weapons/c_models/c_xms_gloves/c_xms_gloves.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "hide_bodygroups_deployed_only" "1" + "attributes" + { + "crit forces victim to laugh" + { + "attribute_class" "crit_forces_victim_to_laugh" + "value" "1" + } + "crit from behind" + { + "attribute_class" "crit_from_behind" + "value" "1" + } + "crit does no damage" + { + "attribute_class" "crit_does_no_damage" + "value" "1" + } + "tickle enemies wielding same weapon" + { + "attribute_class" "tickle_enemies_wielding_same_weapon" + "value" "1" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "25" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "0" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + "sound_deploy" "Weapon_mittens.HitGlove" + "sound_melee_hit" "Weapon_mittens.HitFlesh" + "sound_melee_hit_world" "Weapon_mittens.HitWorld" + "sound_burst" "Weapon_mittens.CritHit" + "animation_replacement" + { + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT1_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT1_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_boxing_gloves_drop.wav" + } + "657" + { + "name" "The Nine-Pipe Problem" + "first_sale_date" "2012/03/08" + "prefab" "misc" + "equip_region" "medic_pipe" + "item_type_name" "#TF_Wearable_Pipe" + "item_name" "#TF_MedicSmokingPipe" + "item_description" "#TF_MedicSmokingPipe_Desc" + "image_inventory" "backpack/player/items/medic/medic_smokingpipe" + "model_player" "models/player/items/medic/medic_smokingpipe.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/medic/medic_smokingpipe.mdl" + "name" "#TF_MedicSmokingPipe_Style0" + } + "1" + { + "model_player" "models/player/items/medic/medic_smokingpipe2.mdl" + "name" "#TF_MedicSmokingPipe_Style1" + } + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "658" + { + "name" "Festive Rocket Launcher 2011" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_rocketlauncher/c_rocketlauncher_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "rocket_launcher" + } + "659" + { + "name" "Festive Flamethrower 2011" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_flamethrower/c_flamethrower_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_xmas.mdl" + } + "1" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "flamethrower" + } + "660" + { + "name" "Festive Bat 2011" + "prefab" "weapon_bat" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Bat_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_bat/c_bat_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_bat/c_bat_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "bat" + } + "661" + { + "name" "Festive Stickybomb Launcher 2011" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_xmas" + "attach_to_hands" "1" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_xmas.mdl" + } + } + "styles" + { + "0" + { + "name" "#TF_Weapon_StickybombLauncher_Festive2011_Style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_Weapon_StickybombLauncher_Festive2011_Style1" + "skin_red" "2" + "skin_blu" "3" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "stickybomb_launcher" + } + "662" + { + "name" "Festive Wrench 2011" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_wrench/c_wrench_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "wrench" + } + "663" + { + "name" "Festive Medigun 2011" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_medigun/c_medigun_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "medigun" + } + "664" + { + "name" "Festive Sniper Rifle 2011" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_sniperrifle/c_sniperrifle_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "sniper_rifle" + } + "665" + { + "name" "Festive Knife 2011" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_knife/c_knife_xmas" + "attach_to_hands" "1" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "knife" + } + "666" + { + "name" "The B.M.O.C." + "first_sale_date" "2011/12/15" + "prefab" "hat" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Winter2011_SantaHat" + "item_description" "#TF_Winter2011_SantaHat_Desc" + "item_type_name" "#TF_Wearable_Holiday_Hat" + "image_inventory" "backpack/player/items/all_class/xms_santa_hat_demo" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/xms_santa_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "667" + { + "name" "The Holiday Headcase" + "first_sale_date" "2011/12/15" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Winter2011_GiftHat" + "item_description" "#TF_Winter2011_GiftHat_Desc" + "item_type_name" "#TF_Wearable_Holiday_Hat" + "image_inventory" "backpack/player/items/all_class/xms_gift_hat_demo" + "propername" "1" + "equip_regions" + { + "hat" "1" + "beard" "1" + "necklace" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/all_class/xms_gift_hat_%s.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "668" + { + "name" "The Full Head of Steam" + "first_sale_date" "2011/12/15" + "prefab" "hat" + "craft_class" "" + "craft_material_type" "" + "propername" "1" + "item_name" "#TF_FoundryAchievementHat" + "item_description" "#TF_FoundryAchievementHat_Desc" + "image_inventory" "backpack/player/items/all_class/xms_steamwhistle_spy" + "model_player_per_class" + { + "basename" "models/player/items/all_class/xms_steamwhistle_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "669" + { + "name" "Festive Scattergun 2011" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_Festive2011" + "image_inventory" "backpack/weapons/c_models/c_scattergun/c_scattergun_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "scattergun" + } + "670" + { + "name" "The Stocking Stuffer" + "first_sale_date" "2011/12/19" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_Winter2011_EngineerStocking" + "item_description" "#TF_Winter2011_EngineerStocking_Desc" + "item_type_name" "#TF_Wearable_Stocking" + "propername" "1" + "equip_region" "engineer_pocket" + "image_inventory" "backpack/player/items/engineer/xms_engineer_stocking" + "model_player" "models/player/items/engineer/xms_engineer_stocking.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "671" + { + "name" "The Brown Bomber" + "first_sale_date" "2011/12/19" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_Winter2011_WinterFurCap" + "item_description" "#TF_Winter2011_WinterFurCap_Desc" + "image_inventory" "backpack/player/items/all_class/xms_furcap_demo" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/xms_furcap_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Winter2011_WinterFurCap_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_Winter2011_WinterFurCap_Style1" + } + } + } + } + + + "673" + { + "name" "Noise Maker - Winter 2011" + "first_sale_date" "2011/12/15" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "noise_maker" + } + "capabilities" + { + "usable" "1" + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action noisemaker" + "item_type_name" "#TF_Party_Favor" + "item_name" "#TF_NoiseMaker_Winter2011" + "item_slot" "action" + "image_inventory" "backpack/crafting/noisemaker_xmas" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "holiday_restriction" "christmas" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + "unlimited quantity" + { + "attribute_class" "unlimited_quantity" + "value" "1" + } + } + "visuals" + { + "custom_sound0" "xmas.jingle_noisemaker" + "particle_effect" "xms_snowburst" + } + "mouse_pressed_sound" "xmas.jingle_noisemaker" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + + "675" + { + "name" "The Ebenezer" + "first_sale_date" "2011/12/15" + "prefab" "hat" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Winter2011_Ebenezer" + "item_description" "#TF_Winter2011_Ebenezer_Desc" + "item_type_name" "#TF_Wearable_Holiday_Hat" + "image_inventory" "backpack/player/items/all_class/xms_winter_joy_hat_demo" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/xms_winter_joy_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + + + "699" + { + "name" "Something Special For Someone Special" + "first_sale_date" "2011/12/19" + "capabilities" + { + "nameable" "1" + } + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Ring" + "item_name" "#TF_SomethingSpecial" + "item_description" "#TF_SomethingSpecial_Desc" + "image_inventory" "backpack/player/items/all_class/something_special" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "100" + "max_ilevel" "100" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + + "701" + { + "name" "The Lucky Shot" + "first_sale_date" "2012/01/10" + "prefab" "hat" + "item_name" "#TF_LuckyShot" + "item_description" "#TF_LuckyShot_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/player/items/soldier/luckyshot" + "model_player" "models/player/items/soldier/luckyShot.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + + "702" + { + "name" "The Warsworn Helmet" + "first_sale_date" "2012/01/13" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_WarswornHelmet" + "item_description" "#TF_WarswornHelmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/player/items/all_class/all_reckoning_eagonn_spy" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_reckoning_eagonn_%s.mdl" + } + "propername" "1" + "drop_type" "drop" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "703" + { + "name" "The Bolgan" + "first_sale_date" "2012/01/13" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_BolganHelmet" + "item_description" "#TF_BolganHelmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/player/items/all_class/all_reckoning_bolgan_demo" + "model_player" "models/player/items/all_class/all_reckoning_bolgan_demo.mdl" + "propername" "1" + "drop_type" "drop" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "704" + { + "name" "The Bolgan Family Crest" + "first_sale_date" "2012/01/13" + "prefab" "misc" + "equip_region" "medal" + "item_name" "#TF_ReckoningBadge" + "item_type_name" "#TF_Wearable_Badge" + "item_description" "#TF_ReckoningBadge_Desc" + "image_inventory" "backpack/player/items/all_class/all_reckoning_badge" + "model_player" "models/player/items/all_class/all_reckoning_badge.mdl" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + + + "707" + { + "name" "The Boston Boom-Bringer" + "first_sale_date" "2012/02/09" + "prefab" "misc" + "equip_region" "scout_backpack" + "item_name" "#TF_ScoutBoombox" + "item_type_name" "#TF_Wearable_Boombox" + "item_description" "#TF_ScoutBoombox_Desc" + "image_inventory" "backpack/player/items/scout/boombox" + "model_player" "models/player/items/scout/boombox.mdl" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "cosmetic taunt sound" + { + "attribute_class" "cosmetic_taunt_sound" + "value" "scout.boombox" + } + } + "visuals" + { + "custom_sound0" "scout.boombox" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "708" + { + "name" "Aladdin's Private Reserve" + "first_sale_date" "2012/01/26" + "prefab" "misc" + "equip_region" "demo_belt" + "item_name" "#TF_DemoLamp" + "item_type_name" "#TF_Wearable_MysticalLamp" + "item_description" "#TF_DemoLamp_Desc" + "image_inventory" "backpack/player/items/demo/djinn_lamp" + "model_player" "models/player/items/demo/djinn_lamp.mdl" + "propername" "0" + "drop_type" "none" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "709" + { + "name" "The Snapped Pupil" + "first_sale_date" "2012/02/14" + "prefab" "misc" + "equip_region" "glasses" + "item_name" "#TF_DemoSnappedPupil" + "item_type_name" "#TF_Wearable_Photograph" + "item_description" "#TF_DemoSnappedPupil_Desc" + "image_inventory" "backpack/player/items/demo/eyePhoto" + "model_player" "models/player/items/demo/eyePhoto.mdl" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "711" + { + "name" "Daily Duel Winner Reward Hat" + "prefab" "score_reward_hat" + "item_name" "#TF_DailyDuelWinnerRewardHat" + "item_description" "#TF_DailyDuelWinnerRewardHat_Desc" + "image_inventory" "backpack/player/items/all_class/dueler_demo" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/dueler_%s.mdl" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "712" + { + "name" "Daily Gift Giver Reward Hat" + "prefab" "score_reward_hat" + "item_name" "#TF_DailyGiftGiverRewardHat" + "item_description" "#TF_DailyGiftGiverRewardHat_Desc" + "image_inventory" "backpack/player/items/all_class/generous_demo" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/generous_%s.mdl" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "713" + { + "name" "Daily Map Stamp Reward Hat" + "prefab" "score_reward_hat" + "item_name" "#TF_DailyMapStampRewardHat" + "item_description" "#TF_DailyMapStampRewardHat_Desc" + "image_inventory" "backpack/player/items/all_class/stamper_demo" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/stamper_%s.mdl" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "718" + { + "name" "The Merc Medal" + "prefab" "base_misc" + "first_sale_date" "2012/01/31" + "loadondemand" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Jag_Badge" + "item_description" "#TF_Jag_Badge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/jag_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "1" + "model_player" "models/player/items/all_class/jag_badge.mdl" + "min_ilevel" "20" + "max_ilevel" "20" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "719" + { + "name" "The Battle Bob" + "first_sale_date" "2012/01/31" + "prefab" "hat_decoration" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Jag_Haircut" + "item_description" "#TF_Jag_Haircut_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/player/items/soldier/jag_bob_haircut" + "model_player" "models/player/items/soldier/jag_bob_haircut.mdl" + "propername" "1" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_Jag_Haircut_Style_NoHelmet" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_Jag_Haircut_Style_WithHelmet" + } + } + } + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "720" + { + "name" "The Bushman's Boonie" + "first_sale_date" "2012/01/31" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Jag_Shadow" + "item_description" "#TF_Jag_Shadow_Desc" + "image_inventory" "backpack/player/items/sniper/jag_shadow" + "model_player" "models/player/items/sniper/jag_shadow.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "721" + { + "name" "The Conquistador" + "first_sale_date" "2012/02/02" + "prefab" "hat" + "item_name" "#TF_Conquistador" + "item_description" "#TF_Conquistador_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/player/items/soldier/morion" + "model_player" "models/player/items/soldier/morion.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "722" + { + "name" "The Fast Learner" + "first_sale_date" "2012/02/22" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + } + "equip_regions" + { + "shirt" "1" + "arm_tattoos" "1" + } + "item_name" "#TF_ScoutPrepShirt" + "item_type_name" "#TF_Wearable_Shirt" + "item_description" "#TF_ScoutPrepShirt_Desc" + "image_inventory" "backpack/player/items/scout/scout_prep_shirt" + "model_player" "models/player/items/scout/scout_prep_shirt.mdl" + "propername" "1" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_ScoutPrepShirt_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_ScoutPrepShirt_Style1" + } + } + } + "used_by_classes" + { + "scout" "1" + } + } + + + + "725" + { + "name" "Tour of Duty Ticket" + "prefab" "valve" + "first_sale_date" "2012/08/16" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_Ticket" + "item_name" "#TF_MvM_ChallengeTicket" + "item_description" "#TF_MvM_ChallengeTicket_Desc" + "image_inventory" "backpack/crafting/mvm_ticket" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + } + "726" + { + "name" "Tour of Duty Badge Advanced 1" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_MvM_Badge_Advanced1" + "item_description" "#TF_MvM_Badge_Advanced1_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/mvm_loot/all_class/mvm_badge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/mvm_loot/all_class/mvm_badge.mdl" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "727" + { + "name" "The Black Rose" + "first_sale_date" "2012/02/16" + "item_class" "tf_weapon_knife" + "prefab" "weapon_knife" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Knife" + "propername" "1" + "item_quality" "unique" + "item_name" "#TF_BlackRose" + "item_description" "#TF_BlackRose_Desc" + "item_slot" "melee" + "item_logname" "black_rose" + "item_iconname" "black_rose" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_ava_roseknife/c_ava_roseknife_v" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "25" + "attach_to_hands" "1" + "model_player" "models/workshop/weapons/c_models/c_ava_roseknife/c_ava_roseknife.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_BlackRose_Style_TeamColors" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_BlackRose_Style_Black" + } + } + } + "attributes" + { + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + + + "729" + { + "name" "Store Purchase Promotion Package" + "prefab" "valve" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "store_promotion_loot_list" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_StorePromotionPackage" + "item_description" "#TF_StorePromotionPackage_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/shopping_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "730" + { + "name" "The Beggar's Bazooka" + "first_sale_date" "2012/06/27" + "item_class" "tf_weapon_rocketlauncher" + "propername" "1" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketLauncher" + "item_name" "#TF_DS_DumpsterDevice" + "item_description" "#TF_DS_DumpsterDevice_Desc" + "item_logname" "dumpster_device" + "item_iconname" "dumpster_device" + "item_slot" "primary" + "item_quality" "unique" + "inspect_panel_dist" "68" + "image_inventory" "backpack/workshop/weapons/c_models/c_dumpster_device/c_dumpster_device" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_dumpster_device/c_dumpster_device.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + } + "attributes" + { + "fire rate bonus HIDDEN" + { + "attribute_class" "mult_postfiredelay" + "value" "0.3" + } + "auto fires full clip" + { + "attribute_class" "auto_fires_full_clip" + "value" "1" + } + "can overload" + { + "attribute_class" "can_overload" + "value" "1" + } + "reload time increased hidden" + { + "attribute_class" "mult_reload_time_hidden" + "value" "1.3" + } + "clip size penalty HIDDEN" + { + "attribute_class" "mult_clipsize" + "value" "0.75" + } + "projectile spread angle penalty" + { + "attribute_class" "projectile_spread_angle" + "value" "3" + } + "no primary ammo from dispensers while active" + { + "attribute_class" "no_primary_ammo_from_dispensers" + "value" "1" + } + "blast radius decreased" + { + "attribute_class" "mult_explosion_radius" + "value" "0.8" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Does_Dumpster.Single" + "sound_burst" "Weapon_Does_Dumpster.SingleCrit" + "sound_reload" "Weapon_DumpsterRocket.Reload" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "731" + { + "name" "The Captain's Cocktails" + "first_sale_date" "2012/07/10" + "prefab" "grenades" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_DS_CanGrenades" + "item_description" "#TF_DS_CanGrenades_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/soldier/ds_can_grenades" + "model_player" "models/player/items/soldier/ds_can_grenades.mdl" + "model_vision_filtered" "models/player/items/all_class/mtp_bottle_soldier.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "732" + { + "name" "The Helmet Without a Home" + "first_sale_date" "2012/07/10" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "propername" "1" + "item_name" "#TF_DS_FootballHelmet" + "item_description" "#TF_DS_FootballHelmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/soldier/ds_football_helmet" + "model_player" "models/player/items/soldier/ds_football_helmet.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "733" + { + "name" "Pet Robro" + "prefab" "base_misc" + "first_sale_date" "2012/08/15" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "equip_region" "disconnected_floating_item" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Robot" + "item_name" "#TF_Pet_Robro" + "item_description" "#TF_Pet_Robro_Desc" + "item_slot" "misc" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "image_inventory" "backpack/player/items/all_class/pet_robro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/all_class/pet_robro.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + + "734" + { + "name" "The Teufort Tooth Kicker" + "prefab" "base_misc" + "first_sale_date" "2012/03/01" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "item_type_name" "TF_Wearable_Boots" + "item_name" "#TF_CowboyBoots" + "item_description" "#TF_CowboyBoots_Desc" + "item_slot" "misc" + "propername" "1" + "equip_region" "feet" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/cowboyboots_soldier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/cowboyboots_%s.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "demoman" "1" + "soldier" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + "shoes" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + "738" + { + "name" "Pet Balloonicorn" + "prefab" "valve base_misc" + "first_sale_date" "2012/06/27" + "hidden" "0" + "vision_filter_flags" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Balloon" + "item_name" "#TF_Pet_Balloonicorn" + "item_description" "#TF_Pet_Balloonicorn_Desc" + "item_slot" "misc" + "equip_region" "disconnected_floating_item" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "image_inventory" "backpack/player/items/all_class/pet_balloonicorn" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/all_class/pet_balloonicorn.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + "pyrovision only DISPLAY ONLY" + { + "attribute_class" "pyrovision_only_display" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_mtp_pickup.wav" + "drop_sound" "ui/item_mtp_drop.wav" + } + "739" + { + "name" "The Lollichop" + "prefab" "valve" + "first_sale_date" "2012/06/27" + "item_class" "tf_weapon_fireaxe" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_logname" "lollichop" + "item_iconname" "lollichop" + "show_in_armory" "1" + "item_type_name" "#tf_weapon_fireaxe" + "item_name" "#TF_Lollichop" + "item_description" "#TF_Lollichop_Desc" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_lollichop/c_lollichop" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_lollichop/c_lollichop.mdl" + "model_vision_filtered" "models/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "15 2 -12" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "pyrovision only DISPLAY ONLY" + { + "attribute_class" "pyrovision_only_display" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_mtp_pickup.wav" + "drop_sound" "ui/item_mtp_drop.wav" + } + "740" + { + "name" "The Scorch Shot" + "prefab" "weapon_scorch_shot paintkit_base" + "first_sale_date" "2012/06/27" + "particle_suffix" "scorch_shot" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_scorch_shot/c_scorch_shot_festivizer.mdl" + } + } + } + } + "741" + { + "name" "The Rainblower" + "prefab" "valve weapon_flamethrower" + "first_sale_date" "2012/06/27" + "item_class" "tf_weapon_flamethrower" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_reflect_projectiles" "1" + "can_extinguish" "1" + "can_deal_critical_damage" "1" + "can_deal_posthumous_damage" "1" + "is_flamethrower" "1" + "can_deal_taunt_damage" "1" + } + "item_logname" "rainblower" + "item_iconname" "rainblower" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flamethrower" + "item_name" "#TF_Rainblower" + "item_description" "#TF_Rainblower_Desc" + "item_slot" "primary" + "image_inventory" "backpack/weapons/c_models/c_rainblower/c_rainblower" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_rainblower/c_rainblower.mdl" + "model_vision_filtered" "models/weapons/c_models/c_flamethrower/c_flamethrower.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -23" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "3" + } + "pyrovision only DISPLAY ONLY" + { + "attribute_class" "pyrovision_only_display" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Rainblower.Fire" + "sound_special1" "Weapon_Rainblower.FireLoop" + "sound_special2" "Weapon_Rainblower.PilotLoop" + "sound_special3" "Weapon_Rainblower.WindDown" + } + "mouse_pressed_sound" "ui/item_mtp_pickup.wav" + "drop_sound" "ui/item_mtp_drop.wav" + } + + + "743" + { + "name" "Autogrant Pyrovision Goggles" + "prefab" "pyrovision_goggles" + "attributes" + { + } + } + "744" + { + "name" "Pyrovision Goggles" + "prefab" "pyrovision_goggles" + } + "745" + { + "name" "The Infernal Orchestrina" + "prefab" "valve base_misc" + "first_sale_date" "2012/07/10" + "item_class" "tf_wearable" + "loadondemand" "1" + "craft_class" "hat" + "craft_material_type" "hat" + "show_in_armory" "1" + "item_quality" "unique" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "item_slot" "misc" + "equip_region" "back" + "vision_filter_flags" "1" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_PyroMusicDevice" + "item_description" "#TF_PyroMusicDevice_Desc" + "image_inventory" "backpack/player/items/pyro/mtp_backpack" + "propername" "1" + "model_player_per_class" + { + "basename" "models/player/items/%s/mtp_backpack.mdl" + } + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "pyrovision only DISPLAY ONLY" + { + "attribute_class" "pyrovision_only_display" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + "cosmetic taunt sound" + { + "attribute_class" "cosmetic_taunt_sound" + "value" "pyro.music_backpack" + } + } + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + "playback_activity" + { + "on_spawn" "ACT_IDLE" + "start_taunting" "ACT_RUN" + "stop_taunting" "ACT_IDLE" + } + "custom_sound0" "pyro.music_backpack" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "746" + { + "name" "The Burning Bongos" + "first_sale_date" "2012/07/10" + "prefab" "valve grenades" + "vision_filter_flags" "1" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Bongos" + "item_name" "#TF_PyroBongos" + "item_description" "#TF_PyroBongos_Desc" + "image_inventory" "backpack/player/items/pyro/mtp_bongos" + "propername" "1" + "model_player_per_class" + { + "basename" "models/player/items/%s/mtp_bongos.mdl" + } + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "pyrovision only DISPLAY ONLY" + { + "attribute_class" "pyrovision_only_display" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + } + } + + + "751" + { + "name" "The Cleaner's Carbine" + "first_sale_date" "2012/06/27" + "baseitem" "0" + "propername" "1" + "item_class" "tf_weapon_charged_smg" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "pro_smg" + "item_iconname" "pro_smg" + "item_type_name" "#TF_Weapon_SMG" + "item_name" "#TF_Pro_SMG" + "item_description" "#TF_Pro_SMG_Desc" + "item_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_pro_smg/c_pro_smg" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_pro_smg/c_pro_smg.mdl" + "attach_to_hands" "1" + "attributes" + { + "fire rate penalty" + { + "attribute_class" "mult_postfiredelay" + "value" "1.25" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.80" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + "minicrit_boost_charge_rate" + { + "attribute_class" "minicrit_boost_charge_rate" + "value" "1" + } + "minicrit_boost_when_charged" + { + "attribute_class" "minicrit_boost_when_charged" + "value" "8" + } + } + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -7" + } + "visuals" + { + "sound_single_shot" "Weapon_UrbanProfessional.Single" + "sound_burst" "Weapon_UrbanProfessional.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "752" + { + "name" "The Hitman's Heatmaker" + "first_sale_date" "2012/06/27" + "item_class" "tf_weapon_sniperrifle" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_headshot" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "item_logname" "pro_rifle" + "item_iconname" "pro_rifle" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_Pro_SniperRifle" + "item_description" "#TF_Pro_SniperRifle_Desc" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "inspect_panel_dist" "58" + "image_inventory" "backpack/workshop/weapons/c_models/c_pro_rifle/c_pro_rifle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_pro_rifle/c_pro_rifle.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 0 -8" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "attributes" + { + "decapitate type" + { + "attribute_class" "decapitate_type" + "value" "1" + } + "damage penalty on bodyshot" + { + "attribute_class" "bodyshot_damage_modify" + "value" "0.80" + } + "rage on kill" + { + "attribute_class" "rage_on_kill" + "value" "35" + } + "rage on assists" + { + "attribute_class" "rage_on_assists" + "value" "15" + } + "mod soldier buff type" + { + "attribute_class" "set_buff_type" + "value" "6" + } + "sniper rage DISPLAY ONLY" + { + "attribute_class" "sniper_rage_DISPLAY_ONLY" + "value" "0" + } + } + "visuals" + { + "sound_single_shot" "Weapon_ProSniperRifle.Single" + "sound_burst" "Weapon_ProSniperRifle.SingleCrit" + } + } + "753" + { + "name" "The Waxy Wayfinder" + "first_sale_date" "2012/03/22" + "prefab" "hat" + "item_name" "#TF_PyroCandle" + "item_description" "#TF_PyroCandle_Desc" + "image_inventory" "backpack/player/items/pyro/pyro_candle" + "model_player" "models/player/items/pyro/pyro_candle.mdl" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "754" + { + "name" "The Scrap Pack" + "prefab" "backpack" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Robot" + "item_name" "#TF_ShootManyRobotsPack" + "item_description" "#TF_ShootManyRobotsPack_Desc" + "image_inventory" "backpack/player/items/pyro/shootmanyrobots_pyro" + "propername" "1" + "model_player_per_class" + { + "basename" "models/player/items/%s/shootmanyrobots_%s.mdl" + } + "used_by_classes" + { + "medic" "1" + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + + "755" + { + "name" "The Texas Half-Pants" + "first_sale_date" "2012/04/17" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + } + "equip_region" "pants" + "item_type_name" "TF_Wearable_Pants" + "item_name" "#TF_EngineerChaps" + "item_description" "#TF_EngineerChaps_Desc" + "image_inventory" "backpack/player/items/engineer/engineer_chaps" + "model_player" "models/player/items/engineer/engineer_chaps.mdl" + "propername" "1" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_EngineerChaps_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_EngineerChaps_Style1" + } + } + } + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "756" + { + "name" "The Bolt Action Blitzer" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_CrimeCraftHelmet" + "item_description" "#TF_CrimeCraftHelmet_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/crimecraft_helmet_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/crimecraft_helmet_%s.mdl" + } + "drop_type" "drop" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "757" + { + "name" "The Toss-Proof Towel" + "first_sale_date" "2012/04/26" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "heavy_towel" + "item_type_name" "TF_Wearable_Apparel" + "item_name" "#TF_HeavyBoxingTowel" + "item_description" "#TF_HeavyBoxingTowel_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_boxingtowel" + "model_player" "models/player/items/heavy/heavy_boxingtowel.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "758" + { + "name" "MvM Squad Surplus Voucher" + "prefab" "valve" + "first_sale_date" "2012/08/16" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_Ticket" + "item_name" "#TF_MvM_SquadSurplusVoucher" + "item_description" "#TF_MvM_SquadSurplusVoucher_Desc" + "image_inventory" "backpack/crafting/mvm_squad_surplus" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "759" + { + "name" "The Fruit Shoot" + "first_sale_date" "2012/05/03" + "prefab" "hat" + "item_name" "#TF_SniperAppleArrow" + "item_description" "#TF_SniperAppleArrow_Desc" + "image_inventory" "backpack/player/items/sniper/sniper_applearrow" + "model_player" "models/player/items/sniper/sniper_applearrow.mdl" + "propername" "1" + "drop_type" "drop" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bald_head_pickup.wav" + "drop_sound" "ui/item_bald_head_pickup.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/player/items/sniper/sniper_applearrow.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SniperAppleArrow_Style0" + } + "1" + { + "model_player" "models/player/items/sniper/sniper_appleworm.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SniperAppleArrow_Style1" + } + "2" + { + "model_player" "models/player/items/sniper/sniper_applebite.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SniperAppleArrow_Style2" + } + } + } + } + "760" + { + "name" "The Front Runner" + "first_sale_date" "2012/05/10" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_ScoutHeadband" + "item_description" "#TF_ScoutHeadband_Desc" + "image_inventory" "backpack/player/items/scout/scout_headband" + "model_player" "models/player/items/scout/scout_headband.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ScoutHeadband_Style0" + "model_player" "models/player/items/scout/scout_headband.mdl" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ScoutHeadband_Style1" + "model_player" "models/player/items/scout/scout_headband_s01.mdl" + } + } + } + } + "761" + { + "name" "The Triclops" + "prefab" "promo hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_SuperMNC_Pyro" + "item_description" "#TF_SuperMNC_Pyro_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "whole_head" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/smnc_pyro" + "model_player" "models/player/items/pyro/smnc_pyro.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_SuperMNC_Pyro_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_SuperMNC_Pyro_Style1" + } + } + } + } + "762" + { + "name" "The Flamingo Kid" + "prefab" "promo hat" + "capabilities" + { + } + "item_name" "#TF_SuperMNC_Sniper" + "item_description" "#TF_SuperMNC_Sniper_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/sniper/smnc_sniper" + "model_player" "models/player/items/sniper/smnc_sniper.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "763" + { + "name" "The Sneaky Spats of Sneaking" + "first_sale_date" "2012/05/17" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "feet" + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_SpySpats" + "item_description" "#TF_SpySpats_Desc" + "image_inventory" "backpack/player/items/spy/spy_spats" + "model_player" "models/player/items/spy/spy_spats.mdl" + "propername" "1" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "764" + { + "name" "The Cross-Comm Crash Helmet" + "prefab" "hat_decoration" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_GRFS_1" + "item_description" "#TF_GRFS_1_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/soldier/grfs_soldier" + "model_player" "models/player/items/soldier/grfs_soldier.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "765" + { + "name" "The Cross-Comm Express" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_GRFS_2" + "item_description" "#TF_GRFS_2_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/scout/grfs_scout" + "model_player" "models/player/items/scout/grfs_scout.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "766" + { + "name" "The Doublecross-Comm" + "prefab" "beard" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_GRFS_3" + "item_description" "#TF_GRFS_3_Desc" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "image_inventory" "backpack/player/items/sniper/grfs_sniper" + "model_player_per_class" + { + "basename" "models/player/items/%s/grfs_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "767" + { + "name" "The Atomic Accolade" + "first_sale_date" "2012/05/30" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_QC_Badge" + "item_description" "#TF_QC_Badge_Desc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/qc_badge" + "propername" "1" + "model_player" "models/player/items/all_class/qc_badge.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "768" + { + "name" "The Professor's Pineapple" + "first_sale_date" "2012/05/30" + "prefab" "grenades" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_QC_Flasks" + "item_description" "#TF_QC_Flasks_Desc" + "item_type_name" "#TF_Wearable_ScienceProject" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/qc_flask_demo" + "model_player_per_class" + { + "basename" "models/player/items/all_class/qc_flask_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "769" + { + "name" "The Quadwrangler" + "first_sale_date" "2012/05/30" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_QC_MedicGlove" + "item_description" "#TF_QC_MedicGlove_Desc" + "item_type_name" "#TF_Wearable_ScienceProject" + "equip_region" "medic_gloves" + "propername" "1" + "image_inventory" "backpack/player/items/medic/qc_glove" + "model_player" "models/player/items/medic/qc_glove.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "770" + { + "name" "The Surgeon's Side Satchel" + "first_sale_date" "2012/05/31" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "medic_hip" + "item_type_name" "#TF_Wearable_Satchel" + "item_name" "#TF_MedicClipboard" + "item_description" "#TF_MedicClipboard_Desc" + "image_inventory" "backpack/player/items/medic/medic_clipboard" + "model_player" "models/player/items/medic/medic_clipboard.mdl" + "propername" "1" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "771" + { + "name" "The Liquor Locker" + "first_sale_date" "2012/06/07" + "prefab" "misc" + "equip_region" "back" + "item_type_name" "#TF_Wearable_Treasure" + "item_name" "#TF_DemoTreasureChest" + "item_description" "#TF_DemoTreasureChest_Desc" + "image_inventory" "backpack/player/items/demo/demo_chest_back" + "model_player" "models/player/items/demo/demo_chest_back.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/demo/demo_chest_back.mdl" + "name" "#TF_DemoTreasureChest_Style0" + } + "1" + { + "model_player" "models/player/items/demo/demo_chest_front.mdl" + "name" "#TF_DemoTreasureChest_Style1" + } + "2" + { + "model_player" "models/player/items/demo/demo_chest_r.mdl" + "name" "#TF_DemoTreasureChest_Style2" + } + "3" + { + "model_player" "models/player/items/demo/demo_chest_l.mdl" + "name" "#TF_DemoTreasureChest_Style3" + } + } + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "772" + { + "name" "Baby Face's Blaster" + "prefab" "weapon_scattergun" + "first_sale_date" "2012/06/27" + "item_class" "tf_weapon_pep_brawler_blaster" + "capabilities" + { + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Scattergun" + "item_name" "#TF_Weapon_PEP_Scattergun" + "item_description" "#TF_Weapon_PEP_Scattergun_Desc" + "item_logname" "pep_brawlerblaster" + "item_iconname" "pep_brawlerblaster" + "item_quality" "unique" + "baseitem" "0" + "min_ilevel" "10" + "max_ilevel" "10" + "inspect_panel_dist" "38" + "image_inventory" "backpack/workshop/weapons/c_models/c_pep_scattergun/c_pep_scattergun" + "model_player" "models/workshop/weapons/c_models/c_pep_scattergun/c_pep_scattergun.mdl" + "attach_to_hands" "1" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -12" + } + "attributes" + { + "move speed penalty" + { + "attribute_class" "mult_player_movespeed" + "value" "0.90" + } + "boost on damage" + { + "attribute_class" "boost_on_damage" + "value" "1" + } + "hype resets on jump" + { + "attribute_class" "hype_resets_on_jump" + "value" "75" + } + "lose hype on take damage" + { + "attribute_class" "lose_hype_on_take_damage" + "value" "4" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.66" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Brawler_Blaster.Single" + "sound_burst" "Weapon_Brawler_Blaster.SingleCrit" + } + } + "773" + { + "name" "Pretty Boy's Pocket Pistol" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "first_sale_date" "2012/06/27" + "item_class" "tf_weapon_handgun_scout_secondary" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Pistol" + "item_name" "#TF_Weapon_PEP_Pistol" + "item_description" "#TF_Weapon_PEP_Pistol_Desc" + "item_logname" "pep_pistol" + "item_iconname" "pep_pistol" + "item_slot" "secondary" + "item_quality" "unique" + "baseitem" "0" + "min_ilevel" "10" + "max_ilevel" "10" + "show_in_armory" "1" + "attach_to_hands" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_pep_pistol/c_pep_pistol" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "31" + "model_player" "models/workshop/weapons/c_models/c_pep_pistol/c_pep_pistol.mdl" + "capabilities" + { + "can_collect" "1" + } + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "heal on hit for rapidfire" + { + "attribute_class" "add_onhit_addhealth" + "value" "3" + } + "fire rate bonus" + { + "attribute_class" "mult_postfiredelay" + "value" "0.85" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.75" + } + } + "visuals" + { + "sound_single_shot" "Weapon_PickPocket_Pistol.Single" + "sound_burst" "Weapon_PickPocket_Pistol.SingleCrit" + } + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "774" + { + "name" "The Gentle Munitionne of Leisure" + "first_sale_date" "2012/06/27" + "prefab" "hat" + "craft_class" "" + "craft_material_type" "" + "propername" "1" + "drop_type" "drop" + "item_name" "#TF_DoomsdayAchievementHat" + "item_description" "#TF_DoomsdayAchievementHat_Desc" + "image_inventory" "backpack/player/items/all_class/sd_rocket_spy" + "model_player_per_class" + { + "basename" "models/player/items/all_class/sd_rocket_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "775" + { + "name" "The Escape Plan" + "prefab" "valve" + "first_sale_date" "2012/06/29" + "item_class" "tf_weapon_shovel" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_taunt_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Pickaxe" + "item_name" "#TF_Unique_Pickaxe_EscapePlan" + "item_logname" "unique_pickaxe_escape" + "item_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/weapons/c_models/c_pickaxe/c_pickaxe" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "50" + "model_player" "models/weapons/c_models/c_pickaxe/c_pickaxe.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -11" + } + "attributes" + { + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "mod shovel speed boost" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "reduced_healing_from_medics" + { + "attribute_class" "mult_healing_from_medics" + "value" "0.1" + } + "self mark for death" + { + "attribute_class" "self_mark_for_death" + "value" "1" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + } + "visuals" + { + "sound_melee_miss" "Weapon_PickAxe.Swing" + "sound_melee_hit" "Weapon_PickAxe.HitFlesh" + "sound_burst" "Weapon_PickAxe.SwingCrit" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "776" + { + "name" "The Bird-Man of Aberdeen" + "first_sale_date" "2012/07/10" + "prefab" "misc" + "equip_region" "left_shoulder" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_DemoParrot" + "item_description" "#TF_DemoParrot_Desc" + "image_inventory" "backpack/player/items/demo/demo_parrot" + "model_player" "models/player/items/demo/demo_parrot.mdl" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_DemoParrot_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_DemoParrot_Style1" + } + "2" + { + "skin" "2" + "name" "#TF_DemoParrot_Style2" + } + } + } + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "777" + { + "name" "The Apparatchik's Apparel" + "first_sale_date" "2012/07/10" + "prefab" "misc" + "equip_regions" + { + "shirt" "1" + "arm_tattoos" "1" + } + "item_name" "#TF_HeavyShirt" + "item_type_name" "#TF_Wearable_Shirt" + "item_description" "#TF_HeavyShirt_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_shirt" + "model_player" "models/player/items/heavy/heavy_shirt.mdl" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_HeavyShirt_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_HeavyShirt_Style1" + } + "2" + { + "skin_red" "4" + "skin_blu" "5" + "name" "#TF_HeavyShirt_Style2" + } + "3" + { + "skin_red" "6" + "skin_blu" "7" + "name" "#TF_HeavyShirt_Style3" + } + } + } + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "778" + { + "name" "The Gentleman's Ushanka" + "prefab" "hat" + "first_sale_date" "2012/07/10" + "item_name" "#TF_MedicUshanka" + "item_description" "#TF_MedicUshanka_Desc" + "image_inventory" "backpack/player/items/medic/medic_ushanka" + "model_player" "models/player/items/medic/medic_ushanka.mdl" + "propername" "1" + "drop_type" "drop" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "779" + { + "name" "Liquidator's Lid" + "first_sale_date" "2012/07/10" + "prefab" "hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Pro_SniperHat" + "item_description" "#TF_Pro_SniperHat_Desc" + "image_inventory" "backpack/player/items/sniper/pro_hat" + "model_player" "models/player/items/sniper/pro_hat.mdl" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "780" + { + "name" "The Fed-Fightin' Fedora" + "first_sale_date" "2012/07/10" + "prefab" "hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PEP_ScoutHat" + "item_description" "#TF_PEP_ScoutHat_Desc" + "image_inventory" "backpack/player/items/scout/pep_hat" + "model_player" "models/player/items/scout/pep_hat.mdl" + "propername" "1" + "drop_type" "drop" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "781" + { + "name" "Dillinger's Duffel" + "first_sale_date" "2012/07/10" + "prefab" "misc" + "equip_region" "scout_backpack" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_PEP_ScoutBag" + "item_description" "#TF_PEP_ScoutBag_Desc" + "image_inventory" "backpack/player/items/scout/pep_bag" + "model_player" "models/player/items/scout/pep_bag.mdl" + "drop_type" "none" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "782" + { + "name" "The Business Casual" + "first_sale_date" "2012/07/10" + "prefab" "misc" + "equip_region" "spy_coat" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_SpyOpenJacket" + "item_description" "#TF_SpyOpenJacket_Desc" + "image_inventory" "backpack/player/items/spy/spy_openjacket" + "model_player" "models/player/items/spy/spy_openjacket.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "783" + { + "name" "The HazMat Headcase" + "first_sale_date" "2012/07/10" + "prefab" "misc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_PyroHazmat" + "item_description" "#TF_PyroHazmat_Desc" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/pyro_hazmat/pyro_hazmat" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pyro_hazmat/pyro_hazmat_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pyro_hazmat/pyro_hazmat_%s.mdl" + } + "name" "#TF_PyroHazmat_Style0" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pyro_hazmat_2/pyro_hazmat_2_%s.mdl" + } + "name" "#TF_PyroHazmat_Style1" + } + "2" + { + "skin_red" "0" + "skin_blu" "1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pyro_hazmat_3/pyro_hazmat_3_%s.mdl" + } + "name" "#TF_PyroHazmat_Style2" + } + "3" + { + "skin_red" "0" + "skin_blu" "1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pyro_hazmat_4/pyro_hazmat_4_%s.mdl" + } + "name" "#TF_PyroHazmat_Style3" + } + } + } + } + "784" + { + "name" "The Idea Tube" + "first_sale_date" "2012/07/10" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "back" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_EngineerBlueprintsBack" + "item_description" "#TF_EngineerBlueprintsBack_desc" + "image_inventory" "backpack/player/items/engineer/engineer_blueprints_back" + "model_player" "models/player/items/engineer/engineer_blueprints_back.mdl" + "propername" "1" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "785" + { + "name" "Robot Chicken Hat" + "first_sale_date" "2012/12/13" + "prefab" "hat" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RobotChickenHat" + "item_description" "#TF_RobotChickenHat_Desc" + "equip_region" "hat" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/workshop_partner/player/items/all_class/as_robot_chicken/as_robot_chicken_demo" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/as_robot_chicken/as_robot_chicken_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/as_robot_chicken/as_robot_chicken_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_RobotChickenHat_Style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/as_robot_chicken/as_robot_chicken_%s_b.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_RobotChickenHat_Style1" + } + } + } + } + "786" + { + "name" "The Grenadier Helm" + "prefab" "hat" + "first_sale_date" "2012/08/09" + "craft_class" "" + "item_name" "#TF_HA_Demo" + "item_description" "#TF_HA_Demo_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop_partner/player/items/demo/hero_academy_demo/hero_academy_demo" + "model_player" "models/workshop_partner/player/items/demo/hero_academy_demo/hero_academy_demo.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "787" + { + "name" "The Tribal Bones" + "prefab" "misc" + "first_sale_date" "2012/08/09" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_Bones" + "item_name" "#TF_HA_Pyro" + "item_description" "#TF_HA_Pyro_Desc" + "propername" "1" + "equip_region" "necklace" + "image_inventory" "backpack/workshop_partner/player/items/pyro/hero_academy_pyro/hero_academy_pyro" + "model_player" "models/workshop_partner/player/items/pyro/hero_academy_pyro/hero_academy_pyro.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "788" + { + "name" "The Void Monk Hair" + "prefab" "hat" + "first_sale_date" "2012/08/09" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_HA_Scout" + "item_description" "#TF_HA_Scout_Desc" + "item_type_name" "#TF_Wearable_Hair" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/scout/hero_academy_scout/hero_academy_scout" + "model_player" "models/workshop_partner/player/items/scout/hero_academy_scout/hero_academy_scout.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "789" + { + "name" "The Ninja Cowl" + "prefab" "hat" + "first_sale_date" "2012/08/09" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_HA_Spy" + "item_description" "#TF_HA_Spy_Desc" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "equip_region" "whole_head" + "image_inventory" "backpack/workshop_partner/player/items/spy/hero_academy_spy/hero_academy_spy" + "model_player" "models/workshop_partner/player/items/spy/hero_academy_spy/hero_academy_spy.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + + "790" + { + "name" "Sandvich Promo Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "sandvich_promo_package_loot_list" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "0" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_mystery" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_Sandvich_Promo_Package" + "item_description" "#TF_Sandvich_Promo_Package_Desc" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "791" + { + "name" "Companion Square Promo Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "companion_square_promo_package_loot_list" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "0" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_mystery" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_Companion_Square_Promo_Package" + "item_description" "#TF_Companion_Square_Promo_Package_Desc" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "792" + { + "name" "Silver Botkiller Sniper Rifle Mk.I" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_h_sniperrifle" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + + "793" + { + "name" "Silver Botkiller Minigun Mk.I" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_h_minigun" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "794" + { + "name" "Silver Botkiller Knife Mk.I" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_h_knife" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "xifier_class_remap" "knife" + } + "795" + { + "name" "Silver Botkiller Wrench Mk.I" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_h_wrench" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "xifier_class_remap" "wrench" + } + "796" + { + "name" "Silver Botkiller Medi Gun Mk.I" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_h_medigun" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "797" + { + "name" "Silver Botkiller Stickybomb Launcher Mk.I" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_h_stickybomb" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "798" + { + "name" "Silver Botkiller Flame Thrower Mk.I" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_h_flamethrower" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_h_flamethrower.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_v.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "xifier_class_remap" "flamethrower" + } + "799" + { + "name" "Silver Botkiller Scattergun Mk.I" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_h_scattergun" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "800" + { + "name" "Silver Botkiller Rocket Launcher Mk.I" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_AdvancedMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_h_rocketlauncher" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "801" + { + "name" "Gold Botkiller Sniper Rifle Mk.I" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_h_sniperrifle_gold" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "802" + { + "name" "Gold Botkiller Minigun Mk.I" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_h_minigun_gold" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "803" + { + "name" "Gold Botkiller Knife Mk.I" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_h_knife_gold" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "xifier_class_remap" "knife" + } + "804" + { + "name" "Gold Botkiller Wrench Mk.I" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_h_wrench_gold" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "xifier_class_remap" "wrench" + } + "805" + { + "name" "Gold Botkiller Medi Gun Mk.I" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_h_medigun_gold" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "806" + { + "name" "Gold Botkiller Stickybomb Launcher Mk.I" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_h_stickybomb_gold" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "807" + { + "name" "Gold Botkiller Flame Thrower Mk.I" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_h_flamethrower_gold" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_h_flamethrower.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_v.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "flamethrower" + } + "808" + { + "name" "Gold Botkiller Scattergun Mk.I" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_h_scattergun_gold" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "809" + { + "name" "Gold Botkiller Rocket Launcher Mk.I" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_AdvancedMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_h_rocketlauncher_gold" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "810" + { + "name" "The Red-Tape Recorder" + "prefab" "weapon_red_tape_recorder" + } + "811" + { + "name" "The Huo Long Heatmaker" + "prefab" "weapon_long_heatmaker" + "inspect_panel_dist" "88" + } + "812" + { + "name" "The Flying Guillotine" + "prefab" "weapon_guillotine" + "inspect_panel_dist" "40" + } + "813" + { + "name" "The Neon Annihilator" + "prefab" "weapon_annihilator" + "inspect_panel_dist" "95" + } + "814" + { + "name" "The Triad Trinket" + "prefab" "triad_trinket" + } + "815" + { + "name" "The Champ Stamp" + "prefab" "champ_stamp" + } + "816" + { + "name" "The Marxman" + "prefab" "marxman" + } + "817" + { + "name" "The Human Cannonball" + "prefab" "cannonball" + } + "818" + { + "name" "Awesomenauts Badge" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Awes_Medal" + "item_description" "#TF_Awes_Medal_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/awes_badge" + "model_player" "models/player/items/all_class/awes_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "819" + { + "name" "The Lone Star" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_Awes_Sniper" + "item_description" "#TF_Awes_Sniper_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/sniper/awes_hat" + "model_player" "models/player/items/sniper/awes_hat.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "820" + { + "name" "The Russian Rocketeer" + "prefab" "backpack" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_Awes_Pyro" + "item_description" "#TF_Awes_Pyro_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/awes_jetpack" + "model_player" "models/player/items/pyro/awes_jetpack.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + + "821" + { + "name" "The Soviet Gentleman" + "first_sale_date" "2012/11/27" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_HeavyMustacheHat" + "item_description" "#TF_HeavyMustacheHat_Desc" + "image_inventory" "backpack/workshop/player/items/heavy/mustachehat/mustachehat" + "model_player" "models/workshop/player/items/heavy/mustachehat/mustachehat.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/mustachehat/mustachehat.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_HeavyMustacheHat_Style1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/mustachehat_s2/mustachehat_s2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_HeavyMustacheHat_Style2" + } + } + } + } + "823" + { + "name" "The Pocket Purrer" + "first_sale_date" "2012/11/27" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "engineer_pocket" + "item_type_name" "#TF_Wearable_Satchel" + "item_name" "#TF_EngineerPocketCat" + "item_description" "#TF_EngineerPocketCat_Desc" + "image_inventory" "backpack/player/items/engineer/engineer_pocketcat" + "model_player" "models/player/items/engineer/engineer_pocketcat.mdl" + "propername" "1" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "824" + { + "name" "The Koala Compact" + "first_sale_date" "2012/11/27" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "sniper_pocket" + "item_type_name" "#TF_Wearable_Satchel" + "item_name" "#TF_SniperPocketKoala" + "item_description" "#TF_SniperPocketKoala_Desc" + "image_inventory" "backpack/player/items/sniper/sniper_pocketkoala" + "model_player" "models/player/items/sniper/sniper_pocketkoala.mdl" + "propername" "1" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/sniper/sniper_pocketkoala.mdl" + "name" "#TF_SniperPocketKoala_Style0" + } + "1" + { + "model_player" "models/player/items/sniper/sniper_pocketkoala_s2.mdl" + "name" "#TF_SniperPocketKoala_Style1" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "825" + { + "name" "Hat of Cards" + "first_sale_date" "2012/11/27" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SpyCardHat" + "item_description" "#TF_SpyCardHat_Desc" + "image_inventory" "backpack/player/items/spy/spy_cardhat" + "model_player" "models/player/items/spy/spy_cardhat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "826" + { + "name" "Medi-Mask" + "first_sale_date" "2012/11/27" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_region" "beard" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_MedicGasMask" + "item_description" "#TF_MedicGasMask_Desc" + "image_inventory" "backpack/workshop/player/items/medic/medic_gasmask/medic_gasmask" + "model_player" "models/workshop/player/items/medic/medic_gasmask/medic_gasmask.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "827" + { + "name" "The Track Terrorizer" + "first_sale_date" "2012/11/27" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "equip_regions" + { + "shirt" "1" + "arm_tattoos" "1" + } + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_ScoutTrackJacket" + "item_description" "#TF_ScoutTrackJacket_Desc" + "image_inventory" "backpack/player/items/scout/scout_trackjacket" + "model_player" "models/player/items/scout/scout_trackjacket.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "828" + { + "name" "Archimedes" + "first_sale_date" "2012/08/15" + "prefab" "valve misc" + "capabilities" + { + "can_craft_count" "1" + } + "equip_region" "left_shoulder" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_Archimedes" + "item_description" "#TF_Archimedes_Desc" + "image_inventory" "backpack/player/items/medic/archimedes" + "model_player" "models/player/items/medic/archimedes.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "829" + { + "name" "The War Pig" + "first_sale_date" "2012/11/27" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SoldierWarPig" + "item_description" "#TF_SoldierWarPig_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "image_inventory" "backpack/workshop/player/items/soldier/soldier_warpig/soldier_warpig" + "model_player" "models/workshop/player/items/soldier/soldier_warpig/soldier_warpig.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop/player/items/soldier/soldier_warpig/soldier_warpig.mdl" + "name" "#TF_SoldierWarPig_Style0" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop/player/items/soldier/soldier_warpig_s2/soldier_warpig_s2.mdl" + "name" "#TF_SoldierWarPig_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "830" + { + "name" "The Bearded Bombardier" + "first_sale_date" "2012/11/27" + "prefab" "misc" + "equip_region" "beard" + "item_name" "#TF_DemoBeardPipe" + "item_type_name" "#TF_Wearable_FacialHair" + "item_description" "#TF_DemoBeardPipe_Desc" + "image_inventory" "backpack/workshop/player/items/demo/demo_beardpipe/demo_beardpipe" + "model_player" "models/workshop/player/items/demo/demo_beardpipe/demo_beardpipe.mdl" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/demo_beardpipe/demo_beardpipe.mdl" + "name" "#TF_DemoBeardPipe_Style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/demo_beardpipe_s2/demo_beardpipe_s2.mdl" + "name" "#TF_DemoBeardPipe_Style1" + } + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "831" + { + "name" "Promo Red-Tape Recorder" + "prefab" "weapon_red_tape_recorder" + "show_in_armory" "0" + "craft_class" "" + } + "832" + { + "name" "Promo Huo Long Heatmaker" + "prefab" "weapon_long_heatmaker" + "show_in_armory" "0" + "craft_class" "" + } + "833" + { + "name" "Promo Flying Guillotine" + "prefab" "weapon_guillotine" + "show_in_armory" "0" + "craft_class" "" + } + "834" + { + "name" "Promo Neon Annihilator" + "prefab" "weapon_annihilator" + "show_in_armory" "0" + "craft_class" "" + } + "835" + { + "name" "Promo Triad Trinket" + "prefab" "triad_trinket" + "show_in_armory" "0" + "craft_class" "" + } + "836" + { + "name" "Promo Champ Stamp" + "prefab" "champ_stamp" + "show_in_armory" "0" + "craft_class" "" + } + "837" + { + "name" "Promo Marxman" + "prefab" "marxman" + "show_in_armory" "0" + "craft_class" "" + } + "838" + { + "name" "Promo Human Cannonball" + "prefab" "cannonball" + "show_in_armory" "0" + "craft_class" "" + } + + "839" + { + "name" "Steam Translation Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "store_promotion_loot_list" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_StorePromotionPackage" + "item_description" "#TF_StorePromotionPackage_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/shopping_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + + "840" + { + "name" "The U-clank-a" + "prefab" "hat" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Heavy_Robot_Ushanka_Hat" + "item_description" "#TF_Heavy_Robot_Ushanka_Hat_Desc" + "image_inventory" "backpack/player/items/mvm_loot/heavy/robo_ushanka" + "model_player" "models/player/items/mvm_loot/heavy/robo_ushanka.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "841" + { + "name" "The Stealth Steeler" + "prefab" "hat" + "craft_class" "" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_Spy_Robot_Fedora" + "item_description" "#TF_Spy_Robot_Fedora_Desc" + "image_inventory" "backpack/player/items/mvm_loot/spy/robo_fedora" + "model_player" "models/player/items/mvm_loot/spy/robo_fedora.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "842" + { + "name" "The Pyrobotics Pack" + "prefab" "backpack" + "craft_class" "" + "item_name" "#TF_Pyro_Robot_Backpack" + "item_description" "#TF_Pyro_Robot_Backpack_Desc" + "image_inventory" "backpack/player/items/mvm_loot/pyro/pyrobo_backpack" + "model_player" "models/player/items/mvm_loot/pyro/pyrobo_backpack.mdl" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + + "843" + { + "name" "The Medic Mech-bag" + "prefab" "backpack" + "craft_class" "" + "item_name" "#TF_Medic_Robot_Backpack" + "item_description" "#TF_Medic_Robot_Backpack_Desc" + "image_inventory" "backpack/player/items/mvm_loot/medic/robo_backpack" + "model_player" "models/player/items/mvm_loot/medic/robo_backpack.mdl" + "propername" "1" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + + "844" + { + "name" "The Tin Pot" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Soldier_Robot_Helmet" + "item_description" "#TF_Soldier_Robot_Helmet_Desc" + "image_inventory" "backpack/player/items/mvm_loot/soldier/robot_helmet" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/mvm_loot/soldier/robot_helmet_bullet.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Soldier_Robot_Helmet_Style0" + } + "1" + { + "model_player" "models/player/items/mvm_loot/soldier/robot_helmet.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_Soldier_Robot_Helmet_Style1" + } + } + } + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "845" + { + "name" "The Battery Bandolier" + "prefab" "grenades" + "craft_class" "" + "item_name" "#TF_Demo_Robot_Grenades" + "item_description" "#TF_Demo_Robot_Grenades_Desc" + "image_inventory" "backpack/player/items/mvm_loot/demo/battery_grenade" + "model_player" "models/player/items/mvm_loot/demo/battery_grenade.mdl" + "propername" "1" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + + "846" + { + "name" "The Robot Running Man" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Scout_Robot_Cap" + "item_description" "#TF_Scout_Robot_Cap_Desc" + "image_inventory" "backpack/player/items/mvm_loot/scout/robo_cap" + "model_player" "models/player/items/mvm_loot/scout/robo_cap.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "847" + { + "name" "The Bolted Bushman" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Sniper_Robot_Hat" + "item_description" "#TF_Sniper_Robot_Hat_Desc" + "image_inventory" "backpack/player/items/mvm_loot/sniper/robo_sniper_hat" + "model_player" "models/player/items/mvm_loot/sniper/robo_sniper_hat.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "848" + { + "name" "The Tin-1000" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Engineer_Robot_Hat" + "item_description" "#TF_Engineer_Robot_Hat_Desc" + "image_inventory" "backpack/player/items/mvm_loot/engineer/robo_engy_hat" + "model_player" "models/player/items/mvm_loot/engineer/robo_engy_hat.mdl" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + + + "850" + { + "name" "Deflector" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "show_in_armory" "0" + "item_name" "#TF_Minigun_Deflector" + "item_quality" "unique" + "visuals" + { + "tracer_effect" "bullet_tracer02" + } + } + "851" + { + "name" "The AWPer Hand" + "prefab" "weapon_sniperrifle weapon_sniperrifle_alt1" + "craft_class" "weapon" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_CSGO_AWP" + "item_description" "#TF_CSGO_AWP_Desc" + "item_quality" "unique" + "baseitem" "0" + "image_inventory" "backpack/weapons/c_models/c_csgo_awp/c_csgo_awp" + "model_player" "models/weapons/c_models/c_csgo_awp/c_csgo_awp.mdl" + "propername" "1" + "attach_to_hands" "1" + "item_logname" "awper_hand" + "visuals" + { + "sound_single_shot" "Weapon_AWP.Single" + "sound_burst" "Weapon_AWP.SingleCrit" + } + } + "852" + { + "name" "The Soldier's Stogie" + "first_sale_date" "2012/08/15" + "prefab" "valve misc" + "capabilities" + { + "can_craft_count" "1" + } + "equip_region" "soldier_cigar" + "item_type_name" "#TF_Wearable_Cigar" + "item_name" "#TF_SoldierCigar" + "item_description" "#TF_SoldierCigar_Desc" + "image_inventory" "backpack/player/items/soldier/cigar" + "model_player" "models/player/items/soldier/cigar.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "853" + { + "name" "The Crafty Hair" + "first_sale_date" "2012/11/21" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_XCOM_Hair" + "item_description" "#TF_XCOM_Hair_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/xcom_flattop_engineer" + "model_player_per_class" + { + "basename" "models/player/items/all_class/xcom_flattop_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "soldier" "1" + "medic" "1" + "heavy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_XCOM_Hair_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_XCOM_Hair_Style1" + } + } + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "854" + { + "name" "Area 451" + "first_sale_date" "2012/11/21" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_XCOM_Pyro" + "item_description" "#TF_XCOM_Pyro_Desc" + "image_inventory" "backpack/player/items/pyro/xcom_sectoid_mask" + "model_player" "models/player/items/pyro/xcom_sectoid_mask.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "855" + { + "name" "The Vigilant Pin" + "first_sale_date" "2012/11/21" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_XCOM_Pin" + "item_description" "#TF_XCOM_Pin_Desc" + "item_slot" "misc" + "equip_region" "medal" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/xcom_badge" + "model_player" "models/player/items/all_class/xcom_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "856" + { + "name" "The Pyrotechnic Tote" + "first_sale_date" "2012/11/27" + "prefab" "backpack" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_Pyro_FireworksBag" + "item_description" "#TF_Pyro_FireworksBag_Desc" + "image_inventory" "backpack/player/items/pyro/pyro_fireworksbag" + "propername" "1" + "model_player" "models/player/items/pyro/pyro_fireworksbag.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "857" + { + "name" "Flunkyware" + "first_sale_date" "2012/12/13" + "prefab" "misc" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_Henchboy_Belt" + "item_description" "#TF_Henchboy_Belt_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop_partner/player/items/scout/scout_henchboy/scout_henchboy_belt" + "model_player" "models/workshop_partner/player/items/scout/scout_henchboy/scout_henchboy_belt.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + } + "858" + { + "name" "The Hanger-On Hood" + "first_sale_date" "2012/12/13" + "prefab" "hat" + "item_name" "#TF_Henchboy_Hat" + "item_description" "#TF_Henchboy_Hat_Desc" + "image_inventory" "backpack/workshop_partner/player/items/scout/scout_henchboy/scout_henchboy_hat" + "model_player" "models/workshop_partner/player/items/scout/scout_henchboy/scout_henchboy_hat.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + "visuals" + { + "styles" + { + "0" + { + "additional_hidden_bodygroups" + { + "headphones" "1" + } + "name" "#TF_Henchboy_Hat_Style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_Henchboy_Hat_Style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "859" + { + "name" "The Flight of the Monarch" + "first_sale_date" "2012/12/13" + "prefab" "misc" + "item_type_name" "#TF_Wearable_Wings" + "item_name" "#TF_Henchboy_Wings" + "item_description" "#TF_Henchboy_Wings_Desc" + "equip_region" "scout_wings" + "image_inventory" "backpack/workshop_partner/player/items/scout/scout_henchboy/scout_henchboy_wings" + "model_player" "models/workshop_partner/player/items/scout/scout_henchboy/scout_henchboy_wings.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + + + "863" + { + "name" "The Robo-Sandvich" + "first_sale_date" "2012/09/19" + "prefab" "weapon_lunchbox" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + } + "item_name" "#TF_Robot_Sandvich" + "item_description" "#TF_Robot_Sandvich_Desc" + "image_inventory" "backpack/weapons/c_models/c_sandwich/c_robo_sandwich" + "model_player" "models/weapons/c_models/c_sandwich/c_robo_sandwich.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -11" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "30" + "meter_label" "#TF_Sandwich" + } + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "3" + } + "special taunt" + { + "attribute_class" "special_taunt" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "864" + { + "name" "The Friends Forever Companion Square Badge" + "first_sale_date" "2012/09/19" + "prefab" "misc" + "craft_class" "" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_CompanionSquare_Badge" + "item_description" "#TF_CompanionSquare_Badge_Desc" + "equip_region" "medal" + "item_slot" "misc" + "image_inventory" "backpack/player/items/all_class/3a_cube" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "model_player" "models/player/items/all_class/3a_cube.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "865" + { + "name" "The Triple A Badge" + "first_sale_date" "2012/09/19" + "prefab" "misc" + "craft_class" "" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_ThreeA_Badge" + "item_description" "#TF_ThreeA_Badge_Desc" + "equip_region" "medal" + "item_slot" "misc" + "image_inventory" "backpack/player/items/all_class/3a_badge" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "model_player" "models/player/items/all_class/3a_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "866" + { + "name" "The Heavy Artillery Officer's Cap" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_COH2_Heavy" + "item_description" "#TF_COH2_Heavy_Desc" + "image_inventory" "backpack/player/items/heavy/coh_heavyhat" + "model_player" "models/player/items/heavy/coh_heavyhat.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "867" + { + "name" "The Combat Medic's Crusher Cap" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_COH2_Medic" + "item_description" "#TF_COH2_Medic_Desc" + "image_inventory" "backpack/player/items/medic/coh_medichat" + "model_player" "models/player/items/medic/coh_medichat.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "868" + { + "name" "The Heroic Companion Badge" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_COH2_Badge" + "item_description" "#TF_COH2_Badge_Desc" + "equip_region" "medal" + "item_slot" "misc" + "image_inventory" "backpack/player/items/all_class/coh_badge_sovjet" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "model_player" "models/player/items/all_class/coh_badge_sovjet.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/all_class/coh_badge_sovjet.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_COH2_Badge_Style1" + } + "1" + { + "model_player" "models/player/items/all_class/coh_badge_german.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_COH2_Badge_Style2" + } + } + } + } + "869" + { + "name" "The Rump-o'-Lantern" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_RumpoLantern" + "item_description" "#TF_RumpoLantern_Desc" + "image_inventory" "backpack/player/items/all_class/pumpkin_lantern_engineer" + "item_type_name" "#TF_Wearable_Lantern" + "propername" "1" + "equip_region" "belt_misc" + "model_player_per_class" + { + "basename" "models/player/items/all_class/pumpkin_lantern_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "870" + { + "name" "Tour of Duty Badge Intermediate 1" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_MvM_Badge_Intermediate1" + "item_description" "#TF_MvM_Badge_Intermediate1_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/mvm_loot/all_class/mvm_badge_rust" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/mvm_loot/all_class/mvm_badge_rust.mdl" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "871" + { + "name" "Tour of Duty Badge Expert 1" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_MvM_Badge_Expert1" + "item_description" "#TF_MvM_Badge_Expert1_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/mvm_loot/all_class/mvm_badge_diamond" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/mvm_loot/all_class/mvm_badge_diamond.mdl" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "872" + { + "name" "The Lacking Moral Fiber Mask" + "prefab" "hat" + "first_sale_date" "2013/10/18" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "TF_Wearable_Mask" + "item_name" "#TF_Dishonored_Mask" + "item_description" "#TF_Dishonored_Mask_Desc" + "image_inventory" "backpack/workshop_partner/player/items/spy/spy_dishonored/spy_dishonored" + "model_player" "models/workshop_partner/player/items/spy/spy_dishonored/spy_dishonored.mdl" + "propername" "1" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "873" + { + "name" "The Whale Bone Charm" + "prefab" "misc" + "first_sale_date" "2013/10/18" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Dishonored_Badge" + "item_description" "#TF_Dishonored_Badge_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/workshop_partner/player/items/all_class/dishonored_badge/dishonored_badge" + "min_ilevel" "20" + "max_ilevel" "20" + "propername" "1" + "model_player" "models/workshop_partner/player/items/all_class/dishonored_badge/dishonored_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "874" + { + "name" "The King of Scotland Cape" + "first_sale_date" "2012/10/09" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "back" + "item_type_name" "TF_Wearable_Cape" + "item_name" "#TF_TW_Cape" + "item_description" "#TF_TW_Cape_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/demo/tw_kingcape/tw_kingcape" + "model_player" "models/workshop_partner/player/items/demo/tw_kingcape/tw_kingcape.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "875" + { + "name" "The Menpo" + "first_sale_date" "2012/10/09" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "beard" + "item_type_name" "TF_Wearable_Mask" + "item_name" "#TF_TW_Mask" + "item_description" "#TF_TW_Mask_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/demo/tw_shogun/tw_shogun_demo" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/tw_shogun/tw_shogun_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/tw_shogun/tw_shogun_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Mask_Style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/tw_shogun/tw_shogun2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Mask_Style2" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/tw_shogun/tw_shogun3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Mask_Style3" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/%s/tw_shogun/tw_shogun4_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Mask_Style4" + } + } + } + } + "876" + { + "name" "The K-9 Mane" + "first_sale_date" "2012/10/09" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "TF_Wearable_SpiritAnimal" + "item_name" "#TF_TW_Mane" + "item_description" "#TF_TW_Mane_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/heavy/tw_doghat/tw_doghat_heavy" + "model_player_per_class" + { + "demoman" "models/workshop_partner/player/items/demo/tw_doghat/tw_doghat_demo.mdl" + "heavy" "models/workshop_partner/player/items/heavy/tw_doghat/tw_doghat_heavy.mdl" + } + "used_by_classes" + { + "demoman" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "877" + { + "name" "The Stovepipe Sniper Shako" + "first_sale_date" "2012/10/09" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_TW_Sniper_Hat" + "item_description" "#TF_TW_Sniper_Hat_Desc" + "drop_type" "drop" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/sniper/tw_shako/tw_shako" + "model_player" "models/workshop_partner/player/items/sniper/tw_shako/tw_shako.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "878" + { + "name" "The Foppish Physician" + "first_sale_date" "2012/10/09" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "shirt" + "item_type_name" "TF_Wearable_Apparel" + "item_name" "#TF_TW_Medic_Coat" + "item_description" "#TF_TW_Medic_Coat_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/medic/tw_coat/tw_coat_medic_necktie" + "model_player" "models/workshop_partner/player/items/medic/tw_coat/tw_coat_medic_necktie.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop_partner/player/items/medic/tw_coat/tw_coat_medic_necktie.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Medic_Coat_Style1" + } + "1" + { + "model_player" "models/workshop_partner/player/items/medic/tw_coat/tw_coat_medic.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Medic_Coat_Style2" + } + } + } + } + "879" + { + "name" "The Distinguished Rogue" + "first_sale_date" "2012/10/09" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "spy_coat" + "item_type_name" "TF_Wearable_Apparel" + "item_name" "#TF_TW_Spy_Coat" + "item_description" "#TF_TW_Spy_Coat_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/spy/tw_coat/tw_coat_spy" + "model_player" "models/workshop_partner/player/items/spy/tw_coat/tw_coat_spy_necktie.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop_partner/player/items/spy/tw_coat/tw_coat_spy_necktie.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Spy_Coat_Style1" + } + "1" + { + "model_player" "models/workshop_partner/player/items/spy/tw_coat/tw_coat_spy.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TW_Spy_Coat_Style2" + } + } + } + } + "880" + { + "name" "The Freedom Staff" + "first_sale_date" "2012/10/09" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Staff" + "item_name" "#TF_TW_Staff" + "item_description" "#TF_TW_Staff_Desc" + "propername" "1" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "25" + "max_ilevel" "25" + "attach_to_hands" "1" + "item_logname" "freedom_staff" + "item_iconname" "freedom_staff" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_tw_eagle/c_tw_eagle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "80" + "model_player" "models/workshop_partner/weapons/c_models/c_tw_eagle/c_tw_eagle.mdl" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "20 0 -10" + "inspect_viewmodel_offset" "5 0 -18" + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "881" + { + "name" "Rust Botkiller Sniper Rifle Mk.I" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_h_sniperrifle_rust" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "882" + { + "name" "Rust Botkiller Minigun Mk.I" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_h_minigun_rust" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "883" + { + "name" "Rust Botkiller Knife Mk.I" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_h_knife_rust" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "xifier_class_remap" "knife" + } + "884" + { + "name" "Rust Botkiller Wrench Mk.I" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_h_wrench_rust" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "xifier_class_remap" "wrench" + } + "885" + { + "name" "Rust Botkiller Medi Gun Mk.I" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_h_medigun_rust" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "886" + { + "name" "Rust Botkiller Stickybomb Launcher Mk.I" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_h_stickybomb_rust" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "887" + { + "name" "Rust Botkiller Flame Thrower Mk.I" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_h_flamethrower_rust" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_h_flamethrower.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_v.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "flamethrower" + } + "888" + { + "name" "Rust Botkiller Scattergun Mk.I" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_h_scattergun_rust" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "889" + { + "name" "Rust Botkiller Rocket Launcher Mk.I" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_IntermediateMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_h_rocketlauncher_rust" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "890" + { + "name" "Blood Botkiller Sniper Rifle Mk.I" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_h_sniperrifle_blood" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "891" + { + "name" "Blood Botkiller Minigun Mk.I" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_h_minigun_blood" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_h_minigun.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "892" + { + "name" "Blood Botkiller Knife Mk.I" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_h_knife_blood" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_h_knife.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "xifier_class_remap" "knife" + } + "893" + { + "name" "Blood Botkiller Wrench Mk.I" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_h_wrench_blood" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_h_wrench.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "xifier_class_remap" "wrench" + } + "894" + { + "name" "Blood Botkiller Medi Gun Mk.I" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_h_medigun_blood" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_h_medigun.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "895" + { + "name" "Blood Botkiller Stickybomb Launcher Mk.I" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_h_stickybomb_blood" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_h_stickybomb.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "896" + { + "name" "Blood Botkiller Flame Thrower Mk.I" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_h_flamethrower_blood" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_h_flamethrower.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_v.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "flamethrower" + } + "897" + { + "name" "Blood Botkiller Scattergun Mk.I" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_h_scattergun_blood" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_h_scattergun.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "898" + { + "name" "Blood Botkiller Rocket Launcher Mk.I" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_IntermediateMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_h_rocketlauncher_blood" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "899" + { + "name" "Carbonado Botkiller Sniper Rifle Mk.I" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_h_sniperrifle_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "900" + { + "name" "Carbonado Botkiller Minigun Mk.I" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_h_minigun_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_h_minigun_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_h_minigun_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "901" + { + "name" "Carbonado Botkiller Knife Mk.I" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_h_knife_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_h_knife_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_h_knife_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "xifier_class_remap" "knife" + } + "902" + { + "name" "Carbonado Botkiller Wrench Mk.I" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_h_wrench_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_h_wrench_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_h_wrench_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "xifier_class_remap" "wrench" + } + "903" + { + "name" "Carbonado Botkiller Medi Gun Mk.I" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_h_medigun_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_h_medigun_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_h_medigun_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "904" + { + "name" "Carbonado Botkiller Stickybomb Launcher Mk.I" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_h_stickybomb_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_h_stickybomb_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_h_stickybomb_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "905" + { + "name" "Carbonado Botkiller Flame Thrower Mk.I" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_h_flamethrower_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_diamond_v.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "flamethrower" + } + "906" + { + "name" "Carbonado Botkiller Scattergun Mk.I" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_h_scattergun_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_h_scattergun_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_h_scattergun_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "907" + { + "name" "Carbonado Botkiller Rocket Launcher Mk.I" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_ExpertMVMLoot" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_h_rocketlauncher_diamond_black" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher_diamond.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "908" + { + "name" "Diamond Botkiller Sniper Rifle Mk.I" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_h_sniperrifle_diamond" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_h_sniperrifle_diamond.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "909" + { + "name" "Diamond Botkiller Minigun Mk.I" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_h_minigun_diamond" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_h_minigun_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_h_minigun_diamond.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "910" + { + "name" "Diamond Botkiller Knife Mk.I" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_h_knife_diamond" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_h_knife_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_h_knife_diamond.mdl" + "xifier_class_remap" "knife" + } + "911" + { + "name" "Diamond Botkiller Wrench Mk.I" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_h_wrench_diamond" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_h_wrench_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_h_wrench_diamond.mdl" + "xifier_class_remap" "wrench" + } + "912" + { + "name" "Diamond Botkiller Medi Gun Mk.I" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_h_medigun_diamond" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_h_medigun_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_h_medigun_diamond.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "913" + { + "name" "Diamond Botkiller Stickybomb Launcher Mk.I" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_h_stickybomb_diamond" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_h_stickybomb_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_h_stickybomb_diamond.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "914" + { + "name" "Diamond Botkiller Flame Thrower Mk.I" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_h_flamethrower_diamond" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_h_flamethrower_diamond_v.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "xifier_class_remap" "flamethrower" + } + "915" + { + "name" "Diamond Botkiller Scattergun Mk.I" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_h_scattergun_diamond" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_h_scattergun_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_h_scattergun_diamond.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "916" + { + "name" "Diamond Botkiller Rocket Launcher Mk.I" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_ExpertMVMRareLoot" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_h_rocketlauncher_diamond" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher_diamond.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_h_rocketlauncher_diamond.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "917" + { + "name" "Sir Hootsalot" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + } + "equip_region" "left_shoulder" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_SirHootsalot" + "item_description" "#TF_SirHootsalot_desc" + "image_inventory" "backpack/player/items/sniper/sniper_owl" + "model_player" "models/player/items/sniper/sniper_owl.mdl" + "propername" "0" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + "name" "#TF_SirHootsalot_Style0" + } + "1" + { + "skin" "1" + "name" "#TF_SirHootsalot_Style1" + } + } + } + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "918" + { + "name" "The Master Mind" + "first_sale_date" "2012/10/26" + "prefab" "halloween hat" + "item_name" "#TF_MasterMind" + "item_description" "#TF_MasterMind_Desc" + "item_type_name" "#TF_Wearable_Augmentation" + "image_inventory" "backpack/player/items/engineer/engineer_brain" + "model_player" "models/player/items/engineer/engineer_brain.mdl" + "drop_type" "none" + "used_by_classes" + { + "engineer" "1" + } + "capabilities" + { + "paintable" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "919" + { + "name" "The Scarecrow" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "equip_region" "face" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Scarecrow" + "item_description" "#TF_Scarecrow_Desc" + "image_inventory" "backpack/workshop/player/items/spy/spy_scarecrowface/spy_scarecrowface" + "model_player" "models/workshop/player/items/spy/spy_scarecrowface/spy_scarecrowface.mdl" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "920" + { + "name" "The Crone's Dome" + "first_sale_date" "2012/10/26" + "prefab" "hat" + "propername" "1" + "item_name" "#TF_CronesDome" + "item_description" "#TF_CronesDome_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/witchhat/witchhat" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/witchhat/witchhat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "921" + { + "name" "The Executioner" + "first_sale_date" "2012/10/26" + "prefab" "hat" + "propername" "1" + "item_name" "#TF_Executioner" + "item_description" "#TF_Executioner_Desc" + "image_inventory" "backpack/player/items/all_class/executionerhood_medic" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/all_class/executionerhood_%s.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "922" + { + "name" "The Bonedolier" + "first_sale_date" "2012/10/26" + "prefab" "grenades" + "item_name" "#TF_Bonedolier" + "item_description" "#TF_Bonedolier_Desc" + "item_type_name" "#TF_Wearable_Bones" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/demo_grenade_skulls" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/all_class/%s_grenade_skulls.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "923" + { + "name" "The Plutonidome" + "first_sale_date" "2012/10/26" + "prefab" "halloween misc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_Plutonidome" + "item_description" "#TF_Plutonidome_Desc" + "image_inventory" "backpack/player/items/pyro/pyro_brainhead" + "model_player" "models/player/items/pyro/pyro_brainhead.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "paintable" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "head" "1" + } + "styles" + { + "0" + { + "model_player" "models/player/items/pyro/pyro_brainhead.mdl" + "name" "#TF_Plutonidome_Style0" + } + "1" + { + "model_player" "models/player/items/pyro/pyro_brainhead_s1.mdl" + "name" "#TF_Plutonidome_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "924" + { + "name" "The Spooky Shoes" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + } + "equip_region" "feet" + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_SpookyShoes" + "item_description" "#TF_SpookyShoes_Desc" + "image_inventory" "backpack/workshop/player/items/scout/scout_halloweenshoes/scout_halloweenshoes" + "model_player" "models/workshop/player/items/scout/scout_halloweenshoes/scout_halloweenshoes.mdl" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "925" + { + "name" "The Spooky Sleeves" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + } + "equip_region" "sleeves" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_SpookySleeves" + "item_description" "#TF_SpookySleeves_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/halloweenjacket/halloweenjacket" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/halloweenjacket/halloweenjacket_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "Demoman" "1" + "heavy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "926" + { + "name" "The Zipperface" + "first_sale_date" "2012/10/26" + "prefab" "halloween hat" + "item_name" "#TF_Zipperface" + "item_description" "#TF_Zipperface_Desc" + "image_inventory" "backpack/player/items/soldier/soldier_zipperhead" + "model_player" "models/player/items/soldier/soldier_zipperhead.mdl" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "927" + { + "name" "The Boo Balloon" + "first_sale_date" "2012/10/26" + "prefab" "halloween misc" + "capabilities" + { + "paintable" "1" + } + "propername" "1" + "item_type_name" "#TF_Wearable_Balloon" + "item_name" "#TF_BooBalloon" + "item_description" "#TF_BooBalloon_Desc" + "equip_region" "disconnected_floating_item" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "image_inventory" "backpack/player/items/all_class/hwn_pet_balloon" + "model_player" "models/player/items/all_class/hwn_pet_balloon.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_BooBalloon_Style0" + "skin" "0" + } + "1" + { + "name" "#TF_BooBalloon_Style1" + "skin" "1" + } + "2" + { + "name" "#TF_BooBalloon_Style2" + "skin" "2" + } + "3" + { + "name" "#TF_BooBalloon_Style3" + "skin" "3" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "928" + { + "name" "Portal 2 Soundtrack Promo Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "portal2_promo_package_loot_list" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "0" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_mystery" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_Portal2_Soundtrack_Promo_Package" + "item_description" "#TF_Portal2_Soundtrack_Promo_Package_Desc" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "929" + { + "name" "The Unknown Monkeynaut" + "first_sale_date" "2012/10/26" + "prefab" "halloween misc" + "propername" "1" + "item_type_name" "#TF_Wearable_Ghost" + "item_name" "#TF_UnknownMonkeynaut" + "item_description" "#TF_UnknownMonkeynaut_desc" + "equip_region" "disconnected_floating_item" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "image_inventory" "backpack/player/items/all_class/hwn_ghost_pj" + "model_player" "models/player/items/all_class/hwn_ghost_pj.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "930" + { + "name" "The Grand Duchess Tutu" + "first_sale_date" "2012/10/26" + "prefab" "halloween misc" + "capabilities" + { + "paintable" "1" + } + "equip_region" "heavy_hip" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_GrandDuchessTutu" + "item_description" "#TF_GrandDuchessTutu_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_fairy_tutu" + "model_player" "models/player/items/heavy/heavy_fairy_tutu.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "931" + { + "name" "The Grand Duchess Fairy Wings" + "first_sale_date" "2012/10/26" + "prefab" "halloween misc" + "capabilities" + { + "paintable" "1" + } + "equip_region" "back" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_GrandDuchessFairyWings" + "item_description" "#TF_GrandDuchessFairyWings_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_fairy_wings" + "model_player" "models/player/items/heavy/heavy_fairy_wings.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "932" + { + "name" "The Grand Duchess Tiara" + "first_sale_date" "2012/10/26" + "prefab" "halloween hat" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_GrandDuchessTiara" + "item_type_name" "#TF_Wearable_Costume" + "item_description" "#TF_GrandDuchessTiara_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_fairy_tiara" + "model_player" "models/player/items/heavy/heavy_fairy_tiara.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "933" + { + "name" "The Ap-Sap" + "first_sale_date" "2013/04/23" + "prefab" "valve" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_weapon_sapper" + "prefab" "weapon_sapper" + "craft_class" "weapon" + "craft_material_type" "weapon" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Spy_Sapper" + "item_name" "#TF_Weapon_Ap_Sap" + "item_description" "#TF_Weapon_Ap_Sap_desc" + "item_slot" "building" + "item_quality" "unique" + "item_logname" "psapper" + "item_iconname" "psapper" + "image_inventory" "backpack/weapons/c_models/c_p2rec/c_p2rec" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "25" + "anim_slot" "building" + "attach_to_hands" "1" + "propername" "1" + "model_player" "models/weapons/c_models/c_p2rec/c_p2rec.mdl" + "model_world" "models/weapons/c_models/c_p2rec/c_p2rec.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "attributes" + { + "sapper voice pak" + { + "attribute_class" "sapper_voice_pak" + "value" "1.0" + } + "sapper voice pak idle wait" + { + "attribute_class" "sapper_voice_pak_idle_wait" + "value" "3.0" + } + } + } + "934" + { + "name" "The Dead Little Buddy" + "first_sale_date" "2012/10/26" + "prefab" "halloween misc" + "propername" "1" + "item_type_name" "#TF_Wearable_Ghost" + "item_name" "#TF_DeadLittleBuddy" + "item_description" "#TF_DeadLittleBuddy_Desc" + "equip_region" "disconnected_floating_item" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "image_inventory" "backpack/player/items/all_class/hwn_pet_ghost" + "model_player_per_class" + { + "soldier" "models/player/items/all_class/hwn_pet_ghost.mdl" + "demoman" "models/player/items/all_class/hwn_pet_ghost_demo.mdl" + "pyro" "models/player/items/all_class/hwn_pet_ghost_pyro.mdl" + "medic" "models/player/items/all_class/hwn_pet_ghost.mdl" + "heavy" "models/player/items/all_class/hwn_pet_ghost.mdl" + "spy" "models/player/items/all_class/hwn_pet_ghost.mdl" + "engineer" "models/player/items/all_class/hwn_pet_ghost.mdl" + "scout" "models/player/items/all_class/hwn_pet_ghost.mdl" + "sniper" "models/player/items/all_class/hwn_pet_ghost.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "935" + { + "name" "The Voodoo Juju (Slight Return)" + "first_sale_date" "2012/10/26" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + } + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_VoodooJuju" + "item_description" "#TF_VooDooJuju_Desc" + "image_inventory" "backpack/player/items/demo/demo_bonehat" + "model_player" "models/player/items/demo/demo_bonehat.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "936" + { + "name" "The Exorcizor" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "equip_region" "shirt" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_Exorcizor" + "item_description" "#TF_Exorcizor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/hwn_spy_priest/hwn_spy_priest" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn_spy_priest/hwn_spy_priest_%s.mdl" + } + "propername" "1" + "used_by_classes" + { + "soldier" "1" + "medic" "1" + "pyro" "1" + "spy" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "937" + { + "name" "The Wraith Wrap" + "first_sale_date" "2012/10/26" + "prefab" "hat" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_WraithWrap" + "item_description" "#TF_WraithWrap_Desc" + "image_inventory" "backpack/player/items/pyro/hwn_pyro_spookyhood" + "model_player" "models/player/items/pyro/hwn_pyro_spookyhood.mdl" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "938" + { + "name" "The Coffin Kit" + "first_sale_date" "2012/10/26" + "prefab" "misc" + "equip_region" "back" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_CoffinKit" + "item_description" "#TF_CoffinKit_Desc" + "image_inventory" "backpack/player/items/pyro/hwn_pyro_coffinpack" + "model_player" "models/player/items/pyro/hwn_pyro_coffinpack.mdl" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "backpack" "0" + } + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "939" + { + "name" "The Bat Outta Hell" + "first_sale_date" "2012/10/26" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "item_logname" "skullbat" + "item_iconname" "skullbat" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Skullbat" + "item_name" "#TF_BatOuttaHell" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_skullbat/c_skullbat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_skullbat/c_skullbat.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop/weapons/c_models/c_skullbat/c_skullbat.mdl" + "name" "#TF_BatOuttaHell_Style0" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop/weapons/c_models/c_skullbat/c_skullbat_s1.mdl" + "name" "#TF_BatOuttaHell_Style1" + } + "2" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop/weapons/c_models/c_skullbat/c_skullbat_s2.mdl" + "name" "#TF_BatOuttaHell_Style2" + } + "3" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop/weapons/c_models/c_skullbat/c_skullbat_s3.mdl" + "name" "#TF_BatOuttaHell_Style3" + } + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "940" + { + "name" "Ghostly Gibus" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name""#TF_Wearable_Hat" + "item_name" "#TF_Domination_Hat_Ghostly" + "item_description" "#TF_Domination_Hat_Ghostly_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ghostly_gibus_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/ghostly_gibus_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "941" + { + "name" "The Skull Island Topper" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_Halloween_MerasmusLoot_Hat" + "item_description" "#TF_Halloween_MerasmusLoot_Hat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "31" + "max_ilevel" "31" + "image_inventory" "backpack/player/items/all_class/merasmus_skull" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/merasmus_skull_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "942" + { + "name" "The Cockfighter" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_ScribHat" + "item_description" "#TF_ScribHat_Desc" + "equip_region" "hat" + "min_ilevel" "10" + "max_ilevel" "10" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/all_scrib_m_demo" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_scrib_m_%s.mdl" + } + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_scrib_m_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ScribHat_Style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_scrib_l_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ScribHat_Style1" + } + } + } + } + "943" + { + "name" "The Hitt Mann Badge" + "first_sale_date" "2012/11/28" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_HM_Badge" + "item_description" "#TF_HM_Badge_Desc" + "equip_region" "medal" + "image_inventory" "backpack/workshop_partner/player/items/all_class/hm_badge/hm_badge" + "propername" "1" + "model_player" "models/workshop_partner/player/items/all_class/hm_badge/hm_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "944" + { + "name" "That '70s Chapeau" + "first_sale_date" "2012/11/28" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_HM_DisguiseHat" + "item_description" "#TF_HM_DisguiseHat_Desc" + "image_inventory" "backpack/workshop_partner/player/items/all_class/hm_disguisehat/hm_disguisehat_demo" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/hm_disguisehat/hm_disguisehat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + "945" + { + "name" "The Chief Constable" + "first_sale_date" "2012/11/28" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_HM_SoldierHat" + "item_description" "#TF_HM_SoldierHat_Desc" + "image_inventory" "backpack/workshop_partner/player/items/soldier/hm_cap/hm_cap" + "model_player" "models/workshop_partner/player/items/soldier/hm_cap/hm_cap.mdl" + "propername" "1" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + } + "946" + { + "name" "The Siberian Sophisticate" + "first_sale_date" "2012/11/28" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_HM_Shirt" + "item_description" "#TF_HM_Shirt_Desc" + "image_inventory" "backpack/workshop_partner/player/items/heavy/hm_shirt/hm_shirt" + "equip_region" "shirt" + "model_player" "models/workshop_partner/player/items/heavy/hm_shirt/hm_shirt.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + } + "947" + { + "name" "The Quackenbirdt" + "first_sale_date" "2012/11/28" + "item_class" "tf_weapon_invis" + "prefab" "weapon_invis" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "show_in_armory" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "item_type_name" "#TF_Weapon_Watch" + "item_name" "#TF_HM_Watch" + "item_description" "#TF_HM_Watch_Desc" + "item_slot" "pda2" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "image_inventory" "backpack/workshop_partner/weapons/v_models/v_hm_watch/v_hm_watch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/weapons/v_models/v_hm_watch/v_hm_watch.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "8 0 -6" + } + "mouse_pressed_sound" "ui/item_watch_pickup.wav" + "drop_sound" "ui/item_watch_drop.wav" + } + "948" + { + "name" "The Deadliest Duckling" + "first_sale_date" "2012/11/28" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Duck" + "item_name" "#TF_HM_Duck" + "item_description" "#TF_HM_Duck_Desc" + "equip_regions" + { + "sniper_pocket" "1" + "engineer_pocket" "1" + "grenades" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/hm_duck/hm_duck_demo" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/hm_duck/hm_duck_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "soldier" "1" + "demoman" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + "styles" + { + "0" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_HM_Duck_Style0" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_HM_Duck_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "949" + { + "name" "The DethKapp" + "first_sale_date" "2012/12/13" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_DethKapp" + "item_description" "#TF_DethKapp_Desc" + "image_inventory" "backpack/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_hat" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_hat_hair.mdl" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_hat_hair.mdl" + "name" "#TF_DethKapp_Style0" + } + "1" + { + "skin" "2" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_hat_hair.mdl" + "name" "#TF_DethKapp_Style1" + } + "2" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_hat.mdl" + "name" "#TF_DethKapp_Style2" + } + "3" + { + "skin" "2" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_hat.mdl" + "name" "#TF_DethKapp_Style3" + } + } + } + } + "950" + { + "name" "Nose Candy" + "first_sale_date" "2012/12/13" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_NoseCandy" + "item_description" "#TF_NoseCandy_Desc" + "image_inventory" "backpack/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_mask" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_mask.mdl" + "equip_region" "pyro_head_replacement" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_mask.mdl" + "name" "#TF_NoseCandy_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + "head" "1" + } + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_mask_nose.mdl" + "name" "#TF_NoseCandy_Style1" + } + } + } + } + "951" + { + "name" "Rail Spikes" + "first_sale_date" "2012/12/13" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Spikes" + "item_name" "#TF_RailSpikes" + "item_description" "#TF_RailSpikes_Desc" + "image_inventory" "backpack/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_spikes" + "equip_region" "pyro_spikes" + "model_player" "models/workshop_partner/player/items/pyro/pyro_rocks/pyro_rocks_spikes.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "952" + { + "name" "Brock's Locks" + "first_sale_date" "2012/12/13" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_BrocksLocks" + "item_description" "#TF_BrocksLocks_Desc" + "image_inventory" "backpack/workshop_partner/player/items/heavy/heavy_hockeyhair/heavy_hockeyhair" + "model_player" "models/workshop_partner/player/items/heavy/heavy_hockeyhair/heavy_hockeyhair.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "953" + { + "name" "The Saxxy Clapper Badge" + "first_sale_date" "2012/11/28" + "prefab" "misc" + "craft_class" "" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_Clacker2012" + "item_description" "#TF_Clacker2012_Desc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/all_clacker_badge" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "model_player" "models/player/items/all_class/all_clacker_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "954" + { + "name" "Memory Maker" + "first_sale_date" "2012/11/28" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_class" "" + "capabilities" + { + "nameable" "1" + } + "item_logname" "memory_maker" + "item_iconname" "memory_maker" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Camera" + "item_name" "#TF_Memory_Maker" + "item_description" "#TF_Memory_Maker_Desc" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_8mm_camera/c_8mm_camera" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_8mm_camera/c_8mm_camera.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "955" + { + "name" "The Tuxxy" + "first_sale_date" "2012/11/30" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Tuxedo" + "item_name" "#TF_Tuxxy" + "item_description" "#TF_Tuxxy_Desc" + "image_inventory" "backpack/player/items/all_class/tuxxy_demo" + "equip_region" "shirt" + "propername" "1" + "model_player_per_class" + { + "basename" "models/player/items/all_class/tuxxy_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "956" + { + "name" "Faerie Solitaire Pin" + "first_sale_date" "2012/11/30" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Pin" + "item_name" "#TF_Faerie_Solitaire_Pin" + "item_description" "#TF_Faerie_Solitaire_Pin_Desc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/all_fs_badge" + "model_player" "models/player/items/all_class/all_fs_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "957" + { + "name" "Silver Botkiller Sniper Rifle Mk.II" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_e_sniperrifle" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_e_sniperrifle.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_e_sniperrifle.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "958" + { + "name" "Silver Botkiller Minigun Mk.II" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_e_minigun" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_e_minigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_e_minigun.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "959" + { + "name" "Silver Botkiller Knife Mk.II" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_e_knife" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_e_knife.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_e_knife.mdl" + "xifier_class_remap" "knife" + } + "960" + { + "name" "Silver Botkiller Wrench Mk.II" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_e_wrench" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_e_wrench.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_e_wrench.mdl" + "xifier_class_remap" "wrench" + } + "961" + { + "name" "Silver Botkiller Medi Gun Mk.II" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_e_medigun" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_e_medigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_e_medigun.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "962" + { + "name" "Silver Botkiller Stickybomb Launcher Mk.II" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_e_stickybomb" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_e_stickybomb.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_e_stickybomb.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "963" + { + "name" "Silver Botkiller Flame Thrower Mk.II" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_e_flamethrower" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_e_flamethrower.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_e_flamethrower_v.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "xifier_class_remap" "flamethrower" + } + "964" + { + "name" "Silver Botkiller Scattergun Mk.II" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_e_scattergun" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_e_scattergun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_e_scattergun.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "965" + { + "name" "Silver Botkiller Rocket Launcher Mk.II" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_AdvancedMVMLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_e_rocketlauncher" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_e_rocketlauncher.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_e_rocketlauncher.mdl" + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "966" + { + "name" "Gold Botkiller Sniper Rifle Mk.II" + "prefab" "weapon_sniperrifle" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_SniperRifle_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/sniper/fob_e_sniperrifle_gold" + "extra_wearable" "models/player/items/mvm_loot/sniper/fob_e_sniperrifle.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/sniper/fob_e_sniperrifle.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "sniper_rifle" + } + "967" + { + "name" "Gold Botkiller Minigun Mk.II" + "prefab" "weapon_minigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Minigun_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/heavy/fob_e_minigun_gold" + "extra_wearable" "models/player/items/mvm_loot/heavy/fob_e_minigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/heavy/fob_e_minigun.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "minigun" + } + "968" + { + "name" "Gold Botkiller Knife Mk.II" + "prefab" "weapon_knife" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Knife_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/spy/fob_e_knife_gold" + "extra_wearable" "models/player/items/mvm_loot/spy/fob_e_knife.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/spy/fob_e_knife.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "xifier_class_remap" "knife" + } + "969" + { + "name" "Gold Botkiller Wrench Mk.II" + "prefab" "weapon_wrench" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Wrench_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/engineer/fob_e_wrench_gold" + "extra_wearable" "models/player/items/mvm_loot/engineer/fob_e_wrench.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/engineer/fob_e_wrench.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "xifier_class_remap" "wrench" + } + "970" + { + "name" "Gold Botkiller Medi Gun Mk.II" + "prefab" "weapon_medigun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Medigun_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/medic/fob_e_medigun_gold" + "extra_wearable" "models/player/items/mvm_loot/medic/fob_e_medigun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/medic/fob_e_medigun.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "medigun" + } + "971" + { + "name" "Gold Botkiller Stickybomb Launcher Mk.II" + "prefab" "weapon_stickybomb_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_StickybombLauncher_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/demo/fob_e_stickybomb_gold" + "extra_wearable" "models/player/items/mvm_loot/demo/fob_e_stickybomb.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/demo/fob_e_stickybomb.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "stickybomb_launcher" + } + "972" + { + "name" "Gold Botkiller Flame Thrower Mk.II" + "prefab" "weapon_flamethrower" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Flamethrower_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/pyro/fob_e_flamethrower_gold" + "extra_wearable" "models/player/items/mvm_loot/pyro/fob_e_flamethrower.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/pyro/fob_e_flamethrower_v.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "flamethrower" + } + "973" + { + "name" "Gold Botkiller Scattergun Mk.II" + "prefab" "weapon_scattergun" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_Scattergun_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/scout/fob_e_scattergun_gold" + "extra_wearable" "models/player/items/mvm_loot/scout/fob_e_scattergun.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/scout/fob_e_scattergun.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "scattergun" + } + "974" + { + "name" "Gold Botkiller Rocket Launcher Mk.II" + "prefab" "weapon_rocketlauncher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "item_name" "#TF_Weapon_RocketLauncher_AdvancedMVMRareLoot_Engineer" + "image_inventory" "backpack/player/items/mvm_loot/soldier/fob_e_rocketlauncher_gold" + "extra_wearable" "models/player/items/mvm_loot/soldier/fob_e_rocketlauncher.mdl" + "extra_wearable_vm" "models/player/items/mvm_loot/soldier/fob_e_rocketlauncher.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + "attributes" + { + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "xifier_class_remap" "rocket_launcher" + } + "975" + { + "name" "Tour of Duty Badge Advanced 2" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_MvM_Badge_Advanced2" + "item_description" "#TF_MvM_Badge_Advanced2_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/mvm_loot/all_class/mvm_badge_engy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/mvm_loot/all_class/mvm_badge_engy.mdl" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "976" + { + "name" "The Winter Wonderland Wrap" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_TheWinterWonderlandWrap" + "item_description" "#TF_TheWinterWonderlandWrap_Desc" + "image_inventory" "backpack/player/items/pyro/winter_pyro_mask" + "model_player" "models/player/items/pyro/winter_pyro_mask.mdl" + "equip_region" "pyro_head_replacement" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "head" "1" + } + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TheWinterWonderlandWrap_Style0" + } + "1" + { + "skin_red" "2" + "skin_blu" "3" + "name" "#TF_TheWinterWonderlandWrap_Style1" + } + } + } + } + "977" + { + "name" "The Cut-Throat Concierge" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "equip_region" "spy_coat" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_TheCutThroatConcierge" + "item_description" "#TF_TheCutThroatConcierge_Desc" + "image_inventory" "backpack/player/items/spy/spy_winterjacket" + "model_player" "models/player/items/spy/spy_winterjacket.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "978" + { + "name" "Der Wintermantel" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "shirt" + "item_type_name" "TF_Wearable_Apparel" + "item_name" "#TF_DerWintermantel" + "item_description" "#TF_DerWintermantel_Desc" + "image_inventory" "backpack/workshop/player/items/medic/medic_wintercoat_s01/medic_wintercoat_s01" + "model_player" "models/workshop/player/items/medic/medic_wintercoat_s01/medic_wintercoat_s01.mdl" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/medic_wintercoat_s01/medic_wintercoat_s01.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_DerWintermantel_Style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/medic_wintercoat_s02/medic_wintercoat_s02.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_DerWintermantel_Style1" + } + } + } + } + "979" + { + "name" "The Cool Breeze" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "equip_region" "pants" + "item_type_name" "#TF_Wearable_Kilt" + "item_name" "#TF_TheCoolBreeze" + "item_description" "#TF_TheCoolBreeze_Desc" + "image_inventory" "backpack/workshop/player/items/demo/demo_kilt/demo_kilt" + "model_player" "models/workshop/player/items/demo/demo_kilt/demo_kilt.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "980" + { + "name" "Soldier's Slope Scopers" + "first_sale_date" "2013/01/24" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_SoldiersSlopeScopers" + "item_description" "#TF_SoldiersSlopeScopers_Desc" + "image_inventory" "backpack/player/items/soldier/soldier_skihat" + "model_player" "models/player/items/soldier/soldier_skihat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/player/items/soldier/soldier_skihat.mdl" + "name" "#TF_SoldiersSlopeScopers_Style0" + } + "1" + { + "model_player" "models/player/items/soldier/soldier_skihat_s1.mdl" + "name" "#TF_SoldiersSlopeScopers_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "981" + { + "name" "The Cold Killer" + "first_sale_date" "2013/01/24" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_TheColdKiller" + "item_description" "#TF_TheColdKiller_Desc" + "image_inventory" "backpack/workshop/player/items/sniper/winter_sniper_hood/winter_sniper_hood" + "model_player" "models/workshop/player/items/sniper/winter_sniper_hood/winter_sniper_hood.mdl" + "propername" "1" + "drop_type" "none" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "982" + { + "name" "Doc's Holiday" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "shirt" + "item_type_name" "TF_Wearable_Apparel" + "item_name" "#TF_DocsHoliday" + "item_description" "#TF_DocsHoliday_Desc" + "image_inventory" "backpack/workshop/player/items/medic/hawaiian_shirt/hawaiian_shirt" + "model_player" "models/workshop/player/items/medic/hawaiian_shirt/hawaiian_shirt.mdl" + "drop_type" "none" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/hawaiian_shirt/hawaiian_shirt.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_DocsHoliday_Style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/hawaiian_shirt_s2/hawaiian_shirt_s2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_DocsHoliday_Style1" + } + "2" + { + "model_player" "models/workshop/player/items/medic/hawaiian_shirt_s3/hawaiian_shirt_s3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_DocsHoliday_Style2" + } + } + } + } + "983" + { + "name" "The Digit Divulger" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "scout_hands" + "item_type_name" "#TF_Wearable_Gloves" + "item_name" "#TF_TheDigitDivulger" + "item_description" "#TF_TheDigitDivulger_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/scout_gloves_leather_open/scout_gloves_leather_open" + "model_player" "models/workshop/player/items/scout/scout_gloves_leather_open/scout_gloves_leather_open.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/scout_gloves_leather_open/scout_gloves_leather_open.mdl" + "name" "#TF_TheDigitDivulger_Style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/scout_gloves_suede_open/scout_gloves_suede_open.mdl" + "name" "#TF_TheDigitDivulger_Style1" + } + "2" + { + "model_player" "models/workshop/player/items/scout/scout_gloves_leather_closed/scout_gloves_leather_closed.mdl" + "name" "#TF_TheDigitDivulger_Style2" + } + "3" + { + "model_player" "models/workshop/player/items/scout/scout_gloves_suede_closed/scout_gloves_suede_closed.mdl" + "name" "#TF_TheDigitDivulger_Style3" + } + } + } + } + "984" + { + "name" "Tough Stuff Muffs" + "first_sale_date" "2013/01/24" + "prefab" "hat" + "drop_type" "drop" + "item_name" "#TF_ToughStuffMuffs" + "item_description" "#TF_ToughStuffMuffs_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/all_earmuffs_style1/all_earmuffs_style1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/all_earmuffs_style1/all_earmuffs_style1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "Demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/all_earmuffs_style1/all_earmuffs_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ToughStuffMuffs_Style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/all_earmuffs_style2/all_earmuffs_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ToughStuffMuffs_Style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/all_earmuffs_style3/all_earmuffs_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ToughStuffMuffs_Style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/all_earmuffs_style4/all_earmuffs_style4_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ToughStuffMuffs_Style3" + } + } + } + } + "985" + { + "name" "Heavy's Hockey Hair" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_slot" "misc" + "equip_region" "heavy_hair" + "item_name" "#TF_HeavysHockeyHair" + "item_description" "#TF_HeavysHockeyHair_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/workshop/player/items/heavy/skullet/skullet" + "model_player" "models/workshop/player/items/heavy/skullet/skullet.mdl" + "drop_type" "none" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "986" + { + "name" "The Mutton Mann" + "first_sale_date" "2013/01/24" + "prefab" "beard" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_TheMuttonMann" + "item_description" "#TF_TheMuttonMann_Desc" + "propername" "1" + "drop_type" "none" + "image_inventory" "backpack/workshop/player/items/all_class/winter_sideburns/winter_sideburns" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/winter_sideburns/winter_sideburns_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "987" + { + "name" "The Merc's Muffler" + "first_sale_date" "2013/01/24" + "prefab" "misc" + "propername" "1" + "drop_type" "none" + "equip_region" "necklace" + "item_name" "#TF_TheMercsMuffler" + "item_description" "#TF_TheMercsMuffler_Desc" + "item_type_name" "#TF_Wearable_Scarf" + "image_inventory" "backpack/player/items/all_class/all_winter_scarf_engy" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_winter_scarf_%s.mdl" + "engineer" "models/player/items/all_class/all_winter_scarf_engy.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "988" + { + "name" "The Barnstormer" + "first_sale_date" "2013/01/24" + "prefab" "hat" + "item_name" "#TF_TheBarnstormer" + "item_description" "#TF_TheBarnstormer_Desc" + "image_inventory" "backpack/player/items/engineer/engineer_barnstormer_s01" + "model_player" "models/player/items/engineer/engineer_barnstormer_s01.mdl" + "propername" "1" + "drop_type" "none" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/player/items/engineer/engineer_barnstormer_s01.mdl" + "name" "#TF_TheBarnstormer_Style0" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/player/items/engineer/engineer_barnstormer_s02.mdl" + "name" "#TF_TheBarnstormer_Style1" + } + } + } + } + "989" + { + "name" "The Carl" + "first_sale_date" "2012/12/13" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_Heavy_Carl" + "item_description" "#TF_Heavy_Carl_Desc" + "image_inventory" "backpack/workshop_partner/player/items/heavy/heavy_carl_hair/heavy_carl_hair" + "model_player" "models/workshop_partner/player/items/heavy/heavy_carl_hair/heavy_carl_hair.mdl" + "propername" "1" + "equip_region" "heavy_hair" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "990" + { + "name" "Aqua Flops" + "first_sale_date" "2012/12/13" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_FlipFlops" + "item_name" "#TF_Heavy_AquaFlops" + "item_description" "#TF_Heavy_AquaFlops_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop_partner/player/items/heavy/heavy_carl_flops/heavy_carl_flops" + "model_player" "models/workshop_partner/player/items/heavy/heavy_carl_flops/heavy_carl_flops.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "991" + { + "name" "The Hunger Force" + "first_sale_date" "2012/12/13" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_Heavy_HungerForce" + "item_description" "#TF_Heavy_HungerForce_Desc" + "equip_regions" + { + "shirt" "1" + "necklace" "1" + } + "image_inventory" "backpack/workshop_partner/player/items/heavy/heavy_carl_medallion_shirt/heavy_carl_medallion_shirt" + "model_player" "models/workshop_partner/player/items/heavy/heavy_carl_medallion_shirt/heavy_carl_medallion_shirt.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "992" + { + "name" "Smissmas Wreath" + "first_sale_date" "2012/12/20" + "prefab" "valve misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Pin" + "item_name" "#TF_Wreath_2012" + "item_description" "#TF_Wreath_2012_Desc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/all_wreath_badge" + "model_player" "models/player/items/all_class/all_wreath_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "993" + { + "name" "Antlers" + "first_sale_date" "2012/12/20" + "prefab" "valve misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_Antlers" + "item_description" "#TF_Antlers_Desc" + "image_inventory" "backpack/player/items/all_class/xms_antlers_demo" + "model_player_per_class" + { + "basename" "models/player/items/all_class/xms_antlers_%s.mdl" + "engineer" "models/player/items/all_class/xms_antlers_engy.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_Antlers_Style_WithHat" + } + "1" + { + "name" "#TF_Antlers_Style_WithNoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "994" + { + "name" "Mann Co. Online Cap" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MannCoOnlineCap" + "item_description" "#TF_MannCoOnlineCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/mannco_online" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/%s_cap_online.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "995" + { + "name" "Pet Reindoonicorn" + "first_sale_date" "2012/12/20" + "prefab" "valve base_misc" + "hidden" "0" + "vision_filter_flags" "1" + "item_class" "tf_wearable" + "craft_class" "hat" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Balloon" + "item_name" "#TF_Pet_Reindoonicorn" + "item_description" "#TF_Pet_Reindoonicorn_Desc" + "item_slot" "misc" + "equip_region" "disconnected_floating_item" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "image_inventory" "backpack/player/items/all_class/pet_reinballoonicorn" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/all_class/pet_reinballoonicorn.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "1" + } + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + "pyrovision only DISPLAY ONLY" + { + "attribute_class" "pyrovision_only_display" + "value" "1" + } + "pyrovision opt in DISPLAY ONLY" + { + "attribute_class" "pyrovision_opt_in_display_only" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_mtp_pickup.wav" + "drop_sound" "ui/item_mtp_drop.wav" + } + "996" + { + "name" "The Loose Cannon" + "prefab" "weapon_demo_cannon paintkit_base" + "first_sale_date" "2012/12/19" + "particle_suffix" "loose_cannon" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_demo_cannon/c_demo_cannon_festivizer.mdl" + } + } + } + } + "997" + { + "name" "The Rescue Ranger" + "prefab" "weapon_rescue_ranger paintkit_base" + "first_sale_date" "2012/12/19" + "particle_suffix" "rescue_ranger" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_tele_shotgun/c_tele_shotgun_festivizer.mdl" + } + } + } + } + "998" + { + "name" "The Vaccinator" + "first_sale_date" "2012/12/19" + "item_class" "tf_weapon_medigun" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_heal_allies" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Medigun_Resist" + "item_name" "#TF_Unique_MediGun_Resist" + "item_description" "#TF_Unique_MediGun_Resist_Desc" + "propername" "1" + "item_slot" "secondary" + "equip_region" "medigun_backpack" + "image_inventory" "backpack/workshop/weapons/c_models/c_medigun_defense/c_medigun_defense" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_medigun_defense/c_medigun_defense.mdl" + "extra_wearable" "models/workshop/weapons/c_models/c_medigun_defense/c_medigun_defensepack.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "8" + "max_ilevel" "8" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + } + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "3" + } + "ubercharge rate bonus" + { + "attribute_class" "mult_medigun_uberchargerate" + "value" "1.67" + } + "ubercharge overheal rate penalty" + { + "attribute_class" "mult_medigun_overheal_uberchargerate" + "value" "0.67" + } + "overheal fill rate reduced" + { + "attribute_class" "overheal_fill_rate" + "value" "0.34" + } + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "1" + } + "kill eater score type 2" + { + "attribute_class" "kill_eater_score_type_2" + "value" "2" + } + "medigun charge is resists" + { + "attribute_class" "set_charge_type" + "value" "3" + } + "medigun bullet resist passive" + { + "attribute_class" "medigun_bullet_resist_passive" + "value" "0.1" + } + "medigun bullet resist deployed" + { + "attribute_class" "medigun_bullet_resist_deployed" + "value" "0.75" + } + "medigun blast resist passive" + { + "attribute_class" "medigun_blast_resist_passive" + "value" "0.1" + } + "medigun blast resist deployed" + { + "attribute_class" "medigun_blast_resist_deployed" + "value" "0.75" + } + "medigun fire resist passive" + { + "attribute_class" "medigun_fire_resist_passive" + "value" "0.1" + } + "medigun fire resist deployed" + { + "attribute_class" "medigun_fire_resist_deployed" + "value" "0.75" + } + } + "visuals" + { + "player_bodygroups" + { + "medic_backpack" "1" + } + } + "visuals_red" + { + "skin" "0" + "custom_particlesystem" + { + "system" "medicgun_beam_attrib_overheal_red" + } + } + "visuals_blu" + { + "skin" "1" + "custom_particlesystem" + { + "system" "medicgun_beam_attrib_overheal_blue" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "999" + { + "name" "Festive Holy Mackerel" + "prefab" "weapon_holymackerel" + "craft_class" "" + "item_name" "#TF_Weapon_HolyMackerel_Festive2012" + "image_inventory" "backpack/workshop/weapons/c_models/c_holymackerel/c_holymackerel_xmas" + "model_player" "models/workshop/weapons/c_models/c_holymackerel/c_holymackerel_xmas.mdl" + "set_item_remap" "The Holy Mackerel" + "visuals_red" + { + "skin" "0" + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + } + "visuals_blu" + { + "skin" "1" + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "holymackerel" + } + "1000" + { + "name" "Festive Axtinguisher" + "prefab" "weapon_axtinguisher" + "craft_class" "" + "item_name" "#TF_Weapon_Axtinguisher_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro_xmas" + "model_player" "models/weapons/c_models/c_fireaxe_pyro/c_fireaxe_pyro_xmas.mdl" + "xifier_class_remap" "axtinguisher" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -9" + } + } + "1001" + { + "name" "Festive Buff Banner" + "prefab" "weapon_buff_banner" + "craft_class" "" + "item_name" "#TF_Weapon_BuffBanner_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_buffpack/c_buffpack_xmas" + "extra_wearable" "models/weapons/c_models/c_buffpack/c_buffpack_xmas.mdl" + "xifier_class_remap" "buff_banner" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 -2 -5" + } + } + "1002" + { + "name" "Festive Sandvich" + "prefab" "weapon_sandvich" + "craft_class" "" + "item_name" "#TF_Weapon_Sandvich_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_sandwich/c_sandwich_xmas" + "model_player" "models/weapons/c_models/c_sandwich/c_sandwich_xmas.mdl" + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "4" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "1003" + { + "name" "Festive Ubersaw" + "prefab" "weapon_ubersaw" + "craft_class" "" + "item_name" "#TF_Weapon_Ubersaw_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_ubersaw/c_ubersaw_xmas" + "model_player" "models/weapons/c_models/c_ubersaw/c_ubersaw_xmas.mdl" + "xifier_class_remap" "ubersaw" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -12" + } + } + "1004" + { + "name" "Festive Frontier Justice" + "prefab" "weapon_frontier_justice" + "craft_class" "" + "item_name" "#TF_Weapon_FrontierJustice_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_frontierjustice/c_frontierjustice_xmas" + "model_player" "models/weapons/c_models/c_frontierjustice/c_frontierjustice_xmas.mdl" + "xifier_class_remap" "frontier_justice" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -10" + } + } + "1005" + { + "name" "Festive Huntsman" + "prefab" "weapon_huntsman" + "craft_class" "" + "item_name" "#TF_Weapon_Huntsman_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_bow/c_bow_xmas" + "model_player" "models/weapons/c_models/c_bow/c_bow_xmas.mdl" + "set_item_remap" "The Huntsman" + "xifier_class_remap" "huntsman" + "attributes" + { + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "19" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "1006" + { + "name" "Festive Ambassador" + "prefab" "weapon_ambassador" + "craft_class" "" + "item_name" "#TF_Weapon_Ambassador_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_ambassador/c_ambassador_xmas" + "model_player" "models/weapons/c_models/c_ambassador/c_ambassador_xmas.mdl" + "xifier_class_remap" "ambassador" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "5 0 -4" + } + } + "1007" + { + "name" "Festive Grenade Launcher" + "prefab" "weapon_grenade_launcher" + "craft_class" "" + "baseitem" "0" + "item_quality" "unique" + "xifier_class_remap" "grenade_launcher" + "item_name" "#TF_Weapon_GrenadeLauncher_Festive2012" + "image_inventory" "backpack/weapons/c_models/c_grenadelauncher/c_grenadelauncher_xmas" + "model_player" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1008" + { + "name" "The Prize Plushy" + "first_sale_date" "2013/01/23" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_PrizePlushy" + "item_description" "#TF_PrizePlushy_Desc" + "image_inventory" "backpack/workshop_partner/player/items/engineer/cave_bear/cave_bear" + "model_player" "models/workshop_partner/player/items/engineer/cave_bear/cave_bear.mdl" + "equip_region" "engineer_pocket" + "propername" "1" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1009" + { + "name" "The Grizzled Growth" + "first_sale_date" "2013/01/23" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_GrizzledGrowth" + "item_description" "#TF_GrizzledGrowth_Desc" + "image_inventory" "backpack/workshop_partner/player/items/engineer/cave_beard/cave_beard" + "model_player" "models/workshop_partner/player/items/engineer/cave_beard/cave_beard.mdl" + "equip_region" "beard" + "propername" "1" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1010" + { + "name" "The Last Straw" + "first_sale_date" "2013/01/23" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_LastStraw" + "item_description" "#TF_LastStraw_Desc" + "image_inventory" "backpack/workshop_partner/player/items/engineer/cave_hat/cave_hat" + "model_player" "models/workshop_partner/player/items/engineer/cave_hat/cave_hat.mdl" + "drop_type" "drop" + "propername" "1" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1011" + { + "name" "Tux" + "prefab" "base_misc" + "first_sale_date" "2013/01/14" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "craft_class" "" + "hidden" "0" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_LinuxItem" + "item_description" "#TF_LinuxItem_Desc" + "item_slot" "misc" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/all_penguin" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/all_class/all_penguin.mdl" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/all_class/all_penguin.mdl" + "name" "#TF_LinuxItem_Style0" + } + "1" + { + "model_player" "models/player/items/all_class/all_penguin_demo.mdl" + "name" "#TF_LinuxItem_Style1" + } + "2" + { + "model_player" "models/player/items/all_class/all_penguin_pyro.mdl" + "name" "#TF_LinuxItem_Style2" + } + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "1012" + { + "name" "The Wilson Weave" + "first_sale_date" "2013/05/10" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_WilsonWeave" + "item_description" "#TF_WilsonWeave_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/all_class/starve_demo" + "model_player_per_class" + { + "basename" "models/player/items/all_class/starve_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_NoHat_Style" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_NoHat_NoHeadphones_Style" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "1013" + { + "name" "The Ham Shank" + "first_sale_date" "2013/05/10" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_material_type" "weapon" + "craft_class" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "item_logname" "ham_shank" + "item_iconname" "ham_shank" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Pork_Product" + "item_name" "#TF_HamShank" + "item_description" "#TF_HamShank_Desc" + "item_slot" "melee" + "image_inventory" "backpack/workshop/weapons/c_models/c_ham/c_ham" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "model_player" "models/workshop/weapons/c_models/c_ham/c_ham.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "visuals" + { + "sound_melee_hit" "Weapon_HolyMackerel.HitFlesh" + "sound_melee_hit_world" "Weapon_HolyMackerel.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "1014" + { + "name" "The Brutal Bouffant" + "first_sale_date" "2013/02/13" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_BrutalBouffant" + "item_description" "#TF_BrutalBouffant_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/brutal_hair/brutal_hair_demo" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/brutal_hair/brutal_hair_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_NoHat_Style" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_NoHat_NoHeadphones_Style" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "1015" + { + "name" "The Shred Alert" + "prefab" "taunt" + "first_sale_date" "2013/02/13" + "item_name" "#TF_ShredAlert" + "item_description" "#TF_ShredAlert_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt attack name" + { + "attribute_class" "taunt_attack_name" + "value" "TAUNTATK_ALLCLASS_GUITAR_RIFF" + } + "taunt attack time" + { + "attribute_class" "taunt_attack_time" + "value" "0" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_brutalLegend.vcd" + "sniper" "scenes\player\sniper\low\taunt_brutalLegend.vcd" + "soldier" "scenes\player\soldier\low\taunt_brutalLegend.vcd" + "demoman" "scenes\player\demoman\low\taunt_brutalLegend.vcd" + "medic" "scenes\player\medic\low\taunt_brutalLegend.vcd" + "heavy" "scenes\player\heavy\low\taunt_brutalLegend.vcd" + "spy" "scenes\player\spy\low\taunt_brutalLegend.vcd" + "engineer" "scenes\player\engineer\low\taunt_brutalLegend.vcd" + "pyro" "scenes\player\pyro\low\taunt_brutalLegend.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar.mdl" + "sniper" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + "soldier" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + "demoman" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + "medic" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + "heavy" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + "spy" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + "engineer" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar.mdl" + "pyro" "models/workshop_partner/player/items/taunts/brutal_guitar/brutal_guitar_xl.mdl" + } + } + } + "1016" + { + "name" "Buck Turner All-Stars" + "first_sale_date" "2013/02/15" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_TurnerAllStars" + "item_description" "#TF_TurnerAllStars_Desc" + "equip_region" "feet" + "image_inventory" "backpack/player/items/demo/bit_trippers_demo" + "model_player_per_class" + { + "basename" "models/player/items/%s/bit_trippers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + "shoes" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1017" + { + "name" "Vox Diabolus" + "first_sale_date" "2013/02/21" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "drop_type" "drop" + "item_name" "#TF_VoxDiabolus" + "item_description" "#TF_VoxDiabolus_Desc" + "image_inventory" "backpack/player/items/engineer/bio_voxhood" + "model_player" "models/player/items/engineer/bio_voxhood.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1018" + { + "name" "The Pounding Father" + "first_sale_date" "2013/02/21" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_PoundingFather" + "item_description" "#TF_PoundingFather_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/heavy/bio_heavy_wig" + "model_player" "models/player/items/heavy/bio_heavy_wig.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1019" + { + "name" "Blind Justice" + "first_sale_date" "2013/02/21" + "prefab" "misc" + "equip_region" "demo_eyepatch" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_BlindJustice" + "item_description" "#TF_BlindJustice_Desc" + "image_inventory" "backpack/player/items/demo/bio_demo_patch" + "model_player" "models/player/items/demo/bio_demo_patch.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1020" + { + "name" "The Person in the Iron Mask" + "first_sale_date" "2013/02/21" + "prefab" "hat" + "equip_region" "whole_head" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_IronMask" + "item_description" "#TF_IronMask_Desc" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "image_inventory" "backpack/player/items/pyro/bio_fireman" + "model_player" "models/player/items/pyro/bio_fireman.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "1021" + { + "name" "The Doe-Boy" + "first_sale_date" "2013/02/21" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_DoeBoy" + "item_description" "#TF_DoeBoy_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "image_inventory" "backpack/player/items/soldier/bio_soldier_founders" + "model_player" "models/player/items/soldier/bio_soldier_founders_cover.mdl" + "drop_type" "drop" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/player/items/soldier/bio_soldier_founders_cover.mdl" + "name" "#TF_DoeBoy_Style0" + } + "1" + { + "skin_red" "0" + "skin_blu" "1" + "model_player" "models/player/items/soldier/bio_soldier_founders.mdl" + "name" "#TF_DoeBoy_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1022" + { + "name" "The Sydney Straw Boat" + "first_sale_date" "2013/02/21" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_StrawBoat" + "item_description" "#TF_StrawBoat_Desc" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/sniper/bio_sniper_boater" + "model_player" "models/player/items/sniper/bio_sniper_boater.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1023" + { + "name" "The Steel Songbird" + "first_sale_date" "2013/02/21" + "prefab" "misc" + "equip_region" "left_shoulder" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_SteelSongbird" + "item_description" "#TF_SteelSongbird_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/sniper/bio_sniper_songbird" + "model_player" "models/player/items/sniper/bio_sniper_songbird.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1024" + { + "name" "Croft's Crest" + "first_sale_date" "2013/03/04" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_CroftsCrest" + "item_description" "#TF_CroftsCrest_Desc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/all_class/tomb_badge" + "model_player" "models/player/items/all_class/tomb_badge.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "1025" + { + "name" "The Fortune Hunter" + "first_sale_date" "2013/03/04" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Axe" + "item_name" "#TF_FortuneHunter" + "item_description" "#TF_FortuneHunter_Desc" + "propername" "1" + "equip_region" "belt_misc" + "image_inventory" "backpack/player/items/all_class/tomb_pick_demo" + "model_player_per_class" + { + "basename" "models/player/items/all_class/tomb_pick_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "1026" + { + "name" "The Tomb Wrapper" + "first_sale_date" "2013/03/04" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Bandages" + "item_name" "#TF_TombWrapper" + "item_description" "#TF_TombWrapper_Desc" + "propername" "1" + "equip_region" "scout_bandages" + "image_inventory" "backpack/player/items/scout/tomb_tourniquet" + "model_player" "models/player/items/scout/tomb_tourniquet.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1027" + { + "name" "Random Droppable Paints Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "paint_cans__multiple_drops" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_RandomDroppablePaintPackage" + "item_description" "#TF_RandomDroppablePaintPackage_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/random_paint" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "1028" + { + "name" "The Samson Skewer" + "first_sale_date" "2013/03/11" + "prefab" "misc" + "craft_class" "" + "craft_material_type" "" + "item_type_name" "#TF_Wearable_Knife" + "item_name" "#TF_SamsonSkewer" + "item_description" "#TF_SamsonSkewer_Desc" + "propername" "1" + "equip_region" "heavy_belt_back" + "image_inventory" "backpack/player/items/heavy/pn2_knife_lunchbox" + "model_player" "models/player/items/heavy/pn2_knife_lunchbox.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/player/items/heavy/pn2_knife_lunchbox.mdl" + "name" "#TF_SamsonSkewer_Style0" + } + "1" + { + "model_player" "models/player/items/heavy/pn2_knife_canteen.mdl" + "name" "#TF_SamsonSkewer_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "1029" + { + "name" "The Bloodhound" + "first_sale_date" "2013/03/11" + "prefab" "hat" + "craft_class" "" + "craft_material_type" "" + "drop_type" "drop" + "item_name" "#TF_Bloodhound" + "item_description" "#TF_Bloodhound_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/spy/pn2_samhat_spy" + "model_player_per_class" + { + "basename" "models/player/items/%s/pn2_samhat_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1030" + { + "name" "The Dapper Disguise" + "first_sale_date" "2013/03/11" + "prefab" "misc" + "craft_class" "" + "craft_material_type" "" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_DapperDisguise" + "item_description" "#TF_DapperDisguise_Desc" + "propername" "1" + "equip_region" "face" + "image_inventory" "backpack/player/items/spy/pn2_mask" + "model_player" "models/player/items/spy/pn2_mask.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "1031" + { + "name" "The Necronomicrown" + "first_sale_date" "2013/03/11" + "prefab" "hat" + "craft_class" "" + "craft_material_type" "" + "item_name" "#TF_Necronomicrown" + "item_description" "#TF_Necronomicrown_Desc" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/pyro/pn2_evilash" + "model_player" "models/player/items/pyro/pn2_evilash.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1032" + { + "name" "The Long Fall Loafers" + "first_sale_date" "2013/03/11" + "prefab" "misc" + "craft_class" "" + "craft_material_type" "" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_LongFallLoafers" + "item_description" "#TF_LongFallLoafers_Desc" + "propername" "1" + "equip_region" "feet" + "image_inventory" "backpack/player/items/scout/pn2_longfall" + "model_player" "models/player/items/scout/pn2_longfall.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + } + "1033" + { + "name" "The TF2VRH" + "prefab" "base_misc" + "first_sale_date" "2013/03/19" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "craft_class" "" + "hidden" "0" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Headset" + "item_name" "#TF_TF2VRH" + "item_description" "#TF_TF2VRH_Desc" + "propername" "1" + "equip_region" "glasses" + "item_slot" "misc" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/all_class_oculus_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "drop_type" "none" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_oculus_%s.mdl" + } + "model_player_per_class_alt" + { + "scout" "models/player/items/all_class/all_class_oculus_scout_on.mdl" + "sniper" "models/player/items/all_class/all_class_oculus_sniper_on.mdl" + "soldier" "models/player/items/all_class/all_class_oculus_soldier_on.mdl" + "demoman" "models/player/items/all_class/all_class_oculus_demo_on.mdl" + "medic" "models/player/items/all_class/all_class_oculus_medic_on.mdl" + "heavy" "models/player/items/all_class/all_class_oculus_heavy_on.mdl" + "spy" "models/player/items/all_class/all_class_oculus_spy_on.mdl" + "engineer" "models/player/items/all_class/all_class_oculus_engineer_on.mdl" + "pyro" "models/player/items/all_class/all_class_oculus_pyro_on.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_oculus_%s.mdl" + } + "model_player_per_class_alt" + { + "scout" "models/player/items/all_class/all_class_oculus_scout_on.mdl" + "sniper" "models/player/items/all_class/all_class_oculus_sniper_on.mdl" + "soldier" "models/player/items/all_class/all_class_oculus_soldier_on.mdl" + "demoman" "models/player/items/all_class/all_class_oculus_demo_on.mdl" + "medic" "models/player/items/all_class/all_class_oculus_medic_on.mdl" + "heavy" "models/player/items/all_class/all_class_oculus_heavy_on.mdl" + "spy" "models/player/items/all_class/all_class_oculus_spy_on.mdl" + "engineer" "models/player/items/all_class/all_class_oculus_engineer_on.mdl" + "pyro" "models/player/items/all_class/all_class_oculus_pyro_on.mdl" + } + "name" "#TF_TF2VRH_Style0" + } + "1" + { + "model_player_per_class" + { + "scout" "models/player/items/all_class/all_class_oculus_scout_on.mdl" + "sniper" "models/player/items/all_class/all_class_oculus_sniper_on.mdl" + "soldier" "models/player/items/all_class/all_class_oculus_soldier_on.mdl" + "demoman" "models/player/items/all_class/all_class_oculus_demo_on.mdl" + "medic" "models/player/items/all_class/all_class_oculus_medic_on.mdl" + "heavy" "models/player/items/all_class/all_class_oculus_heavy_on.mdl" + "spy" "models/player/items/all_class/all_class_oculus_spy_on.mdl" + "engineer" "models/player/items/all_class/all_class_oculus_engineer_on.mdl" + "pyro" "models/player/items/all_class/all_class_oculus_pyro_on.mdl" + } + "model_player_per_class_alt" + { + "scout" "models/player/items/all_class/all_class_oculus_scout_on.mdl" + "sniper" "models/player/items/all_class/all_class_oculus_sniper_on.mdl" + "soldier" "models/player/items/all_class/all_class_oculus_soldier_on.mdl" + "demoman" "models/player/items/all_class/all_class_oculus_demo_on.mdl" + "medic" "models/player/items/all_class/all_class_oculus_medic_on.mdl" + "heavy" "models/player/items/all_class/all_class_oculus_heavy_on.mdl" + "spy" "models/player/items/all_class/all_class_oculus_spy_on.mdl" + "engineer" "models/player/items/all_class/all_class_oculus_engineer_on.mdl" + "pyro" "models/player/items/all_class/all_class_oculus_pyro_on.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_TF2VRH_Style1" + } + } + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1034" + { + "name" "The Conspiracy Cap" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_ConspiracyCap" + "item_description" "#TF_ConspiracyCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/all_class_reddit_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_reddit_%s_hat.mdl" + "demoman" "models/player/items/all_class/all_class_reddit_demo.mdl" + "medic" "models/player/items/all_class/all_class_reddit_medic.mdl" + "heavy" "models/player/items/all_class/all_class_reddit_heavy.mdl" + "spy" "models/player/items/all_class/all_class_reddit_spy.mdl" + "pyro" "models/player/items/all_class/all_class_reddit_pyro.mdl" + } + "drop_type" "none" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_reddit_%s_hat.mdl" + "demoman" "models/player/items/all_class/all_class_reddit_demo.mdl" + "medic" "models/player/items/all_class/all_class_reddit_medic.mdl" + "heavy" "models/player/items/all_class/all_class_reddit_heavy.mdl" + "spy" "models/player/items/all_class/all_class_reddit_spy.mdl" + "pyro" "models/player/items/all_class/all_class_reddit_pyro.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ConspiracyCap_Style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_reddit_%s.mdl" + } + "additional_hidden_bodygroups" + { + "hat" "1" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_ConspiracyCap_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1035" + { + "name" "The Public Accessor" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_PublicAccessor" + "item_description" "#TF_PublicAccessor_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/all_class_reddit_alt_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_reddit_alt_%s_hat.mdl" + "demoman" "models/player/items/all_class/all_class_reddit_alt_demo.mdl" + "medic" "models/player/items/all_class/all_class_reddit_alt_medic.mdl" + "heavy" "models/player/items/all_class/all_class_reddit_alt_heavy.mdl" + "spy" "models/player/items/all_class/all_class_reddit_alt_spy.mdl" + "pyro" "models/player/items/all_class/all_class_reddit_alt_pyro.mdl" + } + "drop_type" "none" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_reddit_alt_%s_hat.mdl" + "demoman" "models/player/items/all_class/all_class_reddit_alt_demo.mdl" + "medic" "models/player/items/all_class/all_class_reddit_alt_medic.mdl" + "heavy" "models/player/items/all_class/all_class_reddit_alt_heavy.mdl" + "spy" "models/player/items/all_class/all_class_reddit_alt_spy.mdl" + "pyro" "models/player/items/all_class/all_class_reddit_alt_pyro.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_PublicAccessor_Style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_class_reddit_alt_%s.mdl" + } + "additional_hidden_bodygroups" + { + "hat" "1" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_PublicAccessor_Style1" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + + "1037" + { + "name" "Pallet of Crates" + "loadondemand" "1" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "pallet_of_crates_lootlist" + "num_items" "1" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_24" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_Crate_EntireServer" + "item_description" "#TF_Gift_Crate_EntireServer_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/pile_of_crates" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "23" + "max_ilevel" "23" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "1038" + { + "name" "The Breather Bag" + "first_sale_date" "2013/06/03" + "prefab" "misc" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_BreatherBag" + "item_description" "#TF_BreatherBag_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/pyro/as_pyro_cleansuit/as_pyro_cleansuit" + "model_player" "models/workshop_partner/player/items/pyro/as_pyro_cleansuit/as_pyro_cleansuit.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "1039" + { + "name" "The Weather Master" + "first_sale_date" "2013/06/03" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_WeatherMaster" + "item_description" "#TF_WeatherMaster_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/medic/as_medic_cloud_hat/as_medic_cloud_hat" + "model_player" "models/workshop_partner/player/items/medic/as_medic_cloud_hat/as_medic_cloud_hat.mdl" + "drop_type" "drop" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1040" + { + "name" "The Bacteria Blocker" + "first_sale_date" "2013/06/03" + "prefab" "hat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "item_name" "#TF_BacteriaBlocker" + "item_description" "#TF_BacteriaBlocker_Desc" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/scout/as_scout_cleansuit_hood/as_scout_cleansuit_hood" + "model_player" "models/workshop_partner/player/items/scout/as_scout_cleansuit_hood/as_scout_cleansuit_hood.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_BacteriaBlocker_Style0" + } + "1" + { + "additional_hidden_bodygroups" + { + "headphones" "1" + } + "name" "#TF_BacteriaBlocker_Style1" + } + } + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + + + "1057" + { + "name" "MvM GateBot Light Scout" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_scout_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_scout_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_scout_off.mdl" + } + } + } + } + "1058" + { + "name" "MvM GateBot Light Pyro" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_pyro_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_pyro_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_pyro_off.mdl" + } + } + } + } + "1059" + { + "name" "MvM GateBot Light Medic" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_medic_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_medic_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_medic_off.mdl" + } + } + } + } + "1060" + { + "name" "MvM GateBot Light Heavy" + "first_sale_date" "2011/12/19" + "prefab" "no_craft misc" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_heavy_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_heavy_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_heavy_off.mdl" + } + } + } + } + "1061" + { + "name" "MvM GateBot Light Demoman" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_demo_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_demo_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_demo_off.mdl" + } + } + } + } + "1062" + { + "name" "MvM GateBot Light Sniper" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_sniper_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_sniper_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_sniper_off.mdl" + } + } + } + } + "1063" + { + "name" "MvM GateBot Light Soldier" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_soldier_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_soldier_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_soldier_off.mdl" + } + } + } + } + "1064" + { + "name" "MvM GateBot Light Spy" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_spy_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_spy_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_spy_off.mdl" + } + } + } + } + "1065" + { + "name" "MvM GateBot Light Engineer" + "first_sale_date" "2011/12/19" + "prefab" "no_craft hat" + "item_name" "#TF_GateBot_Light" + "item_description" "#TF_GateBot_Light_Desc" + "image_inventory" "backpack" + "model_player" "models/bots/gameplay_cosmetic/light_engineer_on.mdl" + "drop_type" "none" + "show_in_armory" "0" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#style0" + "skin_red" "0" + "skin_blu" "0" + "model_player" "models/bots/gameplay_cosmetic/light_engineer_on.mdl" + } + "1" + { + "name" "#style1" + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/bots/gameplay_cosmetic/light_engineer_off.mdl" + } + } + } + } + "1066" + { + "name" "Tour of Duty Badge Advanced 3" + "prefab" "base_misc" + "loadondemand" "1" + "item_class" "tf_wearable" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_MvM_Badge_Advanced3" + "item_description" "#TF_MvM_Badge_Advanced3_Desc" + "item_slot" "misc" + "equip_region" "medal" + "image_inventory" "backpack/player/items/mvm_loot/all_class/mvm_badge_shield" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/mvm_loot/all_class/mvm_badge_shield.mdl" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "1067" + { + "name" "The Grandmaster" + "prefab" "no_craft hat" + "first_sale_date" "2013/10/01" + "item_class" "tf_wearable_levelable_item" + "item_name" "#TF_Grandmaster" + "item_description" "#TF_Grandmaster_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/player/items/all_class/chess_hat" + "propername" "1" + "drop_type" "drop" + "model_player_per_class" + { + "basename" "models/player/items/all_class/chess_%s_red.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class_red" + { + "scout" "models/player/items/all_class/chess_scout_red.mdl" + "sniper" "models/player/items/all_class/chess_sniper_red.mdl" + "soldier" "models/player/items/all_class/chess_soldier_red.mdl" + "demoman" "models/player/items/all_class/chess_demo_red.mdl" + "medic" "models/player/items/all_class/chess_medic_red.mdl" + "heavy" "models/player/items/all_class/chess_heavy_red.mdl" + "spy" "models/player/items/all_class/chess_spy_red.mdl" + "engineer" "models/player/items/all_class/chess_engineer_red.mdl" + "pyro" "models/player/items/all_class/chess_pyro_red.mdl" + } + "model_player_per_class_blue" + { + "scout" "models/player/items/all_class/chess_scout_blue.mdl" + "sniper" "models/player/items/all_class/chess_sniper_blue.mdl" + "soldier" "models/player/items/all_class/chess_soldier_blue.mdl" + "demoman" "models/player/items/all_class/chess_demo_blue.mdl" + "medic" "models/player/items/all_class/chess_medic_blue.mdl" + "heavy" "models/player/items/all_class/chess_heavy_blue.mdl" + "spy" "models/player/items/all_class/chess_spy_blue.mdl" + "engineer" "models/player/items/all_class/chess_engineer_blue.mdl" + "pyro" "models/player/items/all_class/chess_pyro_blue.mdl" + } + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + + "1068" + { + "name" "Halloween Unfilled Spellbook" + "capabilities" + { + "can_spell_page" "1" + } + "item_class" "craft_item" + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "0" + "item_type_name" "#TF_Spellbook_Type" + "item_name" "#TF_UnfilledSpellbook" + "item_description" "#TF_UnfilledSpellbook_Desc" + "image_inventory" "backpack/props_halloween/hwn_spellbook_incomplete" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "1069" + { + "name" "Halloween Spellbook" + "prefab" "halloween2013_spellbook" + "item_type_name" "#TF_Spellbook_Type" + "item_name" "#TF_FancySpellbook" + "item_description" "#TF_FancySpellbook_Desc" + "image_inventory" "backpack/player/items/all_class/hwn_spellbook_complete" + "capabilities" + { + "can_spell_page" "1" + } + "extra_wearable" "models/player/items/all_class/hwn_spellbook_complete.mdl" + } + "1070" + { + "name" "Basic Spellbook" + "prefab" "halloween2013_spellbook" + "item_type_name" "#TF_Spellbook_Type" + "item_name" "#TF_Spellbook_Basic" + "item_description" "#TF_SpellBook_Basic_Desc" + "image_inventory" "backpack/props_halloween/hwn_spellbook_magazine" + } + "1071" + { + "name" "Gold Frying Pan" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "item_logname" "golden_fryingpan" + "item_iconname" "golden_fryingpan" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_GoldFryingPan" + "item_name" "#TF_Gold_FryingPan" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_frying_pan/c_frying_pan_gold" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_frying_pan/c_frying_pan.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "40" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "anim_slot" "MELEE_ALLCLASS" + "xifier_class_remap" "Frying Pan" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -7" + } + "attributes" + { + "turn to gold" + { + "attribute_class" "set_turn_to_gold" + "value" "1" + } + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "visuals" + { + "sound_melee_hit" "FryingPan.HitFlesh" + "sound_melee_hit_world" "FryingPan.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_burst" "Weapon_Machete.MissCrit" + + "styles" + { + "0" + { + "skin_red" "2" + "skin_blu" "3" + } + } + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "1072" + { + "name" "The Portable Smissmas Spirit Dispenser" + "first_sale_date" "2013/12/18" + "prefab" "misc" + "craft_class" "" + "equip_region" "back" + "item_type_name" "#TF_Wearable_Snowglobe" + "item_name" "#TF_Winter2013_SpiritDispenser" + "item_description" "#TF_Winter2013_SpiritDispenser_Desc" + "image_inventory" "backpack/player/items/pyro/xms_backpack_snowglobe" + "model_player" "models/player/items/pyro/xms_backpack_snowglobe.mdl" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "1073" + { + "name" "The War on Smissmas Battle Hood" + "first_sale_date" "2013/12/18" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Winter2013_BattleHood" + "item_description" "#TF_Winter2013_BattleHood_Desc" + "item_type_name" "#TF_Wearable_Hood" + "image_inventory" "backpack/player/items/soldier/soldier_hood" + "model_player" "models/player/items/soldier/soldier_hood.mdl" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "0" + } + "styles" + { + "0" + { + "model_player" "models/player/items/soldier/soldier_hood.mdl" + "name" "#TF_Winter2013_BattleHood_Style0" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "model_player" "models/player/items/soldier/soldier_hood_helmet.mdl" + "name" "#TF_Winter2013_BattleHood_Style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1074" + { + "name" "The War on Smissmas Battle Socks" + "first_sale_date" "2013/12/18" + "prefab" "misc" + "craft_class" "" + "item_type_name" "#TF_Wearable_Bombs" + "item_name" "#TF_Winter2013_BattleSocks" + "item_description" "#TF_Winter2013_BattleSocks_Desc" + "image_inventory" "backpack/player/items/soldier/xms_nade_socks" + "model_player" "models/player/items/soldier/xms_nade_socks.mdl" + "equip_region" "grenades" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1075" + { + "name" "The Sack Fulla Smissmas" + "first_sale_date" "2013/12/18" + "prefab" "misc" + "craft_class" "" + "equip_region" "scout_backpack" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_Winter2013_SmissmasSack" + "item_description" "#TF_Winter2013_SmissmasSack_Desc" + "image_inventory" "backpack/player/items/scout/xms_santa_sack" + "model_player" "models/player/items/scout/xms_santa_sack.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "1076" + { + "name" "The Smissmas Caribou" + "first_sale_date" "2013/12/18" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Winter2013_Caribou" + "item_description" "#TF_Winter2013_Caribou_Desc" + "image_inventory" "backpack/player/items/sniper/xms_braindeer" + "model_player" "models/player/items/sniper/xms_braindeer.mdl" + "propername" "1" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "skin" "0" + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1077" + { + "name" "Randolph the Blood-Nosed Caribou" + "first_sale_date" "2013/12/18" + "prefab" "hat" + "craft_class" "" + "item_name" "#TF_Winter2013_Randolph" + "item_description" "#TF_Winter2013_Randolph_Desc" + "image_inventory" "backpack/player/items/sniper/xms_braindeer_rare" + "model_player" "models/player/items/sniper/xms_braindeer.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals_red" + { + "skin" "1" + } + "visuals_blu" + { + "skin" "2" + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + "1078" + { + "name" "Festive Force-a-Nature" + "prefab" "weapon_force_a_nature" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_ForceANature_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_xms_double_barrel" + "model_player" "models/weapons/c_models/c_xms_double_barrel.mdl" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1079" + { + "name" "Festive Crusader's Crossbow" + "prefab" "weapon_crusaders_crossbow" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_CrusaderCrossbow_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow_xmas" + "model_player" "models/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow_xmas.mdl" + "attributes" + { + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "23" + } + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -14" + } + "set_item_remap" "The Crusader's Crossbow" + } + "1080" + { + "name" "Festive Sapper" + "prefab" "weapon_sapper" + "item_class" "tf_weapon_sapper" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_Sapper_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_sapper/c_sapper_xmas" + "model_player" "models/weapons/c_models/c_sapper/c_sapper_xmas.mdl" + "model_world" "models/weapons/c_models/c_sapper/c_sapper_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -6" + } + } + "1081" + { + "name" "Festive Flare Gun" + "prefab" "weapon_flaregun" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_Flaregun_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_xms_flaregun/c_xms_flaregun" + "model_player" "models/weapons/c_models/c_xms_flaregun/c_xms_flaregun.mdl" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1082" + { + "name" "Festive Eyelander" + "prefab" "weapon_eyelander" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_Eyelander_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_claymore/c_claymore_xmas" + "model_player" "models/weapons/c_models/c_claymore/c_claymore_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 -3 -10" + } + } + "1083" + { + "name" "Festive Jarate" + "prefab" "weapon_jarate" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_Jarate_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_xms_urinejar" + "model_player" "models/weapons/c_models/c_xms_urinejar.mdl" + "attributes" + { + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "22" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "1084" + { + "name" "Festive Gloves of Running Urgently" + "prefab" "weapon_gru" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_GRU_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_boxing_gloves\c_boxing_gloves_xmas" + "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves_xmas.mdl" + "visuals_red" + { + "use_visualsblock_as_base" "visuals" + "skin" "2" + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + } + "visuals_blu" + { + "use_visualsblock_as_base" "visuals" + "skin" "3" + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -10" + } + } + "1085" + { + "name" "Festive Black Box" + "prefab" "weapon_blackbox" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_Blackbox_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/workshop/weapons/c_models/c_blackbox/c_blackbox_xmas" + "model_player" "models/workshop/weapons/c_models/c_blackbox/c_blackbox_xmas.mdl" + "set_item_remap" "The Black Box" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1086" + { + "name" "Festive Wrangler" + "prefab" "weapon_wrangler" + "propername" "0" + "craft_class" "" + "item_name" "#TF_Weapon_Wrangler_Festive2013" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/weapons/c_models/c_wrangler_xmas" + "model_player" "models/weapons/c_models/c_wrangler_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "12 0 -8" + } + } + "1087" + { + "name" "Der Maschinensoldaten-Helm" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_MaschinensoldatenHelm" + "item_description" "#TF_MaschinensoldatenHelm_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_wolf_helm" + "model_player" "models/player/items/heavy/heavy_wolf_helm.mdl" + "drop_type" "drop" + "used_by_classes" + { + "heavy" "1" + } + } + "1088" + { + "name" "Die Regime-Panzerung" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_RegimePanzerung" + "item_description" "#TF_RegimePanzerung_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_wolf_chest" + "model_player" "models/player/items/heavy/heavy_wolf_chest.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "1089" + { + "name" "Mister Bubbles" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_MisterBubbles" + "item_description" "#TF_MisterBubbles_Desc" + "image_inventory" "backpack/workshop/player/items/engineer/bi_big_daddy_doll/bi_big_daddy_doll" + "model_player" "models/workshop/player/items/engineer/bi_big_daddy_doll/bi_big_daddy_doll.mdl" + "equip_region" "engineer_pocket" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1090" + { + "name" "The Big Daddy" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_BigDaddy" + "item_description" "#TF_BigDaddy_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/bi_washington_mask/bi_washington_mask" + "model_player" "models/workshop/player/items/soldier/bi_washington_mask/bi_washington_mask.mdl" + "equip_region" "whole_head" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1091" + { + "name" "The First American" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_FirstAmerican" + "item_description" "#TF_FirstAmerican_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/bi_franklin_mask/bi_franklin_mask" + "model_player" "models/workshop/player/items/soldier/bi_franklin_mask/bi_franklin_mask.mdl" + "equip_region" "whole_head" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1092" + { + "name" "The Fortified Compound" + "first_sale_date" "2014/03/07" + "prefab" "weapon_huntsman" + "capabilities" + { + "can_craft_count" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -4 -10" + } + "item_name" "#TF_FortifiedCompound" + "item_description" "#TF_FortifiedCompound_Desc" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_bow_thief/c_bow_thief" + "model_player" "models/workshop_partner/weapons/c_models/c_bow_thief/c_bow_thief.mdl" + "inspect_panel_dist" "55" + } + "1093" + { + "name" "The Gilded Guard" + "first_sale_date" "2014/03/07" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_GildedGuard" + "item_description" "#TF_GildedGuard_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop_partner/player/items/soldier/thief_soldier_helmet/thief_soldier_helmet" + "model_player" "models/workshop_partner/player/items/soldier/thief_soldier_helmet/thief_soldier_helmet.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1094" + { + "name" "The Criminal Cloak" + "first_sale_date" "2014/03/07" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Cape" + "item_name" "#TF_CriminalCloak" + "item_description" "#TF_CriminalCloak_Desc" + "equip_region" "sniper_vest" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/sniper/thief_sniper_cape/thief_sniper_cape" + "model_player" "models/workshop_partner/player/items/sniper/thief_sniper_cape/thief_sniper_cape.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1095" + { + "name" "The Dread Hiding Hood" + "first_sale_date" "2014/03/07" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_DreadHidingHood" + "item_description" "#TF_DreadHidingHood_Desc" + "item_type_name" "#TF_Wearable_Hood" + "propername" "1" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "image_inventory" "backpack/workshop_partner/player/items/sniper/thief_sniper_hood/thief_sniper_hood" + "model_player" "models/workshop_partner/player/items/sniper/thief_sniper_hood/thief_sniper_hood.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1096" + { + "name" "The Baronial Badge" + "first_sale_date" "2014/03/07" + "prefab" "misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Badge" + "item_name" "#TF_BaronialBadge" + "item_description" "#TF_BaronialBadge_Desc" + "equip_region" "medal" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/thief_badge/thief_badge" + "model_player" "models/workshop_partner/player/items/all_class/thief_badge/thief_badge_demo.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "1097" + { + "name" "The Little Bear" + "first_sale_date" "2014/04/01" + "prefab" "valve misc" + "equip_region" "heavy_hip_pouch" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_LittleBear" + "item_description" "#TF_LittleBear_Desc" + "propername" "1" + "image_inventory" "backpack/player/items/heavy/heavy_pocket_bot" + "model_player" "models/player/items/heavy/heavy_pocket_bot.mdl" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "1098" + { + "name" "The Classic" + "prefab" "valve weapon_sniperrifle_alt1" + "first_sale_date" "2014/06/18" + "item_class" "tf_weapon_sniperrifle_classic" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_headshot" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + "can_deal_gib_damage" "1" + } + "item_logname" "the_classic" + "item_iconname" "the_classic" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_ClassicSniperRifle" + "item_description" "#TF_ClassicSniperRifle_Desc" + "item_slot" "primary" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "image_inventory" "backpack/weapons/c_models/c_tfc_sniperrifle/c_tfc_sniperrifle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_tfc_sniperrifle/c_tfc_sniperrifle.mdl" + "attach_to_hands" "1" + "visuals" + { + "show_player_bodygroup_name" "bullets" + "sound_single_shot" "Weapon_ClassicSniperRifle.Single" + "sound_burst" "Weapon_ClassicSniperRifle.SingleCrit" + } + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "5 0 -8" + } + "attributes" + { + "crit on hard hit" + { + "attribute_class" "crit_on_hard_hit" + "value" "1" + } + "damage penalty on bodyshot" + { + "attribute_class" "bodyshot_damage_modify" + "value" "0.90" + } + "sniper no headshot without full charge" + { + "attribute_class" "sniper_no_headshot_without_full_charge" + "value" "1" + } + "sniper crit no scope" + { + "attribute_class" "sniper_crit_no_scope" + "value" "1" + } + "sniper fires tracer HIDDEN" + { + "attribute_class" "sniper_fires_tracer_HIDDEN" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "3" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "1099" + { + "name" "The Tide Turner" + "first_sale_date" "2014/06/18" + "item_class" "tf_wearable_demoshield" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Shield" + "item_name" "#TF_TideTurner" + "item_description" "#TF_TideTurner_Desc" + "item_slot" "secondary" + "equip_region" "arms" + "anim_slot" "FORCE_NOT_USED" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "item_logname" "tide_turner" + "item_iconname" "tide_turner" + "image_inventory" "backpack/workshop/weapons/c_models/c_wheel_shield/c_wheel_shield" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "45" + "model_player" "models/workshop/weapons/c_models/c_wheel_shield/c_wheel_shield.mdl" + "act_as_wearable" "1" + "attach_to_hands" "0" + "attach_to_hands_vm_only" "1" + "drop_type" "drop" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "dmg taken from fire reduced" + { + "attribute_class" "mult_dmgtaken_from_fire" + "value" "0.85" + } + "dmg taken from blast reduced" + { + "attribute_class" "mult_dmgtaken_from_explosions" + "value" "0.85" + } + "lose demo charge on damage when charging" + { + "attribute_class" "lose_demo_charge_on_damage_when_charging" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + "full charge turn control" + { + "attribute_class" "charge_turn_control" + "value" "50" + } + "kill refills meter" + { + "attribute_class" "kill_refills_meter" + "value" "0.75" + } + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + "1100" + { + "name" "The Bread Bite" + "prefab" "valve weapon_gru" + "first_sale_date" "2014/06/18" + "propername" "1" + "craft_class" "" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "item_class" "tf_weapon_fists" + "item_name" "#TF_Weapon_BreadBite" + "item_description" "#TF_Weapon_BreadBite_Desc" + "item_slot" "melee" + "item_quality" "unique" + "item_logname" "bread_bite" + "item_iconname" "bread_bite" + "min_ilevel" "1" + "max_ilevel" "100" + "image_inventory" "backpack/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves" + "model_player" "models/weapons/c_models/c_breadmonster_gloves/c_breadmonster_gloves.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "15 0 -12" + } + "hide_bodygroups_deployed_only" "1" + "attributes" + { + "breadgloves properties" + { + "attribute_class" "breadgloves_properties" + "value" "1" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + "animation_replacement" + { + "ACT_VM_HITLEFT" "ACT_BREADGLOVES_VM_HITLEFT" + "ACT_VM_HITRIGHT" "ACT_BREADGLOVES_VM_HITRIGHT" + "ACT_VM_SWINGHARD" "ACT_BREADGLOVES_VM_SWINGHARD" + "ACT_VM_IDLE" "ACT_BREADGLOVES_VM_IDLE" + "ACT_VM_DRAW" "ACT_BREADGLOVES_VM_DRAW" + "ACT_MELEE_VM_INSPECT_START" "ACT_MELEE_ALT2_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_MELEE_ALT2_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_MELEE_ALT2_VM_INSPECT_END" + } + "sound_deploy" "Weapon_bm_gloves.draw" + } + "static_attrs" + { + "limited quantity item" "1" + } + "xifier_class_remap" "" + } + "1101" + { + "name" "The B.A.S.E. Jumper" + "first_sale_date" "2014/06/18" + "item_class" "tf_weapon_parachute" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Parachute" + "item_name" "#TF_Weapon_BaseJumper" + "item_description" "#TF_Weapon_BaseJumper_Desc" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "melee" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "image_inventory" "backpack/workshop/weapons/c_models/c_paratrooper_pack/c_paratrooper_pack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "act_as_wearable" "1" + "attach_to_hands" "0" + "attach_to_hands_vm_only" "0" + "extra_wearable" "models/workshop/weapons/c_models/c_paratooper_pack/c_paratrooper_pack.mdl" + "used_by_classes" + { + "soldier" "secondary" + "demoman" "primary" + } + "attributes" + { + "parachute attribute" + { + "attribute_class" "parachute_attribute" + "value" "1" + } + "mod soldier buff type" + { + "attribute_class" "set_buff_type" + "value" "4" + } + "allowed in medieval mode" + { + "attribute_class" "allowed_in_medieval_mode" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "1102" + { + "name" "The Snack Attack" + "prefab" "valve weapon_sapper" + "first_sale_date" "2014/06/18" + "capabilities" + { + "nameable" "1" + } + "item_class" "tf_weapon_sapper" + "craft_class" "" + "craft_material_type" "weapon" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Weapon_Spy_Sapper" + "item_name" "#TF_Weapon_SnackAttack" + "item_description" "#TF_Weapon_SnackAttack_Desc" + "item_logname" "snack_attack" + "item_iconname" "snack_attack" + "image_inventory" "backpack/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper" + "min_ilevel" "1" + "max_ilevel" "100" + "inspect_panel_dist" "25" + "anim_slot" "building" + "model_player" "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" + "model_world" "models/weapons/c_models/c_breadmonster_sapper/c_breadmonster_sapper.mdl" + "visuals" + { + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_BREADSAPPER_VM_DRAW" + "ACT_VM_DRAW_DEPLOYED" "ACT_BREADSAPPER_VM_DRAW" + "ACT_VM_IDLE" "ACT_BREADSAPPER_VM_IDLE" + + "ACT_BUILDING_VM_INSPECT_START" "ACT_BREADMONSTER_VM_INSPECT_START" + "ACT_BUILDING_VM_INSPECT_IDLE" "ACT_BREADMONSTER_VM_INSPECT_IDLE" + "ACT_BUILDING_VM_INSPECT_END" "ACT_BREADMONSTER_VM_INSPECT_END" + } + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -6" + } + } + "1103" + { + "name" "The Back Scatter" + "prefab" "weapon_scattergun" + "first_sale_date" "2014/06/18" + "item_class" "tf_weapon_scattergun" + "item_type_name" "#TF_Weapon_Scattergun" + "propername" "1" + "item_name" "#TF_Weapon_BackScatter" + "item_description" "#TF_Weapon_BackScatter_Desc" + "capabilities" + { + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_deal_mvm_penetration_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_logname" "back_scatter" + "item_iconname" "back_scatter" + "item_quality" "unique" + "baseitem" "0" + "min_ilevel" "1" + "max_ilevel" "100" + "inspect_panel_dist" "38" + "image_inventory" "backpack/workshop/weapons/c_models/c_scatterdrum/c_scatterdrum" + "model_player" "models/workshop/weapons/c_models/c_scatterdrum/c_scatterdrum.mdl" + "attach_to_hands" "1" + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "closerange backattack minicrits" + { + "attribute_class" "closerange_backattack_minicrits" + "value" "1" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.66" + } + "spread penalty" + { + "attribute_class" "mult_spread_scale" + "value" "1.20" + } + "crit mod disabled" + { + "attribute_class" "mult_crit_chance" + "value" "0" + } + } + "visuals" + { + "sound_single_shot" "Weapon_Back_Scatter.Single" + "sound_burst" "Weapon_Back_Scatter.SingleCrit" + } + } + "1104" + { + "name" "The Air Strike" + "prefab" "weapon_atom_launcher paintkit_base" + "first_sale_date" "2014/06/18" + "particle_suffix" "air_strike" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_atom_launcher/c_atom_launcher_festivizer.mdl" + } + } + } + } + "1105" + { + "name" "The Self-Aware Beauty Mark" + "prefab" "valve weapon_jarate" + "craft_class" "" + "first_sale_date" "2014/06/18" + "propername" "1" + "item_name" "#TF_Weapon_SelfAwareBeautyMark" + "item_description" "#TF_Weapon_SelfAwareBeautyMark_Desc" + "image_inventory" "backpack/weapons/c_models/c_breadmonster/c_breadmonster" + "model_player" "models/weapons/c_models/c_breadmonster/c_breadmonster.mdl" + "item_slot" "secondary" + "anim_slot" "MELEE_ALLCLASS" + "attach_to_hands" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "inspect_panel_dist" "35" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "24" + } + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -10" + } + "visuals" + { + "animation_replacement" + { + "ACT_MP_ATTACK_STAND_MELEE_ALLCLASS" "ACT_MP_THROW" + "ACT_VM_DRAW" "ACT_BREADMONSTER_VM_DRAW" + "ACT_VM_IDLE" "ACT_BREADMONSTER_VM_IDLE" + "ACT_VM_PRIMARYATTACK" "ACT_BREADMONSTER_VM_PRIMARYATTACK" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_BREADMONSTER_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_BREADMONSTER_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_BREADMONSTER_VM_INSPECT_END" + } + "player_poseparam" + { + "r_hand_grip" "13" + } + "item_poseparam" + { + "r_hand_grip" "13" + } + } + } + "1106" + { + "name" "Square Dance Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntAllClassSquareDance" + "item_description" "#TF_TauntAllClassSquareDance_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_dosido" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "music.fortress_reel_loop" + } + "taunt success sound loop offset" + { + "attribute_class" "taunt_success_sound_loop_offset" + "value" "0.3" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_dosido_intro01.vcd" + "sniper" "scenes\player\sniper\low\taunt_dosido_intro01.vcd" + "soldier" "scenes\player\soldier\low\taunt_dosido_intro01.vcd" + "demoman" "scenes\player\demoman\low\taunt_dosido_intro01.vcd" + "medic" "scenes\player\medic\low\taunt_dosido_intro01.vcd" + "heavy" "scenes\player\heavy\low\taunt_dosido_intro01.vcd" + "spy" "scenes\player\spy\low\taunt_dosido_intro01.vcd" + "engineer" "scenes\player\engineer\low\taunt_dosido_intro01.vcd" + "pyro" "scenes\player\pyro\low\taunt_dosido_intro01.vcd" + } + "custom_partner_taunt_per_class" + { + "scout" + { + "1" "scenes\player\scout\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\scout\low\taunt_dosido_dance01.vcd" + } + "sniper" + { + "1" "scenes\player\sniper\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\sniper\low\taunt_dosido_dance01.vcd" + "3" "scenes\player\sniper\low\taunt_dosido_dance02.vcd" + } + "soldier" + { + "1" "scenes\player\soldier\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\soldier\low\taunt_dosido_dance01.vcd" + } + "demoman" + { + "1" "scenes\player\demoman\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\demoman\low\taunt_dosido_dance01.vcd" + } + "medic" + { + "1" "scenes\player\medic\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\medic\low\taunt_dosido_dance01.vcd" + } + "heavy" + { + "1" "scenes\player\heavy\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\heavy\low\taunt_dosido_dance01.vcd" + "3" "scenes\player\heavy\low\taunt_dosido_dance02.vcd" + "4" "scenes\player\heavy\low\taunt_dosido_dance03.vcd" + "5" "scenes\player\heavy\low\taunt_dosido_dance04.vcd" + "6" "scenes\player\heavy\low\taunt_dosido_dance05.vcd" + "7" "scenes\player\heavy\low\taunt_dosido_dance06.vcd" + } + "spy" + { + "1" "scenes\player\spy\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\spy\low\taunt_dosido_dance01.vcd" + } + "engineer" + { + "1" "scenes\player\engineer\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\engineer\low\taunt_dosido_dance01.vcd" + } + "pyro" + { + "1" "scenes\player\pyro\low\taunt_dosido_dance00.vcd" + "2" "scenes\player\pyro\low\taunt_dosido_dance01.vcd" + } + } + "taunt_separation_forward_distance" "60" + "is_partner_taunt" "1" + } + "visuals" + { + "custom_sound0" "music.fortress_reel" + "custom_sound2" "music.fortress_reel_loop" + } + } + "1107" + { + "name" "Flippin' Awesome Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntAllClassFlip" + "item_description" "#TF_TauntAllClassFlip_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_flip" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt attack name" + { + "attribute_class" "taunt_attack_name" + "value" "TAUNTATK_FLIP_LAND_PARTICLE" + } + "taunt attack time" + { + "attribute_class" "taunt_attack_time" + "value" "1.9" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\flip_start.vcd" + "sniper" "scenes\player\sniper\low\flip_start.vcd" + "soldier" "scenes\player\soldier\low\flip_start.vcd" + "demoman" "scenes\player\demoman\low\flip_start.vcd" + "medic" "scenes\player\medic\low\flip_start.vcd" + "heavy" "scenes\player\heavy\low\flip_start.vcd" + "spy" "scenes\player\spy\low\flip_start.vcd" + "engineer" "scenes\player\engineer\low\flip_start.vcd" + "pyro" "scenes\player\pyro\low\flip_start.vcd" + } + "custom_partner_taunt_initiator_per_class" + { + "scout" + { + "1" "scenes\player\scout\low\flip_success_initiator0.vcd" + "2" "scenes\player\scout\low\flip_success_initiator1.vcd" + } + "sniper" + { + "1" "scenes\player\sniper\low\flip_success_initiator0.vcd" + "2" "scenes\player\sniper\low\flip_success_initiator1.vcd" + } + "soldier" + { + "1" "scenes\player\soldier\low\flip_success_initiator0.vcd" + "2" "scenes\player\soldier\low\flip_success_initiator1.vcd" + } + "demoman" + { + "1" "scenes\player\demoman\low\flip_success_initiator0.vcd" + "2" "scenes\player\demoman\low\flip_success_initiator1.vcd" + } + "medic" + { + "1" "scenes\player\medic\low\flip_success_initiator0.vcd" + "2" "scenes\player\medic\low\flip_success_initiator1.vcd" + } + "heavy" + { + "1" "scenes\player\heavy\low\flip_success_initiator0.vcd" + "2" "scenes\player\heavy\low\flip_success_initiator1.vcd" + } + "spy" + { + "1" "scenes\player\spy\low\flip_success_initiator0.vcd" + "2" "scenes\player\spy\low\flip_success_initiator1.vcd" + } + "engineer" + { + "1" "scenes\player\engineer\low\flip_success_initiator0.vcd" + "2" "scenes\player\engineer\low\flip_success_initiator1.vcd" + } + "pyro" + { + "1" "scenes\player\pyro\low\flip_success_initiator0.vcd" + "2" "scenes\player\pyro\low\flip_success_initiator1.vcd" + } + } + "custom_partner_taunt_receiver_per_class" + { + "scout" + { + "1" "scenes\player\scout\low\flip_success_receiver0.vcd" + "2" "scenes\player\scout\low\flip_success_receiver1.vcd" + } + "sniper" + { + "1" "scenes\player\sniper\low\flip_success_receiver0.vcd" + "2" "scenes\player\sniper\low\flip_success_receiver1.vcd" + } + "soldier" + { + "1" "scenes\player\soldier\low\flip_success_receiver0.vcd" + "2" "scenes\player\soldier\low\flip_success_receiver1.vcd" + } + "demoman" + { + "1" "scenes\player\demoman\low\flip_success_receiver0.vcd" + "2" "scenes\player\demoman\low\flip_success_receiver1.vcd" + } + "medic" + { + "1" "scenes\player\medic\low\flip_success_receiver0.vcd" + "2" "scenes\player\medic\low\flip_success_receiver1.vcd" + } + "heavy" + { + "1" "scenes\player\heavy\low\flip_success_receiver0.vcd" + "2" "scenes\player\heavy\low\flip_success_receiver1.vcd" + } + "spy" + { + "1" "scenes\player\spy\low\flip_success_receiver0.vcd" + "2" "scenes\player\spy\low\flip_success_receiver1.vcd" + } + "engineer" + { + "1" "scenes\player\engineer\low\flip_success_receiver0.vcd" + "2" "scenes\player\engineer\low\flip_success_receiver1.vcd" + } + "pyro" + { + "1" "scenes\player\pyro\low\flip_success_receiver0.vcd" + "2" "scenes\player\pyro\low\flip_success_receiver1.vcd" + } + } + "taunt_separation_forward_distance" "80" + "is_partner_taunt" "1" + } + } + "1108" + { + "name" "Buy A Life Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntSpyBuyALife" + "item_description" "#TF_TauntSpyBuyALife_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_buy_a_life" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/player/spy/low/taunt_buy_a_life.vcd" + } + "custom_taunt_prop_per_class" + { + "spy" "models/player/items/taunts/cash_wad.mdl" + } + } + } + "1109" + { + "name" "Results Are In Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntMedicXRay" + "item_description" "#TF_TauntMedicXRay_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_results_are_in" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "medic" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/player/medic/low/taunt_xray.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/player/items/taunts/medic_xray_taunt.mdl" + } + } + } + "1110" + { + "name" "RPS Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntAllClassRPS" + "item_description" "#TF_TauntAllClassRPS_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_rps" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt attack name" + { + "attribute_class" "taunt_attack_name" + "value" "TAUNTATK_RPS_PARTICLE" + } + "taunt attack time" + { + "attribute_class" "taunt_attack_time" + "value" "2.6" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_rps_start.vcd" + "sniper" "scenes\player\sniper\low\taunt_rps_start.vcd" + "soldier" "scenes\player\soldier\low\taunt_rps_start.vcd" + "demoman" "scenes\player\demoman\low\taunt_rps_start.vcd" + "medic" "scenes\player\medic\low\taunt_rps_start.vcd" + "heavy" "scenes\player\heavy\low\taunt_rps_start.vcd" + "spy" "scenes\player\spy\low\taunt_rps_start.vcd" + "engineer" "scenes\player\engineer\low\taunt_rps_start.vcd" + "pyro" "scenes\player\pyro\low\taunt_rps_start.vcd" + } + "custom_partner_taunt_initiator_per_class" + { + "scout" + { + "1" "scenes\player\scout\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\scout\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\scout\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\scout\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\scout\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\scout\low\taunt_rps_scissors_lose.vcd" + } + "sniper" + { + "1" "scenes\player\sniper\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\sniper\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\sniper\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\sniper\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\sniper\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\sniper\low\taunt_rps_scissors_lose.vcd" + } + "soldier" + { + "1" "scenes\player\soldier\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\soldier\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\soldier\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\soldier\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\soldier\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\soldier\low\taunt_rps_scissors_lose.vcd" + } + "demoman" + { + "1" "scenes\player\demoman\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\demoman\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\demoman\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\demoman\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\demoman\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\demoman\low\taunt_rps_scissors_lose.vcd" + } + "medic" + { + "1" "scenes\player\medic\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\medic\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\medic\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\medic\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\medic\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\medic\low\taunt_rps_scissors_lose.vcd" + } + "heavy" + { + "1" "scenes\player\heavy\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\heavy\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\heavy\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\heavy\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\heavy\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\heavy\low\taunt_rps_scissors_lose.vcd" + } + "spy" + { + "1" "scenes\player\spy\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\spy\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\spy\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\spy\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\spy\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\spy\low\taunt_rps_scissors_lose.vcd" + } + "engineer" + { + "1" "scenes\player\engineer\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\engineer\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\engineer\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\engineer\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\engineer\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\engineer\low\taunt_rps_scissors_lose.vcd" + } + "pyro" + { + "1" "scenes\player\pyro\low\taunt_rps_rock_win.vcd" + "2" "scenes\player\pyro\low\taunt_rps_paper_win.vcd" + "3" "scenes\player\pyro\low\taunt_rps_scissors_win.vcd" + "4" "scenes\player\pyro\low\taunt_rps_rock_lose.vcd" + "5" "scenes\player\pyro\low\taunt_rps_paper_lose.vcd" + "6" "scenes\player\pyro\low\taunt_rps_scissors_lose.vcd" + } + } + "custom_partner_taunt_receiver_per_class" + { + "scout" + { + "1" "scenes\player\scout\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\scout\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\scout\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\scout\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\scout\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\scout\low\taunt_rps_scissors_lose_noinit.vcd" + } + "sniper" + { + "1" "scenes\player\sniper\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\sniper\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\sniper\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\sniper\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\sniper\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\sniper\low\taunt_rps_scissors_lose_noinit.vcd" + } + "soldier" + { + "1" "scenes\player\soldier\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\soldier\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\soldier\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\soldier\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\soldier\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\soldier\low\taunt_rps_scissors_lose_noinit.vcd" + } + "demoman" + { + "1" "scenes\player\demoman\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\demoman\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\demoman\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\demoman\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\demoman\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\demoman\low\taunt_rps_scissors_lose_noinit.vcd" + } + "medic" + { + "1" "scenes\player\medic\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\medic\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\medic\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\medic\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\medic\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\medic\low\taunt_rps_scissors_lose_noinit.vcd" + } + "heavy" + { + "1" "scenes\player\heavy\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\heavy\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\heavy\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\heavy\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\heavy\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\heavy\low\taunt_rps_scissors_lose_noinit.vcd" + } + "spy" + { + "1" "scenes\player\spy\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\spy\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\spy\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\spy\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\spy\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\spy\low\taunt_rps_scissors_lose_noinit.vcd" + } + "engineer" + { + "1" "scenes\player\engineer\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\engineer\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\engineer\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\engineer\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\engineer\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\engineer\low\taunt_rps_scissors_lose_noinit.vcd" + } + "pyro" + { + "1" "scenes\player\pyro\low\taunt_rps_rock_win_noinit.vcd" + "2" "scenes\player\pyro\low\taunt_rps_paper_win_noinit.vcd" + "3" "scenes\player\pyro\low\taunt_rps_scissors_win_noinit.vcd" + "4" "scenes\player\pyro\low\taunt_rps_rock_lose_noinit.vcd" + "5" "scenes\player\pyro\low\taunt_rps_paper_lose_noinit.vcd" + "6" "scenes\player\pyro\low\taunt_rps_scissors_lose_noinit.vcd" + } + } + "taunt_separation_forward_distance" "80" + "taunt_separation_right_distance" "5" + "is_partner_taunt" "1" + } + } + "1111" + { + "name" "Skullcracker Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntAllClassSkullcracker" + "item_description" "#TF_TauntAllClassSkullcracker_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_skullcracker" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_headbutt_start.vcd" + "sniper" "scenes\player\sniper\low\taunt_headbutt_start.vcd" + "soldier" "scenes\player\soldier\low\taunt_headbutt_start.vcd" + "demoman" "scenes\player\demoman\low\taunt_headbutt_start.vcd" + "medic" "scenes\player\medic\low\taunt_headbutt_start.vcd" + "heavy" "scenes\player\heavy\low\taunt_headbutt_start.vcd" + "spy" "scenes\player\spy\low\taunt_headbutt_start.vcd" + "engineer" "scenes\player\engineer\low\taunt_headbutt_start.vcd" + "pyro" "scenes\player\pyro\low\taunt_headbutt_start.vcd" + } + "custom_partner_taunt_per_class" + { + "scout" "scenes\player\scout\low\taunt_headbutt_success.vcd" + "sniper" "scenes\player\sniper\low\taunt_headbutt_success.vcd" + "soldier" "scenes\player\soldier\low\taunt_headbutt_success.vcd" + "demoman" "scenes\player\demoman\low\taunt_headbutt_success.vcd" + "medic" "scenes\player\medic\low\taunt_headbutt_success.vcd" + "heavy" "scenes\player\heavy\low\taunt_headbutt_success.vcd" + "spy" "scenes\player\spy\low\taunt_headbutt_success.vcd" + "engineer" "scenes\player\engineer\low\taunt_headbutt_success.vcd" + "pyro" "scenes\player\pyro\low\taunt_headbutt_success.vcd" + } + "taunt_separation_forward_distance" "60" + "is_partner_taunt" "1" + } + } + "1112" + { + "name" "Party Trick Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntPyroPartyTrick" + "item_description" "#TF_TauntPyroPartyTrick_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_party_trick" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/player/pyro/low/taunt_party_trick.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/player/items/taunts/balloon_animal_pyro/balloon_animal_pyro.mdl" + } + } + } + "1113" + { + "name" "Fresh Brewed Victory Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntSoldierCoffee" + "item_description" "#TF_TauntSoldierCoffee_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_fresh_brewed" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "soldier" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/player/soldier/low/taunt_coffee.vcd" + } + "custom_taunt_prop_per_class" + { + "soldier" "models/player/items/taunts/wupass_mug/wupass_mug.mdl" + } + } + } + "1114" + { + "name" "Spent Well Spirits Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntDemomanNuke" + "item_description" "#TF_TauntDemomanNuke_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_spent_well" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/player/demoman/low/taunt_nuke.vcd" + } + "custom_taunt_prop_per_class" + { + "demoman" "models/player/items/taunts/demo_nuke_bottle/demo_nuke_bottle.mdl" + } + } + } + "1115" + { + "name" "Rancho Relaxo Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntEngineerRancho" + "item_description" "#TF_TauntEngineerRancho_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_rancho_relaxo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "engineer" "scenes/player/engineer/low/taunt_killer_time_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "engineer" "scenes/player/engineer/low/taunt_killer_time_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "engineer" "models/player/items/taunts/engys_new_chair/engys_new_chair_articlulated.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "engineer" "scenes/player/items/taunts/engys_new_chair_intro.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "engineer" "scenes/player/items/taunts/engys_new_chair_outro.vcd" + } + "particle_attachment" "taunt_effect" + "min_taunt_time" "5" + "stop_taunt_if_moved" "1" + } + } + "1116" + { + "name" "I See You Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntSniperISeeYou" + "item_description" "#TF_TauntSniperISeeYou_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_i_see_you" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "sniper" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes\player\sniper\low\taunt_i_see_you_primary.vcd" + } + } + } + "1117" + { + "name" "Battin' a Thousand Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntScoutBatMan" + "item_description" "#TF_TauntScoutBatMan_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_battin_thousand" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "taunt force weapon slot" + { + "attribute_class" "taunt_force_weapon_slot" + "value" "MELEE" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/player/scout/low/taunt_bat_man.vcd" + } + } + } + "1118" + { + "name" "Conga Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntAllClassConga" + "item_description" "#TF_TauntAllClassConga_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_conga" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "50" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "50" + } + "taunt mimic" + { + "attribute_class" "taunt_mimic" + "value" "1" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "music.conga_loop" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\conga.vcd" + "sniper" "scenes\player\sniper\low\conga.vcd" + "soldier" "scenes\player\soldier\low\conga.vcd" + "demoman" "scenes\player\demoman\low\conga.vcd" + "medic" "scenes\player\medic\low\conga.vcd" + "heavy" "scenes\player\heavy\low\conga.vcd" + "spy" "scenes\player\spy\low\conga.vcd" + "engineer" "scenes\player\engineer\low\conga.vcd" + "pyro" "scenes\player\pyro\low\conga.vcd" + } + "is_partner_taunt" "1" + } + "visuals" + { + "custom_sound0" "music.conga_loop" + } + } + "1119" + { + "name" "Deep Fried Desire Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntScoutChickenBucket" + "item_description" "#TF_TauntScoutChickenBucket_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_deep_fried" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/player/scout/low/taunt_chicken_bucket.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/player/items/taunts/chicken_bucket/chicken_bucket.mdl" + } + } + } + "1120" + { + "name" "Oblooterated Taunt" + "prefab" "valve taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntDemomanWoohoo" + "item_description" "#TF_TauntDemomanWoohoo_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_oblooterated" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "valid_for_shuffle" "1" + "used_by_classes" + { + "demoman" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/player/demoman/low/woohoo.vcd" + } + "custom_taunt_prop_per_class" + { + "demoman" "models/player/items/taunts/beer_crate/beer_crate.mdl" + } + } + } + + "1121" + { + "name" "Mutated Milk" + "prefab" "weapon_madmilk" + "first_sale_date" "2014/06/18" + "craft_class" "" + "item_name" "#TF_Weapon_MutatedMilk" + "item_description" "#TF_Weapon_MutatedMilk_Desc" + "image_inventory" "backpack/weapons/c_models/c_breadmonster/c_breadmonster_milk" + "model_player" "models/weapons/c_models/c_breadmonster/c_breadmonster_milk.mdl" + "item_slot" "secondary" + "min_ilevel" "1" + "max_ilevel" "99" + "anim_slot" "MELEE_ALLCLASS" + "attach_to_hands" "1" + "inspect_panel_dist" "32" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 4 -10" + } + "attributes" + { + "override projectile type" + { + "attribute_class" "override_projectile_type" + "value" "25" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_MP_ATTACK_STAND_MELEE_ALLCLASS" "ACT_MP_THROW" + "ACT_VM_DRAW" "ACT_BREADMONSTER_VM_DRAW" + "ACT_VM_IDLE" "ACT_BREADMONSTER_VM_IDLE" + "ACT_VM_PRIMARYATTACK" "ACT_BREADMONSTER_VM_PRIMARYATTACK" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_BREADMONSTER_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_BREADMONSTER_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_BREADMONSTER_VM_INSPECT_END" + } + "player_poseparam" + { + "r_hand_grip" "13" + } + "item_poseparam" + { + "r_hand_grip" "13" + } + "skin" "1" + } + "set_item_remap" "Mad Milk" + } + "1122" + { + "name" "Towering Pillar of Summer Shades" + "prefab" "valve no_craft hat" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_ToweringPillarOfSummerShades" + "item_description" "#TF_ToweringPillarOfSummerShades_Desc" + "image_inventory" "backpack/player/items/all_class/summer_deal_demo" + "model_player_per_class" + { + "basename" "models/player/items/all_class/summer_deal_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "capabilities" + { + "paintable" "1" + } + "attributes" + { + "is marketable" + { + "attribute_class" "is_marketable" + "value" "1" + } + } + "static_attrs" + { + "tag__summer2014" "2014" + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1123" + { + "name" "Necro Smasher" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_class" "" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "item_logname" "necro_smasher" + "item_iconname" "necro_smasher" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Hammer" + "item_name" "#TF_Weapon_Necro_Smasher" + "item_description" "#TF_Weapon_Necro_Smasher_Desc" + "item_slot" "melee" + "image_inventory" "backpack/weapons/c_models/c_carnival_mallet/c_carnival_mallet" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "46" + "model_player" "models/weapons/c_models/c_carnival_mallet/c_carnival_mallet.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "50" + "max_ilevel" "50" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "20 4 -20" + "inspect_viewmodel_offset" "5 0 -3" + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "1124" + { + "name" "The Nabler" + "prefab" "base_misc" + "first_sale_date" "2014/10/30" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "hat" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + "can_craft_if_purchased" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_Nabler" + "item_slot" "misc" + "propername" "1" + "equip_region" "pyro_head_replacement" + "item_quality" "unique" + "image_inventory" "backpack/workshop/player/items/pyro/threea_nabler/threea_nabler" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/player/items/pyro/threea_nabler/threea_nabler.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "head" "1" + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + "drop_type" "none" + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "1126" + { + "name" "Duck Badge" + "first_sale_date" "2014/12/03" + "item_class" "tf_wearable" + "capabilities" + { + "duck_upgradable" "1" + "nameable" "1" + } + "item_type_name" "#TF_ItemType_Journal" + "item_name" "#TF_Item_DuckBadge" + "item_description" "#TF_Item_DuckBadge_Desc" + "armory_desc" "duckbadge" + "show_in_armory" "0" + "image_inventory" "backpack/workshop/player/items/all_class/all_class_badge_bonusd/all_class_badge_bonusd" + "model_player" "models/workshop/player/items/all_class/all_class_badge_bonusd/all_class_badge_bonusd.mdl" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_quality" "unique" + "item_slot" "action" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "custom_sound0" "Duck.Quack" + + "styles" + { + "0" + { + "skin_red" "1" + "skin_blu" "2" + "name" "#TF_DuckBadge_Style0" + } + "1" + { + "skin_red" "3" + "skin_blu" "12" + "name" "#TF_DuckBadge_Style1" + } + "2" + { + "skin_red" "4" + "skin_blu" "13" + "name" "#TF_DuckBadge_Style2" + } + "3" + { + "skin_red" "5" + "skin_blu" "14" + "name" "#TF_DuckBadge_Style3" + } + "4" + { + "skin_red" "6" + "skin_blu" "15" + "name" "#TF_DuckBadge_Style4" + } + "5" + { + "skin_red" "7" + "skin_blu" "16" + "name" "#TF_DuckBadge_Style5" + } + "6" + { + "skin_red" "8" + "skin_blu" "17" + "name" "#TF_DuckBadge_Style6" + } + "7" + { + "skin_red" "9" + "skin_blu" "18" + "name" "#TF_DuckBadge_Style7" + } + "8" + { + "skin_red" "10" + "skin_blu" "19" + "name" "#TF_DuckBadge_Style8" + } + "9" + { + "skin_red" "11" + "skin_blu" "20" + "name" "#TF_DuckBadge_Style9" + } + "10" + { + "skin" "21" + "name" "#TF_DuckBadge_Style10" + } + } + } + "attributes" + { + "display duck leaderboard" + { + "attribute_class" "display_duck_leaderboard" + "value" "1" + } + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5778" + } + "noise maker" + { + "attribute_class" "enable_misc2_noisemaker" + "value" "1" + } + "unlimited quantity hidden" + { + "attribute_class" "unlimited_quantity" + "value" "1" + } + "duckstreaks active" + { + "attribute_class" "duckstreaks_active" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "1127" + { + "name" "The Crossing Guard" + "first_sale_date" "2014/12/08" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_class" "" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Sign" + "item_name" "#TF_CrossingGuard" + "item_description" "#TF_CrossingGuard_Desc" + "item_slot" "melee" + "item_quality" "unique" + "min_ilevel" "25" + "max_ilevel" "25" + "propername" "1" + "attach_to_hands" "1" + "item_logname" "crossing_guard" + "item_iconname" "crossing_guard" + "image_inventory" "backpack/workshop/weapons/c_models/c_crossing_guard/c_crossing_guard" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "80" + "model_player" "models/workshop/weapons/c_models/c_crossing_guard/c_crossing_guard.mdl" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -5" + "inspect_viewmodel_offset" "5 0 -18" + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_wood_pole_drop.wav" + } + + + "1133" + { + "name" "Powerup Strength" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Strength" + "item_description" "#TF_Powerup_Strength_Desc" + "image_inventory" "Effects/powerup_strength_hud" + } + + "1134" + { + "name" "Powerup Haste" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Haste" + "item_description" "#TF_Powerup_Haste_Desc" + "image_inventory" "Effects/powerup_haste_hud" + } + + "1135" + { + "name" "Powerup Regen" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Regen" + "item_description" "#TF_Powerup_Regen_Desc" + "image_inventory" "Effects/powerup_regen_hud" + } + + "1136" + { + "name" "Powerup Resist" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Resist" + "item_description" "#TF_Powerup_Resist_Desc" + "image_inventory" "Effects/powerup_resist_hud" + } + + "1137" + { + "name" "Powerup Vampire" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Vampire" + "item_description" "#TF_Powerup_Vampire_Desc" + "image_inventory" "Effects/powerup_vampire_hud" + } + + "1138" + { + "name" "Powerup Reflect" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Reflect" + "item_description" "#TF_Powerup_Reflect_Desc" + "image_inventory" "Effects/powerup_reflect_hud" + } + + "1139" + { + "name" "Powerup Precision" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Precision" + "item_description" "#TF_Powerup_Precision_Desc" + "image_inventory" "Effects/powerup_precision_hud" + } + + "1140" + { + "name" "Powerup Agility" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Agility" + "item_description" "#TF_Powerup_Agility_Desc" + "image_inventory" "Effects/powerup_agility_hud" + } + + "1141" + { + "name" "Festive Shotgun 2014" + "prefab" "no_craft weapon_shotgun_multiclass" + "item_name" "#TF_Weapon_FestiveShotgun" + "image_inventory" "backpack/weapons/c_models/c_shotgun/c_shotgun_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -9" + } + } + "1142" + { + "name" "Festive Revolver 2014" + "prefab" "no_craft weapon_revolver" + "item_name" "#TF_Weapon_FestiveRevolver" + "image_inventory" "backpack/weapons/c_models/c_revolver/c_revolver_xmas" + "model_player" "models/weapons/c_models/c_revolver/c_revolver_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1143" + { + "name" "Festive Bonesaw 2014" + "prefab" "no_craft weapon_bonesaw" + "item_name" "#TF_Weapon_FestiveBonesaw" + "image_inventory" "backpack/weapons/c_models/c_bonesaw/c_bonesaw_xmas" + "model_player" "models/weapons/c_models/c_bonesaw/c_bonesaw_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1144" + { + "name" "Festive Targe 2014" + "prefab" "no_craft weapon_targe" + "item_name" "#TF_Weapon_FestiveTarge" + "image_inventory" "backpack/weapons/c_models/c_targe/c_targe_xmas" + "model_player" "models/weapons/c_models/c_targe/c_targe_xmas.mdl" + "propername" "0" + "static_attrs" + { + "limited quantity item" "1" + } + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "1145" + { + "name" "Festive Bonk 2014" + "prefab" "no_craft weapon_bonk" + "item_name" "#TF_Weapon_FestiveBonk" + "item_description" "#TF_Unique_Achievement_EnergyDrink_desc" + "image_inventory" "backpack/weapons/c_models/c_xms_energy_drink/c_xms_energy_drink" + "model_player" "models/weapons/c_models/c_xms_energy_drink/c_xms_energy_drink.mdl" + "static_attrs" + { + "limited quantity item" "1" + } + } + "1146" + { + "name" "Festive Backburner 2014" + "prefab" "no_craft weapon_backburner" + "item_name" "#TF_Weapon_FestiveBackburner" + "image_inventory" "backpack/weapons/c_models/c_flamethrower/c_backburner_xmas" + "model_player" "models/weapons/c_models/c_flamethrower/c_backburner_xmas.mdl" + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -16" + } + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_pilotlight.mdl" + } + } + } + } + "1149" + { + "name" "Festive SMG 2014" + "prefab" "no_craft weapon_smg" + "item_name" "#TF_Weapon_FestiveSMG" + "image_inventory" "backpack/weapons/c_models/c_smg/c_smg_xmas" + "visuals" + { + "attached_models" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_xmas.mdl" + } + } + } + "static_attrs" + { + "limited quantity item" "1" + "min_viewmodel_offset" "10 0 -7" + } + } + + "1150" + { + "name" "The Quickiebomb Launcher" + "first_sale_date" "2014/12/23" + "item_class" "tf_weapon_pipebomblauncher" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_gib_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + "can_deal_critical_damage" "1" + "can_deal_long_distance_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_PipebombLauncher" + "item_name" "#TF_Weapon_Sticky_Quickie" + "item_slot" "secondary" + "anim_slot" "primary" + "item_quality" "unique" + "propername" "1" + "item_logname" "quickiebomb_launcher" + "item_iconname" "quickiebomb_launcher" + "min_ilevel" "1" + "max_ilevel" "99" + "image_inventory" "backpack/workshop/weapons/c_models/c_kingmaker_sticky/c_kingmaker_sticky" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "50" + "model_player" "models/workshop/weapons/c_models/c_kingmaker_sticky/c_kingmaker_sticky.mdl" + "attach_to_hands" "1" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "sticky arm time bonus" + { + "attribute_class" "sticky_arm_time" + "value" "-0.2" + } + "stickybomb charge rate" + { + "attribute_class" "stickybomb_charge_rate" + "value" "0.3" + } + "stickybomb_charge_damage_increase" + { + "attribute_class" "stickybomb_charge_damage_increase" + "value" "1.35" + } + "stickies detonate stickies" + { + "attribute_class" "stickies_detonate_stickies" + "value" "1" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.5" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.85" + } + "custom projectile model" + { + "attribute_class" "custom_projectile_model" + "value" "models/workshop/weapons/c_models/c_kingmaker_sticky/w_kingmaker_stickybomb.mdl" + } + } + "visuals" + { + "sound_single_shot" "Weapon_AirBurster.Single" + "sound_burst" "Weapon_AirBurster.SingleCrit" + "sound_special1" "Weapon_AirBurster.Explode" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "1151" + { + "name" "The Iron Bomber" + "prefab" "weapon_quadball paintkit_base" + "first_sale_date" "2014/12/23" + "particle_suffix" "iron_bomber" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_quadball/c_quadball_festivizer.mdl" + } + } + } + } + + "1153" + { + "name" "Panic Attack Shotgun" + "prefab" "weapon_trenchgun paintkit_base" + "first_sale_date" "2014/12/23" + "particle_suffix" "panic_attack" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/workshop/weapons/c_models/c_trenchgun/c_trenchgun_festivizer.mdl" + } + } + } + } + "1154" + { + "name" "Powerup Knockout" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Knockout" + "item_description" "#TF_Powerup_Knockout_Desc" + "image_inventory" "Effects/powerup_knockout_hud" + } + "1155" + { + "name" "TF_WEAPON_PASSTIME_GUN" + "tags" + { + } + "item_class" "tf_weapon_passtime_gun" + "craft_class" "" + "craft_material_type" "" + "item_type_name" "#Weapon_Passtime_Gun" + "item_name" "#Weapon_Passtime_Gun" + "item_slot" "utility" + "anim_slot" "MELEE_ALLCLASS" + "attach_to_hands" "1" + "hidden" "1" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/weapons/w_models/w_wrench" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/passtime/ball/passtime_ball.mdl" + "used_by_classes" + { + "demoman" "1" + "heavy" "1" + "engineer" "1" + "medic" "1" + "sniper" "1" + "spy" "1" + "pyro" "1" + "soldier" "1" + "scout" "1" + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "1156" + { + "name" "Competitive Matchmaking Beta Pass - Vintage" + "first_sale_date" "2015/11/18" + "item_class" "craft_item" + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "1" + "item_type_name" "#TF_Pass" + "item_name" "#TF_Competitive_Pass_Beta" + "item_description" "#TF_Competitive_Pass_Beta_Desc" + "image_inventory" "backpack/crafting/comp_beta_ticket" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "vintage" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "1157" + { + "name" "Taunt: Kazotsky Kick" + "prefab" "valve taunt" + "first_sale_date" "2015/06/01" + "item_name" "#TF_TauntAllClassRussianDance" + "item_description" "#TF_TauntAllClassRussianDance_Desc" + "ad_text" "#TF_TauntAllClassRussianDance_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_russian" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "50" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "50" + } + "taunt mimic" + { + "attribute_class" "taunt_mimic" + "value" "1" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "music.russian" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_russian.vcd" + "sniper" "scenes\player\sniper\low\taunt_russian.vcd" + "soldier" "scenes\player\soldier\low\taunt_russian.vcd" + "demoman" "scenes\player\demoman\low\taunt_russian.vcd" + "medic" "scenes\player\medic\low\taunt_russian.vcd" + "heavy" "scenes\player\heavy\low\taunt_russian.vcd" + "spy" "scenes\player\spy\low\taunt_russian.vcd" + "engineer" "scenes\player\engineer\low\taunt_russian.vcd" + "pyro" "scenes\player\pyro\low\taunt_russian.vcd" + } + "is_partner_taunt" "1" + } + "visuals" + { + "custom_sound0" "music.russian" + } + } + "1158" + { + "name" "The Finder's Fee" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "propername" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_FindersFee" + "item_description" "#TF_FindersFee_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/player/items/all_class/all_bug_hat_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/all_bug_hat_%s.mdl" + } + "drop_type" "drop" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1159" + { + "name" "Powerup King" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_King" + "item_description" "#TF_Powerup_King_Desc" + "image_inventory" "Effects/powerup_king_hud" + } + "1160" + { + "name" "Powerup Plague" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Plague" + "item_description" "#TF_Powerup_Plague_Desc" + "image_inventory" "Effects/powerup_plague_hud" + } + "1161" + { + "name" "Powerup Supernova" + "item_class" "saxxy" + "craft_material_type" "" + "item_name" "#TF_Powerup_Supernova" + "item_description" "#TF_Powerup_Supernova_Desc" + "image_inventory" "Effects/powerup_supernova_hud" + } + + "1162" + { + "name" "Taunt: Mannrobics" + "prefab" "taunt" + "first_sale_date" "2015/12/14" + "item_name" "#TF_TauntAllClassAerobic" + "item_description" "#TF_TauntAllClassAerobic_Desc" + "ad_text" "#TF_TauntAllClassAerobic_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_manrobic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "50" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "50" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.2" + } + "taunt mimic" + { + "attribute_class" "taunt_mimic" + "value" "1" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "music.aerobic_loop" + } + } + "taunt" + { + "is_partner_taunt" "1" + "custom_taunt_scene_per_class" + { + "sniper" "scenes\player\sniper\low\taunt_aerobic_b.vcd" + "soldier" "scenes\player\soldier\low\taunt_aerobic_b.vcd" + "medic" "scenes\player\medic\low\taunt_aerobic_b.vcd" + "heavy" "scenes\player\heavy\low\taunt_aerobic_b.vcd" + "spy" "scenes\player\spy\low\taunt_aerobic_b.vcd" + "engineer" "scenes\player\engineer\low\taunt_aerobic_b.vcd" + "pyro" "scenes\player\pyro\low\taunt_aerobic_b.vcd" + "scout" "scenes\player\scout\low\taunt_aerobic_b.vcd" + "demoman" "scenes\player\demoman\low\taunt_aerobic_b.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "sniper" "scenes\player\sniper\low\taunt_aerobic_a.vcd" + "soldier" "scenes\player\soldier\low\taunt_aerobic_a.vcd" + "medic" "scenes\player\medic\low\taunt_aerobic_a.vcd" + "heavy" "scenes\player\heavy\low\taunt_aerobic_a.vcd" + "spy" "scenes\player\spy\low\taunt_aerobic_a.vcd" + "engineer" "scenes\player\engineer\low\taunt_aerobic_a.vcd" + "pyro" "scenes\player\pyro\low\taunt_aerobic_a.vcd" + "scout" "scenes\player\scout\low\taunt_aerobic_a.vcd" + "demoman" "scenes\player\demoman\low\taunt_aerobic_a.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "sniper" "scenes\player\sniper\low\taunt_aerobic_b.vcd" + "soldier" "scenes\player\soldier\low\taunt_aerobic_b.vcd" + "medic" "scenes\player\medic\low\taunt_aerobic_b.vcd" + "heavy" "scenes\player\heavy\low\taunt_aerobic_b.vcd" + "spy" "scenes\player\spy\low\taunt_aerobic_b.vcd" + "engineer" "scenes\player\engineer\low\taunt_aerobic_b.vcd" + "pyro" "scenes\player\pyro\low\taunt_aerobic_b.vcd" + "scout" "scenes\player\scout\low\taunt_aerobic_b.vcd" + "demoman" "scenes\player\demoman\low\taunt_aerobic_b.vcd" + } + } + } + } + } + + + "1164" + { + "name" "Civilian Grade JACK Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_CivilianGradeJACKHat" + "item_description" "#TF_CivilianGradeJACKHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/all_class/jackhead/demo_jackhead" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/jackhead/%s_jackhead.mdl" + } + "drop_type" "drop" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1165" + { + "name" "Competitive Matchmaking Beta Pass" + "first_sale_date" "2016/03/11" + "item_class" "craft_item" + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "1" + "item_type_name" "#TF_Pass" + "item_name" "#TF_Competitive_Pass_Beta" + "item_description" "#TF_Competitive_Pass_Beta_Desc" + "image_inventory" "backpack/crafting/comp_beta_ticket" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "1166" + { + "name" "Competitive Matchmaking Beta Giftable Invite" + "first_sale_date" "2016/03/11" + "item_class" "craft_item" + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "1" + "item_type_name" "#TF_Pass" + "item_name" "#TF_Competitive_Pass_Beta_Viral_Invite" + "item_description" "#TF_Competitive_Pass_Beta_Viral_Invite_Desc" + "image_inventory" "backpack/crafting/comp_beta_ticket_gift" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "1167" + { + "name" "Competitive Matchmaking Official" + "first_sale_date" "2016/06/15" + "item_class" "craft_item" + "craft_class" "" + "craft_material_type" "" + "show_in_armory" "1" + "item_type_name" "#TF_Pass" + "item_name" "#TF_Competitive_Pass" + "item_description" "#TF_Competitive_Pass_Desc" + "image_inventory" "backpack/crafting/competitive_ticket" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "static_attrs" + { + "cannot trade" "1" + "cannot delete" "1" + } + } + "1168" + { + "name" "Taunt: The Carlton" + "prefab" "no_craft taunt" + "first_sale_date" "2016/06/15" + "item_name" "#TF_taunt_the_carlton" + "item_description" "#TF_taunt_the_carlton_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/player/items/all_class/taunt_freshbeats" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/player/scout/low/taunt_freshbeats.vcd" + } + } + } + "1169" + { + "name" "Military Grade JACK Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MilitaryGradeJACKHat" + "item_description" "#TF_MilitaryGradeJACKHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/all_class/jackhead/demo_jackhead_digicamo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/jackhead/%s_jackhead_digicamo.mdl" + } + "drop_type" "drop" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "1170" + { + "name" "PASS Time Miniature Half JACK" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Pin" + "item_name" "#TF_PASSTimeMiniatureHalfJACK" + "item_description" "#TF_PASSTimeMiniatureHalfJACK_Desc" + "item_slot" "misc" + "equip_region" "medal" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/all_class/jackbadge/jackbadge" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/all_class/jackbadge/jackbadge.mdl" + "min_ilevel" "50" + "max_ilevel" "50" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "1171" + { + "name" "PASS Time Early Participation Pin" + "prefab" "base_misc" + "loadondemand" "1" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Pin" + "item_name" "#TF_PASSTimeEarlyParticipationPin" + "item_description" "#TF_PASSTimeEarlyParticipationPin_Desc" + "item_slot" "misc" + "equip_region" "medal" + "item_quality" "unique" + "image_inventory" "backpack/workshop_partner/player/items/all_class/jackbadge/jackbadge_limited" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop_partner/player/items/all_class/jackbadge/jackbadge_limited.mdl" + "min_ilevel" "50" + "max_ilevel" "50" + "drop_type" "none" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "25000" + { + "name" "quest25000" + "prefab" "quest_deprecated" + } + "25001" + { + "name" "quest25001" + "prefab" "quest_deprecated" + } + "25002" + { + "name" "quest25002" + "prefab" "quest_deprecated" + } + "25003" + { + "name" "quest25003" + "prefab" "quest_deprecated" + } + "25004" + { + "name" "quest25004" + "prefab" "quest_deprecated" + } + "25005" + { + "name" "quest25005" + "prefab" "quest_deprecated" + } + "25006" + { + "name" "quest25006" + "prefab" "quest_deprecated" + } + "25007" + { + "name" "quest25007" + "prefab" "quest_deprecated" + } + "25008" + { + "name" "quest25008" + "prefab" "quest_deprecated" + } + "25009" + { + "name" "quest25009" + "prefab" "quest_deprecated" + } + "25010" + { + "name" "quest25010" + "prefab" "quest_deprecated" + } + "25011" + { + "name" "quest25011" + "prefab" "quest_deprecated" + } + "25012" + { + "name" "quest25012" + "prefab" "quest_deprecated" + } + "25013" + { + "name" "quest25013" + "prefab" "quest_deprecated" + } + "25014" + { + "name" "quest25014" + "prefab" "quest_deprecated" + } + "25015" + { + "name" "quest25015" + "prefab" "quest_deprecated" + } + "25016" + { + "name" "quest25016" + "prefab" "quest_deprecated" + } + "25017" + { + "name" "quest25017" + "prefab" "quest_deprecated" + } + "25018" + { + "name" "quest25018" + "prefab" "quest_deprecated" + } + "25019" + { + "name" "quest25019" + "prefab" "quest_deprecated" + } + "25020" + { + "name" "quest25020" + "prefab" "quest_deprecated" + } + "25021" + { + "name" "quest25021" + "prefab" "quest_deprecated" + } + "25022" + { + "name" "quest25022" + "prefab" "quest_deprecated" + } + "25023" + { + "name" "quest25023" + "prefab" "quest_deprecated" + } + "25024" + { + "name" "quest25024" + "prefab" "quest_deprecated" + } + "25025" + { + "name" "quest25025" + "prefab" "quest_deprecated" + } + "25026" + { + "name" "quest25026" + "prefab" "quest_deprecated" + } + "25027" + { + "name" "quest25027" + "prefab" "quest_deprecated" + } + "25028" + { + "name" "quest25028" + "prefab" "quest_deprecated" + } + "25029" + { + "name" "quest25029" + "prefab" "quest_deprecated" + } + "25030" + { + "name" "quest25030" + "prefab" "quest_deprecated" + } + "25031" + { + "name" "quest25031" + "prefab" "quest_deprecated" + } + "25032" + { + "name" "quest25032" + "prefab" "quest_deprecated" + } + "25033" + { + "name" "quest25033" + "prefab" "quest_deprecated" + } + "25034" + { + "name" "quest25034" + "prefab" "quest_deprecated" + } + "25035" + { + "name" "quest25035" + "prefab" "quest_deprecated" + } + "25036" + { + "name" "quest25036" + "prefab" "quest_deprecated" + } + "25037" + { + "name" "quest25037" + "prefab" "quest_deprecated" + } + "25038" + { + "name" "quest25038" + "prefab" "quest_deprecated" + } + "25039" + { + "name" "quest25039" + "prefab" "quest_deprecated" + } + "25040" + { + "name" "quest25040" + "prefab" "quest_deprecated" + } + "25041" + { + "name" "quest25041" + "prefab" "quest_deprecated" + } + "25042" + { + "name" "quest25042" + "prefab" "quest_deprecated" + } + "25043" + { + "name" "quest25043" + "prefab" "quest_deprecated" + } + "25044" + { + "name" "quest25044" + "prefab" "quest_deprecated" + } + "25045" + { + "name" "quest25045" + "prefab" "quest_deprecated" + } + "25046" + { + "name" "quest25046" + "prefab" "quest_deprecated" + } + "25047" + { + "name" "quest25047" + "prefab" "quest_deprecated" + } + "25048" + { + "name" "quest25048" + "prefab" "quest_deprecated" + } + "25049" + { + "name" "quest25049" + "prefab" "quest_deprecated" + } + "25050" + { + "name" "quest25050" + "prefab" "quest_deprecated" + } + "25051" + { + "name" "quest25051" + "prefab" "quest_deprecated" + } + "25052" + { + "name" "quest25052" + "prefab" "quest_deprecated" + } + "1172" + { + "name" "Taunt: The Victory Lap" + "prefab" "valve taunt" + "first_sale_date" "2016/10/19" + "item_name" "#TF_TauntAllClassKart" + "item_description" "#TF_TauntAllClassKart_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_bumpercar" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound" + { + "attribute_class" "taunt_success_sound" + "value" "Taunt.BumperCarGoLoop" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes\player\sniper\low\taunt_vehicle_allclass.vcd" + "soldier" "scenes\player\soldier\low\taunt_vehicle_allclass.vcd" + "medic" "scenes\player\medic\low\taunt_vehicle_allclass.vcd" + "heavy" "scenes\player\heavy\low\taunt_vehicle_allclass.vcd" + "spy" "scenes\player\spy\low\taunt_vehicle_allclass.vcd" + "engineer" "scenes\player\engineer\low\taunt_vehicle_allclass.vcd" + "pyro" "scenes\player\pyro\low\taunt_vehicle_allclass.vcd" + "scout" "scenes\player\scout\low\taunt_vehicle_allclass.vcd" + "demoman" "scenes\player\demoman\low\taunt_vehicle_allclass.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "sniper" "scenes\player\sniper\low\taunt_vehicle_end_allclass.vcd" + "soldier" "scenes\player\soldier\low\taunt_vehicle_end_allclass.vcd" + "medic" "scenes\player\medic\low\taunt_vehicle_end_allclass.vcd" + "heavy" "scenes\player\heavy\low\taunt_vehicle_end_allclass.vcd" + "spy" "scenes\player\spy\low\taunt_vehicle_end_allclass.vcd" + "engineer" "scenes\player\engineer\low\taunt_vehicle_end_allclass.vcd" + "pyro" "scenes\player\pyro\low\taunt_vehicle_end_allclass.vcd" + "scout" "scenes\player\scout\low\taunt_vehicle_end_allclass.vcd" + "demoman" "scenes\player\demoman\low\taunt_vehicle_end_allclass.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "sniper" "scenes\player\sniper\low\taunt_vehicle_honk_allclass.vcd" + "soldier" "scenes\player\soldier\low\taunt_vehicle_honk_allclass.vcd" + "medic" "scenes\player\medic\low\taunt_vehicle_honk_allclass.vcd" + "heavy" "scenes\player\heavy\low\taunt_vehicle_honk_allclass.vcd" + "spy" "scenes\player\spy\low\taunt_vehicle_honk_allclass.vcd" + "engineer" "scenes\player\engineer\low\taunt_vehicle_honk_allclass.vcd" + "pyro" "scenes\player\pyro\low\taunt_vehicle_honk_allclass.vcd" + "scout" "scenes\player\scout\low\taunt_vehicle_honk_allclass.vcd" + "demoman" "scenes\player\demoman\low\taunt_vehicle_honk_allclass.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "sniper" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "soldier" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "medic" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "heavy" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "spy" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "engineer" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "pyro" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "scout" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + "demoman" "models/player/items/taunts/bumpercar/parts/bumpercar.mdl" + } + } + } + "1173" + { + "name" "Unusual Cap" + "prefab" "valve base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "loadondemand" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_UnusualCap" + "item_description" "#TF_UnusualCap_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/all_class/up_hat_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/up_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + "never craftable" + { + "attribute_class" "never_craftable" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1174" + { + "name" "Taunt: The Table Tantrum" + "prefab" "valve taunt" + "first_sale_date" "2016/12/15" + "item_name" "#TF_TauntTableTantrum" + "item_description" "#TF_TauntTableTantrum_Desc" + "ad_text" "#TF_TauntTableTantrum_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_table_flip" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/player/heavy/low/taunt_table_flip_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/player/heavy/low/taunt_table_flip_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "heavy" "models/player/items/heavy/heavy_table_flip_prop.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "heavy" "scenes/player/items/taunts/taunt_table_flip_prop_intro.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "heavy" "scenes/player/items/taunts/taunt_table_flip_prop_outro_nojoule.vcd" + } + } + "xifier_class_remap" "table_taunt" + } + "1175" + { + "name" "Taunt: The Boiling Point" + "prefab" "taunt" + "first_sale_date" "2016/12/15" + "item_name" "#TF_TauntBoilingPoint" + "item_description" "#TF_TauntBoilingPoint_Desc" + "image_inventory" "backpack/player/items/all_class/taunt_table_flip_joule" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/player/heavy/low/taunt_table_flip_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/player/heavy/low/taunt_table_flip_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "heavy" "models/player/items/heavy/heavy_table_flip_joule_prop.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "heavy" "scenes/player/items/taunts/taunt_table_flip_prop_intro.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "heavy" "scenes/player/items/taunts/taunt_table_flip_prop_outro.vcd" + } + } + "xifier_class_remap" "table_taunt" + } + "1176" + { + "name" "Team Fortress 2 Soundtrack Promo Package" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "tf2_soundtrack_promo_package_loot_list" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "0" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_mystery" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_TeamFortress2_Soundtrack_Promo_Package" + "item_description" "#TF_TeamFortress2_Soundtrack_Promo_Package_Desc" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "1177" + { + "name" "The Audio File" + "prefab" "no_craft hat" + "first_sale_date" "2017/04/20" + "item_name" "#TF_AudioFile" + "item_description" "#TF_AudioFile_Desc" + "item_type_name" "#TF_Wearable_Turntable" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/player/items/all_class/soundtrack_hat" + "model_player_per_class" + { + "basename" "models/player/items/all_class/soundtrack_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + } + "1178" + { + "name" "The Dragon's Fury" + "prefab" "paintkit_base" + "item_class" "tf_weapon_rocketlauncher_fireball" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_posthumous_damage" "1" + "can_be_festivized" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_FireballLauncher" + "particle_suffix" "dragons_fury" + "propername" "1" + "item_name" "#TF_Weapon_DragonsFury" + "item_description" "#TF_Weapon_DragonsFury_Desc" + "item_slot" "primary" + "anim_slot" "primary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "item_logname" "dragons_fury" + "item_iconname" "dragons_fury" + "image_inventory" "backpack/weapons/c_models/c_flameball/c_flameball" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_flameball/c_flameball.mdl" + "attach_to_hands" "1" + "inspect_panel_dist" "91" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 -3 -10" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "0.8" + "meter_label" "#TF_Pressure" + "hidden primary max ammo bonus" "0.2" + "airblast cost scale hidden" "0.25" + "dragons fury neutral properties" "1" + "dragons fury positive properties" "1" + "dragons fury negative properties" "1" + "extinguish restores health" "20" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flameball/c_flameball_festivizer.mdl" + } + } + "sound_single_shot" "Weapon_Airstrike.AltFire" + "sound_special1" "Weapon_Airstrike.Explosion" + "animation_replacement" + { + "ACT_VM_PRIMARYATTACK" "ACT_PRIMARY_VM_PRIMARYATTACK_3" + + "ACT_PRIMARY_VM_INSPECT_START" "ACT_ITEM4_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_ITEM4_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_ITEM4_VM_INSPECT_END" + + "ACT_MP_ATTACK_CROUCH_PRIMARY" "ACT_MP_ATTACK_CROUCH_PRIMARY_ALT" + "ACT_MP_ATTACK_STAND_PRIMARY" "ACT_MP_ATTACK_STAND_PRIMARY_ALT" + "ACT_MP_ATTACK_SWIM_PRIMARY" "ACT_MP_ATTACK_SWIM_PRIMARY_ALT" + + "ACT_MP_ATTACK_CROUCH_SECONDARYFIRE" "ACT_MP_ATTACK_CROUCH_PRIMARY_ALT" + "ACT_MP_ATTACK_STAND_SECONDARYFIRE" "ACT_MP_ATTACK_STAND_PRIMARY_ALT" + "ACT_MP_ATTACK_SWIM_SECONDARYFIRE" "ACT_MP_ATTACK_SWIM_PRIMARY_ALT" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "1179" + { + "name" "The Thermal Thruster" + "item_class" "tf_weapon_rocketpack" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "item_logname" "rocketpack" + "item_iconname" "rocketpack" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_RocketPack" + "item_name" "#TF_ThermalThruster" + "item_description" "#TF_ThermalThruster_Desc" + "item_slot" "secondary" + "equip_region" "back" + "anim_slot" "ITEM4" + "image_inventory" "backpack/weapons/c_models/c_rocketpack/c_rocketpack" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "60" + "model_player" "models/weapons/c_models/c_rocketpack/c_rocketpack.mdl" + "attach_to_hands" "1" + "attach_to_hands_vm_only" "1" + "extra_wearable" "models/weapons/c_models/c_rocketpack/c_rocketpack.mdl" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "1" + "max_ilevel" "100" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -9" + "damage force increase hidden" "1.5" + "taunt attack name" "TAUNTATK_PYRO_GASBLAST" + "taunt attack time" "4.7" + "item_meter_charge_type" "1" + "item_meter_charge_rate" "30" + "holster_anim_time" "0.8" + "falling_impact_radius_pushback" "1" + "thermal_thruster" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/player/pyro/low/taunt_gasblast.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/player/items/taunts/matchbox/matchbox.mdl" + } + } + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "1180" + { + "name" "The Gas Passer" + "item_class" "tf_weapon_jar_gas" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Jar_Gas" + "item_name" "#TF_GasPasser" + "item_description" "#TF_GasPasser_Desc" + "item_slot" "secondary" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "attach_to_hands" "1" + "propername" "1" + "anim_slot" "MELEE_ALLCLASS" + "image_inventory" "backpack/weapons/c_models/c_gascan/c_gascan" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_gascan/c_gascan.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 3 -7" + "item_meter_charge_type" "3" + "item_meter_charge_rate" "60" + "item_meter_damage_for_full_charge" "750" + "item_meter_resupply_denied" "1" + "grenades1_resupply_denied" "1" + "item_meter_starts_empty_DISPLAY_ONLY" "1" + "item_meter_charge_type_3_DISPLAY_ONLY" "1" + "meter_label" "#TF_Gas" + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_DRAW" "ACT_ITEM2_VM_DRAW" + "ACT_VM_IDLE" "ACT_ITEM2_VM_IDLE" + "ACT_VM_PRIMARYATTACK" "ACT_ITEM2_VM_FIRE" + "ACT_MP_ATTACK_STAND_MELEE_ALLCLASS" "ACT_MP_ATTACK_STAND_ITEM2" + "ACT_MP_ATTACK_CROUCH_MELEE_ALLCLASS" "ACT_MP_ATTACK_CROUCH_ITEM2" + "ACT_MP_ATTACK_SWIM_MELEE_ALLCLASS" "ACT_MP_ATTACK_SWIM_ITEM2" + "ACT_SECONDARY_VM_INSPECT_START" "ACT_ITEM2_VM_INSPECT_START" + "ACT_SECONDARY_VM_INSPECT_IDLE" "ACT_ITEM2_VM_INSPECT_IDLE" + "ACT_SECONDARY_VM_INSPECT_END" "ACT_ITEM2_VM_INSPECT_END" + } + "custom_particlesystem" + { + "system" "energydrink_milk_splash" + } + "player_poseparam" + { + "r_hand_grip" "16" + } + "sound_deploy" "Weapon_GasCan.Draw" + "sound_single_shot" "Weapon_GasCan.Throw" + "sound_special1" "Weapon_GasCan.Explode" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "1181" + { + "name" "The Hot Hand" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + } + "item_class" "tf_weapon_slap" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_type_name" "#TF_Weapon_Slap" + "item_name" "#TF_Weapon_HotHand" + "item_description" "#TF_Weapon_HotHand_Desc" + "item_slot" "melee" + "anim_slot" "MELEE_ALLCLASS" + "item_quality" "unique" + "item_logname" "hot_hand" + "item_iconname" "hot_hand" + "min_ilevel" "1" + "max_ilevel" "100" + "image_inventory" "backpack/weapons/c_models/c_slapping_glove/w_slapping_glove" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_slapping_glove/c_slapping_glove.mdl" + "model_world" "models/weapons/c_models/c_slapping_glove/w_slapping_glove.mdl" + "attach_to_hands" "1" + "propername" "1" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "damage penalty" "0.8" + "speed_boost_on_hit_enemy" "1.0" + } + "attributes" + { + "disable weapon hiding for animations" + { + "attribute_class" "disable_weapon_hiding_for_animations" + "value" "1" + } + } + "visuals" + { + "animation_replacement" + { + "ACT_VM_IDLE" "ACT_ITEM3_VM_IDLE" + "ACT_VM_DRAW" "ACT_ITEM3_VM_DRAW" + "ACT_VM_HITCENTER" "ACT_ITEM3_VM_PRIMARYATTACK" + "ACT_VM_SWINGHARD" "ACT_ITEM3_VM_PRIMARYATTACK" + "ACT_MELEE_VM_INSPECT_START" "ACT_ITEM3_VM_INSPECT_START" + "ACT_MELEE_VM_INSPECT_IDLE" "ACT_ITEM3_VM_INSPECT_IDLE" + "ACT_MELEE_VM_INSPECT_END" "ACT_ITEM3_VM_INSPECT_END" + + + "ACT_MP_ATTACK_STAND_MELEE_ALLCLASS" "ACT_MP_ATTACK_STAND_ITEM3" + "ACT_MP_ATTACK_CROUCH_MELEE_ALLCLASS" "ACT_MP_ATTACK_CROUCH_ITEM3" + "ACT_MP_ATTACK_SWIM_MELEE_ALLCLASS" "ACT_MP_ATTACK_SWIM_ITEM3" + } + "player_poseparam" + { + "r_hand_grip" "15" + "r_arm" "3" + } + "sound_deploy" "Weapon_Slap.Draw" + "sound_melee_miss" "Weapon_Slap.Swing" + "sound_burst" "Weapon_Slap.SwingCrit" + "sound_special1" "Weapon_Slap.SwingFire" + "sound_special2" "Weapon_Slap.SwingFireCrit" + } + } + "1182" + { + "name" "Taunt: Yeti Punch" + "prefab" "valve taunt" + "first_sale_date" "2017/09/13" + "item_name" "#TF_YetiPunch" + "item_description" "#TF_YetiPunch_Desc" + "ad_text" "#TF_YetiPunch_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_yeti_punch" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "taunt" + { + "stop_taunt_if_moved" "1" + "custom_taunt_scene_per_class" + { + "scout" "scenes/player/scout/low/taunt_yetipunch.vcd" + "sniper" "scenes/player/sniper/low/taunt_yetipunch.vcd" + "soldier" "scenes/player/soldier/low/taunt_yetipunch.vcd" + "demoman" "scenes/player/demoman/low/taunt_yetipunch.vcd" + "medic" "scenes/player/medic/low/taunt_yetipunch.vcd" + "heavy" "scenes/player/heavy/low/taunt_yetipunch.vcd" + "spy" "scenes/player/spy/low/taunt_yetipunch.vcd" + "engineer" "scenes/player/engineer/low/taunt_yetipunch.vcd" + "pyro" "scenes/player/pyro/low/taunt_yetipunch.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "sniper" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "soldier" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "demoman" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "medic" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "heavy" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "spy" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "engineer" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + "pyro" "models/player/items/taunts/yeti_standee/yeti_standee.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "scout" "scenes/player/items/taunts/yeti_standee_scoutbreak.vcd" + "sniper" "scenes/player/items/taunts/yeti_standee_sniperbreak.vcd" + "soldier" "scenes/player/items/taunts/yeti_standee_soldierbreak.vcd" + "demoman" "scenes/player/items/taunts/yeti_standee_demobreak.vcd" + "medic" "scenes/player/items/taunts/yeti_standee_medicbreak.vcd" + "heavy" "scenes/player/items/taunts/yeti_standee_heavybreak.vcd" + "spy" "scenes/player/items/taunts/yeti_standee_spybreak.vcd" + "engineer" "scenes/player/items/taunts/yeti_standee_engineerbreak.vcd" + "pyro" "scenes/player/items/taunts/yeti_standee_pyrobreak.vcd" + } + } + } + "1183" + { + "name" "Taunt: Yeti Smash" + "prefab" "valve taunt" + "first_sale_date" "2017/09/13" + "item_name" "#TF_YetiSmash" + "item_description" "#TF_YetiSmash_Desc" + "ad_text" "#TF_YetiSmash_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_yeti" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "Demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "stop_taunt_if_moved" "1" + "custom_taunt_scene_per_class" + { + "scout" "scenes/player/scout/low/yeti_taunt.vcd" + "sniper" "scenes/player/sniper/low/yeti_taunt.vcd" + "soldier" "scenes/player/soldier/low/yeti_taunt.vcd" + "Demoman" "scenes/player/Demoman/low/yeti_taunt.vcd" + "medic" "scenes/player/medic/low/yeti_taunt.vcd" + "heavy" "scenes/player/heavy/low/yeti_taunt.vcd" + "pyro" "scenes/player/pyro/low/yeti_taunt.vcd" + "spy" "scenes/player/spy/low/yeti_taunt.vcd" + "engineer" "scenes/player/engineer/low/yeti_taunt.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/player/items/taunts/yeti/yeti.mdl" + "sniper" "models/player/items/taunts/yeti/yeti.mdl" + "soldier" "models/player/items/taunts/yeti/yeti.mdl" + "Demoman" "models/player/items/taunts/yeti/yeti.mdl" + "medic" "models/player/items/taunts/yeti/yeti.mdl" + "heavy" "models/player/items/taunts/yeti/yeti.mdl" + "pyro" "models/player/items/taunts/yeti/yeti.mdl" + "spy" "models/player/items/taunts/yeti/yeti.mdl" + "engineer" "models/player/items/taunts/yeti/yeti.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "scout" "scenes/player/items/taunts/yeti_taunt.vcd" + "sniper" "scenes/player/items/taunts/yeti_taunt.vcd" + "soldier" "scenes/player/items/taunts/yeti_taunt.vcd" + "Demoman" "scenes/player/items/taunts/yeti_taunt.vcd" + "medic" "scenes/player/items/taunts/yeti_taunt.vcd" + "heavy" "scenes/player/items/taunts/yeti_taunt.vcd" + "pyro" "scenes/player/items/taunts/yeti_taunt.vcd" + "spy" "scenes/player/items/taunts/yeti_taunt.vcd" + "engineer" "scenes/player/items/taunts/yeti_taunt.vcd" + } + } + } + "1184" + { + "name" "Gloves of Running Urgently MvM" + "item_class" "tf_weapon_fists" + "craft_class" "" + "craft_material_type" "" + "capabilities" + { + "nameable" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Gloves" + "item_name" "#TF_Unique_Gloves_of_Running_Urgently" + "item_slot" "melee" + "item_logname" "gloves_running_urgently" + "item_iconname" "gloves_running_urgently" + "image_inventory" "backpack/weapons/c_models/c_boxing_gloves_urgency/c_boxing_gloves_urgency" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/weapons/c_models/c_boxing_gloves/c_boxing_gloves.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "attributes" + { + "move speed bonus" + { + "attribute_class" "mult_player_movespeed" + "value" "1.3" + } + "damage penalty" + { + "attribute_class" "mult_dmg" + "value" "0.75" + } + "provide on active" + { + "attribute_class" "provide_on_active" + "value" "1" + } + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "2" + } + "self mark for death" + { + "attribute_class" "self_mark_for_death" + "value" "3" + } + "single wep holster time increased" + { + "attribute_class" "mult_switch_from_wep_deploy_time" + "value" "1.5" + } + } + "hide_bodygroups_deployed_only" "1" + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + "sound_melee_miss" "Weapon_BoxingGloves.Miss" + "sound_melee_hit" "Weapon_BoxingGloves.HitFlesh" + "sound_melee_hit_world" "Weapon_BoxingGloves.HitWorld" + "sound_burst" "Weapon_BoxingGloves.MissCrit" + } + "visuals_red" + { + "use_visualsblock_as_base" "visuals" + "skin" "2" + } + "visuals_blu" + { + "use_visualsblock_as_base" "visuals" + "skin" "3" + } + "mouse_pressed_sound" "ui/item_boxing_gloves_pickup.wav" + "drop_sound" "ui/item_boxing_gloves_drop.wav" + "xifier_class_remap" "gru" + } + "1185" + { + "name" "Saxton Hat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_SaxtonHat" + "item_description" "#TF_SaxtonHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/all_class/saxton_hat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/saxton_hat_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1186" + { + "name" "Yeti Park Cap" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MonstrousMemento" + "item_description" "#TF_MonstrousMemento_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/all_class/yeti_park_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/yeti_park_cap_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "0" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1187" + { + "name" "Yeti_Head" + "prefab" "hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_KathmanHairdo" + "item_description" "#TF_KathmanHairdo_Desc" + "equip_region" "whole_head" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/heavy/yeti_head" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/yeti_head.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1188" + { + "name" "Yeti_Legs" + "prefab" "misc" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_AbominableSnowPants" + "item_description" "#TF_AbominableSnowPants_Desc" + "equip_region" "feet" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/heavy/yeti_legs" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/yeti_legs.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1189" + { + "name" "Yeti_Arms" + "prefab" "misc" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_HimalayanHairShirt" + "item_description" "#TF_HimalayanHairShirt_Desc" + "equip_region" "arms" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/heavy/yeti_arms" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/player/items/heavy/yeti_arms.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "player_bodygroups" + { + "hands" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1190" + { + "name" "The Second Banana" + "first_sale_date" "2017/09/13" + "prefab" "weapon_sandvich" + "craft_class" "weapon" + "craft_material_type" "weapon" + "item_name" "#TF_Unique_Lunchbox_Banana" + "item_description" "#TF_Lunchbox_Banana_desc" + "image_inventory" "backpack/weapons/c_models/c_banana/c_banana" + "model_player" "models/weapons/c_models/c_banana/c_banana.mdl" + "propername" "1" + "static_attrs" + { + "item_meter_charge_rate" "10" + } + "attributes" + { + "lunchbox adds minicrits" + { + "attribute_class" "set_weapon_mode" + "value" "6" + } + "lunchbox healing decreased" + { + "attribute_class" "lunchbox_healing_scale" + "value" "0.67" + } + "charge recharge rate increased" + { + "attribute_class" "charge_recharge_rate" + "value" "1.5" + } + } + } + "1191" + { + "name" "Mercenary Park Cap" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MercenaryPark" + "item_description" "#TF_MercenaryPark_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/all_class/mercenary_park_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/yeti_park_cap_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "visuals_red" + { + "skin" "1" + } + "visuals_blu" + { + "skin" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1192" + { + "name" "Mannanas Cap" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_MannanasHat" + "item_description" "#TF_MannanasHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/all_class/mannanas_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/yeti_park_cap_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "2" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1193" + { + "name" "Never Forget Cap" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_NeverForgetHat" + "item_description" "#TF_NeverForgetHat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/all_class/never_forget_cap" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/all_class/yeti_park_cap_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "visuals_red" + { + "skin" "3" + } + "visuals_blu" + { + "skin" "3" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1194" + { + "name" "Yeti Park Hardhat" + "prefab" "base_hat" + "hidden" "0" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "hat" + "capabilities" + { + "nameable" "1" + } + "loadondemand" "1" + "propername" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_YetiParkHardhat" + "item_description" "#TF_YetiParkHardhat_Desc" + "item_slot" "head" + "equip_region" "hat" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "image_inventory" "backpack/player/items/demo/yeti_hardhat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player_per_class" + { + "basename" "models/player/items/%s/yeti_hardhat.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "visuals_red" + { + "skin" "3" + } + "visuals_blu" + { + "skin" "3" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1195" + { + "name" "Halloween Contract Package" + "item_class" "tf_wearable" + "craft_class" "" + "craft_material_type" "" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_contract_rewards" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_HalloweenContractPackage" + "item_description" "#TF_HalloweenContractPackage_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/halloween_package" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "1196" + { + "name" "Taunt: Panzer Pants" + "prefab" "valve taunt" + "first_sale_date" "2018/10/18" + "item_name" "#TF_Taunt_Tank" + "item_description" "#TF_Taunt_Tank_Desc" + "ad_text" "#TF_Taunt_Tank_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_tank" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "65" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "1" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.2" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.TankForward" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes\player\soldier\low\taunt_vehicle_tank.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "soldier" "scenes\player\soldier\low\taunt_vehicle_tank_end.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "soldier" "scenes\player\soldier\low\taunt_vehicle_tank_fire.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "soldier" "models/player/items/taunts/tank/tank.mdl" + } + } + } + "1197" + { + "name" "Taunt: The Scooty Scoot" + "prefab" "valve taunt" + "first_sale_date" "2018/10/18" + "item_name" "#TF_Taunt_Moped" + "item_description" "#TF_Taunt_Moped_Desc" + "ad_text" "#TF_Taunt_Moped_AdText" + "image_inventory" "backpack/player/items/all_class/taunt_moped" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "1" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.2" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.MopedForward" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_vehicle_moped.vcd" + + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes\player\scout\low\taunt_vehicle_moped_end.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "scout" "scenes\player\scout\low\taunt_vehicle_moped_wheely.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "scout" "models/player/items/taunts/scooter/scooter.mdl" + } + } + } + "1198" + { + "name" "Team Fortress 2 Soundtrack Promo Package Untradable" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "tf2_soundtrack_promo_package_loot_list_untradable" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "show_in_armory" "0" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_mystery" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "propername" "0" + "min_ilevel" "1" + "max_ilevel" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_TeamFortress2_Soundtrack_Promo_Package" + "item_description" "#TF_TeamFortress2_Soundtrack_Promo_Package_Desc" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + + + + + "15000" + { + "name" "concealedkiller_sniperrifle_nightowl" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "14" + } + } + "15001" + { + "name" "concealedkiller_smg_woodsywidowmaker" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "13" + } + } + "15002" + { + "name" "concealedkiller_scattergun_nightterror" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "11" + } + } + "15003" + { + "name" "concealedkiller_shotgun_backwoodsboomstick" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "12" + } + } + "15004" + { + "name" "concealedkiller_minigun_kingofthejungle" + "prefab" "paintkit_weapon_minigun" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "10" + } + } + "15005" + { + "name" "concealedkiller_flamethrower_forestfire" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "9" + } + } + "15006" + { + "name" "concealedkiller_rocketlauncher_woodlandwarrior" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "6" + } + } + "15007" + { + "name" "concealedkiller_sniperrifle_purplerange" + "prefab" "paintkit_weapon_sniperrifle" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "7" + } + } + "15008" + { + "name" "concealedkiller_medigun_maskedmender" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "5" + } + } + "15009" + { + "name" "concealedkiller_stickybomblauncher_suddenflurry" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "8" + } + } + "15010" + { + "name" "concealedkiller_medigun_wrappedreviver" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "2" + } + } + "15011" + { + "name" "concealedkiller_revolver_psychedelicslugger" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "3" + } + } + "15012" + { + "name" "concealedkiller_stickybomblauncher_carpetbomber" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "4" + } + } + "15013" + { + "name" "concealedkiller_pistol_redrockroscoe" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "0" + } + } + "15014" + { + "name" "concealedkiller_rocketlauncher_sandcannon" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "1" + } + } + "15015" + { + "name" "craftsmann_scattergun_tartantorpedo" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "15" + } + } + "15016" + { + "name" "craftsmann_shotgun_rusticruiner" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "16" + } + } + "15017" + { + "name" "craftsmann_flamethrower_barnburner" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "17" + } + } + "15018" + { + "name" "craftsmann_pistol_homemadeheater" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "18" + } + } + "15019" + { + "name" "craftsmann_sniperrifle_lumberfromdownunder" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "19" + } + } + "15020" + { + "name" "craftsmann_minigun_ironwood" + "prefab" "paintkit_weapon_minigun" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "20" + } + } + "15021" + { + "name" "craftsmann_scattergun_countrycrusher" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "21" + } + } + "15022" + { + "name" "craftsmann_smg_plaidpotshotter" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "22" + } + } + "15023" + { + "name" "craftsmann_sniperrifle_shotinthedark" + "prefab" "paintkit_weapon_sniperrifle" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "23" + } + } + "15024" + { + "name" "craftsmann_stickybomblauncher_blastedbombardier" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "24" + } + } + "15025" + { + "name" "craftsmann_medigun_reclaimedreanimator" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "25" + } + } + "15026" + { + "name" "craftsmann_minigun_antiqueannihilator" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "26" + } + } + "15027" + { + "name" "craftsmann_revolver_oldcountry" + "prefab" "paintkit_weapon_revolver" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "27" + } + } + "15028" + { + "name" "craftsmann_rocketlauncher_americanpastoral" + "prefab" "paintkit_weapon_rocketlauncher" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "28" + } + } + "15029" + { + "name" "craftsmann_scattergun_backcountryblaster" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "29" + } + } + "15030" + { + "name" "teufort_flamethrower_bovineblazemaker" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "30" + } + } + "15031" + { + "name" "teufort_minigun_warroom" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "31" + } + } + "15032" + { + "name" "teufort_smg_treadplatetormenter" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "32" + } + } + "15033" + { + "name" "teufort_sniperrifle_bogtrotter" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "33" + } + } + "15034" + { + "name" "teufort_flamethrower_earthskyandfire" + "prefab" "paintkit_weapon_flamethrower" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "34" + } + } + "15035" + { + "name" "teufort_pistol_hickoryholepuncher" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "35" + } + } + "15036" + { + "name" "teufort_scattergun_sprucedeuce" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "36" + } + } + "15037" + { + "name" "teufort_smg_teamsprayer" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "37" + } + } + "15038" + { + "name" "teufort_stickybomblauncher_rooftopwrangler" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "38" + } + } + "15039" + { + "name" "teufort_medigun_civilservant" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "39" + } + } + "15040" + { + "name" "teufort_minigun_citizenpain" + "prefab" "paintkit_weapon_minigun" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "40" + } + } + "15041" + { + "name" "teufort_pistol_localhero" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "41" + } + } + "15042" + { + "name" "teufort_revolver_mayor" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "42" + } + } + "15043" + { + "name" "teufort_rocketlauncher_smalltownbringdown" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "43" + } + } + "15044" + { + "name" "teufort_shotgun_civicduty" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "44" + } + } + "15045" + { + "name" "powerhouse_stickybomblauncher_liquidasset" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "45" + } + } + "15046" + { + "name" "powerhouse_pistol_blackdahlia" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "46" + } + } + "15047" + { + "name" "powerhouse_shotgun_lightningrod" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "47" + } + } + "15048" + { + "name" "powerhouse_stickybomblauncher_pinkelephant" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "48" + } + } + "15049" + { + "name" "powerhouse_flamethrower_flashfryer" + "prefab" "paintkit_weapon_flamethrower" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "49" + } + } + "15050" + { + "name" "powerhouse_medigun_sparkoflife" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "50" + } + } + "15051" + { + "name" "powerhouse_revolver_deadreckoner" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "51" + } + } + "15052" + { + "name" "powerhouse_rocketlauncher_shellshocker" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "52" + } + } + "15053" + { + "name" "powerhouse_scattergun_currentevent" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "53" + } + } + "15054" + { + "name" "powerhouse_flamethrower_turbinetorcher" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "54" + } + } + "15055" + { + "name" "powerhouse_minigun_brickhouse" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "55" + } + } + "15056" + { + "name" "powerhouse_pistol_sandstonespecial" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "56" + } + } + "15057" + { + "name" "powerhouse_rocketlauncher_aquamarine" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "57" + } + } + "15058" + { + "name" "powerhouse_smg_lowprofile" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "58" + } + } + "15059" + { + "name" "powerhouse_sniperrifle_thunderbolt" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "59" + } + } + "15060" + { + "name" "harvest_pistol_macabreweb" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "63" + } + } + "15061" + { + "name" "harvest_pistol_nutcracker" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "61" + } + } + "15062" + { + "name" "harvest_revolver_boneyard" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "64" + } + } + "15063" + { + "name" "harvest_revolver_wildwood" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "65" + } + } + "15064" + { + "name" "harvest_revolver_macabreweb" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "63" + } + } + "15065" + { + "name" "harvest_scattergun_macabreweb" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "63" + } + } + "15066" + { + "name" "harvest_flamethrower_autumn" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "60" + } + } + "15067" + { + "name" "harvest_flamethrower_pumpkinpatch" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "62" + } + } + "15068" + { + "name" "harvest_flamethrower_nutcracker" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "61" + } + } + "15069" + { + "name" "harvest_scattergun_nutcracker" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "61" + } + } + "15070" + { + "name" "harvest_sniperrifle_pumpkinpatch" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "62" + } + } + "15071" + { + "name" "harvest_sniperrifle_boneyard" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "64" + } + } + "15072" + { + "name" "harvest_sniperrifle_wildwood" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "65" + } + } + "15073" + { + "name" "harvest_wrench_nutcracker" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "61" + } + } + "15074" + { + "name" "harvest_wrench_autumn" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "60" + } + } + "15075" + { + "name" "harvest_wrench_boneyard" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "64" + } + } + "15076" + { + "name" "harvest_smg_wildwood" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "65" + } + } + "15077" + { + "name" "harvest_grenadelauncher_autumn" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "60" + } + } + "15078" + { + "name" "harvest_medigun_wildwood" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "65" + } + } + "15079" + { + "name" "harvest_grenadelauncher_macabreweb" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "63" + } + } + "15080" + { + "name" "harvest_knife_boneyard" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "64" + } + } + "15081" + { + "name" "harvest_rocketlauncher_autumn" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "60" + } + } + "15082" + { + "name" "harvest_stickybomblauncher_autumn" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "60" + } + } + "15083" + { + "name" "harvest_stickybomblauncher_pumpkinpatch" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "62" + } + } + "15084" + { + "name" "harvest_stickybomblauncher_macabreweb" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "63" + } + } + "15085" + { + "name" "harvest_shotgun_autumn" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "60" + } + } + "15086" + { + "name" "harvest_minigun_macabreweb" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "63" + } + } + "15087" + { + "name" "harvest_minigun_pumpkinpatch" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "62" + } + } + "15088" + { + "name" "harvest_minigun_nutcracker" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "61" + } + } + "15089" + { + "name" "pyroland_flamethrower_balloonicorn" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_flamethrower_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "66" + } + } + "15090" + { + "name" "pyroland_flamethrower_rainbow" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/mtp/c_flamethrower_rainbow" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "67" + } + } + "15091" + { + "name" "pyroland_grenadelauncher_rainbow" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/mtp/c_grenadelauncher_rainbow" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "67" + } + } + "15092" + { + "name" "pyroland_grenadelauncher_sweetdreams" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_grenadelauncher/c_grenadelauncher_gold" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "68" + } + } + "15094" + { + "name" "pyroland_knife_bluemew" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "69" + } + } + "15095" + { + "name" "pyroland_knife_braincandy" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "70" + } + } + "15096" + { + "name" "pyroland_knife_stabbedtohell" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "71" + } + } + "15097" + { + "name" "pyroland_medigun_flowerpower" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "72" + } + } + "15098" + { + "name" "pyroland_minigun_braincandy" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "70" + } + } + "15099" + { + "name" "pyroland_minigun_mistercuddles" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "73" + } + } + "15100" + { + "name" "pyroland_pistol_bluemew" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "69" + } + } + "15101" + { + "name" "pyroland_pistol_braincandy" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "70" + } + } + "15102" + { + "name" "pyroland_pistol_shottohell" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/mtp/c_pistol_norim" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "74" + } + } + "15103" + { + "name" "pyroland_revolver_flowerpower" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_revolver_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "72" + } + } + "15104" + { + "name" "pyroland_rocketlauncher_bluemew" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/mtp/c_rocketlauncher_rainbow" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "69" + } + } + "15105" + { + "name" "pyroland_rocketlauncher_braincandy" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/mtp/c_rocketlauncher_rainbow" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "70" + } + } + "15106" + { + "name" "pyroland_scattergun_bluemew" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_scattergun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "69" + } + } + "15107" + { + "name" "pyroland_scattergun_flowerpower" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_scattergun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "72" + } + } + "15108" + { + "name" "pyroland_scattergun_shottohell" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_scattergun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "74" + } + } + "15109" + { + "name" "pyroland_shotgun_flowerpower" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_shotgun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "72" + } + } + "15110" + { + "name" "pyroland_smg_bluemew" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "69" + } + } + "15111" + { + "name" "pyroland_sniperrifle_balloonicorn" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "66" + } + } + "15112" + { + "name" "pyroland_sniperrifle_rainbow" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/mtp/c_sniperrifle_rainbow" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "67" + } + } + "15113" + { + "name" "pyroland_stickybomblauncher_sweetdreams" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_stickybomb_launcher/c_stickybomb_launcher_gold" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "68" + } + } + "15114" + { + "name" "pyroland_wrench_torquedtohell" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "75" + } + } + "15115" + { + "name" "gentlemanne_flamethrower_coffinnail" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_flamethrower_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15116" + { + "name" "gentlemanne_grenadelauncher_coffinnail" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_grenadelauncher_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15117" + { + "name" "gentlemanne_grenadelauncher_topshelf" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_grenadelauncher_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "77" + } + } + "15118" + { + "name" "gentlemanne_knife_dressedtokill" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_knife_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15119" + { + "name" "gentlemanne_knife_topshelf" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_knife_c" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "77" + } + } + "15120" + { + "name" "gentlemanne_medigun_coffinnail" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_medigun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15121" + { + "name" "gentlemanne_medigun_dressedtokill" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_medigun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15122" + { + "name" "gentlemanne_medigun_highrollers" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_medigun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "79" + } + } + "15123" + { + "name" "gentlemanne_minigun_coffinnail" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_minigun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15124" + { + "name" "gentlemanne_minigun_dressedtokill" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_minigun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15125" + { + "name" "gentlemanne_minigun_topshelf" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_minigun_c" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "77" + } + } + "15126" + { + "name" "gentlemanne_pistol_dressedtokill" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_pistol_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15127" + { + "name" "gentlemanne_revolver_coffinnail" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_revolver_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15128" + { + "name" "gentlemanne_revolver_topshelf" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_revolver_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "77" + } + } + "15129" + { + "name" "gentlemanne_rocketlauncher_coffinnail" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_rocketlauncher_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15130" + { + "name" "gentlemanne_rocketlauncher_highrollers" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_rocketlauncher_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "79" + } + } + "15131" + { + "name" "gentlemanne_scattergun_coffinnail" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_scattergun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15132" + { + "name" "gentlemanne_shotgun_coffinnail" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_shotgun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15133" + { + "name" "gentlemanne_shotgun_dressedtokill" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_shotgun_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15134" + { + "name" "gentlemanne_smg_highrollers" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_smg_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "79" + } + } + "15135" + { + "name" "gentlemanne_sniperrifle_coffinnail" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_sniperrifle_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15136" + { + "name" "gentlemanne_sniperrifle_dressedtokill" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_sniperrifle_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15137" + { + "name" "gentlemanne_stickybomblauncher_coffinnail" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_stickybomb_launcher_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "76" + } + } + "15138" + { + "name" "gentlemanne_stickybomblauncher_dressedtokill" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_stickybomb_launcher_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15139" + { + "name" "gentlemanne_wrench_dressedtokill" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_wrench_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "78" + } + } + "15140" + { + "name" "gentlemanne_wrench_topshelf" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/cig/c04_wrench_metal" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "77" + } + } + "15141" + { + "name" "warbird_flamethrower_warhawk" + "prefab" "paintkit_weapon_flamethrower" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_flamethrower/c_flamethrower_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "80" + } + } + "15142" + { + "name" "warbird_grenadelauncher_warhawk" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_grenadelauncher/c_grenadelauncher_p40" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "80" + } + } + "15143" + { + "name" "warbird_knife_blitzkrieg" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "81" + } + } + "15144" + { + "name" "warbird_knife_airwolf" + "prefab" "paintkit_weapon_knife" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_knife/c_knife_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "82" + } + } + "15145" + { + "name" "warbird_medigun_blitzkrieg" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "81" + } + } + "15146" + { + "name" "warbird_medigun_corsair" + "prefab" "paintkit_weapon_medigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_medigun/c_medigun_corsair" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_medigun/c_medigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "83" + } + } + "15147" + { + "name" "warbird_minigun_butcherbird" + "prefab" "paintkit_weapon_minigun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_minigun/c_minigun_focke_wulf" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_minigun/c_minigun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "84" + } + } + "15148" + { + "name" "warbird_pistol_blitzkrieg" + "prefab" "paintkit_weapon_pistol" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_pistol/c_pistol_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "81" + } + } + "15149" + { + "name" "warbird_revolver_blitzkrieg" + "prefab" "paintkit_weapon_revolver" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_revolver/c_revolver_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "81" + } + } + "15150" + { + "name" "warbird_rocketlauncher_warhawk" + "prefab" "paintkit_weapon_rocketlauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_rocketlauncher/c_rocketlauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "80" + } + } + "15151" + { + "name" "warbird_scattergun_killerbee" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_scattergun/c_scattergun_killerbee" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "85" + } + } + "15152" + { + "name" "warbird_shotgun_redbear" + "prefab" "paintkit_weapon_shotgun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_shotgun/c_shotgun_yak" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_shotgun/c_shotgun_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "86" + } + } + "15153" + { + "name" "warbird_smg_blitzkrieg" + "prefab" "paintkit_weapon_smg" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_smg/c_smg_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "81" + } + } + "15154" + { + "name" "warbird_sniperrifle_airwolf" + "prefab" "paintkit_weapon_sniperrifle" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_sniperrifle/c_sniperrifle_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "82" + } + } + "15155" + { + "name" "warbird_stickybomblauncher_blitzkrieg" + "prefab" "paintkit_weapon_stickybomb_launcher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_stickybomb_launcher/c_stickybomb_launcher_messerschmitt" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_stickybomb_launcher/c_stickybomb_launcher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "81" + } + } + "15156" + { + "name" "warbird_wrench_airwolf" + "prefab" "paintkit_weapon_wrench" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_wrench/c_wrench_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "82" + } + } + "15157" + { + "name" "warbird_scattergun_corsair" + "prefab" "paintkit_weapon_scattergun" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "material_override" "models/paintkits/c_scattergun/c_scattergun_corsair" + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_scattergun/c_scattergun_festivizer.mdl" + } + } + } + "static_attrs" + { + "has team color paintkit" "1" + "paintkit_proto_def_index" "83" + } + } + "15158" + { + "name" "warbird_grenadelauncher_butcherbird" + "prefab" "paintkit_weapon_grenadelauncher" + "propername" "1" + "tags" + { + "can_be_festivized" "1" + } + "visuals" + { + "attached_models_festive" + { + "0" + { + "model" "models/weapons/c_models/c_grenadelauncher/c_grenadelauncher_festivizer.mdl" + } + } + } + "static_attrs" + { + "paintkit_proto_def_index" "84" + } + } + + "9536" + { + "name" "Paintkit" + "prefab" "paintkit_tool" + "show_in_armory" "0" + "static_attrs" + { + "paintkit_proto_def_index" "0" + } + } + + + "16102" + { + "name" "Paintkit 102" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "102" + } + } + + "16104" + { + "name" "Paintkit 104" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "104" + } + } + + "16105" + { + "name" "Paintkit 105" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "105" + } + } + + "16106" + { + "name" "Paintkit 106" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "106" + } + } + + "16109" + { + "name" "Paintkit 109" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "109" + } + } + + "16112" + { + "name" "Paintkit 112" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "112" + } + } + + "16113" + { + "name" "Paintkit 113" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "113" + } + } + + "16114" + { + "name" "Paintkit 114" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "114" + } + } + + "16120" + { + "name" "Paintkit 120" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "120" + } + } + + "16122" + { + "name" "Paintkit 122" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "122" + } + } + + "16130" + { + "name" "Paintkit 130" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "130" + } + } + + "16139" + { + "name" "Paintkit 139" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "139" + } + } + + "16143" + { + "name" "Paintkit 143" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "143" + } + } + + "16144" + { + "name" "Paintkit 144" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "144" + } + } + + "16151" + { + "name" "Paintkit 151" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "151" + } + } + + "16160" + { + "name" "Paintkit 160" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "160" + } + } + + "16161" + { + "name" "Paintkit 161" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "161" + } + } + + "16163" + { + "name" "Paintkit 163" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "163" + } + } + + "16300" + { + "name" "Paintkit 300" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "300" + } + } + + "16301" + { + "name" "Paintkit 301" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "301" + } + } + + "16302" + { + "name" "Paintkit 302" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "302" + } + } + + "16303" + { + "name" "Paintkit 303" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "303" + } + } + + "16304" + { + "name" "Paintkit 304" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "304" + } + } + + "16305" + { + "name" "Paintkit 305" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "305" + } + } + + "16306" + { + "name" "Paintkit 306" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "306" + } + } + + "16307" + { + "name" "Paintkit 307" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "307" + } + } + + "16308" + { + "name" "Paintkit 308" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "308" + } + } + + "16309" + { + "name" "Paintkit 309" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "309" + } + } + + "16310" + { + "name" "Paintkit 310" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "310" + } + } + + "16390" + { + "name" "Paintkit 390" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "390" + } + } + + "16391" + { + "name" "Paintkit 391" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "391" + } + } + + + "17200" + { + "name" "Paintkit 200" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "200" + } + } + + "17201" + { + "name" "Paintkit 201" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "201" + } + } + + "17202" + { + "name" "Paintkit 202" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "202" + } + } + + "17203" + { + "name" "Paintkit 203" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "203" + } + } + + "17204" + { + "name" "Paintkit 204" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "204" + } + } + + "17205" + { + "name" "Paintkit 205" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "205" + } + } + + "17206" + { + "name" "Paintkit 206" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "206" + } + } + + "17207" + { + "name" "Paintkit 207" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "207" + } + } + + "17208" + { + "name" "Paintkit 208" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "208" + } + } + + "17209" + { + "name" "Paintkit 209" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "209" + } + } + + "17210" + { + "name" "Paintkit 210" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "210" + } + } + + "17211" + { + "name" "Paintkit 211" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "211" + } + } + + "17212" + { + "name" "Paintkit 212" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "212" + } + } + + "17213" + { + "name" "Paintkit 213" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "213" + } + } + + "17214" + { + "name" "Paintkit 214" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "214" + } + } + + "17215" + { + "name" "Paintkit 215" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "215" + } + } + + "17217" + { + "name" "Paintkit 217" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "217" + } + } + + "17218" + { + "name" "Paintkit 218" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "218" + } + } + + "17220" + { + "name" "Paintkit 220" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "220" + } + } + + "17221" + { + "name" "Paintkit 221" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "221" + } + } + + "17223" + { + "name" "Paintkit 223" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "223" + } + } + + "17224" + { + "name" "Paintkit 224" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "224" + } + } + + "17225" + { + "name" "Paintkit 225" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "225" + } + } + + "17226" + { + "name" "Paintkit 226" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "226" + } + } + + "17228" + { + "name" "Paintkit 228" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "228" + } + } + + "17230" + { + "name" "Paintkit 230" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "230" + } + } + + "17232" + { + "name" "Paintkit 232" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "232" + } + } + + "17234" + { + "name" "Paintkit 234" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "234" + } + } + + "17235" + { + "name" "Paintkit 235" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "235" + } + } + + "17236" + { + "name" "Paintkit 236" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "236" + } + } + + "17237" + { + "name" "Paintkit 237" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "237" + } + } + + "17238" + { + "name" "Paintkit 238" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "238" + } + } + + "17239" + { + "name" "Paintkit 239" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "239" + } + } + + "17240" + { + "name" "Paintkit 240" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "240" + } + } + + "17241" + { + "name" "Paintkit 241" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "241" + } + } + + "17242" + { + "name" "Paintkit 242" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "242" + } + } + + "17243" + { + "name" "Paintkit 243" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "243" + } + } + + "17244" + { + "name" "Paintkit 244" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "244" + } + } + + "17245" + { + "name" "Paintkit 245" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "245" + } + } + + "17246" + { + "name" "Paintkit 246" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "246" + } + } + + "17247" + { + "name" "Paintkit 247" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "247" + } + } + + "17248" + { + "name" "Paintkit 248" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "248" + } + } + + "17249" + { + "name" "Paintkit 249" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "249" + } + } + + "17250" + { + "name" "Paintkit 250" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "250" + } + } + + "17251" + { + "name" "Paintkit 251" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "251" + } + } + + "17252" + { + "name" "Paintkit 252" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "252" + } + } + + "17253" + { + "name" "Paintkit 253" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "253" + } + } + + "17254" + { + "name" "Paintkit 254" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "254" + } + } + + "17255" + { + "name" "Paintkit 255" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "255" + } + } + + "17256" + { + "name" "Paintkit 256" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "256" + } + } + + "17257" + { + "name" "Paintkit 257" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "257" + } + } + + "17258" + { + "name" "Paintkit 258" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "258" + } + } + + "17259" + { + "name" "Paintkit 259" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "259" + } + } + + "17260" + { + "name" "Paintkit 260" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "260" + } + } + + "17261" + { + "name" "Paintkit 261" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "261" + } + } + + "17262" + { + "name" "Paintkit 262" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "262" + } + } + + "17263" + { + "name" "Paintkit 263" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "263" + } + } + + "17264" + { + "name" "Paintkit 264" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "264" + } + } + + "17265" + { + "name" "Paintkit 265" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "265" + } + } + + "17266" + { + "name" "Paintkit 266" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "266" + } + } + + "17267" + { + "name" "Paintkit 267" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "267" + } + } + + "17268" + { + "name" "Paintkit 268" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "268" + } + } + + "17269" + { + "name" "Paintkit 269" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "269" + } + } + + "17270" + { + "name" "Paintkit 270" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "270" + } + } + + "17271" + { + "name" "Paintkit 271" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "271" + } + } + + "17272" + { + "name" "Paintkit 272" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "272" + } + } + + "17273" + { + "name" "Paintkit 273" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "273" + } + } + + "17275" + { + "name" "Paintkit 275" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "275" + } + } + + "17276" + { + "name" "Paintkit 276" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "276" + } + } + + "17277" + { + "name" "Paintkit 277" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "277" + } + } + + "17278" + { + "name" "Paintkit 278" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "278" + } + } + + "17279" + { + "name" "Paintkit 279" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "279" + } + } + + "17280" + { + "name" "Paintkit 280" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "280" + } + } + + "17281" + { + "name" "Paintkit 281" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "281" + } + } + + "17282" + { + "name" "Paintkit 282" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "282" + } + } + + "17283" + { + "name" "Paintkit 283" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "283" + } + } + + + "17284" + { + "name" "Paintkit 284" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "284" + } + } + + "17285" + { + "name" "Paintkit 285" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "285" + } + } + + "17286" + { + "name" "Paintkit 286" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "286" + } + } + + "17287" + { + "name" "Paintkit 287" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "287" + } + } + + "17289" + { + "name" "Paintkit 289" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "289" + } + } + + "17290" + { + "name" "Paintkit 290" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "290" + } + } + + "17291" + { + "name" "Paintkit 291" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "291" + } + } + + "17292" + { + "name" "Paintkit 292" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "292" + } + } + + "17293" + { + "name" "Paintkit 293" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "293" + } + } + + "17294" + { + "name" "Paintkit 294" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "294" + } + } + + "17295" + { + "name" "Paintkit 295" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "295" + } + } + + "17296" + { + "name" "Paintkit 296" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "296" + } + } + + "17297" + { + "name" "Paintkit 297" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "297" + } + } + + "17400" + { + "name" "Paintkit 400" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "400" + } + } + + "17401" + { + "name" "Paintkit 401" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "401" + } + } + + "17402" + { + "name" "Paintkit 402" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "402" + } + } + + "17403" + { + "name" "Paintkit 403" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "403" + } + } + + "17404" + { + "name" "Paintkit 404" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "404" + } + } + + "17405" + { + "name" "Paintkit 405" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "405" + } + } + + "17406" + { + "name" "Paintkit 406" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "406" + } + } + + "17407" + { + "name" "Paintkit 407" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "407" + } + } + + "17408" + { + "name" "Paintkit 408" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "408" + } + } + + "17409" + { + "name" "Paintkit 409" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "409" + } + } + + "17410" + { + "name" "Paintkit 410" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "410" + } + } + + "17411" + { + "name" "Paintkit 411" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "411" + } + } + + "17412" + { + "name" "Paintkit 412" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "412" + } + } + + "17413" + { + "name" "Paintkit 413" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "413" + } + } + + "17414" + { + "name" "Paintkit 414" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "414" + } + } + + "17415" + { + "name" "Paintkit 415" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "415" + } + } + + "17416" + { + "name" "Paintkit 416" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "416" + } + } + + "17417" + { + "name" "Paintkit 417" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "417" + } + } + + "17418" + { + "name" "Paintkit 418" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "418" + } + } + + "17419" + { + "name" "Paintkit 419" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "419" + } + } + + "17420" + { + "name" "Paintkit 420" + "prefab" "paintkit_tool" + "static_attrs" + { + "paintkit_proto_def_index" "420" + } + } + + "18000" + { + "name" "Warpaint Collection 1 Tier 1 Keyless Case" + "prefab" "base_paintkit_keylesscase" + "static_attrs" + { + "set supply crate series" "111" + "item name text override" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier1_Name" + } + "image_inventory" "backpack/items/paintkit_bundle_01" + "item_name" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier1_Name" + "item_description" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier1_Desc" + } + + "18001" + { + "name" "Warpaint Collection 1 Tier 2 Keyless Case" + "prefab" "base_paintkit_keylesscase" + "static_attrs" + { + "set supply crate series" "112" + "item name text override" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier2_Name" + } + "image_inventory" "backpack/items/paintkit_bundle_02" + "item_name" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier2_Name" + "item_description" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier2_Desc" + } + + "18002" + { + "name" "Warpaint Collection 1 Tier 3 Keyless Case" + "prefab" "base_paintkit_keylesscase" + "static_attrs" + { + "set supply crate series" "113" + "item name text override" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier3_Name" + } + "image_inventory" "backpack/items/paintkit_bundle_03" + "item_name" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier3_Name" + "item_description" "#TF_KeylessPaintkitBundle_Campaign3_Collection1_Tier3_Desc" + } + + "18003" + { + "name" "Warpaint Collection 2 Tier 1 Keyless Case" + "prefab" "base_paintkit_keylesscase" + "static_attrs" + { + "set supply crate series" "114" + "item name text override" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier1_Name" + } + "image_inventory" "backpack/items/paintkit_bundle_01" + "item_name" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier1_Name" + "item_description" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier1_Desc" + } + + "18004" + { + "name" "Warpaint Collection 2 Tier 2 Keyless Case" + "prefab" "base_paintkit_keylesscase" + "static_attrs" + { + "set supply crate series" "115" + "item name text override" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier2_Name" + } + "image_inventory" "backpack/items/paintkit_bundle_02" + "item_name" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier2_Name" + "item_description" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier2_Desc" + } + + "18005" + { + "name" "Warpaint Collection 2 Tier 3 Keyless Case" + "prefab" "base_paintkit_keylesscase" + "static_attrs" + { + "set supply crate series" "116" + "item name text override" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier3_Name" + } + "image_inventory" "backpack/items/paintkit_bundle_03" + "item_name" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier3_Name" + "item_description" "#TF_KeylessPaintkitBundle_Campaign3_Collection2_Tier3_Desc" + } + + + + "30000" + { + "name" "The Electric Badge-aloo" + "prefab" "misc" + "craft_class" "" + "item_name" "#TF_robo_all_bomb_badge" + "item_description" "#TF_robo_all_bomb_badge_Desc" + "item_type_name" "#TF_Wearable_CommunityMedal" + "equip_region" "medal" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/robo_all_bomb_badge/robo_all_bomb_badge" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_all_bomb_badge/robo_all_bomb_badge_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30001" + { + "name" "Modest Metal Pile of Scrap" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_all_modest_pile" + "item_description" "#TF_robo_all_modest_pile_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/robo_all_modest_pile/robo_all_modest_pile" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_all_modest_pile/robo_all_modest_pile_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30002" + { + "name" "Letch's LED" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_sniper_liquidator" + "item_description" "#TF_robo_sniper_liquidator_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/robo_sniper_liquidator/robo_sniper_liquidator" + "model_player" "models/workshop/player/items/sniper/robo_sniper_liquidator/robo_sniper_liquidator.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30003" + { + "name" "The Galvanized Gibus" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_all_gibus" + "item_description" "#TF_robo_all_gibus_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/robo_all_gibus/robo_all_gibus" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_all_gibus/robo_all_gibus_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30004" + { + "name" "Soldered Sensei" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_sniper_soldered_sensei" + "item_description" "#TF_robo_sniper_soldered_sensei_Desc" + "equip_region" "sniper_headband" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/robo_sniper_soldered_sensei/robo_sniper_soldered_sensei" + "model_player" "models/workshop/player/items/sniper/robo_sniper_soldered_sensei/robo_sniper_soldered_sensei.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30005" + { + "name" "Shooter's Tin Topi" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_sniper_solar_topi" + "item_description" "#TF_robo_sniper_solar_topi_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/robo_sniper_solar_topi/robo_sniper_solar_topi" + "model_player" "models/workshop/player/items/sniper/robo_sniper_solar_topi/robo_sniper_solar_topi.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30006" + { + "name" "Noble Nickel Amassment of Hats" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_all_noble_amassment" + "item_description" "#TF_robo_all_noble_amassment_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/robo_all_noble_amassment/robo_all_noble_amassment" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_all_noble_amassment/robo_all_noble_amassment_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30007" + { + "name" "Base Metal Billycock" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_spy_backbiter_billycock" + "item_description" "#TF_robo_spy_backbiter_billycock_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/spy/robo_spy_backbiter_billycock/robo_spy_backbiter_billycock" + "model_player" "models/workshop/player/items/spy/robo_spy_backbiter_billycock/robo_spy_backbiter_billycock.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30008" + { + "name" "Towering Titanium Pillar of Hats" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_all_towering_pillar" + "item_description" "#TF_robo_all_towering_pillar_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/robo_all_towering_pillar/robo_all_towering_pillar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_all_towering_pillar/robo_all_towering_pillar_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30009" + { + "name" "The Megapixel Beard" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_spy_camera_beard" + "item_description" "#TF_robo_spy_camera_beard_Desc" + "equip_region" "beard" + "item_type_name" "#TF_Wearable_FacialHair" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/robo_spy_camera_beard/robo_spy_camera_beard" + "model_player" "models/workshop/player/items/spy/robo_spy_camera_beard/robo_spy_camera_beard.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "30010" + { + "name" "The HDMI Patch" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_demo_pupil" + "item_description" "#TF_robo_demo_pupil_Desc" + "equip_region" "glasses" + "item_type_name" "#TF_Wearable_ElectronicDevice" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_pupil/robo_demo_pupil" + "model_player" "models/workshop/player/items/demo/robo_demo_pupil/robo_demo_pupil.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "30011" + { + "name" "The Bolted Bombardier" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_beard_bombardier" + "item_description" "#TF_robo_demo_beard_bombardier_Desc" + "equip_region" "beard" + "item_type_name" "#TF_Wearable_FacialHair" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_beard_bombardier/robo_demo_beard_bombardier" + "model_player" "models/workshop/player/items/demo/robo_demo_beard_bombardier/robo_demo_beard_bombardier.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "30012" + { + "name" "The Titanium Towel" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_heavy_boltedscraptowel" + "item_description" "#TF_robo_heavy_boltedscraptowel_Desc" + "equip_region" "heavy_towel" + "item_type_name" "TF_Wearable_Apparel" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/robo_heavy_boltedscraptowel/robo_heavy_boltedscraptowel" + "model_player" "models/workshop/player/items/heavy/robo_heavy_boltedscraptowel/robo_heavy_boltedscraptowel.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "30013" + { + "name" "The Gridiron Guardian" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_heavy_football_helmet" + "item_description" "#TF_robo_heavy_football_helmet_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/robo_heavy_football_helmet/robo_heavy_football_helmet" + "model_player" "models/workshop/player/items/heavy/robo_heavy_football_helmet/robo_heavy_football_helmet.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30014" + { + "name" "Tyrantium Helmet" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_soldier_tyrantium" + "item_description" "#TF_robo_soldier_tyrantium_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Helmet" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/robo_soldier_tyrantium/robo_soldier_tyrantium" + "model_player" "models/workshop/player/items/soldier/robo_soldier_tyrantium/robo_soldier_tyrantium.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30015" + { + "name" "Battery Canteens" + "prefab" "no_craft powerup_bottle" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_all_mvm_canteen" + "item_description" "#TF_robo_all_mvm_canteen_Desc" + "image_inventory" "backpack/workshop/player/items/scout/robo_all_mvm_canteen/robo_all_mvm_canteen" + "model_player" "models/workshop/player/items/scout/robo_all_mvm_canteen/robo_all_mvm_canteen.mdl" + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "109" + } + } + } + "30016" + { + "name" "The FR-0" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_fro" + "item_description" "#TF_robo_demo_fro_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_fro/robo_demo_fro" + "model_player" "models/workshop/player/items/demo/robo_demo_fro/robo_demo_fro.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30017" + { + "name" "Steel Shako" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_soldier_shako" + "item_description" "#TF_robo_soldier_shako_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/robo_soldier_shako/robo_soldier_shako" + "model_player" "models/workshop/player/items/soldier/robo_soldier_shako/robo_soldier_shako.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30018" + { + "name" "The Bot Dogger" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_scout_dogger" + "item_description" "#TF_robo_scout_dogger_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/robo_dogger/robo_dogger" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_dogger/robo_dogger_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30019" + { + "name" "Ye Oiled Baker Boy" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_scout_baker_boy" + "item_description" "#TF_robo_scout_baker_boy_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/robo_scout_baker_boy/robo_scout_baker_boy" + "model_player" "models/workshop/player/items/scout/robo_scout_baker_boy/robo_scout_baker_boy.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30020" + { + "name" "The Scrap Sack" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_pyrobotic_tote" + "item_description" "#TF_robo_pyro_pyrobotic_tote_Desc" + "equip_region" "back" + "item_type_name" "#TF_Wearable_Backpack" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_pyrobotic_tote/robo_pyro_pyrobotic_tote" + "model_player" "models/workshop/player/items/pyro/robo_pyro_pyrobotic_tote/robo_pyro_pyrobotic_tote.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30021" + { + "name" "The Pure Tin Capotain" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_capotain" + "item_description" "#TF_robo_demo_capotain_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_capotain/robo_demo_capotain" + "model_player" "models/workshop/player/items/demo/robo_demo_capotain/robo_demo_capotain.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30022" + { + "name" "Plumber's Pipe" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_prancers_pride" + "item_description" "#TF_robo_pyro_prancers_pride_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_prancers_pride/robo_pyro_prancers_pride" + "model_player" "models/workshop/player/items/pyro/robo_pyro_prancers_pride/robo_pyro_prancers_pride.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30023" + { + "name" "Teddy Robobelt" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_engineer_teddy" + "item_description" "#TF_robo_engineer_teddy_Desc" + "equip_region" "engineer_pocket" + "item_type_name" "#TF_Wearable_PocketBuddy" + "image_inventory" "backpack/workshop/player/items/engineer/robo_engineer_teddy/robo_engineer_teddy" + "model_player" "models/workshop/player/items/engineer/robo_engineer_teddy/robo_engineer_teddy.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30024" + { + "name" "The Cyborg Stunt Helmet" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_stuntman" + "item_description" "#TF_robo_demo_stuntman_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_stuntman/robo_demo_stuntman" + "model_player" "models/workshop/player/items/demo/robo_demo_stuntman/robo_demo_stuntman.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30025" + { + "name" "The Electric Escorter" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_electric_escorter" + "item_description" "#TF_robo_pyro_electric_escorter_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_electric_escorter/robo_pyro_electric_escorter" + "model_player" "models/workshop/player/items/pyro/robo_pyro_electric_escorter/robo_pyro_electric_escorter.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30026" + { + "name" "Full Metal Drill Hat" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_soldier_fullmetaldrillhat" + "item_description" "#TF_robo_soldier_fullmetaldrillhat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/soldier/robo_soldier_fullmetaldrillhat/robo_soldier_fullmetaldrillhat" + "model_player" "models/workshop/player/items/soldier/robo_soldier_fullmetaldrillhat/robo_soldier_fullmetaldrillhat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30027" + { + "name" "The Bolt Boy" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_scout_bolt_boy" + "item_description" "#TF_robo_scout_bolt_boy_Desc" + "equip_region" "glasses" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/robo_scout_bolt_boy/robo_scout_bolt_boy" + "model_player" "models/workshop/player/items/scout/robo_scout_bolt_boy/robo_scout_bolt_boy.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_robo_scout_bolt_boy_style0" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_robo_scout_bolt_boy_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30028" + { + "name" "The Metal Slug" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_tribtrojan" + "item_description" "#TF_robo_pyro_tribtrojan_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_tribtrojan/robo_pyro_tribtrojan" + "model_player" "models/workshop/player/items/pyro/robo_pyro_tribtrojan/robo_pyro_tribtrojan.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30029" + { + "name" "The Broadband Bonnet" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_glengarry_botnet" + "item_description" "#TF_robo_demo_glengarry_botnet_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_glengarry_botnet/robo_demo_glengarry_botnet" + "model_player" "models/workshop/player/items/demo/robo_demo_glengarry_botnet/robo_demo_glengarry_botnet.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30030" + { + "name" "Bonk Leadwear" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_scout_bonk_helm" + "item_description" "#TF_robo_scout_bonk_helm_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Helmet" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/robo_scout_bonk_helm/robo_scout_bonk_helm" + "model_player" "models/workshop/player/items/scout/robo_scout_bonk_helm/robo_scout_bonk_helm.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30031" + { + "name" "The Plug-In Prospector" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_engineer_greaser" + "item_description" "#TF_robo_engineer_greaser_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/robo_engineer_greaser/robo_engineer_greaser" + "model_player" "models/workshop/player/items/engineer/robo_engineer_greaser/robo_engineer_greaser.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30032" + { + "name" "The Rusty Reaper" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_last_watt" + "item_description" "#TF_robo_pyro_last_watt_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_last_watt/robo_pyro_last_watt" + "model_player" "models/workshop/player/items/pyro/robo_pyro_last_watt/robo_pyro_last_watt.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30033" + { + "name" "Soldier's Sparkplug" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_soldier_sparkplug" + "item_description" "#TF_robo_soldier_sparkplug_Desc" + "equip_region" "soldier_cigar" + "item_type_name" "#TF_Wearable_Cigar" + "image_inventory" "backpack/workshop/player/items/soldier/robo_soldier_sparkplug/robo_soldier_sparkplug" + "model_player" "models/workshop/player/items/soldier/robo_soldier_sparkplug/robo_soldier_sparkplug.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30034" + { + "name" "The Bolted Bicorne" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_buccaneer_bicorne" + "item_description" "#TF_robo_demo_buccaneer_bicorne_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_buccaneer_bicorne/robo_demo_buccaneer_bicorne" + "model_player" "models/workshop/player/items/demo/robo_demo_buccaneer_bicorne/robo_demo_buccaneer_bicorne.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30035" + { + "name" "The Timeless Topper" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_engineer_rustin" + "item_description" "#TF_robo_engineer_rustin_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/engineer/robo_engineer_rustin/robo_engineer_rustin" + "model_player" "models/workshop/player/items/engineer/robo_engineer_rustin/robo_engineer_rustin.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30036" + { + "name" "The Filamental" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_figment_filament" + "item_description" "#TF_robo_pyro_figment_filament_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_figment_filament/robo_pyro_figment_filament" + "model_player" "models/workshop/player/items/pyro/robo_pyro_figment_filament/robo_pyro_figment_filament.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30037" + { + "name" "The Strontium Stove Pipe" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_demo_scotsmans_stovepipe" + "item_description" "#TF_robo_demo_scotsmans_stovepipe_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_scotsmans_stovepipe/robo_demo_scotsmans_stovepipe" + "model_player" "models/workshop/player/items/demo/robo_demo_scotsmans_stovepipe/robo_demo_scotsmans_stovepipe.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30038" + { + "name" "Firewall Helmet" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_firewall_helmet" + "item_description" "#TF_robo_pyro_firewall_helmet_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_firewall_helmet/robo_pyro_firewall_helmet" + "model_player" "models/workshop/player/items/pyro/robo_pyro_firewall_helmet/robo_pyro_firewall_helmet.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30039" + { + "name" "Respectless Robo-Glove" + "prefab" "no_craft hat" + "item_name" "#TF_robo_pyro_respectless_glove" + "item_description" "#TF_robo_pyro_respectless_glove_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_respectless_glove/robo_pyro_respectless_glove" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/robo_pyro_respectless_glove/robo_pyro_respectless_glove.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30040" + { + "name" "Pyro's Boron Beanie" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_whirly_bird" + "item_description" "#TF_robo_pyro_whirly_bird_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_whirly_bird/robo_pyro_whirly_bird" + "model_player" "models/workshop/player/items/pyro/robo_pyro_whirly_bird/robo_pyro_whirly_bird.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30041" + { + "name" "Halogen Head Lamp" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_medic_otolaryngologists_mirror" + "item_description" "#TF_robo_medic_otolaryngologists_mirror_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_otolaryngologists_mirror/robo_medic_otolaryngologists_mirror" + "model_player" "models/workshop/player/items/medic/robo_medic_otolaryngologists_mirror/robo_medic_otolaryngologists_mirror.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30042" + { + "name" "Platinum Pickelhaube" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_medic_pickelhaube" + "item_description" "#TF_robo_medic_pickelhaube_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Helmet" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_pickelhaube/robo_medic_pickelhaube" + "model_player" "models/workshop/player/items/medic/robo_medic_pickelhaube/robo_medic_pickelhaube.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30043" + { + "name" "The Virus Doctor" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_medic_grimm_hatte" + "item_description" "#TF_robo_medic_grimm_hatte_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_grimm_hatte/robo_medic_grimm_hatte" + "model_player" "models/workshop/player/items/medic/robo_medic_grimm_hatte/robo_medic_grimm_hatte.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30044" + { + "name" "Texas Tin-Gallon" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_engineer_texastingallon" + "item_description" "#TF_robo_engineer_texastingallon_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/engineer/robo_engineer_texastingallon/robo_engineer_texastingallon" + "model_player" "models/workshop/player/items/engineer/robo_engineer_texastingallon/robo_engineer_texastingallon.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30045" + { + "name" "Titanium Tyrolean" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_medic_tyrolean" + "item_description" "#TF_robo_medic_tyrolean_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_tyrolean/robo_medic_tyrolean" + "model_player" "models/workshop/player/items/medic/robo_medic_tyrolean/robo_medic_tyrolean.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30046" + { + "name" "Practitioner's Processing Mask" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_medic_physician_mask" + "item_description" "#TF_robo_medic_physician_mask_Desc" + "equip_region" "beard" + "item_type_name" "#TF_Wearable_Mask" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_physician_mask/robo_medic_physician_mask" + "model_player" "models/workshop/player/items/medic/robo_medic_physician_mask/robo_medic_physician_mask.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30047" + { + "name" "Bootleg Base Metal Billycock" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_spy_bootleg_billycock" + "item_description" "#TF_robo_spy_bootleg_billycock_Desc" + "equip_region" "hat" + "drop_type" "drop" + "item_type_name" "#TF_Wearable_Hat" + "image_inventory" "backpack/workshop/player/items/spy/robo_spy_bootleg_billycock/robo_spy_bootleg_billycock" + "model_player" "models/workshop/player/items/spy/robo_spy_bootleg_billycock/robo_spy_bootleg_billycock.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30048" + { + "name" "Mecha-Medes" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_medic_archimedes" + "item_description" "#TF_robo_medic_archimedes_Desc" + "equip_region" "left_shoulder" + "item_type_name" "#TF_Wearable_Mascot" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_archimedes/robo_medic_archimedes" + "model_player" "models/workshop/player/items/medic/robo_medic_archimedes/robo_medic_archimedes.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30049" + { + "name" "The Tungsten Toque" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_heavy_tungsten_toque" + "item_description" "#TF_robo_heavy_tungsten_toque_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/robo_heavy_tungsten_toque/robo_heavy_tungsten_toque" + "model_player" "models/workshop/player/items/heavy/robo_heavy_tungsten_toque/robo_heavy_tungsten_toque.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30050" + { + "name" "The Steam Pipe" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_medic_ninepipe_problem" + "item_description" "#TF_robo_medic_ninepipe_problem_Desc" + "equip_region" "medic_pipe" + "item_type_name" "#TF_Wearable_Pipe" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_ninepipe_problem/robo_medic_ninepipe_problem" + "model_player" "models/workshop/player/items/medic/robo_medic_ninepipe_problem/robo_medic_ninepipe_problem.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "30051" + { + "name" "The Data Mining Light" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_engineer_mining_light" + "item_description" "#TF_robo_engineer_mining_light_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Helmet" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/robo_engineer_mining_light/robo_engineer_mining_light" + "model_player" "models/workshop/player/items/engineer/robo_engineer_mining_light/robo_engineer_mining_light.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30052" + { + "name" "The Byte'd Beak" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_medic_blighted_beak" + "item_description" "#TF_robo_medic_blighted_beak_Desc" + "equip_region" "face" + "item_type_name" "#TF_Wearable_Mask" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/robo_medic_blighted_beak/robo_medic_blighted_beak" + "model_player" "models/workshop/player/items/medic/robo_medic_blighted_beak/robo_medic_blighted_beak.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30053" + { + "name" "The Googol Glass Eyes" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_pyro_site_for_sore_eyes" + "item_description" "#TF_robo_pyro_site_for_sore_eyes_Desc" + "equip_region" "lenses" + "item_type_name" "#TF_Wearable_Eyes" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_site_for_sore_eyes/robo_pyro_site_for_sore_eyes" + "model_player" "models/workshop/player/items/pyro/robo_pyro_site_for_sore_eyes/robo_pyro_site_for_sore_eyes.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30054" + { + "name" "The Bunsen Brave" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_heavy_chief" + "item_description" "#TF_robo_heavy_chief_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/robo_heavy_chief/robo_heavy_chief" + "model_player" "models/workshop/player/items/heavy/robo_heavy_chief/robo_heavy_chief.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30055" + { + "name" "The Scrumpy Strongbox" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_demo_chest" + "item_description" "#TF_robo_demo_chest_Desc" + "equip_region" "back" + "item_type_name" "#TF_Wearable_Treasure" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/robo_demo_chest/robo_demo_chest" + "model_player" "models/workshop/player/items/demo/robo_demo_chest/robo_demo_chest.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30056" + { + "name" "The Dual-Core Devil Doll" + "prefab" "no_craft misc" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_robo_all_spybot" + "item_description" "#TF_robo_all_spybot_Desc" + "equip_regions" + { + "sniper_pocket" "1" + "engineer_pocket" "1" + } + "item_type_name" "#TF_Wearable_PocketBuddy" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/robo_all_spybot/robo_all_spybot" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/robo_all_spybot/robo_all_spybot_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "engineer" "1" + } + } + "30057" + { + "name" "The Bolted Birdcage" + "prefab" "no_craft hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_robo_pyro_birdcage" + "item_description" "#TF_robo_pyro_birdcage_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/robo_pyro_birdcage/robo_pyro_birdcage" + "model_player" "models/workshop/player/items/pyro/robo_pyro_birdcage/robo_pyro_birdcage.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30058" + { + "name" "The Crosslinker's Coil" + "prefab" "hat" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_gunpointcoilhat" + "item_description" "#TF_gunpointcoilhat_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/gunpointcoilhat/gunpointcoilhat" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gunpointcoilhat/gunpointcoilhat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_NoHat_Style" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_NoHat_NoHeadphones_Style" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "30059" + { + "name" "The Beastly Bonnet" + "prefab" "hat" + "first_sale_date" "2013/09/20" + "item_name" "#TF_tw2_cheetah_head" + "item_description" "#TF_tw2_cheetah_head_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/scout/tw2_cheetah_head/tw2_cheetah_head" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop_partner/player/items/scout/tw2_cheetah_head/tw2_cheetah_head.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30060" + { + "name" "The Cheet Sheet" + "prefab" "misc" + "first_sale_date" "2013/09/20" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_tw2_cheetah_robe" + "item_description" "#TF_tw2_cheetah_robe_Desc" + "equip_region" "feet" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/scout/tw2_cheetah_robe/tw2_cheetah_robe" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop_partner/player/items/scout/tw2_cheetah_robe/tw2_cheetah_robe.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30061" + { + "name" "The Tartantaloons" + "prefab" "misc" + "first_sale_date" "2013/09/20" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Pants" + "item_name" "#TF_tw2_demo_pants" + "item_description" "#TF_tw2_demo_pants_Desc" + "equip_region" "pants" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/demo/tw2_demo_pants/tw2_demo_pants" + "model_player" "models/workshop_partner/player/items/demo/tw2_demo_pants/tw2_demo_pants.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30062" + { + "name" "The Steel Sixpack" + "prefab" "misc" + "first_sale_date" "2013/09/20" + "capabilities" + { + "can_craft_count" "1" + } + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw2_greek_armor" + "item_description" "#TF_tw2_greek_armor_Desc" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/pyro/tw2_greek_armor/tw2_greek_armor" + "model_player" "models/workshop_partner/player/items/pyro/tw2_greek_armor/tw2_greek_armor.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30063" + { + "name" "The Centurion" + "prefab" "hat" + "first_sale_date" "2013/09/20" + "item_name" "#TF_tw2_greek_helm" + "item_description" "#TF_tw2_greek_helm_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop_partner/player/items/pyro/tw2_greek_helm/tw2_greek_helm" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop_partner/player/items/pyro/tw2_greek_helm/tw2_greek_helm.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30064" + { + "name" "The Tartan Shade" + "prefab" "hat" + "first_sale_date" "2013/09/20" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_tw2_demo_hood" + "item_description" "#TF_tw2_demo_hood_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/demo/tw2_demo_hood/tw2_demo_hood" + "model_player" "models/workshop_partner/player/items/demo/tw2_demo_hood/tw2_demo_hood.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30065" + { + "name" "The Hardy Laurel" + "prefab" "hat" + "first_sale_date" "2013/09/20" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_tw2_roman_wreath" + "item_description" "#TF_tw2_roman_wreath_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/all_class/tw2_roman_wreath/tw2_roman_wreath" + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/tw2_roman_wreath/tw2_roman_wreath_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "vision opt in flags" + { + "attribute_class" "vision_opt_in_flags" + "value" "4" + } + "always_transmit_so" + { + "attribute_class" "always_transmit_so" + "value" "1" + } + } + } + "30066" + { + "name" "The Brotherhood of Arms" + "prefab" "hat" + "first_sale_date" "2013/06/13" + "item_name" "#TF_brotherhood_2" + "item_description" "#TF_brotherhood_2_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/brotherhood_2/brotherhood_2" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brotherhood_2/brotherhood_2_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30067" + { + "name" "The Well-Rounded Rifleman" + "prefab" "hat" + "first_sale_date" "2013/06/13" + "item_name" "#TF_riflemans_rallycap" + "item_description" "#TF_riflemans_rallycap_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/riflemans_rallycap/riflemans_rallycap" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/riflemans_rallycap/riflemans_rallycap_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30068" + { + "name" "The Breakneck Baggies" + "prefab" "misc" + "first_sale_date" "2013/06/13" + "item_type_name" "#TF_Wearable_Pants" + "item_name" "#TF_jogon" + "item_description" "#TF_jogon_Desc" + "equip_region" "pants" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/jogon/jogon" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jogon/jogon_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30069" + { + "name" "The Powdered Practitioner" + "prefab" "hat" + "first_sale_date" "2013/06/13" + "item_name" "#TF_enlightened_mann" + "item_description" "#TF_enlightened_mann_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/enlightened_mann/enlightened_mann" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/enlightened_mann/enlightened_mann_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "medic" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/enlightened_mann/enlightened_mann_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_enlightened_mann_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/enlightened_mann_s2/enlightened_mann_s2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_enlightened_mann_style1" + } + } + } + } + "30070" + { + "name" "The Pocket Pyro" + "prefab" "misc" + "first_sale_date" "2013/06/13" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_pocket_protector" + "item_description" "#TF_pocket_protector_Desc" + "equip_region" "engineer_pocket" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/pocket_protector/pocket_protector" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/pocket_protector/pocket_protector.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30071" + { + "name" "The Cloud Crasher" + "prefab" "hat" + "first_sale_date" "2013/06/13" + "item_name" "#TF_cloud_crasher" + "item_description" "#TF_cloud_crasher_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/cloud_crasher/cloud_crasher" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/cloud_crasher/cloud_crasher.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30072" + { + "name" "The Pom-Pommed Provocateur" + "prefab" "hat" + "first_sale_date" "2013/06/13" + "item_name" "#TF_facestabber" + "item_description" "#TF_facestabber_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/facestabber/facestabber" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/facestabber/facestabber.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30073" + { + "name" "The Dark Age Defender" + "prefab" "misc" + "first_sale_date" "2013/06/13" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_mail_bomber" + "item_description" "#TF_mail_bomber_Desc" + "equip_region" "left_shoulder" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/mail_bomber/mail_bomber" + "model_player" "models/workshop/player/items/demo/mail_bomber/mail_bomber.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "30074" + { + "name" "The Tyurtlenek" + "prefab" "misc" + "first_sale_date" "2013/06/13" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_diehard_dynafil" + "item_description" "#TF_diehard_dynafil_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/diehard_dynafil/diehard_dynafil" + "model_player" "models/workshop/player/items/heavy/diehard_dynafil/diehard_dynafil.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30075" + { + "name" "The Mair Mask" + "prefab" "misc" + "first_sale_date" "2013/06/13" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hazeguard" + "item_description" "#TF_hazeguard_Desc" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + "head" "1" + } + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hazeguard/hazeguard" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hazeguard/hazeguard.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30076" + { + "name" "The Bigg Mann on Campus" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_scout_varsity" + "item_description" "#TF_jul13_scout_varsity_Desc" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/jul13_scout_varsity/jul13_scout_varsity" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/jul13_scout_varsity/jul13_scout_varsity.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30077" + { + "name" "The Cool Cat Cardigan" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_the_cunningmann" + "item_description" "#TF_jul13_the_cunningmann_Desc" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/jul13_the_cunningmann/jul13_the_cunningmann" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/jul13_the_cunningmann/jul13_the_cunningmann.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30078" + { + "name" "Greased Lightning" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_jul13_greased_lightning" + "item_description" "#TF_jul13_greased_lightning_Desc" + "equip_region" "hat" + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_jul13_greased_lightning_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_jul13_greased_lightning_Style1" + } + } + } + "image_inventory" "backpack/workshop/player/items/scout/jul13_greased_lightning/jul13_greased_lightning" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/jul13_greased_lightning/jul13_greased_lightning.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "30079" + { + "name" "The Red Army Robin" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_jul13_red_army_robin" + "item_description" "#TF_jul13_red_army_robin_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_red_army_robin/jul13_red_army_robin" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_red_army_robin/jul13_red_army_robin.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30080" + { + "name" "The Heavy-Weight Champ" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_ChampionshipBelt" + "item_name" "#TF_jul13_heavy_weight_belt" + "item_description" "#TF_jul13_heavy_weight_belt_Desc" + "equip_region" "heavy_hip" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_heavy_weight_belt/jul13_heavy_weight_belt" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_heavy_weight_belt/jul13_heavy_weight_belt.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30081" + { + "name" "The Tsarboosh" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_unfamiliar_tarboosh" + "item_description" "#TF_jul13_unfamiliar_tarboosh_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_unfamiliar_tarboosh/jul13_unfamiliar_tarboosh" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_unfamiliar_tarboosh/jul13_unfamiliar_tarboosh.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30082" + { + "name" "The Glasgow Great Helm" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_jul13_pillagers_barrel" + "item_description" "#TF_jul13_pillagers_barrel_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/jul13_pillagers_barrel/jul13_pillagers_barrel" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_pillagers_barrel/jul13_pillagers_barrel.mdl" + "propername" "1" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30083" + { + "name" "The Caffeine Cooler" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Cooler" + "item_name" "#TF_jul13_koolboy" + "item_description" "#TF_jul13_koolboy_Desc" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/jul13_koolboy/jul13_koolboy" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/jul13_koolboy/jul13_koolboy.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/jul13_koolboy/jul13_koolboy.mdl" + "name" "#TF_jul13_koolboy_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/scout/jul13_koolboy_2/jul13_koolboy_2.mdl" + "name" "#TF_jul13_koolboy_style2" + "skin_red" "0" + "skin_blu" "1" + } + "2" + { + "model_player" "models/workshop/player/items/scout/jul13_koolboy_3/jul13_koolboy_3.mdl" + "name" "#TF_jul13_koolboy_style3" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30084" + { + "name" "The Half-Pipe Hurdler" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Skateboard" + "item_name" "#TF_jul13_skater_boy" + "item_description" "#TF_jul13_skater_boy_Desc" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/jul13_skater_boy/jul13_skater_boy" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/jul13_skater_boy/jul13_skater_boy.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30085" + { + "name" "The Macho Mann" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_jul13_macho_mann_glasses" + "item_description" "#TF_jul13_macho_mann_glasses_Desc" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/all_class/jul13_macho_mann_glasses/jul13_macho_mann_glasses" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_macho_mann_glasses/jul13_macho_mann_glasses_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30086" + { + "name" "The Trash Toter" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Satchel" + "item_name" "#TF_jul13_scrap_reserve" + "item_description" "#TF_jul13_scrap_reserve_Desc" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/engineer/jul13_scrap_reserve/jul13_scrap_reserve" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/jul13_scrap_reserve/jul13_scrap_reserve.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30087" + { + "name" "The Dry Gulch Gulp" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Refreshment" + "item_name" "#TF_jul13_thirst_quencher" + "item_description" "#TF_jul13_thirst_quencher_Desc" + "equip_region" "engineer_pocket" + "image_inventory" "backpack/workshop/player/items/engineer/jul13_thirst_quencher/jul13_thirst_quencher" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/jul13_thirst_quencher/jul13_thirst_quencher.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30089" + { + "name" "El Muchacho" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Poncho" + "item_name" "#TF_jul13_el_muchacho" + "item_description" "#TF_jul13_el_muchacho_Desc" + "equip_regions" + { + "shirt" "1" + "grenades" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/jul13_el_muchacho/jul13_el_muchacho" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/jul13_el_muchacho/jul13_el_muchacho.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30090" + { + "name" "The Backpack Broiler" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Barbeque" + "item_name" "#TF_jul13_furious_fryup" + "item_description" "#TF_jul13_furious_fryup_Desc" + "equip_region" "back" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/jul13_furious_fryup/jul13_furious_fryup" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/jul13_furious_fryup/jul13_furious_fryup.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30091" + { + "name" "The Burning Bandana" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Bandana" + "item_name" "#TF_jul13_hot_rag" + "item_description" "#TF_jul13_hot_rag_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/jul13_hot_rag/jul13_hot_rag" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/jul13_hot_rag/jul13_hot_rag.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30092" + { + "name" "The Soot Suit" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_jul13_soot_suit" + "item_description" "#TF_jul13_soot_suit_Desc" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/jul13_soot_suit/jul13_soot_suit" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/jul13_soot_suit/jul13_soot_suit.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30093" + { + "name" "The Hive Minder" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_bee_keeper" + "item_description" "#TF_jul13_bee_keeper_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/jul13_bee_keeper/jul13_bee_keeper" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/jul13_bee_keeper/jul13_bee_keeper.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30094" + { + "name" "The Katyusha" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_katyusha" + "item_description" "#TF_jul13_katyusha_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_katyusha/jul13_katyusha" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_katyusha/jul13_katyusha.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30095" + { + "name" "Das Hazmattenhatten" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_SafetyApparatus" + "item_name" "#TF_jul13_positive_pressure_veil" + "item_description" "#TF_jul13_positive_pressure_veil_Desc" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/medic/jul13_positive_pressure_veil/jul13_positive_pressure_veil" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_positive_pressure_veil/jul13_positive_pressure_veil.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30096" + { + "name" "Das Feelinbeterbager" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Supplies" + "item_name" "#TF_jul13_emergency_supplies" + "item_description" "#TF_jul13_emergency_supplies_Desc" + "equip_region" "medic_hip" + "image_inventory" "backpack/workshop/player/items/medic/jul13_emergency_supplies/jul13_emergency_supplies" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_emergency_supplies/jul13_emergency_supplies.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30097" + { + "name" "Das Ubersternmann" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_secret_state_surgeon" + "item_description" "#TF_jul13_secret_state_surgeon_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/jul13_secret_state_surgeon/jul13_secret_state_surgeon" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_secret_state_surgeon/jul13_secret_state_surgeon.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30098" + { + "name" "Das Metalmeatencasen" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_jul13_heavy_defender" + "item_description" "#TF_jul13_heavy_defender_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/jul13_heavy_defender/jul13_heavy_defender" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_heavy_defender/jul13_heavy_defender.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30099" + { + "name" "The Pardner's Pompadour" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_jul13_king_hair" + "item_description" "#TF_jul13_king_hair_Desc" + "propername" "1" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "image_inventory" "backpack/workshop/player/items/engineer/jul13_king_hair/jul13_king_hair" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/jul13_king_hair/jul13_king_hair.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30100" + { + "name" "The Birdman of Australiacatraz" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_bushmans_blazer" + "item_description" "#TF_jul13_bushmans_blazer_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/jul13_bushmans_blazer/jul13_bushmans_blazer" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/jul13_bushmans_blazer/jul13_bushmans_blazer.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30101" + { + "name" "The Cobber Chameleon" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_jul13_cameleon" + "item_description" "#TF_jul13_cameleon_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/sniper/jul13_cameleon/jul13_cameleon" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/jul13_cameleon/jul13_cameleon.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30103" + { + "name" "The Falconer" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Glove" + "item_name" "#TF_jul13_falconer_punch" + "item_description" "#TF_jul13_falconer_punch_Desc" + "equip_region" "sleeves" + "image_inventory" "backpack/workshop/player/items/sniper/jul13_falconer_punch/jul13_falconer_punch" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/jul13_falconer_punch/jul13_falconer_punch.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30104" + { + "name" "Graybanns" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_jul13_sweet_shades" + "item_description" "#TF_jul13_sweet_shades_Desc" + "equip_region" "glasses" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/jul13_sweet_shades/jul13_sweet_shades" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_sweet_shades/jul13_sweet_shades_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_sweet_shades/jul13_sweet_shades_%s.mdl" + } + "name" "#TF_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_sweet_shades_s1/jul13_sweet_shades_s1_%s.mdl" + } + "name" "#TF_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_sweet_shades_s2/jul13_sweet_shades_s2_%s.mdl" + } + "name" "#TF_style2" + } + } + } + } + "30105" + { + "name" "The Black Watch" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_blam_o_shanter" + "item_description" "#TF_jul13_blam_o_shanter_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/jul13_blam_o_shanter/jul13_blam_o_shanter" + "propername" "1" + "drop_type" "drop" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_blam_o_shanter/jul13_blam_o_shanter.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30106" + { + "name" "The Tartan Spartan" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_jul13_trojan_helmet" + "item_description" "#TF_jul13_trojan_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/jul13_trojan_helmet/jul13_trojan_helmet" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_trojan_helmet/jul13_trojan_helmet.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30107" + { + "name" "The Gaelic Golf Bag" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_GolfClubs" + "item_name" "#TF_jul13_scotsmans_golfbag" + "item_description" "#TF_jul13_scotsmans_golfbag_Desc" + "equip_region" "back" + "image_inventory" "backpack/workshop/player/items/demo/jul13_scotsmans_golfbag/jul13_scotsmans_golfbag" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_scotsmans_golfbag/jul13_scotsmans_golfbag.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30108" + { + "name" "The Borscht Belt" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Bandolier" + "item_name" "#TF_jul13_bagdolier" + "item_description" "#TF_jul13_bagdolier_Desc" + "equip_region" "heavy_bullets" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_bagdolier/jul13_bagdolier" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_bagdolier/jul13_bagdolier.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30109" + { + "name" "Das Naggenvatcher" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_bro_plate" + "item_description" "#TF_jul13_bro_plate_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/jul13_bro_plate/jul13_bro_plate" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_bro_plate/jul13_bro_plate.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30110" + { + "name" "The Whiskey Bib" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_PuffyShirt" + "item_name" "#TF_jul13_gallant_gael" + "item_description" "#TF_jul13_gallant_gael_Desc" + "equip_regions" + { + "shirt" "1" + "sleeves" "1" + } + "image_inventory" "backpack/workshop/player/items/demo/jul13_gallant_gael/jul13_gallant_gael" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_gallant_gael/jul13_gallant_gael.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30112" + { + "name" "The Stormin' Norman" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_jul13_stormn_normn" + "item_description" "#TF_jul13_stormn_normn_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/jul13_stormn_normn/jul13_stormn_normn" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_stormn_normn/jul13_stormn_normn.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30113" + { + "name" "The Flared Frontiersman" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_king_pants" + "item_type_name" "#TF_Wearable_Apparel" + "item_description" "#TF_jul13_king_pants_Desc" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/engineer/jul13_king_pants/jul13_king_pants" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/jul13_king_pants/jul13_king_pants.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30114" + { + "name" "The Valley Forge" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_the_presidential" + "item_description" "#TF_jul13_the_presidential_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/jul13_the_presidential/jul13_the_presidential" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_the_presidential/jul13_the_presidential.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30115" + { + "name" "The Compatriot" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_jul13_soldier_eagle" + "item_description" "#TF_jul13_soldier_eagle_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_soldier_eagle/jul13_soldier_eagle" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_soldier_eagle/jul13_soldier_eagle.mdl" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30116" + { + "name" "The Caribbean Conqueror" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_the_caribbean_conqueror" + "item_description" "#TF_jul13_the_caribbean_conqueror_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/jul13_the_caribbean_conqueror/jul13_the_caribbean_conqueror" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_the_caribbean_conqueror/jul13_the_caribbean_conqueror.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30117" + { + "name" "The Colonial Clogs" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_jul13_colonial_clogs" + "item_description" "#TF_jul13_colonial_clogs_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_colonial_clogs/jul13_colonial_clogs" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_colonial_clogs/jul13_colonial_clogs.mdl" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30118" + { + "name" "The Whirly Warrior" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_jul13_helicopter_helmet" + "item_description" "#TF_jul13_helicopter_helmet_Desc" + "equip_region" "whole_head" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_helicopter_helmet/jul13_helicopter_helmet" + "propername" "1" + "drop_type" "drop" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_helicopter_helmet/jul13_helicopter_helmet.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30119" + { + "name" "The Federal Casemaker" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_soldier_fedora" + "item_description" "#TF_jul13_soldier_fedora_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/jul13_fedora/jul13_fedora" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_fedora/jul13_fedora_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30120" + { + "name" "The Rebel Rouser" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_ol_jack" + "item_description" "#TF_jul13_ol_jack_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/jul13_ol_jack/jul13_ol_jack" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_ol_jack/jul13_ol_jack.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30121" + { + "name" "Das Maddendoktor" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_jul13_madmans_mop" + "item_description" "#TF_jul13_madmans_mop_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/jul13_madmans_mop/jul13_madmans_mop" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_madmans_mop/jul13_madmans_mop.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30122" + { + "name" "The Bear Necessities" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_SpiritAnimal" + "item_name" "#TF_jul13_bear_necessitys" + "item_description" "#TF_jul13_bear_necessitys_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_bear_necessitys/jul13_bear_necessitys" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_bear_necessitys/jul13_bear_necessitys.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30123" + { + "name" "The Harmburg" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_harmburg" + "item_description" "#TF_jul13_harmburg_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/jul13_harmburg/jul13_harmburg" + "propername" "1" + "drop_type" "drop" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/jul13_harmburg/jul13_harmburg.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30124" + { + "name" "The Gaelic Garb" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_gaelic_garb" + "item_description" "#TF_jul13_gaelic_garb_Desc" + "equip_regions" + { + "shirt" "1" + "sleeves" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/jul13_gaelic_garb/jul13_gaelic_garb" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/jul13_gaelic_garb/jul13_gaelic_garb.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30125" + { + "name" "The Rogue's Brogues" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_jul13_rogues_brogues" + "item_description" "#TF_jul13_rogues_brogues_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/spy/jul13_rogues_brogues/jul13_rogues_brogues" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/jul13_rogues_brogues/jul13_rogues_brogues.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30126" + { + "name" "The Shogun's Shoulder Guard" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_jul13_shoguns_guard" + "item_description" "#TF_jul13_shoguns_guard_Desc" + "equip_region" "sleeves" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_shoguns_guard/jul13_shoguns_guard" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_shoguns_guard/jul13_shoguns_guard.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30127" + { + "name" "Das Gutenkutteharen" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_jul13_class_act" + "item_description" "#TF_jul13_class_act_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/jul13_class_act/jul13_class_act" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_class_act/jul13_class_act.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30128" + { + "name" "The Belgian Detective" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_double_clue" + "item_description" "#TF_jul13_double_clue_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/spy/jul13_double_clue/jul13_double_clue" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/jul13_double_clue/jul13_double_clue.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30129" + { + "name" "The Hornblower" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_jul13_generals_attire" + "item_description" "#TF_jul13_generals_attire_Desc" + "equip_region" "soldier_coat" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_generals_attire/jul13_generals_attire" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_generals_attire/jul13_generals_attire.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30130" + { + "name" "Lieutenant Bites" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_jul13_lt_bites" + "item_description" "#TF_jul13_lt_bites_Desc" + "equip_region" "soldier_pocket" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_lt_bites/jul13_lt_bites" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_lt_bites/jul13_lt_bites.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30131" + { + "name" "The Brawling Buccaneer" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_jul13_gangplank_garment" + "item_description" "#TF_jul13_gangplank_garment_Desc" + "equip_region" "soldier_coat" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_gangplank_garment/jul13_gangplank_garment" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_gangplank_garment/jul13_gangplank_garment.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30132" + { + "name" "The Blood Banker" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_blood_banker" + "item_description" "#TF_jul13_blood_banker_Desc" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/jul13_blood_banker/jul13_blood_banker" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/jul13_blood_banker/jul13_blood_banker.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30133" + { + "name" "The After Dark" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_classy_royale" + "item_description" "#TF_jul13_classy_royale_Desc" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/jul13_classy_royale/jul13_classy_royale" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/jul13_classy_royale/jul13_classy_royale.mdl" + "propername" "1" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30134" + { + "name" "The Delinquent's Down Vest" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_scout_vestjacket" + "item_description" "#TF_jul13_scout_vestjacket_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/jul13_scout_vestjacket/jul13_scout_vestjacket" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/jul13_scout_vestjacket/jul13_scout_vestjacket.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30135" + { + "name" "Wet Works" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_sniper_souwester" + "item_description" "#TF_jul13_sniper_souwester_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/jul13_sniper_souwester/jul13_sniper_souwester" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/jul13_sniper_souwester/jul13_sniper_souwester.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30136" + { + "name" "Baron von Havenaplane" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_name" "#TF_jul13_montys_menace" + "item_description" "#TF_jul13_montys_menace_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/jul13_montys_menace/jul13_montys_menace" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_montys_menace/jul13_montys_menace.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30137" + { + "name" "Das Fantzipantzen" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_jul13_uncivil_servant" + "item_description" "#TF_jul13_uncivil_servant_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/jul13_uncivil_servant/jul13_uncivil_servant" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/jul13_uncivil_servant/jul13_uncivil_servant.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30138" + { + "name" "The Bolshevik Biker" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_border_armor" + "item_description" "#TF_jul13_border_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_border_armor/jul13_border_armor" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_border_armor/jul13_border_armor.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30139" + { + "name" "The Pampered Pyro" + "prefab" "hat" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Towel" + "item_name" "#TF_jul13_pyro_towel" + "item_description" "#TF_jul13_pyro_towel_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/jul13_pyro_towel/jul13_pyro_towel" + "propername" "1" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/jul13_pyro_towel/jul13_pyro_towel.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30140" + { + "name" "The Virtual Viewfinder" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Headset" + "item_name" "#TF_jul13_se_headset" + "item_description" "#TF_jul13_se_headset_Desc" + "equip_region" "glasses" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/jul13_se_headset/jul13_se_headset" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jul13_se_headset/jul13_se_headset_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30141" + { + "name" "The Gabe Glasses" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_jul13_honchos_heavy_reader" + "item_description" "#TF_jul13_honchos_heavy_reader_Desc" + "equip_region" "glasses" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/jul13_honchos_heavy_reader/jul13_honchos_heavy_reader" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/jul13_honchos_heavy_reader/jul13_honchos_heavy_reader.mdl" + "propername" "1" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30142" + { + "name" "The Founding Father" + "prefab" "misc" + "first_sale_date" "2013/08/26" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_jul13_dandy_yankee" + "item_description" "#TF_jul13_dandy_yankee_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/soldier/jul13_dandy_yankee/jul13_dandy_yankee" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/jul13_dandy_yankee/jul13_dandy_yankee.mdl" + "propername" "1" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30143" + { + "name" "tw_demobot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_demobot_armor" + "item_description" "#TF_tw_demobot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/demo/tw_demobot_armor/tw_demobot_armor" + "model_player" "models/workshop/player/items/demo/tw_demobot_armor/tw_demobot_armor.mdl" + "used_by_classes" + { + "demoman" "1" + } + "vision_filter_flags" "4" + } + "30144" + { + "name" "tw_demobot_helmet" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_demobot_helmet" + "item_description" "#TF_tw_demobot_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/tw_demobot_helmet/tw_demobot_helmet" + "model_player" "models/workshop/player/items/demo/tw_demobot_helmet/tw_demobot_helmet.mdl" + "used_by_classes" + { + "demoman" "1" + } + "vision_filter_flags" "4" + } + "30145" + { + "name" "tw_engineerbot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_engineerbot_armor" + "item_description" "#TF_tw_engineerbot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/tw_engineerbot_armor/tw_engineerbot_armor" + "model_player" "models/workshop/player/items/engineer/tw_engineerbot_armor/tw_engineerbot_armor.mdl" + "used_by_classes" + { + "engineer" "1" + } + "vision_filter_flags" "4" + } + "30146" + { + "name" "tw_engineerbot_helmet" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_engineerbot_helmet" + "item_description" "#TF_tw_engineerbot_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/tw_engineerbot_helmet/tw_engineerbot_helmet" + "model_player" "models/workshop/player/items/engineer/tw_engineerbot_helmet/tw_engineerbot_helmet.mdl" + "used_by_classes" + { + "engineer" "1" + } + "vision_filter_flags" "4" + } + "30147" + { + "name" "tw_heavybot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_heavybot_armor" + "item_description" "#TF_tw_heavybot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/tw_heavybot_armor/tw_heavybot_armor" + "model_player" "models/workshop/player/items/heavy/tw_heavybot_armor/tw_heavybot_armor.mdl" + "used_by_classes" + { + "heavy" "1" + } + "vision_filter_flags" "4" + } + "30148" + { + "name" "tw_heavybot_helmet" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_heavybot_helmet" + "item_description" "#TF_tw_heavybot_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/tw_heavybot_helmet/tw_heavybot_helmet" + "model_player" "models/workshop/player/items/heavy/tw_heavybot_helmet/tw_heavybot_helmet.mdl" + "used_by_classes" + { + "heavy" "1" + } + "vision_filter_flags" "4" + } + "30149" + { + "name" "tw_medibot_chariot" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_medibot_chariot" + "item_description" "#TF_tw_medibot_chariot_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/medic/tw_medibot_chariot/tw_medibot_chariot" + "model_player" "models/workshop/player/items/medic/tw_medibot_chariot/tw_medibot_chariot.mdl" + "used_by_classes" + { + "medic" "1" + } + "vision_filter_flags" "4" + } + "30150" + { + "name" "tw_medibot_hat" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_medibot_hat" + "item_description" "#TF_tw_medibot_hat_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/tw_medibot_hat/tw_medibot_hat" + "model_player" "models/workshop/player/items/medic/tw_medibot_hat/tw_medibot_hat.mdl" + "used_by_classes" + { + "medic" "1" + } + "vision_filter_flags" "4" + } + "30151" + { + "name" "tw_pyrobot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_pyrobot_armor" + "item_description" "#TF_tw_pyrobot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/pyro/tw_pyrobot_armor/tw_pyrobot_armor" + "model_player" "models/workshop/player/items/pyro/tw_pyrobot_armor/tw_pyrobot_armor.mdl" + "used_by_classes" + { + "pyro" "1" + } + "vision_filter_flags" "4" + } + "30152" + { + "name" "tw_pyrobot_helmet" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_pyrobot_helmet" + "item_description" "#TF_tw_pyrobot_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/tw_pyrobot_helmet/tw_pyrobot_helmet" + "model_player" "models/workshop/player/items/pyro/tw_pyrobot_helmet/tw_pyrobot_helmet.mdl" + "used_by_classes" + { + "pyro" "1" + } + "vision_filter_flags" "4" + } + "30153" + { + "name" "tw_scoutbot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_scoutbot_armor" + "item_description" "#TF_tw_scoutbot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/tw_scoutbot_armor/tw_scoutbot_armor" + "model_player" "models/workshop/player/items/scout/tw_scoutbot_armor/tw_scoutbot_armor.mdl" + "used_by_classes" + { + "scout" "1" + } + "vision_filter_flags" "4" + } + "30154" + { + "name" "tw_scoutbot_hat" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_scoutbot_hat" + "item_description" "#TF_tw_scoutbot_hat_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/scout/tw_scoutbot_hat/tw_scoutbot_hat" + "model_player" "models/workshop/player/items/scout/tw_scoutbot_hat/tw_scoutbot_hat.mdl" + "used_by_classes" + { + "scout" "1" + } + "vision_filter_flags" "4" + } + "30155" + { + "name" "tw_sniperbot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_sniperbot_armor" + "item_description" "#TF_tw_sniperbot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/tw_sniperbot_armor/tw_sniperbot_armor" + "model_player" "models/workshop/player/items/sniper/tw_sniperbot_armor/tw_sniperbot_armor.mdl" + "used_by_classes" + { + "sniper" "1" + } + "vision_filter_flags" "4" + } + "30156" + { + "name" "tw_sniperbot_helmet" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_sniperbot_helmet" + "item_description" "#TF_tw_sniperbot_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/sniper/tw_sniperbot_helmet/tw_sniperbot_helmet" + "model_player" "models/workshop/player/items/sniper/tw_sniperbot_helmet/tw_sniperbot_helmet.mdl" + "used_by_classes" + { + "sniper" "1" + } + "vision_filter_flags" "4" + } + "30157" + { + "name" "tw_soldierbot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_soldierbot_armor" + "item_description" "#TF_tw_soldierbot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/soldier/tw_soldierbot_armor/tw_soldierbot_armor" + "model_player" "models/workshop/player/items/soldier/tw_soldierbot_armor/tw_soldierbot_armor.mdl" + "used_by_classes" + { + "soldier" "1" + } + "vision_filter_flags" "4" + } + "30158" + { + "name" "tw_soldierbot_helmet" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_soldierbot_helmet" + "item_description" "#TF_tw_soldierbot_helmet_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/soldier/tw_soldierbot_helmet/tw_soldierbot_helmet" + "model_player" "models/workshop/player/items/soldier/tw_soldierbot_helmet/tw_soldierbot_helmet.mdl" + "used_by_classes" + { + "soldier" "1" + } + "vision_filter_flags" "4" + } + "30159" + { + "name" "tw_spybot_armor" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_tw_spybot_armor" + "item_description" "#TF_tw_spybot_armor_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/tw_spybot_armor/tw_spybot_armor" + "model_player" "models/workshop/player/items/spy/tw_spybot_armor/tw_spybot_armor.mdl" + "used_by_classes" + { + "spy" "1" + } + "vision_filter_flags" "4" + } + "30160" + { + "name" "tw_spybot_hood" + "prefab" "no_craft hat" + "show_in_armory" "0" + "item_name" "#TF_tw_spybot_hood" + "item_description" "#TF_tw_spybot_hood_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/tw_spybot_hood/tw_spybot_hood" + "model_player" "models/workshop/player/items/spy/tw_spybot_hood/tw_spybot_hood.mdl" + "used_by_classes" + { + "spy" "1" + } + "vision_filter_flags" "4" + } + "30161" + { + "name" "tw_sentrybuster" + "prefab" "no_craft misc" + "show_in_armory" "0" + "item_name" "#TF_tw_sentrybuster" + "item_description" "#TF_tw_sentrybuster_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/demo/tw_sentrybuster/tw_sentrybuster" + "model_player" "models/workshop/player/items/demo/tw_sentrybuster/tw_sentrybuster.mdl" + "used_by_classes" + { + "demoman" "1" + } + "vision_filter_flags" "4" + } + "30162" + { + "name" "The Bone Dome" + "prefab" "hat" + "item_name" "#TF_fall2013_air_raider" + "item_description" "#TF_fall2013_air_raider_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/fall2013_air_raider/fall2013_air_raider" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/fall2013_air_raider/fall2013_air_raider.mdl" + "used_by_classes" + { + "pyro" "1" + } + "first_sale_date" "2013/10/09" + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/fall2013_air_raider/fall2013_air_raider.mdl" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/fall2013_air_raider_s2/fall2013_air_raider_s2.mdl" + "name" "#TF_style1" + } + } + } + } + "30163" + { + "name" "The Air Raider" + "prefab" "misc" + "item_name" "#TF_fall2013_fire_bird" + "item_description" "#TF_fall2013_fire_bird_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/fall2013_fire_bird/fall2013_fire_bird" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/fall2013_fire_bird/fall2013_fire_bird.mdl" + "used_by_classes" + { + "pyro" "1" + } + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Hat" + } + "30164" + { + "name" "The Viking Braider" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_fall2013_the_braided_pride" + "item_description" "#TF_fall2013_the_braided_pride_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_the_braided_pride/fall2013_the_braided_pride" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_braided_pride/fall2013_the_braided_pride_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "heavy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30165" + { + "name" "The Cuban Bristle Crisis" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_fall2013_the_cuban_coverup" + "item_description" "#TF_fall2013_the_cuban_coverup_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_the_cuban_coverup/fall2013_the_cuban_coverup" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_cuban_coverup/fall2013_the_cuban_coverup_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "heavy" "1" + "engineer" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30167" + { + "name" "The Beep Boy" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_ElectronicDevice" + "item_name" "#TF_fall2013_beep_boy" + "item_description" "#TF_fall2013_beep_boy_Desc" + "equip_region" "belt_misc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_beep_boy/fall2013_beep_boy" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_beep_boy/fall2013_beep_boy_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "pyro" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30168" + { + "name" "The Special Eyes" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Eyes" + "item_name" "#TF_fall2013_the_special_eyes" + "item_description" "#TF_fall2013_the_special_eyes_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_the_special_eyes/fall2013_the_special_eyes" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_special_eyes/fall2013_the_special_eyes_%s.mdl" + } + "used_by_classes" + { + "pyro" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_special_eyes/fall2013_the_special_eyes_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_fall2013_the_special_eyes_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_special_eyes_style1/fall2013_the_special_eyes_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_fall2013_the_special_eyes_style2" + } + } + } + } + "30169" + { + "name" "Trickster's Turnout Gear" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_fall2013_the_insidious_incinerator" + "item_description" "#TF_fall2013_the_insidious_incinerator_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/pyro/fall2013_the_insidious_incinerator/fall2013_the_insidious_incinerator" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall2013_the_insidious_incinerator/fall2013_the_insidious_incinerator.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30170" + { + "name" "The Chronomancer" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_kyoto_rider" + "item_description" "#TF_fall2013_kyoto_rider_Desc" + "equip_region" "sniper_vest" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/fall2013_kyoto_rider/fall2013_kyoto_rider" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/fall2013_kyoto_rider/fall2013_kyoto_rider.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30171" + { + "name" "The Medical Mystery" + "prefab" "misc" + "item_name" "#TF_fall2013_aichi_investigator" + "item_description" "#TF_fall2013_aichi_investigator_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/fall2013_aichi_investigator/fall2013_aichi_investigator" + "model_player" "models/workshop/player/items/medic/fall2013_aichi_investigator/fall2013_aichi_investigator.mdl" + "used_by_classes" + { + "medic" "1" + } + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "capabilities" + { + "can_craft_count" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30172" + { + "name" "The Gold Digger" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_fall2013_the_gold_digger" + "item_description" "#TF_fall2013_the_gold_digger_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/fall2013_the_gold_digger/fall2013_the_gold_digger" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/fall2013_the_gold_digger/fall2013_the_gold_digger.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30173" + { + "name" "Brim-Full Of Bullets" + "prefab" "hat" + "first_sale_date" "2013/10/09" + "item_name" "#TF_fall2013_brimfull_of_bullets" + "item_description" "#TF_fall2013_brimfull_of_bullets_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/sniper/fall2013_brimfull_of_bullets/fall2013_brimfull_of_bullets" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/fall2013_brimfull_of_bullets/fall2013_brimfull_of_bullets.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/fall2013_brimfull_of_bullets/fall2013_brimfull_of_bullets.mdl" + "name" "#TF_fall2013_brimfull_of_bullets_style0" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/fall2013_brimfull_of_bullets_s2/fall2013_brimfull_of_bullets_s2.mdl" + "name" "#TF_fall2013_brimfull_of_bullets_style1" + } + "2" + { + "model_player" "models/workshop/player/items/sniper/fall2013_brimfull_of_bullets_s3/fall2013_brimfull_of_bullets_s3.mdl" + "name" "#TF_fall2013_brimfull_of_bullets_style2" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30175" + { + "name" "The Cotton Head" + "prefab" "hat" + "first_sale_date" "2013/10/09" + "item_name" "#TF_fall2013_the_cotton_head" + "item_description" "#TF_fall2013_the_cotton_head_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_the_cotton_head/fall2013_the_cotton_head" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_cotton_head/fall2013_the_cotton_head_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_cotton_head/fall2013_the_cotton_head_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_the_cotton_head_s2/fall2013_the_cotton_head_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30176" + { + "name" "Pop-eyes" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Eyes" + "item_name" "#TF_fall2013_popeyes" + "item_description" "#TF_fall2013_popeyes_Desc" + "equip_region" "lenses" + "image_inventory" "backpack/workshop/player/items/pyro/fall2013_popeyes/fall2013_popeyes" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/fall2013_popeyes/fall2013_popeyes.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30177" + { + "name" "Hong Kong Cone" + "prefab" "hat" + "first_sale_date" "2013/10/09" + "item_name" "#TF_fall2013_hong_kong_cone" + "item_description" "#TF_fall2013_hong_kong_cone_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_hong_kong_cone/fall2013_hong_kong_cone" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_hong_kong_cone/fall2013_hong_kong_cone_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30178" + { + "name" "Weight Room Warmer" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_weight_room_warmer" + "item_description" "#TF_fall2013_weight_room_warmer_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_weight_room_warmer/fall2013_weight_room_warmer" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_weight_room_warmer/fall2013_weight_room_warmer_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30179" + { + "name" "The Hurt Locher" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_eod_suit" + "item_description" "#TF_fall2013_eod_suit_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/fall2013_eod_suit/fall2013_eod_suit" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/fall2013_eod_suit/fall2013_eod_suit.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30180" + { + "name" "Pirate Bandana" + "prefab" "hat" + "first_sale_date" "2013/10/09" + "item_name" "#TF_fall2013_pirate_bandana" + "item_description" "#TF_fall2013_pirate_bandana_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/fall2013_pirate_bandana/fall2013_pirate_bandana" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/fall2013_pirate_bandana/fall2013_pirate_bandana.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30181" + { + "name" "Li'l Snaggletooth" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_fall2013_lil_snaggletooth" + "item_description" "#TF_fall2013_lil_snaggletooth_Desc" + "equip_region" "sniper_pocket" + "image_inventory" "backpack/workshop/player/items/sniper/fall2013_lil_snaggletooth/fall2013_lil_snaggletooth" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/fall2013_lil_snaggletooth/fall2013_lil_snaggletooth.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30182" + { + "name" "L'homme Burglerre" + "prefab" "hat" + "first_sale_date" "2013/10/09" + "item_name" "#TF_fall2013_superthief" + "item_description" "#TF_fall2013_superthief_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/fall2013_superthief/fall2013_superthief" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/fall2013_superthief/fall2013_superthief.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30183" + { + "name" "Escapist" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_escapist" + "item_description" "#TF_fall2013_escapist_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/fall2013_escapist/fall2013_escapist" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/fall2013_escapist/fall2013_escapist.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/fall2013_escapist/fall2013_escapist.mdl" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/spy/fall2013_escapist_s2/fall2013_escapist_s2.mdl" + "name" "#TF_style1" + } + } + } + } + "30185" + { + "name" "The Flapjack" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_neo_tokyo_runner" + "item_description" "#TF_fall2013_neo_tokyo_runner_Desc" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/fall2013_neo_tokyo_runner/fall2013_neo_tokyo_runner" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/fall2013_neo_tokyo_runner/fall2013_neo_tokyo_runner.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30186" + { + "name" "A Brush with Death" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_fall2013_medic_wc_beard" + "item_description" "#TF_fall2013_medic_wc_beard_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/medic/fall2013_medic_wc_beard/fall2013_medic_wc_beard" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/fall2013_medic_wc_beard/fall2013_medic_wc_beard.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30187" + { + "name" "The Slick Cut" + "prefab" "hat" + "first_sale_date" "2013/10/09" + "item_name" "#TF_fall2013_medic_wc_hair" + "item_description" "#TF_fall2013_medic_wc_hair_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/fall2013_medic_wc_hair/fall2013_medic_wc_hair" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/fall2013_medic_wc_hair/fall2013_medic_wc_hair.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30189" + { + "name" "The Frenchman's Formals" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_spy_fancycoat" + "item_description" "#TF_fall2013_spy_fancycoat_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall2013_fancycoat/fall2013_fancycoat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_fancycoat/fall2013_fancycoat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_fancycoat/fall2013_fancycoat_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_fall2013_spy_fancycoat_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall2013_fancycoat_s2/fall2013_fancycoat_s2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_fall2013_spy_fancycoat_style2" + } + } + } + } + "30190" + { + "name" "The Ward" + "prefab" "misc" + "first_sale_date" "2013/10/09" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_fall2013_medic_wc_coat" + "item_description" "#TF_fall2013_medic_wc_coat_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/fall2013_medic_wc_coat/fall2013_medic_wc_coat" + "capabilities" + { + "paintable" "1" + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/fall2013_medic_wc_coat/fall2013_medic_wc_coat.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30191" + { + "name" "The Beast From Below" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_beast_from_below" + "item_description" "#TF_hw2013_beast_from_below_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_beast_from_below/hw2013_beast_from_below" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_beast_from_below/hw2013_beast_from_below.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30192" + { + "name" "Hard-Headed Hardware" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_hardheaded_hardware" + "item_description" "#TF_hw2013_hardheaded_hardware_Desc" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_hardheaded_hardware/hw2013_hardheaded_hardware" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_hardheaded_hardware/hw2013_hardheaded_hardware.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30193" + { + "name" "Cap'n Calamari" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_octo_face" + "item_description" "#TF_hw2013_octo_face_Desc" + "equip_regions" + { + "face" "1" + "beard" "1" + } + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/hw2013_octo_face/hw2013_octo_face" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hw2013_octo_face/hw2013_octo_face.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30194" + { + "name" "The Spectralnaut" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_hw2013_space_oddity" + "item_description" "#TF_hw2013_space_oddity_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_space_oddity/hw2013_space_oddity" + "model_player" "models/workshop/player/items/pyro/hw2013_space_oddity/hw2013_space_oddity.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30195" + { + "name" "Ethereal Hood" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_ethereal_hood" + "item_description" "#TF_hw2013_ethereal_hood_Desc" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_ethereal_hood/hw2013_ethereal_hood" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "demoman" "models/workshop/player/items/all_class/hw2013_ethereal_hood/hw2013_ethereal_hood_demo.mdl" + "spy" "models/workshop/player/items/all_class/hw2013_ethereal_hood/hw2013_ethereal_hood_spy.mdl" + } + "used_by_classes" + { + "demoman" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30196" + { + "name" "The Maniac's Manacles" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Gloves" + "item_name" "#TF_hw2013_maniacs_manacles" + "item_description" "#TF_hw2013_maniacs_manacles_Desc" + "equip_region" "pyro_spikes" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_maniacs_manacles/hw2013_maniacs_manacles" + "model_player" "models/workshop/player/items/pyro/hw2013_maniacs_manacles/hw2013_maniacs_manacles.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30197" + { + "name" "The Second Opinion" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_second_opinion" + "item_description" "#TF_hw2013_second_opinion_Desc" + "equip_region" "head_skin" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/hw2013_second_opinion/hw2013_second_opinion" + "model_player" "models/workshop/player/items/medic/hw2013_second_opinion/hw2013_second_opinion.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsMedicDoubleFace" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30198" + { + "name" "The Pocket Horsemann" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_hw2013_allclass_horseman" + "item_description" "#TF_hw2013_allclass_horseman_Desc" + "equip_region" "belt_misc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_allclass_horseman/hw2013_allclass_horseman" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_allclass_horseman/hw2013_allclass_horseman_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30199" + { + "name" "The Last Bite" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Coffin" + "item_name" "#TF_hw2013_last_bite" + "item_description" "#TF_hw2013_last_bite_Desc" + "equip_region" "heavy_belt_back" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/hw2013_last_bite/hw2013_last_bite" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hw2013_last_bite/hw2013_last_bite.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30200" + { + "name" "The Baphomet Trotters" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Hooves" + "item_name" "#TF_hw2013_scout_demo_faunlegs" + "item_description" "#TF_hw2013_scout_demo_faunlegs_Desc" + "equip_region" "feet" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_scout_demo_faunlegs/hw2013_scout_demo_faunlegs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_scout_demo_faunlegs/hw2013_scout_demo_faunlegs_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + } + } + "30203" + { + "name" "Burny's Boney Bonnet" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_dragon_hood" + "item_description" "#TF_hw2013_dragon_hood_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_dragon_hood/hw2013_dragon_hood" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_dragon_hood/hw2013_dragon_hood.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30204" + { + "name" "The Crispy Golden Locks" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_golden_crisp_locks" + "item_description" "#TF_hw2013_golden_crisp_locks_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_golden_crisp_locks/hw2013_golden_crisp_locks" + "model_player" "models/workshop/player/items/pyro/hw2013_golden_crisp_locks/hw2013_golden_crisp_locks.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30205" + { + "name" "The Scorched Skirt" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_scorched_skirt" + "item_description" "#TF_hw2013_scorched_skirt_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_scorched_skirt/hw2013_scorched_skirt" + "model_player" "models/workshop/player/items/pyro/hw2013_scorched_skirt/hw2013_scorched_skirt.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30206" + { + "name" "The Accursed Apparition" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_wandering_soul" + "item_description" "#TF_hw2013_wandering_soul_Desc" + "equip_region" "disconnected_floating_item" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_wandering_soul/hw2013_wandering_soul" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_wandering_soul/hw2013_wandering_soul_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30207" + { + "name" "The Hound's Hood" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_horrifying_hound_hood" + "item_description" "#TF_hw2013_horrifying_hound_hood_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + "beard" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_horrifying_hound_hood/hw2013_horrifying_hound_hood" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hw2013_horrifying_hound_hood/hw2013_horrifying_hound_hood.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30208" + { + "name" "The Terrier Trousers" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_terrifying_terrier_trousers" + "item_description" "#TF_hw2013_terrifying_terrier_trousers_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_terrifying_terrier_trousers/hw2013_terrifying_terrier_trousers" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hw2013_terrifying_terrier_trousers/hw2013_terrifying_terrier_trousers.mdl" + "used_by_classes" + { + "scout" "1" + } + "equip_regions" + { + "scout_pants" "1" + "feet" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30211" + { + "name" "The Horrific Head of Hare" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_bunny_mann" + "item_description" "#TF_hw2013_bunny_mann_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "whole_head" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_bunny_mann/hw2013_bunny_mann" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hw2013_bunny_mann/hw2013_bunny_mann.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30212" + { + "name" "The Snaggletoothed Stetson" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_leather_face" + "item_description" "#TF_hw2013_leather_face_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_leather_face/hw2013_leather_face" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_leather_face/hw2013_leather_face_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "pyro" "1" + "engineer" "1" + } + "capabilities" + { + "paintable" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30213" + { + "name" "Up Pyroscopes" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_EyeStalks" + "item_name" "#TF_hw2013_per_eye_scopes" + "item_description" "#TF_hw2013_per_eye_scopes_Desc" + "equip_region" "glasses" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_per_eye_scopes/hw2013_per_eye_scopes" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_per_eye_scopes/hw2013_per_eye_scopes.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30214" + { + "name" "The One-Way Ticket" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_stiff_buddy" + "item_description" "#TF_hw2013_stiff_buddy_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_stiff_buddy/hw2013_stiff_buddy" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_stiff_buddy/hw2013_stiff_buddy_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30215" + { + "name" "The Birdie Bonnet" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_tricky_chicken" + "item_description" "#TF_hw2013_tricky_chicken_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_tricky_chicken/hw2013_tricky_chicken" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_tricky_chicken/hw2013_tricky_chicken_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30216" + { + "name" "The External Organ" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_hw2013_dark_orchestra" + "item_description" "#TF_hw2013_dark_orchestra_Desc" + "equip_region" "back" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_dark_orchestra/hw2013_dark_orchestra" + "model_player" "models/workshop/player/items/pyro/hw2013_dark_orchestra/hw2013_dark_orchestra.mdl" + "used_by_classes" + { + "pyro" "1" + } + "capabilities" + { + "paintable" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30217" + { + "name" "Ivan The Inedible" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_ivan_the_inedible" + "item_description" "#TF_hw2013_ivan_the_inedible_Desc" + "equip_region" "disconnected_floating_item" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/hw2013_ivan_the_inedible/hw2013_ivan_the_inedible" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hw2013_ivan_the_inedible/hw2013_ivan_the_inedible.mdl" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30218" + { + "name" "The Rugged Respirator" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_rugged_respirator" + "item_description" "#TF_hw2013_rugged_respirator_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_rugged_respirator/hw2013_rugged_respirator" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_rugged_respirator/hw2013_rugged_respirator.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30219" + { + "name" "The Squid's Lid" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_blackguards_bicorn" + "item_description" "#TF_hw2013_blackguards_bicorn_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/hw2013_blackguards_bicorn/hw2013_blackguards_bicorn" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hw2013_blackguards_bicorn/hw2013_blackguards_bicorn.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30220" + { + "name" "The Hollowhead" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_hollowhead" + "item_description" "#TF_hw2013_hollowhead_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_hollowhead/hw2013_hollowhead" + "model_player" "models/workshop/player/items/pyro/hw2013_hollowhead/hw2013_hollowhead.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30221" + { + "name" "Grub Grenades" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_combat_maggots" + "item_description" "#TF_hw2013_combat_maggots_Desc" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_combat_maggots/hw2013_combat_maggots" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hw2013_combat_maggots/hw2013_combat_maggots.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30222" + { + "name" "The Gothic Guise" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_gothic_guise" + "item_description" "#TF_hw2013_gothic_guise_Desc" + "equip_regions" + { + "whole_head" "1" + "pyro_head_replacement" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_gothic_guise/hw2013_gothic_guise" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_gothic_guise/hw2013_gothic_guise.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30223" + { + "name" "The Grease Monkey" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_grease_monkey" + "item_description" "#TF_hw2013_grease_monkey_Desc" + "equip_region" "face" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hw2013_grease_monkey/hw2013_grease_monkey" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hw2013_grease_monkey/hw2013_grease_monkey.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30224" + { + "name" "The Alternative Medicine Mann" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_witching_ward" + "item_description" "#TF_hw2013_witching_ward_Desc" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/medic/hw2013_witching_ward/hw2013_witching_ward" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hw2013_witching_ward/hw2013_witching_ward.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_wood_pole_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30225" + { + "name" "The Cauterizer's Caudal Appendage" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_dragonbutt" + "item_description" "#TF_hw2013_dragonbutt_Desc" + "equip_region" "pyro_tail" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_dragonbutt/hw2013_dragonbutt" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_dragonbutt/hw2013_dragonbutt.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30226" + { + "name" "Polly Putrid" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_UndeadPet" + "item_name" "#TF_hw2013_zombie_parrot" + "item_description" "#TF_hw2013_zombie_parrot_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/demo/hw2013_zombie_parrot/hw2013_zombie_parrot" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hw2013_zombie_parrot/hw2013_zombie_parrot.mdl" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30227" + { + "name" "The Faux Manchu" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_hw2013_faux_manchu" + "item_description" "#TF_hw2013_faux_manchu_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_faux_manchu/hw2013_faux_manchu" + "model_player" "models/workshop/player/items/soldier/hw2013_faux_manchu/hw2013_faux_manchu.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30228" + { + "name" "The Hidden Dragon" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_hidden_dragon" + "item_description" "#TF_hw2013_hidden_dragon_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_hidden_dragon/hw2013_hidden_dragon" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hw2013_hidden_dragon/hw2013_hidden_dragon.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30229" + { + "name" "The Lo-Grav Loafers" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_moon_boots" + "item_description" "#TF_hw2013_moon_boots_Desc" + "equip_region" "feet" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/hw2013_moon_boots/hw2013_moon_boots" + "model_player" "models/workshop/player/items/medic/hw2013_moon_boots/hw2013_moon_boots.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "30230" + { + "name" "The Surgeon's Space Suit" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_spacemans_suit" + "item_description" "#TF_hw2013_spacemans_suit_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/hw2013_spacemans_suit/hw2013_spacemans_suit" + "model_player" "models/workshop/player/items/medic/hw2013_spacemans_suit/hw2013_spacemans_suit.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30231" + { + "name" "The Face Plante" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_boston_bandy_mask" + "item_description" "#TF_hw2013_boston_bandy_mask_Desc" + "equip_region" "face" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_boston_bandy_mask/hw2013_boston_bandy_mask" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hw2013_boston_bandy_mask/hw2013_boston_bandy_mask.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30232" + { + "name" "Das Blutliebhaber" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_das_blutliebhaber" + "item_description" "#TF_hw2013_das_blutliebhaber_Desc" + "equip_region" "glasses" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/medic/hw2013_das_blutliebhaber/hw2013_das_blutliebhaber" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hw2013_das_blutliebhaber/hw2013_das_blutliebhaber.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30233" + { + "name" "The Trepanabotomizer" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_quacks_cureall" + "item_description" "#TF_hw2013_quacks_cureall_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/medic/hw2013_quacks_cureall/hw2013_quacks_cureall" + "model_player" "models/workshop/player/items/medic/hw2013_quacks_cureall/hw2013_quacks_cureall.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30234" + { + "name" "The Sackcloth Spook" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_burlap_buddy" + "item_description" "#TF_hw2013_burlap_buddy_Desc" + "equip_region" "disconnected_floating_item" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_burlap_buddy/hw2013_burlap_buddy" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_burlap_buddy/hw2013_burlap_buddy_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "capabilities" + { + "paintable" "1" + } + } + "30235" + { + "name" "The Mucous Membrain" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_mucus_membrane" + "item_description" "#TF_hw2013_mucus_membrane_Desc" + "equip_region" + { + "hat" "1" + "pyro_head_replacement" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_mucus_membrane/hw2013_mucus_membrane" + "model_player" "models/workshop/player/items/pyro/hw2013_mucus_membrane/hw2013_mucus_membrane.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30236" + { + "name" "Pin Pals" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_volatile_voodoo" + "item_description" "#TF_hw2013_volatile_voodoo_Desc" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_volatile_voodoo/hw2013_volatile_voodoo" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_volatile_voodoo/hw2013_volatile_voodoo_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30237" + { + "name" "Medimedes" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_BirdHead" + "item_name" "#TF_hw2013_medicmedes" + "item_description" "#TF_hw2013_medicmedes_Desc" + "equip_region" "whole_head" + "image_inventory" "backpack/workshop/player/items/medic/hw2013_medicmedes/hw2013_medicmedes" + "model_player" "models/workshop/player/items/medic/hw2013_medicmedes/hw2013_medicmedes.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsMedicBirdHead" + } + } + } + "30238" + { + "name" "The Chicken Kiev" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_BirdHead" + "item_name" "#TF_hw2013_heavy_robin" + "item_description" "#TF_hw2013_heavy_robin_Desc" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/hw2013_heavy_robin/hw2013_heavy_robin" + "model_player" "models/workshop/player/items/heavy/hw2013_heavy_robin/hw2013_heavy_robin.mdl" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsHeavyBirdHead" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30239" + { + "name" "The Freedom Feathers" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_BirdHead" + "item_name" "#TF_hw2013_feathered_freedom" + "item_description" "#TF_hw2013_feathered_freedom_Desc" + "equip_region" "whole_head" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_feathered_freedom/hw2013_feathered_freedom" + "model_player" "models/workshop/player/items/soldier/hw2013_feathered_freedom/hw2013_feathered_freedom.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsSoldierBirdHead" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30240" + { + "name" "The Headtaker's Hood" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_demo_executioner_hood" + "item_description" "#TF_hw2013_demo_executioner_hood_Desc" + "equip_region" "whole_head" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/hw2013_demo_executioner_hood/hw2013_demo_executioner_hood" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hw2013_demo_executioner_hood/hw2013_demo_executioner_hood.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "30241" + { + "name" "The Transylvania Top" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_demon_fro" + "item_description" "#TF_hw2013_demon_fro_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/hw2013_demon_fro/hw2013_demon_fro" + "model_player" "models/workshop/player/items/demo/hw2013_demon_fro/hw2013_demon_fro.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30242" + { + "name" "The Candleer" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_kindlin_candles" + "item_description" "#TF_hw2013_kindlin_candles_Desc" + "equip_region" "grenades" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_kindlin_candles/hw2013_kindlin_candles" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_kindlin_candles/hw2013_kindlin_candles_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30243" + { + "name" "The Horsemann's Hand-Me-Down" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Cape" + "item_name" "#TF_hw2013_demo_cape" + "item_description" "#TF_hw2013_demo_cape_Desc" + "equip_region" "back" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/hw2013_demo_cape/hw2013_demo_cape" + "model_player" "models/workshop/player/items/demo/hw2013_demo_cape/hw2013_demo_cape.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30245" + { + "name" "Bozo's Bouffant" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_the_haha_hairdo" + "item_description" "#TF_hw2013_the_haha_hairdo_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_the_haha_hairdo/hw2013_the_haha_hairdo" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_the_haha_hairdo/hw2013_the_haha_hairdo.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30247" + { + "name" "Faun Feet" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Hooves" + "item_name" "#TF_hw2013_the_hell_runner" + "item_description" "#TF_hw2013_the_hell_runner_Desc" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_the_hell_runner/hw2013_the_hell_runner" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hw2013_the_hell_runner/hw2013_the_hell_runner.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "30248" + { + "name" "The Halloweiner" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_halloweiner" + "item_description" "#TF_hw2013_halloweiner_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_halloweiner/hw2013_halloweiner" + "model_player" "models/workshop/player/items/scout/hw2013_halloweiner/hw2013_halloweiner.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30249" + { + "name" "The Lordly Lapels" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_the_ghoulic_extension" + "item_description" "#TF_hw2013_the_ghoulic_extension_Desc" + "equip_region" "demoman_collar" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/hw2013_the_ghoulic_extension/hw2013_the_ghoulic_extension" + "model_player" "models/workshop/player/items/demo/hw2013_the_ghoulic_extension/hw2013_the_ghoulic_extension.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30251" + { + "name" "The Cadaver's Capper" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_soldier_jiangshi_hat" + "item_description" "#TF_hw2013_soldier_jiangshi_hat_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_soldier_jiangshi_hat/hw2013_soldier_jiangshi_hat" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hw2013_soldier_jiangshi_hat/hw2013_soldier_jiangshi_hat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30252" + { + "name" "Guano" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_the_fire_bat_v2" + "item_description" "#TF_hw2013_the_fire_bat_v2_Desc" + "equip_region" "disconnected_floating_item" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_fire_bat_v2/hw2013_the_fire_bat_v2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_fire_bat_v2/hw2013_the_fire_bat_v2_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "capabilities" + { + "paintable" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30253" + { + "name" "The Sprinting Cephalopod" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Tentacles" + "item_name" "#TF_hw2013_running_octopus" + "item_description" "#TF_hw2013_running_octopus_Desc" + "equip_region" "feet" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hw2013_running_octopus/hw2013_running_octopus" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hw2013_running_octopus/hw2013_running_octopus.mdl" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "override footstep sound set" + { + "attribute_class" "override_footstep_sound_set" + "value" "9" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30254" + { + "name" "Unidentified Following Object" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_intergalactic_intruder" + "item_description" "#TF_hw2013_intergalactic_intruder_Desc" + "equip_region" "disconnected_floating_item" + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_intergalactic_intruder/hw2013_intergalactic_intruder" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_intergalactic_intruder/hw2013_intergalactic_intruder_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30255" + { + "name" "The Beacon from Beyond" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_the_enlightening_lantern" + "item_description" "#TF_hw2013_the_enlightening_lantern_Desc" + "equip_region" "disconnected_floating_item" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "grenades" "1" + "headphones" "1" + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_enlightening_lantern/hw2013_the_enlightening_lantern" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_enlightening_lantern/hw2013_the_enlightening_lantern_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30256" + { + "name" "The Hyperbaric Bowler" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_brain__bowler" + "item_description" "#TF_hw2013_brain__bowler_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/hw2013_brain__bowler/hw2013_brain__bowler" + "model_player" "models/workshop/player/items/spy/hw2013_brain__bowler/hw2013_brain__bowler.mdl" + "used_by_classes" + { + "spy" "1" + } + "capabilities" + { + "paintable" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30257" + { + "name" "The Death Support Pack" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_tin_can" + "item_description" "#TF_hw2013_tin_can_Desc" + "equip_region" "grenades" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_tin_can/hw2013_tin_can" + "model_player" "models/workshop/player/items/pyro/hw2013_tin_can/hw2013_tin_can.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30258" + { + "name" "The Carious Chameleon" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_UndeadPet" + "item_name" "#TF_hw2013_zombie_chameleon" + "item_description" "#TF_hw2013_zombie_chameleon_Desc" + "equip_region" "left_shoulder" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/hw2013_zombie_chameleon/hw2013_zombie_chameleon" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hw2013_zombie_chameleon/hw2013_zombie_chameleon.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30259" + { + "name" "The Monster's Stompers" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_dragon_shoes" + "item_description" "#TF_hw2013_dragon_shoes_Desc" + "equip_region" "feet" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_dragon_shoes/hw2013_dragon_shoes" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_dragon_shoes/hw2013_dragon_shoes.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30260" + { + "name" "The Bountiful Bow" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_blood_banker" + "item_description" "#TF_hw2013_blood_banker_Desc" + "equip_region" "spy_coat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/hw2013_blood_banker/hw2013_blood_banker" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hw2013_blood_banker/hw2013_blood_banker.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30261" + { + "name" "The Candyman's Cap" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_harmburg" + "item_description" "#TF_hw2013_harmburg_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/hw2013_harmburg/hw2013_harmburg" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hw2013_harmburg/hw2013_harmburg.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30263" + { + "name" "The Vicar's Vestments" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_medic_undertaker_vest" + "item_description" "#TF_hw2013_medic_undertaker_vest_Desc" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/medic/hw2013_medic_undertaker_vest/hw2013_medic_undertaker_vest" + "model_player" "models/workshop/player/items/medic/hw2013_medic_undertaker_vest/hw2013_medic_undertaker_vest.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30264" + { + "name" "The Hardium Helm" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_rocket_ranger" + "item_description" "#TF_hw2013_rocket_ranger_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_rocket_ranger/hw2013_rocket_ranger" + "model_player" "models/workshop/player/items/soldier/hw2013_rocket_ranger/hw2013_rocket_ranger.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30265" + { + "name" "The Jupiter Jumpers" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_jupiter_jumpers" + "item_description" "#TF_hw2013_jupiter_jumpers_Desc" + "equip_region" "soldier_legs" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_jupiter_jumpers/hw2013_jupiter_jumpers" + "model_player" "models/workshop/player/items/soldier/hw2013_jupiter_jumpers/hw2013_jupiter_jumpers.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "30266" + { + "name" "The Space Bracers" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_galactic_gauntlets" + "item_description" "#TF_hw2013_galactic_gauntlets_Desc" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_galactic_gauntlets/hw2013_galactic_gauntlets" + "model_player" "models/workshop/player/items/soldier/hw2013_galactic_gauntlets/hw2013_galactic_gauntlets.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "30267" + { + "name" "The Handhunter" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_hw2013_handhunter" + "item_description" "#TF_hw2013_handhunter_Desc" + "equip_region" "back" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_handhunter/hw2013_handhunter" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_handhunter/hw2013_handhunter.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30268" + { + "name" "The Spellbinder's Bonnet" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_the_crit_wizard" + "item_description" "#TF_hw2013_the_crit_wizard_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_the_crit_wizard/hw2013_the_crit_wizard" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hw2013_the_crit_wizard/hw2013_the_crit_wizard.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsSoldierWizardHat" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30269" + { + "name" "The Macabre Mask" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_the_creeps_cowl" + "item_description" "#TF_hw2013_the_creeps_cowl_Desc" + "equip_regions" + { + "whole_head" "1" + "pyro_head_replacement" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_the_creeps_cowl/hw2013_the_creeps_cowl" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_the_creeps_cowl/hw2013_the_creeps_cowl.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30270" + { + "name" "The Shaman's Skull" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_shamans_skull" + "item_description" "#TF_hw2013_shamans_skull_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/hw2013_shamans_skull/hw2013_shamans_skull" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hw2013_shamans_skull/hw2013_shamans_skull.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30273" + { + "name" "The Vicious Visage" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_head_of_the_lake_monster" + "item_description" "#TF_hw2013_head_of_the_lake_monster_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_head_of_the_lake_monster/hw2013_head_of_the_lake_monster" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_head_of_the_lake_monster/hw2013_head_of_the_lake_monster.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30274" + { + "name" "The Tuque or Treat" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_pumpkin_top" + "item_description" "#TF_hw2013_pumpkin_top_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_pumpkin_top/hw2013_pumpkin_top" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_pumpkin_top/hw2013_pumpkin_top_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30275" + { + "name" "The Horned Honcho" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_hw2013_horned_honcho" + "item_description" "#TF_hw2013_horned_honcho_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/hw2013_horned_honcho/hw2013_horned_honcho" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hw2013_horned_honcho/hw2013_horned_honcho.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30276" + { + "name" "Lieutenant Bites the Dust" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_UndeadPet" + "item_name" "#TF_hw2013_zombites" + "item_description" "#TF_hw2013_zombites_Desc" + "equip_region" "soldier_pocket" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_zombites/hw2013_zombites" + "model_player" "models/workshop/player/items/soldier/hw2013_zombites/hw2013_zombites.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30277" + { + "name" "The Grisly Gumbo" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_hw2013_gristly_gumbo_pot" + "item_description" "#TF_hw2013_gristly_gumbo_pot_Desc" + "equip_region" "back" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_gristly_gumbo_pot/hw2013_gristly_gumbo_pot" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_gristly_gumbo_pot/hw2013_gristly_gumbo_pot.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30278" + { + "name" "The Dark Helm" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_the_dark_helm" + "item_description" "#TF_hw2013_the_dark_helm_Desc" + "equip_region" "whole_head" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_dark_helm/hw2013_the_dark_helm" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_dark_helm/hw2013_the_dark_helm_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30279" + { + "name" "Archimedes the Undying" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_UndeadPet" + "item_name" "#TF_hw2013_zombie_archimedes" + "item_description" "#TF_hw2013_zombie_archimedes_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/medic/hw2013_zombie_archimedes/hw2013_zombie_archimedes" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hw2013_zombie_archimedes/hw2013_zombie_archimedes.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsMedicZombieBird" + } + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30280" + { + "name" "The Monstrous Mandible" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_orcish_outburst" + "item_description" "#TF_hw2013_orcish_outburst_Desc" + "equip_regions" + { + "head_skin" "1" + "beard" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/hw2013_orcish_outburst/hw2013_orcish_outburst" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hw2013_orcish_outburst/hw2013_orcish_outburst.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30281" + { + "name" "The Shaolin Sash" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_shaolin_sash" + "item_description" "#TF_hw2013_shaolin_sash_Desc" + "equip_region" "soldier_pocket" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_shaolin_sash/hw2013_shaolin_sash" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hw2013_shaolin_sash/hw2013_shaolin_sash.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30282" + { + "name" "The Mann-Bird of Aberdeen" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_BirdHead" + "item_name" "#TF_hw2013_manbird_of_aberdeen" + "item_description" "#TF_hw2013_manbird_of_aberdeen_Desc" + "equip_region" "whole_head" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/hw2013_manbird_of_aberdeen/hw2013_manbird_of_aberdeen" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hw2013_manbird_of_aberdeen/hw2013_manbird_of_aberdeen.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30283" + { + "name" "The Foul Cowl" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_foul_cowl" + "item_description" "#TF_hw2013_foul_cowl_Desc" + "equip_region" "back" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/hw2013_foul_cowl/hw2013_foul_cowl" + "model_player" "models/workshop/player/items/spy/hw2013_foul_cowl/hw2013_foul_cowl.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30284" + { + "name" "Sir Shootsalot" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_BirdHead" + "item_name" "#TF_hw2013_sir_shootsalot" + "item_description" "#TF_hw2013_sir_shootsalot_Desc" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/hw2013_sir_shootsalot/hw2013_sir_shootsalot" + "model_player" "models/workshop/player/items/sniper/hw2013_sir_shootsalot/hw2013_sir_shootsalot.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsSniperBirdHead" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30285" + { + "name" "The Corpsemopolitan" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_corpsemopolitan" + "item_description" "#TF_hw2013_corpsemopolitan_Desc" + "equip_regions" + { + "hat" "1" + "pyro_head_replacement" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_corpsemopolitan/hw2013_corpsemopolitan" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_corpsemopolitan/hw2013_corpsemopolitan.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30286" + { + "name" "The Glob" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_the_glob" + "item_description" "#TF_hw2013_the_glob_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_the_glob/hw2013_the_glob" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_the_glob/hw2013_the_glob.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30287" + { + "name" "The Hallowed Headcase" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_the_halloween_headcase" + "item_description" "#TF_hw2013_the_halloween_headcase_Desc" + "equip_region" + { + "hat" "1" + "face" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/hw2013_the_halloween_headcase/hw2013_the_halloween_headcase" + "model_player" "models/workshop/player/items/sniper/hw2013_the_halloween_headcase/hw2013_the_halloween_headcase.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "30288" + { + "name" "Carrion Companion" + "prefab" "halloween2013 misc" + "item_name" "#TF_hw2013_carrion_cohort" + "item_description" "#TF_hw2013_carrion_cohort_Desc" + "equip_region" "left_shoulder" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_carrion_cohort/hw2013_carrion_cohort" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_carrion_cohort/hw2013_carrion_cohort.mdl" + "used_by_classes" + { + "pyro" "1" + } + "item_type_name" "#TF_Wearable_UndeadPet" + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30289" + { + "name" "Quoth" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "item_name" "#TF_hw2013_the_caws_of_death" + "item_description" "#TF_hw2013_the_caws_of_death_Desc" + "equip_region" "disconnected_floating_item" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_caws_of_death/hw2013_the_caws_of_death" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_caws_of_death/hw2013_the_caws_of_death_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "capabilities" + { + "paintable" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30290" + { + "name" "PY-40 Incinibot" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_py40_automaton" + "item_description" "#TF_hw2013_py40_automaton_Desc" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_py40_automaton/hw2013_py40_automaton" + "model_player" "models/workshop/player/items/pyro/hw2013_py40_automaton/hw2013_py40_automaton.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30292" + { + "name" "The Parasight" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_the_parasight" + "item_description" "#TF_hw2013_the_parasight_Desc" + "equip_region" "face" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/hw2013_the_parasight/hw2013_the_parasight" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hw2013_the_parasight/hw2013_the_parasight.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30293" + { + "name" "Teutonkahmun" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_teutonkahmun" + "item_description" "#TF_hw2013_teutonkahmun_Desc" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "image_inventory" "backpack/workshop/player/items/medic/hw2013_teutonkahmun/hw2013_teutonkahmun" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hw2013_teutonkahmun/hw2013_teutonkahmun.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30294" + { + "name" "The Larval Lid" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_mr_maggot" + "item_description" "#TF_hw2013_mr_maggot_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/hw2013_mr_maggot/hw2013_mr_maggot" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hw2013_mr_maggot/hw2013_mr_maggot.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsSoldierMaggotHat" + } + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30295" + { + "name" "The Manneater" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_the_manneater" + "item_description" "#TF_hw2013_the_manneater_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_manneater/hw2013_the_manneater" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_manneater/hw2013_the_manneater_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30296" + { + "name" "The Creature From The Heap" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_hw2013_the_creature_from_the_heap" + "item_description" "#TF_hw2013_the_creature_from_the_heap_Desc" + "equip_region" "back" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_the_creature_from_the_heap/hw2013_the_creature_from_the_heap" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_the_creature_from_the_heap/hw2013_the_creature_from_the_heap.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30297" + { + "name" "The Magical Mercenary" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_the_magical_mercenary" + "item_description" "#TF_hw2013_the_magical_mercenary_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_magical_mercenary/hw2013_the_magical_mercenary" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_magical_mercenary/hw2013_the_magical_mercenary_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsUnicornHead" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30298" + { + "name" "The Raven's Visage" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_hw2013_visage_of_the_crow" + "item_description" "#TF_hw2013_visage_of_the_crow_Desc" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_visage_of_the_crow/hw2013_visage_of_the_crow" + "model_player" "models/workshop/player/items/pyro/hw2013_visage_of_the_crow/hw2013_visage_of_the_crow.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30299" + { + "name" "Ramses' Regalia" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_ramses_regalia" + "item_description" "#TF_hw2013_ramses_regalia_Desc" + "equip_regions" + { + "shirt" "1" + "sleeves" "1" + } + "image_inventory" "backpack/workshop/player/items/medic/hw2013_ramses_regalia/hw2013_ramses_regalia" + "model_player" "models/workshop/player/items/medic/hw2013_ramses_regalia/hw2013_ramses_regalia.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30300" + { + "name" "The Haunted Hat" + "prefab" "halloween2013 hat" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_hw2013_the_haunted_hat" + "item_description" "#TF_hw2013_the_haunted_hat_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_the_haunted_hat/hw2013_the_haunted_hat" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_the_haunted_hat/hw2013_the_haunted_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "additional halloween response criteria name" + { + "attribute_class" "additional_halloween_response_criteria_name" + "value" "IsHauntedHat" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30301" + { + "name" "Bozo's Brogues" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_rogues_brogues" + "item_description" "#TF_hw2013_rogues_brogues_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/spy/hw2013_rogues_brogues/hw2013_rogues_brogues" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hw2013_rogues_brogues/hw2013_rogues_brogues.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30302" + { + "name" "The Cryptic Keepsake" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Necklace" + "item_name" "#TF_hw2013_all_skull_necklace" + "item_description" "#TF_hw2013_all_skull_necklace_Desc" + "equip_region" "necklace" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hw2013_all_skull_necklace/hw2013_all_skull_necklace" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hw2013_all_skull_necklace/hw2013_all_skull_necklace_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30303" + { + "name" "The Abhorrent Appendages" + "prefab" "halloween2013 misc" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_hw2013_the_abhorrent_appendages" + "item_description" "#TF_hw2013_the_abhorrent_appendages_Desc" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hw2013_the_abhorrent_appendages/hw2013_the_abhorrent_appendages" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hw2013_the_abhorrent_appendages/hw2013_the_abhorrent_appendages.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30304" + { + "name" "The Blizzard Breather" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_xms2013_pyro_arctic_mask" + "item_description" "#TF_xms2013_pyro_arctic_mask_Desc" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/xms2013_pyro_arctic_mask/xms2013_pyro_arctic_mask" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/xms2013_pyro_arctic_mask/xms2013_pyro_arctic_mask.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30305" + { + "name" "The Sub Zero Suit" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_xms2013_pyro_arctic_suit" + "item_description" "#TF_xms2013_pyro_arctic_suit_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_arctic_suit/xms2013_arctic_suit" + "propername" "1" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "demoman" "models/workshop/player/items/all_class/xms2013_arctic_suit/xms2013_arctic_suit_demo.mdl" + "pyro" "models/workshop/player/items/all_class/xms2013_arctic_suit/xms2013_arctic_suit_pyro.mdl" + } + "used_by_classes" + { + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30306" + { + "name" "The Dictator" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_xms2013_soviet_stache" + "item_description" "#TF_xms2013_soviet_stache_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_soviet_stache/xms2013_soviet_stache" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_soviet_stache/xms2013_soviet_stache_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30307" + { + "name" "Neckwear Headwear" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_winter_hat_scarf" + "item_description" "#TF_xms2013_winter_hat_scarf_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_winter_hat_scarf/xms2013_winter_hat_scarf" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_winter_hat_scarf/xms2013_winter_hat_scarf_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30308" + { + "name" "The Trail-Blazer" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Sled" + "item_name" "#TF_xms2013_pyro_sled" + "item_description" "#TF_xms2013_pyro_sled_Desc" + "equip_region" "back" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/xms2013_pyro_sled/xms2013_pyro_sled" + "model_player" "models/workshop/player/items/pyro/xms2013_pyro_sled/xms2013_pyro_sled.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30309" + { + "name" "Dead of Night" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_xms2013_spy_jacket" + "item_description" "#TF_xms2013_spy_jacket_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_jacket/xms2013_jacket" + "equip_region" "shirt" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_jacket/xms2013_jacket_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_jacket/xms2013_jacket_%s.mdl" + } + "additional_hidden_bodygroups" + { + "grenades" "1" + } + "name" "#TF_xms2013_spy_jacket_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xmas2013_jacket_s2/xmas2013_jacket_s2_%s.mdl" + } + "additional_hidden_bodygroups" + { + "grenades" "1" + } + "name" "#TF_xms2013_spy_jacket_style2" + "skin_red" "0" + "skin_blu" "1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_jacket/xms2013_jacket_%s.mdl" + } + "name" "#TF_xms2013_spy_jacket_style3" + "skin_red" "0" + "skin_blu" "1" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xmas2013_jacket_s2/xmas2013_jacket_s2_%s.mdl" + } + "name" "#TF_xms2013_spy_jacket_style4" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30310" + { + "name" "The Snow Scoper" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_xms2013_sniper_jacket" + "item_description" "#TF_xms2013_sniper_jacket_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/xms2013_sniper_jacket/xms2013_sniper_jacket" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/xms2013_sniper_jacket/xms2013_sniper_jacket.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30311" + { + "name" "The Nunhood" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_medic_hood" + "item_description" "#TF_xms2013_medic_hood_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/xms2013_medic_hood/xms2013_medic_hood" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/xms2013_medic_hood/xms2013_medic_hood.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30312" + { + "name" "The Angel of Death" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_xms2013_medic_robe" + "item_description" "#TF_xms2013_medic_robe_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/xms2013_medic_robe/xms2013_medic_robe" + "model_player" "models/workshop/player/items/medic/xms2013_medic_robe/xms2013_medic_robe.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30313" + { + "name" "The Kiss King" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_kissking" + "item_description" "#TF_xms2013_kissking_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_kissking/xms2013_kissking" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_kissking/xms2013_kissking_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30314" + { + "name" "The Slo-Poke" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_soldier_marshal_hat" + "item_description" "#TF_xms2013_soldier_marshal_hat_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/xms2013_soldier_marshal_hat/xms2013_soldier_marshal_hat" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/xms2013_soldier_marshal_hat/xms2013_soldier_marshal_hat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30315" + { + "name" "Minnesota Slick" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_heavy_slick_hair" + "item_description" "#TF_xms2013_heavy_slick_hair_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/xms2013_heavy_slick_hair/xms2013_heavy_slick_hair" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/xms2013_heavy_slick_hair/xms2013_heavy_slick_hair.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30316" + { + "name" "The Toy Soldier" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_sniper_shako" + "item_description" "#TF_xms2013_sniper_shako_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_sniper_shako/xms2013_sniper_shako" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_sniper_shako/xms2013_sniper_shako_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "soldier" "1" + } + } + "30317" + { + "name" "The Five-Month Shadow" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_xms2013_sniper_beard" + "item_description" "#TF_xms2013_sniper_beard_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/xms2013_sniper_beard/xms2013_sniper_beard" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/xms2013_sniper_beard/xms2013_sniper_beard.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/xms2013_sniper_beard/xms2013_sniper_beard.mdl" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/xms2013_sniper_beard_s2/xms2013_sniper_beard_s2.mdl" + "name" "#TF_style1" + } + } + } + } + "30318" + { + "name" "The Mann of Reason" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_medic_knecht_hat" + "item_description" "#TF_xms2013_medic_knecht_hat_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/xms2013_medic_knecht_hat/xms2013_medic_knecht_hat" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/xms2013_medic_knecht_hat/xms2013_medic_knecht_hat.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30319" + { + "name" "The Mann of the House" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Pants" + "item_name" "#TF_xms2013_heavy_pants" + "item_description" "#TF_xms2013_heavy_pants_Desc" + "equip_region" "pants" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/xms2013_heavy_pants/xms2013_heavy_pants" + "model_player" "models/workshop/player/items/heavy/xms2013_heavy_pants/xms2013_heavy_pants.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30320" + { + "name" "Chucklenuts" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_xms2013_scout_squirrel" + "item_description" "#TF_xms2013_scout_squirrel_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/scout/xms2013_scout_squirrel/xms2013_scout_squirrel" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/xms2013_scout_squirrel/xms2013_scout_squirrel.mdl" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30321" + { + "name" "Tiny Timber" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Backpack" + "item_name" "#TF_xms2013_pyro_wood" + "item_description" "#TF_xms2013_pyro_wood_Desc" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/xms2013_pyro_wood/xms2013_pyro_wood" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/xms2013_pyro_wood/xms2013_pyro_wood.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30322" + { + "name" "Face Full of Festive" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_xms2013_festive_beard" + "item_description" "#TF_xms2013_festive_beard_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/engineer/xms2013_festive_beard/xms2013_festive_beard" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/xms2013_festive_beard/xms2013_festive_beard.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30323" + { + "name" "The Ruffled Ruprecht" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_xms2013_ruffled_beard" + "item_description" "#TF_xms2013_ruffled_beard_Desc" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/xms2013_ruffled_beard/xms2013_ruffled_beard" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/xms2013_ruffled_beard/xms2013_ruffled_beard.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30324" + { + "name" "The Golden Garment" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_xms2013_sniper_golden_garment" + "item_description" "#TF_xms2013_sniper_golden_garment_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/xms2013_sniper_golden_garment/xms2013_sniper_golden_garment" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/xms2013_sniper_golden_garment/xms2013_sniper_golden_garment.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30325" + { + "name" "The Little Drummer Mann" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_xms2013_scout_drummer_shirt" + "item_description" "#TF_xms2013_scout_drummer_shirt_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/xms2013_scout_drummer_shirt/xms2013_scout_drummer_shirt" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/xms2013_scout_drummer_shirt/xms2013_scout_drummer_shirt.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30326" + { + "name" "The Scout Shako" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_scout_drummer_hat" + "item_description" "#TF_xms2013_scout_drummer_hat_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/xms2013_scout_drummer_hat/xms2013_scout_drummer_hat" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/xms2013_scout_drummer_hat/xms2013_scout_drummer_hat.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30327" + { + "name" "The Toy Tailor" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_pyro_tailor_hat" + "item_description" "#TF_xms2013_pyro_tailor_hat_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/xms2013_pyro_tailor_hat/xms2013_pyro_tailor_hat" + "model_player" "models/workshop/player/items/pyro/xms2013_pyro_tailor_hat/xms2013_pyro_tailor_hat.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30328" + { + "name" "The Extra Layer" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Vest" + "item_name" "#TF_xms2013_sniper_layer_vest" + "item_description" "#TF_xms2013_sniper_layer_vest_Desc" + "equip_region" "sniper_vest" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/xms2013_sniper_layer_vest/xms2013_sniper_layer_vest" + "model_player" "models/workshop/player/items/sniper/xms2013_sniper_layer_vest/xms2013_sniper_layer_vest.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30329" + { + "name" "The Polar Pullover" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_polar_pullover" + "item_description" "#TF_xms2013_polar_pullover_Desc" + "equip_region" "head_skin" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/xms2013_polar_pullover/xms2013_polar_pullover" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/xms2013_polar_pullover/xms2013_polar_pullover_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30330" + { + "name" "The Dogfighter" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_xms2013_dogfighter_jacket" + "item_description" "#TF_xms2013_dogfighter_jacket_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/xms2013_dogfighter_jacket/xms2013_dogfighter_jacket" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/xms2013_dogfighter_jacket/xms2013_dogfighter_jacket.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30331" + { + "name" "Antarctic Parka" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_xms2013_soldier_parka" + "item_description" "#TF_xms2013_soldier_parka_Desc" + "equip_region" "soldier_coat" + "image_inventory" "backpack/workshop/player/items/soldier/xms2013_soldier_parka/xms2013_soldier_parka" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/xms2013_soldier_parka/xms2013_soldier_parka.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30332" + { + "name" "Runner's Warm-Up" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_scout_skicap" + "item_description" "#TF_xms2013_scout_skicap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/xms2013_scout_skicap/xms2013_scout_skicap" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/xms2013_scout_skicap/xms2013_scout_skicap.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30333" + { + "name" "Highland High Heels" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_xms2013_demo_plaid_boots" + "item_description" "#TF_xms2013_demo_plaid_boots_Desc" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/xms2013_demo_plaid_boots/xms2013_demo_plaid_boots" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/xms2013_demo_plaid_boots/xms2013_demo_plaid_boots.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30334" + { + "name" "Tartan Tyrolean" + "prefab" "hat" + "first_sale_date" "2013/12/19" + "item_name" "#TF_xms2013_demo_plaid_hat" + "item_description" "#TF_xms2013_demo_plaid_hat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/xms2013_demo_plaid_hat/xms2013_demo_plaid_hat" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/xms2013_demo_plaid_hat/xms2013_demo_plaid_hat.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30335" + { + "name" "Marshall's Mutton Chops" + "prefab" "misc" + "first_sale_date" "2013/12/19" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_xms2013_soldier_marshal_beard" + "item_description" "#TF_xms2013_soldier_marshal_beard_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/soldier/xms2013_soldier_marshal_beard/xms2013_soldier_marshal_beard" + "capabilities" + { + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/xms2013_soldier_marshal_beard/xms2013_soldier_marshal_beard.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30336" + { + "name" "The Trencher's Topper" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_trenchers_topper" + "item_description" "#TF_sbox2014_trenchers_topper_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/engineer/sbox2014_trenchers_topper/sbox2014_trenchers_topper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sbox2014_trenchers_topper/sbox2014_trenchers_topper.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/sbox2014_trenchers_topper/sbox2014_trenchers_topper.mdl" + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/sbox2014_trenchers_topper_s2/sbox2014_trenchers_topper_s2.mdl" + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30337" + { + "name" "The Trencher's Tunic" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_trenchers_tunic" + "item_description" "#TF_sbox2014_trenchers_tunic_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/sbox2014_trenchers_tunic/sbox2014_trenchers_tunic" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/sbox2014_trenchers_tunic/sbox2014_trenchers_tunic.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30338" + { + "name" "Ground Control" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_soldier_major" + "item_description" "#TF_sbox2014_soldier_major_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sbox2014_soldier_major/sbox2014_soldier_major" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sbox2014_soldier_major/sbox2014_soldier_major.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30339" + { + "name" "The Killer's Kit" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_killers_kit" + "item_description" "#TF_sbox2014_killers_kit_Desc" + "equip_region" "soldier_legs" + "image_inventory" "backpack/workshop/player/items/soldier/sbox2014_killers_kit/sbox2014_killers_kit" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/sbox2014_killers_kit/sbox2014_killers_kit.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sbox2014_killers_kit/sbox2014_killers_kit.mdl" + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sbox2014_killers_kit_2/sbox2014_killers_kit_2.mdl" + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30340" + { + "name" "Stylish DeGroot" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_stylish_degroot" + "item_description" "#TF_sbox2014_stylish_degroot_Desc" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/demo/sbox2014_stylish_degroot/sbox2014_stylish_degroot" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sbox2014_stylish_degroot/sbox2014_stylish_degroot.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30341" + { + "name" "Ein" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_sbox2014_einstein" + "item_description" "#TF_sbox2014_einstein_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/engineer/sbox2014_einstein/sbox2014_einstein" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/sbox2014_einstein/sbox2014_einstein.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30342" + { + "name" "The Heavy Lifter" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_heavy_gunshow" + "item_description" "#TF_sbox2014_heavy_gunshow_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_heavy_gunshow/sbox2014_heavy_gunshow" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_heavy_gunshow/sbox2014_heavy_gunshow.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30343" + { + "name" "Gone Commando" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_heavy_camopants" + "item_description" "#TF_sbox2014_heavy_camopants_Desc" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_heavy_camopants/sbox2014_heavy_camopants" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_heavy_camopants/sbox2014_heavy_camopants.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30344" + { + "name" "Bullet Buzz" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_heavy_buzzcut" + "item_description" "#TF_sbox2014_heavy_buzzcut_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_heavy_buzzcut/sbox2014_heavy_buzzcut" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_heavy_buzzcut/sbox2014_heavy_buzzcut.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30345" + { + "name" "The Leftover Trap" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_sbox2014_leftover_trap" + "item_description" "#TF_sbox2014_leftover_trap_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_leftover_trap/sbox2014_leftover_trap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_leftover_trap/sbox2014_leftover_trap.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30346" + { + "name" "The Trash Man" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_trash_man" + "item_description" "#TF_sbox2014_trash_man_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_trash_man/sbox2014_trash_man" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_trash_man/sbox2014_trash_man.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30347" + { + "name" "The Scotch Saver" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_sbox2014_scotch_saver" + "item_description" "#TF_sbox2014_scotch_saver_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/engineer/sbox2014_scotch_saver/sbox2014_scotch_saver" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sbox2014_scotch_saver/sbox2014_scotch_saver.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30348" + { + "name" "Bushi-Dou" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_sbox2014_demo_samurai_armour" + "item_description" "#TF_sbox2014_demo_samurai_armour_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/demo/sbox2014_demo_samurai_armour/sbox2014_demo_samurai_armour" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/sbox2014_demo_samurai_armour/sbox2014_demo_samurai_armour.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_shovel_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30349" + { + "name" "The Fashionable Megalomaniac" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_sbox2014_fashionable_megalomaniac" + "item_description" "#TF_sbox2014_fashionable_megalomaniac_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_fashionable_megalomaniac/sbox2014_fashionable_megalomaniac" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_fashionable_megalomaniac/sbox2014_fashionable_megalomaniac.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30350" + { + "name" "The Dough Puncher" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_chefs_coat" + "item_description" "#TF_sbox2014_chefs_coat_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_chefs_coat/sbox2014_chefs_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_chefs_coat/sbox2014_chefs_coat.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30351" + { + "name" "The Teutonic Toque" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_teutonic_toque" + "item_description" "#TF_sbox2014_teutonic_toque_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_teutonic_toque/sbox2014_teutonic_toque" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_teutonic_toque/sbox2014_teutonic_toque.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30352" + { + "name" "The Mustachioed Mann" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_sbox2014_mustachioed_mann" + "item_description" "#TF_sbox2014_mustachioed_mann_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_mustachioed_mann/sbox2014_mustachioed_mann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_mustachioed_mann/sbox2014_mustachioed_mann_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_mustachioed_mann/sbox2014_mustachioed_mann_%s.mdl" + } + "name" "#TF_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_mustachioed_mann_s2/sbox2014_mustachioed_mann_s2_%s.mdl" + } + "name" "#TF_style1" + } + } + } + } + "30353" + { + "name" "The Backstabber's Boomslang" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_sbox2014_spy_snake" + "item_description" "#TF_sbox2014_spy_snake_Desc" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/spy/sbox2014_spy_snake/sbox2014_spy_snake" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sbox2014_spy_snake/sbox2014_spy_snake.mdl" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30354" + { + "name" "The Rat Stompers" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_sbox2014_rat_stompers" + "item_description" "#TF_sbox2014_rat_stompers_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_rat_stompers/sbox2014_rat_stompers" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_rat_stompers/sbox2014_rat_stompers.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30355" + { + "name" "Sole Mate" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_sole_mate" + "item_description" "#TF_sbox2014_sole_mate_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/sbox2014_sole_mate/sbox2014_sole_mate" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sbox2014_sole_mate/sbox2014_sole_mate.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30356" + { + "name" "The Heat of Winter" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_sbxo2014_medic_wintergarb_coat" + "item_description" "#TF_sbxo2014_medic_wintergarb_coat_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sbxo2014_medic_wintergarb_coat/sbxo2014_medic_wintergarb_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbxo2014_medic_wintergarb_coat/sbxo2014_medic_wintergarb_coat.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30357" + { + "name" "The Dark Falkirk Helm" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_knight_helmet" + "item_description" "#TF_sbox2014_knight_helmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_knight_helmet/sbox2014_knight_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_knight_helmet/sbox2014_knight_helmet_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_knight_helmet/sbox2014_knight_helmet_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sbox2014_knight_helmet_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_knight_helmet_style1/sbox2014_knight_helmet_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sbox2014_knight_helmet_style1" + } + } + } + } + "30358" + { + "name" "The Sole Saviors" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_sbox2014_armor_shoes" + "item_description" "#TF_sbox2014_armor_shoes_Desc" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_armor_shoes/sbox2014_armor_shoes" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_armor_shoes/sbox2014_armor_shoes_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + } + } + "30359" + { + "name" "The Huntsman's Essentials" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Quiver" + "item_name" "#TF_sbox2014_sniper_quiver" + "item_description" "#TF_sbox2014_sniper_quiver_Desc" + "equip_region" "sniper_quiver" + "image_inventory" "backpack/workshop/player/items/sniper/sbox2014_sniper_quiver/sbox2014_sniper_quiver" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sbox2014_sniper_quiver/sbox2014_sniper_quiver.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30360" + { + "name" "The Napoleon Complex" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_napolean_complex" + "item_description" "#TF_sbox2014_napolean_complex_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/spy/sbox2014_napolean_complex/sbox2014_napolean_complex" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sbox2014_napolean_complex/sbox2014_napolean_complex.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30361" + { + "name" "The Colonel's Coat" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_sbox2014_medic_colonel_coat" + "item_description" "#TF_sbox2014_medic_colonel_coat_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_medic_colonel_coat/sbox2014_medic_colonel_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_medic_colonel_coat/sbox2014_medic_colonel_coat.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30362" + { + "name" "The Law" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_law" + "item_description" "#TF_sbox2014_law_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_law/sbox2014_law" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_law/sbox2014_law_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30363" + { + "name" "The Juggernaut Jacket" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_juggernaut_jacket" + "item_description" "#TF_sbox2014_juggernaut_jacket_Desc" + "equip_region" "left_shoulder" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/sbox2014_juggernaut_jacket/sbox2014_juggernaut_jacket" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sbox2014_juggernaut_jacket/sbox2014_juggernaut_jacket.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30364" + { + "name" "The Warmth Preserver" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_warmth_preserver" + "item_description" "#TF_sbox2014_warmth_preserver_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_warmth_preserver/sbox2014_warmth_preserver" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_warmth_preserver/sbox2014_warmth_preserver.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30365" + { + "name" "The Smock Surgeon" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apron" + "item_name" "#TF_sbox2014_medic_apron" + "item_description" "#TF_sbox2014_medic_apron_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_medic_apron/sbox2014_medic_apron" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_medic_apron/sbox2014_medic_apron.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30366" + { + "name" "The Sangu Sleeves" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Armor" + "item_name" "#TF_sbox2014_demo_samurai_sleeves" + "item_description" "#TF_sbox2014_demo_samurai_sleeves_Desc" + "equip_region" "sleeves" + "image_inventory" "backpack/workshop/player/items/demo/sbox2014_demo_samurai_sleeves/sbox2014_demo_samurai_sleeves" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sbox2014_demo_samurai_sleeves/sbox2014_demo_samurai_sleeves.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30367" + { + "name" "The Cute Suit" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_pyro_zipper_suit" + "item_description" "#TF_sbox2014_pyro_zipper_suit_Desc" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_zipper_suit/sbox2014_zipper_suit" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_zipper_suit/sbox2014_zipper_suit_%s.mdl" + } + "used_by_classes" + { + "pyro" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sbox2014_pyro_zipper_suit_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sbox2014_pyro_zipper_suit_style1" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + } + } + } + "30368" + { + "name" "The War Goggles" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_sbox2014_war_goggles" + "item_description" "#TF_sbox2014_war_goggles_Desc" + "equip_region" "glasses" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_war_goggles/sbox2014_war_goggles" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_war_goggles/sbox2014_war_goggles.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30369" + { + "name" "The Eliminators Safeguard" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_war_helmet" + "item_description" "#TF_sbox2014_war_helmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_war_helmet/sbox2014_war_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_war_helmet/sbox2014_war_helmet.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/sbox2014_war_helmet/sbox2014_war_helmet.mdl" + "name" "#TF_sbox2014_war_helmet_style1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/sbox2014_war_helmet_s1/sbox2014_war_helmet_s1.mdl" + "name" "#TF_sbox2014_war_helmet_style2" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30371" + { + "name" "The Archers Groundings" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_sbox2014_archers_groundings" + "item_description" "#TF_sbox2014_archers_groundings_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/sniper/sbox2014_archers_groundings/sbox2014_archers_groundings" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sbox2014_archers_groundings/sbox2014_archers_groundings.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30372" + { + "name" "Combat Slacks" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_war_pants" + "item_description" "#TF_sbox2014_war_pants_Desc" + "equip_region" "heavy_hip" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_war_pants/sbox2014_war_pants" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_war_pants/sbox2014_war_pants.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30373" + { + "name" "The Toowoomba Tunic" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_toowoomba_tunic" + "item_description" "#TF_sbox2014_toowoomba_tunic_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_toowoomba_tunic/sbox2014_toowoomba_tunic" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_toowoomba_tunic/sbox2014_toowoomba_tunic_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_toowoomba_tunic/sbox2014_toowoomba_tunic_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sbox2014_toowoomba_tunic_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_toowoomba_tunic_style1/sbox2014_toowoomba_tunic_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sbox2014_toowoomba_tunic_style1" + } + } + } + } + "30374" + { + "name" "The Sammy Cap" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_sammy_cap" + "item_description" "#TF_sbox2014_sammy_cap_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/sbox2014_sammy_cap/sbox2014_sammy_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sbox2014_sammy_cap/sbox2014_sammy_cap.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30375" + { + "name" "The Deep Cover Operator" + "propername" "1" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_camo_headband" + "item_description" "#TF_sbox2014_camo_headband_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sbox2014_camo_headband/sbox2014_camo_headband" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sbox2014_camo_headband/sbox2014_camo_headband_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30376" + { + "name" "The Ticket Boy" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Apparel" + "item_name" "#TF_sbox2014_ticket_boy" + "item_description" "#TF_sbox2014_ticket_boy_Desc" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sbox2014_ticket_boy/sbox2014_ticket_boy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sbox2014_ticket_boy/sbox2014_ticket_boy.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30377" + { + "name" "The Antarctic Researcher" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_sbox2014_antarctic_researcher" + "item_description" "#TF_sbox2014_antarctic_researcher_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/sbox2014_antarctic_researcher/sbox2014_antarctic_researcher" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/sbox2014_antarctic_researcher/sbox2014_antarctic_researcher.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30378" + { + "name" "Heer's Helmet" + "prefab" "hat" + "first_sale_date" "2014/09/15" + "item_name" "#TF_sbox2014_medic_wintergarb_helmet" + "item_description" "#TF_sbox2014_medic_wintergarb_helmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_medic_wintergarb_helmet/sbox2014_medic_wintergarb_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_medic_wintergarb_helmet/sbox2014_medic_wintergarb_helmet.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30379" + { + "name" "The Gaiter Guards" + "propername" "1" + "prefab" "misc" + "first_sale_date" "2014/09/15" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_sbox2014_medic_wintergarb_gaiter" + "item_description" "#TF_sbox2014_medic_wintergarb_gaiter_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/medic/sbox2014_medic_wintergarb_gaiter/sbox2014_medic_wintergarb_gaiter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sbox2014_medic_wintergarb_gaiter/sbox2014_medic_wintergarb_gaiter.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "30388" + { + "name" "The Classified Coif" + "first_sale_date" "2014/06/16" + "prefab" "misc" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_soldier_fed_coat" + "item_description" "#TF_short2014_soldier_fed_coat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "soldier_coat" + "image_inventory" "backpack/workshop/player/items/soldier/short2014_soldier_fed_coat/short2014_soldier_fed_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/short2014_soldier_fed_coat/short2014_soldier_fed_coat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30389" + { + "name" "The Rogue's Robe" + "first_sale_date" "2014/06/16" + "prefab" "misc" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_invisible_ishikawa" + "item_description" "#TF_short2014_invisible_ishikawa_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/short2014_invisible_ishikawa/short2014_invisible_ishikawa" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/short2014_invisible_ishikawa/short2014_invisible_ishikawa.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30390" + { + "name" "The Spook Specs" + "first_sale_date" "2014/06/16" + "prefab" "hat" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_soldier_fedhair" + "item_description" "#TF_short2014_soldier_fedhair_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/short2014_soldier_fedhair/short2014_soldier_fedhair" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/short2014_soldier_fedhair/short2014_soldier_fedhair.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30391" + { + "name" "The Sengoku Scorcher" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_sengoku_scorcher" + "item_description" "#TF_short2014_sengoku_scorcher_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_regions" + { + "shirt" "1" + "grenades" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/short2014_sengoku_scorcher/short2014_sengoku_scorcher" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_sengoku_scorcher/short2014_sengoku_scorcher.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30392" + { + "name" "The Man in Slacks" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_man_in_slacks" + "item_description" "#TF_short2014_man_in_slacks_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "soldier_legs" + "image_inventory" "backpack/workshop/player/items/soldier/short2014_man_in_slacks/short2014_man_in_slacks" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/short2014_man_in_slacks/short2014_man_in_slacks.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30393" + { + "name" "The Razor Cut" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_demo_mohawk" + "item_description" "#TF_short2014_demo_mohawk_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/short2014_demo_mohawk/short2014_demo_mohawk" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/short2014_demo_mohawk/short2014_demo_mohawk.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30394" + { + "name" "The Frickin' Sweet Ninja Hood" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_scout_ninja_mask" + "item_description" "#TF_short2014_scout_ninja_mask_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_regions" + { + "hat" "1" + "beard" "1" + "head_skin" "1" + } + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/short2014_scout_ninja_mask/short2014_scout_ninja_mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/short2014_scout_ninja_mask/short2014_scout_ninja_mask.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30395" + { + "name" "The Southie Shinobi" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_ninja_vest" + "item_description" "#TF_short2014_ninja_vest_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/short2014_minja_vest/short2014_minja_vest" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/short2014_minja_vest/short2014_minja_vest.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30396" + { + "name" "The Red Socks" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_ninja_boots" + "item_description" "#TF_short2014_ninja_boots_Desc" + "item_type_name" "#TF_Wearable_Socks" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/short2014_ninja_boots/short2014_ninja_boots" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/short2014_ninja_boots/short2014_ninja_boots.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30397" + { + "name" "The Bruiser's Bandanna" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "item_name" "#TF_short2014_all_mercs_mask" + "item_description" "#TF_short2014_all_mercs_mask_Desc" + "item_type_name" "#TF_Wearable_Bandana" + "equip_region" "beard" + "valid_for_shuffle" "1" + "image_inventory" "backpack/workshop/player/items/all_class/short2014_all_mercs_mask/short2014_all_mercs_mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_all_mercs_mask/short2014_all_mercs_mask_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_all_mercs_mask/short2014_all_mercs_mask_%s.mdl" + } + "name" "#TF_short2014_all_mercs_mask_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_all_mercs_mask_s1/short2014_all_mercs_mask_s1_%s.mdl" + } + "name" "#TF_short2014_all_mercs_mask_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_all_mercs_mask_s2/short2014_all_mercs_mask_s2_%s.mdl" + } + "name" "#TF_short2014_all_mercs_mask_style2" + } + } + } + } + "30398" + { + "name" "The Gas Guzzler" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_the_gas_guzzler" + "item_description" "#TF_short2014_the_gas_guzzler_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/short2014_the_gas_guzzler/short2014_the_gas_guzzler" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_the_gas_guzzler/short2014_the_gas_guzzler.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30399" + { + "name" "The Smoking Skid Lid" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_spiked_armourgeddon" + "item_description" "#TF_short2014_spiked_armourgeddon_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/short2014_spiked_armourgeddon/short2014_spiked_armourgeddon" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_spiked_armourgeddon/short2014_spiked_armourgeddon.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30400" + { + "name" "The Lunatic's Leathers" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_wildfire_wrappers" + "item_description" "#TF_short2014_wildfire_wrappers_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_regions" + { + "shirt" "1" + "grenades" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/short2014_wildfire_wrappers/short2014_wildfire_wrappers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_wildfire_wrappers/short2014_wildfire_wrappers.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30401" + { + "name" "Yuri's Revenge" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_heavy_goatee" + "item_description" "#TF_short2014_heavy_goatee_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/heavy/short2014_heavy_goatee/short2014_heavy_goatee" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/short2014_heavy_goatee/short2014_heavy_goatee.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30402" + { + "name" "The Tools of the Trade" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_engie_toolbelt" + "item_description" "#TF_short2014_engie_toolbelt_Desc" + "item_type_name" "#TF_Wearable_ToolBelt" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_engie_toolbelt/short2014_engie_toolbelt" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_engie_toolbelt/short2014_engie_toolbelt.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30403" + { + "name" "The Joe-on-the-Go" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_poopyj_backpack" + "item_description" "#TF_short2014_poopyj_backpack_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_poopyj_backpack/short2014_poopyj_backpack" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_poopyj_backpack/short2014_poopyj_backpack.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30404" + { + "name" "The Aviator Assassin" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_deadhead" + "item_description" "#TF_short2014_deadhead_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/short2014_deadhead/short2014_deadhead" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/short2014_deadhead/short2014_deadhead.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30405" + { + "name" "The Sky Captain" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_confidence_trickster" + "item_description" "#TF_short2014_confidence_trickster_Desc" + "item_type_name" "#TF_Wearable_Uniform" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/short2014_confidence_trickster/short2014_confidence_trickster" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/short2014_confidence_trickster/short2014_confidence_trickster.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30406" + { + "name" "The Peacenik's Ponytail" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_engineer_nerd_hair" + "item_description" "#TF_short2014_engineer_nerd_hair_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_engineer_nerd_hair/short2014_engineer_nerd_hair" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_engineer_nerd_hair/short2014_engineer_nerd_hair.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "0" + } + "styles" + { + "0" + { + "name" "#TF_short2014_engineer_nerd_hair_style0" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_short2014_engineer_nerd_hair_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30407" + { + "name" "The Level Three Chin" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_engineer_nerd_chin" + "item_description" "#TF_short2014_engineer_nerd_chin_Desc" + "item_type_name" "#TF_Wearable_Chin" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_engineer_nerd_chin/short2014_engineer_nerd_chin" + "min_ilevel" "3" + "max_ilevel" "3" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_engineer_nerd_chin/short2014_engineer_nerd_chin.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30408" + { + "name" "The Egghead's Overalls" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_engineer_nerd_shirt" + "item_description" "#TF_short2014_engineer_nerd_shirt_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_engineer_nerd_shirt/short2014_engineer_nerd_shirt" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_engineer_nerd_shirt/short2014_engineer_nerd_shirt.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30409" + { + "name" "The Lonesome Loafers" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_engineer_nerd_feet" + "item_description" "#TF_short2014_engineer_nerd_feet_Desc" + "item_type_name" "TF_Wearable_Shoes" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_engineer_nerd_feet/short2014_engineer_nerd_feet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_engineer_nerd_feet/short2014_engineer_nerd_feet.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30410" + { + "name" "Ze Ubermensch" + "prefab" "misc" + "valid_for_shuffle" "1" + "first_sale_date" "2014/06/16" + "item_name" "#TF_short2014_medic_nietzsche" + "item_description" "#TF_short2014_medic_nietzsche_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/medic/short2014_medic_nietzsche/short2014_medic_nietzsche" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/short2014_medic_nietzsche/short2014_medic_nietzsche.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30411" + { + "name" "The Au Courant Assassin" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_spy_ascot_vest" + "item_description" "#TF_short2014_spy_ascot_vest_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/short2014_spy_ascot_vest/short2014_spy_ascot_vest" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/short2014_spy_ascot_vest/short2014_spy_ascot_vest.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30412" + { + "name" "The Endothermic Exowear" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_endothermic_exowear" + "item_description" "#TF_short2014_endothermic_exowear_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/short2014_endothermic_exowear/short2014_endothermic_exowear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_endothermic_exowear/short2014_endothermic_exowear.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30413" + { + "name" "The Merc's Mohawk" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_lil_moe" + "item_description" "#TF_short2014_lil_moe_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/short2014_lil_moe/short2014_lil_moe" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_lil_moe/short2014_lil_moe_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30414" + { + "name" "The Eye-Catcher" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_all_eyepatch" + "item_description" "#TF_short2014_all_eyepatch_Desc" + "item_type_name" "#TF_Wearable_EyePatch" + "equip_region" "lenses" + "image_inventory" "backpack/workshop/player/items/all_class/short2014_all_eyepatch/short2014_all_eyepatch" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_all_eyepatch/short2014_all_eyepatch_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30415" + { + "name" "The Medicine Manpurse" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_medic_messenger_bag" + "item_description" "#TF_short2014_medic_messenger_bag_Desc" + "item_type_name" "#TF_Wearable_Satchel" + "equip_region" "medic_hip" + "image_inventory" "backpack/workshop/player/items/medic/short2014_medic_messenger_bag/short2014_medic_messenger_bag" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/short2014_medic_messenger_bag/short2014_medic_messenger_bag.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30416" + { + "name" "Employee of the Mmmph" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_pyro_chickenhat" + "item_description" "#TF_short2014_pyro_chickenhat_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/short2014_pyro_chickenhat/short2014_pyro_chickenhat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_pyro_chickenhat/short2014_pyro_chickenhat.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30417" + { + "name" "The Frymaster" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_fowl_fryer" + "item_description" "#TF_short2014_fowl_fryer_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/short2014_fowl_fryer/short2014_fowl_fryer" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_fowl_fryer/short2014_fowl_fryer.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30418" + { + "name" "The Combustible Kabuto" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_honnoji_helm" + "item_description" "#TF_short2014_honnoji_helm_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/short2014_honnoji_helm/short2014_honnoji_helm" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/short2014_honnoji_helm/short2014_honnoji_helm.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30419" + { + "name" "The Chronoscarf" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_chronoscarf" + "item_description" "#TF_short2014_chronoscarf_Desc" + "item_type_name" "#TF_Wearable_Scarf" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/medic/short2014_chronoscarf/short2014_chronoscarf" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/short2014_chronoscarf/short2014_chronoscarf.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30420" + { + "name" "The Danger" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_chemists_pride" + "item_description" "#TF_short2014_chemists_pride_Desc" + "item_type_name" "TF_Wearable_Apparel" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "image_inventory" "backpack/workshop/player/items/engineer/short2014_chemists_pride/short2014_chemists_pride" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/short2014_chemists_pride/short2014_chemists_pride.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30421" + { + "name" "The Frontier Djustice" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_badlands_wanderer" + "item_description" "#TF_short2014_badlands_wanderer_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/short2014_badlands_wanderer/short2014_badlands_wanderer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/short2014_badlands_wanderer/short2014_badlands_wanderer.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30422" + { + "name" "Vive La France" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_vintage_director" + "item_description" "#TF_short2014_vintage_director_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/short2014_vintage_director/short2014_vintage_director" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_vintage_director/short2014_vintage_director_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30423" + { + "name" "The Scoper's Smoke" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_scopers_smoke" + "item_description" "#TF_short2014_scopers_smoke_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/sniper/short2014_scopers_smoke/short2014_scopers_smoke" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/short2014_scopers_smoke/short2014_scopers_smoke.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30424" + { + "name" "The Triggerman's Tacticals" + "prefab" "misc" + "first_sale_date" "2014/06/16" + "propername" "1" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_sniper_cargo_pants" + "item_description" "#TF_short2014_sniper_cargo_pants_Desc" + "item_type_name" "TF_Wearable_Apparel" + "equip_region" "sniper_legs" + "image_inventory" "backpack/workshop/player/items/sniper/short2014_sniper_cargo_pants/short2014_sniper_cargo_pants" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/short2014_sniper_cargo_pants/short2014_sniper_cargo_pants.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30425" + { + "name" "Tipped Lid" + "prefab" "hat" + "first_sale_date" "2014/06/16" + "valid_for_shuffle" "1" + "item_name" "#TF_short2014_tip_of_the_hats" + "item_description" "#TF_short2014_tip_of_the_hats_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/short2014_tip_of_the_hats/short2014_tip_of_the_hats" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/short2014_tip_of_the_hats/short2014_tip_of_the_hats_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30426" + { + "name" "The Paisley Pro" + "prefab" "valve misc" + "first_sale_date" "2014/06/16" + "equip_regions" + { + "shirt" "1" + "arm_tattoos" "1" + } + "valid_for_shuffle" "1" + "item_type_name" "#TF_Wearable_Shirt" + "item_name" "#TF_ScoutFancyShirt" + "item_description" "#TF_ScoutFancyShirt_Desc" + "image_inventory" "backpack/player/items/scout/scout_fancy_shirt" + "model_player" "models/player/items/scout/scout_fancy_shirt.mdl" + "propername" "1" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30427" + { + "name" "The Argyle Ace" + "prefab" "valve misc" + "first_sale_date" "2014/06/16" + "equip_region" "feet" + "item_type_name" "#TF_Wearable_Shoes" + "item_name" "#TF_ScoutFancyShoes" + "item_description" "#TF_ScoutFancyShoes_Desc" + "image_inventory" "backpack/player/items/scout/scout_brogues" + "model_player" "models/player/items/scout/scout_brogues.mdl" + "propername" "1" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30428" + { + "name" "The Pomade Prince" + "prefab" "valve hat" + "first_sale_date" "2014/06/16" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_ScoutFancyHair" + "item_description" "#TF_ScoutFancyHair_Desc" + "image_inventory" "backpack/player/items/scout/scout_pompadour" + "model_player" "models/player/items/scout/scout_pompadour.mdl" + "propername" "1" + "valid_for_shuffle" "1" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30429" + { + "name" "The Allbrero" + "prefab" "valve hat" + "first_sale_date" "2014/06/16" + "item_name" "#TF_DemoSombrero" + "item_description" "#TF_DemoSombrero_Desc" + "image_inventory" "backpack/player/items/demo/demo_fiesta_sombrero" + "model_player" "models/player/items/demo/demo_fiesta_sombrero.mdl" + "propername" "1" + "valid_for_shuffle" "1" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30430" + { + "name" "Seeing Double" + "prefab" "valve misc" + "first_sale_date" "2014/06/16" + "equip_region" "glasses" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_DemomanMargaritaShades" + "item_description" "#TF_DemomanMargaritaShades_Desc" + "image_inventory" "backpack/player/items/demo/demo_fiesta_shades" + "model_player" "models/player/items/demo/demo_fiesta_shades.mdl" + "valid_for_shuffle" "1" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30431" + { + "name" "Six Pack Abs" + "prefab" "valve grenades" + "first_sale_date" "2014/06/16" + "item_type_name" "#TF_Wearable_Bottles" + "item_name" "#TF_DemomanBeerGrenades" + "item_description" "#TF_DemomanBeerGrenades_Desc" + "image_inventory" "backpack/player/items/demo/demo_fiesta_bottles" + "model_player" "models/player/items/demo/demo_fiesta_bottles.mdl" + "valid_for_shuffle" "1" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + } + "30467" + { + "name" "The Spycrab" + "prefab" "promo misc" + "item_type_name" "#TF_Wearable_Mascot" + "item_name" "#TF_spycrab" + "item_description" "#TF_spycrab_Desc" + "equip_region" "left_shoulder" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/spycrab/spycrab" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/spycrab/spycrab.mdl" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30469" + { + "name" "Horace" + "prefab" "hat" + "craft_class" "" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "item_name" "#TF_Horace" + "item_description" "#TF_Horace_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/horace/horace" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/horace/horace_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30470" + { + "name" "The Biomech Backpack" + "prefab" "misc" + "first_sale_date" "2014/11/13" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_BiomechBackpack" + "item_description" "#TF_BiomechBackpack_Desc" + "equip_region" "back" + "propername" "1" + "image_inventory" "backpack/workshop_partner/player/items/scout/ai_body/ai_body" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop_partner/player/items/scout/ai_body/ai_body.mdl" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "scout" "1" + } + } + "30471" + { + "name" "The Alien Cranium" + "prefab" "hat" + "first_sale_date" "2014/11/13" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_AlienCranium" + "item_description" "#TF_AlienCranium_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/scout/ai_head/ai_head" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop_partner/player/items/scout/ai_head/ai_head.mdl" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "scout" "1" + } + } + "30472" + { + "name" "The Xeno Suit" + "prefab" "misc" + "first_sale_date" "2014/11/13" + "item_type_name" "#TF_Wearable_Costume" + "item_name" "#TF_XenoSuit" + "item_description" "#TF_XenoSuit_Desc" + "propername" "1" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/scout/ai_legs/ai_legs" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop_partner/player/items/scout/ai_legs/ai_legs.mdl" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "scout" "1" + } + } + "30473" + { + "name" "The MK 50" + "prefab" "hat" + "first_sale_date" "2014/11/13" + "item_type_name" "#TF_Wearable_Helmet" + "item_name" "#TF_MK50" + "item_description" "#TF_MK50_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/all_class/ai_spacehelmet/ai_spacehelmet" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/ai_spacehelmet/ai_spacehelmet_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30474" + { + "name" "The Nostromo Napalmer" + "first_sale_date" "2014/11/13" + "item_class" "tf_weapon_flamethrower" + "prefab" "weapon_flamethrower" + "craft_class" "weapon" + "craft_material_type" "weapon" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_reflect_projectiles" "1" + "can_extinguish" "1" + "can_deal_posthumous_damage" "1" + "can_deal_critical_damage" "1" + "is_flamethrower" "1" + } + "item_logname" "ai_flamethrower" + "item_iconname" "ai_flamethrower" + "show_in_armory" "1" + "item_type_name" "#TF_Weapon_Flamethrower" + "item_name" "#TF_NostromoNapalmer" + "item_description" "#TF_NostromoNapalmer_Desc" + "item_slot" "primary" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_ai_flamethrower/c_ai_flamethrower" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "75" + "model_player" "models/workshop_partner/weapons/c_models/c_ai_flamethrower/c_ai_flamethrower.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "10" + "max_ilevel" "10" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -10" + } + "visuals" + { + "animation_replacement" + { + "ACT_PRIMARY_VM_INSPECT_START" "ACT_PRIMARY_ALT1_VM_INSPECT_START" + "ACT_PRIMARY_VM_INSPECT_IDLE" "ACT_PRIMARY_ALT1_VM_INSPECT_IDLE" + "ACT_PRIMARY_VM_INSPECT_END" "ACT_PRIMARY_ALT1_VM_INSPECT_END" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + "xifier_class_remap" "flamethrower" + } + "30475" + { + "name" "The Mishap Mercenary" + "propername" "1" + "prefab" "no_craft hat" + "item_name" "#TF_sept2014_pyro_radioactive_mask" + "item_description" "#TF_sept2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sept2014_pyro_radioactive_mask/sept2014_pyro_radioactive_mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sept2014_pyro_radioactive_mask/sept2014_pyro_radioactive_mask.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30476" + { + "name" "The Lady Killer" + "propername" "1" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_sept2014_lady_killer" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/sept2014_lady_killer/sept2014_lady_killer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sept2014_lady_killer/sept2014_lady_killer.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30477" + { + "name" "The Lone Survivor" + "propername" "1" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_sept2014_lone_survivor" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/soldier/sept2014_lone_survivor/sept2014_lone_survivor" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sept2014_lone_survivor/sept2014_lone_survivor.mdl" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30478" + { + "name" "Poacher's Safari Jacket" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Jacket" + "item_name" "#TF_sept2014_poachers_safari_jacket" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/sept2014_poachers_safari_jacket/sept2014_poachers_safari_jacket" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sept2014_poachers_safari_jacket/sept2014_poachers_safari_jacket.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30479" + { + "name" "Thirst Blood" + "prefab" "no_craft hat" + "item_type_name" "#TF_Wearable_Hair" + "item_name" "#TF_sept2014_thirst_blood" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sept2014_thirst_blood/sept2014_thirst_blood" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sept2014_thirst_blood/sept2014_thirst_blood.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30480" + { + "name" "Mann of the Seven Sees" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_sept2014_mann_of_the_seven_sees" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "sleeves" + "image_inventory" "backpack/workshop/player/items/demo/sept2014_mann_of_the_seven_sees/sept2014_mann_of_the_seven_sees" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sept2014_mann_of_the_seven_sees/sept2014_mann_of_the_seven_sees.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30481" + { + "name" "Hillbilly Speed-Bump" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_sept2014_hillbilly_speedbump" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_regions" + { + "engineer_pocket" "1" + "sniper_pocket" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/sept2014_hillbilly_speedbump/sept2014_hillbilly_speedbump" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sept2014_hillbilly_speedbump/sept2014_hillbilly_speedbump_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30482" + { + "name" "The Unshaved Bear" + "propername" "1" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_sept2014_unshaved_bear" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/heavy/sept2014_unshaved_bear/sept2014_unshaved_bear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sept2014_unshaved_bear/sept2014_unshaved_bear.mdl" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30483" + { + "name" "Pocket Heavy" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_sept2014_pocket_heavy" + "item_description" "#TF_sept2014_cosmetic_desc" + "equip_region" "medal" + "image_inventory" "backpack/workshop/player/items/medic/sept2014_pocket_heavy/sept2014_pocket_heavy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sept2014_pocket_heavy/sept2014_pocket_heavy.mdl" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30484" + { + "name" "The Dadliest Catch" + "prefab" "hat" + "first_sale_date" "2014/10/30" + "item_name" "#TF_DadliestCatch" + "item_description" "#TF_DadliestCatch_Desc" + "holiday_restriction" "halloween_or_fullmoon" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/all_class/nobody_suspects_a_thing/nobody_suspects_a_thing" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/nobody_suspects_a_thing/nobody_suspects_a_thing_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30486" + { + "name" "Herzensbrecher" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_medic_herzensbrecher" + "item_description" "#TF_sf14_medic_herzensbrecher_Desc" + "equip_regions" + { + "medic_hip" "1" + "shirt" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_medic_herzensbrecher/sf14_medic_herzensbrecher" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_medic_herzensbrecher/sf14_medic_herzensbrecher.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30487" + { + "name" "Hundekopf" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_medic_hundkopf" + "item_description" "#TF_sf14_medic_hundkopf_Desc" + "equip_region" "whole_head" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_medic_hundkopf/sf14_medic_hundkopf" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_medic_hundkopf/sf14_medic_hundkopf.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30488" + { + "name" "Kriegsmaschine-9000" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_medic_kriegsmaschine_9000" + "item_description" "#TF_sf14_medic_kriegsmaschine_9000_Desc" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_medic_kriegsmaschine_9000/sf14_medic_kriegsmaschine_9000" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_medic_kriegsmaschine_9000/sf14_medic_kriegsmaschine_9000.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30489" + { + "name" "Transylvanian Toupe" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_vampire_makeover" + "item_description" "#TF_sf14_vampire_makeover_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_vampire_makeover/sf14_vampire_makeover" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_vampire_makeover/sf14_vampire_makeover.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30490" + { + "name" "Vampiric Vesture" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_vampiric_vesture" + "item_description" "#TF_sf14_vampiric_vesture_Desc" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_vampiric_vesture/sf14_vampiric_vesture" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_vampiric_vesture/sf14_vampiric_vesture.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30491" + { + "name" "Nugget Noggin" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_nugget_noggin" + "item_description" "#TF_sf14_nugget_noggin_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_regions" + { + "whole_head" "1" + "necklace" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sf14_nugget_noggin/sf14_nugget_noggin" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sf14_nugget_noggin/sf14_nugget_noggin.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30492" + { + "name" "Fowl Fists" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_fowl_fists" + "item_description" "#TF_sf14_fowl_fists_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/sf14_fowl_fists/sf14_fowl_fists" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sf14_fowl_fists/sf14_fowl_fists.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30493" + { + "name" "Talon Trotters" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_talon_trotters" + "item_description" "#TF_sf14_talon_trotters_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "feet" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sf14_talon_trotters/sf14_talon_trotters" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/sf14_talon_trotters/sf14_talon_trotters.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30494" + { + "name" "Head Hunter" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_scout_hunter_head" + "item_description" "#TF_sf14_scout_hunter_head_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_regions" + { + "hat" "1" + "necklace" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sf14_scout_hunter_head/sf14_scout_hunter_head" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sf14_scout_hunter_head/sf14_scout_hunter_head.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30495" + { + "name" "Claws And Infect" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_scout_hunter_arm" + "item_description" "#TF_sf14_scout_hunter_arm_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "scout_hands" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/sf14_scout_hunter_arm/sf14_scout_hunter_arm" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/sf14_scout_hunter_arm/sf14_scout_hunter_arm.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30496" + { + "name" "Crazy Legs" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_scout_hunter_legs" + "item_description" "#TF_sf14_scout_hunter_legs_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_regions" + { + "scout_pants" "1" + "feet" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sf14_scout_hunter_legs/sf14_scout_hunter_legs" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/sf14_scout_hunter_legs/sf14_scout_hunter_legs.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30497" + { + "name" "Ghost of Spies Checked Past" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_ghost_of_spies_checked_past" + "item_description" "#TF_sf14_ghost_of_spies_checked_past_Desc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "equip_region" "disconnected_floating_item" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/sf14_ghost_of_spies_checked_past/sf14_ghost_of_spies_checked_past" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sf14_ghost_of_spies_checked_past/sf14_ghost_of_spies_checked_past_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30498" + { + "name" "The Hooded Haunter" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_hooded_haunter_classes" + "item_description" "#TF_sf14_hooded_haunter_classes_Desc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "equip_region" "disconnected_floating_item" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/sf14_hooded_haunter_classes/sf14_hooded_haunter_classes" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sf14_hooded_haunter_classes/sf14_hooded_haunter_classes_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30499" + { + "name" "Conspiratorial Cut" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_conspiratorial_cut" + "item_description" "#TF_sf14_conspiratorial_cut_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "head_skin" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sf14_conspiratorial_cut/sf14_conspiratorial_cut" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_conspiratorial_cut/sf14_conspiratorial_cut.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30500" + { + "name" "Skinless Slashers" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_skinless_slashers" + "item_description" "#TF_sf14_skinless_slashers_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sf14_skinless_slashers/sf14_skinless_slashers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_skinless_slashers/sf14_skinless_slashers.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30501" + { + "name" "Marsupial Man" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_marsupial_man" + "item_description" "#TF_sf14_marsupial_man_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/sf14_marsupial_man/sf14_marsupial_man" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_marsupial_man/sf14_marsupial_man.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "30502" + { + "name" "Kanga Kickers" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_kanga_kickers" + "item_description" "#TF_sf14_kanga_kickers_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "feet" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sf14_kanga_kickers/sf14_kanga_kickers" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_kanga_kickers/sf14_kanga_kickers.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30503" + { + "name" "Roo Rippers" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_roo_rippers" + "item_description" "#TF_sf14_roo_rippers_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sf14_roo_rippers/sf14_roo_rippers" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_roo_rippers/sf14_roo_rippers.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30504" + { + "name" "Marsupial Muzzle" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_marsupial_muzzle" + "item_description" "#TF_sf14_marsupial_muzzle_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "whole_head" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/sf14_marsupial_muzzle/sf14_marsupial_muzzle" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_marsupial_muzzle/sf14_marsupial_muzzle.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30505" + { + "name" "Shadowman's Shade" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_hw2014_spy_voodoo_hat" + "item_description" "#TF_sf14_hw2014_spy_voodoo_hat_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/sf14_hw2014_spy_voodoo_hat/sf14_hw2014_spy_voodoo_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sf14_hw2014_spy_voodoo_hat/sf14_hw2014_spy_voodoo_hat.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30506" + { + "name" "Nightmare Hunter" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_nightmare_fedora" + "item_description" "#TF_sf14_nightmare_fedora_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/sf14_nightmare_fedora/sf14_nightmare_fedora" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sf14_nightmare_fedora/sf14_nightmare_fedora.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30507" + { + "name" "Rogue's Rabbit" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_the_rogues_rabbit" + "item_description" "#TF_sf14_the_rogues_rabbit_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/sf14_the_rogues_rabbit/sf14_the_rogues_rabbit" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/sf14_the_rogues_rabbit/sf14_the_rogues_rabbit.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30508" + { + "name" "Iron Fist" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_iron_fist" + "item_description" "#TF_sf14_iron_fist_Desc" + "equip_region" "engineer_left_arm" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/sf14_iron_fist/sf14_iron_fist" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sf14_iron_fist/sf14_iron_fist.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "30509" + { + "name" "Beep Man" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_beep_man" + "item_description" "#TF_sf14_beep_man_Desc" + "equip_region" + { + "whole_head" "1" + "shirt" "1" + } + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sf14_beep_man/sf14_beep_man" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sf14_beep_man/sf14_beep_man.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30510" + { + "name" "Soul of 'Spenser's Past" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14__soul_of_spensers_past" + "item_description" "#TF_sf14__soul_of_spensers_past_Desc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "equip_region" "disconnected_floating_item" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/sf14__soul_of_spensers_past/sf14__soul_of_spensers_past" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sf14__soul_of_spensers_past/sf14__soul_of_spensers_past.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "30511" + { + "name" "Tiny Texan" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_tiny_texan" + "item_description" "#TF_sf14_tiny_texan_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sf14_tiny_texan/sf14_tiny_texan" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sf14_tiny_texan/sf14_tiny_texan.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30512" + { + "name" "Facepeeler" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_spy_facepeeler" + "item_description" "#TF_sf14_spy_facepeeler_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/sf14_spy_facepeeler/sf14_spy_facepeeler" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/sf14_spy_facepeeler/sf14_spy_facepeeler.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30513" + { + "name" "Mr. Mundee's Wild Ride" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_sniper_ostrich_legs" + "item_description" "#TF_sf14_sniper_ostrich_legs_Desc" + "equip_region" "sniper_legs" + "image_inventory" "backpack/workshop/player/items/sniper/sf14_sniper_ostrich_legs/sf14_sniper_ostrich_legs" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sf14_sniper_ostrich_legs/sf14_sniper_ostrich_legs.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "30514" + { + "name" "Templar's Spirit" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_templar_hood" + "item_description" "#TF_sf14_templar_hood_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "whole_head" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_templar_hood/sf14_templar_hood" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_templar_hood/sf14_templar_hood.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30515" + { + "name" "Wings of Purity" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_purity_wings" + "item_description" "#TF_sf14_purity_wings_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "back" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sf14_purity_wings/sf14_purity_wings" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/sf14_purity_wings/sf14_purity_wings.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30516" + { + "name" "Forgotten King's Restless Head" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_deadking_head" + "item_description" "#TF_sf14_deadking_head_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "whole_head" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sf14_deadking_head/sf14_deadking_head" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/sf14_deadking_head/sf14_deadking_head.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30517" + { + "name" "Forgotten King's Pauldrons" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_deadking_pauldrons" + "item_description" "#TF_sf14_deadking_pauldrons_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "demoman_collar" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sf14_deadking_pauldrons/sf14_deadking_pauldrons" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/sf14_deadking_pauldrons/sf14_deadking_pauldrons.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "30518" + { + "name" "Eyeborg" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_demo_cyborg" + "item_description" "#TF_sf14_demo_cyborg_Desc" + "item_type_name" "#TF_Wearable_Augmentation" + "equip_region" "glasses" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sf14_demo_cyborg/sf14_demo_cyborg" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sf14_demo_cyborg/sf14_demo_cyborg.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30519" + { + "name" "Explosive Mind" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_explosive_mind" + "item_description" "#TF_sf14_explosive_mind_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sf14_explosive_mind/sf14_explosive_mind" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/sf14_explosive_mind/sf14_explosive_mind.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30520" + { + "name" "Ghoul Gibbin' Gear" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_ghoul_gibbing_gear" + "item_description" "#TF_sf14_ghoul_gibbing_gear_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "grenades" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sf14_ghoul_gibbing_gear/sf14_ghoul_gibbing_gear" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/sf14_ghoul_gibbing_gear/sf14_ghoul_gibbing_gear.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30521" + { + "name" "Hellhunter's Headpiece" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_hellhunters_headpiece" + "item_description" "#TF_sf14_hellhunters_headpiece_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/sf14_hellhunters_headpiece/sf14_hellhunters_headpiece" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/sf14_hellhunters_headpiece/sf14_hellhunters_headpiece.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30522" + { + "name" "Supernatural Stalker" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_the_supernatural_stalker" + "item_description" "#TF_sf14_the_supernatural_stalker_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/sf14_the_supernatural_stalker/sf14_the_supernatural_stalker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sf14_the_supernatural_stalker/sf14_the_supernatural_stalker.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30523" + { + "name" "Garden Bristles" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_hw2014_engi_gnome_beard" + "item_description" "#TF_sf14_hw2014_engi_gnome_beard_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/sf14_hw2014_engi_gnome_beard/sf14_hw2014_engi_gnome_beard" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sf14_hw2014_engi_gnome_beard/sf14_hw2014_engi_gnome_beard.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30524" + { + "name" "Battle Bird" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_the_battle_bird" + "item_description" "#TF_sf14_the_battle_bird_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/sf14_the_battle_bird/sf14_the_battle_bird" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sf14_the_battle_bird/sf14_the_battle_bird.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30525" + { + "name" "Creature's Grin" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_the_creatures_grin" + "item_description" "#TF_sf14_the_creatures_grin_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sf14_the_creatures_grin/sf14_the_creatures_grin" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sf14_the_creatures_grin/sf14_the_creatures_grin.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30526" + { + "name" "Arsonist Apparatus" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_hw2014_robot_arm" + "item_description" "#TF_sf14_hw2014_robot_arm_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/sf14_hw2014_robot_arm/sf14_hw2014_robot_arm" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sf14_hw2014_robot_arm/sf14_hw2014_robot_arm.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30527" + { + "name" "Moccasin Machinery" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_hw2014_robot_legg" + "item_description" "#TF_sf14_hw2014_robot_legg_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "feet" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/sf14_hw2014_robot_legg/sf14_hw2014_robot_legg" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sf14_hw2014_robot_legg/sf14_hw2014_robot_legg.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30528" + { + "name" "Lollichop Licker" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_lollichop_licker" + "item_description" "#TF_sf14_lollichop_licker_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sf14_lollichop_licker/sf14_lollichop_licker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sf14_lollichop_licker/sf14_lollichop_licker.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30529" + { + "name" "Mr. Juice" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_mr_juice" + "item_description" "#TF_sf14_mr_juice_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sf14_mr_juice/sf14_mr_juice" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sf14_mr_juice/sf14_mr_juice.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30530" + { + "name" "Vampyro" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_vampyro" + "item_description" "#TF_sf14_vampyro_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sf14_vampyro/sf14_vampyro" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sf14_vampyro/sf14_vampyro.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30531" + { + "name" "Bone-Cut Belt" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_halloween_bone_cut_belt" + "item_description" "#TF_sf14_halloween_bone_cut_belt_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" + { + "left_shoulder" "1" + "shirt" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/sf14_halloween_bone_cut_belt/sf14_halloween_bone_cut_belt" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sf14_halloween_bone_cut_belt/sf14_halloween_bone_cut_belt.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30532" + { + "name" "Bull Locks" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_halloween_bull_locks" + "item_description" "#TF_sf14_halloween_bull_locks_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/sf14_halloween_bull_locks/sf14_halloween_bull_locks" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sf14_halloween_bull_locks/sf14_halloween_bull_locks.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30533" + { + "name" "Minsk Beef" + "prefab" "halloween2014 no_craft hat" + "item_name" "#TF_sf14_halloween_minsk_beef" + "item_description" "#TF_sf14_halloween_minsk_beef_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/sf14_halloween_minsk_beef/sf14_halloween_minsk_beef" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sf14_halloween_minsk_beef/sf14_halloween_minsk_beef.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30534" + { + "name" "Immobile Suit" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_heavy_robo_chest" + "item_description" "#TF_sf14_heavy_robo_chest_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/sf14_heavy_robo_chest/sf14_heavy_robo_chest" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/sf14_heavy_robo_chest/sf14_heavy_robo_chest.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "30535" + { + "name" "Kritz Or Treat Canteen" + "prefab" "halloween2014 no_craft powerup_bottle" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + } + "item_name" "#TF_kritz_or_treat_canteen" + "item_description" "#TF_kritz_or_treat_canteen_Desc" + "image_inventory" "backpack/workshop/player/items/scout/kritz_or_treat_canteen/kritz_or_treat_canteen" + "model_player" "models/workshop/player/items/scout/kritz_or_treat_canteen/kritz_or_treat_canteen.mdl" + "attributes" + { + "kill eater score type" + { + "attribute_class" "kill_eater_score_type" + "value" "109" + } + } + } + "30536" + { + "name" "Cursed Cruise" + "prefab" "halloween2014 no_craft misc" + "item_name" "#TF_sf14_cursed_cruise" + "item_description" "#TF_sf14_cursed_cruise_Desc" + "equip_region" "disconnected_floating_item" + "image_inventory" "backpack/workshop/player/items/all_class/sf14_cursed_cruise/sf14_cursed_cruise" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sf14_cursed_cruise/sf14_cursed_cruise_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "propername" "1" + } + "30538" + { + "name" "EOTL_Skier" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Mask" + "item_name" "#TF_EOTL_skier" + "item_description" "#TF_skier_Desc" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/skier/skier" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/skier/skier.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30539" + { + "name" "EOTL_Insulated_innovator" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_EOTL_insulated_innovator" + "item_description" "#TF_insulated_innovator_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/insulated_innovator/insulated_innovator" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/insulated_innovator/insulated_innovator.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30540" + { + "name" "EOTL_blinks_breeches" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_EOTL_blinks_breeches" + "item_description" "#TF_blinks_breeches_Desc" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/blinks_breeches/blinks_breeches" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/blinks_breeches/blinks_breeches.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30541" + { + "name" "EOTL_demo_dynamite" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Bombs" + "item_name" "#TF_EOTL_demo_dynamite" + "item_description" "#TF_demo_dynamite_Desc" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/demo_dynamite/demo_dynamite" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/demo_dynamite/demo_dynamite.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30542" + { + "name" "EOTL_Brisk-weather Beanie" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_briskweather_beanie" + "item_description" "#TF_briskweather_beanie_Desc" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/briskweather_beanie/briskweather_beanie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/briskweather_beanie/briskweather_beanie_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30543" + { + "name" "EOTL_winter_pants" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_EOTL_winter_pants" + "item_description" "#TF_eotl_winter_pants_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/engineer/eotl_winter_pants/eotl_winter_pants" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/eotl_winter_pants/eotl_winter_pants.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30544" + { + "name" "EOTL_pyro_sweater" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Sweater" + "item_name" "#TF_EOTL_pyro_sweater" + "item_description" "#TF_pyro_sweater_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/pyro/pyro_sweater/pyro_sweater" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/pyro_sweater/pyro_sweater.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30545" + { + "name" "EOTL_Flat_cap" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_flat_cap" + "item_description" "#TF_eotl_flat_cap_Desc" + "image_inventory" "backpack/workshop/player/items/heavy/eotl_flat_cap/eotl_flat_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/eotl_flat_cap/eotl_flat_cap.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30546" + { + "name" "EOTL_FURCAP" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_furcap" + "item_description" "#TF_eotl_furcap_Desc" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/eotl_furcap/eotl_furcap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eotl_furcap/eotl_furcap_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30547" + { + "name" "EOTL_summerhat" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_summerhat" + "item_description" "#TF_eotl_summerhat_Desc" + "image_inventory" "backpack/workshop/player/items/demo/eotl_summerhat/eotl_summerhat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/eotl_summerhat/eotl_summerhat.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30548" + { + "name" "EOTL_soldier_garrison" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_soldier_garrison" + "item_description" "#TF_soldier_garrison_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/soldier_garrison/soldier_garrison" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/soldier_garrison/soldier_garrison.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30549" + { + "name" "EOTL_hiphunter_hat" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_hiphunter_hat" + "item_description" "#TF_hiphunter_hat_Desc" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hiphunter_hat/hiphunter_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hiphunter_hat/hiphunter_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30550" + { + "name" "EOTL_hiphunter_jacket" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Jacket" + "item_name" "#TF_EOTL_hiphunter_jacket" + "item_description" "#TF_hiphunter_jacket_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/all_class/hiphunter_jacket/hiphunter_jacket" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hiphunter_jacket/hiphunter_jacket_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "demoman" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30551" + { + "name" "EOTL_hiphunter_boots" + "prefab" "no_craft misc" + "item_name" "#TF_EOTL_hiphunter_boots" + "item_description" "#TF_hiphunter_boots_Desc" + "item_type_name" "#TF_Wearable_Boots" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hiphunter_boots/hiphunter_boots" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hiphunter_boots/hiphunter_boots_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30552" + { + "name" "EOTL_thermal_sleeves" + "prefab" "no_craft misc" + "item_name" "#TF_EOTL_thermal_sleeves" + "item_description" "#TF_thermal_sleeves_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/thermal_sleeves/thermal_sleeves" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/thermal_sleeves/thermal_sleeves.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30553" + { + "name" "EOTL_soldierhat" + "prefab" "no_craft hat" + "item_name" "#TF_EOTL_soldierhat" + "item_description" "#TF_eotl_soldierhat_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/eotl_soldierhat/eotl_soldierhat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/eotl_soldierhat/eotl_soldierhat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30554" + { + "name" "EOTL_beard" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_FacialHair" + "item_name" "#TF_EOTL_beard" + "item_description" "#TF_beard_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/soldier/beard/beard" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/beard/beard.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30555" + { + "name" "EOTL_demopants" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Pants" + "item_name" "#TF_EOTL_demopants" + "item_description" "#TF_eotl_demopants_Desc" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/demo/eotl_demopants/eotl_demopants" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/eotl_demopants/eotl_demopants.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30556" + { + "name" "EOTL_Ursa Major" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Vest" + "item_name" "#TF_EOTL_ursa_major" + "item_description" "#TF_ursa_major_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/ursa_major/ursa_major" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/ursa_major/ursa_major.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30557" + { + "name" "EOTL_sheavyshirt" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Jacket" + "item_name" "#TF_EOTL_sheavyshirt" + "item_description" "#TF_eotl_sheavyshirt_Desc" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/eotl_sheavyshirt/eotl_sheavyshirt" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/eotl_sheavyshirt/eotl_sheavyshirt.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30558" + { + "name" "EOTL_Coldfront Curbstompers" + "prefab" "no_craft misc" + "item_name" "#TF_EOTL_coldfront_curbstompers" + "item_description" "#TF_coldfront_curbstompers_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/soldier/coldfront_curbstompers/coldfront_curbstompers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/coldfront_curbstompers/coldfront_curbstompers.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30559" + { + "name" "End of the Line Community Update Medal" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_EOTL_medal" + "item_description" "#TF_EOTL_medal_Desc" + "equip_region" "medal" + "image_inventory" "backpack/workshop/player/items/all_class/eotl_medal/eotl_medal" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eotl_medal/eotl_medal_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30561" + { + "name" "The Bootenkhamuns" + "prefab" "misc" + "first_sale_date" "2015/01/14" + "item_type_name" "#TF_Wearable_Boots" + "item_name" "#TF_tr_bootenkhamuns" + "item_description" "#TF_tr_bootenkhamuns_Desc" + "propername" "1" + "equip_region" "feet" + "image_inventory" "backpack/workshop_partner/player/items/scout/tr_bootenkhamuns/tr_bootenkhamuns" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop_partner/player/items/scout/tr_bootenkhamuns/tr_bootenkhamuns.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + } + "30563" + { + "name" "Jungle Booty" + "prefab" "misc" + "first_sale_date" "2015/01/15" + "item_type_name" "#TF_Wearable_Shorts" + "item_name" "#TF_tr_jungle_booty" + "item_description" "#TF_tr_jungle_booty_Desc" + "equip_region" "pants" + "image_inventory" "backpack/workshop_partner/player/items/all_class/tr_jungle_booty/tr_jungle_booty" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop_partner/player/items/all_class/tr_jungle_booty/tr_jungle_booty_heavy.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30564" + { + "name" "Orion's Belt" + "prefab" "misc" + "first_sale_date" "2015/01/14" + "item_type_name" "#TF_Wearable_Holster" + "item_name" "#TF_tr_orions_belt" + "item_description" "#TF_tr_orions_belt_Desc" + "image_inventory" "backpack/workshop_partner/player/items/scout/tr_orions_belt/tr_orions_belt" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop_partner/player/items/scout/tr_orions_belt/tr_orions_belt.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30567" + { + "name" "The Crown of the Old Kingdom" + "prefab" "hat" + "first_sale_date" "2015/01/15" + "item_name" "#TF_tr_crown_of_the_old_kingdom" + "item_description" "#TF_tr_crown_of_the_old_kingdom_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/all_class/tr_crown_of_the_old_kingdom/tr_crown_of_the_old_kingdom" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/tr_crown_of_the_old_kingdom/tr_crown_of_the_old_kingdom_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30569" + { + "name" "The Tomb Readers" + "prefab" "misc" + "first_sale_date" "2015/01/15" + "item_type_name" "#TF_Wearable_Glasses" + "item_name" "#TF_tomb_readers" + "item_description" "#TF_tomb_readers_Desc" + "propername" "1" + "equip_region" "glasses" + "image_inventory" "backpack/workshop_partner/player/items/all_class/tomb_readers/tomb_readers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/tomb_readers/tomb_readers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30570" + { + "name" "Pool Party Taunt" + "prefab" "taunt" + "first_sale_date" "2014/06/17" + "item_name" "#TF_TauntPyroPoolParty" + "item_description" "#TF_TauntPyroPoolParty_Desc" + "image_inventory" "backpack/player/items/all_class/all_eotl_taunt" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "100" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_pool_party_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_pool_party_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/taunts/pyro_poolparty/pyro_poolparty.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "pyro" "scenes/workshop/player/items/pool_party/taunt_pool_party_intro.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/items/pool_party/taunt_pool_party_outro.vcd" + } + "particle_attachment" "taunt_effect" + "min_taunt_time" "5" + "stop_taunt_if_moved" "1" + "camera_dist_up" "-10" + } + } + "30571" + { + "name" "Brimstone" + "prefab" "misc" + "first_sale_date" "2014/12/03" + "item_type_name" "#TF_Wearable_Horns" + "item_name" "#TF_brimstone_hat" + "item_description" "#TF_brimstone_hat_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brimstone_hat/brimstone_hat" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brimstone_hat/brimstone_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_brimstone_Style_WithHat" + } + "1" + { + "name" "#TF_brimstone_Style_WithNoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "30572" + { + "name" "Taunt: The Boston Breakdance" + "first_sale_date" "2015/03/12" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_boston_breakdance" + "item_description" "#TF_taunt_the_boston_breakdance_Desc" + "image_inventory" "backpack/workshop/player/items/scout/taunt_the_boston_breakdance/taunt_the_boston_breakdance" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "taunt success sound" + { + "attribute_class" "taunt_success_sound" + "value" "scout.boston_breakdance_music" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_boston_breakdance.vcd" + } + } + "visuals" + { + "custom_sound0" "scout.boston_breakdance_music" + } + } + "30573" + { + "name" "dec2014 Marauders Mask" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_marauders_mask" + "item_description" "#TF_dec2014_cosmetic_desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec2014_marauders_mask/dec2014_marauders_mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec2014_marauders_mask/dec2014_marauders_mask.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30574" + { + "name" "dec2014 Truands Tunic" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_truands_tunic" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec2014_truands_tunic/dec2014_truands_tunic" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec2014_truands_tunic/dec2014_truands_tunic.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30575" + { + "name" "dec2014 Fools Footwear" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_fools_footwear" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Shoes" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec2014_fools_footwear/dec2014_fools_footwear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec2014_fools_footwear/dec2014_fools_footwear.mdl" + "used_by_classes" + { + "scout" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30576" + { + "name" "dec2014 CoPilot_2014" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_copilot_2014" + "item_description" "#TF_dec2014_cosmetic_desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec2014_copilot_2014/dec2014_copilot_2014" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec2014_copilot_2014/dec2014_copilot_2014_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30578" + { + "name" "dec2014 Skullcap" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_skullcap" + "item_description" "#TF_dec2014_cosmetic_desc" + "image_inventory" "backpack/workshop/player/items/soldier/dec2014_skullcap/dec2014_skullcap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec2014_skullcap/dec2014_skullcap.mdl" + "used_by_classes" + { + "soldier" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30580" + { + "name" "dec2014 2014_pyromancer_hood" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_2014_pyromancer_hood" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/dec2014_2014_pyromancer_hood/dec2014_2014_pyromancer_hood" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec2014_2014_pyromancer_hood/dec2014_2014_pyromancer_hood.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30581" + { + "name" "dec2014 Pyromancer's Raiments" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_pyromancers_raiments" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/pyro/dec2014_pyromancers_raiments/dec2014_pyromancers_raiments" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec2014_pyromancers_raiments/dec2014_pyromancers_raiments.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30582" + { + "name" "dec2014 Black Knights Bascinet" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_black_knights_bascinet" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec2014_black_knights_bascinet/dec2014_black_knights_bascinet" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/dec2014_black_knights_bascinet/dec2014_black_knights_bascinet.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30583" + { + "name" "dec2014 Torchers Tabard" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_torchers_tabard" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec2014_torchers_tabard/dec2014_torchers_tabard" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/dec2014_torchers_tabard/dec2014_torchers_tabard.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30584" + { + "name" "dec2014 Armoured Appendages" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_armoured_appendages" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "sleeves" + "image_inventory" "backpack/workshop/player/items/pyro/dec2014_armoured_appendages/dec2014_armoured_appendages" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/dec2014_armoured_appendages/dec2014_armoured_appendages.mdl" + "used_by_classes" + { + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "30586" + { + "name" "dec2014 Viking Helmet" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_viking_helmet" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec2014_viking_helmet/dec2014_viking_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec2014_viking_helmet/dec2014_viking_helmet.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30587" + { + "name" "dec2014 Viking Boots" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_viking_boots" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Boots" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/dec2014_viking_boots/dec2014_viking_boots" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec2014_viking_boots/dec2014_viking_boots.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30588" + { + "name" "dec2014 heavy_parka" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_heavy_parka" + "item_description" "#TF_dec2014_cosmetic_desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/dec2014_heavy_parka/dec2014_heavy_parka" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec2014_heavy_parka/dec2014_heavy_parka.mdl" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30589" + { + "name" "dec2014 The Big Papa" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_the_big_papa" + "item_description" "#TF_dec2014_cosmetic_desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/dec2014_the_big_papa/dec2014_the_big_papa" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec2014_the_big_papa/dec2014_the_big_papa.mdl" + "used_by_classes" + { + "heavy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30590" + { + "name" "dec2014 engineer_detectiveholster" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_engineer_detectiveholster" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Uniform" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/dec2014_engineer_detectiveholster/dec2014_engineer_detectiveholster" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec2014_engineer_detectiveholster/dec2014_engineer_detectiveholster.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30591" + { + "name" "dec2014 engineer_detectiveradio" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_engineer_detectiveradio" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_ElectronicDevice" + "equip_region" "engineer_pocket" + "image_inventory" "backpack/workshop/player/items/engineer/dec2014_engineer_detectiveradio/dec2014_engineer_detectiveradio" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec2014_engineer_detectiveradio/dec2014_engineer_detectiveradio.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30592" + { + "name" "dec2014 engineer_detectiveglasses" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_engineer_detectiveglasses" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/workshop/player/items/engineer/dec2014_engineer_detectiveglasses/dec2014_engineer_detectiveglasses" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec2014_engineer_detectiveglasses/dec2014_engineer_detectiveglasses.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + } + "30593" + { + "name" "dec2014 engineer_seal" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_engineer_seal" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "engineer_pocket" + "image_inventory" "backpack/workshop/player/items/engineer/dec2014_engineer_seal/dec2014_engineer_seal" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/dec2014_engineer_seal/dec2014_engineer_seal.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30595" + { + "name" "dec2014 medic_unknown_mann" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_medic_unknown_mann" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Bandages" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/medic/dec2014_medic_unknown_mann/dec2014_medic_unknown_mann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec2014_medic_unknown_mann/dec2014_medic_unknown_mann.mdl" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30596" + { + "name" "dec2014 Surgeon's Shako" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_surgeons_shako" + "item_description" "#TF_dec2014_cosmetic_desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/dec2014_surgeons_shako/dec2014_surgeons_shako" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec2014_surgeons_shako/dec2014_surgeons_shako.mdl" + "used_by_classes" + { + "medic" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30597" + { + "name" "dec2014 hunter_beard" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_hunter_beard" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/sniper/dec2014_hunter_beard/dec2014_hunter_beard" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec2014_hunter_beard/dec2014_hunter_beard.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30598" + { + "name" "dec2014 hunter_ushanka" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_hunter_ushanka" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Hat" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/dec2014_hunter_ushanka/dec2014_hunter_ushanka" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec2014_hunter_ushanka/dec2014_hunter_ushanka.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30599" + { + "name" "dec2014 hunter_vest" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_hunter_vest" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/dec2014_hunter_vest/dec2014_hunter_vest" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec2014_hunter_vest/dec2014_hunter_vest.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30600" + { + "name" "dec2014 Wally Pocket" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_wally_pocket" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "sniper_pocket_left" + "image_inventory" "backpack/workshop/player/items/sniper/dec2014_wally_pocket/dec2014_wally_pocket" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec2014_wally_pocket/dec2014_wally_pocket.mdl" + "used_by_classes" + { + "sniper" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30601" + { + "name" "eotl_winter_coat" + "prefab" "no_craft misc" + "item_type_name" "#TF_Wearable_Coat" + "item_name" "#TF_eotl_winter_coat" + "item_description" "#TF_eotl_winter_coat_Desc" + "equip_region" "soldier_coat" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/eotl_winter_coat/eotl_winter_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/eotl_winter_coat/eotl_winter_coat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30602" + { + "name" "dec2014 The Puffy Provocateur" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_the_puffy_provocateur" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/dec2014_the_puffy_provocateur/dec2014_the_puffy_provocateur" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec2014_the_puffy_provocateur/dec2014_the_puffy_provocateur.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30603" + { + "name" "dec2014 Stealthy Scarf" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_stealthy_scarf" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Scarf" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/dec2014_stealthy_scarf/dec2014_stealthy_scarf" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec2014_stealthy_scarf/dec2014_stealthy_scarf.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30604" + { + "name" "dec2014 Comforter" + "prefab" "no_craft hat" + "item_name" "#TF_dec2014_comforter" + "item_description" "#TF_dec2014_cosmetic_desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec2014_comforter/dec2014_comforter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec2014_comforter/dec2014_comforter.mdl" + "used_by_classes" + { + "demoman" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30605" + { + "name" "dec2014 Thermal Insulation Layer" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_thermal_insulation_layer" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/dec2014_thermal_insulation_layer/dec2014_thermal_insulation_layer" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/dec2014_thermal_insulation_layer/dec2014_thermal_insulation_layer.mdl" + "used_by_classes" + { + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30606" + { + "name" "dec2014 Pocket Momma" + "prefab" "no_craft misc" + "item_name" "#TF_dec2014_pocket_momma" + "item_description" "#TF_dec2014_cosmetic_desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "medal" + "image_inventory" "backpack/workshop/player/items/spy/dec2014_pocket_momma/dec2014_pocket_momma" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec2014_pocket_momma/dec2014_pocket_momma.mdl" + "used_by_classes" + { + "spy" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30607" + { + "name" "The Pocket Raiders" + "prefab" "misc" + "first_sale_date" "2015/01/14" + "item_type_name" "#TF_Wearable_PocketBuddy" + "item_name" "#TF_pocket_raiders" + "item_description" "#TF_pocket_raiders_Desc" + "propername" "1" + "equip_regions" + { + "sniper_pocket" "1" + "engineer_pocket" "1" + "grenades" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/all_class/pocket_raiders/pocket_raiders" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/pocket_raiders/pocket_raiders_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/pocket_raiders/pocket_raiders_%s.mdl" + } + "name" "#TF_pocket_raiders_Style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/pocket_raiders_carter_style/pocket_raiders_carter_style_%s.mdl" + } + "name" "#TF_pocket_raiders_Style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/pocket_raiders_horus_style/pocket_raiders_horus_style_%s.mdl" + } + "name" "#TF_pocket_raiders_Style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/pocket_raiders_isis_style/pocket_raiders_isis_style_%s.mdl" + } + "name" "#TF_pocket_raiders_Style3" + } + } + } + } + "30609" + { + "name" "Taunt: The Killer Solo" + "first_sale_date" "2015/03/12" + "prefab" "no_craft taunt" + "item_name" "#TF_killer_solo" + "item_description" "#TF_killer_solo_Desc" + "image_inventory" "backpack/workshop/player/items/sniper/taunt_killer_solo/taunt_killer_solo" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "taunt success sound" + { + "attribute_class" "taunt_success_sound" + "value" "sniper.killer_solo_music" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/killer_solo.vcd" + } + "custom_taunt_prop_per_class" + { + "sniper" "models/workshop/player/items/sniper/killer_solo/killer_solo.mdl" + } + } + "visuals" + { + "custom_sound0" "sniper.killer_solo_music" + } + } + "30614" + { + "name" "Taunt: Most Wanted" + "first_sale_date" "2015/03/12" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_most_wanted" + "item_description" "#TF_taunt_most_wanted_Desc" + "image_inventory" "backpack/workshop/player/items/sniper/taunt_most_wanted/taunt_most_wanted" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/taunt_most_wanted.vcd" + } + "custom_taunt_prop_per_class" + { + "sniper" "models/workshop/player/items/sniper/taunt_most_wanted/taunt_most_wanted.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "sniper" "scenes/workshop/player/items/most_wanted/most_wanted.vcd" + } + } + } + "30615" + { + "name" "Taunt: The Boxtrot" + "first_sale_date" "2015/06/24" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_spy_boxtrot" + "item_description" "#TF_taunt_spy_boxtrot_Desc" + "ad_text" "#TF_taunt_spy_boxtrot_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "1" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + } + "image_inventory" "backpack/workshop/player/items/spy/taunt_spy_boxtrot/taunt_spy_boxtrot" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_spy_boxtrot_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_spy_boxtrot_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_FORWARD" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_spy_boxtrot_walk.vcd" + } + "released" + { + "spy" "scenes/workshop/player/spy/low/taunt_spy_boxtrot_hide.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "spy" "models/workshop/player/items/spy/taunt_spy_boxtrot/taunt_spy_boxtrot.mdl" + } + } + } + "30616" + { + "name" "Taunt: The Proletariat Showoff" + "first_sale_date" "2015/06/24" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_proletariat_showoff" + "item_description" "#TF_taunt_proletariat_showoff_Desc" + "ad_text" "#TF_taunt_proletariat_showoff_AdText" + "image_inventory" "backpack/workshop/player/items/heavy/taunt_soviet_showoff/taunt_soviet_showoff" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "heavy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_soviet_showoff.vcd" + } + } + } + "30618" + { + "name" "Taunt: Bucking Bronco" + "first_sale_date" "2015/12/14" + "prefab" "no_craft taunt" + "item_name" "#TF_bucking_bronco" + "item_description" "#TF_bucking_bronco_Desc" + "image_inventory" "backpack/workshop/player/items/engineer/bucking_bronco/bucking_bronco" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/bucking_bronco.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/bucking_bronco_end.vcd" + } + "custom_taunt_prop_per_class" + { + "engineer" "models/workshop/player/items/engineer/bucking_bronco/bucking_bronco.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/bucking_bronco_prop.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/bucking_bronco_prop_end.vcd" + } + "min_taunt_time" "5" + "stop_taunt_if_moved" "1" + } + } + "30621" + { + "name" "Taunt: Burstchester" + "prefab" "no_craft taunt marketable" + "item_name" "#TF_invasion_taunt_burstchester" + "item_description" "#TF_invasion_taunt_burstchester_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_burstchester.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_burstchester.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_burstchester.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_burstchester.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_burstchester.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_burstchester.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_burstchester.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_burstchester.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_burstchester.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_scout.mdl" + "sniper" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_demo.mdl" + "medic" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_medic.mdl" + "heavy" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_pyro.mdl" + "spy" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_spy.mdl" + "engineer" "models/workshop/player/items/all_class/taunt_burstchester/taunt_burstchester_engineer.mdl" + } + } + } + "30623" + { + "name" "The Rotation Sensation" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_the_rotation_sensation" + "item_description" "#TF_cc_summer2015_the_rotation_sensation_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/cc_summer2015_the_rotation_sensation/cc_summer2015_the_rotation_sensation" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cc_summer2015_the_rotation_sensation/cc_summer2015_the_rotation_sensation_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cc_summer2015_the_rotation_sensation/cc_summer2015_the_rotation_sensation_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cc_summer2015_the_rotation_sensation_style2/cc_summer2015_the_rotation_sensation_style2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30625" + { + "name" "The Physician's Protector" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_the_physicians_protector" + "item_description" "#TF_cc_summer2015_the_physicians_protector_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/cc_summer2015_the_physicians_protector/cc_summer2015_the_physicians_protector" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/cc_summer2015_the_physicians_protector/cc_summer2015_the_physicians_protector.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30626" + { + "name" "The Vascular Vestment" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_the_vascular_vestment" + "item_description" "#TF_cc_summer2015_the_vascular_vestment_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/cc_summer2015_the_vascular_vestment/cc_summer2015_the_vascular_vestment" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/cc_summer2015_the_vascular_vestment/cc_summer2015_the_vascular_vestment.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30627" + { + "name" "Bruce's Bonnet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_bruces_bonnet" + "item_description" "#TF_cc_summer2015_bruces_bonnet_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/cc_summer2015_bruces_bonnet/cc_summer2015_bruces_bonnet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/cc_summer2015_bruces_bonnet/cc_summer2015_bruces_bonnet.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30628" + { + "name" "Outta' Sight" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_outta_sight" + "item_description" "#TF_cc_summer2015_outta_sight_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/cc_summer2015_outta_sight/cc_summer2015_outta_sight" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/cc_summer2015_outta_sight/cc_summer2015_outta_sight.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30629" + { + "name" "Support Spurs" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_support_spurs" + "item_description" "#TF_cc_summer2015_support_spurs_Desc" + "item_type_name" "#TF_Wearable_Boots" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/cc_summer2015_support_spurs/cc_summer2015_support_spurs" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cc_summer2015_support_spurs/cc_summer2015_support_spurs_%s.mdl" + } + "used_by_classes" + { + "sniper" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30631" + { + "name" "Lurker's Leathers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_lurkers_leathers" + "item_description" "#TF_cc_summer2015_lurkers_leathers_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/cc_summer2015_lurkers_leathers/cc_summer2015_lurkers_leathers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/cc_summer2015_lurkers_leathers/cc_summer2015_lurkers_leathers.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/cc_summer2015_lurkers_leathers/cc_summer2015_lurkers_leathers.mdl" + "name" "#TF_cc_summer2015_lurkers_leathers_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/spy/cc_summer2015_lurkers_leathers_2/cc_summer2015_lurkers_leathers_2.mdl" + "name" "#TF_cc_summer2015_lurkers_leathers_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30633" + { + "name" "Commissar's Coat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_commissars_coat" + "item_description" "#TF_cc_summer2015_commissars_coat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/cc_summer2015_commissars_coat/cc_summer2015_commissars_coat" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/cc_summer2015_commissars_coat/cc_summer2015_commissars_coat.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30634" + { + "name" "Sheriff's Stetson" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_sheriffs_stetson" + "item_description" "#TF_cc_summer2015_sheriffs_stetson_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/cc_summer2015_sheriffs_stetson/cc_summer2015_sheriffs_stetson" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/cc_summer2015_sheriffs_stetson/cc_summer2015_sheriffs_stetson.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/cc_summer2015_sheriffs_stetson/cc_summer2015_sheriffs_stetson.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/cc_summer2015_sheriffs_stetson_style1/cc_summer2015_sheriffs_stetson_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + } + "30635" + { + "name" "Wild West Waistcoat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_wild_west_waistcoat" + "item_description" "#TF_cc_summer2015_wild_west_waistcoat_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/cc_summer2015_wild_west_waistcoat/cc_summer2015_wild_west_waistcoat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/cc_summer2015_wild_west_waistcoat/cc_summer2015_wild_west_waistcoat.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30636" + { + "name" "Fortunate Son" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_fortunate_son" + "item_description" "#TF_cc_summer2015_fortunate_son_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/cc_summer2015_fortunate_son/cc_summer2015_fortunate_son" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/cc_summer2015_fortunate_son/cc_summer2015_fortunate_son.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30637" + { + "name" "Flak Jack" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_flak_jack" + "item_description" "#TF_cc_summer2015_flak_jack_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/cc_summer2015_flak_jack/cc_summer2015_flak_jack" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/cc_summer2015_flak_jack/cc_summer2015_flak_jack.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30640" + { + "name" "Captain Cardbeard Cutthroat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_captain_cardbeard_cutthroat" + "item_description" "#TF_cc_summer2015_captain_cardbeard_cutthroat_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/cc_summer2015_captain_cardbeard_cutthroat/cc_summer2015_captain_cardbeard_cutthroat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cc_summer2015_captain_cardbeard_cutthroat/cc_summer2015_captain_cardbeard_cutthroat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "30643" + { + "name" "Potassium Bonnett" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_potassium_bonnett" + "item_description" "#TF_cc_summer2015_potassium_bonnett_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/cc_summer2015_potassium_bonnett/cc_summer2015_potassium_bonnett" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cc_summer2015_potassium_bonnett/cc_summer2015_potassium_bonnett_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30644" + { + "name" "White Russian" + "prefab" "no_craft hat marketable" + "item_name" "#TF_cc_summer2015_white_russian" + "item_description" "#TF_cc_summer2015_white_russian_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/cc_summer2015_white_russian/cc_summer2015_white_russian" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/cc_summer2015_white_russian/cc_summer2015_white_russian.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30645" + { + "name" "El Duderino" + "prefab" "no_craft misc marketable" + "item_name" "#TF_cc_summer2015_el_duderino" + "item_description" "#TF_cc_summer2015_el_duderino_Desc" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/heavy/cc_summer2015_el_duderino/cc_summer2015_el_duderino" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/cc_summer2015_el_duderino/cc_summer2015_el_duderino.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30646" + { + "name" "Captain Space Mann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_captain_space_mann" + "item_description" "#TF_invasion_captain_space_mann_Desc" + "equip_region" "face" + "item_type_name" "#TF_Wearable_Helmet" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/invasion_captain_space_mann/invasion_captain_space_mann" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/invasion_captain_space_mann/invasion_captain_space_mann_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30647" + { + "name" "Phononaut" + "prefab" "no_craft hat marketable" + "item_name" "#TF_invasion_phononaut" + "item_description" "#TF_invasion_phononaut_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/invasion_phononaut/invasion_phononaut" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/invasion_phononaut/invasion_phononaut_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30648" + { + "name" "Corona Australis" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_corona_australis" + "item_description" "#TF_invasion_corona_australis_Desc" + "equip_region" "whole_head" + "item_type_name" "#TF_Wearable_Augmentation" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/invasion_corona_australis/invasion_corona_australis" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/invasion_corona_australis/invasion_corona_australis.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30649" + { + "name" "Final Frontiersman" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_final_frontiersman" + "item_description" "#TF_invasion_final_frontiersman_Desc" + "equip_region" "feet" + "item_type_name" "#TF_Wearable_Apparel" + "image_inventory" "backpack/workshop/player/items/sniper/invasion_final_frontiersman/invasion_final_frontiersman" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/invasion_final_frontiersman/invasion_final_frontiersman.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30650" + { + "name" "Starduster" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_starduster" + "item_description" "#TF_invasion_starduster_Desc" + "equip_region" "sniper_vest" + "item_type_name" "#TF_Wearable_Cape" + "image_inventory" "backpack/workshop/player/items/sniper/invasion_starduster/invasion_starduster" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/invasion_starduster/invasion_starduster.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30651" + { + "name" "The Graylien" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_the_graylien" + "item_description" "#TF_invasion_the_graylien_Desc" + "equip_region" "head_skin" + "propername" "1" + "item_type_name" "#TF_Wearable_Costume" + "image_inventory" "backpack/workshop/player/items/spy/invasion_the_graylien/invasion_the_graylien" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/invasion_the_graylien/invasion_the_graylien.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30652" + { + "name" "Phobos Filter" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_phobos_filter" + "item_description" "#TF_invasion_phobos_filter_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Augmentation" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/invasion_phobos_filter/invasion_phobos_filter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/invasion_phobos_filter/invasion_phobos_filter.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30653" + { + "name" "Sucker Slug" + "prefab" "no_craft hat marketable" + "item_name" "#TF_invasion_sucker_slug" + "item_description" "#TF_invasion_sucker_slug_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/invasion_sucker_slug/invasion_sucker_slug" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/invasion_sucker_slug/invasion_sucker_slug.mdl" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30654" + { + "name" "Life Support System" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_life_support_system" + "item_description" "#TF_invasion_life_support_system_Desc" + "equip_region" "engineer_pocket" + "item_type_name" "#TF_Wearable_Life_Support" + "image_inventory" "backpack/workshop/player/items/engineer/invasion_life_support_system/invasion_life_support_system" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/invasion_life_support_system/invasion_life_support_system.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30655" + { + "name" "Rocket Operator" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_rocket_operator" + "item_description" "#TF_invasion_rocket_operator_Desc" + "equip_region" "shirt" + "item_type_name" "#TF_Wearable_Apparel" + "image_inventory" "backpack/workshop/player/items/engineer/invasion_rocket_operator/invasion_rocket_operator" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/invasion_rocket_operator/invasion_rocket_operator.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30658" + { + "name" "Universal Translator" + "prefab" "no_craft hat marketable" + "item_name" "#TF_invasion_universal_translator" + "item_description" "#TF_invasion_universal_translator_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/all_class/invasion_universal_translator/invasion_universal_translator" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/invasion_universal_translator/invasion_universal_translator_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_invasion_universal_translator_Style0" + } + "1" + { + "name" "#TF_invasion_universal_translator_Style1" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + } + } + } + "30661" + { + "name" "Cadet Visor" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_cadet_visor" + "item_description" "#TF_invasion_cadet_visor_Desc" + "equip_region" "glasses" + "item_type_name" "#TF_Wearable_Glasses" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/invasion_cadet_visor/invasion_cadet_visor" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/invasion_cadet_visor/invasion_cadet_visor.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30662" + { + "name" "A Head Full of Hot Air" + "prefab" "no_craft hat marketable" + "item_name" "#TF_invasion_a_head_full_of_hot_air" + "item_description" "#TF_invasion_a_head_full_of_hot_air_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/invasion_a_head_full_of_hot_air/invasion_a_head_full_of_hot_air" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/invasion_a_head_full_of_hot_air/invasion_a_head_full_of_hot_air.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30663" + { + "name" "Jupiter Jetpack" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_jupiter_jetpack" + "item_description" "#TF_invasion_jupiter_jetpack_Desc" + "equip_region" "back" + "item_type_name" "#TF_Wearable_Jetpack" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/invasion_jupiter_jetpack/invasion_jupiter_jetpack" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/invasion_jupiter_jetpack/invasion_jupiter_jetpack.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30664" + { + "name" "The Space Diver" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_the_space_diver" + "item_description" "#TF_invasion_the_space_diver_Desc" + "equip_region" "shirt" + "propername" "1" + "item_type_name" "#TF_Wearable_Apparel" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/invasion_the_space_diver/invasion_the_space_diver" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/invasion_the_space_diver/invasion_the_space_diver.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30665" + { + "name" "Shooting Star" + "prefab" "no_craft weapon_machina marketable" + "craft_class" "" + "item_type_name" "#TF_Weapon_SniperRifle" + "item_name" "#TF_invasion_sniperrifle" + "item_description" "#TF_invasion_sniperrifle_Desc" + "image_inventory" "backpack/workshop/weapons/c_models/c_invasion_sniperrifle/c_invasion_sniperrifle" + "model_player" "models/workshop/weapons/c_models/c_invasion_sniperrifle/c_invasion_sniperrifle.mdl" + "item_logname" "shooting_star" + "item_iconname" "shooting_star" + "static_attrs" + { + "weapon_allow_inspect" "1" + "ragdolls become ash" "1" + } + "visuals" + { + "sound_single_shot" "Weapon_ShootingStar.SingleCharged" + "sound_burst" "Weapon_ShootingStar.SingleCrit" + "sound_reload" "Weapon_SniperRailgun.WorldReload" + "sound_empty" "Weapon_SniperRailgun.ClipEmpty" + "sound_special2" "Weapon_SniperRailgun.NonScoped" + "sound_special3" "Weapon_ShootingStar.Single" + "muzzle_flash" "dxhr_sniper_muzzleflash" + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30666" + { + "name" "The C.A.P.P.E.R" + "prefab" "no_craft weapon_pistol marketable" + "craft_class" "" + "item_name" "#TF_invasion_pistol" + "item_description" "#TF_invasion_pistol_Desc" + "item_logname" "the_capper" + "item_iconname" "the_capper" + "propername" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_invasion_pistol/c_invasion_pistol" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_invasion_pistol/c_invasion_pistol.mdl" + "static_attrs" + { + "weapon_allow_inspect" "1" + "ragdolls become ash" "1" + } + "visuals" + { + "sound_single_shot" "Weapon_Capper.Single" + "sound_burst" "Weapon_Capper.SingleCrit" + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + "visuals_red" + { + "skin" "0" + "sound_single_shot" "Weapon_Capper.Single" + "sound_burst" "Weapon_Capper.SingleCrit" + "muzzle_flash" "muzzle_raygun_red" + "tracer_effect" "bullet_tracer_raygun" + } + "visuals_blu" + { + "skin" "1" + "sound_single_shot" "Weapon_Capper.Single" + "sound_burst" "Weapon_Capper.SingleCrit" + "muzzle_flash" "muzzle_raygun_blue" + "tracer_effect" "bullet_tracer_raygun" + } + } + "30667" + { + "name" "Batsaber" + "prefab" "no_craft weapon_bat marketable" + "craft_class" "" + "item_name" "#TF_invasion_bat" + "item_description" "#TF_invasion_bat_Desc" + "item_logname" "batsaber" + "item_iconname" "batsaber" + "item_quality" "unique" + "image_inventory" "backpack/workshop/weapons/c_models/c_invasion_bat/c_invasion_bat" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_invasion_bat/c_invasion_bat.mdl" + "static_attrs" + { + "weapon_allow_inspect" "1" + "ragdolls plasma effect" "1" + } + "visuals" + { + "sound_melee_miss" "Weapon_BatSaber.Swing" + "sound_melee_hit" "Weapon_BatSaber.HitFlesh" + "sound_melee_hit_world" "Weapon_BatSaber.HitWorld" + "sound_burst" "Weapon_BatSaber.SwingCrit" + "sound_deploy" "Weapon_BatSaber.Draw" + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30668" + { + "name" "The Giger Counter" + "prefab" "no_craft weapon_wrangler marketable" + "craft_class" "" + "item_name" "#TF_invasion_wrangler" + "item_description" "#TF_invasion_wrangler_Desc" + "item_logname" "giger_counter" + "item_iconname" "giger_counter" + "propername" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_invasion_wrangler/c_invasion_wrangler" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_invasion_wrangler/c_invasion_wrangler.mdl" + "static_attrs" + { + "weapon_allow_inspect" "1" + "is giger counter" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30669" + { + "name" "Space Hamster Hammy" + "prefab" "no_craft misc marketable" + "item_name" "#TF_invasion_space_hamster_hammy" + "item_description" "#TF_invasion_space_hamster_hammy_Desc" + "equip_region" "disconnected_floating_item" + "image_inventory" "backpack/workshop/player/items/pyro/invasion_space_hamster_hammy/invasion_space_hamster_hammy" + "item_type_name" "#TF_Wearable_Mascot" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/invasion_space_hamster_hammy/invasion_space_hamster_hammy.mdl" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30670" + { + "name" "Invasion Community Update Medal" + "prefab" "tournament_medal" + "armory_remap" "" + "item_name" "#TF_invasion_community_update_medal" + "item_description" "#TF_invasion_community_update_medal_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/invasion_community_update_medal/invasion_community_update_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/invasion_community_update_medal/invasion_community_update_medal_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30671" + { + "name" "Taunt: True Scotsman's Call" + "first_sale_date" "2015/12/14" + "prefab" "no_craft taunt" + "item_name" "#TF_true_scotsmans_call" + "item_description" "#TF_true_scotsmans_call_Desc" + "image_inventory" "backpack/workshop/player/items/demo/true_scotsmans_call/true_scotsmans_call" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/true_scotsmans_call.vcd" + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/bagpipes/bagpipes.mdl" + } + } + } + "30672" + { + "name" "Taunt: Zoomin' Broom" + "first_sale_date" "2015/10/27" + "prefab" "no_craft taunt marketable" + "item_name" "#TF_zoomin_broom" + "item_description" "#TF_zoomin_broom_Desc" + "ad_text" "#TF_zoomin_broom_AdText" + "image_inventory" "backpack/workshop/player/items/all_class/zoomin_broom/zoomin_broom" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound" + { + "attribute_class" "taunt_success_sound" + "value" "taunt.broomfly" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/zoomin_broom.vcd" + "sniper" "scenes/workshop/player/sniper/low/zoomin_broom.vcd" + "soldier" "scenes/workshop/player/soldier/low/zoomin_broom.vcd" + "demoman" "scenes/workshop/player/demoman/low/zoomin_broom.vcd" + "medic" "scenes/workshop/player/medic/low/zoomin_broom.vcd" + "heavy" "scenes/workshop/player/heavy/low/zoomin_broom.vcd" + "pyro" "scenes/workshop/player/pyro/low/zoomin_broom.vcd" + "spy" "scenes/workshop/player/spy/low/zoomin_broom.vcd" + "engineer" "scenes/workshop/player/engineer/low/zoomin_broom.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/zoomin_broom_exit.vcd" + "sniper" "scenes/workshop/player/sniper/low/zoomin_broom_exit.vcd" + "soldier" "scenes/workshop/player/soldier/low/zoomin_broom_exit.vcd" + "demoman" "scenes/workshop/player/demoman/low/zoomin_broom_exit.vcd" + "medic" "scenes/workshop/player/medic/low/zoomin_broom_exit.vcd" + "heavy" "scenes/workshop/player/heavy/low/zoomin_broom_exit.vcd" + "pyro" "scenes/workshop/player/pyro/low/zoomin_broom_exit.vcd" + "spy" "scenes/workshop/player/spy/low/zoomin_broom_exit.vcd" + "engineer" "scenes/workshop/player/engineer/low/zoomin_broom_exit.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_scout.mdl" + "sniper" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_demo.mdl" + "medic" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_medic.mdl" + "heavy" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_pyro.mdl" + "spy" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_spy.mdl" + "engineer" "models/workshop/player/items/all_class/zoomin_broom/zoomin_broom_engineer.mdl" + } + } + } + "30673" + { + "name" "Taunt: Soldier's Requiem" + "first_sale_date" "2015/10/27" + "prefab" "no_craft taunt marketable" + "item_name" "#TF_taunt_maggots_condolence" + "item_description" "#TF_taunt_maggots_condolence_Desc" + "ad_text" "#TF_taunt_maggots_condolence_AdText" + "image_inventory" "backpack/workshop/player/items/soldier/taunt_maggots_condolence/taunt_maggots_condolence" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/workshop/player/soldier/low/taunt_maggots_condolence.vcd" + } + "custom_taunt_prop_per_class" + { + "soldier" "models/workshop/player/items/soldier/taunt_maggots_condolence/taunt_maggots_condolence.mdl" + } + } + } + "30675" + { + "name" "Roboot" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_roboot" + "item_description" "#TF_hwn2015_roboot_Desc" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2015_roboot/hwn2015_roboot" + "item_type_name" "#TF_Wearable_Augmentation" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2015_roboot/hwn2015_roboot.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30676" + { + "name" "The Face of Mercy" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_face_of_mercy" + "item_description" "#TF_hwn2015_face_of_mercy_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2015_face_of_mercy/hwn2015_face_of_mercy" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2015_face_of_mercy/hwn2015_face_of_mercy.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30680" + { + "name" "El Caballero" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_western_poncho" + "item_description" "#TF_hwn2015_western_poncho_Desc" + "equip_region" "engineer_pocket" + "item_type_name" "#TF_Wearable_Poncho" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2015_western_poncho/hwn2015_western_poncho" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2015_western_poncho/hwn2015_western_poncho.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + } + "30681" + { + "name" "El Patron" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_western_beard" + "item_description" "#TF_hwn2015_western_beard_Desc" + "equip_region" "beard" + "item_type_name" "#TF_Wearable_FacialHair" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2015_western_beard/hwn2015_western_beard" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2015_western_beard/hwn2015_western_beard.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + } + "30682" + { + "name" "Smokey Sombrero" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2015_western_hat" + "item_description" "#TF_hwn2015_western_hat_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2015_western_hat/hwn2015_western_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2015_western_hat/hwn2015_western_hat.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30684" + { + "name" "Neptune's Nightmare" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_neptunes_nightmare" + "item_description" "#TF_hwn2015_neptunes_nightmare_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Helmet" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2015_neptunes_nightmare/hwn2015_neptunes_nightmare" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2015_neptunes_nightmare/hwn2015_neptunes_nightmare.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30685" + { + "name" "Thrilling Tracksuit" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_death_racer_jacket" + "item_description" "#TF_hwn2015_death_racer_jacket_Desc" + "equip_region" "shirt" + "item_type_name" "#TF_Wearable_Jacket" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2015_death_racer_jacket/hwn2015_death_racer_jacket" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2015_death_racer_jacket/hwn2015_death_racer_jacket.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30686" + { + "name" "Death Racer's Helmet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2015_death_racer_helmet" + "item_description" "#TF_hwn2015_death_racer_helmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2015_death_racer_helmet/hwn2015_death_racer_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2015_death_racer_helmet/hwn2015_death_racer_helmet.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30693" + { + "name" "Grim Tweeter" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_grim_tweeter" + "item_description" "#TF_hwn2015_grim_tweeter_Desc" + "equip_region" "left_shoulder" + "item_type_name" "#TF_Wearable_Mascot" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2015_grim_tweeter/hwn2015_grim_tweeter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2015_grim_tweeter/hwn2015_grim_tweeter_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30698" + { + "name" "Iron Lung" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_iron_lung" + "item_description" "#TF_hwn2015_iron_lung_Desc" + "equip_region" "shirt" + "item_type_name" "#TF_Wearable_Augmentation" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2015_iron_lung/hwn2015_iron_lung" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2015_iron_lung/hwn2015_iron_lung.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30700" + { + "name" "Duck Billed Hatypus" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2015_duckyhat" + "item_description" "#TF_hwn2015_duckyhat_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2015_duckyhat/hwn2015_duckyhat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2015_duckyhat/hwn2015_duckyhat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30704" + { + "name" "Prehistoric Pullover" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2015_dino_hoodie" + "item_description" "#TF_hwn2015_dino_hoodie_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2015_dino_hoodie/hwn2015_dino_hoodie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2015_dino_hoodie/hwn2015_dino_hoodie_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30706" + { + "name" "Catastrophic Companions" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_catastrophic_companions" + "item_description" "#TF_hwn2015_catastrophic_companions_Desc" + "equip_region" "belt_misc" + "item_type_name" "#TF_Wearable_Mascot" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2015_catastrophic_companions/hwn2015_catastrophic_companions" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2015_catastrophic_companions/hwn2015_catastrophic_companions_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30707" + { + "name" "Dead'er Alive" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_mechanical_engineer" + "item_description" "#TF_hwn2015_mechanical_engineer_Desc" + "equip_region" "head_skin" + "item_type_name" "#TF_Wearable_Augmentation" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2015_mechanical_engineer/hwn2015_mechanical_engineer" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2015_mechanical_engineer/hwn2015_mechanical_engineer.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30708" + { + "name" "The Hellmet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2015_hellmet" + "item_description" "#TF_hwn2015_hellmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2015_hellmet/hwn2015_hellmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2015_hellmet/hwn2015_hellmet.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30716" + { + "name" "Crusader's Getup" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_firebug_suit" + "item_description" "#TF_hwn2015_firebug_suit_Desc" + "equip_region" "shirt" + "item_type_name" "#TF_Wearable_Apparel" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2015_firebug_suit/hwn2015_firebug_suit" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2015_firebug_suit/hwn2015_firebug_suit.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30717" + { + "name" "Arthropod's Aspect" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_firebug_mask" + "item_description" "#TF_hwn2015_firebug_mask_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2015_firebug_mask/hwn2015_firebug_mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2015_firebug_mask/hwn2015_firebug_mask.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30718" + { + "name" "B'aaarrgh-n-Bicorne" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2015_bargain_bicorne" + "item_description" "#TF_hwn2015_bargain_bicorne_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2015_bargain_bicorne/hwn2015_bargain_bicorne" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2015_bargain_bicorne/hwn2015_bargain_bicorne.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30719" + { + "name" "B'aaarrgh-n-Britches" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2015_bargain_britches" + "item_description" "#TF_hwn2015_bargain_britches_Desc" + "equip_region" "pants" + "item_type_name" "#TF_Wearable_Pants" + "image_inventory" "backpack/workshop/player/items/scout/hwn2015_bargain_britches/hwn2015_bargain_britches" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2015_bargain_britches/hwn2015_bargain_britches.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30720" + { + "item_name" "#TF_bak_arkham_cowl" + "item_description" "#TF_bak_arkham_cowl_Desc" + "first_sale_date" "2015/12/04" + "name" "Arkham Cowl" + "ad_text" "#TF_bak_arkham_cowl_AdText" + "prefab" "item_bak_arkham_cowl" + } + "30721" + { + "item_name" "#TF_bak_firefly" + "item_description" "#TF_bak_firefly_Desc" + "first_sale_date" "2015/12/04" + "ad_text" "#TF_bak_firefly_AdText" + "name" "The Firefly" + "prefab" "item_bak_firefly" + } + "30722" + { + "first_sale_date" "2015/12/02" + "name" "Batter's Bracers" + "prefab" "no_craft misc" + "item_name" "#TF_bak_batarm" + "item_description" "#TF_bak_batarm_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "sleeves" + "image_inventory" "backpack/workshop/player/items/all_class/bak_batarm/bak_batarm" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bak_batarm/bak_batarm_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30723" + { + "first_sale_date" "2015/12/03" + "name" "The Hood of Sorrows" + "prefab" "no_craft hat" + "item_name" "#TF_bak_hood_of_sorrows" + "item_description" "#TF_bak_hood_of_sorrows_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/bak_hood_of_sorrows/bak_hood_of_sorrows" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/bak_hood_of_sorrows/bak_hood_of_sorrows.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30724" + { + "item_name" "#TF_bak_fear_monger" + "item_description" "#TF_bak_fear_monger_Desc" + "first_sale_date" "2015/12/04" + "name" "Fear Monger" + "ad_text" "#TF_bak_fear_monger_AdText" + "prefab" "item_bak_fear_monger" + } + "30726" + { + "first_sale_date" "2015/12/03" + "name" "Pocket Villains" + "prefab" "no_craft misc" + "item_name" "#TF_bak_pocket_villains" + "item_description" "#TF_bak_pocket_villains_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/bak_pocket_villians/bak_pocket_villians" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bak_pocket_villians/bak_pocket_villians_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30727" + { + "first_sale_date" "2015/12/03" + "name" "The Caped Crusader" + "prefab" "no_craft misc" + "item_name" "#TF_bak_caped_crusader" + "item_description" "#TF_bak_caped_crusader_Desc" + "item_type_name" "#TF_Wearable_Cape" + "equip_region" "soldier_coat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/bak_caped_crusader/bak_caped_crusader" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/bak_caped_crusader/bak_caped_crusader.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_bak_caped_crusader_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_bak_caped_crusader_style2" + "skin_red" "2" + "skin_blu" "3" + } + } + } + } + "30728" + { + "first_sale_date" "2015/12/02" + "name" "Buttler" + "prefab" "no_craft misc" + "item_name" "#TF_bak_buttler" + "item_description" "#TF_bak_buttler_Desc" + "item_type_name" "#TF_Wearable_ToolBelt" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/all_class/bak_buttler/bak_buttler" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bak_buttler/bak_buttler_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "soldier" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30733" + { + "first_sale_date" "2015/12/03" + "name" "Teufort Knight" + "prefab" "no_craft hat" + "item_name" "#TF_bak_teufort_knight" + "item_description" "#TF_bak_teufort_knight_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/bak_teufort_knight/bak_teufort_knight" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bak_teufort_knight/bak_teufort_knight_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30735" + { + "first_sale_date" "2015/12/03" + "name" "Sidekick's Side Slick" + "prefab" "no_craft misc" + "item_name" "#TF_bak_sidekicks_side_slick" + "item_description" "#TF_bak_sidekicks_side_slick_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/scout/bak_sidekicks_side_slick/bak_sidekicks_side_slick" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/bak_sidekicks_side_slick/bak_sidekicks_side_slick.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_bak_sidekicks_side_slick_style1_NoHat" + "model_player" "models/workshop/player/items/scout/bak_sidekicks_side_slick/bak_sidekicks_side_slick.mdl" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_bak_sidekicks_side_slick_style1_Hat" + "model_player" "models/workshop/player/items/scout/bak_sidekicks_side_slick/bak_sidekicks_side_slick.mdl" + } + "2" + { + "name" "#TF_bak_sidekicks_side_slick_style2_NoHat" + "model_player" "models/workshop/player/items/scout/bak_sidekicks_side_slick_s2/bak_sidekicks_side_slick_s2.mdl" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "3" + { + "name" "#TF_bak_sidekicks_side_slick_style2_Hat" + "model_player" "models/workshop/player/items/scout/bak_sidekicks_side_slick_s2/bak_sidekicks_side_slick_s2.mdl" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30736" + { + "first_sale_date" "2015/12/03" + "name" "The Bat Backup" + "prefab" "no_craft misc" + "item_name" "#TF_bak_bat_backup" + "item_description" "#TF_bak_bat_backup_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/bak_bat_backup/bak_bat_backup" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/bak_bat_backup/bak_bat_backup.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30737" + { + "first_sale_date" "2015/12/02" + "name" "Crook Combatant" + "prefab" "no_craft misc" + "item_name" "#TF_bak_crook_combatant" + "item_description" "#TF_bak_crook_combatant_Desc" + "item_type_name" "#TF_Wearable_Gloves" + "equip_region" "sleeves" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/bak_crook_combatant/bak_crook_combatant" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/bak_crook_combatant/bak_crook_combatant.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "30738" + { + "first_sale_date" "2015/12/02" + "name" "Batbelt" + "prefab" "no_craft misc" + "item_name" "#TF_bak_batbelt" + "item_description" "#TF_bak_batbelt_Desc" + "item_type_name" "#TF_Wearable_ToolBelt" + "equip_region" "belt_misc" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/bak_batbelt/bak_batbelt" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bak_batbelt/bak_batbelt_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "30739" + { + "name" "Promo Fear Monger" + "item_name" "#TF_bak_fear_monger" + "item_description" "#TF_bak_fear_monger_Desc" + "prefab" "item_bak_fear_monger" + "craft_class" "" + "show_in_armory" "0" + } + "30740" + { + "name" "Promo Arkham Cowl" + "item_name" "#TF_bak_arkham_cowl" + "item_description" "#TF_bak_arkham_cowl_Desc" + "prefab" "item_bak_arkham_cowl" + "craft_class" "" + "show_in_armory" "0" + } + "30741" + { + "name" "Promo The Firefly" + "item_name" "#TF_bak_firefly" + "item_description" "#TF_bak_firefly_Desc" + "prefab" "item_bak_firefly" + "craft_class" "" + "show_in_armory" "0" + } + "30742" + { + "name" "Shin Shredders" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_shin_shredders" + "item_description" "#TF_dec15_shin_shredders_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "pants" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/dec15_shin_shredders/dec15_shin_shredders" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/dec15_shin_shredders/dec15_shin_shredders.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "30743" + { + "name" "The Patriot Peak" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec15_patriot_peak" + "item_description" "#TF_dec15_patriot_peak_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/dec15_patriot_peak/dec15_patriot_peak" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec15_patriot_peak/dec15_patriot_peak_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec15_patriot_peak_Style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec15_patriot_peak_Style1" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + } + } + } + "30744" + { + "name" "The Diplomat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_diplomat" + "item_description" "#TF_dec15_diplomat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "soldier_coat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/dec15_diplomat/dec15_diplomat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec15_diplomat/dec15_diplomat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30745" + { + "name" "Siberian Sweater" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_heavy_sweater" + "item_description" "#TF_dec15_heavy_sweater_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/dec15_heavy_sweater/dec15_heavy_sweater" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec15_heavy_sweater/dec15_heavy_sweater.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30746" + { + "name" "A Well Wrapped Hat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec15_a_well_wrapped_hat" + "item_description" "#TF_dec15_a_well_wrapped_hat_Desc" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec15_a_well_wrapped_hat/dec15_a_well_wrapped_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec15_a_well_wrapped_hat/dec15_a_well_wrapped_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec15_a_well_wrapped_hat/dec15_a_well_wrapped_hat_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec15_a_well_wrapped_hat_style2/dec15_a_well_wrapped_hat_style2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30747" + { + "name" "The Gift Bringer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_gift_bringer" + "item_description" "#TF_dec15_gift_bringer_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "soldier_coat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec15_gift_bringer/dec15_gift_bringer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec15_gift_bringer/dec15_gift_bringer_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30748" + { + "name" "The Chill Chullo" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec15_chill_chullo" + "item_description" "#TF_dec15_chill_chullo_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec15_chill_chullo/dec15_chill_chullo" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec15_chill_chullo/dec15_chill_chullo_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30749" + { + "name" "Winter Backup" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_winter_backup" + "item_description" "#TF_dec15_winter_backup_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "image_inventory" "backpack/workshop/player/items/engineer/dec15_winter_backup/dec15_winter_backup" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec15_winter_backup/dec15_winter_backup.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30750" + { + "name" "Medical Monarch" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_medic_winter_jacket2_emblem" + "item_description" "#TF_dec15_medic_winter_jacket2_emblem_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/dec15_medic_winter_jacket2_emblem/dec15_medic_winter_jacket2_emblem" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec15_medic_winter_jacket2_emblem/dec15_medic_winter_jacket2_emblem.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/dec15_medic_winter_jacket2_emblem/dec15_medic_winter_jacket2_emblem.mdl" + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/medic/dec15_medic_winter_jacket2_emblem2/dec15_medic_winter_jacket2_emblem2.mdl" + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30751" + { + "name" "Bonk Batter's Backup" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_scout_baseball_bag" + "item_description" "#TF_dec15_scout_baseball_bag_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/dec15_scout_baseball_bag/dec15_scout_baseball_bag" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec15_scout_baseball_bag/dec15_scout_baseball_bag.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30752" + { + "name" "Chicago Overcoat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_chicago_overcoat" + "item_description" "#TF_dec15_chicago_overcoat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/dec15_chicago_overcoat/dec15_chicago_overcoat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec15_chicago_overcoat/dec15_chicago_overcoat.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30753" + { + "name" "A Hat to Kill For" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec15_a_hat_to_kill_for" + "item_description" "#TF_dec15_a_hat_to_kill_for_Desc" + "image_inventory" "backpack/workshop/player/items/spy/dec15_a_hat_to_kill_for/dec15_a_hat_to_kill_for" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec15_a_hat_to_kill_for/dec15_a_hat_to_kill_for.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30754" + { + "name" "Hot Heels" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_hot_heels" + "item_description" "#TF_dec15_hot_heels_Desc" + "item_type_name" "#TF_Wearable_Shoes" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec15_hot_heels/dec15_hot_heels" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec15_hot_heels/dec15_hot_heels.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30755" + { + "name" "Berlin Brain Bowl" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec15_berlin_brain_bowl" + "item_description" "#TF_dec15_berlin_brain_bowl_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "image_inventory" "backpack/workshop/player/items/medic/dec15_berlin_brain_bowl/dec15_berlin_brain_bowl" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec15_berlin_brain_bowl/dec15_berlin_brain_bowl.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30756" + { + "name" "Bunnyhopper's Ballistics Vest" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec15_bunnyhoppers_ballistics_vest" + "item_description" "#TF_dec15_bunnyhoppers_ballistics_vest_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/dec15_bunnyhoppers_ballistics_vest/dec15_bunnyhoppers_ballistics_vest" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec15_bunnyhoppers_ballistics_vest/dec15_bunnyhoppers_ballistics_vest.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30757" + { + "name" "Prinny Pouch" + "prefab" "misc" + "first_sale_date" "2016/07/07" + "item_name" "#TF_prinny_pouch" + "item_description" "#TF_prinny_pouch_Desc" + "item_type_name" "#TF_Wearable_Pouch" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop_partner/player/items/all_class/prinny_pouch/prinny_pouch" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/prinny_pouch/prinny_pouch_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "model_player" "models/workshop/player/items/medic/prinny_pouch/prinny_pouch.mdl" + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30758" + { + "name" "Prinny Machete" + "first_sale_date" "2016/07/07" + "item_class" "saxxy" + "prefab" "weapon_melee_allclass" + "craft_material_type" "weapon" + "craft_class" "" + "capabilities" + { + "nameable" "1" + "can_craft_count" "1" + } + "tags" + { + "can_deal_damage" "1" + "can_deal_critical_damage" "1" + "can_be_equipped_by_soldier_or_demo" "1" + } + "item_logname" "prinny_machete" + "item_iconname" "prinny_machete" + "show_in_armory" "1" + "item_name" "#TF_prinny_machete" + "item_description" "#TF_prinny_machete_Desc" + "item_type_name" "#TF_Weapon_Machete" + "item_slot" "melee" + "image_inventory" "backpack/workshop_partner/weapons/c_models/c_prinny_knife/c_prinny_knife" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "inspect_panel_dist" "40" + "model_player" "models/workshop_partner/weapons/c_models/c_prinny_knife/c_prinny_knife.mdl" + "attach_to_hands" "1" + "item_quality" "unique" + "propername" "1" + "min_ilevel" "5" + "max_ilevel" "5" + "anim_slot" "MELEE_ALLCLASS" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "static_attrs" + { + "min_viewmodel_offset" "10 0 -6" + } + "visuals" + { + "sound_melee_hit_world" "Weapon_Machete.HitWorld" + "sound_melee_miss" "Weapon_Machete.Miss" + "sound_melee_hit" "Weapon_Machete.HitFlesh" + "sound_burst" "Weapon_Machete.MissCrit" + } + "mouse_pressed_sound" "ui/item_knife_large_pickup.wav" + "drop_sound" "ui/item_metal_weapon_drop.wav" + } + "30759" + { + "name" "Prinny Hat" + "prefab" "hat" + "first_sale_date" "2016/07/07" + "item_name" "#TF_prinny_hat" + "item_description" "#TF_prinny_hat_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop_partner/player/items/all_class/prinny_hat/prinny_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop_partner/player/items/all_class/prinny_hat/prinny_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30761" + { + "name" "Taunt: The Fubar Fanfare" + "prefab" "no_craft taunt" + "first_sale_date" "2016/06/15" + "item_name" "#TF_taunt_fubar_fanfare" + "item_description" "#TF_taunt_fubar_fanfare_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/fumblers_fanfare/fumblers_fanfare" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/workshop/player/soldier/low/fumblers_fanfare.vcd" + } + "custom_taunt_prop_per_class" + { + "soldier" "models/workshop/player/items/soldier/fumblers_fanfare/fumblers_fanfare.mdl" + } + } + } + "30762" + { + "name" "Taunt: Disco Fever" + "prefab" "no_craft taunt" + "first_sale_date" "2016/06/15" + "item_name" "#TF_taunt_disco_fever" + "item_description" "#TF_taunt_disco_fever_Desc" + "image_inventory" "backpack/workshop/player/items/spy/disco_fever/disco_fever" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/disco_fever.vcd" + } + } + } + "30763" + { + "name" "Taunt: The Balloonibouncer" + "prefab" "no_craft taunt" + "first_sale_date" "2016/06/15" + "item_name" "#TF_taunt_balloonibouncer" + "item_description" "#TF_taunt_balloonibouncer_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/spring_rider/spring_rider" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/spring_rider.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/spring_rider_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/spring_rider/spring_rider.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "pyro" "scenes/workshop/player/items/spring_rider/spring_rider_prop.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/items/spring_rider/spring_rider_outro_prop.vcd" + } + "stop_taunt_if_moved" "1" + "particle_attachment" "taunt_effect" + } + } + "30767" + { + "name" "The Airdog" + "prefab" "no_craft hat marketable" + "item_name" "#TF_may16_airdog" + "item_description" "#TF_may16_airdog_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/snowboard_hat/snowboard_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/snowboard_hat/snowboard_hat.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30768" + { + "name" "Bedouin Bandana" + "prefab" "no_craft hat marketable" + "item_name" "#TF_may16_bedouin_bandana" + "item_description" "#TF_may16_bedouin_bandana_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/angsty_hood/angsty_hood" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/angsty_hood/angsty_hood_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30769" + { + "name" "Herald's Helm" + "prefab" "no_craft hat marketable" + "item_name" "#TF_may16_heralds_helm" + "item_description" "#TF_may16_heralds_helm_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/knight_helmet/knight_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/knight_helmet/knight_helmet.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30770" + { + "name" "Courtly Cuirass" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_courtly_cuirass" + "item_description" "#TF_may16_courtly_cuirass_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/medieval_glory_armor/medieval_glory_armor" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/medieval_glory_armor/medieval_glory_armor.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30771" + { + "name" "Squire's Sabatons" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_squires_sabatons" + "item_description" "#TF_may16_squires_sabatons_Desc" + "item_type_name" "#TF_Wearable_Shoes" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/medieval_glory_boots/medieval_glory_boots" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/medieval_glory_boots/medieval_glory_boots.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "30773" + { + "name" "The Surgical Survivalist" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_surgical_survivalist" + "item_description" "#TF_may16_surgical_survivalist_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "pants" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/cardiologists_camo/cardiologists_camo" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/cardiologists_camo/cardiologists_camo.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30775" + { + "name" "The Dead Head" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_skullcap" + "item_description" "#TF_may16_skullcap_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/skullmask/skullmask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/skullmask/skullmask.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30777" + { + "name" "The Lurking Legionnaire" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_lurking_legionnaire" + "item_description" "#TF_may16_lurking_legionnaire_Desc" + "item_type_name" "#TF_Wearable_Uniform" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/majors_mark/majors_mark" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/majors_mark/majors_mark.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30779" + { + "name" "The Dayjogger" + "prefab" "no_craft hat marketable" + "item_name" "#TF_may16_dayjogger" + "item_description" "#TF_may16_dayjogger_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/vampire_shades/vampire_shades" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/vampire_shades/vampire_shades.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30780" + { + "name" "The Patriot's Pouches" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_patriots_pouches" + "item_description" "#TF_may16_patriots_pouches_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/shooters_supplies/shooters_supplies" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/shooters_supplies/shooters_supplies.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/shooters_supplies/shooters_supplies.mdl" + "name" "#TF_may16_patriots_pouches_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/shooters_supplies_style1/shooters_supplies_style1.mdl" + "name" "#TF_may16_patriots_pouches_style2" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30785" + { + "name" "Dad Duds" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_dad_duds" + "item_description" "#TF_may16_dad_duds_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/all_work_and_no_plaid/all_work_and_no_plaid" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/all_work_and_no_plaid/all_work_and_no_plaid.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30786" + { + "name" "The Gauzed Gaze" + "prefab" "no_craft hat marketable" + "item_name" "#TF_may16_gauzed_gaze" + "item_description" "#TF_may16_gauzed_gaze_Desc" + "equip_region" "whole_head" + "image_inventory" "backpack/workshop/player/items/medic/surgical_stare/surgical_stare" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/surgical_stare/surgical_stare.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30788" + { + "name" "The Demo's Dustcatcher" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_demos_dustcatcher" + "item_description" "#TF_may16_demos_dustcatcher_Desc" + "item_type_name" "#TF_Wearable_Cape" + "equip_region" "demoman_collar" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/demolitionists_dustcatcher/demolitionists_dustcatcher" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/demolitionists_dustcatcher/demolitionists_dustcatcher.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30789" + { + "name" "The Scoped Spartan" + "prefab" "no_craft misc marketable" + "item_name" "#TF_may16_scoped_spartan" + "item_description" "#TF_may16_scoped_spartan_Desc" + "item_type_name" "#TF_Wearable_Cape" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/headhunters_wrap/headhunters_wrap" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/headhunters_wrap/headhunters_wrap.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30792" + { + "name" "Colossal Cranium" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_colossal_cranium_2" + "item_description" "#TF_hwn2016_colossal_cranium_2_Desc" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/medic/hwn2016_colossal_cranium_2/hwn2016_colossal_cranium_2" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2016_colossal_cranium_2/hwn2016_colossal_cranium_2.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bald_head_pickup.wav" + "drop_sound" "ui/item_bald_head_pickup.wav" + } + "30793" + { + "name" "Aerobatics Demonstrator" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_aerobatics_demonstrator" + "item_description" "#TF_hwn2016_aerobatics_demonstrator_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "demo_belt" + "image_inventory" "backpack/workshop/player/items/demo/hwn2016_aerobatics_demonstrator/hwn2016_aerobatics_demonstrator" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2016_aerobatics_demonstrator/hwn2016_aerobatics_demonstrator.mdl" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "30794" + { + "name" "Final Frontier Freighter" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_final_frontiersman" + "item_description" "#TF_hwn2016_final_frontiersman_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2016_final_frontiersman/hwn2016_final_frontiersman" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2016_final_frontiersman/hwn2016_final_frontiersman.mdl" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "30795" + { + "name" "Hovering Hotshot" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_hovering_hotshot" + "item_description" "#TF_hwn2016_hovering_hotshot_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "Back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2016_hovering_hotshot/hwn2016_hovering_hotshot" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2016_hovering_hotshot/hwn2016_hovering_hotshot.mdl" + "holiday_restriction" "halloween_or_fullmoon" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "30796" + { + "name" "The Toadstool Topper" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_toadstool_topper" + "item_description" "#TF_hwn2016_toadstool_topper_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2016_toadstool_topper/hwn2016_toadstool_topper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2016_toadstool_topper/hwn2016_toadstool_topper_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30797" + { + "name" "Showstopper" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_showstopper" + "item_description" "#TF_hwn2016_showstopper_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/hwn2016_showstopper/hwn2016_showstopper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2016_showstopper/hwn2016_showstopper.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30798" + { + "name" "Big Topper" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_big_topper" + "item_description" "#TF_hwn2016_big_topper_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/hwn2016_big_topper/hwn2016_big_topper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2016_big_topper/hwn2016_big_topper.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30799" + { + "name" "Combustible Cutie" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_combustible_cutie" + "item_description" "#TF_hwn2016_combustible_cutie_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2016_combustible_cutie/hwn2016_combustible_cutie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2016_combustible_cutie/hwn2016_combustible_cutie.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30800" + { + "name" "The Cranial Carcharodon" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_pyro_shark" + "item_description" "#TF_hwn2016_pyro_shark_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2016_pyro_shark/hwn2016_pyro_shark" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2016_pyro_shark/hwn2016_pyro_shark.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30801" + { + "name" "Spooktacles" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_spooktacles" + "item_description" "#TF_hwn2016_spooktacles_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2016_spooktacles/hwn2016_spooktacles" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2016_spooktacles/hwn2016_spooktacles_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30803" + { + "name" "Heavy Tourism" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_heavy_tourism" + "item_description" "#TF_hwn2016_heavy_tourism_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2016_heavy_tourism/hwn2016_heavy_tourism" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2016_heavy_tourism/hwn2016_heavy_tourism.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30804" + { + "name" "The El Paso Poncho" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_el_paso_poncho" + "item_description" "#TF_hwn2016_el_paso_poncho_Desc" + "item_type_name" "#TF_Wearable_Poncho" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2016_el_paso_poncho/hwn2016_el_paso_poncho" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2016_el_paso_poncho/hwn2016_el_paso_poncho.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30805" + { + "name" "The Wide-Brimmed Bandito" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_wide_brimmed_bandito" + "item_description" "#TF_hwn2016_wide_brimmed_bandito_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2016_wide_brimmed_bandito/hwn2016_wide_brimmed_bandito" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2016_wide_brimmed_bandito/hwn2016_wide_brimmed_bandito.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30806" + { + "name" "The Corpus Christi Cranium" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_corpus_christi_cranium" + "item_description" "#TF_hwn2016_corpus_christi_cranium_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "head_skin" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2016_corpus_christi_cranium/hwn2016_corpus_christi_cranium" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2016_corpus_christi_cranium/hwn2016_corpus_christi_cranium.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "30807" + { + "name" "Spirit of the Bombing Past" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_spirit_of_the_bombing_past" + "item_description" "#TF_hwn2016_spirit_of_the_bombing_past_Desc" + "image_inventory" "backpack/workshop/player/items/demo/hwn2016_spirit_of_the_bombing_past/hwn2016_spirit_of_the_bombing_past" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2016_spirit_of_the_bombing_past/hwn2016_spirit_of_the_bombing_past.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30808" + { + "name" "Class Crown" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_class_crown" + "item_description" "#TF_hwn2016_class_crown_Desc" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2016_class_crown/hwn2016_class_crown" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2016_class_crown/hwn2016_class_crown_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30809" + { + "name" "The Wing Mann" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_wing_mann" + "item_description" "#TF_hwn2016_wing_mann_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2016_wing_mann/hwn2016_wing_mann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2016_wing_mann/hwn2016_wing_mann.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30810" + { + "name" "Nasty Norsemann" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_nasty_norsemann" + "item_description" "#TF_hwn2016_nasty_norsemann_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2016_nasty_norsemann/hwn2016_nasty_norsemann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2016_nasty_norsemann/hwn2016_nasty_norsemann_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30811" + { + "name" "Pestering Jester" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_pestering_jester" + "item_description" "#TF_hwn2016_pestering_jester_Desc" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2016_pestering_jester/hwn2016_pestering_jester" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/hwn2016_pestering_jester/hwn2016_pestering_jester_scout.mdl" + "soldier" "models/workshop/player/items/all_class/hwn2016_pestering_jester/hwn2016_pestering_jester_soldier.mdl" + "heavy" "models/workshop/player/items/all_class/hwn2016_pestering_jester/hwn2016_pestering_jester_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/hwn2016_pestering_jester/hwn2016_pestering_jester_pyro.mdl" + } + "used_by_classes" + { + "scout" "1" + "soldier" "1" + "heavy" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30812" + { + "name" "Mo'Horn" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_mo_horn" + "item_description" "#TF_hwn2016_mo_horn_Desc" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2016_mo_horn/hwn2016_mo_horn" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2016_mo_horn/hwn2016_mo_horn.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30813" + { + "name" "The Surgeon's Sidearms" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_surgeons_sidearms" + "item_description" "#TF_hwn2016_surgeons_sidearms_Desc" + "item_type_name" "#TF_Wearable_Tools" + "equip_region" "arms" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/hwn2016_surgeons_sidearms/hwn2016_surgeons_sidearms" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2016_surgeons_sidearms/hwn2016_surgeons_sidearms.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30814" + { + "name" "Lil' Bitey" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2016_lil_bitey" + "item_description" "#TF_hwn2016_lil_bitey_Desc" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2016_lil_bitey/hwn2016_lil_bitey" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2016_lil_bitey/hwn2016_lil_bitey_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30815" + { + "name" "Mad Mask" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_mad_mask" + "item_description" "#TF_hwn2016_mad_mask_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2016_mad_mask/hwn2016_mad_mask" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2016_mad_mask/hwn2016_mad_mask.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30816" + { + "name" "Taunt: Second Rate Sorcery" + "prefab" "no_craft taunt marketable" + "first_sale_date" "2016/10/18" + "item_name" "#TF_secondrate_sorcery" + "item_description" "#TF_secondrate_sorcery_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/secondrate_sorcery.vcd" + "sniper" "scenes/workshop/player/sniper/low/secondrate_sorcery.vcd" + "soldier" "scenes/workshop/player/soldier/low/secondrate_sorcery.vcd" + "demoman" "scenes/workshop/player/demoman/low/secondrate_sorcery.vcd" + "medic" "scenes/workshop/player/medic/low/secondrate_sorcery.vcd" + "heavy" "scenes/workshop/player/heavy/low/secondrate_sorcery.vcd" + "pyro" "scenes/workshop/player/pyro/low/secondrate_sorcery.vcd" + "spy" "scenes/workshop/player/spy/low/secondrate_sorcery.vcd" + "engineer" "scenes/workshop/player/engineer/low/secondrate_sorcery.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_scout.mdl" + "sniper" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_demo.mdl" + "medic" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_medic.mdl" + "heavy" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_pyro.mdl" + "spy" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_spy.mdl" + "engineer" "models/workshop/player/items/all_class/secondrate_sorcery/secondrate_sorcery_engineer.mdl" + } + } + } + "30817" + { + "name" "Burly Beast" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2016_burly_beast" + "item_description" "#TF_hwn2016_burly_beast_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/hwn2016_burly_beast/hwn2016_burly_beast" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2016_burly_beast/hwn2016_burly_beast.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "30818" + { + "name" "Socked and Loaded" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_stocking" + "item_description" "#TF_dec16_stocking_Desc" + "item_type_name" "#TF_Wearable_Stocking" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/all_class/dec16_stocking/dec16_stocking" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/dec16_stocking/dec16_stocking_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/dec16_stocking/dec16_stocking_demo.mdl" + "pyro" "models/workshop/player/items/all_class/dec16_stocking/dec16_stocking_pyro.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30819" + { + "name" "Flammable Favor" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_flammable_favor" + "item_description" "#TF_dec16_flammable_favor_Desc" + "item_type_name" "#TF_Wearable_Package" + "equip_region" "Back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec16_flammable_favor/dec16_flammable_favor" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec16_flammable_favor/dec16_flammable_favor.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30820" + { + "name" "Snowwing" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_snowwing" + "item_description" "#TF_dec16_snowwing_Desc" + "item_type_name" "#TF_Wearable_Snowboard" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/dec16_snowwing/dec16_snowwing" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec16_snowwing/dec16_snowwing.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30821" + { + "name" "Packable Provisions" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_packable_provisions" + "item_description" "#TF_dec16_packable_provisions_Desc" + "item_type_name" "#TF_Wearable_Provisions" + "equip_region" "Back" + "image_inventory" "backpack/workshop/player/items/engineer/dec16_packable_provisions/dec16_packable_provisions" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/dec16_packable_provisions/dec16_packable_provisions.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30822" + { + "name" "Handy Canes" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_handy_canes" + "item_description" "#TF_dec16_handy_canes_Desc" + "item_type_name" "#TF_Wearable_CandyCanes" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec16_handy_canes/dec16_handy_canes" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/dec16_handy_canes/dec16_handy_canes_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/dec16_handy_canes/dec16_handy_canes_demo.mdl" + "pyro" "models/workshop/player/items/all_class/dec16_handy_canes/dec16_handy_canes_pyro.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30823" + { + "name" "Bomb Beanie" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_bomb_beanie" + "item_description" "#TF_dec16_bomb_beanie_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec16_bomb_beanie/dec16_bomb_beanie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec16_bomb_beanie/dec16_bomb_beanie.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30824" + { + "name" "The Electric Twanger" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_electric_twanger" + "item_description" "#TF_dec16_electric_twanger_Desc" + "item_type_name" "#TF_Wearable_Guitar" + "equip_region" "scout_backpack" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/dec16_electric_twanger/dec16_electric_twanger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec16_electric_twanger/dec16_electric_twanger.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30825" + { + "name" "Santarchimedes" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_santarchimedes" + "item_description" "#TF_dec16_santarchimedes_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/medic/dec16_santarchimedes/dec16_santarchimedes" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec16_santarchimedes/dec16_santarchimedes.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30826" + { + "name" "Sweet Smissmas Sweater" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_smissmas_sweater" + "item_description" "#TF_dec16_smissmas_sweater_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec16_smissmas_sweater/dec16_smissmas_sweater" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/dec16_smissmas_sweater/dec16_smissmas_sweater.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30827" + { + "name" "Brain-Warming Wear" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_brain_warming_wear" + "item_description" "#TF_dec16_brain_warming_wear_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/dec16_brain_warming_wear/dec16_brain_warming_wear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec16_brain_warming_wear/dec16_brain_warming_wear.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30829" + { + "name" "The Snowmann" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_snowmann" + "item_description" "#TF_dec16_snowmann_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_scout.mdl" + "sniper" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_demo.mdl" + "medic" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_medic.mdl" + "heavy" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_pyro.mdl" + "spy" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_spy.mdl" + "engineer" "models/workshop/player/items/all_class/dec16_snowmann/dec16_snowmann_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30830" + { + "name" "The Bomber Knight" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_bomber_knight" + "item_description" "#TF_dec16_bomber_knight_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/dec16_bomber_knight/dec16_bomber_knight" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec16_bomber_knight/dec16_bomber_knight.mdl" + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30831" + { + "name" "Reader's Choice" + "prefab" "no_craft misc marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_readers_choice" + "item_description" "#TF_dec16_readers_choice_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_scout.mdl" + "soldier" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_demo.mdl" + "heavy" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_pyro.mdl" + "spy" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_spy.mdl" + "engineer" "models/workshop/player/items/all_class/dec16_readers_choice/dec16_readers_choice_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "soldier" "1" + "demoman" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30833" + { + "name" "Woolen Warmer" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_woolen_warmer" + "item_description" "#TF_dec16_woolen_warmer_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_scout.mdl" + "sniper" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_demo.mdl" + "medic" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_medic.mdl" + "heavy" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_pyro.mdl" + "spy" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_spy.mdl" + "engineer" "models/workshop/player/items/all_class/dec16_woolen_warmer/dec16_woolen_warmer_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30835" + { + "name" "Pyro the Flamedeer" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_pyro_the_flamedeer" + "item_description" "#TF_dec16_pyro_the_flamedeer_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec16_pyro_the_flamedeer/dec16_pyro_the_flamedeer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec16_pyro_the_flamedeer/dec16_pyro_the_flamedeer.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30836" + { + "name" "Elf Esteem" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_elf_esteem" + "item_description" "#TF_dec16_elf_esteem_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec16_elf_esteem/dec16_elf_esteem" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec16_elf_esteem/dec16_elf_esteem.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30838" + { + "name" "The Head Prize" + "prefab" "no_craft hat marketable" + "first_sale_date" "2016/12/15" + "item_name" "#TF_dec16_head_prize" + "item_description" "#TF_dec16_head_prize_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_scout.mdl" + "sniper" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_demo.mdl" + "medic" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_medic.mdl" + "heavy" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_pyro.mdl" + "spy" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_spy.mdl" + "engineer" "models/workshop/player/items/all_class/dec16_head_prize/dec16_head_prize_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30839" + { + "name" "Taunt: Didgeridrongo" + "prefab" "no_craft taunt" + "first_sale_date" "2016/12/15" + "item_name" "#TF_taunt_didgeridrongo" + "item_description" "#TF_taunt_didgeridrongo_Desc" + "ad_text" "#TF_taunt_didgeridrongo_AdText" + "image_inventory" "backpack/workshop/player/items/sniper/taunt_didgeridrongo/taunt_didgeridrongo" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/taunt_didgeridrongo.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/taunt_didgeridrongo_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "sniper" "models/workshop/player/items/sniper/taunt_didgeridrongo/taunt_didgeridrongo.mdl" + } + } + } + "30840" + { + "name" "Taunt: Scotsmann's Stagger" + "prefab" "no_craft taunt" + "first_sale_date" "2016/12/15" + "item_name" "#TF_taunt_scotsmans_stagger" + "item_description" "#TF_taunt_scotsmans_stagger_Desc" + "ad_text" "#TF_taunt_scotsmans_stagger_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "55" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "1" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "40" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + } + "image_inventory" "backpack/workshop/player/items/demo/taunt_scotsmans_stagger/taunt_scotsmans_stagger" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_scotsmans_stagger.vcd" + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/taunt_scotsmans_stagger/taunt_scotsmans_stagger.mdl" + } + } + } + "30842" + { + "name" "Taunt: The Dueling Banjo" + "first_sale_date" "2017/09/13" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_dueling_banjo" + "item_description" "#TF_taunt_dueling_banjo_Desc" + "ad_text" "#TF_taunt_dueling_banjo_AdText" + "image_inventory" "backpack/workshop/player/items/engineer/taunt_bumpkins_banjo/taunt_bumpkins_banjo" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_bumpkins_banjo.vcd" + } + "custom_taunt_prop_per_class" + { + "engineer" "models/workshop/player/items/engineer/taunt_bumpkins_banjo/taunt_bumpkins_banjo.mdl" + } + "custom_taunt_outro_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_bumpkins_banjo_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "engineer" "scenes\workshop\player\engineer\low\taunt_bumpkins_banjo_slow.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "engineer" "scenes\workshop\player\engineer\low\taunt_bumpkins_banjo_fast.vcd" + } + } + } + } + } + "30843" + { + "name" "Taunt: The Russian Arms Race" + "first_sale_date" "2017/09/13" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_russian_arms_race" + "item_description" "#TF_taunt_russian_arms_race_Desc" + "ad_text" "#TF_taunt_russian_arms_race_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/taunt_heavy_workout/taunt_heavy_workout" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "heavy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_heavy_workout.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_heavy_workout_end.vcd" + } + } + } + "30844" + { + "name" "Taunt: The Soviet Strongarm" + "first_sale_date" "2017/09/13" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_soviet_strongarm" + "item_description" "#TF_taunt_soviet_strongarm_Desc" + "ad_text" "#TF_taunt_soviet_strongarm_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/taunt_soviet_strongarm/taunt_soviet_strongarm" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "heavy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_soviet_strongarm.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_soviet_strongarm_end.vcd" + } + "custom_taunt_prop_per_class" + { + "heavy" "models/workshop/player/items/heavy/taunt_soviet_strongarm/taunt_soviet_strongarm.mdl" + } + } + } + "30845" + { + "name" "Taunt: The Jumping Jack" + "first_sale_date" "2017/09/13" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_jumping_jack" + "item_description" "#TF_taunt_jumping_jack_Desc" + "ad_text" "#TF_taunt_jumping_jack_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/taunt_jackhammer_rodeo/taunt_jackhammer_rodeo" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_jackhammer_rodeo.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_jackhammer_rodeo_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "engineer" "models/workshop/player/items/engineer/taunt_jackhammer_rodeo/taunt_jackhammer_rodeo.mdl" + } + } + } + "30846" + { + "name" "Plumber's Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_plumbers_cap" + "item_description" "#TF_spr17_plumbers_cap_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/spr17_plumbers_cap/spr17_plumbers_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/spr17_plumbers_cap/spr17_plumbers_cap.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30848" + { + "name" "The Upgrade" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_the_upgrade" + "item_description" "#TF_spr17_the_upgrade_Desc" + "item_type_name" "#TF_Wearable_Augmentation" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/spr17_the_upgrade/spr17_the_upgrade" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/spr17_the_upgrade/spr17_the_upgrade.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "30849" + { + "name" "Pocket Pauling" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_pocket_pauling" + "item_description" "#TF_spr17_pocket_pauling_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/spr17_pocket_pauling/spr17_pocket_pauling" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/spr17_pocket_pauling/spr17_pocket_pauling.mdl" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30853" + { + "name" "Flakcatcher" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_flakcatcher" + "item_description" "#TF_spr17_flakcatcher_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/spr17_flakcatcher/spr17_flakcatcher" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/spr17_flakcatcher/spr17_flakcatcher.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30856" + { + "name" "Down Under Duster" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_down_under_duster" + "item_description" "#TF_spr17_down_under_duster_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/spr17_down_under_duster/spr17_down_under_duster" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/spr17_down_under_duster/spr17_down_under_duster.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30857" + { + "name" "Guilden Guardian" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_guilden_guardian" + "item_description" "#TF_spr17_guilden_guardian_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/spr17_guilden_guardian/spr17_guilden_guardian" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/spr17_guilden_guardian/spr17_guilden_guardian.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30858" + { + "name" "Hawk Eyed Hunter" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_hawk_eyed_hunter" + "item_description" "#TF_spr17_hawk_eyed_hunter_Desc" + "equip_region" "head_skin" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/spr17_hawk_eyed_hunter/spr17_hawk_eyed_hunter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/spr17_hawk_eyed_hunter/spr17_hawk_eyed_hunter.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30859" + { + "name" "Airtight Arsonist" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_airtight_arsonist" + "item_description" "#TF_spr17_airtight_arsonist_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/spr17_airtight_arsonist/spr17_airtight_arsonist" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/spr17_airtight_arsonist/spr17_airtight_arsonist.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30862" + { + "name" "Field Practice" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_field_practice" + "item_description" "#TF_spr17_field_practice_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/spr17_field_practice/spr17_field_practice" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/spr17_field_practice/spr17_field_practice.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30863" + { + "name" "Blast Defense" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_blast_defense" + "item_description" "#TF_spr17_blast_defense_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/spr17_blast_defense/spr17_blast_defense" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/spr17_blast_defense/spr17_blast_defense.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30866" + { + "name" "Warhood" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_warhood" + "item_description" "#TF_spr17_warhood_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/spr17_warhood/spr17_warhood" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/spr17_warhood/spr17_warhood.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30867" + { + "name" "The Lightning Lid" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_the_lightning_lid" + "item_description" "#TF_spr17_the_lightning_lid_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/spr17_the_lightning_lid/spr17_the_lightning_lid" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/spr17_the_lightning_lid/spr17_the_lightning_lid.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30868" + { + "name" "Legendary Lid" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_legendary_lid" + "item_description" "#TF_spr17_legendary_lid_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/spr17_legendary_lid/spr17_legendary_lid" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/spr17_legendary_lid/spr17_legendary_lid_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30869" + { + "name" "Messenger's Mail Bag" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_messengers_mail_bag" + "item_description" "#TF_spr17_messengers_mail_bag_Desc" + "item_type_name" "#TF_Wearable_MailBag" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/spr17_messengers_mail_bag/spr17_messengers_mail_bag" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/spr17_messengers_mail_bag/spr17_messengers_mail_bag.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30871" + { + "name" "Flash of Inspiration" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_flash_of_inspiration" + "item_description" "#TF_spr17_flash_of_inspiration_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/spr17_flash_of_inspiration/spr17_flash_of_inspiration" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/spr17_flash_of_inspiration/spr17_flash_of_inspiration.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30872" + { + "name" "Head Mounted Double Observatory" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_double_observatory" + "item_description" "#TF_spr17_double_observatory_Desc" + "item_type_name" "#TF_Wearable_Augmentation" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/engineer/spr17_double_observatory/spr17_double_observatory" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/spr17_double_observatory/spr17_double_observatory.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30873" + { + "name" "Airborne Attire" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_wingman" + "item_description" "#TF_spr17_wingman_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/all_class/spr17_wingman/spr17_wingman" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/spr17_wingman/spr17_wingman_scout.mdl" + "sniper" "models/workshop/player/items/all_class/spr17_wingman/spr17_wingman_sniper.mdl" + "heavy" "models/workshop/player/items/all_class/spr17_wingman/spr17_wingman_heavy.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30874" + { + "name" "Archer's Sterling" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr17_archers_sterling" + "item_description" "#TF_spr17_archers_sterling_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/sniper/spr17_archers_sterling/spr17_archers_sterling" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/spr17_archers_sterling/spr17_archers_sterling.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30875" + { + "name" "Speedster's Spandex" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr17_speedsters_spandex" + "item_description" "#TF_spr17_speedsters_spandex_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/spr17_speedsters_spandex/spr17_speedsters_spandex" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/spr17_speedsters_spandex/spr17_speedsters_spandex.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "30876" + { + "name" "Taunt: The Headcase" + "first_sale_date" "2017/09/13" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_headcase" + "item_description" "#TF_taunt_the_headcase_Desc" + "ad_text" "#TF_taunt_the_headcase_AdText" + "image_inventory" "backpack/workshop/player/items/pyro/taunt_the_grilled_gunman/taunt_the_grilled_gunman" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_grilled_gunman.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/taunt_the_grilled_gunman/taunt_the_grilled_gunman.mdl" + } + } + } + "30877" + { + "name" "The Hunter in Darkness" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_hunter_in_darkness" + "item_description" "#TF_fall17_hunter_in_darkness_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_jungle_ops/fall17_jungle_ops" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_jungle_ops/fall17_jungle_ops_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30878" + { + "name" "Quizzical Quetzal" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_quizzical_quetzal" + "item_description" "#TF_fall17_quizzical_quetzal_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/all_class/fall17_quizzical_quetzal/fall17_quizzical_quetzal" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_quizzical_quetzal/fall17_quizzical_quetzal_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30879" + { + "name" "The Aztec Warrior" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_aztec_warrior" + "item_description" "#TF_fall17_aztec_warrior_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_aztec_warrior/fall17_aztec_warrior" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_aztec_warrior/fall17_aztec_warrior_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30880" + { + "name" "Pocket Saxton" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_pocket_saxton" + "item_description" "#TF_fall17_pocket_saxton_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_regions" + { + "sniper_pocket" "1" + "engineer_pocket" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_pocket_saxton/fall17_pocket_saxton" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_pocket_saxton/fall17_pocket_saxton_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30881" + { + "name" "The Croaking Hazard" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_croaking_hazard" + "item_description" "#TF_fall17_croaking_hazard_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall17_croaking_hazard/fall17_croaking_hazard" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_croaking_hazard/fall17_croaking_hazard_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30882" + { + "name" "Jungle Wreath" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_jungle_wreath" + "item_description" "#TF_fall17_jungle_wreath_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_jungle_wreath/fall17_jungle_wreath" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_jungle_wreath/fall17_jungle_wreath_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30883" + { + "name" "The Slithering Scarf" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_slithering_scarf" + "item_description" "#TF_fall17_slithering_scarf_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "necklace" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall17_slithering_scarf/fall17_slithering_scarf" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_slithering_scarf/fall17_slithering_scarf_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30884" + { + "name" "Aloha Apparel" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_aloha_apparel" + "item_description" "#TF_fall17_aloha_apparel_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/all_class/fall17_aloha_apparel/fall17_aloha_apparel" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_aloha_apparel/fall17_aloha_apparel_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30885" + { + "name" "The Nuke" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_nuke" + "item_description" "#TF_fall17_nuke_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/fall17_nuke/fall17_nuke" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_nuke/fall17_nuke_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30886" + { + "name" "Bananades" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_bananades" + "item_description" "#TF_fall17_bananades_Desc" + "item_type_name" "#TF_Wearable_Bombs" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_bananades/fall17_bananades" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_bananades/fall17_bananades_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30887" + { + "name" "The War Eagle" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_war_eagle" + "item_description" "#TF_fall17_war_eagle_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_war_eagle/fall17_war_eagle" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_war_eagle/fall17_war_eagle_%s.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30888" + { + "name" "Jungle Jersey" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_jungle_jersey" + "item_description" "#TF_fall17_jungle_jersey_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/fall17_jungle_jersey/fall17_jungle_jersey" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/fall17_jungle_jersey/fall17_jungle_jersey.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30889" + { + "name" "Transparent Trousers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_transparent_trousers" + "item_description" "#TF_fall17_transparent_trousers_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "scout_pants" + "image_inventory" "backpack/workshop/player/items/scout/fall17_transparent_trousers/fall17_transparent_trousers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/fall17_transparent_trousers/fall17_transparent_trousers.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30890" + { + "name" "Forest Footwear" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_forest_footwear" + "item_description" "#TF_fall17_forest_footwear_Desc" + "item_type_name" "#TF_Wearable_Boots" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/fall17_forest_footwear/fall17_forest_footwear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/fall17_forest_footwear/fall17_forest_footwear.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30891" + { + "name" "The Cammy Jammies" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_cammy_jammies" + "item_description" "#TF_fall17_cammy_jammies_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "pants" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/fall17_cammy_jammies/fall17_cammy_jammies" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/fall17_cammy_jammies/fall17_cammy_jammies.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30892" + { + "name" "The Conspicuous Camouflage" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_conspicuous_camouflage" + "item_description" "#TF_fall17_conspicuous_camouflage_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/fall17_conspicuous_camouflage_open/fall17_conspicuous_camouflage_open" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/fall17_conspicuous_camouflage_open/fall17_conspicuous_camouflage_open.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/fall17_conspicuous_camouflage_open/fall17_conspicuous_camouflage_open.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_fall17_conspicuous_camouflage_style0" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/fall17_conspicuous_camouflage_closed/fall17_conspicuous_camouflage_closed.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_fall17_conspicuous_camouflage_style1" + } + } + } + } + "30893" + { + "name" "The Classy Capper" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_classy_capper" + "item_description" "#TF_fall17_classy_capper_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/fall17_hunter/fall17_hunter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/fall17_hunter/fall17_hunter.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30894" + { + "name" "The Most Dangerous Mane" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_most_dangerous_mane" + "item_description" "#TF_fall17_most_dangerous_mane_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/fall17_most_dangerous_mane/fall17_most_dangerous_mane" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/fall17_most_dangerous_mane/fall17_most_dangerous_mane.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30895" + { + "name" "Rifleman's Regalia" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_riflemans_regalia" + "item_description" "#TF_fall17_riflemans_regalia_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/fall17_riflemans_regalia/fall17_riflemans_regalia" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/fall17_riflemans_regalia/fall17_riflemans_regalia.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30896" + { + "name" "Attack Packs" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_attack_packs" + "item_description" "#TF_fall17_attack_packs_Desc" + "item_type_name" "#TF_Wearable_Provisions" + "equip_region" "soldier_pocket" + "image_inventory" "backpack/workshop/player/items/soldier/fall17_attack_packs/fall17_attack_packs" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/fall17_attack_packs/fall17_attack_packs.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30897" + { + "name" "The Shellmet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_shellmet" + "item_description" "#TF_fall17_shellmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/fall17_bullet_bowl/fall17_bullet_bowl" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/fall17_bullet_bowl/fall17_bullet_bowl.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30898" + { + "name" "Sharp Chest Pain" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_chest_pain" + "item_description" "#TF_fall17_chest_pain_Desc" + "item_type_name" "#TF_Wearable_Knife" + "equip_region" "soldier_coat" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/fall17_chest_pain/fall17_chest_pain" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/fall17_chest_pain/fall17_chest_pain.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30899" + { + "name" "The Crit Cloak" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_crit_cloak" + "item_description" "#TF_fall17_crit_cloak_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/fall17_crit_cloak/fall17_crit_cloak" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/fall17_crit_cloak/fall17_crit_cloak.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30900" + { + "name" "Fireman's Essentials" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_firemans_essentials" + "item_type_name" "#TF_Wearable_Tools" + "item_description" "#TF_fall17_firemans_essentials_Desc" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/fall17_firemanns_essentials/fall17_firemanns_essentials" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall17_firemanns_essentials/fall17_firemanns_essentials.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30901" + { + "name" "D-eye-monds" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_deyemonds" + "item_description" "#TF_fall17_deyemonds_Desc" + "item_type_name" "#TF_Wearable_Eyes" + "equip_region" "lenses" + "image_inventory" "backpack/workshop/player/items/pyro/fall17_deyemonds/fall17_deyemonds" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall17_deyemonds/fall17_deyemonds.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30902" + { + "name" "Deity's Dress" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_deitys_dress" + "item_description" "#TF_fall17_deitys_dress_Desc" + "item_type_name" "#TF_Wearable_CosmeticItem" + "equip_region" "belt_misc" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/fall17_deitys_dress/fall17_deitys_dress" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall17_deitys_dress/fall17_deitys_dress.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30903" + { + "name" "Feathered Fiend" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_feathered_fiend" + "item_description" "#TF_fall17_feathered_fiend_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/fall17_feathered_fiend/fall17_feathered_fiend" + "drop_type" "drop" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall17_feathered_fiend/fall17_feathered_fiend.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30904" + { + "name" "Sacrificial Stone" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_sacrificial_stone" + "item_description" "#TF_fall17_sacrificial_stone_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/fall17_sacrificial_stone/fall17_sacrificial_stone" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall17_sacrificial_stone/fall17_sacrificial_stone.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "30905" + { + "name" "The Hot Huaraches" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_hot_huaraches" + "item_description" "#TF_fall17_hot_huaraches_Desc" + "item_type_name" "#TF_Wearable_FlipFlops" + "equip_region" "feet" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/fall17_hot_huaraches/fall17_hot_huaraches" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/fall17_hot_huaraches/fall17_hot_huaraches.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30906" + { + "name" "Vitals Vest" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_vitals_vest" + "item_description" "#TF_fall17_vitals_vest_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/fall17_vitals_vest/fall17_vitals_vest" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/fall17_vitals_vest/fall17_vitals_vest.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30907" + { + "name" "Battle Boonie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_battle_boonie" + "item_description" "#TF_fall17_battle_boonie_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/fall17_battle_boonie/fall17_battle_boonie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/fall17_battle_boonie/fall17_battle_boonie.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30908" + { + "name" "Conaghers' Utility Idol" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_conaghers_utility_idol" + "item_description" "#TF_fall17_conaghers_utility_idol_Desc" + "item_type_name" "#TF_Wearable_Idol" + "equip_region" "engineer_belt" + "image_inventory" "backpack/workshop/player/items/engineer/fall17_conaghers_utility_idol/fall17_conaghers_utility_idol" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/fall17_conaghers_utility_idol/fall17_conaghers_utility_idol.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "30909" + { + "name" "Tropical Toad" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_tropical_toad" + "item_description" "#TF_fall17_tropical_toad_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "engineer_pocket" + "image_inventory" "backpack/workshop/player/items/engineer/fall17_tropical_toad/fall17_tropical_toad" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/fall17_tropical_toad/fall17_tropical_toad.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30910" + { + "name" "Heavy Harness" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_heavy_harness" + "item_description" "#TF_fall17_heavy_harness_Desc" + "item_type_name" "#TF_Wearable_SafetyApparatus" + "equip_region" "heavy_towel" + "image_inventory" "backpack/workshop/player/items/heavy/fall17_heavy_harness/fall17_heavy_harness" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/fall17_heavy_harness/fall17_heavy_harness.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30911" + { + "name" "Fat Man's Field Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_fat_mans_field_cap" + "item_description" "#TF_fall17_fat_mans_field_cap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/fall17_fat_manns_field_cap/fall17_fat_manns_field_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/fall17_fat_manns_field_cap/fall17_fat_manns_field_cap.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30912" + { + "name" "Commando Elite" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_commando_elite" + "item_description" "#TF_fall17_commando_elite_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/fall17_commando_elite/fall17_commando_elite" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/fall17_commando_elite/fall17_commando_elite.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30913" + { + "name" "Siberian Tigerstripe" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_siberian_tigerstripe" + "item_description" "#TF_fall17_siberian_tigerstripe_Desc" + "item_type_name" "#TF_Wearable_Uniform" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/fall17_siberian_tigerstripe/fall17_siberian_tigerstripe" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/fall17_siberian_tigerstripe/fall17_siberian_tigerstripe.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30914" + { + "name" "The Aztec Aggressor" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_aztec_aggressor" + "item_description" "#TF_fall17_aztec_aggressor_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/fall17_aztec_aggressor/fall17_aztec_aggressor" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/fall17_aztec_aggressor/fall17_aztec_aggressor.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30915" + { + "name" "The Pithy Professional" + "prefab" "no_craft hat marketable" + "item_name" "#TF_fall17_pithy_pro" + "item_description" "#TF_fall17_pithy_pro_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/fall17_scholar/fall17_scholar" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fall17_scholar/fall17_scholar_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30916" + { + "name" "Bait and Bite" + "prefab" "no_craft misc marketable" + "item_name" "#TF_fall17_bait_and_bite" + "item_description" "#TF_fall17_bait_and_bite_Desc" + "item_type_name" "#TF_Wearable_Fish" + "equip_region" "sniper_pocket" + "image_inventory" "backpack/workshop/player/items/sniper/fall17_bait_and_bite/fall17_bait_and_bite" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/fall17_bait_and_bite/fall17_bait_and_bite.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30917" + { + "name" "Taunt: The Trackman's Touchdown" + "first_sale_date" "2017/12/20" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_trackmans_touchdown" + "item_description" "#TF_taunt_the_trackmans_touchdown_Desc" + "image_inventory" "backpack/workshop/player/items/scout/taunt_the_trackmans_touchdown/taunt_the_trackmans_touchdown" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_trackmans_touchdown.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_the_trackmans_touchdown/taunt_the_trackmans_touchdown.mdl" + } + } + } + "30918" + { + "name" "Taunt: Surgeon's Squeezebox" + "first_sale_date" "2017/12/20" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_surgeons_squeezebox" + "item_description" "#TF_taunt_surgeons_squeezebox_Desc" + "image_inventory" "backpack/workshop/player/items/medic/taunt_surgeons_squeezebox/taunt_surgeons_squeezebox" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.SurgeonsSqueezeboxMusic" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_surgeons_squeezebox.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_surgeons_squeezebox_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/workshop/player/items/medic/taunt_surgeons_squeezebox/taunt_surgeons_squeezebox.mdl" + } + } + } + "30919" + { + "name" "Taunt: The Skating Scorcher" + "first_sale_date" "2017/12/20" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_skating_scorcher" + "item_description" "#TF_taunt_the_skating_scorcher_Desc" + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "1" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/taunt_the_skating_scorcher/taunt_the_skating_scorcher" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_skating_scorcher_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_skating_scorcher_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_skating_scorcher_trick1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_skating_scorcher_trick2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/taunt_the_skating_scorcher/taunt_the_skating_scorcher.mdl" + } + } + } + "30920" + { + "name" "Taunt: The Bunnyhopper" + "first_sale_date" "2017/12/20" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_bunnyhopper" + "item_description" "#TF_taunt_the_bunnyhopper_Desc" + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "0" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "1" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + } + "image_inventory" "backpack/workshop/player/items/scout/taunt_the_bunnyhopper/taunt_the_bunnyhopper" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_bunnyhopper_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_bunnyhopper_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_bunnyhopper_flip.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_bunnyhopper_spin.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_the_bunnyhopper/taunt_the_bunnyhopper.mdl" + } + } + } + "30921" + { + "name" "Taunt: Runner's Rhythm" + "first_sale_date" "2017/12/20" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_runners_rhythm" + "item_description" "#TF_taunt_runners_rhythm_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/taunt_runners_rhythm/taunt_runners_rhythm" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_runners_rhythm.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_runners_rhythm_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_runners_rhythm/taunt_runners_rhythm.mdl" + } + } + } + "30922" + { + "name" "Taunt: Luxury Lounge" + "first_sale_date" "2017/12/20" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_luxury_lounge" + "item_description" "#TF_taunt_luxury_lounge_Desc" + "image_inventory" "backpack/workshop/player/items/spy/taunt_luxury_lounge/taunt_luxury_lounge" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_luxury_lounge.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_luxury_lounge_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "spy" "models/workshop/player/items/spy/taunt_luxury_lounge/taunt_luxury_lounge.mdl" + } + } + } + "30923" + { + "name" "Sledder's Sidekick" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_sledders_sidekick" + "item_description" "#TF_dec17_sledders_sidekick_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/all_class/dec17_sledders_sidekick/dec17_sledders_sidekick" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec17_sledders_sidekick/dec17_sledders_sidekick_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30928" + { + "name" "Balloonihoodie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_balloonihoodie" + "item_description" "#TF_dec17_balloonihoodie_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec17_balloonihoodie/dec17_balloonihoodie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec17_balloonihoodie/dec17_balloonihoodie_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30929" + { + "name" "Pocket Yeti" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_pocket_yeti" + "item_description" "#TF_dec17_pocket_yeti_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_regions" + { + "sniper_pocket" "1" + "engineer_pocket" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/dec17_pocket_yeti/dec17_pocket_yeti" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec17_pocket_yeti/dec17_pocket_yeti_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30930" + { + "name" "Trucker's Topper" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_truckers_topper" + "item_description" "#TF_dec17_truckers_topper_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec17_truckers_topper/dec17_truckers_topper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/dec17_truckers_topper/dec17_truckers_topper_scout.mdl" + "engineer" "models/workshop/player/items/all_class/dec17_truckers_topper/dec17_truckers_topper_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30936" + { + "name" "Burning Beanie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_burning_beanie" + "item_description" "#TF_dec17_burning_beanie_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/dec17_burning_beanie/dec17_burning_beanie" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/dec17_burning_beanie/dec17_burning_beanie.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30937" + { + "name" "The Cat's Pajamas" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_cats_pajamas" + "item_description" "#TF_dec17_cats_pajamas_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/dec17_cats_pajamas/dec17_cats_pajamas" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec17_cats_pajamas/dec17_cats_pajamas.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30939" + { + "name" "Coldfront Commander" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_coldfront_commander" + "item_description" "#TF_dec17_coldfront_commander_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/dec17_coldfront_commander/dec17_coldfront_commander" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec17_coldfront_commander/dec17_coldfront_commander.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30940" + { + "name" "Coldfront Carapace" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_coldfront_carapace" + "item_description" "#TF_dec17_coldfront_carapace_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/dec17_coldfront_carapace/dec17_coldfront_carapace" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec17_coldfront_carapace/dec17_coldfront_carapace.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30945" + { + "name" "Blast Blocker" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_blast_blocker" + "item_description" "#TF_dec17_blast_blocker_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/dec17_blast_blocker/dec17_blast_blocker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec17_blast_blocker/dec17_blast_blocker.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "30954" + { + "name" "Hungover Hero" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_hungover_hero" + "item_description" "#TF_dec17_hungover_hero_Desc" + "item_type_name" "#TF_Wearable_Headgear" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec17_hungover_hero/dec17_hungover_hero" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec17_hungover_hero/dec17_hungover_hero.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "30955" + { + "name" "The Handsome Hitman" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_handsome_hitman" + "item_description" "#TF_dec17_handsome_hitman_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "head_skin" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/dec17_handsome_hitman/dec17_handsome_hitman" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec17_handsome_hitman/dec17_handsome_hitman.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30958" + { + "name" "Puffy Polar Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_puffy_polar_cap" + "item_description" "#TF_dec17_puffy_polar_cap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/dec17_puffy_polar_cap/dec17_puffy_polar_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec17_puffy_polar_cap/dec17_puffy_polar_cap.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30959" + { + "name" "The Sinner's Shade" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_sinners_shade" + "item_description" "#TF_dec17_sinners_shade_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/dec17_sinners_shade/dec17_sinners_shade" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec17_sinners_shade/dec17_sinners_shade.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30960" + { + "name" "Wild West Whiskers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_wild_west_whiskers" + "item_description" "#TF_dec17_wild_west_whiskers_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/heavy/dec17_wild_west_whiskers/dec17_wild_west_whiskers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec17_wild_west_whiskers/dec17_wild_west_whiskers.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30964" + { + "name" "Polar Bear" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_polar_bear" + "item_description" "#TF_dec17_polar_bear_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/dec17_polar_bear/dec17_polar_bear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec17_polar_bear/dec17_polar_bear.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30969" + { + "name" "Brass Bucket" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_brass_bucket" + "item_description" "#TF_dec17_brass_bucket_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec17_brass_bucket/dec17_brass_bucket" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec17_brass_bucket/dec17_brass_bucket.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "30971" + { + "name" "Down Tundra Coat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_down_tundra_coat" + "item_description" "#TF_dec17_down_tundra_coat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/dec17_down_tundra_coat/dec17_down_tundra_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec17_down_tundra_coat/dec17_down_tundra_coat.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30972" + { + "name" "Pocket Santa" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_pocket_santa" + "item_description" "#TF_dec17_pocket_santa_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/all_class/dec17_pocket_santa/dec17_pocket_santa" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec17_pocket_santa/dec17_pocket_santa_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "30973" + { + "name" "Melody Of Misery" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec17_melody_of_misery" + "item_description" "#TF_dec17_melody_of_misery_Desc" + "item_type_name" "#TF_Wearable_Bagpipes" + "equip_region" "back" + "image_inventory" "backpack/workshop/player/items/demo/dec17_melody_of_misery/dec17_melody_of_misery" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec17_melody_of_misery/dec17_melody_of_misery.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_drop.wav" + } + "30974" + { + "name" "The Caribou Companion" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec17_caribou_companion" + "item_description" "#TF_dec17_caribou_companion_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec17_caribou_companion/dec17_caribou_companion" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec17_caribou_companion/dec17_caribou_companion_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30975" + { + "name" "Robin Walkers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_robin_walkers" + "item_description" "#TF_spr18_robin_walkers_Desc" + "item_type_name" "#TF_Wearable_Slippers" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/spr18_robin_walkers/spr18_robin_walkers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/spr18_robin_walkers/spr18_robin_walkers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30976" + { + "name" "The Tundra Top" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_tundra_top" + "item_description" "#TF_spr18_tundra_top_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/spr18_tundra_top/spr18_tundra_top" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/spr18_tundra_top/spr18_tundra_top_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30977" + { + "name" "Antarctic Eyewear" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_antarctic_eyewear" + "item_description" "#TF_spr18_antarctic_eyewear_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/spr18_antarctic_eyewear/spr18_antarctic_eyewear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/spr18_antarctic_eyewear/spr18_antarctic_eyewear_scout.mdl" + "sniper" "models/workshop/player/items/all_class/spr18_antarctic_eyewear/spr18_antarctic_eyewear_sniper.mdl" + "demoman" "models/workshop/player/items/all_class/spr18_antarctic_eyewear/spr18_antarctic_eyewear_demo.mdl" + "engineer" "models/workshop/player/items/all_class/spr18_antarctic_eyewear/spr18_antarctic_eyewear_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "demoman" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30978" + { + "name" "The Head Hedge" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_head_hedge" + "item_description" "#TF_spr18_head_hedge_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/spr18_head_hedge/spr18_head_hedge" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "sniper" "models/workshop/player/items/all_class/spr18_head_hedge/spr18_head_hedge_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/spr18_head_hedge/spr18_head_hedge_soldier.mdl" + } + "used_by_classes" + { + "sniper" "1" + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30979" + { + "name" "The Frag Proof Fragger" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_frag_proof_fragger" + "item_description" "#TF_spr18_frag_proof_fragger_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "whole_head" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/spr18_frag_proof_fragger/spr18_frag_proof_fragger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/spr18_frag_proof_fragger/spr18_frag_proof_fragger.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "30980" + { + "name" "Tsar Platinum" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_tsar_platinum" + "item_description" "#TF_spr18_tsar_platinum_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/spr18_tsar_platinum/spr18_tsar_platinum" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/spr18_tsar_platinum/spr18_tsar_platinum.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30981" + { + "name" "Starboard Crusader" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_starboard_crusader" + "item_description" "#TF_spr18_starboard_crusader_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/spr18_starboard_crusader/spr18_starboard_crusader" + "drop_type" "drop" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/spr18_starboard_crusader/spr18_starboard_crusader.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/spr18_starboard_crusader/spr18_starboard_crusader.mdl" + "name" "#TF_spr18_starboard_crusader_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/spr18_starboard_crusader_s1/spr18_starboard_crusader_s1.mdl" + "name" "#TF_spr18_starboard_crusader_style2" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "30982" + { + "name" "Scourge of the Sky" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_scourge_of_the_sky" + "item_description" "#TF_spr18_scourge_of_the_sky_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/spr18_scourge_of_the_sky/spr18_scourge_of_the_sky" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/spr18_scourge_of_the_sky/spr18_scourge_of_the_sky.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "30983" + { + "name" "Veterans Attire" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_veterans_attire" + "item_description" "#TF_spr18_veterans_attire_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "soldier_coat" + "image_inventory" "backpack/workshop/player/items/soldier/spr18_veterans_attire/spr18_veterans_attire" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/spr18_veterans_attire/spr18_veterans_attire.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30984" + { + "name" "Sky High Fly Guy" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_sky_high_fly_guy" + "item_description" "#TF_spr18_sky_high_fly_guy_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/spr18_sky_high_fly_guy/spr18_sky_high_fly_guy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/spr18_sky_high_fly_guy/spr18_sky_high_fly_guy.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30985" + { + "name" "Private Maggot Muncher" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_private_maggot_muncher" + "item_description" "#TF_spr18_private_maggot_muncher_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/soldier/spr18_private_maggot_muncher/spr18_private_maggot_muncher" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/spr18_private_maggot_muncher/spr18_private_maggot_muncher.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30986" + { + "name" "The Hot Case" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_hot_case" + "item_description" "#TF_spr18_hot_case_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/spr18_hot_case/spr18_hot_case" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/spr18_hot_case/spr18_hot_case.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30987" + { + "name" "The Burning Question" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_burning_question" + "item_description" "#TF_spr18_burning_question_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/spr18_burning_question/spr18_burning_question" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/spr18_burning_question/spr18_burning_question.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30988" + { + "name" "Aristotle" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_aristotle" + "item_description" "#TF_spr18_aristotle_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "arms" + "image_inventory" "backpack/workshop/player/items/spy/spr18_aristotle/spr18_aristotle" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/spr18_aristotle/spr18_aristotle.mdl" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30989" + { + "name" "Assassin's Attire" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_assassins_attire" + "item_description" "#TF_spr18_assassins_attire_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/spr18_assassins_attire/spr18_assassins_attire" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/spr18_assassins_attire/spr18_assassins_attire.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30990" + { + "name" "Wipe Out Wraps" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_wipe_out_wraps" + "item_description" "#TF_spr18_wipe_out_wraps_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/spr18_wipe_out_wraps/spr18_wipe_out_wraps" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/spr18_wipe_out_wraps/spr18_wipe_out_wraps.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30991" + { + "name" "Blizzard Britches" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_blizzard_britches" + "item_description" "#TF_spr18_blizzard_britches_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "pants" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/spr18_blizzard_britches/spr18_blizzard_britches" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/spr18_blizzard_britches/spr18_blizzard_britches.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30992" + { + "name" "The Cold Case" + "prefab" "no_craft misc marketable" + "item_name" "#TF_spr18_cold_case" + "item_description" "#TF_spr18_cold_case_Desc" + "item_type_name" "#TF_Wearable_Cooler" + "equip_region" "back" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/engineer/spr18_cold_case/spr18_cold_case" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/spr18_cold_case/spr18_cold_case.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "30993" + { + "name" "Punk's Pomp" + "prefab" "no_craft hat marketable" + "item_name" "#TF_spr18_punks_pomp" + "item_description" "#TF_spr18_punks_pomp_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/spr18_punks_pomp/spr18_punks_pomp" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/spr18_punks_pomp/spr18_punks_pomp.mdl" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30994" + { + "name" "A Shell of a Mann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_shell_of_a_mann" + "item_description" "#TF_hwn2018_shell_of_a_mann_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "back" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2018_shell_of_a_mann/hwn2018_shell_of_a_mann" + "capabilities" + { + "can_craft_count" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/engineer/hwn2018_shell_of_a_mann/hwn2018_shell_of_a_mann.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "30995" + { + "name" "Dell in the Shell" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_dell_in_the_shell" + "item_description" "#TF_hwn2018_dell_in_the_shell_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2018_dell_in_the_shell/hwn2018_dell_in_the_shell" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/engineer/hwn2018_dell_in_the_shell/hwn2018_dell_in_the_shell.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "30996" + { + "name" "Terror-antula" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_terror_antula" + "item_description" "#TF_hwn2018_terror_antula_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2018_terror_antula/hwn2018_terror_antula" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2018_terror_antula/hwn2018_terror_antula_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "30997" + { + "name" "Deadbeats" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_deadbeats" + "item_description" "#TF_hwn2018_deadbeats_Desc" + "item_type_name" "#TF_Wearable_Headphones" + "equip_region" "ears" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2018_deadbeats/hwn2018_deadbeats" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2018_deadbeats/hwn2018_deadbeats_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2018_deadbeats_Style0" + } + "1" + { + "name" "#TF_hwn2018_deadbeats_Style1" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + } + } + } + "30998" + { + "name" "Lucky Cat Hat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_lucky_cat_hat" + "item_description" "#TF_hwn2018_lucky_cat_hat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2018_lucky_cat_hat/hwn2018_lucky_cat_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2018_lucky_cat_hat/hwn2018_lucky_cat_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "30999" + { + "name" "Olympic Leapers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_olympic_leapers" + "item_description" "#TF_hwn2018_olympic_leapers_Desc" + "item_type_name" "#TF_Wearable_Shoes" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2018_olympic_leapers/hwn2018_olympic_leapers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2018_olympic_leapers/hwn2018_olympic_leapers.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31000" + { + "name" "Hephaistos' Handcraft" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_hephaistos_handcraft" + "item_description" "#TF_hwn2018_hephaistos_handcraft_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2018_hephaistos_handcraft/hwn2018_hephaistos_handcraft" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2018_hephaistos_handcraft/hwn2018_hephaistos_handcraft.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31001" + { + "name" "Athenian Attire" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_athenian_attire" + "item_description" "#TF_hwn2018_athenian_attire_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2018_athenian_attire/hwn2018_athenian_attire" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2018_athenian_attire/hwn2018_athenian_attire.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31002" + { + "name" "The Tank Top" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_tank_top" + "item_description" "#TF_hwn2018_tank_top_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2018_tank_top/hwn2018_tank_top" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2018_tank_top/hwn2018_tank_top.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "31003" + { + "name" "Vampire Vanquisher" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_vampire_vanquisher" + "item_description" "#TF_hwn2018_vampire_vanquisher_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2018_vampire_vanquisher/hwn2018_vampire_vanquisher" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2018_vampire_vanquisher/hwn2018_vampire_vanquisher.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31004" + { + "name" "Pyro in Chinatown" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_pyro_in_chinatown" + "item_description" "#TF_hwn2018_pyro_in_chinatown_Desc" + "item_type_name" "#TF_Wearable_Flair" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2018_pyro_in_chinatown/hwn2018_pyro_in_chinatown" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2018_pyro_in_chinatown/hwn2018_pyro_in_chinatown.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/hwn2018_pyro_in_chinatown/hwn2018_pyro_in_chinatown.mdl" + "name" "#TF_hwn2018_pyro_in_chinatown_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/hwn2018_pyro_in_little_chinatown/hwn2018_pyro_in_little_chinatown.mdl" + "name" "#TF_hwn2018_pyro_in_chinatown_style2" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31005" + { + "name" "Scopers Scales" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_scopers_scales" + "item_description" "#TF_hwn2018_scopers_scales_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_regions" + { + "arms" "1" + "sniper_legs" "1" + } + "image_inventory" "backpack/workshop/player/items/sniper/hwn2018_scopers_scales/hwn2018_scopers_scales" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2018_scopers_scales/hwn2018_scopers_scales.mdl" + "used_by_classes" + { + "sniper" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "31006" + { + "name" "Mr. Quackers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_mr_quackers" + "item_description" "#TF_hwn2018_mr_quackers_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2018_mr_quackers/hwn2018_mr_quackers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2018_mr_quackers/hwn2018_mr_quackers.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31007" + { + "name" "The Arachno-Arsonist" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_arachno_arsonist" + "item_description" "#TF_hwn2018_arachno_arsonist_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2018_arachno_arsonist/hwn2018_arachno_arsonist" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2018_arachno_arsonist/hwn2018_arachno_arsonist.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31008" + { + "name" "Mann-O-War" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_mann_o_war" + "item_description" "#TF_hwn2018_mann_o_war_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2018_mann_o_war/hwn2018_mann_o_war" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2018_mann_o_war/hwn2018_mann_o_war.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31009" + { + "name" "Crocodile Mun-Dee" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_crocodile_mun_dee" + "item_description" "#TF_hwn2018_crocodile_mun_dee_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/hwn2018_crocodile_mun_dee/hwn2018_crocodile_mun_dee" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/sniper/hwn2018_crocodile_mun_dee/hwn2018_crocodile_mun_dee.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "31010" + { + "name" "Highway Star" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_highway_star" + "item_description" "#TF_hwn2018_highway_star_Desc" + "item_type_name" "#TF_Wearable_Bandana" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/hwn2018_highway_star/hwn2018_highway_star" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2018_highway_star/hwn2018_highway_star.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31011" + { + "name" "Defragmenting Hard Hat 17%" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_defragmenting_hat" + "item_description" "#TF_hwn2018_defragmenting_hat_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2018_defragmenting_hat/hwn2018_defragmenting_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2018_defragmenting_hat/hwn2018_defragmenting_hat.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31012" + { + "name" "Aim Assistant" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_aimbot_assistant" + "item_description" "#TF_hwn2018_aimbot_assistant_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "right_shoulder" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2018_aimbot_assistant/hwn2018_aimbot_assistant" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2018_aimbot_assistant/hwn2018_aimbot_assistant.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/hwn2018_aimbot_assistant/hwn2018_aimbot_assistant.mdl" + "name" "#TF_hwn2018_aimbot_assistant_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/hwn2018_aimbot_assistant_s2/hwn2018_aimbot_assistant_s2.mdl" + "name" "#TF_hwn2018_aimbot_assistant_style2" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31013" + { + "name" "Mini-Engy" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_mini_engy" + "item_description" "#TF_hwn2018_mini_engy_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "engineer_belt" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2018_mini_engy/hwn2018_mini_engy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2018_mini_engy/hwn2018_mini_engy.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31014" + { + "name" "Dressperado" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_dressperado" + "item_description" "#TF_hwn2018_dressperado_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/hwn2018_dressperado/hwn2018_dressperado" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2018_dressperado/hwn2018_dressperado.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31015" + { + "name" "Bandit's Boots" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_bandits_boots" + "item_description" "#TF_hwn2018_bandits_boots_Desc" + "item_type_name" "#TF_Wearable_Boots" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/spy/hwn2018_bandits_boots/hwn2018_bandits_boots" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2018_bandits_boots/hwn2018_bandits_boots.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "31016" + { + "name" "Murderer's Motif" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2018_murderers_motif" + "item_description" "#TF_hwn2018_murderers_motif_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/spy/hwn2018_murderers_motif/hwn2018_murderers_motif" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2018_murderers_motif/hwn2018_murderers_motif.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31017" + { + "name" "Gaelic Glutton" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2018_gaelic_glutton" + "item_description" "#TF_hwn2018_gaelic_glutton_Desc" + "item_type_name" "#TF_Wearable_Chin" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/demo/hwn2018_gaelic_glutton/hwn2018_gaelic_glutton" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2018_gaelic_glutton/hwn2018_gaelic_glutton.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31018" + { + "name" "The Polar Pal" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_polar_pal" + "item_description" "#TF_dec18_polar_pal_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_regions" + { + "left_shoulder" "1" + "right_shoulder" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/dec18_polar_pal/dec18_polar_pal" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "propername" "1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec18_polar_pal/dec18_polar_pal_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec18_polar_pal/dec18_polar_pal_%s.mdl" + } + "name" "#TF_dec18_polar_pal_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec18_polar_pal_bamboo/dec18_polar_pal_bamboo_%s.mdl" + } + "name" "#TF_dec18_polar_pal_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec18_polar_pal_liberty/dec18_polar_pal_liberty_%s.mdl" + } + "name" "#TF_dec18_polar_pal_style2" + } + } + } + } + "31019" + { + "name" "Pocket Admin" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_pocket_admin" + "item_description" "#TF_dec18_pocket_admin_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/all_class/dec18_pocket_admin/dec18_pocket_admin" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec18_pocket_admin/dec18_pocket_admin_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31020" + { + "name" "Bread Heads" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_bread_heads" + "item_description" "#TF_dec18_bread_heads_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec18_bread_heads/dec18_bread_heads" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec18_bread_heads/dec18_bread_heads_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31021" + { + "name" "The Catcher's Companion" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_catchers_companion" + "item_description" "#TF_dec18_catchers_companion_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "right_shoulder" + "image_inventory" "backpack/workshop/player/items/scout/dec18_catchers_companion/dec18_catchers_companion" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "propername" "1" + "model_player" "models/workshop/player/items/scout/dec18_catchers_companion/dec18_catchers_companion.mdl" + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/dec18_catchers_companion/dec18_catchers_companion.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_catchers_companion_style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/dec18_catchers_companion_style/dec18_catchers_companion_style.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_catchers_companion_style1" + } + } + } + } + "31022" + { + "name" "Juvenile's Jumper" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_juveniles_jumper" + "item_description" "#TF_dec18_juveniles_jumper_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec18_juveniles_jumper/dec18_juveniles_jumper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec18_juveniles_jumper/dec18_juveniles_jumper.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/dec18_juveniles_jumper/dec18_juveniles_jumper.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_juveniles_jumper_style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/dec18_juveniles_jumper_modern/dec18_juveniles_jumper_modern.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_juveniles_jumper_style1" + } + "2" + { + "model_player" "models/workshop/player/items/scout/dec18_juveniles_jumper_plain/dec18_juveniles_jumper_plain.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_juveniles_jumper_style2" + } + } + } + } + "31023" + { + "name" "Millennial Mercenary" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_millennial_mercenary" + "item_description" "#TF_dec18_millennial_mercenary_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/scout/dec18_millennial_mercenary/dec18_millennial_mercenary" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec18_millennial_mercenary/dec18_millennial_mercenary.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/dec18_millennial_mercenary/dec18_millennial_mercenary.mdl" + "name" "#TF_dec18_millennial_mercenary_style0" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + "1" + { + "model_player" "models/workshop/player/items/scout/dec18_millennial_mercenary_style1/dec18_millennial_mercenary_style1.mdl" + "name" "#TF_dec18_millennial_mercenary_style1" + } + "2" + { + "model_player" "models/workshop/player/items/scout/dec18_millennial_mercenary_style2/dec18_millennial_mercenary_style2.mdl" + "name" "#TF_dec18_millennial_mercenary_style2" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + "3" + { + "model_player" "models/workshop/player/items/scout/dec18_millennial_mercenary_style3/dec18_millennial_mercenary_style3.mdl" + "name" "#TF_dec18_millennial_mercenary_style3" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + } + } + } + "31024" + { + "name" "The Crack Pot" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_crack_pot" + "item_description" "#TF_dec18_crack_pot_Desc" + "item_type_name" "#TF_Wearable_FlowerPot" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec18_crack_pot/dec18_crack_pot" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "propername" "1" + "model_player" "models/workshop/player/items/soldier/dec18_crack_pot/dec18_crack_pot.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "31025" + { + "name" "Climbing Commander" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_climbing_commander" + "item_description" "#TF_dec18_climbing_commander_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec18_climbing_commander/dec18_climbing_commander" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec18_climbing_commander/dec18_climbing_commander.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31026" + { + "name" "Pocket Pardner" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_pocket_pardner" + "item_description" "#TF_dec18_pocket_pardner_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/pyro/dec18_pocket_pardner/dec18_pocket_pardner" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec18_pocket_pardner/dec18_pocket_pardner.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/dec18_pocket_pardner/dec18_pocket_pardner.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_pocket_pardner_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/dec18_pocket_pardner_style/dec18_pocket_pardner_style.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_pocket_pardner_style1" + } + } + } + } + "31027" + { + "name" "Miser's Muttonchops" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_misers_muttonchops" + "item_description" "#TF_dec18_misers_muttonchops_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/medic/dec18_misers_muttonchops/dec18_misers_muttonchops" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec18_misers_muttonchops/dec18_misers_muttonchops.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31028" + { + "name" "Snowcapped" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_snowcapped" + "item_description" "#TF_dec18_snowcapped_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/dec18_snowcapped/dec18_snowcapped" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec18_snowcapped/dec18_snowcapped.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31029" + { + "name" "Cool Capuchon" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_cool_capuchon" + "item_description" "#TF_dec18_cool_capuchon_Desc" + "item_type_name" "#TF_Wearable_Hood" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/dec18_cool_capuchon/dec18_cool_capuchon" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec18_cool_capuchon/dec18_cool_capuchon.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/dec18_cool_capuchon/dec18_cool_capuchon.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_cool_capuchon_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/dec18_cool_capuchon_style/dec18_cool_capuchon_style.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec18_cool_capuchon_style1" + } + } + } + } + "31030" + { + "name" "Paka Parka" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_paka_parka" + "item_description" "#TF_dec18_paka_parka_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/dec18_paka_parka/dec18_paka_parka" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec18_paka_parka/dec18_paka_parka.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31031" + { + "name" "Wise Whiskers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_wise_whiskers" + "item_description" "#TF_dec18_wise_whiskers_Desc" + "item_type_name" "#TF_Wearable_FacialHair" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/engineer/dec18_wise_whiskers/dec18_wise_whiskers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec18_wise_whiskers/dec18_wise_whiskers.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec18_wise_whiskers_Hat" + } + "1" + { + "name" "#TF_dec18_wise_whiskers_NoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + } + } + } + "31032" + { + "name" "The Puggyback" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_puggyback" + "item_description" "#TF_dec18_puggyback_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "back" + "image_inventory" "backpack/workshop/player/items/engineer/dec18_puggyback/dec18_puggyback" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "propername" "1" + "model_player" "models/workshop/player/items/engineer/dec18_puggyback/dec18_puggyback.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "31033" + { + "name" "Harry" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec18_harry" + "item_description" "#TF_dec18_harry_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/all_class/dec18_harry/dec18_harry" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "medic" "models/workshop/player/items/all_class/dec18_harry/dec18_harry_medic.mdl" + "spy" "models/workshop/player/items/all_class/dec18_harry/dec18_harry_spy.mdl" + } + "used_by_classes" + { + "medic" "1" + "spy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "medic" "models/workshop/player/items/all_class/dec18_harry/dec18_harry_medic.mdl" + "spy" "models/workshop/player/items/all_class/dec18_harry/dec18_harry_spy.mdl" + } + "name" "#TF_dec18_harry_style0" + } + "1" + { + "model_player_per_class" + { + "medic" "models/workshop/player/items/all_class/dec18_harry_sleeping/dec18_harry_sleeping_medic.mdl" + "spy" "models/workshop/player/items/all_class/dec18_harry_sleeping/dec18_harry_sleeping_spy.mdl" + } + "name" "#TF_dec18_harry_style1" + } + "2" + { + "model_player_per_class" + { + "medic" "models/workshop/player/items/all_class/dec18_harry_villainous/dec18_harry_villainous_medic.mdl" + "spy" "models/workshop/player/items/all_class/dec18_harry_villainous/dec18_harry_villainous_spy.mdl" + } + "name" "#TF_dec18_harry_style2" + } + } + } + } + "31034" + { + "name" "Mighty Mitre" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_mighty_mitre" + "item_description" "#TF_dec18_mighty_mitre_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/dec18_mighty_mitre/dec18_mighty_mitre" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec18_mighty_mitre/dec18_mighty_mitre.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31035" + { + "name" "The Dumb Bell" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec18_dumb_bell" + "item_description" "#TF_dec18_dumb_bell_Desc" + "item_type_name" "#TF_Wearable_Bell" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/soldier/dec18_dumb_bell/dec18_dumb_bell" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "propername" "1" + "model_player" "models/workshop/player/items/soldier/dec18_dumb_bell/dec18_dumb_bell.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" + "drop_sound" "ui/item_metal_pot_pickup.wav" + } + "31036" + { + "name" "Stapler's Specs" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_staplers_specs" + "item_description" "#TF_sum19_staplers_specs_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/all_class/sum19_staplers_specs/sum19_staplers_specs" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum19_staplers_specs/sum19_staplers_specs_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31037" + { + "name" "Dynamite Abs" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_dynamite_abs" + "item_description" "#TF_sum19_dynamite_abs_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/demo/sum19_dynamite_abs/sum19_dynamite_abs" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/sum19_dynamite_abs/sum19_dynamite_abs.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum19_dynamite_abs_style1" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum19_dynamite_abs_style2" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "grenades" "1" + } + } + } + } + } + "31038" + { + "name" "Backbreaker's Skullcracker" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_backbreakers_skullcracker" + "item_description" "#TF_sum19_backbreakers_skullcracker_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/sum19_backbreakers_skullcracker/sum19_backbreakers_skullcracker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum19_backbreakers_skullcracker/sum19_backbreakers_skullcracker.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31039" + { + "name" "Backbreaker's Guards" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_backbreakers_guards" + "item_description" "#TF_sum19_backbreakers_guards_Desc" + "item_type_name" "#TF_Wearable_ShoulderPads" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/sum19_backbreakers_guards/sum19_backbreakers_guards" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum19_backbreakers_guards/sum19_backbreakers_guards.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31040" + { + "name" "Unforgiven Glory" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_unforgiven_glory" + "item_description" "#TF_sum19_unforgiven_glory_Desc" + "item_type_name" "#TF_Wearable_Scar" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/demo/sum19_unforgiven_glory/sum19_unforgiven_glory" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum19_unforgiven_glory/sum19_unforgiven_glory.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31041" + { + "name" "Melted Mop" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_melted_mop" + "item_description" "#TF_sum19_melted_mop_Desc" + "item_type_name" "#TF_Wearable_IceCreamCone" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/sum19_melted_mop/sum19_melted_mop" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum19_melted_mop/sum19_melted_mop.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31042" + { + "name" "The Bottle Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_bottle_cap" + "item_description" "#TF_sum19_bottle_cap_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum19_bottle_cap/sum19_bottle_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum19_bottle_cap/sum19_bottle_cap.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/sum19_bottle_cap/sum19_bottle_cap.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_bottle_cap_style1" + } + "1" + { + "model_player" "models/workshop/player/items/scout/sum19_bottle_cap_style1/sum19_bottle_cap_style1.mdl" + "skin_red" "0" + "skin_blu" "0" + "name" "#TF_sum19_bottle_cap_style2" + } + } + } + } + "31043" + { + "name" "The Pompous Privateer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_pompous_privateer" + "item_description" "#TF_sum19_pompous_privateer_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum19_pompous_privateer/sum19_pompous_privateer" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/sum19_pompous_privateer/sum19_pompous_privateer.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31044" + { + "name" "The Peacebreaker" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_peacebreaker" + "item_description" "#TF_sum19_peacebreaker_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sum19_peacebreaker/sum19_peacebreaker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum19_peacebreaker/sum19_peacebreaker.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31045" + { + "name" "Dancing Doe" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_dancing_doe" + "item_description" "#TF_sum19_dancing_doe_Desc" + "item_type_name" "#TF_Wearable_Bandana" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sum19_dancing_doe/sum19_dancing_doe" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum19_dancing_doe/sum19_dancing_doe.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31046" + { + "name" "Texas Toast" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_texas_toast" + "item_description" "#TF_sum19_texas_toast_Desc" + "item_type_name" "#TF_Wearable_Toaster" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sum19_texas_toast/sum19_texas_toast" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum19_texas_toast/sum19_texas_toast.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31047" + { + "name" "The Fiery Phoenix" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_fiery_phoenix" + "item_description" "#TF_sum19_fiery_phoenix_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/sum19_fiery_phoenix/sum19_fiery_phoenix" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/sum19_fiery_phoenix/sum19_fiery_phoenix.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31048" + { + "name" "Shutterbug" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_camera_hat" + "item_description" "#TF_sum19_camera_hat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/spy/sum19_camera_hat/sum19_camera_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum19_camera_hat/sum19_camera_hat.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/sum19_camera_hat/sum19_camera_hat.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_camera_hat_style1" + } + "1" + { + "model_player" "models/workshop/player/items/spy/sum19_camera_hat_style1/sum19_camera_hat_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_camera_hat_style2" + } + "2" + { + "model_player" "models/workshop/player/items/spy/sum19_camera_hat_style2/sum19_camera_hat_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_camera_hat_style3" + } + } + } + } + "31049" + { + "name" "Brain Interface" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_brain_interface" + "item_description" "#TF_sum19_brain_interface_Desc" + "item_type_name" "#TF_Wearable_Augmentation" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/sum19_brain_interface/sum19_brain_interface" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum19_brain_interface/sum19_brain_interface.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "31050" + { + "name" "Spawn Camper" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_spawn_camper_backpack" + "item_description" "#TF_sum19_spawn_camper_backpack_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum19_spawn_camper_backpack/sum19_spawn_camper_backpack" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum19_spawn_camper_backpack/sum19_spawn_camper_backpack.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "31051" + { + "name" "Wanderer's Wear" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_spawn_camper_jacket" + "item_description" "#TF_sum19_spawn_camper_jacket_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum19_spawn_camper_jacket/sum19_spawn_camper_jacket" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/sum19_spawn_camper_jacket/sum19_spawn_camper_jacket.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31052" + { + "name" "Mediterranean Mercenary" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_mediterranean_mercenary" + "item_description" "#TF_sum19_mediterranean_mercenary_Desc" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/heavy/sum19_mediterranean_mercenary/sum19_mediterranean_mercenary" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum19_mediterranean_mercenary/sum19_mediterranean_mercenary.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/sum19_mediterranean_mercenary/sum19_mediterranean_mercenary.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_mediterranean_mercenary_style1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/sum19_defiant_day/sum19_defiant_day.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_mediterranean_mercenary_style2" + } + } + } + } + "31053" + { + "name" "Kapitan's Kaftan" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_kapitans_kaftan" + "item_description" "#TF_sum19_kapitans_kaftan_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/sum19_kapitans_kaftan/sum19_kapitans_kaftan" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum19_kapitans_kaftan/sum19_kapitans_kaftan.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31054" + { + "name" "The Bare Necessities" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_bare_necessities" + "item_description" "#TF_sum19_bare_necessities_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/sum19_bare_necessities/sum19_bare_necessities" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum19_bare_necessities/sum19_bare_necessities.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31055" + { + "name" "Wagga Wagga Wear" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum19_wagga_wagga_wear" + "item_description" "#TF_sum19_wagga_wagga_wear_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/sum19_wagga_wagga_wear/sum19_wagga_wagga_wear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum19_wagga_wagga_wear/sum19_wagga_wagga_wear.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31056" + { + "name" "Speedy Scoundrel" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_speedy_scoundrel" + "item_description" "#TF_sum19_speedy_scoundrel_Desc" + "equip_region" "head_skin" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum19_speedy_scoundrel/sum19_speedy_scoundrel" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum19_speedy_scoundrel/sum19_speedy_scoundrel.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/sum19_speedy_scoundrel/sum19_speedy_scoundrel.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_speedy_scoundrel_style1" + } + "1" + { + "model_player" "models/workshop/player/items/scout/sum19_speedy_scoundrel_style2/sum19_speedy_scoundrel_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum19_speedy_scoundrel_style2" + } + "2" + { + "model_player" "models/workshop/player/items/scout/sum19_lion_of_the_seas/sum19_lion_of_the_seas.mdl" + "name" "#TF_sum19_speedy_scoundrel_style3" + } + } + } + } + "31057" + { + "name" "Bobby Bonnet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum19_bobby_bonnet" + "item_description" "#TF_sum19_bobby_bonnet_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum19_bobby_bonnet/sum19_bobby_bonnet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/sum19_bobby_bonnet/sum19_bobby_bonnet_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/sum19_bobby_bonnet/sum19_bobby_bonnet_demo.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31058" + { + "name" "Bat Hat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_bat_hat" + "item_description" "#TF_hwn2019_bat_hat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_bat_hat/hwn2019_bat_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_bat_hat/hwn2019_bat_hat_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31059" + { + "name" "Mister Bones" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_mister_bones" + "item_description" "#TF_hwn2019_mister_bones_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_mister_bones/hwn2019_mister_bones" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_mister_bones/hwn2019_mister_bones_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31060" + { + "name" "Binoculus" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_binoculus" + "item_description" "#TF_hwn2019_binoculus_Desc" + "item_type_name" "#TF_Wearable_Eyes" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_binoculus/hwn2019_binoculus" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_binoculus/hwn2019_binoculus_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_binoculus/hwn2019_binoculus_%s.mdl" + } + "name" "#TF_hwn2019_binoculus_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_binoculus_style2/hwn2019_binoculus_style2_%s.mdl" + } + "name" "#TF_hwn2019_binoculus_style1" + } + } + } + } + "31061" + { + "name" "Pocket Halloween Boss" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_pocket_hwn_boss" + "item_description" "#TF_hwn2019_pocket_hwn_boss_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_pocket_merasmus/hwn2019_pocket_merasmus" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_pocket_merasmus/hwn2019_pocket_merasmus_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_pocket_merasmus/hwn2019_pocket_merasmus_%s.mdl" + } + "name" "#TF_hwn2019_pocket_hwn_boss_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_pocket_ghost/hwn2019_pocket_ghost_%s.mdl" + } + "name" "#TF_hwn2019_pocket_hwn_boss_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_pocket_monoculus/hwn2019_pocket_monoculus_%s.mdl" + } + "name" "#TF_hwn2019_pocket_hwn_boss_style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_pocket_skeleton_king/hwn2019_pocket_skeleton_king_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2019_pocket_hwn_boss_style3" + } + } + } + } + "31062" + { + "name" "Bread Biter" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_bread_biter" + "item_description" "#TF_hwn2019_bread_biter_Desc" + "item_type_name" "#TF_Wearable_Bread" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_bread_biter/hwn2019_bread_biter" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_bread_biter/hwn2019_bread_biter_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31063" + { + "name" "The Horrible Horns" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_horrible_horns" + "item_description" "#TF_hwn2019_horrible_horns_Desc" + "item_type_name" "#TF_Wearable_Horns" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_horrible_horns/hwn2019_horrible_horns" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2019_horrible_horns/hwn2019_horrible_horns_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2019_horrible_horns_WithNoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_hwn2019_horrible_horns_WithHat" + } + } + } + } + "31064" + { + "name" "The Trick Stabber" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_trick_stabber" + "item_description" "#TF_hwn2019_trick_stabber_Desc" + "item_type_name" "#TF_Wearable_CosmeticItem" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2019_trick_stabber/hwn2019_trick_stabber" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "pyro" "models/workshop/player/items/all_class/hwn2019_trick_stabber/hwn2019_trick_stabber_pyro.mdl" + "engineer" "models/workshop/player/items/all_class/hwn2019_trick_stabber/hwn2019_trick_stabber_engineer.mdl" + } + "used_by_classes" + { + "pyro" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31065" + { + "name" "Head of the Dead" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_head_of_the_dead" + "item_description" "#TF_hwn2019_head_of_the_dead_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2019_head_of_the_dead/hwn2019_head_of_the_dead" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2019_head_of_the_dead/hwn2019_head_of_the_dead.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/hwn2019_head_of_the_dead/hwn2019_head_of_the_dead.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2019_head_of_the_dead_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/hwn2019_head_of_the_dead_style2/hwn2019_head_of_the_dead_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2019_head_of_the_dead_style1" + } + } + } + } + "31066" + { + "name" "Skullbrero" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_skullbrero" + "item_description" "#TF_hwn2019_skullbrero_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2019_skullbrero/hwn2019_skullbrero" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2019_skullbrero/hwn2019_skullbrero.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31067" + { + "name" "Candy Cranium" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_candycranium" + "item_description" "#TF_hwn2019_candycranium_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2019_candycranium/hwn2019_candycranium" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2019_candycranium/hwn2019_candycranium.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "31068" + { + "name" "Pyro Shark" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_pyro_shark" + "item_description" "#TF_hwn2019_pyro_shark_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Costume" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2019_pyro_shark/hwn2019_pyro_shark" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/pyro/hwn2019_pyro_shark/hwn2019_pyro_shark.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31069" + { + "name" "El Zapateador" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_el_zapateador" + "item_description" "#TF_hwn2019_el_zapateador_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2019_el_zapateador/hwn2019_el_zapateador" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2019_el_zapateador/hwn2019_el_zapateador.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31070" + { + "name" "Party Poncho" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_party_poncho" + "item_description" "#TF_hwn2019_party_poncho_Desc" + "item_type_name" "#TF_Wearable_Poncho" + "equip_region" "soldier_coat" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2019_party_poncho/hwn2019_party_poncho" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2019_party_poncho/hwn2019_party_poncho.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31071" + { + "name" "Racc Mann" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_racc_mann" + "item_description" "#TF_hwn2019_racc_mann_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2019_racc_mann/hwn2019_racc_mann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2019_racc_mann/hwn2019_racc_mann.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31072" + { + "name" "Voodoo Vizier" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_voodoo_vizier" + "item_description" "#TF_hwn2019_voodoo_vizier_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/hwn2019_voodoo_vizier/hwn2019_voodoo_vizier" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2019_voodoo_vizier/hwn2019_voodoo_vizier.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31073" + { + "name" "Avian Amante" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_avian_amante" + "item_description" "#TF_hwn2019_avian_amante_Desc" + "item_type_name" "#TF_Wearable_BirdHead" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "image_inventory" "backpack/workshop/player/items/spy/hwn2019_avian_amante/hwn2019_avian_amante" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/spy/hwn2019_avian_amante/hwn2019_avian_amante.mdl" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31074" + { + "name" "El Mostacho" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_el_mostacho" + "item_description" "#TF_hwn2019_el_mostacho_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2019_el_mostacho/hwn2019_el_mostacho" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2019_el_mostacho/hwn2019_el_mostacho.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31075" + { + "name" "Eingineer" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_eingineer" + "item_description" "#TF_hwn2019_eingineer_Desc" + "item_type_name" "#TF_Wearable_BirdHead" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2019_eingineer/hwn2019_eingineer" + "capabilities" + { + "can_craft_count" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/engineer/hwn2019_eingineer/hwn2019_eingineer.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31076" + { + "name" "Pyr'o Lantern" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_pyro_lantern" + "item_description" "#TF_hwn2019_pyro_lantern_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2019_pyro_lantern/hwn2019_pyro_lantern" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2019_pyro_lantern/hwn2019_pyro_lantern.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31077" + { + "name" "Madmann's Muzzle" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_madmanns_muzzle" + "item_description" "#TF_hwn2019_madmanns_muzzle_Desc" + "item_type_name" "#TF_Wearable_Muzzle" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/medic/hwn2019_madmanns_muzzle/hwn2019_madmanns_muzzle" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2019_madmanns_muzzle/hwn2019_madmanns_muzzle.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31078" + { + "name" "Derangement Garment" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_derangement_garment" + "item_description" "#TF_hwn2019_derangement_garment_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/hwn2019_derangement_garment/hwn2019_derangement_garment" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2019_derangement_garment/hwn2019_derangement_garment.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31079" + { + "name" "Soviet Strongmann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_soviet_strongmann" + "item_description" "#TF_hwn2019_soviet_strongmann_Desc" + "item_type_name" "#TF_Wearable_Tattoos" + "equip_region" "arm_tattoos" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2019_soviet_strongmann_style2/hwn2019_soviet_strongmann_style2" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2019_soviet_strongmann_style2/hwn2019_soviet_strongmann_style2.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/hwn2019_soviet_strongmann_style2/hwn2019_soviet_strongmann_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2019_soviet_strongmann_style1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/hwn2019_soviet_strongmann_style3/hwn2019_soviet_strongmann_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2019_soviet_strongmann_style2" + } + "2" + { + "model_player" "models/workshop/player/items/heavy/hwn2019_soviet_strongmann/hwn2019_soviet_strongmann.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2019_soviet_strongmann_style0" + } + } + } + } + "31080" + { + "name" "Convict Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_convict_cap" + "item_description" "#TF_hwn2019_convict_cap_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2019_convict_cap/hwn2019_convict_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2019_convict_cap/hwn2019_convict_cap.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/hwn2019_convict_cap/hwn2019_convict_cap.mdl" + "name" "#TF_hwn2019_convict_cap_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/hwn2019_convict_cap_style2/hwn2019_convict_cap_style2.mdl" + "name" "#TF_hwn2019_convict_cap_style1" + } + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "31081" + { + "name" "Fuel Injector" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_fuel_injector" + "item_description" "#TF_hwn2019_fuel_injector_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "beard" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2019_fuel_injector/hwn2019_fuel_injector" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2019_fuel_injector/hwn2019_fuel_injector.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/hwn2019_fuel_injector/hwn2019_fuel_injector.mdl" + "name" "#TF_hwn2019_fuel_injector_style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/hwn2019_fuel_injector_style2/hwn2019_fuel_injector_style2.mdl" + "name" "#TF_hwn2019_fuel_injector_style1" + } + "2" + { + "model_player" "models/workshop/player/items/scout/hwn2019_fuel_injector_style3/hwn2019_fuel_injector_style3.mdl" + "name" "#TF_hwn2019_fuel_injector_style2" + } + } + } + } + "31082" + { + "name" "Remorseless Raptor" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2019_remorseless_raptor" + "item_description" "#TF_hwn2019_remorseless_raptor_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2019_remorseless_raptor/hwn2019_remorseless_raptor" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/scout/hwn2019_remorseless_raptor/hwn2019_remorseless_raptor.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31083" + { + "name" "Wild Whip" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_wild_whip" + "item_description" "#TF_hwn2019_wild_whip_Desc" + "item_type_name" "#TF_Wearable_Costume" + "image_inventory" "backpack/workshop/player/items/scout/hwn2019_wild_whip/hwn2019_wild_whip" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "model_player" "models/workshop/player/items/scout/hwn2019_wild_whip/hwn2019_wild_whip.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31084" + { + "name" "Elizabeth the Third" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2019_elizabeth_the_third" + "item_description" "#TF_hwn2019_elizabeth_the_third_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "sniper_quiver" + "image_inventory" "backpack/workshop/player/items/sniper/hwn2019_elizabeth_the_third/hwn2019_elizabeth_the_third" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2019_elizabeth_the_third/hwn2019_elizabeth_the_third.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31085" + { + "name" "Bumble Beenie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_bumble_beenie" + "item_description" "#TF_dec19_bumble_beenie_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_bumble_beenie/dec19_bumble_beenie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_bumble_beenie/dec19_bumble_beenie_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31086" + { + "name" "Pebbles the Penguin" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_pebbles_the_penguin" + "item_description" "#TF_dec19_pebbles_the_penguin_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "right_shoulder" + "image_inventory" "backpack/workshop/player/items/all_class/dec19_pebbles_the_penguin/dec19_pebbles_the_penguin" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_pebbles_the_penguin/dec19_pebbles_the_penguin_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31087" + { + "name" "Yule Hog" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_yule_hog" + "item_description" "#TF_dec19_yule_hog_Desc" + "item_type_name" "#TF_Wearable_PorkProduct" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_yule_hog/dec19_yule_hog" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_yule_hog/dec19_yule_hog_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31088" + { + "name" "Gingerbread Mann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_gingerbread_mann" + "item_description" "#TF_dec19_gingerbread_mann_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "belt_misc" + "image_inventory" "backpack/workshop/player/items/all_class/dec19_gingerbread_mann_s1/dec19_gingerbread_mann_s1" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_gingerbread_mann_s1/dec19_gingerbread_mann_s1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec19_gingerbread_mann_style0" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_gingerbread_mann_s1/dec19_gingerbread_mann_s1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec19_gingerbread_mann_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_gingerbread_mann_s2/dec19_gingerbread_mann_s2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "31089" + { + "name" "Smissmas Saxton" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_smissmas_saxton" + "item_description" "#TF_dec19_smissmas_saxton_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_smissmas_saxton/dec19_smissmas_saxton" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_smissmas_saxton/dec19_smissmas_saxton_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31090" + { + "name" "Globetrotter" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_globetrotter" + "item_description" "#TF_dec19_globetrotter_Desc" + "item_type_name" "#TF_Wearable_Snowglobe" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_globetrotter_s1/dec19_globetrotter_s1" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_globetrotter_s1/dec19_globetrotter_s1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bottle_pickup.wav" + "drop_sound" "ui/item_bottle_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec19_globetrotter_style0" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_globetrotter_s1/dec19_globetrotter_s1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec19_globetrotter_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_globetrotter_s2/dec19_globetrotter_s2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31091" + { + "name" "Citizen Cane" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_citizen_cane" + "item_description" "#TF_dec19_citizen_cane_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_citizen_cane_s1/dec19_citizen_cane_s1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_citizen_cane_s1/dec19_citizen_cane_s1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec19_citizen_cane_style0" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_citizen_cane_s1/dec19_citizen_cane_s1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec19_citizen_cane_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_citizen_cane_s2/dec19_citizen_cane_s2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31092" + { + "name" "Candy Crown" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_candy_crown" + "item_description" "#TF_dec19_candy_crown_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_candy_crown/dec19_candy_crown" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_candy_crown/dec19_candy_crown_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31093" + { + "name" "Glittering Garland" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_glittering_garland" + "item_description" "#TF_dec19_glittering_garland_Desc" + "item_type_name" "#TF_Wearable_Garland" + "equip_region" "necklace" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_glittering_garland/dec19_glittering_garland" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec19_glittering_garland/dec19_glittering_garland_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31094" + { + "name" "Winter Wrap Up" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_winter_wrap_up" + "item_description" "#TF_dec19_winter_wrap_up_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec19_winter_wrap_up/dec19_winter_wrap_up" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "sniper" "models/workshop/player/items/all_class/dec19_winter_wrap_up/dec19_winter_wrap_up_sniper.mdl" + "pyro" "models/workshop/player/items/all_class/dec19_winter_wrap_up/dec19_winter_wrap_up_pyro.mdl" + "engineer" "models/workshop/player/items/all_class/dec19_winter_wrap_up/dec19_winter_wrap_up_engineer.mdl" + } + "used_by_classes" + { + "sniper" "1" + "pyro" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31095" + { + "name" "Public Speaker" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_public_speaker" + "item_description" "#TF_dec19_public_speaker_Desc" + "item_type_name" "#TF_Wearable_Speaker" + "image_inventory" "backpack/workshop/player/items/soldier/dec19_public_speaker/dec19_public_speaker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec19_public_speaker/dec19_public_speaker.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31096" + { + "name" "Discovision" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_discovision" + "item_description" "#TF_dec19_discovision_Desc" + "item_type_name" "#TF_Wearable_Eyes" + "equip_region" "lenses" + "image_inventory" "backpack/workshop/player/items/pyro/dec19_discovision/dec19_discovision" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec19_discovision/dec19_discovision.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31097" + { + "name" "Provisions Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_provisions_cap" + "item_description" "#TF_dec19_provisions_cap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/dec19_provisions_cap/dec19_provisions_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec19_provisions_cap/dec19_provisions_cap.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31098" + { + "name" "Telefragger Toque" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_telefragger_toque" + "item_description" "#TF_dec19_telefragger_toque_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/dec19_telefragger_toque/dec19_telefragger_toque" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec19_telefragger_toque/dec19_telefragger_toque.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31099" + { + "name" "Pocket-Medes" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_pocketmedes" + "item_description" "#TF_dec19_pocketmedes_Desc" + "item_type_name" "#TF_Wearable_PocketBuddy" + "equip_region" "medic_hip" + "image_inventory" "backpack/workshop/player/items/medic/dec19_pocketmedes/dec19_pocketmedes" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec19_pocketmedes/dec19_pocketmedes.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec19_pocketmedes_style0" + "model_player" "models/workshop/player/items/medic/dec19_pocketmedes/dec19_pocketmedes.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec19_pocketmedes_style1" + "model_player" "models/workshop/player/items/medic/dec19_pocketmedes_s2/dec19_pocketmedes_s2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "31100" + { + "name" "Spiky Viking" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_spiky_viking" + "item_description" "#TF_dec19_spiky_viking_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec19_spiky_viking/dec19_spiky_viking" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec19_spiky_viking/dec19_spiky_viking.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec19_spiky_viking_style0" + "model_player" "models/workshop/player/items/demo/dec19_spiky_viking/dec19_spiky_viking.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec19_spiky_viking_style1" + "model_player" "models/workshop/player/items/demo/dec19_spiky_viking_s2/dec19_spiky_viking_s2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31101" + { + "name" "The Missing Piece" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec19_missing_piece" + "item_description" "#TF_dec19_missing_piece_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/dec19_missing_piece/dec19_missing_piece" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec19_missing_piece/dec19_missing_piece.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31102" + { + "name" "The Mislaid Sweater" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec19_mislaid_sweater" + "item_description" "#TF_dec19_mislaid_sweater_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/dec19_mislaid_sweater/dec19_mislaid_sweater" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec19_mislaid_sweater/dec19_mislaid_sweater.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31103" + { + "name" "Hypno-eyes" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_spectre_cles" + "item_description" "#TF_sum20_spectre_cles_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "image_inventory" "backpack/workshop/player/items/all_class/sum20_spectre_cles_style2/sum20_spectre_cles_style2" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_spectre_cles_style2/sum20_spectre_cles_style2_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_spectre_cles_style2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_spectre_cles_style2/sum20_spectre_cles_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "0" + } + "1" + { + "name" "#TF_sum20_spectre_cles_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_spectre_cles_style1/sum20_spectre_cles_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31104" + { + "name" "Breadcrab" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_breadcrab" + "item_description" "#TF_sum20_breadcrab_Desc" + "item_type_name" "#TF_Wearable_Bread" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum20_breadcrab/sum20_breadcrab" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_breadcrab/sum20_breadcrab_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "2" + } + } + } + "31105" + { + "name" "Loaf Loafers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_loaf_loafers" + "item_description" "#TF_sum20_loaf_loafers_Desc" + "item_type_name" "#TF_Wearable_Bread" + "equip_region" "feet" + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + "shoes_socks" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum20_loaf_loafers_style1/sum20_loaf_loafers_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_loaf_loafers_style2/sum20_loaf_loafers_style2_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_loaf_loafers_style2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_loaf_loafers_style2/sum20_loaf_loafers_style2_%s.mdl" + } + } + "1" + { + "name" "#TF_sum20_loaf_loafers_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum20_loaf_loafers_style1/sum20_loaf_loafers_style1_%s.mdl" + } + } + } + } + } + "31106" + { + "name" "Sophisticated Smoker" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_sophisticated_smoker" + "item_description" "#TF_sum20_sophisticated_smoker_Desc" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum20_sophisticated_smoker/sum20_sophisticated_smoker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/sum20_sophisticated_smoker/sum20_sophisticated_smoker_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/sum20_sophisticated_smoker/sum20_sophisticated_smoker_demo.mdl" + "heavy" "models/workshop/player/items/all_class/sum20_sophisticated_smoker/sum20_sophisticated_smoker_heavy.mdl" + "engineer" "models/workshop/player/items/all_class/sum20_sophisticated_smoker/sum20_sophisticated_smoker_engineer.mdl" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "heavy" "1" + "engineer" "1" + } + } + "31107" + { + "name" "Flamehawk" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_flamehawk" + "item_description" "#TF_sum20_flamehawk_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/workshop/player/items/pyro/sum20_flamehawk/sum20_flamehawk" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum20_flamehawk/sum20_flamehawk.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31108" + { + "name" "Fire Fighter" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_fire_fighter" + "item_description" "#TF_sum20_fire_fighter_Desc" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/workshop/player/items/pyro/sum20_fire_fighter_style1/sum20_fire_fighter_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum20_fire_fighter_style1/sum20_fire_fighter_style1.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_fire_fighter_style1" + "model_player" "models/workshop/player/items/pyro/sum20_fire_fighter_style1/sum20_fire_fighter_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum20_fire_fighter_style2" + "model_player" "models/workshop/player/items/pyro/sum20_fire_fighter_style2/sum20_fire_fighter_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31109" + { + "name" "Crabe de Chapeau" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_crabe_de_chapeau" + "item_description" "#TF_sum20_crabe_de_chapeau_Desc" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/spy/sum20_crabe_de_chapeau/sum20_crabe_de_chapeau" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum20_crabe_de_chapeau/sum20_crabe_de_chapeau.mdl" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "31110" + { + "name" "Bird's Eye Viewer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_birds_eye_viewer" + "item_description" "#TF_sum20_birds_eye_viewer_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/spy/sum20_birds_eye_viewer_style2/sum20_birds_eye_viewer_style2" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum20_birds_eye_viewer_style2/sum20_birds_eye_viewer_style2.mdl" + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_birds_eye_viewer_style2" + "model_player" "models/workshop/player/items/spy/sum20_birds_eye_viewer_style2/sum20_birds_eye_viewer_style2.mdl" + "skin_red" "0" + "skin_blu" "0" + } + "1" + { + "name" "#TF_sum20_birds_eye_viewer_style1" + "model_player" "models/workshop/player/items/spy/sum20_birds_eye_viewer_style1/sum20_birds_eye_viewer_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31111" + { + "name" "Hawk Warrior" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_hawk_warrior" + "item_description" "#TF_sum20_hawk_warrior_Desc" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/soldier/sum20_hawk_warrior/sum20_hawk_warrior" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum20_hawk_warrior/sum20_hawk_warrior.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "31112" + { + "name" "Bazaar Bauble" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_bazaar_bauble" + "item_description" "#TF_sum20_bazaar_bauble_Desc" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/soldier/sum20_bazaar_bauble/sum20_bazaar_bauble" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum20_bazaar_bauble/sum20_bazaar_bauble.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "31113" + { + "name" "Breach and Bomb" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_breach_and_bomb" + "item_description" "#TF_sum20_breach_and_bomb_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/sum20_breach_and_bomb/sum20_breach_and_bomb" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum20_breach_and_bomb/sum20_breach_and_bomb.mdl" + "used_by_classes" + { + "soldier" "1" + } + } + "31114" + { + "name" "Head Of Defense" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_head_of_defense" + "item_description" "#TF_sum20_head_of_defense_Desc" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/engineer/sum20_head_of_defense_style1/sum20_head_of_defense_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum20_head_of_defense_style1/sum20_head_of_defense_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_head_of_defense_style1" + "model_player" "models/workshop/player/items/engineer/sum20_head_of_defense_style1/sum20_head_of_defense_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum20_head_of_defense_style2" + "model_player" "models/workshop/player/items/engineer/sum20_head_of_defense_style2/sum20_head_of_defense_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31115" + { + "name" "Hazard Headgear" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_hazard_headgear" + "item_description" "#TF_sum20_hazard_headgear_Desc" + "image_inventory" "backpack/workshop/player/items/demo/sum20_hazard_headgear/sum20_hazard_headgear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum20_hazard_headgear/sum20_hazard_headgear.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "31116" + { + "name" "Soda Specs" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_soda_specs" + "item_description" "#TF_sum20_soda_specs_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/scout/sum20_soda_specs_style1/sum20_soda_specs_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum20_soda_specs_style1/sum20_soda_specs_style1.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_soda_specs_style1" + "model_player" "models/workshop/player/items/scout/sum20_soda_specs_style1/sum20_soda_specs_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum20_soda_specs_style2" + "model_player" "models/workshop/player/items/scout/sum20_soda_specs_style2/sum20_soda_specs_style2.mdl" + "skin_red" "0" + "skin_blu" "0" + } + } + } + } + "31117" + { + "name" "California Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum20_california_cap" + "item_description" "#TF_sum20_california_cap_Desc" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum20_california_cap/sum20_california_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum20_california_cap/sum20_california_cap.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31118" + { + "name" "Poolside Polo" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_poolside_polo" + "item_description" "#TF_sum20_poolside_polo_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum20_poolside_polo/sum20_poolside_polo" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum20_poolside_polo/sum20_poolside_polo.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31119" + { + "name" "Tools of the Tourist" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_tools_tourist" + "item_description" "#TF_sum20_tools_tourist_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/sum20_tools_tourist/sum20_tools_tourist" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum20_tools_tourist/sum20_tools_tourist.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31120" + { + "name" "The Jarmaments" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_jarmaments" + "item_description" "#TF_sum20_jarmaments_Desc" + "item_type_name" "#TF_Wearable_Jars" + "equip_region" "sniper_bullets" + "image_inventory" "backpack/workshop/player/items/sniper/sum20_jarmaments/sum20_jarmaments" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum20_jarmaments/sum20_jarmaments.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31121" + { + "name" "Flatliner" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_flatliner" + "item_description" "#TF_sum20_flatliner_Desc" + "item_type_name" "#TF_Wearable_Augmentation" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/medic/sum20_flatliner/sum20_flatliner" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum20_flatliner/sum20_flatliner.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "31122" + { + "name" "Self-Care" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_self_care" + "item_description" "#TF_sum20_self_care_Desc" + "item_type_name" "#TF_Wearable_NeckBrace" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/medic/sum20_self_care/sum20_self_care" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum20_self_care/sum20_self_care.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "31123" + { + "name" "Momma Kiev" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_momma_kiev" + "item_description" "#TF_sum20_momma_kiev_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "left_shoulder" + "image_inventory" "backpack/workshop/player/items/heavy/sum20_momma_kiev_style2/sum20_momma_kiev_style2" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/sum20_momma_kiev_style2/sum20_momma_kiev_style2.mdl" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum20_momma_kiev_style2" + "model_player" "models/workshop/player/items/heavy/sum20_momma_kiev_style2/sum20_momma_kiev_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum20_momma_kiev_style1" + "model_player" "models/workshop/player/items/heavy/sum20_momma_kiev_style1/sum20_momma_kiev_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31124" + { + "name" "Smoking Jacket" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum20_smoking_jacket" + "item_description" "#TF_sum20_smoking_jacket_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/sum20_smoking_jacket/sum20_smoking_jacket" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum20_smoking_jacket/sum20_smoking_jacket.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31125" + { + "name" "Impish Ears" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_impish_ears" + "item_description" "#TF_hwn2020_impish_ears_Desc" + "item_type_name" "#TF_Wearable_Ears" + "equip_region" "ears" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_impish_ears/hwn2020_impish_ears" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_impish_ears/hwn2020_impish_ears_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2020_impish_ears_WithHat" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + "1" + { + "name" "#TF_hwn2020_impish_ears_WithNoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "31126" + { + "name" "Balloonicorpse" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_balloonicorpse" + "item_description" "#TF_hwn2020_balloonicorpse_Desc" + "item_type_name" "#TF_Wearable_SpookyCompanion" + "equip_region" "disconnected_floating_item" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_balloonicorpse/hwn2020_balloonicorpse" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_balloonicorpse/hwn2020_balloonicorpse_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_mtp_pickup.wav" + "drop_sound" "ui/item_mtp_drop.wav" + } + "31127" + { + "name" "Gourd Grin" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_gourd_grin" + "item_description" "#TF_hwn2020_gourd_grin_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_gourd_grin/hwn2020_gourd_grin" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_gourd_grin/hwn2020_gourd_grin_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31128" + { + "name" "Hollowed Helm" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_hollowed_helm" + "item_description" "#TF_hwn2020_hollowed_helm_Desc" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_hollowed_helm/hwn2020_hollowed_helm" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_hollowed_helm/hwn2020_hollowed_helm_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "31129" + { + "name" "A Handsome Handy Thing" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_handy_thing" + "item_description" "#TF_hwn2020_handy_thing_Desc" + "item_type_name" "#TF_Wearable_HandsomeHand" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_handy_thing/hwn2020_handy_thing" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_handy_thing/hwn2020_handy_thing_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_handy_thing_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_handy_thing/hwn2020_handy_thing_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_hwn2020_handy_thing_style2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_handy_thing_style2/hwn2020_handy_thing_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31130" + { + "name" "King Cardbeard" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_king_cardbeard" + "item_description" "#TF_hwn2020_king_cardbeard_Desc" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_king_cardbeard/hwn2020_king_cardbeard" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_king_cardbeard/hwn2020_king_cardbeard_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "31131" + { + "name" "Sir Pumpkinton" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_sir_pumpkinton" + "item_description" "#TF_hwn2020_sir_pumpkinton_Desc" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_sir_pumpkinton/hwn2020_sir_pumpkinton" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_sir_pumpkinton/hwn2020_sir_pumpkinton_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + "31132" + { + "name" "Wrap-A-Khamon" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_wrap_a_khamon" + "item_description" "#TF_hwn2020_wrap_a_khamon_Desc" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_wrap_a_khamon/hwn2020_wrap_a_khamon" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_wrap_a_khamon/hwn2020_wrap_a_khamon_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_wrap_a_khamon_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_wrap_a_khamon/hwn2020_wrap_a_khamon_%s.mdl" + } + } + "1" + { + "name" "#TF_hwn2020_wrap_a_khamon_style2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_wrap_a_khamon_style2/hwn2020_wrap_a_khamon_style2_%s.mdl" + } + } + } + } + } + "31133" + { + "name" "The Boom Boxers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_boom_boxers" + "item_description" "#TF_hwn2020_boom_boxers_Desc" + "item_type_name" "#TF_Wearable_TornPants" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_boom_boxers/hwn2020_boom_boxers" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_boom_boxers/hwn2020_boom_boxers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + "heavy" "1" + "pyro" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_rubber_pickup.wav" + "drop_sound" "ui/item_rubber_pickup.wav" + } + "31134" + { + "name" "Eye-see-you" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_eye_see_you" + "item_description" "#TF_hwn2020_eye_see_you_Desc" + "item_type_name" "#TF_Wearable_Eyes" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_eye_see_you/hwn2020_eye_see_you" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_eye_see_you/hwn2020_eye_see_you_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2020_eye_see_you_Style_WithHat" + } + "1" + { + "name" "#TF_hwn2020_eye_see_you_Style_WithNoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "31135" + { + "name" "Handsome Devil" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_handsome_devil" + "item_description" "#TF_hwn2020_handsome_devil_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_handsome_devil/hwn2020_handsome_devil" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_handsome_devil/hwn2020_handsome_devil_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2020_handsome_devil_Style_WithNoHat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_hwn2020_handsome_devil_Style_WithHat" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31136" + { + "name" "Misfortune Fedora" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_misfortune_fedora" + "item_description" "#TF_hwn2020_misfortune_fedora_Desc" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_misfortune_fedora/hwn2020_misfortune_fedora" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_misfortune_fedora/hwn2020_misfortune_fedora_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31137" + { + "name" "War Blunder" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_war_blunder" + "item_description" "#TF_hwn2020_war_blunder_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "soldier_legs" + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2020_war_blunder/hwn2020_war_blunder" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2020_war_blunder/hwn2020_war_blunder.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "31138" + { + "name" "Grounded Flyboy" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_grounded_flyboy" + "item_description" "#TF_hwn2020_grounded_flyboy_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "scout_pants" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/scout/hwn2020_grounded_flyboy/hwn2020_grounded_flyboy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2020_grounded_flyboy/hwn2020_grounded_flyboy.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "31139" + { + "name" "Rolfe Copter" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_rolfe_copter" + "item_description" "#TF_hwn2020_rolfe_copter_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "medic_hip" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/medic/hwn2020_rolfe_copter/hwn2020_rolfe_copter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2020_rolfe_copter/hwn2020_rolfe_copter.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "31140" + { + "name" "The Pug Mug" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_pug_mug" + "item_description" "#TF_hwn2020_pug_mug_Desc" + "item_type_name" "#TF_Wearable_DogHead" + "equip_region" "hat" + "propername" "1" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2020_pug_mug/hwn2020_pug_mug" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2020_pug_mug/hwn2020_pug_mug.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_pug_mug_style1" + "model_player" "models/workshop/player/items/engineer/hwn2020_pug_mug/hwn2020_pug_mug.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_hwn2020_pug_mug_style2" + "model_player" "models/workshop/player/items/engineer/hwn2020_pug_mug_style2/hwn2020_pug_mug_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31141" + { + "name" "The Treehugger" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_treehugger" + "item_description" "#TF_hwn2020_treehugger_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "pyro_head_replacement" + "propername" "1" + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2020_treehugger/hwn2020_treehugger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2020_treehugger/hwn2020_treehugger.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31142" + { + "name" "Mannvich" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_mannvich" + "item_description" "#TF_hwn2020_mannvich_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "hat" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2020_mannvich/hwn2020_mannvich" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2020_mannvich/hwn2020_mannvich.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31143" + { + "name" "The Seared Sorcerer" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_seared_sorcerer" + "item_description" "#TF_hwn2020_seared_sorcerer_Desc" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2020_seared_sorcerer/hwn2020_seared_sorcerer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2020_seared_sorcerer/hwn2020_seared_sorcerer.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2020_seared_sorcerer_style1" + "model_player" "models/workshop/player/items/pyro/hwn2020_seared_sorcerer/hwn2020_seared_sorcerer.mdl" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "head" "1" + } + } + "1" + { + "name" "#TF_hwn2020_seared_sorcerer_style2" + "model_player" "models/workshop/player/items/pyro/hwn2020_seared_sorcerer_style2/hwn2020_seared_sorcerer_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31144" + { + "name" "The Fire Tooth" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_fire_tooth" + "item_description" "#TF_hwn2020_fire_tooth_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2020_fire_tooth/hwn2020_fire_tooth" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2020_fire_tooth/hwn2020_fire_tooth.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31145" + { + "name" "Flavorful Baggies" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_flavorful_baggies" + "item_description" "#TF_hwn2020_flavorful_baggies_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2020_flavorful_baggies/hwn2020_flavorful_baggies" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2020_flavorful_baggies/hwn2020_flavorful_baggies.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31146" + { + "name" "Calamitous Cauldron" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_calamitous_cauldron" + "item_description" "#TF_hwn2020_calamitous_cauldron_Desc" + "item_type_name" "#TF_Wearable_Cauldron" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2020_calamitous_cauldron/hwn2020_calamitous_cauldron" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2020_calamitous_cauldron/hwn2020_calamitous_cauldron.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" + "drop_sound" "ui/item_metal_pot_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_calamitous_cauldron_style1" + "model_player" "models/workshop/player/items/soldier/hwn2020_calamitous_cauldron/hwn2020_calamitous_cauldron.mdl" + } + "1" + { + "name" "#TF_hwn2020_calamitous_cauldron_style2" + "model_player" "models/workshop/player/items/soldier/hwn2020_calamitous_cauldron_style2/hwn2020_calamitous_cauldron_style2.mdl" + } + } + } + } + "31147" + { + "name" "Semi-tame Trapper's Hat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_trappers_hat" + "item_description" "#TF_hwn2020_trappers_hat_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2020_trappers_hat/hwn2020_trappers_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2020_trappers_hat/hwn2020_trappers_hat.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_trappers_hat_style1" + "model_player" "models/workshop/player/items/soldier/hwn2020_trappers_hat/hwn2020_trappers_hat.mdl" + } + "1" + { + "name" "#TF_hwn2020_trappers_hat_style2" + "model_player" "models/workshop/player/items/soldier/hwn2020_trappers_hat_style2/hwn2020_trappers_hat_style2.mdl" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "31148" + { + "name" "Wavefinder" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_wavefinder" + "item_type_name" "#TF_Wearable_Headgear" + "item_description" "#TF_hwn2020_wavefinder_Desc" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2020_wavefinder/hwn2020_wavefinder" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2020_wavefinder/hwn2020_wavefinder.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31149" + { + "name" "Glow from Below" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_glow_below" + "item_description" "#TF_hwn2020_glow_below_Desc" + "item_type_name" "#TF_Wearable_Fish" + "image_inventory" "backpack/workshop/player/items/sniper/hwn2020_glow_below/hwn2020_glow_below" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2020_glow_below/hwn2020_glow_below.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_glow_below_style1" + "model_player" "models/workshop/player/items/sniper/hwn2020_glow_below/hwn2020_glow_below.mdl" + } + "1" + { + "name" "#TF_hwn2020_glow_below_style2" + "model_player" "models/workshop/player/items/sniper/hwn2020_glow_below_style2/hwn2020_glow_below_style2.mdl" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "31150" + { + "name" "Goblineer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_goblineer" + "item_description" "#TF_hwn2020_goblineer_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2020_goblineer/hwn2020_goblineer" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2020_goblineer/hwn2020_goblineer.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_hwn2020_goblineer_style1" + "model_player" "models/workshop/player/items/engineer/hwn2020_goblineer/hwn2020_goblineer.mdl" + } + "1" + { + "name" "#TF_hwn2020_goblineer_style2" + "model_player" "models/workshop/player/items/engineer/hwn2020_goblineer_style2/hwn2020_goblineer_style2.mdl" + } + } + } + } + "31151" + { + "name" "The Ghoul Box" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2020_ghoul_box" + "item_description" "#TF_hwn2020_ghoul_box_Desc" + "item_type_name" "#TF_Wearable_Tools" + "equip_region" "back" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2020_ghoul_box/hwn2020_ghoul_box" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2020_ghoul_box/hwn2020_ghoul_box.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "31152" + { + "name" "All Hallows' Hatte" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2020_hallows_hatte" + "item_description" "#TF_hwn2020_hallows_hatte_Desc" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2020_hallows_hatte/hwn2020_hallows_hatte" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2020_hallows_hatte/hwn2020_hallows_hatte_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31153" + { + "name" "Taunt: The Pooped Deck" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_pooped_deck" + "item_description" "#TF_taunt_the_pooped_deck_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/taunt_the_pooped_deck/taunt_the_pooped_deck" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_the_pooped_deck.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_the_pooped_deck_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_the_pooped_deck_a1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_the_pooped_deck_a2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/taunt_the_pooped_deck/taunt_the_pooped_deck.mdl" + } + } + } + "31154" + { + "name" "Taunt: Time Out Therapy" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_time_out_therapy" + "item_description" "#TF_taunt_time_out_therapy_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/medic/taunt_time_out_therapy/taunt_time_out_therapy" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_time_out_therapy.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_time_out_therapy_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/workshop/player/items/medic/taunt_time_out_therapy/taunt_time_out_therapy.mdl" + } + } + } + "31155" + { + "name" "Taunt: Rocket Jockey" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_rocket_jockey" + "item_description" "#TF_taunt_rocket_jockey_Desc" + "image_inventory" "backpack/workshop/player/items/soldier/taunt_rocket_jockey/taunt_rocket_jockey" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.RocketHoverLoop" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes\workshop\player\soldier\low\taunt_rocket_jockey_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "soldier" "scenes\workshop\player\soldier\low\taunt_rocket_jockey_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "soldier" "scenes\workshop\player\soldier\low\taunt_rocket_jockey_cheer.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "soldier" "models\workshop\player\items\soldier\taunt_rocket_jockey\taunt_rocket_jockey.mdl" + } + } + } + "31156" + { + "name" "Taunt: The Boston Boarder" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_boston_boarder" + "item_description" "#TF_taunt_the_boston_boarder_Desc" + "image_inventory" "backpack/workshop/player/items/scout/taunt_the_boston_boarder/taunt_the_boston_boarder" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.ScoutBostonBoarder" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_boston_boarder.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_boston_boarder_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_boston_boarder_trick01.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_boston_boarder_trick02.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_the_boston_boarder/taunt_the_boston_boarder.mdl" + } + } + } + "31157" + { + "name" "Taunt: Scorcher's Solo" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_scorchers_solo" + "item_description" "#TF_taunt_scorchers_solo_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/taunt_scorchers_solo/taunt_scorchers_solo" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_scorchers_solo.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_scorchers_solo_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/taunt_scorchers_solo/taunt_scorchers_solo.mdl" + } + } + } + "31160" + { + "name" "Taunt: Texas Truckin" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_texas_truckin" + "item_description" "#TF_taunt_texas_truckin_Desc" + "image_inventory" "backpack/workshop/player/items/engineer/taunt_texas_truckin/taunt_texas_truckin" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.TankForward" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_texas_truckin.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_texas_truckin_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "engineer" "models/workshop/player/items/engineer/taunt_texas_truckin/taunt_texas_truckin.mdl" + } + } + } + "31161" + { + "name" "Taunt: Spin-to-Win" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_spintowin" + "item_description" "#TF_taunt_spintowin_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/taunt_spintowin/taunt_spintowin" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_spintowin.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_spintowin_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "scout" "scenes/workshop/player/scout/low/taunt_spintowin_a1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "scout" "scenes/workshop/player/scout/low/taunt_spintowin_a2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_spintowin/taunt_spintowin.mdl" + } + } + } + "31162" + { + "name" "Taunt: The Fist Bump" + "first_sale_date" "2020/12/02" + "prefab" "no_craft taunt" + "item_name" "#TF_taunt_the_fist_bump" + "item_description" "#TF_taunt_the_fist_bump_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/taunt_the_fist_bump/taunt_the_fist_bump" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_fist_bump.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_the_fist_bump.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_the_fist_bump.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_the_fist_bump.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_the_fist_bump.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_the_fist_bump.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_the_fist_bump.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_the_fist_bump.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_the_fist_bump.vcd" + } + "custom_partner_taunt_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_fist_bump_action.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_the_fist_bump_action.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_the_fist_bump_action.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_the_fist_bump_action.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_the_fist_bump_action.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_the_fist_bump_action.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_the_fist_bump_action.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_the_fist_bump_action.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_the_fist_bump_action.vcd" + } + "taunt_separation_forward_distance" "66" + "is_partner_taunt" "1" + } + } + "31163" + { + "name" "Particulate Protector" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_particulate_protector" + "item_description" "#TF_dec20_particulate_protector_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/all_class/dec20_particulate_protector/dec20_particulate_protector" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_particulate_protector/dec20_particulate_protector_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec20_particulate_protector_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec20_particulate_protector_style1" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "31164" + { + "name" "Candy Cantlers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_candy_cantlers" + "item_description" "#TF_dec20_candy_cantlers_Desc" + "item_type_name" "#TF_Wearable_Antlers" + "equip_region" "ears" + "image_inventory" "backpack/workshop/player/items/all_class/dec20_candy_cantlers/dec20_candy_cantlers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_candy_cantlers/dec20_candy_cantlers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec20_candy_cantlers_WithHat" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec20_candy_cantlers_WithNoHat" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "31165" + { + "name" "Jolly Jingler" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_jolly_jingler" + "item_description" "#TF_dec20_jolly_jingler_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec20_jolly_jingler/dec20_jolly_jingler" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_jolly_jingler/dec20_jolly_jingler_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + } + "31166" + { + "name" "The Smissmass Sorcerer" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_smissmas_sorcerer" + "item_description" "#TF_dec20_smissmas_sorcerer_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec20_smissmas_sorcerer/dec20_smissmas_sorcerer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_smissmas_sorcerer/dec20_smissmas_sorcerer_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31167" + { + "name" "Festive Flip-thwomps" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_flip_thwomps" + "item_description" "#TF_dec20_flip_thwomps_Desc" + "item_type_name" "#TF_Wearable_Shoes" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/all_class/dec20_flip_thwomps/dec20_flip_thwomps" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_flip_thwomps/dec20_flip_thwomps_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31168" + { + "name" "Towering Pillar of Beanies" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_pillar_of_beanies" + "item_description" "#TF_dec20_pillar_of_beanies_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec20_pillar_of_beanies/dec20_pillar_of_beanies" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_pillar_of_beanies/dec20_pillar_of_beanies_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31169" + { + "name" "Shoestring Santa" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_shoestring_santa" + "item_description" "#TF_dec20_shoestring_santa_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec20_shoestring_santa/dec20_shoestring_santa" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_shoestring_santa/dec20_shoestring_santa_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31170" + { + "name" "Professional's Pom Pom" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_professionals_pom_pom" + "item_description" "#TF_dec20_professionals_pom_pom_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec20_professionals_pom_pom/dec20_professionals_pom_pom" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_professionals_pom_pom/dec20_professionals_pom_pom_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31171" + { + "name" "Reindoonibeanie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_reindoonibeanie" + "item_description" "#TF_dec20_reindoonibeanie_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec20_reindoonibeanie/dec20_reindoonibeanie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_reindoonibeanie/dec20_reindoonibeanie_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + } + "31172" + { + "name" "Festive Fascinator" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_festive_fascinator" + "item_description" "#TF_dec20_festive_fascinator_Desc" + "item_type_name" "#TF_Wearable_Headband" + "equip_region" "ears" + "image_inventory" "backpack/workshop/player/items/all_class/dec20_festive_fascinator/dec20_festive_fascinator" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_festive_fascinator/dec20_festive_fascinator_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "name" "#TF_dec20_festive_fascinator_style0" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_festive_fascinator/dec20_festive_fascinator_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec20_festive_fascinator_style1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_festive_fascinator_style1/dec20_festive_fascinator_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31173" + { + "name" "Towering Pile Of Presents" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_pile_of_presents" + "item_description" "#TF_dec20_pile_of_presents_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/dec20_pile_of_presents/dec20_pile_of_presents" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec20_pile_of_presents/dec20_pile_of_presents_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31174" + { + "name" "The Round-A-Bout" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_round_a_bout" + "item_description" "#TF_dec20_round_a_bout_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/dec20_round_a_bout/dec20_round_a_bout" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/dec20_round_a_bout/dec20_round_a_bout.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31175" + { + "name" "Blitzen Bowl" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_blitzen_bowl" + "item_description" "#TF_dec20_blitzen_bowl_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/dec20_blitzen_bowl/dec20_blitzen_bowl" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec20_blitzen_bowl/dec20_blitzen_bowl.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31176" + { + "name" "Elf Care Provider" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_elf_care_provider" + "item_description" "#TF_dec20_elf_care_provider_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/medic/dec20_elf_care_provider/dec20_elf_care_provider" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec20_elf_care_provider/dec20_elf_care_provider.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + } + "31177" + { + "name" "Night Ward" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_night_ward" + "item_description" "#TF_dec20_night_ward_Desc" + "item_type_name" "#TF_Wearable_PantsSlippers" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/medic/dec20_night_ward/dec20_night_ward" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec20_night_ward/dec20_night_ward.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_dec20_night_ward_style0" + "model_player" "models/workshop/player/items/medic/dec20_night_ward/dec20_night_ward.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_dec20_night_ward_style1" + "model_player" "models/workshop/player/items/medic/dec20_night_ward_style1/dec20_night_ward_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31178" + { + "name" "SandMann's Brush" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_sandmanns_brush" + "item_description" "#TF_dec20_sandmanns_brush_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/dec20_sandmanns_brush/dec20_sandmanns_brush" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec20_sandmanns_brush/dec20_sandmanns_brush.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31179" + { + "name" "BedBug Protection" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_bedbug_protection" + "item_description" "#TF_dec20_bedbug_protection_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/dec20_bedbug_protection/dec20_bedbug_protection" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec20_bedbug_protection/dec20_bedbug_protection.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31180" + { + "name" "Bear Walker" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec20_bear_walker" + "item_description" "#TF_dec20_bear_walker_Desc" + "item_type_name" "#TF_Wearable_PantsSlippers" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/heavy/dec20_bear_walker/dec20_bear_walker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec20_bear_walker/dec20_bear_walker.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31181" + { + "name" "The Killing Tree" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_killing_tree" + "item_description" "#TF_dec20_killing_tree_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/sniper/dec20_killing_tree/dec20_killing_tree" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/dec20_killing_tree/dec20_killing_tree.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31182" + { + "name" "Helm Helm" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec20_helm_helm" + "item_description" "#TF_dec20_helm_helm_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/dec20_helm_helm/dec20_helm_helm" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec20_helm_helm/dec20_helm_helm.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "31183" + { + "name" "Ballooniphones" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_ballooniphones" + "item_description" "#TF_sum21_ballooniphones_Desc" + "item_type_name" "#TF_Wearable_Headphones" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum21_ballooniphones/sum21_ballooniphones" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum21_ballooniphones/sum21_ballooniphones_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31184" + { + "name" "Manndatory Attire" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_manndatory_attire" + "item_description" "#TF_sum21_manndatory_attire_Desc" + "item_type_name" "#TF_Wearable_Tie" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/all_class/sum21_manndatory_attire_style2/sum21_manndatory_attire_style2" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum21_manndatory_attire_style2/sum21_manndatory_attire_style2_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "grenades" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum21_manndatory_attire_style2/sum21_manndatory_attire_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum21_manndatory_attire_style2" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum21_manndatory_attire_style1/sum21_manndatory_attire_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum21_manndatory_attire_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum21_manndatory_attire_style3/sum21_manndatory_attire_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum21_manndatory_attire_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31185" + { + "name" "Brim of Fire" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_brim_of_fire" + "item_description" "#TF_sum21_brim_of_fire_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/sum21_brim_of_fire/sum21_brim_of_fire" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum21_brim_of_fire/sum21_brim_of_fire.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31186" + { + "name" "Reel Fly Hat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_reel_fly_hat" + "item_description" "#TF_sum21_reel_fly_hat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/sum21_reel_fly_hat/sum21_reel_fly_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum21_reel_fly_hat/sum21_reel_fly_hat.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31187" + { + "name" "Hook Line and Cinder" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_hook_line_cinder" + "item_description" "#TF_sum21_hook_line_cinder_Desc" + "item_type_name" "#TF_Wearable_Fish" + "equip_region" "back" + "visuals" + { + "player_bodygroups" + { + "backpack" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum21_hook_line_cinder/sum21_hook_line_cinder" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/sum21_hook_line_cinder/sum21_hook_line_cinder.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "31188" + { + "name" "Water Waders" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_water_waders" + "item_description" "#TF_sum21_water_waders_Desc" + "item_type_name" "#TF_Wearable_Waders" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum21_water_waders/sum21_water_waders" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum21_water_waders/sum21_water_waders.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "31189" + { + "name" "The Sightliner" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_sightliner" + "item_description" "#TF_sum21_sightliner_Desc" + "item_type_name" "#TF_Wearable_ElectronicDevice" + "equip_region" "glasses" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sum21_sightliner/sum21_sightliner" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum21_sightliner/sum21_sightliner.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "31190" + { + "name" "Snack Stack" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_snack_stack" + "item_description" "#TF_sum21_snack_stack_Desc" + "item_type_name" "#TF_Wearable_Snack" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/sum21_snack_stack/sum21_snack_stack" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum21_snack_stack/sum21_snack_stack.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31191" + { + "name" "Two Punch Mann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_punchmann" + "item_description" "#TF_sum21_punchmann_Desc" + "item_type_name" "#TF_Wearable_Gloves" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/heavy/sum21_punchmann_style1/sum21_punchmann_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum21_punchmann_style1/sum21_punchmann_style1.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_sum21_punchmann_style1" + "model_player" "models/workshop/player/items/heavy/sum21_punchmann_style1/sum21_punchmann_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum21_punchmann_style2" + "model_player" "models/workshop/player/items/heavy/sum21_punchmann_style2/sum21_punchmann_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31192" + { + "name" "Wild Brim Slouch" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_wild_brim_slouch" + "item_description" "#TF_sum21_wild_brim_slouch_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/sniper/sum21_wild_brim_slouch/sum21_wild_brim_slouch" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum21_wild_brim_slouch/sum21_wild_brim_slouch.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31193" + { + "name" "Crocodile Dandy" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_crocodile_dandy" + "item_description" "#TF_sum21_crocodile_dandy_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/sum21_crocodile_dandy/sum21_crocodile_dandy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum21_crocodile_dandy/sum21_crocodile_dandy.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "31194" + { + "name" "Crustaceous Cowl" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_crustaceous_cowl" + "item_description" "#TF_sum21_crustaceous_cowl_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/sum21_crustaceous_cowl/sum21_crustaceous_cowl" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum21_crustaceous_cowl/sum21_crustaceous_cowl.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31195" + { + "name" "Fast Food" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_fast_food" + "item_description" "#TF_sum21_fast_food_Desc" + "item_type_name" "#TF_Wearable_Backpack" + "equip_region" "scout_backpack" + "image_inventory" "backpack/workshop/player/items/scout/sum21_fast_food/sum21_fast_food" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum21_fast_food/sum21_fast_food.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "31196" + { + "name" "Meal Dealer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum21_meal_dealer" + "item_description" "#TF_sum21_meal_dealer_Desc" + "item_type_name" "#TF_Wearable_Uniform" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum21_meal_dealer/sum21_meal_dealer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum21_meal_dealer/sum21_meal_dealer.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31197" + { + "name" "Fried Batter" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_fried_batter" + "item_description" "#TF_sum21_fried_batter_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum21_fried_batter/sum21_fried_batter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum21_fried_batter/sum21_fried_batter.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31198" + { + "name" "Roaming Roman" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_roaming_roman" + "item_description" "#TF_sum21_roaming_roman_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sum21_roaming_roman/sum21_roaming_roman" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum21_roaming_roman/sum21_roaming_roman.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31199" + { + "name" "The Panisher" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_panisher" + "item_description" "#TF_sum21_panisher_Desc" + "item_type_name" "#TF_Wearable_DentedPan" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sum21_panisher/sum21_panisher" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/soldier/sum21_panisher/sum21_panisher.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_metal_pot_pickup.wav" + "drop_sound" "ui/item_metal_pot_drop.wav" + } + "31200" + { + "name" "Thousand-Yard Stare" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum21_thousand_yard" + "item_description" "#TF_sum21_thousand_yard_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/soldier/sum21_thousand_yard_style1/sum21_thousand_yard_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum21_thousand_yard_style2/sum21_thousand_yard_style2.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "name" "#TF_sum21_thousand_yard_style2" + "model_player" "models/workshop/player/items/soldier/sum21_thousand_yard_style2/sum21_thousand_yard_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_sum21_thousand_yard_style1" + "model_player" "models/workshop/player/items/soldier/sum21_thousand_yard_style1/sum21_thousand_yard_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31201" + { + "name" "Taunt: The Drunken Sailor" + "prefab" "no_craft taunt" + "first_sale_date" "2021/10/02" + "item_name" "#TF_taunt_shipwheel" + "item_description" "#TF_taunt_shipwheel_Desc" + "ad_text" "#TF_taunt_shipwheel_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/taunt_shipwheel/taunt_shipwheel" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_shipwheel.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_shipwheel_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_shipwheel_action1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_shipwheel_action2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/taunt_shipwheel/taunt_shipwheel.mdl" + } + } + } + "31202" + { + "name" "Taunt: The Profane Puppeteer" + "prefab" "no_craft taunt" + "first_sale_date" "2021/10/02" + "item_name" "#TF_taunt_the_profane_puppeteer" + "item_description" "#TF_taunt_the_profane_puppeteer_Desc" + "ad_text" "#TF_taunt_the_profane_puppeteer_AdText" + "image_inventory" "backpack/workshop/player/items/soldier/taunt_the_profane_puppeteer/taunt_the_profane_puppeteer" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/workshop/player/soldier/low/taunt_the_profane_puppeteer.vcd" + } + "custom_taunt_prop_per_class" + { + "soldier" "models/workshop/player/items/soldier/taunt_the_profane_puppeteer/taunt_the_profane_puppeteer.mdl" + } + } + } + "31203" + { + "name" "Taunt: The Mannbulance!" + "prefab" "no_craft taunt" + "first_sale_date" "2021/10/02" + "item_name" "#TF_taunt_the_mannbulance" + "item_description" "#TF_taunt_the_mannbulance_Desc" + "ad_text" "#TF_taunt_the_mannbulance_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/medic/taunt_the_mannbulance/taunt_the_mannbulance" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "medic.mannbulance_siren_loop" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_the_mannbulance.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_the_mannbulance_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/workshop/player/items/medic/taunt_the_mannbulance/taunt_the_mannbulance.mdl" + } + } + } + "31207" + { + "name" "Taunt: Bare Knuckle Beatdown" + "prefab" "no_craft taunt" + "first_sale_date" "2021/10/02" + "item_name" "#TF_taunt_bare_knuckle_beatdown" + "item_description" "#TF_taunt_bare_knuckle_beatdown_Desc" + "ad_text" "#TF_taunt_bare_knuckle_beatdown_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/taunt_bare_knuckle_beatdown/taunt_bare_knuckle_beatdown" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "heavy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_bare_knuckle_beatdown.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_bare_knuckle_beatdown_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "heavy" "models/workshop/player/items/heavy/taunt_bare_knuckle_beatdown/taunt_bare_knuckle_beatdown.mdl" + } + } + } + "31208" + { + "name" "Creepy Crawlers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_creepy_crawlies" + "item_description" "#TF_hwn2021_creepy_crawlies_Desc" + "item_type_name" "#TF_Wearable_Infestation" + "equip_region" "right_shoulder" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_creepy_crawlies/hwn2021_creepy_crawlies" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_creepy_crawlies/hwn2021_creepy_crawlies_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_creepy_crawlies/hwn2021_creepy_crawlies_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_creepy_crawlies_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_creepy_crawlies_style2/hwn2021_creepy_crawlies_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_creepy_crawlies_style1" + } + } + } + "mouse_pressed_sound" "ui/item_as_parasite_pickup.wav" + "drop_sound" "ui/item_as_parasite_drop.wav" + } + "31209" + { + "name" "Spooky Head-Bouncers" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_spooky_head_bouncers" + "item_description" "#TF_hwn2021_spooky_head_bouncers_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_spooky_head_bouncers/hwn2021_spooky_head_bouncers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_spooky_head_bouncers/hwn2021_spooky_head_bouncers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_spooky_head_bouncers/hwn2021_spooky_head_bouncers_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_spooky_head_bouncers_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_spooky_head_bouncers_style2/hwn2021_spooky_head_bouncers_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_spooky_head_bouncers_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_spooky_head_bouncers_style3/hwn2021_spooky_head_bouncers_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_spooky_head_bouncers_style2" + } + } + } + } + "31210" + { + "name" "Towering Patch of Pumpkins" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_towering_patch" + "item_description" "#TF_hwn2021_towering_patch_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_towering_patch/hwn2021_towering_patch" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_towering_patch/hwn2021_towering_patch_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31211" + { + "name" "Twisted Topper" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_twisted_topper" + "item_description" "#TF_hwn2021_twisted_topper_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_twisted_topper/hwn2021_twisted_topper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_twisted_topper/hwn2021_twisted_topper_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_twisted_topper/hwn2021_twisted_topper_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_twisted_topper_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_twisted_topper_style2/hwn2021_twisted_topper_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_twisted_topper_style1" + } + } + } + } + "31212" + { + "name" "Beanie The All-Gnawing" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_beanie_all_gnawing" + "item_description" "#TF_hwn2021_beanie_all_gnawing_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_beanie_all_gnawing/hwn2021_beanie_all_gnawing" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_beanie_all_gnawing/hwn2021_beanie_all_gnawing_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31213" + { + "name" "Eyequarium" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_eyequarium" + "item_description" "#TF_hwn2021_eyequarium_Desc" + "item_type_name" "#TF_Wearable_Goggles" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_eyequarium/hwn2021_eyequarium" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_eyequarium/hwn2021_eyequarium_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_eyequarium/hwn2021_eyequarium_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_eyequarium_style0_nohat" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_eyequarium_style2/hwn2021_eyequarium_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_eyequarium_style1_nohat" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_eyequarium/hwn2021_eyequarium_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_eyequarium_style0" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_eyequarium_style2/hwn2021_eyequarium_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_eyequarium_style1" + } + } + } + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "31214" + { + "name" "Second-head Headwear" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_second_headwear" + "item_description" "#TF_hwn2021_second_headwear_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_second_headwear/hwn2021_second_headwear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_second_headwear/hwn2021_second_headwear_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_second_headwear/hwn2021_second_headwear_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_second_headwear_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_second_headwear_style2/hwn2021_second_headwear_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_second_headwear_style1" + } + } + } + } + "31215" + { + "name" "Alakablamicon" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_alakablamicon" + "item_description" "#TF_hwn2021_alakablamicon_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_alakablamicon/hwn2021_alakablamicon" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_alakablamicon/hwn2021_alakablamicon_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31216" + { + "name" "Hat Outta Hell" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_hat_outta_hell" + "item_description" "#TF_hwn2021_hat_outta_hell_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_hat_outta_hell/hwn2021_hat_outta_hell" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_hat_outta_hell/hwn2021_hat_outta_hell_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_hat_outta_hell/hwn2021_hat_outta_hell_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_hat_outta_hell_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_hat_outta_hell_style2/hwn2021_hat_outta_hell_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_hat_outta_hell_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_hat_outta_hell_style3/hwn2021_hat_outta_hell_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_hat_outta_hell_style2" + } + } + } + } + "31217" + { + "name" "Goalkeeper" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_goalkeeper" + "item_description" "#TF_hwn2021_goalkeeper_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_goalkeeper/hwn2021_goalkeeper" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_goalkeeper/hwn2021_goalkeeper_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_goalkeeper/hwn2021_goalkeeper_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_goalkeeper_style0_nohat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_goalkeeper_style2/hwn2021_goalkeeper_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_goalkeeper_style1_nohat" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_goalkeeper/hwn2021_goalkeeper_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_goalkeeper_style0" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_goalkeeper_style2/hwn2021_goalkeeper_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_goalkeeper_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31218" + { + "name" "The Bone Cone" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_bone_cone" + "item_description" "#TF_hwn2021_bone_cone_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_bone_cone/hwn2021_bone_cone" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_bone_cone/hwn2021_bone_cone_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_bone_cone/hwn2021_bone_cone_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_bone_cone_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_bone_cone_style2/hwn2021_bone_cone_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_bone_cone_style1" + } + } + } + } + "31219" + { + "name" "The Scariest Mask EVER" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_scariest_mask" + "item_description" "#TF_hwn2021_scariest_mask_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_scariest_mask/hwn2021_scariest_mask" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2021_scariest_mask/hwn2021_scariest_mask_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2021_scariest_mask_NoHat" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_hwn2021_scariest_mask_Hat" + "skin_red" "0" + "skin_blu" "1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31220" + { + "name" "Trickster's Treats" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_tricksters_treats" + "item_description" "#TF_hwn2021_tricksters_treats_Desc" + "item_type_name" "#TF_Wearable_Treats" + "equip_region" "grenades" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats_demo.mdl" + "pyro" "models/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats_pyro.mdl" + } + "used_by_classes" + { + "soldier" "1" + "demoman" "1" + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats_demo.mdl" + "pyro" "models/workshop/player/items/all_class/hwn2021_tricksters_treats/hwn2021_tricksters_treats_pyro.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_tricksters_treats_style0" + } + "1" + { + "model_player_per_class" + { + "soldier" "models/workshop/player/items/all_class/hwn2021_tricksters_treats_style2/hwn2021_tricksters_treats_style2_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/hwn2021_tricksters_treats_style2/hwn2021_tricksters_treats_style2_demo.mdl" + "pyro" "models/workshop/player/items/all_class/hwn2021_tricksters_treats_style2/hwn2021_tricksters_treats_style2_pyro.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_tricksters_treats_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31221" + { + "name" "Wandering Wraith" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_wandering_wraith" + "item_description" "#TF_hwn2021_wandering_wraith_Desc" + "equip_region" "whole_head" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2021_wandering_wraith/hwn2021_wandering_wraith" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2021_wandering_wraith/hwn2021_wandering_wraith.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31222" + { + "name" "Smiling Somen" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_smiling_somen" + "item_description" "#TF_hwn2021_smiling_somen_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2021_smiling_somen/hwn2021_smiling_somen" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2021_smiling_somen/hwn2021_smiling_somen.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31223" + { + "name" "The Hook, Line, and Thinker" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_hook_line_thinker" + "item_description" "#TF_hwn2021_hook_line_thinker_Desc" + "equip_region" "head_skin" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2021_hook_line_thinker/hwn2021_hook_line_thinker" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2021_hook_line_thinker/hwn2021_hook_line_thinker.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31224" + { + "name" "Optic Nerve" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_optic_nerve" + "item_description" "#TF_hwn2021_optic_nerve_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/hwn2021_optic_nerve/hwn2021_optic_nerve" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2021_optic_nerve/hwn2021_optic_nerve.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "31225" + { + "name" "Death Stare" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_death_stare" + "item_description" "#TF_hwn2021_death_stare_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/demo/hwn2021_death_stare/hwn2021_death_stare" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2021_death_stare/hwn2021_death_stare.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31226" + { + "name" "The Corpse Carrier" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_corpse_carrier" + "item_description" "#TF_hwn2021_corpse_carrier_Desc" + "item_type_name" "#TF_Wearable_GoodSamaritan" + "equip_region" "scout_pants" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/scout/hwn2021_corpse_carrier/hwn2021_corpse_carrier" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2021_corpse_carrier/hwn2021_corpse_carrier.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31227" + { + "name" "Gruesome Gourd" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_gruesome_gourd" + "item_description" "#TF_hwn2021_gruesome_gourd_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/spy/hwn2021_gruesome_gourd/hwn2021_gruesome_gourd" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2021_gruesome_gourd/hwn2021_gruesome_gourd.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/hwn2021_gruesome_gourd/hwn2021_gruesome_gourd.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_gruesome_gourd_style0" + } + "1" + { + "model_player" "models/workshop/player/items/spy/hwn2021_gruesome_gourd_style2/hwn2021_gruesome_gourd_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_gruesome_gourd_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31228" + { + "name" "Poopy Doe" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_poopy_doe" + "item_description" "#TF_hwn2021_poopy_doe_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2021_poopy_doe/hwn2021_poopy_doe" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2021_poopy_doe/hwn2021_poopy_doe.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31229" + { + "name" "Batter's Beak" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_batters_beak" + "item_description" "#TF_hwn2021_batters_beak_Desc" + "item_type_name" "#TF_Wearable_BirdHead" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2021_batters_beak/hwn2021_batters_beak" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2021_batters_beak/hwn2021_batters_beak.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31230" + { + "name" "War Dog" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_war_dog" + "item_description" "#TF_hwn2021_war_dog_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2021_war_dog/hwn2021_war_dog" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2021_war_dog/hwn2021_war_dog.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/hwn2021_war_dog/hwn2021_war_dog.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_war_dog_style0" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "model_player" "models/workshop/player/items/soldier/hwn2021_war_dog_style2/hwn2021_war_dog_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2021_war_dog_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31231" + { + "name" "The Miami Rooster" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2021_miami_rooster" + "item_description" "#TF_hwn2021_miami_rooster_Desc" + "item_type_name" "#TF_Wearable_BirdHead" + "equip_region" "pyro_head_replacement" + "holiday_restriction" "halloween_or_fullmoon" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2021_miami_rooster/hwn2021_miami_rooster" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2021_miami_rooster/hwn2021_miami_rooster.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31232" + { + "name" "Computron 5000" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2021_computron" + "item_description" "#TF_hwn2021_computron_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2021_computron/hwn2021_computron" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "scout" "models/workshop/player/items/all_class/hwn2021_computron/hwn2021_computron_scout.mdl" + "medic" "models/workshop/player/items/all_class/hwn2021_computron/hwn2021_computron_medic.mdl" + "heavy" "models/workshop/player/items/all_class/hwn2021_computron/hwn2021_computron_heavy.mdl" + "spy" "models/workshop/player/items/all_class/hwn2021_computron/hwn2021_computron_spy.mdl" + "engineer" "models/workshop/player/items/all_class/hwn2021_computron/hwn2021_computron_engineer.mdl" + } + "used_by_classes" + { + "scout" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + } + } + "31233" + { + "name" "Taunt: The Homerunner's Hobby" + "prefab" "no_craft taunt" + "first_sale_date" "2021/10/02" + "item_name" "#TF_taunt_the_homerunners_hobby" + "item_description" "#TF_taunt_the_homerunners_hobby_Desc" + "ad_text" "#TF_taunt_the_homerunners_hobby_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/taunt_the_homerunners_hobby/taunt_the_homerunners_hobby" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_homerunners_hobby.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_homerunners_hobby_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_the_homerunners_hobby/taunt_the_homerunners_hobby.mdl" + } + } + } + "31236" + { + "name" "Taunt: Doctor's Defibrillators" + "prefab" "no_craft taunt" + "first_sale_date" "2021/12/02" + "item_name" "#TF_tauntdoctors_defibrillators" + "item_description" "#TF_tauntdoctors_defibrillators_Desc" + "ad_text" "#TF_tauntdoctors_defibrillators_AdText" + "image_inventory" "backpack/workshop/player/items/medic/tauntdoctors_defibrillators/tauntdoctors_defibrillators" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/tauntdoctors_defibrillators.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/workshop/player/items/medic/tauntdoctors_defibrillators/tauntdoctors_defibrillators.mdl" + } + } + } + "31237" + { + "name" "Taunt: Shooter's Stakeout" + "prefab" "no_craft taunt" + "first_sale_date" "2021/12/02" + "item_name" "#TF_tauntshooters_stakeout" + "item_description" "#TF_tauntshooters_stakeout_Desc" + "ad_text" "#TF_tauntshooters_stakeout_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/tauntshooters_stakeout/tauntshooters_stakeout" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/tauntshooters_stakeout.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/tauntshooters_stakeout_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "sniper" "models/workshop/player/items/sniper/tauntshooters_stakeout/tauntshooters_stakeout.mdl" + } + } + } + "31239" + { + "name" "Taunt: The Hot Wheeler" + "prefab" "no_craft taunt" + "first_sale_date" "2021/12/02" + "item_name" "#TF_taunt_the_hot_wheeler" + "item_description" "#TF_taunt_the_hot_wheeler_Desc" + "ad_text" "#TF_taunt_the_hot_wheeler_AdText" + "image_inventory" "backpack/workshop/player/items/pyro/taunt_the_hot_wheeler/taunt_the_hot_wheeler" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.MopedForward" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_hot_wheeler.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_hot_wheeler_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_hot_wheeler_action.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_the_hot_wheeler_action.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/taunt_the_hot_wheeler/taunt_the_hot_wheeler.mdl" + } + } + } + "31241" + { + "name" "El Fiestibrero" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_el_fiestibrero" + "item_description" "#TF_dec21_el_fiestibrero_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_el_fiestibrero/dec21_el_fiestibrero" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_el_fiestibrero/dec21_el_fiestibrero_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31242" + { + "name" "Gnome Dome" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_gnome_dome" + "item_description" "#TF_dec21_gnome_dome_Desc" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_gnome_dome/dec21_gnome_dome" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_gnome_dome/dec21_gnome_dome_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_gnome_dome/dec21_gnome_dome_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_gnome_dome_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_gnome_dome_style1/dec21_gnome_dome_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_gnome_dome_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_gnome_dome_style2/dec21_gnome_dome_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_gnome_dome_style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_gnome_dome_style3/dec21_gnome_dome_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_gnome_dome_style3" + } + } + } + } + "31243" + { + "name" "Jolly Jester" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_jolly_jester" + "item_description" "#TF_dec21_jolly_jester_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_jolly_jester/dec21_jolly_jester" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_jolly_jester/dec21_jolly_jester_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31244" + { + "name" "Seasonal Spring" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_seasonal_spring" + "item_description" "#TF_dec21_seasonal_spring_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_seasonal_spring/dec21_seasonal_spring" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_seasonal_spring/dec21_seasonal_spring_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31245" + { + "name" "Oh Deer!" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec21_oh_deer" + "item_description" "#TF_dec21_oh_deer_Desc" + "item_type_name" "#TF_Wearable_Antlers" + "image_inventory" "backpack/workshop/player/items/all_class/dec21_oh_deer/dec21_oh_deer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_oh_deer/dec21_oh_deer_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_oh_deer/dec21_oh_deer_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_oh_deer_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_oh_deer_style1/dec21_oh_deer_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_oh_deer_style1" + } + } + } + } + "31246" + { + "name" "The Giftcrafter" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_giftcrafter" + "item_description" "#TF_dec21_giftcrafter_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_giftcrafter/dec21_giftcrafter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_giftcrafter/dec21_giftcrafter_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31247" + { + "name" "Merry Cone" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_merry_cone" + "item_description" "#TF_dec21_merry_cone_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_merry_cone/dec21_merry_cone" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_merry_cone/dec21_merry_cone_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31248" + { + "name" "Brain Cane" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec21_brain_cane" + "item_description" "#TF_dec21_brain_cane_Desc" + "item_type_name" "#TF_Wearable_CandyCane" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_brain_cane/dec21_brain_cane" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_brain_cane/dec21_brain_cane_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31249" + { + "name" "Reindoonihorns" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_reindoonihorns" + "item_description" "#TF_dec21_reindoonihorns_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_reindoonihorns/dec21_reindoonihorns" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_reindoonihorns/dec21_reindoonihorns_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31250" + { + "name" "Cozy Catchers" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_cozy_catchers" + "item_description" "#TF_dec21_cozy_catchers_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_cozy_catchers/dec21_cozy_catchers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_cozy_catchers/dec21_cozy_catchers_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31251" + { + "name" "Ominous Offering" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec21_ominous_offering" + "item_description" "#TF_dec21_ominous_offering_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "right_shoulder" + "image_inventory" "backpack/workshop/player/items/all_class/dec21_ominous_offering/dec21_ominous_offering" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_ominous_offering/dec21_ominous_offering_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "31252" + { + "name" "Festive Frames" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec21_festive_frames" + "item_description" "#TF_dec21_festive_frames_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/all_class/dec21_festive_frames/dec21_festive_frames" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_festive_frames/dec21_festive_frames_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_festive_frames/dec21_festive_frames_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_festive_frames_style0" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_festive_frames_style1/dec21_festive_frames_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_festive_frames_style1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_festive_frames/dec21_festive_frames_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_festive_frames_style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_festive_frames_style1/dec21_festive_frames_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_festive_frames_style3" + } + } + } + } + "31253" + { + "name" "Elf Ignition" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_elf_ignition" + "item_description" "#TF_dec21_elf_ignition_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/dec21_elf_ignition/dec21_elf_ignition" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec21_elf_ignition/dec21_elf_ignition.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/dec21_elf_ignition/dec21_elf_ignition.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_elf_ignition_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/dec21_elf_ignition_style1/dec21_elf_ignition_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_elf_ignition_style1" + } + } + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + } + "31254" + { + "name" "Train Of Thought" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_train_of_thought" + "item_description" "#TF_dec21_train_of_thought_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/engineer/dec21_train_of_thought/dec21_train_of_thought" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec21_train_of_thought/dec21_train_of_thought.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/dec21_train_of_thought/dec21_train_of_thought.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_train_of_thought_style0" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/dec21_train_of_thought_style1/dec21_train_of_thought_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_train_of_thought_style1" + } + } + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "31255" + { + "name" "Mooshanka" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_mooshanka" + "item_description" "#TF_dec21_mooshanka_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/dec21_mooshanka/dec21_mooshanka" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec21_mooshanka/dec21_mooshanka.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31256" + { + "name" "Elf Defence" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_elf_defence" + "item_description" "#TF_dec21_elf_defence_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec21_elf_defence/dec21_elf_defence" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec21_elf_defence/dec21_elf_defence.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + } + "31257" + { + "name" "Festive Cover-Up" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_festive_cover_up" + "item_description" "#TF_dec21_festive_cover_up_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/dec21_festive_cover_up/dec21_festive_cover_up" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec21_festive_cover_up/dec21_festive_cover_up.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31258" + { + "name" "Seasonal Employee" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec21_seasonal_employee" + "item_description" "#TF_dec21_seasonal_employee_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/scout/dec21_seasonal_employee/dec21_seasonal_employee" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec21_seasonal_employee/dec21_seasonal_employee.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/dec21_seasonal_employee/dec21_seasonal_employee.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_seasonal_employee_style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/dec21_seasonal_employee_style1/dec21_seasonal_employee_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec21_seasonal_employee_style1" + } + } + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31259" + { + "name" "Hat Chocolate" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec21_hat_chocolate" + "item_description" "#TF_dec21_hat_chocolate_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec21_hat_chocolate/dec21_hat_chocolate" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_hat_chocolate/dec21_hat_chocolate_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31260" + { + "name" "Elf-Made Bandanna" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec21_elf_made_bandanna" + "item_description" "#TF_dec21_elf_made_bandanna_Desc" + "item_type_name" "#TF_Wearable_Bandanna" + "equip_region" "beard" + "image_inventory" "backpack/workshop/player/items/all_class/dec21_elf_made_bandanna/dec21_elf_made_bandanna" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec21_elf_made_bandanna/dec21_elf_made_bandanna_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "add jingle to footsteps" + { + "attribute_class" "add_jingle_to_footsteps" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31261" + { + "name" "The Decorated Veteran" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_decorated_veteran" + "item_description" "#TF_sum22_decorated_veteran_Desc" + "equip_region" "hat" + "propername" "1" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/sum22_decorated_veteran/sum22_decorated_veteran" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum22_decorated_veteran/sum22_decorated_veteran_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum22_decorated_veteran/sum22_decorated_veteran_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_decorated_veteran_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum22_decorated_veteran_style2/sum22_decorated_veteran_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_decorated_veteran_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum22_decorated_veteran_style3/sum22_decorated_veteran_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_decorated_veteran_style2" + } + } + } + } + "31262" + { + "name" "Undercover Brolly" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_undercover_brolly" + "item_description" "#TF_sum22_undercover_brolly_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum22_undercover_brolly/sum22_undercover_brolly" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum22_undercover_brolly/sum22_undercover_brolly_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31263" + { + "name" "Kazan Karategi" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_kazan_karategi" + "item_description" "#TF_sum22_kazan_karategi_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum22_kazan_karategi/sum22_kazan_karategi" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum22_kazan_karategi/sum22_kazan_karategi.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31264" + { + "name" "The Western Wraps" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_western_wraps" + "item_description" "#TF_sum22_western_wraps_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/sum22_western_wraps/sum22_western_wraps" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum22_western_wraps/sum22_western_wraps.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31265" + { + "name" "Soda Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_soda_cap" + "item_description" "#TF_sum22_soda_cap_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/sum22_soda_cap/sum22_soda_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum22_soda_cap/sum22_soda_cap.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/sum22_soda_cap/sum22_soda_cap.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_soda_cap_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/sum22_soda_cap_style2/sum22_soda_cap_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_soda_cap_style1" + } + } + } + } + "31266" + { + "name" "Fizzy Pharmacist" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_fizzy_pharmacist" + "item_description" "#TF_sum22_fizzy_pharmacist_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sum22_fizzy_pharmacist/sum22_fizzy_pharmacist" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum22_fizzy_pharmacist/sum22_fizzy_pharmacist.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/sum22_fizzy_pharmacist/sum22_fizzy_pharmacist.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_fizzy_pharmacist_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/sum22_fizzy_pharmacist_style2/sum22_fizzy_pharmacist_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_fizzy_pharmacist_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31267" + { + "name" "Squatter's Right" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_squatters_right" + "item_description" "#TF_sum22_squatters_right_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/sum22_squatters_right/sum22_squatters_right" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum22_squatters_right/sum22_squatters_right.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/sum22_squatters_right/sum22_squatters_right.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_squatters_right_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/sum22_squatters_right_style2/sum22_squatters_right_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_squatters_right_style1" + } + } + } + } + "31268" + { + "name" "Combat Casual" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_combat_casual" + "item_description" "#TF_sum22_combat_casual_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/sum22_combat_casual/sum22_combat_casual" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum22_combat_casual/sum22_combat_casual.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/sum22_combat_casual/sum22_combat_casual.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_combat_casual_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/sum22_combat_casual_style2/sum22_combat_casual_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_combat_casual_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31269" + { + "name" "Rocko" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_rocko" + "item_description" "#TF_sum22_rocko_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/sniper/sum22_rocko/sum22_rocko" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum22_rocko/sum22_rocko.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + } + "31270" + { + "name" "Tropical Camo" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_tropical_camo" + "item_description" "#TF_sum22_tropical_camo_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/sum22_tropical_camo/sum22_tropical_camo" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sum22_tropical_camo/sum22_tropical_camo.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/sum22_tropical_camo/sum22_tropical_camo.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_tropical_camo_style0" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/sum22_tropical_camo_style2/sum22_tropical_camo_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_tropical_camo_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31271" + { + "name" "Hawaiian Hunter" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_hawaiian_hunter" + "item_description" "#TF_sum22_hawaiian_hunter_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/sniper/sum22_hawaiian_hunter/sum22_hawaiian_hunter" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum22_hawaiian_hunter/sum22_hawaiian_hunter.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/sum22_hawaiian_hunter/sum22_hawaiian_hunter.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_hawaiian_hunter_style0" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/sum22_hawaiian_hunter_style2/sum22_hawaiian_hunter_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_hawaiian_hunter_style1" + } + } + } + } + "31272" + { + "name" "The Lawnmaker" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_lawnmaker" + "item_description" "#TF_sum22_lawnmaker_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/sum22_lawnmaker/sum22_lawnmaker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum22_lawnmaker/sum22_lawnmaker.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/sum22_lawnmaker/sum22_lawnmaker.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_lawnmaker_style0" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/sum22_lawnmaker_style2/sum22_lawnmaker_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_lawnmaker_style1" + } + } + } + } + "31273" + { + "name" "Head Banger" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_head_banger" + "item_description" "#TF_sum22_head_banger_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/sum22_head_banger/sum22_head_banger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum22_head_banger/sum22_head_banger.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31274" + { + "name" "The Hawaiian Hangover" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_hawaiian_hangover" + "item_description" "#TF_sum22_hawaiian_hangover_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sum22_hawaiian_hangover/sum22_hawaiian_hangover" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum22_hawaiian_hangover/sum22_hawaiian_hangover.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "additional_hidden_bodygroups" + { + "grenades" "1" + } + "model_player" "models/workshop/player/items/demo/sum22_hawaiian_hangover/sum22_hawaiian_hangover.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_hawaiian_hangover_style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/sum22_hawaiian_hangover_style2/sum22_hawaiian_hangover_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_hawaiian_hangover_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31275" + { + "name" "Barefoot Brawler" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_barefoot_brawler" + "item_description" "#TF_sum22_barefoot_brawler_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_regions" + { + "pants" "1" + "feet" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/sum22_barefoot_brawler/sum22_barefoot_brawler" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum22_barefoot_brawler/sum22_barefoot_brawler.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31276" + { + "name" "The Chaser" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_chaser" + "item_description" "#TF_sum22_chaser_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "sleeves" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/sum22_chaser/sum22_chaser" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum22_chaser/sum22_chaser.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "additional_hidden_bodygroups" + { + "grenades" "1" + } + "model_player" "models/workshop/player/items/soldier/sum22_chaser/sum22_chaser.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_chaser_style0" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum22_chaser_style2/sum22_chaser_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_chaser_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31277" + { + "name" "The Detective" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_detective" + "item_description" "#TF_sum22_detective_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/soldier/sum22_detective/sum22_detective" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum22_detective/sum22_detective.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sum22_detective/sum22_detective.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_detective_style0" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum22_detective_style2/sum22_detective_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_detective_style1" + } + } + } + } + "31278" + { + "name" "Tactical Turtleneck" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_tactical_turtleneck" + "item_description" "#TF_sum22_tactical_turtleneck_Desc" + "item_type_name" "#TF_Wearable_Turtleneck" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/sum22_tactical_turtleneck/sum22_tactical_turtleneck" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum22_tactical_turtleneck/sum22_tactical_turtleneck.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31279" + { + "name" "Night Vision Gawkers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_night_vision_gawkers" + "item_description" "#TF_sum22_night_vision_gawkers_Desc" + "item_type_name" "#TF_Wearable_Goggles" + "equip_region" "glasses" + "image_inventory" "backpack/workshop/player/items/spy/sum22_night_vision_gawkers/sum22_night_vision_gawkers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum22_night_vision_gawkers/sum22_night_vision_gawkers.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31280" + { + "name" "Monsieur Grenouille" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_monsieur_grenouille" + "item_description" "#TF_sum22_monsieur_grenouille_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/spy/sum22_monsieur_grenouille/sum22_monsieur_grenouille" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum22_monsieur_grenouille/sum22_monsieur_grenouille.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/sum22_monsieur_grenouille/sum22_monsieur_grenouille.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_monsieur_grenouille_style0" + } + "1" + { + "model_player" "models/workshop/player/items/spy/sum22_monsieur_grenouille_style2/sum22_monsieur_grenouille_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_monsieur_grenouille_style1" + } + } + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "31281" + { + "name" "The Ripped Rider" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_ripped_rider" + "item_description" "#TF_sum22_ripped_rider_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum22_ripped_rider/sum22_ripped_rider" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum22_ripped_rider/sum22_ripped_rider.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31282" + { + "name" "The Throttlehead" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_throttlehead" + "item_description" "#TF_sum22_throttlehead_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/sum22_throttlehead/sum22_throttlehead" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum22_throttlehead/sum22_throttlehead.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/sum22_throttlehead/sum22_throttlehead.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_throttlehead_style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/sum22_throttlehead_style2/sum22_throttlehead_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_throttlehead_style1" + } + } + } + } + "31283" + { + "name" "The Team Player" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_team_player" + "item_description" "#TF_sum22_team_player_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum22_team_player/sum22_team_player" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum22_team_player/sum22_team_player.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31284" + { + "name" "Boston Brain Bucket" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum22_brain_bucket" + "item_description" "#TF_sum22_brain_bucket_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/scout/sum22_brain_bucket/sum22_brain_bucket" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/sum22_brain_bucket_style4/sum22_brain_bucket_style4.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/sum22_brain_bucket_style4/sum22_brain_bucket_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_brain_bucket_style3" + } + "1" + { + "model_player" "models/workshop/player/items/scout/sum22_brain_bucket/sum22_brain_bucket.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_brain_bucket_style0" + } + "2" + { + "model_player" "models/workshop/player/items/scout/sum22_brain_bucket_style2/sum22_brain_bucket_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_brain_bucket_style1" + } + "3" + { + "model_player" "models/workshop/player/items/scout/sum22_brain_bucket_style3/sum22_brain_bucket_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_brain_bucket_style2" + } + "4" + { + "model_player" "models/workshop/player/items/scout/sum22_brain_bucket_style5/sum22_brain_bucket_style5.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_brain_bucket_style4" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31285" + { + "name" "Pest's Pads" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum22_pests_pads" + "item_description" "#TF_sum22_pests_pads_Desc" + "item_type_name" "#TF_Wearable_Pads" + "equip_regions" + { + "scout_pants" "1" + "arms" "1" + } + "image_inventory" "backpack/workshop/player/items/scout/sum22_pests_pads/sum22_pests_pads" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/sum22_pests_pads_style4/sum22_pests_pads_style4.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/sum22_pests_pads_style4/sum22_pests_pads_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_pests_pads_style3" + } + "1" + { + "model_player" "models/workshop/player/items/scout/sum22_pests_pads/sum22_pests_pads.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_pests_pads_style0" + } + "2" + { + "model_player" "models/workshop/player/items/scout/sum22_pests_pads_style2/sum22_pests_pads_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_pests_pads_style1" + } + "3" + { + "model_player" "models/workshop/player/items/scout/sum22_pests_pads_style3/sum22_pests_pads_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_pests_pads_style2" + } + "4" + { + "model_player" "models/workshop/player/items/scout/sum22_pests_pads_style5/sum22_pests_pads_style5.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum22_pests_pads_style4" + } + } + } + } + "31286" + { + "name" "Taunt: Texas Twirl 'Em" + "prefab" "no_craft taunt" + "first_sale_date" "2022/10/02" + "item_name" "#TF_taunt_texas_twirl_em" + "item_description" "#TF_taunt_texas_twirl_em_Desc" + "image_inventory" "backpack/workshop/player/items/engineer/taunt_texas_twirl_em/taunt_texas_twirl_em" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_texas_twirl_em.vcd" + } + "custom_taunt_prop_per_class" + { + "engineer" "models/workshop/player/items/engineer/taunt_texas_twirl_em/taunt_texas_twirl_em.mdl" + } + } + } + "31288" + { + "name" "Taunt: The Scaredy-cat!" + "prefab" "no_craft taunt" + "first_sale_date" "2022/10/02" + "item_name" "#TF_taunt_the_scaredycat" + "item_description" "#TF_taunt_the_scaredycat_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_the_scaredycat/taunt_the_scaredycat" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_scaredycat.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_the_scaredycat.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_the_scaredycat.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_the_scaredycat.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_the_scaredycat.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_the_scaredycat.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_the_scaredycat.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_the_scaredycat.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_the_scaredycat.vcd" + } + } + } + "31289" + { + "name" "Taunt: The Crypt Creeper" + "prefab" "no_craft taunt" + "first_sale_date" "2023/10/03" + "item_name" "#TF_taunt_the_crypt_creeper" + "item_description" "#TF_taunt_the_crypt_creeper_Desc" + "ad_text" "#TF_taunt_the_crypt_creeper_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/taunt_the_crypt_creeper/taunt_the_crypt_creeper" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_outro.vcd" + } + "custom_taunt_prop_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_intro_coffin.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_outro_coffin.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_a1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_a2.vcd" + } + } + } + "custom_taunt_prop_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_a1_coffin.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_crypt_creeper_a2_coffin.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "spy" "models/workshop/player/items/spy/taunt_the_crypt_creeper/taunt_the_crypt_creeper.mdl" + } + } + } + "31290" + { + "name" "Taunt: The Travel Agent" + "prefab" "no_craft taunt" + "first_sale_date" "2022/10/02" + "item_name" "#TF_taunt_the_travel_agent" + "item_description" "#TF_taunt_the_travel_agent_Desc" + "image_inventory" "backpack/workshop/player/items/spy/taunt_the_travel_agent/taunt_the_travel_agent" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "200" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "spy.travel_agent_helicopter_loop" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_travel_agent.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_the_travel_agent_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "spy" "models/workshop/player/items/spy/spy_copter/spy_copter.mdl" + } + } + } + "31291" + { + "name" "Taunt: Drunk Mann's Cannon" + "prefab" "no_craft taunt" + "first_sale_date" "2022/10/02" + "item_name" "#TF_taunt_drunk_manns_cannon" + "item_description" "#TF_taunt_drunk_manns_cannon_Desc" + "image_inventory" "backpack/workshop/player/items/demo/taunt_drunk_manns_cannon/taunt_drunk_manns_cannon" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.TankForward" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_drunk_manns_cannon.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_drunk_manns_cannon_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_drunk_manns_cannon_a1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_drunk_manns_cannon_a2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/taunt_drunk_manns_cannon/taunt_drunk_manns_cannon.mdl" + } + } + } + "31292" + { + "name" "Taunt: Shanty Shipmate" + "prefab" "no_craft taunt" + "first_sale_date" "2022/10/02" + "item_name" "#TF_taunt_shanty_shipmate" + "item_description" "#TF_taunt_shanty_shipmate_Desc" + "image_inventory" "backpack/workshop/player/items/demo/taunt_shanty_shipmate/taunt_shanty_shipmate" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "100" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_shanty_shipmate.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_shanty_shipmate_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/taunt_shanty_shipmate/taunt_shanty_shipmate.mdl" + } + } + } + "31293" + { + "name" "Beaten and Bruised" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_beaten_bruised" + "item_description" "#TF_hwn2022_beaten_bruised_Desc" + "item_type_name" "#TF_Wearable_Bandages" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2022_beaten_bruised/hwn2022_beaten_bruised" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_beaten_bruised/hwn2022_beaten_bruised_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_beaten_bruised/hwn2022_beaten_bruised_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_beaten_bruised_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_beaten_bruised_style2/hwn2022_beaten_bruised_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_beaten_bruised_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_beaten_bruised_style3/hwn2022_beaten_bruised_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_beaten_bruised_style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_beaten_bruised_style4/hwn2022_beaten_bruised_style4_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "name" "#TF_hwn2022_beaten_bruised_style3" + } + "4" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_beaten_bruised_style5/hwn2022_beaten_bruised_style5_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "name" "#TF_hwn2022_beaten_bruised_style4" + } + } + } + } + "31294" + { + "name" "Starlight Sorcerer" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_starlight_sorcerer" + "item_description" "#TF_hwn2022_starlight_sorcerer_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2022_starlight_sorcerer/hwn2022_starlight_sorcerer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_starlight_sorcerer/hwn2022_starlight_sorcerer_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_starlight_sorcerer/hwn2022_starlight_sorcerer_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_starlight_sorcerer_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_starlight_sorcerer_style2/hwn2022_starlight_sorcerer_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_starlight_sorcerer_style1" + } + } + } + } + "31295" + { + "name" "The Onimann" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_onimann" + "item_description" "#TF_hwn2022_onimann_Desc" + "equip_regions" + { + "hat" "1" + "face" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2022_onimann/hwn2022_onimann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_onimann/hwn2022_onimann_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_onimann/hwn2022_onimann_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_onimann_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_onimann_style3/hwn2022_onimann_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_onimann_style2" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2022_onimann_style2/hwn2022_onimann_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_onimann_style1" + } + } + } + } + "31296" + { + "name" "Propaniac" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_propaniac" + "item_description" "#TF_hwn2022_propaniac_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2022_propaniac/hwn2022_propaniac" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2022_propaniac/hwn2022_propaniac.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31297" + { + "name" "Dustbowl Devil" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_dustbowl_devil" + "item_description" "#TF_hwn2022_dustbowl_devil_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2022_dustbowl_devil/hwn2022_dustbowl_devil" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2022_dustbowl_devil/hwn2022_dustbowl_devil.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31298" + { + "name" "More Gun Marshal" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_more_gun_marshal" + "item_description" "#TF_hwn2022_more_gun_marshal_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2022_more_gun_marshal/hwn2022_more_gun_marshal" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2022_more_gun_marshal/hwn2022_more_gun_marshal.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/hwn2022_more_gun_marshal/hwn2022_more_gun_marshal.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_more_gun_marshal_style0" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/hwn2022_more_gun_marshal_style2/hwn2022_more_gun_marshal_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_more_gun_marshal_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/engineer/hwn2022_more_gun_marshal_style3/hwn2022_more_gun_marshal_style3.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_more_gun_marshal_style2" + } + "3" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/engineer/hwn2022_more_gun_marshal_style4/hwn2022_more_gun_marshal_style4.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_more_gun_marshal_style3" + } + } + } + } + "31299" + { + "name" "The Lavish Labwear" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_lavish_labwear" + "item_description" "#TF_hwn2022_lavish_labwear_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/hwn2022_lavish_labwear/hwn2022_lavish_labwear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2022_lavish_labwear/hwn2022_lavish_labwear.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31300" + { + "name" "Victorian Villainy" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_victorian_villainy" + "item_description" "#TF_hwn2022_victorian_villainy_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/hwn2022_victorian_villainy/hwn2022_victorian_villainy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2022_victorian_villainy/hwn2022_victorian_villainy.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/hwn2022_victorian_villainy/hwn2022_victorian_villainy.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_victorian_villainy_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/hwn2022_victorian_villainy_style2/hwn2022_victorian_villainy_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_victorian_villainy_style1" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/medic/hwn2022_victorian_villainy_style3/hwn2022_victorian_villainy_style3.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_victorian_villainy_style2" + } + } + } + } + "31301" + { + "name" "The Turncoat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_turncoat" + "item_description" "#TF_hwn2022_turncoat_Desc" + "item_type_name" "#TF_Wearable_Suit" + "equip_region" "pants" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/hwn2022_turncoat/hwn2022_turncoat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2022_turncoat/hwn2022_turncoat.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31302" + { + "name" "The Imp's Imprint" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_imps_imprint" + "item_description" "#TF_hwn2022_imps_imprint_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2022_imps_imprint/hwn2022_imps_imprint" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2022_imps_imprint/hwn2022_imps_imprint.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31303" + { + "name" "The Masked Fiend" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_masked_fiend" + "item_description" "#TF_hwn2022_masked_fiend_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/scout/hwn2022_masked_fiend/hwn2022_masked_fiend" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2022_masked_fiend/hwn2022_masked_fiend.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2022_masked_fiend_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_hwn2022_masked_fiend_Style1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + } + } + } + "31304" + { + "name" "Horror Shawl" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_horror_shawl" + "item_description" "#TF_hwn2022_horror_shawl_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2022_horror_shawl/hwn2022_horror_shawl" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2022_horror_shawl/hwn2022_horror_shawl.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/hwn2022_horror_shawl/hwn2022_horror_shawl.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_horror_shawl_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/hwn2022_horror_shawl_style2/hwn2022_horror_shawl_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_horror_shawl_style1" + } + } + } + } + "31305" + { + "name" "Road Rage" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_road_rage" + "item_description" "#TF_hwn2022_road_rage_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2022_road_rage/hwn2022_road_rage" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2022_road_rage/hwn2022_road_rage.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31306" + { + "name" "Road Block" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_road_block" + "item_description" "#TF_hwn2022_road_block_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "heavy_bullets" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2022_road_block/hwn2022_road_block" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2022_road_block/hwn2022_road_block.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31307" + { + "name" "Alcoholic Automaton" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_alcoholic_automaton" + "item_description" "#TF_hwn2022_alcoholic_automaton_Desc" + "item_type_name" "#TF_Wearable_RoboticHead" + "equip_region" "demo_head_replacement" + "image_inventory" "backpack/workshop/player/items/demo/hwn2022_alcoholic_automaton/hwn2022_alcoholic_automaton" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2022_alcoholic_automaton/hwn2022_alcoholic_automaton.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/hwn2022_alcoholic_automaton/hwn2022_alcoholic_automaton.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_alcoholic_automaton_style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/hwn2022_alcoholic_automaton_style2/hwn2022_alcoholic_automaton_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_alcoholic_automaton_style1" + } + } + } + } + "31308" + { + "name" "Nightbane Brim" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_nightbane_brim" + "item_description" "#TF_hwn2022_nightbane_brim_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/hwn2022_nightbane_brim/hwn2022_nightbane_brim" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2022_nightbane_brim/hwn2022_nightbane_brim.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "31309" + { + "name" "Bombard Brigadier" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_bombard_brigadier" + "item_description" "#TF_hwn2022_bombard_brigadier_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/hwn2022_bombard_brigadier/hwn2022_bombard_brigadier" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2022_bombard_brigadier/hwn2022_bombard_brigadier.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/hwn2022_bombard_brigadier/hwn2022_bombard_brigadier.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_bombard_brigadier_style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/hwn2022_bombard_brigadier_style2/hwn2022_bombard_brigadier_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_bombard_brigadier_style1" + } + } + } + } + "31310" + { + "name" "Firearm Protector" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_firearm_protector" + "item_description" "#TF_hwn2022_firearm_protector_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/hwn2022_firearm_protector/hwn2022_firearm_protector" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2022_firearm_protector/hwn2022_firearm_protector.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31311" + { + "name" "Safety Stripes" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_safety_stripes" + "item_description" "#TF_hwn2022_safety_stripes_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "soldier_pocket" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2022_safety_stripes/hwn2022_safety_stripes" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2022_safety_stripes/hwn2022_safety_stripes.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31312" + { + "name" "Cranial Cowl" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_cranial_cowl" + "item_description" "#TF_hwn2022_cranial_cowl_Desc" + "equip_region" "whole_head" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2022_cranial_cowl/hwn2022_cranial_cowl" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2022_cranial_cowl/hwn2022_cranial_cowl.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/hwn2022_cranial_cowl/hwn2022_cranial_cowl.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_cranial_cowl_style0" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/hwn2022_cranial_cowl_style2/hwn2022_cranial_cowl_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_cranial_cowl_style1" + } + } + } + } + "31313" + { + "name" "Headhunter's Brim" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2022_headhunters_brim" + "item_description" "#TF_hwn2022_headhunters_brim_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/sniper/hwn2022_headhunters_brim/hwn2022_headhunters_brim" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2022_headhunters_brim/hwn2022_headhunters_brim.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31314" + { + "name" "Hunting Cloak" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_hunting_cloak" + "item_description" "#TF_hwn2022_hunting_cloak_Desc" + "item_type_name" "#TF_Wearable_Cloak" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/hwn2022_hunting_cloak/hwn2022_hunting_cloak" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2022_hunting_cloak/hwn2022_hunting_cloak.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31315" + { + "name" "Misha's Maw" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_mishas_maw" + "item_description" "#TF_hwn2022_mishas_maw_Desc" + "item_type_name" "#TF_Wearable_BearHead" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2022_mishas_maw/hwn2022_mishas_maw" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2022_mishas_maw/hwn2022_mishas_maw.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/hwn2022_mishas_maw/hwn2022_mishas_maw.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_mishas_maw_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/hwn2022_mishas_maw_style2/hwn2022_mishas_maw_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2022_mishas_maw_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31316" + { + "name" "Cabinet Mann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_cabinet_mann" + "item_description" "#TF_hwn2022_cabinet_mann_Desc" + "item_type_name" "#TF_Wearable_ArcadeMachine" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2022_cabinet_mann/hwn2022_cabinet_mann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2022_cabinet_mann/hwn2022_cabinet_mann.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31317" + { + "name" "The Fire Breather" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_fire_breather" + "item_description" "#TF_hwn2022_fire_breather_Desc" + "item_type_name" "#TF_Wearable_DragonHead" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + "pyro_head_replacement" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2022_fire_breather/hwn2022_fire_breather" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2022_fire_breather/hwn2022_fire_breather.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31318" + { + "name" "Magical Mount" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_magical_mount" + "item_description" "#TF_hwn2022_magical_mount_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "pants" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2022_magical_mount/hwn2022_magical_mount" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2022_magical_mount/hwn2022_magical_mount.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31319" + { + "name" "The Pony Express" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2022_pony_express" + "item_description" "#TF_hwn2022_pony_express_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "pants" + "holiday_restriction" "halloween_or_fullmoon" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2022_pony_express/hwn2022_pony_express" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2022_pony_express/hwn2022_pony_express.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31320" + { + "name" "Taunt: Russian Rubdown" + "prefab" "no_craft taunt" + "first_sale_date" "2022/12/02" + "item_name" "#TF_taunt_russian_rubdown" + "item_description" "#TF_taunt_russian_rubdown_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/tauntrussian_rubdown/tauntrussian_rubdown" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "taunt force weapon slot" + { + "attribute_class" "taunt_force_weapon_slot" + "value" "PRIMARY" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/tauntrussian_rubdown.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/tauntrussian_rubdown_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "heavy" "models/workshop/player/items/heavy/tauntrussian_rubdown/tauntrussian_rubdown.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "heavy" "scenes/workshop/player/items/russian_rubdown/russian_rubdown_prop.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "heavy" "scenes/workshop/player/items/russian_rubdown/russian_rubdown_prop_outro.vcd" + } + "stop_taunt_if_moved" "1" + } + } + "31321" + { + "name" "Taunt: Tailored Terminal" + "prefab" "no_craft taunt" + "first_sale_date" "2022/12/02" + "item_name" "#TF_taunt_tailored_terminal" + "item_description" "#TF_taunt_tailored_terminal_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/taunttailored_terminal/taunttailored_terminal" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunttailored_terminal_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunttailored_terminal_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunttailored_terminal_a1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunttailored_terminal_a2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "spy" "models/workshop/player/items/spy/tailored_terminal_model/tailored_terminal_model.mdl" + } + } + } + "31322" + { + "name" "Taunt: Roasty Toasty" + "prefab" "no_craft taunt" + "first_sale_date" "2022/12/02" + "item_name" "#TF_taunt_roasty_toasty" + "item_description" "#TF_taunt_roasty_toasty_Desc" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "pyro_taunt_roasty_toasty_fire_small1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/taunt_roasty_toasty/taunt_roasty_toasty" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_roasty_toasty.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_roasty_toasty_outro.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/taunt_roasty_toasty/taunt_roasty_toasty.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "pyro" "scenes/workshop/player/items/roasty_toasty/roasty_toasty_prop.vcd" + } + "custom_taunt_prop_outro_scene_per_class" + { + "pyro" "scenes/workshop/player/items/roasty_toasty/roasty_toasty_prop_outro.vcd" + } + "stop_taunt_if_moved" "1" + } + } + "31323" + { + "name" "Trapper's Flap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_trappers_flap" + "item_description" "#TF_dec22_trappers_flap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec22_trappers_flap_style1/dec22_trappers_flap_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_trappers_flap_style1/dec22_trappers_flap_style1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_trappers_flap_style1/dec22_trappers_flap_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_trappers_flap_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_trappers_flap_style2/dec22_trappers_flap_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_trappers_flap_style2" + } + } + } + } + "31324" + { + "name" "Battle Bear" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_battle_bear" + "item_description" "#TF_dec22_battle_bear_Desc" + "item_type_name" "#TF_Wearable_Mascot" + "equip_regions" + { + "left_shoulder" "1" + "right_shoulder" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/dec22_battle_bear_style1/dec22_battle_bear_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_battle_bear_style1/dec22_battle_bear_style1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_battle_bear_style1/dec22_battle_bear_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_battle_bear_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_battle_bear_style2/dec22_battle_bear_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_battle_bear_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31325" + { + "name" "Colonel Kringle" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_colonel_kringle" + "item_description" "#TF_dec22_colonel_kringle_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec22_colonel_kringle/dec22_colonel_kringle" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_colonel_kringle/dec22_colonel_kringle_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31326" + { + "name" "Lumbercap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_lumbercap" + "item_description" "#TF_dec22_lumbercap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec22_lumbercap/dec22_lumbercap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_lumbercap/dec22_lumbercap_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31327" + { + "name" "Festive Rack" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_festive_rack" + "item_description" "#TF_dec22_festive_rack_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec22_festive_rack_style1/dec22_festive_rack_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_festive_rack_style1/dec22_festive_rack_style1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_festive_rack_style1/dec22_festive_rack_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_festive_rack_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec22_festive_rack_style2/dec22_festive_rack_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_festive_rack_style2" + } + } + } + } + "31328" + { + "name" "Firebrand" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_firebrand" + "item_description" "#TF_dec22_firebrand_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec22_firebrand/dec22_firebrand" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec22_firebrand/dec22_firebrand.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31329" + { + "name" "Partizan" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_partizan" + "item_description" "#TF_dec22_partizan_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/dec22_partizan/dec22_partizan" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec22_partizan/dec22_partizan.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31331" + { + "name" "The Soft Hard Hat" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_soft_hard_hat" + "item_description" "#TF_dec22_soft_hard_hat_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/dec22_soft_hard_hat/dec22_soft_hard_hat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec22_soft_hard_hat/dec22_soft_hard_hat.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31332" + { + "name" "The Cool Warm Sweater" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_cool_warm_sweater" + "item_description" "#TF_dec22_cool_warm_sweater_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/dec22_cool_warm_sweater_style1/dec22_cool_warm_sweater_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec22_cool_warm_sweater_style1/dec22_cool_warm_sweater_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/dec22_cool_warm_sweater_style1/dec22_cool_warm_sweater_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_cool_warm_sweater_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/dec22_cool_warm_sweater_style2/dec22_cool_warm_sweater_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_cool_warm_sweater_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31333" + { + "name" "Arctic Mole" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_arctic_mole" + "item_description" "#TF_dec22_arctic_mole_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/dec22_arctic_mole_style1/dec22_arctic_mole_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec22_arctic_mole_style1/dec22_arctic_mole_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/dec22_arctic_mole_style1/dec22_arctic_mole_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_arctic_mole_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/dec22_arctic_mole_style2/dec22_arctic_mole_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_arctic_mole_style2" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/dec22_arctic_mole_style3/dec22_arctic_mole_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_arctic_mole_style3" + } + } + } + } + "31334" + { + "name" "Underminer's Overcoat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_underminers" + "item_description" "#TF_dec22_underminers_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/dec22_underminers_style1/dec22_underminers_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec22_underminers_style1/dec22_underminers_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/dec22_underminers_style1/dec22_underminers_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_underminers_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/dec22_underminers_style2/dec22_underminers_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_underminers_style2" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/dec22_underminers_style3/dec22_underminers_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_underminers_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31335" + { + "name" "Bulb Bonnet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_bulb_bonnet" + "item_description" "#TF_dec22_bulb_bonnet_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec22_bulb_bonnet_style1/dec22_bulb_bonnet_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec22_bulb_bonnet_style1/dec22_bulb_bonnet_style1.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/dec22_bulb_bonnet_style1/dec22_bulb_bonnet_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_bulb_bonnet_style1" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/dec22_bulb_bonnet_style2/dec22_bulb_bonnet_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_bulb_bonnet_style2" + } + } + } + } + "31336" + { + "name" "Cold Blooded Coat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_cold_blooded_coat" + "item_description" "#TF_dec22_cold_blooded_coat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/dec22_cold_blooded_coat/dec22_cold_blooded_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec22_cold_blooded_coat/dec22_cold_blooded_coat.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31337" + { + "name" "Frostbite Bonnet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_frostbite_bonnet" + "item_description" "#TF_dec22_frostbite_bonnet_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "image_inventory" "backpack/workshop/player/items/spy/dec22_frostbite_bonnet/dec22_frostbite_bonnet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec22_frostbite_bonnet/dec22_frostbite_bonnet.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31338" + { + "name" "Infiltrator's Insulation" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_infiltrators_insulation" + "item_description" "#TF_dec22_infiltrators_insulation_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/spy/dec22_infiltrators_insulation/dec22_infiltrators_insulation" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec22_infiltrators_insulation/dec22_infiltrators_insulation.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31339" + { + "name" "Motley Sleeves" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_motley_sleeves" + "item_description" "#TF_dec22_motley_sleeves_Desc" + "item_type_name" "#TF_Wearable_Tattoos" + "equip_region" "arm_tattoos" + "image_inventory" "backpack/workshop/player/items/scout/dec22_motley_sleeves/dec22_motley_sleeves" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/scout/dec22_motley_sleeves/dec22_motley_sleeves.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31340" + { + "name" "Crosshair Cardigan" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_crosshair_cardigan" + "item_description" "#TF_dec22_crosshair_cardigan_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/sniper/dec22_crosshair_cardigan/dec22_crosshair_cardigan" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec22_crosshair_cardigan/dec22_crosshair_cardigan.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31341" + { + "name" "Plaid Lad" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_plaid_lad" + "item_description" "#TF_dec22_plaid_lad_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/demo/dec22_plaid_lad_style1/dec22_plaid_lad_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec22_plaid_lad_style1/dec22_plaid_lad_style1.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/dec22_plaid_lad_style1/dec22_plaid_lad_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_plaid_lad_style1" + } + "1" + { + "model_player" "models/workshop/player/items/demo/dec22_plaid_lad_style2/dec22_plaid_lad_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_plaid_lad_style2" + } + "2" + { + "model_player" "models/workshop/player/items/demo/dec22_plaid_lad_style3/dec22_plaid_lad_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_plaid_lad_style3" + } + } + } + } + "31342" + { + "name" "Glasgow Bankroll" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_glasgow_bankroll" + "item_description" "#TF_dec22_glasgow_bankroll_Desc" + "item_type_name" "#TF_Wearable_Suit" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/demo/dec22_glasgow_bankroll_style1/dec22_glasgow_bankroll_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec22_glasgow_bankroll_style1/dec22_glasgow_bankroll_style1.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/dec22_glasgow_bankroll_style1/dec22_glasgow_bankroll_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_glasgow_bankroll_style1" + } + "1" + { + "model_player" "models/workshop/player/items/demo/dec22_glasgow_bankroll_style2/dec22_glasgow_bankroll_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_glasgow_bankroll_style2" + } + "2" + { + "model_player" "models/workshop/player/items/demo/dec22_glasgow_bankroll_style3/dec22_glasgow_bankroll_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_glasgow_bankroll_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31343" + { + "name" "The Wooly Pulli" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_wooly_pulli" + "item_description" "#TF_dec22_wooly_pulli_Desc" + "item_type_name" "#TF_Wearable_Sweater" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/dec22_wooly_pulli_style1/dec22_wooly_pulli_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec22_wooly_pulli_style1/dec22_wooly_pulli_style1.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/dec22_wooly_pulli_style1/dec22_wooly_pulli_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_wooly_pulli_style1" + } + "1" + { + "model_player" "models/workshop/player/items/medic/dec22_wooly_pulli_style2/dec22_wooly_pulli_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_wooly_pulli_style2" + } + "2" + { + "model_player" "models/workshop/player/items/medic/dec22_wooly_pulli_style3/dec22_wooly_pulli_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_wooly_pulli_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31344" + { + "name" "Oktoberfester" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_oktoberfester" + "item_description" "#TF_dec22_oktoberfester_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/medic/dec22_oktoberfester_style1/dec22_oktoberfester_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec22_oktoberfester_style1/dec22_oktoberfester_style1.mdl" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/dec22_oktoberfester_style1/dec22_oktoberfester_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_oktoberfester_style1" + } + "1" + { + "model_player" "models/workshop/player/items/medic/dec22_oktoberfester_style2/dec22_oktoberfester_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_oktoberfester_style2" + } + "2" + { + "model_player" "models/workshop/player/items/medic/dec22_oktoberfester_style3/dec22_oktoberfester_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_oktoberfester_style3" + "use_smoke_particle_effect" "0" + } + } + } + } + "31345" + { + "name" "Ol' Reliable" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec22_ol_reliable" + "item_description" "#TF_dec22_ol_reliable_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/dec22_ol_reliable_style1/dec22_ol_reliable_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec22_ol_reliable_style1/dec22_ol_reliable_style1.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/dec22_ol_reliable_style1/dec22_ol_reliable_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_ol_reliable_style1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/dec22_ol_reliable_style2/dec22_ol_reliable_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_ol_reliable_style2" + } + "2" + { + "model_player" "models/workshop/player/items/heavy/dec22_ol_reliable_style3/dec22_ol_reliable_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_ol_reliable_style3" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31346" + { + "name" "Heavy Heating" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec22_heavy_heating" + "item_description" "#TF_dec22_heavy_heating_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/dec22_heavy_heating_style1/dec22_heavy_heating_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec22_heavy_heating_style1/dec22_heavy_heating_style1.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/dec22_heavy_heating_style1/dec22_heavy_heating_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_heavy_heating_style1" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/dec22_heavy_heating_style2/dec22_heavy_heating_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_heavy_heating_style2" + } + "2" + { + "model_player" "models/workshop/player/items/heavy/dec22_heavy_heating_style3/dec22_heavy_heating_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec22_heavy_heating_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31347" + { + "name" "Taunt: Star-Spangled Strategy" + "prefab" "no_craft taunt" + "first_sale_date" "2023/07/10" + "item_name" "#TF_taunt_starspangled_strategy" + "item_description" "#TF_taunt_starspangled_strategy_Desc" + "ad_text" "#TF_taunt_starspangled_strategy_AdText" + "image_inventory" "backpack/workshop/player/items/soldier/tauntstarspangled_strategy/tauntstarspangled_strategy" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/workshop/player/soldier/low/tauntstarspangled_strategy.vcd" + } + "custom_taunt_prop_per_class" + { + "soldier" "models/workshop/player/items/soldier/tauntstarspangled_strategy/tauntstarspangled_strategy.mdl" + } + } + } + "31348" + { + "name" "Taunt: Killer Joke" + "prefab" "no_craft taunt" + "first_sale_date" "2023/07/10" + "item_name" "#TF_taunt_killer_joke" + "item_description" "#TF_taunt_killer_joke_Desc" + "ad_text" "#TF_taunt_killer_joke_AdText" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_killer_joke.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_killer_joke.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_killer_joke.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_killer_joke.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_killer_joke.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_killer_joke.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_killer_joke.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_killer_joke.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_killer_joke.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "sniper" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "soldier" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "demoman" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "medic" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "heavy" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "pyro" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "spy" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + "engineer" "models/workshop/player/items/all_class/taunt_killer_joke/taunt_killer_joke_drums.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_killer_joke_drum.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_killer_joke_drum.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_killer_joke_drum.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_killer_joke_drum.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_killer_joke_drum.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_killer_joke_drum.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_killer_joke_drum.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_killer_joke_drum.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_killer_joke_drum.vcd" + } + } + } + "31349" + { + "name" "Taunt: The Head Doctor" + "prefab" "no_craft taunt" + "first_sale_date" "2023/07/10" + "item_name" "#TF_taunt_head_doctor" + "item_description" "#TF_taunt_head_doctor_Desc" + "ad_text" "#TF_taunt_head_doctor_AdText" + "image_inventory" "backpack/workshop/player/items/medic/tauntthe_head_doctor/tauntthe_head_doctor" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/tauntthe_head_doctor.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/workshop/player/items/medic/taunt_the_head_doctor/taunt_the_head_doctor.mdl" + } + } + } + "31351" + { + "name" "Taunt: Tuefort Tango" + "prefab" "no_craft taunt" + "first_sale_date" "2023/07/10" + "item_name" "#TF_taunt_tuefort_tango" + "item_description" "#TF_taunt_tuefort_tango_Desc" + "ad_text" "#TF_taunt_tuefort_tango_AdText" + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "image_inventory" "backpack/workshop/player/items/spy/taunt_tuefort_tango/taunt_tuefort_tango" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "spy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_tuefort_tango_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "spy" "scenes/workshop/player/spy/low/taunt_tuefort_tango_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_tuefort_tango_a1.vcd" + } + } + "IN_ATTACK2" + { + "pressed" + { + "spy" "scenes/workshop/player/spy/low/taunt_tuefort_tango_a2.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "spy" "models/workshop/player/items/spy/taunt_tuefort_tango/taunt_tuefort_tango.mdl" + } + } + } + "31352" + { + "name" "Taunt: The Road Rager" + "prefab" "no_craft taunt" + "first_sale_date" "2023/07/10" + "item_name" "#TF_taunt_road_rager" + "item_description" "#TF_taunt_road_rager_Desc" + "ad_text" "#TF_taunt_road_rager_AdText" + "attributes" + { + "taunt move speed" + { + "attribute_class" "taunt_move_speed" + "value" "70" + } + "taunt force move forward" + { + "attribute_class" "taunt_force_move_forward" + "value" "1" + } + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + "taunt move acceleration time" + { + "attribute_class" "taunt_move_acceleration_time" + "value" "0.300000" + } + "taunt turn speed" + { + "attribute_class" "taunt_turn_speed" + "value" "60" + } + "taunt turn acceleration time" + { + "attribute_class" "taunt_turn_acceleration_time" + "value" "0.200000" + } + "taunt success sound loop" + { + "attribute_class" "taunt_success_sound_loop" + "value" "Taunt.TankForward" + } + } + "image_inventory" "backpack/workshop/player/items/heavy/taunt_the_road_rager/taunt_the_road_rager" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "heavy" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_the_road_rager_intro.vcd" + } + "custom_taunt_outro_scene_per_class" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_the_road_rager_outro.vcd" + } + "custom_taunt_input_remap" + { + "IN_ATTACK" + { + "pressed" + { + "heavy" "scenes/workshop/player/heavy/low/taunt_the_road_rager_a1.vcd" + } + } + } + "custom_taunt_prop_per_class" + { + "heavy" "models/workshop/player/items/heavy/road_rager/road_rager.mdl" + } + } + } + "31354" + { + "name" "Taunt: The Killer Signature" + "prefab" "no_craft taunt" + "first_sale_date" "2023/07/10" + "item_name" "#TF_taunt_killer_signature" + "item_description" "#TF_taunt_killer_signature_Desc" + "ad_text" "#TF_taunt_killer_signature_AdText" + "image_inventory" "backpack/workshop/player/items/scout/taunt_the_killer_signature/taunt_the_killer_signature" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_the_killer_signature.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_the_killer_signature/taunt_the_killer_signature.mdl" + } + } + } + "31355" + { + "name" "Full Metal Helmet" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_full_metal_helmet" + "item_description" "#TF_sum23_full_metal_helmet_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum23_full_metal_helmet/sum23_full_metal_helmet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum23_full_metal_helmet/sum23_full_metal_helmet_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31356" + { + "name" "Brothers in Blues" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_brothers_blues" + "item_description" "#TF_sum23_brothers_blues_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum23_brothers_blues/sum23_brothers_blues" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum23_brothers_blues/sum23_brothers_blues_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31357" + { + "name" "The Flame Warrior" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_flamewarrior" + "item_description" "#TF_sum23_flamewarrior_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum23_flamewarrior_style1/sum23_flamewarrior_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum23_flamewarrior_style1/sum23_flamewarrior_style1.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/sum23_flamewarrior_style1/sum23_flamewarrior_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/sum23_flamewarrior_style2/sum23_flamewarrior_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + } + "31358" + { + "name" "The Soho Sleuth" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_soho_sleuth" + "item_description" "#TF_sum23_soho_sleuth_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/sum23_soho_sleuth/sum23_soho_sleuth" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum23_soho_sleuth/sum23_soho_sleuth.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31359" + { + "name" "The Firestalker" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_firestalker" + "item_description" "#TF_sum23_firestalker_Desc" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/pyro/sum23_firestalker/sum23_firestalker" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum23_firestalker/sum23_firestalker.mdl" + "used_by_classes" + { + "pyro" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + } + "31360" + { + "name" "The Glorious Gambeson" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_glorious_gambeson" + "item_description" "#TF_sum23_glorious_gambeson_Desc" + "item_type_name" "#TF_Wearable_Gambeson" + "equip_region" "sniper_vest" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sum23_glorious_gambeson/sum23_glorious_gambeson" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum23_glorious_gambeson/sum23_glorious_gambeson.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31361" + { + "name" "The Bushman" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_bushman" + "item_description" "#TF_sum23_bushman_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_regions" + { + "arms" "1" + "shirt" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sum23_bushman/sum23_bushman" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sum23_bushman/sum23_bushman.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31362" + { + "name" "Cranium Cover" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_cranium_cover" + "item_description" "#TF_sum23_cranium_cover_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/sniper/sum23_cranium_cover_style1/sum23_cranium_cover_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum23_cranium_cover_style1/sum23_cranium_cover_style1.mdl" + "used_by_classes" + { + "sniper" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/sum23_cranium_cover_style1/sum23_cranium_cover_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_cranium_cover_style1" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/sum23_cranium_cover_style2/sum23_cranium_cover_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_cranium_cover_style2" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31363" + { + "name" "Preventative Measure" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_preventative_measure" + "item_description" "#TF_sum23_preventative_measure_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/sum23_preventative_measure/sum23_preventative_measure" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/sum23_preventative_measure/sum23_preventative_measure.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31364" + { + "name" "Uber-Wear" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_uber_wear" + "item_description" "#TF_sum23_uber_wear_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sum23_uber_wear/sum23_uber_wear" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum23_uber_wear/sum23_uber_wear.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "31365" + { + "name" "Medical Emergency" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_medical_emergency" + "item_description" "#TF_sum23_medical_emergency_Desc" + "item_type_name" "#TF_Wearable_Medkit" + "equip_region" "medic_hip" + "image_inventory" "backpack/workshop/player/items/medic/sum23_medical_emergency/sum23_medical_emergency" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/medic/sum23_medical_emergency/sum23_medical_emergency.mdl" + "used_by_classes" + { + "medic" "1" + } + } + "31366" + { + "name" "Brimmed Bootlegger" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_brimmed_bootlegger" + "item_description" "#TF_sum23_brimmed_bootlegger_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum23_brimmed_bootlegger/sum23_brimmed_bootlegger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum23_brimmed_bootlegger/sum23_brimmed_bootlegger.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31367" + { + "name" "Prohibition Opposition" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_prohibition_opposition" + "item_description" "#TF_sum23_prohibition_opposition_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum23_prohibition_opposition/sum23_prohibition_opposition" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum23_prohibition_opposition/sum23_prohibition_opposition.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31368" + { + "name" "Brother Mann" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_brother_mann" + "item_description" "#TF_sum23_brother_mann_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_regions" + { + "heavy_hair" "1" + "glasses" "1" + "beard" "1" + } + "image_inventory" "backpack/workshop/player/items/heavy/sum23_brother_mann_style1/sum23_brother_mann_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum23_brother_mann_style1/sum23_brother_mann_style1.mdl" + "used_by_classes" + { + "heavy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/heavy/sum23_brother_mann_style1/sum23_brother_mann_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/heavy/sum23_brother_mann_style2/sum23_brother_mann_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + "2" + { + "model_player" "models/workshop/player/items/heavy/sum23_brother_mann_style3/sum23_brother_mann_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style2" + } + } + } + } + "31369" + { + "name" "Heavy Metal" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_heavy_metal" + "item_description" "#TF_sum23_heavy_metal_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/sum23_heavy_metal/sum23_heavy_metal" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum23_heavy_metal/sum23_heavy_metal.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31370" + { + "name" "Hog Heels" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_hog_heels" + "item_description" "#TF_sum23_hog_heels_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/heavy/sum23_hog_heels/sum23_hog_heels" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum23_hog_heels/sum23_hog_heels.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31371" + { + "name" "The Blast Bowl" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_blast_bowl" + "item_description" "#TF_sum23_blast_bowl_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sum23_blast_bowl_style1/sum23_blast_bowl_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum23_blast_bowl_style1/sum23_blast_bowl_style1.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/sum23_blast_bowl_style1/sum23_blast_bowl_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_blast_bowl_style1" + } + "1" + { + "model_player" "models/workshop/player/items/demo/sum23_blast_bowl_style2/sum23_blast_bowl_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_blast_bowl_style2" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31372" + { + "name" "The Shrapnel Shell" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_shrapnel_shell" + "item_description" "#TF_sum23_shrapnel_shell_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "grenades" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/sum23_shrapnel_shell_style1/sum23_shrapnel_shell_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/sum23_shrapnel_shell_style1/sum23_shrapnel_shell_style1.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/sum23_shrapnel_shell_style1/sum23_shrapnel_shell_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_shrapnel_shell_style1" + } + "1" + { + "model_player" "models/workshop/player/items/demo/sum23_shrapnel_shell_style2/sum23_shrapnel_shell_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_shrapnel_shell_style2" + } + } + } + } + "31373" + { + "name" "Cargo Constructor" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_cargo_constructor" + "item_description" "#TF_sum23_cargo_constructor_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/sum23_cargo_constructor/sum23_cargo_constructor" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum23_cargo_constructor/sum23_cargo_constructor.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31374" + { + "name" "Hazard Handler" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_hazard_handler" + "item_description" "#TF_sum23_hazard_handler_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sum23_hazard_handler_style1/sum23_hazard_handler_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum23_hazard_handler_style1/sum23_hazard_handler_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/sum23_hazard_handler_style1/sum23_hazard_handler_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/sum23_hazard_handler_style2/sum23_hazard_handler_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/sum23_hazard_handler_style3/sum23_hazard_handler_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style2" + } + "3" + { + "model_player" "models/workshop/player/items/engineer/sum23_hazard_handler_style4/sum23_hazard_handler_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style3" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31375" + { + "name" "Cranium Cooler" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_cranium_cooler" + "item_description" "#TF_sum23_cranium_cooler_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sum23_cranium_cooler/sum23_cranium_cooler" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum23_cranium_cooler/sum23_cranium_cooler.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31376" + { + "name" "Cleaner's Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_cleaners_cap" + "item_description" "#TF_sum23_cleaners_cap_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/sum23_cleaners_cap_style1/sum23_cleaners_cap_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum23_cleaners_cap_style1/sum23_cleaners_cap_style1.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/sum23_cleaners_cap_style1/sum23_cleaners_cap_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_cleaners_cap_style1" + } + "1" + { + "model_player" "models/workshop/player/items/spy/sum23_cleaners_cap_style2/sum23_cleaners_cap_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_cleaners_cap_style2" + } + "2" + { + "model_player" "models/workshop/player/items/spy/sum23_cleaners_cap_style3/sum23_cleaners_cap_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_cleaners_cap_style3" + } + } + } + } + "31377" + { + "name" "Le Professionnel" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_professionnel" + "item_description" "#TF_sum23_professionnel_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/sum23_professionnel_style1/sum23_professionnel_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum23_professionnel_style1/sum23_professionnel_style1.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/sum23_professionnel_style1/sum23_professionnel_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_professionnel_style1" + } + "1" + { + "model_player" "models/workshop/player/items/spy/sum23_professionnel_style2/sum23_professionnel_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_professionnel_style2" + } + } + } + } + "31378" + { + "name" "Close Quarters Cover" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum23_close_quarters" + "item_description" "#TF_sum23_close_quarters_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sum23_close_quarters_style1/sum23_close_quarters_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum23_close_quarters_style1/sum23_close_quarters_style1.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sum23_close_quarters_style1/sum23_close_quarters_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_close_quarters_style1" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum23_close_quarters_style2/sum23_close_quarters_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_close_quarters_style2" + } + "2" + { + "model_player" "models/workshop/player/items/soldier/sum23_close_quarters_style3/sum23_close_quarters_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_close_quarters_style3" + } + "3" + { + "model_player" "models/workshop/player/items/soldier/sum23_close_quarters_style4/sum23_close_quarters_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_close_quarters_style4" + } + } + } + } + "31379" + { + "name" "Stealth Bomber" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum23_stealth_bomber" + "item_description" "#TF_sum23_stealth_bomber_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_regions" + { + "grenades" "1" + "pants" "1" + } + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/sum23_stealth_bomber_style1/sum23_stealth_bomber_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum23_stealth_bomber_style1/sum23_stealth_bomber_style1.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sum23_stealth_bomber_style1/sum23_stealth_bomber_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_stealth_bomber_style1" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum23_stealth_bomber_style2/sum23_stealth_bomber_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum23_stealth_bomber_style2" + } + } + } + } + "31380" + { + "name" "Taunt: Roar O'War" + "prefab" "no_craft taunt" + "first_sale_date" "2023/10/03" + "item_name" "#TF_taunt_roar_owar" + "item_description" "#TF_taunt_roar_owar_Desc" + "ad_text" "#TF_taunt_roar_owar_AdText" + "image_inventory" "backpack/workshop/player/items/demo/taunt_roar_owar/taunt_roar_owar" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "demoman" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_roar_owar.vcd" + } + "custom_taunt_prop_scene_per_class" + { + "demoman" "scenes/workshop/player/demoman/low/taunt_roar_owar_prop.vcd" + } + "custom_taunt_prop_per_class" + { + "demoman" "models/workshop/player/items/demo/taunt_roar_owar/taunt_roar_owar.mdl" + } + } + "attributes" + { + "taunt force weapon slot" + { + "attribute_class" "taunt_force_weapon_slot" + "value" "MELEE" + } + } + } + "31381" + { + "name" "Taunt: Neck Snap" + "prefab" "no_craft taunt" + "first_sale_date" "2023/10/03" + "item_name" "#TF_taunt_neck_snap" + "item_description" "#TF_taunt_neck_snap_Desc" + "ad_text" "#TF_taunt_neck_snap_AdText" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_neck_snap/taunt_neck_snap" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "taunt is press and hold" + { + "attribute_class" "enable_misc2_holdtaunt" + "value" "1" + } + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/workshop/player/soldier/low/taunt_neck_snap_intro.vcd" + } + "custom_partner_taunt_per_class" + { + "scout" + { + "1" "scenes/workshop/player/scout/low/taunt_neck_snap.vcd" + } + "sniper" + { + "1" "scenes/workshop/player/sniper/low/taunt_neck_snap.vcd" + } + "soldier" + { + "1" "scenes/workshop/player/soldier/low/taunt_neck_snap_initiator.vcd" + "2" "scenes/workshop/player/soldier/low/taunt_neck_snap.vcd" + } + "demoman" + { + "1" "scenes/workshop/player/demoman/low/taunt_neck_snap.vcd" + } + "medic" + { + "1" "scenes/workshop/player/medic/low/taunt_neck_snap.vcd" + } + "heavy" + { + "1" "scenes/workshop/player/heavy/low/taunt_neck_snap.vcd" + } + "spy" + { + "1" "scenes/workshop/player/spy/low/taunt_neck_snap.vcd" + } + "engineer" + { + "1" "scenes/workshop/player/engineer/low/taunt_neck_snap.vcd" + } + "pyro" + { + "1" "scenes/workshop/player/pyro/low/taunt_neck_snap.vcd" + } + } + "taunt_separation_forward_distance" "60" + "is_partner_taunt" "1" + } + } + "31382" + { + "name" "Taunt: Borrowed Bones" + "prefab" "no_craft taunt" + "first_sale_date" "2023/10/03" + "item_name" "#TF_taunt_borrowed_bones" + "item_description" "#TF_taunt_borrowed_bones_Desc" + "ad_text" "#TF_taunt_borrowed_bones_AdText" + "image_inventory" "backpack/workshop/player/items/medic/taunt_borrowed_bones/taunt_borrowed_bones" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "medic" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "medic" "scenes/workshop/player/medic/low/taunt_borrowed_bones.vcd" + } + "custom_taunt_prop_per_class" + { + "medic" "models/workshop/player/items/medic/taunt_borrowed_bones/taunt_borrowed_bones.mdl" + } + } + } + "31383" + { + "name" "Ludicrously Lunatic Lunon Fedora" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_lunatic_fedora_neon" + "item_description" "#TF_hwn2023_lunatic_fedora_neon_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2023_lunatic_fedora_neon/hwn2023_lunatic_fedora_neon" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2023_lunatic_fedora_neon/hwn2023_lunatic_fedora_neon_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31384" + { + "name" "Demonic Dome" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_demonic_dome" + "item_description" "#TF_hwn2023_demonic_dome_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2023_demonic_dome/hwn2023_demonic_dome" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2023_demonic_dome/hwn2023_demonic_dome_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31385" + { + "name" "The Mean Captain" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_meancaptain" + "item_description" "#TF_hwn2023_meancaptain_Desc" + "equip_region" "hat" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/hwn2023_meancaptain/hwn2023_meancaptain" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2023_meancaptain/hwn2023_meancaptain_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31386" + { + "name" "Clown's Cover-Up" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_clowns_coverup" + "item_description" "#TF_hwn2023_clowns_coverup_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_regions" + { + "face" "1" + "beard" "1" + } + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/all_class/hwn2023_clowns_coverup/hwn2023_clowns_coverup" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hwn2023_clowns_coverup/hwn2023_clowns_coverup_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2023_clowns_coverup_Style0" + "skin_red" "0" + "skin_blu" "1" + "additional_hidden_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "1" + { + "name" "#TF_hwn2023_clowns_coverup_Style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "31387" + { + "name" "Shortness Of Breath" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_shortness_breath" + "item_description" "#TF_hwn2023_shortness_breath_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2023_shortness_breath/hwn2023_shortness_breath" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2023_shortness_breath/hwn2023_shortness_breath.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_hwn2023_shortness_breath_Style0" + "additional_hidden_bodygroups" + { + "hat" "1" + } + } + "1" + { + "name" "#TF_hwn2023_shortness_breath_Style1" + } + } + } + } + "31388" + { + "name" "Warlock's Warcloak" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_warlocks_warcloak" + "item_description" "#TF_hwn2023_warlocks_warcloak_Desc" + "item_type_name" "#TF_Wearable_Cloak" + "equip_region" "necklace" + "image_inventory" "backpack/workshop/player/items/soldier/hwn2023_warlocks_warcloak/hwn2023_warlocks_warcloak" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/hwn2023_warlocks_warcloak/hwn2023_warlocks_warcloak.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31389" + { + "name" "Dead Heat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_dead_heat" + "item_description" "#TF_hwn2023_dead_heat_Desc" + "equip_region" "pyro_head_replacement" + "item_type_name" "#TF_Wearable_Mask" + "visuals" + { + "player_bodygroups" + { + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/hwn2023_dead_heat/hwn2023_dead_heat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2023_dead_heat/hwn2023_dead_heat.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31390" + { + "name" "Splitting Headache" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_splitting_headache" + "item_description" "#TF_hwn2023_splitting_headache_Desc" + "item_type_name" "#TF_Wearable_Headache" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2023_splitting_headache/hwn2023_splitting_headache" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2023_splitting_headache/hwn2023_splitting_headache.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31391" + { + "name" "Thunder Dome" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_thunder_dome" + "item_description" "#TF_hwn2023_thunder_dome_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/hwn2023_thunder_dome/hwn2023_thunder_dome" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2023_thunder_dome/hwn2023_thunder_dome.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/hwn2023_thunder_dome/hwn2023_thunder_dome.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_thunder_dome_style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/hwn2023_thunder_dome_style1/hwn2023_thunder_dome_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_thunder_dome_style1" + } + "2" + { + "model_player" "models/workshop/player/items/demo/hwn2023_thunder_dome_style2/hwn2023_thunder_dome_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_thunder_dome_style2" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31392" + { + "name" "Stunt Suit" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_stunt_suit" + "item_description" "#TF_hwn2023_stunt_suit_Desc" + "item_type_name" "#TF_Wearable_Suit" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/demo/hwn2023_stunt_suit/hwn2023_stunt_suit" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2023_stunt_suit/hwn2023_stunt_suit.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/hwn2023_stunt_suit/hwn2023_stunt_suit.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_stunt_suit_style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/hwn2023_stunt_suit_style1/hwn2023_stunt_suit_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_stunt_suit_style1" + } + "2" + { + "model_player" "models/workshop/player/items/demo/hwn2023_stunt_suit_style2/hwn2023_stunt_suit_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_stunt_suit_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31393" + { + "name" "Mad Lad" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_mad_lad" + "item_description" "#TF_hwn2023_mad_lad_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "grenades" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/hwn2023_mad_lad/hwn2023_mad_lad" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2023_mad_lad/hwn2023_mad_lad.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/hwn2023_mad_lad/hwn2023_mad_lad.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_mad_lad_style0" + } + "1" + { + "model_player" "models/workshop/player/items/demo/hwn2023_mad_lad_style1/hwn2023_mad_lad_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_mad_lad_style1" + } + } + } + } + "31394" + { + "name" "Dell Dynamic" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_dell_dynamic" + "item_description" "#TF_hwn2023_dell_dynamic_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/hwn2023_dell_dynamic/hwn2023_dell_dynamic" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2023_dell_dynamic/hwn2023_dell_dynamic.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31395" + { + "name" "Constructor's Cover" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_constructors_cover" + "item_description" "#TF_hwn2023_constructors_cover_Desc" + "item_type_name" "#TF_Wearable_Armor" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/hwn2023_constructors_cover/hwn2023_constructors_cover" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/engineer/hwn2023_constructors_cover/hwn2023_constructors_cover.mdl" + "used_by_classes" + { + "engineer" "1" + } + } + "31396" + { + "name" "Classic Criminal" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_classic_criminal" + "item_description" "#TF_hwn2023_classic_criminal_Desc" + "item_type_name" "#TF_Wearable_Balaclava" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/spy/hwn2023_classic_criminal/hwn2023_classic_criminal" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2023_classic_criminal/hwn2023_classic_criminal.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/hwn2023_classic_criminal/hwn2023_classic_criminal.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_classic_criminal_style0" + } + "1" + { + "model_player" "models/workshop/player/items/spy/hwn2023_classic_criminal_style1/hwn2023_classic_criminal_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_classic_criminal_style1" + } + "2" + { + "model_player" "models/workshop/player/items/spy/hwn2023_classic_criminal_style2/hwn2023_classic_criminal_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_classic_criminal_style2" + } + "3" + { + "model_player" "models/workshop/player/items/spy/hwn2023_classic_criminal_style3/hwn2023_classic_criminal_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_classic_criminal_style3" + } + "4" + { + "model_player" "models/workshop/player/items/spy/hwn2023_classic_criminal_style4/hwn2023_classic_criminal_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_classic_criminal_style4" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31397" + { + "name" "Concealed Convict" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_concealed_convict" + "item_description" "#TF_hwn2023_concealed_convict_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/hwn2023_concealed_convict/hwn2023_concealed_convict" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2023_concealed_convict/hwn2023_concealed_convict.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/hwn2023_concealed_convict/hwn2023_concealed_convict.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_concealed_convict_style0" + } + "1" + { + "model_player" "models/workshop/player/items/spy/hwn2023_concealed_convict_style1/hwn2023_concealed_convict_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_concealed_convict_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31398" + { + "name" "Six-Eyed Specs" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_six_eyed_specs" + "item_description" "#TF_hwn2023_six_eyed_specs_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/spy/hwn2023_six_eyed_specs/hwn2023_six_eyed_specs" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2023_six_eyed_specs/hwn2023_six_eyed_specs.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31399" + { + "name" "Medical Mummy" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_medical_mummy" + "item_description" "#TF_hwn2023_medical_mummy_Desc" + "item_type_name" "#TF_Wearable_Bandages" + "equip_region" "head_skin" + "image_inventory" "backpack/workshop/player/items/medic/hwn2023_medical_mummy/hwn2023_medical_mummy" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2023_medical_mummy/hwn2023_medical_mummy.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/hwn2023_medical_mummy/hwn2023_medical_mummy.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_medical_mummy_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/hwn2023_medical_mummy_style1/hwn2023_medical_mummy_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_medical_mummy_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31400" + { + "name" "The Main Cast" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_main_cast" + "item_description" "#TF_hwn2023_main_cast_Desc" + "item_type_name" "#TF_Wearable_Bandages" + "equip_region" "feet" + "image_inventory" "backpack/workshop/player/items/medic/hwn2023_main_cast/hwn2023_main_cast" + "propername" "1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2023_main_cast/hwn2023_main_cast.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/hwn2023_main_cast/hwn2023_main_cast.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_main_cast_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/hwn2023_main_cast_style1/hwn2023_main_cast_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_main_cast_style1" + } + "2" + { + "model_player" "models/workshop/player/items/medic/hwn2023_main_cast_style2/hwn2023_main_cast_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_main_cast_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31401" + { + "name" "Power Spike" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_power_spike" + "item_description" "#TF_hwn2023_power_spike_Desc" + "equip_region" "hat" + "item_type_name" "#TF_Wearable_Hair" + "image_inventory" "backpack/workshop/player/items/medic/hwn2023_power_spike/hwn2023_power_spike" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/hwn2023_power_spike/hwn2023_power_spike.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/hwn2023_power_spike/hwn2023_power_spike.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_power_spike_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/hwn2023_power_spike_style1/hwn2023_power_spike_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_power_spike_style1" + } + } + } + } + "31402" + { + "name" "Bare Bear Bones" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_bare_bear_bones" + "item_description" "#TF_hwn2023_bare_bear_bones_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2023_bare_bear_bones/hwn2023_bare_bear_bones" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2023_bare_bear_bones/hwn2023_bare_bear_bones.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31403" + { + "name" "The Make Ogre" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_make_ogre" + "item_description" "#TF_hwn2023_make_ogre_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "face" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/heavy/hwn2023_make_ogre/hwn2023_make_ogre" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/hwn2023_make_ogre/hwn2023_make_ogre.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31404" + { + "name" "Sightseer" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_sightseer" + "item_description" "#TF_hwn2023_sightseer_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/hwn2023_sightseer/hwn2023_sightseer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2023_sightseer/hwn2023_sightseer.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/hwn2023_sightseer/hwn2023_sightseer.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_sightseer_style0" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/hwn2023_sightseer_style1/hwn2023_sightseer_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_sightseer_style1" + } + } + } + } + "31405" + { + "name" "Sharpshooter's Shroud" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_sharpshooters_shroud" + "item_description" "#TF_hwn2023_sharpshooters_shroud_Desc" + "item_type_name" "#TF_Wearable_Shroud" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/hwn2023_sharpshooters_shroud/hwn2023_sharpshooters_shroud" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2023_sharpshooters_shroud/hwn2023_sharpshooters_shroud.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31406" + { + "name" "The Last Laugh" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_last_laugh" + "item_description" "#TF_hwn2023_last_laugh_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "face" + "drop_type" "drop" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2023_last_laugh/hwn2023_last_laugh" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2023_last_laugh/hwn2023_last_laugh.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/hwn2023_last_laugh/hwn2023_last_laugh.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_last_laugh_style0" + } + "1" + { + "model_player" "models/workshop/player/items/scout/hwn2023_last_laugh_style1/hwn2023_last_laugh_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_last_laugh_style1" + } + } + } + } + "31407" + { + "name" "Jumping Jester" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_jumping_jester" + "item_description" "#TF_hwn2023_jumping_jester_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/hwn2023_jumping_jester/hwn2023_jumping_jester" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/hwn2023_jumping_jester/hwn2023_jumping_jester.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31408" + { + "name" "Blastphomet" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_blastphomet" + "item_description" "#TF_hwn2023_blastphomet_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" + { + "whole_head" "1" + "head_skin" "1" + } + "holiday_restriction" "halloween_or_fullmoon" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/hwn2023_blastphomet/hwn2023_blastphomet" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/hwn2023_blastphomet/hwn2023_blastphomet.mdl" + "used_by_classes" + { + "demoman" "1" + } + } + "31409" + { + "name" "Spyder" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_spyder" + "item_description" "#TF_hwn2023_spyder_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "pants" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/spy/hwn2023_spyder/hwn2023_spyder" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/spy/hwn2023_spyder/hwn2023_spyder.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31410" + { + "name" "Carry-Van" + "prefab" "no_craft misc marketable" + "item_name" "#TF_hwn2023_carry_van" + "item_description" "#TF_hwn2023_carry_van_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "belt_misc" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/sniper/hwn2023_carry_van/hwn2023_carry_van" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/sniper/hwn2023_carry_van/hwn2023_carry_van.mdl" + "used_by_classes" + { + "sniper" "1" + } + } + "31411" + { + "name" "Fiercesome Fluorescence" + "prefab" "no_craft hat marketable" + "item_name" "#TF_hwn2023_fiercesome_fluorescence" + "item_description" "#TF_hwn2023_fiercesome_fluorescence_Desc" + "item_type_name" "#TF_Wearable_Costume" + "equip_region" "hat" + "holiday_restriction" "halloween_or_fullmoon" + "image_inventory" "backpack/workshop/player/items/pyro/hwn2023_fiercesome_fluorescence/hwn2023_fiercesome_fluorescence" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/hwn2023_fiercesome_fluorescence/hwn2023_fiercesome_fluorescence.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/hwn2023_fiercesome_fluorescence/hwn2023_fiercesome_fluorescence.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_fiercesome_fluorescence_style0" + "additional_hidden_bodygroups" + { + "head" "1" + } + } + "1" + { + "model_player" "models/workshop/player/items/pyro/hwn2023_fiercesome_fluorescence_style1/hwn2023_fiercesome_fluorescence_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_hwn2023_fiercesome_fluorescence_style1" + } + } + } + } + "31412" + { + "name" "Taunt: Cheers!" + "prefab" "no_craft taunt" + "first_sale_date" "2023/12/02" + "item_name" "#TF_taunt_cheers" + "item_description" "#TF_taunt_cheers_Desc" + "ad_text" "#TF_taunt_cheers_AdText" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_cheers/taunt_cheers" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_cheers.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_cheers.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_cheers.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_cheers.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_cheers.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_cheers.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_cheers.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_cheers.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_cheers.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_scout.mdl" + "sniper" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_sniper.mdl" + "soldier" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_soldier.mdl" + "demoman" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_demo.mdl" + "medic" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_medic.mdl" + "heavy" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_heavy.mdl" + "pyro" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_pyro.mdl" + "spy" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_spy.mdl" + "engineer" "models/workshop/player/items/all_class/taunt_cheers/taunt_cheers_engineer.mdl" + } + "custom_taunt_prop_scene_per_class" + { + "engineer" "scenes/workshop/player/engineer/low/taunt_cheers_prop.vcd" + } + } + } + "31413" + { + "name" "Taunt: Mourning Mercs" + "prefab" "no_craft taunt" + "first_sale_date" "2023/12/02" + "item_name" "#TF_taunt_mourning_mercs" + "item_description" "#TF_taunt_mourning_mercs_Desc" + "ad_text" "#TF_taunt_mourning_mercs_AdText" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_mourning_mercs/taunt_mourning_mercs" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_mourning_mercs.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_mourning_mercs.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_mourning_mercs.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_mourning_mercs.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_mourning_mercs.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_mourning_mercs.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_mourning_mercs.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_mourning_mercs.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_mourning_mercs.vcd" + } + } + } + "31414" + { + "name" "Taunt: Foul Play" + "prefab" "no_craft taunt" + "first_sale_date" "2023/12/02" + "item_name" "#TF_taunt_foul_play" + "item_description" "#TF_taunt_foul_play_Desc" + "ad_text" "#TF_taunt_foul_play_AdText" + "image_inventory" "backpack/workshop/player/items/scout/taunt_foul_play/taunt_foul_play" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_foul_play.vcd" + } + "custom_taunt_prop_per_class" + { + "scout" "models/workshop/player/items/scout/taunt_foul_play/taunt_foul_play.mdl" + } + } + } + "31415" + { + "name" "Boarder's Beanie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_boarders_beanie" + "item_description" "#TF_dec23_boarders_beanie_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec23_boarders_beanie/dec23_boarders_beanie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_boarders_beanie/dec23_boarders_beanie_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_boarders_beanie/dec23_boarders_beanie_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_boarders_beanie_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_boarders_beanie_style2/dec23_boarders_beanie_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_boarders_beanie_style2" + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_boarders_beanie_style3/dec23_boarders_beanie_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_boarders_beanie_style3" + } + } + } + } + "31416" + { + "name" "Cozy Cover-Up" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_cozy_coverup" + "item_description" "#TF_dec23_cozy_coverup_Desc" + "item_type_name" "#TF_Wearable_Apparel" + "equip_regions" + { + "necklace" "1" + "ears" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/dec23_cozy_coverup/dec23_cozy_coverup" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_cozy_coverup/dec23_cozy_coverup_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_cozy_coverup/dec23_cozy_coverup_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_cozy_coverup_style1" + "additional_hidden_bodygroups" + { + "dogtags" "1" + "headphones" "1" + } + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_cozy_coverup_style2/dec23_cozy_coverup_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_cozy_coverup_style2" + "additional_hidden_bodygroups" + { + "headphones" "1" + } + } + "2" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_cozy_coverup_style3/dec23_cozy_coverup_style3_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_cozy_coverup_style3" + "additional_hidden_bodygroups" + { + "dogtags" "1" + } + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31417" + { + "name" "The Dapper Dickens" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_dapper_dickens" + "item_description" "#TF_dec23_dapper_dickens_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/dec23_dapper_dickens/dec23_dapper_dickens" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_dapper_dickens/dec23_dapper_dickens_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_dapper_dickens/dec23_dapper_dickens_%s.mdl" + } + "name" "#TF_dec23_dapper_dickens_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/dec23_dapper_dickens_style2/dec23_dapper_dickens_style2_%s.mdl" + } + "name" "#TF_dec23_dapper_dickens_style2" + } + } + } + } + "31418" + { + "name" "Trench Warefarer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_trench_warefarer" + "item_description" "#TF_dec23_trench_warefarer_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "soldier_coat" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec23_trench_warefarer/dec23_trench_warefarer" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec23_trench_warefarer/dec23_trench_warefarer.mdl" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31419" + { + "name" "Wanderer's Wool" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_wanderers_wool" + "item_description" "#TF_dec23_wanderers_wool_Desc" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/soldier/dec23_wanderers_wool/dec23_wanderers_wool" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool/dec23_wanderers_wool.mdl" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool/dec23_wanderers_wool.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_wanderers_wool_style1" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool_style2/dec23_wanderers_wool_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_wanderers_wool_style2" + } + "2" + { + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool_style3/dec23_wanderers_wool_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_wanderers_wool_style3" + } + "3" + { + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool_style4/dec23_wanderers_wool_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_wanderers_wool_style4" + } + "4" + { + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool_style5/dec23_wanderers_wool_style5.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_wanderers_wool_style5" + } + "5" + { + "model_player" "models/workshop/player/items/soldier/dec23_wanderers_wool_style6/dec23_wanderers_wool_style6.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_wanderers_wool_style6" + } + } + } + } + "31420" + { + "name" "The Puffed Practitioner" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_puffed_practitioner" + "item_description" "#TF_dec23_puffed_practitioner_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/dec23_puffed_practitioner/dec23_puffed_practitioner" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec23_puffed_practitioner/dec23_puffed_practitioner.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31421" + { + "name" "The Frigid Fashion" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_frigid_fashion" + "item_description" "#TF_dec23_frigid_fashion_Desc" + "equip_regions" + { + "hat" "1" + "ears" "1" + "glasses" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/dec23_frigid_fashion/dec23_frigid_fashion" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/dec23_frigid_fashion/dec23_frigid_fashion.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/dec23_frigid_fashion/dec23_frigid_fashion.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/medic/dec23_frigid_fashion_style2/dec23_frigid_fashion_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + } + "31422" + { + "name" "Nightcap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_nightcap" + "item_description" "#TF_dec23_nightcap_Desc" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/demo/dec23_nightcap/dec23_nightcap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec23_nightcap/dec23_nightcap.mdl" + "used_by_classes" + { + "demoman" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/demo/dec23_nightcap/dec23_nightcap.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_nightcap_style1" + } + "1" + { + "model_player" "models/workshop/player/items/demo/dec23_nightcap_style2/dec23_nightcap_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_nightcap_style2" + } + } + } + } + "31423" + { + "name" "Lazy Lounger" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_lazy_lounger" + "item_description" "#TF_dec23_lazy_lounger_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/demo/dec23_lazy_lounger/dec23_lazy_lounger" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec23_lazy_lounger/dec23_lazy_lounger.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31424" + { + "name" "Slumber Slacks" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_slumber_slacks" + "item_description" "#TF_dec23_slumber_slacks_Desc" + "item_type_name" "#TF_Wearable_PantsSlippers" + "equip_regions" + { + "pants" "1" + "feet" "1" + } + "visuals" + { + "player_bodygroups" + { + "shoes" "1" + } + } + "image_inventory" "backpack/workshop/player/items/demo/dec23_slumber_slacks/dec23_slumber_slacks" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/demo/dec23_slumber_slacks/dec23_slumber_slacks.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31425" + { + "name" "Clue Hairdo" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_clue_hairdo" + "item_description" "#TF_dec23_clue_hairdo_Desc" + "item_type_name" "#TF_Wearable_Hair" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/dec23_clue_hairdo/dec23_clue_hairdo" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec23_clue_hairdo/dec23_clue_hairdo.mdl" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/dec23_clue_hairdo/dec23_clue_hairdo.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_clue_hairdo_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/dec23_clue_hairdo_style2/dec23_clue_hairdo_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_clue_hairdo_style2" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/dec23_clue_hairdo_style3/dec23_clue_hairdo_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "use_smoke_particle_effect" "0" + "name" "#TF_dec23_clue_hairdo_style3" + } + } + } + } + "31426" + { + "name" "Sleuth Suit" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_sleuth_suit" + "item_description" "#TF_dec23_sleuth_suit_Desc" + "item_type_name" "#TF_Wearable_Suit" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/dec23_sleuth_suit/dec23_sleuth_suit" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/dec23_sleuth_suit/dec23_sleuth_suit.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/dec23_sleuth_suit/dec23_sleuth_suit.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_sleuth_suit_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/dec23_sleuth_suit_style2/dec23_sleuth_suit_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_sleuth_suit_style2" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/dec23_sleuth_suit_style3/dec23_sleuth_suit_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_sleuth_suit_style3" + } + "3" + { + "model_player" "models/workshop/player/items/engineer/dec23_sleuth_suit_style4/dec23_sleuth_suit_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_sleuth_suit_style4" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31427" + { + "name" "Strasbourg Scholar" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_strasbourg_scholar" + "item_description" "#TF_dec23_strasbourg_scholar_Desc" + "item_type_name" "#TF_Wearable_Suit" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/dec23_strasbourg_scholar/dec23_strasbourg_scholar" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec23_strasbourg_scholar/dec23_strasbourg_scholar.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/dec23_strasbourg_scholar/dec23_strasbourg_scholar.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_strasbourg_scholar_style1" + } + "1" + { + "model_player" "models/workshop/player/items/spy/dec23_strasbourg_scholar_style2/dec23_strasbourg_scholar_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_strasbourg_scholar_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31428" + { + "name" "The Covert Covers" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_covert_covers" + "item_description" "#TF_dec23_covert_covers_Desc" + "equip_regions" + { + "hat" "1" + "face" "1" + "necklace" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/spy/dec23_covert_covers/dec23_covert_covers" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/dec23_covert_covers/dec23_covert_covers.mdl" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31429" + { + "name" "Scruffed 'n Stitched" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_scruffed_stitched" + "item_description" "#TF_dec23_scruffed_stitched_Desc" + "equip_regions" + { + "hat" "1" + "beard" "1" + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/sniper/dec23_scruffed_stitched/dec23_scruffed_stitched" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec23_scruffed_stitched/dec23_scruffed_stitched.mdl" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "attach particle effect static" + { + "attribute_class" "set_attached_particle_static" + "value" "28" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/sniper/dec23_scruffed_stitched/dec23_scruffed_stitched.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_scruffed_stitched_style1" + } + "1" + { + "model_player" "models/workshop/player/items/sniper/dec23_scruffed_stitched_style2/dec23_scruffed_stitched_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_scruffed_stitched_style2" + } + } + } + } + "31430" + { + "name" "Rugged Rags" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_rugged_rags" + "item_description" "#TF_dec23_rugged_rags_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "sniper_vest" + "image_inventory" "backpack/workshop/player/items/sniper/dec23_rugged_rags/dec23_rugged_rags" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/dec23_rugged_rags/dec23_rugged_rags.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31431" + { + "name" "Masked Loyalty" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_masked_loyalty" + "item_description" "#TF_dec23_masked_loyalty_Desc" + "item_type_name" "#TF_Wearable_Mask" + "equip_region" "pyro_head_replacement" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + "head" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec23_masked_loyalty/dec23_masked_loyalty" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec23_masked_loyalty/dec23_masked_loyalty.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/dec23_masked_loyalty/dec23_masked_loyalty.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/dec23_masked_loyalty_style2/dec23_masked_loyalty_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + "2" + { + "model_player" "models/workshop/player/items/pyro/dec23_masked_loyalty_style3/dec23_masked_loyalty_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style2" + } + } + } + } + "31432" + { + "name" "Impact Impaler" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_impact_impaler" + "item_description" "#TF_dec23_impact_impaler_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "drop_type" "drop" + "image_inventory" "backpack/workshop/player/items/pyro/dec23_impact_impaler/dec23_impact_impaler" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec23_impact_impaler/dec23_impact_impaler.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/dec23_impact_impaler/dec23_impact_impaler.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/dec23_impact_impaler_style2/dec23_impact_impaler_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31433" + { + "name" "Torcher's Trench Coat" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_torchers_trench_coat" + "item_description" "#TF_dec23_torchers_trench_coat_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "grenades" "1" + } + } + "image_inventory" "backpack/workshop/player/items/pyro/dec23_torchers_trench_coat/dec23_torchers_trench_coat" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/dec23_torchers_trench_coat/dec23_torchers_trench_coat.mdl" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31434" + { + "name" "Balkan's Brute" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_balkans_brute" + "item_description" "#TF_dec23_balkans_brute_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/dec23_balkans_brute/dec23_balkans_brute" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/heavy/dec23_balkans_brute/dec23_balkans_brute.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31435" + { + "name" "Bigger Mann on Campus" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_bigger_mann" + "item_description" "#TF_dec23_bigger_mann_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/dec23_bigger_mann/dec23_bigger_mann" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/dec23_bigger_mann/dec23_bigger_mann.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31436" + { + "name" "Isotopic Insulator" + "prefab" "no_craft misc marketable" + "item_name" "#TF_dec23_isotopic_insulator" + "item_description" "#TF_dec23_isotopic_insulator_Desc" + "item_type_name" "#TF_Wearable_Coat" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec23_isotopic_insulator/dec23_isotopic_insulator" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec23_isotopic_insulator/dec23_isotopic_insulator.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31437" + { + "name" "Bonk Beanie" + "prefab" "no_craft hat marketable" + "item_name" "#TF_dec23_bonk_beanie" + "item_description" "#TF_dec23_bonk_beanie_Desc" + "equip_region" "hat" + "drop_type" "drop" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/dec23_bonk_beanie/dec23_bonk_beanie" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/dec23_bonk_beanie/dec23_bonk_beanie.mdl" + "used_by_classes" + { + "scout" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/scout/dec23_bonk_beanie/dec23_bonk_beanie.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_bonk_beanie_style1" + } + "1" + { + "model_player" "models/workshop/player/items/scout/dec23_bonk_beanie_style2/dec23_bonk_beanie_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_dec23_bonk_beanie_style2" + } + } + } + } + "31438" + { + "name" "Taunt: Can It!" + "prefab" "no_craft taunt" + "first_sale_date" "2024/07/16" + "item_name" "#TF_tauntcan_it" + "item_description" "#TF_tauntcan_it_Desc" + "ad_text" "#TF_tauntcan_it_AdText" + "image_inventory" "backpack/workshop/player/items/soldier/tauntcan_it/tauntcan_it" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "soldier" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "soldier" "scenes/workshop/player/soldier/low/tauntcan_it.vcd" + } + "custom_taunt_prop_per_class" + { + "soldier" "models/workshop/player/items/soldier/tauntcan_it/tauntcan_it.mdl" + } + } + } + "31439" + { + "name" "Taunt: Cremator's Condolences" + "prefab" "no_craft taunt" + "first_sale_date" "2024/07/16" + "item_name" "#TF_taunt_cremators_condolences" + "item_description" "#TF_taunt_cremators_condolences_Desc" + "ad_text" "#TF_taunt_cremators_condolences_AdText" + "image_inventory" "backpack/workshop/player/items/pyro/taunt_cremators_condolences/taunt_cremators_condolences" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "pyro" "scenes/workshop/player/pyro/low/taunt_cremators_condolences.vcd" + } + "custom_taunt_prop_per_class" + { + "pyro" "models/workshop/player/items/pyro/taunt_cremators_condolences/taunt_cremators_condolences.mdl" + } + } + } + "31440" + { + "name" "Taunt: Straight Shooter Tutor" + "prefab" "no_craft taunt" + "first_sale_date" "2024/07/16" + "item_name" "#TF_taunt_straight_shooter_tutor" + "item_description" "#TF_taunt_straight_shooter_tutor_Desc" + "ad_text" "#TF_taunt_straight_shooter_tutor_AdText" + "image_inventory" "backpack/workshop/player/items/sniper/taunt_straight_shooter_tutor/taunt_straight_shooter_tutor" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "sniper" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "sniper" "scenes/workshop/player/sniper/low/taunt_straight_shooter_tutor.vcd" + } + "custom_taunt_prop_per_class" + { + "sniper" "models/workshop/player/items/sniper/taunt_straight_shooter_tutor/taunt_straight_shooter_tutor.mdl" + } + } + } + "31441" + { + "name" "Taunt: Unleashed Rage" + "prefab" "no_craft taunt" + "first_sale_date" "2024/07/16" + "item_name" "#TF_taunt_unleashed_rage" + "item_description" "#TF_taunt_unleashed_rage_Desc" + "ad_text" "#TF_taunt_unleashed_rage_AdText" + "image_inventory" "backpack/workshop/player/items/all_class/taunt_unleashed_rage/taunt_unleashed_rage" + "capabilities" + { + "can_craft_count" "1" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "taunt" + { + "custom_taunt_scene_per_class" + { + "scout" "scenes/workshop/player/scout/low/taunt_unleashed_rage.vcd" + "sniper" "scenes/workshop/player/sniper/low/taunt_unleashed_rage.vcd" + "soldier" "scenes/workshop/player/soldier/low/taunt_unleashed_rage.vcd" + "demoman" "scenes/workshop/player/demoman/low/taunt_unleashed_rage.vcd" + "medic" "scenes/workshop/player/medic/low/taunt_unleashed_rage.vcd" + "heavy" "scenes/workshop/player/heavy/low/taunt_unleashed_rage.vcd" + "pyro" "scenes/workshop/player/pyro/low/taunt_unleashed_rage.vcd" + "spy" "scenes/workshop/player/spy/low/taunt_unleashed_rage.vcd" + "engineer" "scenes/workshop/player/engineer/low/taunt_unleashed_rage.vcd" + } + } + } + "31442" + { + "name" "Botler 2000" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_botler_2000" + "item_description" "#TF_sum24_botler_2000_Desc" + "item_type_name" "#TF_Wearable_Butler" + "equip_region" "disconnected_floating_item" + "image_inventory" "backpack/workshop/player/items/all_class/sum24_botler_2000_style1/sum24_botler_2000_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum24_botler_2000_style1/sum24_botler_2000_style1_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "attributes" + { + "counts as assister is some kind of pet this update is going to be awesome" + { + "attribute_class" "counts_as_assister" + "value" "1" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum24_botler_2000_style1/sum24_botler_2000_style1_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_botler_2000_style1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum24_botler_2000_style2/sum24_botler_2000_style2_%s.mdl" + } + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_botler_2000_style2" + } + } + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "31443" + { + "name" "The Brand Loyalist" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_brand_loyalist" + "item_description" "#TF_sum24_brand_loyalist_Desc" + "equip_region" "hat" + "propername" "1" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/all_class/sum24_brand_loyalist/sum24_brand_loyalist" + "capabilities" + { + "can_craft_count" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sum24_brand_loyalist/sum24_brand_loyalist_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + } + "31444" + { + "name" "Desk Engineer" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_desk_engineer" + "item_description" "#TF_sum24_desk_engineer_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/engineer/sum24_desk_engineer_style1/sum24_desk_engineer_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum24_desk_engineer_style1/sum24_desk_engineer_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/sum24_desk_engineer_style1/sum24_desk_engineer_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_desk_engineer_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/sum24_desk_engineer_style2/sum24_desk_engineer_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_desk_engineer_style2" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/sum24_desk_engineer_style3/sum24_desk_engineer_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_desk_engineer_style3" + } + "3" + { + "model_player" "models/workshop/player/items/engineer/sum24_desk_engineer_style4/sum24_desk_engineer_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_desk_engineer_style4" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31445" + { + "name" "Daring Dell" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_daring_dell" + "item_description" "#TF_sum24_daring_dell_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + } + } + "image_inventory" "backpack/workshop/player/items/engineer/sum24_daring_dell_style1/sum24_daring_dell_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum24_daring_dell_style1/sum24_daring_dell_style1.mdl" + "used_by_classes" + { + "engineer" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/engineer/sum24_daring_dell_style1/sum24_daring_dell_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_daring_dell_style1" + } + "1" + { + "model_player" "models/workshop/player/items/engineer/sum24_daring_dell_style2/sum24_daring_dell_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_daring_dell_style2" + } + "2" + { + "model_player" "models/workshop/player/items/engineer/sum24_daring_dell_style3/sum24_daring_dell_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_daring_dell_style3" + } + "3" + { + "model_player" "models/workshop/player/items/engineer/sum24_daring_dell_style4/sum24_daring_dell_style4.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_daring_dell_style4" + } + } + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31446" + { + "name" "The Big Star" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_big_star" + "item_description" "#TF_sum24_big_star_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/engineer/sum24_big_star/sum24_big_star" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/engineer/sum24_big_star/sum24_big_star.mdl" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31447" + { + "name" "Sneaky Blinder" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_sneaky_blinder" + "item_description" "#TF_sum24_sneaky_blinder_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/spy/sum24_sneaky_blinder/sum24_sneaky_blinder" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum24_sneaky_blinder/sum24_sneaky_blinder.mdl" + "used_by_classes" + { + "spy" "1" + } + } + "31448" + { + "name" "Tuxedo Royale" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_tuxedo_royale" + "item_description" "#TF_sum24_tuxedo_royale_Desc" + "item_type_name" "#TF_Wearable_Tuxedo" + "equip_region" "spy_coat" + "image_inventory" "backpack/workshop/player/items/spy/sum24_tuxedo_royale_style1/sum24_tuxedo_royale_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/spy/sum24_tuxedo_royale_style1/sum24_tuxedo_royale_style1.mdl" + "used_by_classes" + { + "spy" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/spy/sum24_tuxedo_royale_style1/sum24_tuxedo_royale_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_tuxedo_royale_style1" + } + "1" + { + "model_player" "models/workshop/player/items/spy/sum24_tuxedo_royale_style2/sum24_tuxedo_royale_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_tuxedo_royale_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31449" + { + "name" "Control Patrol" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_control_patrol" + "item_description" "#TF_sum24_control_patrol_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "image_inventory" "backpack/workshop/player/items/soldier/sum24_control_patrol_style1/sum24_control_patrol_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum24_control_patrol_style1/sum24_control_patrol_style1.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sum24_control_patrol_style1/sum24_control_patrol_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum24_control_patrol_style2/sum24_control_patrol_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + } + "31450" + { + "name" "Pathfinder" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_pathfinder" + "item_description" "#TF_sum24_pathfinder_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "soldier_coat" + "image_inventory" "backpack/workshop/player/items/soldier/sum24_pathfinder_style1/sum24_pathfinder_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum24_pathfinder_style1/sum24_pathfinder_style1.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sum24_pathfinder_style1/sum24_pathfinder_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum24_pathfinder_style2/sum24_pathfinder_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31451" + { + "name" "Justice Johns" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_justice_johns" + "item_description" "#TF_sum24_justice_johns_Desc" + "item_type_name" "#TF_Wearable_Shorts" + "equip_region" "soldier_legs" + "image_inventory" "backpack/workshop/player/items/soldier/sum24_justice_johns_style1/sum24_justice_johns_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/soldier/sum24_justice_johns_style1/sum24_justice_johns_style1.mdl" + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/soldier/sum24_justice_johns_style1/sum24_justice_johns_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style0" + } + "1" + { + "model_player" "models/workshop/player/items/soldier/sum24_justice_johns_style2/sum24_justice_johns_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_style1" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31452" + { + "name" "Crook's Cap" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_crooks_cap" + "item_description" "#TF_sum24_crooks_cap_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/heavy/sum24_crooks_cap/sum24_crooks_cap" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum24_crooks_cap/sum24_crooks_cap.mdl" + "used_by_classes" + { + "heavy" "1" + } + } + "31453" + { + "name" "Brute's Braces" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_brutes_braces" + "item_description" "#TF_sum24_brutes_braces_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/heavy/sum24_brutes_braces/sum24_brutes_braces" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/heavy/sum24_brutes_braces/sum24_brutes_braces.mdl" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31454" + { + "name" "Free Mann's Fashion" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_free_fashion" + "item_description" "#TF_sum24_free_fashion_Desc" + "item_type_name" "#TF_Wearable_Glasses" + "image_inventory" "backpack/workshop/player/items/medic/sum24_free_fashion_style1/sum24_free_fashion_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum24_free_fashion_style1/sum24_free_fashion_style1.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/sum24_free_fashion_style1/sum24_free_fashion_style1.mdl" + "name" "#TF_sum24_free_fashion_style1" + } + "1" + { + "model_player" "models/workshop/player/items/medic/sum24_free_fashion_style2/sum24_free_fashion_style2.mdl" + "name" "#TF_sum24_free_fashion_style2" + } + "2" + { + "model_player" "models/workshop/player/items/medic/sum24_free_fashion_style3/sum24_free_fashion_style3.mdl" + "name" "#TF_sum24_free_fashion_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31455" + { + "name" "Hazardous Environment Vest" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_hazardous_vest" + "item_description" "#TF_sum24_hazardous_vest_Desc" + "item_type_name" "#TF_Wearable_Vest" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sum24_hazardous_vest/sum24_hazardous_vest" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum24_hazardous_vest/sum24_hazardous_vest.mdl" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "31456" + { + "name" "The Tropical Brim" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_tropical_brim" + "item_description" "#TF_sum24_tropical_brim_Desc" + "equip_regions" + { + "hat" "1" + "glasses" "1" + } + "propername" "1" + "image_inventory" "backpack/workshop/player/items/medic/sum24_tropical_brim_style1/sum24_tropical_brim_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum24_tropical_brim_style1/sum24_tropical_brim_style1.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/sum24_tropical_brim_style1/sum24_tropical_brim_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_tropical_brim_style1" + } + "1" + { + "model_player" "models/workshop/player/items/medic/sum24_tropical_brim_style2/sum24_tropical_brim_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_tropical_brim_style2" + } + } + } + } + "31457" + { + "name" "Watchmann's Wetsuit" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_watchmanns" + "item_description" "#TF_sum24_watchmanns_Desc" + "item_type_name" "#TF_Wearable_Shirt" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/medic/sum24_watchmanns_style1/sum24_watchmanns_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/medic/sum24_watchmanns_style1/sum24_watchmanns_style1.mdl" + "used_by_classes" + { + "medic" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/medic/sum24_watchmanns_style1/sum24_watchmanns_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_watchmanns_style1" + } + "1" + { + "model_player" "models/workshop/player/items/medic/sum24_watchmanns_style2/sum24_watchmanns_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_watchmanns_style2" + } + "2" + { + "model_player" "models/workshop/player/items/medic/sum24_watchmanns_style3/sum24_watchmanns_style3.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_watchmanns_style3" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31458" + { + "name" "The Aimframe" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_aimframe" + "item_description" "#TF_sum24_aimframe_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/sniper/sum24_aimframe/sum24_aimframe" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/sniper/sum24_aimframe/sum24_aimframe.mdl" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31459" + { + "name" "Commonwealth Commando" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_commonwealth" + "item_description" "#TF_sum24_commonwealth_Desc" + "equip_region" "hat" + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum24_commonwealth/sum24_commonwealth" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum24_commonwealth/sum24_commonwealth.mdl" + "used_by_classes" + { + "scout" "1" + } + } + "31460" + { + "name" "Tanker's Top" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_tankers_top" + "item_description" "#TF_sum24_tankers_top_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "visuals" + { + "player_bodygroups" + { + "dogtags" "1" + } + } + "image_inventory" "backpack/workshop/player/items/scout/sum24_tankers_top/sum24_tankers_top" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/scout/sum24_tankers_top/sum24_tankers_top.mdl" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31461" + { + "name" "The Vaudeville Visor" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_vaudeville_visor" + "item_description" "#TF_sum24_vaudeville_visor_Desc" + "item_type_name" "#TF_Wearable_Helmet" + "equip_region" "hat" + "propername" "1" + "image_inventory" "backpack/workshop/player/items/demo/sum24_vaudeville_visor/sum24_vaudeville_visor" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/demo/sum24_vaudeville_visor/sum24_vaudeville_visor.mdl" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_helmet_pickup.wav" + "drop_sound" "ui/item_helmet_drop.wav" + } + "31462" + { + "name" "Fire Marshal" + "prefab" "no_craft hat marketable" + "item_name" "#TF_sum24_fire_marshal" + "item_description" "#TF_sum24_fire_marshal_Desc" + "equip_region" "hat" + "image_inventory" "backpack/workshop/player/items/pyro/sum24_fire_marshal/sum24_fire_marshal" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum24_fire_marshal/sum24_fire_marshal.mdl" + "used_by_classes" + { + "pyro" "1" + } + } + "31463" + { + "name" "Invisible Flame" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_invisible_flame" + "item_description" "#TF_sum24_invisible_flame_Desc" + "item_type_name" "#TF_Wearable_Jacket" + "equip_region" "shirt" + "image_inventory" "backpack/workshop/player/items/pyro/sum24_invisible_flame_style1/sum24_invisible_flame_style1" + "capabilities" + { + "can_craft_count" "1" + "paintable" "1" + } + "model_player" "models/workshop/player/items/pyro/sum24_invisible_flame_style1/sum24_invisible_flame_style1.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/sum24_invisible_flame_style1/sum24_invisible_flame_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_invisible_flame_style1" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/sum24_invisible_flame_style2/sum24_invisible_flame_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_invisible_flame_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "31464" + { + "name" "Scorched Earth Stompers" + "prefab" "no_craft misc marketable" + "item_name" "#TF_sum24_scorched_stompers" + "item_description" "#TF_sum24_scorched_stompers_Desc" + "item_type_name" "#TF_Wearable_Pants" + "equip_region" "pants" + "image_inventory" "backpack/workshop/player/items/pyro/sum24_scorched_stompers_style1/sum24_scorched_stompers_style1" + "capabilities" + { + "can_craft_count" "1" + } + "model_player" "models/workshop/player/items/pyro/sum24_scorched_stompers_style1/sum24_scorched_stompers_style1.mdl" + "used_by_classes" + { + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "model_player" "models/workshop/player/items/pyro/sum24_scorched_stompers_style1/sum24_scorched_stompers_style1.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_scorched_stompers_style1" + } + "1" + { + "model_player" "models/workshop/player/items/pyro/sum24_scorched_stompers_style2/sum24_scorched_stompers_style2.mdl" + "skin_red" "0" + "skin_blu" "1" + "name" "#TF_sum24_scorched_stompers_style2" + } + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + + + + + "496" + { + "name" "TournamentMedal - GWJ Winners" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GWJ_1st" + "item_description" "#TF_TournamentMedal_Winners_Desc" + "image_inventory" "backpack/player/items/all_class/weiner_bomb_medal" + "model_player" "models/player/items/all_class/weiner_bomb_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "497" + { + "name" "TournamentMedal - GWJ Runnerups" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GWJ_2nd" + "item_description" "#TF_TournamentMedal_Runnerups_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/weiner_bomb_run" + "model_player" "models/player/items/all_class/weiner_bomb_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "498" + { + "name" "TournamentMedal - GWJ Participants" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GWJ_3rd" + "item_description" "#TF_TournamentMedal_Participants_Desc" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/player/items/all_class/weiner_bomb_part" + "model_player" "models/player/items/all_class/weiner_bomb_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "499" + { + "name" "TournamentMedal - ETF2LHL Winners" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2LHL_1st" + "item_description" "#TF_TournamentMedal_Winners_Desc" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_medal" + "model_player" "models/player/items/all_class/etf2l_highlander_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "500" + { + "name" "TournamentMedal - ETF2LHL 2nd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2LHL_2nd" + "item_description" "#TF_TournamentMedal_2nd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_medal_1" + "model_player" "models/player/items/all_class/etf2l_highlander_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "501" + { + "name" "TournamentMedal - ETF2LHL 3rd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2LHL_3rd" + "item_description" "#TF_TournamentMedal_3rd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_medal_2" + "model_player" "models/player/items/all_class/etf2l_highlander_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "502" + { + "name" "TournamentMedal - ETF2LHL Participants" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2LHL_4th" + "item_description" "#TF_TournamentMedal_Participants_Desc" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant" + "model_player" "models/player/items/all_class/etf2l_highlander_participant.mdl" + } + "503" + { + "name" "TournamentMedal - UGCHL Participants" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Participant" + "item_description" "#TF_TournamentMedal_Participants_Desc" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_participant" + "model_player" "models/player/items/all_class/ugc_highlander_participant.mdl" + } + "504" + { + "name" "TournamentMedal - UGCHLDiv1 Winners" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Winners_Desc" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_platinum" + "model_player" "models/player/items/all_class/ugc_highlander_platinum.mdl" + "visuals" + { + "skin" "0" + } + } + "505" + { + "name" "TournamentMedal - UGCHLDiv1 2nd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_2nd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_platinum_1" + "model_player" "models/player/items/all_class/ugc_highlander_platinum.mdl" + "visuals" + { + "skin" "1" + } + } + "506" + { + "name" "TournamentMedal - UGCHLDiv1 3rd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_3rd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_platinum_2" + "model_player" "models/player/items/all_class/ugc_highlander_platinum.mdl" + "visuals" + { + "skin" "2" + } + } + "507" + { + "name" "TournamentMedal - UGCHLDiv2 Winners" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Winners_Desc" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_silver" + "model_player" "models/player/items/all_class/ugc_highlander_silver.mdl" + "visuals" + { + "skin" "0" + } + } + "508" + { + "name" "TournamentMedal - UGCHLDiv2 2nd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_2nd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_silver_1" + "model_player" "models/player/items/all_class/ugc_highlander_silver.mdl" + "visuals" + { + "skin" "1" + } + } + "509" + { + "name" "TournamentMedal - UGCHLDiv2 3rd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_3rd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_silver_2" + "model_player" "models/player/items/all_class/ugc_highlander_silver.mdl" + "visuals" + { + "skin" "2" + } + } + "510" + { + "name" "TournamentMedal - UGCHLDiv3 Winners" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Winners_Desc" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_iron" + "model_player" "models/player/items/all_class/ugc_highlander_iron.mdl" + "visuals" + { + "skin" "0" + } + } + "511" + { + "name" "TournamentMedal - UGCHLDiv3 2nd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_2nd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_iron_1" + "model_player" "models/player/items/all_class/ugc_highlander_iron.mdl" + "visuals" + { + "skin" "1" + } + } + "512" + { + "name" "TournamentMedal - UGCHLDiv3 3rd" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_3rd_Desc" + "min_ilevel" "10" + "max_ilevel" "10" + "image_inventory" "backpack/player/items/all_class/ugc_highlander_iron_2" + "model_player" "models/player/items/all_class/ugc_highlander_iron.mdl" + "visuals" + { + "skin" "2" + } + } + "680" + { + "name" "UGC Tournament Fall 2011 - Platinum 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_platinum" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "681" + { + "name" "UGC Tournament Fall 2011 - Platinum 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_platinum" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "682" + { + "name" "UGC Tournament Fall 2011 - Platinum 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_platinum" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "683" + { + "name" "UGC Tournament Fall 2011 - Platinum Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_platinum" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "684" + { + "name" "UGC Tournament Autumn 2011 - Euro Platinum" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_EuroPlatinum" + "item_description" "#TF_TournamentMedal_Autumn2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_platinum" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "2" + } + } + "685" + { + "name" "UGC Tournament Fall 2011 - Silver 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_silver" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "686" + { + "name" "UGC Tournament Fall 2011 - Silver 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_silver" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "687" + { + "name" "UGC Tournament Fall 2011 - Silver 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_silver" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "688" + { + "name" "UGC Tournament Fall 2011 - Silver Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_silver" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "689" + { + "name" "UGC Tournament Autumn 2011 - Euro Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_EuroSilver" + "item_description" "#TF_TournamentMedal_Autumn2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_silver" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "1" + } + } + "690" + { + "name" "UGC Tournament Fall 2011 - Iron 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "691" + { + "name" "UGC Tournament Fall 2011 - Iron 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "692" + { + "name" "UGC Tournament Fall 2011 - Iron 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "693" + { + "name" "UGC Tournament Autumn 2011 - Euro Iron" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_EuroIron" + "item_description" "#TF_TournamentMedal_Autumn2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "694" + { + "name" "UGC Tournament Fall 2011 - Tin 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Tin_1st" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "695" + { + "name" "UGC Tournament Fall 2011 - Tin 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Tin_2nd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "696" + { + "name" "UGC Tournament Fall 2011 - Tin 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Tin_3rd" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "697" + { + "name" "UGC Tournament Fall 2011 - Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Participant" + "item_description" "#TF_TournamentMedal_Fall2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "698" + { + "name" "UGC Tournament Autumn 2011 - Euro Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_EuroParticipant" + "item_description" "#TF_TournamentMedal_Autumn2011" + "image_inventory" "backpack/player/items/all_class/ugc_trophy_medal_participant" + "model_player" "models/player/items/all_class/ugc_trophy_medal.mdl" + "visuals" + { + "skin" "0" + } + } + "717" + { + "name" "The Map Maker's Medallion" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_MapperMedal" + "item_name" "#TF_MapperMedal" + "item_description" "#TF_MapperMedal_Desc" + "image_inventory" "backpack/player/items/all_class/mapper_medal" + "model_player" "models/player/items/all_class/mapper_medal.mdl" + "propername" "1" + } + "8000" + { + "name" "UGC Highlander 1st Place North American Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_NA_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "8001" + { + "name" "UGC Highlander 2nd Place North American Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_NA_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "8002" + { + "name" "UGC Highlander 3rd Place North American Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_NA_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "8003" + { + "name" "UGC Highlander 1st Place European Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_Europe_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "8004" + { + "name" "UGC Highlander 2nd Place European Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_Europe_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "8005" + { + "name" "UGC Highlander 3rd Place European Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_Europe_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "8006" + { + "name" "UGC Highlander 1st Place South American Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_SA_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "8007" + { + "name" "UGC Highlander 2nd Place South American Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_SA_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "8008" + { + "name" "UGC Highlander 3rd Place South American Platinum Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_SA_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "8009" + { + "name" "UGC Highlander 1st Place North American Silver Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_NA_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "8010" + { + "name" "UGC Highlander 2nd Place North American Silver Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_NA_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "8011" + { + "name" "UGC Highlander 3rd Place North American Silver Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_NA_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "8012" + { + "name" "UGC Highlander 1st Place European Silver Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_Europe_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "8013" + { + "name" "UGC Highlander 2nd Place European Silver Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_Europe_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "8014" + { + "name" "UGC Highlander 3rd Place European Silver Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_Europe_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "8015" + { + "name" "UGC Highlander 1st Place North American Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_NA_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "8016" + { + "name" "UGC Highlander 2nd Place North American Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_NA_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "8017" + { + "name" "UGC Highlander 3rd Place North American Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_NA_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "8018" + { + "name" "UGC Highlander 1st Place European Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_Europe_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "8019" + { + "name" "UGC Highlander 2nd Place European Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_Europe_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "8020" + { + "name" "UGC Highlander 3rd Place European Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_Europe_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "8021" + { + "name" "UGC Highlander 1st Place South American Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_1st_SA_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "8022" + { + "name" "UGC Highlander 2nd Place South American Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_2nd_SA_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "8023" + { + "name" "UGC Highlander 3rd Place South American Steel Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_3rd_SA_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "8024" + { + "name" "UGC Highlander Platinum Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_Highlander_Platinum" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8025" + { + "name" "UGC Highlander Silver Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_Highlander_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8026" + { + "name" "UGC Highlander Steel Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC_Highlander_Steel" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8027" + { + "name" "ESL Season VI Premier Division 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Premier_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Premier" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8028" + { + "name" "ESL Season VI Premier Division 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Premier_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Premier" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8029" + { + "name" "ESL Season VI Premier Division 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Premier_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Premier" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8030" + { + "name" "ESL Season VI Premier Division Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Premier_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Premier" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8031" + { + "name" "ESL Season VI Division 1 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div1_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8032" + { + "name" "ESL Season VI Division 1 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div1_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8033" + { + "name" "ESL Season VI Division 1 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div1_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8034" + { + "name" "ESL Season VI Division 1 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div1_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8035" + { + "name" "ESL Season VI Division 2 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div2_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8036" + { + "name" "ESL Season VI Division 2 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div2_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8037" + { + "name" "ESL Season VI Division 2 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div2_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8038" + { + "name" "ESL Season VI Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div2_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8039" + { + "name" "ESL Season VI Division 3 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div3_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div3" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8040" + { + "name" "ESL Season VI Division 3 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div3_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div3" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8041" + { + "name" "ESL Season VI Division 3 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div3_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div3" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8042" + { + "name" "ESL Season VI Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div3_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div3" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8043" + { + "name" "ESL Season VI Division 4 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div4_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8044" + { + "name" "ESL Season VI Division 4 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div4_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8045" + { + "name" "ESL Season VI Division 4 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div4_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8046" + { + "name" "ESL Season VI Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div4_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8047" + { + "name" "ESL Season VI Division 5 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div5_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8048" + { + "name" "ESL Season VI Division 5 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div5_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8049" + { + "name" "ESL Season VI Division 5 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div5_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8050" + { + "name" "ESL Season VI Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVI_Div5_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVI_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8051" + { + "name" "ESL Season VII Premiership Division 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Premiership_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Premiership" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8052" + { + "name" "ESL Season VII Premiership Division 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Premiership_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Premiership" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8053" + { + "name" "ESL Season VII Premiership Division 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Premiership_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Premiership" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8054" + { + "name" "ESL Season VII Premiership Division Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Premiership_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Premiership" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8055" + { + "name" "ESL Season VII Division 1 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div1_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8056" + { + "name" "ESL Season VII Division 1 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div1_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8057" + { + "name" "ESL Season VII Division 1 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div1_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8058" + { + "name" "ESL Season VII Division 2 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div2_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8059" + { + "name" "ESL Season VII Division 2 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div2_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8060" + { + "name" "ESL Season VII Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div2_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div2" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8061" + { + "name" "ESL Season VII Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div3_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div3" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8062" + { + "name" "ESL Season VII Division 4 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div4_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8063" + { + "name" "ESL Season VII Division 4 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div4_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8064" + { + "name" "ESL Season VII Division 4 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div4_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8065" + { + "name" "ESL Season VII Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div4_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div4" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8066" + { + "name" "ESL Season VII Division 5 1st Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div5_1st" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "8067" + { + "name" "ESL Season VII Division 5 2nd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div5_2nd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "8068" + { + "name" "ESL Season VII Division 5 3rd Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div5_3rd" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "8069" + { + "name" "ESL Season VII Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_SeasonVII_Div5_Participant" + "item_description" "#TF_TournamentMedal_ESL_SeasonVII_Div5" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "0" + } + } + "8070" + { + "name" "Ready Steady Pan Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_pan" + "model_player" "models/player/items/all_class/all_class_badge_pan.mdl" + } + "8071" + { + "name" "Ready Steady Pan Helper Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Participant" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Helper_Season1" + "image_inventory" "backpack/player/items/all_class/all_class_badge_pan" + "model_player" "models/player/items/all_class/all_class_badge_pan.mdl" + } + "8072" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8073" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8074" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8075" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8076" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8077" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8078" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8079" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8080" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8081" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8082" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8083" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8084" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8085" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8086" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8087" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8088" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8089" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8090" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8091" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8092" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8093" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8094" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8095" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8096" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8097" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8098" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8099" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8100" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8101" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8102" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8103" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8104" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8105" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8106" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8107" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8108" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8109" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8110" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8111" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8112" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8113" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8114" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8115" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8116" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8117" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8118" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8119" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8120" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8121" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8122" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8123" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8124" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8125" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8126" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8127" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8128" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8129" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8130" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8131" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8132" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 8" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8133" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8134" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8135" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8136" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8137" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8138" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8139" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 9" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8140" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8141" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8142" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8143" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8144" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8145" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8146" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 10" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8147" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8148" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8149" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8150" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8151" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8152" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8153" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 11" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8154" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8155" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8156" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8157" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8158" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8159" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8160" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 12" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8161" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8162" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8163" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8164" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8165" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8166" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8167" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 13" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8168" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8169" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8170" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8171" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8172" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8173" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8174" + { + "name" "ETF2L Highlander Premier Division Gold Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8175" + { + "name" "ETF2L Highlander Premier Division Silver Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8176" + { + "name" "ETF2L Highlander Premier Division Bronze Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8177" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8178" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8179" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8180" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8181" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8182" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8183" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8184" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8185" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8186" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8187" + { + "name" "ETF2L Highlander Division 1 Group Winner Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8188" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8189" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8190" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8191" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8192" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8193" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 1" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8194" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 1" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8195" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 1" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8196" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 1" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8197" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 1" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8198" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 1" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8199" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 2" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8200" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 2" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8201" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 2" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8202" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 2" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8203" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 2" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8204" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 2" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8205" + { + "name" "ETF2L Highlander Premier Division Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8206" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8207" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8208" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8209" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8210" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8211" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 3" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8212" + { + "name" "ETF2L Ultiduo 1 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo1_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8213" + { + "name" "ETF2L Ultiduo 2 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo2_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8214" + { + "name" "ETF2L Ultiduo 3 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo3_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8215" + { + "name" "ETF2L Ultiduo 4 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo4_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8216" + { + "name" "ESH Ultiduo 1 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo1_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8217" + { + "name" "ESH Ultiduo 2 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo2_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8218" + { + "name" "ESH Ultiduo 3 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo3_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8219" + { + "name" "ESH Ultiduo 4 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo4_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8220" + { + "name" "ESH Ultiduo 5 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo5_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8221" + { + "name" "ESH Ultiduo 6 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo6_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8222" + { + "name" "ESH Ultiduo 7 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESH_Ultiduo7_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/esh_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8223" + { + "name" "Tournament Medal (Armory)" + "prefab" "tournament_medal" + "armory_desc" "tournamentmedal" + "show_in_armory" "1" + "image_inventory" "backpack/player/items/soldier/medal" + "item_name" "#TF_TournamentMedal_Empty" + "item_description" "#TF_TournamentMedal_Empty_Desc" + } + "8224" + { + "name" "UGC Highlander 1st Place Platinum Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "8225" + { + "name" "UGC Highlander 2nd Place Platinum Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "8226" + { + "name" "UGC Highlander 3rd Place Platinum Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "8227" + { + "name" "UGC Highlander 1st Place Silver Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "8228" + { + "name" "UGC Highlander 2nd Place Silver Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "8229" + { + "name" "UGC Highlander 3rd Place Silver Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "8230" + { + "name" "UGC Highlander 1st Place Steel Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "8231" + { + "name" "UGC Highlander 2nd Place Steel Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "8232" + { + "name" "UGC Highlander 3rd Place Steel Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "8233" + { + "name" "UGC Highlander 1st Place Iron Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_iron" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8234" + { + "name" "UGC Highlander 2nd Place Iron Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_iron" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8235" + { + "name" "UGC Highlander 3rd Place Iron Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_iron" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8236" + { + "name" "UGC Highlander 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "8237" + { + "name" "UGC Highlander 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "8238" + { + "name" "UGC Highlander 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "8239" + { + "name" "UGC Highlander Platinum Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8240" + { + "name" "UGC Highlander Silver Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8241" + { + "name" "UGC Highlander Steel Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8242" + { + "name" "UGC Highlander Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_iron" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8243" + { + "name" "Ready Steady Pan First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_First_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/rsp_s02" + "model_player" "models/player/items/all_class/rsp_s02.mdl" + } + "8244" + { + "name" "Ready Steady Pan Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Second_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/rsp_s02" + "model_player" "models/player/items/all_class/rsp_s02.mdl" + } + "8245" + { + "name" "Ready Steady Pan Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Third_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/rsp_s02" + "model_player" "models/player/items/all_class/rsp_s02.mdl" + } + "8246" + { + "name" "Ready Steady Pan Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/player/items/all_class/rsp_s02" + "model_player" "models/player/items/all_class/rsp_s02.mdl" + } + "8247" + { + "name" "Ready Steady Pan Helper Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Helper" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Helper_Season2" + "image_inventory" "backpack/player/items/all_class/rsp_s02" + "model_player" "models/player/items/all_class/rsp_s02.mdl" + } + "8248" + { + "name" "UGC Highlander 1st Place Platinum Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "8249" + { + "name" "UGC Highlander 2nd Place Platinum Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "8250" + { + "name" "UGC Highlander 3rd Place Platinum Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "8251" + { + "name" "UGC Highlander 1st Place Gold Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_gold" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "3" + } + } + "8252" + { + "name" "UGC Highlander 2nd Place Gold Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_gold" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "3" + } + } + "8253" + { + "name" "UGC Highlander 3rd Place Gold Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_gold" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "3" + } + } + "8254" + { + "name" "UGC Highlander 1st Place Silver Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_silver" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "2" + } + } + "8255" + { + "name" "UGC Highlander 2nd Place Silver Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_silver" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "2" + } + } + "8256" + { + "name" "UGC Highlander 3rd Place Silver Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_silver" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "2" + } + } + "8257" + { + "name" "UGC Highlander 1st Place Steel Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_steel" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "1" + } + } + "8258" + { + "name" "UGC Highlander 2nd Place Steel Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_steel" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "1" + } + } + "8259" + { + "name" "UGC Highlander 3rd Place Steel Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_steel" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "1" + } + } + "8260" + { + "name" "UGC Highlander 1st Place Iron Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_iron" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8261" + { + "name" "UGC Highlander 2nd Place Iron Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_iron" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8262" + { + "name" "UGC Highlander 3rd Place Iron Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_iron" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8263" + { + "name" "UGC Highlander 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "8264" + { + "name" "UGC Highlander 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "8265" + { + "name" "UGC Highlander 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "8266" + { + "name" "UGC Highlander Platinum Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "8267" + { + "name" "UGC Highlander Gold Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_gold" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8268" + { + "name" "UGC Highlander Silver Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8269" + { + "name" "UGC Highlander Steel Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8270" + { + "name" "UGC Highlander Iron Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_iron" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8271" + { + "name" "UGC 6vs6 Platinum Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_gold" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8272" + { + "name" "UGC 6vs6 Silver Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8273" + { + "name" "UGC 6vs6 Steel Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8274" + { + "name" "UGC 6vs6 European Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_European_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8275" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8276" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8277" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8278" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8279" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8280" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8281" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8282" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8283" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8284" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8285" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8286" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8287" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8288" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8289" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8290" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 14" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8291" + { + "name" "ETF2L Highlander Premier Division Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8292" + { + "name" "ETF2L Highlander Premier Division Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8293" + { + "name" "ETF2L Highlander Premier Division Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8294" + { + "name" "ETF2L Highlander Division 1 Group Winner Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8295" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8296" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8297" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8298" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8299" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8300" + { + "name" "ETF2L Highlander Premier Division Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8301" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8302" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8303" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8304" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8305" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8306" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 4" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8307" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8308" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8309" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8310" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8311" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8312" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8313" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8314" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8315" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8316" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8317" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8318" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8319" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8320" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8321" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8322" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 15" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8323" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8324" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8325" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8326" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8327" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8328" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8329" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8330" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8331" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8332" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8333" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8334" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8335" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8336" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8337" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8338" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 16" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8339" + { + "name" "OWL 10 Premier Division First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Premier_Division_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "8340" + { + "name" "OWL 10 Premier Division Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Premier_Division_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "8341" + { + "name" "OWL 10 Premier Division Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Premier_Division_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "8342" + { + "name" "OWL 10 Premier Division Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Premier_Division_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "8343" + { + "name" "OWL 10 Division 2 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division2_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8344" + { + "name" "OWL 10 Division 2 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division2_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8345" + { + "name" "OWL 10 Division 2 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division2_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8346" + { + "name" "OWL 10 Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division2_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8347" + { + "name" "OWL 10 Division 3 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division3_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8348" + { + "name" "OWL 10 Division 3 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division3_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8349" + { + "name" "OWL 10 Division 3 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division3_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8350" + { + "name" "OWL 10 Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division3_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8351" + { + "name" "OWL 10 Division 4 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division4_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8352" + { + "name" "OWL 10 Division 4 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division4_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8353" + { + "name" "OWL 10 Division 4 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division4_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8354" + { + "name" "OWL 10 Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division4_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8355" + { + "name" "OWL 10 Division 5 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division5_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8356" + { + "name" "OWL 10 Division 5 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division5_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8357" + { + "name" "OWL 10 Division 5 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division5_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8358" + { + "name" "OWL 10 Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division5_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8359" + { + "name" "OWL 10 Division 6 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division6_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8360" + { + "name" "OWL 10 Division 6 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division6_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8361" + { + "name" "OWL 10 Division 6 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division6_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8362" + { + "name" "OWL 10 Division 6 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL10_6v6_Division6_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8363" + { + "name" "AU Highlander Community League First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Community_First_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "8364" + { + "name" "AU Highlander Community League Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Community_Second_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "8365" + { + "name" "AU Highlander Community League Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Community_Third_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "8366" + { + "name" "AU Highlander Community League Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Community_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "8367" + { + "name" "Heart of Gold" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_HeartOfGold" + "item_description" "#TF_Medal_HeartOfGold_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/heart_of_gold/heart_of_gold" + "model_player" "models/workshop/player/items/all_class/heart_of_gold/heart_of_gold_demo.mdl" + } + "8368" + { + "name" "UGC Highlander 1st Place Platinum Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first_demo.mdl" + } + "8369" + { + "name" "UGC Highlander 2nd Place Platinum Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second_demo.mdl" + } + "8370" + { + "name" "UGC Highlander 3rd Place Platinum Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third_demo.mdl" + } + "8371" + { + "name" "UGC Highlander Platinum Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant_demo.mdl" + } + "8372" + { + "name" "UGC Highlander 1st Place Gold Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first_demo.mdl" + } + "8373" + { + "name" "UGC Highlander 2nd Place Gold Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second_demo.mdl" + } + "8374" + { + "name" "UGC Highlander 3rd Place Gold Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third_demo.mdl" + } + "8375" + { + "name" "UGC Highlander Gold Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant_demo.mdl" + } + "8376" + { + "name" "UGC Highlander 1st Place Silver Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_first/ugc_season11_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_first/ugc_season11_silver_first_demo.mdl" + } + "8377" + { + "name" "UGC Highlander 2nd Place Silver Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_second/ugc_season11_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_second/ugc_season11_silver_second_demo.mdl" + } + "8378" + { + "name" "UGC Highlander 3rd Place Silver Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_third/ugc_season11_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_third/ugc_season11_silver_third_demo.mdl" + } + "8379" + { + "name" "UGC Highlander Silver Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "8380" + { + "name" "UGC Highlander 1st Place Steel Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_first/ugc_season11_steel_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_first/ugc_season11_steel_first_demo.mdl" + } + "8381" + { + "name" "UGC Highlander 2nd Place Steel Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_second/ugc_season11_steel_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_second/ugc_season11_steel_second_demo.mdl" + } + "8382" + { + "name" "UGC Highlander 3rd Place Steel Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_third/ugc_season11_steel_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_third/ugc_season11_steel_third_demo.mdl" + } + "8383" + { + "name" "UGC Highlander Steel Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "8384" + { + "name" "UGC Highlander 1st Place Iron Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_first/ugc_season11_iron_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_first/ugc_season11_iron_first_demo.mdl" + } + "8385" + { + "name" "UGC Highlander 2nd Place Iron Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_second/ugc_season11_iron_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_second/ugc_season11_iron_second_demo.mdl" + } + "8386" + { + "name" "UGC Highlander 3rd Place Iron Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_third/ugc_season11_iron_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_third/ugc_season11_iron_third_demo.mdl" + } + "8387" + { + "name" "UGC Highlander Iron Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant_demo.mdl" + } + "8388" + { + "name" "UGC 6vs6 1st Place Platinum Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first_demo.mdl" + } + "8389" + { + "name" "UGC 6vs6 2nd Place Platinum Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second_demo.mdl" + } + "8390" + { + "name" "UGC 6vs6 3rd Place Platinum Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third_demo.mdl" + } + "8391" + { + "name" "UGC 6vs6 Platinum Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant_demo.mdl" + } + "8392" + { + "name" "UGC 6vs6 Silver Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "8393" + { + "name" "UGC 6vs6 Steel Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "8394" + { + "name" "UGC 6vs6 Iron Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant_demo.mdl" + } + "8395" + { + "name" "Tumblr Vs Reddit Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TumblrVsReddit" + "item_description" "#TF_TournamentMedal_TumblrVsReddit_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tvr_medal/tvr_medal" + "model_player" "models/workshop/player/items/all_class/tvr_medal/tvr_medal_demo.mdl" + } + "8396" + { + "name" "InfoShow LAN Party 2014 Participant" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_InfoShow2014" + "item_description" "#TF_Medal_InfoShow2014_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/infoshowmedal14/infoshowmedal14" + "model_player" "models/workshop/player/items/all_class/infoshowmedal14/infoshowmedal14.mdl" + } + "8397" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8398" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8399" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_placement_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8400" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8401" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8402" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8403" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8404" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8405" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_winner_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_winner_2012.mdl" + } + "8406" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8407" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8408" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8409" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8410" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8411" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8412" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 17" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/etf2l_sixs_participant_2012" + "model_player" "models/player/items/all_class/etf2l_sixs_participant_2012.mdl" + } + "8413" + { + "name" "ETF2L Highlander Premier Division Gold Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_gold" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "2" + } + } + "8414" + { + "name" "ETF2L Highlander Premier Division Silver Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012_silver" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8415" + { + "name" "ETF2L Highlander Premier Division Bronze Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_placement_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_placement_2012.mdl" + "visuals" + { + "skin" "0" + } + } + "8416" + { + "name" "ETF2L Highlander Division 1 Group Winner Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8417" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8418" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8419" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8420" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8421" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_winner_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_winner_2012.mdl" + } + "8422" + { + "name" "ETF2L Highlander Premier Division Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8423" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8424" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8425" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8426" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8427" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8428" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 5" + "prefab" "etf2l_participation_styles tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/player/items/all_class/etf2l_highlander_participant_2012" + "model_player" "models/player/items/all_class/etf2l_highlander_participant_2012.mdl" + } + "8429" + { + "name" "LBTF2 6v6 Elite 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "8430" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "8431" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "8432" + { + "name" "LBTF2 6v6 Elite Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "8433" + { + "name" "LBTF2 6v6 Central 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "8434" + { + "name" "LBTF2 6v6 Central 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "8435" + { + "name" "LBTF2 6v6 Central 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "8436" + { + "name" "LBTF2 6v6 Central Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "8437" + { + "name" "LBTF2 6v6 Access 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "8438" + { + "name" "LBTF2 6v6 Access 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "8439" + { + "name" "LBTF2 6v6 Access 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "8440" + { + "name" "LBTF2 6v6 Access Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "8441" + { + "name" "LBTF2 6v6 Open 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "8442" + { + "name" "LBTF2 6v6 Open 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "8443" + { + "name" "LBTF2 6v6 Open 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "8444" + { + "name" "LBTF2 6v6 Open Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "8445" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "8446" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "8447" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "8448" + { + "name" "AsiaFortress Cup Division 1 Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "8449" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "8450" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "8451" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "8452" + { + "name" "AsiaFortress Cup Division 2 Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "8453" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "8454" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "8455" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "8456" + { + "name" "AsiaFortress Cup Division 3 Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "8457" + { + "name" "OWL 11 Premier Division First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Premier_Division_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "8458" + { + "name" "OWL 11 Premier Division Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Premier_Division_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "8459" + { + "name" "OWL 11 Premier Division Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Premier_Division_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "8460" + { + "name" "OWL 11 Premier Division Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Premier_Division_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "8461" + { + "name" "OWL 11 Division 2 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division2_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8462" + { + "name" "OWL 11 Division 2 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division2_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8463" + { + "name" "OWL 11 Division 2 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division2_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8464" + { + "name" "OWL 11 Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division2_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8465" + { + "name" "OWL 11 Division 3 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division3_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8466" + { + "name" "OWL 11 Division 3 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division3_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8467" + { + "name" "OWL 11 Division 3 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division3_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8468" + { + "name" "OWL 11 Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division3_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8469" + { + "name" "OWL 11 Division 4 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division4_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8470" + { + "name" "OWL 11 Division 4 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division4_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8471" + { + "name" "OWL 11 Division 4 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division4_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8472" + { + "name" "OWL 11 Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division4_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8473" + { + "name" "OWL 11 Division 5 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division5_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8474" + { + "name" "OWL 11 Division 5 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division5_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8475" + { + "name" "OWL 11 Division 5 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division5_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8476" + { + "name" "OWL 11 Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL11_6v6_Division5_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8477" + { + "name" "Tumblr Vs Reddit Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TumblrVsReddit" + "item_description" "#TF_TournamentMedal_TumblrVsReddit_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tvr_medal_season2/tvr_medal_season2" + "model_player" "models/workshop/player/items/all_class/tvr_medal_season2/tvr_medal_season2_demo.mdl" + } + "8478" + { + "name" "UGC Highlander 1st Place Platinum Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8479" + { + "name" "UGC Highlander 2nd Place Platinum Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8480" + { + "name" "UGC Highlander 3rd Place Platinum Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8481" + { + "name" "UGC Highlander Platinum Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8482" + { + "name" "UGC Highlander 1st Place Gold Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8483" + { + "name" "UGC Highlander 2nd Place Gold Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8484" + { + "name" "UGC Highlander 3rd Place Gold Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8485" + { + "name" "UGC Highlander Gold Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8486" + { + "name" "UGC Highlander 1st Place Silver Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "8487" + { + "name" "UGC Highlander 2nd Place Silver Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "8488" + { + "name" "UGC Highlander 3rd Place Silver Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "8489" + { + "name" "UGC Highlander Silver Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8490" + { + "name" "UGC Highlander Steel Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8491" + { + "name" "UGC Highlander Iron Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8492" + { + "name" "UGC 6vs6 1st Place Platinum Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8493" + { + "name" "UGC 6vs6 2nd Place Platinum Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8494" + { + "name" "UGC 6vs6 3rd Place Platinum Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8495" + { + "name" "UGC 6vs6 Platinum Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8496" + { + "name" "UGC 6vs6 Gold Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8497" + { + "name" "UGC 6vs6 Silver Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8498" + { + "name" "UGC 6vs6 Steel Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8499" + { + "name" "UGC 6vs6 Iron Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8500" + { + "name" "UGC 4vs4 Silver Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8501" + { + "name" "UGC 4vs4 Steel Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8502" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8503" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8504" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8505" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8506" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8507" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8508" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8509" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8510" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8511" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8512" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8513" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8514" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8515" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8516" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8517" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8518" + { + "name" "ETF2L Highlander Premier Division Gold Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "8519" + { + "name" "ETF2L Highlander Premier Division Silver Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "8520" + { + "name" "ETF2L Highlander Premier Division Bronze Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "8521" + { + "name" "ETF2L Highlander Division 1 Group Winner Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8522" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8523" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8524" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8525" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8526" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8527" + { + "name" "ETF2L Highlander Premier Division Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8528" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8529" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8530" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8531" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8532" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8533" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8534" + { + "name" "ETF2L 6v6 Premier Division Gold Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8535" + { + "name" "ETF2L 6v6 Premier Division Silver Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8536" + { + "name" "ETF2L 6v6 Premier Division Bronze Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8537" + { + "name" "ETF2L 6v6 Division 1 Group Winner Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8538" + { + "name" "ETF2L 6v6 Division 2 Group Winner Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8539" + { + "name" "ETF2L 6v6 Division 3 Group Winner Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8540" + { + "name" "ETF2L 6v6 Division 4 Group Winner Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8541" + { + "name" "ETF2L 6v6 Division 5 Group Winner Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8542" + { + "name" "ETF2L 6v6 Division 6 Group Winner Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8543" + { + "name" "ETF2L 6v6 Premier Division Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8544" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8545" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8546" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8547" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8548" + { + "name" "ETF2L 6v6 Division 5 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8549" + { + "name" "ETF2L 6v6 Division 6 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8550" + { + "name" "ETF2L Highlander Premier Division Gold Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Gold" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "8551" + { + "name" "ETF2L Highlander Premier Division Silver Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Silver" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "8552" + { + "name" "ETF2L Highlander Premier Division Bronze Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Bronze" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "8553" + { + "name" "ETF2L Highlander Division 1 Group Winner Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Group_Winner" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8554" + { + "name" "ETF2L Highlander Division 2 Group Winner Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Group_Winner" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8555" + { + "name" "ETF2L Highlander Division 3 Group Winner Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Group_Winner" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8556" + { + "name" "ETF2L Highlander Division 4 Group Winner Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Group_Winner" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8557" + { + "name" "ETF2L Highlander Division 5 Group Winner Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Group_Winner" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8558" + { + "name" "ETF2L Highlander Division 6 Group Winner Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Group_Winner" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8559" + { + "name" "ETF2L Highlander Premier Division Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premier_Division_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8560" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8561" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8562" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8563" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8564" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8565" + { + "name" "ETF2L Highlander Division 6 Participation Medal Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division6_Participation" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8566" + { + "name" "RETF2 EE22 6v6 Winner Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_6v6_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner_%s.mdl" + } + } + "8567" + { + "name" "RETF2 EE22 6v6 Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_6v6_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation_%s.mdl" + } + } + "8568" + { + "name" "RETF2 EE22 4v4 Winner Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_4v4_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner_%s.mdl" + } + } + "8569" + { + "name" "RETF2 EE22 4v4 Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation_%s.mdl" + } + } + "8570" + { + "name" "RETF2 EE22 Dodgeball Winner Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_Dodgeball_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner_%s.mdl" + } + } + "8571" + { + "name" "RETF2 EE22 Dodgeball Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_Dodgeball_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation_%s.mdl" + } + } + "8572" + { + "name" "RETF2 EE22 Pan Tournament Winner Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_Pan_Tournament_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_winner/euskal_encounter_xxii_winner_%s.mdl" + } + } + "8573" + { + "name" "RETF2 EE22 Pan Tournament Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_Pan_Tournament_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation_%s.mdl" + } + } + "8574" + { + "name" "RETF2 EE22 Contributor Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_EE22_Contributor" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/euskal_encounter_xxii_participation/euskal_encounter_xxii_participation_%s.mdl" + } + } + "8575" + { + "name" "ETF2L Highlander Open 1st Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_1st_place/etf2l_highlander_open_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_1st_place/etf2l_highlander_open_1st_place_%s.mdl" + } + } + "8576" + { + "name" "ETF2L Highlander Open 2nd Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_2nd_place/etf2l_highlander_open_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_2nd_place/etf2l_highlander_open_2nd_place_%s.mdl" + } + } + "8577" + { + "name" "ETF2L Highlander Open 3rd Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_3rd_place/etf2l_highlander_open_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_3rd_place/etf2l_highlander_open_3rd_place_%s.mdl" + } + } + "8578" + { + "name" "ETF2L Highlander Open Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_participant/etf2l_highlander_open_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_participant/etf2l_highlander_open_participant_%s.mdl" + } + } + "8579" + { + "name" "BETA LAN 1st Place Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BETA_LAN_1st" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/beta_lan_medal_gold/beta_lan_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/beta_lan_medal_gold/beta_lan_medal_gold_%s.mdl" + } + } + "8580" + { + "name" "BETA LAN 2nd Place Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BETA_LAN_2nd" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/beta_lan_medal_silver/beta_lan_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/beta_lan_medal_silver/beta_lan_medal_silver_%s.mdl" + } + } + "8581" + { + "name" "BETA LAN 3rd Place Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BETA_LAN_3rd" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/beta_lan_medal_bronze/beta_lan_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/beta_lan_medal_bronze/beta_lan_medal_bronze_%s.mdl" + } + } + "8582" + { + "name" "BETA LAN Participant Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BETA_LAN_Participant" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/beta_lan_medal_participation/beta_lan_medal_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/beta_lan_medal_participation/beta_lan_medal_participation_%s.mdl" + } + } + "8583" + { + "name" "Florida LAN Medal 2014" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Florida_LAN_2014" + "item_description" "#TF_TournamentMedal_Florida_LAN_2014_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/florida_lan_medal/florida_lan_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/florida_lan_medal/florida_lan_medal_%s.mdl" + } + } + "8584" + { + "name" "Thought that Counts" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_ThoughtThatCounts" + "item_description" "#TF_Medal_ThoughtThatCounts_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brain_of_gold/brain_of_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brain_of_gold/brain_of_gold_%s.mdl" + } + } + "8585" + { + "name" "Gamers Assembly Gold Medal 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Gold" + "item_description" "#TF_TournamentMedal_2013" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "8586" + { + "name" "Gamers Assembly Silver Medal 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Silver" + "item_description" "#TF_TournamentMedal_2013" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "8587" + { + "name" "Gamers Assembly Bronze Medal 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Bronze" + "item_description" "#TF_TournamentMedal_2013" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "8588" + { + "name" "Gamers Assembly Participant Badge 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Participant" + "item_description" "#TF_TournamentMedal_2013" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "8589" + { + "name" "GAlloween Gold Medal 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Gold" + "item_description" "#TF_TournamentMedal_2013" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "8590" + { + "name" "GAlloween Silver Medal 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Silver" + "item_description" "#TF_TournamentMedal_2013" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "8591" + { + "name" "GAlloween Bronze Medal 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Bronze" + "item_description" "#TF_TournamentMedal_2013" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "8592" + { + "name" "GAlloween Participant Badge 2013" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Participant" + "item_description" "#TF_TournamentMedal_2013" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "8593" + { + "name" "Gamers Assembly Gold Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Gold" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "8594" + { + "name" "Gamers Assembly Silver Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Silver" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "8595" + { + "name" "Gamers Assembly Bronze Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Bronze" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "8596" + { + "name" "Gamers Assembly Participant Badge 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Participant" + "item_description" "#TF_TournamentMedal_2014" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "8597" + { + "name" "GAlloween Gold Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Gold" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "8598" + { + "name" "GAlloween Silver Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Silver" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "8599" + { + "name" "GAlloween Bronze Medal 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Bronze" + "item_description" "#TF_TournamentMedal_2014" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "8600" + { + "name" "GAlloween Participant Badge 2014" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Participant" + "item_description" "#TF_TournamentMedal_2014" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "8601" + { + "name" "LBTF2 Highlander 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "8602" + { + "name" "LBTF2 Highlander 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "8603" + { + "name" "LBTF2 Highlander 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "8604" + { + "name" "LBTF2 Highlander Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "8605" + { + "name" "LBTF2 6v6 Elite 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8606" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8607" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8608" + { + "name" "LBTF2 6v6 Elite Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8609" + { + "name" "LBTF2 6v6 Central 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8610" + { + "name" "LBTF2 6v6 Central 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8611" + { + "name" "LBTF2 6v6 Central 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8612" + { + "name" "LBTF2 6v6 Central Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8613" + { + "name" "LBTF2 6v6 Access 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8614" + { + "name" "LBTF2 6v6 Access 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8615" + { + "name" "LBTF2 6v6 Access 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8616" + { + "name" "LBTF2 6v6 Access Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8617" + { + "name" "LBTF2 6v6 Open 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8618" + { + "name" "LBTF2 6v6 Open 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8619" + { + "name" "LBTF2 6v6 Open 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8620" + { + "name" "LBTF2 6v6 Open Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8621" + { + "name" "FBTF Cup 6v6 Wastex Miller 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8622" + { + "name" "FBTF Cup 6v6 Wastex Miller 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8623" + { + "name" "FBTF Cup 6v6 Wastex Miller 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8624" + { + "name" "FBTF Cup 6v6 Wastex Miller Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8625" + { + "name" "FBTF Cup 6v6 Barts Rimet 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8626" + { + "name" "FBTF Cup 6v6 Barts Rimet 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8627" + { + "name" "FBTF Cup 6v6 Barts Rimet 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8628" + { + "name" "FBTF Cup 6v6 Barts Rimet Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8629" + { + "name" "FBTF Cup 6v6 Vic Basten 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8630" + { + "name" "FBTF Cup 6v6 Vic Basten 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8631" + { + "name" "FBTF Cup 6v6 Vic Basten 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8632" + { + "name" "FBTF Cup 6v6 Vic Basten Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8633" + { + "name" "Asymmetric Accolade" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_6v9_Event" + "item_description" "#TF_Medal_6v9_Event_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/6v9_medal/6v9_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/6v9_medal/6v9_medal_%s.mdl" + } + } + "8634" + { + "name" "TF2Connexion Division 1 Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8635" + { + "name" "TF2Connexion Division 1 Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8636" + { + "name" "TF2Connexion Division 1 Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8637" + { + "name" "TF2Connexion Division 1 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8638" + { + "name" "TF2Connexion Division 2 Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8639" + { + "name" "TF2Connexion Division 2 Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8640" + { + "name" "TF2Connexion Division 2 Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8641" + { + "name" "TF2Connexion Division 2 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8642" + { + "name" "TF2Connexion Division 3 Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8643" + { + "name" "TF2Connexion Division 3 Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8644" + { + "name" "TF2Connexion Division 3 Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8645" + { + "name" "TF2Connexion Division 3 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8646" + { + "name" "TF2Connexion Division 4 Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_4_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8647" + { + "name" "TF2Connexion Division 4 Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_4_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8648" + { + "name" "TF2Connexion Division 4 Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_4_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8649" + { + "name" "TF2Connexion Division 4 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_4_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8650" + { + "name" "OWL 12 Premier Division First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Premier_Division_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "8651" + { + "name" "OWL 12 Premier Division Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Premier_Division_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "8652" + { + "name" "OWL 12 Premier Division Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Premier_Division_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "8653" + { + "name" "OWL 12 Premier Division Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Premier_Division_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "8654" + { + "name" "OWL 12 Division 2 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division2_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8655" + { + "name" "OWL 12 Division 2 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division2_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8656" + { + "name" "OWL 12 Division 2 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division2_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8657" + { + "name" "OWL 12 Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division2_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8658" + { + "name" "OWL 12 Division 3 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division3_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8659" + { + "name" "OWL 12 Division 3 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division3_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8660" + { + "name" "OWL 12 Division 3 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division3_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8661" + { + "name" "OWL 12 Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division3_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8662" + { + "name" "OWL 12 Division 4 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division4_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8663" + { + "name" "OWL 12 Division 4 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division4_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8664" + { + "name" "OWL 12 Division 4 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division4_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8665" + { + "name" "OWL 12 Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division4_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8666" + { + "name" "OWL 12 Division 5 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division5_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8667" + { + "name" "OWL 12 Division 5 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division5_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8668" + { + "name" "OWL 12 Division 5 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division5_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8669" + { + "name" "OWL 12 Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL12_6v6_Division5_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8670" + { + "name" "OSL.tf First Place Cup #1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OSLTF_First_Place" + "item_description" "#TF_TournamentMedal_OSLTF_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/osltf_cup_1st_place/osltf_cup_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/osltf_cup_1st_place/osltf_cup_1st_place_%s.mdl" + } + } + "8671" + { + "name" "OSL.tf Second Place Cup #1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OSLTF_Second_Place" + "item_description" "#TF_TournamentMedal_OSLTF_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/osltf_cup_2nd_place/osltf_cup_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/osltf_cup_2nd_place/osltf_cup_2nd_place_%s.mdl" + } + } + "8672" + { + "name" "OSL.tf Third Place Cup #1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OSLTF_Third_Place" + "item_description" "#TF_TournamentMedal_OSLTF_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/osltf_cup_3rd_place/osltf_cup_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/osltf_cup_3rd_place/osltf_cup_3rd_place_%s.mdl" + } + } + "8673" + { + "name" "OSL.tf Participant Cup #1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OSLTF_Participant" + "item_description" "#TF_TournamentMedal_OSLTF_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/osltf_cup_participant/osltf_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/osltf_cup_participant/osltf_cup_participant_%s.mdl" + } + } + "8674" + { + "name" "Florida LAN Medal 2015" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Florida_LAN_2015" + "item_description" "#TF_TournamentMedal_Florida_LAN_2015_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/florida_lan_medal_2015/florida_lan_medal_2015" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/florida_lan_medal_2015/florida_lan_medal_2015_%s.mdl" + } + } + "8675" + { + "name" "UGC Highlander 1st Place Platinum Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8676" + { + "name" "UGC Highlander 2nd Place Platinum Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8677" + { + "name" "UGC Highlander 3rd Place Platinum Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8678" + { + "name" "UGC Highlander Platinum Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8679" + { + "name" "UGC Highlander 1st Place Gold Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8680" + { + "name" "UGC Highlander 2nd Place Gold Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8681" + { + "name" "UGC Highlander 3rd Place Gold Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8682" + { + "name" "UGC Highlander Gold Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8683" + { + "name" "UGC Highlander 1st Place Silver Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "8684" + { + "name" "UGC Highlander 2nd Place Silver Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "8685" + { + "name" "UGC Highlander 3rd Place Silver Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "8686" + { + "name" "UGC Highlander Silver Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8687" + { + "name" "UGC Highlander Steel Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8688" + { + "name" "UGC Highlander Iron Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8689" + { + "name" "UGC 6vs6 1st Place Platinum Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8690" + { + "name" "UGC 6vs6 2nd Place Platinum Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8691" + { + "name" "UGC 6vs6 3rd Place Platinum Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8692" + { + "name" "UGC 6vs6 Platinum Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8693" + { + "name" "UGC 6vs6 Gold Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8694" + { + "name" "UGC 6vs6 Silver Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8695" + { + "name" "UGC 6vs6 Steel Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8696" + { + "name" "UGC 6vs6 Iron Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8697" + { + "name" "UGC 4vs4 1st Place Gold Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8698" + { + "name" "UGC 4vs4 2nd Place Gold Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8699" + { + "name" "UGC 4vs4 3rd Place Gold Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8700" + { + "name" "UGC 4vs4 Gold Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8701" + { + "name" "UGC 4vs4 Silver Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8702" + { + "name" "UGC 4vs4 Steel Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8703" + { + "name" "UGC 4vs4 Iron Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8704" + { + "name" "UGC Highlander 1st Place Platinum Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8705" + { + "name" "UGC Highlander 2nd Place Platinum Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8706" + { + "name" "UGC Highlander 3rd Place Platinum Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8707" + { + "name" "UGC Highlander Platinum Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8708" + { + "name" "UGC Highlander 1st Place Gold Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8709" + { + "name" "UGC Highlander 2nd Place Gold Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8710" + { + "name" "UGC Highlander 3rd Place Gold Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8711" + { + "name" "UGC Highlander Gold Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8712" + { + "name" "UGC Highlander 1st Place Silver Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "8713" + { + "name" "UGC Highlander 2nd Place Silver Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "8714" + { + "name" "UGC Highlander 3rd Place Silver Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "8715" + { + "name" "UGC Highlander Silver Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8716" + { + "name" "UGC Highlander Steel Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8717" + { + "name" "UGC Highlander Iron Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8718" + { + "name" "UGC 6vs6 1st Place Platinum Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8719" + { + "name" "UGC 6vs6 2nd Place Platinum Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8720" + { + "name" "UGC 6vs6 3rd Place Platinum Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8721" + { + "name" "UGC 6vs6 Platinum Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "8722" + { + "name" "UGC 6vs6 Gold Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8723" + { + "name" "UGC 6vs6 Silver Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8724" + { + "name" "UGC 6vs6 Steel Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8725" + { + "name" "UGC 6vs6 Iron Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8726" + { + "name" "UGC 4vs4 1st Place Gold Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "8727" + { + "name" "UGC 4vs4 2nd Place Gold Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "8728" + { + "name" "UGC 4vs4 3rd Place Gold Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "8729" + { + "name" "UGC 4vs4 Gold Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "8730" + { + "name" "UGC 4vs4 Silver Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "8731" + { + "name" "UGC 4vs4 Steel Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "8732" + { + "name" "UGC 4vs4 Iron Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "8733" + { + "name" "Gamers Assembly Gold Medal 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Gold" + "item_description" "#TF_TournamentMedal_2015" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "8734" + { + "name" "Gamers Assembly Silver Medal 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Silver" + "item_description" "#TF_TournamentMedal_2015" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "8735" + { + "name" "Gamers Assembly Bronze Medal 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Bronze" + "item_description" "#TF_TournamentMedal_2015" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "8736" + { + "name" "Gamers Assembly Participant Badge 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "8737" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8738" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8739" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8740" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8741" + { + "name" "ETF2L 6v6 High Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8742" + { + "name" "ETF2L 6v6 High Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8743" + { + "name" "ETF2L 6v6 High Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8744" + { + "name" "ETF2L 6v6 High Playoff Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8745" + { + "name" "ETF2L 6v6 High Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8746" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8747" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8748" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8749" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8750" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8751" + { + "name" "ETF2L 6v6 Open Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8752" + { + "name" "ETF2L 6v6 Open Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8753" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8754" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8755" + { + "name" "ETF2L 6v6 Open Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8756" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "8757" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "8758" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "8759" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8760" + { + "name" "ETF2L Highlander High Gold Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "8761" + { + "name" "ETF2L Highlander High Silver Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "8762" + { + "name" "ETF2L Highlander High Bronze Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "8763" + { + "name" "ETF2L Highlander High Playoff Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Playoff" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8764" + { + "name" "ETF2L Highlander High Participation Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8765" + { + "name" "ETF2L Highlander Mid Gold Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "8766" + { + "name" "ETF2L Highlander Mid Silver Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "8767" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "8768" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8769" + { + "name" "ETF2L Highlander Mid Participation Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8770" + { + "name" "ETF2L Highlander Open Gold Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "8771" + { + "name" "ETF2L Highlander Open Silver Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "8772" + { + "name" "ETF2L Highlander Open Bronze Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "8773" + { + "name" "ETF2L Highlander Open Playoff Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "8774" + { + "name" "ETF2L Highlander Open Participation Medal Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "8775" + { + "name" "ETF2L Ultiduo 5 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo5_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8776" + { + "name" "ETF2L Ultiduo 5 Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo5_Silver_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8777" + { + "name" "ETF2L Ultiduo 5 Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo5_Bronze_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8778" + { + "name" "ETF2L Ultiduo 5 Participation Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo5_Participation_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "8779" + { + "name" "Tip of the Hats 2015 Medal" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHats2015" + "item_description" "#TF_Medal_TipOfTheHats2015_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tip_of_the_hats/tip_of_the_hats" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tip_of_the_hats/tip_of_the_hats_%s.mdl" + } + } + "8780" + { + "name" "OWL 13 Premier Division First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Premier_Division_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "8781" + { + "name" "OWL 13 Premier Division Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Premier_Division_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "8782" + { + "name" "OWL 13 Premier Division Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Premier_Division_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "8783" + { + "name" "OWL 13 Premier Division Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Premier_Division_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "8784" + { + "name" "OWL 13 Division 2 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division2_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8785" + { + "name" "OWL 13 Division 2 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division2_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8786" + { + "name" "OWL 13 Division 2 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division2_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8787" + { + "name" "OWL 13 Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division2_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8788" + { + "name" "OWL 13 Division 3 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division3_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8789" + { + "name" "OWL 13 Division 3 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division3_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8790" + { + "name" "OWL 13 Division 3 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division3_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8791" + { + "name" "OWL 13 Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division3_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8792" + { + "name" "OWL 13 Division 4 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division4_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8793" + { + "name" "OWL 13 Division 4 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division4_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8794" + { + "name" "OWL 13 Division 4 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division4_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8795" + { + "name" "OWL 13 Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division4_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8796" + { + "name" "OWL 13 Division 5 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division5_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8797" + { + "name" "OWL 13 Division 5 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division5_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8798" + { + "name" "OWL 13 Division 5 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division5_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8799" + { + "name" "OWL 13 Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL13_6v6_Division5_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8800" + { + "name" "TF2Connexion Division 1 Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8801" + { + "name" "TF2Connexion Division 1 Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8802" + { + "name" "TF2Connexion Division 1 Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8803" + { + "name" "TF2Connexion Division 1 Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_1_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8804" + { + "name" "TF2Connexion Division 2 Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8805" + { + "name" "TF2Connexion Division 2 Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8806" + { + "name" "TF2Connexion Division 2 Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8807" + { + "name" "TF2Connexion Division 2 Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_2_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8808" + { + "name" "TF2Connexion Division 3 Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_gold/tf2connexion_medal_gold_%s.mdl" + } + } + "8809" + { + "name" "TF2Connexion Division 3 Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_silver/tf2connexion_medal_silver_%s.mdl" + } + } + "8810" + { + "name" "TF2Connexion Division 3 Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_bronze/tf2connexion_medal_bronze_%s.mdl" + } + } + "8811" + { + "name" "TF2Connexion Division 3 Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TF2Connexion_Division_3_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf2connexion_medal_participant/tf2connexion_medal_participant_%s.mdl" + } + } + "8812" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8813" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8814" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8815" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8816" + { + "name" "ETF2L 6v6 High Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8817" + { + "name" "ETF2L 6v6 High Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8818" + { + "name" "ETF2L 6v6 High Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8819" + { + "name" "ETF2L 6v6 High Playoff Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8820" + { + "name" "ETF2L 6v6 High Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8821" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8822" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8823" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8824" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8825" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8826" + { + "name" "ETF2L 6v6 Open Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "8827" + { + "name" "ETF2L 6v6 Open Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "8828" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "8829" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "8830" + { + "name" "ETF2L 6v6 Open Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "8831" + { + "name" "Arms Race 1 1st Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_first" + "item_description" "#TF_TournamentMedal_armsrace1" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_first/armsrace_medal_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_first/armsrace_medal_first_%s.mdl" + } + } + "8832" + { + "name" "Arms Race 1 2nd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_second" + "item_description" "#TF_TournamentMedal_armsrace1" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_second/armsrace_medal_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_second/armsrace_medal_second_%s.mdl" + } + } + "8833" + { + "name" "Arms Race 1 3rd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_third" + "item_description" "#TF_TournamentMedal_armsrace1" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_third/armsrace_medal_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_third/armsrace_medal_third_%s.mdl" + } + } + "8834" + { + "name" "Arms Race 1 Participant" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_participant" + "item_description" "#TF_TournamentMedal_armsrace1" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_participant/armsrace_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_participant/armsrace_medal_participant_%s.mdl" + } + } + "8835" + { + "name" "Arms Race 2 1st Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_first" + "item_description" "#TF_TournamentMedal_armsrace2" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_first/armsrace_medal_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_first/armsrace_medal_first_%s.mdl" + } + } + "8836" + { + "name" "Arms Race 2 2nd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_second" + "item_description" "#TF_TournamentMedal_armsrace2" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_second/armsrace_medal_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_second/armsrace_medal_second_%s.mdl" + } + } + "8837" + { + "name" "Arms Race 2 3rd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_third" + "item_description" "#TF_TournamentMedal_armsrace2" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_third/armsrace_medal_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_third/armsrace_medal_third_%s.mdl" + } + } + "8838" + { + "name" "Arms Race 2 Participant" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_participant" + "item_description" "#TF_TournamentMedal_armsrace2" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_participant/armsrace_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_participant/armsrace_medal_participant_%s.mdl" + } + } + "8839" + { + "name" "OWL 14 Premier First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Premier_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "8840" + { + "name" "OWL 14 Premier Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Premier_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "8841" + { + "name" "OWL 14 Premier Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Premier_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "8842" + { + "name" "OWL 14 Premier Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Premier_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "8843" + { + "name" "OWL 14 Division 2 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division2_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8844" + { + "name" "OWL 14 Division 2 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division2_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8845" + { + "name" "OWL 14 Division 2 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division2_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8846" + { + "name" "OWL 14 Division 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division2_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8847" + { + "name" "OWL 14 Division 3 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division3_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8848" + { + "name" "OWL 14 Division 3 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division3_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8849" + { + "name" "OWL 14 Division 3 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division3_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8850" + { + "name" "OWL 14 Division 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division3_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8851" + { + "name" "OWL 14 Division 4 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division4_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8852" + { + "name" "OWL 14 Division 4 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division4_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8853" + { + "name" "OWL 14 Division 4 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division4_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8854" + { + "name" "OWL 14 Division 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division4_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8855" + { + "name" "OWL 14 Division 5 First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division5_First_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "8856" + { + "name" "OWL 14 Division 5 Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division5_Second_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "8857" + { + "name" "OWL 14 Division 5 Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division5_Third_Place" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "8858" + { + "name" "OWL 14 Division 5 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_OWL14_6v6_Division5_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "8859" + { + "name" "DeutschLAN 1st Place 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_DeutschLAN_First_Place" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/deutschlan_1st_place/deutschlan_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/deutschlan_1st_place/deutschlan_1st_place_%s.mdl" + } + } + "8860" + { + "name" "DeutschLAN 2nd Place 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_DeutschLAN_Second_Place" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/deutschlan_2nd_place/deutschlan_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/deutschlan_2nd_place/deutschlan_2nd_place_%s.mdl" + } + } + "8861" + { + "name" "DeutschLAN 3rd Place 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_DeutschLAN_Third_Place" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/deutschlan_3rd_place/deutschlan_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/deutschlan_3rd_place/deutschlan_3rd_place_%s.mdl" + } + } + "8862" + { + "name" "DeutschLAN Participant 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_DeutschLAN_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/deutschlan_participant/deutschlan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/deutschlan_participant/deutschlan_participant_%s.mdl" + } + } + "8863" + { + "name" "DeutschLAN Supporter 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_DeutschLAN_Supporter" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/deutschlan_supporter/deutschlan_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/deutschlan_supporter/deutschlan_supporter_%s.mdl" + } + } + "8864" + { + "name" "LBTF2 Highlander Access 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "8865" + { + "name" "LBTF2 Highlander Access 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "8866" + { + "name" "LBTF2 Highlander Access 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "8867" + { + "name" "LBTF2 Highlander Access Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "8868" + { + "name" "LBTF2 6v6 Elite 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8869" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8870" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8871" + { + "name" "LBTF2 6v6 Elite Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8872" + { + "name" "LBTF2 6v6 Central 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8873" + { + "name" "LBTF2 6v6 Central 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8874" + { + "name" "LBTF2 6v6 Central 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8875" + { + "name" "LBTF2 6v6 Central Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8876" + { + "name" "LBTF2 6v6 Access 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8877" + { + "name" "LBTF2 6v6 Access 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8878" + { + "name" "LBTF2 6v6 Access 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8879" + { + "name" "LBTF2 6v6 Access Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8880" + { + "name" "LBTF2 6v6 Open 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "8881" + { + "name" "LBTF2 6v6 Open 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "8882" + { + "name" "LBTF2 6v6 Open 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "8883" + { + "name" "LBTF2 6v6 Open Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "8884" + { + "name" "LBTF2 Highlander Principal 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "8885" + { + "name" "LBTF2 Highlander Principal 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "8886" + { + "name" "LBTF2 Highlander Principal 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "8887" + { + "name" "LBTF2 Highlander Principal Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "8888" + { + "name" "UGC Highlander 1st Place Platinum Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "8889" + { + "name" "UGC Highlander 2nd Place Platinum Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "8890" + { + "name" "UGC Highlander 3rd Place Platinum Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "8891" + { + "name" "UGC Highlander Platinum Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "8892" + { + "name" "UGC Highlander 1st Place Gold Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "8893" + { + "name" "UGC Highlander 2nd Place Gold Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "8894" + { + "name" "UGC Highlander 3rd Place Gold Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "8895" + { + "name" "UGC Highlander Gold Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "8896" + { + "name" "UGC Highlander 1st Place Silver Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "8897" + { + "name" "UGC Highlander 2nd Place Silver Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "8898" + { + "name" "UGC Highlander 3rd Place Silver Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "8899" + { + "name" "UGC Highlander Silver Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "8939" + { + "name" "UGC Highlander 1st Place Steel Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "8940" + { + "name" "UGC Highlander 2nd Place Steel Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "8941" + { + "name" "UGC Highlander 3rd Place Steel Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "8942" + { + "name" "UGC Highlander Steel Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "8943" + { + "name" "UGC Highlander 1st Place Iron Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "0" + } + } + "8944" + { + "name" "UGC Highlander 2nd Place Iron Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "0" + } + } + "8945" + { + "name" "UGC Highlander 3rd Place Iron Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "0" + } + } + "8946" + { + "name" "UGC Highlander Iron Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "8947" + { + "name" "UGC 6vs6 1st Place Platinum Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "8948" + { + "name" "UGC 6vs6 2nd Place Platinum Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "8949" + { + "name" "UGC 6vs6 3rd Place Platinum Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "8950" + { + "name" "UGC 6vs6 Platinum Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "8951" + { + "name" "UGC 6vs6 Gold Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "8952" + { + "name" "UGC 6vs6 Silver Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "8953" + { + "name" "UGC 6vs6 Steel Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "8954" + { + "name" "UGC 6vs6 Iron Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "8955" + { + "name" "UGC 4vs4 1st Place Gold Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "8956" + { + "name" "UGC 4vs4 2nd Place Gold Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "8957" + { + "name" "UGC 4vs4 3rd Place Gold Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "8958" + { + "name" "UGC 4vs4 Gold Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "8959" + { + "name" "UGC 4vs4 Silver Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "8960" + { + "name" "UGC 4vs4 Steel Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "8961" + { + "name" "UGC 4vs4 Iron Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "8962" + { + "name" "UGC Highlander 1st Place Platinum Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "8963" + { + "name" "UGC Highlander 2nd Place Platinum Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "8964" + { + "name" "UGC Highlander 3rd Place Platinum Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "8965" + { + "name" "UGC Highlander Platinum Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "8966" + { + "name" "UGC Highlander 1st Place Gold Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "8967" + { + "name" "UGC Highlander 2nd Place Gold Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "8968" + { + "name" "UGC Highlander 3rd Place Gold Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "8969" + { + "name" "UGC Highlander Gold Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "8970" + { + "name" "UGC Highlander 1st Place Silver Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "8971" + { + "name" "UGC Highlander 2nd Place Silver Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "8972" + { + "name" "UGC Highlander 3rd Place Silver Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "8973" + { + "name" "UGC Highlander Silver Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "8974" + { + "name" "UGC Highlander 1st Place Steel Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "8975" + { + "name" "UGC Highlander 2nd Place Steel Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "8976" + { + "name" "UGC Highlander 3rd Place Steel Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "8977" + { + "name" "UGC Highlander Steel Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "8978" + { + "name" "UGC Highlander 1st Place Iron Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "0" + } + } + "8979" + { + "name" "UGC Highlander 2nd Place Iron Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "0" + } + } + "8980" + { + "name" "UGC Highlander 3rd Place Iron Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "0" + } + } + "8981" + { + "name" "UGC Highlander Iron Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "8982" + { + "name" "UGC 6vs6 1st Place Platinum Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "8983" + { + "name" "UGC 6vs6 2nd Place Platinum Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "8984" + { + "name" "UGC 6vs6 3rd Place Platinum Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "8985" + { + "name" "UGC 6vs6 Platinum Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "8986" + { + "name" "UGC 6vs6 Gold Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "8987" + { + "name" "UGC 6vs6 Silver Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "8988" + { + "name" "UGC 6vs6 Steel Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "8989" + { + "name" "UGC 6vs6 Iron Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "8990" + { + "name" "UGC 4vs4 1st Place Gold Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "8991" + { + "name" "UGC 4vs4 2nd Place Gold Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "8992" + { + "name" "UGC 4vs4 3rd Place Gold Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "8993" + { + "name" "UGC 4vs4 Gold Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "8994" + { + "name" "UGC 4vs4 Silver Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "8995" + { + "name" "UGC 4vs4 Steel Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "8996" + { + "name" "UGC 4vs4 Iron Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9029" + { + "name" "GAlloween Gold Medal 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Gold" + "item_description" "#TF_TournamentMedal_2015" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "9030" + { + "name" "GAlloween Silver Medal 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Silver" + "item_description" "#TF_TournamentMedal_2015" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "9031" + { + "name" "GAlloween Bronze Medal 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Bronze" + "item_description" "#TF_TournamentMedal_2015" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "9032" + { + "name" "GAlloween Participant Badge 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "9033" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9034" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9035" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9036" + { + "name" "AsiaFortress Cup Division 1 Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9037" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9038" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9039" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9040" + { + "name" "AsiaFortress Cup Division 2 Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9041" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9042" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9043" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9044" + { + "name" "AsiaFortress Cup Division 3 Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9045" + { + "name" "Xephos' Philanthropic Physiognomy" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2015_Xephos" + "item_description" "#TF_Medal_JingleJam2015_Xephos_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_xephos" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9046" + { + "name" "Honeydew's Charitable Countenance" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2015_Honeydew" + "item_description" "#TF_Medal_JingleJam2015_Honeydew_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_honeydew" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9047" + { + "name" "Special Snowflake" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_SpecialSnowflake" + "item_description" "#TF_Medal_SpecialSnowflake_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/w2015_special_snowflake/w2015_special_snowflake" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/w2015_special_snowflake/w2015_special_snowflake_%s.mdl" + } + } + "9048" + { + "name" "Gift of Giving" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_GiftOfGiving" + "item_description" "#TF_Medal_GiftOfGiving_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/w2015_gift_of_giving/w2015_gift_of_giving" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/w2015_gift_of_giving/w2015_gift_of_giving_%s.mdl" + } + } + "9049" + { + "name" "EdgeGamers UltiDuo Participant 2015" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EdgeGamersUltiDuo_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/edgegamers_ultiduo_participant/edgegamers_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/edgegamers_ultiduo_participant/edgegamers_ultiduo_participant_%s.mdl" + } + } + "9050" + { + "name" "LBTF2 6v6 Elite 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9051" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9052" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9053" + { + "name" "LBTF2 6v6 Elite Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9054" + { + "name" "LBTF2 6v6 Central 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9055" + { + "name" "LBTF2 6v6 Central 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9056" + { + "name" "LBTF2 6v6 Central 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9057" + { + "name" "LBTF2 6v6 Central Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9058" + { + "name" "LBTF2 6v6 Access 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9059" + { + "name" "LBTF2 6v6 Access 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9060" + { + "name" "LBTF2 6v6 Access 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9061" + { + "name" "LBTF2 6v6 Access Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9062" + { + "name" "LBTF2 6v6 Open 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9063" + { + "name" "LBTF2 6v6 Open 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9064" + { + "name" "LBTF2 6v6 Open 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9065" + { + "name" "LBTF2 6v6 Open Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9066" + { + "name" "LBTF2 Highlander Access 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "9067" + { + "name" "LBTF2 Highlander Access 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9068" + { + "name" "LBTF2 Highlander Access 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9069" + { + "name" "LBTF2 Highlander Access Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_participant_new" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9070" + { + "name" "LBTF2 Highlander Principal 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "9071" + { + "name" "LBTF2 Highlander Principal 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9072" + { + "name" "LBTF2 Highlander Principal 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9073" + { + "name" "LBTF2 Highlander Principal Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_participant_new" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9074" + { + "name" "Gamers Assembly Gold Medal 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Gold" + "item_description" "#TF_TournamentMedal_2016" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "9075" + { + "name" "Gamers Assembly Silver Medal 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Silver" + "item_description" "#TF_TournamentMedal_2016" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "9076" + { + "name" "Gamers Assembly Bronze Medal 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Bronze" + "item_description" "#TF_TournamentMedal_2016" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "9077" + { + "name" "Gamers Assembly Participant Badge 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Participant" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "9078" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9079" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9080" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9081" + { + "name" "AsiaFortress Cup Division 1 Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9082" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "9083" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "9084" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "9085" + { + "name" "AsiaFortress Cup Division 2 Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9086" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "9087" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "9088" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "9089" + { + "name" "AsiaFortress Cup Division 3 Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9090" + { + "name" "ozfortress Premier 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9091" + { + "name" "ozfortress Premier 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9092" + { + "name" "ozfortress Premier 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9093" + { + "name" "ozfortress Premier Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9094" + { + "name" "ozfortress Intermediate 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9095" + { + "name" "ozfortress Intermediate 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9096" + { + "name" "ozfortress Intermediate 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9097" + { + "name" "ozfortress Intermediate Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9098" + { + "name" "ozfortress Open 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9099" + { + "name" "ozfortress Open 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9100" + { + "name" "ozfortress Open 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9101" + { + "name" "ozfortress Open Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9102" + { + "name" "ozfortress Summer Cup 1st Place 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_First_Place" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "9103" + { + "name" "ozfortress Summer Cup 2nd Place 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Second_Place" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "9104" + { + "name" "ozfortress Summer Cup 3rd Place 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Third_Place" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "9105" + { + "name" "ozfortress Summer Cup Participant 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Participant" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "9106" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9107" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9108" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9109" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9110" + { + "name" "ETF2L 6v6 High Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9111" + { + "name" "ETF2L 6v6 High Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9112" + { + "name" "ETF2L 6v6 High Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9113" + { + "name" "ETF2L 6v6 High Playoff Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9114" + { + "name" "ETF2L 6v6 High Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9115" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9116" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9117" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9118" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9119" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9120" + { + "name" "ETF2L 6v6 Open Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9121" + { + "name" "ETF2L 6v6 Open Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9122" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9123" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9124" + { + "name" "ETF2L 6v6 Open Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9125" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9126" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9127" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9128" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9129" + { + "name" "ETF2L 6v6 High Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9130" + { + "name" "ETF2L 6v6 High Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9131" + { + "name" "ETF2L 6v6 High Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9132" + { + "name" "ETF2L 6v6 High Playoff Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9133" + { + "name" "ETF2L 6v6 High Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9134" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9135" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9136" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9137" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9138" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9139" + { + "name" "ETF2L 6v6 Open Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9140" + { + "name" "ETF2L 6v6 Open Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9141" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9142" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9143" + { + "name" "ETF2L 6v6 Open Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9144" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9145" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9146" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9147" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9148" + { + "name" "ETF2L Highlander High Gold Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9149" + { + "name" "ETF2L Highlander High Silver Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9150" + { + "name" "ETF2L Highlander High Bronze Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9151" + { + "name" "ETF2L Highlander High Playoff Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Playoff" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9152" + { + "name" "ETF2L Highlander High Participation Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9153" + { + "name" "ETF2L Highlander Mid Gold Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9154" + { + "name" "ETF2L Highlander Mid Silver Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9155" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9156" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9157" + { + "name" "ETF2L Highlander Mid Participation Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9158" + { + "name" "ETF2L Highlander Open Gold Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9159" + { + "name" "ETF2L Highlander Open Silver Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9160" + { + "name" "ETF2L Highlander Open Bronze Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9161" + { + "name" "ETF2L Highlander Open Playoff Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9162" + { + "name" "ETF2L Highlander Open Participation Medal Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9163" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9164" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9165" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9166" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9167" + { + "name" "ETF2L Highlander High Gold Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9168" + { + "name" "ETF2L Highlander High Silver Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9169" + { + "name" "ETF2L Highlander High Bronze Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9170" + { + "name" "ETF2L Highlander High Playoff Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Playoff" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9171" + { + "name" "ETF2L Highlander High Participation Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9172" + { + "name" "ETF2L Highlander Mid Gold Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9173" + { + "name" "ETF2L Highlander Mid Silver Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9174" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9175" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9176" + { + "name" "ETF2L Highlander Mid Participation Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9177" + { + "name" "ETF2L Highlander Open Gold Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9178" + { + "name" "ETF2L Highlander Open Silver Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9179" + { + "name" "ETF2L Highlander Open Bronze Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9180" + { + "name" "ETF2L Highlander Open Playoff Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9181" + { + "name" "ETF2L Highlander Open Participation Medal Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9182" + { + "name" "UGC Highlander Platinum Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "9183" + { + "name" "UGC Highlander Gold Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "9184" + { + "name" "UGC Highlander Silver Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "9185" + { + "name" "UGC Highlander Steel Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "9186" + { + "name" "UGC Highlander Iron Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9187" + { + "name" "UGC 6vs6 Platinum Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "9188" + { + "name" "UGC 6vs6 Gold Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "9189" + { + "name" "UGC 6vs6 Silver Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "9190" + { + "name" "UGC 6vs6 Steel Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "9191" + { + "name" "UGC 6vs6 Iron Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9192" + { + "name" "UGC 4vs4 Gold Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "9193" + { + "name" "UGC 4vs4 Silver Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "9194" + { + "name" "UGC 4vs4 Steel Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "9195" + { + "name" "UGC 4vs4 Iron Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9196" + { + "name" "UGC Highlander 1st Place Platinum Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "9197" + { + "name" "UGC Highlander 2nd Place Platinum Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "9198" + { + "name" "UGC Highlander 3rd Place Platinum Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "9199" + { + "name" "UGC Highlander Platinum Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "9200" + { + "name" "UGC Highlander 1st Place Gold Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "9201" + { + "name" "UGC Highlander 2nd Place Gold Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "9202" + { + "name" "UGC Highlander 3rd Place Gold Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "9203" + { + "name" "UGC Highlander Gold Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "9204" + { + "name" "UGC Highlander 1st Place Silver Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "9205" + { + "name" "UGC Highlander 2nd Place Silver Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "9206" + { + "name" "UGC Highlander 3rd Place Silver Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "9207" + { + "name" "UGC Highlander Silver Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "9208" + { + "name" "UGC Highlander Steel Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "9209" + { + "name" "UGC Highlander Iron Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9210" + { + "name" "UGC 6vs6 1st Place Gold Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "9211" + { + "name" "UGC 6vs6 2nd Place Gold Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "9212" + { + "name" "UGC 6vs6 3rd Place Gold Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "9213" + { + "name" "UGC 6vs6 Gold Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "9214" + { + "name" "UGC 6vs6 Silver Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "9215" + { + "name" "UGC 6vs6 Steel Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "9216" + { + "name" "UGC 6vs6 Iron Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9217" + { + "name" "UGC 4vs4 1st Place Gold Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "9218" + { + "name" "UGC 4vs4 2nd Place Gold Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "9219" + { + "name" "UGC 4vs4 3rd Place Gold Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "9220" + { + "name" "UGC 4vs4 Gold Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "9221" + { + "name" "UGC 4vs4 Silver Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "9222" + { + "name" "UGC 4vs4 Steel Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "9223" + { + "name" "UGC 4vs4 Iron Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_iron_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "0" + } + } + "9224" + { + "name" "AsiaFortress Mercenaries Cup 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_MC_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9225" + { + "name" "AsiaFortress Mercenaries Cup 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_MC_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9226" + { + "name" "AsiaFortress Mercenaries Cup 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_MC_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9227" + { + "name" "AsiaFortress Mercenaries Cup Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_MC_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9228" + { + "name" "TF2Maps 72hr TF2Jam Summer Participant 2016" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_summer_jimijam" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "9229" + { + "name" "Altruist's Adornment" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_reddit_random_acts" + "item_description" "#TF_reddit_random_acts_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/reddit_random_acts/reddit_random_acts" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/reddit_random_acts/reddit_random_acts_%s.mdl" + } + } + "9230" + { + "name" "Florida LAN Medal 2016" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Florida_LAN_2016" + "item_description" "#TF_TournamentMedal_Florida_LAN_2016_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/florida_lan/florida_lan" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/florida_lan/florida_lan_%s.mdl" + } + } + "9231" + { + "name" "Jaunty Camper 2016" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier1" + "item_description" "#TF_Medal_TipOfTheHats2016_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2016_t1/toth2016_t1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2016_t1/toth2016_t1_%s.mdl" + } + } + "9232" + { + "name" "Jaunty Benefactor 2016" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier2" + "item_description" "#TF_Medal_TipOfTheHats2016_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2016_t2/toth2016_t2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2016_t2/toth2016_t2_%s.mdl" + } + } + "9233" + { + "name" "Jaunty Trailblazer 2016" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier3" + "item_description" "#TF_Medal_TipOfTheHats2016_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2016_t3/toth2016_t3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2016_t3/toth2016_t3_%s.mdl" + } + } + "9234" + { + "name" "ozfortress Premier 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9235" + { + "name" "ozfortress Premier 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9236" + { + "name" "ozfortress Premier 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9237" + { + "name" "ozfortress Premier Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9238" + { + "name" "ozfortress Intermediate 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9239" + { + "name" "ozfortress Intermediate 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9240" + { + "name" "ozfortress Intermediate 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9241" + { + "name" "ozfortress Intermediate Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9242" + { + "name" "ozfortress Open 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9243" + { + "name" "ozfortress Open 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9244" + { + "name" "ozfortress Open 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9245" + { + "name" "ozfortress Open Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9246" + { + "name" "ozfortress Premier 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9247" + { + "name" "ozfortress Premier 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9248" + { + "name" "ozfortress Premier 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9249" + { + "name" "ozfortress Premier Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9250" + { + "name" "ozfortress Intermediate 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9251" + { + "name" "ozfortress Intermediate 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9252" + { + "name" "ozfortress Intermediate 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9253" + { + "name" "ozfortress Intermediate Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9254" + { + "name" "ozfortress Open 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9255" + { + "name" "ozfortress Open 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9256" + { + "name" "ozfortress Open 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9257" + { + "name" "ozfortress Open Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + + + "9260" + { + "name" "LBTF2 6v6 Elite 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9261" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9262" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9263" + { + "name" "LBTF2 6v6 Elite Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9264" + { + "name" "LBTF2 6v6 Central 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9265" + { + "name" "LBTF2 6v6 Central 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9266" + { + "name" "LBTF2 6v6 Central 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9267" + { + "name" "LBTF2 6v6 Central Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9268" + { + "name" "LBTF2 6v6 Access 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9269" + { + "name" "LBTF2 6v6 Access 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9270" + { + "name" "LBTF2 6v6 Access 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9271" + { + "name" "LBTF2 6v6 Access Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9272" + { + "name" "LBTF2 6v6 Open 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9273" + { + "name" "LBTF2 6v6 Open 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9274" + { + "name" "LBTF2 6v6 Open 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9275" + { + "name" "LBTF2 6v6 Open Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9276" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9277" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9278" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9279" + { + "name" "AsiaFortress Cup Division 1 Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9280" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "9281" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "9282" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "9283" + { + "name" "AsiaFortress Cup Division 2 Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9284" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "9285" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "9286" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "9287" + { + "name" "AsiaFortress Cup Division 3 Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9288" + { + "name" "GAlloween Gold Medal 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Gold" + "item_description" "#TF_TournamentMedal_2016" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "9289" + { + "name" "GAlloween Silver Medal 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Silver" + "item_description" "#TF_TournamentMedal_2016" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "9290" + { + "name" "GAlloween Bronze Medal 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Bronze" + "item_description" "#TF_TournamentMedal_2016" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "9291" + { + "name" "GAlloween Participant Badge 2016" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GAlloween_Participant" + "item_description" "#TF_TournamentMedal_2016" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "9292" + { + "name" "Chapelaria 6v6 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place.mdl" + } + "9293" + { + "name" "Chapelaria 6v6 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place.mdl" + } + "9294" + { + "name" "Chapelaria 6v6 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place.mdl" + } + "9295" + { + "name" "Chapelaria 6v6 Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant.mdl" + } + "9296" + { + "name" "Hannah's Altruistic Aspect" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2016_Hannah" + "item_description" "#TF_Medal_JingleJam2016_Hannah_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_hannah" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "9297" + { + "name" "Duncan's Kindhearted Kisser" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2016_Duncan" + "item_description" "#TF_Medal_JingleJam2016_Duncan_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_duncan" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "4" + } + } + "9298" + { + "name" "Sips' Selfless Simulacrum" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2016_Sips" + "item_description" "#TF_Medal_JingleJam2016_Sips_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_sips" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "5" + } + } + "9299" + { + "name" "Sjin's Generous Guise" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2016_Sjin" + "item_description" "#TF_Medal_JingleJam2016_Sjin_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_sjin" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "6" + } + } + "9300" + { + "name" "PASS Time Tournament Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PASSTime_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/passtime_medal/passtime_medal_gold" + "model_player" "models/workshop_partner/player/items/all_class/passtime_medal/passtime_medal.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "9301" + { + "name" "PASS Time Tournament Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PASSTime_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/passtime_medal/passtime_medal_silver" + "model_player" "models/workshop_partner/player/items/all_class/passtime_medal/passtime_medal.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "9302" + { + "name" "PASS Time Tournament Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PASSTime_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop_partner/player/items/all_class/passtime_medal/passtime_medal_bronze" + "model_player" "models/workshop_partner/player/items/all_class/passtime_medal/passtime_medal.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "9303" + { + "name" "ESA Rewind 1st Place 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_rewind_lan_gold" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_lan_gold/rewind_lan_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_lan_gold/rewind_lan_gold_%s.mdl" + } + } + "9304" + { + "name" "ESA Rewind 2nd Place 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_rewind_lan_silver" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_lan_silver/rewind_lan_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_lan_silver/rewind_lan_silver_%s.mdl" + } + } + "9305" + { + "name" "ESA Rewind 3rd Place 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_rewind_lan_bronze" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_lan_bronze/rewind_lan_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_lan_bronze/rewind_lan_bronze_%s.mdl" + } + } + "9306" + { + "name" "ESA Rewind Participant 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_rewind_lan_participant" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_lan_participant/rewind_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_lan_participant/rewind_lan_participant_%s.mdl" + } + } + "9307" + { + "name" "Special Snowflake 2016" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_SpecialSnowflake2016" + "item_description" "#TF_Medal_SpecialSnowflake2016_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/w2016_special_snowflake/w2016_special_snowflake" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/w2016_special_snowflake/w2016_special_snowflake_%s.mdl" + } + } + "9308" + { + "name" "Gift of Giving 2016" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_GiftOfGiving2016" + "item_description" "#TF_Medal_GiftOfGiving2016_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/w2016_gift_of_giving/w2016_gift_of_giving" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/w2016_gift_of_giving/w2016_gift_of_giving_%s.mdl" + } + } + "9309" + { + "name" "LBTF2 6v6 Elite 1st Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9310" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9311" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9312" + { + "name" "LBTF2 6v6 Elite Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9313" + { + "name" "LBTF2 6v6 Access 1st Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9314" + { + "name" "LBTF2 6v6 Access 2nd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9315" + { + "name" "LBTF2 6v6 Access 3rd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9316" + { + "name" "LBTF2 6v6 Access Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9317" + { + "name" "LBTF2 6v6 Open 1st Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9318" + { + "name" "LBTF2 6v6 Open 2nd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9319" + { + "name" "LBTF2 6v6 Open 3rd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9320" + { + "name" "LBTF2 6v6 Open Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9321" + { + "name" "LBTF2 6v6 Central Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6v6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9322" + { + "name" "TF2Maps 72hr TF2Jam Winter Participant 2017" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_winter_jimijam" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "9323" + { + "name" "Rally Call 2017 - 1st place Medal" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RallyCall_Charity_2017_Gold" + "item_description" "#TF_TournamentMedal_RallyCall_Charity_2017_Gold_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rally_call_2017/rally_call_2017_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rally_call_2017/rally_call_2017_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9324" + { + "name" "Rally Call 2017 - 2nd Place Medal" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RallyCall_Charity_2017_Silver" + "item_description" "#TF_TournamentMedal_RallyCall_Charity_2017_Silver_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rally_call_2017/rally_call_2017_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rally_call_2017/rally_call_2017_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9325" + { + "name" "Rally Call 2017 Participant/Helper Medal" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RallyCall_Charity_2017_White" + "item_description" "#TF_TournamentMedal_RallyCall_Charity_2017_White_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rally_call_2017/rally_call_2017_white" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rally_call_2017/rally_call_2017_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "9326" + { + "name" "Rally Call 2017 Donator Medal" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RallyCall_Charity_2017_Purple" + "item_description" "#TF_TournamentMedal_RallyCall_Charity_2017_Purple_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rally_call_2017/rally_call_2017_purple" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rally_call_2017/rally_call_2017_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9327" + { + "name" "ozfortress Premier 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9328" + { + "name" "ozfortress Premier 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9329" + { + "name" "ozfortress Premier 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9330" + { + "name" "ozfortress Premier Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9331" + { + "name" "ozfortress Intermediate 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9332" + { + "name" "ozfortress Intermediate 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9333" + { + "name" "ozfortress Intermediate 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9334" + { + "name" "ozfortress Intermediate Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9335" + { + "name" "ozfortress Open 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9336" + { + "name" "ozfortress Open 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9337" + { + "name" "ozfortress Open 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9338" + { + "name" "ozfortress Open Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9339" + { + "name" "UGC Highlander 1st Place Platinum Season 19" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first_demo.mdl" + } + "9340" + { + "name" "UGC Highlander 2nd Place Platinum Season 19" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second_demo.mdl" + } + "9341" + { + "name" "UGC Highlander 3rd Place Platinum Season 19" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third_demo.mdl" + } + "9342" + { + "name" "UGC Highlander Platinum Participant Season 19" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant_demo.mdl" + } + "9343" + { + "name" "UGC Highlander 1st Place Gold Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first_demo.mdl" + } + "9344" + { + "name" "UGC Highlander 2nd Place Gold Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second_demo.mdl" + } + "9345" + { + "name" "UGC Highlander 3rd Place Gold Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third_demo.mdl" + } + "9346" + { + "name" "UGC Highlander Gold Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant_demo.mdl" + } + "9347" + { + "name" "UGC Highlander 1st Place Silver Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_first/ugc_season11_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_first/ugc_season11_silver_first_demo.mdl" + } + "9348" + { + "name" "UGC Highlander 2nd Place Silver Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_second/ugc_season11_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_second/ugc_season11_silver_second_demo.mdl" + } + "9349" + { + "name" "UGC Highlander 3rd Place Silver Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_third/ugc_season11_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_third/ugc_season11_silver_third_demo.mdl" + } + "9350" + { + "name" "UGC Highlander Silver Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "9351" + { + "name" "UGC Highlander Steel Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "9352" + { + "name" "UGC Highlander Iron Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant_demo.mdl" + } + "9353" + { + "name" "UGC 6vs6 1st Place Gold Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first_demo.mdl" + } + "9354" + { + "name" "UGC 6vs6 2nd Place Gold Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second_demo.mdl" + } + "9355" + { + "name" "UGC 6vs6 3rd Place Gold Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third_demo.mdl" + } + "9356" + { + "name" "UGC 6vs6 Gold Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant_demo.mdl" + } + "9357" + { + "name" "UGC 6vs6 Silver Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "9358" + { + "name" "UGC 6vs6 Steel Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "9359" + { + "name" "UGC 6vs6 Iron Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant_demo.mdl" + } + "9360" + { + "name" "UGC 4vs4 1st Place Gold Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first_demo.mdl" + } + "9361" + { + "name" "UGC 4vs4 2nd Place Gold Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second_demo.mdl" + } + "9362" + { + "name" "UGC 4vs4 3rd Place Gold Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third_demo.mdl" + } + "9363" + { + "name" "UGC 4vs4 Gold Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant_demo.mdl" + } + "9364" + { + "name" "UGC 4vs4 Silver Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "9365" + { + "name" "UGC 4vs4 Steel Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "9366" + { + "name" "UGC 4vs4 Iron Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Iron_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_iron_participant/ugc_season11_iron_participant_demo.mdl" + } + "9367" + { + "name" "UGC Highlander 1st Place Platinum Season 20" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first_demo.mdl" + } + "9368" + { + "name" "UGC Highlander 2nd Place Platinum Season 20" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second_demo.mdl" + } + "9369" + { + "name" "UGC Highlander Steel Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "9370" + { + "name" "UGC Highlander Platinum Participant Season 20" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant_demo.mdl" + } + "9371" + { + "name" "UGC Highlander 1st Place Gold Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first_demo.mdl" + } + "9372" + { + "name" "UGC Highlander 2nd Place Gold Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second_demo.mdl" + } + "9373" + { + "name" "UGC Highlander 3rd Place Gold Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third_demo.mdl" + } + "9374" + { + "name" "UGC Highlander Gold Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant_demo.mdl" + } + "9375" + { + "name" "UGC Highlander 1st Place Silver Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_first/ugc_season11_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_first/ugc_season11_silver_first_demo.mdl" + } + "9376" + { + "name" "UGC Highlander 2nd Place Silver Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_second/ugc_season11_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_second/ugc_season11_silver_second_demo.mdl" + } + "9377" + { + "name" "UGC Highlander 3rd Place Silver Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_third/ugc_season11_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_third/ugc_season11_silver_third_demo.mdl" + } + "9378" + { + "name" "UGC Highlander Silver Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "9379" + { + "name" "UGC Highlander 3rd Place Platinum Season 20" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third_demo.mdl" + } + "9380" + { + "name" "UGC 6vs6 1st Place Platinum Season 22" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_first/ugc_season11_platinum_first_demo.mdl" + } + "9381" + { + "name" "UGC 6vs6 2nd Place Platinum Season 22" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_second/ugc_season11_platinum_second_demo.mdl" + } + "9382" + { + "name" "UGC 6vs6 3rd Place Platinum Season 22" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_third/ugc_season11_platinum_third_demo.mdl" + } + "9383" + { + "name" "UGC 6vs6 Platinum Participant Season 22" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_platinum_participant/ugc_season11_platinum_participant_demo.mdl" + } + "9384" + { + "name" "UGC 6vs6 Silver Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "9385" + { + "name" "UGC 6vs6 Steel Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "9386" + { + "name" "UGC 4vs4 1st Place Gold Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_first/ugc_season11_gold_first_demo.mdl" + } + "9387" + { + "name" "UGC 4vs4 2nd Place Gold Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_second/ugc_season11_gold_second_demo.mdl" + } + "9388" + { + "name" "UGC 4vs4 3rd Place Gold Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_third/ugc_season11_gold_third_demo.mdl" + } + "9389" + { + "name" "UGC 4vs4 Gold Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_gold_participant/ugc_season11_gold_participant_demo.mdl" + } + "9390" + { + "name" "UGC 4vs4 Silver Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_silver_participant/ugc_season11_silver_participant_demo.mdl" + } + "9391" + { + "name" "UGC 4vs4 Steel Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season11_steel_participant/ugc_season11_steel_participant_demo.mdl" + } + "9392" + { + "name" "RGB LAN 1st Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB_LAN_Gold" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold_%s.mdl" + } + } + "9393" + { + "name" "RGB LAN 2nd Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB_LAN_Silver" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver_%s.mdl" + } + } + "9394" + { + "name" "RGB LAN 3rd Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB_LAN_Bronze" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze_%s.mdl" + } + } + "9395" + { + "name" "RGB LAN Participant 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB_LAN_Participant" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant_%s.mdl" + } + } + "9396" + { + "name" "Gamers Assembly Gold Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Gold" + "item_description" "#TF_TournamentMedal_2017" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_gold/gamers_assembly_gold_%s.mdl" + } + } + "9397" + { + "name" "Gamers Assembly Silver Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Silver" + "item_description" "#TF_TournamentMedal_2017" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_silver/gamers_assembly_silver_%s.mdl" + } + } + "9398" + { + "name" "Gamers Assembly Bronze Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Bronze" + "item_description" "#TF_TournamentMedal_2017" + "capabilities" + { + "paintable" "1" + } + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_bronze/gamers_assembly_bronze_%s.mdl" + } + } + "9399" + { + "name" "Gamers Assembly Participant Badge 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GamersAssembly_Participant" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gamers_assembly_participant/gamers_assembly_participant_%s.mdl" + } + } + "9400" + { + "name" "Chapelaria 6v6 Legatus 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place.mdl" + } + "9401" + { + "name" "Chapelaria 6v6 Legatus 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place.mdl" + } + "9402" + { + "name" "Chapelaria 6v6 Legatus 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place.mdl" + } + "9403" + { + "name" "Chapelaria 6v6 Legatus Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant.mdl" + } + "9404" + { + "name" "Chapelaria 6v6 Gladiator 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place.mdl" + } + "9405" + { + "name" "Chapelaria 6v6 Gladiator 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place.mdl" + } + "9406" + { + "name" "Chapelaria 6v6 Gladiator 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place.mdl" + } + "9407" + { + "name" "Chapelaria 6v6 Gladiator Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant.mdl" + } + "9408" + { + "name" "Chapelaria Ultiduo Gladiator 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold.mdl" + } + "9409" + { + "name" "Chapelaria Ultiduo Gladiator 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver.mdl" + } + "9410" + { + "name" "Chapelaria Ultiduo Gladiator 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze.mdl" + } + "9411" + { + "name" "Chapelaria Ultiduo Gladiator Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant.mdl" + } + "9412" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9413" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9414" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9415" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9416" + { + "name" "ETF2L 6v6 High Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9417" + { + "name" "ETF2L 6v6 High Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9418" + { + "name" "ETF2L 6v6 High Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9419" + { + "name" "ETF2L 6v6 High Playoff Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9420" + { + "name" "ETF2L 6v6 High Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9421" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9422" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9423" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9424" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9425" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9426" + { + "name" "ETF2L 6v6 Open Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9427" + { + "name" "ETF2L 6v6 Open Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9428" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9429" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9430" + { + "name" "ETF2L 6v6 Open Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9431" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9432" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9433" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9434" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9435" + { + "name" "ETF2L 6v6 High Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9436" + { + "name" "ETF2L 6v6 High Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9437" + { + "name" "ETF2L 6v6 High Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9438" + { + "name" "ETF2L 6v6 High Playoff Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9439" + { + "name" "ETF2L 6v6 High Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9440" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9441" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9442" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9443" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9444" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9445" + { + "name" "ETF2L 6v6 Open Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9446" + { + "name" "ETF2L 6v6 Open Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9447" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9448" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9449" + { + "name" "ETF2L 6v6 Open Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9450" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9451" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9452" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9453" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9454" + { + "name" "ETF2L 6v6 High Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9455" + { + "name" "ETF2L 6v6 High Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9456" + { + "name" "ETF2L 6v6 High Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9457" + { + "name" "ETF2L 6v6 High Playoff Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9458" + { + "name" "ETF2L 6v6 High Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9459" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9460" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9461" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9462" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9463" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9464" + { + "name" "ETF2L 6v6 Open Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9465" + { + "name" "ETF2L 6v6 Open Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9466" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9467" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9468" + { + "name" "ETF2L 6v6 Open Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9469" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9470" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9471" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9472" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9473" + { + "name" "ETF2L Highlander High/Mid Gold Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_HighMid_Gold" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9474" + { + "name" "ETF2L Highlander High/Mid Silver Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_HighMid_Silver" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9475" + { + "name" "ETF2L Highlander High/Mid Bronze Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_HighMid_Bronze" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9476" + { + "name" "ETF2L Highlander High/Mid Playoff Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_HighMid_Playoff" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9477" + { + "name" "ETF2L Highlander High/Mid Participation Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_HighMid_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9478" + { + "name" "ETF2L Highlander Open Gold Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9479" + { + "name" "ETF2L Highlander Open Silver Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9480" + { + "name" "ETF2L Highlander Open Bronze Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9481" + { + "name" "ETF2L Highlander Open Playoff Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9482" + { + "name" "ETF2L Highlander Open Participation Medal Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9483" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9484" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9485" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9486" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9487" + { + "name" "ETF2L Highlander High Gold Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9488" + { + "name" "ETF2L Highlander High Silver Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9489" + { + "name" "ETF2L Highlander High Bronze Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9490" + { + "name" "ETF2L Highlander High Playoff Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Playoff" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9491" + { + "name" "ETF2L Highlander High Participation Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9492" + { + "name" "ETF2L Highlander Mid Gold Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9493" + { + "name" "ETF2L Highlander Mid Silver Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9494" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9495" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9496" + { + "name" "ETF2L Highlander Mid Participation Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9497" + { + "name" "ETF2L Highlander Open Gold Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9498" + { + "name" "ETF2L Highlander Open Silver Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9499" + { + "name" "ETF2L Highlander Open Bronze Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9500" + { + "name" "ETF2L Highlander Open Playoff Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9501" + { + "name" "ETF2L Highlander Open Participation Medal Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9502" + { + "name" "ETF2L Ultiduo 6 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo6_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "9503" + { + "name" "ETF2L Ultiduo 6 Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo6_Silver_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "9504" + { + "name" "ETF2L Ultiduo 6 Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo6_Bronze_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "9505" + { + "name" "ETF2L Ultiduo 6 Participation Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo6_Participation_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "9506" + { + "name" "ETF2L Highlander Open 2 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open2_Gold" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_1st_place/etf2l_highlander_open_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_1st_place/etf2l_highlander_open_1st_place_%s.mdl" + } + } + "9507" + { + "name" "ETF2L Highlander Open 2 Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open2_Silver" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_2nd_place/etf2l_highlander_open_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_2nd_place/etf2l_highlander_open_2nd_place_%s.mdl" + } + } + "9508" + { + "name" "ETF2L Highlander Open 2 Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open2_Bronze" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_3rd_place/etf2l_highlander_open_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_3rd_place/etf2l_highlander_open_3rd_place_%s.mdl" + } + } + "9509" + { + "name" "ETF2L Highlander Open 2 Participation Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open2_Participation" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_participant/etf2l_highlander_open_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_participant/etf2l_highlander_open_participant_%s.mdl" + } + } + "9510" + { + "name" "Mappers vs. Machines Participant Medal 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_MappersVsMachines_2017" + "item_description" "#TF_TournamentMedal_MappersVsMachines_2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mappers_vs_machines_medal/mappers_vs_machines_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mappers_vs_machines_medal/mappers_vs_machines_medal_%s.mdl" + } + } + "9511" + { + "name" "CappingTV Ultiduo Summer Brawl 1st Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerGold" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold_%s.mdl" + } + } + "9512" + { + "name" "CappingTV Ultiduo Summer Brawl 2nd Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerSilver" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver_%s.mdl" + } + } + "9513" + { + "name" "CappingTV Ultiduo Summer Brawl 3rd Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBronze" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze_%s.mdl" + } + } + "9514" + { + "name" "CappingTV Ultiduo Summer Brawl Participant 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerParticipant" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant_%s.mdl" + } + } + "9515" + { + "name" "The Heartfelt Hug" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_HugsTF_2017" + "item_description" "#TF_Medal_HugsTF_2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/hugs_tf_medal/hugs_tf_medal" + "propername" "1" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hugs_tf_medal/hugs_tf_medal_%s.mdl" + } + } + "9516" + { + "name" "Snack's Summery Ultiduo Siesta Gold Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Gold" + "item_description" "#TF_TournamentMedal_Summer2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_gold/snacks_summery_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_gold/snacks_summery_ultiduo_gold_%s.mdl" + } + } + "9517" + { + "name" "Snack's Summery Ultiduo Siesta Silver Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Silver" + "item_description" "#TF_TournamentMedal_Summer2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_silver/snacks_summery_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_silver/snacks_summery_ultiduo_silver_%s.mdl" + } + } + "9518" + { + "name" "Snack's Summery Ultiduo Siesta Bronze Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Bronze" + "item_description" "#TF_TournamentMedal_Summer2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_bronze/snacks_summery_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_bronze/snacks_summery_ultiduo_bronze_%s.mdl" + } + } + "9519" + { + "name" "Snack's Summery Ultiduo Siesta Participation Medal 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Participant" + "item_description" "#TF_TournamentMedal_Summer2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_participant/snacks_summery_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_participant/snacks_summery_ultiduo_participant_%s.mdl" + } + } + "9520" + { + "name" "FBTF Cup 6v6 Wastex Miller 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9521" + { + "name" "FBTF Cup 6v6 Wastex Miller 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9522" + { + "name" "FBTF Cup 6v6 Wastex Miller 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9523" + { + "name" "FBTF Cup 6v6 Wastex Miller Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9524" + { + "name" "FBTF Cup 6v6 Barts Rimet 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9525" + { + "name" "FBTF Cup 6v6 Barts Rimet 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9526" + { + "name" "FBTF Cup 6v6 Barts Rimet 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9527" + { + "name" "FBTF Cup 6v6 Barts Rimet Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9528" + { + "name" "FBTF Cup 6v6 Vic Basten 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "9529" + { + "name" "FBTF Cup 6v6 Vic Basten 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "9530" + { + "name" "FBTF Cup 6v6 Vic Basten 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "9531" + { + "name" "FBTF Cup 6v6 Vic Basten Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "9532" + { + "name" "Arms Race 3 1st Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_first" + "item_description" "#TF_TournamentMedal_armsrace3" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_first/armsrace_medal_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_first/armsrace_medal_first_%s.mdl" + } + } + "9533" + { + "name" "Arms Race 3 2nd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_second" + "item_description" "#TF_TournamentMedal_armsrace3" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_second/armsrace_medal_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_second/armsrace_medal_second_%s.mdl" + } + } + "9534" + { + "name" "Arms Race 3 3rd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_third" + "item_description" "#TF_TournamentMedal_armsrace3" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_third/armsrace_medal_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_third/armsrace_medal_third_%s.mdl" + } + } + "9535" + { + "name" "Arms Race 3 Participant" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_armsrace_participant" + "item_description" "#TF_TournamentMedal_armsrace3" + "image_inventory" "backpack/workshop/player/items/all_class/armsrace_medal_participant/armsrace_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/armsrace_medal_participant/armsrace_medal_participant_%s.mdl" + } + } + "9537" + { + "name" "ozfortress Premier 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9538" + { + "name" "ozfortress Premier 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9539" + { + "name" "ozfortress Premier 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9540" + { + "name" "ozfortress Premier Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9541" + { + "name" "ozfortress Intermediate 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9542" + { + "name" "ozfortress Intermediate 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9543" + { + "name" "ozfortress Intermediate 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9544" + { + "name" "ozfortress Intermediate Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9545" + { + "name" "ozfortress Open 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9546" + { + "name" "ozfortress Open 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9547" + { + "name" "ozfortress Open 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9548" + { + "name" "ozfortress Open Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9549" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9550" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9551" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9552" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9553" + { + "name" "ETF2L 6v6 High Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9554" + { + "name" "ETF2L 6v6 High Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9555" + { + "name" "ETF2L 6v6 High Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9556" + { + "name" "ETF2L 6v6 High Playoff Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9557" + { + "name" "ETF2L 6v6 High Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9558" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9559" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9560" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9561" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9562" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9563" + { + "name" "ETF2L 6v6 Open Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9564" + { + "name" "ETF2L 6v6 Open Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9565" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9566" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9567" + { + "name" "ETF2L 6v6 Open Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9568" + { + "name" "ETF2L Fresh Meat Challenge Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_gold/etf2l_fresh_meat_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_gold/etf2l_fresh_meat_gold_%s.mdl" + } + } + "9569" + { + "name" "ETF2L Fresh Meat Challenge Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_silver/etf2l_fresh_meat_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_silver/etf2l_fresh_meat_silver_%s.mdl" + } + } + "9570" + { + "name" "ETF2L Fresh Meat Challenge Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_bronze/etf2l_fresh_meat_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_bronze/etf2l_fresh_meat_bronze_%s.mdl" + } + } + "9571" + { + "name" "ETF2L Fresh Meat Challenge Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_participant/etf2l_fresh_meat_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_participant/etf2l_fresh_meat_participant_%s.mdl" + } + } + "9572" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9573" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9574" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9575" + { + "name" "AsiaFortress Cup Division 1 Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9576" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "9577" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "9578" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "9579" + { + "name" "AsiaFortress Cup Division 2 Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9580" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "9581" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "9582" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "9583" + { + "name" "AsiaFortress Cup Division 3 Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9584" + { + "name" "Chapelaria Ultiduo Brazuca Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Brazuca_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold.mdl" + } + "9585" + { + "name" "Chapelaria Ultiduo Brazuca Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Brazuca_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant.mdl" + } + "9586" + { + "name" "Chapelaria Ultiduo Hermanos Winner Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Hermanos_Winner" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold.mdl" + } + "9587" + { + "name" "Chapelaria Ultiduo Hermanos Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Hermanos_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant.mdl" + } + + "9588" + { + "name" "Chapelaria Ultiduo Legatus 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold.mdl" + } + "9589" + { + "name" "Chapelaria Ultiduo Legatus 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver.mdl" + } + "9590" + { + "name" "Chapelaria Ultiduo Legatus 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze.mdl" + } + "9591" + { + "name" "Blapature Co. Contributor 2017" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2017" + "item_description" "#TF_TournamentMedal_Blapature2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tf_medal_blapature/tf_medal_blapature" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf_medal_blapature/tf_medal_blapature_%s.mdl" + } + } + "9592" + { + "name" "TF2Maps 72hr TF2Jam Summer Participant 2017" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_summer_jimijam" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "9593" + { + "name" "TFCL 6v6 Alpha" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFCL_6v6_Alpha" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha_%s.mdl" + } + } + "9594" + { + "name" "TFCL 6v6 1st Place Alpha Season" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Gold" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Season" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9595" + { + "name" "TFCL 6v6 2nd Place Alpha Season" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Silver" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Season" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9596" + { + "name" "TFCL 6v6 3rd Place Alpha Season" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Bronze" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Season" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9597" + { + "name" "TFCL 6v6 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9598" + { + "name" "TFCL 6v6 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9599" + { + "name" "TFCL 6v6 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9600" + { + "name" "TFCL 6v6 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9601" + { + "name" "TFCL Ultiduo Alpha" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Alpha" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha_%s.mdl" + } + } + "9602" + { + "name" "TFCL Ultiduo 1st Place Alpha Season" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Gold" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Season" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9603" + { + "name" "TFCL Ultiduo 2nd Place Alpha Season" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Silver" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Season" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9604" + { + "name" "TFCL Ultiduo 3rd Place Alpha Season" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Bronze" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_Season" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9605" + { + "name" "TFCL Ultiduo 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9606" + { + "name" "TFCL Ultiduo 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9607" + { + "name" "TFCL Ultiduo 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9608" + { + "name" "TFCL Ultiduo Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9609" + { + "name" "TFCL Ultiduo 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9610" + { + "name" "TFCL Ultiduo 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9611" + { + "name" "TFCL Ultiduo 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9612" + { + "name" "TFCL Ultiduo Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9613" + { + "name" "TF2Maps Charitable Heart 2017" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsCharitableHeart" + "item_description" "#TF2MapsCharitableHeart2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart_2/72hr_jamheart_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "9614" + { + "name" "CappingTV Ultiduo Winter Chalice 1st Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_WinterGold" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold_%s.mdl" + } + } + "9615" + { + "name" "CappingTV Ultiduo Winter Chalice 2nd Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_WinterSilver" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver_%s.mdl" + } + } + "9616" + { + "name" "CappingTV Ultiduo Winter Chalice 3rd Place 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_WinterBronze" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze_%s.mdl" + } + } + "9617" + { + "name" "CappingTV Ultiduo Winter Chalice Participant 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_WinterParticipant" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant_%s.mdl" + } + } + "9618" + { + "name" "ozfortress Premier 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9619" + { + "name" "ozfortress Premier 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9620" + { + "name" "ozfortress Premier 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9621" + { + "name" "ozfortress Premier Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9622" + { + "name" "ozfortress Intermediate 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9623" + { + "name" "ozfortress Intermediate 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9624" + { + "name" "ozfortress Intermediate 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9625" + { + "name" "ozfortress Intermediate Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9626" + { + "name" "ozfortress Open 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9627" + { + "name" "ozfortress Open 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9628" + { + "name" "ozfortress Open 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9629" + { + "name" "ozfortress Open Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9630" + { + "name" "Jaunty Globetrotter 2017" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier3_2017" + "item_description" "#TF_Medal_TipOfTheHats2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2017_t3/toth2017_t3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2017_t3/toth2017_t3_%s.mdl" + } + } + "9631" + { + "name" "Jaunty Voyager 2017" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier2_2017" + "item_description" "#TF_Medal_TipOfTheHats2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2017_t2/toth2017_t2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2017_t2/toth2017_t2_%s.mdl" + } + } + "9632" + { + "name" "Jaunty Adventurer 2017" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier1_2017" + "item_description" "#TF_Medal_TipOfTheHats2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2017_t1/toth2017_t1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2017_t1/toth2017_t1_%s.mdl" + } + } + "9633" + { + "name" "Snack's Summery Ultiduo Siesta Gold Medal 2017 Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Gold" + "item_description" "#TF_TournamentMedal_SnacksSummeryUltiduo_2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_gold/snacks_summery_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_gold/snacks_summery_ultiduo_gold_%s.mdl" + } + } + "9634" + { + "name" "Snack's Summery Ultiduo Siesta Silver Medal 2017 Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Silver" + "item_description" "#TF_TournamentMedal_SnacksSummeryUltiduo_2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_silver/snacks_summery_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_silver/snacks_summery_ultiduo_silver_%s.mdl" + } + } + "9635" + { + "name" "Snack's Summery Ultiduo Siesta Bronze Medal 2017 Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Bronze" + "item_description" "#TF_TournamentMedal_SnacksSummeryUltiduo_2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_bronze/snacks_summery_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_bronze/snacks_summery_ultiduo_bronze_%s.mdl" + } + } + "9636" + { + "name" "Snack's Summery Ultiduo Siesta Participation Medal 2017 Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SnacksSummeryUltiduo_Participant" + "item_description" "#TF_TournamentMedal_SnacksSummeryUltiduo_2017" + "image_inventory" "backpack/workshop/player/items/all_class/snacks_summery_ultiduo_participant/snacks_summery_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/snacks_summery_ultiduo_participant/snacks_summery_ultiduo_participant_%s.mdl" + } + } + "9637" + { + "name" "Ready Steady Pan Winner Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_WinnerS3" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_WinnerS3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_s03_winner/rsp_s03_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_s03_winner/rsp_s03_winner_%s.mdl" + } + } + "9638" + { + "name" "Ready Steady Pan Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_ParticipantS3" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_ParticipantS3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_s03_participant/rsp_s03_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_s03_participant/rsp_s03_participant_%s.mdl" + } + } + "9639" + { + "name" "ETF2L 6v6 Low Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9640" + { + "name" "ETF2L 6v6 Low Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9641" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9642" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9643" + { + "name" "ETF2L 6v6 Low Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9644" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9645" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9646" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9647" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9648" + { + "name" "ETF2L Highlander High Gold Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9649" + { + "name" "ETF2L Highlander High Silver Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9650" + { + "name" "ETF2L Highlander High Bronze Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9651" + { + "name" "ETF2L Highlander High Playoff Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Playoff" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9652" + { + "name" "ETF2L Highlander High Participation Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9653" + { + "name" "ETF2L Highlander Mid Gold Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9654" + { + "name" "ETF2L Highlander Mid Silver Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9655" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9656" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9657" + { + "name" "ETF2L Highlander Mid Participation Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9658" + { + "name" "ETF2L Highlander Open Gold Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9659" + { + "name" "ETF2L Highlander Open Silver Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9660" + { + "name" "ETF2L Highlander Open Bronze Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9661" + { + "name" "ETF2L Highlander Open Playoff Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9662" + { + "name" "ETF2L Highlander Open Participation Medal Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9663" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9664" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9665" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9666" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9667" + { + "name" "ETF2L 6v6 High Gold Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9668" + { + "name" "ETF2L 6v6 High Silver Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9669" + { + "name" "ETF2L 6v6 High Bronze Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9670" + { + "name" "ETF2L 6v6 High Playoff Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Playoff" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9671" + { + "name" "ETF2L 6v6 High Participation Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_High_Participation" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9672" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9673" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9674" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9675" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9676" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9677" + { + "name" "ETF2L 6v6 Open Gold Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9678" + { + "name" "ETF2L 6v6 Open Silver Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9679" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9680" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9681" + { + "name" "ETF2L 6v6 Open Participation Medal Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9682" + { + "name" "TFCL Highlander 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9683" + { + "name" "TFCL Highlander 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9684" + { + "name" "TFCL Highlander 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9685" + { + "name" "TFCL Highlander Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9686" + { + "name" "TFCL 4v4 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_4v4_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9687" + { + "name" "TFCL 4v4 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_4v4_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9688" + { + "name" "TFCL 4v4 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_4v4_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9689" + { + "name" "TFCL 4v4 Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9690" + { + "name" "TFCL bball 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_bball_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9691" + { + "name" "TFCL bball 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_bball_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9692" + { + "name" "TFCL bball 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_bball_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9693" + { + "name" "TFCL bball Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_bball_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9694" + { + "name" "TFCL 6v6 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9695" + { + "name" "TFCL 6v6 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9696" + { + "name" "TFCL 6v6 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9697" + { + "name" "TFCL 6v6 Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9698" + { + "name" "TFCL Ultiduo 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "9699" + { + "name" "TFCL Ultiduo 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "9700" + { + "name" "TFCL Ultiduo 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "9701" + { + "name" "TFCL Ultiduo Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "9702" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9703" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9704" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9705" + { + "name" "AsiaFortress Cup Division 1 Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9706" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "9707" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "9708" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "9709" + { + "name" "AsiaFortress Cup Division 2 Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9710" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "9711" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "9712" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "9713" + { + "name" "AsiaFortress Cup Division 3 Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9714" + { + "name" "Insomnia 61 First Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia61_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_gold/iseries_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_gold/iseries_gold_%s.mdl" + } + } + "9715" + { + "name" "Insomnia 61 Second Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia61_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_silver/iseries_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_silver/iseries_silver_%s.mdl" + } + } + "9716" + { + "name" "Insomnia 61 Third Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia61_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_bronze/iseries_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_bronze/iseries_bronze_%s.mdl" + } + } + "9717" + { + "name" "Insomnia 61 Participant Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia61_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_participant/iseries_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_participant/iseries_participant_%s.mdl" + } + } + "9718" + { + "name" "Insomnia 61 Contributor Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia61_Contributor" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_contributor/iseries_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_contributor/iseries_contributor_%s.mdl" + } + } + "9719" + { + "name" "RGLgg Pick Ban Prolander Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Prolander_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_participant/rglgg_prolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_participant/rglgg_prolander_participant_%s.mdl" + } + } + "9720" + { + "name" "Titanium Tank Participant Medal 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_TitaniumTank_Participant_2017" + "item_description" "#TF_TournamentMedal_TitaniumTank_Participant_2017_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant_%s.mdl" + } + } + "9721" + { + "name" "Mandrew's Munificent Mug" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2017_Mandrew" + "item_description" "#TF_Medal_JingleJam2017_Mandrew_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_mandrew" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "7" + } + } + "9722" + { + "name" "Israphel's Eleemosynary Expression" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "show_in_armory" "1" + "armory_remap" "" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_JingleJam2017_Israphel" + "item_description" "#TF_Medal_JingleJam2017_Israphel_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_israphel" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jingle_jam_medal/jingle_jam_medal_%s.mdl" + } + "visuals" + { + "skin" "8" + } + } + "9723" + { + "name" "Chapelaria 6v6 Legatus 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place.mdl" + } + "9724" + { + "name" "Chapelaria 6v6 Legatus 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place.mdl" + } + "9725" + { + "name" "Chapelaria 6v6 Legatus 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place.mdl" + } + "9726" + { + "name" "Chapelaria 6v6 Legatus Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Legatus_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant.mdl" + } + "9727" + { + "name" "Chapelaria 6v6 Gladiator 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_1st_place/chapelaria_6v6_1st_place.mdl" + } + "9728" + { + "name" "Chapelaria 6v6 Gladiator 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_2nd_place/chapelaria_6v6_2nd_place.mdl" + } + "9729" + { + "name" "Chapelaria 6v6 Gladiator 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_3rd_place/chapelaria_6v6_3rd_place.mdl" + } + "9730" + { + "name" "Chapelaria 6v6 Gladiator Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_6v6_Gladiator_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_6v6_participant/chapelaria_6v6_participant.mdl" + } + "9731" + { + "name" "Philanthropist's Indulgence" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_reddit_random_acts2" + "item_description" "#TF_reddit_random_acts2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/reddit_random_acts2/reddit_random_acts2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/reddit_random_acts2/reddit_random_acts2_%s.mdl" + } + } + "9732" + { + "name" "Spectral Snowflake" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_spectral_snowflake" + "item_description" "#TF_spectral_snowflake_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/spectral_snowflake/spectral_snowflake" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/spectral_snowflake/spectral_snowflake_%s.mdl" + } + } + "9733" + { + "name" "Heals for Reals Event 1st Place 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_heals4reals_gold" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/heals4reals_gold/heals4reals_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/heals4reals_gold/heals4reals_gold_%s.mdl" + } + } + "9734" + { + "name" "Heals for Reals Event 2nd Place 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_heals4reals_silver" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/heals4reals_silver/heals4reals_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/heals4reals_silver/heals4reals_silver_%s.mdl" + } + } + "9735" + { + "name" "Heals for Reals Event 3rd Place 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_heals4reals_bronze" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/heals4reals_bronze/heals4reals_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/heals4reals_bronze/heals4reals_bronze_%s.mdl" + } + } + "9736" + { + "name" "Heals for Reals Event Participant 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_heals4reals_participant" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/heals4reals_participant/heals4reals_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/heals4reals_participant/heals4reals_participant_%s.mdl" + } + } + "9737" + { + "name" "Heals for Reals Donor 2017" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_heals4reals_donor" + "item_description" "#TF_TournamentMedal_2017" + "image_inventory" "backpack/workshop/player/items/all_class/heals4reals_donation/heals4reals_donation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/heals4reals_donation/heals4reals_donation_%s.mdl" + } + } + "9738" + { + "name" "Ready Steady Pan Playoff Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_PlayoffS3" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_PlayoffS3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_s03_playoff/rsp_s03_playoff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_s03_playoff/rsp_s03_playoff_%s.mdl" + } + } + "9739" + { + "name" "Ready Steady Pan Helper Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Helper" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_HelperS3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_s03_helper/rsp_s03_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_s03_helper/rsp_s03_helper_%s.mdl" + } + } + "9740" + { + "name" "UGC Highlander 1st Place Platinum Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "9741" + { + "name" "UGC Highlander 2nd Place Platinum Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "9742" + { + "name" "UGC Highlander 3rd Place Platinum Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "9743" + { + "name" "UGC Highlander Platinum Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "9744" + { + "name" "UGC Highlander 1st Place Silver Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_silver" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "2" + } + } + "9745" + { + "name" "UGC Highlander 2nd Place Silver Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_silver" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "2" + } + } + "9746" + { + "name" "UGC Highlander 3rd Place Silver Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_silver" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "2" + } + } + "9747" + { + "name" "UGC Highlander Silver Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9748" + { + "name" "UGC Highlander 1st Place Steel Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_steel" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "1" + } + } + "9749" + { + "name" "UGC Highlander 2nd Place Steel Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_steel" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "1" + } + } + "9750" + { + "name" "UGC Highlander 3rd Place Steel Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_steel" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "1" + } + } + "9751" + { + "name" "UGC Highlander Steel Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9752" + { + "name" "UGC Highlander 1st Place Platinum Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "9753" + { + "name" "UGC Highlander 2nd Place Platinum Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "9754" + { + "name" "UGC Highlander 3rd Place Platinum Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "9755" + { + "name" "UGC Highlander Platinum Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "9756" + { + "name" "UGC Highlander 1st Place Silver Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_silver" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "2" + } + } + "9757" + { + "name" "UGC Highlander 2nd Place Silver Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_silver" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "2" + } + } + "9758" + { + "name" "UGC Highlander 3rd Place Silver Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_silver" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "2" + } + } + "9759" + { + "name" "UGC Highlander Silver Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9760" + { + "name" "UGC Highlander 1st Place Steel Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_steel" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "1" + } + } + "9761" + { + "name" "UGC Highlander 2nd Place Steel Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_steel" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "1" + } + } + "9762" + { + "name" "UGC Highlander 3rd Place Steel Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_steel" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "1" + } + } + "9763" + { + "name" "UGC Highlander Steel Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9764" + { + "name" "UGC Highlander 1st Place Platinum Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "9765" + { + "name" "UGC Highlander 2nd Place Platinum Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "9766" + { + "name" "UGC Highlander 3rd Place Platinum Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "9767" + { + "name" "UGC Highlander Platinum Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "9768" + { + "name" "UGC Highlander 1st Place Silver Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_silver" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "2" + } + } + "9769" + { + "name" "UGC Highlander 2nd Place Silver Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_silver" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "2" + } + } + "9770" + { + "name" "UGC Highlander 3rd Place Silver Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_silver" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "2" + } + } + "9771" + { + "name" "UGC Highlander Silver Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9772" + { + "name" "UGC Highlander 1st Place Steel Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_steel" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "1" + } + } + "9773" + { + "name" "UGC Highlander 2nd Place Steel Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_steel" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "1" + } + } + "9774" + { + "name" "UGC Highlander 3rd Place Steel Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_steel" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "1" + } + } + "9775" + { + "name" "UGC Highlander Steel Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9776" + { + "name" "UGC 6vs6 1st Place Platinum Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "9777" + { + "name" "UGC 6vs6 2nd Place Platinum Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "9778" + { + "name" "UGC 6vs6 3rd Place Platinum Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "9779" + { + "name" "UGC 6vs6 Platinum Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "9780" + { + "name" "UGC 6vs6 Silver Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9781" + { + "name" "UGC 6vs6 Steel Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9782" + { + "name" "UGC 6vs6 1st Place Platinum Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "9783" + { + "name" "UGC 6vs6 2nd Place Platinum Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "9784" + { + "name" "UGC 6vs6 3rd Place Platinum Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "9785" + { + "name" "UGC 6vs6 Platinum Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "9786" + { + "name" "UGC 6vs6 Silver Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9787" + { + "name" "UGC 6vs6 Steel Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9788" + { + "name" "UGC 6vs6 1st Place Platinum Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_platinum" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "4" + } + } + "9789" + { + "name" "UGC 6vs6 2nd Place Platinum Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_platinum" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "4" + } + } + "9790" + { + "name" "UGC 6vs6 3rd Place Platinum Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_platinum" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "4" + } + } + "9791" + { + "name" "UGC 6vs6 Platinum Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_platinum" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "4" + } + } + "9792" + { + "name" "UGC 6vs6 Silver Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9793" + { + "name" "UGC 6vs6 Steel Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9794" + { + "name" "UGC 4vs4 1st Place Gold Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_gold" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "3" + } + } + "9795" + { + "name" "UGC 4vs4 2nd Place Gold Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_gold" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "3" + } + } + "9796" + { + "name" "UGC 4vs4 3rd Place Gold Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_gold" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "3" + } + } + "9797" + { + "name" "UGC 4vs4 Gold Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_gold" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "9798" + { + "name" "UGC 4vs4 Silver Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9799" + { + "name" "UGC 4vs4 Steel Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9800" + { + "name" "UGC 4vs4 1st Place Gold Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_gold" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "3" + } + } + "9801" + { + "name" "UGC 4vs4 2nd Place Gold Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_gold" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "3" + } + } + "9802" + { + "name" "UGC 4vs4 3rd Place Gold Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_gold" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "3" + } + } + "9803" + { + "name" "UGC 4vs4 Gold Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_gold" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "9804" + { + "name" "UGC 4vs4 Silver Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9805" + { + "name" "UGC 4vs4 Steel Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9806" + { + "name" "UGC 4vs4 1st Place Gold Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/ugc_season9_first_gold" + "model_player" "models/player/items/all_class/ugc_season9_first.mdl" + "visuals" + { + "skin" "3" + } + } + "9807" + { + "name" "UGC 4vs4 2nd Place Gold Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/ugc_season9_second_gold" + "model_player" "models/player/items/all_class/ugc_season9_second.mdl" + "visuals" + { + "skin" "3" + } + } + "9808" + { + "name" "UGC 4vs4 3rd Place Gold Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/ugc_season9_third_gold" + "model_player" "models/player/items/all_class/ugc_season9_third.mdl" + "visuals" + { + "skin" "3" + } + } + "9809" + { + "name" "UGC 4vs4 Gold Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_gold" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "9810" + { + "name" "UGC 4vs4 Silver Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_silver" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "9811" + { + "name" "UGC 4vs4 Steel Participant Season 12" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/player/items/all_class/ugc_season9_participation_steel" + "model_player" "models/player/items/all_class/ugc_season9_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "9812" + { + "name" "ozfortress Premier 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9813" + { + "name" "ozfortress Premier 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9814" + { + "name" "ozfortress Premier 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9815" + { + "name" "ozfortress Premier Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9816" + { + "name" "ozfortress Intermediate 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9817" + { + "name" "ozfortress Intermediate 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9818" + { + "name" "ozfortress Intermediate 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9819" + { + "name" "ozfortress Intermediate Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9820" + { + "name" "ozfortress Open 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9821" + { + "name" "ozfortress Open 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9822" + { + "name" "ozfortress Open 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9823" + { + "name" "ozfortress Open Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9824" + { + "name" "NHBL Sasha Heavyweight Champion Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season1" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9825" + { + "name" "NHBL Sasha Heavyweight Champion Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season2" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9826" + { + "name" "NHBL Sasha Heavyweight Champion Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season3" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9827" + { + "name" "NHBL Sasha Heavyweight Champion Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season4" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9828" + { + "name" "NHBL Sasha Heavyweight Champion Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season5" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season5_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9829" + { + "name" "NHBL Sasha Heavyweight Champion Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season6" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season6_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9830" + { + "name" "Florida LAN 2018 Donator Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_FLAN_Donator_2018" + "item_description" "#TF_TournamentMedal_FLAN_Donator_2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/florida_lan_donator_2018/florida_lan_donator_2018" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/florida_lan_donator_2018/florida_lan_donator_2018_%s.mdl" + } + } + "9831" + { + "name" "Florida LAN 2018 Participant Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_FLAN_Participant_2018" + "item_description" "#TF_TournamentMedal_FLAN_Participant_2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/florida_lan_participant_2018/florida_lan_participant_2018" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/florida_lan_participant_2018/florida_lan_participant_2018_%s.mdl" + } + } + "9832" + { + "name" "Florida LAN 2018 Contributor Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_FLAN_Contributor_2018" + "item_description" "#TF_TournamentMedal_FLAN_Contributor_2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/florida_lan_contributor_2018/florida_lan_contributor_2018" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/florida_lan_contributor_2018/florida_lan_contributor_2018_%s.mdl" + } + } + "9833" + { + "name" "NHBL Natascha Heavyweight Champion Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Natasha_Season7" + "item_description" "#TF_TournamentMedal_NHBL_Natasha_Season7_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "9834" + { + "name" "NHBL Finals Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_participant/nhbl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_participant/nhbl_participant_%s.mdl" + } + } + "9835" + { + "name" "NHBL Finals 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_SecondPlace" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place_%s.mdl" + } + } + "9836" + { + "name" "NHBL Finals 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_ThirdPlace" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place_%s.mdl" + } + } + "9837" + { + "name" "NHBL Finals 4th Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_FourthPlace" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place_%s.mdl" + } + } + "9838" + { + "name" "Ultimate Ultiduo 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_First" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first_%s.mdl" + } + } + "9839" + { + "name" "Ultimate Ultiduo 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Second" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second_%s.mdl" + } + } + "9840" + { + "name" "Ultimate Ultiduo 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Third" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third_%s.mdl" + } + } + "9841" + { + "name" "Ultimate Ultiduo Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Participant" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant_%s.mdl" + } + } + "9842" + { + "name" "Ultimate Ultiduo Helper Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Helper" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper_%s.mdl" + } + } + "9843" + { + "name" "RGLgg Pick Ban Prolander Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Prolander_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_participant/rglgg_prolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_participant/rglgg_prolander_participant_%s.mdl" + } + } + "9844" + { + "name" "RGLgg One Day Prolander Cup North America Winter 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA" + "item_description" "#TF_TournamentMedal_Winter2017" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup_%s.mdl" + } + } + "9845" + { + "name" "RGLgg One Day Prolander Cup Europe Winter 2017" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_Europe" + "item_description" "#TF_TournamentMedal_Winter2017" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup_%s.mdl" + } + } + "9846" + { + "name" "Palaise MGE Doubles Community Clash Champion Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Palaise_Champion" + "item_description" "#TF_TournamentMedal_Palaise_Champion_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/palaise_champion/palaise_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/palaise_champion/palaise_champion_%s.mdl" + } + } + "9847" + { + "name" "Palaise MGE Doubles Community Clash Runner-Up Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Palaise_RunnerUp" + "item_description" "#TF_TournamentMedal_Palaise_RunnerUp_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/palaise_runner_up/palaise_runner_up" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/palaise_runner_up/palaise_runner_up_%s.mdl" + } + } + "9848" + { + "name" "Palaise MGE Doubles Community Clash Contestant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Palaise_Contestant" + "item_description" "#TF_TournamentMedal_Palaise_Contestant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/palaise_contestant/palaise_contestant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/palaise_contestant/palaise_contestant_%s.mdl" + } + } + "9849" + { + "name" "Journey to the East 1st Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_jtte_gold" + "item_description" "#TF_TournamentMedal_jtte_winner_desc" + "image_inventory" "backpack/workshop/player/items/all_class/jtte_gold/jtte_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jtte_gold/jtte_gold_%s.mdl" + } + } + "9850" + { + "name" "Journey to the East 2nd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_jtte_silver" + "item_description" "#TF_TournamentMedal_jtte_winner_desc" + "image_inventory" "backpack/workshop/player/items/all_class/jtte_silver/jtte_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jtte_silver/jtte_silver_%s.mdl" + } + } + "9851" + { + "name" "Journey to the East 3rd Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_jtte_bronze" + "item_description" "#TF_TournamentMedal_jtte_winner_desc" + "image_inventory" "backpack/workshop/player/items/all_class/jtte_bronze/jtte_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jtte_bronze/jtte_bronze_%s.mdl" + } + } + "9852" + { + "name" "Journey to the East Participant" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_jtte_participant" + "item_description" "#TF_TournamentMedal_jtte_participant_desc" + "image_inventory" "backpack/workshop/player/items/all_class/jtte_participant/jtte_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/jtte_participant/jtte_participant_%s.mdl" + } + } + "9853" + { + "name" "Newbie Prolander Cup Gold Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_gold/newbie_prolander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_gold/newbie_prolander_gold_%s.mdl" + } + } + "9854" + { + "name" "Newbie Prolander Cup Silver Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_silver/newbie_prolander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_silver/newbie_prolander_silver_%s.mdl" + } + } + "9855" + { + "name" "Newbie Prolander Cup Bronze Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_bronze/newbie_prolander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_bronze/newbie_prolander_bronze_%s.mdl" + } + } + "9856" + { + "name" "Newbie Prolander Cup Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_participant/newbie_prolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_participant/newbie_prolander_participant_%s.mdl" + } + } + "9857" + { + "name" "ESA Rewind II Tier 1 Donor" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RewindII_DonorT1" + "item_description" "#TF_TournamentMedal_RewindII_Donor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_donor_t1/rewind_donor_t1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_donor_t1/rewind_donor_t1_%s.mdl" + } + } + "9858" + { + "name" "ESA Rewind II Tier 2 Donor" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RewindII_DonorT2" + "item_description" "#TF_TournamentMedal_RewindII_Donor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_donor_t2/rewind_donor_t2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_donor_t2/rewind_donor_t2_%s.mdl" + } + } + "9859" + { + "name" "ESA Rewind II Tier 3 Donor" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RewindII_DonorT3" + "item_description" "#TF_TournamentMedal_RewindII_Donor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_donor_t3/rewind_donor_t3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_donor_t3/rewind_donor_t3_%s.mdl" + } + } + "9860" + { + "name" "ESA Rewind II Top 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RewindII_Top8" + "item_description" "#TF_TournamentMedal_RewindII_Top8_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_top8/rewind_top8" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_top8/rewind_top8_%s.mdl" + } + } + "9861" + { + "name" "ESA Rewind II Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RewindII_Participant" + "item_description" "#TF_TournamentMedal_RewindII_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewind_open/rewind_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rewind_open/rewind_open_%s.mdl" + } + } + "9862" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9863" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9864" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9865" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9866" + { + "name" "ETF2L Highlander High Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9867" + { + "name" "ETF2L Highlander High Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9868" + { + "name" "ETF2L Highlander High Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9869" + { + "name" "ETF2L Highlander High Participation Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9870" + { + "name" "ETF2L Highlander Mid Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9871" + { + "name" "ETF2L Highlander Mid Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9872" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9873" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9874" + { + "name" "ETF2L Highlander Mid Participation Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9875" + { + "name" "ETF2L Highlander Open Gold Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "9876" + { + "name" "ETF2L Highlander Open Silver Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "9877" + { + "name" "ETF2L Highlander Open Bronze Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "9878" + { + "name" "ETF2L Highlander Open Playoff Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "9879" + { + "name" "ETF2L Highlander Open Participation Medal Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "9880" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9881" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9882" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9883" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9884" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9885" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9886" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9887" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9888" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9889" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9890" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9891" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9892" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9893" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9894" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9895" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9896" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9897" + { + "name" "ETF2L 6v6 Low Gold Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9898" + { + "name" "ETF2L 6v6 Low Silver Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9899" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9900" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9901" + { + "name" "ETF2L 6v6 Low Participation Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9902" + { + "name" "ETF2L 6v6 Open Gold Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "9903" + { + "name" "ETF2L 6v6 Open Silver Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "9904" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "9905" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "9906" + { + "name" "ETF2L 6v6 Open Participation Medal Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "9907" + { + "name" "Canteen Crasher Platinum Crit Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Canteen_Crasher_Platinum" + "item_description" "#TF_TournamentMedal_Canteen_Crasher_Platinum_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_platinum/canteen_crasher_platinum" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_platinum/canteen_crasher_platinum_%s.mdl" + } + } + "9908" + { + "name" "Canteen Crasher Gold Uber Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Canteen_Crasher_Gold" + "item_description" "#TF_TournamentMedal_Canteen_Crasher_Gold_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_gold/canteen_crasher_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_gold/canteen_crasher_gold_%s.mdl" + } + } + "9909" + { + "name" "Canteen Crasher Silver Building Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Canteen_Crasher_Silver" + "item_description" "#TF_TournamentMedal_Canteen_Crasher_Silver_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_silver/canteen_crasher_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_silver/canteen_crasher_silver_%s.mdl" + } + } + "9910" + { + "name" "Canteen Crasher Bronze Ammo Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Canteen_Crasher_Bronze" + "item_description" "#TF_TournamentMedal_Canteen_Crasher_Bronze_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_bronze/canteen_crasher_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_bronze/canteen_crasher_bronze_%s.mdl" + } + } + "9911" + { + "name" "Canteen Crasher Iron Recall Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Canteen_Crasher_Iron" + "item_description" "#TF_TournamentMedal_Canteen_Crasher_Iron_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_iron/canteen_crasher_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_iron/canteen_crasher_iron_%s.mdl" + } + } + "9912" + { + "name" "Canteen Crasher Rust Starter Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Canteen_Crasher_Rust" + "item_description" "#TF_TournamentMedal_Canteen_Crasher_Rust_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant_%s.mdl" + } + } + "9913" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "9914" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "9915" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "9916" + { + "name" "AsiaFortress Cup Division 1 Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9917" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "9918" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "9919" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "9920" + { + "name" "AsiaFortress Cup Division 2 Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9921" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "9922" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "9923" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "9924" + { + "name" "AsiaFortress Cup Division 3 Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "9925" + { + "name" "Copenhagen Games 6v6 Gold Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Gold" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_gold/copenhagen_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_gold/copenhagen_gold_%s.mdl" + } + } + "9926" + { + "name" "Copenhagen Games 6v6 Silver Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Silver" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_silver/copenhagen_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_silver/copenhagen_silver_%s.mdl" + } + } + "9927" + { + "name" "Copenhagen Games 6v6 Bronze Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Bronze" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_bronze/copenhagen_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_bronze/copenhagen_bronze_%s.mdl" + } + } + "9928" + { + "name" "Copenhagen Games 6v6 Iron Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Iron" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_iron/copenhagen_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_iron/copenhagen_iron_%s.mdl" + } + } + "9929" + { + "name" "Copenhagen Games Staff Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Staff" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_staff/copenhagen_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_staff/copenhagen_staff_%s.mdl" + } + } + "9930" + { + "name" "TFCL 6v6 Alpha FC" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFCL_Alpha_FC" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_FC_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha_%s.mdl" + } + } + "9931" + { + "name" "TFCL 6v6 Alpha RK" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFCL_Alpha_RK" + "item_description" "#TF_TournamentMedal_TFCL_Alpha_RK_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha_%s.mdl" + } + } + "9932" + { + "name" "Gette it Onne Champion Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GIO_Champion" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/gette_it_onne_champion/gette_it_onne_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gette_it_onne_champion/gette_it_onne_champion_%s.mdl" + } + } + "9933" + { + "name" "Gette it Onne Playoffs Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GIO_Playoffs" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/gette_it_onne_playoffs/gette_it_onne_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gette_it_onne_playoffs/gette_it_onne_playoffs_%s.mdl" + } + } + "9934" + { + "name" "Gette it Onne Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GIO_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/gette_it_onne_participant/gette_it_onne_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gette_it_onne_participant/gette_it_onne_participant_%s.mdl" + } + } + "9935" + { + "name" "Gette it Onne Helper Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_GIO_Helper" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/gette_it_onne_helper/gette_it_onne_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/gette_it_onne_helper/gette_it_onne_helper_%s.mdl" + } + } + "9936" + { + "name" "HLPugstf Highlander Cup Gold Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLPugs_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlpugs_gold/hlpugs_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlpugs_gold/hlpugs_gold_%s.mdl" + } + } + "9937" + { + "name" "HLPugstf Highlander Cup Silver Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLPugs_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlpugs_silver/hlpugs_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlpugs_silver/hlpugs_silver_%s.mdl" + } + } + "9938" + { + "name" "HLPugstf Highlander Cup Bronze Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLPugs_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlpugs_bronze/hlpugs_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlpugs_bronze/hlpugs_bronze_%s.mdl" + } + } + "9939" + { + "name" "HLPugstf Highlander Cup Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLPugs_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlpugs_participant/hlpugs_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlpugs_participant/hlpugs_participant_%s.mdl" + } + } + "9940" + { + "name" "HLPugstf Highlander Cup Contributor Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLPugs_Contributor" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlpugs_contributor/hlpugs_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlpugs_contributor/hlpugs_contributor_%s.mdl" + } + } + "9941" + { + "name" "The Heartfelt Hero" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_HugsTF_2018" + "item_description" "#TF_Medal_HugsTF_2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/hugs_tf_medal_2018/hugs_tf_medal_2018" + "propername" "1" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hugs_tf_medal_2018/hugs_tf_medal_2018_%s.mdl" + } + } + "9942" + { + "name" "Essentials Monthly First Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_Essentials_Monthly_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold_%s.mdl" + } + } + "9943" + { + "name" "Essentials Monthly Second Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_Essentials_Monthly_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver_%s.mdl" + } + } + "9944" + { + "name" "Essentials Monthly Third Place" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_Essentials_Monthly_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze_%s.mdl" + } + } + "9945" + { + "name" "Essentials Monthly Participant" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_Essentials_Monthly_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant_%s.mdl" + } + } + "9946" + { + "name" "Essentials Monthly Contributor" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_Essentials_Monthly_Contributor" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor_%s.mdl" + } + } + "9947" + { + "name" "RGLgg Invite Champions Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9948" + { + "name" "RGLgg Invite 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9949" + { + "name" "RGLgg Invite 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9950" + { + "name" "RGLgg Invite Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9951" + { + "name" "RGLgg Div1 Champions Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9952" + { + "name" "RGLgg Div1 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9953" + { + "name" "RGLgg Div1 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9954" + { + "name" "RGLgg Div1 Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9955" + { + "name" "RGLgg Rec Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Rec_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "9956" + { + "name" "RGLgg One Day Prolander Cup North America Spring 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA" + "item_description" "#TF_TournamentMedal_Spring2018" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup_%s.mdl" + } + } + "9957" + { + "name" "RGLgg Invite Champions EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9958" + { + "name" "RGLgg Invite 2nd Place EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9959" + { + "name" "RGLgg Invite 3rd Place EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9960" + { + "name" "RGLgg Invite Participant EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9961" + { + "name" "RGLgg Div2 Champions EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9962" + { + "name" "RGLgg Div2 2nd Place EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9963" + { + "name" "RGLgg Div2 3rd Place EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9964" + { + "name" "RGLgg Div2 Participant EU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_EU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9965" + { + "name" "PURE League Premier First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_premier_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_premier_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9966" + { + "name" "PURE League Premier Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_premier_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_premier_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9967" + { + "name" "PURE League Premier Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_premier_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_premier_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9968" + { + "name" "PURE League Premier Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_participant/pure_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_participant/pure_participant_%s.mdl" + } + } + "9969" + { + "name" "PURE League Intermediate First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_intermediate_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_intermediate_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9970" + { + "name" "PURE League Intermediate Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_intermediate_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_intermediate_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9971" + { + "name" "PURE League Intermediate Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_intermediate_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_intermediate_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9972" + { + "name" "PURE League Intermediate Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_participant/pure_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_participant/pure_participant_%s.mdl" + } + } + "9973" + { + "name" "PURE League Open First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_open_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_open_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "9974" + { + "name" "PURE League Open Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_open_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_open_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "9975" + { + "name" "PURE League Open Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_open_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_open_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "9976" + { + "name" "PURE League Open Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/pure_participant/pure_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_participant/pure_participant_%s.mdl" + } + } + "9977" + { + "name" "Copenhagen Games Highlander Gold Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Gold" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_gold/copenhagen_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_gold/copenhagen_gold_%s.mdl" + } + } + "9978" + { + "name" "Copenhagen Games Highlander Silver Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Silver" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_silver/copenhagen_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_silver/copenhagen_silver_%s.mdl" + } + } + "9979" + { + "name" "Copenhagen Games Highlander Bronze Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Bronze" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_bronze/copenhagen_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_bronze/copenhagen_bronze_%s.mdl" + } + } + "9980" + { + "name" "Copenhagen Games Highlander Iron Medal 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Iron" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/copenhagen_iron/copenhagen_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/copenhagen_iron/copenhagen_iron_%s.mdl" + } + } + "9981" + { + "name" "ozfortress Premier 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "9982" + { + "name" "ozfortress Premier 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "9983" + { + "name" "ozfortress Premier 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "9984" + { + "name" "ozfortress Premier Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "9985" + { + "name" "ozfortress Intermediate 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9986" + { + "name" "ozfortress Intermediate 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9987" + { + "name" "ozfortress Intermediate 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9988" + { + "name" "ozfortress Intermediate Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9989" + { + "name" "ozfortress Open 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "9990" + { + "name" "ozfortress Open 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "9991" + { + "name" "ozfortress Open 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "9992" + { + "name" "ozfortress Open Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "9993" + { + "name" "Beginnings 5 First Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Beginnings5_First" + "item_description" "#TF_TournamentMedal_Beginnings5_First_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bg5_gold/bg5_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bg5_gold/bg5_gold_%s.mdl" + } + } + "9994" + { + "name" "Beginnings 5 Second Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Beginnings5_Second" + "item_description" "#TF_TournamentMedal_Beginnings5_Second_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bg5_silver/bg5_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bg5_silver/bg5_silver_%s.mdl" + } + } + "9995" + { + "name" "Beginnings 5 Third Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Beginnings5_Third" + "item_description" "#TF_TournamentMedal_Beginnings5_Third_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bg5_bronze/bg5_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bg5_bronze/bg5_bronze_%s.mdl" + } + } + "9996" + { + "name" "Beginnings 5 Participant Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Beginnings5_Participant" + "item_description" "#TF_TournamentMedal_Beginnings5_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bg5_participant/bg5_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bg5_participant/bg5_participant_%s.mdl" + } + } + "9997" + { + "name" "Beginnings 5 Helper Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Beginnings5_Helper" + "item_description" "#TF_TournamentMedal_Beginnings5_Helper_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bg5_helper/bg5_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bg5_helper/bg5_helper_%s.mdl" + } + } + "9998" + { + "name" "HLMixes First Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_first/hlmixes_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_first/hlmixes_first_%s.mdl" + } + } + "9999" + { + "name" "HLMixes Finalist Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_Finalist" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_finalist/hlmixes_finalist" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_finalist/hlmixes_finalist_%s.mdl" + } + } + "10002" + { + "name" "HLMixes Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_participant/hlmixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_participant/hlmixes_participant_%s.mdl" + } + } + "10003" + { + "name" "HydroTF Participant Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HydroTF_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hydro_tf_participant/hydro_tf_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hydro_tf_participant/hydro_tf_participant_%s.mdl" + } + } + "10004" + { + "name" "HydroTF All-Star Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HydroTF_Allstar" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/hydro_tf_allstar/hydro_tf_allstar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hydro_tf_allstar/hydro_tf_allstar_%s.mdl" + } + } + "10005" + { + "name" "Ready Steady Pan First Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_FirstS4" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_FirstS4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_first/rsp_season4_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_first/rsp_season4_first_%s.mdl" + } + } + "10006" + { + "name" "Ready Steady Pan Second Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_SecondS4" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_SecondS4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_second/rsp_season4_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_second/rsp_season4_second_%s.mdl" + } + "propername" "1" + } + "10007" + { + "name" "Ready Steady Pan Third Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_ThirdS4" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_ThirdS4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_third/rsp_season4_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_third/rsp_season4_third_%s.mdl" + } + "propername" "1" + } + "10008" + { + "name" "Ready Steady Pan Playoff Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_PlayoffS4" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_PlayoffS4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_playoff/rsp_season4_playoff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_playoff/rsp_season4_playoff_%s.mdl" + } + } + "10009" + { + "name" "Ready Steady Pan Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_ParticipantS4" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_ParticipantS4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_participant/rsp_season4_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_participant/rsp_season4_participant_%s.mdl" + } + } + "10010" + { + "name" "Ready Steady Pan Helper Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_HelperS4" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_HelperS4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_helper/rsp_season4_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_helper/rsp_season4_helper_%s.mdl" + } + "propername" "1" + } + "10011" + { + "name" "Blapature Co. Backer 2018" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2018_Tier1" + "item_description" "#TF_TournamentMedal_Blapature2018_Tier1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1_%s.mdl" + } + } + "10012" + { + "name" "Blapature Co. Supporter 2018" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2018_Tier2" + "item_description" "#TF_TournamentMedal_Blapature2018_Tier2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2_%s.mdl" + } + } + "10013" + { + "name" "Blapature Co. Benefactor 2018" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2018_Tier3" + "item_description" "#TF_TournamentMedal_Blapature2018_Tier3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3_%s.mdl" + } + } + "10014" + { + "name" "NHBL Sasha Heavyweight Champion Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season7" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season7_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "10015" + { + "name" "TF2Maps Ray of Sunshine 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsRayOfSunshine2018" + "item_description" "#TF2MapsRayOfSunshine2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s2/72hr_summerjam_2018_s2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + } + } + } + } + "10016" + { + "name" "Chapelaria Ultiduo Gladiator 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold.mdl" + } + "10017" + { + "name" "Chapelaria Ultiduo Gladiator 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver.mdl" + } + "10018" + { + "name" "Chapelaria Ultiduo Gladiator 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze.mdl" + } + "10019" + { + "name" "Chapelaria Ultiduo Gladiator Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Gladiator_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant.mdl" + } + "10020" + { + "name" "Chapelaria Ultiduo Legatus 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_gold/chapelaria_ultiduo_gold.mdl" + } + "10021" + { + "name" "Chapelaria Ultiduo Legatus 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_silver/chapelaria_ultiduo_silver.mdl" + } + "10022" + { + "name" "Chapelaria Ultiduo Legatus 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_bronze/chapelaria_ultiduo_bronze.mdl" + } + "10023" + { + "name" "Chapelaria Ultiduo Legatus Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Chapelaria_Ultiduo_Legatus_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant" + "model_player" "models/workshop/player/items/soldier/chapelaria_ultiduo_participant/chapelaria_ultiduo_participant.mdl" + } + "10024" + { + "name" "Newbie Highlander Cup Gold Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_gold/newbie_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_gold/newbie_highlander_gold_%s.mdl" + } + } + "10025" + { + "name" "Newbie Highlander Cup Silver Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_silver/newbie_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_silver/newbie_highlander_silver_%s.mdl" + } + } + "10026" + { + "name" "Newbie Highlander Cup Bronze Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_bronze/newbie_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_bronze/newbie_highlander_bronze_%s.mdl" + } + } + "10027" + { + "name" "Newbie Highlander Cup Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_participant/newbie_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_participant/newbie_highlander_participant_%s.mdl" + } + } + "10028" + { + "name" "Rally Call 2018 Whale" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RallyCall_Charity_2018_Whale" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/rally_call_2018_whale/rally_call_2018_whale" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rally_call_2018_whale/rally_call_2018_whale_%s.mdl" + } + } + "10029" + { + "name" "Rally Call 2018 Whale Donor" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RallyCall_Charity_2018_WhaleDonor" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/rally_call_2018_whale_donor/rally_call_2018_whale_donor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rally_call_2018_whale_donor/rally_call_2018_whale_donor_%s.mdl" + } + } + "10030" + { + "name" "Newbie Prolander Cup Gold Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_gold/newbie_prolander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_gold/newbie_prolander_gold_%s.mdl" + } + } + "10031" + { + "name" "Newbie Prolander Cup Silver Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_silver/newbie_prolander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_silver/newbie_prolander_silver_%s.mdl" + } + } + "10032" + { + "name" "Newbie Prolander Cup Bronze Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_bronze/newbie_prolander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_bronze/newbie_prolander_bronze_%s.mdl" + } + } + "10033" + { + "name" "Newbie Prolander Cup Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NPC_participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_participant/newbie_prolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_participant/newbie_prolander_participant_%s.mdl" + } + } + "10034" + { + "name" "TFCL 6v6 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "10035" + { + "name" "TFCL 6v6 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "10036" + { + "name" "TFCL 6v6 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "10037" + { + "name" "TFCL 6v6 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_6v6_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "10038" + { + "name" "TFCL Ultiduo 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Gold" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "10039" + { + "name" "TFCL Ultiduo 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Silver" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "10040" + { + "name" "TFCL Ultiduo 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Bronze" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "10041" + { + "name" "TFCL Ultiduo Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Ultiduo_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "10042" + { + "name" "TFCL Highlander 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "10043" + { + "name" "TFCL Highlander 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "10044" + { + "name" "TFCL Highlander 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "10045" + { + "name" "TFCL Highlander Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "10046" + { + "name" "TF2Maps 72hr TF2Jam Summer Participant 2018" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_summer_jimijam" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "10047" + { + "name" "Insomnia 63 First Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia63_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_gold/iseries_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_gold/iseries_gold_%s.mdl" + } + } + "10048" + { + "name" "Insomnia 63 Second Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia63_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_silver/iseries_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_silver/iseries_silver_%s.mdl" + } + } + "10049" + { + "name" "Insomnia 63 Third Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia63_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_bronze/iseries_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_bronze/iseries_bronze_%s.mdl" + } + } + "10050" + { + "name" "Insomnia 63 Participant Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia63_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_participant/iseries_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_participant/iseries_participant_%s.mdl" + } + } + "10051" + { + "name" "Insomnia 63 Contributor Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia63_Contributor" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_contributor/iseries_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_contributor/iseries_contributor_%s.mdl" + } + } + "10052" + { + "name" "UGC Highlander 1st Place Platinum Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_1st_place.mdl" + } + "10053" + { + "name" "UGC Highlander 2nd Place Platinum Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_2nd_place.mdl" + } + "10054" + { + "name" "UGC Highlander 3rd Place Platinum Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_3rd_place.mdl" + } + "10055" + { + "name" "UGC Highlander Platinum Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_participant.mdl" + } + "10056" + { + "name" "UGC Highlander 1st Place Silver Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_1st_place.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10057" + { + "name" "UGC Highlander 2nd Place Silver Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_2nd_place.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10058" + { + "name" "UGC Highlander 3rd Place Silver Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_3rd_place.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10059" + { + "name" "UGC Highlander Silver Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10060" + { + "name" "UGC Highlander 1st Place Steel Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_1st_place.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10061" + { + "name" "UGC Highlander 2nd Place Steel Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_2nd_place.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10062" + { + "name" "UGC Highlander 3rd Place Steel Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_3rd_place.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10063" + { + "name" "UGC Highlander Steel Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10064" + { + "name" "UGC 6vs6 1st Place Platinum Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_1st_place.mdl" + } + "10065" + { + "name" "UGC 6vs6 2nd Place Platinum Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_2nd_place.mdl" + } + "10066" + { + "name" "UGC 6vs6 3rd Place Platinum Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_3rd_place.mdl" + } + "10067" + { + "name" "UGC 6vs6 Platinum Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_participant.mdl" + } + "10068" + { + "name" "UGC 6vs6 Silver Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10069" + { + "name" "UGC 6vs6 Steel Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10070" + { + "name" "UGC 4vs4 1st Place Gold Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_1st_place.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10071" + { + "name" "UGC 4vs4 2nd Place Gold Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_2nd_place.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10072" + { + "name" "UGC 4vs4 3rd Place Gold Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_3rd_place.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10073" + { + "name" "UGC 4vs4 Gold Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10074" + { + "name" "UGC 4vs4 Silver Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10075" + { + "name" "UGC 4vs4 Steel Participant Season 13" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10076" + { + "name" "UGC Highlander 1st Place Platinum Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_1st_place.mdl" + } + "10077" + { + "name" "UGC Highlander 2nd Place Platinum Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_2nd_place.mdl" + } + "10078" + { + "name" "UGC Highlander 3rd Place Platinum Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_3rd_place.mdl" + } + "10079" + { + "name" "UGC Highlander Platinum Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_participant.mdl" + } + "10080" + { + "name" "UGC Highlander 1st Place Silver Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_1st_place.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10081" + { + "name" "UGC Highlander 2nd Place Silver Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_2nd_place.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10082" + { + "name" "UGC Highlander 3rd Place Silver Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_3rd_place.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10083" + { + "name" "UGC Highlander Silver Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10084" + { + "name" "UGC Highlander 1st Place Steel Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_1st_place.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10085" + { + "name" "UGC Highlander 2nd Place Steel Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_2nd_place.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10086" + { + "name" "UGC Highlander 3rd Place Steel Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_3rd_place.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10087" + { + "name" "UGC Highlander Steel Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10088" + { + "name" "UGC 6vs6 1st Place Platinum Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_1st_place.mdl" + } + "10089" + { + "name" "UGC 6vs6 2nd Place Platinum Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_2nd_place.mdl" + } + "10090" + { + "name" "UGC 6vs6 3rd Place Platinum Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_3rd_place.mdl" + } + "10091" + { + "name" "UGC 6vs6 Platinum Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_platinum_participant.mdl" + } + "10092" + { + "name" "UGC 6vs6 Silver Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10093" + { + "name" "UGC 6vs6 Steel Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10094" + { + "name" "UGC 4vs4 1st Place Gold Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_1st_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_1st_place.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10095" + { + "name" "UGC 4vs4 2nd Place Gold Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_2nd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_2nd_place.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10096" + { + "name" "UGC 4vs4 3rd Place Gold Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_3rd_place" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_3rd_place.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10097" + { + "name" "UGC 4vs4 Gold Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "6" + } + "visuals_blu" + { + "skin" "7" + } + } + "10098" + { + "name" "UGC 4vs4 Silver Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "4" + } + "visuals_blu" + { + "skin" "5" + } + } + "10099" + { + "name" "UGC 4vs4 Steel Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_wingy_medal/ugc_medal_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_wingy_medal/ugc_wingy_medal_participant.mdl" + "visuals_red" + { + "skin" "2" + } + "visuals_blu" + { + "skin" "3" + } + } + "10100" + { + "name" "LBTF2 6v6 Elite 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10101" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10102" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10103" + { + "name" "LBTF2 6v6 Elite Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10104" + { + "name" "LBTF2 6v6 Central 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10105" + { + "name" "LBTF2 6v6 Central 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10106" + { + "name" "LBTF2 6v6 Central 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10107" + { + "name" "LBTF2 6v6 Central Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10108" + { + "name" "LBTF2 6v6 Open 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10109" + { + "name" "LBTF2 6v6 Open 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10110" + { + "name" "LBTF2 6v6 Open 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10111" + { + "name" "LBTF2 6v6 Open Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10112" + { + "name" "Fresh Meat Prolander Cup 1st Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_1st" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first_%s.mdl" + } + } + "10113" + { + "name" "Fresh Meat Prolander Cup 2nd Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_2nd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second_%s.mdl" + } + } + "10114" + { + "name" "Fresh Meat Prolander Cup 3rd Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_3rd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third_%s.mdl" + } + } + "10115" + { + "name" "Fresh Meat Prolander Cup Amateur 1st Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Amateur_1st" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first_%s.mdl" + } + } + "10116" + { + "name" "Fresh Meat Prolander Cup Amateur 2nd Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Amateur_2nd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second_%s.mdl" + } + } + "10117" + { + "name" "Fresh Meat Prolander Cup Amateur 3rd Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Amateur_3rd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third_%s.mdl" + } + } + "10118" + { + "name" "Fresh Meat Prolander Cup Helper Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Helper" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_helper/fresh_meat_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_helper/fresh_meat_helper_%s.mdl" + } + } + "10119" + { + "name" "Fresh Meat Prolander Cup Participant Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Participant" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_participant/fresh_meat_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_participant/fresh_meat_participant_%s.mdl" + } + } + "10120" + { + "name" "Fresh Meat Prolander Cup 1st Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_1st" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first_%s.mdl" + } + } + "10121" + { + "name" "Fresh Meat Prolander Cup 2nd Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_2nd" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second_%s.mdl" + } + } + "10122" + { + "name" "Fresh Meat Prolander Cup 3rd Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_3rd" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third_%s.mdl" + } + } + "10123" + { + "name" "Fresh Meat Prolander Cup Amateur 1st Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Amateur_1st" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first_%s.mdl" + } + } + "10124" + { + "name" "Fresh Meat Prolander Cup Amateur 2nd Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Amateur_2nd" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second_%s.mdl" + } + } + "10125" + { + "name" "Fresh Meat Prolander Cup Amateur 3rd Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Amateur_3rd" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third_%s.mdl" + } + } + "10126" + { + "name" "Fresh Meat Prolander Cup Elite 1st Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Elite_1st" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_first/fresh_meat_first_%s.mdl" + } + } + "10127" + { + "name" "Fresh Meat Prolander Cup Elite 2nd Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Elite_2nd" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_second/fresh_meat_second_%s.mdl" + } + } + "10128" + { + "name" "Fresh Meat Prolander Cup Elite 3rd Place Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Elite_3rd" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_third/fresh_meat_third_%s.mdl" + } + } + "10129" + { + "name" "Fresh Meat Prolander Cup Helper Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Helper" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_helper/fresh_meat_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_helper/fresh_meat_helper_%s.mdl" + } + } + "10130" + { + "name" "Fresh Meat Prolander Cup Participant Autumn 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Fresh_Meat_Prolander_Participant" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/fresh_meat_participant/fresh_meat_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fresh_meat_participant/fresh_meat_participant_%s.mdl" + } + } + "10131" + { + "name" "NewbiDuo Cup 1st Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_1st" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_first/newbiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_first/newbiduo_first_%s.mdl" + } + } + "10132" + { + "name" "NewbiDuo Cup 2nd Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_2nd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_second/newbiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_second/newbiduo_second_%s.mdl" + } + } + "10133" + { + "name" "NewbiDuo Cup 3rd Place Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_3rd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_third/newbiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_third/newbiduo_third_%s.mdl" + } + } + "10134" + { + "name" "NewbiDuo Cup Participant Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_Participant" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_participant/newbiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_participant/newbiduo_participant_%s.mdl" + } + } + "10135" + { + "name" "NewbiDuo Cup Helper Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_Helper" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_helper/newbiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_helper/newbiduo_helper_%s.mdl" + } + } + "10136" + { + "name" "Ultimate Ultiduo 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_First" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first_%s.mdl" + } + } + "10137" + { + "name" "Ultimate Ultiduo 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Second" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second_%s.mdl" + } + } + "10138" + { + "name" "Ultimate Ultiduo 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Third" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third_%s.mdl" + } + } + "10139" + { + "name" "Ultimate Ultiduo Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Participant" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant_%s.mdl" + } + } + "10140" + { + "name" "Ultimate Ultiduo Helper Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Helper" + "item_description" "#TF_TournamentMedal_Autumn2018" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper_%s.mdl" + } + } + "10141" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10142" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10143" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10144" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10145" + { + "name" "ETF2L Highlander High Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10146" + { + "name" "ETF2L Highlander High Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10147" + { + "name" "ETF2L Highlander High Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10148" + { + "name" "ETF2L Highlander High Participation Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10149" + { + "name" "ETF2L Highlander Mid Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10150" + { + "name" "ETF2L Highlander Mid Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10151" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10152" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "10153" + { + "name" "ETF2L Highlander Mid Participation Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10154" + { + "name" "ETF2L Highlander Open Gold Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10155" + { + "name" "ETF2L Highlander Open Silver Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10156" + { + "name" "ETF2L Highlander Open Bronze Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10157" + { + "name" "ETF2L Highlander Open Playoff Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "10158" + { + "name" "ETF2L Highlander Open Participation Medal Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10159" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "10160" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "10161" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "10162" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "10163" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "10164" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "10165" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "10166" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "10167" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "10168" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "10169" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "10170" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "10171" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "10172" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "10173" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "10174" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "10175" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "10176" + { + "name" "ETF2L 6v6 Low Gold Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "10177" + { + "name" "ETF2L 6v6 Low Silver Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "10178" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "10179" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "10180" + { + "name" "ETF2L 6v6 Low Participation Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "10181" + { + "name" "ETF2L 6v6 Open Gold Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_1st_place/etf2l_2014_6v6_1st_place_%s.mdl" + } + } + "10182" + { + "name" "ETF2L 6v6 Open Silver Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_2nd_place/etf2l_2014_6v6_2nd_place_%s.mdl" + } + } + "10183" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_3rd_place/etf2l_2014_6v6_3rd_place_%s.mdl" + } + } + "10184" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_group_winner/etf2l_2014_6v6_group_winner_%s.mdl" + } + } + "10185" + { + "name" "ETF2L 6v6 Open Participation Medal Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_6v6_participant/etf2l_2014_6v6_participant_%s.mdl" + } + } + "10186" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10187" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10188" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10189" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10190" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10191" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10192" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10193" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10194" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10195" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10196" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10197" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10198" + { + "name" "ETF2L Highlander Mid Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10199" + { + "name" "ETF2L Highlander Mid Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10200" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10201" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "10202" + { + "name" "ETF2L Highlander Mid Participation Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10203" + { + "name" "ETF2L Highlander Low Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10204" + { + "name" "ETF2L Highlander Low Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10205" + { + "name" "ETF2L Highlander Low Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10206" + { + "name" "ETF2L Highlander Low Playoff Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "10207" + { + "name" "ETF2L Highlander Low Participation Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10208" + { + "name" "ETF2L Highlander Open Gold Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_1st_place/etf2l_2014_highlander_1st_place_%s.mdl" + } + } + "10209" + { + "name" "ETF2L Highlander Open Silver Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_2nd_place/etf2l_2014_highlander_2nd_place_%s.mdl" + } + } + "10210" + { + "name" "ETF2L Highlander Open Bronze Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_3rd_place/etf2l_2014_highlander_3rd_place_%s.mdl" + } + } + "10211" + { + "name" "ETF2L Highlander Open Playoff Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_group_winner/etf2l_2014_highlander_group_winner_%s.mdl" + } + } + "10212" + { + "name" "ETF2L Highlander Open Participation Medal Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2014_highlander_participant/etf2l_2014_highlander_participant_%s.mdl" + } + } + "10213" + { + "name" "Newbie Highlander Cup Gold Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_gold/newbie_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_gold/newbie_highlander_gold_%s.mdl" + } + } + "10214" + { + "name" "Newbie Highlander Cup Silver Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_silver/newbie_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_silver/newbie_highlander_silver_%s.mdl" + } + } + "10215" + { + "name" "Newbie Highlander Cup Bronze Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_bronze/newbie_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_bronze/newbie_highlander_bronze_%s.mdl" + } + } + "10216" + { + "name" "Newbie Highlander Cup Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_NHC_participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_participant/newbie_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_participant/newbie_highlander_participant_%s.mdl" + } + } + "10217" + { + "name" "RGLgg Invite Champions Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "10218" + { + "name" "RGLgg Invite 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10219" + { + "name" "RGLgg Invite 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10220" + { + "name" "RGLgg Invite Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10221" + { + "name" "RGLgg Div2 Champions Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10222" + { + "name" "RGLgg Div2 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10223" + { + "name" "RGLgg Div2 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10224" + { + "name" "RGLgg Div2 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10225" + { + "name" "RGLgg Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10226" + { + "name" "RGLgg Invite Champions Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "10227" + { + "name" "RGLgg Invite 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10228" + { + "name" "RGLgg Invite 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10229" + { + "name" "RGLgg Invite Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10230" + { + "name" "RGLgg Div1 Champions Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10231" + { + "name" "RGLgg Div1 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10232" + { + "name" "RGLgg Div1 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10233" + { + "name" "RGLgg Div1 Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10234" + { + "name" "RGLgg Div2 Champions Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10235" + { + "name" "RGLgg Div2 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10236" + { + "name" "RGLgg Div2 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10237" + { + "name" "RGLgg Div2 Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10238" + { + "name" "RGLgg Open Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10239" + { + "name" "RGLgg One Day Prolander Cup North America Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup_%s.mdl" + } + } + "10240" + { + "name" "RGLgg One Day Prolander Cup Australia Summer 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_Aus" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup/rglgg_prolander_one_day_cup_%s.mdl" + } + } + "10241" + { + "name" "PASS Time Federation 1st Place Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st_%s.mdl" + } + } + "10242" + { + "name" "PASS Time Federation 2nd Place Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd_%s.mdl" + } + } + "10243" + { + "name" "PASS Time Federation 3rd Place Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd_%s.mdl" + } + } + "10244" + { + "name" "PASS Time Federation Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant_%s.mdl" + } + } + "10245" + { + "name" "PASS Time Federation Helper Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_Helper" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_helper/passtime_federation_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_helper/passtime_federation_helper_%s.mdl" + } + } + "10246" + { + "name" "Chapelaria Highlander Gladiator 1st Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Gladiator_1st" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_1st/chapelaria_highlander_1st" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_1st/chapelaria_highlander_1st.mdl" + } + "10247" + { + "name" "Chapelaria Highlander Gladiator 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Gladiator_2nd" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_2nd/chapelaria_highlander_2nd" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_2nd/chapelaria_highlander_2nd.mdl" + } + "10248" + { + "name" "Chapelaria Highlander Gladiator 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Gladiator_3rd" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_3rd/chapelaria_highlander_3rd" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_3rd/chapelaria_highlander_3rd.mdl" + } + "10249" + { + "name" "Chapelaria Highlander Gladiator Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Gladiator_Participant" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_participant/chapelaria_highlander_participant" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_participant/chapelaria_highlander_participant.mdl" + } + "10250" + { + "name" "Chapelaria Highlander Legatus 1st Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Legatus_1st" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_1st/chapelaria_highlander_1st" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_1st/chapelaria_highlander_1st.mdl" + } + "10251" + { + "name" "Chapelaria Highlander Legatus 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Legatus_2nd" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_2nd/chapelaria_highlander_2nd" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_2nd/chapelaria_highlander_2nd.mdl" + } + "10252" + { + "name" "Chapelaria Highlander Legatus 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Legatus_3rd" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_3rd/chapelaria_highlander_3rd" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_3rd/chapelaria_highlander_3rd.mdl" + } + "10253" + { + "name" "Chapelaria Highlander Legatus Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Chapelaria_Highlander_Legatus_Participant" + "item_description" "#TF_TournamentMedal_Chapelaria_Highlander_Season1" + "image_inventory" "backpack/workshop/player/items/scout/chapelaria_highlander_participant/chapelaria_highlander_participant" + "model_player" "models/workshop/player/items/scout/chapelaria_highlander_participant/chapelaria_highlander_participant.mdl" + } + "10254" + { + "name" "Respawn League Highlander 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10255" + { + "name" "Respawn League Highlander 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10256" + { + "name" "Respawn League Highlander 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10257" + { + "name" "Respawn League Highlander Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10258" + { + "name" "Respawn League Highlander Founder Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Highlander_Founder" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_founder/respawn_highlander_founder" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_founder/respawn_highlander_founder_%s.mdl" + } + } + "10259" + { + "name" "Moscow LAN 1st Place Summer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_1st" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_1st/moscow_lan_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_1st/moscow_lan_1st_%s.mdl" + } + } + "10260" + { + "name" "Moscow LAN 2nd Place Summer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_2nd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_2nd/moscow_lan_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_2nd/moscow_lan_2nd_%s.mdl" + } + } + "10261" + { + "name" "Moscow LAN 3rd Place Summer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_3rd" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_3rd/moscow_lan_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_3rd/moscow_lan_3rd_%s.mdl" + } + } + "10262" + { + "name" "Moscow LAN Participant Summer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_Participant" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_participant/moscow_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_participant/moscow_lan_participant_%s.mdl" + } + } + "10263" + { + "name" "Moscow LAN Helper Summer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_Helper" + "item_description" "#TF_TournamentMedal_Summer2018" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_helper/moscow_lan_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_helper/moscow_lan_helper_%s.mdl" + } + } + "10264" + { + "name" "Jaunty Mountaineer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier3_2018" + "item_description" "#TF_Medal_TipOfTheHats2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2018_t3/toth2018_t3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2018_t3/toth2018_t3_%s.mdl" + } + } + "10265" + { + "name" "Jaunty Ranger 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier2_2018" + "item_description" "#TF_Medal_TipOfTheHats2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2018_t2/toth2018_t2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2018_t2/toth2018_t2_%s.mdl" + } + } + "10266" + { + "name" "Jaunty Explorer 2018" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier1_2018" + "item_description" "#TF_Medal_TipOfTheHats2018_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2018_t1/toth2018_t1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2018_t1/toth2018_t1_%s.mdl" + } + } + "10267" + { + "name" "ozfortress Premier 1st Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "10268" + { + "name" "ozfortress Premier 2nd Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "10269" + { + "name" "ozfortress Premier 3rd Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "10270" + { + "name" "ozfortress Premier Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "10271" + { + "name" "ozfortress Intermediate 1st Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10272" + { + "name" "ozfortress Intermediate 2nd Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10273" + { + "name" "ozfortress Intermediate 3rd Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10274" + { + "name" "ozfortress Intermediate Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10275" + { + "name" "ozfortress Open 1st Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10276" + { + "name" "ozfortress Open 2nd Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10277" + { + "name" "ozfortress Open 3rd Place Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10278" + { + "name" "ozfortress Open Participant Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10279" + { + "name" "TFNew Cup 1st Place Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFNew_Gold" + "item_description" "#TF_TournamentMedal_TFNew_Gold_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfn_gold/tfn_gold" + "model_player" "models/workshop/player/items/all_class/tfn_medal/tfn_medal.mdl" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "10280" + { + "name" "TFNew Cup 2nd Place Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFNew_Silver" + "item_description" "#TF_TournamentMedal_TFNew_Silver_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfn_silver/tfn_silver" + "model_player" "models/workshop/player/items/all_class/tfn_medal/tfn_medal.mdl" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "2" + "skin_blu" "3" + } + } + } + } + "10281" + { + "name" "TFNew Cup 3rd Place Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFNew_Bronze" + "item_description" "#TF_TournamentMedal_TFNew_Bronze_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfn_bronze/tfn_bronze" + "model_player" "models/workshop/player/items/all_class/tfn_medal/tfn_medal.mdl" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "4" + "skin_blu" "5" + } + } + } + } + "10282" + { + "name" "TFNew Cup Participant Medal" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFNew_Participant" + "item_description" "#TF_TournamentMedal_TFNew_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfn_participation/tfn_participation" + "model_player" "models/workshop/player/items/all_class/tfn_medal/tfn_medal.mdl" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "6" + "skin_blu" "7" + } + } + } + } + "10283" + { + "name" "RGB 3 LAN 1st Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB3_LAN_Gold" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/rgb3_lan_gold/rgb3_lan_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb3_lan_gold/rgb3_lan_gold_%s.mdl" + } + } + "10284" + { + "name" "RGB 3 LAN 2nd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB3_LAN_Silver" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/rgb3_lan_silver/rgb3_lan_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb3_lan_silver/rgb3_lan_silver_%s.mdl" + } + } + "10285" + { + "name" "RGB 3 LAN 3rd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB3_LAN_Bronze" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/rgb3_lan_bronze/rgb3_lan_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb3_lan_bronze/rgb3_lan_bronze_%s.mdl" + } + } + "10286" + { + "name" "RGB 3 LAN Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB3_LAN_Participant" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/rgb3_lan_participant/rgb3_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb3_lan_participant/rgb3_lan_participant_%s.mdl" + } + } + "10287" + { + "name" "UDL 1st Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_1st" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/udl_gold/udl_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_gold/udl_gold_%s.mdl" + } + } + "10288" + { + "name" "UDL 2nd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_2nd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/udl_silver/udl_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_silver/udl_silver_%s.mdl" + } + } + "10289" + { + "name" "UDL 3rd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_3rd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/udl_bronze/udl_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_bronze/udl_bronze_%s.mdl" + } + } + "10290" + { + "name" "UDL Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Participant" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/udl_participant/udl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_participant/udl_participant_%s.mdl" + } + } + "10291" + { + "name" "ESEA 6s Invite 1st Place Season 29" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_first" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_1st/esea_6v6_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_1st/esea_6v6_invite_1st_%s.mdl" + } + } + "10292" + { + "name" "ESEA 6s Invite 2nd Place Season 29" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_second" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_2nd/esea_6v6_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_2nd/esea_6v6_invite_2nd_%s.mdl" + } + } + "10293" + { + "name" "ESEA 6s Invite 3rd Place Season 29" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_third" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_3rd/esea_6v6_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_3rd/esea_6v6_invite_3rd_%s.mdl" + } + } + "10294" + { + "name" "ESEA 6s Invite Participant Season 29" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_participant/esea_6v6_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_participant/esea_6v6_invite_participant_%s.mdl" + } + } + "10295" + { + "name" "ESEA 6s Invite 1st Place Season 30" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_first" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_1st/esea_6v6_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_1st/esea_6v6_invite_1st_%s.mdl" + } + } + "10296" + { + "name" "ESEA 6s Invite 2nd Place Season 30" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_second" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_2nd/esea_6v6_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_2nd/esea_6v6_invite_2nd_%s.mdl" + } + } + "10297" + { + "name" "ESEA 6s Invite 3rd Place Season 30" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_third" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_3rd/esea_6v6_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_3rd/esea_6v6_invite_3rd_%s.mdl" + } + } + "10298" + { + "name" "ESEA 6s Invite Participant Season 30" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_ESEA_6s_participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/esea_6v6_invite_participant/esea_6v6_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/esea_6v6_invite_participant/esea_6v6_invite_participant_%s.mdl" + } + } + "10299" + { + "name" "Brazil Fortress 6v6 First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_first" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "10300" + { + "name" "Brazil Fortress 6v6 Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "10301" + { + "name" "Brazil Fortress 6v6 Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "10302" + { + "name" "Brazil Fortress 6v6 Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "10303" + { + "name" "Brazil Fortress 6v6 First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_first" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "10304" + { + "name" "Brazil Fortress 6v6 Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "10305" + { + "name" "Brazil Fortress 6v6 Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "10306" + { + "name" "Brazil Fortress 6v6 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "10307" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "10308" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "10309" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "10310" + { + "name" "AsiaFortress Cup Division 1 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "10311" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "10312" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "10313" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "10314" + { + "name" "AsiaFortress Cup Division 2 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "10315" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "10316" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "10317" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "10318" + { + "name" "AsiaFortress Cup Division 3 Participant Season 14" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "10319" + { + "name" "Sacred Scouts 6v6 Gold Medal 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SacredScouts_6v6_Gold" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/sacred_scouts_6v6_gold/sacred_scouts_6v6_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sacred_scouts_6v6_gold/sacred_scouts_6v6_gold_%s.mdl" + } + } + "10320" + { + "name" "Sacred Scouts 6v6 Silver Medal 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SacredScouts_6v6_Silver" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/sacred_scouts_6v6_silver/sacred_scouts_6v6_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sacred_scouts_6v6_silver/sacred_scouts_6v6_silver_%s.mdl" + } + } + "10321" + { + "name" "Sacred Scouts 6v6 Bronze Medal 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SacredScouts_6v6_Bronze" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/sacred_scouts_6v6_bronze/sacred_scouts_6v6_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sacred_scouts_6v6_bronze/sacred_scouts_6v6_bronze_%s.mdl" + } + } + "10322" + { + "name" "Sacred Scouts 6v6 Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SacredScouts_6v6_Participant" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/sacred_scouts_6v6_participant/sacred_scouts_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sacred_scouts_6v6_participant/sacred_scouts_6v6_participant_%s.mdl" + } + } + "10323" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10324" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10325" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10326" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10327" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10328" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10329" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10330" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10331" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10332" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10333" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10334" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10335" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10336" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10337" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10338" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10339" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10340" + { + "name" "ETF2L 6v6 Low Gold Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10341" + { + "name" "ETF2L 6v6 Low Silver Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10342" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10343" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10344" + { + "name" "ETF2L 6v6 Low Participation Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10345" + { + "name" "ETF2L 6v6 Open Gold Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10346" + { + "name" "ETF2L 6v6 Open Silver Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10347" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10348" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10349" + { + "name" "ETF2L 6v6 Open Participation Medal Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10350" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10351" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10352" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10353" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10354" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10355" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10356" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10357" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10358" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10359" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10360" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10361" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10362" + { + "name" "ETF2L Highlander Mid Gold Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10363" + { + "name" "ETF2L Highlander Mid Silver Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10364" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10365" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10366" + { + "name" "ETF2L Highlander Mid Participation Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10367" + { + "name" "ETF2L Highlander Open Gold Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10368" + { + "name" "ETF2L Highlander Open Silver Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10369" + { + "name" "ETF2L Highlander Open Bronze Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10370" + { + "name" "ETF2L Highlander Open Playoff Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10371" + { + "name" "ETF2L Highlander Open Participation Medal Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10372" + { + "name" "Brazil Fortress 6v6 Open First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Open_first" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "10373" + { + "name" "Brazil Fortress 6v6 Open Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Open_second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "10374" + { + "name" "Brazil Fortress 6v6 Open Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Open_third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "10375" + { + "name" "Brazil Fortress 6v6 Open Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Open_participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "10376" + { + "name" "Brazil Fortress 6v6 Invite First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_first" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "10377" + { + "name" "Brazil Fortress 6v6 Invite Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "10378" + { + "name" "Brazil Fortress 6v6 Invite Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "10379" + { + "name" "Brazil Fortress 6v6 Invite Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "10380" + { + "name" "LAN Downunder 1st Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_1st" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "10381" + { + "name" "LAN Downunder 2nd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_2nd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "10382" + { + "name" "LAN Downunder 3rd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_3rd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "10383" + { + "name" "LAN Downunder Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Participant" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "10384" + { + "name" "Russian Highlander 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st_%s.mdl" + } + } + "10385" + { + "name" "Russian Highlander 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd_%s.mdl" + } + } + "10386" + { + "name" "Russian Highlander 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd_%s.mdl" + } + } + "10387" + { + "name" "Russian Highlander Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant_%s.mdl" + } + } + "10388" + { + "name" "Russian Highlander Staff Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Staff" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff_%s.mdl" + } + } + "10389" + { + "name" "AsiaFortress LAN 1st Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_LAN_1st" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_lan_1st/asiafortress_lan_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_lan_1st/asiafortress_lan_1st_%s.mdl" + } + } + "10390" + { + "name" "AsiaFortress LAN 2nd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_LAN_2nd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_lan_2nd/asiafortress_lan_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_lan_2nd/asiafortress_lan_2nd_%s.mdl" + } + } + "10391" + { + "name" "AsiaFortress LAN 3rd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_LAN_3rd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_lan_3rd/asiafortress_lan_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_lan_3rd/asiafortress_lan_3rd_%s.mdl" + } + } + "10392" + { + "name" "AsiaFortress LAN Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_LAN_Participant" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_lan_participant/asiafortress_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_lan_participant/asiafortress_lan_participant_%s.mdl" + } + } + "10393" + { + "name" "AsiaFortress LAN Attendee 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_LAN_Attendee" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_lan_attendee/asiafortress_lan_attendee" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_lan_attendee/asiafortress_lan_attendee_%s.mdl" + } + } + "10394" + { + "name" "NewbiDuo Cup 1st Place Winter 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_1st" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_first/newbiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_first/newbiduo_first_%s.mdl" + } + } + "10395" + { + "name" "NewbiDuo Cup 2nd Place Winter 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_2nd" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_second/newbiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_second/newbiduo_second_%s.mdl" + } + } + "10396" + { + "name" "NewbiDuo Cup 3rd Place Winter 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_3rd" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_third/newbiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_third/newbiduo_third_%s.mdl" + } + } + "10397" + { + "name" "NewbiDuo Cup Participant Winter 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_Participant" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_participant/newbiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_participant/newbiduo_participant_%s.mdl" + } + } + "10398" + { + "name" "NewbiDuo Cup Helper Winter 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_Helper" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_helper/newbiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_helper/newbiduo_helper_%s.mdl" + } + } + "10399" + { + "name" "Streamer Cup Gold Medal Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Gold" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_gold/streamer_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_gold/streamer_cup_gold_%s.mdl" + } + } + "10400" + { + "name" "Streamer Cup Silver Medal Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Silver" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_silver/streamer_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_silver/streamer_cup_silver_%s.mdl" + } + } + "10401" + { + "name" "Streamer Cup Bronze Medal Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Bronze" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_bronze/streamer_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_bronze/streamer_cup_bronze_%s.mdl" + } + } + "10402" + { + "name" "Streamer Cup Participant Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Participant" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_participant/streamer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_participant/streamer_cup_participant_%s.mdl" + } + } + "10403" + { + "name" "Streamer Cup Staff Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Staff" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_staff/streamer_cup_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_staff/streamer_cup_staff_%s.mdl" + } + } + "10404" + { + "name" "Respawn League AUS/NZ 4v4 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10405" + { + "name" "Respawn League AUS/NZ 4v4 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10406" + { + "name" "Respawn League AUS/NZ 4v4 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10407" + { + "name" "Respawn League AUS/NZ 4v4 Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10408" + { + "name" "Respawn League ASIA 4v4 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10409" + { + "name" "Respawn League ASIA 4v4 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10410" + { + "name" "Respawn League ASIA 4v4 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10411" + { + "name" "Respawn League ASIA 4v4 Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10412" + { + "name" "Respawn League ASIA Highlander 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10413" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10414" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10415" + { + "name" "Respawn League ASIA Highlander Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10416" + { + "name" "Respawn League AUS/NZ Highlander 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10417" + { + "name" "Respawn League AUS/NZ Highlander 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10418" + { + "name" "Respawn League AUS/NZ Highlander 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10419" + { + "name" "Respawn League AUS/NZ Highlander Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10420" + { + "name" "Eu Mixes 1st Place Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuMixes_1st" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/eumixes_gold/eumixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eumixes_gold/eumixes_gold_%s.mdl" + } + } + "10421" + { + "name" "Eu Mixes 2nd Place Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuMixes_2nd" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/eumixes_silver/eumixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eumixes_silver/eumixes_silver_%s.mdl" + } + } + "10422" + { + "name" "Eu Mixes 3rd Place Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuMixes_3rd" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/eumixes_bronze/eumixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eumixes_bronze/eumixes_bronze_%s.mdl" + } + } + "10423" + { + "name" "Eu Mixes Playoff Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuMixes_Playoff" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/eumixes_playoff/eumixes_playoff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eumixes_playoff/eumixes_playoff_%s.mdl" + } + } + "10424" + { + "name" "Eu Mixes Participant Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuMixes_Participant" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/eumixes_participant/eumixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eumixes_participant/eumixes_participant_%s.mdl" + } + } + "10425" + { + "name" "Eu Mixes Staff Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuMixes_Staff" + "item_description" "#TF_TournamentMedal_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/eumixes_staff/eumixes_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eumixes_staff/eumixes_staff_%s.mdl" + } + } + "10426" + { + "name" "KnightComp Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_KnightComp_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/knightcomp_gold/knightcomp_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/knightcomp_gold/knightcomp_gold_%s.mdl" + } + } + "10427" + { + "name" "KnightComp Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_KnightComp_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/knightcomp_silver/knightcomp_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/knightcomp_silver/knightcomp_silver_%s.mdl" + } + } + "10428" + { + "name" "KnightComp Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_KnightComp_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/knightcomp_bronze/knightcomp_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/knightcomp_bronze/knightcomp_bronze_%s.mdl" + } + } + "10429" + { + "name" "KnightComp Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_KnightComp_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/knightcomp_participation/knightcomp_participation" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/knightcomp_participation/knightcomp_participation_%s.mdl" + } + } + "10430" + { + "name" "KnightComp Helper Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_KnightComp_Helper" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/knightcomp_helper/knightcomp_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/knightcomp_helper/knightcomp_helper_%s.mdl" + } + } + "10431" + { + "name" "NHBL Natascha Heavyweight Champion Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Natasha_Season8" + "item_description" "#TF_TournamentMedal_NHBL_Natasha_Season8_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "10432" + { + "name" "NHBL Finals Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_participant/nhbl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_participant/nhbl_participant_%s.mdl" + } + } + "10433" + { + "name" "NHBL Finals 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_SecondPlace" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place_%s.mdl" + } + } + "10434" + { + "name" "NHBL Finals 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_ThirdPlace" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place_%s.mdl" + } + } + "10435" + { + "name" "NHBL Finals 4th Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_FourthPlace" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place_%s.mdl" + } + } + "10436" + { + "name" "TFCL 2.0 Tester" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFCL_Tester" + "item_description" "#TF_TournamentMedal_TFCL_Tester_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha_%s.mdl" + } + } + "10437" + { + "name" "Russian Highlander 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st_%s.mdl" + } + } + "10438" + { + "name" "Russian Highlander 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd_%s.mdl" + } + } + "10439" + { + "name" "Russian Highlander 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd_%s.mdl" + } + } + "10440" + { + "name" "Russian Highlander Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant_%s.mdl" + } + } + "10441" + { + "name" "Russian Highlander Staff Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Staff" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff_%s.mdl" + } + } + "10442" + { + "name" "Madness vs Machines Burnished Beryl 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Iron_2019" + "item_description" "#TF_TournamentMedal_Madness_Iron_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_iron/robotarm_iron" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + } + } + } + } + "10443" + { + "name" "Madness vs Machines Grandiose Garnet 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Bronze_2019" + "item_description" "#TF_TournamentMedal_Madness_Bronze_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + } + } + } + } + "10444" + { + "name" "Madness vs Machines Tempered Tourmaline 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Silver_2019" + "item_description" "#TF_TournamentMedal_Madness_Silver_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_silver/robotarm_silver" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver_gem.mdl" + } + } + } + } + "10445" + { + "name" "Madness vs Machines Royal Rhodonite 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Gold_2019" + "item_description" "#TF_TournamentMedal_Madness_Gold_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_gold/robotarm_gold" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "10446" + { + "name" "Madness vs Machines Chaotic Crystal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Platinum_2019" + "item_description" "#TF_TournamentMedal_Madness_Platinum_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + } + } + } + "10447" + { + "name" "Madness vs Machines Hopeful Heart 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Donator_2019" + "item_description" "#TF_TournamentMedal_Madness_Donator_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_donator/robotarm_donator" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator_gem.mdl" + } + } + } + } + "10448" + { + "name" "Madness vs Machines Boundless Heart 2019" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Donator_Rainbow_2019" + "item_description" "#TF_TournamentMedal_Madness_Donator_Rainbow_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow_gem.mdl" + } + } + } + } + "10449" + { + "name" "Madness vs Machines Pinnacle of Ingenuity 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Madness_Creator_2019" + "item_description" "#TF_TournamentMedal_Madness_Creator_2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_creator/robotarm_creator" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator_gem.mdl" + } + } + } + } + "10450" + { + "name" "RGLgg Highlander Invite Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "10451" + { + "name" "RGLgg Highlander Invite 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "10452" + { + "name" "RGLgg Highlander Invite 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "10453" + { + "name" "RGLgg Highlander Invite Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "10454" + { + "name" "RGLgg Highlander Advanced Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10455" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10456" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10457" + { + "name" "RGLgg Highlander Advanced Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10458" + { + "name" "RGLgg Highlander Main Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10459" + { + "name" "RGLgg Highlander Main 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10460" + { + "name" "RGLgg Highlander Main 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10461" + { + "name" "RGLgg Highlander Main Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10462" + { + "name" "RGLgg Highlander Intermediate Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10463" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10464" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10465" + { + "name" "RGLgg Highlander Intermediate Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10466" + { + "name" "RGLgg Highlander Open Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "10467" + { + "name" "RGLgg Div1 Champions AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10468" + { + "name" "RGLgg Div1 2nd Place AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10469" + { + "name" "RGLgg Div1 3rd Place AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10470" + { + "name" "RGLgg Div1 Participant AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10471" + { + "name" "RGLgg Staff AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Staff_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10472" + { + "name" "RGLgg Div2 Champions AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10473" + { + "name" "RGLgg Div2 2nd Place AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10474" + { + "name" "RGLgg Div2 3rd Place AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10475" + { + "name" "RGLgg Div2 Participant AU Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_AU" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10476" + { + "name" "RGLgg One Day Prolander Cup North America Spring 2019 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA_1" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2_%s.mdl" + } + } + "10477" + { + "name" "RGLgg One Day Prolander Cup North America Spring 2019 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA_2" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2_%s.mdl" + } + } + "10478" + { + "name" "RGLgg One Day Prolander Cup North America Staff Spring 2019 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA_1_Staff" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_staff/rglgg_prolander_one_day_cup_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_staff/rglgg_prolander_one_day_cup_staff_%s.mdl" + } + } + "10479" + { + "name" "RGLgg One Day Prolander Cup North America Staff Spring 2019 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA_2_Staff" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_staff/rglgg_prolander_one_day_cup_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_staff/rglgg_prolander_one_day_cup_staff_%s.mdl" + } + } + "10480" + { + "name" "Fruit Mixes Highlander Gold Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "10481" + { + "name" "Fruit Mixes Highlander Silver Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "10482" + { + "name" "Fruit Mixes Highlander Bronze Medal Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "10483" + { + "name" "Fruit Mixes Highlander Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "10484" + { + "name" "Fruit Mixes Highlander Staff Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FruitMixes_Staff" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff_%s.mdl" + } + } + "10485" + { + "name" "New Caps Cup 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NCC_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ncc_1st/ncc_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ncc_1st/ncc_1st_%s.mdl" + } + } + "10486" + { + "name" "New Caps Cup 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NCC_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ncc_2nd/ncc_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ncc_2nd/ncc_2nd_%s.mdl" + } + } + "10487" + { + "name" "New Caps Cup 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NCC_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ncc_3rd/ncc_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ncc_3rd/ncc_3rd_%s.mdl" + } + } + "10488" + { + "name" "New Caps Cup Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NCC_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ncc_participant/ncc_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ncc_participant/ncc_participant_%s.mdl" + } + } + "10489" + { + "name" "UDL Gold Medal Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Gold" + "item_description" "#TF_TournamentMedal_UDL_Gold_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/udl_gold_2/udl_gold_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_gold_2/udl_gold_2_%s.mdl" + } + } + "10490" + { + "name" "UDL Silver Medal Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Silver" + "item_description" "#TF_TournamentMedal_UDL_Silver_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/udl_silver_2/udl_silver_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_silver_2/udl_silver_2_%s.mdl" + } + } + "10491" + { + "name" "UDL Bronze Medal Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Bronze" + "item_description" "#TF_TournamentMedal_UDL_Bronze_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/udl_bronze_2/udl_bronze_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_bronze_2/udl_bronze_2_%s.mdl" + } + } + "10492" + { + "name" "UDL Participant Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Participant" + "item_description" "#TF_TournamentMedal_UDL_Participant_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/udl_participant_2/udl_participant_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_participant_2/udl_participant_2_%s.mdl" + } + } + "10493" + { + "name" "UDL Supporter Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Supporter" + "item_description" "#TF_TournamentMedal_UDL_Supporter_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/udl_staff_2/udl_staff_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_staff_2/udl_staff_2_%s.mdl" + } + } + "10494" + { + "name" "Rasslabyxa Cup 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_gold/rlx_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_gold/rlx_gold_%s.mdl" + } + } + "10495" + { + "name" "Rasslabyxa Cup 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_silver/rlx_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_silver/rlx_silver_%s.mdl" + } + } + "10496" + { + "name" "Rasslabyxa Cup 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_bronze/rlx_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_bronze/rlx_bronze_%s.mdl" + } + } + "10497" + { + "name" "Rasslabyxa Cup Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_participant/rlx_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_participant/rlx_participant_%s.mdl" + } + } + "10498" + { + "name" "Rasslabyxa Cup Helper Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_Helper" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_helper/rlx_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_helper/rlx_helper_%s.mdl" + } + } + "10499" + { + "name" "ozfortress Premier 1st Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "10500" + { + "name" "ozfortress Premier 2nd Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "10501" + { + "name" "ozfortress Premier 3rd Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "10502" + { + "name" "ozfortress Premier Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "10503" + { + "name" "ozfortress Intermediate 1st Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10504" + { + "name" "ozfortress Intermediate 2nd Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10505" + { + "name" "ozfortress Intermediate 3rd Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10506" + { + "name" "ozfortress Intermediate Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10507" + { + "name" "ozfortress Open 1st Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10508" + { + "name" "ozfortress Open 2nd Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10509" + { + "name" "ozfortress Open 3rd Place Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10510" + { + "name" "ozfortress Open Participant Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10511" + { + "name" "Australian Hightower Highjinx Champion 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Champion" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_champion/ahh_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_champion/ahh_champion_%s.mdl" + } + } + "10512" + { + "name" "Australian Hightower Highjinx Participant 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_participant/ahh_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_participant/ahh_participant_%s.mdl" + } + } + "10513" + { + "name" "Australian Hightower Highjinx Donor 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Donor" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_donor/ahh_donor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_donor/ahh_donor_%s.mdl" + } + } + "10514" + { + "name" "Australian Hightower Highjinx Helper 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Helper" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_helper/ahh_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_helper/ahh_helper_%s.mdl" + } + } + "10515" + { + "name" "Ultimate Ultiduo 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first_%s.mdl" + } + } + "10516" + { + "name" "Ultimate Ultiduo 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second_%s.mdl" + } + } + "10517" + { + "name" "Ultimate Ultiduo 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third_%s.mdl" + } + } + "10518" + { + "name" "Ultimate Ultiduo Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant_%s.mdl" + } + } + "10519" + { + "name" "Ultimate Ultiduo Helper Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Helper" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper_%s.mdl" + } + } + "10520" + { + "name" "Brazil Fortress JumpCup Soldier 1st Place Division 1 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "10521" + { + "name" "Brazil Fortress JumpCup Soldier 2nd Place Division 1 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "10522" + { + "name" "Brazil Fortress JumpCup Soldier 3rd Place Division 1 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "10523" + { + "name" "Brazil Fortress JumpCup Soldier Participant Division 1 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "10524" + { + "name" "Brazil Fortress JumpCup Soldier 1st Place Division 2 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "10525" + { + "name" "Brazil Fortress JumpCup Soldier 2nd Place Division 2 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "10526" + { + "name" "Brazil Fortress JumpCup Soldier 3rd Place Division 2 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "10527" + { + "name" "Brazil Fortress JumpCup Soldier Participant Division 2 Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "10528" + { + "name" "Brazil Fortress JumpCup Demoman 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "10529" + { + "name" "Brazil Fortress JumpCup Demoman 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "10530" + { + "name" "Brazil Fortress JumpCup Demoman 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "10531" + { + "name" "Brazil Fortress JumpCup Demoman Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "10532" + { + "name" "Brazil Fortress JumpCup Helper Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Helper" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_helper/brasil_fortress_jump_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_helper/brasil_fortress_jump_helper_%s.mdl" + } + } + "10533" + { + "name" "RGLgg Highlander Experimental Maps Cup Winter 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_HighlanderCup_Exp" + "item_description" "#TF_TournamentMedal_Winter2018" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup_%s.mdl" + } + } + "10534" + { + "name" "RETF2 Retrospective 2 Ultiduo Winner Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_Ultiduo_Winner" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/ultiduo_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10535" + { + "name" "RETF2 Retrospective 2 Ultiduo Finalist Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_Ultiduo_Finalist" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/ultiduo_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10536" + { + "name" "RETF2 Retrospective 2 Ultiduo Participant Season 2 2015" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_Ultiduo_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_disk/ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_disk/retf2_retro_disk_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10537" + { + "name" "RETF2 Retrospective 2 6v6 Newbie Winner Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_6v6Newbie_Winner" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/6v6_newbie_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10538" + { + "name" "RETF2 Retrospective 2 6v6 Newbie Finalist Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_6v6Newbie_Finalist" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/6v6_newbie_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10539" + { + "name" "RETF2 Retrospective 2 6v6 Newbie Participant Season 2 2015" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_6v6Newbie_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_disk/6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_disk/retf2_retro_disk_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10540" + { + "name" "RETF2 Retrospective 2 Arena Respawn Winner Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_ArenaRespawn_Winner" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/arena_respawn_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10541" + { + "name" "RETF2 Retrospective 2 Arena Respawn Finalist Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_ArenaRespawn_Finalist" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/arena_respawn_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10542" + { + "name" "RETF2 Retrospective 2 Arena Respawn Participant Season 2 2015" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_ArenaRespawn_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_disk/arena_respawn_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_disk/retf2_retro_disk_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10543" + { + "name" "RETF2 Retrospective 2 Highlander Winner Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_Highlander_Winner" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/highlander_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "4" + } + } + "10544" + { + "name" "RETF2 Retrospective 2 Highlander Finalist Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_Highlander_Finalist" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/highlander_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "4" + } + } + "10545" + { + "name" "RETF2 Retrospective 2 Highlander Participant Season 2 2015" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_Highlander_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_disk/highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_disk/retf2_retro_disk_%s.mdl" + } + "visuals" + { + "skin" "4" + } + } + "10546" + { + "name" "RETF2 Retrospective 2 RSP Winner Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_RSP_Winner" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/ready_steady_pan_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "5" + } + } + "10547" + { + "name" "RETF2 Retrospective 2 RSP Finalist Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_RSP_Finalist" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/ready_steady_pan_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "5" + } + } + "10548" + { + "name" "RETF2 Retrospective 2 RSP Participant Season 2 2015" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_RSP_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_disk/ready_steady_pan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_disk/retf2_retro_disk_%s.mdl" + } + "visuals" + { + "skin" "5" + } + } + "10549" + { + "name" "RETF2 Retrospective 2 6v6 Senior Winner Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_6v6Senior_Winner" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/6v6_senior_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "6" + } + } + "10550" + { + "name" "RETF2 Retrospective 2 6v6 Senior Finalist Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_6v6Senior_Finalist" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/6v6_senior_finalist_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "6" + } + } + "10551" + { + "name" "RETF2 Retrospective 2 6v6 Senior Participant Season 2 2015" + "prefab" "tournament_medal" + "item_name" "#TF_RETF2_6v6Senior_Participant" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_disk/6v6_senior_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_disk/retf2_retro_disk_%s.mdl" + } + "visuals" + { + "skin" "6" + } + } + "10552" + { + "name" "RETF2 Retrospective 2 Contributor Season 2 2015" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_RETF2_Contributor" + "item_description" "#TF_TournamentMedal_2015" + "image_inventory" "backpack/workshop/player/items/all_class/retf2_retro_cartridge/contributor_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/retf2_retro_cartridge/retf2_retro_cartridge_%s.mdl" + } + "visuals" + { + "skin" "7" + } + } + "10553" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10554" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10555" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10556" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10557" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10558" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10559" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10560" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10561" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10562" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10563" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10564" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10565" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10566" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10567" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10568" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10569" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10570" + { + "name" "ETF2L 6v6 Low Gold Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10571" + { + "name" "ETF2L 6v6 Low Silver Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10572" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10573" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10574" + { + "name" "ETF2L 6v6 Low Participation Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10575" + { + "name" "ETF2L 6v6 Open Gold Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10576" + { + "name" "ETF2L 6v6 Open Silver Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10577" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10578" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10579" + { + "name" "ETF2L 6v6 Open Participation Medal Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10580" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10581" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10582" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10583" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10584" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10585" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10586" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10587" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10588" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10589" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10590" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10591" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10592" + { + "name" "ETF2L Highlander Mid Gold Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10593" + { + "name" "ETF2L Highlander Mid Silver Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10594" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10595" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10596" + { + "name" "ETF2L Highlander Mid Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10597" + { + "name" "ETF2L Highlander Open Gold Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "10598" + { + "name" "ETF2L Highlander Open Silver Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "10599" + { + "name" "ETF2L Highlander Open Bronze Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "10600" + { + "name" "ETF2L Highlander Open Playoff Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "10601" + { + "name" "ETF2L Highlander Open Participation Medal Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "10602" + { + "name" "ETF2L Fresh Meat Challenge Gold Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_gold/etf2l_fresh_meat_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_gold/etf2l_fresh_meat_gold_%s.mdl" + } + } + "10603" + { + "name" "ETF2L Fresh Meat Challenge Silver Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_silver/etf2l_fresh_meat_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_silver/etf2l_fresh_meat_silver_%s.mdl" + } + } + "10604" + { + "name" "ETF2L Fresh Meat Challenge Bronze Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_bronze/etf2l_fresh_meat_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_bronze/etf2l_fresh_meat_bronze_%s.mdl" + } + } + "10605" + { + "name" "ETF2L Fresh Meat Challenge Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_participant/etf2l_fresh_meat_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_participant/etf2l_fresh_meat_participant_%s.mdl" + } + } + "10606" + { + "name" "South American Vanilla Fortress 6v6 Invite First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "10607" + { + "name" "South American Vanilla Fortress 6v6 Invite Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "10608" + { + "name" "South American Vanilla Fortress 6v6 Invite Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "10609" + { + "name" "South American Vanilla Fortress 6v6 Invite Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "10610" + { + "name" "South American Vanilla Fortress 6v6 Intermediate First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "10611" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "10612" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "10613" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "10614" + { + "name" "South American Vanilla Fortress 6v6 Open First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "10615" + { + "name" "South American Vanilla Fortress 6v6 Open Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "10616" + { + "name" "South American Vanilla Fortress 6v6 Open Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "10617" + { + "name" "South American Vanilla Fortress 6v6 Open Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "10618" + { + "name" "South American Vanilla Fortress 6v6 Supporter Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Supporter" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "10619" + { + "name" "Asia BBall Cup 1st Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_1st" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st_%s.mdl" + } + } + "10620" + { + "name" "Asia BBall Cup 2nd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_2nd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd_%s.mdl" + } + } + "10621" + { + "name" "Asia BBall Cup 3rd Place 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_3rd" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd_%s.mdl" + } + } + "10622" + { + "name" "Asia BBall Cup Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Participant" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant_%s.mdl" + } + } + "10623" + { + "name" "Palaise Limitless 6v6 Champion" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Palaise_Limitless_Champion" + "item_description" "#TF_TournamentMedal_Palaise_Limitless_Champion_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/palaise_champion/palaise_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/palaise_champion/palaise_champion_%s.mdl" + } + } + "10624" + { + "name" "Palaise Limitless 6v6 Runner Up" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Palaise_Limitless_RunnerUp" + "item_description" "#TF_TournamentMedal_Palaise_Limitless_RunnerUp_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/palaise_runner_up/palaise_runner_up" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/palaise_runner_up/palaise_runner_up_%s.mdl" + } + } + "10625" + { + "name" "Palaise Limitless 6v6 Participant" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Palaise_Limitless_Participant" + "item_description" "#TF_TournamentMedal_Palaise_Limitless_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/palaise_contestant/palaise_contestant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/palaise_contestant/palaise_contestant_%s.mdl" + } + } + "10626" + { + "name" "Respawn League AUS/NZ Highlander 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10627" + { + "name" "Respawn League AUS/NZ Highlander 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10628" + { + "name" "Respawn League AUS/NZ Highlander 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10629" + { + "name" "Respawn League AUS/NZ Highlander Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10630" + { + "name" "Respawn League AUS/NZ 4v4 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10631" + { + "name" "Respawn League AUS/NZ 4v4 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10632" + { + "name" "Respawn League AUS/NZ 4v4 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10633" + { + "name" "Respawn League AUS/NZ 4v4 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10634" + { + "name" "Respawn League ASIA 4v4 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10635" + { + "name" "Respawn League ASIA 4v4 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10636" + { + "name" "Respawn League ASIA 4v4 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10637" + { + "name" "Respawn League ASIA 4v4 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10638" + { + "name" "Respawn League ASIA Highlander 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "10639" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "10640" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "10641" + { + "name" "Respawn League ASIA Highlander Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "10642" + { + "name" "Brazil Fortress Halloween First 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_First" + "item_description" "#TF_TournamentMedal_BrazilFortress_Hwn_First_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "1" + } + } + "10643" + { + "name" "Brazil Fortress Halloween Second 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Second" + "item_description" "#TF_TournamentMedal_BrazilFortress_Hwn_Second_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "2" + } + } + "10644" + { + "name" "Brazil Fortress Halloween Third 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Third" + "item_description" "#TF_TournamentMedal_BrazilFortress_Hwn_Third_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "3" + } + } + "10645" + { + "name" "Brazil Fortress Halloween Playoffs 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Playoffs" + "item_description" "#TF_TournamentMedal_BrazilFortress_Hwn_Playoffs_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "4" + } + } + "10646" + { + "name" "Brazil Fortress Halloween Participant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Participant" + "item_description" "#TF_TournamentMedal_BrazilFortress_Hwn_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "5" + } + } + "10647" + { + "name" "Brazil Fortress Halloween Assistant 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Assistant" + "item_description" "#TF_TournamentMedal_BrazilFortress_Hwn_Assistant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_assistant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "6" + } + } + "10648" + { + "name" "CLTF2 Prolander Tournament Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Gold" + "item_description" "#TF_TournamentMedal_CLTF2_OneDayCup" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "10649" + { + "name" "CLTF2 Prolander Tournament Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Silver" + "item_description" "#TF_TournamentMedal_CLTF2_OneDayCup" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "10650" + { + "name" "CLTF2 Prolander Tournament Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Bronze" + "item_description" "#TF_TournamentMedal_CLTF2_OneDayCup" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "10651" + { + "name" "CLTF2 Prolander Tournament Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Participant" + "item_description" "#TF_TournamentMedal_CLTF2_OneDayCup" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "10652" + { + "name" "CLTF2 Prolander Tournament Supporter" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Prolander_Supporter" + "item_description" "#TF_TournamentMedal_CLTF2_Supporter_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter_%s.mdl" + } + } + "10653" + { + "name" "Memes vs Machines Player 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_MvM_Memes_Player" + "item_description" "#TF_TournamentMedal_MvM_Memes_Player_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player_s2/mvm_memes_player_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "10654" + { + "name" "Memes vs Machines Creator 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_MvM_Memes_Creator" + "item_description" "#TF_TournamentMedal_MvM_Memes_Creator_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator_s2/mvm_memes_creator_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "10655" + { + "name" "FBTF2 4v4 Elite 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Elite_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_1st/fbtf_4v4_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_1st/fbtf_4v4_1st_%s.mdl" + } + } + "10656" + { + "name" "FBTF2 4v4 Elite 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_2nd/fbtf_4v4_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_2nd/fbtf_4v4_2nd_%s.mdl" + } + } + "10657" + { + "name" "FBTF2 4v4 Elite 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_3rd/fbtf_4v4_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_3rd/fbtf_4v4_3rd_%s.mdl" + } + } + "10658" + { + "name" "FBTF2 4v4 Elite Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_participant/fbtf_4v4_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_participant/fbtf_4v4_participant_%s.mdl" + } + } + "10659" + { + "name" "FBTF2 4v4 Access 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Access_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_1st/fbtf_4v4_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_1st/fbtf_4v4_1st_%s.mdl" + } + } + "10660" + { + "name" "FBTF2 4v4 Access 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Access_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_2nd/fbtf_4v4_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_2nd/fbtf_4v4_2nd_%s.mdl" + } + } + "10661" + { + "name" "FBTF2 4v4 Access 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Access_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_3rd/fbtf_4v4_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_3rd/fbtf_4v4_3rd_%s.mdl" + } + } + "10662" + { + "name" "FBTF2 4v4 Access Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Access_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_participant/fbtf_4v4_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_participant/fbtf_4v4_participant_%s.mdl" + } + } + "10663" + { + "name" "FBTF2 4v4 Open 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Open_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_1st/fbtf_4v4_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_1st/fbtf_4v4_1st_%s.mdl" + } + } + "10664" + { + "name" "FBTF2 4v4 Open 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Open_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_2nd/fbtf_4v4_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_2nd/fbtf_4v4_2nd_%s.mdl" + } + } + "10665" + { + "name" "FBTF2 4v4 Open 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Open_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_3rd/fbtf_4v4_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_3rd/fbtf_4v4_3rd_%s.mdl" + } + } + "10666" + { + "name" "FBTF2 4v4 Open Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF2_4v4_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/fbtf_4v4_participant/fbtf_4v4_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fbtf_4v4_participant/fbtf_4v4_participant_%s.mdl" + } + } + "10667" + { + "name" "TFArena 6v6 Arena Mode Cup Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "10668" + { + "name" "TFArena 6v6 Arena Mode Cup Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "10669" + { + "name" "TFArena 6v6 Arena Mode Cup Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "10670" + { + "name" "TFArena 6v6 Arena Mode Cup Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "10671" + { + "name" "TFArena 6v6 Arena Mode Cup Helper" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Helper" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Helper_Cup1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_helper/tfarena_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_helper/tfarena_helper_%s.mdl" + } + } + "10672" + { + "name" "Copenhagen Games 6v6 Gold Medal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Gold" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_6v6_gold_2019/cph_6v6_gold_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_6v6_gold_2019/cph_6v6_gold_2019_%s.mdl" + } + } + "10673" + { + "name" "Copenhagen Games 6v6 Silver Medal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Silver" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_6v6_silver_2019/cph_6v6_silver_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_6v6_silver_2019/cph_6v6_silver_2019_%s.mdl" + } + } + "10674" + { + "name" "Copenhagen Games 6v6 Bronze Medal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_6v6_Bronze" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_6v6_bronze_2019/cph_6v6_bronze_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_6v6_bronze_2019/cph_6v6_bronze_2019_%s.mdl" + } + } + "10675" + { + "name" "Copenhagen Games Highlander Gold Medal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Gold" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_hl_gold_2019/cph_hl_gold_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_hl_gold_2019/cph_hl_gold_2019_%s.mdl" + } + } + "10676" + { + "name" "Copenhagen Games Highlander Silver Medal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Silver" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_hl_silver_2019/cph_hl_silver_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_hl_silver_2019/cph_hl_silver_2019_%s.mdl" + } + } + "10677" + { + "name" "Copenhagen Games Highlander Bronze Medal 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Highlander_Bronze" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_hl_bronze_2019/cph_hl_bronze_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_hl_bronze_2019/cph_hl_bronze_2019_%s.mdl" + } + } + "10678" + { + "name" "Copenhagen Games Participant 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_participant_2019/cph_participant_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_participant_2019/cph_participant_2019_%s.mdl" + } + } + "10679" + { + "name" "Copenhagen Games Staff 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Copenhagen_Staff" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/cph_staff_2019/cph_staff_2019" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cph_staff_2019/cph_staff_2019_%s.mdl" + } + } + "10680" + { + "name" "LBTF2 Highlander Open 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10681" + { + "name" "LBTF2 Highlander Open 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10682" + { + "name" "LBTF2 Highlander Open 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10683" + { + "name" "LBTF2 Highlander Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_participant_new" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "10684" + { + "name" "LBTF2 Highlander Main 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Main_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10685" + { + "name" "LBTF2 Highlander Main 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10686" + { + "name" "LBTF2 Highlander Main 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10687" + { + "name" "LBTF2 Highlander Main Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_participant_new" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "10688" + { + "name" "Cap that Cup 1st Place" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTC_1st" + "item_description" "#TF_TournamentMedal_CTC_1st_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_1st/ctc_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_1st/ctc_1st_%s.mdl" + } + } + "10689" + { + "name" "Cap that Cup 2nd Place" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTC_2nd" + "item_description" "#TF_TournamentMedal_CTC_2nd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_2nd/ctc_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_2nd/ctc_2nd_%s.mdl" + } + } + "10690" + { + "name" "Cap that Cup 3rd Place" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTC_3rd" + "item_description" "#TF_TournamentMedal_CTC_3rd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_3rd/ctc_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_3rd/ctc_3rd_%s.mdl" + } + } + "10691" + { + "name" "Cap that Cup Participant" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTC_Participant" + "item_description" "#TF_TournamentMedal_CTC_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_participant/ctc_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_participant/ctc_participant_%s.mdl" + } + } + "10692" + { + "name" "Cap that Cup Staff" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTC_Staff" + "item_description" "#TF_TournamentMedal_CTC_Staff_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_staff/ctc_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_staff/ctc_staff_%s.mdl" + } + } + "10693" + { + "name" "EuroLander Premier Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Premier_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_gold/eurolander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_gold/eurolander_gold_%s.mdl" + } + } + "10694" + { + "name" "EuroLander Premier Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Premier_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_silver/eurolander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_silver/eurolander_silver_%s.mdl" + } + } + "10695" + { + "name" "EuroLander Premier Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Premier_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_bronze/eurolander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_bronze/eurolander_bronze_%s.mdl" + } + } + "10696" + { + "name" "EuroLander Premier Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_participant/eurolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_participant/eurolander_participant_%s.mdl" + } + } + "10697" + { + "name" "EuroLander Supporter" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Supporter" + "item_description" "#TF_TournamentMedal_EuroLander_Supporter_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_supporter/eurolander_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_supporter/eurolander_supporter_%s.mdl" + } + } + "10698" + { + "name" "EuroLander Main Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Main_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_gold/eurolander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_gold/eurolander_gold_%s.mdl" + } + } + "10699" + { + "name" "EuroLander Main Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Main_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_silver/eurolander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_silver/eurolander_silver_%s.mdl" + } + } + "10700" + { + "name" "EuroLander Main Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Main_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_bronze/eurolander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_bronze/eurolander_bronze_%s.mdl" + } + } + "10701" + { + "name" "EuroLander Main Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_participant/eurolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_participant/eurolander_participant_%s.mdl" + } + } + "10702" + { + "name" "EuroLander Open Gold Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_gold/eurolander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_gold/eurolander_gold_%s.mdl" + } + } + "10703" + { + "name" "EuroLander Open Silver Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_silver/eurolander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_silver/eurolander_silver_%s.mdl" + } + } + "10704" + { + "name" "EuroLander Open Bronze Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_bronze/eurolander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_bronze/eurolander_bronze_%s.mdl" + } + } + "10705" + { + "name" "EuroLander Open Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EuroLander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/eurolander_participant/eurolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/eurolander_participant/eurolander_participant_%s.mdl" + } + } + "10706" + { + "name" "Classic MGE Cup Gold Medal Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold_%s.mdl" + } + } + "10707" + { + "name" "Classic MGE Cup Silver Medal Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver_%s.mdl" + } + } + "10708" + { + "name" "Classic MGE Cup Bronze Medal Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze_%s.mdl" + } + } + "10709" + { + "name" "Classic MGE Cup Participant Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant_%s.mdl" + } + } + "10710" + { + "name" "Classic MGE Cup Helper Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Helper" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper_%s.mdl" + } + } + "10711" + { + "name" "Late Night TF2 Cup Gold Medal Summer 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Gold" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_gold/late_night_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_gold/late_night_gold_%s.mdl" + } + } + "10712" + { + "name" "Late Night TF2 Cup Silver Medal Summer 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Silver" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_silver/late_night_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_silver/late_night_silver_%s.mdl" + } + } + "10713" + { + "name" "Late Night TF2 Cup Bronze Medal Summer 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Bronze" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_bronze/late_night_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_bronze/late_night_bronze_%s.mdl" + } + } + "10714" + { + "name" "Late Night TF2 Cup Participant Summer 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Participant" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_participant/late_night_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_participant/late_night_participant_%s.mdl" + } + } + "10715" + { + "name" "Late Night TF2 Cup Helper Summer 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Helper" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_helper/late_night_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_helper/late_night_helper_%s.mdl" + } + } + "10716" + { + "name" "EBL 1st Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "10717" + { + "name" "EBL 2nd Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "10718" + { + "name" "EBL 3rd Place Medal Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "10719" + { + "name" "EBL Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "10720" + { + "name" "EBL Staff Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Staff" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_staff/ebl_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_staff/ebl_staff_%s.mdl" + } + } + "10721" + { + "name" "HLMixes First Place Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_first/hlmixes_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_first/hlmixes_first_%s.mdl" + } + } + "10722" + { + "name" "HLMixes Finalist Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_Finalist" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_finalist/hlmixes_finalist" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_finalist/hlmixes_finalist_%s.mdl" + } + } + "10723" + { + "name" "HLMixes Participant Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_participant/hlmixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_participant/hlmixes_participant_%s.mdl" + } + } + "10724" + { + "name" "RGLgg Invite Champions Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "10725" + { + "name" "RGLgg Invite 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10726" + { + "name" "RGLgg Invite 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10727" + { + "name" "RGLgg Invite Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10728" + { + "name" "RGLgg Div1 Champions Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10729" + { + "name" "RGLgg Div1 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10730" + { + "name" "RGLgg Div1 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10731" + { + "name" "RGLgg Div1 Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10732" + { + "name" "RGLgg Div2 Champions Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10733" + { + "name" "RGLgg Div2 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10734" + { + "name" "RGLgg Div2 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10735" + { + "name" "RGLgg Div2 Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10736" + { + "name" "RGLgg Div3 Champions Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10737" + { + "name" "RGLgg Div3 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10738" + { + "name" "RGLgg Div3 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10739" + { + "name" "RGLgg Div3 Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10740" + { + "name" "RGLgg Open Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10741" + { + "name" "RGLgg Invite Champions EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "10742" + { + "name" "RGLgg Invite 2nd Place EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10743" + { + "name" "RGLgg Invite 3rd Place EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10744" + { + "name" "RGLgg Invite Participant EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "10745" + { + "name" "RGLgg Div2 Champions EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10746" + { + "name" "RGLgg Div2 2nd Place EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10747" + { + "name" "RGLgg Div2 3rd Place EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10748" + { + "name" "RGLgg Div2 Participant EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10749" + { + "name" "RGLgg Div3 Champions EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_Champions_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10750" + { + "name" "RGLgg Div3 2nd Place EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_2nd_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10751" + { + "name" "RGLgg Div3 3rd Place EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_3rd_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10752" + { + "name" "RGLgg Div3 Participant EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_Participant_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10753" + { + "name" "RGLgg Open Participant EU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant_EU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10754" + { + "name" "RGLgg Div1 Champions AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10755" + { + "name" "RGLgg Div1 2nd Place AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10756" + { + "name" "RGLgg Div1 3rd Place AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10757" + { + "name" "RGLgg Div1 Participant AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "10758" + { + "name" "RGLgg Div2 Champions AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10759" + { + "name" "RGLgg Div2 2nd Place AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10760" + { + "name" "RGLgg Div2 3rd Place AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10761" + { + "name" "RGLgg Div2 Participant AU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_AU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "10762" + { + "name" "RGLgg Highlander Invite Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "10763" + { + "name" "RGLgg Highlander Invite 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "10764" + { + "name" "RGLgg Highlander Invite 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "10765" + { + "name" "RGLgg Highlander Invite Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "10766" + { + "name" "RGLgg Highlander Advanced Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10767" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10768" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10769" + { + "name" "RGLgg Highlander Advanced Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10770" + { + "name" "RGLgg Highlander Main Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10771" + { + "name" "RGLgg Highlander Main 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10772" + { + "name" "RGLgg Highlander Main 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10773" + { + "name" "RGLgg Highlander Main Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10774" + { + "name" "RGLgg Highlander Intermediate Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10775" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10776" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10777" + { + "name" "RGLgg Highlander Intermediate Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10778" + { + "name" "RGLgg Highlander Open Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "10779" + { + "name" "RGLgg Highlander Invite Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "10780" + { + "name" "RGLgg Highlander Invite 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "10781" + { + "name" "RGLgg Highlander Invite 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "10782" + { + "name" "RGLgg Highlander Invite Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "10783" + { + "name" "RGLgg Highlander Advanced Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10784" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10785" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10786" + { + "name" "RGLgg Highlander Advanced Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10787" + { + "name" "RGLgg Highlander Main Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10788" + { + "name" "RGLgg Highlander Main 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10789" + { + "name" "RGLgg Highlander Main 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10790" + { + "name" "RGLgg Highlander Main Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10791" + { + "name" "RGLgg Highlander Intermediate Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10792" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10793" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10794" + { + "name" "RGLgg Highlander Intermediate Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10795" + { + "name" "RGLgg Highlander Open Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "10796" + { + "name" "RGLgg Highlander Experimental Maps Cup Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_HighlanderCup_Exp" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup_%s.mdl" + } + } + "10797" + { + "name" "CLTF2 6v6 High No Restrictions Gold Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_High_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "10798" + { + "name" "CLTF2 6v6 High No Restrictions Silver Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_High_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "10799" + { + "name" "CLTF2 6v6 High No Restrictions Bronze Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_High_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "10800" + { + "name" "CLTF2 6v6 High No Restrictions Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_High_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "10805" + { + "name" "CLTF2 6v6 Open No Restrictions Gold Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "10806" + { + "name" "CLTF2 6v6 Open No Restrictions Silver Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "10807" + { + "name" "CLTF2 6v6 Open No Restrictions Bronze Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "10808" + { + "name" "CLTF2 6v6 Open No Restrictions Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "10809" + { + "name" "CLTF2 Tournament Supporter" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Supporter" + "item_description" "#TF_TournamentMedal_CLTF2_Supporter_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter_%s.mdl" + } + } + "10810" + { + "name" "BBall One Day Cup First Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Bball_One_Day_Cup_First" + "item_description" "#TF_TournamentMedal_Bball_One_Day_Cup_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bball_1_day_cup_first/bball_1_day_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bball_1_day_cup_first/bball_1_day_cup_first_%s.mdl" + } + } + "10811" + { + "name" "BBall One Day Cup Second Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Bball_One_Day_Cup_Second" + "item_description" "#TF_TournamentMedal_Bball_One_Day_Cup_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bball_1_day_cup_second/bball_1_day_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bball_1_day_cup_second/bball_1_day_cup_second_%s.mdl" + } + } + "10812" + { + "name" "BBall One Day Cup Third Place" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Bball_One_Day_Cup_Third" + "item_description" "#TF_TournamentMedal_Bball_One_Day_Cup_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bball_1_day_cup_third/bball_1_day_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bball_1_day_cup_third/bball_1_day_cup_third_%s.mdl" + } + } + "10813" + { + "name" "BBall One Day Cup Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Bball_One_Day_Cup_Participant" + "item_description" "#TF_TournamentMedal_Bball_One_Day_Cup_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bball_1_day_cup_participant/bball_1_day_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bball_1_day_cup_participant/bball_1_day_cup_participant_%s.mdl" + } + } + "10814" + { + "name" "BBall One Day Cup Staff" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Bball_One_Day_Cup_Staff" + "item_description" "#TF_TournamentMedal_Bball_One_Day_Cup_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/bball_1_day_cup_staff/bball_1_day_cup_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/bball_1_day_cup_staff/bball_1_day_cup_staff_%s.mdl" + } + } + "10815" + { + "name" "Pugiklander First Place Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_First" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_first/pug_hl_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_first/pug_hl_first_%s.mdl" + } + } + "10816" + { + "name" "Pugiklander Second Place Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Second" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_second/pug_hl_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_second/pug_hl_second_%s.mdl" + } + } + "10817" + { + "name" "Pugiklander Third Place Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Third" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_third/pug_hl_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_third/pug_hl_third_%s.mdl" + } + } + "10818" + { + "name" "Pugiklander Participant Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Participant" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant_%s.mdl" + } + } + "10819" + { + "name" "Pugiklander Staff Spring 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Staff" + "item_description" "#TF_TournamentMedal_Spring2019" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_staff/pug_hl_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_staff/pug_hl_staff_%s.mdl" + } + } + "10820" + { + "name" "MidNight Moon Gold 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Gold" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_gold/midnight_moon_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_gold/midnight_moon_gold_%s.mdl" + } + } + "10821" + { + "name" "MidNight Moon Silver 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Silver" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_silver/midnight_moon_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_silver/midnight_moon_silver_%s.mdl" + } + } + "10822" + { + "name" "MidNight Moon Bronze 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Bronze" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_bronze/midnight_moon_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_bronze/midnight_moon_bronze_%s.mdl" + } + } + "10823" + { + "name" "MidNight Moon Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_participant/midnight_moon_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_participant/midnight_moon_participant_%s.mdl" + } + } + "10824" + { + "name" "MidNight Moon Staff 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Staff" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_staff/midnight_moon_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_staff/midnight_moon_staff_%s.mdl" + } + } + "10825" + { + "name" "UGC League Contributor And Admin 2018" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Admin" + "item_description" "#TF_TournamentMedal_2018" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10826" + { + "name" "UGC League Contributor And Admin 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Admin" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10827" + { + "name" "UGC Highlander 1st Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_1st" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10828" + { + "name" "UGC Highlander 2nd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_2nd" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10829" + { + "name" "UGC Highlander 3rd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_3rd" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10830" + { + "name" "UGC Highlander Premium Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Premium_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10831" + { + "name" "UGC Highlander 1st Place Main Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_1st" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "10832" + { + "name" "UGC Highlander 2nd Place Main Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_2nd" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "10833" + { + "name" "UGC Highlander 3rd Place Main Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_3rd" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "10834" + { + "name" "UGC Highlander Main Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "10835" + { + "name" "UGC Highlander 1st Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_1st" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10836" + { + "name" "UGC Highlander 2nd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_2nd" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10837" + { + "name" "UGC Highlander 3rd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_3rd" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10838" + { + "name" "UGC Highlander Premium Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Premium_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10839" + { + "name" "UGC Highlander 1st Place Main Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_1st" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "10840" + { + "name" "UGC Highlander 2nd Place Main Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_2nd" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "10841" + { + "name" "UGC Highlander 3rd Place Main Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_3rd" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "10842" + { + "name" "UGC Highlander Main Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Main_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "10843" + { + "name" "UGC 6vs6 1st Place Platinum Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10844" + { + "name" "UGC 6vs6 2nd Place Platinum Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10845" + { + "name" "UGC 6vs6 3rd Place Platinum Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10846" + { + "name" "UGC 6vs6 Platinum Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10847" + { + "name" "UGC 6vs6 1st Place Silver Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_1st" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "10848" + { + "name" "UGC 6vs6 2nd Place Silver Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "10849" + { + "name" "UGC 6vs6 3rd Place Silver Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "10850" + { + "name" "UGC 6vs6 Silver Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "10851" + { + "name" "UGC 6vs6 1st Place Steel Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "2" + } + } + "10852" + { + "name" "UGC 6vs6 2nd Place Steel Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "2" + } + } + "10853" + { + "name" "UGC 6vs6 3rd Place Steel Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "2" + } + } + "10854" + { + "name" "UGC 6vs6 Steel Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "10855" + { + "name" "UGC 6vs6 1st Place Platinum Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_first.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10856" + { + "name" "UGC 6vs6 2nd Place Platinum Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_second.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10857" + { + "name" "UGC 6vs6 3rd Place Platinum Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_third.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10858" + { + "name" "UGC 6vs6 Platinum Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_platinum_participant.mdl" + "visuals_red" + { + "skin" "0" + } + "visuals_blu" + { + "skin" "1" + } + } + "10859" + { + "name" "UGC 6vs6 1st Place Silver Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_1st" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "10860" + { + "name" "UGC 6vs6 2nd Place Silver Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "10861" + { + "name" "UGC 6vs6 3rd Place Silver Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "10862" + { + "name" "UGC 6vs6 Silver Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "10863" + { + "name" "UGC 6vs6 1st Place Steel Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "2" + } + } + "10864" + { + "name" "UGC 6vs6 2nd Place Steel Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "2" + } + } + "10865" + { + "name" "UGC 6vs6 3rd Place Steel Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "2" + } + } + "10866" + { + "name" "UGC 6vs6 Steel Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "10867" + { + "name" "UGC 4vs4 1st Place Gold Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "10868" + { + "name" "UGC 4vs4 2nd Place Gold Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "10869" + { + "name" "UGC 4vs4 3rd Place Gold Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "10870" + { + "name" "UGC 4vs4 Gold Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "10871" + { + "name" "UGC 4vs4 1st Place Silver Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "10872" + { + "name" "UGC 4vs4 2nd Place Silver Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "10873" + { + "name" "UGC 4vs4 3rd Place Silver Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "10874" + { + "name" "UGC 4vs4 Silver Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "10875" + { + "name" "UGC 4vs4 1st Place Steel Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "2" + } + } + "10876" + { + "name" "UGC 4vs4 2nd Place Steel Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "2" + } + } + "10877" + { + "name" "UGC 4vs4 3rd Place Steel Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "2" + } + } + "10878" + { + "name" "UGC 4vs4 Steel Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "10879" + { + "name" "UGC 4vs4 1st Place Gold Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "0" + } + } + "10880" + { + "name" "UGC 4vs4 2nd Place Gold Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "0" + } + } + "10881" + { + "name" "UGC 4vs4 3rd Place Gold Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "0" + } + } + "10882" + { + "name" "UGC 4vs4 Gold Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_gold_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "0" + } + } + "10883" + { + "name" "UGC 4vs4 1st Place Silver Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "1" + } + } + "10884" + { + "name" "UGC 4vs4 2nd Place Silver Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "1" + } + } + "10885" + { + "name" "UGC 4vs4 3rd Place Silver Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "1" + } + } + "10886" + { + "name" "UGC 4vs4 Silver Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_silver_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "10887" + { + "name" "UGC 4vs4 1st Place Steel Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_first" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_first.mdl" + "visuals" + { + "skin" "2" + } + } + "10888" + { + "name" "UGC 4vs4 2nd Place Steel Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_second" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_second.mdl" + "visuals" + { + "skin" "2" + } + } + "10889" + { + "name" "UGC 4vs4 3rd Place Steel Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_third" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_third.mdl" + "visuals" + { + "skin" "2" + } + } + "10890" + { + "name" "UGC 4vs4 Steel Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_season12/ugc_season12_steel_participant" + "model_player" "models/workshop/player/items/all_class/ugc_season12/ugc_season12_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "10891" + { + "name" "Russian Highlander 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st_%s.mdl" + } + } + "10892" + { + "name" "Russian Highlander 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd_%s.mdl" + } + } + "10893" + { + "name" "Russian Highlander 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd_%s.mdl" + } + } + "10894" + { + "name" "Russian Highlander Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant_%s.mdl" + } + } + "10895" + { + "name" "Russian Highlander Staff Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Staff" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff_%s.mdl" + } + } + "10896" + { + "name" "ozfortress Premier 1st Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "10897" + { + "name" "ozfortress Premier 2nd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "10898" + { + "name" "ozfortress Premier 3rd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "10899" + { + "name" "ozfortress Premier Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "10900" + { + "name" "ozfortress Intermediate 1st Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10901" + { + "name" "ozfortress Intermediate 2nd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10902" + { + "name" "ozfortress Intermediate 3rd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10903" + { + "name" "ozfortress Intermediate Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10904" + { + "name" "ozfortress Main 1st Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10905" + { + "name" "ozfortress Main 2nd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10906" + { + "name" "ozfortress Main 3rd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10907" + { + "name" "ozfortress Main Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10908" + { + "name" "ozfortress Open 1st Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "10909" + { + "name" "ozfortress Open 2nd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "10910" + { + "name" "ozfortress Open 3rd Place Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "10911" + { + "name" "ozfortress Open Participant Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "10912" + { + "name" "RGL.gg Sixes Invite Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "10913" + { + "name" "RGL.gg Sixes Invite 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "10914" + { + "name" "RGL.gg Sixes Invite 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "10915" + { + "name" "RGL.gg Sixes Invite Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "10916" + { + "name" "RGL.gg Sixes Div1 Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div1_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10917" + { + "name" "RGL.gg Sixes Div1 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10918" + { + "name" "RGL.gg Sixes Div1 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10919" + { + "name" "RGL.gg Sixes Div1 Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "10920" + { + "name" "RGL.gg Sixes Div2 Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div2_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10921" + { + "name" "RGL.gg Sixes Div2 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10922" + { + "name" "RGL.gg Sixes Div2 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10923" + { + "name" "RGL.gg Sixes Div2 Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "10924" + { + "name" "RGL.gg Sixes Div3 Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div3_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10925" + { + "name" "RGL.gg Sixes Div3 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10926" + { + "name" "RGL.gg Sixes Div3 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10927" + { + "name" "RGL.gg Sixes Div3 Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "10928" + { + "name" "RGL.gg Sixes Open Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "10929" + { + "name" "LBTF2 6v6 Elite 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10930" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10931" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10932" + { + "name" "LBTF2 6v6 Elite Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10933" + { + "name" "LBTF2 6v6 Central 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10934" + { + "name" "LBTF2 6v6 Central 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10935" + { + "name" "LBTF2 6v6 Central 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10936" + { + "name" "LBTF2 6v6 Central Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10937" + { + "name" "LBTF2 6v6 Access 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10938" + { + "name" "LBTF2 6v6 Access 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10939" + { + "name" "LBTF2 6v6 Access 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10940" + { + "name" "LBTF2 6v6 Access Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10941" + { + "name" "LBTF2 6v6 Open 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "10942" + { + "name" "LBTF2 6v6 Open 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "10943" + { + "name" "LBTF2 6v6 Open 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "10944" + { + "name" "LBTF2 6v6 Open Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "10945" + { + "name" "EBL 1st Place Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "10946" + { + "name" "EBL 2nd Place Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "10947" + { + "name" "EBL 3rd Place Medal Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "10948" + { + "name" "EBL Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "10949" + { + "name" "EBL Staff Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Staff" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_staff/ebl_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_staff/ebl_staff_%s.mdl" + } + } + "10950" + { + "name" "RGB 4 LAN 1st Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB4_LAN_Gold" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold_%s.mdl" + } + } + "10951" + { + "name" "RGB 4 LAN 2nd Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB4_LAN_Silver" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver_%s.mdl" + } + } + "10952" + { + "name" "RGB 4 LAN 3rd Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB4_LAN_Bronze" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze_%s.mdl" + } + } + "10953" + { + "name" "RGB 4 LAN Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB4_LAN_Participant" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant_%s.mdl" + } + } + "10954" + { + "name" "NHBL Sasha Heavyweight Champion Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season8" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season8_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "10955" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "10956" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "10957" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "10958" + { + "name" "AsiaFortress Cup Division 1 Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "10959" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "10960" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "10961" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "10962" + { + "name" "AsiaFortress Cup Division 2 Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "10963" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "10964" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "10965" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "10966" + { + "name" "AsiaFortress Cup Division 3 Participant Season 15" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "10967" + { + "name" "ESL Monthly Challenge 1st Place April 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_MonthyChallenge_1st" + "item_description" "#TF_TournamentMedal_April2019" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_gold" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "3" + } + } + "10968" + { + "name" "ESL Monthly Challenge 2nd Place April 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_MonthyChallenge_2nd" + "item_description" "#TF_TournamentMedal_April2019" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_silver" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "2" + } + } + "10969" + { + "name" "ESL Monthly Challenge 3rd Place April 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ESL_MonthyChallenge_3rd" + "item_description" "#TF_TournamentMedal_April2019" + "image_inventory" "backpack/player/items/all_class/all_class_badge_esl_bronze" + "model_player" "models/player/items/all_class/all_class_badge_esl.mdl" + "visuals" + { + "skin" "1" + } + } + "10970" + { + "name" "LAN Downunder 1st Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_1st" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "10971" + { + "name" "LAN Downunder 2nd Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_2nd" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "10972" + { + "name" "LAN Downunder 3rd Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_3rd" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "10973" + { + "name" "LAN Downunder Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "10974" + { + "name" "Blapature Co. Backer 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2019_Tier1" + "item_description" "#TF_TournamentMedal_Blapature2019_Tier1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1_%s.mdl" + } + } + "10975" + { + "name" "Blapature Co. Supporter 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2019_Tier2" + "item_description" "#TF_TournamentMedal_Blapature2019_Tier2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2_%s.mdl" + } + } + "10976" + { + "name" "Blapature Co. Benefactor 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2019_Tier3" + "item_description" "#TF_TournamentMedal_Blapature2019_Tier3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3_%s.mdl" + } + } + "10977" + { + "name" "TF2Maps Ray of Sunshine 2019" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsRayOfSunshine2019" + "item_description" "#TF2MapsRayOfSunshine2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s2/72hr_summerjam_2018_s2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + } + } + } + } + "10978" + { + "name" "Ready Steady Pan First Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_First_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_First_S5_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_first/rsp_season4_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_first/rsp_season4_first_%s.mdl" + } + } + "10979" + { + "name" "Ready Steady Pan Second Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Second_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Second_S5_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_second/rsp_season4_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_second/rsp_season4_second_%s.mdl" + } + } + "10980" + { + "name" "Ready Steady Pan Third Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Third_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Third_S5_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_third/rsp_season4_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_third/rsp_season4_third_%s.mdl" + } + } + "10981" + { + "name" "Ready Steady Pan Participant 1 Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Participant_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Participant_S5_Desc" + "image_inventory" "backpack/player/items/all_class/all_class_badge_pan" + "model_player" "models/player/items/all_class/all_class_badge_pan.mdl" + } + "10982" + { + "name" "Ready Steady Pan Participant 2 Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Participant_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Participant_S5_Desc" + "image_inventory" "backpack/player/items/all_class/rsp_s02" + "model_player" "models/player/items/all_class/rsp_s02.mdl" + } + "10983" + { + "name" "Ready Steady Pan Playoffs Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Playoffs_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Playoffs_S5_Desc" + "image_inventory" "backpack/player/items/all_class/all_class_badge_pan" + "model_player" "models/player/items/all_class/all_class_badge_pan.mdl" + } + "10984" + { + "name" "Ready Steady Pan Tier I Donor Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Tier1_Donor_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Tier1_Donor_S5_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_season4_helper/rsp_season4_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_season4_helper/rsp_season4_helper_%s.mdl" + } + } + "10985" + { + "name" "Ready Steady Pan Tier II Donor Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Ready_Steady_Pan_Tier2_Donor_S5" + "item_description" "#TF_TournamentMedal_Ready_Steady_Pan_Tier2_Donor_S5_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rsp_s03_helper/rsp_s03_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rsp_s03_helper/rsp_s03_helper_%s.mdl" + } + } + "10986" + { + "name" "Ultimate Ultiduo 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_first/ultimate_ultiduo_first_%s.mdl" + } + } + "10987" + { + "name" "Ultimate Ultiduo 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_second/ultimate_ultiduo_second_%s.mdl" + } + } + "10988" + { + "name" "Ultimate Ultiduo 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_third/ultimate_ultiduo_third_%s.mdl" + } + } + "10989" + { + "name" "Ultimate Ultiduo Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_participant/ultimate_ultiduo_participant_%s.mdl" + } + } + "10990" + { + "name" "Ultimate Ultiduo Helper Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UltimateUltiduo_Helper" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ultimate_ultiduo_helper/ultimate_ultiduo_helper_%s.mdl" + } + } + "10991" + { + "name" "NewbiDuo Cup 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_first/newbiduo_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_first/newbiduo_first_%s.mdl" + } + } + "10992" + { + "name" "NewbiDuo Cup 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_second/newbiduo_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_second/newbiduo_second_%s.mdl" + } + } + "10993" + { + "name" "NewbiDuo Cup 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_third/newbiduo_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_third/newbiduo_third_%s.mdl" + } + } + "10994" + { + "name" "NewbiDuo Cup Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_participant/newbiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_participant/newbiduo_participant_%s.mdl" + } + } + "10995" + { + "name" "NewbiDuo Cup Helper Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NewbiDuo_Cup_Helper" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/newbiduo_helper/newbiduo_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbiduo_helper/newbiduo_helper_%s.mdl" + } + } + "10996" + { + "name" "TF2Maps 72hr TF2Jam Summer Participant 2019" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_summer_jimijam" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "10997" + { + "name" "Moscow LAN 1st Place Summer 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_1st" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_1st/moscow_lan_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_1st/moscow_lan_1st_%s.mdl" + } + } + "10998" + { + "name" "Moscow LAN 2nd Place Summer 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_2nd" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_2nd/moscow_lan_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_2nd/moscow_lan_2nd_%s.mdl" + } + } + "10999" + { + "name" "Moscow LAN 3rd Place Summer 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_3rd" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_3rd/moscow_lan_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_3rd/moscow_lan_3rd_%s.mdl" + } + } + "11000" + { + "name" "Moscow LAN Participant Summer 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_Participant" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_participant/moscow_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_participant/moscow_lan_participant_%s.mdl" + } + } + "11001" + { + "name" "Moscow LAN Helper Summer 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_Helper" + "item_description" "#TF_TournamentMedal_Summer2019" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_helper/moscow_lan_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_helper/moscow_lan_helper_%s.mdl" + } + } + "11002" + { + "name" "Fruit Mixes Highlander High/Prem Gold Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "11003" + { + "name" "Fruit Mixes Highlander High/Prem Silver Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "11004" + { + "name" "Fruit Mixes Highlander High/Prem Bronze Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "11005" + { + "name" "Fruit Mixes Highlander High/Prem Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "11006" + { + "name" "Fruit Mixes Highlander Staff Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FruitMixes_Staff" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff_%s.mdl" + } + } + "11007" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11008" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11009" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11010" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11011" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11012" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11013" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11014" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11015" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11016" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11017" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11018" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11019" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11020" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11021" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11022" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11023" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11024" + { + "name" "ETF2L 6v6 Low Gold Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11025" + { + "name" "ETF2L 6v6 Low Silver Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11026" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11027" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11028" + { + "name" "ETF2L 6v6 Low Participation Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11029" + { + "name" "ETF2L 6v6 Open Gold Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11030" + { + "name" "ETF2L 6v6 Open Silver Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11031" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11032" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11033" + { + "name" "ETF2L 6v6 Open Participation Medal Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11034" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11035" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11036" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11037" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11038" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11039" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11040" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11041" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11042" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11043" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11044" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11045" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11046" + { + "name" "ETF2L Highlander Mid Gold Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11047" + { + "name" "ETF2L Highlander Mid Silver Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11048" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11049" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11050" + { + "name" "ETF2L Highlander Mid Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11051" + { + "name" "ETF2L Highlander Open Gold Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11052" + { + "name" "ETF2L Highlander Open Silver Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11053" + { + "name" "ETF2L Highlander Open Bronze Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11054" + { + "name" "ETF2L Highlander Open Playoff Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11055" + { + "name" "ETF2L Highlander Open Participation Medal Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11056" + { + "name" "Insomnia 65 First Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia65_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_gold/iseries_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_gold/iseries_gold_%s.mdl" + } + } + "11057" + { + "name" "Insomnia 65 Second Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia65_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_silver/iseries_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_silver/iseries_silver_%s.mdl" + } + } + "11058" + { + "name" "Insomnia 65 Third Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia65_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_bronze/iseries_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_bronze/iseries_bronze_%s.mdl" + } + } + "11059" + { + "name" "Insomnia 65 Participant Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia65_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_participant/iseries_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_participant/iseries_participant_%s.mdl" + } + } + "11060" + { + "name" "Insomnia 65 Contributor Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia65_Contributor" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_contributor/iseries_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_contributor/iseries_contributor_%s.mdl" + } + } + "11061" + { + "name" "Cap that Charity 1st Place 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTCharity_1st" + "item_description" "#TF_TournamentMedal_CTCharity_1st_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_1st/ctc_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_1st/ctc_1st_%s.mdl" + } + } + "11062" + { + "name" "Cap that Charity 2nd Place 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTCharity_2nd" + "item_description" "#TF_TournamentMedal_CTCharity_2nd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_2nd/ctc_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_2nd/ctc_2nd_%s.mdl" + } + } + "11063" + { + "name" "Cap that Charity 3rd Place 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTCharity_3rd" + "item_description" "#TF_TournamentMedal_CTCharity_3rd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_3rd/ctc_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_3rd/ctc_3rd_%s.mdl" + } + } + "11064" + { + "name" "Cap that Charity Participant 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTCharity_Participant" + "item_description" "#TF_TournamentMedal_CTCharity_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_participant/ctc_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_participant/ctc_participant_%s.mdl" + } + } + "11065" + { + "name" "Cap that Charity Donor 2019" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_CTCharity_Donor" + "item_description" "#TF_TournamentMedal_CTCharity_Donor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/ctc_staff/ctc_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ctc_staff/ctc_staff_%s.mdl" + } + } + "11066" + { + "name" "Jaunty Tipper 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier1_2019" + "item_description" "#TF_Medal_TipOfTheHats2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2016_t1/toth2016_t1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2016_t1/toth2016_t1_%s.mdl" + } + } + "11067" + { + "name" "Jaunty Benefactor 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier2_2019" + "item_description" "#TF_Medal_TipOfTheHats2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2016_t2/toth2016_t2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2016_t2/toth2016_t2_%s.mdl" + } + } + "11068" + { + "name" "Jaunty Philanthropist 2019" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_TipOfTheHatsTier3_2019" + "item_description" "#TF_Medal_TipOfTheHats2019_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/toth2016_t3/toth2016_t3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/toth2016_t3/toth2016_t3_%s.mdl" + } + } + "11069" + { + "name" "Respawn League ASIA Highlander 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11070" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11071" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11072" + { + "name" "Respawn League ASIA Highlander Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11073" + { + "name" "Respawn League APAC 4v4 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_APAC_4v4_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11074" + { + "name" "Respawn League APAC 4v4 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_APAC_4v4_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11075" + { + "name" "Respawn League APAC 4v4 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_APAC_4v4_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11076" + { + "name" "Respawn League APAC 4v4 Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_APAC_4v4_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11077" + { + "name" "Respawn League AUS/NZ Highlander 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11078" + { + "name" "Respawn League AUS/NZ Highlander 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11079" + { + "name" "Respawn League AUS/NZ Highlander 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11080" + { + "name" "Respawn League AUS/NZ Highlander Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11081" + { + "name" "Brazil Fortress 6v6 Invite First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_first" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11082" + { + "name" "Brazil Fortress 6v6 Invite Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11083" + { + "name" "Brazil Fortress 6v6 Invite Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11084" + { + "name" "Brazil Fortress 6v6 Invite Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11085" + { + "name" "Brazil Fortress 6v6 Division 1 First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_first" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11086" + { + "name" "Brazil Fortress 6v6 Division 1 Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11087" + { + "name" "Brazil Fortress 6v6 Division 1 Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11088" + { + "name" "Brazil Fortress 6v6 Division 1 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11089" + { + "name" "Brazil Fortress 6v6 Division 2 First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_first" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11090" + { + "name" "Brazil Fortress 6v6 Division 2 Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11091" + { + "name" "Brazil Fortress 6v6 Division 2 Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11092" + { + "name" "Brazil Fortress 6v6 Division 2 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11093" + { + "name" "Brazil Fortress 6v6 Academy First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_first" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11094" + { + "name" "Brazil Fortress 6v6 Academy Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11095" + { + "name" "Brazil Fortress 6v6 Academy Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11096" + { + "name" "Brazil Fortress 6v6 Academy Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11097" + { + "name" "Brazil Fortress 6v6 Qualified Stage Champions Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Qualified_Stage_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11098" + { + "name" "Brazil Fortress 6v6 Helper Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Helper" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11099" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11100" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11101" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11102" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11103" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11104" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11105" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11106" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 Participant Division 2 Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11107" + { + "name" "Brazil Fortress JumpCup Demoman Division 1 First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div1_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11108" + { + "name" "Brazil Fortress JumpCup Demoman Division 1 Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11109" + { + "name" "Brazil Fortress JumpCup Demoman Division 1 Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11110" + { + "name" "Brazil Fortress JumpCup Demoman Division 1 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11111" + { + "name" "Brazil Fortress JumpCup Demoman Division 2 First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div2_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11112" + { + "name" "Brazil Fortress JumpCup Demoman Division 2 Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11113" + { + "name" "Brazil Fortress JumpCup Demoman Division 2 Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11114" + { + "name" "Brazil Fortress JumpCup Demoman Division 2 Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11115" + { + "name" "Brazil Fortress JumpCup Helper Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Helper" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_helper/brasil_fortress_jump_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_helper/brasil_fortress_jump_helper_%s.mdl" + } + } + "11116" + { + "name" "ozfortress Premier 1st Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "11117" + { + "name" "ozfortress Premier 2nd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "11118" + { + "name" "ozfortress Premier 3rd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "11119" + { + "name" "ozfortress Premier Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "11120" + { + "name" "ozfortress Intermediate 1st Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11121" + { + "name" "ozfortress Intermediate 2nd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11122" + { + "name" "ozfortress Intermediate 3rd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11123" + { + "name" "ozfortress Intermediate Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11124" + { + "name" "ozfortress Main 1st Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11125" + { + "name" "ozfortress Main 2nd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11126" + { + "name" "ozfortress Main 3rd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11127" + { + "name" "ozfortress Main Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11128" + { + "name" "ozfortress Open 1st Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11129" + { + "name" "ozfortress Open 2nd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11130" + { + "name" "ozfortress Open 3rd Place Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11131" + { + "name" "ozfortress Open Participant Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11132" + { + "name" "EBL Invite 1st Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "11133" + { + "name" "EBL Invite 2nd Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "11134" + { + "name" "EBL Invite 3rd Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "11135" + { + "name" "EBL Invite Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "11136" + { + "name" "EBL Staff Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Staff" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_staff/ebl_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_staff/ebl_staff_%s.mdl" + } + } + "11137" + { + "name" "Russian Highlander 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_1st/russian_highlander_1st_%s.mdl" + } + } + "11138" + { + "name" "Russian Highlander 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_2nd/russian_highlander_2nd_%s.mdl" + } + } + "11139" + { + "name" "Russian Highlander 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_3rd/russian_highlander_3rd_%s.mdl" + } + } + "11140" + { + "name" "Russian Highlander Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_participant/russian_highlander_participant_%s.mdl" + } + } + "11141" + { + "name" "Russian Highlander Staff Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RussianHighlander_Staff" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/russian_highlander_staff/russian_highlander_staff_%s.mdl" + } + } + "11142" + { + "name" "Late Night TF2 Cup Gold Medal Autumn 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Gold" + "item_description" "#TF_TournamentMedal_Late_Night_Gold_Desc_Autumn2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_gold/late_night_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_gold/late_night_gold_%s.mdl" + } + } + "11143" + { + "name" "Late Night TF2 Cup Silver Medal Autumn 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Silver" + "item_description" "#TF_TournamentMedal_Late_Night_Silver_Desc_Autumn2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_silver/late_night_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_silver/late_night_silver_%s.mdl" + } + } + "11144" + { + "name" "Late Night TF2 Cup Bronze Medal Autumn 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Bronze" + "item_description" "#TF_TournamentMedal_Late_Night_Bronze_Desc_Autumn2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_bronze/late_night_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_bronze/late_night_bronze_%s.mdl" + } + } + "11145" + { + "name" "Late Night TF2 Cup Participant Autumn 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Participant" + "item_description" "#TF_TournamentMedal_Late_Night_Participant_Desc_Autumn2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_participant/late_night_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_participant/late_night_participant_%s.mdl" + } + } + "11146" + { + "name" "Late Night TF2 Cup Helper Autumn 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Late_Night_Helper" + "item_description" "#TF_TournamentMedal_Late_Night_Helper_Desc_Autumn2019" + "image_inventory" "backpack/workshop/player/items/all_class/late_night_helper/late_night_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/late_night_helper/late_night_helper_%s.mdl" + } + } + "11147" + { + "name" "EBL Main 1st Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "11148" + { + "name" "EBL Main 2nd Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "11149" + { + "name" "EBL Main 3rd Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "11150" + { + "name" "EBL Main Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "11151" + { + "name" "EBL Open 1st Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "11152" + { + "name" "EBL Open 2nd Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "11153" + { + "name" "EBL Open 3rd Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "11154" + { + "name" "EBL Open Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "11155" + { + "name" "EBL One Day Cup Participant Cup 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_OpenDayCup_Participant" + "item_description" "#TF_TournamentMedal_EBL_Cup1" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + + + "11171" + { + "name" "LBTF2 Highlander Access 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "11172" + { + "name" "LBTF2 Highlander Access 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "11173" + { + "name" "LBTF2 Highlander Access 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "11174" + { + "name" "LBTF2 Highlander Access Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "11175" + { + "name" "LBTF2 Highlander Principal 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "11176" + { + "name" "LBTF2 Highlander Principal 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "11177" + { + "name" "LBTF2 Highlander Principal 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "11178" + { + "name" "LBTF2 Highlander Principal Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "11179" + { + "name" "LBTF2 Highlander Open 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "11180" + { + "name" "LBTF2 Highlander Open 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "11181" + { + "name" "LBTF2 Highlander Open 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "11182" + { + "name" "LBTF2 Highlander Open Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "11183" + { + "name" "South American Vanilla Fortress Highlander Invite First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11184" + { + "name" "South American Vanilla Fortress Highlander Invite Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11185" + { + "name" "South American Vanilla Fortress Highlander Invite Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11186" + { + "name" "South American Vanilla Fortress Highlander Invite Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11187" + { + "name" "South American Vanilla Fortress Highlander Open First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_First" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11188" + { + "name" "South American Vanilla Fortress Highlander Open Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Second" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11189" + { + "name" "South American Vanilla Fortress Highlander Open Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Third" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11190" + { + "name" "South American Vanilla Fortress Highlander Open Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11191" + { + "name" "South American Vanilla Fortress Highlander Supporter Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Supporter" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "11192" + { + "name" "South American Vanilla Fortress 6v6 Invite First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11193" + { + "name" "South American Vanilla Fortress 6v6 Invite Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11194" + { + "name" "South American Vanilla Fortress 6v6 Invite Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11195" + { + "name" "South American Vanilla Fortress 6v6 Invite Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11196" + { + "name" "South American Vanilla Fortress 6v6 Intermediate First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11197" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11198" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11199" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11200" + { + "name" "South American Vanilla Fortress 6v6 Open First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11201" + { + "name" "South American Vanilla Fortress 6v6 Open Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11202" + { + "name" "South American Vanilla Fortress 6v6 Open Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11203" + { + "name" "South American Vanilla Fortress 6v6 Open Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11204" + { + "name" "South American Vanilla Fortress 6v6 Supporter Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Supporter" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "11205" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11206" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11207" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11208" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11209" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11210" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11211" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11212" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11213" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11214" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11215" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11216" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11217" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11218" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11219" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11220" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11221" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11222" + { + "name" "ETF2L 6v6 Low Gold Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11223" + { + "name" "ETF2L 6v6 Low Silver Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11224" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11225" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11226" + { + "name" "ETF2L 6v6 Low Participation Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11227" + { + "name" "ETF2L 6v6 Open Gold Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11228" + { + "name" "ETF2L 6v6 Open Silver Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11229" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11230" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11231" + { + "name" "ETF2L 6v6 Open Participation Medal Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11232" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11233" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11234" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11235" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11236" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11237" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11238" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11239" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11240" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11241" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11242" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11243" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11244" + { + "name" "ETF2L Highlander Mid Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11245" + { + "name" "ETF2L Highlander Mid Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11246" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11247" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11248" + { + "name" "ETF2L Highlander Mid Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11249" + { + "name" "ETF2L Highlander Open Gold Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11250" + { + "name" "ETF2L Highlander Open Silver Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11251" + { + "name" "ETF2L Highlander Open Bronze Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11252" + { + "name" "ETF2L Highlander Open Playoff Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11253" + { + "name" "ETF2L Highlander Open Participation Medal Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11254" + { + "name" "PURE League Premier First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_premier_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_premier_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11255" + { + "name" "PURE League Premier Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_premier_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_premier_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11256" + { + "name" "PURE League Premier Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_premier_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_premier_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11257" + { + "name" "PURE League Premier Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_participant/pure_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_participant/pure_participant_%s.mdl" + } + } + "11258" + { + "name" "PURE League Intermediate First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_intermediate_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_intermediate_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11259" + { + "name" "PURE League Intermediate Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_intermediate_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_intermediate_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11260" + { + "name" "PURE League Intermediate Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_intermediate_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_intermediate_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11261" + { + "name" "PURE League Intermediate Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_participant/pure_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_participant/pure_participant_%s.mdl" + } + } + "11262" + { + "name" "PURE League Open First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_open_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_open_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11263" + { + "name" "PURE League Open Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_open_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_open_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11264" + { + "name" "PURE League Open Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_league/pure_league_open_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_league/pure_league_open_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11265" + { + "name" "PURE League Open Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Pure_Open_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/pure_participant/pure_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pure_participant/pure_participant_%s.mdl" + } + } + "11266" + { + "name" "Asia BBall Cup 1st Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_1st" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st_%s.mdl" + } + } + "11267" + { + "name" "Asia BBall Cup 2nd Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_2nd" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd_%s.mdl" + } + } + "11268" + { + "name" "Asia BBall Cup 3rd Place 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_3rd" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd_%s.mdl" + } + } + "11269" + { + "name" "Asia BBall Cup Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant_%s.mdl" + } + } + "11270" + { + "name" "RGLgg Invite Champions EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11271" + { + "name" "RGLgg Invite 2nd Place EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11272" + { + "name" "RGLgg Invite 3rd Place EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11273" + { + "name" "RGLgg Invite Participant EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11274" + { + "name" "RGLgg Div1 Champions EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11275" + { + "name" "RGLgg Div1 2nd Place EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11276" + { + "name" "RGLgg Div1 3rd Place EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11277" + { + "name" "RGLgg Div1 Participant EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11278" + { + "name" "RGLgg Div2 Champions EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11279" + { + "name" "RGLgg Div2 2nd Place EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11280" + { + "name" "RGLgg Div2 3rd Place EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11281" + { + "name" "RGLgg Div2 Participant EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11282" + { + "name" "RGLgg Open Participant EU Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant_EU" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11283" + { + "name" "RGLgg Invite Champions EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11284" + { + "name" "RGLgg Invite 2nd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11285" + { + "name" "RGLgg Invite 3rd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11286" + { + "name" "RGLgg Invite Participant EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11287" + { + "name" "RGLgg Div1 Champions EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11288" + { + "name" "RGLgg Div1 2nd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11289" + { + "name" "RGLgg Div1 3rd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11290" + { + "name" "RGLgg Div1 Participant EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11291" + { + "name" "RGLgg Div2 Champions EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11292" + { + "name" "RGLgg Div2 2nd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11293" + { + "name" "RGLgg Div2 3rd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11294" + { + "name" "RGLgg Div2 Participant EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11295" + { + "name" "RGLgg Div3 Champions EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_Champions_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11296" + { + "name" "RGLgg Div3 2nd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_2nd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11297" + { + "name" "RGLgg Div3 3rd Place EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_3rd_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11298" + { + "name" "RGLgg Div3 Participant EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div3_Participant_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11299" + { + "name" "RGLgg Open Participant EU Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant_EU" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11300" + { + "name" "RGLgg Invite Champions Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11301" + { + "name" "RGLgg Invite 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11302" + { + "name" "RGLgg Invite 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11303" + { + "name" "RGLgg Invite Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11304" + { + "name" "RGLgg Advanced Champions Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11305" + { + "name" "RGLgg Advanced 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11306" + { + "name" "RGLgg Advanced 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11307" + { + "name" "RGLgg Advanced Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11308" + { + "name" "RGLgg Main Champions Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11309" + { + "name" "RGLgg Main 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11310" + { + "name" "RGLgg Main 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11311" + { + "name" "RGLgg Main Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11312" + { + "name" "RGLgg IM Champions Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11313" + { + "name" "RGLgg IM 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11314" + { + "name" "RGLgg IM 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11315" + { + "name" "RGLgg IM Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11316" + { + "name" "RGLgg Open Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Open_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11317" + { + "name" "RGLgg Div1 Champions AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Champions_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11318" + { + "name" "RGLgg Div1 2nd Place AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_2nd_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11319" + { + "name" "RGLgg Div1 3rd Place AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_3rd_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11320" + { + "name" "RGLgg Div1 Participant AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div1_Participant_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11321" + { + "name" "RGLgg Div2 Champions AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Champions_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11322" + { + "name" "RGLgg Div2 2nd Place AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_2nd_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11323" + { + "name" "RGLgg Div2 3rd Place AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_3rd_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11324" + { + "name" "RGLgg Div2 Participant AU Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Div2_Participant_AU" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11325" + { + "name" "RGLgg Highlander Invite Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11326" + { + "name" "RGLgg Highlander Invite 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11327" + { + "name" "RGLgg Highlander Invite 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11328" + { + "name" "RGLgg Highlander Invite Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11329" + { + "name" "RGLgg Highlander Advanced Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11330" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11331" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11332" + { + "name" "RGLgg Highlander Advanced Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11333" + { + "name" "RGLgg Highlander Main Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11334" + { + "name" "RGLgg Highlander Main 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11335" + { + "name" "RGLgg Highlander Main 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11336" + { + "name" "RGLgg Highlander Main Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11337" + { + "name" "RGLgg Highlander Intermediate Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11338" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11339" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11340" + { + "name" "RGLgg Highlander Intermediate Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11341" + { + "name" "RGLgg Highlander Open Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11342" + { + "name" "RGLgg Highlander Invite Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11343" + { + "name" "RGLgg Highlander Invite 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11344" + { + "name" "RGLgg Highlander Invite 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11345" + { + "name" "RGLgg Highlander Invite Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11346" + { + "name" "RGLgg Highlander Advanced Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11347" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11348" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11349" + { + "name" "RGLgg Highlander Advanced Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11350" + { + "name" "RGLgg Highlander Main Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11351" + { + "name" "RGLgg Highlander Main 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11352" + { + "name" "RGLgg Highlander Main 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11353" + { + "name" "RGLgg Highlander Main Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11354" + { + "name" "RGLgg Highlander Intermediate Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11355" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11356" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11357" + { + "name" "RGLgg Highlander Intermediate Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11358" + { + "name" "RGLgg Highlander Open Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11359" + { + "name" "RGLgg 6v6 Invite Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11360" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11361" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11362" + { + "name" "RGLgg 6v6 Invite Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11363" + { + "name" "RGLgg 6v6 Advanced Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11364" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11365" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11366" + { + "name" "RGLgg 6v6 Advanced Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11367" + { + "name" "RGLgg 6v6 Main Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11368" + { + "name" "RGLgg 6v6 Main 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11369" + { + "name" "RGLgg 6v6 Main 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11370" + { + "name" "RGLgg 6v6 Main Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11371" + { + "name" "RGLgg 6v6 Intermediate Champions Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11372" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11373" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11374" + { + "name" "RGLgg 6v6 Intermediate Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11375" + { + "name" "RGLgg 6v6 Open Participant Season 1" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11376" + { + "name" "RGLgg 6v6 Invite Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11377" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11378" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11379" + { + "name" "RGLgg 6v6 Invite Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11380" + { + "name" "RGLgg 6v6 Advanced Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11381" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11382" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11383" + { + "name" "RGLgg 6v6 Advanced Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11384" + { + "name" "RGLgg 6v6 Main Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11385" + { + "name" "RGLgg 6v6 Main 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11386" + { + "name" "RGLgg 6v6 Main 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11387" + { + "name" "RGLgg 6v6 Main Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11388" + { + "name" "RGLgg 6v6 Intermediate Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11389" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11390" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11391" + { + "name" "RGLgg 6v6 Intermediate Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11392" + { + "name" "RGLgg 6v6 Open Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11393" + { + "name" "RGLgg Highlander Experimental Maps Cup Winter 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_HighlanderCup_Exp" + "item_description" "#TF_TournamentMedal_Winter2019" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup_%s.mdl" + } + } + "11394" + { + "name" "NHBL Natascha Heavyweight Champion Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Natasha_Season9" + "item_description" "#TF_TournamentMedal_NHBL_Natasha_Season9_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "11395" + { + "name" "NHBL Finals Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_participant/nhbl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_participant/nhbl_participant_%s.mdl" + } + } + "11396" + { + "name" "NHBL Finals 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_SecondPlace" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place_%s.mdl" + } + } + "11397" + { + "name" "NHBL Finals 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_ThirdPlace" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place_%s.mdl" + } + } + "11398" + { + "name" "NHBL Finals 4th Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_FourthPlace" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place_%s.mdl" + } + } + "11399" + { + "name" "ozfortress Premier 1st Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "11400" + { + "name" "ozfortress Premier 2nd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "11401" + { + "name" "ozfortress Premier 3rd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "11402" + { + "name" "ozfortress Premier Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "11403" + { + "name" "ozfortress Intermediate 1st Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11404" + { + "name" "ozfortress Intermediate 2nd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11405" + { + "name" "ozfortress Intermediate 3rd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11406" + { + "name" "ozfortress Intermediate Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11407" + { + "name" "ozfortress Main 1st Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11408" + { + "name" "ozfortress Main 2nd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11409" + { + "name" "ozfortress Main 3rd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11410" + { + "name" "ozfortress Main Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11411" + { + "name" "ozfortress Open 1st Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11412" + { + "name" "ozfortress Open 2nd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11413" + { + "name" "ozfortress Open 3rd Place Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11414" + { + "name" "ozfortress Open Participant Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11415" + { + "name" "UDL Gold Medal Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Gold" + "item_description" "#TF_TournamentMedal_UDL_Gold_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/udl_gold_2/udl_gold_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_gold_2/udl_gold_2_%s.mdl" + } + } + "11416" + { + "name" "UDL Silver Medal Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Silver" + "item_description" "#TF_TournamentMedal_UDL_Silver_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/udl_silver_2/udl_silver_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_silver_2/udl_silver_2_%s.mdl" + } + } + "11417" + { + "name" "UDL Bronze Medal Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Bronze" + "item_description" "#TF_TournamentMedal_UDL_Bronze_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/udl_bronze_2/udl_bronze_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_bronze_2/udl_bronze_2_%s.mdl" + } + } + "11418" + { + "name" "UDL Participant Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Participant" + "item_description" "#TF_TournamentMedal_UDL_Participant_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/udl_participant_2/udl_participant_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_participant_2/udl_participant_2_%s.mdl" + } + } + "11419" + { + "name" "UDL Supporter Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Supporter" + "item_description" "#TF_TournamentMedal_UDL_Supporter_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/udl_staff_2/udl_staff_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_staff_2/udl_staff_2_%s.mdl" + } + } + "11420" + { + "name" "Rasslabyxa Cup 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_gold/rlx_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_gold/rlx_gold_%s.mdl" + } + } + "11421" + { + "name" "Rasslabyxa Cup 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_silver/rlx_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_silver/rlx_silver_%s.mdl" + } + } + "11422" + { + "name" "Rasslabyxa Cup 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_bronze/rlx_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_bronze/rlx_bronze_%s.mdl" + } + } + "11423" + { + "name" "Rasslabyxa Cup Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_participant/rlx_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_participant/rlx_participant_%s.mdl" + } + } + "11424" + { + "name" "Rasslabyxa Cup Helper Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Rlx_Helper" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rlx_helper/rlx_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rlx_helper/rlx_helper_%s.mdl" + } + } + "11425" + { + "name" "Classic MGE Cup Gold Medal Spring 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold_%s.mdl" + } + } + "11426" + { + "name" "Classic MGE Cup Silver Medal Spring 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver_%s.mdl" + } + } + "11427" + { + "name" "Classic MGE Cup Bronze Medal Spring 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze_%s.mdl" + } + } + "11428" + { + "name" "Classic MGE Cup Participant Spring 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant_%s.mdl" + } + } + "11429" + { + "name" "Classic MGE Cup Helper Spring 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Helper" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper_%s.mdl" + } + } + "11430" + { + "name" "Mashed Mediocrity Player 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_MvM_Mashed_Player" + "item_description" "#TF_TournamentMedal_MvM_Mashed_Player_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player_s2/mvm_memes_player_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "11431" + { + "name" "Mashed Mediocrity Creator 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_MvM_Mashed_Creator" + "item_description" "#TF_TournamentMedal_MvM_Mashed_Creator_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator_s2/mvm_memes_creator_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "11432" + { + "name" "Mashed Mediocrity Helper 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_MvM_Mashed_Helper" + "item_description" "#TF_TournamentMedal_MvM_Mashed_Helper_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator_s2/mvm_memes_creator_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "11433" + { + "name" "Brazil Fortress 6v6 Invite First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_first" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11434" + { + "name" "Brazil Fortress 6v6 Invite Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11435" + { + "name" "Brazil Fortress 6v6 Invite Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11436" + { + "name" "Brazil Fortress 6v6 Invite Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11437" + { + "name" "Brazil Fortress 6v6 Division 1 First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_first" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11438" + { + "name" "Brazil Fortress 6v6 Division 1 Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11439" + { + "name" "Brazil Fortress 6v6 Division 1 Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11440" + { + "name" "Brazil Fortress 6v6 Division 1 Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11441" + { + "name" "Brazil Fortress 6v6 Division 2 First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_first" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11442" + { + "name" "Brazil Fortress 6v6 Division 2 Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11443" + { + "name" "Brazil Fortress 6v6 Division 2 Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11444" + { + "name" "Brazil Fortress 6v6 Division 2 Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11445" + { + "name" "Brazil Fortress 6v6 Academy First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_first" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11446" + { + "name" "Brazil Fortress 6v6 Academy Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11447" + { + "name" "Brazil Fortress 6v6 Academy Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11448" + { + "name" "Brazil Fortress 6v6 Academy Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11449" + { + "name" "Brazil Fortress 6v6 Qualified Stage Champions Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Qualified_Stage_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11450" + { + "name" "Brazil Fortress 6v6 Helper Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Helper" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11451" + { + "name" "Brazil Fortress Halloween Scary Group First 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Scary_First" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "1" + } + } + "11452" + { + "name" "Brazil Fortress Halloween Scary Group Second 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Scary_Second" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "2" + } + } + "11453" + { + "name" "Brazil Fortress Halloween Scary Group Third 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Scary_Third" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "3" + } + } + "11454" + { + "name" "Brazil Fortress Halloween Scary Group Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Scary_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "4" + } + } + "11455" + { + "name" "Brazil Fortress Halloween Haunted Group Winner 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Haunted_Winner" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "1" + } + } + "11456" + { + "name" "Brazil Fortress Halloween Haunted Group Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Haunted_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "5" + } + } + "11457" + { + "name" "Brazil Fortress Halloween Ghastly Group Winner 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Ghastly_Winner" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "1" + } + } + "11458" + { + "name" "Brazil Fortress Halloween Ghastly Group Participant 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Ghastly_Participant" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "5" + } + } + "11459" + { + "name" "Brazil Fortress Halloween Helper 2019" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Helper" + "item_description" "#TF_TournamentMedal_2019" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_assistant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "6" + } + } + "11460" + { + "name" "EBL Invite 1st Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "11461" + { + "name" "EBL Invite 2nd Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "11462" + { + "name" "EBL Invite 3rd Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "11463" + { + "name" "EBL Invite Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "11464" + { + "name" "EBL Main 1st Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "11465" + { + "name" "EBL Main 2nd Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "11466" + { + "name" "EBL Main 3rd Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "11467" + { + "name" "EBL Main Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "11468" + { + "name" "EBL Open 1st Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "11469" + { + "name" "EBL Open 2nd Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "11470" + { + "name" "EBL Open 3rd Place Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "11471" + { + "name" "EBL Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "11472" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11473" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11474" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11475" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11476" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11477" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11478" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11479" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11480" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11481" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11482" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11483" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11484" + { + "name" "ETF2L 6v6 Division 3 Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11485" + { + "name" "ETF2L 6v6 Division 3 Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11486" + { + "name" "ETF2L 6v6 Division 3 Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11487" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11488" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11489" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11490" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11491" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11492" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11493" + { + "name" "ETF2L 6v6 Low Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11494" + { + "name" "ETF2L 6v6 Low Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11495" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11496" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11497" + { + "name" "ETF2L 6v6 Low Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11498" + { + "name" "ETF2L 6v6 Open Gold Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11499" + { + "name" "ETF2L 6v6 Open Silver Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11500" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11501" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11502" + { + "name" "ETF2L 6v6 Open Participation Medal Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11503" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11504" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11505" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11506" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11507" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11508" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11509" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11510" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11511" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11512" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11513" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11514" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11515" + { + "name" "ETF2L Highlander Mid Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11516" + { + "name" "ETF2L Highlander Mid Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11517" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11518" + { + "name" "ETF2L Highlander Mid Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11519" + { + "name" "ETF2L Highlander Low Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11520" + { + "name" "ETF2L Highlander Low Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11521" + { + "name" "ETF2L Highlander Low Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11522" + { + "name" "ETF2L Highlander Low Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11523" + { + "name" "ETF2L Highlander Open Gold Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "11524" + { + "name" "ETF2L Highlander Open Silver Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "11525" + { + "name" "ETF2L Highlander Open Bronze Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "11526" + { + "name" "ETF2L Highlander Open Playoff Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "11527" + { + "name" "ETF2L Highlander Open Participation Medal Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "11528" + { + "name" "ETF2L Highlander Open 3 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open3_Gold" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_1st_place/etf2l_highlander_open_1st_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_1st_place/etf2l_highlander_open_1st_place_%s.mdl" + } + } + "11529" + { + "name" "ETF2L Highlander Open 3 Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open3_Silver" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_2nd_place/etf2l_highlander_open_2nd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_2nd_place/etf2l_highlander_open_2nd_place_%s.mdl" + } + } + "11530" + { + "name" "ETF2L Highlander Open 3 Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open3_Bronze" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_3rd_place/etf2l_highlander_open_3rd_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_3rd_place/etf2l_highlander_open_3rd_place_%s.mdl" + } + } + "11531" + { + "name" "ETF2L Highlander Open 3 Participation Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open3_Participation" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_highlander_open_participant/etf2l_highlander_open_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_highlander_open_participant/etf2l_highlander_open_participant_%s.mdl" + } + } + "11532" + { + "name" "EBL Staff Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Staff" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_staff/ebl_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_staff/ebl_staff_%s.mdl" + } + } + "11533" + { + "name" "Respawn League AUS/NZ Highlander 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11534" + { + "name" "Respawn League AUS/NZ Highlander 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11535" + { + "name" "Respawn League AUS/NZ Highlander 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11536" + { + "name" "Respawn League AUS/NZ Highlander Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11537" + { + "name" "Respawn League ASIA Highlander 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11538" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11539" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11540" + { + "name" "Respawn League ASIA Highlander Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11541" + { + "name" "Respawn League AUS/NZ Highlander Main 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11542" + { + "name" "Respawn League AUS/NZ Highlander Main 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11543" + { + "name" "Respawn League AUS/NZ Highlander Main 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11544" + { + "name" "Respawn League AUS/NZ Highlander Main Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11545" + { + "name" "Respawn League ASIA Highlander 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11546" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11547" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11548" + { + "name" "Respawn League ASIA Highlander Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11549" + { + "name" "HLMixes First Place Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_first/hlmixes_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_first/hlmixes_first_%s.mdl" + } + } + "11550" + { + "name" "HLMixes Finalist Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_Finalist" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_finalist/hlmixes_finalist" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_finalist/hlmixes_finalist_%s.mdl" + } + } + "11551" + { + "name" "HLMixes Participant Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_HLMixes_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/hlmixes_participant/hlmixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hlmixes_participant/hlmixes_participant_%s.mdl" + } + } + "11552" + { + "name" "Asia BBall Cup Invite 1st Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Invite_1st" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st_%s.mdl" + } + } + "11553" + { + "name" "Asia BBall Cup Invite 2nd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Invite_2nd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd_%s.mdl" + } + } + "11554" + { + "name" "Asia BBall Cup Invite 3rd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Invite_3rd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd_%s.mdl" + } + } + "11555" + { + "name" "Asia BBall Cup Invite Participant 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Invite_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant_%s.mdl" + } + } + "11556" + { + "name" "Respawn League AUS/NZ Highlander Premier 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "11557" + { + "name" "Respawn League AUS/NZ Highlander Premier 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "11558" + { + "name" "Respawn League AUS/NZ Highlander Premier 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "11559" + { + "name" "Respawn League AUS/NZ Highlander Premier Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "11560" + { + "name" "Asia BBall Cup Main 1st Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Main_1st" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_1st/asia_bball_1st_%s.mdl" + } + } + "11561" + { + "name" "Asia BBall Cup Main 2nd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Main_2nd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_2nd/asia_bball_2nd_%s.mdl" + } + } + "11562" + { + "name" "Asia BBall Cup Main 3rd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Main_3rd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_3rd/asia_bball_3rd_%s.mdl" + } + } + "11563" + { + "name" "Asia BBall Cup Main Participant 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Asia_BBall_Main_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asia_bball_participant/asia_bball_participant_%s.mdl" + } + } + "11564" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "11565" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "11566" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "11567" + { + "name" "AsiaFortress Cup Division 1 Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "11568" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "11569" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "11570" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "11571" + { + "name" "AsiaFortress Cup Division 2 Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "11572" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "11573" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "11574" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "11575" + { + "name" "AsiaFortress Cup Division 3 Participant Season 16" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "11576" + { + "name" "Pugiklander Experienced First Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Experienced_First" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_first/pug_hl_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_first/pug_hl_first_%s.mdl" + } + } + "11577" + { + "name" "Pugiklander Experienced Second Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Experienced_Second" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_second/pug_hl_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_second/pug_hl_second_%s.mdl" + } + } + "11578" + { + "name" "Pugiklander Experienced Third Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Experienced_Third" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_third/pug_hl_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_third/pug_hl_third_%s.mdl" + } + } + "11579" + { + "name" "Pugiklander Experienced Participant Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Experienced_Participant" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant_%s.mdl" + } + } + "11580" + { + "name" "Pugiklander Beginner First Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Beginner_First" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_first/pug_hl_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_first/pug_hl_first_%s.mdl" + } + } + "11581" + { + "name" "Pugiklander Beginner Second Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Beginner_Second" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_second/pug_hl_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_second/pug_hl_second_%s.mdl" + } + } + "11582" + { + "name" "Pugiklander Beginner Third Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Beginner_Third" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_third/pug_hl_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_third/pug_hl_third_%s.mdl" + } + } + "11583" + { + "name" "Pugiklander Beginner Participant Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Beginner_Participant" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant_%s.mdl" + } + } + "11584" + { + "name" "Pugiklander Helper Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Helper" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_staff/pug_hl_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_staff/pug_hl_staff_%s.mdl" + } + } + "11585" + { + "name" "ozfortress Premier 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "11586" + { + "name" "ozfortress Premier 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "11587" + { + "name" "ozfortress Premier 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "11588" + { + "name" "ozfortress Premier Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "11589" + { + "name" "ozfortress High 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11590" + { + "name" "ozfortress High 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11591" + { + "name" "ozfortress High 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11592" + { + "name" "ozfortress High Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11593" + { + "name" "ozfortress Intermediate 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11594" + { + "name" "ozfortress Intermediate 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11595" + { + "name" "ozfortress Intermediate 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11596" + { + "name" "ozfortress Intermediate Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11597" + { + "name" "ozfortress Main 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11598" + { + "name" "ozfortress Main 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11599" + { + "name" "ozfortress Main 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11600" + { + "name" "ozfortress Main Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11601" + { + "name" "ozfortress Open 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11602" + { + "name" "ozfortress Open 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11603" + { + "name" "ozfortress Open 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11604" + { + "name" "ozfortress Open Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11605" + { + "name" "Pugiklander Premier First Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Premier_First" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_first/pug_hl_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_first/pug_hl_first_%s.mdl" + } + } + "11606" + { + "name" "Pugiklander Premier Second Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Premier_Second" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_second/pug_hl_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_second/pug_hl_second_%s.mdl" + } + } + "11607" + { + "name" "Pugiklander Premier Third Place Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Premier_Third" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_third/pug_hl_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_third/pug_hl_third_%s.mdl" + } + } + "11608" + { + "name" "Pugiklander Premier Participant Summer 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_PUG_HL_Premier_Participant" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/pug_hl_participant/pug_hl_participant_%s.mdl" + } + } + "11609" + { + "name" "NHBL Sasha Heavyweight Champion Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season9" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season9_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "11610" + { + "name" "Replica Titanium Tank 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_TitaniumTank_Participant_2020" + "item_description" "#TF_TournamentMedal_TitaniumTank_Participant_2020_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant_%s.mdl" + } + } + "11611" + { + "name" "Titanium Tank Gilded Giver 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_TitaniumTank_Donator_2020" + "item_description" "#TF_TournamentMedal_TitaniumTank_Donator_2020_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_donator/robotarm_donator_2020" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "14329120" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator_gem.mdl" + } + } + } + } + "11612" + { + "name" "Titanium Tank Chromatic Cardioid 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_TitaniumTank_Donator_Rainbow_2020" + "item_description" "#TF_TournamentMedal_TitaniumTank_Donator_Rainbow_2020_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow_gem.mdl" + } + } + } + } + "11613" + { + "name" "MidNight Moon Gold 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Gold" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_gold/midnight_moon_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_gold/midnight_moon_gold_%s.mdl" + } + } + "11614" + { + "name" "MidNight Moon Silver 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Silver" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_silver/midnight_moon_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_silver/midnight_moon_silver_%s.mdl" + } + } + "11615" + { + "name" "MidNight Moon Bronze 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Bronze" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_bronze/midnight_moon_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_bronze/midnight_moon_bronze_%s.mdl" + } + } + "11616" + { + "name" "MidNight Moon Participant 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_participant/midnight_moon_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_participant/midnight_moon_participant_%s.mdl" + } + } + "11617" + { + "name" "MidNight Moon Staff 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Staff" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_staff/midnight_moon_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_staff/midnight_moon_staff_%s.mdl" + } + } + "11618" + { + "name" "CLTF2 No Restriction 6v6 Tournament Cup 2 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_NoRestriction_6v6_Gold" + "item_description" "#TF_TournamentMedal_CLTF2_Cup2" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "11619" + { + "name" "CLTF2 No Restriction 6v6 Tournament Cup 2 Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_NoRestriction_6v6_Silver" + "item_description" "#TF_TournamentMedal_CLTF2_Cup2" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "11620" + { + "name" "CLTF2 No Restriction 6v6 Tournament Cup 2 Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_NoRestriction_6v6_Bronze" + "item_description" "#TF_TournamentMedal_CLTF2_Cup2" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "11621" + { + "name" "CLTF2 No Restriction 6v6 Tournament Cup 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_NoRestriction_6v6_Participant" + "item_description" "#TF_TournamentMedal_CLTF2_Cup2" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "11622" + { + "name" "CLTF2 No Restriction 6v6 Tournament Cup 2 Supporter" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_NoRestriction_6v6_Supporter" + "item_description" "#TF_TournamentMedal_CLTF2_Cup2" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter_%s.mdl" + } + } + "11623" + { + "name" "Brazil Fortress 6v6 Invite First Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_first" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11624" + { + "name" "Brazil Fortress 6v6 Invite Second Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_second" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11625" + { + "name" "Brazil Fortress 6v6 Invite Third Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_third" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11626" + { + "name" "Brazil Fortress 6v6 Invite Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Invite_participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11627" + { + "name" "Brazil Fortress 6v6 Division 1 First Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_first" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11628" + { + "name" "Brazil Fortress 6v6 Division 1 Second Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_second" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11629" + { + "name" "Brazil Fortress 6v6 Division 1 Third Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_third" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11630" + { + "name" "Brazil Fortress 6v6 Division 1 Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div1_participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11631" + { + "name" "Brazil Fortress 6v6 Division 2 First Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_first" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11632" + { + "name" "Brazil Fortress 6v6 Division 2 Second Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_second" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11633" + { + "name" "Brazil Fortress 6v6 Division 2 Third Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_third" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11634" + { + "name" "Brazil Fortress 6v6 Division 2 Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Div2_participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11635" + { + "name" "Brazil Fortress 6v6 Academy First Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_first" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11636" + { + "name" "Brazil Fortress 6v6 Academy Second Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_second" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_segundo_lugar/brasil_fortress_6v6_segundo_lugar_%s.mdl" + } + } + "11637" + { + "name" "Brazil Fortress 6v6 Academy Third Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_third" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_terceiro_lugar/brasil_fortress_6v6_terceiro_lugar_%s.mdl" + } + } + "11638" + { + "name" "Brazil Fortress 6v6 Academy Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Academy_participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11639" + { + "name" "Brazil Fortress 6v6 Qualified Stage Champions Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Qualified_Stage_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_primeiro_lugar/brasil_fortress_6v6_primeiro_lugar_%s.mdl" + } + } + "11640" + { + "name" "Brazil Fortress 6v6 Helper Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_6s_Helper" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_6v6_participante/brasil_fortress_6v6_participante_%s.mdl" + } + } + "11641" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11642" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11643" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11644" + { + "name" "Brazil Fortress JumpCup Soldier Division 1 Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11645" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11646" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11647" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11648" + { + "name" "Brazil Fortress JumpCup Soldier Division 2 Participant Division 2 Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Soldier_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11649" + { + "name" "Brazil Fortress JumpCup Demoman First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11650" + { + "name" "Brazil Fortress JumpCup Demoman Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11651" + { + "name" "Brazil Fortress JumpCup Demoman Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11652" + { + "name" "Brazil Fortress JumpCup Demoman Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Demoman_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11653" + { + "name" "Brazil Fortress JumpCup Speed Run Soldier First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Soldier_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11654" + { + "name" "Brazil Fortress JumpCup Speed Run Soldier Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Soldier_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11655" + { + "name" "Brazil Fortress JumpCup Speed Run Soldier Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Soldier_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11656" + { + "name" "Brazil Fortress JumpCup Speed Run Soldier Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Soldier_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11657" + { + "name" "Brazil Fortress JumpCup Speed Run Demoman First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Demoman_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_1st/brasil_fortress_jump_1st_%s.mdl" + } + } + "11658" + { + "name" "Brazil Fortress JumpCup Speed Run Demoman Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Demoman_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_2nd/brasil_fortress_jump_2nd_%s.mdl" + } + } + "11659" + { + "name" "Brazil Fortress JumpCup Speed Run Demoman Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Demoman_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_3rd/brasil_fortress_jump_3rd_%s.mdl" + } + } + "11660" + { + "name" "Brazil Fortress JumpCup Speed Run Demoman Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_SpeedRun_Demoman_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_participant/brasil_fortress_jump_participant_%s.mdl" + } + } + "11661" + { + "name" "Brazil Fortress JumpCup Helper Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Jump_Helper" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_jump_helper/brasil_fortress_jump_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_jump_helper/brasil_fortress_jump_helper_%s.mdl" + } + } + + + "11667" + { + "name" "RGLgg Highlander Invite Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11668" + { + "name" "RGLgg Highlander Invite 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11669" + { + "name" "RGLgg Highlander Invite 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11670" + { + "name" "RGLgg Highlander Invite Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11671" + { + "name" "RGLgg Highlander Advanced Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11672" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11673" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11674" + { + "name" "RGLgg Highlander Advanced Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11675" + { + "name" "RGLgg Highlander Main Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11676" + { + "name" "RGLgg Highlander Main 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11677" + { + "name" "RGLgg Highlander Main 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11678" + { + "name" "RGLgg Highlander Main Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11679" + { + "name" "RGLgg Highlander Intermediate Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11680" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11681" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11682" + { + "name" "RGLgg Highlander Intermediate Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11683" + { + "name" "RGLgg Highlander Amateur Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11684" + { + "name" "RGLgg Highlander Newcomer Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11685" + { + "name" "RGLgg Highlander Invite Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11686" + { + "name" "RGLgg Highlander Invite 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11687" + { + "name" "RGLgg Highlander Invite 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11688" + { + "name" "RGLgg Highlander Invite Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11689" + { + "name" "RGLgg Highlander Advanced Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11690" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11691" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11692" + { + "name" "RGLgg Highlander Advanced Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11693" + { + "name" "RGLgg Highlander Main Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11694" + { + "name" "RGLgg Highlander Main 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11695" + { + "name" "RGLgg Highlander Main 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11696" + { + "name" "RGLgg Highlander Main Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11697" + { + "name" "RGLgg Highlander Intermediate Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11698" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11699" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11700" + { + "name" "RGLgg Highlander Intermediate Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11701" + { + "name" "RGLgg Highlander Amateur Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11702" + { + "name" "RGLgg Highlander Newcomer Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11703" + { + "name" "RGLgg 6v6 Invite Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11704" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11705" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11706" + { + "name" "RGLgg 6v6 Invite Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11707" + { + "name" "RGLgg 6v6 Division 1 Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11708" + { + "name" "RGLgg 6v6 Division 1 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11709" + { + "name" "RGLgg 6v6 Division 1 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11710" + { + "name" "RGLgg 6v6 Division 1 Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11711" + { + "name" "RGLgg 6v6 Division 2 Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11712" + { + "name" "RGLgg 6v6 Division 2 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11713" + { + "name" "RGLgg 6v6 Division 2 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11714" + { + "name" "RGLgg 6v6 Division 2 Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11715" + { + "name" "RGLgg 6v6 Main Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11716" + { + "name" "RGLgg 6v6 Main 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11717" + { + "name" "RGLgg 6v6 Main 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11718" + { + "name" "RGLgg 6v6 Main Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11719" + { + "name" "RGLgg 6v6 Intermediate Champions Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11720" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11721" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11722" + { + "name" "RGLgg 6v6 Intermediate Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11723" + { + "name" "RGLgg 6v6 Amateur Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11724" + { + "name" "RGLgg 6v6 Newcomer Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11725" + { + "name" "RGLgg 6v6 Invite Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11726" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11727" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11728" + { + "name" "RGLgg 6v6 Invite Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11729" + { + "name" "RGLgg 6v6 Division 1 Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11730" + { + "name" "RGLgg 6v6 Division 1 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11731" + { + "name" "RGLgg 6v6 Division 1 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11732" + { + "name" "RGLgg 6v6 Division 1 Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11733" + { + "name" "RGLgg 6v6 Division 2 Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11734" + { + "name" "RGLgg 6v6 Division 2 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11735" + { + "name" "RGLgg 6v6 Division 2 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11736" + { + "name" "RGLgg 6v6 Division 2 Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11737" + { + "name" "RGLgg 6v6 Main Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11738" + { + "name" "RGLgg 6v6 Main 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11739" + { + "name" "RGLgg 6v6 Main 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11740" + { + "name" "RGLgg 6v6 Main Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11741" + { + "name" "RGLgg 6v6 Intermediate Champions Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11742" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11743" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11744" + { + "name" "RGLgg 6v6 Intermediate Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11745" + { + "name" "RGLgg 6v6 Amateur Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11746" + { + "name" "RGLgg 6v6 Newcomer Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11747" + { + "name" "RGL.gg Sixes Invite Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "11748" + { + "name" "RGL.gg Sixes Invite 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "11749" + { + "name" "RGL.gg Sixes Invite 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "11750" + { + "name" "RGL.gg Sixes Invite Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "11751" + { + "name" "RGL.gg Sixes Advanced Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11752" + { + "name" "RGL.gg Sixes Advanced 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11753" + { + "name" "RGL.gg Sixes Advanced 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11754" + { + "name" "RGL.gg Sixes Advanced Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "11755" + { + "name" "RGL.gg Sixes Main Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Main_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11756" + { + "name" "RGL.gg Sixes Main 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Main_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11757" + { + "name" "RGL.gg Sixes Main 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Main_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11758" + { + "name" "RGL.gg Sixes Main Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Main_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "11759" + { + "name" "RGL.gg Sixes Intermediate Champions Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11760" + { + "name" "RGL.gg Sixes Intermediate 2nd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11761" + { + "name" "RGL.gg Sixes Intermediate 3rd Place Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11762" + { + "name" "RGL.gg Sixes Intermediate Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "11763" + { + "name" "RGL.gg Sixes Amateur Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Sixes_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11764" + { + "name" "RGL.gg 6v6 Newcomer Cup Summer 2020" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Cup" + "item_description" "#TF_TournamentMedal_Summer2020" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "11765" + { + "name" "RGLgg Highlander Experimental Maps Cup Spring 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_HighlanderCup_Exp" + "item_description" "#TF_TournamentMedal_Spring2020" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup_%s.mdl" + } + } + "11766" + { + "name" "RGLgg Invite Champions Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11767" + { + "name" "RGLgg Invite 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11768" + { + "name" "RGLgg Invite 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11769" + { + "name" "RGLgg Invite Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11770" + { + "name" "RGLgg Advanced Champions Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11771" + { + "name" "RGLgg Advanced 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11772" + { + "name" "RGLgg Advanced 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11773" + { + "name" "RGLgg Advanced Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11774" + { + "name" "RGLgg Main Champions Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11775" + { + "name" "RGLgg Main 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11776" + { + "name" "RGLgg Main 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11777" + { + "name" "RGLgg Main Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11778" + { + "name" "RGLgg IM Champions Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11779" + { + "name" "RGLgg IM 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11780" + { + "name" "RGLgg IM 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11781" + { + "name" "RGLgg IM Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11782" + { + "name" "RGLgg Amateur Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11783" + { + "name" "RGLgg Newcomer Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11784" + { + "name" "RGLgg Invite Champions Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "11785" + { + "name" "RGLgg Invite 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11786" + { + "name" "RGLgg Invite 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11787" + { + "name" "RGLgg Invite Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "11788" + { + "name" "RGLgg Advanced Champions Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11789" + { + "name" "RGLgg Advanced 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11790" + { + "name" "RGLgg Advanced 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11791" + { + "name" "RGLgg Advanced Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "11792" + { + "name" "RGLgg Main Champions Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11793" + { + "name" "RGLgg Main 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11794" + { + "name" "RGLgg Main 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11795" + { + "name" "RGLgg Main Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11796" + { + "name" "RGLgg IM Champions Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11797" + { + "name" "RGLgg IM 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11798" + { + "name" "RGLgg IM 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11799" + { + "name" "RGLgg IM Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11800" + { + "name" "RGLgg Amateur Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11801" + { + "name" "RGLgg Newcomer Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "11802" + { + "name" "TF2Maps 72hr TF2Jam Participant 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_jimijam" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "11803" + { + "name" "TF2Maps Ray of Sunshine 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsRayOfSunshine2020" + "item_description" "#TF2MapsRayOfSunshine2020_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s2/72hr_summerjam_2018_s2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + } + } + } + } + "11804" + { + "name" "CappingTV Summer Brawl 1st Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_1st" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold_%s.mdl" + } + } + "11805" + { + "name" "CappingTV Summer Brawl 2nd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_2nd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver_%s.mdl" + } + } + "11806" + { + "name" "CappingTV Summer Brawl 3rd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_3rd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze_%s.mdl" + } + } + "11807" + { + "name" "CappingTV Summer Brawl Participant 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant_%s.mdl" + } + } + "11808" + { + "name" "CappingTV PASS Time Championship 1st Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_PASS_Time_1st" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "11809" + { + "name" "CappingTV PASS Time Championship 2nd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_PASS_Time_2nd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "11810" + { + "name" "CappingTV PASS Time Championship 3rd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_PASS_Time_3rd" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "11811" + { + "name" "CappingTV PASS Time Championship Participant 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_PASS_Time_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "11812" + { + "name" "Fruit Mixes Highlander Low/Mid Gold Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_LowMid_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "11813" + { + "name" "Fruit Mixes Highlander Low/Mid Silver Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_LowMid_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "11814" + { + "name" "Fruit Mixes Highlander Low/Mid Bronze Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_LowMid_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "11815" + { + "name" "Fruit Mixes Highlander Low/Mid Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_LowMid_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "11816" + { + "name" "Fruit Mixes Highlander Open Gold Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Gold" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "11817" + { + "name" "Fruit Mixes Highlander Open Silver Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Silver" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "11818" + { + "name" "Fruit Mixes Highlander Open Bronze Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "11819" + { + "name" "Fruit Mixes Highlander Open Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "11820" + { + "name" "UGC Highlander Platinum 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "11821" + { + "name" "UGC Highlander Platinum 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "11822" + { + "name" "UGC Highlander Platinum 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "11823" + { + "name" "UGC Highlander Platinum Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "11824" + { + "name" "UGC Highlander Silver 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "11825" + { + "name" "UGC Highlander Silver 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "11826" + { + "name" "UGC Highlander Silver 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "11827" + { + "name" "UGC Highlander Silver Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11828" + { + "name" "UGC Highlander Steel 1st Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "11829" + { + "name" "UGC Highlander Steel 2nd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "11830" + { + "name" "UGC Highlander Steel 3rd Place Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "11831" + { + "name" "UGC Highlander Steel Participant Season 28" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season28" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11832" + { + "name" "UGC Highlander Platinum 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "11833" + { + "name" "UGC Highlander Platinum 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "11834" + { + "name" "UGC Highlander Platinum 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "11835" + { + "name" "UGC Highlander Platinum Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "11836" + { + "name" "UGC Highlander Silver 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "11837" + { + "name" "UGC Highlander Silver 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "11838" + { + "name" "UGC Highlander Silver 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "11839" + { + "name" "UGC Highlander Silver Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11840" + { + "name" "UGC Highlander Steel 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "11841" + { + "name" "UGC Highlander Steel 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "11842" + { + "name" "UGC Highlander Steel 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "11843" + { + "name" "UGC Highlander Steel Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11844" + { + "name" "UGC 6vs6 Platinum 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "11845" + { + "name" "UGC 6vs6 Platinum 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "11846" + { + "name" "UGC 6vs6 Platinum 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "11847" + { + "name" "UGC 6vs6 Platinum Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "11848" + { + "name" "UGC 6vs6 Silver 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_1st" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "11849" + { + "name" "UGC 6vs6 Silver 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "11850" + { + "name" "UGC 6vs6 Silver 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "11851" + { + "name" "UGC 6vs6 Silver Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11852" + { + "name" "UGC 6vs6 Steel 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "11853" + { + "name" "UGC 6vs6 Steel 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "11854" + { + "name" "UGC 6vs6 Steel 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "11855" + { + "name" "UGC 6vs6 Steel Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11856" + { + "name" "UGC 6vs6 Platinum 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "11857" + { + "name" "UGC 6vs6 Platinum 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "11858" + { + "name" "UGC 6vs6 Platinum 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "11859" + { + "name" "UGC 6vs6 Platinum Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "11860" + { + "name" "UGC 6vs6 Silver 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_1st" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "11861" + { + "name" "UGC 6vs6 Silver 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "11862" + { + "name" "UGC 6vs6 Silver 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "11863" + { + "name" "UGC 6vs6 Silver Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11864" + { + "name" "UGC 6vs6 Steel 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "11865" + { + "name" "UGC 6vs6 Steel 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "11866" + { + "name" "UGC 6vs6 Steel 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "11867" + { + "name" "UGC 6vs6 Steel Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11868" + { + "name" "UGC 4vs4 Gold 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "11869" + { + "name" "UGC 4vs4 Gold 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "11870" + { + "name" "UGC 4vs4 Gold 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "11871" + { + "name" "UGC 4vs4 Gold Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "11872" + { + "name" "UGC 4vs4 Silver 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "11873" + { + "name" "UGC 4vs4 Silver 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "11874" + { + "name" "UGC 4vs4 Silver 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "11875" + { + "name" "UGC 4vs4 Silver Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11876" + { + "name" "UGC 4vs4 Steel 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "11877" + { + "name" "UGC 4vs4 Steel 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "11878" + { + "name" "UGC 4vs4 Steel 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "11879" + { + "name" "UGC 4vs4 Steel Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11880" + { + "name" "UGC 4vs4 Gold 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_plat" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "3" + } + } + "11881" + { + "name" "UGC 4vs4 Gold 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_plat" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "3" + } + } + "11882" + { + "name" "UGC 4vs4 Gold 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_plat" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "3" + } + } + "11883" + { + "name" "UGC 4vs4 Gold Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_plat" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "3" + } + } + "11884" + { + "name" "UGC 4vs4 Silver 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_silver" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "2" + } + } + "11885" + { + "name" "UGC 4vs4 Silver 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_silver" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "2" + } + } + "11886" + { + "name" "UGC 4vs4 Silver 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_silver" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "2" + } + } + "11887" + { + "name" "UGC 4vs4 Silver Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_silver" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11888" + { + "name" "UGC 4vs4 Steel 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_first_steel" + "model_player" "models/player/items/all_class/ugc8_medal_first.mdl" + "visuals" + { + "skin" "1" + } + } + "11889" + { + "name" "UGC 4vs4 Steel 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_second_steel" + "model_player" "models/player/items/all_class/ugc8_medal_second.mdl" + "visuals" + { + "skin" "1" + } + } + "11890" + { + "name" "UGC 4vs4 Steel 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_third_steel" + "model_player" "models/player/items/all_class/ugc8_medal_third.mdl" + "visuals" + { + "skin" "1" + } + } + "11891" + { + "name" "UGC 4vs4 Steel Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/player/items/all_class/ugc8_medal_participant_steel" + "model_player" "models/player/items/all_class/ugc8_medal_participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11892" + { + "name" "UGC Highlander Platinum 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "11893" + { + "name" "UGC Highlander Platinum 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "11894" + { + "name" "UGC Highlander Platinum 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "11895" + { + "name" "UGC Highlander Platinum Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11896" + { + "name" "UGC Highlander Silver 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "11897" + { + "name" "UGC Highlander Silver 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "11898" + { + "name" "UGC Highlander Silver 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "11899" + { + "name" "UGC Highlander Silver Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11900" + { + "name" "UGC Highlander Steel 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "11901" + { + "name" "UGC Highlander Steel 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "11902" + { + "name" "UGC Highlander Steel 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "11903" + { + "name" "UGC Highlander Steel Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "11904" + { + "name" "UGC Highlander Platinum 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "11905" + { + "name" "UGC Highlander Platinum 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "11906" + { + "name" "UGC Highlander Platinum 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "11907" + { + "name" "UGC Highlander Platinum Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11908" + { + "name" "UGC Highlander Silver 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "11909" + { + "name" "UGC Highlander Silver 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "11910" + { + "name" "UGC Highlander Silver 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "11911" + { + "name" "UGC Highlander Silver Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11912" + { + "name" "UGC Highlander Steel 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "11913" + { + "name" "UGC Highlander Steel 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "11914" + { + "name" "UGC Highlander Steel 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "11915" + { + "name" "UGC Highlander Steel Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "11916" + { + "name" "UGC 6vs6 Platinum 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "11917" + { + "name" "UGC 6vs6 Platinum 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "11918" + { + "name" "UGC 6vs6 Platinum 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "11919" + { + "name" "UGC 6vs6 Platinum Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11920" + { + "name" "UGC 6vs6 Silver 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_1st" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "11921" + { + "name" "UGC 6vs6 Silver 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "11922" + { + "name" "UGC 6vs6 Silver 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "11923" + { + "name" "UGC 6vs6 Silver Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11924" + { + "name" "UGC 6vs6 Steel 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "11925" + { + "name" "UGC 6vs6 Steel 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "11926" + { + "name" "UGC 6vs6 Steel 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "11927" + { + "name" "UGC 6vs6 Steel Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "11928" + { + "name" "UGC 6vs6 Platinum 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "11929" + { + "name" "UGC 6vs6 Platinum 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "11930" + { + "name" "UGC 6vs6 Platinum 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "11931" + { + "name" "UGC 6vs6 Platinum Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11932" + { + "name" "UGC 6vs6 Silver 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_1st" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "11933" + { + "name" "UGC 6vs6 Silver 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "11934" + { + "name" "UGC 6vs6 Silver 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "11935" + { + "name" "UGC 6vs6 Silver Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11936" + { + "name" "UGC 6vs6 Steel 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "11937" + { + "name" "UGC 6vs6 Steel 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "11938" + { + "name" "UGC 6vs6 Steel 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "11939" + { + "name" "UGC 6vs6 Steel Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "11940" + { + "name" "UGC 4vs4 Gold 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "11941" + { + "name" "UGC 4vs4 Gold 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "11942" + { + "name" "UGC 4vs4 Gold 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "11943" + { + "name" "UGC 4vs4 Gold Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11944" + { + "name" "UGC 4vs4 Silver 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "11945" + { + "name" "UGC 4vs4 Silver 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "11946" + { + "name" "UGC 4vs4 Silver 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "11947" + { + "name" "UGC 4vs4 Silver Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11948" + { + "name" "UGC 4vs4 Steel 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "11949" + { + "name" "UGC 4vs4 Steel 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "11950" + { + "name" "UGC 4vs4 Steel 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "11951" + { + "name" "UGC 4vs4 Steel Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "11952" + { + "name" "UGC 4vs4 Gold 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6firstplatinum" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "2" + } + } + "11953" + { + "name" "UGC 4vs4 Gold 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6secondplatinum" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "2" + } + } + "11954" + { + "name" "UGC 4vs4 Gold 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6thirdplatinum" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "2" + } + } + "11955" + { + "name" "UGC 4vs4 Gold Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11956" + { + "name" "UGC 4vs4 Silver 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6firstsilver" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "1" + } + } + "11957" + { + "name" "UGC 4vs4 Silver 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6secondsilver" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "1" + } + } + "11958" + { + "name" "UGC 4vs4 Silver 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsilver" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "1" + } + } + "11959" + { + "name" "UGC 4vs4 Silver Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6participantsilver" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "1" + } + } + "11960" + { + "name" "UGC 4vs4 Steel 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6firststeel" + "model_player" "models/player/items/all_class/ugc6first.mdl" + "visuals" + { + "skin" "0" + } + } + "11961" + { + "name" "UGC 4vs4 Steel 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6secondsteel" + "model_player" "models/player/items/all_class/ugc6second.mdl" + "visuals" + { + "skin" "0" + } + } + "11962" + { + "name" "UGC 4vs4 Steel 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6thirdsteel" + "model_player" "models/player/items/all_class/ugc6third.mdl" + "visuals" + { + "skin" "0" + } + } + "11963" + { + "name" "UGC 4vs4 Steel Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/player/items/all_class/ugc6participantsteel" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "0" + } + } + "11964" + { + "name" "UGC League Admin and Contributor 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_League_Admin" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/player/items/all_class/ugc6participantplatinum" + "model_player" "models/player/items/all_class/ugc6participant.mdl" + "visuals" + { + "skin" "2" + } + } + "11965" + { + "name" "South American Vanilla Fortress 6v6 Invite First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11966" + { + "name" "South American Vanilla Fortress 6v6 Invite Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11967" + { + "name" "South American Vanilla Fortress 6v6 Invite Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11968" + { + "name" "South American Vanilla Fortress 6v6 Invite Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11969" + { + "name" "South American Vanilla Fortress 6v6 Intermediate First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11970" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11971" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11972" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11973" + { + "name" "South American Vanilla Fortress 6v6 Open First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "11974" + { + "name" "South American Vanilla Fortress 6v6 Open Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "11975" + { + "name" "South American Vanilla Fortress 6v6 Open Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "11976" + { + "name" "South American Vanilla Fortress 6v6 Open Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "11977" + { + "name" "South American Vanilla Fortress 6v6 Supporter Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Supporter" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "11978" + { + "name" "TFArena 6v6 Arena Mode Cup 2 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "11979" + { + "name" "TFArena 6v6 Arena Mode Cup 2 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "11980" + { + "name" "TFArena 6v6 Arena Mode Cup 2 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "11981" + { + "name" "TFArena 6v6 Arena Mode Cup 2 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "11982" + { + "name" "TFArena 6v6 Arena Mode Cup 2 Helper" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Helper" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Helper_Cup2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_helper/tfarena_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_helper/tfarena_helper_%s.mdl" + } + } + "11983" + { + "name" "ozfortress Premier 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "11984" + { + "name" "ozfortress Premier 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "11985" + { + "name" "ozfortress Premier 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "11986" + { + "name" "ozfortress Premier Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "11987" + { + "name" "ozfortress High 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11988" + { + "name" "ozfortress High 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11989" + { + "name" "ozfortress High 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11990" + { + "name" "ozfortress High Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11991" + { + "name" "ozfortress Intermediate 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11992" + { + "name" "ozfortress Intermediate 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11993" + { + "name" "ozfortress Intermediate 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11994" + { + "name" "ozfortress Intermediate Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11995" + { + "name" "ozfortress Main 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "11996" + { + "name" "ozfortress Main 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "11997" + { + "name" "ozfortress Main 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "11998" + { + "name" "ozfortress Main Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "11999" + { + "name" "ozfortress Open 1st Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12000" + { + "name" "ozfortress Open 2nd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12001" + { + "name" "ozfortress Open 3rd Place Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12002" + { + "name" "ozfortress Open Participant Season 29" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season29" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12003" + { + "name" "CappingTV Ultiduo 1st Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_Gold" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold_%s.mdl" + } + } + "12004" + { + "name" "CappingTV Ultiduo 2nd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_Silver" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver_%s.mdl" + } + } + "12005" + { + "name" "CappingTV Ultiduo 3rd Place 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_Bronze" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze_%s.mdl" + } + } + "12006" + { + "name" "CappingTV Ultiduo Participant 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant_%s.mdl" + } + } + "12007" + { + "name" "DreamHack Community Clash First Place 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Gold" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold_%s.mdl" + } + } + "12008" + { + "name" "DreamHack Community Clash Second Place 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Silver" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver_%s.mdl" + } + } + "12009" + { + "name" "DreamHack Community Clash Third Place 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Bronze" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze_%s.mdl" + } + } + "12010" + { + "name" "DreamHack Community Clash Participant 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Participant" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant_%s.mdl" + } + } + "12011" + { + "name" "DreamHack Community Clash Staff 2020" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Staff" + "item_description" "#TF_TournamentMedal_2020" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor_%s.mdl" + } + } + "12012" + { + "name" "LBTF2 6v6 Elite 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12013" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12014" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12015" + { + "name" "LBTF2 6v6 Elite Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12016" + { + "name" "LBTF2 6v6 Central 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12017" + { + "name" "LBTF2 6v6 Central 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12018" + { + "name" "LBTF2 6v6 Central 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12019" + { + "name" "LBTF2 6v6 Central Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12020" + { + "name" "LBTF2 6v6 Access 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12021" + { + "name" "LBTF2 6v6 Access 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12022" + { + "name" "LBTF2 6v6 Access 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12023" + { + "name" "LBTF2 6v6 Access Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12024" + { + "name" "LBTF2 6v6 Open 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12025" + { + "name" "LBTF2 6v6 Open 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12026" + { + "name" "LBTF2 6v6 Open 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12027" + { + "name" "LBTF2 6v6 Open Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12028" + { + "name" "South American Vanilla Fortress Highlander Invite First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12029" + { + "name" "South American Vanilla Fortress Highlander Invite Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12030" + { + "name" "South American Vanilla Fortress Highlander Invite Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12031" + { + "name" "South American Vanilla Fortress Highlander Invite Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12032" + { + "name" "South American Vanilla Fortress Highlander Intermediate First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12033" + { + "name" "South American Vanilla Fortress Highlander Intermediate Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12034" + { + "name" "South American Vanilla Fortress Highlander Intermediate Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12035" + { + "name" "South American Vanilla Fortress Highlander Intermediate Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12036" + { + "name" "South American Vanilla Fortress Highlander Open First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_First" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12037" + { + "name" "South American Vanilla Fortress Highlander Open Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Second" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12038" + { + "name" "South American Vanilla Fortress Highlander Open Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Third" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12039" + { + "name" "South American Vanilla Fortress Highlander Open Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12040" + { + "name" "South American Vanilla Fortress Highlander Supporter Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Supporter" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "12041" + { + "name" "Classic MGE Cup Advanced Gold Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold_%s.mdl" + } + } + "12042" + { + "name" "Classic MGE Cup Advanced Silver Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver_%s.mdl" + } + } + "12043" + { + "name" "Classic MGE Cup Advanced Bronze Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze_%s.mdl" + } + } + "12044" + { + "name" "Classic MGE Cup Advanced Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant_%s.mdl" + } + } + "12045" + { + "name" "Classic MGE Cup Open Gold Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold_%s.mdl" + } + } + "12046" + { + "name" "Classic MGE Cup Open Silver Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver_%s.mdl" + } + } + "12047" + { + "name" "Classic MGE Cup Open Bronze Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze_%s.mdl" + } + } + "12048" + { + "name" "Classic MGE Cup Open Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant_%s.mdl" + } + } + "12049" + { + "name" "Classic MGE Cup Helper Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Helper" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper_%s.mdl" + } + } + "12050" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12051" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12052" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12053" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12054" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12055" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12056" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12057" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12058" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12059" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12060" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12061" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12062" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12063" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12064" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12065" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12066" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12067" + { + "name" "ETF2L 6v6 Low Gold Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12068" + { + "name" "ETF2L 6v6 Low Silver Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12069" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12070" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12071" + { + "name" "ETF2L 6v6 Low Participation Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12072" + { + "name" "ETF2L 6v6 Open Gold Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12073" + { + "name" "ETF2L 6v6 Open Silver Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12074" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12075" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12076" + { + "name" "ETF2L 6v6 Open Participation Medal Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12077" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12078" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12079" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12080" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12081" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12082" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12083" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12084" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12085" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12086" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12087" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12088" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12089" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12090" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12091" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12092" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12093" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12094" + { + "name" "ETF2L 6v6 Low Gold Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12095" + { + "name" "ETF2L 6v6 Low Silver Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12096" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12097" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12098" + { + "name" "ETF2L 6v6 Low Participation Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12099" + { + "name" "ETF2L 6v6 Open Gold Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12100" + { + "name" "ETF2L 6v6 Open Silver Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12101" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12102" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12103" + { + "name" "ETF2L 6v6 Open Participation Medal Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12104" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12105" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12106" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12107" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12108" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12109" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12110" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12111" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12112" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12113" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12114" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12115" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12116" + { + "name" "ETF2L Highlander Mid Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12117" + { + "name" "ETF2L Highlander Mid Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12118" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12119" + { + "name" "ETF2L Highlander Mid Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12120" + { + "name" "ETF2L Highlander Low Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12121" + { + "name" "ETF2L Highlander Low Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12122" + { + "name" "ETF2L Highlander Low Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12123" + { + "name" "ETF2L Highlander Low Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12124" + { + "name" "ETF2L Highlander Open Gold Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12125" + { + "name" "ETF2L Highlander Open Silver Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12126" + { + "name" "ETF2L Highlander Open Bronze Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12127" + { + "name" "ETF2L Highlander Open Playoff Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12128" + { + "name" "ETF2L Highlander Open Participation Medal Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12129" + { + "name" "Fruit Mixes Highlander High/Prem Gold Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "12130" + { + "name" "Fruit Mixes Highlander High/Prem Silver Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "12131" + { + "name" "Fruit Mixes Highlander High/Prem Bronze Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "12132" + { + "name" "Fruit Mixes Highlander High/Prem Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "12133" + { + "name" "Fruit Mixes Highlander Mid Gold Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "12134" + { + "name" "Fruit Mixes Highlander Mid Silver Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "12135" + { + "name" "Fruit Mixes Highlander Mid Bronze Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "12136" + { + "name" "Fruit Mixes Highlander Mid Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "12137" + { + "name" "Fruit Mixes Highlander Low Gold Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "12138" + { + "name" "Fruit Mixes Highlander Low Silver Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "12139" + { + "name" "Fruit Mixes Highlander Low Bronze Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "12140" + { + "name" "Fruit Mixes Highlander Low Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "12141" + { + "name" "Fruit Mixes Highlander Open Gold Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "12142" + { + "name" "Fruit Mixes Highlander Open Silver Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "12143" + { + "name" "Fruit Mixes Highlander Open Bronze Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "12144" + { + "name" "Fruit Mixes Highlander Open Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "12145" + { + "name" "Fruit Mixes Highlander Staff Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FruitMixes_Staff" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff_%s.mdl" + } + } + "12146" + { + "name" "ozfortress Summer Cup Division 1 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division1_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "12147" + { + "name" "ozfortress Summer Cup Division 1 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division1_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "12148" + { + "name" "ozfortress Summer Cup Division 1 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division1_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "12149" + { + "name" "ozfortress Summer Cup Division 1 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division1_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "12150" + { + "name" "ozfortress Summer Cup Division 2 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division2_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "12151" + { + "name" "ozfortress Summer Cup Division 2 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division2_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "12152" + { + "name" "ozfortress Summer Cup Division 2 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division2_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "12153" + { + "name" "ozfortress Summer Cup Division 2 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division2_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "12154" + { + "name" "ozfortress Summer Cup Division 3 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division3_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "12155" + { + "name" "ozfortress Summer Cup Division 3 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division3_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "12156" + { + "name" "ozfortress Summer Cup Division 3 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division3_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "12157" + { + "name" "ozfortress Summer Cup Division 3 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division3_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "12158" + { + "name" "ozfortress Summer Cup Division 4 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division4_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "12159" + { + "name" "ozfortress Summer Cup Division 4 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division4_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "12160" + { + "name" "ozfortress Summer Cup Division 4 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division4_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "12161" + { + "name" "ozfortress Summer Cup Division 4 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Division4_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "12162" + { + "name" "PASS Time Federation 1st Place Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st_%s.mdl" + } + } + "12163" + { + "name" "PASS Time Federation 2nd Place Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd_%s.mdl" + } + } + "12164" + { + "name" "PASS Time Federation 3rd Place Medal Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd_%s.mdl" + } + } + "12165" + { + "name" "PASS Time Federation Participant Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant_%s.mdl" + } + } + "12166" + { + "name" "PASS Time Federation Helper Season 2" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_Helper" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_helper/passtime_federation_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_helper/passtime_federation_helper_%s.mdl" + } + } + "12167" + { + "name" "Respawn League AUS/NZ Highlander Main 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12168" + { + "name" "Respawn League AUS/NZ Highlander Main 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12169" + { + "name" "Respawn League AUS/NZ Highlander Main 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12170" + { + "name" "Respawn League AUS/NZ Highlander Main Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12171" + { + "name" "Respawn League AUS/NZ Highlander Premier 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12172" + { + "name" "Respawn League AUS/NZ Highlander Premier 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12173" + { + "name" "Respawn League AUS/NZ Highlander Premier 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12174" + { + "name" "Respawn League AUS/NZ Highlander Premier Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12175" + { + "name" "Respawn League AUS/NZ Highlander Main 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12176" + { + "name" "Respawn League AUS/NZ Highlander Main 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12177" + { + "name" "Respawn League AUS/NZ Highlander Main 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12178" + { + "name" "Respawn League AUS/NZ Highlander Main Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12179" + { + "name" "Respawn League AUS/NZ Highlander Premier 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12180" + { + "name" "Respawn League AUS/NZ Highlander Premier 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12181" + { + "name" "Respawn League AUS/NZ Highlander Premier 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12182" + { + "name" "Respawn League AUS/NZ Highlander Premier Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12183" + { + "name" "Respawn League ASIA Highlander 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12184" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12185" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12186" + { + "name" "Respawn League ASIA Highlander Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12187" + { + "name" "Respawn League ASIA Highlander 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12188" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12189" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12190" + { + "name" "Respawn League ASIA Highlander Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12191" + { + "name" "Respawn League AUS/NZ Quadlander Main 4v4 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderMain4v4_1st" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12192" + { + "name" "Respawn League AUS/NZ Quadlander Main 4v4 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderMain4v4_2nd" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12193" + { + "name" "Respawn League AUS/NZ Quadlander Main 4v4 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderMain4v4_3rd" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12194" + { + "name" "Respawn League AUS/NZ Quadlander Main 4v4 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderMain4v4_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12195" + { + "name" "NHBL Natascha Heavyweight Champion Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Natasha_Season10" + "item_description" "#TF_TournamentMedal_NHBL_Natasha_Season10_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "12196" + { + "name" "NHBL Finals Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_participant/nhbl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_participant/nhbl_participant_%s.mdl" + } + } + "12197" + { + "name" "NHBL Finals 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_SecondPlace" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_second_place/nhbl_second_place_%s.mdl" + } + } + "12198" + { + "name" "NHBL Finals 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_ThirdPlace" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_third_place/nhbl_third_place_%s.mdl" + } + } + "12199" + { + "name" "NHBL Finals 4th Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_FourthPlace" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_fourth_place/nhbl_fourth_place_%s.mdl" + } + } + "12200" + { + "name" "NHBL Sasha Heavyweight Champion Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_NHBL_Sasha_Season10" + "item_description" "#TF_TournamentMedal_NHBL_Sasha_Season10_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/nhbl_first_place/nhbl_first_place_%s.mdl" + } + } + "12201" + { + "name" "EBL Invite 1st Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "12202" + { + "name" "EBL Invite 2nd Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "12203" + { + "name" "EBL Invite 3rd Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "12204" + { + "name" "EBL Invite Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "12205" + { + "name" "EBL Main 1st Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "12206" + { + "name" "EBL Main 2nd Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "12207" + { + "name" "EBL Main 3rd Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "12208" + { + "name" "EBL Main Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "12209" + { + "name" "EBL Open 1st Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "12210" + { + "name" "EBL Open 2nd Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "12211" + { + "name" "EBL Open 3rd Place Medal Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "12212" + { + "name" "EBL Open Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "12213" + { + "name" "ozfortress Premier 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "12214" + { + "name" "ozfortress Premier 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "12215" + { + "name" "ozfortress Premier 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "12216" + { + "name" "ozfortress Premier Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "12217" + { + "name" "ozfortress Intermediate 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12218" + { + "name" "ozfortress Intermediate 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12219" + { + "name" "ozfortress Intermediate 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12220" + { + "name" "ozfortress Intermediate Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12221" + { + "name" "ozfortress Main 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12222" + { + "name" "ozfortress Main 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12223" + { + "name" "ozfortress Main 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12224" + { + "name" "ozfortress Main Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12225" + { + "name" "ozfortress Open 1st Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12226" + { + "name" "ozfortress Open 2nd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12227" + { + "name" "ozfortress Open 3rd Place Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12228" + { + "name" "ozfortress Open Participant Season 30" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season30" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12229" + { + "name" "LBTF2 Highlander Elite 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Elite_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "12230" + { + "name" "LBTF2 Highlander Elite 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "12231" + { + "name" "LBTF2 Highlander Elite 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "12232" + { + "name" "LBTF2 Highlander Elite Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "12233" + { + "name" "LBTF2 Highlander Central 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Central_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "12234" + { + "name" "LBTF2 Highlander Central 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Central_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "12235" + { + "name" "LBTF2 Highlander Central 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Central_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "12236" + { + "name" "LBTF2 Highlander Central Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Central_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "12237" + { + "name" "LBTF2 Highlander Access 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "12238" + { + "name" "LBTF2 Highlander Access 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "12239" + { + "name" "LBTF2 Highlander Access 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "12240" + { + "name" "LBTF2 Highlander Access Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "12241" + { + "name" "LBTF2 Highlander Open 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_1st/lbtf2_highlander_1st_%s.mdl" + } + } + "12242" + { + "name" "LBTF2 Highlander Open 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_2nd/lbtf2_highlander_2nd_%s.mdl" + } + } + "12243" + { + "name" "LBTF2 Highlander Open 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_3rd/lbtf2_highlander_3rd_%s.mdl" + } + } + "12244" + { + "name" "LBTF2 Highlander Open Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander_participant/lbtf2_highlander_participant_%s.mdl" + } + } + "12245" + { + "name" "Respawn League AUS/NZ Quadlander Premier 4v4 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderPremier4v4_1st" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12246" + { + "name" "Respawn League AUS/NZ Quadlander Premier 4v4 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderPremier4v4_2nd" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12247" + { + "name" "Respawn League AUS/NZ Quadlander Premier 4v4 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderPremier4v4_3rd" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12248" + { + "name" "Respawn League AUS/NZ Quadlander Premier 4v4 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_QuadlanderPremier4v4_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12249" + { + "name" "Starched Silliness Potato Lookalike 2021" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_StarchedSilliness_Player" + "item_description" "#TF_TournamentMedal_StarchedSilliness_Player_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player_s2/mvm_memes_player_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12250" + { + "name" "Starched Silliness Super Spud 2021" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_StarchedSilliness_Creator" + "item_description" "#TF_TournamentMedal_StarchedSilliness_Creator_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator_s2/mvm_memes_creator_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12251" + { + "name" "Starched Silliness Curious Carbon 2021" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_StarchedSilliness_Donor" + "item_description" "#TF_TournamentMedal_StarchedSilliness_Donor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_silver/robotarm_silver_alternate" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2931149" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver_gem.mdl" + } + } + } + } + "12252" + { + "name" "FBTF Cup 6v6 Wastex Miller 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "12253" + { + "name" "FBTF Cup 6v6 Wastex Miller 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "12254" + { + "name" "FBTF Cup 6v6 Wastex Miller 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "12255" + { + "name" "FBTF Cup 6v6 Wastex Miller Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "12256" + { + "name" "FBTF Cup 6v6 Barts Rimet 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "12257" + { + "name" "FBTF Cup 6v6 Barts Rimet 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "12258" + { + "name" "FBTF Cup 6v6 Barts Rimet 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "12259" + { + "name" "FBTF Cup 6v6 Barts Rimet Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "12260" + { + "name" "FBTF Cup 6v6 Vic Basten 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "12261" + { + "name" "FBTF Cup 6v6 Vic Basten 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "12262" + { + "name" "FBTF Cup 6v6 Vic Basten 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "12263" + { + "name" "FBTF Cup 6v6 Vic Basten Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "12264" + { + "name" "FBTF Cup 6v6 Ghosten Tuchel 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Ghosten_Tuchel_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "12265" + { + "name" "FBTF Cup 6v6 Ghosten Tuchel 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Ghosten_Tuchel_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "12266" + { + "name" "FBTF Cup 6v6 Ghosten Tuchel 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Ghosten_Tuchel_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "12267" + { + "name" "FBTF Cup 6v6 Ghosten Tuchel Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Ghosten_Tuchel_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "12268" + { + "name" "FBTF Cup 6v6 Joten Klopp 1st Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_1st" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "12269" + { + "name" "FBTF Cup 6v6 Joten Klopp 2nd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "12270" + { + "name" "FBTF Cup 6v6 Joten Klopp 3rd Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "12271" + { + "name" "FBTF Cup 6v6 Joten Klopp Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "12272" + { + "name" "DreamHack Community Clash First Place 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Gold" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold_%s.mdl" + } + } + "12273" + { + "name" "DreamHack Community Clash Second Place 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Silver" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver_%s.mdl" + } + } + "12274" + { + "name" "DreamHack Community Clash Third Place 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Bronze" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze_%s.mdl" + } + } + "12275" + { + "name" "DreamHack Community Clash Participant 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant_%s.mdl" + } + } + "12276" + { + "name" "DreamHack Community Clash Staff 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Staff" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor_%s.mdl" + } + } + "12277" + { + "name" "South American Vanilla Fortress 6v6 Invite First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12278" + { + "name" "South American Vanilla Fortress 6v6 Invite Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12279" + { + "name" "South American Vanilla Fortress 6v6 Invite Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12280" + { + "name" "South American Vanilla Fortress 6v6 Invite Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12281" + { + "name" "South American Vanilla Fortress 6v6 Intermediate First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12282" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12283" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12284" + { + "name" "South American Vanilla Fortress 6v6 Intermediate Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12285" + { + "name" "South American Vanilla Fortress 6v6 Open First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12286" + { + "name" "South American Vanilla Fortress 6v6 Open Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12287" + { + "name" "South American Vanilla Fortress 6v6 Open Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12288" + { + "name" "South American Vanilla Fortress 6v6 Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12289" + { + "name" "South American Vanilla Fortress 6v6 Supporter Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Supporter" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "12290" + { + "name" "CappingTV Ultiduo Summer Brawl 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerGold" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_gold/cptv_ultiduo_gold_%s.mdl" + } + } + "12291" + { + "name" "CappingTV Ultiduo Summer Brawl 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerSilver" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_silver/cptv_ultiduo_silver_%s.mdl" + } + } + "12292" + { + "name" "CappingTV Ultiduo Summer Brawl 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBronze" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_bronze/cptv_ultiduo_bronze_%s.mdl" + } + } + "12293" + { + "name" "CappingTV Ultiduo Summer Brawl Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerParticipant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cptv_ultiduo_participant/cptv_ultiduo_participant_%s.mdl" + } + } + "12294" + { + "name" "LAN Downunder 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_1st" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "12295" + { + "name" "LAN Downunder 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_2nd" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "12296" + { + "name" "LAN Downunder 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_3rd" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "12297" + { + "name" "LAN Downunder Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "12298" + { + "name" "RGLgg Highlander Invite Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "12299" + { + "name" "RGLgg Highlander Invite 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "12300" + { + "name" "RGLgg Highlander Invite 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "12301" + { + "name" "RGLgg Highlander Invite Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "12302" + { + "name" "RGLgg Highlander Challenger Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12303" + { + "name" "RGLgg Highlander Challenger 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12304" + { + "name" "RGLgg Highlander Challenger 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12305" + { + "name" "RGLgg Highlander Challenger Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12306" + { + "name" "RGLgg Highlander Advanced Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12307" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12308" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12309" + { + "name" "RGLgg Highlander Advanced Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12310" + { + "name" "RGLgg Highlander Main Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12311" + { + "name" "RGLgg Highlander Main 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12312" + { + "name" "RGLgg Highlander Main 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12313" + { + "name" "RGLgg Highlander Main Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12314" + { + "name" "RGLgg Highlander Intermediate Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12315" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12316" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12317" + { + "name" "RGLgg Highlander Intermediate Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12318" + { + "name" "RGLgg Highlander Amateur Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12319" + { + "name" "RGLgg Highlander Newcomer Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12320" + { + "name" "RGLgg Highlander Invite Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "12321" + { + "name" "RGLgg Highlander Invite 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "12322" + { + "name" "RGLgg Highlander Invite 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "12323" + { + "name" "RGLgg Highlander Invite Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "12324" + { + "name" "RGLgg Highlander Challenger Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12325" + { + "name" "RGLgg Highlander Challenger 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12326" + { + "name" "RGLgg Highlander Challenger 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12327" + { + "name" "RGLgg Highlander Challenger Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Challenger_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12328" + { + "name" "RGLgg Highlander Advanced Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12329" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12330" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12331" + { + "name" "RGLgg Highlander Advanced Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12332" + { + "name" "RGLgg Highlander Main Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12333" + { + "name" "RGLgg Highlander Main 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12334" + { + "name" "RGLgg Highlander Main 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12335" + { + "name" "RGLgg Highlander Main Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12336" + { + "name" "RGLgg Highlander Intermediate Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12337" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12338" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12339" + { + "name" "RGLgg Highlander Intermediate Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12340" + { + "name" "RGLgg Highlander Amateur Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12341" + { + "name" "RGLgg Highlander Newcomer Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12342" + { + "name" "RGLgg 6v6 Invite Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "12343" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "12344" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "12345" + { + "name" "RGLgg 6v6 Invite Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "12346" + { + "name" "RGLgg 6v6 Advanced Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12347" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12348" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12349" + { + "name" "RGLgg 6v6 Advanced Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12350" + { + "name" "RGLgg 6v6 Main Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12351" + { + "name" "RGLgg 6v6 Main 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12352" + { + "name" "RGLgg 6v6 Main 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12353" + { + "name" "RGLgg 6v6 Main Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12354" + { + "name" "RGLgg 6v6 Intermediate Champions Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12355" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12356" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12357" + { + "name" "RGLgg 6v6 Intermediate Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12358" + { + "name" "RGLgg 6v6 Amateur Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12359" + { + "name" "RGLgg 6v6 Newcomer Participant Season 5" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12360" + { + "name" "RGLgg 6v6 Invite Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "12361" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "12362" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "12363" + { + "name" "RGLgg 6v6 Invite Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "12364" + { + "name" "RGLgg 6v6 Advanced Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12365" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12366" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12367" + { + "name" "RGLgg 6v6 Advanced Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12368" + { + "name" "RGLgg 6v6 Main Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12369" + { + "name" "RGLgg 6v6 Main 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12370" + { + "name" "RGLgg 6v6 Main 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12371" + { + "name" "RGLgg 6v6 Main Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12372" + { + "name" "RGLgg 6v6 Intermediate Champions Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12373" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12374" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12375" + { + "name" "RGLgg 6v6 Intermediate Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12376" + { + "name" "RGLgg 6v6 Amateur Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12377" + { + "name" "RGLgg 6v6 Newcomer Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12378" + { + "name" "RGLgg Invite Champions Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "12379" + { + "name" "RGLgg Invite 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "12380" + { + "name" "RGLgg Invite 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "12381" + { + "name" "RGLgg Invite Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_invite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "12382" + { + "name" "RGLgg Advanced Champions Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "12383" + { + "name" "RGLgg Advanced 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "12384" + { + "name" "RGLgg Advanced 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "12385" + { + "name" "RGLgg Advanced Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_div1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "12386" + { + "name" "RGLgg Main Champions Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12387" + { + "name" "RGLgg Main 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12388" + { + "name" "RGLgg Main 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12389" + { + "name" "RGLgg Main Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Main_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12390" + { + "name" "RGLgg IM Champions Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12391" + { + "name" "RGLgg IM 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12392" + { + "name" "RGLgg IM 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12393" + { + "name" "RGLgg IM Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_IM_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12394" + { + "name" "RGLgg Amateur Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12395" + { + "name" "RGLgg Newcomer Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_medal/rglgg_rec" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_medal/rglgg_medal_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "12396" + { + "name" "RGLgg Highlander Experimental Maps Cup Summer 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_HighlanderCup_Exp" + "item_description" "#TF_TournamentMedal_Summer2021" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup_%s.mdl" + } + } + "12397" + { + "name" "RGLgg One Day Prolander Cup North America Autumn 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA_1" + "item_description" "#TF_TournamentMedal_Autumn2020" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2_%s.mdl" + } + } + "12398" + { + "name" "RGLgg One Day Prolander Cup North America Winter 2020" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup_NA_1" + "item_description" "#TF_TournamentMedal_Winter2020" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2_%s.mdl" + } + } + "12399" + { + "name" "UGC Ultiduo Steel 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12400" + { + "name" "UGC Ultiduo Steel 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12401" + { + "name" "UGC Ultiduo Steel 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12402" + { + "name" "UGC Ultiduo Steel Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12403" + { + "name" "UGC Ultiduo Platinum 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12404" + { + "name" "UGC Ultiduo Platinum 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12405" + { + "name" "UGC Ultiduo Platinum 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12406" + { + "name" "UGC Ultiduo Platinum Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12407" + { + "name" "UGC Ultiduo Steel 1st Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_1st" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12408" + { + "name" "UGC Ultiduo Steel 2nd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12409" + { + "name" "UGC Ultiduo Steel 3rd Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12410" + { + "name" "UGC Ultiduo Steel Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12411" + { + "name" "UGC Highlander Platinum 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12412" + { + "name" "UGC Highlander Platinum 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12413" + { + "name" "UGC Highlander Platinum 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12414" + { + "name" "UGC Highlander Platinum Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12415" + { + "name" "UGC Highlander Silver 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "12416" + { + "name" "UGC Highlander Silver 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "12417" + { + "name" "UGC Highlander Silver 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "12418" + { + "name" "UGC Highlander Silver Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "12419" + { + "name" "UGC Highlander Steel 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12420" + { + "name" "UGC Highlander Steel 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12421" + { + "name" "UGC Highlander Steel 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12422" + { + "name" "UGC Highlander Steel Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12423" + { + "name" "UGC 6vs6 Platinum 1st Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12424" + { + "name" "UGC 6vs6 Platinum 2nd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12425" + { + "name" "UGC 6vs6 Platinum 3rd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12426" + { + "name" "UGC 6vs6 Platinum Participant Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12427" + { + "name" "UGC 6vs6 Steel 1st Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12428" + { + "name" "UGC 6vs6 Steel 2nd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12429" + { + "name" "UGC 6vs6 Steel 3rd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12430" + { + "name" "UGC 6vs6 Steel Participant Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12431" + { + "name" "UGC 4vs4 Gold 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "12432" + { + "name" "UGC 4vs4 Gold 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "12433" + { + "name" "UGC 4vs4 Gold 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "12434" + { + "name" "UGC 4vs4 Gold Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "12435" + { + "name" "UGC 4vs4 Silver 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "12436" + { + "name" "UGC 4vs4 Silver 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "12437" + { + "name" "UGC 4vs4 Silver 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "12438" + { + "name" "UGC 4vs4 Silver Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "12439" + { + "name" "UGC 4vs4 Steel 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12440" + { + "name" "UGC 4vs4 Steel 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12441" + { + "name" "UGC 4vs4 Steel 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12442" + { + "name" "UGC 4vs4 Steel Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12443" + { + "name" "UGC Ultiduo Platinum 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12444" + { + "name" "UGC Ultiduo Platinum 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12445" + { + "name" "UGC Ultiduo Platinum 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12446" + { + "name" "UGC Ultiduo Platinum Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12447" + { + "name" "UGC Ultiduo Steel 1st Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_1st" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12448" + { + "name" "UGC Ultiduo Steel 2nd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12449" + { + "name" "UGC Ultiduo Steel 3rd Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12450" + { + "name" "UGC Ultiduo Steel Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12451" + { + "name" "UGC Highlander Platinum 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12452" + { + "name" "UGC Highlander Platinum 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12453" + { + "name" "UGC Highlander Platinum 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12454" + { + "name" "UGC Highlander Platinum Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12455" + { + "name" "UGC Highlander Silver 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_1st" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "12456" + { + "name" "UGC Highlander Silver 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "12457" + { + "name" "UGC Highlander Silver 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "12458" + { + "name" "UGC Highlander Silver Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "12459" + { + "name" "UGC Highlander Steel 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_1st" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12460" + { + "name" "UGC Highlander Steel 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12461" + { + "name" "UGC Highlander Steel 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12462" + { + "name" "UGC Highlander Steel Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCHL_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12463" + { + "name" "UGC 6vs6 Platinum 1st Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12464" + { + "name" "UGC 6vs6 Platinum 2nd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12465" + { + "name" "UGC 6vs6 Platinum 3rd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12466" + { + "name" "UGC 6vs6 Platinum Participant Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12467" + { + "name" "UGC 6vs6 Steel 1st Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_1st" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12468" + { + "name" "UGC 6vs6 Steel 2nd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12469" + { + "name" "UGC 6vs6 Steel 3rd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12470" + { + "name" "UGC 6vs6 Steel Participant Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC6v6_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12471" + { + "name" "UGC 4vs4 Gold 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "3" + } + } + "12472" + { + "name" "UGC 4vs4 Gold 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "3" + } + } + "12473" + { + "name" "UGC 4vs4 Gold 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "3" + } + } + "12474" + { + "name" "UGC 4vs4 Gold Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Gold_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_gold_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "3" + } + } + "12475" + { + "name" "UGC 4vs4 Silver 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "2" + } + } + "12476" + { + "name" "UGC 4vs4 Silver 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "2" + } + } + "12477" + { + "name" "UGC 4vs4 Silver 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "2" + } + } + "12478" + { + "name" "UGC 4vs4 Silver Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Silver_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_silver_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "2" + } + } + "12479" + { + "name" "UGC 4vs4 Steel 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12480" + { + "name" "UGC 4vs4 Steel 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12481" + { + "name" "UGC 4vs4 Steel 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12482" + { + "name" "UGC 4vs4 Steel Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGC4v4_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12483" + { + "name" "UGC Ultiduo Platinum 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "4" + } + } + "12484" + { + "name" "UGC Ultiduo Platinum 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "4" + } + } + "12485" + { + "name" "UGC Ultiduo Platinum 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "4" + } + } + "12486" + { + "name" "UGC Ultiduo Platinum Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Platinum_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_platinum_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "4" + } + } + "12487" + { + "name" "UGC Ultiduo Steel 1st Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_1st" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_01_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_01.mdl" + "visuals" + { + "skin" "1" + } + } + "12488" + { + "name" "UGC Ultiduo Steel 2nd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_2nd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_02_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_02.mdl" + "visuals" + { + "skin" "1" + } + } + "12489" + { + "name" "UGC Ultiduo Steel 3rd Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_3rd" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_rank_03_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_rank_03.mdl" + "visuals" + { + "skin" "1" + } + } + "12490" + { + "name" "UGC Ultiduo Steel Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UGCUltiduo_Steel_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ugc_medals/ugc_season_participation_steel_medal" + "model_player" "models/workshop/player/items/all_class/ugc_medals/ugc_participation.mdl" + "visuals" + { + "skin" "1" + } + } + "12491" + { + "name" "ozfortress Premier 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "12492" + { + "name" "ozfortress Premier 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "12493" + { + "name" "ozfortress Premier 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "12494" + { + "name" "ozfortress Premier Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "12495" + { + "name" "ozfortress Intermediate 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12496" + { + "name" "ozfortress Intermediate 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12497" + { + "name" "ozfortress Intermediate 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12498" + { + "name" "ozfortress Intermediate Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12499" + { + "name" "ozfortress Main 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12500" + { + "name" "ozfortress Main 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12501" + { + "name" "ozfortress Main 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12502" + { + "name" "ozfortress Main Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12503" + { + "name" "ozfortress Open 1st Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12504" + { + "name" "ozfortress Open 2nd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12505" + { + "name" "ozfortress Open 3rd Place Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12506" + { + "name" "ozfortress Open Participant Season 31" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season31" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12507" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "12508" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "12509" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "12510" + { + "name" "AsiaFortress Cup Division 1 Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12511" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "12512" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "12513" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "12514" + { + "name" "AsiaFortress Cup Division 2 Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12515" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "12516" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "12517" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "12518" + { + "name" "AsiaFortress Cup Division 3 Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12519" + { + "name" "AsiaFortress Cup Division 4 1st Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_1st" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "12520" + { + "name" "AsiaFortress Cup Division 4 2nd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_2nd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "12521" + { + "name" "AsiaFortress Cup Division 4 3rd Place Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_3rd" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "12522" + { + "name" "AsiaFortress Cup Division 4 Participant Season 17" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_Participant" + "item_description" "#TF_TournamentMedal_Season17" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12523" + { + "name" "Respawn League AUS/NZ Highlander Main 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12524" + { + "name" "Respawn League AUS/NZ Highlander Main 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12525" + { + "name" "Respawn League AUS/NZ Highlander Main 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12526" + { + "name" "Respawn League AUS/NZ Highlander Main Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12527" + { + "name" "Respawn League AUS/NZ Highlander Premier 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12528" + { + "name" "Respawn League AUS/NZ Highlander Premier 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12529" + { + "name" "Respawn League AUS/NZ Highlander Premier 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12530" + { + "name" "Respawn League AUS/NZ Highlander Premier Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12531" + { + "name" "Respawn League ASIA Highlander 1st Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12532" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12533" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12534" + { + "name" "Respawn League ASIA Highlander Participant Season 8" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12535" + { + "name" "Respawn League AUS/NZ Highlander Main 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12536" + { + "name" "Respawn League AUS/NZ Highlander Main 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12537" + { + "name" "Respawn League AUS/NZ Highlander Main 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12538" + { + "name" "Respawn League AUS/NZ Highlander Main Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12539" + { + "name" "Respawn League AUS/NZ Highlander Premier 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12540" + { + "name" "Respawn League AUS/NZ Highlander Premier 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12541" + { + "name" "Respawn League AUS/NZ Highlander Premier 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12542" + { + "name" "Respawn League AUS/NZ Highlander Premier Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12543" + { + "name" "Respawn League ASIA Highlander 1st Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12544" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12545" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12546" + { + "name" "Respawn League ASIA Highlander Participant Season 9" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12547" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12548" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12549" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12550" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12551" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12552" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12553" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12554" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12555" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12556" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12557" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12558" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12559" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12560" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12561" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12562" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12563" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12564" + { + "name" "ETF2L 6v6 Low Gold Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12565" + { + "name" "ETF2L 6v6 Low Silver Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12566" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12567" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12568" + { + "name" "ETF2L 6v6 Low Participation Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12569" + { + "name" "ETF2L 6v6 Open Gold Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12570" + { + "name" "ETF2L 6v6 Open Silver Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12571" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12572" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12573" + { + "name" "ETF2L 6v6 Open Participation Medal Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12574" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12575" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12576" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12577" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12578" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12579" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12580" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12581" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12582" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12583" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12584" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12585" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12586" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12587" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12588" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12589" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12590" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12591" + { + "name" "ETF2L 6v6 Low Gold Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12592" + { + "name" "ETF2L 6v6 Low Silver Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12593" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12594" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12595" + { + "name" "ETF2L 6v6 Low Participation Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12596" + { + "name" "ETF2L 6v6 Open Gold Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12597" + { + "name" "ETF2L 6v6 Open Silver Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12598" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12599" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12600" + { + "name" "ETF2L 6v6 Open Participation Medal Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12601" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12602" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12603" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12604" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12605" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12606" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12607" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12608" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12609" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12610" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12611" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12612" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12613" + { + "name" "ETF2L Highlander Division 3 Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12614" + { + "name" "ETF2L Highlander Division 3 Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12615" + { + "name" "ETF2L Highlander Division 3 Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12616" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12617" + { + "name" "ETF2L Highlander Division 4 Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12618" + { + "name" "ETF2L Highlander Division 4 Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12619" + { + "name" "ETF2L Highlander Division 4 Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12620" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12621" + { + "name" "ETF2L Highlander Division 5 Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12622" + { + "name" "ETF2L Highlander Division 5 Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12623" + { + "name" "ETF2L Highlander Division 5 Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12624" + { + "name" "ETF2L Highlander Division 5 Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12625" + { + "name" "ETF2L Highlander Open Gold Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12626" + { + "name" "ETF2L Highlander Open Silver Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12627" + { + "name" "ETF2L Highlander Open Bronze Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12628" + { + "name" "ETF2L Highlander Open Playoff Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12629" + { + "name" "ETF2L Highlander Open Participation Medal Season 23" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season23" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12630" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12631" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12632" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12633" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12634" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12635" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12636" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12637" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12638" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12639" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12640" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12641" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12642" + { + "name" "ETF2L Highlander Mid Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12643" + { + "name" "ETF2L Highlander Mid Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12644" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12645" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12646" + { + "name" "ETF2L Highlander Mid Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12647" + { + "name" "ETF2L Highlander Low Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12648" + { + "name" "ETF2L Highlander Low Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12649" + { + "name" "ETF2L Highlander Low Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12650" + { + "name" "ETF2L Highlander Low Playoff Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12651" + { + "name" "ETF2L Highlander Low Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12652" + { + "name" "ETF2L Highlander Open Gold Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "12653" + { + "name" "ETF2L Highlander Open Silver Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "12654" + { + "name" "ETF2L Highlander Open Bronze Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "12655" + { + "name" "ETF2L Highlander Open Playoff Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "12656" + { + "name" "ETF2L Highlander Open Participation Medal Season 24" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season24" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "12657" + { + "name" "Blapature Co. Backer 2021" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2021_Tier1" + "item_description" "#TF_TournamentMedal_Blapature2021_Tier1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1_%s.mdl" + } + } + "12658" + { + "name" "Blapature Co. Supporter 2021" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2021_Tier2" + "item_description" "#TF_TournamentMedal_Blapature2021_Tier2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2_%s.mdl" + } + } + "12659" + { + "name" "Blapature Co. Benefactor 2021" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2021_Tier3" + "item_description" "#TF_TournamentMedal_Blapature2021_Tier3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3_%s.mdl" + } + } + "12660" + { + "name" "Hexadecimal Horrors Macabre Memento 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Hexadecimal_Donator_Rainbow_2021" + "item_description" "#TF_TournamentMedal_Hexadecimal_Donator_Rainbow_2021_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow_gem.mdl" + } + } + } + } + "12661" + { + "name" "Hexadecimal Horrors Moonlit Magnate 2021" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Hexadecimal_Donator_2021" + "item_description" "#TF_TournamentMedal_Hexadecimal_Donator_2021_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_donator/robotarm_donator_2021" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8208496" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator_gem.mdl" + } + } + } + } + "12662" + { + "name" "ozfortress Winter League Division 1 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div1_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "12663" + { + "name" "ozfortress Winter League Division 1 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div1_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "12664" + { + "name" "ozfortress Winter League Division 1 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div1_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "12665" + { + "name" "ozfortress Winter League Division 1 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div1_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "12666" + { + "name" "ozfortress Winter League Division 2 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div2_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12667" + { + "name" "ozfortress Winter League Division 2 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div2_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12668" + { + "name" "ozfortress Winter League Division 2 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div2_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12669" + { + "name" "ozfortress Winter League Division 2 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div2_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12670" + { + "name" "ozfortress Winter League Division 3 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div3_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12671" + { + "name" "ozfortress Winter League Division 3 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div3_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12672" + { + "name" "ozfortress Winter League Division 3 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div3_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12673" + { + "name" "ozfortress Winter League Division 3 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div3_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12674" + { + "name" "ozfortress Winter League Division 4 1st Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div4_First_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12675" + { + "name" "ozfortress Winter League Division 4 2nd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div4_Second_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12676" + { + "name" "ozfortress Winter League Division 4 3rd Place 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div4_Third_Place" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12677" + { + "name" "ozfortress Winter League Division 4 Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Winter_Div4_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12678" + { + "name" "EBL Invite 1st Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "12679" + { + "name" "EBL Invite 2nd Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "12680" + { + "name" "EBL Invite 3rd Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "12681" + { + "name" "EBL Invite Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "12682" + { + "name" "EBL Main 1st Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "12683" + { + "name" "EBL Main 2nd Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "12684" + { + "name" "EBL Main 3rd Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "12685" + { + "name" "EBL Main Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Main_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "12686" + { + "name" "EBL Open 1st Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_1st/ebl_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_1st/ebl_1st_%s.mdl" + } + } + "12687" + { + "name" "EBL Open 2nd Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_2nd/ebl_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_2nd/ebl_2nd_%s.mdl" + } + } + "12688" + { + "name" "EBL Open 3rd Place Medal Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_3rd/ebl_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_3rd/ebl_3rd_%s.mdl" + } + } + "12689" + { + "name" "EBL Open Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_EBL_Open_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ebl_participant/ebl_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ebl_participant/ebl_participant_%s.mdl" + } + } + "12690" + { + "name" "MidNight Moon Gold 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Gold" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_gold/midnight_moon_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_gold/midnight_moon_gold_%s.mdl" + } + } + "12691" + { + "name" "MidNight Moon Silver 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Silver" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_silver/midnight_moon_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_silver/midnight_moon_silver_%s.mdl" + } + } + "12692" + { + "name" "MidNight Moon Bronze 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Bronze" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_bronze/midnight_moon_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_bronze/midnight_moon_bronze_%s.mdl" + } + } + "12693" + { + "name" "MidNight Moon Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_participant/midnight_moon_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_participant/midnight_moon_participant_%s.mdl" + } + } + "12694" + { + "name" "MidNight Moon Staff 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MidNight_Staff" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/midnight_moon_staff/midnight_moon_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/midnight_moon_staff/midnight_moon_staff_%s.mdl" + } + } + "12695" + { + "name" "Newbie Highlander Cup Gold Medal Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GHC_gold" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_gold/newbie_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_gold/newbie_highlander_gold_%s.mdl" + } + } + "12696" + { + "name" "Newbie Highlander Cup Silver Medal Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GHC_silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_silver/newbie_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_silver/newbie_highlander_silver_%s.mdl" + } + } + "12697" + { + "name" "Newbie Highlander Cup Bronze Medal Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GHC_bronze" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_bronze/newbie_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_bronze/newbie_highlander_bronze_%s.mdl" + } + } + "12698" + { + "name" "Newbie Highlander Cup Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GHC_participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_highlander_participant/newbie_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_highlander_participant/newbie_highlander_participant_%s.mdl" + } + } + "12699" + { + "name" "Newbie Prolander Cup Gold Medal Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GPC_gold" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_gold/newbie_prolander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_gold/newbie_prolander_gold_%s.mdl" + } + } + "12700" + { + "name" "Newbie Prolander Cup Silver Medal Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GPC_silver" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_silver/newbie_prolander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_silver/newbie_prolander_silver_%s.mdl" + } + } + "12701" + { + "name" "Newbie Prolander Cup Bronze Medal Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GPC_bronze" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_bronze/newbie_prolander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_bronze/newbie_prolander_bronze_%s.mdl" + } + } + "12702" + { + "name" "Newbie Prolander Cup Participant Season 6" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_GPC_participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/newbie_prolander_participant/newbie_prolander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/newbie_prolander_participant/newbie_prolander_participant_%s.mdl" + } + } + "12703" + { + "name" "Binary Blackout Golden Great 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Binary_Blackout_Gold" + "item_description" "#TF_TournamentMedal_Binary_Blackout_Gold_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_gold/canteen_crasher_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_gold/canteen_crasher_gold_%s.mdl" + } + } + "12704" + { + "name" "Binary Blackout Silver Soldier 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Binary_Blackout_Silver" + "item_description" "#TF_TournamentMedal_Binary_Blackout_Silver_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_silver/canteen_crasher_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_silver/canteen_crasher_silver_%s.mdl" + } + } + "12705" + { + "name" "Binary Blackout Bronze Beginner 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Binary_Blackout_Bronze" + "item_description" "#TF_TournamentMedal_Binary_Blackout_Bronze_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_bronze/canteen_crasher_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_bronze/canteen_crasher_bronze_%s.mdl" + } + } + "12706" + { + "name" "Binary Blackout Juvenile's Jade 2021" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Binary_Blackout_Jade" + "item_description" "#TF_TournamentMedal_Binary_Blackout_Jade_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_jade" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "97624" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + } + } + } + } + "12707" + { + "name" "Binary Blackout Marvellous Moonstone 2021" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Binary_Blackout_Moonstone" + "item_description" "#TF_TournamentMedal_Binary_Blackout_Moonstone_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_gold/robotarm_gold_moonstone" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "11921663" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12708" + { + "name" "Auspicious Automaton Assembler's Accolade" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Auspicious_Automaton_Accolade" + "item_description" "#TF_TournamentMedal_Auspicious_Automaton_Accolade_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mappers_vs_machines_medal/mappers_vs_machines_medal" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mappers_vs_machines_medal/mappers_vs_machines_medal_%s.mdl" + } + } + "12709" + { + "name" "Brazil Fortress Halloween Haunted Group First 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Haunted_First" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "1" + } + } + "12710" + { + "name" "Brazil Fortress Halloween Haunted Group Second 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Haunted_Second" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "2" + } + } + "12711" + { + "name" "Brazil Fortress Halloween Haunted Group Third 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Haunted_Third" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "3" + } + } + "12712" + { + "name" "Brazil Fortress Halloween Haunted Group Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Haunted_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "5" + } + } + "12713" + { + "name" "Brazil Fortress Halloween Ghastly Group First 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Ghastly_First" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "1" + } + } + "12714" + { + "name" "Brazil Fortress Halloween Ghastly Group Second 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Ghastly_Second" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "2" + } + } + "12715" + { + "name" "Brazil Fortress Halloween Ghastly Group Third 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Ghastly_Third" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "3" + } + } + "12716" + { + "name" "Brazil Fortress Halloween Ghastly Group Participant 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_BrazilFortress_Hwn_Ghastly_Participant" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/brasil_fortress_halloween/brasil_fortress_halloween_%s.mdl" + } + "propername" "1" + "visuals" + { + "skin" "5" + } + } + "12717" + { + "name" "Respawn League AUS/NZ BBall Main 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Main_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12718" + { + "name" "Respawn League AUS/NZ BBall Main 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Main_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12719" + { + "name" "Respawn League AUS/NZ BBall Main 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Main_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12720" + { + "name" "Respawn League AUS/NZ BBall Main Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Main_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12721" + { + "name" "Respawn League AUS/NZ BBall Intermediate 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Intermediate_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12722" + { + "name" "Respawn League AUS/NZ BBall Intermediate 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12723" + { + "name" "Respawn League AUS/NZ BBall Intermediate 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12724" + { + "name" "Respawn League AUS/NZ BBall Intermediate Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12725" + { + "name" "Respawn League AUS/NZ BBall Premier 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Premier_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12726" + { + "name" "Respawn League AUS/NZ BBall Premier 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12727" + { + "name" "Respawn League AUS/NZ BBall Premier 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12728" + { + "name" "Respawn League AUS/NZ BBall Premier Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_BBall_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12729" + { + "name" "Respawn League Asia BBall Main 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Main_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12730" + { + "name" "Respawn League Asia BBall Main 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Main_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12731" + { + "name" "Respawn League Asia BBall Main 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Main_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12732" + { + "name" "Respawn League Asia BBall Main Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Main_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12733" + { + "name" "Respawn League Asia BBall Premier 1st Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Premier_1st" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12734" + { + "name" "Respawn League Asia BBall Premier 2nd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Premier_2nd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12735" + { + "name" "Respawn League Asia BBall Premier 3rd Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Premier_3rd" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12736" + { + "name" "Respawn League Asia BBall Premier Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_BBall_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12737" + { + "name" "ozfortress Premier 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "12738" + { + "name" "ozfortress Premier 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "12739" + { + "name" "ozfortress Premier 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "12740" + { + "name" "ozfortress Premier Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "12741" + { + "name" "ozfortress High 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12742" + { + "name" "ozfortress High 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12743" + { + "name" "ozfortress High 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12744" + { + "name" "ozfortress High Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12745" + { + "name" "ozfortress Intermediate 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12746" + { + "name" "ozfortress Intermediate 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12747" + { + "name" "ozfortress Intermediate 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12748" + { + "name" "ozfortress Intermediate Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12749" + { + "name" "ozfortress Main 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12750" + { + "name" "ozfortress Main 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12751" + { + "name" "ozfortress Main 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12752" + { + "name" "ozfortress Main Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12753" + { + "name" "ozfortress Open 1st Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12754" + { + "name" "ozfortress Open 2nd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12755" + { + "name" "ozfortress Open 3rd Place Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12756" + { + "name" "ozfortress Open Participant Season 32" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season32" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12757" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "12758" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "12759" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "12760" + { + "name" "AsiaFortress Cup Division 1 Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12761" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "12762" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "12763" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "12764" + { + "name" "AsiaFortress Cup Division 2 Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12765" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "12766" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "12767" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "12768" + { + "name" "AsiaFortress Cup Division 3 Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12769" + { + "name" "AsiaFortress Cup Division 4 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "12770" + { + "name" "AsiaFortress Cup Division 4 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "12771" + { + "name" "AsiaFortress Cup Division 4 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "12772" + { + "name" "AsiaFortress Cup Division 4 Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div4_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12773" + { + "name" "South American Vanilla Fortress Highlander Invite First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12774" + { + "name" "South American Vanilla Fortress Highlander Invite Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12775" + { + "name" "South American Vanilla Fortress Highlander Invite Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12776" + { + "name" "South American Vanilla Fortress Highlander Invite Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12777" + { + "name" "South American Vanilla Fortress Highlander Intermediate First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12778" + { + "name" "South American Vanilla Fortress Highlander Intermediate Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12779" + { + "name" "South American Vanilla Fortress Highlander Intermediate Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12780" + { + "name" "South American Vanilla Fortress Highlander Intermediate Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12781" + { + "name" "South American Vanilla Fortress Highlander Open First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_First" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12782" + { + "name" "South American Vanilla Fortress Highlander Open Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Second" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12783" + { + "name" "South American Vanilla Fortress Highlander Open Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Third" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12784" + { + "name" "South American Vanilla Fortress Highlander Open Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12785" + { + "name" "South American Vanilla Fortress Highlander Supporter Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Supporter" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_supporter/sa_vanilla_supporter_%s.mdl" + } + } + "12786" + { + "name" "Australian Hightower Highjinx Royalty 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Royalty" + "item_description" "#TF_TournamentMedal_AHH_Royalty2022" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_champion/ahh_champion" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_champion/ahh_champion_%s.mdl" + } + } + "12787" + { + "name" "Australian Hightower Highjinx Participant 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Participant" + "item_description" "#TF_TournamentMedal_AHH_Participant2022" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_participant/ahh_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_participant/ahh_participant_%s.mdl" + } + } + "12788" + { + "name" "Australian Hightower Highjinx Donor 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Donor" + "item_description" "#TF_TournamentMedal_AHH_Donor2022" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_donor/ahh_donor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_donor/ahh_donor_%s.mdl" + } + } + "12789" + { + "name" "Australian Hightower Highjinx Helper 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_AHH_Helper" + "item_description" "#TF_TournamentMedal_AHH_Helper2022" + "image_inventory" "backpack/workshop/player/items/all_class/ahh_helper/ahh_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ahh_helper/ahh_helper_%s.mdl" + } + } + "12790" + { + "name" "TF2Maps Charitable Heart 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsCharitableHeart2021" + "item_description" "#TF2MapsCharitableHeart2021_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart_2/72hr_jamheart_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12791" + { + "name" "TF2Maps 72hr TF2Jam Participant 2021" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_jimijam" + "item_description" "#TF_TournamentMedal_2021" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12792" + { + "name" "LBTF2 6v6 Elite 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12793" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12794" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12795" + { + "name" "LBTF2 6v6 Elite Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12796" + { + "name" "LBTF2 6v6 Central 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12797" + { + "name" "LBTF2 6v6 Central 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12798" + { + "name" "LBTF2 6v6 Central 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12799" + { + "name" "LBTF2 6v6 Central Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12800" + { + "name" "LBTF2 6v6 Access 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12801" + { + "name" "LBTF2 6v6 Access 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12802" + { + "name" "LBTF2 6v6 Access 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12803" + { + "name" "LBTF2 6v6 Access Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12804" + { + "name" "LBTF2 6v6 Open 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12805" + { + "name" "LBTF2 6v6 Open 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12806" + { + "name" "LBTF2 6v6 Open 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12807" + { + "name" "LBTF2 6v6 Open Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12808" + { + "name" "LBTF2 6v6 Beginner 1st Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Beginner_1st" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "12809" + { + "name" "LBTF2 6v6 Beginner 2nd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Beginner_2nd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "12810" + { + "name" "LBTF2 6v6 Beginner 3rd Place Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Beginner_3rd" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "12811" + { + "name" "LBTF2 6v6 Beginner Participant Season 18" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Beginner_Participant" + "item_description" "#TF_TournamentMedal_Season18" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "12812" + { + "name" "Classic MGE Cup Advanced Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold_%s.mdl" + } + } + "12813" + { + "name" "Classic MGE Cup Advanced Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver_%s.mdl" + } + } + "12814" + { + "name" "Classic MGE Cup Advanced Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze_%s.mdl" + } + } + "12815" + { + "name" "Classic MGE Cup Advanced Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant_%s.mdl" + } + } + "12816" + { + "name" "Classic MGE Cup Open Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_gold/mge_cup_gold_%s.mdl" + } + } + "12817" + { + "name" "Classic MGE Cup Open Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_silver/mge_cup_silver_%s.mdl" + } + } + "12818" + { + "name" "Classic MGE Cup Open Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_bronze/mge_cup_bronze_%s.mdl" + } + } + "12819" + { + "name" "Classic MGE Cup Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_participant/mge_cup_participant_%s.mdl" + } + } + "12820" + { + "name" "Classic MGE Cup Helper Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_MGE_Cup_Helper" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mge_cup_helper/mge_cup_helper_%s.mdl" + } + } + "12821" + { + "name" "CLTF2 6v6 Gold Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "12822" + { + "name" "CLTF2 6v6 Silver Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "12823" + { + "name" "CLTF2 6v6 Bronze Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "12824" + { + "name" "CLTF2 6v6 Participant Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "12825" + { + "name" "CLTF2 6v6 Staff Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_6v6_Staff" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter_%s.mdl" + } + } + "12826" + { + "name" "Peculiar Pandemonium Tungsten Robot Of Leaded Lunacy 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_PeculiarPandemonium_Tungsten2022" + "item_description" "#TF_TournamentMedal_PeculiarPandemonium_Tungsten2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/peculiar_pandemonium/tungsten" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16759549" + } + } + } + "12827" + { + "name" "Peculiar Pandemonium Luxurious Lepidolite 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_PeculiarPandemonium_Lepidolite2022" + "item_description" "#TF_TournamentMedal_PeculiarPandemonium_Lepidolite2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/peculiar_pandemonium/lepidolite" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver_gem.mdl" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "14328296" + } + } + } + "12828" + { + "name" "Peculiar Pandemonium Mesmerizing Morganite 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_PeculiarPandemonium_Morganite2022" + "item_description" "#TF_TournamentMedal_PeculiarPandemonium_Morganite2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/peculiar_pandemonium/morganite" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16751552" + } + } + } + "12829" + { + "name" "Peculiar Pandemonium Pink Diamond 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_PeculiarPandemonium_Diamond2022" + "item_description" "#TF_TournamentMedal_PeculiarPandemonium_Diamond2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/peculiar_pandemonium/peculiar_diamond" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16752612" + } + } + } + "12830" + { + "name" "Streamer Cup Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_gold/streamer_cup_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_gold/streamer_cup_gold_%s.mdl" + } + } + "12831" + { + "name" "Streamer Cup Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_silver/streamer_cup_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_silver/streamer_cup_silver_%s.mdl" + } + } + "12832" + { + "name" "Streamer Cup Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_bronze/streamer_cup_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_bronze/streamer_cup_bronze_%s.mdl" + } + } + "12833" + { + "name" "Streamer Cup Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_participant/streamer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_participant/streamer_cup_participant_%s.mdl" + } + } + "12834" + { + "name" "Streamer Cup Staff" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Streamer_Staff" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/streamer_cup_staff/streamer_cup_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/streamer_cup_staff/streamer_cup_staff_%s.mdl" + } + } + "12835" + { + "name" "CappingTV Summer Brawl 1st Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_1st" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "12836" + { + "name" "CappingTV Summer Brawl 2nd Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_2nd" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "12837" + { + "name" "CappingTV Summer Brawl 3rd Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_3rd" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "12838" + { + "name" "CappingTV Summer Brawl Participant 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_Participant" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "12839" + { + "name" "ozfortress Premier 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "12840" + { + "name" "ozfortress Premier 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "12841" + { + "name" "ozfortress Premier 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "12842" + { + "name" "ozfortress Premier Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "12843" + { + "name" "ozfortress Intermediate 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12844" + { + "name" "ozfortress Intermediate 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12845" + { + "name" "ozfortress Intermediate 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12846" + { + "name" "ozfortress Intermediate Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12847" + { + "name" "ozfortress Main 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12848" + { + "name" "ozfortress Main 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12849" + { + "name" "ozfortress Main 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12850" + { + "name" "ozfortress Main Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12851" + { + "name" "ozfortress Open 1st Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12852" + { + "name" "ozfortress Open 2nd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12853" + { + "name" "ozfortress Open 3rd Place Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12854" + { + "name" "ozfortress Open Participant Season 33" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season33" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12855" + { + "name" "ozfortress Premier 1st Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "12856" + { + "name" "ozfortress Premier 2nd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "12857" + { + "name" "ozfortress Premier 3rd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "12858" + { + "name" "ozfortress Premier Participant Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "12859" + { + "name" "ozfortress Intermediate 1st Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12860" + { + "name" "ozfortress Intermediate 2nd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12861" + { + "name" "ozfortress Intermediate 3rd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12862" + { + "name" "ozfortress Intermediate Participant Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12863" + { + "name" "ozfortress Main 1st Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12864" + { + "name" "ozfortress Main 2nd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12865" + { + "name" "ozfortress Main 3rd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12866" + { + "name" "ozfortress Main Participant Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12867" + { + "name" "ozfortress Open 1st Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "12868" + { + "name" "ozfortress Open 2nd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "12869" + { + "name" "ozfortress Open 3rd Place Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "12870" + { + "name" "ozfortress Open Participant Season 34" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season34" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "12871" + { + "name" "Respawn League AUS/NZ Highlander 1st Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12872" + { + "name" "Respawn League AUS/NZ Highlander 2nd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12873" + { + "name" "Respawn League AUS/NZ Highlander 3rd Place Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12874" + { + "name" "Respawn League AUS/NZ Highlander Participant Season 11" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_AusNz_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12875" + { + "name" "Respawn League ASIA Highlander 1st Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_1st" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_1st/respawn_highlander_1st_%s.mdl" + } + } + "12876" + { + "name" "Respawn League ASIA Highlander 2nd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_2nd/respawn_highlander_2nd_%s.mdl" + } + } + "12877" + { + "name" "Respawn League ASIA Highlander 3rd Place Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_3rd/respawn_highlander_3rd_%s.mdl" + } + } + "12878" + { + "name" "Respawn League ASIA Highlander Participant Season 10" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Respawn_Asia_Highlander_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/respawn_highlander_participant/respawn_highlander_participant_%s.mdl" + } + } + "12879" + { + "name" "TFCL Summer Cup 1st Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_SummerCup_Gold" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_gold/tfcl_medal_gold_%s.mdl" + } + } + "12880" + { + "name" "TFCL Summer Cup 2nd Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_SummerCup_Silver" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_silver/tfcl_medal_silver_%s.mdl" + } + } + "12881" + { + "name" "TFCL Summer Cup 3rd Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_SummerCup_Bronze" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_bronze/tfcl_medal_bronze_%s.mdl" + } + } + "12882" + { + "name" "TFCL Summer Cup Participant 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFCL_SummerCup_Participant" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_participant/tfcl_medal_participant_%s.mdl" + } + } + "12883" + { + "name" "TFCL Helper" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_TFCL_Helper" + "item_description" "#TF_TournamentMedal_TFCL_Helper_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfcl_medal_alpha/tfcl_medal_alpha_%s.mdl" + } + } + "12884" + { + "name" "Rewired Rampage Reverse-Engineered Ruby 2022" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RewiredRampage_Ruby_2022" + "item_description" "#TF_TournamentMedal_RewiredRampage_Ruby_2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewired_rampage/rewired_rampage_ruby" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2996680" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "13790775" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator_gem.mdl" + } + } + } + } + "12885" + { + "name" "Rewired Rampage Quarrelous Quartz 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RewiredRampage_Quartz_2022" + "item_description" "#TF_TournamentMedal_RewiredRampage_Quartz_2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewired_rampage/rewired_rampage_quartz" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16569344" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "220092" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + } + } + } + } + "12886" + { + "name" "Rewired Rampage Perilous Peridot 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RewiredRampage_Peridot_2022" + "item_description" "#TF_TournamentMedal_RewiredRampage_Peridot_2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewired_rampage/rewired_rampage_peridot" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16569344" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "220092" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12887" + { + "name" "Rewired Rampage Sophisticated Sapphire 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RewiredRampage_Sapphire_2022" + "item_description" "#TF_TournamentMedal_RewiredRampage_Sapphire_2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewired_rampage/rewired_rampage_sapphire" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16569344" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "220092" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + } + } + } + } + "12888" + { + "name" "Rewired Rampage Gem of Generosity 2022" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_RewiredRampage_Generosity_2022" + "item_description" "#TF_TournamentMedal_RewiredRampage_Generosity_2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/rewired_rampage/rewired_rampage_generosity" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16569344" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "220092" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + } + } + } + "12889" + { + "name" "RGLgg Highlander Invite Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "12890" + { + "name" "RGLgg Highlander Invite 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "12891" + { + "name" "RGLgg Highlander Invite 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "12892" + { + "name" "RGLgg Highlander Invite Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "12893" + { + "name" "RGLgg Highlander Advanced Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12894" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12895" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12896" + { + "name" "RGLgg Highlander Advanced Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12897" + { + "name" "RGLgg Highlander Main Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12898" + { + "name" "RGLgg Highlander Main 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12899" + { + "name" "RGLgg Highlander Main 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12900" + { + "name" "RGLgg Highlander Main Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12901" + { + "name" "RGLgg Highlander Intermediate Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12902" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12903" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12904" + { + "name" "RGLgg Highlander Intermediate Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12905" + { + "name" "RGLgg Highlander Amateur Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12906" + { + "name" "RGLgg Highlander Newcomer Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12907" + { + "name" "RGLgg 6v6 Invite Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "12908" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "12909" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "12910" + { + "name" "RGLgg 6v6 Invite Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "12911" + { + "name" "RGLgg 6v6 Advanced Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12912" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12913" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12914" + { + "name" "RGLgg 6v6 Advanced Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "12915" + { + "name" "RGLgg 6v6 Main Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12916" + { + "name" "RGLgg 6v6 Main 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12917" + { + "name" "RGLgg 6v6 Main 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12918" + { + "name" "RGLgg 6v6 Main Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "12919" + { + "name" "RGLgg 6v6 Intermediate Champions Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12920" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12921" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12922" + { + "name" "RGLgg 6v6 Intermediate Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "12923" + { + "name" "RGLgg 6v6 Amateur Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12924" + { + "name" "RGLgg 6v6 Newcomer Participant Season 7" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "12925" + { + "name" "South American Vanilla Fortress 6v6 Elite First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Elite_First" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12926" + { + "name" "South American Vanilla Fortress 6v6 Elite Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Elite_Second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12927" + { + "name" "South American Vanilla Fortress 6v6 Elite Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Elite_Third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12928" + { + "name" "South American Vanilla Fortress 6v6 Elite Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12929" + { + "name" "South American Vanilla Fortress 6v6 Central First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Central_First" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12930" + { + "name" "South American Vanilla Fortress 6v6 Central Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Central_Second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12931" + { + "name" "South American Vanilla Fortress 6v6 Central Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Central_Third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12932" + { + "name" "South American Vanilla Fortress 6v6 Central Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12933" + { + "name" "South American Vanilla Fortress 6v6 Access First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Access_First" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12934" + { + "name" "South American Vanilla Fortress 6v6 Access Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Access_Second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12935" + { + "name" "South American Vanilla Fortress 6v6 Access Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Access_Third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12936" + { + "name" "South American Vanilla Fortress 6v6 Access Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12937" + { + "name" "South American Vanilla Fortress 6v6 Open First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_First" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12938" + { + "name" "South American Vanilla Fortress 6v6 Open Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Second" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12939" + { + "name" "South American Vanilla Fortress 6v6 Open Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Third" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12940" + { + "name" "South American Vanilla Fortress 6v6 Open Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_6v6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12941" + { + "name" "South American Vanilla Fortress Highlander Elite First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Elite_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12942" + { + "name" "South American Vanilla Fortress Highlander Elite Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Elite_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12943" + { + "name" "South American Vanilla Fortress Highlander Elite Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Elite_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12944" + { + "name" "South American Vanilla Fortress Highlander Elite Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12945" + { + "name" "South American Vanilla Fortress Highlander Central First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Central_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12946" + { + "name" "South American Vanilla Fortress Highlander Central Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Central_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12947" + { + "name" "South American Vanilla Fortress Highlander Central Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Central_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12948" + { + "name" "South American Vanilla Fortress Highlander Central Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Central_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12949" + { + "name" "South American Vanilla Fortress Highlander Access First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Access_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12950" + { + "name" "South American Vanilla Fortress Highlander Access Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Access_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12951" + { + "name" "South American Vanilla Fortress Highlander Access Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Access_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12952" + { + "name" "South American Vanilla Fortress Highlander Access Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Access_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12953" + { + "name" "South American Vanilla Fortress Highlander Open First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_First" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_first/sa_vanilla_first_%s.mdl" + } + } + "12954" + { + "name" "South American Vanilla Fortress Highlander Open Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Second" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_second/sa_vanilla_second_%s.mdl" + } + } + "12955" + { + "name" "South American Vanilla Fortress Highlander Open Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Third" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_third/sa_vanilla_third_%s.mdl" + } + } + "12956" + { + "name" "South American Vanilla Fortress Highlander Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_SA_Vanilla_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/sa_vanilla_participant/sa_vanilla_participant_%s.mdl" + } + } + "12957" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "12958" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "12959" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "12960" + { + "name" "AsiaFortress Cup Division 1 Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12961" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "12962" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "12963" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "12964" + { + "name" "AsiaFortress Cup Division 2 Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12965" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "12966" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "12967" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "12968" + { + "name" "AsiaFortress Cup Division 3 Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "12969" + { + "name" "ozfortress Highlander Premier First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "12970" + { + "name" "ozfortress Highlander Premier Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "12971" + { + "name" "ozfortress Highlander Premier Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "12972" + { + "name" "ozfortress Highlander Premier Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "12973" + { + "name" "ozfortress Highlander Intermediate First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "12974" + { + "name" "ozfortress Highlander Intermediate Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "12975" + { + "name" "ozfortress Highlander Intermediate Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "12976" + { + "name" "ozfortress Highlander Intermediate Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "12977" + { + "name" "ozfortress Highlander Open First Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "12978" + { + "name" "ozfortress Highlander Open Second Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "12979" + { + "name" "ozfortress Highlander Open Third Place Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "12980" + { + "name" "ozfortress Highlander Open Participant Season 1" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season1" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "12981" + { + "name" "LAN Downunder 1st Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Champion" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "12982" + { + "name" "LAN Downunder 2nd Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_2nd" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "12983" + { + "name" "LAN Downunder 3rd Place 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_3rd" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "12984" + { + "name" "LAN Downunder Participant 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Participant" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "12985" + { + "name" "Anniversary Annihilation Participation Trophy 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Anniversary_Annihilation_Participation" + "item_description" "#TF_TournamentMedal_Anniversary_Annihilation_Participation_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant_%s.mdl" + } + } + "12986" + { + "name" "Anniversary Annihilation Galvanized Goblet 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Anniversary_Annihilation_Galvanized" + "item_description" "#TF_TournamentMedal_Anniversary_Annihilation_Galvanized_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_iron/canteen_crasher_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_iron/canteen_crasher_iron_%s.mdl" + } + } + "12987" + { + "name" "Anniversary Annihilation Soul-Binding Star 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Anniversary_Annihilation_SoulBinding" + "item_description" "#TF_TournamentMedal_Anniversary_Annihilation_SoulBinding_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/anniversary_annihilation/star" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2626872" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator_gem.mdl" + } + } + } + } + "12988" + { + "name" "Anniversary Annihilation Caregiving Corundum 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Anniversary_Annihilation_Caregiving" + "item_description" "#TF_TournamentMedal_Anniversary_Annihilation_Caregiving_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/anniversary_annihilation/corundum" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "5636107" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "617" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + } + } + } + } + "12989" + { + "name" "Anniversary Annihilation Heroistic Heart 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Anniversary_Annihilation_Heroistic" + "item_description" "#TF_TournamentMedal_Anniversary_Annihilation_Heroistic_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/anniversary_annihilation/heart" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "7536721" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "27520" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_donator/robotarm_donator_gem.mdl" + } + } + } + } + "12990" + { + "name" "Anniversary Annihilation Dastardly Diamond 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Anniversary_Annihilation_Dastardly" + "item_description" "#TF_TournamentMedal_Anniversary_Annihilation_Dastardly_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/anniversary_annihilation/diamond" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "9051421" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "33159" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + } + } + } + "12991" + { + "name" "TF2Maps 72hr TF2Jam Summer Participant 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_summer_jimijam" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "12992" + { + "name" "TF2Maps Ray of Sunshine 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsRayOfSunshine2022" + "item_description" "#TF2MapsRayOfSunshine2022_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s1/72hr_summerjam_2018_s1_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_summerjam_2018_s2/72hr_summerjam_2018_s2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + } + } + } + } + "12993" + { + "name" "Blapature Co. Backer 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2022_Tier1" + "item_description" "#TF_TournamentMedal_Blapature2022_Tier1_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier1/blapature_2018_tier1_%s.mdl" + } + } + "12994" + { + "name" "Blapature Co. Supporter 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2022_Tier2" + "item_description" "#TF_TournamentMedal_Blapature2022_Tier2_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier2/blapature_2018_tier2_%s.mdl" + } + } + "12995" + { + "name" "Blapature Co. Benefactor 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2022_Tier3" + "item_description" "#TF_TournamentMedal_Blapature2022_Tier3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/blapature_2018_tier3/blapature_2018_tier3_%s.mdl" + } + } + "12996" + { + "name" "Blapature Co. Advocator 2022" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Blapature2022_Tier4" + "item_description" "#TF_TournamentMedal_Blapature2022_Tier4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tf_medal_blapature/tf_medal_blapature" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tf_medal_blapature/tf_medal_blapature_%s.mdl" + } + } + "12997" + { + "name" "Insomnia 69 First Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia69_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_gold/iseries_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_gold/iseries_gold_%s.mdl" + } + } + "12998" + { + "name" "Insomnia 69 Second Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia69_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_silver/iseries_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_silver/iseries_silver_%s.mdl" + } + } + "12999" + { + "name" "Insomnia 69 Third Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia69_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_bronze/iseries_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_bronze/iseries_bronze_%s.mdl" + } + } + "13000" + { + "name" "Insomnia 69 Participant Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia69_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_participant/iseries_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_participant/iseries_participant_%s.mdl" + } + } + "13001" + { + "name" "Insomnia 69 Staff Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia69_Staff" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_contributor/iseries_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_contributor/iseries_contributor_%s.mdl" + } + } + "13002" + { + "name" "DreamHack Community Clash First Place Spring 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Gold" + "item_description" "#TF_TournamentMedal_Spring2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold_%s.mdl" + } + } + "13003" + { + "name" "DreamHack Community Clash Second Place Spring 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Silver" + "item_description" "#TF_TournamentMedal_Spring2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver_%s.mdl" + } + } + "13004" + { + "name" "DreamHack Community Clash Third Place Spring 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Bronze" + "item_description" "#TF_TournamentMedal_Spring2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze_%s.mdl" + } + } + "13005" + { + "name" "DreamHack Community Clash Participant Spring 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Participant" + "item_description" "#TF_TournamentMedal_Spring2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant_%s.mdl" + } + } + "13006" + { + "name" "DreamHack Community Clash Staff Spring 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Staff" + "item_description" "#TF_TournamentMedal_Spring2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor_%s.mdl" + } + } + "13007" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 3 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "13008" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 3 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "13009" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 3 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "13010" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "13011" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 3 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "13012" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 3 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "13013" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 3 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "13014" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "13015" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 3 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "13016" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 3 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "13017" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 3 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "13018" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 3 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "13019" + { + "name" "TFArena 6v6 Arena Mode Cup 3 Helper" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Helper" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Helper_Cup3_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_helper/tfarena_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_helper/tfarena_helper_%s.mdl" + } + } + "13020" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13021" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13022" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13023" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13024" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13025" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13026" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13027" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13028" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13029" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13030" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13031" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13032" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13033" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13034" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13035" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13036" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13037" + { + "name" "ETF2L 6v6 Low Gold Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13038" + { + "name" "ETF2L 6v6 Low Silver Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13039" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13040" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13041" + { + "name" "ETF2L 6v6 Low Participation Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13042" + { + "name" "ETF2L 6v6 Open Gold Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13043" + { + "name" "ETF2L 6v6 Open Silver Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13044" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13045" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13046" + { + "name" "ETF2L 6v6 Open Participation Medal Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13047" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13048" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13049" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13050" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13051" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13052" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13053" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13054" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13055" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13056" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13057" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13058" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13059" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13060" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13061" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13062" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13063" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13064" + { + "name" "ETF2L 6v6 Low Gold Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13065" + { + "name" "ETF2L 6v6 Low Silver Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13066" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13067" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13068" + { + "name" "ETF2L 6v6 Low Participation Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13069" + { + "name" "ETF2L 6v6 Open Gold Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13070" + { + "name" "ETF2L 6v6 Open Silver Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13071" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13072" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13073" + { + "name" "ETF2L 6v6 Open Participation Medal Season 41" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season41" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13074" + { + "name" "ETF2L 6v6 Premiership Gold Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13075" + { + "name" "ETF2L 6v6 Premiership Silver Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13076" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13077" + { + "name" "ETF2L 6v6 Premiership Participation Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13078" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13079" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13080" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13081" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13082" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13083" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13084" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13085" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13086" + { + "name" "ETF2L 6v6 Mid Gold Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13087" + { + "name" "ETF2L 6v6 Mid Silver Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13088" + { + "name" "ETF2L 6v6 Mid Bronze Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13089" + { + "name" "ETF2L 6v6 Mid Playoff Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13090" + { + "name" "ETF2L 6v6 Mid Participation Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13091" + { + "name" "ETF2L 6v6 Low Gold Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13092" + { + "name" "ETF2L 6v6 Low Silver Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13093" + { + "name" "ETF2L 6v6 Low Bronze Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13094" + { + "name" "ETF2L 6v6 Low Playoff Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13095" + { + "name" "ETF2L 6v6 Low Participation Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13096" + { + "name" "ETF2L 6v6 Open Gold Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13097" + { + "name" "ETF2L 6v6 Open Silver Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13098" + { + "name" "ETF2L 6v6 Open Bronze Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13099" + { + "name" "ETF2L 6v6 Open Playoff Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13100" + { + "name" "ETF2L 6v6 Open Participation Medal Season 42" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Season42" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13101" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13102" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13103" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13104" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13105" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13106" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13107" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13108" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13109" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13110" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13111" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13112" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13113" + { + "name" "ETF2L Highlander Division 3 Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13114" + { + "name" "ETF2L Highlander Division 3 Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13115" + { + "name" "ETF2L Highlander Division 3 Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13116" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13117" + { + "name" "ETF2L Highlander Division 4 Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13118" + { + "name" "ETF2L Highlander Division 4 Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13119" + { + "name" "ETF2L Highlander Division 4 Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13120" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13121" + { + "name" "ETF2L Highlander Low Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13122" + { + "name" "ETF2L Highlander Low Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13123" + { + "name" "ETF2L Highlander Low Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13124" + { + "name" "ETF2L Highlander Low Playoff Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Playoff" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13125" + { + "name" "ETF2L Highlander Low Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13126" + { + "name" "ETF2L Highlander Open Gold Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13127" + { + "name" "ETF2L Highlander Open Silver Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13128" + { + "name" "ETF2L Highlander Open Bronze Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13129" + { + "name" "ETF2L Highlander Open Playoff Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13130" + { + "name" "ETF2L Highlander Open Participation Medal Season 25" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season25" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13131" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13132" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13133" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13134" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13135" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13136" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13137" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13138" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13139" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13140" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13141" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13142" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13143" + { + "name" "ETF2L Highlander Division 3 Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13144" + { + "name" "ETF2L Highlander Division 3 Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13145" + { + "name" "ETF2L Highlander Division 3 Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13146" + { + "name" "ETF2L Highlander Division 3 Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13147" + { + "name" "ETF2L Highlander Division 4 Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13148" + { + "name" "ETF2L Highlander Division 4 Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13149" + { + "name" "ETF2L Highlander Division 4 Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13150" + { + "name" "ETF2L Highlander Division 4 Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13151" + { + "name" "ETF2L Highlander Open Gold Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13152" + { + "name" "ETF2L Highlander Open Silver Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13153" + { + "name" "ETF2L Highlander Open Bronze Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13154" + { + "name" "ETF2L Highlander Open Playoff Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13155" + { + "name" "ETF2L Highlander Open Participation Medal Season 26" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season26" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13156" + { + "name" "ETF2L Highlander Premiership Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13157" + { + "name" "ETF2L Highlander Premiership Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13158" + { + "name" "ETF2L Highlander Premiership Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13159" + { + "name" "ETF2L Highlander Premiership Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13160" + { + "name" "ETF2L Highlander Division 1 Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13161" + { + "name" "ETF2L Highlander Division 1 Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13162" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13163" + { + "name" "ETF2L Highlander Division 1 Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13164" + { + "name" "ETF2L Highlander Division 2 Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13165" + { + "name" "ETF2L Highlander Division 2 Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13166" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13167" + { + "name" "ETF2L Highlander Division 2 Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13168" + { + "name" "ETF2L Highlander Mid Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13169" + { + "name" "ETF2L Highlander Mid Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13170" + { + "name" "ETF2L Highlander Mid Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13171" + { + "name" "ETF2L Highlander Mid Playoff Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13172" + { + "name" "ETF2L Highlander Mid Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13173" + { + "name" "ETF2L Highlander Open Gold Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13174" + { + "name" "ETF2L Highlander Open Silver Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13175" + { + "name" "ETF2L Highlander Open Bronze Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13176" + { + "name" "ETF2L Highlander Open Playoff Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13177" + { + "name" "ETF2L Highlander Open Participation Medal Season 27" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Season27" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13178" + { + "name" "RGLgg Highlander Invite Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13179" + { + "name" "RGLgg Highlander Invite 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13180" + { + "name" "RGLgg Highlander Invite 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13181" + { + "name" "RGLgg Highlander Invite Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13182" + { + "name" "RGLgg Highlander Advanced Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13183" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13184" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13185" + { + "name" "RGLgg Highlander Advanced Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13186" + { + "name" "RGLgg Highlander Main Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13187" + { + "name" "RGLgg Highlander Main 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13188" + { + "name" "RGLgg Highlander Main 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13189" + { + "name" "RGLgg Highlander Main Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13190" + { + "name" "RGLgg Highlander Intermediate Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13191" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13192" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13193" + { + "name" "RGLgg Highlander Intermediate Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13194" + { + "name" "RGLgg Highlander Amateur Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13195" + { + "name" "RGLgg Highlander Newcomer Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13196" + { + "name" "RGLgg 6v6 Invite Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13197" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13198" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13199" + { + "name" "RGLgg 6v6 Invite Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13200" + { + "name" "RGLgg 6v6 Advanced Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13201" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13202" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13203" + { + "name" "RGLgg 6v6 Advanced Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13204" + { + "name" "RGLgg 6v6 Main Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13205" + { + "name" "RGLgg 6v6 Main 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13206" + { + "name" "RGLgg 6v6 Main 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13207" + { + "name" "RGLgg 6v6 Main Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13208" + { + "name" "RGLgg 6v6 Intermediate Champions Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13209" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13210" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13211" + { + "name" "RGLgg 6v6 Intermediate Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13212" + { + "name" "RGLgg 6v6 Amateur Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13213" + { + "name" "RGLgg 6v6 Newcomer Participant Season 8" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season8" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13214" + { + "name" "RGLgg One Day Prolander Cup Winter 2021" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_OneDayCup" + "item_description" "#TF_TournamentMedal_Winter2021" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_prolander_one_day_cup_2/rglgg_prolander_one_day_cup_2_%s.mdl" + } + } + "13215" + { + "name" "Holographic Harvest Carbon Compassion 2022" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_HolographicHarvest_Carbon" + "item_description" "#TF_TournamentMedal_HolographicHarvest_Carbon_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem_holographic" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "9596754" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "866317" + } + } + } + "13216" + { + "name" "Holographic Harvest Zebra Zirconia 2022" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_HolographicHarvest_Zebra" + "item_description" "#TF_TournamentMedal_HolographicHarvest_Zebra_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_silver/robotarm_silver_gem_holographic" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "1315860" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "15132390" + } + } + } + "13217" + { + "name" "Holographic Harvest Lahsuniya Ratna 2022" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_HolographicHarvest_Lahsuniya" + "item_description" "#TF_TournamentMedal_HolographicHarvest_Lahsuniya_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem_holographic" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "13595446" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "1315860" + } + } + } + "13218" + { + "name" "Holographic Harvest Haunted Scrap Canteen 2022" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_HolographicHarvest_Canteen" + "item_description" "#TF_TournamentMedal_HolographicHarvest_Canteen_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant_holographic" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "10519036" + } + } + } + "13219" + { + "name" "PASS Time Federation EU 1st Place Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_EU_1st" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_1st_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st_%s.mdl" + } + } + "13220" + { + "name" "PASS Time Federation EU 2nd Place Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_EU_2nd" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_2nd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd_%s.mdl" + } + } + "13221" + { + "name" "PASS Time Federation EU 3rd Place Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_EU_3rd" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_3rd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd_%s.mdl" + } + } + "13222" + { + "name" "PASS Time Federation EU Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_EU_Participant" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant_%s.mdl" + } + } + "13223" + { + "name" "PASS Time Federation NA 1st Place Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_NA_1st" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_1st_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_1st/passtime_federation_1st_%s.mdl" + } + } + "13224" + { + "name" "PASS Time Federation NA 2nd Place Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_NA_2nd" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_2nd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_2nd/passtime_federation_2nd_%s.mdl" + } + } + "13225" + { + "name" "PASS Time Federation NA 3rd Place Medal Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_NA_3rd" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_3rd_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_3rd/passtime_federation_3rd_%s.mdl" + } + } + "13226" + { + "name" "PASS Time Federation NA Participant Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_NA_Participant" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_Participant_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_participant/passtime_federation_participant_%s.mdl" + } + } + "13227" + { + "name" "PASS Time Federation Staff Season 3" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_PASSTime_Federation_Staff" + "item_description" "#TF_TournamentMedal_PASSTime_Federation_Season3_Staff_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/passtime_federation_helper/passtime_federation_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/passtime_federation_helper/passtime_federation_helper_%s.mdl" + } + } + "13228" + { + "name" "Fruit Mixes Highlander High/Prem Gold Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "13229" + { + "name" "Fruit Mixes Highlander High/Prem Silver Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "13230" + { + "name" "Fruit Mixes Highlander High/Prem Bronze Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "13231" + { + "name" "Fruit Mixes Highlander High/Prem Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_High_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "13232" + { + "name" "Fruit Mixes Highlander Mid Gold Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "13233" + { + "name" "Fruit Mixes Highlander Mid Silver Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "13234" + { + "name" "Fruit Mixes Highlander Mid Bronze Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "13235" + { + "name" "Fruit Mixes Highlander Mid Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Mid_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "13236" + { + "name" "Fruit Mixes Highlander Low Gold Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "13237" + { + "name" "Fruit Mixes Highlander Low Silver Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "13238" + { + "name" "Fruit Mixes Highlander Low Bronze Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "13239" + { + "name" "Fruit Mixes Highlander Low Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Low_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "13240" + { + "name" "Fruit Mixes Highlander Open Gold Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_gold/fruit_mixes_gold_%s.mdl" + } + } + "13241" + { + "name" "Fruit Mixes Highlander Open Silver Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_silver/fruit_mixes_silver_%s.mdl" + } + } + "13242" + { + "name" "Fruit Mixes Highlander Open Bronze Medal Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_bronze/fruit_mixes_bronze_%s.mdl" + } + } + "13243" + { + "name" "Fruit Mixes Highlander Open Participant Season 4" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_FruitMixes_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_participant/fruit_mixes_participant_%s.mdl" + } + } + "13244" + { + "name" "Fruit Mixes Highlander Staff Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FruitMixes_Staff" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/fruit_mixes_staff/fruit_mixes_staff_%s.mdl" + } + } + "13245" + { + "name" "AsiaFortress Cup Division 1 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "13246" + { + "name" "AsiaFortress Cup Division 1 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "13247" + { + "name" "AsiaFortress Cup Division 1 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "13248" + { + "name" "AsiaFortress Cup Division 1 Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div1_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "13249" + { + "name" "AsiaFortress Cup Division 2 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_gold/asiafortress_cup_division2_gold_%s.mdl" + } + } + "13250" + { + "name" "AsiaFortress Cup Division 2 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_silver/asiafortress_cup_division2_silver_%s.mdl" + } + } + "13251" + { + "name" "AsiaFortress Cup Division 2 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division2_bronze/asiafortress_cup_division2_bronze_%s.mdl" + } + } + "13252" + { + "name" "AsiaFortress Cup Division 2 Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div2_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "13253" + { + "name" "AsiaFortress Cup Division 3 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_gold/asiafortress_cup_division3_gold_%s.mdl" + } + } + "13254" + { + "name" "AsiaFortress Cup Division 3 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_silver/asiafortress_cup_division3_silver_%s.mdl" + } + } + "13255" + { + "name" "AsiaFortress Cup Division 3 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/asiafortress_cup_division3_bronze/asiafortress_cup_division3_bronze_%s.mdl" + } + } + "13256" + { + "name" "AsiaFortress Cup Division 3 Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AFC_Div3_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "13257" + { + "name" "ozfortress Premier 1st Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "13258" + { + "name" "ozfortress Premier 2nd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "13259" + { + "name" "ozfortress Premier 3rd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "13260" + { + "name" "ozfortress Premier Participant Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "13261" + { + "name" "ozfortress Intermediate 1st Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13262" + { + "name" "ozfortress Intermediate 2nd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13263" + { + "name" "ozfortress Intermediate 3rd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13264" + { + "name" "ozfortress Intermediate Participant Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13265" + { + "name" "ozfortress Main 1st Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13266" + { + "name" "ozfortress Main 2nd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13267" + { + "name" "ozfortress Main 3rd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13268" + { + "name" "ozfortress Main Participant Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13269" + { + "name" "ozfortress Open 1st Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13270" + { + "name" "ozfortress Open 2nd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13271" + { + "name" "ozfortress Open 3rd Place Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13272" + { + "name" "ozfortress Open Participant Season 35" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season35" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13273" + { + "name" "ozfortress Highlander Premier First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13274" + { + "name" "ozfortress Highlander Premier Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13275" + { + "name" "ozfortress Highlander Premier Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13276" + { + "name" "ozfortress Highlander Premier Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13277" + { + "name" "ozfortress Highlander Main First Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13278" + { + "name" "ozfortress Highlander Main Second Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13279" + { + "name" "ozfortress Highlander Main Third Place Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13280" + { + "name" "ozfortress Highlander Main Participant Season 2" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season2" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13281" + { + "name" "RGLgg Highlander Invite Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13282" + { + "name" "RGLgg Highlander Invite 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13283" + { + "name" "RGLgg Highlander Invite 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13284" + { + "name" "RGLgg Highlander Invite Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13285" + { + "name" "RGLgg Highlander Advanced Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13286" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13287" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13288" + { + "name" "RGLgg Highlander Advanced Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13289" + { + "name" "RGLgg Highlander Main Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13290" + { + "name" "RGLgg Highlander Main 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13291" + { + "name" "RGLgg Highlander Main 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13292" + { + "name" "RGLgg Highlander Main Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13293" + { + "name" "RGLgg Highlander Intermediate Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13294" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13295" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13296" + { + "name" "RGLgg Highlander Intermediate Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13297" + { + "name" "RGLgg Highlander Amateur Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13298" + { + "name" "RGLgg Highlander Newcomer Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13299" + { + "name" "RGLgg 6v6 Invite Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13300" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13301" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13302" + { + "name" "RGLgg 6v6 Invite Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13303" + { + "name" "RGLgg 6v6 Advanced Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13304" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13305" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13306" + { + "name" "RGLgg 6v6 Advanced Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13307" + { + "name" "RGLgg 6v6 Main Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13308" + { + "name" "RGLgg 6v6 Main 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13309" + { + "name" "RGLgg 6v6 Main 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13310" + { + "name" "RGLgg 6v6 Main Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13311" + { + "name" "RGLgg 6v6 Intermediate Champions Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13312" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13313" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13314" + { + "name" "RGLgg 6v6 Intermediate Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13315" + { + "name" "RGLgg 6v6 Amateur Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13316" + { + "name" "RGLgg 6v6 Newcomer Participant Season 9" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season9" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13317" + { + "name" "RGLgg Highlander Experimental Maps Cup Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGLgg_HighlanderCup_Exp" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_highlander_cup/rglgg_highlander_cup_%s.mdl" + } + } + "13318" + { + "name" "CappingTV Summer Brawl 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_1st" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "13319" + { + "name" "CappingTV Summer Brawl 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_2nd" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "13320" + { + "name" "CappingTV Summer Brawl 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_3rd" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "13321" + { + "name" "CappingTV Summer Brawl Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_SummerBrawl_Participant" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "13322" + { + "name" "Potato of Labor" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Potato_Labor" + "item_description" "#TF_TournamentMedal_Potato_Labor_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator/mvm_memes_creator_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_creator_s2/mvm_memes_creator_s2_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "13323" + { + "name" "ozfortress Summer Cup Sixes Division 1 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division1_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13324" + { + "name" "ozfortress Summer Cup Sixes Division 1 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division1_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13325" + { + "name" "ozfortress Summer Cup Sixes Division 1 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division1_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13326" + { + "name" "ozfortress Summer Cup Sixes Division 1 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division1_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13327" + { + "name" "ozfortress Summer Cup Sixes Division 2 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division2_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13328" + { + "name" "ozfortress Summer Cup Sixes Division 2 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division2_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13329" + { + "name" "ozfortress Summer Cup Sixes Division 2 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division2_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13330" + { + "name" "ozfortress Summer Cup Sixes Division 2 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division2_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13331" + { + "name" "ozfortress Summer Cup Sixes Division 3 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division3_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13332" + { + "name" "ozfortress Summer Cup Sixes Division 3 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division3_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13333" + { + "name" "ozfortress Summer Cup Sixes Division 3 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division3_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13334" + { + "name" "ozfortress Summer Cup Sixes Division 3 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Sixes_Division3_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13335" + { + "name" "Operation Last Laugh Copper Chicanery 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_LastLaugh_Copper" + "item_description" "#TF_TournamentMedal_LastLaugh_Copper_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/last_laugh/last_laugh_copper" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2931149" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb" + "value" "3355647" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + } + "1" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron.mdl" + } + } + } + } + "13336" + { + "name" "Operation Last Laugh Happy Spud 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_LastLaugh_Happy" + "item_description" "#TF_TournamentMedal_LastLaugh_Happy_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/last_laugh/last_laugh_happy" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player_s2/mvm_memes_player_s2_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "10247486" + } + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player_s2/mvm_memes_player_s2_%s.mdl" + } + "name" "#TF_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mvm_memes_player/mvm_memes_player_%s.mdl" + } + "name" "#TF_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "13337" + { + "name" "Operation Last Laugh Bruised Johnstone 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_LastLaugh_Bruised" + "item_description" "#TF_TournamentMedal_LastLaugh_Bruised_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/last_laugh/last_laugh_bruised" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "7095743" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + } + "1" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze.mdl" + } + } + } + } + "13338" + { + "name" "Operation Last Laugh Caustic Container 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_LastLaugh_Caustic" + "item_description" "#TF_TournamentMedal_LastLaugh_Caustic_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/last_laugh/last_laugh_caustic" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_platinum/canteen_crasher_platinum_%s.mdl" + } + } + "13339" + { + "name" "Operation Last Laugh Alluring Artifact 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_LastLaugh_Alluring" + "item_description" "#TF_TournamentMedal_LastLaugh_Alluring_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/last_laugh/last_laugh_alluring" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2413568" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + "1" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + } + } + } + "13340" + { + "name" "ozfortress Summer Cup Highlander Division 1 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division1_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13341" + { + "name" "ozfortress Summer Cup Highlander Division 1 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division1_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13342" + { + "name" "ozfortress Summer Cup Highlander Division 1 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division1_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13343" + { + "name" "ozfortress Summer Cup Highlander Division 1 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division1_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13344" + { + "name" "ozfortress Summer Cup Highlander Division 2 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division2_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13345" + { + "name" "ozfortress Summer Cup Highlander Division 2 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division2_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13346" + { + "name" "ozfortress Summer Cup Highlander Division 2 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division2_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13347" + { + "name" "ozfortress Summer Cup Highlander Division 2 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division2_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13348" + { + "name" "ozfortress Summer Cup Highlander Division 3 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division3_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13349" + { + "name" "ozfortress Summer Cup Highlander Division 3 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division3_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13350" + { + "name" "ozfortress Summer Cup Highlander Division 3 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division3_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13351" + { + "name" "ozfortress Summer Cup Highlander Division 3 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Highlander_Division3_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13352" + { + "name" "ozfortress Premier 1st Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "13353" + { + "name" "ozfortress Premier 2nd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "13354" + { + "name" "ozfortress Premier 3rd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "13355" + { + "name" "ozfortress Premier Participant Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "13356" + { + "name" "ozfortress Intermediate 1st Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13357" + { + "name" "ozfortress Intermediate 2nd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13358" + { + "name" "ozfortress Intermediate 3rd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13359" + { + "name" "ozfortress Intermediate Participant Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13360" + { + "name" "ozfortress Main 1st Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13361" + { + "name" "ozfortress Main 2nd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13362" + { + "name" "ozfortress Main 3rd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13363" + { + "name" "ozfortress Main Participant Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13364" + { + "name" "ozfortress Open 1st Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13365" + { + "name" "ozfortress Open 2nd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13366" + { + "name" "ozfortress Open 3rd Place Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13367" + { + "name" "ozfortress Open Participant Season 36" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season36" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13368" + { + "name" "ozfortress Highlander Premier First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13369" + { + "name" "ozfortress Highlander Premier Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13370" + { + "name" "ozfortress Highlander Premier Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13371" + { + "name" "ozfortress Highlander Premier Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13372" + { + "name" "ozfortress Highlander Intermediate First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13373" + { + "name" "ozfortress Highlander Intermediate Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13374" + { + "name" "ozfortress Highlander Intermediate Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13375" + { + "name" "ozfortress Highlander Intermediate Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13376" + { + "name" "ozfortress Highlander Open First Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13377" + { + "name" "ozfortress Highlander Open Second Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13378" + { + "name" "ozfortress Highlander Open Third Place Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13379" + { + "name" "ozfortress Highlander Open Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13380" + { + "name" "Operation Voltaic Violence Vanity 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Voltaic_Violence_Vanity_2023" + "item_description" "#TF_TournamentMedal_Voltaic_Violence_Vanity_2023_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/voltaic_violence/vanity" + "model_player" "models/workshop/player/items/all_class/robotarm_silver/robotarm_silver_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "941374" + } + } + } + "13381" + { + "name" "Operation Voltaic Violence Valor 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Voltaic_Violence_Valor_2023" + "item_description" "#TF_TournamentMedal_Voltaic_Violence_Valor_2023_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/voltaic_violence/valor" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15643670" + } + } + } + "13382" + { + "name" "Operation Voltaic Violence Vitality 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Voltaic_Violence_Vitality_2023" + "item_description" "#TF_TournamentMedal_Voltaic_Violence_Vitality_2023_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/voltaic_violence/vitality" + "model_player" "models/workshop/player/items/all_class/robotarm_donator_rainbow/robotarm_donator_rainbow_gem.mdl" + } + "13383" + { + "name" "RGLgg Highlander Invite Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13384" + { + "name" "RGLgg Highlander Invite 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13385" + { + "name" "RGLgg Highlander Invite 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13386" + { + "name" "RGLgg Highlander Invite Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13387" + { + "name" "RGLgg Highlander Advanced Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13388" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13389" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13390" + { + "name" "RGLgg Highlander Advanced Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13391" + { + "name" "RGLgg Highlander Main Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13392" + { + "name" "RGLgg Highlander Main 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13393" + { + "name" "RGLgg Highlander Main 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13394" + { + "name" "RGLgg Highlander Main Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13395" + { + "name" "RGLgg Highlander Intermediate Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13396" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13397" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13398" + { + "name" "RGLgg Highlander Intermediate Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13399" + { + "name" "RGLgg Highlander Amateur Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13400" + { + "name" "RGLgg Highlander Newcomer Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13401" + { + "name" "RGLgg 6v6 Invite Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13402" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13403" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13404" + { + "name" "RGLgg 6v6 Invite Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13405" + { + "name" "RGLgg 6v6 Advanced Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13406" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13407" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13408" + { + "name" "RGLgg 6v6 Advanced Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13409" + { + "name" "RGLgg 6v6 Main Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13410" + { + "name" "RGLgg 6v6 Main 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13411" + { + "name" "RGLgg 6v6 Main 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13412" + { + "name" "RGLgg 6v6 Main Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13413" + { + "name" "RGLgg 6v6 Intermediate Champions Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13414" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13415" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13416" + { + "name" "RGLgg 6v6 Intermediate Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13417" + { + "name" "RGLgg 6v6 Amateur Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13418" + { + "name" "RGLgg 6v6 Newcomer Participant Season 10" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season10" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13419" + { + "name" "LAN Downunder 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Champion" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "13420" + { + "name" "LAN Downunder 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_2nd" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "13421" + { + "name" "LAN Downunder 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_3rd" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "13422" + { + "name" "LAN Downunder Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "13423" + { + "name" "ozfortress Premier 1st Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "13424" + { + "name" "ozfortress Premier 2nd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "13425" + { + "name" "ozfortress Premier 3rd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "13426" + { + "name" "ozfortress Premier Participant Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "13427" + { + "name" "ozfortress High 1st Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13428" + { + "name" "ozfortress High 2nd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13429" + { + "name" "ozfortress High 3rd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13430" + { + "name" "ozfortress High Participant Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13431" + { + "name" "ozfortress Intermediate 1st Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13432" + { + "name" "ozfortress Intermediate 2nd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13433" + { + "name" "ozfortress Intermediate 3rd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13434" + { + "name" "ozfortress Intermediate Participant Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13435" + { + "name" "ozfortress Main 1st Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13436" + { + "name" "ozfortress Main 2nd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13437" + { + "name" "ozfortress Main 3rd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13438" + { + "name" "ozfortress Main Participant Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13439" + { + "name" "ozfortress Open 1st Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13440" + { + "name" "ozfortress Open 2nd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13441" + { + "name" "ozfortress Open 3rd Place Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13442" + { + "name" "ozfortress Open Participant Season 37" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season37" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13443" + { + "name" "ozfortress Highlander Premier First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13444" + { + "name" "ozfortress Highlander Premier Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13445" + { + "name" "ozfortress Highlander Premier Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13446" + { + "name" "ozfortress Highlander Premier Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13447" + { + "name" "ozfortress Highlander Intermediate First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13448" + { + "name" "ozfortress Highlander Intermediate Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13449" + { + "name" "ozfortress Highlander Intermediate Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13450" + { + "name" "ozfortress Highlander Intermediate Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13451" + { + "name" "ozfortress Highlander Main First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13452" + { + "name" "ozfortress Highlander Main Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13453" + { + "name" "ozfortress Highlander Main Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13454" + { + "name" "ozfortress Highlander Main Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13455" + { + "name" "ozfortress Highlander Open First Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13456" + { + "name" "ozfortress Highlander Open Second Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13457" + { + "name" "ozfortress Highlander Open Third Place Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13458" + { + "name" "ozfortress Highlander Open Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13459" + { + "name" "The Heartfelt Hug 2023" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_HeartfeltHug_2023" + "item_description" "#TF_Medal_HeartfeltHug_2023_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/hugs_tf_medal/hugs_tf_medal" + "propername" "1" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hugs_tf_medal/hugs_tf_medal_%s.mdl" + } + } + "13460" + { + "name" "The Heartfelt Hero 2023" + "prefab" "tournament_medal" + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_Medal_HeartfeltHero_2023" + "item_description" "#TF_Medal_HeartfeltHero_2023_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/hugs_tf_medal_2018/hugs_tf_medal_2018" + "propername" "1" + "capabilities" + { + "paintable" "1" + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/hugs_tf_medal_2018/hugs_tf_medal_2018_%s.mdl" + } + } + "13461" + { + "name" "LBTF2 6v6 Central 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13462" + { + "name" "LBTF2 6v6 Central 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13463" + { + "name" "LBTF2 6v6 Central 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13464" + { + "name" "LBTF2 6v6 Central Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Central_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13465" + { + "name" "LBTF2 6v6 Open 1st Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13466" + { + "name" "LBTF2 6v6 Open 2nd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13467" + { + "name" "LBTF2 6v6 Open 3rd Place Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13468" + { + "name" "LBTF2 6v6 Open Participant Season 19" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season19" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13469" + { + "name" "LBTF2 6v6 Elite 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13470" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13471" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13472" + { + "name" "LBTF2 6v6 Elite Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13473" + { + "name" "LBTF2 6v6 Access 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13474" + { + "name" "LBTF2 6v6 Access 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13475" + { + "name" "LBTF2 6v6 Access 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13476" + { + "name" "LBTF2 6v6 Access Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13477" + { + "name" "LBTF2 6v6 Open 1st Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13478" + { + "name" "LBTF2 6v6 Open 2nd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13479" + { + "name" "LBTF2 6v6 Open 3rd Place Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13480" + { + "name" "LBTF2 6v6 Open Participant Season 20" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season20" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13481" + { + "name" "LBTF2 6v6 Elite 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13482" + { + "name" "LBTF2 6v6 Elite 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13483" + { + "name" "LBTF2 6v6 Elite 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13484" + { + "name" "LBTF2 6v6 Elite Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Elite_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13485" + { + "name" "LBTF2 6v6 Access 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13486" + { + "name" "LBTF2 6v6 Access 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13487" + { + "name" "LBTF2 6v6 Access 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13488" + { + "name" "LBTF2 6v6 Access Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13489" + { + "name" "LBTF2 6v6 Open 1st Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13490" + { + "name" "LBTF2 6v6 Open 2nd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13491" + { + "name" "LBTF2 6v6 Open 3rd Place Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13492" + { + "name" "LBTF2 6v6 Open Participant Season 21" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season21" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13493" + { + "name" "Operation Galvanized Gauntlet Shimmering Souvenir 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Galvanized_Shimmering" + "item_description" "#TF_TournamentMedal_Galvanized_Shimmering_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/galvanized_gauntlet/shimmering" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15122944" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "13494" + { + "name" "Operation Galvanized Gauntlet Bejeweled Bounty 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Galvanized_Bejeweled" + "item_description" "#TF_TournamentMedal_Galvanized_Bejeweled_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/galvanized_gauntlet/bejeweled" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "438272" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_bronze/robotarm_bronze_gem.mdl" + } + } + } + } + "13495" + { + "name" "Operation Galvanized Gauntlet Opulent Ornament 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Galvanized_Opulent" + "item_description" "#TF_TournamentMedal_Galvanized_Opulent_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/galvanized_gauntlet/opulent" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15018607" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "13129" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator_gem.mdl" + } + } + } + } + "13496" + { + "name" "Operation Galvanized Gauntlet Soldiers Spoils 2023" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Galvanized_Soldiers" + "item_description" "#TF_TournamentMedal_Galvanized_Soldiers_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/galvanized_gauntlet/soldiers" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12377523" + } + } + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_iron/canteen_crasher_iron_%s.mdl" + } + } + "13497" + { + "name" "AsiaFortress Invite 1st Place Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_1st" + "item_description" "#TF_TournamentMedal_AF_Invite_1st_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "13498" + { + "name" "AsiaFortress Invite 2nd Place Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_2nd" + "item_description" "#TF_TournamentMedal_AF_Invite_2nd_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "13499" + { + "name" "AsiaFortress Invite 3rd Place Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_3rd" + "item_description" "#TF_TournamentMedal_AF_Invite_3rd_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "13500" + { + "name" "AsiaFortress Invite Participant Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_Participant" + "item_description" "#TF_TournamentMedal_AF_Invite_Participant_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_white" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16777215" + } + } + } + "13501" + { + "name" "AsiaFortress Qualifiers Participant Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Qualifiers_Participant" + "item_description" "#TF_TournamentMedal_AF_Qualifiers_Participant_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "13502" + { + "name" "AsiaFortress International Jade Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_International_Jade" + "item_description" "#TF_TournamentMedal_AF_International_Jade_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_jade" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "43115" + } + } + } + "13503" + { + "name" "Insomnia 71 First Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia71_Gold" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_gold/iseries_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_gold/iseries_gold_%s.mdl" + } + } + "13504" + { + "name" "Insomnia 71 Second Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia71_Silver" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_silver/iseries_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_silver/iseries_silver_%s.mdl" + } + } + "13505" + { + "name" "Insomnia 71 Third Place Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia71_Bronze" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_bronze/iseries_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_bronze/iseries_bronze_%s.mdl" + } + } + "13506" + { + "name" "Insomnia 71 Participant Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia71_Participant" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_participant/iseries_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_participant/iseries_participant_%s.mdl" + } + } + "13507" + { + "name" "Insomnia 71 Staff Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_Insomnia71_Staff" + "item_description" "" + "image_inventory" "backpack/workshop/player/items/all_class/iseries_contributor/iseries_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/iseries_contributor/iseries_contributor_%s.mdl" + } + } + "13508" + { + "name" "TF2Maps Charitable Heart 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF2MapsCharitableHeart2023" + "item_description" "#TF2MapsCharitableHeart2023_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart/72hr_jamheart_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jamheart_2/72hr_jamheart_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "13509" + { + "name" "TF2Maps 72hr TF2Jam Participant 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_72hr_jimijam" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "visuals" + { + "styles" + { + "0" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam/72hr_jimijam_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style0" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/72hr_jimijam_2/72hr_jimijam_2_%s.mdl" + } + "name" "#TF_TournamentMedal_72hr_jimijam_style1" + "skin_red" "0" + "skin_blu" "1" + } + } + } + } + "13510" + { + "name" "ozfortress Experimental Cup 2 Division 1 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div1_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "13511" + { + "name" "ozfortress Experimental Cup 2 Division 1 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div1_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "13512" + { + "name" "ozfortress Experimental Cup 2 Division 1 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div1_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "13513" + { + "name" "ozfortress Experimental Cup 2 Division 1 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div1_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "13514" + { + "name" "ozfortress Experimental Cup 2 Division 2 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div2_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13515" + { + "name" "ozfortress Experimental Cup 2 Division 2 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div2_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13516" + { + "name" "ozfortress Experimental Cup 2 Division 2 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div2_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13517" + { + "name" "ozfortress Experimental Cup 2 Division 2 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div2_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13518" + { + "name" "ozfortress Experimental Cup 2 Division 3 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div3_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13519" + { + "name" "ozfortress Experimental Cup 2 Division 3 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div3_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13520" + { + "name" "ozfortress Experimental Cup 2 Division 3 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div3_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13521" + { + "name" "ozfortress Experimental Cup 2 Division 3 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div3_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13522" + { + "name" "ozfortress Experimental Cup 2 Division 4 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div4_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13523" + { + "name" "ozfortress Experimental Cup 2 Division 4 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div4_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13524" + { + "name" "ozfortress Experimental Cup 2 Division 4 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div4_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13525" + { + "name" "ozfortress Experimental Cup 2 Division 4 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div4_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13526" + { + "name" "ozfortress Experimental Cup 2 Division 5 1st Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div5_First_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13527" + { + "name" "ozfortress Experimental Cup 2 Division 5 2nd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div5_Second_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13528" + { + "name" "ozfortress Experimental Cup 2 Division 5 3rd Place 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div5_Third_Place" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13529" + { + "name" "ozfortress Experimental Cup 2 Division 5 Participant 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_ExpCup2_Div5_Participant" + "item_description" "#TF_TournamentMedal_2023" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13530" + { + "name" "RGLgg Highlander Invite Champions Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13531" + { + "name" "RGLgg Highlander Invite 2nd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13532" + { + "name" "RGLgg Highlander Invite 3rd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13533" + { + "name" "RGLgg Highlander Invite Participant Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13534" + { + "name" "RGLgg Highlander Advanced Champions Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13535" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13536" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13537" + { + "name" "RGLgg Highlander Advanced Participant Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13538" + { + "name" "RGLgg Highlander Main Champions Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13539" + { + "name" "RGLgg Highlander Main 2nd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13540" + { + "name" "RGLgg Highlander Main 3rd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13541" + { + "name" "RGLgg Highlander Main Participant Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13542" + { + "name" "RGLgg Highlander Intermediate Champions Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13543" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13544" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13545" + { + "name" "RGLgg Highlander Intermediate Participant Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13546" + { + "name" "RGLgg Highlander Amateur Participant Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13547" + { + "name" "RGLgg Highlander Newcomer Participant Season 14" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season14" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13548" + { + "name" "RGLgg 6v6 Invite Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13549" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13550" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13551" + { + "name" "RGLgg 6v6 Invite Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13552" + { + "name" "RGLgg 6v6 Advanced Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13553" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13554" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13555" + { + "name" "RGLgg 6v6 Advanced Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13556" + { + "name" "RGLgg 6v6 Main Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13557" + { + "name" "RGLgg 6v6 Main 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13558" + { + "name" "RGLgg 6v6 Main 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13559" + { + "name" "RGLgg 6v6 Main Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13560" + { + "name" "RGLgg 6v6 Intermediate Champions Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13561" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13562" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13563" + { + "name" "RGLgg 6v6 Intermediate Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13564" + { + "name" "RGLgg 6v6 Amateur Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13565" + { + "name" "RGLgg 6v6 Newcomer Participant Season 11" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season11" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13566" + { + "name" "Operation Firmware Frenzy Star of the Company 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Firmware_Star" + "item_description" "#TF_TournamentMedal_Firmware_Star_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/firmware_frenzy/star_company" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "4259740" + } + } + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_creator/robotarm_creator_gem.mdl" + } + } + } + } + "13567" + { + "name" "Operation Firmware Frenzy Purehearted Purple 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Firmware_Purehearted" + "item_description" "#TF_TournamentMedal_Firmware_Purehearted_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/firmware_frenzy/purehearted" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_participant/canteen_crasher_participant_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16094975" + } + } + } + "13568" + { + "name" "Operation Firmware Frenzy Bountiful Benevolence 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Firmware_Bountiful" + "item_description" "#TF_TournamentMedal_Firmware_Bountiful_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/firmware_frenzy/bountiful" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_bronze/canteen_crasher_bronze_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "4441855" + } + } + } + "13569" + { + "name" "Operation Firmware Frenzy Giver in Gold 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Firmware_Giver" + "item_description" "#TF_TournamentMedal_Firmware_Giver_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/firmware_frenzy/giver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_gold/canteen_crasher_gold_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "13793280" + } + } + } + "13570" + { + "name" "Operation Firmware Frenzy Supercritical Selflessness 2023" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Firmware_Supercritical" + "item_description" "#TF_TournamentMedal_Firmware_Supercritical_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/firmware_frenzy/supercritical" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_platinum/canteen_crasher_platinum_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "6619010" + } + } + } + "13571" + { + "name" "Supreme Strategist's Sigil of Status" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Supreme_Strategist" + "item_description" "#TF_TournamentMedal_Supreme_Strategist_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/firmware_frenzy/supreme_strategist" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mappers_vs_machines_medal/mappers_vs_machines_medal_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "3874595" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "1581885" + } + } + } + "13572" + { + "name" "UDL Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Gold" + "item_description" "#TF_TournamentMedal_UDL_Gold_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/udl_gold_2/udl_gold_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_gold_2/udl_gold_2_%s.mdl" + } + } + "13573" + { + "name" "UDL Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Silver" + "item_description" "#TF_TournamentMedal_UDL_Silver_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/udl_silver_2/udl_silver_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_silver_2/udl_silver_2_%s.mdl" + } + } + "13574" + { + "name" "UDL Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Bronze" + "item_description" "#TF_TournamentMedal_UDL_Bronze_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/udl_bronze_2/udl_bronze_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_bronze_2/udl_bronze_2_%s.mdl" + } + } + "13575" + { + "name" "UDL Participant Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Participant" + "item_description" "#TF_TournamentMedal_UDL_Participant_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/udl_participant_2/udl_participant_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_participant_2/udl_participant_2_%s.mdl" + } + } + "13576" + { + "name" "UDL Supporter Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_UDL_Supporter" + "item_description" "#TF_TournamentMedal_UDL_Supporter_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/udl_staff_2/udl_staff_2" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/udl_staff_2/udl_staff_2_%s.mdl" + } + } + "13577" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 4 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "13578" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 4 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "13579" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 4 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "13580" + { + "name" "TFArena 6v6 Arena Mode Elite Division Cup 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_EliteDivision_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "13581" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 4 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "13582" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 4 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "13583" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 4 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "13584" + { + "name" "TFArena 6v6 Arena Mode Experienced Division Cup 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_ExperiencedDivision_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "13585" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 4 Gold" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Gold" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Gold_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_gold/tfarena_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_gold/tfarena_gold_%s.mdl" + } + } + "13586" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 4 Silver" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Silver" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Silver_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_silver/tfarena_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_silver/tfarena_silver_%s.mdl" + } + } + "13587" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 4 Bronze" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Bronze" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Bronze_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_bronze/tfarena_bronze_%s.mdl" + } + } + "13588" + { + "name" "TFArena 6v6 Arena Mode Rookie Division Cup 4 Participant" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_RookieDivision_Participant" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Participant_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_participant/tfarena_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_participant/tfarena_participant_%s.mdl" + } + } + "13589" + { + "name" "TFArena 6v6 Arena Mode Cup 4 Helper" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_TFArena_6v6_Helper" + "item_description" "#TF_TournamentMedal_TFArena_6v6_Helper_Cup4_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/tfarena_helper/tfarena_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/tfarena_helper/tfarena_helper_%s.mdl" + } + } + "13590" + { + "name" "AsiaFortress Invite 1st Place Fall 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_1st" + "item_description" "#TF_TournamentMedal_AF_Invite_1st_Fall2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "13591" + { + "name" "AsiaFortress Invite 2nd Place Fall 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_2nd" + "item_description" "#TF_TournamentMedal_AF_Invite_2nd_Fall2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "13592" + { + "name" "AsiaFortress Invite 3rd Place Fall 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_3rd" + "item_description" "#TF_TournamentMedal_AF_Invite_3rd_Fall2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "13593" + { + "name" "AsiaFortress Invite Participant Fall 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Invite_Participant" + "item_description" "#TF_TournamentMedal_AF_Invite_Participant_Fall2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_white" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16777215" + } + } + } + "13594" + { + "name" "AsiaFortress Qualifiers Participant Fall 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Qualifiers_Participant" + "item_description" "#TF_TournamentMedal_AF_Qualifiers_Participant_Fall2023" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "13595" + { + "name" "CappingTV Summer Brawl 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_TF2_SummerBrawl_1st" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "13596" + { + "name" "CappingTV Summer Brawl 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_TF2_SummerBrawl_2nd" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "13597" + { + "name" "CappingTV Summer Brawl 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_TF2_SummerBrawl_3rd" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "13598" + { + "name" "CappingTV Summer Brawl Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CappingTV_TF2_SummerBrawl_Participant" + "item_description" "#TF_TournamentMedal_CappingTV_SummerBrawl_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "13599" + { + "name" "RGB 6 LAN 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB6_LAN_Gold" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold_%s.mdl" + } + } + "13600" + { + "name" "RGB 6 LAN 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB6_LAN_Silver" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver_%s.mdl" + } + } + "13601" + { + "name" "RGB 6 LAN 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB6_LAN_Bronze" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze_%s.mdl" + } + } + "13602" + { + "name" "RGB 6 LAN Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB6_LAN_Participant" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant_%s.mdl" + } + } + "13603" + { + "name" "Moscow LAN 1st Place Winter 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_1st" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_1st/moscow_lan_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_1st/moscow_lan_1st_%s.mdl" + } + } + "13604" + { + "name" "Moscow LAN 2nd Place Winter 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_2nd" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_2nd/moscow_lan_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_2nd/moscow_lan_2nd_%s.mdl" + } + } + "13605" + { + "name" "Moscow LAN 3rd Place Winter 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_3rd" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_3rd/moscow_lan_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_3rd/moscow_lan_3rd_%s.mdl" + } + } + "13606" + { + "name" "Moscow LAN Participant Winter 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_Participant" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_participant/moscow_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_participant/moscow_lan_participant_%s.mdl" + } + } + "13607" + { + "name" "Moscow LAN Helper Winter 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_Moscow_LAN_Helper" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/moscow_lan_helper/moscow_lan_helper" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/moscow_lan_helper/moscow_lan_helper_%s.mdl" + } + } + "13608" + { + "name" "ozfortress Summer Cup Fours Division 1 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division1_First_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13609" + { + "name" "ozfortress Summer Cup Fours Division 1 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division1_Second_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13610" + { + "name" "ozfortress Summer Cup Fours Division 1 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division1_Third_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13611" + { + "name" "ozfortress Summer Cup Fours Division 1 Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division1_Participant" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13612" + { + "name" "ozfortress Summer Cup Fours Division 2 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division2_First_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13613" + { + "name" "ozfortress Summer Cup Fours Division 2 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division2_Second_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13614" + { + "name" "ozfortress Summer Cup Fours Division 2 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division2_Third_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13615" + { + "name" "ozfortress Summer Cup Fours Division 2 Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division2_Participant" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13616" + { + "name" "ozfortress Summer Cup Fours Division 3 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division3_First_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_first/ozfortress_summer_cup_first_%s.mdl" + } + } + "13617" + { + "name" "ozfortress Summer Cup Fours Division 3 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division3_Second_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_second/ozfortress_summer_cup_second_%s.mdl" + } + } + "13618" + { + "name" "ozfortress Summer Cup Fours Division 3 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division3_Third_Place" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_third/ozfortress_summer_cup_third_%s.mdl" + } + } + "13619" + { + "name" "ozfortress Summer Cup Fours Division 3 Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_SummerCup_Fours_Division3_Participant" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/ozfortress_summer_cup_participant/ozfortress_summer_cup_participant_%s.mdl" + } + } + "13620" + { + "name" "CLTF2 4v4 Premiership Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "13621" + { + "name" "CLTF2 4v4 Premiership Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "13622" + { + "name" "CLTF2 4v4 Premiership Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "13623" + { + "name" "CLTF2 4v4 Premiership Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Premiership_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "13624" + { + "name" "CLTF2 4v4 Division 1 Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division1_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "13625" + { + "name" "CLTF2 4v4 Division 1 Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division1_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "13626" + { + "name" "CLTF2 4v4 Division 1 Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "13627" + { + "name" "CLTF2 4v4 Division 1 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division1_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "13628" + { + "name" "CLTF2 4v4 Division 2 Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division2_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "13629" + { + "name" "CLTF2 4v4 Division 2 Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division2_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "13630" + { + "name" "CLTF2 4v4 Division 2 Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "13631" + { + "name" "CLTF2 4v4 Division 2 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division2_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "13632" + { + "name" "CLTF2 Tournament Supporter Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_Supporter" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_supporter/cltf2_supporter_%s.mdl" + } + } + "13633" + { + "name" "FBTF Cup 6v6 Wastex Miller 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "13634" + { + "name" "FBTF Cup 6v6 Wastex Miller 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "13635" + { + "name" "FBTF Cup 6v6 Wastex Miller 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "13636" + { + "name" "FBTF Cup 6v6 Wastex Miller Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Wastex_Miller_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "13637" + { + "name" "FBTF Cup 6v6 Barts Rimet 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "13638" + { + "name" "FBTF Cup 6v6 Barts Rimet 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "13639" + { + "name" "FBTF Cup 6v6 Barts Rimet 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "13640" + { + "name" "FBTF Cup 6v6 Barts Rimet Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Barts_Rimet_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "13641" + { + "name" "FBTF Cup 6v6 Vic Basten 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "13642" + { + "name" "FBTF Cup 6v6 Vic Basten 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "13643" + { + "name" "FBTF Cup 6v6 Vic Basten 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "13644" + { + "name" "FBTF Cup 6v6 Vic Basten Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Vic_Basten_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "13645" + { + "name" "FBTF Cup 6v6 Joten Klopp 1st Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_1st" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_1st/lbtf2_6v6_1st_%s.mdl" + } + } + "13646" + { + "name" "FBTF Cup 6v6 Joten Klopp 2nd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_2nd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_2nd/lbtf2_6v6_2nd_%s.mdl" + } + } + "13647" + { + "name" "FBTF Cup 6v6 Joten Klopp 3rd Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_3rd" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_3rd/lbtf2_6v6_3rd_%s.mdl" + } + } + "13648" + { + "name" "FBTF Cup 6v6 Joten Klopp Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_FBTF_Cup_6v6_Joten_Klopp_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_6v6_participant/lbtf2_6v6_participant_%s.mdl" + } + } + "13649" + { + "name" "LBTF2 6v6 Access 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13650" + { + "name" "LBTF2 6v6 Access 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13651" + { + "name" "LBTF2 6v6 Access 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13652" + { + "name" "LBTF2 6v6 Access Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Access_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13653" + { + "name" "LBTF2 6v6 Open 1st Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_1st" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_gold/lbtf_medal_gold_demo.mdl" + } + "13654" + { + "name" "LBTF2 6v6 Open 2nd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_2nd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_silver/lbtf_medal_silver_demo.mdl" + } + "13655" + { + "name" "LBTF2 6v6 Open 3rd Place Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_3rd" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_bronze/lbtf_medal_bronze_demo.mdl" + } + "13656" + { + "name" "LBTF2 6v6 Open Participant Season 22" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_6V6_Open_Participant" + "item_description" "#TF_TournamentMedal_Season22" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant" + "model_player" "models/workshop/player/items/all_class/lbtf_medal_participant/lbtf_medal_participant_demo.mdl" + } + "13657" + { + "name" "DreamHack Atlanta First Place 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Atlanta_Gold" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold_%s.mdl" + } + } + "13658" + { + "name" "DreamHack Atlanta Second Place 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Atlanta_Silver" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver_%s.mdl" + } + } + "13659" + { + "name" "DreamHack Atlanta Third Place 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Atlanta_Bronze" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze_%s.mdl" + } + } + "13660" + { + "name" "DreamHack Atlanta Participant 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Atlanta_Participant" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant_%s.mdl" + } + } + "13661" + { + "name" "DreamHack Atlanta Staff 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Atlanta_Staff" + "item_description" "#TF_TournamentMedal_2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor_%s.mdl" + } + } + "13662" + { + "name" "RGLgg Highlander Invite Champions Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13663" + { + "name" "RGLgg Highlander Invite 2nd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13664" + { + "name" "RGLgg Highlander Invite 3rd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13665" + { + "name" "RGLgg Highlander Invite Participant Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13666" + { + "name" "RGLgg Highlander Advanced Champions Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13667" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13668" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13669" + { + "name" "RGLgg Highlander Advanced Participant Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13670" + { + "name" "RGLgg Highlander Main Champions Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13671" + { + "name" "RGLgg Highlander Main 2nd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13672" + { + "name" "RGLgg Highlander Main 3rd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13673" + { + "name" "RGLgg Highlander Main Participant Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13674" + { + "name" "RGLgg Highlander Intermediate Champions Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13675" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13676" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13677" + { + "name" "RGLgg Highlander Intermediate Participant Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13678" + { + "name" "RGLgg Highlander Amateur Participant Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13679" + { + "name" "RGLgg Highlander Newcomer Participant Season 15" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season15" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13680" + { + "name" "RGLgg Highlander Invite Champions Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13681" + { + "name" "RGLgg Highlander Invite 2nd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13682" + { + "name" "RGLgg Highlander Invite 3rd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13683" + { + "name" "RGLgg Highlander Invite Participant Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13684" + { + "name" "RGLgg Highlander Advanced Champions Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13685" + { + "name" "RGLgg Highlander Advanced 2nd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13686" + { + "name" "RGLgg Highlander Advanced 3rd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13687" + { + "name" "RGLgg Highlander Advanced Participant Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13688" + { + "name" "RGLgg Highlander Main Champions Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Champions" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13689" + { + "name" "RGLgg Highlander Main 2nd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13690" + { + "name" "RGLgg Highlander Main 3rd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13691" + { + "name" "RGLgg Highlander Main Participant Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13692" + { + "name" "RGLgg Highlander Intermediate Champions Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13693" + { + "name" "RGLgg Highlander Intermediate 2nd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13694" + { + "name" "RGLgg Highlander Intermediate 3rd Place Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13695" + { + "name" "RGLgg Highlander Intermediate Participant Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13696" + { + "name" "RGLgg Highlander Amateur Participant Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13697" + { + "name" "RGLgg Highlander Newcomer Participant Season 16" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_Highlander_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season16" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13698" + { + "name" "RGLgg 6v6 Invite Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13699" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13700" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13701" + { + "name" "RGLgg 6v6 Invite Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13702" + { + "name" "RGLgg 6v6 Advanced Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13703" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13704" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13705" + { + "name" "RGLgg 6v6 Advanced Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13706" + { + "name" "RGLgg 6v6 Main Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13707" + { + "name" "RGLgg 6v6 Main 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13708" + { + "name" "RGLgg 6v6 Main 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13709" + { + "name" "RGLgg 6v6 Main Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13710" + { + "name" "RGLgg 6v6 Intermediate Champions Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13711" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13712" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13713" + { + "name" "RGLgg 6v6 Intermediate Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13714" + { + "name" "RGLgg 6v6 Amateur Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13715" + { + "name" "RGLgg 6v6 Newcomer Participant Season 12" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season12" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13716" + { + "name" "RGLgg 6v6 Invite Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_1st/rglgg_hl_invite_1st_%s.mdl" + } + } + "13717" + { + "name" "RGLgg 6v6 Invite 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_2nd/rglgg_hl_invite_2nd_%s.mdl" + } + } + "13718" + { + "name" "RGLgg 6v6 Invite 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_3rd/rglgg_hl_invite_3rd_%s.mdl" + } + } + "13719" + { + "name" "RGLgg 6v6 Invite Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Invite_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_invite_participant/rglgg_hl_invite_participant_%s.mdl" + } + } + "13720" + { + "name" "RGLgg 6v6 Advanced Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13721" + { + "name" "RGLgg 6v6 Advanced 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13722" + { + "name" "RGLgg 6v6 Advanced 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13723" + { + "name" "RGLgg 6v6 Advanced Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Advanced_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_advanced/rglgg_hl_advanced_%s.mdl" + } + } + "13724" + { + "name" "RGLgg 6v6 Main Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13725" + { + "name" "RGLgg 6v6 Main 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13726" + { + "name" "RGLgg 6v6 Main 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13727" + { + "name" "RGLgg 6v6 Main Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Main_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_main/rglgg_hl_main_%s.mdl" + } + } + "13728" + { + "name" "RGLgg 6v6 Intermediate Champions Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Champions" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13729" + { + "name" "RGLgg 6v6 Intermediate 2nd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_2nd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13730" + { + "name" "RGLgg 6v6 Intermediate 3rd Place Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_3rd" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13731" + { + "name" "RGLgg 6v6 Intermediate Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_intermediate/rglgg_hl_intermediate_%s.mdl" + } + } + "13732" + { + "name" "RGLgg 6v6 Amateur Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Amateur_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13733" + { + "name" "RGLgg 6v6 Newcomer Participant Season 13" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + } + "item_name" "#TF_TournamentMedal_RGLgg_6v6_Newcomer_Participant" + "item_description" "#TF_TournamentMedal_Season13" + "image_inventory" "backpack/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rglgg_hl_open/rglgg_hl_open_%s.mdl" + } + } + "13734" + { + "name" "DreamHack Community Clash First Place Autumn 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_gold/essentials_monthly_gold_%s.mdl" + } + } + "13735" + { + "name" "DreamHack Community Clash Second Place Autumn 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_silver/essentials_monthly_silver_%s.mdl" + } + } + "13736" + { + "name" "DreamHack Community Clash Third Place Autumn 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_bronze/essentials_monthly_bronze_%s.mdl" + } + } + "13737" + { + "name" "DreamHack Community Clash Participant Autumn 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Participant" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_participant/essentials_monthly_participant_%s.mdl" + } + } + "13738" + { + "name" "DreamHack Community Clash Staff Autumn 2022" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_name" "#TF_TournamentMedal_DreamHack_Clash_Staff" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/essentials_monthly_contributor/essentials_monthly_contributor_%s.mdl" + } + } + "13739" + { + "name" "Operation Magnetic Mayhem Fiendish Fuchsite 2024" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Magnetic_Fiendish_2024" + "item_description" "#TF_TournamentMedal_Magnetic_Fiendish_2024_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/magnetic_mayhem/fiendish_fuchsite" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + "1" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8998604" + } + } + } + "13740" + { + "name" "Operation Magnetic Mayhem Megalomaniacal Mastodon 2024" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Magnetic_Megalomaniacal_2024" + "item_description" "#TF_TournamentMedal_Magnetic_Megalomaniacal_2024_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/magnetic_mayhem/megalomaniacal_mastodon" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12807213" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "12091445" + } + } + } + "13741" + { + "name" "Operation Magnetic Mayhem Humanitarian Hiddenite 2024" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Magnetic_Humanitarian_2024" + "item_description" "#TF_TournamentMedal_Magnetic_Humanitarian_2024_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/magnetic_mayhem/humanitarian_hiddenite" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold_gem.mdl" + "skin_red" "0" + "skin_blu" "1" + } + "1" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_gold/robotarm_gold.mdl" + "skin_red" "0" + "skin_blu" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "4117066" + } + } + } + "13742" + { + "name" "Operation Magnetic Mayhem Barely Benign Bismutotantalite 2024" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Magnetic_Barely_2024" + "item_description" "#TF_TournamentMedal_Magnetic_Barely_2024_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/magnetic_mayhem/barely_benign" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron_gem.mdl" + } + "1" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_iron/robotarm_iron.mdl" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "10503680" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "18060" + } + } + } + "13743" + { + "name" "Operation Magnetic Mayhem Treasured Tourmaline 2024" + "prefab" "tournament_medal" + "capabilities" + { + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Magnetic_Treasured_2024" + "item_description" "#TF_TournamentMedal_Magnetic_Treasured_2024_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/magnetic_mayhem/treasured_tourmaline" + "visuals" + { + "styles" + { + "0" + { + "name" "#TF_style1_gem_only" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum_gem.mdl" + } + "1" + { + "name" "#TF_style0_normal" + "model_player" "models/workshop/player/items/all_class/robotarm_platinum/robotarm_platinum.mdl" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15088750" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "5255910" + } + } + } + "13744" + { + "name" "ozfortress Premier 1st Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "13745" + { + "name" "ozfortress Premier 2nd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "13746" + { + "name" "ozfortress Premier 3rd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "13747" + { + "name" "ozfortress Premier Participant Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "13748" + { + "name" "ozfortress High 1st Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13749" + { + "name" "ozfortress High 2nd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13750" + { + "name" "ozfortress High 3rd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13751" + { + "name" "ozfortress High Participant Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13752" + { + "name" "ozfortress Intermediate 1st Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13753" + { + "name" "ozfortress Intermediate 2nd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13754" + { + "name" "ozfortress Intermediate 3rd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13755" + { + "name" "ozfortress Intermediate Participant Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13756" + { + "name" "ozfortress Main 1st Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13757" + { + "name" "ozfortress Main 2nd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13758" + { + "name" "ozfortress Main 3rd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13759" + { + "name" "ozfortress Main Participant Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13760" + { + "name" "ozfortress Open 1st Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13761" + { + "name" "ozfortress Open 2nd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13762" + { + "name" "ozfortress Open 3rd Place Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13763" + { + "name" "ozfortress Open Participant Season 38" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season38" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13764" + { + "name" "ozfortress Premier 1st Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "13765" + { + "name" "ozfortress Premier 2nd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "13766" + { + "name" "ozfortress Premier 3rd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "13767" + { + "name" "ozfortress Premier Participant Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "13768" + { + "name" "ozfortress High 1st Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13769" + { + "name" "ozfortress High 2nd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13770" + { + "name" "ozfortress High 3rd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13771" + { + "name" "ozfortress High Participant Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13772" + { + "name" "ozfortress Intermediate 1st Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13773" + { + "name" "ozfortress Intermediate 2nd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13774" + { + "name" "ozfortress Intermediate 3rd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13775" + { + "name" "ozfortress Intermediate Participant Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13776" + { + "name" "ozfortress Main 1st Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13777" + { + "name" "ozfortress Main 2nd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13778" + { + "name" "ozfortress Main 3rd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13779" + { + "name" "ozfortress Main Participant Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13780" + { + "name" "ozfortress Open 1st Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "13781" + { + "name" "ozfortress Open 2nd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "13782" + { + "name" "ozfortress Open 3rd Place Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "13783" + { + "name" "ozfortress Open Participant Season 39" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season39" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "13784" + { + "name" "ozfortress Highlander Premier First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13785" + { + "name" "ozfortress Highlander Premier Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13786" + { + "name" "ozfortress Highlander Premier Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13787" + { + "name" "ozfortress Highlander Premier Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13788" + { + "name" "ozfortress Highlander Intermediate First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13789" + { + "name" "ozfortress Highlander Intermediate Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13790" + { + "name" "ozfortress Highlander Intermediate Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13791" + { + "name" "ozfortress Highlander Intermediate Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13792" + { + "name" "ozfortress Highlander Open First Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13793" + { + "name" "ozfortress Highlander Open Second Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13794" + { + "name" "ozfortress Highlander Open Third Place Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13795" + { + "name" "ozfortress Highlander Open Participant Season 5" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_Season5" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13796" + { + "name" "ozfortress Highlander Premier First Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13797" + { + "name" "ozfortress Highlander Premier Second Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13798" + { + "name" "ozfortress Highlander Premier Third Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13799" + { + "name" "ozfortress Highlander Premier Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13800" + { + "name" "ozfortress Highlander Main First Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "13801" + { + "name" "ozfortress Highlander Main Second Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "13802" + { + "name" "ozfortress Highlander Main Third Place Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "13803" + { + "name" "ozfortress Highlander Main Participant Season 6" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season6" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "13804" + { + "name" "CLTF2 4v4 Division 3 Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division3_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "13805" + { + "name" "CLTF2 4v4 Division 3 Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division3_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "13806" + { + "name" "CLTF2 4v4 Division 3 Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "13807" + { + "name" "CLTF2 4v4 Division 3 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division3_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "13808" + { + "name" "CLTF2 4v4 Division 4 Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division4_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "13809" + { + "name" "CLTF2 4v4 Division 4 Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division4_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "13810" + { + "name" "CLTF2 4v4 Division 4 Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "13811" + { + "name" "CLTF2 4v4 Division 4 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division4_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "13812" + { + "name" "CLTF2 4v4 Division 5 Gold Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division5_Gold" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_gold/cltf2_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_gold/cltf2_gold_%s.mdl" + } + } + "13813" + { + "name" "CLTF2 4v4 Division 5 Silver Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division5_Silver" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_silver/cltf2_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_silver/cltf2_silver_%s.mdl" + } + } + "13814" + { + "name" "CLTF2 4v4 Division 5 Bronze Medal Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division5_Bronze" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_bronze/cltf2_bronze_%s.mdl" + } + } + "13815" + { + "name" "CLTF2 4v4 Division 5 Participant Season 4" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_CLTF2_4v4_Division5_Participant" + "item_description" "#TF_TournamentMedal_Season4" + "image_inventory" "backpack/workshop/player/items/all_class/cltf2_participant/cltf2_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/cltf2_participant/cltf2_participant_%s.mdl" + } + } + "13816" + { + "name" "ETF2L 6v6 Premiership Gold Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13817" + { + "name" "ETF2L 6v6 Premiership Silver Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13818" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13819" + { + "name" "ETF2L 6v6 Premiership Participation Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13820" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13821" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13822" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13823" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13824" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13825" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13826" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13827" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13828" + { + "name" "ETF2L 6v6 Mid Gold Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13829" + { + "name" "ETF2L 6v6 Mid Silver Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13830" + { + "name" "ETF2L 6v6 Mid Bronze Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13831" + { + "name" "ETF2L 6v6 Mid Playoff Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13832" + { + "name" "ETF2L 6v6 Mid Participation Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13833" + { + "name" "ETF2L 6v6 Low Gold Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13834" + { + "name" "ETF2L 6v6 Low Silver Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13835" + { + "name" "ETF2L 6v6 Low Bronze Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13836" + { + "name" "ETF2L 6v6 Low Playoff Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13837" + { + "name" "ETF2L 6v6 Low Participation Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13838" + { + "name" "ETF2L 6v6 Open Gold Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13839" + { + "name" "ETF2L 6v6 Open Silver Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13840" + { + "name" "ETF2L 6v6 Open Bronze Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13841" + { + "name" "ETF2L 6v6 Open Playoff Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13842" + { + "name" "ETF2L 6v6 Open Participation Medal Autumn 2022" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Autumn2022" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13843" + { + "name" "ETF2L 6v6 Premiership Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13844" + { + "name" "ETF2L 6v6 Premiership Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13845" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13846" + { + "name" "ETF2L 6v6 Premiership Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13847" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13848" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13849" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13850" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13851" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13852" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13853" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13854" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13855" + { + "name" "ETF2L 6v6 Mid Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13856" + { + "name" "ETF2L 6v6 Mid Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13857" + { + "name" "ETF2L 6v6 Mid Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13858" + { + "name" "ETF2L 6v6 Mid Playoff Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13859" + { + "name" "ETF2L 6v6 Mid Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13860" + { + "name" "ETF2L 6v6 Low Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13861" + { + "name" "ETF2L 6v6 Low Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13862" + { + "name" "ETF2L 6v6 Low Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13863" + { + "name" "ETF2L 6v6 Low Playoff Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13864" + { + "name" "ETF2L 6v6 Low Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13865" + { + "name" "ETF2L 6v6 Open Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13866" + { + "name" "ETF2L 6v6 Open Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13867" + { + "name" "ETF2L 6v6 Open Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13868" + { + "name" "ETF2L 6v6 Open Playoff Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13869" + { + "name" "ETF2L 6v6 Open Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13870" + { + "name" "ETF2L 6v6 Premiership Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13871" + { + "name" "ETF2L 6v6 Premiership Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13872" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13873" + { + "name" "ETF2L 6v6 Premiership Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13874" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13875" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13876" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13877" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13878" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13879" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13880" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13881" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13882" + { + "name" "ETF2L 6v6 Division 3 Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13883" + { + "name" "ETF2L 6v6 Division 3 Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13884" + { + "name" "ETF2L 6v6 Division 3 Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13885" + { + "name" "ETF2L 6v6 Division 3 Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division3_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13886" + { + "name" "ETF2L 6v6 Division 4 Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13887" + { + "name" "ETF2L 6v6 Division 4 Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13888" + { + "name" "ETF2L 6v6 Division 4 Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13889" + { + "name" "ETF2L 6v6 Division 4 Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division4_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13890" + { + "name" "ETF2L 6v6 Low Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13891" + { + "name" "ETF2L 6v6 Low Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13892" + { + "name" "ETF2L 6v6 Low Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13893" + { + "name" "ETF2L 6v6 Low Playoff Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13894" + { + "name" "ETF2L 6v6 Low Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13895" + { + "name" "ETF2L 6v6 Open Gold Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13896" + { + "name" "ETF2L 6v6 Open Silver Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13897" + { + "name" "ETF2L 6v6 Open Bronze Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13898" + { + "name" "ETF2L 6v6 Open Playoff Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13899" + { + "name" "ETF2L 6v6 Open Participation Medal Summer 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Summer2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13900" + { + "name" "ETF2L 6v6 Premiership Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13901" + { + "name" "ETF2L 6v6 Premiership Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13902" + { + "name" "ETF2L 6v6 Premiership Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13903" + { + "name" "ETF2L 6v6 Premiership Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13904" + { + "name" "ETF2L 6v6 Division 1 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13905" + { + "name" "ETF2L 6v6 Division 1 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13906" + { + "name" "ETF2L 6v6 Division 1 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13907" + { + "name" "ETF2L 6v6 Division 1 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division1_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13908" + { + "name" "ETF2L 6v6 Division 2 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13909" + { + "name" "ETF2L 6v6 Division 2 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13910" + { + "name" "ETF2L 6v6 Division 2 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13911" + { + "name" "ETF2L 6v6 Division 2 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Division2_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13912" + { + "name" "ETF2L 6v6 Mid Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13913" + { + "name" "ETF2L 6v6 Mid Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13914" + { + "name" "ETF2L 6v6 Mid Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13915" + { + "name" "ETF2L 6v6 Mid Playoff Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13916" + { + "name" "ETF2L 6v6 Mid Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Mid_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13917" + { + "name" "ETF2L 6v6 Low Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13918" + { + "name" "ETF2L 6v6 Low Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13919" + { + "name" "ETF2L 6v6 Low Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13920" + { + "name" "ETF2L 6v6 Low Playoff Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Playoff" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13921" + { + "name" "ETF2L 6v6 Low Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Low_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13922" + { + "name" "ETF2L 6v6 Open Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13923" + { + "name" "ETF2L 6v6 Open Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13924" + { + "name" "ETF2L 6v6 Open Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13925" + { + "name" "ETF2L 6v6 Open Playoff Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Playoff" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13926" + { + "name" "ETF2L 6v6 Open Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_6v6_Open_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13927" + { + "name" "ETF2L Highlander Premiership Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13928" + { + "name" "ETF2L Highlander Premiership Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13929" + { + "name" "ETF2L Highlander Premiership Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13930" + { + "name" "ETF2L Highlander Premiership Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13931" + { + "name" "ETF2L Highlander Division 1 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13932" + { + "name" "ETF2L Highlander Division 1 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13933" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13934" + { + "name" "ETF2L Highlander Division 1 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13935" + { + "name" "ETF2L Highlander Division 2 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13936" + { + "name" "ETF2L Highlander Division 2 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13937" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13938" + { + "name" "ETF2L Highlander Division 2 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13939" + { + "name" "ETF2L Highlander Division 3 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13940" + { + "name" "ETF2L Highlander Division 3 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13941" + { + "name" "ETF2L Highlander Division 3 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13942" + { + "name" "ETF2L Highlander Division 3 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13943" + { + "name" "ETF2L Highlander Division 4 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13944" + { + "name" "ETF2L Highlander Division 4 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13945" + { + "name" "ETF2L Highlander Division 4 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13946" + { + "name" "ETF2L Highlander Division 4 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13947" + { + "name" "ETF2L Highlander Division 5 Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13948" + { + "name" "ETF2L Highlander Division 5 Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13949" + { + "name" "ETF2L Highlander Division 5 Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13950" + { + "name" "ETF2L Highlander Division 5 Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13951" + { + "name" "ETF2L Highlander Open Gold Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13952" + { + "name" "ETF2L Highlander Open Silver Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13953" + { + "name" "ETF2L Highlander Open Bronze Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13954" + { + "name" "ETF2L Highlander Open Playoff Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Playoff" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13955" + { + "name" "ETF2L Highlander Open Participation Medal Winter 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Winter2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13956" + { + "name" "ETF2L Highlander Premiership Gold Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13957" + { + "name" "ETF2L Highlander Premiership Silver Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13958" + { + "name" "ETF2L Highlander Premiership Bronze Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13959" + { + "name" "ETF2L Highlander Premiership Participation Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13960" + { + "name" "ETF2L Highlander Division 1 Gold Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13961" + { + "name" "ETF2L Highlander Division 1 Silver Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13962" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13963" + { + "name" "ETF2L Highlander Division 1 Participation Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13964" + { + "name" "ETF2L Highlander Division 2 Gold Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13965" + { + "name" "ETF2L Highlander Division 2 Silver Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13966" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13967" + { + "name" "ETF2L Highlander Division 2 Participation Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13968" + { + "name" "ETF2L Highlander Mid Gold Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13969" + { + "name" "ETF2L Highlander Mid Silver Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13970" + { + "name" "ETF2L Highlander Mid Bronze Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13971" + { + "name" "ETF2L Highlander Mid Playoff Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Playoff" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13972" + { + "name" "ETF2L Highlander Mid Participation Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13973" + { + "name" "ETF2L Highlander Low Gold Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13974" + { + "name" "ETF2L Highlander Low Silver Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13975" + { + "name" "ETF2L Highlander Low Bronze Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13976" + { + "name" "ETF2L Highlander Low Playoff Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Playoff" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "13977" + { + "name" "ETF2L Highlander Low Participation Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13978" + { + "name" "ETF2L Highlander Open Gold Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13979" + { + "name" "ETF2L Highlander Open Silver Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13980" + { + "name" "ETF2L Highlander Open Bronze Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13982" + { + "name" "ETF2L Highlander Open Participation Medal Spring 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Spring2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13983" + { + "name" "ETF2L Highlander Premiership Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13984" + { + "name" "ETF2L Highlander Premiership Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13985" + { + "name" "ETF2L Highlander Premiership Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13986" + { + "name" "ETF2L Highlander Premiership Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13987" + { + "name" "ETF2L Highlander Division 1 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13988" + { + "name" "ETF2L Highlander Division 1 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13989" + { + "name" "ETF2L Highlander Division 1 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13990" + { + "name" "ETF2L Highlander Division 1 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division1_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13991" + { + "name" "ETF2L Highlander Division 2 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13992" + { + "name" "ETF2L Highlander Division 2 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13993" + { + "name" "ETF2L Highlander Division 2 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13994" + { + "name" "ETF2L Highlander Division 2 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division2_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13995" + { + "name" "ETF2L Highlander Division 3 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "13996" + { + "name" "ETF2L Highlander Division 3 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "13997" + { + "name" "ETF2L Highlander Division 3 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "13998" + { + "name" "ETF2L Highlander Division 3 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division3_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "13999" + { + "name" "ETF2L Highlander Division 4 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14000" + { + "name" "ETF2L Highlander Division 4 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14001" + { + "name" "ETF2L Highlander Division 4 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14002" + { + "name" "ETF2L Highlander Division 4 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division4_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14003" + { + "name" "ETF2L Highlander Division 5 Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14004" + { + "name" "ETF2L Highlander Division 5 Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14005" + { + "name" "ETF2L Highlander Division 5 Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14006" + { + "name" "ETF2L Highlander Division 5 Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Division5_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14007" + { + "name" "ETF2L Highlander Open Gold Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14008" + { + "name" "ETF2L Highlander Open Silver Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14009" + { + "name" "ETF2L Highlander Open Bronze Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14010" + { + "name" "ETF2L Highlander Open Participation Medal Autumn 2023" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Autumn2023" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14011" + { + "name" "ETF2L Highlander Premiership Gold Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Gold" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14012" + { + "name" "ETF2L Highlander Premiership Silver Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Silver" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14013" + { + "name" "ETF2L Highlander Premiership Bronze Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Bronze" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14014" + { + "name" "ETF2L Highlander Premiership Participation Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Premiership_Participation" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14015" + { + "name" "ETF2L Highlander High Gold Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Gold" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14016" + { + "name" "ETF2L Highlander High Silver Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Silver" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14017" + { + "name" "ETF2L Highlander High Bronze Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Bronze" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14018" + { + "name" "ETF2L Highlander High Participation Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_High_Participation" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14019" + { + "name" "ETF2L Highlander Mid Gold Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Gold" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14020" + { + "name" "ETF2L Highlander Mid Silver Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Silver" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14021" + { + "name" "ETF2L Highlander Mid Bronze Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Bronze" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14022" + { + "name" "ETF2L Highlander Mid Participation Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Mid_Participation" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14023" + { + "name" "ETF2L Highlander Low Gold Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Gold" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14024" + { + "name" "ETF2L Highlander Low Silver Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Silver" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14025" + { + "name" "ETF2L Highlander Low Bronze Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Bronze" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14026" + { + "name" "ETF2L Highlander Low Playoff Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Playoff" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_playoffs/etf2l_2018_playoffs_%s.mdl" + } + } + "14027" + { + "name" "ETF2L Highlander Low Participation Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Low_Participation" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14028" + { + "name" "ETF2L Highlander Open Gold Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Gold" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_gold/etf2l_2018_gold_%s.mdl" + } + } + "14029" + { + "name" "ETF2L Highlander Open Silver Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Silver" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_silver/etf2l_2018_silver_%s.mdl" + } + } + "14030" + { + "name" "ETF2L Highlander Open Bronze Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Bronze" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_bronze/etf2l_2018_bronze_%s.mdl" + } + } + "14031" + { + "name" "ETF2L Highlander Open Participation Medal Winter 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Highlander_Open_Participation" + "item_description" "#TF_TournamentMedal_Winter2024" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_2018_iron/etf2l_2018_iron_%s.mdl" + } + } + "14032" + { + "name" "ETF2L Fresh Meat Challenge Gold Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Gold" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_gold/etf2l_fresh_meat_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_gold/etf2l_fresh_meat_gold_%s.mdl" + } + } + "14033" + { + "name" "ETF2L Fresh Meat Challenge Silver Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Silver" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_silver/etf2l_fresh_meat_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_silver/etf2l_fresh_meat_silver_%s.mdl" + } + } + "14034" + { + "name" "ETF2L Fresh Meat Challenge Bronze Medal Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Bronze" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_bronze/etf2l_fresh_meat_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_bronze/etf2l_fresh_meat_bronze_%s.mdl" + } + } + "14035" + { + "name" "ETF2L Fresh Meat Challenge Participant Season 3" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Meat_Challenge_Participant" + "item_description" "#TF_TournamentMedal_Season3" + "image_inventory" "backpack/workshop/player/items/all_class/etf2l_fresh_meat_participant/etf2l_fresh_meat_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/etf2l_fresh_meat_participant/etf2l_fresh_meat_participant_%s.mdl" + } + } + "14036" + { + "name" "ETF2L Ultiduo 7 Gold Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo7_Gold_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "14037" + { + "name" "ETF2L Ultiduo 7 Silver Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo7_Silver_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "14038" + { + "name" "ETF2L Ultiduo 7 Bronze Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo7_Bronze_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "14039" + { + "name" "ETF2L Ultiduo 7 Participation Medal" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_ETF2L_Ultiduo7_Participation_Medal" + "image_inventory" "backpack/player/items/all_class/etf2l_ultiduo_2012" + "model_player" "models/player/items/all_class/etf2l_ultiduo_2012.mdl" + "visuals" + { + "skin" "1" + } + } + "14040" + { + "name" "Osmium Ordinance Pyrite Pint 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Osmium_Ordinance_Pyrite" + "item_description" "#TF_TournamentMedal_Osmium_Ordinance_Pyrite_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/osmium_ordinance/osmium_pyrite" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_silver/canteen_crasher_silver_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16772608" + } + } + } + "14041" + { + "name" "Osmium Ordinance Platinum Pitcher 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Osmium_Ordinance_Platinum" + "item_description" "#TF_TournamentMedal_Osmium_Ordinance_Platinum_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/osmium_ordinance/osmium_platinum" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_platinum/canteen_crasher_platinum_%s.mdl" + } + } + "14042" + { + "name" "Osmium Ordinance Tungsten Tank 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Osmium_Ordinance_Tungsten" + "item_description" "#TF_TournamentMedal_Osmium_Ordinance_Tungsten_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/osmium_ordinance/osmium_tungsten" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/titanium_tank_participant/titanium_tank_participant_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "11382189" + } + } + } + "14043" + { + "name" "Osmium Ordinance Bohrium Buster 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Osmium_Ordinance_Bohrium" + "item_description" "#TF_TournamentMedal_Osmium_Ordinance_Bohrium_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/osmium_ordinance/osmium_bohrium" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/mappers_vs_machines_medal/mappers_vs_machines_medal_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "11382189" + } + } + } + "14044" + { + "name" "AsiaFortress Liquid.tf Open 1st Place Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Open_1st" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Open_1st_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_liquid_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16433443" + } + } + } + "14045" + { + "name" "AsiaFortress Liquid.tf Open 2nd Place Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Open_2nd" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Open_2nd_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_liquid_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "11645619" + } + } + } + "14046" + { + "name" "AsiaFortress Liquid.tf Open 3rd Place Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Open_3rd" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Open_3rd_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_liquid_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "6366476" + } + } + } + "14047" + { + "name" "AsiaFortress Liquid.tf Invite Participant Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Invite_Participant" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Invite_Participant_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_white" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16777215" + } + } + } + "14048" + { + "name" "AsiaFortress Liquid.tf Open Participant Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Open_Participant" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Open_Participant_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "14049" + { + "name" "AsiaFortress Liquid.tf Highlander Open 1st Place Summer 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_1st" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_1st_Summer2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_liquid_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16433443" + } + } + } + "14050" + { + "name" "AsiaFortress Liquid.tf Highlander Open 2nd Place Summer 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_2nd" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_2nd_Summer2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_liquid_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "11645619" + } + } + } + "14051" + { + "name" "AsiaFortress Liquid.tf Highlander Open 3rd Place Summer 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_3rd" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_3rd_Summer2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_liquid_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "6366476" + } + } + } + "14052" + { + "name" "AsiaFortress Liquid.tf Highlander Invite Participant Summer 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Invite_Participant" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Invite_Participant_Summer2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_white" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16777215" + } + } + } + "14053" + { + "name" "AsiaFortress Liquid.tf Highlander Open Participant Summer 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_Participant" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Highlander_Open_Participant_Summer2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + } + "14054" + { + "name" "AsiaFortress Liquid.tf Mercenary Mashup May 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_MercenaryMashup_Participant" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_MercenaryMashup_Participant_May2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_participant/asiafortress_mashup" + "model_player" "models/workshop/player/items/all_class/asiafortress_participant/asiafortress_participant_demo.mdl" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15879945" + } + } + } + "14055" + { + "name" "Osmium Ordinance Cobalt Keepsake 2024" + "prefab" "tournament_medal" + "capabilities" + { + "paintable" "1" + "nameable" "1" + } + "item_type_name" "#TF_Wearable_CommunityMedal" + "item_name" "#TF_TournamentMedal_Osmium_Ordinance_Cobalt" + "item_description" "#TF_TournamentMedal_Osmium_Ordinance_Cobalt_Desc" + "image_inventory" "backpack/workshop/player/items/all_class/osmium_ordinance/osmium_cobalt" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/canteen_crasher_silver/canteen_crasher_silver_%s.mdl" + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "5085183" + } + } + } + "14056" + { + "name" "LAN Downunder 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_1st" + "item_description" "#TF_TournamentMedal_LAN_Downunder_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_1st/downunder_1st" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_1st/downunder_1st_%s.mdl" + } + } + "14057" + { + "name" "LAN Downunder 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_2nd" + "item_description" "#TF_TournamentMedal_LAN_Downunder_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_2nd/downunder_2nd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_2nd/downunder_2nd_%s.mdl" + } + } + "14058" + { + "name" "LAN Downunder 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_3rd" + "item_description" "#TF_TournamentMedal_LAN_Downunder_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_3rd/downunder_3rd" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_3rd/downunder_3rd_%s.mdl" + } + } + "14059" + { + "name" "LAN Downunder Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LAN_Downunder_Participant" + "item_description" "#TF_TournamentMedal_LAN_Downunder_2024" + "image_inventory" "backpack/workshop/player/items/all_class/downunder_participant/downunder_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/downunder_participant/downunder_participant_%s.mdl" + } + } + "14060" + { + "name" "RGB 7 LAN 1st Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB7_LAN_Gold" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_gold/rgb_lan_gold_%s.mdl" + } + } + "14061" + { + "name" "RGB 7 LAN 2nd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB7_LAN_Silver" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_silver/rgb_lan_silver_%s.mdl" + } + } + "14062" + { + "name" "RGB 7 LAN 3rd Place 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB7_LAN_Bronze" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_bronze/rgb_lan_bronze_%s.mdl" + } + } + "14063" + { + "name" "RGB 7 LAN Participant 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_RGB7_LAN_Participant" + "item_description" "#TF_TournamentMedal_2024" + "image_inventory" "backpack/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/rgb_lan_participant/rgb_lan_participant_%s.mdl" + } + } + "14064" + { + "name" "LBTF2 Highlander Access 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "14065" + { + "name" "LBTF2 Highlander Access 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "14066" + { + "name" "LBTF2 Highlander Access 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "14067" + { + "name" "LBTF2 Highlander Access Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Access_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_participant_new" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "14068" + { + "name" "LBTF2 Highlander Principal 1st Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_1st" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_gold" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "3" + } + } + "14069" + { + "name" "LBTF2 Highlander Principal 2nd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_2nd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_silver" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "2" + } + } + "14070" + { + "name" "LBTF2 Highlander Principal 3rd Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_3rd" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_bronze" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "1" + } + } + "14071" + { + "name" "LBTF2 Highlander Principal Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_LBTF2_Highlander_Principal_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_participant_new" + "model_player_per_class" + { + "basename" "models/workshop/player/items/all_class/lbtf2_highlander/lbtf2_highlander_%s.mdl" + } + "visuals" + { + "skin" "0" + } + } + "14072" + { + "name" "AsiaFortress Liquid.tf Invite 1st Place Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Invite_1st" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Invite_1st_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold" + "model_player" "models/workshop/player/items/all_class/asiafortress_gold/asiafortress_gold_demo.mdl" + } + "14073" + { + "name" "AsiaFortress Liquid.tf Invite 2nd Place Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Invite_2nd" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Invite_2nd_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver" + "model_player" "models/workshop/player/items/all_class/asiafortress_silver/asiafortress_silver_demo.mdl" + } + "14074" + { + "name" "AsiaFortress Liquid.tf Invite 3rd Place Spring 2024" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_AF_Liquidtf_Invite_3rd" + "item_description" "#TF_TournamentMedal_AF_Liquidtf_Invite_3rd_Spring2024" + "image_inventory" "backpack/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze" + "model_player" "models/workshop/player/items/all_class/asiafortress_bronze/asiafortress_bronze_demo.mdl" + } + "14075" + { + "name" "ozfortress Premier 1st Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_first/ozfortress_sixes_prem_first_demo.mdl" + } + "14076" + { + "name" "ozfortress Premier 2nd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_second/ozfortress_sixes_prem_second_demo.mdl" + } + "14077" + { + "name" "ozfortress Premier 3rd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_third/ozfortress_sixes_prem_third_demo.mdl" + } + "14078" + { + "name" "ozfortress Premier Participant Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_prem_participant/ozfortress_sixes_prem_participant_demo.mdl" + } + "14079" + { + "name" "ozfortress High 1st Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_First_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "14080" + { + "name" "ozfortress High 2nd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Second_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "14081" + { + "name" "ozfortress High 3rd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Third_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "14082" + { + "name" "ozfortress High Participant Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_High_Participant" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "14083" + { + "name" "ozfortress Intermediate 1st Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_First_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "14084" + { + "name" "ozfortress Intermediate 2nd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Second_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "14085" + { + "name" "ozfortress Intermediate 3rd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Third_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "14086" + { + "name" "ozfortress Intermediate Participant Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Intermediate_Participant" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "14087" + { + "name" "ozfortress Main 1st Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "14088" + { + "name" "ozfortress Main 2nd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "14089" + { + "name" "ozfortress Main 3rd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "14090" + { + "name" "ozfortress Main Participant Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Main_Participant" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "14091" + { + "name" "ozfortress Open 1st Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_First_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_first/ozfortress_sixes_regular_first_demo.mdl" + } + "14092" + { + "name" "ozfortress Open 2nd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Second_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_second/ozfortress_sixes_regular_second_demo.mdl" + } + "14093" + { + "name" "ozfortress Open 3rd Place Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Third_Place" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_third/ozfortress_sixes_regular_third_demo.mdl" + } + "14094" + { + "name" "ozfortress Open Participant Season 40" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Open_Participant" + "item_description" "#TF_TournamentMedal_Season40" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_sixes_regular_participant/ozfortress_sixes_regular_participant_demo.mdl" + } + "14095" + { + "name" "ozfortress Highlander Premier First Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_First_Place" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "14096" + { + "name" "ozfortress Highlander Premier Second Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Second_Place" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "14097" + { + "name" "ozfortress Highlander Premier Third Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Third_Place" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "14098" + { + "name" "ozfortress Highlander Premier Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Premier_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + "14099" + { + "name" "ozfortress Highlander Main First Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_First_Place" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_first/ozfortress_highlander_first_demo.mdl" + } + "14100" + { + "name" "ozfortress Highlander Main Second Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Second_Place" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_second/ozfortress_highlander_second_demo.mdl" + } + "14101" + { + "name" "ozfortress Highlander Main Third Place Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Third_Place" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_third/ozfortress_highlander_third_demo.mdl" + } + "14102" + { + "name" "ozfortress Highlander Main Participant Season 7" + "prefab" "tournament_medal" + "item_name" "#TF_TournamentMedal_OzFortress_Highlander_Main_Participant" + "item_description" "#TF_TournamentMedal_Season7" + "image_inventory" "backpack/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant" + "model_player" "models/workshop/player/items/all_class/ozfortress_highlander_participant/ozfortress_highlander_participant_demo.mdl" + } + + + + "1899" + { + "name" "World Traveler" + "loadondemand" "1" + "prefab" "base_hat" + "item_class" "tf_wearable" + "capabilities" + { + "nameable" "1" + "paintable" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Hat" + "item_name" "#TF_WorldTraveler" + "item_description" "#TF_WorldTraveler_Desc" + "item_slot" "head" + "equip_region" "hat" + "image_inventory" "backpack/player/items/all_class/world_traveller" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "20" + "max_ilevel" "20" + "model_player_per_class" + { + "basename" "models/player/items/all_class/world_traveller_%s.mdl" + } + "drop_type" "drop" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "cosmetic_allow_inspect" "1" + } + "attributes" + { + "attach particle effect" + { + "attribute_class" "set_attached_particle" + "value" "20" + } + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "visuals" + { + "player_bodygroups" + { + "hat" "1" + "headphones" "1" + } + "code_controlled_bodygroup" + { + "function" "map_contributor" + "bodygroup" "medal" + } + } + "mouse_pressed_sound" "ui/item_hat_pickup.wav" + "drop_sound" "ui/item_hat_drop.wav" + } + "1900" + { + "name" "Map Token Egypt" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Egypt" + "item_description" "#TF_MapToken_Egypt_Desc" + "map_name" "#TF_Egypt" + "image_inventory" "backpack/player/items/all_class/stamp_egypt" + } + "1901" + { + "name" "Map Token Coldfront" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Coldfront" + "item_description" "#TF_MapToken_Coldfront_Desc" + "map_name" "#TF_Coldfront" + "image_inventory" "backpack/player/items/all_class/stamp_coldfront" + } + "1902" + { + "name" "Map Token Fastlane" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Fastlane" + "item_description" "#TF_MapToken_Fastlane_Desc" + "map_name" "#TF_Fastlane" + "image_inventory" "backpack/player/items/all_class/stamp_fastlane" + } + "1903" + { + "name" "Map Token Turbine" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Turbine" + "item_description" "#TF_MapToken_Turbine_Desc" + "map_name" "#TF_Turbine" + "image_inventory" "backpack/player/items/all_class/stamp_turbine" + } + "1904" + { + "name" "Map Token Steel" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Steel" + "item_description" "#TF_MapToken_Steel_Desc" + "map_name" "#TF_Steel" + "image_inventory" "backpack/player/items/all_class/stamp_steel" + } + "1905" + { + "name" "Map Token Junction" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Junction" + "item_description" "#TF_MapToken_Junction_Desc" + "map_name" "#TF_Junction" + "image_inventory" "backpack/player/items/all_class/stamp_junction" + } + "1906" + { + "name" "Map Token Watchtower" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Watchtower" + "item_description" "#TF_MapToken_Watchtower_Desc" + "map_name" "#TF_Watchtower" + "image_inventory" "backpack/player/items/all_class/stamp_watchtower" + } + "1907" + { + "name" "Map Token Hoodoo" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Hoodoo" + "item_description" "#TF_MapToken_Hoodoo_Desc" + "map_name" "#TF_Hoodoo" + "image_inventory" "backpack/player/items/all_class/stamp_hoodoo" + } + "1908" + { + "name" "Map Token Offblast" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Offblast" + "item_description" "#TF_MapToken_Offblast_Desc" + "map_name" "#TF_Offblast" + "image_inventory" "backpack/player/items/all_class/stamp_offblast" + } + "1909" + { + "name" "Map Token Yukon" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Yukon" + "item_description" "#TF_MapToken_Yukon_Desc" + "map_name" "#TF_Yukon" + "image_inventory" "backpack/player/items/all_class/stamp_yukon" + } + "1910" + { + "name" "Map Token Harvest" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Harvest" + "item_description" "#TF_MapToken_Harvest_Desc" + "map_name" "#TF_Harvest" + "image_inventory" "backpack/player/items/all_class/stamp_harvest" + } + "1911" + { + "name" "Map Token Freight" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Freight" + "item_description" "#TF_MapToken_Freight_Desc" + "map_name" "#TF_Freight" + "image_inventory" "backpack/player/items/all_class/stamp_freight" + } + "1912" + { + "name" "Map Token Mountain Lab" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_MountainLab" + "item_description" "#TF_MapToken_MountainLab_Desc" + "map_name" "#TF_MountainLab" + "image_inventory" "backpack/player/items/all_class/stamp_mountainlab" + } + "1913" + { + "name" "Map Token Manor Event" + "first_sale_date" "2010/10/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_ManorEvent" + "item_description" "#TF_MapToken_ManorEvent_Desc" + "map_name" "#TF_ManorEvent" + "image_inventory" "backpack/player/items/all_class/stamp_manor" + } + "1914" + { + "name" "Map Token Nightfall" + "first_sale_date" "2011/01/17" + "prefab" "map_token" + "item_name" "#TF_MapToken_Nightfall" + "item_description" "#TF_MapToken_Nightfall_Desc" + "map_name" "#TF_Nightfall" + "image_inventory" "backpack/player/items/all_class/stamp_nightfall" + } + "1915" + { + "name" "Map Token Frontier" + "first_sale_date" "2011/02/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Frontier" + "item_description" "#TF_MapToken_Frontier_Desc" + "map_name" "#TF_Frontier" + "image_inventory" "backpack/player/items/all_class/stamp_frontier" + } + "1916" + { + "name" "Map Token Lakeside" + "first_sale_date" "2011/02/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Lakeside" + "item_description" "#TF_MapToken_Lakeside_Desc" + "map_name" "#TF_Lakeside" + "image_inventory" "backpack/player/items/all_class/stamp_lakeside" + } + "1917" + { + "name" "Map Token Gullywash" + "first_sale_date" "2011/10/06" + "prefab" "map_token" + "item_name" "#TF_MapToken_Gullywash" + "item_description" "#TF_MapToken_Gullywash_Desc" + "map_name" "#TF_Gullywash" + "image_inventory" "backpack/player/items/all_class/stamp_gullywash" + } + "1918" + { + "name" "Map Token Kong King" + "first_sale_date" "2012/08/08" + "prefab" "map_token" + "item_name" "#TF_MapToken_KongKing" + "item_description" "#TF_MapToken_KongKing_Desc" + "map_name" "#TF_KongKing" + "image_inventory" "backpack/player/items/all_class/stamp_kongking" + } + "1919" + { + "name" "Map Token Process" + "first_sale_date" "2013/07/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_Process" + "item_description" "#TF_MapToken_Process_Desc" + "map_name" "#TF_Map_Process" + "image_inventory" "backpack/player/items/all_class/stamp_process" + } + "1920" + { + "name" "Map Token Standin" + "first_sale_date" "2013/07/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_Standin" + "item_description" "#TF_MapToken_Standin_Desc" + "map_name" "#TF_Map_Standin" + "image_inventory" "backpack/player/items/all_class/stamp_standin" + } + "1921" + { + "name" "Map Token Snakewater" + "first_sale_date" "2013/11/20" + "prefab" "map_token" + "item_name" "#TF_MapToken_Snakewater" + "item_description" "#TF_MapToken_Snakewater_Desc" + "map_name" "#TF_Map_Snakewater" + "image_inventory" "backpack/player/items/all_class/stamp_snakewater" + } + "1922" + { + "name" "Map Token Snowplow" + "first_sale_date" "2015/08/27" + "prefab" "map_token" + "item_name" "#TF_MapToken_Snowplow" + "item_description" "#TF_MapToken_Snowplow_Desc" + "map_name" "#TF_Map_Snowplow" + "ad_text" "#TF_MapToken_Snowplow_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_snowplow" + } + "1923" + { + "name" "Map Token Borneo" + "first_sale_date" "2015/08/27" + "prefab" "map_token" + "item_name" "#TF_MapToken_Borneo" + "item_description" "#TF_MapToken_Borneo_Desc" + "map_name" "#TF_Map_Borneo" + "ad_text" "#TF_MapToken_Borneo_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_borneo" + } + "1924" + { + "name" "Map Token Suijin" + "first_sale_date" "2015/08/27" + "prefab" "map_token" + "item_name" "#TF_MapToken_Suijin" + "item_description" "#TF_MapToken_Suijin_Desc" + "map_name" "#TF_Map_Suijin" + "ad_text" "#TF_MapToken_Suijin_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_suijin" + } + "1925" + { + "name" "Map Token 2Fort Invasion" + "first_sale_date" "2015/09/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_2FortInv" + "item_description" "#TF_MapToken_2FortInv_Desc" + "map_name" "#TF_Map_2FortInv" + "ad_text" "#TF_MapToken_2FortInv_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_2fort" + } + "1926" + { + "name" "Map Token Probed" + "first_sale_date" "2015/09/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Probed" + "item_description" "#TF_MapToken_Probed_Desc" + "map_name" "#TF_Map_Probed" + "ad_text" "#TF_MapToken_Probed_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_probed" + } + "1927" + { + "name" "Map Token Watergate" + "first_sale_date" "2015/09/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Watergate" + "item_description" "#TF_MapToken_Watergate_Desc" + "map_name" "#TF_Map_Watergate" + "ad_text" "#TF_MapToken_Watergate_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_watergate" + } + "1928" + { + "name" "Map Token Byre" + "first_sale_date" "2015/09/29" + "prefab" "map_token" + "item_name" "#TF_MapToken_Byre" + "item_description" "#TF_MapToken_Byre_Desc" + "map_name" "#TF_Map_Byre" + "ad_text" "#TF_MapToken_Byre_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_byre" + } + "1929" + { + "name" "Map Token Gorge Event" + "first_sale_date" "2015/10/26" + "prefab" "map_token" + "item_name" "#TF_MapToken_GorgeEvent" + "item_description" "#TF_MapToken_GorgeEvent_Desc" + "map_name" "#TF_Map_GorgeEvent" + "ad_text" "#TF_MapToken_GorgeEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_gorge_event" + } + "1930" + { + "name" "Map Token Sunshine Event" + "first_sale_date" "2015/10/26" + "prefab" "map_token" + "item_name" "#TF_MapToken_SunshineEvent" + "item_description" "#TF_MapToken_SunshineEvent_Desc" + "map_name" "#TF_Map_SunshineEvent" + "ad_text" "#TF_MapToken_SunshineEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sunshine_event" + } + "1931" + { + "name" "Map Token Moonshine Event" + "first_sale_date" "2015/10/26" + "prefab" "map_token" + "item_name" "#TF_MapToken_MoonshineEvent" + "item_description" "#TF_MapToken_MoonshineEvent_Desc" + "map_name" "#TF_Map_MoonshineEvent" + "ad_text" "#TF_MapToken_MoonshineEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_moonshine_event" + } + "1932" + { + "name" "Map Token Millstone Event" + "first_sale_date" "2015/10/26" + "prefab" "map_token" + "item_name" "#TF_MapToken_MillstoneEvent" + "item_description" "#TF_MapToken_MillstoneEvent_Desc" + "map_name" "#TF_Map_MillstoneEvent" + "ad_text" "#TF_MapToken_MillstoneEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_millstone_event" + } + "1933" + { + "name" "Map Token Snowycoast" + "first_sale_date" "2015/12/12" + "prefab" "map_token" + "item_name" "#TF_MapToken_Snowycoast" + "item_description" "#TF_MapToken_Snowycoast_Desc" + "map_name" "#TF_Map_Snowycoast" + "ad_text" "#TF_MapToken_Snowycoast_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_snowycoast" + } + "1934" + { + "name" "Map Token Vanguard" + "first_sale_date" "2015/12/12" + "prefab" "map_token" + "item_name" "#TF_MapToken_Vanguard" + "item_description" "#TF_MapToken_Vanguard_Desc" + "map_name" "#TF_Map_Vanguard" + "ad_text" "#TF_MapToken_Vanguard_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_vanguard" + } + "1935" + { + "name" "Map Token Landfall" + "first_sale_date" "2015/12/12" + "prefab" "map_token" + "item_name" "#TF_MapToken_Landfall" + "item_description" "#TF_MapToken_Landfall_Desc" + "map_name" "#TF_Map_Landfall" + "ad_text" "#TF_MapToken_Landfall_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_landfall" + } + "1936" + { + "name" "Map Token Highpass" + "first_sale_date" "2015/12/12" + "prefab" "map_token" + "item_name" "#TF_MapToken_Highpass" + "item_description" "#TF_MapToken_Highpass_Desc" + "map_name" "#TF_Map_Highpass" + "ad_text" "#TF_MapToken_Highpass_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_highpass" + } + "1937" + { + "name" "Map Token Sunshine" + "first_sale_date" "2016/06/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Sunshine" + "item_description" "#TF_MapToken_Sunshine_Desc" + "map_name" "#TF_Map_Sunshine" + "ad_text" "#TF_MapToken_Sunshine_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sunshine" + } + "1938" + { + "name" "Map Token Metalworks" + "first_sale_date" "2016/06/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Metalworks" + "item_description" "#TF_MapToken_Metalworks_Desc" + "map_name" "#TF_Map_Metalworks" + "ad_text" "#TF_MapToken_Metalworks_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_metalworks" + } + "1939" + { + "name" "Map Token Swiftwater" + "first_sale_date" "2016/06/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Swiftwater" + "item_description" "#TF_MapToken_Swiftwater_Desc" + "map_name" "#TF_Map_Swiftwater" + "ad_text" "#TF_MapToken_Swiftwater_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_swiftwater" + } + "1940" + { + "name" "Map Token Maple Ridge Event" + "first_sale_date" "2016/10/19" + "prefab" "map_token" + "item_name" "#TF_MapToken_MapleRidgeEvent" + "item_description" "#TF_MapToken_MapleRidgeEvent_Desc" + "map_name" "#TF_Map_MapleRidgeEvent" + "ad_text" "#TF_MapToken_MapleRidgeEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_maple_ridge_event" + } + "1941" + { + "name" "Map Token Fifth Curve Event" + "first_sale_date" "2016/10/19" + "prefab" "map_token" + "item_name" "#TF_MapToken_FifthCurveEvent" + "item_description" "#TF_MapToken_FifthCurveEvent_Desc" + "map_name" "#TF_Map_FifthCurveEvent" + "ad_text" "#TF_MapToken_FifthCurveEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_fifth_curve_event" + } + "1942" + { + "name" "Map Token Pit Of Death" + "first_sale_date" "2016/10/19" + "prefab" "map_token" + "item_name" "#TF_MapToken_PitOfDeath" + "item_description" "#TF_MapToken_PitOfDeath_Desc" + "map_name" "#TF_Map_PitOfDeath" + "ad_text" "#TF_MapToken_PitOfDeath_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_pit_of_death" + } + "1943" + { + "name" "Map Token Mossrock" + "first_sale_date" "2017/09/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_Mossrock" + "item_description" "#TF_MapToken_Mossrock_Desc" + "map_name" "#TF_Map_Mossrock" + "ad_text" "#TF_MapToken_Mossrock_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_mossrock" + } + "1944" + { + "name" "Map Token Lazarus" + "first_sale_date" "2017/09/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_Lazarus" + "item_description" "#TF_MapToken_Lazarus_Desc" + "map_name" "#TF_Map_Lazarus" + "ad_text" "#TF_MapToken_Lazarus_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_lazarus" + } + "1945" + { + "name" "Map Token Banana Bay" + "first_sale_date" "2017/09/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_BananaBay" + "item_description" "#TF_MapToken_BananaBay_Desc" + "map_name" "#TF_Map_BananaBay" + "ad_text" "#TF_MapToken_BananaBay_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_bananabay" + } + "1946" + { + "name" "Map Token Enclosure" + "first_sale_date" "2017/09/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_Enclosure" + "item_description" "#TF_MapToken_Enclosure_Desc" + "map_name" "#TF_Map_Enclosure" + "ad_text" "#TF_MapToken_Enclosure_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_enclosure" + } + "1947" + { + "name" "Map Token Brazil" + "first_sale_date" "2017/09/13" + "prefab" "map_token" + "item_name" "#TF_MapToken_Brazil" + "item_description" "#TF_MapToken_Brazil_Desc" + "map_name" "#TF_Map_Brazil" + "ad_text" "#TF_MapToken_Brazil_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_brazil" + } + "1948" + { + "name" "Map Token Bagel Event" + "first_sale_date" "2018/10/16" + "prefab" "map_token" + "item_name" "#TF_MapToken_BagelEvent" + "item_description" "#TF_MapToken_BagelEvent_Desc" + "map_name" "#TF_Map_BagelEvent" + "ad_text" "#TF_MapToken_BagelEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_bagel_event" + } + "1949" + { + "name" "Map Token Rumble Event" + "first_sale_date" "2018/10/16" + "prefab" "map_token" + "item_name" "#TF_MapToken_RumbleEvent" + "item_description" "#TF_MapToken_RumbleEvent_Desc" + "map_name" "#TF_Map_RumbleEvent" + "ad_text" "#TF_MapToken_RumbleEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_rumble_event" + } + "1950" + { + "name" "Map Token Monster Bash" + "first_sale_date" "2018/10/16" + "prefab" "map_token" + "item_name" "#TF_MapToken_MonsterBash" + "item_description" "#TF_MapToken_MonsterBash_Desc" + "map_name" "#TF_Map_MonsterBash" + "ad_text" "#TF_MapToken_MonsterBash_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_monster_bash" + } + "1951" + { + "name" "Map Token Slasher" + "first_sale_date" "2018/10/16" + "prefab" "map_token" + "item_name" "#TF_MapToken_Slasher" + "item_description" "#TF_MapToken_Slasher_Desc" + "map_name" "#TF_Map_Slasher" + "ad_text" "#TF_MapToken_Slasher_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_slasher" + } + "1952" + { + "name" "Map Token Cursed Cove" + "first_sale_date" "2018/10/16" + "prefab" "map_token" + "item_name" "#TF_MapToken_CursedCove" + "item_description" "#TF_MapToken_CursedCove_Desc" + "map_name" "#TF_Map_CursedCove" + "ad_text" "#TF_MapToken_CursedCove_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_cursed_cove" + } + "1953" + { + "name" "Map Token Laughter" + "first_sale_date" "2019/10/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Laughter" + "item_description" "#TF_MapToken_Laughter_Desc" + "map_name" "#TF_Map_Laughter" + "ad_text" "#TF_MapToken_Laughter_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_laughter" + } + "1954" + { + "name" "Map Token Precipice" + "first_sale_date" "2019/10/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Precipice" + "item_description" "#TF_MapToken_Precipice_Desc" + "map_name" "#TF_Map_Precipice" + "ad_text" "#TF_MapToken_Precipice_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_precipice" + } + "1955" + { + "name" "Map Token Megalo" + "first_sale_date" "2020/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Megalo" + "item_description" "#TF_MapToken_Megalo_Desc" + "map_name" "#TF_Map_Megalo" + "ad_text" "#TF_MapToken_Megalo_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_megalo" + } + "1956" + { + "name" "Map Token Hassle Castle" + "first_sale_date" "2020/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_HassleCastle" + "item_description" "#TF_MapToken_HassleCastle_Desc" + "map_name" "#TF_Map_HassleCastle" + "ad_text" "#TF_MapToken_HassleCastle_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_hasslecastle" + } + "1957" + { + "name" "Map Token Bloodwater" + "first_sale_date" "2020/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Bloodwater" + "item_description" "#TF_MapToken_Bloodwater_Desc" + "map_name" "#TF_Map_Bloodwater" + "ad_text" "#TF_MapToken_Bloodwater_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_bloodwater" + } + "1958" + { + "name" "Map Token Undergrove Event" + "first_sale_date" "2020/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_UndergroveEvent" + "item_description" "#TF_MapToken_UndergroveEvent_Desc" + "map_name" "#TF_Map_UndergroveEvent" + "ad_text" "#TF_MapToken_UndergroveEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_undergrove_event" + } + "1959" + { + "name" "Map Token Pier" + "first_sale_date" "2020/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Pier" + "item_description" "#TF_MapToken_Pier_Desc" + "map_name" "#TF_Map_Pier" + "ad_text" "#TF_MapToken_Pier_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_pier" + } + "1960" + { + "name" "Map Token SnowVille" + "first_sale_date" "2020/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_SnowVille" + "item_description" "#TF_MapToken_SnowVille_Desc" + "map_name" "#TF_Map_SnowVille" + "ad_text" "#TF_MapToken_SnowVille_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_snowville" + } + "1961" + { + "name" "Map Token Snowfall" + "first_sale_date" "2020/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Snowfall" + "item_description" "#TF_MapToken_Snowfall_Desc" + "map_name" "#TF_Map_Snowfall" + "ad_text" "#TF_MapToken_Snowfall_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_snowfall" + } + "1962" + { + "name" "Map Token Wutville" + "first_sale_date" "2020/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Wutville" + "item_description" "#TF_MapToken_Wutville_Desc" + "map_name" "#TF_Map_Wutville" + "ad_text" "#TF_MapToken_Wutville_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_wutville" + } + "1963" + { + "name" "Map Token Farmageddon" + "first_sale_date" "2021/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Farmageddon" + "item_description" "#TF_MapToken_Farmageddon_Desc" + "map_name" "#TF_Map_Farmageddon" + "ad_text" "#TF_MapToken_Farmageddon_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_farmageddon" + } + "1964" + { + "name" "Map Token Los Muertos" + "first_sale_date" "2021/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_LosMuertos" + "item_description" "#TF_MapToken_LosMuertos_Desc" + "map_name" "#TF_Map_LosMuertos" + "ad_text" "#TF_MapToken_LosMuertos_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_losmuertos" + } + "1965" + { + "name" "Map Token Erebus" + "first_sale_date" "2021/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Erebus" + "item_description" "#TF_MapToken_Erebus_Desc" + "map_name" "#TF_Map_Erebus" + "ad_text" "#TF_MapToken_Erebus_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_erebus" + } + "1966" + { + "name" "Map Token Terror" + "first_sale_date" "2021/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Terror" + "item_description" "#TF_MapToken_Terror_Desc" + "map_name" "#TF_Map_Terror" + "ad_text" "#TF_MapToken_Terror_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_terror" + } + "1967" + { + "name" "Map Token Graveyard" + "first_sale_date" "2021/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Graveyard" + "item_description" "#TF_MapToken_Graveyard_Desc" + "map_name" "#TF_Map_Graveyard" + "ad_text" "#TF_MapToken_Graveyard_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_graveyard" + } + "1968" + { + "name" "Map Token Sinthetic" + "first_sale_date" "2021/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Sinthetic" + "item_description" "#TF_MapToken_Sinthetic_Desc" + "map_name" "#TF_Map_Sinthetic" + "ad_text" "#TF_MapToken_Sinthetic_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sinthetic" + } + "1969" + { + "name" "Map Token Polar" + "first_sale_date" "2021/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Polar" + "item_description" "#TF_MapToken_Polar_Desc" + "map_name" "#TF_Map_Polar" + "ad_text" "#TF_MapToken_Polar_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_polar" + } + "1970" + { + "name" "Map Token Bread Space" + "first_sale_date" "2021/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_BreadSpace" + "item_description" "#TF_MapToken_BreadSpace_Desc" + "map_name" "#TF_Map_BreadSpace" + "ad_text" "#TF_MapToken_BreadSpace_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_breadspace" + } + "1971" + { + "name" "Map Token Chilly" + "first_sale_date" "2021/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Chilly" + "item_description" "#TF_MapToken_Chilly_Desc" + "map_name" "#TF_Map_Chilly" + "ad_text" "#TF_MapToken_Chilly_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_chilly" + } + "1972" + { + "name" "Map Token Cascade" + "first_sale_date" "2021/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Cascade" + "item_description" "#TF_MapToken_Cascade_Desc" + "map_name" "#TF_Map_Cascade" + "ad_text" "#TF_MapToken_Cascade_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_cascade" + } + "1973" + { + "name" "Map Token Altitude" + "first_sale_date" "2021/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Altitude" + "item_description" "#TF_MapToken_Altitude_Desc" + "map_name" "#TF_Map_Altitude" + "ad_text" "#TF_MapToken_Altitude_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_altitude" + } + "1974" + { + "name" "Map Token Doublefrost" + "first_sale_date" "2021/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Doublefrost" + "item_description" "#TF_MapToken_Doublefrost_Desc" + "map_name" "#TF_Map_Doublefrost" + "ad_text" "#TF_MapToken_Doublefrost_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_doublefrost" + } + "1975" + { + "name" "Map Token Soul Mill" + "first_sale_date" "2022/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_SoulMill" + "item_description" "#TF_MapToken_SoulMill_Desc" + "map_name" "#TF_Map_SoulMill" + "ad_text" "#TF_MapToken_SoulMill_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_soulmill" + } + "1976" + { + "name" "Map Token Helltrain" + "first_sale_date" "2022/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Helltrain" + "item_description" "#TF_MapToken_Helltrain_Desc" + "map_name" "#TF_Map_Helltrain" + "ad_text" "#TF_MapToken_Helltrain_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_helltrain" + } + "1977" + { + "name" "Map Token Bonesaw" + "first_sale_date" "2022/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Bonesaw" + "item_description" "#TF_MapToken_Bonesaw_Desc" + "map_name" "#TF_Map_Bonesaw" + "ad_text" "#TF_MapToken_Bonesaw_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_bonesaw" + } + "1978" + { + "name" "Map Token Crasher" + "first_sale_date" "2022/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Crasher" + "item_description" "#TF_MapToken_Crasher_Desc" + "map_name" "#TF_Map_Crasher" + "ad_text" "#TF_MapToken_Crasher_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_crasher" + } + "1979" + { + "name" "Map Token Ghoulpit" + "first_sale_date" "2022/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Ghoulpit" + "item_description" "#TF_MapToken_Ghoulpit_Desc" + "map_name" "#TF_Map_Ghoulpit" + "ad_text" "#TF_MapToken_Ghoulpit_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_ghoulpit" + } + "1980" + { + "name" "Map Token Spookeyridge" + "first_sale_date" "2022/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Spookeyridge" + "item_description" "#TF_MapToken_Spookeyridge_Desc" + "map_name" "#TF_Map_Spookeyridge" + "ad_text" "#TF_MapToken_Spookeyridge_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_spookeyridge" + } + "1981" + { + "name" "Map Token Frostwatch" + "first_sale_date" "2022/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Frostwatch" + "item_description" "#TF_MapToken_Frostwatch_Desc" + "map_name" "#TF_Map_Frostwatch" + "ad_text" "#TF_MapToken_Frostwatch_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_frostwatch" + } + "1982" + { + "name" "Map Token Frostcliff" + "first_sale_date" "2022/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Frostcliff" + "item_description" "#TF_MapToken_Frostcliff_Desc" + "map_name" "#TF_Map_Frostcliff" + "ad_text" "#TF_MapToken_Frostcliff_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_frostcliff" + } + "1983" + { + "name" "Map Token Rumford" + "first_sale_date" "2022/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Rumford" + "item_description" "#TF_MapToken_Rumford_Desc" + "map_name" "#TF_Map_Rumford" + "ad_text" "#TF_MapToken_Rumford_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_rumford_event" + } + "1984" + { + "name" "Map Token Frosty" + "first_sale_date" "2022/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Frosty" + "item_description" "#TF_MapToken_Frosty_Desc" + "map_name" "#TF_Map_Frosty" + "ad_text" "#TF_MapToken_Frosty_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_frosty" + } + "1985" + { + "name" "Map Token Coal Pit" + "first_sale_date" "2022/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_CoalPit" + "item_description" "#TF_MapToken_CoalPit_Desc" + "map_name" "#TF_Map_CoalPit" + "ad_text" "#TF_MapToken_CoalPit_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_coalpit" + } + "1986" + { + "name" "Map Token Sharkbay" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Sharkbay" + "item_description" "#TF_MapToken_Sharkbay_Desc" + "map_name" "#TF_Map_Sharkbay" + "ad_text" "#TF_MapToken_Sharkbay_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sharkbay" + } + "1987" + { + "name" "Map Token Rotunda" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Rotunda" + "item_description" "#TF_MapToken_Rotunda_Desc" + "map_name" "#TF_Map_Rotunda" + "ad_text" "#TF_MapToken_Rotunda_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_rotunda" + } + "1988" + { + "name" "Map Token Phoenix" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Phoenix" + "item_description" "#TF_MapToken_Phoenix_Desc" + "map_name" "#TF_Map_Phoenix" + "ad_text" "#TF_MapToken_Phoenix_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_phoenix" + } + "1989" + { + "name" "Map Token Cashworks" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Cashworks" + "item_description" "#TF_MapToken_Cashworks_Desc" + "map_name" "#TF_Map_Cashworks" + "ad_text" "#TF_MapToken_Cashworks_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_cashworks" + } + "1990" + { + "name" "Map Token Venice" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Venice" + "item_description" "#TF_MapToken_Venice_Desc" + "map_name" "#TF_Map_Venice" + "ad_text" "#TF_MapToken_Venice_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_venice" + } + "1991" + { + "name" "Map Token Reckoner" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Reckoner" + "item_description" "#TF_MapToken_Reckoner_Desc" + "map_name" "#TF_Map_Reckoner" + "ad_text" "#TF_MapToken_Reckoner_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_reckoner" + } + "1992" + { + "name" "Map Token Sulfur" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Sulfur" + "item_description" "#TF_MapToken_Sulfur_Desc" + "map_name" "#TF_Map_Sulfur" + "ad_text" "#TF_MapToken_Sulfur_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sulfur" + } + "1993" + { + "name" "Map Token Hardwood" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Hardwood" + "item_description" "#TF_MapToken_Hardwood_Desc" + "map_name" "#TF_Map_Hardwood" + "ad_text" "#TF_MapToken_Hardwood_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_hardwood" + } + "1994" + { + "name" "Map Token Pelican Peak" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_PelicanPeak" + "item_description" "#TF_MapToken_PelicanPeak_Desc" + "map_name" "#TF_Map_PelicanPeak" + "ad_text" "#TF_MapToken_PelicanPeak_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_pelican_peak" + } + "1995" + { + "name" "Map Token Selbyen" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Selbyen" + "item_description" "#TF_MapToken_Selbyen_Desc" + "map_name" "#TF_Map_Selbyen" + "ad_text" "#TF_MapToken_Selbyen_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_selbyen" + } + "1996" + { + "name" "Map Token VSH Tiny Rock" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_TinyRock" + "item_description" "#TF_MapToken_TinyRock_Desc" + "map_name" "#TF_Map_TinyRock" + "ad_text" "#TF_MapToken_TinyRock_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_tinyrock" + } + "1997" + { + "name" "Map Token VSH Distillery" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Distillery" + "item_description" "#TF_MapToken_Distillery_Desc" + "map_name" "#TF_Map_Distillery" + "ad_text" "#TF_MapToken_Distillery_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_distillery" + } + "1998" + { + "name" "Map Token VSH Skirmish" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Skirmish" + "item_description" "#TF_MapToken_Skirmish_Desc" + "map_name" "#TF_Map_Skirmish" + "ad_text" "#TF_MapToken_Skirmish_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_skirmish" + } + "1999" + { + "name" "Map Token VSH Nucleus" + "first_sale_date" "2023/07/09" + "prefab" "map_token" + "item_name" "#TF_MapToken_Nucleus" + "item_description" "#TF_MapToken_Nucleus_Desc" + "map_name" "#TF_Map_Nucleus" + "ad_text" "#TF_MapToken_Nucleus_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_nucleus" + } + "2500" + { + "name" "Map Token Perks" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Perks" + "item_description" "#TF_MapToken_Perks_Desc" + "map_name" "#TF_Map_Perks" + "ad_text" "#TF_MapToken_Perks_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_perks" + } + "2501" + { + "name" "Map Token Slime" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Slime" + "item_description" "#TF_MapToken_Slime_Desc" + "map_name" "#TF_Map_Slime" + "ad_text" "#TF_MapToken_Slime_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_slime" + } + "2502" + { + "name" "Map Token Lava Pit" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_LavaPit" + "item_description" "#TF_MapToken_LavaPit_Desc" + "map_name" "#TF_Map_LavaPit" + "ad_text" "#TF_MapToken_LavaPit_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_lavapit" + } + "2503" + { + "name" "Map Token Mannsylvania" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Mannsylvania" + "item_description" "#TF_MapToken_Mannsylvania_Desc" + "map_name" "#TF_Map_Mannsylvania" + "ad_text" "#TF_MapToken_Mannsylvania_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_mannsylvania" + } + "2504" + { + "name" "Map Token Sandcastle" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Sandcastle" + "item_description" "#TF_MapToken_Sandcastle_Desc" + "map_name" "#TF_Map_Sandcastle" + "ad_text" "#TF_MapToken_Sandcastle_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sandcastle" + } + "2505" + { + "name" "Map Token Spineyard" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Spineyard" + "item_description" "#TF_MapToken_Spineyard_Desc" + "map_name" "#TF_Map_Spineyard" + "ad_text" "#TF_MapToken_Spineyard_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_spineyard" + } + "2506" + { + "name" "Map Token Corruption" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Corruption" + "item_description" "#TF_MapToken_Corruption_Desc" + "map_name" "#TF_Map_Corruption" + "ad_text" "#TF_MapToken_Corruption_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_corruption" + } + "2507" + { + "name" "Map Token Murky" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Murky" + "item_description" "#TF_MapToken_Murky_Desc" + "map_name" "#TF_Map_Murky" + "ad_text" "#TF_MapToken_Murky_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_murky" + } + "2508" + { + "name" "Map Token Atoll" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Atoll" + "item_description" "#TF_MapToken_Atoll_Desc" + "map_name" "#TF_Map_Atoll" + "ad_text" "#TF_MapToken_Atoll_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_atoll" + } + "2509" + { + "name" "Map Token Woods" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Woods" + "item_description" "#TF_MapToken_Woods_Desc" + "map_name" "#TF_Map_Woods" + "ad_text" "#TF_MapToken_Woods_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_woods" + } + "2510" + { + "name" "Map Token Sanitarium" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Sanitarium" + "item_description" "#TF_MapToken_Sanitarium_Desc" + "map_name" "#TF_Map_Sanitarium" + "ad_text" "#TF_MapToken_Sanitarium_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_sanitarium" + } + "2511" + { + "name" "Map Token Devastation" + "first_sale_date" "2023/10/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Devastation" + "item_description" "#TF_MapToken_Devastation_Desc" + "map_name" "#TF_Map_Devastation" + "ad_text" "#TF_MapToken_Devastation_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_devastation" + } + "2512" + { + "name" "Map Token Snowtower" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Snowtower" + "item_description" "#TF_MapToken_Snowtower_Desc" + "map_name" "#TF_Map_Snowtower" + "ad_text" "#TF_MapToken_Snowtower_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_snowtower" + } + "2513" + { + "name" "Map Token Krampus" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Krampus" + "item_description" "#TF_MapToken_Krampus_Desc" + "map_name" "#TF_Map_Krampus" + "ad_text" "#TF_MapToken_Krampus_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_krampus" + } + "2514" + { + "name" "Map Token Haarp" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Haarp" + "item_description" "#TF_MapToken_Haarp_Desc" + "map_name" "#TF_Map_Haarp" + "ad_text" "#TF_MapToken_Haarp_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_haarp" + } + "2515" + { + "name" "Map Token Brew" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Brew" + "item_description" "#TF_MapToken_Brew_Desc" + "map_name" "#TF_Map_Brew" + "ad_text" "#TF_MapToken_Brew_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_brew" + } + "2516" + { + "name" "Map Token Hacksaw" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Hacksaw" + "item_description" "#TF_MapToken_Hacksaw_Desc" + "map_name" "#TF_Map_Hacksaw" + "ad_text" "#TF_MapToken_Hacksaw_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_hacksaw" + } + "2517" + { + "name" "Map Token Turbine Event" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_TurbineEvent" + "item_description" "#TF_MapToken_TurbineEvent_Desc" + "map_name" "#TF_Map_TurbineEvent" + "ad_text" "#TF_MapToken_TurbineEvent_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_turbine_winter" + } + "2518" + { + "name" "Map Token Carrier" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Carrier" + "item_description" "#TF_MapToken_Carrier_Desc" + "map_name" "#TF_Map_Carrier" + "ad_text" "#TF_MapToken_Carrier_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_carrier" + } + "2519" + { + "name" "Map Token Galleria" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Galleria" + "item_description" "#TF_MapToken_Galleria_Desc" + "map_name" "#TF_Map_Galleria" + "ad_text" "#TF_MapToken_Galleria_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_galleria" + } + "2520" + { + "name" "Map Token Emerge" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Emerge" + "item_description" "#TF_MapToken_Emerge_Desc" + "map_name" "#TF_Map_Emerge" + "ad_text" "#TF_MapToken_Emerge_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_emerge" + } + "2521" + { + "name" "Map Token Camber" + "first_sale_date" "2023/12/02" + "prefab" "map_token" + "item_name" "#TF_MapToken_Camber" + "item_description" "#TF_MapToken_Camber_Desc" + "map_name" "#TF_Map_Camber" + "ad_text" "#TF_MapToken_Camber_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_camber" + } + "2522" + { + "name" "Map Token Embargo" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Embargo" + "item_description" "#TF_MapToken_Embargo_Desc" + "map_name" "#TF_Map_Embargo" + "ad_text" "#TF_MapToken_Embargo_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_embargo" + } + "2523" + { + "name" "Map Token Odyssey" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Odyssey" + "item_description" "#TF_MapToken_Odyssey_Desc" + "map_name" "#TF_Map_Odyssey" + "ad_text" "#TF_MapToken_Odyssey_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_odyssey" + } + "2524" + { + "name" "Map Token Megaton" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Megaton" + "item_description" "#TF_MapToken_Megaton_Desc" + "map_name" "#TF_Map_Megaton" + "ad_text" "#TF_MapToken_Megaton_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_megaton" + } + "2525" + { + "name" "Map Token Cachoeira" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Cachoeira" + "item_description" "#TF_MapToken_Cachoeira_Desc" + "map_name" "#TF_Map_Cachoeira" + "ad_text" "#TF_MapToken_Cachoeira_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_cachoeira" + } + "2526" + { + "name" "Map Token Overgrown" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Overgrown" + "item_description" "#TF_MapToken_Overgrown_Desc" + "map_name" "#TF_Map_Overgrown" + "ad_text" "#TF_MapToken_Overgrown_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_overgrown" + } + "2527" + { + "name" "Map Token Hadal" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Hadal" + "item_description" "#TF_MapToken_Hadal_Desc" + "map_name" "#TF_Map_Hadal" + "ad_text" "#TF_MapToken_Hadal_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_hadal" + } + "2528" + { + "name" "Map Token Applejack" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Applejack" + "item_description" "#TF_MapToken_Applejack_Desc" + "map_name" "#TF_Map_Applejack" + "ad_text" "#TF_MapToken_Applejack_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_applejack" + } + "2529" + { + "name" "Map Token Atom Smash" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_AtomSmash" + "item_description" "#TF_MapToken_AtomSmash_Desc" + "map_name" "#TF_Map_AtomSmash" + "ad_text" "#TF_MapToken_AtomSmash_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_atom_smash" + } + "2530" + { + "name" "Map Token Canaveral" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Canaveral" + "item_description" "#TF_MapToken_Canaveral_Desc" + "map_name" "#TF_Map_Canaveral" + "ad_text" "#TF_MapToken_Canaveral_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_canaveral" + } + "2531" + { + "name" "Map Token Burghausen" + "first_sale_date" "2024/07/15" + "prefab" "map_token" + "item_name" "#TF_MapToken_Burghausen" + "item_description" "#TF_MapToken_Burghausen_Desc" + "map_name" "#TF_Map_Burghausen" + "ad_text" "#TF_MapToken_Burghausen_AdText" + "image_inventory" "backpack/player/items/all_class/stamp_burghausen" + } + + + + "5000" + { + "name" "Craft Bar Level 1" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "craft_item" + "craft_class" "craft_bar" + "craft_material_type" "craft_bar" + "show_in_armory" "1" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_Bar_A" + "image_inventory" "backpack/crafting/pile_of_junk" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "5001" + { + "name" "Craft Bar Level 2" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "craft_item" + "craft_class" "craft_bar" + "craft_material_type" "craft_bar" + "show_in_armory" "1" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_Bar_B" + "image_inventory" "backpack/crafting/pile_of_junk2" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "2" + "max_ilevel" "2" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "5002" + { + "name" "Craft Bar Level 3" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "craft_item" + "craft_class" "craft_bar" + "craft_material_type" "craft_bar" + "show_in_armory" "1" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_Bar_C" + "image_inventory" "backpack/crafting/pile_of_junk3" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "3" + "max_ilevel" "3" + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "5003" + { + "name" "Scout Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_1" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_scout" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "scout" + "used_by_classes" + { + "scout" "1" + } + } + "5004" + { + "name" "Sniper Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_2" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_sniper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "sniper" + "used_by_classes" + { + "sniper" "1" + } + } + "5005" + { + "name" "Soldier Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_3" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_soldier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "soldier" + "used_by_classes" + { + "soldier" "1" + } + } + "5006" + { + "name" "Demoman Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_4" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "demoman" + "used_by_classes" + { + "demoman" "1" + } + } + "5007" + { + "name" "Heavy Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_5" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "heavy" + "used_by_classes" + { + "heavy" "1" + } + } + "5008" + { + "name" "Medic Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_6" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_medic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "medic" + "used_by_classes" + { + "medic" "1" + } + } + "5009" + { + "name" "Pyro Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_7" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "pyro" + "used_by_classes" + { + "pyro" "1" + } + } + "5010" + { + "name" "Spy Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_8" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_spy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "spy" + "used_by_classes" + { + "spy" "1" + } + } + "5011" + { + "name" "Engineer Class Token" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "class_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_C_9" + "item_description" "#TF_CraftItem_Token_C_Desc" + "image_inventory" "backpack/crafting/token_engineer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "class_token_id" "engineer" + "used_by_classes" + { + "engineer" "1" + } + } + "5012" + { + "name" "Slot Token - Primary" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "slot_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "item_slot" "primary" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_S_1" + "item_description" "#TF_CraftItem_Token_S_Desc" + "image_inventory" "backpack/crafting/token_primary" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "slot_token_id" "primary" + } + "5013" + { + "name" "Slot Token - Secondary" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "slot_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "item_slot" "secondary" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_S_2" + "item_description" "#TF_CraftItem_Token_S_Desc" + "image_inventory" "backpack/crafting/token_secondary" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "slot_token_id" "secondary" + } + "5014" + { + "name" "Slot Token - Melee" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "slot_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "item_slot" "melee" + "show_in_armory" "1" + "armory_desc" "craftitem" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_S_3" + "item_description" "#TF_CraftItem_Token_S_Desc" + "image_inventory" "backpack/crafting/token_melee" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "slot_token_id" "melee" + } + "5018" + { + "name" "Slot Token - PDA2" + "first_sale_date" "2010/09/29" + "capabilities" + { + "can_craft_mark" "0" + } + "item_class" "slot_token" + "craft_class" "craft_token" + "craft_material_type" "craft_token" + "item_slot" "pda2" + "item_type_name" "#TF_CraftItem" + "item_name" "#CI_T_S_7" + "item_description" "#TF_CraftItem_Token_S_Desc" + "image_inventory" "backpack/crafting/token_pda" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "slot_token_id" "pda2" + } + "5020" + { + "name" "Name Tag" + "first_sale_date" "2010/09/29" + "prefab" "valve tool_nametag" + } + "5021" + { + "name" "Decoder Ring" + "prefab" "valve" + "first_sale_date" "2010/09/29" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5022" + { + "name" "Supply Crate" + "prefab" "eventcratebase" + "first_sale_date" "2010/09/29" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrate" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + "static_attrs" + { + "is commodity" "1" + } + } + "5023" + { + "name" "Paint Can" + "first_sale_date" "2010/09/29" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "paint_can" + "usage_capabilities" + { + "paintable" "1" + } + } + "armory_desc" "paintcan" + "store_remap" "Paint Can 5" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_PaintCan" + "item_description" "#TF_Tool_PaintCan_Desc" + "image_inventory" "backpack/player/items/crafting/paintcan" + "image_inventory_overlay" "backpack/player/items/crafting/paintcan_paintcolor" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_paint_can_pickup.wav" + "drop_sound" "ui/item_paint_can_pickup.wav" + } + + + + "5026" + { + "name" "Customize Texture Tool" + "prefab" "valve" + "first_sale_date" "2011/09/12" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "customize_texture_item" + "usage_capabilities" + { + "can_customize_texture" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_CustomTextureItem" + "item_description" "#TF_Tool_CustomTextureItem_Desc" + "image_inventory" "backpack/crafting/decal_tool" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "armory_desc" "decaltooltag" + "show_in_armory" "1" + } + "5027" + { + "name" "Paint Can 1" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_1" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "7511618" + } + } + } + "5028" + { + "name" "Paint Can 2" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_2" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "4345659" + } + } + } + "5029" + { + "name" "Paint Can 3" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_3" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "5322826" + } + } + } + "5030" + { + "name" "Paint Can 4" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_4" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "14204632" + } + } + } + "5031" + { + "name" "Paint Can 5" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_5" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8208497" + } + } + } + "5032" + { + "name" "Paint Can 6" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_6" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "13595446" + } + } + } + "5033" + { + "name" "Paint Can 7" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_7" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "10843461" + } + } + } + "5034" + { + "name" "Paint Can 8" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_8" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12955537" + } + } + } + "5035" + { + "name" "Paint Can 9" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_9" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "6901050" + } + } + } + "5036" + { + "name" "Paint Can 10" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_10" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8154199" + } + } + } + "5037" + { + "name" "Paint Can 11" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_11" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15185211" + } + } + } + "5038" + { + "name" "Paint Can 12" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_12" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8289918" + } + } + } + "5039" + { + "name" "Paint Can 13" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_13" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15132390" + } + } + } + "5040" + { + "name" "Paint Can 14" + "prefab" "valve paint_can" + "first_sale_date" "2010/09/29" + "item_name" "#TF_Tool_PaintCan_14" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "1315860" + } + } + } + "5041" + { + "name" "Supply Crate 2" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "armory_remap" "Supply Crate" + "show_in_armory" "0" + "item_name" "#TF_SupplyCrate" + "min_ilevel" "13" + "max_ilevel" "13" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + "static_attrs" + { + "is commodity" "1" + } + } + "5042" + { + "name" "Gift Wrap" + "prefab" "valve" + "first_sale_date" "2010/10/15" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "gift_wrap" + "use_string" "#WrapGift" + "usage" + { + "wrapped_gift_item_def" "Wrapped Gift" + } + "usage_capabilities" + { + "can_gift_wrap" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + "cannot restore" "1" + "cannot giftwrap" "1" + } + "armory_desc" "gift_wrap" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_GiftWrap" + "item_description" "#TF_Tool_GiftWrap_Desc" + "image_inventory" "backpack/crafting/gift_custom_supplies" + "image_inventory_size_w" "128" + "image_inventory_size_h" "96" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "5043" + { + "name" "Wrapped Gift" + "item_class" "tool" + "tool" + { + "type" "wrapped_gift" + "use_string" "#UnwrapGift" + } + "capabilities" + { + "nameable" "1" + "usable_gc" "1" + "usable_out_of_game" "1" + } + "armory_desc" "gift" + "show_in_armory" "1" + "item_type_name" "#TF_GIFT" + "item_name" "#TF_Tool_Gift" + "item_description" "#TF_Tool_Gift_Desc" + "image_inventory" "backpack/crafting/gift_custom" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + "static_attrs" + { + "cannot restore" "1" + "cannot giftwrap" "1" + } + } + "5044" + { + "name" "Description Tag" + "prefab" "valve" + "first_sale_date" "2010/10/15" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "desc" + "usage_capabilities" + { + "nameable" "1" + } + } + "static_attrs" + { + "is commodity" "1" + "cannot giftwrap" "1" + } + "armory_desc" "desctag" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_T_Dt" + "item_description" "#TF_Tool_Desctag_Desc" + "image_inventory" "backpack/crafting/desc_tag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5045" + { + "name" "Supply Crate 3" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "show_in_armory" "0" + "armory_remap" "Supply Crate" + "item_name" "#TF_SupplyCrate" + "min_ilevel" "13" + "max_ilevel" "13" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + "static_attrs" + { + "is commodity" "1" + } + } + "5046" + { + "name" "Paint Can Team Color" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2010/10/29" + "item_name" "#TF_Tool_PaintCan_TeamColor" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12073019" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "5801378" + } + } + } + "5048" + { + "name" "Winter Crate" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "winter" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "winter_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_WinterCrate" + "item_description" "#TF_WinterCrate_Desc" + "image_inventory" "backpack/player/items/crafting/festive_crate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5049" + { + "name" "Winter Key" + "prefab" "valve" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "armory_remap" "Decoder Ring" + "show_in_armory" "0" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5050" + { + "name" "Backpack Expander" + "prefab" "valve" + "first_sale_date" "2010/12/13" + "item_class" "tool" + "tool" + { + "type" "backpack_expander" + "usage" + { + "backpack_slots" "100" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "armory_desc" "backpack_expander" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_BackpackExpander" + "item_description" "#TF_Tool_BackpackExpander_Desc" + "image_inventory" "backpack/player/items/all_class/backpack_expander" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "59" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "5051" + { + "name" "Paint Can 15" + "prefab" "valve paint_can" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_15" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16738740" + } + } + } + "5052" + { + "name" "Paint Can 16" + "prefab" "valve paint_can" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_16" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "3100495" + } + } + } + "5053" + { + "name" "Paint Can 17" + "prefab" "valve paint_can" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_17" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8421376" + } + } + } + "5054" + { + "name" "Paint Can 18" + "prefab" "valve paint_can" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_18" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "3329330" + } + } + } + "5055" + { + "name" "Paint Can 19" + "prefab" "valve paint_can" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_19" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15787660" + } + } + } + "5056" + { + "name" "Paint Can 20" + "prefab" "valve paint_can" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_20" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "15308410" + } + } + } + "5057" + { + "name" "Christmas Key 2010" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_ChristmasKey2010" + "item_description" "#TF_Tool_ChristmasKey2010_Desc" + "image_inventory" "backpack/player/items/crafting/key_winter" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + } + "5060" + { + "name" "Paint Can Team Color 2" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_TeamColor2" + "item_description" "#TF_Tool_PaintCan_TeamColor2_Desc" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "4732984" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "3686984" + } + } + } + "5061" + { + "name" "Paint Can Team Color 3" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_TeamColor3" + "item_description" "#TF_Tool_PaintCan_TeamColor3_Desc" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "11049612" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "8626083" + } + } + } + "5062" + { + "name" "Paint Can Team Color 4" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_TeamColor4" + "item_description" "#TF_Tool_PaintCan_TeamColor4_Desc" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "3874595" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "1581885" + } + } + } + "5063" + { + "name" "Paint Can Team Color 5" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_TeamColor5" + "item_description" "#TF_Tool_PaintCan_TeamColor5_Desc" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "6637376" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "2636109" + } + } + } + "5064" + { + "name" "Paint Can Team Color 6" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_TeamColor6" + "item_description" "#TF_Tool_PaintCan_TeamColor6_Desc" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "8400928" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "2452877" + } + } + } + "5065" + { + "name" "Paint Can Team Color 7" + "prefab" "valve paint_can_team_color" + "first_sale_date" "2011/05/25" + "item_name" "#TF_Tool_PaintCan_TeamColor7" + "item_description" "#TF_Tool_PaintCan_TeamColor7_Desc" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12807213" + } + "set item tint RGB 2" + { + "attribute_class" "set_item_tint_rgb_2" + "value" "12091445" + } + } + } + "5066" + { + "name" "Summer Crate" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "summer" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "summer_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_SummerCrate" + "item_description" "#TF_SummerCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_summer" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5067" + { + "name" "Summer Key" + "first_sale_date" "2011/06/30" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "armory_remap" "Decoder Ring" + "show_in_armory" "0" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5068" + { + "name" "Supply Crate Rare" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "armory_remap" "Supply Crate" + "show_in_armory" "0" + "item_name" "#TF_SupplyCrateRare" + "min_ilevel" "13" + "max_ilevel" "13" + "item_description" "#TF_SupplyCrateRare_Desc" + "image_inventory" "backpack/player/items/crafting/crate_salvage" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + "static_attrs" + { + "is commodity" "1" + } + } + + + "5070" + { + "name" "Naughty Winter Crate 2011" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "winter2011_naughty" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "winter_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_WinterCrate2011_Naughty" + "item_description" "#TF_WinterCrate2011_Naughty_Desc" + "image_inventory" "backpack/player/items/crafting/bad_winter_crate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + "set supply crate series" + { + "attribute_class" "supply_crate_series" + "value" "35" + } + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5071" + { + "name" "Nice Winter Crate 2011" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "winter2011_nice" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "winter_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_WinterCrate2011_Nice" + "item_description" "#TF_WinterCrate2011_Nice_Desc" + "image_inventory" "backpack/player/items/crafting/winter_crate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + "set supply crate series" + { + "attribute_class" "supply_crate_series" + "value" "36" + } + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5072" + { + "name" "Naughty Winter Key 2011" + "prefab" "valve" + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5073" + { + "name" "Nice Winter Key 2011" + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5074" + { + "name" "Something Special For Someone Special (Tool)" + "first_sale_date" "2012/02/15" + "capabilities" + { + "nameable" "1" + "usable_gc" "1" + "usable_out_of_game" "1" + } + "tool" + { + "type" "wedding_ring" + } + "item_class" "tool" + "hack_disable_armory_type_desc" "1" + "show_in_armory" "1" + "item_type_name" "#TF_Wearable_Ring" + "item_name" "#TF_WeddingRing" + "item_description" "#TF_WeddingRing_Desc" + "armory_desc" "weddingring" + "image_inventory" "backpack/player/items/all_class/something_special" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "100" + "max_ilevel" "100" + "static_attrs" + { + "tool needs giftwrap" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_scrap_pickup.wav" + "drop_sound" "ui/item_metal_scrap_drop.wav" + } + "5075" + { + "name" "Something Special For Someone Special (Wearable)" + "prefab" "base_misc" + "capabilities" + { + "can_be_restored" "0" + } + "item_class" "tf_wearable" + "item_type_name" "#TF_Wearable_Ring" + "item_name" "#TF_WeddingRing" + "armory_remap" "Something Special For Someone Special (Tool)" + "image_inventory" "backpack/player/items/all_class/all_class_ring" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "item_slot" "misc" + "min_ilevel" "100" + "max_ilevel" "100" + "model_player_per_class" + { + "basename" "models/player/items/all_class/ring_%s.mdl" + } + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + "5076" + { + "name" "Paint Can 21" + "prefab" "valve paint_can" + "item_name" "#TF_Tool_PaintCan_21" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12377523" + } + } + } + "5077" + { + "name" "Paint Can 22" + "prefab" "valve paint_can" + "item_name" "#TF_Tool_PaintCan_22" + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2960676" + } + } + } + "5078" + { + "name" "Scorched Crate" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "scorched" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "scorched_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_ScorchedCrate" + "item_description" "#TF_ScorchedCrate_Desc" + "image_inventory" "backpack/crafting/fire_crate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5079" + { + "name" "Scorched Key" + "first_sale_date" "2012/06/27" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "0" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5080" + { + "name" "Fall Crate 2012" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "fall 2012" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "fall_2012_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_FallCrate2012" + "item_description" "#TF_FallCrate2012_Desc" + "image_inventory" "backpack/crafting/fall_crate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5081" + { + "name" "Fall Key 2012" + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5082" + { + "name" "Account Upgrade To Premium" + "prefab" "valve" + "first_sale_date" "2012/11/29" + "item_class" "tool" + "tool" + { + "type" "account_upgrade_to_premium" + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_AccountUpgradeToPremium" + "item_description" "#TF_Tool_AccountUpgradeToPremium_Desc" + "image_inventory" "backpack/crafting/gift_premium" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "59" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "5083" + { + "name" "Giftapult Gift Wrap" + "prefab" "valve" + "first_sale_date" "2013/12/17" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "gift_wrap" + "use_string" "#WrapGift" + "usage" + { + "wrapped_gift_item_def" "Wrapped Giftapult Package" + } + "usage_capabilities" + { + "can_gift_wrap" "1" + } + } + "static_attrs" + { + "cannot restore" "1" + "cannot giftwrap" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_GiftWrap_Global" + "item_description" "#TF_Tool_GiftWrap_Global_Desc" + "image_inventory" "backpack/crafting/giftapult" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "5084" + { + "name" "Wrapped Giftapult Package" + "item_class" "tool" + "tool" + { + "type" "wrapped_gift" + "use_string" "#DeliverGift" + "usage" + { + "target_type_global" "1" + "delivered_gift_item_def" "Delivered Giftapult Package" + } + } + "capabilities" + { + "nameable" "1" + "usable_gc" "1" + "usable_out_of_game" "1" + } + "armory_desc" "gift" + "show_in_armory" "1" + "item_type_name" "#TF_GIFT" + "item_name" "#TF_Tool_Gift_Global" + "item_description" "#TF_Tool_Gift_Global_Desc" + "image_inventory" "backpack/crafting/giftapult_loaded" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + "static_attrs" + { + "cannot restore" "1" + "cannot trade" "1" + "cannot giftwrap" "1" + } + } + "5085" + { + "name" "Delivered Giftapult Package" + "item_class" "tool" + "tool" + { + "type" "wrapped_gift" + "use_string" "#UnwrapGift" + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "armory_desc" "gift" + "show_in_armory" "1" + "item_type_name" "#TF_GIFT" + "item_name" "#TF_Tool_Gift_Global_Received" + "item_description" "#TF_Tool_Gift_Global_Received_Desc" + "image_inventory" "backpack/crafting/giftapult_gift" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + "static_attrs" + { + "cannot restore" "1" + "cannot trade" "1" + "cannot giftwrap" "1" + } + } + + "5086" + { + "name" "Summer Starter Kit" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "summer2014_level0" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_name" "#TF_Summer2014_Level0" + "item_description" "#TF_Summer2014_Level0_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/all_class/steam_summer_2014_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + } + "5087" + { + "name" "Summer Adventure Pack" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "summer2014_level1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_name" "#TF_Summer2014_Level1" + "item_description" "#TF_Summer2014_Level1_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/all_class/steam_summer_2014_bundle_2" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + } + + "5500" + { + "name" "RIFT Spider Hat Code" + "item_class" "tool" + "tool" + { + "type" "claimcode" + "usage" + { + "claim_type" "#TF_RIFT_SpiderHat_ClaimType" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "armory_desc" "claimcode" + "show_in_armory" "1" + "item_type_name" "#TF_ClaimCode" + "item_name" "#TF_RIFT_SpiderHat_ClaimCode" + "item_description" "#TF_RIFT_SpiderHat_ClaimCode_Desc" + "image_inventory" "backpack/crafting/ticket" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "5600" + { + "name" "Goldfish" + "prefab" "ash_remains" + "item_name" "#TF_Item_Goldfish_Burned" + "item_description" "#TF_Item_Goldfish_Burned_Desc" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5601" + { + "name" "Pocket Lint" + "prefab" "ash_remains" + "item_name" "#TF_Item_PocketLint_Burned" + "item_description" "#TF_Item_PocketLint_Burned_Desc" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5602" + { + "name" "Cheese Wheel" + "prefab" "ash_remains" + "item_name" "#TF_Item_CheeseWheel_Burned" + "item_description" "#TF_Item_CheeseWheel_Burned_Desc" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5603" + { + "name" "Banana Peel" + "prefab" "ash_remains" + "item_name" "#TF_Item_BananaPeel_Burned" + "item_description" "#TF_Item_BananaPeel_Burned_Desc" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5604" + { + "name" "Barn Door Plank" + "prefab" "ash_remains" + "item_name" "#TF_Item_BarnDoorPlank_Burned" + "item_description" "#TF_Item_BarnDoorPlank_Burned_Desc" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5605" + { + "name" "Secret Diary" + "prefab" "halloween2013_spellbook" + "item_type_name" "#TF_Spellbook_Type" + "craft_material_type" "" + "item_name" "#TF_Item_SecretDiary_FireProof" + "item_type_name" "#TF_Item_SecretDiary_Type" + "item_description" "#TF_Item_SecretDiary_FireProof_Desc" + "image_inventory" "backpack/crafting/diary_book" + "extra_wearable" "models/player/items/all_class/hwn_spellbook_diary.mdl" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + "static_attrs" + { + "limited quantity item" "1" + } + } + "5606" + { + "name" "Damaged Capacitor" + "prefab" "ash_remains base_misc" + "item_class" "tf_wearable" + "item_slot" "misc" + "craft_material_type" "" + "expiration_date" "" + "item_type_name" "#TF_Item_DamagedCapacitor_Type" + "item_name" "#TF_Item_DamagedCapacitor" + "item_description" "#TF_Item_DamagedCapacitor_Desc" + "image_inventory" "backpack/crafting/capacitor" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "5607" + { + "name" "Pile Of Ash" + "item_class" "tf_wearable" + "expiration_date" "2012-07-11 01:00:00" + "tool" + { + "type" "gift" + "use_string" "#RummageThroughAsh" + "usage" + { + "loot_list" "pyro_ash_pile_loot_list" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_name" "#TF_PileOfAsh" + "item_description" "#TF_PileOfAsh_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/ash_pile" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + + "5608" + { + "name" "Voodoo-Cursed Item (Armory)" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursed_Armory" + "item_description" "#TF_Item_VoodooCursed_Armory_Desc" + "image_inventory" "backpack/hwn_crafting/mvm_skeleton_arm" + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "5609" + { + "name" "Voodoo-Cursed Old Boot" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedOldBoot" + "item_description" "#TF_Item_VoodooCursedOldBoot_Desc" + "image_inventory" "backpack/hwn_crafting/hh_gib_boot" + "mouse_pressed_sound" "ui/item_leather_pickup.wav" + "drop_sound" "ui/item_leather_pickup.wav" + } + "5610" + { + "name" "Voodoo-Cursed Skeleton" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedSkeleton" + "item_description" "#TF_Item_VoodooCursedSkeleton_Desc" + "image_inventory" "backpack/hwn_crafting/mvm_skeleton_arm" + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "5611" + { + "name" "Voodoo-Cursed Bag Of Quicklime" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedQuicklime" + "item_description" "#TF_Item_VoodooCursedQuicklime_Desc" + "image_inventory" "backpack/hwn_crafting/sack_flat" + "mouse_pressed_sound" "ui/item_pack_pickup.wav" + "drop_sound" "ui/item_pack_pickup.wav" + } + "5612" + { + "name" "Voodoo-Cursed Robot Arm" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedRobotArm" + "item_description" "#TF_Item_VoodooCursedRobotArm_Desc" + "image_inventory" "backpack/hwn_crafting/soldierbot_gib_arm2" + "mouse_pressed_sound" "ui/item_robot_arm_pickup.wav" + "drop_sound" "ui/item_robot_arm_drop.wav" + } + "5613" + { + "name" "Voodoo-Cursed Novelty Bass" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedBass" + "item_description" "#TF_Item_VoodooCursedBass_Desc" + "image_inventory" "backpack/hwn_crafting/trophy_bass" + "mouse_pressed_sound" "ui/item_gooey_pickup.wav" + "drop_sound" "ui/item_gooey_pickup.wav" + } + "5614" + { + "name" "Voodoo-Cursed Sticky-Bomb" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedStickyBomb" + "item_description" "#TF_Item_VoodooCursedStickyBomb_Desc" + "image_inventory" "backpack/hwn_crafting/w_stickybomb_gib4" + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + "5615" + { + "name" "Voodoo-Cursed Nail" + "prefab" "voodoo_cursed" + "item_name" "#TF_Item_VoodooCursedNail" + "item_description" "#TF_Item_VoodooCursedNail_Desc" + "image_inventory" "backpack/hwn_crafting/w_nail" + "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" + "drop_sound" "ui/item_light_gun_drop.wav" + } + + "5616" + { + "name" "Voodoo-Cursed Soul (Armory)" + "prefab" "zombie" + "item_name" "#TF_Item_Zombie_Armory" + "show_in_armory" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "item_description" "#TF_Item_Zombie_Armory_Desc" + "image_inventory" "backpack/player/items/engineer/engineer_zombie" + } + "5617" + { + "name" "Zombie Scout" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieScout" + "model_player" "models/player/items/scout/scout_zombie.mdl" + "equip_regions" + { + "zombie_body" "1" + "feet" "1" + } + "used_by_classes" + { + "scout" "1" + } + "item_description" "#TF_Item_ZombieScout_Desc" + "image_inventory" "backpack/player/items/scout/scout_zombie" + } + "5618" + { + "name" "Zombie Soldier" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieSoldier" + "model_player" "models/player/items/soldier/soldier_zombie.mdl" + "used_by_classes" + { + "soldier" "1" + } + "item_description" "#TF_Item_ZombieSoldier_Desc" + "image_inventory" "backpack/player/items/soldier/soldier_zombie" + } + "5619" + { + "name" "Zombie Heavy" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieHeavy" + "model_player" "models/player/items/heavy/heavy_zombie.mdl" + "used_by_classes" + { + "heavy" "1" + } + "item_description" "#TF_Item_ZombieHeavy_Desc" + "image_inventory" "backpack/player/items/heavy/heavy_zombie" + } + "5620" + { + "name" "Zombie Demo" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieDemoman" + "model_player" "models/player/items/demo/demo_zombie.mdl" + "used_by_classes" + { + "demoman" "1" + } + "item_description" "#TF_Item_ZombieDemoman_Desc" + "image_inventory" "backpack/player/items/demo/demo_zombie" + } + "5621" + { + "name" "Zombie Engineer" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieEngineer" + "model_player" "models/player/items/engineer/engineer_zombie.mdl" + "used_by_classes" + { + "engineer" "1" + } + "item_description" "#TF_Item_ZombieEngineer_Desc" + "image_inventory" "backpack/player/items/engineer/engineer_zombie" + } + "5622" + { + "name" "Zombie Medic" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieMedic" + "model_player" "models/player/items/medic/medic_zombie.mdl" + "used_by_classes" + { + "medic" "1" + } + "item_description" "#TF_Item_ZombieMedic_Desc" + "image_inventory" "backpack/player/items/medic/medic_zombie" + } + "5623" + { + "name" "Zombie Spy" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieSpy" + "model_player" "models/player/items/spy/spy_zombie.mdl" + "used_by_classes" + { + "spy" "1" + } + "item_description" "#TF_Item_ZombieSpy_Desc" + "image_inventory" "backpack/player/items/spy/spy_zombie" + } + "5624" + { + "name" "Zombie Pyro" + "prefab" "zombie" + "item_name" "#TF_Item_ZombiePyro" + "model_player" "models/player/items/pyro/pyro_zombie.mdl" + "equip_regions" + { + "zombie_body" "1" + "pyro_head_replacement" "1" + } + "used_by_classes" + { + "pyro" "1" + } + "item_description" "#TF_Item_ZombiePyro_Desc" + "image_inventory" "backpack/player/items/pyro/pyro_zombie" + } + "5625" + { + "name" "Zombie Sniper" + "prefab" "zombie" + "item_name" "#TF_Item_ZombieSniper" + "model_player" "models/player/items/sniper/sniper_zombie.mdl" + "used_by_classes" + { + "sniper" "1" + } + "item_description" "#TF_Item_ZombieSniper_Desc" + "image_inventory" "backpack/player/items/sniper/sniper_zombie" + } + + "5626" + { + "name" "Pile Of Curses" + "item_class" "tf_wearable" + "expiration_date" "!end_of_halloween" + "tool" + { + "type" "gift" + "use_string" "#RummageThroughCurses" + "usage" + { + "loot_list" "halloween_loot_list_2012_curse_pile" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_name" "#TF_PileOfCurses" + "item_description" "#TF_PileOfCurses_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/ash_pile_haunted" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + } + "5627" + { + "name" "Eerie Crate" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "halloween2012" + } + "capabilities" + { + "decodable" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_HalloweenCrate2012" + "item_description" "#TF_HalloweenCrate2012_Desc" + "image_inventory" "backpack/player/items/crafting/crate_halloween" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "holiday_restriction" "halloween" + "item_quality" "unique" + "min_ilevel" "10" + "max_ilevel" "10" + "loot_list_rare_item_footer" "#Econ_Revolving_Loot_List_Rare_Item_Halloween" + "attributes" + { + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5628" + { + "name" "Eerie Key" + "first_sale_date" "2012/10/31" + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "5629" + { + "name" "Naughty Winter Crate 2012" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "winter2012_naughty" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "winter_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_WinterCrate2012_Naughty" + "item_description" "#TF_WinterCrate2012_Naughty_Desc" + "image_inventory" "backpack/crafting/smissmass_crate_wicked" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "12" + "max_ilevel" "12" + "attributes" + { + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5630" + { + "name" "Nice Winter Crate 2012" + "item_class" "supply_crate" + "craft_class" "supply_crate" + "craft_material_type" "supply_crate" + "tool" + { + "type" "" + "usage" + { + } + "restriction" "winter2012_nice" + } + "capabilities" + { + "decodable" "1" + } + "armory_desc" "winter_crate" + "show_in_armory" "1" + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_WinterCrate2012_Nice" + "item_description" "#TF_WinterCrate2012_Nice_Desc" + "image_inventory" "backpack/crafting/smissmass_crate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "12" + "max_ilevel" "12" + "attributes" + { + } + "static_attrs" + { + "is commodity" "1" + } + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5631" + { + "name" "Naughty Winter Key 2012" + "prefab" "valve" + "item_class" "tool" + "craft_class" "tool" + "first_sale_date" "2012/12/21" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5632" + { + "name" "Nice Winter Key 2012" + "item_class" "tool" + "craft_class" "tool" + "first_sale_date" "2012/12/21" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "5633" + { + "name" "Strange Bacon Grease" + "prefab" "strangifier_base" + "tool" + { + "usage" + { + "itemdef_restrictions" + { + "264" "1" + } + } + } + "item_name" "#TF_FryingPanStrangifier" + "item_description" "#TF_FryingPanStrangifier_Desc" + "image_inventory" "backpack/crafting/strange_bacon_grease" + } + + "5635" + { + "name" "Robo Crate 2013" + "prefab" "eventcratebase" + "tool" + { + "restriction" "robo2013" + } + "item_name" "#TF_RoboCrate" + "item_description" "#TF_RoboCrate_Desc" + "image_inventory" "backpack/player/items/crafting/robo_crate" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5636" + } + } + "static_attrs" + { + "is commodity" "1" + } + "event_desc_footer" "" + } + + "5636" + { + "name" "Robo Key 2013" + "prefab" "robokey_rules" + "item_class" "tool" + "craft_class" "tool" + "first_sale_date" "2013/05/20" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "robo2013" + } + "static_attrs" + { + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_RoboKey2013" + "item_description" "#TF_Tool_RoboKey2013_Desc" + "image_inventory" "backpack/player/items/crafting/robo_key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5637" + { + "name" "Gift - 23 RoboKeys 2013" + "prefab" "robokey_rules" + "loadondemand" "1" + "item_class" "tf_wearable" + "first_sale_date" "2013/05/19" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "robo_2013_gift_key_loot_list" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_24" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_RoboKey2013_EntireServer" + "item_description" "#TF_Gift_RoboKey2013_EntireServer_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/pile_of_robo_keys" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "23" + "max_ilevel" "23" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5638" + { + "name" "Gift - 1 RoboKey 2013" + "prefab" "robokey_rules" + "loadondemand" "1" + "item_class" "tf_wearable" + "first_sale_date" "2013/05/19" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "robo_2013_gift_key_loot_list" + "max_recipients" "1" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_1" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_RoboKey2013_RandomPerson" + "item_description" "#TF_Gift_RoboKey2013_RandomPerson_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/gift_wrapped_robo_key" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + + + + "5639" + { + "name" "July 2013 Claim Check" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "jul_2013_claim_check_loot" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "item_type_name" "#TF_LockedCrate" + "item_name" "#TF_ClaimCheck_July2013" + "item_description" "#TF_ClaimCheck_July2013_Desc" + "image_inventory" "backpack/crafting/claimcheck" + "min_ilevel" "61" + "max_ilevel" "69" + } + + "5640" + { + "name" "July 2013 Early Crate" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_early" + } + "item_name" "#TF_Jul2013Crate_early" + "item_description" "#TF_Jul2013Crate_early_Desc" + "image_inventory" "backpack/crafting/summer_appetizer_crate" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5641" + } + } + } + "5641" + { + "name" "July 2013 Early Key" + "prefab" "eventkey" + "first_sale_date" "2013/07/02" + "tool" + { + "restriction" "jul2013_early" + } + "item_name" "#TF_Jul2013Key_early" + "item_description" "#TF_Jul2013Key_early_Desc" + "image_inventory" "backpack/crafting/summer_jul13_appetizer_key" + } + + "5642" + { + "name" "July 2013 Crate 01" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_01" + } + "item_name" "#TF_Jul2013Crate_01" + "item_description" "#TF_Jul2013Crate_01_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_01" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5643" + } + } + } + "5643" + { + "name" "July 2013 Key 01" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_01" + } + "item_name" "#TF_Jul2013Key_01" + "item_description" "#TF_Jul2013Key_01_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_01" + } + "5644" + { + "name" "July 2013 Crate 02" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_02" + } + "item_name" "#TF_Jul2013Crate_02" + "item_description" "#TF_Jul2013Crate_02_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_02" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5645" + } + } + } + "5645" + { + "name" "July 2013 Key 02" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_02" + } + "item_name" "#TF_Jul2013Key_02" + "item_description" "#TF_Jul2013Key_02_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_02" + } + "5646" + { + "name" "July 2013 Crate 03" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_03" + } + "item_name" "#TF_Jul2013Crate_03" + "item_description" "#TF_Jul2013Crate_03_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_03" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5647" + } + } + } + "5647" + { + "name" "July 2013 Key 03" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_03" + } + "item_name" "#TF_Jul2013Key_03" + "item_description" "#TF_Jul2013Key_03_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_03" + } + "5648" + { + "name" "July 2013 Crate 04" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_04" + } + "item_name" "#TF_Jul2013Crate_04" + "item_description" "#TF_Jul2013Crate_04_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_04" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5649" + } + } + } + "5649" + { + "name" "July 2013 Key 04" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_04" + } + "item_name" "#TF_Jul2013Key_04" + "item_description" "#TF_Jul2013Key_04_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_04" + } + "5650" + { + "name" "July 2013 Crate 05" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_05" + } + "item_name" "#TF_Jul2013Crate_05" + "item_description" "#TF_Jul2013Crate_05_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_05" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5651" + } + } + } + "5651" + { + "name" "July 2013 Key 05" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_05" + } + "item_name" "#TF_Jul2013Key_05" + "item_description" "#TF_Jul2013Key_05_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_05" + } + "5652" + { + "name" "July 2013 Crate 06" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_06" + } + "item_name" "#TF_Jul2013Crate_06" + "item_description" "#TF_Jul2013Crate_06_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_06" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5653" + } + } + } + "5653" + { + "name" "July 2013 Key 06" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_06" + } + "item_name" "#TF_Jul2013Key_06" + "item_description" "#TF_Jul2013Key_06_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_06" + } + "5654" + { + "name" "July 2013 Crate 07" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_07" + } + "item_name" "#TF_Jul2013Crate_07" + "item_description" "#TF_Jul2013Crate_07_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_07" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5655" + } + } + } + "5655" + { + "name" "July 2013 Key 07" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_07" + } + "item_name" "#TF_Jul2013Key_07" + "item_description" "#TF_Jul2013Key_07_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_07" + } + "5656" + { + "name" "July 2013 Crate 08" + "prefab" "eventcratebase" + "tool" + { + "restriction" "jul2013_08" + } + "item_name" "#TF_Jul2013Crate_08" + "item_description" "#TF_Jul2013Crate_08_Desc" + "image_inventory" "backpack\player\items\crafting\crate_summer_cooler_08" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5657" + } + } + } + "5657" + { + "name" "July 2013 Key 08" + "prefab" "eventkey" + "first_sale_date" "2013/07/11" + "tool" + { + "restriction" "jul2013_08" + } + "item_name" "#TF_Jul2013Key_08" + "item_description" "#TF_Jul2013Key_08_Desc" + "image_inventory" "backpack\player\items\crafting\key_summer_08" + } + + "5658" + { + "name" "Gift - 23 SummerKeys 2013" + "prefab" "randomgift" + "first_sale_date" "2013/07/10" + "tool" + { + "usage" + { + "loot_list" "jul_2013_gift_key_loot_list" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "item_name" "#TF_Gift_Jul2013_EntireServer" + "item_description" "#TF_Gift_Jul2013_EntireServer_Desc" + "image_inventory" "backpack/player/items/crafting/pile_of_summer_keys" + "min_ilevel" "23" + "max_ilevel" "23" + } + "5659" + { + "name" "Gift - 1 SummerKey 2013" + "prefab" "randomgift" + "first_sale_date" "2013/07/10" + "tool" + { + "usage" + { + "loot_list" "jul_2013_gift_key_loot_list" + "max_recipients" "1" + } + } + "static_attrs" + { + "is commodity" "1" + } + "item_name" "#TF_Gift_Jul2013_RandomPerson" + "item_description" "#TF_Gift_Jul2013_RandomPerson_Desc" + "image_inventory" "backpack/player/items/crafting/gift_wrapped_summer_key" + "min_ilevel" "1" + "max_ilevel" "1" + } + + + "5660" + { + "name" "Supply Crate Rare 2" + "prefab" "eventcratebase" + "show_in_armory" "0" + "item_name" "#TF_SupplyCrateRare2" + "item_description" "#TF_SupplyCrateRare2_Desc" + "image_inventory" "backpack/player/items/crafting/crate_select_reserve" + "min_ilevel" "10" + "max_ilevel" "10" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + "5661" + { + "name" "Pomson 6000 Strangifier" + "prefab" "strangifier_base" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "588" + } + } + "item_name" "#TF_Strangifier_Name" + "item_description" "#TF_Strangifier_Desc" + "image_inventory" "backpack/crafting/strange_generic" + } + + + "5700" + { + "name" "Robits Loot 01" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_01" + "item_description" "#TF_Item_Robits_Loot_01_Desc" + "image_inventory" "backpack/crafting/mvm_robits_01" + } + + "5701" + { + "name" "Robits Loot 02" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_02" + "item_description" "#TF_Item_Robits_Loot_02_Desc" + "image_inventory" "backpack/crafting/mvm_robits_02" + } + + "5702" + { + "name" "Robits Loot 03" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_03" + "item_description" "#TF_Item_Robits_Loot_03_Desc" + "image_inventory" "backpack/crafting/mvm_robits_03" + } + + "5703" + { + "name" "Robits Loot 04" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_04" + "item_description" "#TF_Item_Robits_Loot_04_Desc" + "image_inventory" "backpack/crafting/mvm_robits_04" + } + + "5704" + { + "name" "Robits Loot 05" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_05" + "item_description" "#TF_Item_Robits_Loot_05_Desc" + "image_inventory" "backpack/crafting/mvm_robits_05" + } + + "5705" + { + "name" "Robits Loot 06" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_06" + "item_description" "#TF_Item_Robits_Loot_06_Desc" + "image_inventory" "backpack/crafting/mvm_robits_06" + } + + "5706" + { + "name" "Robits Loot 07" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_07" + "item_description" "#TF_Item_Robits_Loot_07_Desc" + "image_inventory" "backpack/crafting/mvm_robits_07" + } + + "5707" + { + "name" "Robits Loot 08" + "prefab" "mvm_robits" + "item_name" "#TF_Item_Robits_Loot_08" + "item_description" "#TF_Item_Robits_Loot_08_Desc" + "image_inventory" "backpack/crafting/mvm_robits_08" + } + + "5708" + { + "name" "Fall 2013 Acorns Crate" + "prefab" "eventcratebase" + "tool" + { + "restriction" "fall2013_acorns" + } + "item_name" "#TF_Fall2013Crate_Acorns" + "item_description" "#TF_Fall2013Crate_Acorns_Desc" + "image_inventory" "backpack/crafting/fall_crate_acorns" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5710" + } + } + } + "5709" + { + "name" "Fall 2013 Gourd Crate" + "prefab" "eventcratebase" + "tool" + { + "restriction" "fall2013_gourd" + } + "item_name" "#TF_Fall2013Crate_Gourd" + "item_description" "#TF_Fall2013Crate_Gourd_Desc" + "image_inventory" "backpack/crafting/fall_crate_gourd" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5711" + } + } + } + + "5710" + { + "name" "Fall 2013 Acorns Key" + "prefab" "eventkey" + "first_sale_date" "2013/10/10" + "tool" + { + "restriction" "fall2013_acorns" + } + "item_name" "#TF_Fall2013Key_Acorns" + "item_description" "#TF_Fall2013Key_Acorns_Desc" + "image_inventory" "backpack/crafting/fall_acorn_key" + } + + "5711" + { + "name" "Fall 2013 Gourd Key" + "prefab" "eventkey" + "first_sale_date" "2013/10/10" + "tool" + { + "restriction" "fall2013_gourd" + } + "item_name" "#TF_Fall2013Key_Gourd" + "item_description" "#TF_Fall2013Key_Gourd_Desc" + "image_inventory" "backpack/crafting/fall_gourd_key" + } + + "5712" + { + "name" "Halloween 2013 Crate" + "prefab" "eventcratebase" + "tool" + { + "restriction" "halloween_2013" + } + "item_name" "#TF_Halloween2013_Crate" + "item_description" "#TF_Halloween2013_Crate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_halloween_02" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + } + "holiday_restriction" "halloween_or_fullmoon" + "event_desc_footer" "#Halloween_Unusuals" + } + "5713" + { + "name" "Halloween 2013 Key" + "prefab" "eventkey" + "first_sale_date" "2013/10/29" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + } + + "5714" + { + "name" "Naughty Winter Crate 2013" + "prefab" "eventcratebase" + "first_sale_date" "2013/12/05" + "tool" + { + "restriction" "winter2013_naughty" + } + "armory_desc" "winter_crate" + "item_name" "#TF_WinterCrate2013_Naughty" + "item_description" "#TF_WinterCrate2013_Naughty_Desc" + "image_inventory" "backpack/player/items/crafting/smissmas_crate_naughty_2013" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + } + "event_desc_footer" "" + } + "5715" + { + "name" "Nice Winter Crate 2013" + "prefab" "eventcratebase" + "first_sale_date" "2013/12/05" + "tool" + { + "restriction" "winter2013_nice" + } + "armory_desc" "winter_crate" + "item_name" "#TF_WinterCrate2013_Nice" + "item_description" "#TF_WinterCrate2013_Nice_Desc" + "image_inventory" "backpack/player/items/crafting/smissmas_crate_2013" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + } + "event_desc_footer" "" + } + + "5716" + { + "name" "Naughty Winter Key 2013" + "prefab" "valve eventkey" + "first_sale_date" "2013/12/21" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + } + + "5717" + { + "name" "Nice Winter Key 2013" + "prefab" "eventkey" + "first_sale_date" "2013/12/21" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + } + + "5718" + { + "name" "Self Gift - Stocking Stuffer 2013" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2013_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2013" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + + "5719" + { + "name" "Strongbox Crate 2014" + "prefab" "eventcratebase" + "first_sale_date" "2014/01/09" + "tool" + { + "restriction" "strongbox_2014" + } + "item_name" "#TF_StrongboxCrate" + "item_description" "#TF_StrongboxCrate_Desc" + "image_inventory" "backpack/crafting/strongbox_crate" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5720" + } + } + } + "5720" + { + "name" "Strongbox Key 2014" + "prefab" "eventkey" + "first_sale_date" "2014/02/07" + "tool" + { + "restriction" "strongbox_2014" + } + "item_name" "#TF_StrongboxKey" + "item_description" "#TF_StrongboxKey_Desc" + "image_inventory" "backpack/crafting/strongbox_crate_key" + } + + "5721" + { + "name" "Pretty Boy's Pocket Pistol Strangifier" + "prefab" "strangifier_base" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "773" + } + } + } + "5722" + { + "name" "Phlogistinator Strangifier" + "prefab" "strangifier_base" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "594" + } + } + } + "5723" + { + "name" "Cleaner's Carbine Strangifier" + "prefab" "strangifier_base" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "751" + } + } + } + "5724" + { + "name" "Private Eye Strangifier" + "prefab" "strangifier_base" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "388" + } + } + } + "5725" + { + "name" "Big Chief Strangifier" + "prefab" "strangifier_base" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "309" + } + } + } + + "5726" + { + "name" "Rocket Launcher Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "205" + } + } + } + "5727" + { + "name" "Scattergun Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "200" + } + } + } + "5728" + { + "name" "Sniperrifle Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "201" + } + } + } + "5729" + { + "name" "Shotgun Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "199" + } + } + } + "5730" + { + "name" "Ubersaw Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "37" + } + } + } + "5731" + { + "name" "GRU Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "239" + } + } + } + "5732" + { + "name" "Spy-cicle Launcher Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "649" + } + } + } + "5733" + { + "name" "Axtinguisher Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "attributes" + { + "tool target item" + { + "attribute_class" "tool_target_item" + "value" "38" + } + } + } + "5734" + { + "name" "Supply Crate Ration" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + "5735" + { + "name" "Supply Crate Ration 2" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + + "5737" + { + "name" "Short 2014 Community Crate A" + "prefab" "eventcratebase" + "tool" + { + "restriction" "short2014" + } + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrate_BL" + "item_description" "#TF_SupplyCrate_BL_Desc" + "image_inventory" "backpack/crafting/expiration_crate" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + } + "static_attrs" + { + "random drop line item unusual chance" "215" + "random drop line item unusual list" "particle_attribute_hats_series_3" + "random drop line item footer desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "decoded by itemdefindex" "5740" + "can shuffle crate contents" "1" + } + } + "5738" + { + "name" "Short 2014 Community Crate B" + "prefab" "eventcratebase" + "tool" + { + "restriction" "short2014" + } + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrate_BL" + "item_description" "#TF_SupplyCrate_BL_Desc" + "image_inventory" "backpack/crafting/expiration_crate" + "min_ilevel" "20" + "max_ilevel" "20" + "show_in_armory" "0" + "attributes" + { + } + "static_attrs" + { + "random drop line item unusual chance" "215" + "random drop line item unusual list" "particle_attribute_hats_series_3" + "random drop line item footer desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "decoded by itemdefindex" "5740" + "can shuffle crate contents" "1" + } + } + + "5739" + { + "name" "Short 2014 Taunt Crate" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrate_BLTaunt" + "item_description" "#TF_SupplyCrate_BLTaunt_Desc" + "image_inventory" "backpack/player/items/crafting/crate_taunts" + "min_ilevel" "10" + "max_ilevel" "10" + "static_attrs" + { + "loot list name" "lw_taunt_supply_crate_loot_list" + "decoded by itemdefindex" "5021" + } + } + + "5740" + { + "name" "Short 2014 Key" + "prefab" "eventkey" + "first_sale_date" "2014/06/19" + "tool" + { + "restriction" "short2014" + } + "item_name" "#TF_CrateKey_BL" + "item_description" "#TF_CrateKey_BL_Desc" + "image_inventory" "backpack/crafting/summer2014_key" + } + + "5741" + { + "name" "Self Gift - Mutated Bread Box" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "breadbox_lootlist" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "loot list name" "breadbox_lootlist" + } + "item_name" "#TF_BreadBox" + "item_description" "#TF_BreadBox_Desc" + "image_inventory" "backpack/player/items/crafting/crate_bread_box" + "min_ilevel" "14" + "max_ilevel" "14" + "mouse_pressed_sound" "ui/item_crate_pickup.wav" + "drop_sound" "ui/item_crate_drop.wav" + } + "5742" + { + "name" "Supply Crate Ration 3" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + "5743" + { + "name" "StickyLauncher Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "207" + } + } + "5744" + { + "name" "Minigun Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "202" + } + } + "5745" + { + "name" "DirectHit Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "127" + } + } + "5746" + { + "name" "Huntsman Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "56" + } + } + "5747" + { + "name" "Backburner Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "40" + } + } + "5748" + { + "name" "Backscatter Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "1103" + } + } + "5749" + { + "name" "Kritzkrieg Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "35" + } + } + "5750" + { + "name" "Ambassador Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "61" + } + } + "5751" + { + "name" "Frontier Justice Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "141" + } + } + + "5752" + { + "name" "Supply Crate Ration 4" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + "5753" + { + "name" "Air Strike Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "1104" + } + } + "5754" + { + "name" "Classic Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "1098" + } + } + "5755" + { + "name" "Manmelter Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "595" + } + } + "5756" + { + "name" "Vaccinator Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "998" + } + } + "5757" + { + "name" "Widowmaker Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "527" + } + } + "5758" + { + "name" "Anger Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "518" + } + } + "5759" + { + "name" "Apparition's Aspect Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "571" + } + } + + "5760" + { + "name" "Taunt Shuffle Crate" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrate_ShuffleTaunt" + "item_description" "#TF_SupplyCrate_ShuffleTaunt_Desc" + "image_inventory" "backpack/player/items/crafting/shuffle_crate_taunts" + "min_ilevel" "20" + "max_ilevel" "20" + "show_in_armory" "0" + "attributes" + { + } + "static_attrs" + { + "random drop line item unusual chance" "215" + "random drop line item unusual list" "particle_attribute_taunts" + "random drop line item footer desc" "#Econ_Revolving_Unusual_Taunt" + "decoded by itemdefindex" "5021" + "can shuffle crate contents" "1" + "shuffle crate item def min" "1106" + "shuffle crate item def max" "1120" + } + } + + "5761" + { + "name" "Summer Crate 2014" + "prefab" "eventcratebase" + "tool" + { + "restriction" "summer2014" + } + "capabilities" + { + "decodable" "0" + } + "item_name" "#TF_LimitedSummerCrate2014" + "item_description" "#TF_WinterCrate2013_Nice_Desc" + "image_inventory" "backpack/crafting/wading_crate_2" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + } + "event_desc_footer" "" + } + + "5762" + { + "name" "Limited Summer 2014 Key" + "prefab" "eventkey" + "first_sale_date" "2014/09/25" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + } + + "5763" + { + "name" "Halloween 2014 Scout Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__scout" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Scout" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_scout" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__scout" + } + } + "5764" + { + "name" "Halloween 2014 Pyro Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__pyro" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Pyro" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_pyro" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__pyro" + } + } + "5765" + { + "name" "Halloween 2014 Heavy Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__heavy" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Heavy" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_heavy" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__heavy" + } + } + "5766" + { + "name" "Halloween 2014 Engineer Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__engineer" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Engineer" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_engineer" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__engineer" + } + } + "5767" + { + "name" "Halloween 2014 Spy Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__spy" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Spy" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_spy" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__spy" + } + } + "5768" + { + "name" "Halloween 2014 Sniper Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__sniper" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Sniper" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_sniper" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__sniper" + } + } + "5769" + { + "name" "Halloween 2014 Soldier Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__soldier" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Soldier" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_soldier" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__soldier" + } + } + "5770" + { + "name" "Halloween 2014 Medic Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__medic" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Medic" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_medic" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__medic" + } + } + "5771" + { + "name" "Halloween 2014 Demo Crate" + "prefab" "halloween2014keylesscrate" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_crate__demoman" + } + } + "item_name" "#TF_SupplyCrate_Halloween2014_Demo" + "image_inventory" "backpack/player/items/crafting/crate_halloween_03_demoman" + "static_attrs" + { + "loot list name" "halloween_loot_list_2014_crate__demoman" + } + } + "5772" + { + "name" "Halloween Giveaway Cauldron 2014 (Base)" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_gift_cauldron__base" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_HalloweenCauldron2014" + "item_description" "#TF_HalloweenCauldron2014_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_halloween_02" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "5773" + { + "name" "Halloween Giveaway Cauldron 2014 (Achievement)" + "item_class" "tf_wearable" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "halloween_loot_list_2014_gift_cauldron__base" + "num_items" "1" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_Package_Type" + "item_name" "#TF_HalloweenCauldron2014" + "item_description" "#TF_HalloweenCauldron2014_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/gift_halloween_02" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } + "5774" + { + "name" "EOTL Community Crate" + "prefab" "eventcratebase" + "first_sale_date" "2014/11/13" + "tool" + { + "restriction" "eotl_2014" + } + "item_name" "#TF_EOTL_Crate" + "item_description" "#TF_EOTL_Crate_Desc" + "image_inventory" "backpack/player/items/crafting/eotl_crate" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5775" + } + } + "event_desc_footer" "" + } + "5775" + { + "name" "EOTL Community Key" + "prefab" "eotlkey_rules" + "item_class" "tool" + "craft_class" "tool" + "first_sale_date" "2014/12/04" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "eotl_2014" + } + "static_attrs" + { + "is commodity" "1" + } + "armory_desc" "key" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_EOTL_Key" + "item_description" "#TF_EOTL_Key_Desc" + "image_inventory" "backpack/player/items/crafting/eotl_key" + "item_quality" "unique" + "min_ilevel" "14" + "max_ilevel" "14" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5776" + { + "name" "Gift - 23 EOTL Keys" + "prefab" "eotlkey_rules" + "loadondemand" "1" + "item_class" "tf_wearable" + "first_sale_date" "2014/12/02" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "eotl_gift_key_loot_list" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_24" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_EOTL_EntireServer" + "item_description" "#TF_Gift_EOTL_EntireServer_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/eotl_key_pile" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "23" + "max_ilevel" "23" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5777" + { + "name" "Gift - 1 EOTL Key" + "prefab" "eotlkey_rules" + "loadondemand" "1" + "item_class" "tf_wearable" + "first_sale_date" "2014/12/02" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "eotl_gift_key_loot_list" + "max_recipients" "1" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_1" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_EOTL_RandomPerson" + "item_description" "#TF_Gift_EOTL_RandomPerson_Desc" + "item_slot" "action" + "image_inventory" "backpack/player/items/crafting/eotl_key_gift" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_cardboard_pickup.wav" + "drop_sound" "ui/item_cardboard_drop.wav" + } + "5778" + { + "name" "Duck Token" + "prefab" "eotlkey_rules" + "first_sale_date" "2014/12/03" + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "duck_token" + "usage_capabilities" + { + "duck_upgradable" "1" + } + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_DuckToken" + "item_description" "#TF_Tool_DuckToken_Desc" + "image_inventory" "backpack/crafting/eotl_duck_token" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "5779" + { + "name" "Gift - 23 Duck Tokens" + "prefab" "eotlkey_rules" + "loadondemand" "1" + "item_class" "tf_wearable" + "first_sale_date" "2014/12/02" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "eotl_duck_token_loot_list" + "max_recipients" "23" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_24" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_DuckToken_EntireServer" + "item_description" "#TF_Gift_DuckToken_EntireServer_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/eotl_duck_pile_of_tokens" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "23" + "max_ilevel" "23" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5780" + { + "name" "Gift - 1 Duck Token" + "prefab" "eotlkey_rules" + "loadondemand" "1" + "item_class" "tf_wearable" + "first_sale_date" "2014/12/02" + "tool" + { + "type" "gift" + "usage" + { + "loot_list" "eotl_duck_token_loot_list" + "max_recipients" "1" + } + } + "capabilities" + { + "usable_gc" "1" + } + "static_attrs" + { + "is commodity" "1" + } + "show_in_armory" "1" + "armory_desc" "action gift_24" + "item_type_name" "#TF_Gift" + "item_name" "#TF_Gift_DuckToken_RandomPerson" + "item_description" "#TF_Gift_DuckToken_RandomPerson_Desc" + "item_slot" "action" + "image_inventory" "backpack/crafting/eotl_duck_token_gift" + "item_quality" "unique" + "model_player" "" + "min_ilevel" "1" + "max_ilevel" "1" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + "5781" + { + "name" "Supply Crate Ration 5" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "set supply crate series" + { + "attribute_class" "supply_crate_series" + "value" "90" + } + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + + "5783" + { + "name" "Cow Mangler 5000 Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "441" + } + } + "5784" + { + "name" "Third Degree Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "593" + } + } + "5789" + { + "name" "Naughty Winter Crate 2014" + "prefab" "eventcratebase" + "first_sale_date" "2014/12/15" + "tool" + { + "restriction" "winter2014_naughty" + } + "armory_desc" "winter_crate" + "item_name" "#TF_WinterCrate2014_Naughty" + "item_description" "#TF_Crate_MomentoNote_Desc" + "image_inventory" "backpack/player/items/crafting/smissmas_crate_naughty_2014" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + } + "event_desc_footer" "" + } + "5790" + { + "name" "Nice Winter Crate 2014" + "prefab" "eventcratebase" + "first_sale_date" "2014/12/15" + "tool" + { + "restriction" "winter2014_nice" + } + "armory_desc" "winter_crate" + "item_name" "#TF_WinterCrate2014_Nice" + "item_description" "#TF_Crate_MomentoNote_Desc" + "image_inventory" "backpack/player/items/crafting/smissmas_crate_2014" + "min_ilevel" "13" + "max_ilevel" "13" + "attributes" + { + } + "event_desc_footer" "" + } + + "5791" + { + "name" "Naughty Key 2014 Key" + "prefab" "valve eventkey" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + } + "5792" + { + "name" "Nice Key 2014 Key" + "prefab" "eventkey" + "item_name" "#TF_Tool_DecoderRing" + "item_description" "#TF_Tool_DecoderRing_Desc" + "image_inventory" "backpack/player/items/crafting/key" + } + + "5793" + { + "name" "Flaregun Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "39" + } + } + "5794" + { + "name" "Wrench Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "197" + } + } + "5795" + { + "name" "Revolver Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "210" + } + } + "5796" + { + "name" "Machina Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "526" + } + } + "5797" + { + "name" "Baby Face Blaster Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "772" + } + } + "5798" + { + "name" "Huo Long Heatmaker Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "811" + } + } + "5799" + { + "name" "Loose Cannon Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "996" + } + } + "5800" + { + "name" "Vaccinator Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "998" + } + } + "5801" + { + "name" "Air Strike Killstreakifier Basic" + "prefab" "killstreakifier_kit_basic" + "static_attrs" + { + "tool target item" "1104" + } + } + + "5802" + { + "name" "Supply Crate Ration 6" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "set supply crate series" + { + "attribute_class" "supply_crate_series" + "value" "91" + } + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + "5803" + { + "name" "Supply Crate Ration 7" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_variation" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "set supply crate series" + { + "attribute_class" "supply_crate_series" + "value" "92" + } + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + "5804" + { + "name" "Righteous Bison Strangifier" + "prefab" "strangifier_base" + "static_attrs" + { + "tool target item" "442" + } + } + + "5805" + { + "name" "Summer 2015 Operation Key" + "first_sale_date" "2015/06/26" + "prefab" "valve eventkey" + "item_name" "#TF_Tool_OperationSummer2015Key" + "item_description" "#TF_Tool_OperationSummer2015Key_Desc" + "ad_text" "TF_Tool_OperationSummer2015Key_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_key_gun_mettle" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "operationsummer2015" + } + } + + "5806" + { + "name" "Operation Summer 2015 Concealed Killer Case" + "first_sale_date" "2015/06/25" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "operationsummer2015" + } + "item_name" "#TF_ConcealedKiller_Case" + "item_description" "#TF_ConcealedKiller_Case_Desc" + "ad_text" "#TF_ConcealedKiller_Case_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_01_concealed" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "1" + "static_attrs" + { + "set supply crate series" "93" + "hide crate series number" "1" + "decoded by itemdefindex" "5805" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Concealed_killer_collection" + } + + "5807" + { + "name" "Operation Summer 2015 Powerhouse Case" + "first_sale_date" "2015/06/25" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "operationsummer2015" + } + "item_name" "#TF_Powerhouse_Case" + "item_description" "#TF_Powerhouse_Case_Desc" + "ad_text" "#TF_Powerhouse_Case_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_02_powerhouse" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "2" + "static_attrs" + { + "set supply crate series" "94" + "hide crate series number" "1" + "decoded by itemdefindex" "5805" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Powerhouse_collection" + } + "5808" + { + "name" "Unused Summer 2015 Operation Pass" + "first_sale_date" "2015/06/26" + "item_class" "craft_item" + "tool" + { + "type" "grant_operation_pass" + "use_string" "#ActivateItem" + "usage" + { + "operation_pass" "Activated Summer 2015 Operation Pass" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "ad_text" "#TF_InactiveOperationPass_AdText" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_InactiveOperationPass" + "item_description" "#TF_InactiveOperationPass_Desc" + "item_quality" "unique" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "image_inventory" "backpack/crafting/ticket_summer2015" + } + "5809" + { + "name" "Activated Summer 2015 Operation Pass" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_ActivatedOperationPass" + "item_description" "#TF_ActivatedOperationPass_Desc" + "image_inventory" "backpack/player/items/crafting/coin_summer2015_bronze" + "model_player" "models/player/items/crafting/coin_summer2015_gravel.mdl" + "item_quality" "unique" + "is_tool" "1" + "inspect_panel_dist" "10" + "collection_reference" "Operation_gun_mettle_master_collection" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "0" + "selectable" "0" + "model_player" "models/player/items/crafting/coin_summer2015_gravel.mdl" + "image_inventory" "backpack/player/items/crafting/coin_summer2015_gravel" + } + "1" + { + "skin_red" "1" + "skin_blu" "1" + "selectable" "0" + "model_player" "models/player/items/crafting/coin_summer2015_bronze.mdl" + "image_inventory" "backpack/player/items/crafting/coin_summer2015_bronze" + } + "2" + { + "skin_red" "2" + "skin_blu" "2" + "selectable" "0" + "model_player" "models/player/items/crafting/coin_summer2015_silver.mdl" + "image_inventory" "backpack/player/items/crafting/coin_summer2015_silver" + } + "3" + { + "skin_red" "2" + "skin_blu" "2" + "selectable" "0" + "model_player" "models/player/items/crafting/coin_summer2015_gold.mdl" + "image_inventory" "backpack/player/items/crafting/coin_summer2015_gold" + } + } + } + "static_attrs" + { + "kill eater score type" "98" + "kill eater score type 2" "99" + "kill eater score type 3" "96" + "kill eater user score type 1" "97" + + "never craftable" "1" + "cannot trade" "1" + "is_operation_pass" "1" + "weapon_allow_inspect" "1" + "style changes on strange level" "3" + "cannot restore" "1" + "always_transmit_so" "1" + + "deactive date" "1444694400" + } + "attributes" + { + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + "5810" + { + "name" "Concealed Killer Collection Dummy" + "prefab" "dummy_item" + "item_name" "#Concealedkiller_collection" + "collection_reference" "Concealed_killer_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/weapons_case_01_concealed" + } + "5811" + { + "name" "Craftsmann Collection Dummy" + "prefab" "dummy_item" + "item_name" "#Craftsmann_collection" + "collection_reference" "Craftsmann_collection" + "item_rarity" "common" + "image_inventory" "backpack/items/paintkit_bundle_01" + } + "5812" + { + "name" "Powerhouse Collection Dummy" + "prefab" "dummy_item" + "item_name" "#Powerhouse_collection" + "collection_reference" "Powerhouse_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/weapons_case_02_powerhouse" + } + "5813" + { + "name" "Teufort Collection Dummy" + "prefab" "dummy_item" + "item_name" "#Teufort_collection" + "collection_reference" "Teufort_collection" + "item_rarity" "common" + "image_inventory" "backpack/items/paintkit_bundle_01" + } + "5814" + { + "name" "Gun Mettle Cosmetics Collection Dummy" + "prefab" "dummy_item" + "item_name" "#GunMettleCosmetics_collection" + "collection_reference" "GunMettleCosmetics_collection" + "item_rarity" "mythical" + "image_inventory" "backpack/player/items/crafting/cosmetic_case" + } + + "5816" + { + "name" "Gun Mettle Cosmetic Key" + "first_sale_date" "2015/08/27" + "prefab" "eventkey" + "item_name" "#TF_Tool_GunMettleCosmeticKey" + "item_description" "#TF_Tool_GunMettleCosmeticKey_Desc" + "ad_text" "#TF_Tool_GunMettleCosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "gunmettlecosmetic2015" + } + } + "5817" + { + "name" "Gun Mettle Cosmetic Case" + "first_sale_date" "2015/08/26" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "gunmettlecosmetic2015" + } + "item_name" "#TF_GunMettleCosmeticCase" + "item_description" "#TF_GunMettleCosmeticCase_Desc" + "ad_text" "#TF_GunMettleCosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case" + "model_player" "models/player/items/crafting/cosmetic_case.mdl" + "default_skin" "0" + "static_attrs" + { + "set supply crate series" "95" + "hide crate series number" "1" + "decoded by itemdefindex" "5816" + "weapon_allow_inspect" "1" + } + "collection_reference" "GunMettleCosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + } + } + } + } + + "5818" + { + "name" "Strange Count Transfer Tool" + "first_sale_date" "2015/12/13" + "item_class" "tool" + "craft_class" "tool" + "tool" + { + "type" "strange_count_transfer" + } + "static_attrs" + { + "always tradable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_Tool_StrangeCountTransfer" + "item_description" "#TF_Tool_StrangeCountTransfer_Desc" + "image_inventory" "backpack/crafting/strange_transfer" + "item_quality" "unique" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + + + "5819" + { + "name" "Unused Invasion Pass" + "first_sale_date" "2015/10/02" + "item_class" "craft_item" + "tool" + { + "type" "grant_operation_pass" + "use_string" "#ActivateItem" + "usage" + { + "operation_pass" "Activated Invasion Pass" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_quality" "unique" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "image_inventory" "backpack/crafting/ticket_invasion" + "ad_text" "#TF_InactiveInvasionPass_AdText" + "item_name" "#TF_InactiveInvasionPass" + "item_description" "#TF_InactiveInvasionPass_Desc" + } + "5820" + { + "name" "Activated Invasion Pass" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_ActivatedInvasionPass" + "item_description" "#TF_ActivatedInvasionPass_Desc" + "image_inventory" "backpack/player/items/crafting/coin_invasion" + "model_player" "models/player/items/crafting/coin_invasion.mdl" + "item_quality" "unique" + "is_tool" "1" + "inspect_panel_dist" "10" + "collection_reference" "invasion_master_collection" + "static_attrs" + { + "cannot trade" "1" + "is_operation_pass" "1" + "weapon_allow_inspect" "1" + "cannot restore" "1" + "always_transmit_so" "1" + "deactive date" "1447099200" + "never craftable" "1" + "kill eater score type" "101" + "kill eater score type 2" "102" + "kill eater score type 3" "103" + "kill eater user score type 1" "104" + "kill eater user score type 2" "105" + } + "attributes" + { + } + "mouse_pressed_sound" "ui/item_medal_pickup.wav" + "drop_sound" "ui/item_medal_pickup.wav" + } + + "5821" + { + "name" "Invasion Key" + "first_sale_date" "2015/10/01" + "prefab" "eventkey" + "item_name" "#TF_Tool_Invasion2015Key" + "item_description" "#TF_Tool_Invasion2015Key_Desc" + "ad_text" "TF_Tool_Invasion2015Key_AdText" + "image_inventory" "backpack/workshop/cases/invasion_case/invasion_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "invasion2015" + } + } + + "5822" + { + "name" "Invasion Case 01" + "first_sale_date" "2015/09/30" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "invasion2015" + } + "item_name" "#TF_Invasion2015Case01" + "item_description" "#TF_Invasion2015Case01_Desc" + "ad_text" "#TF_Invasion2015Case01_AdText" + "image_inventory" "backpack/workshop/cases/invasion_case/invasion_case" + "model_player" "models/workshop/cases/invasion_case/invasion_case.mdl" + "static_attrs" + { + "set supply crate series" "96" + "hide crate series number" "1" + "decoded by itemdefindex" "5821" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Invasion_collection_01_lootlist" + "event_desc_footer" "" + } + "5823" + { + "name" "Invasion Case 02" + "first_sale_date" "2015/09/30" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "invasion2015" + } + "item_name" "#TF_Invasion2015Case02" + "item_description" "#TF_Invasion2015Case02_Desc" + "ad_text" "#TF_Invasion2015Case02_AdText" + "image_inventory" "backpack/workshop/cases/invasion_case/invasion_case_rare" + "model_player" "models/workshop/cases/invasion_case/invasion_case_rare.mdl" + "static_attrs" + { + "set supply crate series" "97" + "hide crate series number" "1" + "decoded by itemdefindex" "5821" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Invasion_collection_02_lootlist" + "event_desc_footer" "" + } + + "5824" + { + "name" "Invasion Collection Dummy 01" + "prefab" "dummy_item" + "item_name" "#Invasion_collection_01" + "collection_reference" "Invasion_collection_01_lootlist" + "item_rarity" "rare" + "image_inventory" "backpack/workshop/cases/invasion_case/invasion_case" + } + + "5825" + { + "name" "Invasion Collection Dummy 02" + "prefab" "dummy_item" + "item_name" "#Invasion_collection_02" + "collection_reference" "Invasion_collection_02_lootlist" + "item_rarity" "rare" + "image_inventory" "backpack/workshop/cases/invasion_case/invasion_case_rare" + } + + + + "5826" + { + "name" "Activated Halloween Pass" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_HalloweenPass" + "item_description" "#TF_HalloweenPass_Desc" + "model_player" "models/props_halloween/gargoyle_backpack.mdl" + "image_inventory" "backpack/player/items/crafting/hwn2015_gargoyle_stone" + "item_quality" "unique" + "is_tool" "1" + "inspect_panel_dist" "65" + "collection_reference" "Halloween_master_collection" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "0" + "selectable" "0" + "image_inventory" "backpack/player/items/crafting/hwn2015_gargoyle_stone" + "bodygroup" + { + "name" "mouths" + "submodel_index" "0" + } + } + "1" + { + "skin_red" "1" + "skin_blu" "1" + "selectable" "0" + "image_inventory" "backpack/player/items/crafting/hwn2015_gargoyle_bronze" + "bodygroup" + { + "name" "mouths" + "submodel_index" "1" + } + } + "2" + { + "skin_red" "2" + "skin_blu" "2" + "selectable" "0" + "image_inventory" "backpack/player/items/crafting/hwn2015_gargoyle_silver" + "bodygroup" + { + "name" "mouths" + "submodel_index" "2" + } + } + "3" + { + "skin_red" "3" + "skin_blu" "3" + "selectable" "0" + "image_inventory" "backpack/player/items/crafting/hwn2015_gargoyle_gold" + "bodygroup" + { + "name" "mouths" + "submodel_index" "3" + } + } + } + } + "static_attrs" + { + "cannot trade" "1" + "is_operation_pass" "1" + "weapon_allow_inspect" "1" + "style changes on strange level" "3" + "cannot restore" "1" + "always_transmit_so" "1" + "allow_halloween_offering" "1" + "never craftable" "1" + + "deactive date" "1699452000" + + "kill eater score type" "106" + "kill eater score type 2" "107" + "kill eater score type 3" "108" + } + "attributes" + { + } + "mouse_pressed_sound" "ui/item_default_pickup.wav" + "drop_sound" "ui/item_default_drop.wav" + } + + "5827" + { + "name" "Halloween 2015 Key" + "first_sale_date" "2015/10/28" + "prefab" "eventkey" + "item_name" "#halloween2015_collection_key" + "item_description" "#halloween2015_collection_key_desc" + "ad_text" "#halloween2015_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2015_gargoyle_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2015" + } + } + + "5828" + { + "name" "Halloween 2015 case" + "first_sale_date" "2015/10/27" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2015" + } + "item_name" "#halloween2015_collection_case" + "item_description" "#halloween2015_collection_case_desc" + "ad_text" "#halloween2015_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2015_case" + "model_player" "models/player/items/crafting/halloween2015_case.mdl" + "static_attrs" + { + "set supply crate series" "98" + "hide crate series number" "1" + "decoded by itemdefindex" "5827" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2015_collection_case_footer" + "collection_reference" "halloween2015_collection_lootlist" + } + + "5829" + { + "name" "Unused Operation Tough Break Pass" + "first_sale_date" "2015/12/21" + "item_class" "craft_item" + "tool" + { + "type" "grant_operation_pass" + "use_string" "#ActivateItem" + "usage" + { + "operation_pass" "Activated Operation Tough Break Pass" + "bonus_lootlist" "winter_2015_gift_lootlist" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_InactiveOperation2Pass" + "item_description" "#TF_InactiveOperation2Pass_Desc" + "ad_text" "#TF_InactiveOperation2Pass_AdText" + "item_quality" "unique" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "image_inventory" "backpack/crafting/ticket_tough_break" + } + "5830" + { + "name" "Activated Operation Tough Break Pass" + "item_class" "craft_item" + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_ActivatedOperation2Pass" + "item_description" "#TF_ActivatedOperation2Pass_desc" + "image_inventory" "backpack/player/items/crafting/stamp_winter2016_gravel" + "model_player" "models/player/items/crafting/stamp_winter2016.mdl" + "item_quality" "unique" + "is_tool" "1" + "inspect_panel_dist" "10" + "collection_reference" "operation_tough_break_master_collection" + "visuals" + { + "styles" + { + "0" + { + "skin_red" "0" + "skin_blu" "0" + "selectable" "0" + "model_player" "models/player/items/crafting/stamp_winter2016.mdl" + "image_inventory" "backpack/player/items/crafting/stamp_winter2016_gravel" + } + "1" + { + "skin_red" "1" + "skin_blu" "1" + "selectable" "0" + "model_player" "models/player/items/crafting/stamp_winter2016.mdl" + "image_inventory" "backpack/player/items/crafting/stamp_winter2016_bronze" + } + "2" + { + "skin_red" "2" + "skin_blu" "2" + "selectable" "0" + "model_player" "models/player/items/crafting/stamp_winter2016.mdl" + "image_inventory" "backpack/player/items/crafting/stamp_winter2016_silver" + } + "3" + { + "skin_red" "3" + "skin_blu" "3" + "selectable" "0" + "model_player" "models/player/items/crafting/stamp_winter2016.mdl" + "image_inventory" "backpack/player/items/crafting/stamp_winter2016_gold" + } + } + } + "static_attrs" + { + "kill eater score type" "98" + "kill eater score type 2" "99" + "kill eater score type 3" "96" + "kill eater user score type 1" "97" + + "cannot trade" "1" + "is_operation_pass" "1" + "weapon_allow_inspect" "1" + "style changes on strange level" "3" + "cannot restore" "1" + "always_transmit_so" "1" + "never craftable" "1" + + "deactive date" "1459540800" + } + "attributes" + { + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + "5831" + { + "name" "Tough Break Case 01 Pyroland" + "first_sale_date" "2015/12/13" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "operationtoughbreak2015" + } + "item_name" "#TF_ToughBreakCase01" + "item_description" "#TF_ToughBreakCase01_Desc" + "ad_text" "#TF_ToughBreakCase01_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_03_pyroland" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "3" + "static_attrs" + { + "set supply crate series" "99" + "hide crate series number" "1" + "decoded by itemdefindex" "5833" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "tough_break_case_collection_01_pyroland" + } + + "5832" + { + "name" "Tough Break Case 02 Warbirds" + "first_sale_date" "2015/12/13" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "operationtoughbreak2015" + } + "item_name" "#TF_ToughBreakCase02" + "item_description" "#TF_ToughBreakCase02_Desc" + "ad_text" "#TF_ToughBreakCase02_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_04_warbirds" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "5" + "static_attrs" + { + "set supply crate series" "100" + "hide crate series number" "1" + "decoded by itemdefindex" "5833" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "tough_break_case_collection_02_warbirds" + } + + "5833" + { + "name" "Tough Break Key" + "first_sale_date" "2015/12/20" + "prefab" "eventkey" + "item_name" "#TF_Tool_ToughBreakKey" + "item_description" "#TF_Tool_ToughBreakKey_Desc" + "ad_text" "#TF_Tool_ToughBreakKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_key_tough_break" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "operationtoughbreak2015" + } + } + + "5834" + { + "name" "Tough Break Collection Dummy 01" + "prefab" "dummy_item" + "item_name" "#tough_break_drop_collection_01" + "collection_reference" "tough_break_drop_collection_01" + "image_inventory" "backpack/items/paintkit_bundle_01" + } + + "5835" + { + "name" "Tough Break Collection Dummy 02" + "prefab" "dummy_item" + "item_name" "#tough_break_drop_collection_02" + "collection_reference" "tough_break_drop_collection_02" + "image_inventory" "backpack/items/paintkit_bundle_01" + } + "5836" + { + "name" "Tough Break Collection Dummy 03" + "prefab" "dummy_item" + "item_name" "#tough_break_case_collection_01" + "collection_reference" "tough_break_case_collection_01_pyroland" + "image_inventory" "backpack/player/items/crafting/weapons_case_03_pyroland" + } + + "5837" + { + "name" "Tough Break Collection Dummy 04" + "prefab" "dummy_item" + "item_name" "#tough_break_case_collection_02" + "collection_reference" "tough_break_case_collection_02_warbirds" + "image_inventory" "backpack/player/items/crafting/weapons_case_04_warbirds" + } + + + "5838" + { + "name" "Winter 2015 Mystery Box" + "first_sale_date" "2015/12/14" + "prefab" "randomgiftself" + "item_class" "tool" + "item_slot" "" + "tool" + { + "usage" + { + "loot_list" "festivizer_lootlist" + } + } + "item_name" "#TF_Winter_2015_Mystery" + "item_description" "#TF_Winter_2015_Mystery_desc" + "image_inventory" "backpack/crafting/gift_festive" + "model_player" "models/items/gift_festive.mdl" + "static_attrs" + { + "weapon_allow_inspect" "1" + "is marketable" "1" + "is commodity" "1" + } + } + + "5839" + { + "name" "Festivizer" + "item_class" "tool" + "tool" + { + "type" "paintkit_weapon_festivizer" + "usage" + { + "required_tags" + { + "can_be_festivized" "1" + } + } + "usage_capabilities" + { + "can_killstreakify" "1" + } + } + "static_attrs" + { + "never craftable" "1" + "cannot restore" "1" + "weapon_allow_inspect" "1" + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "0" + "propername" "1" + "item_name" "#TF_Festivizer" + "item_description" "#TF_Festivizer_desc" + "item_type_name" "#TF_FestivizerTool" + "model_player" "models/items/festivizer.mdl" + "image_inventory" "backpack/items/festivizer" + "item_quality" "unique" + "min_ilevel" "15" + "max_ilevel" "15" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "5840" + { + "name" "Tough Break Cosmetics Collection Dummy" + "prefab" "dummy_item" + "item_name" "#ToughBreakCosmetics_collection" + "collection_reference" "ToughBreakCosmetics_collection" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_tough_break" + } + + "5841" + { + "name" "Tough Break Cosmetic Key" + "first_sale_date" "2015/12/15" + "prefab" "eventkey" + "item_name" "#TF_Tool_ToughBreakCosmeticKey" + "item_description" "#TF_Tool_ToughBreakCosmeticKey_Desc" + "ad_text" "#TF_Tool_ToughBreakCosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_tough_break" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "toughbreakcosmetic2015" + } + } + "5842" + { + "name" "Tough Break Cosmetic Case" + "first_sale_date" "2015/12/14" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "toughbreakcosmetic2015" + } + "item_name" "#TF_ToughBreakCosmeticCase" + "item_description" "#TF_ToughBreakCosmeticCase_Desc" + "ad_text" "#TF_ToughBreakCosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_tough_break" + "model_player" "models/player/items/crafting/cosmetic_case.mdl" + "default_skin" "1" + "static_attrs" + { + "set supply crate series" "101" + "hide crate series number" "1" + "decoded by itemdefindex" "5841" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_ToughBreakCosmetics" + "collection_reference" "ToughBreakCosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "1" + } + } + } + } + + "5843" + { + "name" "Common Stat Clock" + "item_class" "tool" + "prefab" "strangifier_base" + "tool" + { + "usage" + { + "itemrarity_restrictions" "1" + } + } + "static_attrs" + { + "never craftable" "1" + "cannot restore" "1" + "weapon_allow_inspect" "1" + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "0" + "item_name" "#TF_Common_StatClock" + "item_description" "#TF_Common_StatClock_desc" + "item_type_name" "#TF_T" + "inspect_panel_dist" "12" + "model_player" "models/weapons/c_models/stattrack.mdl" + "image_inventory" "backpack/weapons/c_models/stattrack" + "item_quality" "unique" + "item_rarity" "common" + "min_ilevel" "1" + "max_ilevel" "1" + "mouse_pressed_sound" "ui/item_metal_tiny_pickup.wav" + "drop_sound" "ui/item_metal_tiny_drop.wav" + } + + "5844" + { + "name" "Fall 2013 Acorns Key New" + "prefab" "eventkey" + "first_sale_date" "2013/10/10" + "tool" + { + "restriction" "fall2013_acorns" + } + "item_name" "#TF_Fall2013Key_Acorns" + "item_description" "#TF_Fall2013Key_Acorns_Desc" + "image_inventory" "backpack/crafting/fall_acorn_key" + } + + "5845" + { + "name" "Strongbox Key 2014 New" + "prefab" "eventkey" + "first_sale_date" "2014/02/07" + "tool" + { + "restriction" "strongbox_2014" + } + "item_name" "#TF_StrongboxKey" + "item_description" "#TF_StrongboxKey_Desc" + "image_inventory" "backpack/crafting/strongbox_crate_key" + } + + "5846" + { + "name" "Short 2014 Key New" + "prefab" "eventkey" + "first_sale_date" "2014/06/19" + "tool" + { + "restriction" "short2014" + } + "item_name" "#TF_CrateKey_BL" + "item_description" "#TF_CrateKey_BL_Desc" + "image_inventory" "backpack/crafting/summer2014_key" + } + + "5847" + { + "name" "Halloween 2015 Key New" + "first_sale_date" "2015/10/28" + "prefab" "eventkey" + "item_name" "#halloween2015_collection_key" + "item_description" "#halloween2015_collection_key_desc" + "ad_text" "#halloween2015_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2015_gargoyle_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2015" + } + } + + "5848" + { + "name" "Mayflower Cosmetic Key" + "first_sale_date" "2016/05/10" + "prefab" "eventkey" + "item_name" "#TF_Tool_MayflowerCosmeticKey" + "item_description" "#TF_Tool_MayflowerCosmeticKey_Desc" + "ad_text" "#TF_Tool_MayflowerCosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_spring" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "mayflowercosmetic2016" + } + } + + "5849" + { + "name" "Mayflower Cosmetic Case" + "first_sale_date" "2016/05/10" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "mayflowercosmetic2016" + } + "item_name" "#TF_MayflowerCosmeticCase" + "item_description" "#TF_MayflowerCosmeticCase_desc" + "ad_text" "#TF_MayflowerCosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_spring" + "model_player" "models/player/items/crafting/cosmetic_case.mdl" + "default_skin" "2" + "static_attrs" + { + "set supply crate series" "102" + "hide crate series number" "1" + "decoded by itemdefindex" "5848" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_MayflowerCosmetics" + "collection_reference" "MayflowerCosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "2" + } + } + } + } + "5850" + { + "name" "Keyless Cosmetic Crate Scout" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_01_scout" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Scout" + "item_description" "#TF_KeylessCosmetic_Crate_Scout_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_scout" + } + + "5851" + { + "name" "Keyless Cosmetic Crate Sniper" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_02_sniper" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Sniper" + "item_description" "#TF_KeylessCosmetic_Crate_Sniper_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_sniper" + } + + "5852" + { + "name" "Keyless Cosmetic Crate Soldier" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_03_soldier" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Soldier" + "item_description" "#TF_KeylessCosmetic_Crate_Soldier_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_soldier" + } + + "5853" + { + "name" "Keyless Cosmetic Crate Demoman" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_04_demoman" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Demo" + "item_description" "#TF_KeylessCosmetic_Crate_Demo_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_demoman" + } + + "5854" + { + "name" "Keyless Cosmetic Crate Medic" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_05_medic" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Medic" + "item_description" "#TF_KeylessCosmetic_Crate_Medic_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_medic" + } + + "5855" + { + "name" "Keyless Cosmetic Crate Heavy" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_06_heavy" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Heavy" + "item_description" "#TF_KeylessCosmetic_Crate_Heavy_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_heavy" + } + + "5856" + { + "name" "Keyless Cosmetic Crate Pyro" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_07_pyro" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Pyro" + "item_description" "#TF_KeylessCosmetic_Crate_Pyro_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_pyro" + } + + "5857" + { + "name" "Keyless Cosmetic Crate Spy" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_08_spy" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Spy" + "item_description" "#TF_KeylessCosmetic_Crate_Spy_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_spy" + } + + "5858" + { + "name" "Keyless Cosmetic Crate Engineer" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_09_engineer" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_Engineer" + "item_description" "#TF_KeylessCosmetic_Crate_Engineer_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_engineer" + } + + "5859" + { + "name" "Supply Crate Ration 8" + "prefab" "eventcratebase" + "armory_desc" "supply_crate" + "item_name" "#TF_SupplyCrateRation" + "item_description" "#TF_SupplyCrate_Desc" + "image_inventory" "backpack/player/items/crafting/crate_strange_weapons" + "min_ilevel" "20" + "max_ilevel" "20" + "attributes" + { + "set supply crate series" + { + "attribute_class" "supply_crate_series" + "value" "103" + } + "decoded by itemdefindex" + { + "attribute_class" "decoded_by_itemdefindex" + "value" "5021" + } + } + } + + "5860" + { + "name" "Keyless Cosmetic Crate MultiClass" + "prefab" "keylesscrate" + "first_sale_date" "2016/06/16" + "tool" + { + "usage" + { + "loot_list" "class_cosmetics_10_multiclass" + } + } + "item_name" "#TF_KeylessCosmetic_Crate_MultiClass" + "item_description" "#TF_KeylessCosmetic_Crate_Multiclass_desc" + "image_inventory" "backpack/player/items/crafting/keyless_cosmetic_crate_allclass" + } + + "5861" + { + "name" "Halloween 2016 Case" + "first_sale_date" "2016/10/19" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2016" + } + "item_name" "#halloween2016_collection_case" + "item_description" "#halloween2016_collection_case_desc" + "ad_text" "#halloween2016_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2016_case" + "model_player" "models/player/items/crafting/halloween_case.mdl" + "default_skin" "0" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "104" + "hide crate series number" "1" + "decoded by itemdefindex" "5862" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2016_collection_case_footer" + "collection_reference" "halloween2016_collection_lootlist" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + } + } + } + } + "5862" + { + "name" "Halloween 2016 Key" + "first_sale_date" "2016/10/19" + "prefab" "eventkey" + "item_name" "#halloween2016_collection_key" + "item_description" "#halloween2016_collection_key_desc" + "ad_text" "#halloween2016_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2016_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2016" + } + } + "5863" + { + "name" "Halloween 2015 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2015_collection_name" + "collection_reference" "halloween2015_collection_lootlist" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2015_case" + } + "5864" + { + "name" "Halloween 2016 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2016_collection_name" + "collection_reference" "halloween2016_collection_lootlist" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2016_case" + } + "5865" + { + "name" "Keyless Winter 2016 Case" + "prefab" "base_keyless_cosmetic_case" + "first_sale_date" "2016/12/15" + "item_name" "#TF_KeylessWinter2016_Case" + "item_description" "#TF_KeylessWinter2016_Case_desc" + "ad_text" "#TF_KeylessWinter2016_Case_adtext" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2016" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "3" + "static_attrs" + { + "set supply crate series" "105" + "hide crate series number" "1" + "weapon_allow_inspect" "1" + "item style override" "0" + "is winter case" "1" + } + "event_desc_footer" "#Footer_KeylessWinter2016_Case" + "collection_reference" "Winter2016_Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "3" + } + } + } + } + "5866" + { + "name" "Rainy Day Cosmetic Key" + "first_sale_date" "2017/05/10" + "prefab" "eventkey" + "item_name" "#TF_Tool_RainyDayCosmeticKey" + "item_description" "#TF_Tool_RainyDayCosmeticKey_Desc" + "ad_text" "#TF_Tool_RainyDayCosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_rainyday_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "rainydaycosmetic2017" + } + } + "5867" + { + "name" "Rainy Day Cosmetic Case" + "first_sale_date" "2017/05/10" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "rainydaycosmetic2017" + } + "item_name" "#TF_RainyDayCosmeticCase" + "item_description" "#TF_RainyDayCosmeticCase_desc" + "ad_text" "#TF_RainyDayCosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_rainyday" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "0" + "static_attrs" + { + "set supply crate series" "106" + "hide crate series number" "1" + "decoded by itemdefindex" "5866" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_RainyDayCosmetics" + "collection_reference" "RainyDayCosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + } + } + } + } + + "5868" + { + "name" "Unused Campaign 3 Pass" + "first_sale_date" "2017/09/13" + "item_class" "craft_item" + "tool" + { + "type" "grant_operation_pass" + "use_string" "#ActivateItem" + "usage" + { + "operation_pass" "Activated Campaign 3 Pass" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_InactiveCampaign3Pass" + "item_description" "#TF_InactiveCampaign3Pass_Desc" + "ad_text" "#TF_InactiveCampaign3Pass_AdText" + "item_quality" "unique" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "image_inventory" "backpack/crafting/ticket_jungle_inferno" + } + "5869" + { + "name" "Activated Campaign 3 Pass" + "item_class" "tf_wearable_campaign_item" + "show_in_armory" "1" + "item_type_name" "#TF_Tracker" + "item_name" "#TF_ActivatedCampaign3Pass" + "item_description" "#TF_ActivatedCampaign3Pass_desc" + "image_inventory" "backpack/player/items/cyoa_pda/cyoa_pda" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "model_player" "models/player/items/cyoa_pda/cyoa_pda.mdl" + "item_slot" "action" + "inspect_panel_dist" "20" + "collection_reference" "campaign3_master_collection" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "visuals" + { + "styles" + { + "0" + { + "skin_red" "1" + "skin_blu" "1" + "model_player" "models/player/items/cyoa_pda/cyoa_pda.mdl" + "image_inventory" "backpack/player/items/cyoa_pda/cyoa_pda" + "selectable" "0" + } + "1" + { + "skin_red" "5" + "skin_blu" "5" + "model_player" "models/player/items/cyoa_pda/cyoa_pda.mdl" + "image_inventory" "backpack/player/items/cyoa_pda/cyoa_pda_bronze" + "selectable" "0" + } + "2" + { + "skin_red" "9" + "skin_blu" "9" + "model_player" "models/player/items/cyoa_pda/cyoa_pda.mdl" + "image_inventory" "backpack/player/items/cyoa_pda/cyoa_pda_silver" + "selectable" "0" + } + "3" + { + "skin_red" "13" + "skin_blu" "13" + "model_player" "models/player/items/cyoa_pda/cyoa_pda.mdl" + "image_inventory" "backpack/player/items/cyoa_pda/cyoa_pda_gold" + "selectable" "0" + } + } + } + "static_attrs" + { + "kill eater score type" "110" + "kill eater score type 2" "111" + "kill eater score type 3" "97" + + "cannot trade" "1" + "is_operation_pass" "1" + "weapon_allow_inspect" "1" + "style changes on strange level" "3" + "cannot restore" "1" + "always_transmit_so" "1" + "never craftable" "1" + + "deactive date" "2145916800" + } + "attributes" + { + } + "mouse_pressed_sound" "ui/item_contract_tracker_pickup.wav" + "drop_sound" "ui/item_contract_tracker_drop.wav" + } + "5871" + { + "name" "Abominable Cosmetic Case" + "first_sale_date" "2017/09/13" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "campaign3cosmetic1" + } + "item_name" "#TF_Campaign3CosmeticCase1" + "item_description" "#TF_Campaign3CosmeticCase1_Desc" + "ad_text" "#TF_Campaign3CosmeticCase1_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_jungle_yeti" + "model_player" "models/player/items/crafting/cosmetic_case.mdl" + "default_skin" "4" + "static_attrs" + { + "set supply crate series" "107" + "hide crate series number" "1" + "decoded by itemdefindex" "5873" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Campaign3Cosmetics" + "collection_reference" "Campaign3Cosmetics_Case1_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "4" + } + } + } + } + "5872" + { + "name" "Campaign 3 Cosmetics Case 1 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#Campaign3Cosmetics_Case1_collection" + "collection_reference" "Campaign3Cosmetics_Case1_collection" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_jungle_yeti" + } + "5873" + { + "name" "Abominable Cosmetic Key" + "first_sale_date" "2017/09/13" + "prefab" "eventkey" + "item_name" "#TF_Tool_Campaign3CosmeticKey1" + "item_description" "#TF_Tool_Campaign3CosmeticKey1_Desc" + "ad_text" "#TF_Tool_Campaign3CosmeticKey1_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_keyjungle_yeti" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "campaign3cosmetic1" + } + } + "5875" + { + "name" "Unleash the Beast Cosmetic Case" + "first_sale_date" "2017/09/13" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "campaign3cosmetic2" + } + "item_name" "#TF_Campaign3CosmeticCase2" + "item_description" "#TF_Campaign3CosmeticCase2_Desc" + "ad_text" "#TF_Campaign3CosmeticCase2_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_jungle_croc" + "model_player" "models/player/items/crafting/cosmetic_case.mdl" + "default_skin" "5" + "static_attrs" + { + "set supply crate series" "108" + "hide crate series number" "1" + "decoded by itemdefindex" "5877" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Campaign3Cosmetics" + "collection_reference" "Campaign3Cosmetics_Case2_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "5" + } + } + } + } + "5876" + { + "name" "Campaign 3 Cosmetics Case 2 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#Campaign3Cosmetics_Case2_collection" + "collection_reference" "Campaign3Cosmetics_Case2_collection" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_jungle_croc" + } + "5877" + { + "name" "Unleash the Beast Cosmetic Key" + "first_sale_date" "2017/09/13" + "prefab" "eventkey" + "item_name" "#TF_Tool_Campaign3CosmeticKey2" + "item_description" "#TF_Tool_Campaign3CosmeticKey2_Desc" + "ad_text" "#TF_Tool_Campaign3CosmeticKey2_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_keyjungle_croc" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "campaign3cosmetic2" + } + } + + "5878" + { + "name" "Campaign 3 Contract Paintkit Collection Dummy 1" + "prefab" "dummy_item" + "item_name" "#Campaign3Paintkits_contract1_collection" + "collection_reference" "Campaign3Paintkits_contract1_collection" + "image_inventory" "backpack/items/paintkit_bundle_01" + } + + "5879" + { + "name" "Campaign 3 Contract Paintkit Collection Dummy 2" + "prefab" "dummy_item" + "item_name" "#Campaign3Paintkits_contract2_collection" + "collection_reference" "Campaign3Paintkits_contract2_collection" + "image_inventory" "backpack/items/paintkit_bundle_01" + } + + "5880" + { + "name" "Campaign 3 Paintkit Case Collection Dummy 1" + "prefab" "dummy_item" + "item_name" "#Campaign3Paintkits_case1_collection" + "collection_reference" "Campaign3Paintkits_case1_collection" + "image_inventory" "backpack/player/items/crafting/weapons_case_paintkit" + } + + "5881" + { + "name" "Campaign 3 Paintkit Case Collection Dummy 2" + "prefab" "dummy_item" + "item_name" "#Campaign3Paintkits_case2_collection" + "collection_reference" "Campaign3Paintkits_case2_collection" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit" + } + + "5882" + { + "name" "Jungle Jackpot War Paint Key" + "first_sale_date" "2017/10/10" + "prefab" "valve eventkey" + "item_name" "#TF_Tool_Campaign3PaintkitKey1" + "item_description" "#TF_Tool_Campaign3PaintkitKey1_desc" + "ad_text" "#TF_Tool_Campaign3PaintkitKey1_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_paintkit" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "campaign3paintkit1" + } + } + + "5883" + { + "name" "Jungle Jackpot War Paint Case" + "first_sale_date" "2017/10/10" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "campaign3paintkit1" + } + "item_name" "#TF_Campaign3PaintkitCase1" + "item_description" "#TF_Campaign3PaintkitCase1_desc" + "ad_text" "#TF_Campaign3PaintkitCase1_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_paintkit" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "7" + "static_attrs" + { + "set supply crate series" "109" + "hide crate series number" "1" + "decoded by itemdefindex" "5882" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Campaign3Paintkits_case1_collection" + } + + "5884" + { + "name" "Infernal Reward War Paint Key" + "first_sale_date" "2017/10/10" + "prefab" "eventkey" + "item_name" "#TF_Tool_Campaign3PaintkitKey2" + "item_description" "#TF_Tool_Campaign3PaintkitKey2_desc" + "ad_text" "#TF_Tool_Campaign3PaintkitKey2_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_workshop_paintkit" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "campaign3paintkit2" + } + } + + "5885" + { + "name" "Infernal Reward War Paint Case" + "first_sale_date" "2017/10/10" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "campaign3paintkit2" + } + "item_name" "#TF_Campaign3PaintkitCase2" + "item_description" "#TF_Campaign3PaintkitCase2_desc" + "ad_text" "#TF_Campaign3PaintkitCase2_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "6" + "static_attrs" + { + "set supply crate series" "110" + "hide crate series number" "1" + "decoded by itemdefindex" "5884" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Campaign3Paintkits_case2_collection" + } + + "5886" + { + "name" "Self Gift - Stocking Stuffer 2017" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2017" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + + "5887" + { + "name" "Winter 2017 Cosmetic Key" + "first_sale_date" "2017/12/19" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2017CosmeticKey" + "item_description" "#TF_Tool_Winter2017CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2017CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2017" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2017" + } + } + + "5888" + { + "name" "Winter 2017 Cosmetic Case" + "first_sale_date" "2017/12/19" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2017" + } + "item_name" "#TF_Winter2017CosmeticCase" + "item_description" "#TF_Winter2017CosmeticCase_desc" + "ad_text" "#TF_Winter2017CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2017" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "6" + "static_attrs" + { + "set supply crate series" "117" + "hide crate series number" "1" + "decoded by itemdefindex" "5887" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2017Cosmetics" + "collection_reference" "Winter2017Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "6" + } + } + } + } + + "5889" + { + "name" "Winter 2017 War Paint Key" + "first_sale_date" "2017/12/20" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2017WarPaintKey" + "item_description" "#TF_Tool_Winter2017WarPaintKey_desc" + "ad_text" "#TF_Tool_Winter2017WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_smissmas2017" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2017paintkit" + } + } + + "5890" + { + "name" "Winter 2017 War Paint Case" + "first_sale_date" "2017/12/20" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "winter2017paintkit" + } + "item_name" "#TF_Winter2017WarPaintCase" + "item_description" "#TF_Winter2017WarPaintCase_desc" + "ad_text" "#TF_Winter2017WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_smissmas2017" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "8" + "static_attrs" + { + "set supply crate series" "118" + "hide crate series number" "1" + "decoded by itemdefindex" "5889" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Winter2017Paintkits_collection" + } + + "5891" + { + "name" "Jungle Inferno Contracts Pass" + "first_sale_date" "2017/09/13" + "prefab" "valve" + "item_class" "craft_item" + "tool" + { + "type" "grant_operation_pass" + "use_string" "#ActivateItem" + "usage" + { + "operation_pass" "Activated Campaign 3 Pass" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "static_attrs" + { + "is marketable" "1" + "is commodity" "1" + } + "show_in_armory" "1" + "item_type_name" "#TF_T" + "item_name" "#TF_JungleInfernoContractsPass" + "item_description" "#TF_JungleInfernoContractsPass_Desc" + "ad_text" "#TF_JungleInfernoContractsPass_AdText" + "item_quality" "unique" + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "image_inventory" "backpack/crafting/ticket_jungle_inferno000002" + } + + "5892" + { + "name" "Blue Moon Cosmetic Key" + "first_sale_date" "2018/03/26" + "prefab" "eventkey" + "item_name" "#TF_Tool_BlueMoonCosmeticKey" + "item_description" "#TF_Tool_BlueMoonCosmeticKey_Desc" + "ad_text" "#TF_Tool_BlueMoonCosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_bluemoon_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "bluemooncosmetic2018" + } + } + "5893" + { + "name" "Blue Moon Cosmetic Case" + "first_sale_date" "2018/03/26" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "bluemooncosmetic2018" + } + "item_name" "#TF_BlueMoonCosmeticCase" + "item_description" "#TF_BlueMoonCosmeticCase_desc" + "ad_text" "#TF_BlueMoonCosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_bluemoon" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "1" + "static_attrs" + { + "set supply crate series" "119" + "hide crate series number" "1" + "decoded by itemdefindex" "5892" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_BlueMoonCosmetics" + "collection_reference" "BlueMoonCosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "1" + } + } + } + } + "5894" + { + "name" "Halloween 2018 Case" + "first_sale_date" "2018/10/15" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2018" + } + "item_name" "#halloween2018_collection_case" + "item_description" "#halloween2018_collection_case_desc" + "ad_text" "#halloween2018_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2018_case" + "model_player" "models/player/items/crafting/halloween_case.mdl" + "default_skin" "1" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "120" + "hide crate series number" "1" + "decoded by itemdefindex" "5895" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2018_collection_case_footer" + "collection_reference" "halloween2018_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "1" + } + } + } + } + "5895" + { + "name" "Halloween 2018 Key" + "first_sale_date" "2018/10/15" + "prefab" "eventkey" + "item_name" "#halloween2018_collection_key" + "item_description" "#halloween2018_collection_key_desc" + "ad_text" "#halloween2018_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2018_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2018" + } + } + "5896" + { + "name" "Halloween 2018 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2018_collection_name" + "collection_reference" "halloween2018_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2018_case" + } + + "5897" + { + "name" "Scream Fortress 2018 War Paint Case" + "first_sale_date" "2018/10/17" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "halloween2018paintkit" + } + "item_name" "#TF_Halloween2018WarPaintCase" + "item_description" "#TF_Halloween2018WarPaintCase_desc" + "ad_text" "#TF_Halloween2018WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2018" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "9" + "static_attrs" + { + "set supply crate series" "121" + "hide crate series number" "1" + "decoded by itemdefindex" "5898" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Halloween2018Paintkits_collection" + } + + "5898" + { + "name" "Scream Fortress 2018 War Paint Key" + "first_sale_date" "2018/10/17" + "prefab" "eventkey" + "item_name" "#TF_Tool_Halloween2018WarPaintKey" + "item_description" "#TF_Tool_Halloween2018WarPaintKey_desc" + "ad_text" "#TF_Tool_Halloween2018WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_halloween2018" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2018paintkit" + } + } + "5899" + { + "name" "Scream Fortress 2018 War Paint Dummy" + "prefab" "dummy_item" + "item_name" "#Halloween2018Paintkits_collection" + "collection_reference" "Halloween2018Paintkits_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2018" + } + + "5900" + { + "name" "Self Gift - Stocking Stuffer 2018" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2018" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + + "5901" + { + "name" "Winter 2018 Cosmetic Key" + "first_sale_date" "2018/12/19" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2018CosmeticKey" + "item_description" "#TF_Tool_Winter2018CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2018CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2018" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2018" + } + } + + "5902" + { + "name" "Winter 2018 Cosmetic Case" + "first_sale_date" "2018/12/19" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2018" + } + "item_name" "#TF_Winter2018CosmeticCase" + "item_description" "#TF_Winter2018CosmeticCase_desc" + "ad_text" "#TF_Winter2018CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2018" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "7" + "static_attrs" + { + "set supply crate series" "122" + "hide crate series number" "1" + "decoded by itemdefindex" "5901" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2018Cosmetics" + "collection_reference" "Winter2018Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "7" + } + } + } + } + + "5903" + { + "name" "Summer 2019 Cosmetic Key" + "first_sale_date" "2019/07/24" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2019CosmeticKey" + "item_description" "#TF_Tool_Summer2019CosmeticKey_Desc" + "ad_text" "#TF_Tool_Summer2019CosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_key_summer2019" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2019" + } + } + + "5904" + { + "name" "Summer 2019 Cosmetic Case" + "first_sale_date" "2019/07/24" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "summer2019" + } + "item_name" "#TF_Summer2019CosmeticCase" + "item_description" "#TF_Summer2019CosmeticCase_desc" + "ad_text" "#TF_Summer2019CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_summer2019" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "3" + "static_attrs" + { + "set supply crate series" "123" + "hide crate series number" "1" + "decoded by itemdefindex" "5903" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Summer2019Cosmetics" + "collection_reference" "Summer2019Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "3" + } + } + } + } + + "5905" + { + "name" "Halloween 2019 Case" + "first_sale_date" "2019/10/01" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2019" + } + "item_name" "#halloween2019_collection_case" + "item_description" "#halloween2019_collection_case_desc" + "ad_text" "#halloween2019_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2019_case" + "model_player" "models/player/items/crafting/halloween_case.mdl" + "default_skin" "2" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "124" + "hide crate series number" "1" + "decoded by itemdefindex" "5906" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2019_collection_case_footer" + "collection_reference" "halloween2019_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "2" + } + } + } + } + "5906" + { + "name" "Halloween 2019 Key" + "first_sale_date" "2019/10/01" + "prefab" "eventkey" + "item_name" "#halloween2019_collection_key" + "item_description" "#halloween2019_collection_key_desc" + "ad_text" "#halloween2019_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2019_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2019" + } + } + "5907" + { + "name" "Halloween 2019 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2019_collection_name" + "collection_reference" "halloween2019_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2019_case" + } + + "5908" + { + "name" "Winter 2019 Cosmetic Key" + "first_sale_date" "2019/12/12" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2019CosmeticKey" + "item_description" "#TF_Tool_Winter2019CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2019CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2019" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2019" + } + } + "5909" + { + "name" "Winter 2019 Cosmetic Case" + "first_sale_date" "2019/12/12" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2019" + } + "item_name" "#TF_Winter2019CosmeticCase" + "item_description" "#TF_Winter2019CosmeticCase_desc" + "ad_text" "#TF_Winter2019CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2019" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "8" + "static_attrs" + { + "set supply crate series" "125" + "hide crate series number" "1" + "decoded by itemdefindex" "5908" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2019Cosmetics" + "collection_reference" "Winter2019Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "8" + } + } + } + } + "5910" + { + "name" "Self Gift - Stocking Stuffer 2019" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2019" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + "5911" + { + "name" "Winter 2019 War Paint Key" + "first_sale_date" "2019/12/12" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2019WarPaintKey" + "item_description" "#TF_Tool_Winter2019WarPaintKey_desc" + "ad_text" "#TF_Tool_Winter2019WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_smissmas2019" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2019paintkit" + } + } + "5912" + { + "name" "Winter 2019 War Paint Case" + "first_sale_date" "2019/12/12" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "winter2019paintkit" + } + "item_name" "#TF_Winter2019WarPaintCase" + "item_description" "#TF_Winter2019WarPaintCase_desc" + "ad_text" "#TF_Winter2019WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_smissmas2019" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "10" + "static_attrs" + { + "set supply crate series" "126" + "hide crate series number" "1" + "decoded by itemdefindex" "5911" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Winter2019Paintkits_collection" + } + "5913" + { + "name" "Summer 2020 Cosmetic Key" + "first_sale_date" "2020/08/17" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2020CosmeticKey" + "item_description" "#TF_Tool_Summer2020CosmeticKey_Desc" + "ad_text" "#TF_Tool_Summer2020CosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_key_summer2020" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2020" + } + } + "5914" + { + "name" "Summer 2020 Cosmetic Case" + "first_sale_date" "2020/08/17" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "summer2020" + } + "item_name" "#TF_Summer2020CosmeticCase" + "item_description" "#TF_Summer2020CosmeticCase_desc" + "ad_text" "#TF_Summer2020CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_summer2020" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "4" + "static_attrs" + { + "set supply crate series" "127" + "hide crate series number" "1" + "decoded by itemdefindex" "5913" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Summer2020Cosmetics" + "collection_reference" "Summer2020Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "4" + } + } + } + } + "5915" + { + "name" "Halloween 2020 Case" + "first_sale_date" "2020/10/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2020" + } + "item_name" "#halloween2020_collection_case" + "item_description" "#halloween2020_collection_case_desc" + "ad_text" "#halloween2020_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2020_case" + "model_player" "models/player/items/crafting/halloween_case.mdl" + "default_skin" "3" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "128" + "hide crate series number" "1" + "decoded by itemdefindex" "5916" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2020_collection_case_footer" + "collection_reference" "halloween2020_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "3" + } + } + } + } + "5916" + { + "name" "Halloween 2020 Key" + "first_sale_date" "2020/10/04" + "prefab" "eventkey" + "item_name" "#halloween2020_collection_key" + "item_description" "#halloween2020_collection_key_desc" + "ad_text" "#halloween2020_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2020_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2020" + } + } + "5917" + { + "name" "Halloween 2020 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2020_collection_name" + "collection_reference" "halloween2020_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2020_case" + } + "5918" + { + "name" "Scream Fortress 2020 War Paint Case" + "first_sale_date" "2020/10/03" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "halloween2020paintkit" + } + "item_name" "#TF_Halloween2020WarPaintCase" + "item_description" "#TF_Halloween2020WarPaintCase_desc" + "ad_text" "#TF_Halloween2020WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2020" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "11" + "static_attrs" + { + "set supply crate series" "129" + "hide crate series number" "1" + "decoded by itemdefindex" "5919" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Halloween2020Paintkits_collection" + } + "5919" + { + "name" "Scream Fortress 2020 War Paint Key" + "first_sale_date" "2020/10/03" + "prefab" "eventkey" + "item_name" "#TF_Tool_Halloween2020WarPaintKey" + "item_description" "#TF_Tool_Halloween2020WarPaintKey_desc" + "ad_text" "#TF_Tool_Halloween2020WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_halloween2020" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2020paintkit" + } + } + "5920" + { + "name" "Scream Fortress 2020 War Paint Dummy" + "prefab" "dummy_item" + "item_name" "#Halloween2020Paintkits_collection" + "collection_reference" "Halloween2020Paintkits_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2020" + } + + "5921" + { + "name" "Winter 2020 Cosmetic Key" + "first_sale_date" "2020/12/04" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2020CosmeticKey" + "item_description" "#TF_Tool_Winter2020CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2020CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2020" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2020" + } + } + "5922" + { + "name" "Winter 2020 Cosmetic Case" + "first_sale_date" "2020/12/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2020" + } + "item_name" "#TF_Winter2020CosmeticCase" + "item_description" "#TF_Winter2020CosmeticCase_desc" + "ad_text" "#TF_Winter2020CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2020" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "9" + "static_attrs" + { + "set supply crate series" "130" + "hide crate series number" "1" + "decoded by itemdefindex" "5921" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2020Cosmetics" + "collection_reference" "Winter2020Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "9" + } + } + } + } + "5923" + { + "name" "Self Gift - Stocking Stuffer 2020" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2020" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + "5924" + { + "name" "Winter 2020 War Paint Key" + "first_sale_date" "2020/12/02" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2020WarPaintKey" + "item_description" "#TF_Tool_Winter2020WarPaintKey_desc" + "ad_text" "#TF_Tool_Winter2020WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_smissmas2020" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2020paintkit" + } + } + "5925" + { + "name" "Winter 2020 War Paint Case" + "first_sale_date" "2020/12/02" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "winter2020paintkit" + } + "item_name" "#TF_Winter2020WarPaintCase" + "item_description" "#TF_Winter2020WarPaintCase_desc" + "ad_text" "#TF_Winter2020WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_smissmas2020" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "12" + "static_attrs" + { + "set supply crate series" "131" + "hide crate series number" "1" + "decoded by itemdefindex" "5924" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Winter2020Paintkits_collection" + } + + "5926" + { + "name" "Summer 2021 Cosmetic Key" + "first_sale_date" "2021/06/16" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2021CosmeticKey" + "item_description" "#TF_Tool_Summer2021CosmeticKey_Desc" + "ad_text" "#TF_Tool_Summer2021CosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_key_summer2021" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2021" + } + } + "5927" + { + "name" "Summer 2021 Cosmetic Case" + "first_sale_date" "2021/06/16" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "summer2021" + } + "item_name" "#TF_Summer2021CosmeticCase" + "item_description" "#TF_Summer2021CosmeticCase_desc" + "ad_text" "#TF_Summer2021CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_summer2021" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "5" + "static_attrs" + { + "set supply crate series" "132" + "hide crate series number" "1" + "decoded by itemdefindex" "5926" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Summer2021Cosmetics" + "collection_reference" "Summer2021Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "5" + } + } + } + } + + "5928" + { + "name" "Halloween 2021 Case" + "first_sale_date" "2021/10/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2021" + } + "item_name" "#halloween2021_collection_case" + "item_description" "#halloween2021_collection_case_desc" + "ad_text" "#halloween2021_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2021_case" + "model_player" "models/player/items/crafting/halloween2021_case.mdl" + "default_skin" "0" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "133" + "hide crate series number" "1" + "decoded by itemdefindex" "5929" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2021_collection_case_footer" + "collection_reference" "halloween2021_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "0" + } + } + } + } + "5929" + { + "name" "Halloween 2021 Key" + "first_sale_date" "2021/10/04" + "prefab" "eventkey" + "item_name" "#halloween2021_collection_key" + "item_description" "#halloween2021_collection_key_desc" + "ad_text" "#halloween2021_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2021_key" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2021" + } + } + "5930" + { + "name" "Halloween 2021 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2021_collection_name" + "collection_reference" "halloween2021_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2021_case" + } + "5931" + { + "name" "Scream Fortress 2021 War Paint Case" + "first_sale_date" "2021/10/03" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "halloween2021paintkit" + } + "item_name" "#TF_Halloween2021WarPaintCase" + "item_description" "#TF_Halloween2021WarPaintCase_desc" + "ad_text" "#TF_Halloween2021WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2021" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "13" + "static_attrs" + { + "set supply crate series" "134" + "hide crate series number" "1" + "decoded by itemdefindex" "5932" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Halloween2021Paintkits_collection" + } + "5932" + { + "name" "Scream Fortress 2021 War Paint Key" + "first_sale_date" "2021/10/03" + "prefab" "eventkey" + "item_name" "#TF_Tool_Halloween2021WarPaintKey" + "item_description" "#TF_Tool_Halloween2021WarPaintKey_desc" + "ad_text" "#TF_Tool_Halloween2021WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_halloween2021" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2021paintkit" + } + } + "5933" + { + "name" "Scream Fortress 2021 War Paint Dummy" + "prefab" "dummy_item" + "item_name" "#Halloween2021Paintkits_collection" + "collection_reference" "Halloween2021Paintkits_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2021" + } + + "5934" + { + "name" "Winter 2021 Cosmetic Key" + "first_sale_date" "2021/12/04" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2021CosmeticKey" + "item_description" "#TF_Tool_Winter2021CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2021CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2021" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2021" + } + } + "5935" + { + "name" "Winter 2021 Cosmetic Case" + "first_sale_date" "2021/12/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2021" + } + "item_name" "#TF_Winter2021CosmeticCase" + "item_description" "#TF_Winter2021CosmeticCase_desc" + "ad_text" "#TF_Winter2021CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2021" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "10" + "static_attrs" + { + "set supply crate series" "135" + "hide crate series number" "1" + "decoded by itemdefindex" "5934" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2021Cosmetics" + "collection_reference" "Winter2021Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "10" + } + } + } + } + "5936" + { + "name" "Self Gift - Stocking Stuffer 2021" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2021" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + "5937" + { + "name" "Summer 2022 Cosmetic Key" + "first_sale_date" "2022/07/29" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2022CosmeticKey" + "item_description" "#TF_Tool_Summer2022CosmeticKey_Desc" + "ad_text" "#TF_Tool_Summer2022CosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_key_summer2022" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2022" + } + } + "5938" + { + "name" "Summer 2022 Cosmetic Case" + "first_sale_date" "2022/07/29" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "summer2022" + } + "item_name" "#TF_Summer2022CosmeticCase" + "item_description" "#TF_Summer2022CosmeticCase_desc" + "ad_text" "#TF_Summer2022CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_summer2022" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "6" + "static_attrs" + { + "set supply crate series" "136" + "hide crate series number" "1" + "decoded by itemdefindex" "5937" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Summer2022Cosmetics" + "collection_reference" "Summer2022Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "6" + } + } + } + } + + "5939" + { + "name" "Halloween 2022 Case" + "first_sale_date" "2022/10/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2022" + } + "item_name" "#halloween2022_collection_case" + "item_description" "#halloween2022_collection_case_desc" + "ad_text" "#halloween2022_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2021_case2022" + "model_player" "models/player/items/crafting/halloween2021_case.mdl" + "default_skin" "1" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "137" + "hide crate series number" "1" + "decoded by itemdefindex" "5940" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2022_collection_case_footer" + "collection_reference" "halloween2022_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "1" + } + } + } + } + "5940" + { + "name" "Halloween 2022 Key" + "first_sale_date" "2022/10/04" + "prefab" "eventkey" + "item_name" "#halloween2022_collection_key" + "item_description" "#halloween2022_collection_key_desc" + "ad_text" "#halloween2022_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2021_key2022" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2022" + } + } + "5941" + { + "name" "Halloween 2022 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2022_collection_name" + "collection_reference" "halloween2022_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2021_case2022" + } + "5942" + { + "name" "Scream Fortress 2022 War Paint Case" + "first_sale_date" "2022/10/03" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "halloween2022paintkit" + } + "item_name" "#TF_Halloween2022WarPaintCase" + "item_description" "#TF_Halloween2022WarPaintCase_desc" + "ad_text" "#TF_Halloween2022WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2022" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "14" + "static_attrs" + { + "set supply crate series" "138" + "hide crate series number" "1" + "decoded by itemdefindex" "5943" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Halloween2022Paintkits_collection" + } + "5943" + { + "name" "Scream Fortress 2022 War Paint Key" + "first_sale_date" "2022/10/03" + "prefab" "eventkey" + "item_name" "#TF_Tool_Halloween2022WarPaintKey" + "item_description" "#TF_Tool_Halloween2022WarPaintKey_desc" + "ad_text" "#TF_Tool_Halloween2022WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_halloween2022" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2022paintkit" + } + } + "5944" + { + "name" "Scream Fortress 2022 War Paint Dummy" + "prefab" "dummy_item" + "item_name" "#Halloween2022Paintkits_collection" + "collection_reference" "Halloween2022Paintkits_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_halloween2022" + } + + "5945" + { + "name" "Self Gift - Stocking Stuffer 2022" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2022" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + "5946" + { + "name" "Winter 2022 Cosmetic Key" + "first_sale_date" "2022/12/04" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2022CosmeticKey" + "item_description" "#TF_Tool_Winter2022CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2022CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2022" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2022" + } + } + "5947" + { + "name" "Winter 2022 Cosmetic Case" + "first_sale_date" "2022/12/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2022" + } + "item_name" "#TF_Winter2022CosmeticCase" + "item_description" "#TF_Winter2022CosmeticCase_desc" + "ad_text" "#TF_Winter2022CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2022" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "11" + "static_attrs" + { + "set supply crate series" "139" + "hide crate series number" "1" + "decoded by itemdefindex" "5946" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2022Cosmetics" + "collection_reference" "Winter2022Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "11" + } + } + } + } + "5948" + { + "name" "Summer 2023 Cosmetic Key" + "first_sale_date" "2023/07/12" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2023CosmeticKey" + "item_description" "#TF_Tool_Summer2023CosmeticKey_Desc" + "ad_text" "#TF_Tool_Summer2023CosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_key_summer2023" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2023" + } + } + "5949" + { + "name" "Summer 2023 Cosmetic Case" + "first_sale_date" "2023/07/12" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "summer2023" + } + "item_name" "#TF_Summer2023CosmeticCase" + "item_description" "#TF_Summer2023CosmeticCase_desc" + "ad_text" "#TF_Summer2023CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_summer2023" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "7" + "static_attrs" + { + "set supply crate series" "140" + "hide crate series number" "1" + "decoded by itemdefindex" "5948" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Summer2023Cosmetics" + "collection_reference" "Summer2023Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "7" + } + } + } + } + "5950" + { + "name" "Summer 2023 War Paint Key" + "first_sale_date" "2023/07/11" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2023WarPaintKey" + "item_description" "#TF_Tool_Summer2023WarPaintKey_desc" + "ad_text" "#TF_Tool_Summer2023WarPaintKey_AdText" + "image_inventory" "backpack/player/items/crafting/weapon_case_key_summer2023" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2023paintkit" + } + } + "5951" + { + "name" "Summer 2023 War Paint Case" + "first_sale_date" "2023/07/11" + "prefab" "base_weapon_case" + "tool" + { + "restriction" "summer2023paintkit" + } + "item_name" "#TF_Summer2023WarPaintCase" + "item_description" "#TF_Summer2023WarPaintCase_desc" + "ad_text" "#TF_Summer2023WarPaintCase_AdText" + "image_inventory" "backpack/player/items/crafting/weapons_case_workshop_paintkit_summer2023" + "model_player" "models/player/items/crafting/weapons_case.mdl" + "default_skin" "15" + "static_attrs" + { + "set supply crate series" "141" + "hide crate series number" "1" + "decoded by itemdefindex" "5950" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_StrangeUnusualWeapon" + "collection_reference" "Summer2023Paintkits_collection" + } + "5952" + { + "name" "Halloween 2023 Case" + "first_sale_date" "2023/10/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "halloween2023" + } + "item_name" "#halloween2023_collection_case" + "item_description" "#halloween2023_collection_case_desc" + "ad_text" "#halloween2023_collection_case_adtext" + "image_inventory" "backpack/player/items/crafting/halloween2021_case2023" + "model_player" "models/player/items/crafting/halloween2021_case.mdl" + "default_skin" "2" + "inspect_panel_dist" "80" + "static_attrs" + { + "set supply crate series" "142" + "hide crate series number" "1" + "decoded by itemdefindex" "5953" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#halloween2023_collection_case_footer" + "collection_reference" "halloween2023_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "2" + } + } + } + } + "5953" + { + "name" "Halloween 2023 Key" + "first_sale_date" "2023/10/04" + "prefab" "eventkey" + "item_name" "#halloween2023_collection_key" + "item_description" "#halloween2023_collection_key_desc" + "ad_text" "#halloween2023_collection_key_adtext" + "image_inventory" "backpack/crafting/halloween2021_key2023" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "halloween2023" + } + } + "5954" + { + "name" "Halloween 2023 Collection Dummy" + "prefab" "dummy_item" + "item_name" "#halloween2023_collection_name" + "collection_reference" "halloween2023_collection" + "item_rarity" "rare" + "image_inventory" "backpack/player/items/crafting/halloween2021_case2023" + } + "5955" + { + "name" "Self Gift - Stocking Stuffer 2023" + "prefab" "randomgift" + "tool" + { + "usage" + { + "loot_list" "stocking_stuffer_2017_root" + "max_recipients" "1" + "target_rule" "only_self" + } + } + "capabilities" + { + "usable_gc" "1" + "usable_out_of_game" "1" + } + "attributes" + { + "cannot trade" + { + "attribute_class" "cannot_trade" + "value" "1" + } + } + "item_name" "#TF_StockingStuffer_2023" + "item_description" "#TF_StockingStuffer_Desc" + "image_inventory" "backpack/crafting/winter2013_stocking_stuffer" + "min_ilevel" "13" + "max_ilevel" "13" + } + "5956" + { + "name" "Winter 2023 Cosmetic Key" + "first_sale_date" "2023/12/04" + "prefab" "eventkey" + "item_name" "#TF_Tool_Winter2023CosmeticKey" + "item_description" "#TF_Tool_Winter2023CosmeticKey_Desc" + "ad_text" "#TF_Tool_Winter2023CosmeticKey_AdText" + "image_inventory" "backpack/crafting/cosmetic_case_key_xmas2023" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "winter2023" + } + } + "5957" + { + "name" "Winter 2023 Cosmetic Case" + "first_sale_date" "2023/12/04" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "winter2023" + } + "item_name" "#TF_Winter2023CosmeticCase" + "item_description" "#TF_Winter2023CosmeticCase_desc" + "ad_text" "#TF_Winter2023CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/cosmetic_case_ribbon_2023" + "model_player" "models/player/items/crafting/cosmetic_case_ribbon.mdl" + "default_skin" "12" + "static_attrs" + { + "set supply crate series" "143" + "hide crate series number" "1" + "decoded by itemdefindex" "5956" + "weapon_allow_inspect" "1" + "is winter case" "1" + } + "event_desc_footer" "#Footer_Winter2023Cosmetics" + "collection_reference" "Winter2023Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "12" + } + } + } + } + "5958" + { + "name" "Summer 2024 Cosmetic Key" + "first_sale_date" "2024/07/17" + "prefab" "eventkey" + "item_name" "#TF_Tool_Summer2024CosmeticKey" + "item_description" "#TF_Tool_Summer2024CosmeticKey_Desc" + "ad_text" "#TF_Tool_Summer2024CosmeticKey_AdText" + "image_inventory" "backpack/crafting/community_cosmetic_key_summer2024" + "tool" + { + "type" "decoder_ring" + "usage_capabilities" + { + "decodable" "1" + } + "restriction" "summer2024" + } + } + "5959" + { + "name" "Summer 2024 Cosmetic Case" + "first_sale_date" "2024/07/17" + "prefab" "base_cosmetic_case" + "tool" + { + "restriction" "summer2024" + } + "item_name" "#TF_Summer2024CosmeticCase" + "item_description" "#TF_Summer2024CosmeticCase_desc" + "ad_text" "#TF_Summer2024CosmeticCase_AdText" + "image_inventory" "backpack/player/items/crafting/community_cosmetic_case_summer2024" + "model_player" "models/player/items/crafting/community_cosmetic_case.mdl" + "default_skin" "8" + "static_attrs" + { + "set supply crate series" "144" + "hide crate series number" "1" + "decoded by itemdefindex" "5958" + "weapon_allow_inspect" "1" + } + "event_desc_footer" "#Footer_Summer2024Cosmetics" + "collection_reference" "Summer2024Cosmetics_collection" + "visuals" + { + "styles" + { + "0" + { + "skin" "8" + } + } + } + } + + "5999" + { + "name" "Strange Part (Armory)" + "prefab" "strange_part" + "armory_desc" "strangepart" + "show_in_armory" "1" + "image_inventory" "backpack/crafting/strange_parts" + "item_name" "#TF_StrangePart_Empty" + "item_description" "#TF_StrangePart_Empty_Desc" + } + + "6000" + { + "name" "Strange Part: Heavies Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "14" + } + } + "image_inventory" "backpack/crafting/strange_part_heavies_killed" + "item_name" "#TF_StrangePart_HeaviesKilled" + "item_description" "#TF_StrangePart_HeaviesKilled_Desc" + } + "6001" + { + "name" "Strange Part: Demomen Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "13" + } + } + "image_inventory" "backpack/crafting/strange_part_demos_killed" + "item_name" "#TF_StrangePart_DemomenKilled" + "item_description" "#TF_StrangePart_DemomenKilled_Desc" + } + "6002" + { + "name" "Strange Part: Soldiers Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "12" + } + } + "image_inventory" "backpack/crafting/strange_part_soldiers_killed" + "item_name" "#TF_StrangePart_SoldiersKilled" + "item_description" "#TF_StrangePart_SoldiersKilled_Desc" + } + "6003" + { + "name" "Strange Part: Scouts Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "10" + } + } + "image_inventory" "backpack/crafting/strange_part_scouts_killed" + "item_name" "#TF_StrangePart_ScoutsKilled" + "item_description" "#TF_StrangePart_ScoutsKilled_Desc" + } + "6004" + { + "name" "Strange Part: Engineers Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "17" + } + } + "image_inventory" "backpack/crafting/strange_part_engineers_killed" + "item_name" "#TF_StrangePart_EngineersKilled" + "item_description" "#TF_StrangePart_EngineersKilled_Desc" + } + "6005" + { + "name" "Strange Part: Snipers Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "11" + } + } + "image_inventory" "backpack/crafting/strange_part_snipers_killed" + "item_name" "#TF_StrangePart_SnipersKilled" + "item_description" "#TF_StrangePart_SnipersKilled_Desc" + } + "6006" + { + "name" "Strange Part: Pyros Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "15" + } + } + "image_inventory" "backpack/crafting/strange_part_pyros_killed" + "item_name" "#TF_StrangePart_PyrosKilled" + "item_description" "#TF_StrangePart_PyrosKilled_Desc" + } + "6007" + { + "name" "Strange Part: Medics Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "18" + } + } + "image_inventory" "backpack/crafting/strange_part_medics_killed" + "item_name" "#TF_StrangePart_MedicsKilled" + "item_description" "#TF_StrangePart_MedicsKilled_Desc" + } + "6008" + { + "name" "Strange Part: Spies Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "16" + } + } + "image_inventory" "backpack/crafting/strange_part_spies_killed" + "item_name" "#TF_StrangePart_SpiesKilled" + "item_description" "#TF_StrangePart_SpiesKilled_Desc" + } + "6009" + { + "name" "Strange Part: Buildings Destroyed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + "required_missing_tags" + { + "cannot_damage_buildings" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "19" + } + } + "image_inventory" "backpack/crafting/strange_part_buildings_destroyed" + "item_name" "#TF_StrangePart_BuildingsDestroyed" + "item_description" "#TF_StrangePart_BuildingsDestroyed_Desc" + } + "6010" + { + "name" "Strange Part: Projectiles Reflected" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_reflect_projectiles" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "20" + } + } + "image_inventory" "backpack/crafting/strange_part_projectiles_deflected" + "item_name" "#TF_StrangePart_ProjectilesReflected" + "item_description" "#TF_StrangePart_ProjectilesReflected_Desc" + } + "6011" + { + "name" "Strange Part: Headshot Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_headshot" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "21" + } + } + "image_inventory" "backpack/crafting/strange_part_headshots" + "item_name" "#TF_StrangePart_HeadshotKills" + "item_description" "#TF_StrangePart_HeadshotKills_Desc" + } + "6012" + { + "name" "Strange Part: Airborne Enemies Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "22" + } + } + "image_inventory" "backpack/crafting/strange_part_airborne_killed" + "item_name" "#TF_StrangePart_AirborneEnemiesKilled" + "item_description" "#TF_StrangePart_AirborneEnemiesKilled_Desc" + } + "6013" + { + "name" "Strange Part: Enemies Gibbed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_gib_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "23" + } + } + "image_inventory" "backpack/crafting/strange_part_enemies_gibbed" + "item_name" "#TF_StrangePart_GibKilled" + "item_description" "#TF_StrangePart_GibKilled_Desc" + } + + "6015" + { + "name" "Strange Part: Full Moon Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "27" + } + } + "image_inventory" "backpack/crafting/strange_part_KillDuringFullMoon" + "item_name" "#TF_StrangePart_FullMoonKills" + "item_description" "#TF_StrangePart_FullMoonKills_Desc" + } + "6016" + { + "name" "Strange Part: Domination Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "28" + } + } + "image_inventory" "backpack/crafting/strange_part_KillStartDomination" + "item_name" "#TF_StrangePart_DominationKills" + "item_description" "#TF_StrangePart_DominationKills_Desc" + } + "6018" + { + "name" "Strange Part: Revenge Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "30" + } + } + "image_inventory" "backpack/crafting/strange_part_KillRevenge" + "item_name" "#TF_StrangePart_RevengeKills" + "item_description" "#TF_StrangePart_RevengeKills_Desc" + } + "6019" + { + "name" "Strange Part: Posthumous Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_posthumous_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "31" + } + } + "image_inventory" "backpack/crafting/strange_part_PlayerKillPosthumous" + "item_name" "#TF_StrangePart_PosthumousKills" + "item_description" "#TF_StrangePart_PosthumousKills_Desc" + } + "6020" + { + "name" "Strange Part: Allies Extinguished" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_extinguish" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "32" + } + } + "image_inventory" "backpack/crafting/strange_part_burningallyextinguished" + "item_name" "#TF_StrangePart_AlliesExtinguished" + "item_description" "#TF_StrangePart_AlliesExtinguished_Desc" + } + "6021" + { + "name" "Strange Part: Critical Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_critical_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "33" + } + } + "image_inventory" "backpack/crafting/strange_part_killcritical" + "item_name" "#TF_StrangePart_CriticalKills" + "item_description" "#TF_StrangePart_CriticalKills_Desc" + } + "6022" + { + "name" "Strange Part: Kills While Explosive-Jumping" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_be_equipped_by_soldier_or_demo" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "34" + } + } + "image_inventory" "backpack/crafting/strange_part_KillWhileExplosiveJumping" + "item_name" "#TF_StrangePart_KillsWhileExplosiveJumping" + "item_description" "#TF_StrangePart_KillsWhileExplosiveJumping_Desc" + } + "6023" + { + "name" "Strange Part: Ubers Dropped" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "38" + } + } + "image_inventory" "backpack/crafting/strange_part_ubers_dropped" + "item_name" "#TF_StrangePart_UbersDropped" + "item_description" "#TF_StrangePart_UbersDropped_Desc" + } + "6024" + { + "name" "Strange Part: Cloaked Spies Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "37" + } + } + "image_inventory" "backpack/crafting/strange_part_invisibles_killed" + "item_name" "#TF_StrangePart_InvisibleSpyKills" + "item_description" "#TF_StrangePart_InvisibleSpyKills_Desc" + } + "6025" + { + "name" "Strange Part: Sappers Destroyed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_destroy_sappers" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "36" + } + } + "image_inventory" "backpack/crafting/strange_part_sappers_killed" + "item_name" "#TF_StrangePart_SappersDestroyed" + "item_description" "#TF_StrangePart_SappersDestroyed_Desc" + } + "6026" + { + "name" "Strange Part: Robots Destroyed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "39" + } + } + "image_inventory" "backpack/crafting/strange_part_mvm_robot_kills" + "item_name" "#TF_StrangePart_RobotsDestroyed" + "item_description" "#TF_StrangePart_RobotsDestroyed_Desc" + } + "6028" + { + "name" "Strange Part: Giant Robots Destroyed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "40" + } + } + "image_inventory" "backpack/crafting/strange_part_giant_kills" + "item_name" "#TF_StrangePart_GiantRobotsDestroyed" + "item_description" "#TF_StrangePart_GiantRobotsDestroyed_Desc" + } + "6032" + { + "name" "Strange Part: Kills While Low-Health" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "44" + } + } + "image_inventory" "backpack/crafting/strange_part_10_percent_kills" + "item_name" "#TF_StrangePart_KillWhileLowHealth" + "item_description" "#TF_StrangePart_KillWhileLowHealth_Desc" + } + "6033" + { + "name" "Strange Part: Halloween Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "45" + } + } + "image_inventory" "backpack/crafting/strange_part_halloween_kills" + "item_name" "#TF_StrangePart_HalloweenKills" + "item_description" "#TF_StrangePart_HalloweenKills_Desc" + } + "6034" + { + "name" "Strange Part: Robots Destroyed During Halloween" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "46" + } + } + "image_inventory" "backpack/crafting/strange_part_mvm_robot_kills_halloween" + "item_name" "#TF_StrangePart_RobotsDestroyedDuringHalloween" + "item_description" "#TF_StrangePart_RobotsDestroyedDuringHalloween_Desc" + } + "6035" + { + "name" "Strange Part: Defender Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "47" + } + } + "image_inventory" "backpack/crafting/strange_part_defender_kill" + "item_name" "#TF_StrangePart_DefenderKills" + "item_description" "#TF_StrangePart_DefenderKills_Desc" + } + "6036" + { + "name" "Strange Part: Underwater Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "48" + } + } + "image_inventory" "backpack/crafting/strange_part_underwater_kill" + "item_name" "#TF_StrangePart_UnderwaterKills" + "item_description" "#TF_StrangePart_UnderwaterKills_Desc" + } + "6037" + { + "name" "Strange Part: Kills While Ubercharged" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + "required_missing_tags" + { + "prevents_uber" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "49" + } + } + "image_inventory" "backpack/crafting/strange_part_kill_while_uber" + "item_name" "#TF_StrangePart_KillsWhileUbercharged" + "item_description" "#TF_StrangePart_KillsWhileUbercharged_Desc" + } + "6038" + { + "name" "Strange Part: Tanks Destroyed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + "required_missing_tags" + { + "cannot_damage_tanks" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "61" + } + } + "image_inventory" "backpack/crafting/strange_part_tank_destroyed" + "item_name" "#TF_StrangePart_TanksDestroyed" + "item_description" "#TF_StrangePart_TanksDestroyed_Desc" + } + "6039" + { + "name" "Strange Part: Long-Distance Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_long_distance_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "62" + } + } + "image_inventory" "backpack/crafting/strange_part_long_distance_kills" + "item_name" "#TF_StrangePart_LongDistanceKills" + "item_description" "#TF_StrangePart_LongDistanceKills_Desc" + } + "6041" + { + "name" "Strange Part: Victory Time Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "67" + } + } + "image_inventory" "backpack/crafting/strange_part_humiliation_kills" + "item_name" "#TF_StrangePart_VictoryTimeKills" + "item_description" "#TF_StrangePart_VictoryTimeKills_Desc" + } + + "6042" + { + "name" "Strange Part: Robot Scout Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "68" + } + } + "image_inventory" "backpack/crafting/strange_part_robot_scouts_killed" + "item_name" "#TF_StrangePart_RobotScoutKills" + "item_description" "#TF_StrangePart_RobotScoutKills_Desc" + } + "6048" + { + "name" "Strange Part: Robot Spy Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "74" + } + } + "image_inventory" "backpack/crafting/strange_part_robospys_killed" + "item_name" "#TF_StrangePart_RobotSpyKills" + "item_description" "#TF_StrangePart_RobotSpyKills_Desc" + } + + "6051" + { + "name" "Strange Part: Taunt Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_taunt_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "77" + } + } + "image_inventory" "backpack/crafting/strange_part_taunt_kills" + "item_name" "#TF_StrangePart_TauntKills" + "item_description" "#TF_StrangePart_TauntKills_Desc" + } + "6052" + { + "name" "Strange Part: Players Wearing Unusuals" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "78" + } + } + "image_inventory" "backpack/crafting/strange_part_unusuals_killed" + "item_name" "#TF_StrangePart_PlayersWearingUnusualsKills" + "item_description" "#TF_StrangePart_PlayersWearingUnusualsKills_Desc" + } + "6053" + { + "name" "Strange Part: Burning Enemies Killed" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "79" + } + } + "image_inventory" "backpack/crafting/strange_part_burning_enemies_killed" + "item_name" "#TF_StrangePart_BurningEnemiesKilled" + "item_description" "#TF_StrangePart_BurningEnemiesKilled_Desc" + } + "6054" + { + "name" "Strange Part: Killstreaks Ended" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "80" + } + } + "image_inventory" "backpack/crafting/strange_part_killstreaks_ended" + "item_name" "#TF_StrangePart_KillstreaksEnded" + "item_description" "#TF_StrangePart_KillstreaksEnded_Desc" + } + "6055" + { + "name" "Strange Cosmetic Part: Killcam Taunts" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "is_cosmetic" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "81" + } + } + "image_inventory" "backpack/crafting/strange_part_killcam_taunts" + "item_name" "#TF_StrangePart_KillcamTaunts" + "item_description" "#TF_StrangePart_KillcamTaunts_Desc" + } + "6056" + { + "name" "Strange Part: Damage Dealt" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "82" + } + } + "image_inventory" "backpack/crafting/strange_part_damage_dealt" + "item_name" "#TF_StrangePart_DamageDealt" + "item_description" "#TF_StrangePart_DamageDealt_Desc" + } + "6057" + { + "name" "Strange Cosmetic Part: Fires Survived" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "is_cosmetic" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "83" + } + } + "image_inventory" "backpack/crafting/strange_part_fires_survived" + "item_name" "#TF_StrangePart_FiresSurvived" + "item_description" "#TF_StrangePart_FiresSurvived_Desc" + } + "6058" + { + "name" "Strange Part: Ally Healing Done" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_heal_allies" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "84" + } + } + "image_inventory" "backpack/crafting/strange_part_healing_done" + "item_name" "#TF_StrangePart_AllyHealing" + "item_description" "#TF_StrangePart_AllyHealing_Desc" + } + "6059" + { + "name" "Strange Part: Point-Blank Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "85" + } + } + "image_inventory" "backpack/crafting/strange_part_point_blank" + "item_name" "#TF_StrangePart_PointBlankKills" + "item_description" "#TF_StrangePart_PointBlankKills_Desc" + } + "6060" + { + "name" "Strange Cosmetic Part: Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "is_cosmetic" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "87" + } + } + "image_inventory" "backpack/crafting/strange_cosmetic_part_kills" + "item_name" "#TF_StrangePart_CosmeticKills" + "item_description" "#TF_StrangePart_CosmeticKills_Desc" + } + "6061" + { + "name" "Strange Part: Full Health Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "88" + } + } + "image_inventory" "backpack/crafting/strange_part_full_health_kills" + "item_name" "#TF_StrangePart_FullHealthKills" + "item_description" "#TF_StrangePart_FullHealthKills_Desc" + } + "6062" + { + "name" "Strange Part: Taunting Player Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "89" + } + } + "image_inventory" "backpack/crafting/strange_part_conga_killer" + "item_name" "#TF_StrangePart_TauntingPlayerKills" + "item_description" "#TF_StrangePart_TauntingPlayerKills_Desc" + } + "6063" + { + "name" "Strange Part: Non-Critical Kills" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "93" + } + } + "image_inventory" "backpack/crafting/strange_part_no_crit" + "item_name" "#TF_StrangePart_NonCritKills" + "item_description" "#TF_StrangePart_NonCritKills_Desc" + } + "6064" + { + "name" "Strange Part: Players Hit" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "94" + } + } + "image_inventory" "backpack/crafting/strange_part_players_hit" + "item_name" "#TF_StrangePart_PlayersHit" + "item_description" "#TF_StrangePart_PlayersHit_Desc" + } + "6065" + { + "name" "Strange Cosmetic Part: Assists" + "prefab" "strange_part" + "tool" + { + "usage" + { + "required_tags" + { + "is_cosmetic" "1" + } + } + } + "attributes" + { + "strange part new counter ID" + { + "attribute_class" "strange_part_new_counter_id" + "value" "95" + } + } + "image_inventory" "backpack/crafting/strange_part_assists" + "item_name" "#TF_StrangePart_CosmeticAssists" + "item_description" "#TF_StrangePart_CosmeticAssists_Desc" + } + + "6500" + { + "name" "Strange Filter: Coldfront (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_coldfront" + } + } + "image_inventory" "backpack/crafting/strange_filter_coldfront" + "item_name" "#TF_StrangeFilter_CommunityMapColdfront" + "item_description" "#TF_StrangeFilter_CommunityMapColdfront_Desc" + } + "6502" + { + "name" "Strange Filter: Egypt (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_egypt_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_egypt" + "item_name" "#TF_StrangeFilter_CommunityMapEgypt" + "item_description" "#TF_StrangeFilter_CommunityMapEgypt_Desc" + } + "6503" + { + "name" "Strange Filter: Junction (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_junction_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_junction" + "item_name" "#TF_StrangeFilter_CommunityMapJunction" + "item_description" "#TF_StrangeFilter_CommunityMapJunction_Desc" + } + "6504" + { + "name" "Strange Filter: Mountain Lab (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_mountainlab" + } + } + "image_inventory" "backpack/crafting/strange_filter_mountainlab" + "item_name" "#TF_StrangeFilter_CommunityMapMountainLab" + "item_description" "#TF_StrangeFilter_CommunityMapMountainLab_Desc" + } + "6505" + { + "name" "Strange Filter: Steel (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_steel" + } + } + "image_inventory" "backpack/crafting/strange_filter_steel" + "item_name" "#TF_StrangeFilter_CommunityMapSteel" + "item_description" "#TF_StrangeFilter_CommunityMapSteel_Desc" + } + "6506" + { + "name" "Strange Filter: Gullywash (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_gullywash_final1" + } + } + "image_inventory" "backpack/crafting/strange_filter_gullywash" + "item_name" "#TF_StrangeFilter_CommunityMapGullywash" + "item_description" "#TF_StrangeFilter_CommunityMapGullywash_Desc" + } + "6507" + { + "name" "Strange Filter: Turbine (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_turbine" + } + } + "image_inventory" "backpack/crafting/strange_filter_turbine" + "item_name" "#TF_StrangeFilter_CommunityMapTurbine" + "item_description" "#TF_StrangeFilter_CommunityMapTurbine_Desc" + } + "6508" + { + "name" "Strange Filter: Fastlane (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_fastlane" + } + } + "image_inventory" "backpack/crafting/strange_filter_fastlane" + "item_name" "#TF_StrangeFilter_CommunityMapFastlane" + "item_description" "#TF_StrangeFilter_CommunityMapFastlane_Desc" + } + "6509" + { + "name" "Strange Filter: Freight (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_freight_final1" + } + } + "image_inventory" "backpack/crafting/strange_filter_freight" + "item_name" "#TF_StrangeFilter_CommunityMapFreight" + "item_description" "#TF_StrangeFilter_CommunityMapFreight_Desc" + } + "6510" + { + "name" "Strange Filter: Yukon (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_yukon_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_yukon" + "item_name" "#TF_StrangeFilter_CommunityMapYukon" + "item_description" "#TF_StrangeFilter_CommunityMapYukon_Desc" + } + "6511" + { + "name" "Strange Filter: Harvest (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_harvest_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_harvest" + "item_name" "#TF_StrangeFilter_CommunityMapHarvest" + "item_description" "#TF_StrangeFilter_CommunityMapHarvest_Desc" + } + "6512" + { + "name" "Strange Filter: Lakeside (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_lakeside_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_lakeside" + "item_name" "#TF_StrangeFilter_CommunityMapLakeside" + "item_description" "#TF_StrangeFilter_CommunityMapLakeside_Desc" + } + "6513" + { + "name" "Strange Filter: Kong King (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_king" + } + } + "image_inventory" "backpack/crafting/strange_filter_kongking" + "item_name" "#TF_StrangeFilter_CommunityMapKongKing" + "item_description" "#TF_StrangeFilter_CommunityMapKongKing_Desc" + } + "6514" + { + "name" "Strange Filter: Frontier (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_frontier_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_frontier" + "item_name" "#TF_StrangeFilter_CommunityMapFrontier" + "item_description" "#TF_StrangeFilter_CommunityMapFrontier_Desc" + } + "6515" + { + "name" "Strange Filter: Hoodoo (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_hoodoo_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_hoodoo" + "item_name" "#TF_StrangeFilter_CommunityMapHoodoo" + "item_description" "#TF_StrangeFilter_CommunityMapHoodoo_Desc" + } + "6516" + { + "name" "Strange Filter: Nightfall (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "plr_nightfall_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_nightfall" + "item_name" "#TF_StrangeFilter_CommunityMapNightfall" + "item_description" "#TF_StrangeFilter_CommunityMapNightfall_Desc" + } + "6517" + { + "name" "Strange Filter: Watchtower (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "arena_watchtower" + } + } + "image_inventory" "backpack/crafting/strange_filter_watchtower" + "item_name" "#TF_StrangeFilter_CommunityMapWatchtower" + "item_description" "#TF_StrangeFilter_CommunityMapWatchtower_Desc" + } + "6518" + { + "name" "Strange Filter: Offblast (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "arena_offblast_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_offblast" + "item_name" "#TF_StrangeFilter_CommunityMapOffblast" + "item_description" "#TF_StrangeFilter_CommunityMapOffblast_Desc" + } + "6519" + { + "name" "Strange Filter: Mann Manor (Community)" + "first_sale_date" "2012/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_manor_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_manor" + "item_name" "#TF_StrangeFilter_CommunityMapManorEvent" + "item_description" "#TF_StrangeFilter_CommunityMapManorEvent_Desc" + } + "6520" + { + "name" "Strange Filter: Process (Community)" + "first_sale_date" "2013/07/12" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_process_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_process" + "item_name" "#TF_StrangeFilter_CommunityMapProcess" + "item_description" "#TF_StrangeFilter_CommunityMapProcess_Desc" + } + "6521" + { + "name" "Strange Filter: Standin (Community)" + "first_sale_date" "2013/07/12" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_standin_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_standin" + "item_name" "#TF_StrangeFilter_CommunityMapStandin" + "item_description" "#TF_StrangeFilter_CommunityMapStandin_Desc" + } + + "6522" + { + "name" "Strangifier" + "prefab" "strangifier_base" + "tool" + { + + } + "item_name" "#TF_Strangifier_Name" + "item_description" "#TF_Strangifier_Desc" + "image_inventory" "backpack/crafting/strange_generic" + } + + "6523" + { + "name" "Killstreakifier" + "prefab" "killstreakifier_base" + "item_name" "#TF_KillStreakifier_Name" + "item_description" "#TF_KillStreakifier_Desc" + "item_type_name" "#TF_KillStreakifierToolB" + "image_inventory" "backpack/crafting/professional_grease" + "attributes" + { + "killstreak tier" + { + "attribute_class" "killstreak_tier" + "value" "2" + } + } + } + + "6524" + { + "name" "Strange Filter: Snakewater (Community)" + "first_sale_date" "2013/11/20" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_snakewater_final1" + } + } + "image_inventory" "backpack/crafting/strange_filter_snakewater" + "item_name" "#TF_StrangeFilter_CommunityMapSnakewater" + "item_description" "#TF_StrangeFilter_CommunityMapSnakewater_Desc" + } + + "6526" + { + "name" "Killstreakifier Rare" + "prefab" "killstreakifier_base" + "item_name" "#TF_KillStreakifierRare_Name" + "item_description" "#TF_KillStreakifierRare_Desc" + "item_type_name" "#TF_KillStreakifierToolC" + "image_inventory" "backpack/crafting/professional_grease_rare" + "attributes" + { + "killstreak tier" + { + "attribute_class" "killstreak_tier" + "value" "3" + } + } + } + + "6527" + { + "name" "Killstreakifier Basic" + "prefab" "killstreakifier_base" + "item_description" "#TF_KillStreakifierBasic_Desc" + "image_inventory" "backpack/crafting/professional_grease_basic" + "attributes" + { + "killstreak tier" + { + "attribute_class" "killstreak_tier" + "value" "1" + } + } + } + + "6528" + { + "name" "Strange Filter: Snowplow (Community)" + "first_sale_date" "2015/08/27" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_snowplow" + } + } + "image_inventory" "backpack/crafting/strange_filter_snowplow" + "item_name" "#TF_StrangeFilter_CommunityMapSnowplow" + "item_description" "#TF_StrangeFilter_CommunityMapSnowplow_Desc" + "ad_text" "#TF_MapToken_Snowplow_AdText" + } + + "6529" + { + "name" "Strange Filter: Borneo (Community)" + "first_sale_date" "2015/08/27" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_borneo" + } + } + "image_inventory" "backpack/crafting/strange_filter_borneo" + "item_name" "#TF_StrangeFilter_CommunityMapBorneo" + "item_description" "#TF_StrangeFilter_CommunityMapBorneo_Desc" + "ad_text" "#TF_MapToken_Borneo_AdText" + } + + "6530" + { + "name" "Strange Filter: Suijin (Community)" + "first_sale_date" "2015/08/27" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_suijin" + } + } + "image_inventory" "backpack/crafting/strange_filter_suijin" + "item_name" "#TF_StrangeFilter_CommunityMapSuijin" + "item_description" "#TF_StrangeFilter_CommunityMapSuijin_Desc" + "ad_text" "#TF_MapToken_Suijin_AdText" + } + + "6531" + { + "name" "Strange Filter: 2Fort Invasion (Community)" + "first_sale_date" "2015/09/28" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_2fort_invasion" + } + } + "image_inventory" "backpack/crafting/strange_filter_2fort_inv" + "item_name" "#TF_StrangeFilter_CommunityMap2FortInv" + "item_description" "#TF_StrangeFilter_CommunityMap2FortInv_Desc" + "ad_text" "#TF_MapToken_2FortInv_AdText" + } + + "6532" + { + "name" "Strange Filter: Probed (Community)" + "first_sale_date" "2015/09/28" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_probed" + } + } + "image_inventory" "backpack/crafting/strange_filter_probed" + "item_name" "#TF_StrangeFilter_CommunityMapProbed" + "item_description" "#TF_StrangeFilter_CommunityMapProbed_Desc" + "ad_text" "#TF_MapToken_Probed_AdText" + } + + "6533" + { + "name" "Strange Filter: Watergate (Community)" + "first_sale_date" "2015/09/28" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_watergate" + } + } + "image_inventory" "backpack/crafting/strange_filter_watergate" + "item_name" "#TF_StrangeFilter_CommunityMapWatergate" + "item_description" "#TF_StrangeFilter_CommunityMapWatergate_Desc" + "ad_text" "#TF_MapToken_Watergate_AdText" + } + + "6534" + { + "name" "Strange Filter: Byre (Community)" + "first_sale_date" "2015/09/28" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "arena_byre" + } + } + "image_inventory" "backpack/crafting/strange_filter_byre" + "item_name" "#TF_StrangeFilter_CommunityMapByre" + "item_description" "#TF_StrangeFilter_CommunityMapByre_Desc" + "ad_text" "#TF_MapToken_Byre_AdText" + } + "6535" + { + "name" "Strange Filter: Gorge Event (Community)" + "first_sale_date" "2015/10/25" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_gorge_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_gorge_event" + "item_name" "#TF_StrangeFilter_CommunityMapGorgeEvent" + "item_description" "#TF_StrangeFilter_CommunityMapGorgeEvent_Desc" + "ad_text" "#TF_MapToken_GorgeEvent_AdText" + } + "6536" + { + "name" "Strange Filter: Sunshine Event (Community)" + "first_sale_date" "2015/10/25" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_sunshine_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_sunshine_event" + "item_name" "#TF_StrangeFilter_CommunityMapSunshineEvent" + "item_description" "#TF_StrangeFilter_CommunityMapSunshineEvent_Desc" + "ad_text" "#TF_MapToken_SunshineEvent_AdText" + } + "6537" + { + "name" "Strange Filter: Moonshine Event (Community)" + "first_sale_date" "2015/10/25" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_moonshine_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_moonshine_event" + "item_name" "#TF_StrangeFilter_CommunityMapMoonshineEvent" + "item_description" "#TF_StrangeFilter_CommunityMapMoonshineEvent_Desc" + "ad_text" "#TF_MapToken_MoonshineEvent_AdText" + } + "6538" + { + "name" "Strange Filter: Millstone Event (Community)" + "first_sale_date" "2015/10/25" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_millstone_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_millstone_event" + "item_name" "#TF_StrangeFilter_CommunityMapMillstoneEvent" + "item_description" "#TF_StrangeFilter_CommunityMapMillstoneEvent_Desc" + "ad_text" "#TF_MapToken_MillstoneEvent_AdText" + } + "6539" + { + "name" "Strange Filter: Snowycoast (Community)" + "first_sale_date" "2015/12/11" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_snowycoast" + } + } + "image_inventory" "backpack/crafting/strange_filter_snowycoast" + "item_name" "#TF_StrangeFilter_CommunityMapSnowycoast" + "item_description" "#TF_StrangeFilter_CommunityMapSnowycoast_Desc" + "ad_text" "#TF_MapToken_Snowycoast_AdText" + } + "6540" + { + "name" "Strange Filter: Vanguard (Community)" + "first_sale_date" "2015/12/11" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_vanguard" + } + } + "image_inventory" "backpack/crafting/strange_filter_vanguard" + "item_name" "#TF_StrangeFilter_CommunityMapVanguard" + "item_description" "#TF_StrangeFilter_CommunityMapVanguard_Desc" + "ad_text" "#TF_MapToken_Vanguard_AdText" + } + "6541" + { + "name" "Strange Filter: Landfall (Community)" + "first_sale_date" "2015/12/11" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_landfall" + } + } + "image_inventory" "backpack/crafting/strange_filter_landfall" + "item_name" "#TF_StrangeFilter_CommunityMapLandfall" + "item_description" "#TF_StrangeFilter_CommunityMapLandfall_Desc" + "ad_text" "#TF_MapToken_Landfall_AdText" + } + "6542" + { + "name" "Strange Filter: Highpass (Community)" + "first_sale_date" "2015/12/11" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_highpass" + } + } + "image_inventory" "backpack/crafting/strange_filter_highpass" + "item_name" "#TF_StrangeFilter_CommunityMapHighpass" + "item_description" "#TF_StrangeFilter_CommunityMapHighpass_Desc" + "ad_text" "#TF_MapToken_Highpass_AdText" + } + "6543" + { + "name" "Strange Filter: Competitive" + "first_sale_date" "2016/06/21" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "competitive" + "restriction_value" "1" + } + } + "image_inventory" "backpack/crafting/strange_filter_competitive" + "item_name" "#TF_StrangeFilter_Competitive" + "item_description" "#TF_StrangeFilter_Competitive_Desc" + } + "6544" + { + "name" "Strange Filter: Sunshine (Community)" + "first_sale_date" "2016/06/15" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_sunshine" + } + } + "image_inventory" "backpack/crafting/strange_filter_sunshine" + "item_name" "#TF_StrangeFilter_CommunityMapSunshine" + "item_description" "#TF_StrangeFilter_CommunityMapSunshine_Desc" + "ad_text" "#TF_MapToken_Sunshine_AdText" + } + "6545" + { + "name" "Strange Filter: Metalworks (Community)" + "first_sale_date" "2016/06/15" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_metalworks" + } + } + "image_inventory" "backpack/crafting/strange_filter_metalworks" + "item_name" "#TF_StrangeFilter_CommunityMapMetalworks" + "item_description" "#TF_StrangeFilter_CommunityMapMetalworks_Desc" + "ad_text" "#TF_MapToken_Metalworks_AdText" + } + "6546" + { + "name" "Strange Filter: Swiftwater (Community)" + "first_sale_date" "2016/06/15" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_swiftwater_final1" + } + } + "image_inventory" "backpack/crafting/strange_filter_swiftwater" + "item_name" "#TF_StrangeFilter_CommunityMapSwiftwater" + "item_description" "#TF_StrangeFilter_CommunityMapSwiftwater_Desc" + "ad_text" "#TF_MapToken_Swiftwater_AdText" + } + "6547" + { + "name" "Strange Filter: Maple Ridge Event (Community)" + "first_sale_date" "2016/10/19" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_maple_ridge_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_maple_ridge_event" + "item_name" "#TF_StrangeFilter_CommunityMapMapleRidgeEvent" + "item_description" "#TF_StrangeFilter_CommunityMapMapleRidgeEvent_Desc" + "ad_text" "#TF_MapToken_MapleRidgeEvent_AdText" + } + "6548" + { + "name" "Strange Filter: Fifth Curve Event (Community)" + "first_sale_date" "2016/10/19" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_fifthcurve_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_curve_event" + "item_name" "#TF_StrangeFilter_CommunityMapFifthCurveEvent" + "item_description" "#TF_StrangeFilter_CommunityMapFifthCurveEvent_Desc" + "ad_text" "#TF_MapToken_FifthCurveEvent_AdText" + } + "6549" + { + "name" "Strange Filter: Pit of Death (Community)" + "first_sale_date" "2016/10/19" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_pit_of_death_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_pit_of_death" + "item_name" "#TF_StrangeFilter_CommunityMapPitOfDeath" + "item_description" "#TF_StrangeFilter_CommunityMapPitOfDeath_Desc" + "ad_text" "#TF_MapToken_PitOfDeath_AdText" + } + "6550" + { + "name" "Strange Filter: Mossrock (Community)" + "first_sale_date" "2017/09/13" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_mossrock" + } + } + "image_inventory" "backpack/crafting/strange_filter_mossrock" + "item_name" "#TF_StrangeFilter_CommunityMapMossrock" + "item_description" "#TF_StrangeFilter_CommunityMapMossrock_Desc" + "ad_text" "#TF_MapToken_Mossrock_AdText" + } + "6551" + { + "name" "Strange Filter: Lazarus (Community)" + "first_sale_date" "2017/09/13" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_lazarus" + } + } + "image_inventory" "backpack/crafting/strange_filter_lazarus" + "item_name" "#TF_StrangeFilter_CommunityMapLazarus" + "item_description" "#TF_StrangeFilter_CommunityMapLazarus_Desc" + "ad_text" "#TF_MapToken_Lazarus_AdText" + } + "6552" + { + "name" "Strange Filter: Banana Bay (Community)" + "first_sale_date" "2017/09/13" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "plr_bananabay" + } + } + "image_inventory" "backpack/crafting/strange_filter_bananabay" + "item_name" "#TF_StrangeFilter_CommunityMapBananaBay" + "item_description" "#TF_StrangeFilter_CommunityMapBananaBay_Desc" + "ad_text" "#TF_MapToken_BananaBay_AdText" + } + "6553" + { + "name" "Strange Filter: Enclosure (Community)" + "first_sale_date" "2017/09/13" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_enclosure_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_enclosure" + "item_name" "#TF_StrangeFilter_CommunityMapEnclosure" + "item_description" "#TF_StrangeFilter_CommunityMapEnclosure_Desc" + "ad_text" "#TF_MapToken_Enclosure_AdText" + } + "6554" + { + "name" "Strange Filter: 2Fort" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_2fort" + } + } + "image_inventory" "backpack/crafting/strange_filter_2fort" + "item_name" "#TF_StrangeFilter_Map2fort" + "item_description" "#TF_StrangeFilter_Map2fort_Desc" + } + "6555" + { + "name" "Strange Filter: Dustbowl" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_dustbowl" + } + } + "image_inventory" "backpack/crafting/strange_filter_dustbowl" + "item_name" "#TF_StrangeFilter_MapDustbowl" + "item_description" "#TF_StrangeFilter_MapDustbowl_Desc" + } + "6556" + { + "name" "Strange Filter: Upward" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_upward" + } + } + "image_inventory" "backpack/crafting/strange_filter_upward" + "item_name" "#TF_StrangeFilter_MapUpward" + "item_description" "#TF_StrangeFilter_MapUpward_Desc" + } + "6557" + { + "name" "Strange Filter: Badwater" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_badwater" + } + } + "image_inventory" "backpack/crafting/strange_filter_badwater" + "item_name" "#TF_StrangeFilter_MapBadwater" + "item_description" "#TF_StrangeFilter_MapBadwater_Desc" + } + "6558" + { + "name" "Strange Filter: Hightower" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "plr_hightower" + } + } + "image_inventory" "backpack/crafting/strange_filter_hightower" + "item_name" "#TF_StrangeFilter_MapHightower" + "item_description" "#TF_StrangeFilter_MapHightower_Desc" + } + "6559" + { + "name" "Strange Filter: Goldrush" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_goldrush" + } + } + "image_inventory" "backpack/crafting/strange_filter_goldrush" + "item_name" "#TF_StrangeFilter_MapGoldrush" + "item_description" "#TF_StrangeFilter_MapGoldrush_Desc" + } + "6560" + { + "name" "Strange Filter: DeGroot Keep" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_degrootkeep" + } + } + "image_inventory" "backpack/crafting/strange_filter_degrootkeep" + "item_name" "#TF_StrangeFilter_MapDeGrootKeep" + "item_description" "#TF_StrangeFilter_MapDeGrootKeep_Desc" + } + "6561" + { + "name" "Strange Filter: Thundermountain" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_thundermountain" + } + } + "image_inventory" "backpack/crafting/strange_filter_thundermountain" + "item_name" "#TF_StrangeFilter_MapThundermountain" + "item_description" "#TF_StrangeFilter_MapThundermountain_Desc" + } + "6562" + { + "name" "Strange Filter: Coaltown" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "mvm_coaltown" + } + } + "image_inventory" "backpack/crafting/strange_filter_coaltown" + "item_name" "#TF_StrangeFilter_MapCoaltown" + "item_description" "#TF_StrangeFilter_MapCoaltown_Desc" + } + "6563" + { + "name" "Strange Filter: Mannhattan" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "mvm_mannhattan" + } + } + "image_inventory" "backpack/crafting/strange_filter_mannhattan" + "item_name" "#TF_StrangeFilter_MapMannhattan" + "item_description" "#TF_StrangeFilter_MapMannhattan_Desc" + } + "6564" + { + "name" "Strange Filter: Brazil (Community)" + "first_sale_date" "2017/09/13" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_brazil" + } + } + "image_inventory" "backpack/crafting/strange_filter_brazil" + "item_name" "#TF_StrangeFilter_CommunityMapBrazil" + "item_description" "#TF_StrangeFilter_CommunityMapBrazil_Desc" + "ad_text" "#TF_MapToken_Brazil_AdText" + } + "6565" + { + "name" "Strange Filter: Bagel Event (Community)" + "first_sale_date" "2018/10/18" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_bagel_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_bagel_event" + "item_name" "#TF_StrangeFilter_CommunityMapBagelEvent" + "item_description" "#TF_StrangeFilter_CommunityMapBagelEvent_Desc" + "ad_text" "#TF_MapToken_BagelEvent_AdText" + } + "6566" + { + "name" "Strange Filter: Rumble Event (Community)" + "first_sale_date" "2018/10/18" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_rumble_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_rumble_event" + "item_name" "#TF_StrangeFilter_CommunityMapRumbleEvent" + "item_description" "#TF_StrangeFilter_CommunityMapRumbleEvent_Desc" + "ad_text" "#TF_MapToken_RumbleEvent_AdText" + } + "6567" + { + "name" "Strange Filter: Monster Bash (Community)" + "first_sale_date" "2018/10/18" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_monster_bash" + } + } + "image_inventory" "backpack/crafting/strange_filter_monster_bash" + "item_name" "#TF_StrangeFilter_CommunityMapMonsterBash" + "item_description" "#TF_StrangeFilter_CommunityMapMonsterBash_Desc" + "ad_text" "#TF_MapToken_MonsterBash_AdText" + } + "6568" + { + "name" "Strange Filter: Slasher (Community)" + "first_sale_date" "2018/10/18" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_slasher" + } + } + "image_inventory" "backpack/crafting/strange_filter_slasher" + "item_name" "#TF_StrangeFilter_CommunityMapSlasher" + "item_description" "#TF_StrangeFilter_CommunityMapSlasher_Desc" + "ad_text" "#TF_MapToken_Slasher_AdText" + } + "6569" + { + "name" "Strange Filter: Cursed Cove (Community)" + "first_sale_date" "2018/10/18" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_cursed_cove_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_cursed_cove" + "item_name" "#TF_StrangeFilter_CommunityMapCursedCove" + "item_description" "#TF_StrangeFilter_CommunityMapCursedCove_Desc" + "ad_text" "#TF_MapToken_CursedCove_AdText" + } + "6570" + { + "name" "Strange Filter: Laughter (Community)" + "first_sale_date" "2019/10/09" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_slaughter_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_laughter" + "item_name" "#TF_StrangeFilter_CommunityMapLaughter" + "item_description" "#TF_StrangeFilter_CommunityMapLaughter_Desc" + "ad_text" "#TF_MapToken_Laughter_AdText" + } + "6571" + { + "name" "Strange Filter: Precipice (Community)" + "first_sale_date" "2019/10/09" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_precipice_event_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_precipice" + "item_name" "#TF_StrangeFilter_CommunityMapPrecipice" + "item_description" "#TF_StrangeFilter_CommunityMapPrecipice_Desc" + "ad_text" "#TF_MapToken_Precipice_AdText" + } + "6572" + { + "name" "Strange Filter: Megalo (Community)" + "first_sale_date" "2020/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_megalo" + } + } + "image_inventory" "backpack/crafting/strange_filter_megalo" + "item_name" "#TF_StrangeFilter_CommunityMapMegalo" + "item_description" "#TF_StrangeFilter_CommunityMapMegalo_Desc" + "ad_text" "#TF_MapToken_Megalo_AdText" + } + "6573" + { + "name" "Strange Filter: Hassle Castle (Community)" + "first_sale_date" "2020/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_hasslecastle" + } + } + "image_inventory" "backpack/crafting/strange_filter_hasslecastle" + "item_name" "#TF_StrangeFilter_CommunityMapHassleCastle" + "item_description" "#TF_StrangeFilter_CommunityMapHassleCastle_Desc" + "ad_text" "#TF_MapToken_HassleCastle_AdText" + } + "6574" + { + "name" "Strange Filter: Bloodwater (Community)" + "first_sale_date" "2020/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_bloodwater" + } + } + "image_inventory" "backpack/crafting/strange_filter_bloodwater" + "item_name" "#TF_StrangeFilter_CommunityMapBloodwater" + "item_description" "#TF_StrangeFilter_CommunityMapBloodwater_Desc" + "ad_text" "#TF_MapToken_Bloodwater_AdText" + } + "6575" + { + "name" "Strange Filter: Undergrove Event (Community)" + "first_sale_date" "2020/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_undergrove_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_undergrove_event" + "item_name" "#TF_StrangeFilter_CommunityMapUndergroveEvent" + "item_description" "#TF_StrangeFilter_CommunityMapUndergroveEvent_Desc" + "ad_text" "#TF_MapToken_UndergroveEvent_AdText" + } + "6576" + { + "name" "Strange Filter: Pier (Community)" + "first_sale_date" "2020/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_pier" + } + } + "image_inventory" "backpack/crafting/strange_filter_pier" + "item_name" "#TF_StrangeFilter_CommunityMapPier" + "item_description" "#TF_StrangeFilter_CommunityMapPier_Desc" + "ad_text" "#TF_MapToken_Pier_AdText" + } + "6577" + { + "name" "Strange Filter: SnowVille (Community)" + "first_sale_date" "2020/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_snowville_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_snowville" + "item_name" "#TF_StrangeFilter_CommunityMapSnowVille" + "item_description" "#TF_StrangeFilter_CommunityMapSnowVille_Desc" + "ad_text" "#TF_MapToken_SnowVille_AdText" + } + "6578" + { + "name" "Strange Filter: Snowfall (Community)" + "first_sale_date" "2020/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_snowfall_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_snowfall" + "item_name" "#TF_StrangeFilter_CommunityMapSnowfall" + "item_description" "#TF_StrangeFilter_CommunityMapSnowfall_Desc" + "ad_text" "#TF_MapToken_Snowfall_AdText" + } + "6579" + { + "name" "Strange Filter: Wutville (Community)" + "first_sale_date" "2020/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_wutville_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_wutville" + "item_name" "#TF_StrangeFilter_CommunityMapWutville" + "item_description" "#TF_StrangeFilter_CommunityMapWutville_Desc" + "ad_text" "#TF_MapToken_Wutville_AdText" + } + "6580" + { + "name" "Strange Filter: Farmageddon (Community)" + "first_sale_date" "2021/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_farmageddon" + } + } + "image_inventory" "backpack/crafting/strange_filter_farmageddon" + "item_name" "#TF_StrangeFilter_CommunityMapFarmageddon" + "item_description" "#TF_StrangeFilter_CommunityMapFarmageddon_Desc" + "ad_text" "#TF_MapToken_Farmageddon_AdText" + } + "6581" + { + "name" "Strange Filter: Los Muertos (Community)" + "first_sale_date" "2021/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_los_muertos" + } + } + "image_inventory" "backpack/crafting/strange_filter_losmuertos" + "item_name" "#TF_StrangeFilter_CommunityMapLosMuertos" + "item_description" "#TF_StrangeFilter_CommunityMapLosMuertos_Desc" + "ad_text" "#TF_MapToken_LosMuertos_AdText" + } + "6582" + { + "name" "Strange Filter: Erebus (Community)" + "first_sale_date" "2021/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_ambush_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_erebus" + "item_name" "#TF_StrangeFilter_CommunityMapErebus" + "item_description" "#TF_StrangeFilter_CommunityMapErebus_Desc" + "ad_text" "#TF_MapToken_Erebus_AdText" + } + "6583" + { + "name" "Strange Filter: Terror (Community)" + "first_sale_date" "2021/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_terror_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_terror" + "item_name" "#TF_StrangeFilter_CommunityMapTerror" + "item_description" "#TF_StrangeFilter_CommunityMapTerror_Desc" + "ad_text" "#TF_MapToken_Terror_AdText" + } + "6584" + { + "name" "Strange Filter: Graveyard (Community)" + "first_sale_date" "2021/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "arena_lumberyard_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_graveyard" + "item_name" "#TF_StrangeFilter_CommunityMapGraveyard" + "item_description" "#TF_StrangeFilter_CommunityMapGraveyard_Desc" + "ad_text" "#TF_MapToken_Graveyard_AdText" + } + "6585" + { + "name" "Strange Filter: Sinthetic (Community)" + "first_sale_date" "2021/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_synthetic_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_sinthetic" + "item_name" "#TF_StrangeFilter_CommunityMapSinthetic" + "item_description" "#TF_StrangeFilter_CommunityMapSinthetic_Desc" + "ad_text" "#TF_MapToken_Sinthetic_AdText" + } + "6586" + { + "name" "Strange Filter: Polar (Community)" + "first_sale_date" "2021/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_coal_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_polar" + "item_name" "#TF_StrangeFilter_CommunityMapPolar" + "item_description" "#TF_StrangeFilter_CommunityMapPolar_Desc" + "ad_text" "#TF_MapToken_Polar_AdText" + } + "6587" + { + "name" "Strange Filter: Bread Space (Community)" + "first_sale_date" "2021/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_breadspace" + } + } + "image_inventory" "backpack/crafting/strange_filter_breadspace" + "item_name" "#TF_StrangeFilter_CommunityMapBreadSpace" + "item_description" "#TF_StrangeFilter_CommunityMapBreadSpace_Desc" + "ad_text" "#TF_MapToken_BreadSpace_AdText" + } + "6588" + { + "name" "Strange Filter: Chilly (Community)" + "first_sale_date" "2021/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_chilly" + } + } + "image_inventory" "backpack/crafting/strange_filter_chilly" + "item_name" "#TF_StrangeFilter_CommunityMapChilly" + "item_description" "#TF_StrangeFilter_CommunityMapChilly_Desc" + "ad_text" "#TF_MapToken_Chilly_AdText" + } + "6589" + { + "name" "Strange Filter: Cascade (Community)" + "first_sale_date" "2021/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_cascade" + } + } + "image_inventory" "backpack/crafting/strange_filter_cascade" + "item_name" "#TF_StrangeFilter_CommunityMapCascade" + "item_description" "#TF_StrangeFilter_CommunityMapCascade_Desc" + "ad_text" "#TF_MapToken_Cascade_AdText" + } + "6590" + { + "name" "Strange Filter: Altitude (Community)" + "first_sale_date" "2021/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_altitude" + } + } + "image_inventory" "backpack/crafting/strange_filter_altitude" + "item_name" "#TF_StrangeFilter_CommunityMapAltitude" + "item_description" "#TF_StrangeFilter_CommunityMapAltitude_Desc" + "ad_text" "#TF_MapToken_Altitude_AdText" + } + "6591" + { + "name" "Strange Filter: Doublefrost (Community)" + "first_sale_date" "2021/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_doublecross_snowy" + } + } + "image_inventory" "backpack/crafting/strange_filter_doublefrost" + "item_name" "#TF_StrangeFilter_CommunityMapDoublefrost" + "item_description" "#TF_StrangeFilter_CommunityMapDoublefrost_Desc" + "ad_text" "#TF_MapToken_Doublefrost_AdText" + } + "6592" + { + "name" "Strange Filter: Soul Mill (Community)" + "first_sale_date" "2022/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_sawmill_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_soulmill" + "item_name" "#TF_StrangeFilter_CommunityMapSoulMill" + "item_description" "#TF_StrangeFilter_CommunityMapSoulMill_Desc" + "ad_text" "#TF_MapToken_SoulMill_AdText" + } + "6593" + { + "name" "Strange Filter: Helltrain (Community)" + "first_sale_date" "2022/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_helltrain_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_helltrain" + "item_name" "#TF_StrangeFilter_CommunityMapHelltrain" + "item_description" "#TF_StrangeFilter_CommunityMapHelltrain_Desc" + "ad_text" "#TF_MapToken_Helltrain_AdText" + } + "6594" + { + "name" "Strange Filter: Bonesaw (Community)" + "first_sale_date" "2022/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "plr_hacksaw_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_bonesaw" + "item_name" "#TF_StrangeFilter_CommunityMapBonesaw" + "item_description" "#TF_StrangeFilter_CommunityMapBonesaw_Desc" + "ad_text" "#TF_MapToken_Bonesaw_AdText" + } + "6595" + { + "name" "Strange Filter: Crasher (Community)" + "first_sale_date" "2022/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_crasher" + } + } + "image_inventory" "backpack/crafting/strange_filter_crasher" + "item_name" "#TF_StrangeFilter_CommunityMapCrasher" + "item_description" "#TF_StrangeFilter_CommunityMapCrasher_Desc" + "ad_text" "#TF_MapToken_Crasher_AdText" + } + "6596" + { + "name" "Strange Filter: Ghoulpit (Community)" + "first_sale_date" "2022/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_sludgepit_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_ghoulpit" + "item_name" "#TF_StrangeFilter_CommunityMapGhoulpit" + "item_description" "#TF_StrangeFilter_CommunityMapGhoulpit_Desc" + "ad_text" "#TF_MapToken_Ghoulpit_AdText" + } + "6597" + { + "name" "Strange Filter: Spookeyridge (Community)" + "first_sale_date" "2022/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_spookeyridge" + } + } + "image_inventory" "backpack/crafting/strange_filter_spookeyridge" + "item_name" "#TF_StrangeFilter_CommunityMapSpookeyridge" + "item_description" "#TF_StrangeFilter_CommunityMapSpookeyridge_Desc" + "ad_text" "#TF_MapToken_Spookeyridge_AdText" + } + "6598" + { + "name" "Strange Filter: Frostwatch (Community)" + "first_sale_date" "2022/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_frostwatch" + } + } + "image_inventory" "backpack/crafting/strange_filter_frostwatch" + "item_name" "#TF_StrangeFilter_CommunityMapFrostwatch" + "item_description" "#TF_StrangeFilter_CommunityMapFrostwatch_Desc" + "ad_text" "#TF_MapToken_Frostwatch_AdText" + } + "6599" + { + "name" "Strange Filter: Frostcliff (Community)" + "first_sale_date" "2022/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_frostcliff" + } + } + "image_inventory" "backpack/crafting/strange_filter_frostcliff" + "item_name" "#TF_StrangeFilter_CommunityMapFrostcliff" + "item_description" "#TF_StrangeFilter_CommunityMapFrostcliff_Desc" + "ad_text" "#TF_MapToken_Frostcliff_AdText" + } + "6600" + { + "name" "Strange Filter: Rumford (Community)" + "first_sale_date" "2022/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_rumford_event" + } + } + "image_inventory" "backpack/crafting/strange_filter_rumford_event" + "item_name" "#TF_StrangeFilter_CommunityMapRumford" + "item_description" "#TF_StrangeFilter_CommunityMapRumford_Desc" + "ad_text" "#TF_MapToken_Rumford_AdText" + } + "6601" + { + "name" "Strange Filter: Frosty (Community)" + "first_sale_date" "2022/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_frosty" + } + } + "image_inventory" "backpack/crafting/strange_filter_frosty" + "item_name" "#TF_StrangeFilter_CommunityMapFrosty" + "item_description" "#TF_StrangeFilter_CommunityMapFrosty_Desc" + "ad_text" "#TF_MapToken_Frosty_AdText" + } + "6602" + { + "name" "Strange Filter: Coal Pit (Community)" + "first_sale_date" "2022/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_gravelpit_snowy" + } + } + "image_inventory" "backpack/crafting/strange_filter_coalpit" + "item_name" "#TF_StrangeFilter_CommunityMapCoalPit" + "item_description" "#TF_StrangeFilter_CommunityMapCoalPit_Desc" + "ad_text" "#TF_MapToken_CoalPit_AdText" + } + "6603" + { + "name" "Strange Filter: Sharkbay (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_sharkbay" + } + } + "image_inventory" "backpack/crafting/strange_filter_sharkbay" + "item_name" "#TF_StrangeFilter_CommunityMapSharkbay" + "item_description" "#TF_StrangeFilter_CommunityMapSharkbay_Desc" + "ad_text" "#TF_MapToken_Sharkbay_AdText" + } + "6604" + { + "name" "Strange Filter: Rotunda (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_rotunda" + } + } + "image_inventory" "backpack/crafting/strange_filter_rotunda" + "item_name" "#TF_StrangeFilter_CommunityMapRotunda" + "item_description" "#TF_StrangeFilter_CommunityMapRotunda_Desc" + "ad_text" "#TF_MapToken_Rotunda_AdText" + } + "6605" + { + "name" "Strange Filter: Phoenix (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_phoenix" + } + } + "image_inventory" "backpack/crafting/strange_filter_phoenix" + "item_name" "#TF_StrangeFilter_CommunityMapPhoenix" + "item_description" "#TF_StrangeFilter_CommunityMapPhoenix_Desc" + "ad_text" "#TF_MapToken_Phoenix_AdText" + } + "6606" + { + "name" "Strange Filter: Cashworks (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_cashworks" + } + } + "image_inventory" "backpack/crafting/strange_filter_cashworks" + "item_name" "#TF_StrangeFilter_CommunityMapCashworks" + "item_description" "#TF_StrangeFilter_CommunityMapCashworks_Desc" + "ad_text" "#TF_MapToken_Cashworks_AdText" + } + "6607" + { + "name" "Strange Filter: Venice (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_venice" + } + } + "image_inventory" "backpack/crafting/strange_filter_venice" + "item_name" "#TF_StrangeFilter_CommunityMapVenice" + "item_description" "#TF_StrangeFilter_CommunityMapVenice_Desc" + "ad_text" "#TF_MapToken_Venice_AdText" + } + "6608" + { + "name" "Strange Filter: Reckoner (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_reckoner" + } + } + "image_inventory" "backpack/crafting/strange_filter_reckoner" + "item_name" "#TF_StrangeFilter_CommunityMapReckoner" + "item_description" "#TF_StrangeFilter_CommunityMapReckoner_Desc" + "ad_text" "#TF_MapToken_Reckoner_AdText" + } + "6609" + { + "name" "Strange Filter: Sulfur (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_sulfur" + } + } + "image_inventory" "backpack/crafting/strange_filter_sulfur" + "item_name" "#TF_StrangeFilter_CommunityMapSulfur" + "item_description" "#TF_StrangeFilter_CommunityMapSulfur_Desc" + "ad_text" "#TF_MapToken_Sulfur_AdText" + } + "6610" + { + "name" "Strange Filter: Hardwood (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_hardwood_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_hardwood" + "item_name" "#TF_StrangeFilter_CommunityMapHardwood" + "item_description" "#TF_StrangeFilter_CommunityMapHardwood_Desc" + "ad_text" "#TF_MapToken_Hardwood_AdText" + } + "6611" + { + "name" "Strange Filter: Pelican Peak (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_pelican_peak" + } + } + "image_inventory" "backpack/crafting/strange_filter_pelican_peak" + "item_name" "#TF_StrangeFilter_CommunityMapPelicanPeak" + "item_description" "#TF_StrangeFilter_CommunityMapPelicanPeak_Desc" + "ad_text" "#TF_MapToken_PelicanPeak_AdText" + } + "6612" + { + "name" "Strange Filter: Selbyen (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_selbyen" + } + } + "image_inventory" "backpack/crafting/strange_filter_selbyen" + "item_name" "#TF_StrangeFilter_CommunityMapSelbyen" + "item_description" "#TF_StrangeFilter_CommunityMapSelbyen_Desc" + "ad_text" "#TF_MapToken_Selbyen_AdText" + } + "6613" + { + "name" "Strange Filter: VSH Tiny Rock (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "vsh_tinyrock" + } + } + "image_inventory" "backpack/crafting/strange_filter_tinyrock" + "item_name" "#TF_StrangeFilter_CommunityMapTinyRock" + "item_description" "#TF_StrangeFilter_CommunityMapTinyRock_Desc" + "ad_text" "#TF_MapToken_TinyRock_AdText" + } + "6614" + { + "name" "Strange Filter: VSH Distillery (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "vsh_distillery" + } + } + "image_inventory" "backpack/crafting/strange_filter_distillery" + "item_name" "#TF_StrangeFilter_CommunityMapDistillery" + "item_description" "#TF_StrangeFilter_CommunityMapDistillery_Desc" + "ad_text" "#TF_MapToken_Distillery_AdText" + } + "6615" + { + "name" "Strange Filter: VSH Skirmish (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "vsh_skirmish" + } + } + "image_inventory" "backpack/crafting/strange_filter_skirmish" + "item_name" "#TF_StrangeFilter_CommunityMapSkirmish" + "item_description" "#TF_StrangeFilter_CommunityMapSkirmish_Desc" + "ad_text" "#TF_MapToken_Skirmish_AdText" + } + "6616" + { + "name" "Strange Filter: VSH Nucleus (Community)" + "first_sale_date" "2023/07/08" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "vsh_nucleus" + } + } + "image_inventory" "backpack/crafting/strange_filter_nucleus" + "item_name" "#TF_StrangeFilter_CommunityMapNucleus" + "item_description" "#TF_StrangeFilter_CommunityMapNucleus_Desc" + "ad_text" "#TF_MapToken_Nucleus_AdText" + } + "6617" + { + "name" "Strange Filter: Perks (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "arena_perks" + } + } + "image_inventory" "backpack/crafting/strange_filter_perks" + "item_name" "#TF_StrangeFilter_CommunityMapPerks" + "item_description" "#TF_StrangeFilter_CommunityMapPerks_Desc" + "ad_text" "#TF_MapToken_Perks_AdText" + } + "6618" + { + "name" "Strange Filter: Slime (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_slime" + } + } + "image_inventory" "backpack/crafting/strange_filter_slime" + "item_name" "#TF_StrangeFilter_CommunityMapSlime" + "item_description" "#TF_StrangeFilter_CommunityMapSlime_Desc" + "ad_text" "#TF_MapToken_Slime_AdText" + } + "6619" + { + "name" "Strange Filter: Lava Pit (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_lavapit_final" + } + } + "image_inventory" "backpack/crafting/strange_filter_lavapit" + "item_name" "#TF_StrangeFilter_CommunityMapLavaPit" + "item_description" "#TF_StrangeFilter_CommunityMapLavaPit_Desc" + "ad_text" "#TF_MapToken_LavaPit_AdText" + } + "6620" + { + "name" "Strange Filter: Mannsylvania (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_mannsylvania" + } + } + "image_inventory" "backpack/crafting/strange_filter_mannsylvania" + "item_name" "#TF_StrangeFilter_CommunityMapMannsylvania" + "item_description" "#TF_StrangeFilter_CommunityMapMannsylvania_Desc" + "ad_text" "#TF_MapToken_Mannsylvania_AdText" + } + "6621" + { + "name" "Strange Filter: Sandcastle (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_degrootkeep_rats" + } + } + "image_inventory" "backpack/crafting/strange_filter_sandcastle" + "item_name" "#TF_StrangeFilter_CommunityMapSandcastle" + "item_description" "#TF_StrangeFilter_CommunityMapSandcastle_Desc" + "ad_text" "#TF_MapToken_Sandcastle_AdText" + } + "6622" + { + "name" "Strange Filter: Spineyard (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_spineyard" + } + } + "image_inventory" "backpack/crafting/strange_filter_spineyard" + "item_name" "#TF_StrangeFilter_CommunityMapSpineyard" + "item_description" "#TF_StrangeFilter_CommunityMapSpineyard_Desc" + "ad_text" "#TF_MapToken_Spineyard_AdText" + } + "6623" + { + "name" "Strange Filter: Corruption (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_corruption" + } + } + "image_inventory" "backpack/crafting/strange_filter_corruption" + "item_name" "#TF_StrangeFilter_CommunityMapCorruption" + "item_description" "#TF_StrangeFilter_CommunityMapCorruption_Desc" + "ad_text" "#TF_MapToken_Corruption_AdText" + } + "6624" + { + "name" "Strange Filter: Murky (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "zi_murky" + } + } + "image_inventory" "backpack/crafting/strange_filter_murky" + "item_name" "#TF_StrangeFilter_CommunityMapMurky" + "item_description" "#TF_StrangeFilter_CommunityMapMurky_Desc" + "ad_text" "#TF_MapToken_Murky_AdText" + } + "6625" + { + "name" "Strange Filter: Atoll (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "zi_atoll" + } + } + "image_inventory" "backpack/crafting/strange_filter_atoll" + "item_name" "#TF_StrangeFilter_CommunityMapAtoll" + "item_description" "#TF_StrangeFilter_CommunityMapAtoll_Desc" + "ad_text" "#TF_MapToken_Atoll_AdText" + } + "6626" + { + "name" "Strange Filter: Woods (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "zi_woods" + } + } + "image_inventory" "backpack/crafting/strange_filter_woods" + "item_name" "#TF_StrangeFilter_CommunityMapWoods" + "item_description" "#TF_StrangeFilter_CommunityMapWoods_Desc" + "ad_text" "#TF_MapToken_Woods_AdText" + } + "6627" + { + "name" "Strange Filter: Sanitarium (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "zi_sanitarium" + } + } + "image_inventory" "backpack/crafting/strange_filter_sanitarium" + "item_name" "#TF_StrangeFilter_CommunityMapSanitarium" + "item_description" "#TF_StrangeFilter_CommunityMapSanitarium_Desc" + "ad_text" "#TF_MapToken_Sanitarium_AdText" + } + "6628" + { + "name" "Strange Filter: Devastation (Community)" + "first_sale_date" "2023/10/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "zi_devastation_final1" + } + } + "image_inventory" "backpack/crafting/strange_filter_devastation" + "item_name" "#TF_StrangeFilter_CommunityMapDevastation" + "item_description" "#TF_StrangeFilter_CommunityMapDevastation_Desc" + "ad_text" "#TF_MapToken_Devastation_AdText" + } + "6629" + { + "name" "Strange Filter: Snowtower (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_snowtower" + } + } + "image_inventory" "backpack/crafting/strange_filter_snowtower" + "item_name" "#TF_StrangeFilter_CommunityMapSnowtower" + "item_description" "#TF_StrangeFilter_CommunityMapSnowtower_Desc" + "ad_text" "#TF_MapToken_Snowtower_AdText" + } + "6630" + { + "name" "Strange Filter: Krampus (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_krampus" + } + } + "image_inventory" "backpack/crafting/strange_filter_krampus" + "item_name" "#TF_StrangeFilter_CommunityMapKrampus" + "item_description" "#TF_StrangeFilter_CommunityMapKrampus_Desc" + "ad_text" "#TF_MapToken_Krampus_AdText" + } + "6631" + { + "name" "Strange Filter: Haarp (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_haarp" + } + } + "image_inventory" "backpack/crafting/strange_filter_haarp" + "item_name" "#TF_StrangeFilter_CommunityMapHaarp" + "item_description" "#TF_StrangeFilter_CommunityMapHaarp_Desc" + "ad_text" "#TF_MapToken_Haarp_AdText" + } + "6632" + { + "name" "Strange Filter: Brew (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_brew" + } + } + "image_inventory" "backpack/crafting/strange_filter_brew" + "item_name" "#TF_StrangeFilter_CommunityMapBrew" + "item_description" "#TF_StrangeFilter_CommunityMapBrew_Desc" + "ad_text" "#TF_MapToken_Brew_AdText" + } + "6633" + { + "name" "Strange Filter: Hacksaw (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "plr_hacksaw" + } + } + "image_inventory" "backpack/crafting/strange_filter_hacksaw" + "item_name" "#TF_StrangeFilter_CommunityMapHacksaw" + "item_description" "#TF_StrangeFilter_CommunityMapHacksaw_Desc" + "ad_text" "#TF_MapToken_Hacksaw_AdText" + } + "6634" + { + "name" "Strange Filter: Turbine Event (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_turbine_winter" + } + } + "image_inventory" "backpack/crafting/strange_filter_turbine_winter" + "item_name" "#TF_StrangeFilter_CommunityMapTurbineEvent" + "item_description" "#TF_StrangeFilter_CommunityMapTurbineEvent_Desc" + "ad_text" "#TF_MapToken_TurbineEvent_AdText" + } + "6635" + { + "name" "Strange Filter: Carrier (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_carrier" + } + } + "image_inventory" "backpack/crafting/strange_filter_carrier" + "item_name" "#TF_StrangeFilter_CommunityMapCarrier" + "item_description" "#TF_StrangeFilter_CommunityMapCarrier_Desc" + "ad_text" "#TF_MapToken_Carrier_AdText" + } + "6636" + { + "name" "Strange Filter: Galleria (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_galleria" + } + } + "image_inventory" "backpack/crafting/strange_filter_galleria" + "item_name" "#TF_StrangeFilter_CommunityMapGalleria" + "item_description" "#TF_StrangeFilter_CommunityMapGalleria_Desc" + "ad_text" "#TF_MapToken_Galleria_AdText" + } + "6637" + { + "name" "Strange Filter: Emerge (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_emerge" + } + } + "image_inventory" "backpack/crafting/strange_filter_emerge" + "item_name" "#TF_StrangeFilter_CommunityMapEmerge" + "item_description" "#TF_StrangeFilter_CommunityMapEmerge_Desc" + "ad_text" "#TF_MapToken_Emerge_AdText" + } + "6638" + { + "name" "Strange Filter: Camber (Community)" + "first_sale_date" "2023/12/01" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_camber" + } + } + "image_inventory" "backpack/crafting/strange_filter_camber" + "item_name" "#TF_StrangeFilter_CommunityMapCamber" + "item_description" "#TF_StrangeFilter_CommunityMapCamber_Desc" + "ad_text" "#TF_MapToken_Camber_AdText" + } + "6639" + { + "name" "Strange Filter: Embargo (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_embargo" + } + } + "image_inventory" "backpack/crafting/strange_filter_embargo" + "item_name" "#TF_StrangeFilter_CommunityMapEmbargo" + "item_description" "#TF_StrangeFilter_CommunityMapEmbargo_Desc" + "ad_text" "#TF_MapToken_Embargo_AdText" + } + "6640" + { + "name" "Strange Filter: Odyssey (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pl_odyssey" + } + } + "image_inventory" "backpack/crafting/strange_filter_odyssey" + "item_name" "#TF_StrangeFilter_CommunityMapOdyssey" + "item_description" "#TF_StrangeFilter_CommunityMapOdyssey_Desc" + "ad_text" "#TF_MapToken_Odyssey_AdText" + } + "6641" + { + "name" "Strange Filter: Megaton (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_megaton" + } + } + "image_inventory" "backpack/crafting/strange_filter_megaton" + "item_name" "#TF_StrangeFilter_CommunityMapMegaton" + "item_description" "#TF_StrangeFilter_CommunityMapMegaton_Desc" + "ad_text" "#TF_MapToken_Megaton_AdText" + } + "6642" + { + "name" "Strange Filter: Cachoeira (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "koth_cachoeira" + } + } + "image_inventory" "backpack/crafting/strange_filter_cachoeira" + "item_name" "#TF_StrangeFilter_CommunityMapCachoeira" + "item_description" "#TF_StrangeFilter_CommunityMapCachoeira_Desc" + "ad_text" "#TF_MapToken_Cachoeira_AdText" + } + "6643" + { + "name" "Strange Filter: Overgrown (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_overgrown" + } + } + "image_inventory" "backpack/crafting/strange_filter_overgrown" + "item_name" "#TF_StrangeFilter_CommunityMapOvergrown" + "item_description" "#TF_StrangeFilter_CommunityMapOvergrown_Desc" + "ad_text" "#TF_MapToken_Overgrown_AdText" + } + "6644" + { + "name" "Strange Filter: Hadal (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_hadal" + } + } + "image_inventory" "backpack/crafting/strange_filter_hadal" + "item_name" "#TF_StrangeFilter_CommunityMapHadal" + "item_description" "#TF_StrangeFilter_CommunityMapHadal_Desc" + "ad_text" "#TF_MapToken_Hadal_AdText" + } + "6645" + { + "name" "Strange Filter: Applejack (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "ctf_applejack" + } + } + "image_inventory" "backpack/crafting/strange_filter_applejack" + "item_name" "#TF_StrangeFilter_CommunityMapApplejack" + "item_description" "#TF_StrangeFilter_CommunityMapApplejack_Desc" + "ad_text" "#TF_MapToken_Applejack_AdText" + } + "6646" + { + "name" "Strange Filter: Atom Smash (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "pd_atom_smash" + } + } + "image_inventory" "backpack/crafting/strange_filter_atom_smash" + "item_name" "#TF_StrangeFilter_CommunityMapAtomSmash" + "item_description" "#TF_StrangeFilter_CommunityMapAtomSmash_Desc" + "ad_text" "#TF_MapToken_AtomSmash_AdText" + } + "6647" + { + "name" "Strange Filter: Canaveral (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_canaveral_5cp" + } + } + "image_inventory" "backpack/crafting/strange_filter_canaveral" + "item_name" "#TF_StrangeFilter_CommunityMapCanaveral" + "item_description" "#TF_StrangeFilter_CommunityMapCanaveral_Desc" + "ad_text" "#TF_MapToken_Canaveral_AdText" + } + "6648" + { + "name" "Strange Filter: Burghausen (Community)" + "first_sale_date" "2024/07/14" + "prefab" "strange_part_restriction" + "tool" + { + "usage" + { + "restriction_type" "map" + "restriction_value" "cp_burghausen" + } + } + "image_inventory" "backpack/crafting/strange_filter_burghausen" + "item_name" "#TF_StrangeFilter_CommunityMapBurghausen" + "item_description" "#TF_StrangeFilter_CommunityMapBurghausen_Desc" + "ad_text" "#TF_MapToken_Burghausen_AdText" + } + + "8926" + { + "name" "Halloween Transmogrifier: Pyro" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "pyro" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Pyro" + "item_description" "#TF_HalloweenTransmogrifier_Pyro_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_pyro" + } + "8927" + { + "name" "Halloween Transmogrifier: Scout" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "scout" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Scout" + "item_description" "#TF_HalloweenTransmogrifier_Scout_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_scout" + } + "8928" + { + "name" "Halloween Transmogrifier: Soldier" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "soldier" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Soldier" + "item_description" "#TF_HalloweenTransmogrifier_Soldier_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_soldier" + } + "8929" + { + "name" "Halloween Transmogrifier: Demo" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "demoman" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Demo" + "item_description" "#TF_HalloweenTransmogrifier_Demo_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_demo" + } + "8930" + { + "name" "Halloween Transmogrifier: Heavy" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "heavy" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Heavy" + "item_description" "#TF_HalloweenTransmogrifier_Heavy_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_heavy" + } + "8931" + { + "name" "Halloween Transmogrifier: Medic" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "medic" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Medic" + "item_description" "#TF_HalloweenTransmogrifier_Medic_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_medic" + } + "8932" + { + "name" "Halloween Transmogrifier: Sniper" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "sniper" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Sniper" + "item_description" "#TF_HalloweenTransmogrifier_Sniper_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_sniper" + } + "8933" + { + "name" "Halloween Transmogrifier: Spy" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "spy" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Spy" + "item_description" "#TF_HalloweenTransmogrifier_Spy_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_spy" + } + "8934" + { + "name" "Halloween Transmogrifier: Engineer" + "prefab" "hw2013_transmogrifier_base" + "tool" + { + "usage" + { + "output_class" "engineer" + } + } + "item_name" "#TF_HalloweenTransmogrifier_Engineer" + "item_description" "#TF_HalloweenTransmogrifier_Engineer_Desc" + "image_inventory" "backpack/player/items/crafting/transmogrifier_engineer" + } + + "8935" + { + "name" "Halloween Spellbook Page" + "prefab" "halloween2013_spellbookpage" + } + "8936" + { + "name" "Halloween Spellbook Page (Achievement)" + "prefab" "halloween2013_spellbookpage" + "attributes" + { + "spellbook page attr id" + { + "attribute_class" "spellbook_page_attr_id" + "value" "2016" + } + } + } + + "8937" + { + "name" "Eternaween Enchantment" + "item_class" "tool" + "craft_class" "tool" + "craft_material_type" "tool" + "tool" + { + "type" "tf_event_enable" + "use_string" "#CastServerEnchantment" + } + "capabilities" + { + "usable_gc" "1" + } + "item_type_name" "#TF_ServerEnchantmentType" + "item_name" "#TF_Eternaween" + "item_description" "#TF_Eternaween_Desc" + "image_inventory" "backpack/crafting/server_halloween" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "5" + "max_ilevel" "5" + "show_in_armory" "1" + } + "8938" + { + "name" "Glitched Circuit Board" + "prefab" "base_misc" + "item_slot" "misc" + "item_class" "tf_wearable" + "craft_material_type" "hat" + "craft_class" "" + "show_in_armory" "1" + "item_quality" "unique" + "item_type_name" "#TF_CircuitBoard_Type" + "item_name" "#TF_Item_GlitchedCircuitBoard" + "item_description" "#TF_Item_GlitchedCircuitBoard_Desc" + "image_inventory" "backpack/crafting/glitched_circuit_board" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "static_attrs" + { + "limited quantity item" "1" + } + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + + "9258" + { + "name" "Taunt Unusualifier" + "prefab" "unusualifier_base" + "static_attrs" + { + "unusualifier_attribute_template_name" "taunt_unusualifier_summer2024_effects" + } + } + + + + + + "2000" + { + "name" "Polycount Pyro Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/09/29" + "item_class" "bundle" + "bundle" + { + "The Degreaser" "1" + "The Powerjack" "1" + "The Attendant" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PolycountPyro" + "item_description" "#TF_Bundle_PolycountPyro_Desc" + "image_inventory" "backpack/player/items/crafting/kit_pyro" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2001" + { + "name" "Polycount Spy Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/09/29" + "item_class" "bundle" + "bundle" + { + "L'Etranger" "1" + "Your Eternal Reward" "1" + "The Familiar Fez" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PolycountSpy" + "item_description" "#TF_Bundle_PolycountSpy_Desc" + "image_inventory" "backpack/player/items/crafting/kit_spy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2002" + { + "name" "Polycount Soldier Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/09/29" + "item_class" "bundle" + "bundle" + { + "The Black Box" "1" + "The Battalion's Backup" "1" + "The Grenadier's Softcap" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PolycountSoldier" + "item_description" "#TF_Bundle_PolycountSoldier_Desc" + "image_inventory" "backpack/player/items/crafting/kit_soldier" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2003" + { + "name" "Polycount Sniper Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/09/29" + "item_class" "bundle" + "bundle" + { + "The Sydney Sleeper" "1" + "Darwin's Danger Shield" "1" + "The Bushwacka" "1" + "Ol' Snaggletooth" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PolycountSniper" + "item_description" "#TF_Bundle_PolycountSniper_Desc" + "image_inventory" "backpack/player/items/crafting/kit_sniper" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2004" + { + "name" "Polycount Scout Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/09/29" + "item_class" "bundle" + "bundle" + { + "The Shortstop" "1" + "Mad Milk" "1" + "The Holy Mackerel" "1" + "The Milkman" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PolycountScout" + "item_description" "#TF_Bundle_PolycountScout_Desc" + "image_inventory" "backpack/player/items/crafting/kit_scout" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2005" + { + "name" "Polycount Bundle" + "first_sale_date" "2010/09/29" + "item_class" "bundle" + "bundle" + { + "The Degreaser" "1" + "The Powerjack" "1" + "The Attendant" "1" + + "L'Etranger" "1" + "Your Eternal Reward" "1" + "The Familiar Fez" "1" + + "The Black Box" "1" + "The Battalion's Backup" "1" + "The Grenadier's Softcap" "1" + + "The Sydney Sleeper" "1" + "Darwin's Danger Shield" "1" + "The Bushwacka" "1" + "Ol' Snaggletooth" "1" + + "The Shortstop" "1" + "Mad Milk" "1" + "The Holy Mackerel" "1" + "The Milkman" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Polycount" + "item_description" "#TF_Bundle_Polycount_Desc" + "image_inventory" "backpack/player/items/crafting/kit_polycount" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + "spy" "1" + "soldier" "1" + "sniper" "1" + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2006" + { + "name" "Halloween Noise Maker Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/24" + "item_class" "bundle" + "bundle" + { + "Halloween Noise Maker - Black Cat" "1" + "Halloween Noise Maker - Gremlin" "1" + "Halloween Noise Maker - Werewolf" "1" + "Halloween Noise Maker - Witch" "1" + "Halloween Noise Maker - Banshee" "1" + "Halloween Noise Maker - Crazy Laugh" "1" + "Halloween Noise Maker - Stabby" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HalloweenNoiseMaker" + "item_description" "#TF_Bundle_HalloweenNoiseMaker_Desc" + "image_inventory" "backpack/crafting/noisemaker_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2007" + { + "name" "Map Token Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/11/11" + "item_class" "bundle" + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2008" + { + "name" "Medieval Medic Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/11/30" + "item_class" "bundle" + "bundle" + { + "The Amputator" "1" + "The Crusader's Crossbow" "1" + "Berliner's Bucket Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MedievalMedic" + "item_description" "#TF_Bundle_MedievalMedic_Desc" + "image_inventory" "backpack/player/items/crafting/kit_medieval_medic" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2009" + { + "name" "Hibernating Bear Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/12/08" + "item_class" "bundle" + "bundle" + { + "The Brass Beast" "1" + "The Buffalo Steak Sandvich" "1" + "Warrior's Spirit" "1" + "Big Chief" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HibernatingBear" + "item_description" "#TF_Bundle_HibernatingBear_Desc" + "image_inventory" "backpack/player/items/crafting/kit_hibernating_bear" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2010" + { + "name" "Expert's Ordnance Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/12/13" + "item_class" "bundle" + "bundle" + { + "The Loch-N-Load" "1" + "The Ullapool Caber" "1" + "Scotch Bonnet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ExpertsOrdnance" + "item_description" "#TF_Bundle_ExpertsOrdnance_Desc" + "image_inventory" "backpack/player/items/crafting/kit_experts_ordnance" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2011" + { + "name" "Winter Update Bundle" + "first_sale_date" "2010/12/13" + "item_class" "bundle" + "bundle" + { + "The Amputator" "1" + "The Crusader's Crossbow" "1" + "Berliner's Bucket Helm" "1" + + "The Brass Beast" "1" + "The Buffalo Steak Sandvich" "1" + "Warrior's Spirit" "1" + "Big Chief" "1" + + "The Loch-N-Load" "1" + "The Ullapool Caber" "1" + "Scotch Bonnet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_WinterUpdate" + "item_description" "#TF_Bundle_WinterUpdate_Desc" + "image_inventory" "backpack/player/items/crafting/kit_winterupdate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + "heavy" "1" + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2012" + { + "name" "Fancy Hat Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/12/23" + "item_class" "bundle" + "bundle" + { + "Coupe D'isaster" "1" + "Flipped Trilby" "1" + "German Gonzila" "1" + "Buckaroos Hat" "1" + "Madame Dixie" "1" + "Detective Noir" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_FancyHats" + "item_description" "#TF_Bundle_FancyHats_Desc" + "image_inventory" "backpack/player/items/crafting/kit_fancyhats" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + "medic" "1" + "scout" "1" + "engineer" "1" + "pyro" "1" + "demoman" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2013" + { + "name" "Excessive Bundle of Bundles" + "first_sale_date" "2010/12/16" + "item_class" "bundle" + "bundle" + { + "The Degreaser" "1" + "The Powerjack" "1" + "The Attendant" "1" + + "L'Etranger" "1" + "Your Eternal Reward" "1" + "The Familiar Fez" "1" + + "The Black Box" "1" + "The Battalion's Backup" "1" + "The Grenadier's Softcap" "1" + + "The Sydney Sleeper" "1" + "Darwin's Danger Shield" "1" + "The Bushwacka" "1" + "Ol' Snaggletooth" "1" + + "The Shortstop" "1" + "Mad Milk" "1" + "The Holy Mackerel" "1" + "The Milkman" "1" + + "The Amputator" "1" + "The Crusader's Crossbow" "1" + "Berliner's Bucket Helm" "1" + + "The Brass Beast" "1" + "The Buffalo Steak Sandvich" "1" + "Warrior's Spirit" "1" + "Big Chief" "1" + + "The Loch-N-Load" "1" + "The Ullapool Caber" "1" + "Scotch Bonnet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ExcessiveBundle" + "item_description" "#TF_Bundle_ExcessiveBundle_Desc" + "image_inventory" "backpack/player/items/crafting/kit_polycount_winterupdate" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "75" + "max_ilevel" "75" + "used_by_classes" + { + "medic" "1" + "heavy" "1" + "demoman" "1" + "pyro" "1" + "spy" "1" + "soldier" "1" + "sniper" "1" + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2014" + { + "name" "Nasty Weapon Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2010/12/23" + "item_class" "bundle" + "bundle" + { + "The Boston Basher" "1" + "The Back Scratcher" "1" + "The Claidheamohmor" "1" + "Fists of Steel" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_NastyWeapons" + "item_description" "#TF_Bundle_NastyWeapons_Desc" + "image_inventory" "backpack/crafting/kit_nastyweapons" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + "pyro" "1" + "demoman" "1" + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2015" + { + "name" "Map Token Bundle 2" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/01/17" + "item_class" "bundle" + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2016" + { + "name" "Shogun Complete Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/03/08" + "item_class" "bundle" + "bundle" + { + "The Concheror" "1" + "The Fan O'War" "1" + "Conniver's Kunai" "1" + "The Half-Zatoichi" "1" + + "Heavy Topknot" "1" + "Demo Kabuto" "1" + "Spy Oni Mask" "1" + "Medic Geisha Hair" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ShogunPromoComplete" + "item_description" "#TF_Bundle_ShogunPromoComplete_Desc" + "image_inventory" "backpack/workshop_partner/crafting/shogun_complete_bundle/shogun_complete_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + "scout" "1" + "spy" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2017" + { + "name" "Japan Charity Bundle" + "first_sale_date" "2011/03/23" + "item_class" "bundle" + "armory_desc" "charity" + "bundle" + { + "Humanitarian's Hachimaki" "1" + "Benefactor's Kanmuri" "1" + + "Charity Noise Maker - Bell" "1" + "Charity Noise Maker - Tingsha" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_JapanCharity" + "item_description" "#TF_Bundle_JapanCharity_Desc" + "image_inventory" "backpack/player/items/crafting/japan_charity_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2018" + { + "name" "Scout Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Force-a-Nature" "1" + "The Sandman" "1" + "Crit-a-Cola" "1" + "Batter's Helmet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ScoutStarter" + "item_description" "#TF_Bundle_ScoutStarter_Desc" + "image_inventory" "backpack/player/items/crafting/scout_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2019" + { + "name" "Soldier Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Buff Banner" "1" + "The Equalizer" "1" + "Tyrant's Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SoldierStarter" + "item_description" "#TF_Bundle_SoldierStarter_Desc" + "image_inventory" "backpack/player/items/crafting/soldier_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2020" + { + "name" "Pyro Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Flare Gun" "1" + "The Axtinguisher" "1" + "Respectless Rubber Glove" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PyroStarter" + "item_description" "#TF_Bundle_PyroStarter_Desc" + "image_inventory" "backpack/player/items/crafting/pyro_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2021" + { + "name" "Demoman Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Eyelander" "1" + "The Chargin' Targe" "1" + "Glengarry Bonnet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DemomanStarter" + "item_description" "#TF_Bundle_DemomanStarter_Desc" + "image_inventory" "backpack/player/items/crafting/demo_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2022" + { + "name" "Heavy Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "Natascha" "1" + "The Sandvich" "1" + "Football Helmet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HeavyStarter" + "item_description" "#TF_Bundle_HeavyStarter_Desc" + "image_inventory" "backpack/player/items/crafting/heavy_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2023" + { + "name" "Engineer Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Frontier Justice" "1" + "The Gunslinger" "1" + "Texas Ten Gallon" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_EngineerStarter" + "item_description" "#TF_Bundle_EngineerStarter_Desc" + "image_inventory" "backpack/player/items/crafting/engineer_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2024" + { + "name" "Medic Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Kritzkrieg" "1" + "The Ubersaw" "1" + "Prussian Pickelhaube" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MedicStarter" + "item_description" "#TF_Bundle_MedicStarter_Desc" + "image_inventory" "backpack/player/items/crafting/medic_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2025" + { + "name" "Sniper Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Huntsman" "1" + "Jarate" "1" + "Professional's Panama" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SniperStarter" + "item_description" "#TF_Bundle_SniperStarter_Desc" + "image_inventory" "backpack/player/items/crafting/sniper_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2026" + { + "name" "Spy Starter Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/20" + "item_class" "bundle" + "bundle" + { + "The Ambassador" "1" + "The Dead Ringer" "1" + "Fancy Fedora" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SpyStarter" + "item_description" "#TF_Bundle_SpyStarter_Desc" + "image_inventory" "backpack/player/items/crafting/spy_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2028" + { + "name" "Mobster Monday Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/16" + "item_class" "bundle" + "bundle" + { + "Tomislav" "1" + "The Family Business" "1" + "The Eviction Notice" "1" + "Capone's Capper" "1" + "The Enforcer" "1" + "The Big Earner" "1" + "Cosa Nostra Cap" "1" + "The Made Man" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MobsterMonday" + "item_description" "#TF_Bundle_MobsterMonday_Desc" + "image_inventory" "backpack/player/items/crafting/mobster_monday_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2029" + { + "name" "TimbukTuesday Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/16" + "item_class" "bundle" + "bundle" + { + "The Bazaar Bargain" "1" + "The Shahanshah" "1" + "Desert Marauder" "1" + "The Persian Persuader" "1" + "The Splendid Screen" "1" + "Ali Baba's Wee Booties" "1" + "Sultan's Ceremonial" "1" + "The Soda Popper" "1" + "The Winger" "1" + "The Atomizer" "1" + "Bonk Boy" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_TimbukTuesday" + "item_description" "#TF_Bundle_TimbukTuesday_Desc" + "image_inventory" "backpack/player/items/crafting/timbuktuesday_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + "scout" "1" + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2030" + { + "name" "World War Wednesday Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/16" + "item_class" "bundle" + "bundle" + { + "The Liberty Launcher" "1" + "The Reserve Shooter" "1" + "The Market Gardener" "1" + "Jumper's Jeepcap" "1" + "The Mantreads" "1" + "The Disciplinary Action" "1" + "Armored Authority" "1" + "Fancy Dress Uniform" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_WarWednesday" + "item_description" "#TF_Bundle_WarWednesday_Desc" + "image_inventory" "backpack/player/items/crafting/war_wednesday_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2031" + { + "name" "Meet the Medic! Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/16" + "item_class" "bundle" + "bundle" + { + "The Quick-Fix" "1" + "The Overdose" "1" + "The Solemn Vow" "1" + "Pocket Medic" "1" + "Meet the Medic Heroic Taunt" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MeetTheMedic" + "item_description" "#TF_Bundle_MeetTheMedic_Desc" + "image_inventory" "backpack/player/items/crafting/meet_the_medic_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2032" + { + "name" "Uber Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/16" + "item_class" "bundle" + "bundle" + { + "The Detonator" "1" + "Tomislav" "1" + "The Family Business" "1" + "The Eviction Notice" "1" + "Capone's Capper" "1" + "The Enforcer" "1" + "The Big Earner" "1" + "Cosa Nostra Cap" "1" + "The Made Man" "1" + "The Bazaar Bargain" "1" + "The Shahanshah" "1" + "Desert Marauder" "1" + "The Persian Persuader" "1" + "The Splendid Screen" "1" + "Ali Baba's Wee Booties" "1" + "Sultan's Ceremonial" "1" + "The Soda Popper" "1" + "The Winger" "1" + "The Atomizer" "1" + "Bonk Boy" "1" + "The Liberty Launcher" "1" + "The Reserve Shooter" "1" + "The Market Gardener" "1" + "Jumper's Jeepcap" "1" + "The Mantreads" "1" + "The Disciplinary Action" "1" + "Armored Authority" "1" + "Fancy Dress Uniform" "1" + "The Quick-Fix" "1" + "The Overdose" "1" + "The Solemn Vow" "1" + "Pocket Medic" "1" + "Laugh Taunt" "1" + "Meet the Medic Heroic Taunt" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Uber" + "item_description" "#TF_Bundle_Uber_Desc" + "image_inventory" "backpack/player/items/crafting/uber_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + "spy" "1" + "sniper" "1" + "scout" "1" + "demoman" "1" + "soldier" "1" + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2033" + { + "name" "Summer Sun Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/06/30" + "item_class" "bundle" + "bundle" + { + "Lucky No. 42" "1" + "Scout Flip-Flops" "1" + "Summer Hat" "1" + "Promotional Noise Maker - Fireworks" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Summer2011" + "item_description" "#TF_Bundle_Summer2011_Desc" + "image_inventory" "backpack/crafting/summer_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2034" + { + "name" "Dr. Grordbort's Victory Pack" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/07/13" + "item_class" "bundle" + "bundle" + { + "Lord Cockswain's Pith Helmet" "1" + "Lord Cockswain's Novelty Mutton Chops and Pipe" "1" + "The Cow Mangler 5000" "1" + "The Righteous Bison" "1" + "Dr. Grordbort's Crest" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DrGrordbortVictoryPack" + "item_description" "#TF_Bundle_DrGrordbortVictoryPack_Desc" + "image_inventory" "backpack/player/items/crafting/grordborts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2035" + { + "name" "Dr. Grordbort ComicCon Promo Code" + "item_class" "bundle" + "bundle" + { + "The Righteous Bison" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DrGComicCon" + "item_description" "#TF_Bundle_DrGComicCon_Desc" + "image_inventory" "backpack/player/items/crafting/grordborts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2036" + { + "name" "Bethesda Employee Bundle" + "item_class" "bundle" + "bundle" + { + "The Original" "1" + "Dragonborn Helmet" "1" + "The Anger" "1" + "Pip-Boy" "1" + "Wingstick" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "Bethesda Employee Bundle" + "image_inventory" "backpack/player/items/crafting/grordborts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "9" + } + } + } + "2037" + { + "name" "Tripwire Employee Bundle" + "item_class" "bundle" + "bundle" + { + "Pilotka" "1" + "Stahlhelm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "Tripwire Employee Bundle" + "image_inventory" "backpack/player/items/crafting/grordborts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "9" + } + } + } + "2038" + { + "name" "Bethesda Employee Bundle Genuine" + "item_class" "bundle" + "bundle" + { + "The Original" "1" + "Dragonborn Helmet" "1" + "The Anger" "1" + "Pip-Boy" "1" + "Wingstick" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "Bethesda Employee Bundle" + "image_inventory" "backpack/player/items/crafting/grordborts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2039" + { + "name" "Tripwire Employee Bundle Genuine" + "item_class" "bundle" + "bundle" + { + "Pilotka" "1" + "Stahlhelm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "Tripwire Employee Bundle" + "image_inventory" "backpack/player/items/crafting/grordborts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2040" + { + "name" "Deus Ex Promo Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/08/17" + "item_class" "bundle" + "bundle" + { + "Belltower Spec Ops" "1" + "The Deus Specs" "1" + "The Sarif Cap" "1" + "The Purity Fist" "1" + "The Diamondback" "1" + "The Machina" "1" + "The Widowmaker" "1" + "The Short Circuit" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DeusExPromo" + "item_description" "#TF_Bundle_DeusExPromo_Desc" + "image_inventory" "backpack/workshop_partner/crafting/dex_bundle/dex_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2041" + { + "name" "Deus Ex Purity Fist Promo" + "item_class" "bundle" + "bundle" + { + "The Purity Fist" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DeusExFistPromo" + "item_description" "#TF_Bundle_DeusExFistPromo_Desc" + "image_inventory" "backpack/workshop_partner/crafting/dex_bundle/dex_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2042" + { + "name" "DOTA2 Gamescom Winners Finals PROMO Bundle" + "item_class" "bundle" + "bundle" + { + "Sniper's Snipin' Glass" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DOTA2GamescomWinnersFinals" + "item_description" "#TF_Bundle_DOTA2GamescomWinnersFinals_Desc" + "image_inventory" "backpack/player/items/crafting/soldier_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2043" + { + "name" "DOTA2 Gamescom Losers Finals PROMO Bundle" + "item_class" "bundle" + "bundle" + { + "Storm Spirit's Jolly Hat" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DOTA2GamescomLosersFinals" + "item_description" "#TF_Bundle_DOTA2GamescomLosersFinals_Desc" + "image_inventory" "backpack/player/items/crafting/soldier_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2044" + { + "name" "DOTA2 Gamescom Championship PROMO Bundle" + "item_class" "bundle" + "bundle" + { + "Clockwerk's Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DOTA2GamescomChampionship" + "item_description" "#TF_Bundle_DOTA2GamescomChampionship_Desc" + "image_inventory" "backpack/player/items/crafting/soldier_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2045" + { + "name" "Deus Ex Self-Made Bundle" + "item_class" "bundle" + "bundle" + { + "Belltower Spec Ops" "1" + "The Deus Specs" "1" + "The Sarif Cap" "1" + "The Purity Fist" "1" + "The Diamondback" "1" + "The Machina" "1" + "The Widowmaker" "1" + "The Short Circuit" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DeusExSelfMade" + "item_description" "#TF_Bundle_DeusExSelfMade_Desc" + "image_inventory" "backpack/workshop_partner/crafting/dex_bundle/dex_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "9" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2046" + { + "name" "Shogun Complete Genuine Bundle" + "prefab" "default_bundle_payment" + "item_class" "bundle" + "bundle" + { + "The Concheror" "1" + "The Fan O'War" "1" + "Conniver's Kunai" "1" + "The Half-Zatoichi" "1" + + "Heavy Topknot" "1" + "Demo Kabuto" "1" + "Spy Oni Mask" "1" + "Medic Geisha Hair" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ShogunPromoComplete" + "item_description" "#TF_Bundle_ShogunPromoComplete_Desc" + "image_inventory" "backpack/workshop_partner/crafting/shogun_complete_bundle/shogun_complete_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + "scout" "1" + "spy" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2047" + { + "name" "Killer Exclusive PCGamer Bundle" + "item_class" "bundle" + "bundle" + { + "Killer Exclusive" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_KillerExclusive" + "item_description" "#TF_Bundle_KillerExclusive_Desc" + "image_inventory" "backpack/workshop_partner/crafting/dex_bundle/dex_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2048" + { + "name" "Deus Ex Contest Bundle" + "item_class" "bundle" + "bundle" + { + "Belltower Spec Ops" "1" + "The Deus Specs" "1" + "The Sarif Cap" "1" + "The Purity Fist" "1" + "The Diamondback" "1" + "The Machina" "1" + "The Widowmaker" "1" + "The Short Circuit" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DeusExContest" + "item_description" "#TF_Bundle_DeusExContest_Desc" + "image_inventory" "backpack/workshop_partner/crafting/dex_bundle/dex_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2049" + { + "name" "Map Token Bundle 3" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/06" + "item_class" "bundle" + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2050" + { + "name" "Football Manager 2012 Promo Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/25" + "item_class" "bundle" + "bundle" + { + "Ball-Kicking Boots" "1" + "Merc's Pride Scarf" "1" + "Noise Maker - Vuvuzela" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_FM2012Promo" + "item_description" "#TF_Bundle_FM2012Promo_Desc" + "image_inventory" "backpack/workshop_partner/crafting/soccer_bundle/soccer_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2051" + { + "name" "Demo Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Hair of the Dog" "1" + "Scottish Snarl" "1" + "Pickled Paws" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DemoHalloween2011" + "item_description" "#TF_Bundle_DemoHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/demo_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2052" + { + "name" "Scout Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Wrap Battler" "1" + "B-ankh!" "1" + "Futankhamun" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ScoutHalloween2011" + "item_description" "#TF_Bundle_ScoutHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/scout_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2053" + { + "name" "Pyro Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Blazing Bull" "1" + "Fallen Angel" "1" + "Tail From the Crypt" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PyroHalloween2011" + "item_description" "#TF_Bundle_PyroHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/pyro_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2054" + { + "name" "Medic Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Einstein" "1" + "Dr. Gogglestache" "1" + "Emerald Jarate" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MedicHalloween2011" + "item_description" "#TF_Bundle_MedicHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/medic_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2055" + { + "name" "Soldier Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Idiot Box" "1" + "Steel Pipes" "1" + "Shoestring Budget" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SoldierHalloween2011" + "item_description" "#TF_Bundle_SoldierHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/soldier_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2056" + { + "name" "Spy Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Under Cover" "1" + "Griffin's Gog" "1" + "Intangible Ascot" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SpyHalloween2011" + "item_description" "#TF_Bundle_SpyHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/spy_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2057" + { + "name" "Heavy Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Can Opener" "1" + "Soviet Stitch-Up" "1" + "Steel-Toed Stompers" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HeavyHalloween2011" + "item_description" "#TF_Bundle_HeavyHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/heavy_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2058" + { + "name" "Sniper Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Holy Hunter" "1" + "Silver Bullets" "1" + "Garlic Flank Stake" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SniperHalloween2011" + "item_description" "#TF_Bundle_SniperHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/sniper_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2059" + { + "name" "Engineer Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Buzz Killer" "1" + "Frontier Flyboy" "1" + "Legend of Bugfoot" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_EngineerHalloween2011" + "item_description" "#TF_Bundle_EngineerHalloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/engineer_bundle_bag" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2060" + { + "name" "Halloween 2011 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/10/26" + "item_class" "bundle" + "bundle" + { + "Hair of the Dog" "1" + "Scottish Snarl" "1" + "Pickled Paws" "1" + "Wrap Battler" "1" + "B-ankh!" "1" + "Futankhamun" "1" + "Blazing Bull" "1" + "Fallen Angel" "1" + "Tail From the Crypt" "1" + "Einstein" "1" + "Dr. Gogglestache" "1" + "Emerald Jarate" "1" + "Idiot Box" "1" + "Steel Pipes" "1" + "Shoestring Budget" "1" + "Under Cover" "1" + "Griffin's Gog" "1" + "Intangible Ascot" "1" + "Can Opener" "1" + "Soviet Stitch-Up" "1" + "Steel-Toed Stompers" "1" + "Holy Hunter" "1" + "Silver Bullets" "1" + "Garlic Flank Stake" "1" + "Buzz Killer" "1" + "Frontier Flyboy" "1" + "Legend of Bugfoot" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Halloween2011" + "item_description" "#TF_Bundle_Halloween2011_Desc" + "image_inventory" "backpack/player/items/crafting/bundle_of_bundles" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2061" + { + "name" "Archimedes Promo" + "item_class" "bundle" + "bundle" + { + "Archimedes" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ArchimedesPromo" + "item_description" "#TF_Bundle_ArchimedesPromo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2062" + { + "name" "Dr. Grordbort's Brainiac Pack" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/12/15" + "item_class" "bundle" + "bundle" + { + "The Pomson 6000" "1" + "The Eureka Effect" "1" + "The Brainiac Hairpiece" "1" + "The Brainiac Goggles" "1" + "Dr. Grordbort's Copper Crest" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DrGrordbortBrainiacPack" + "item_description" "#TF_Bundle_DrGrordbortBrainiacPack_Desc" + "image_inventory" "backpack/player/items/crafting/grordborts_engineer_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2063" + { + "name" "Dr. Grordbort's Moonman Pack" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/12/15" + "item_class" "bundle" + "bundle" + { + "The Third Degree" "1" + "The Phlogistinator" "1" + "The Manmelter" "1" + "The Moonman Backpack" "1" + "The Bubble Pipe" "1" + "Dr. Grordbort's Silver Crest" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DrGrordbortMoonmanPack" + "item_description" "#TF_Bundle_DrGrordbortMoonmanPack_Desc" + "image_inventory" "backpack/player/items/crafting/grordborts_pyro_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2064" + { + "name" "Dr. Grordbort's Moonbrain Double Pack" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/11/15" + "item_class" "bundle" + "bundle" + { + "The Pomson 6000" "1" + "The Eureka Effect" "1" + "The Brainiac Hairpiece" "1" + "The Brainiac Goggles" "1" + "Dr. Grordbort's Copper Crest" "1" + "The Third Degree" "1" + "The Phlogistinator" "1" + "The Manmelter" "1" + "The Moonman Backpack" "1" + "The Bubble Pipe" "1" + "Dr. Grordbort's Silver Crest" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DrGrordbortMoonbrainPack" + "item_description" "#TF_Bundle_DrGrordbortMoonbrainPack_Desc" + "image_inventory" "backpack/player/items/crafting/grordborts_xmas_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2065" + { + "name" "Santa's Little Accomplice Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2011/12/19" + "item_class" "bundle" + "bundle" + { + "The Wrap Assassin" "1" + "The Big Elfin Deal" "1" + "The Bootie Time" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Winter2011ScoutElf" + "item_description" "#TF_Bundle_Winter2011ScoutElf_Desc" + "image_inventory" "backpack/crafting/xmas_elf_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2066" + { + "name" "Pet Balloonicorn Promo" + "item_class" "bundle" + "bundle" + { + "Pet Balloonicorn" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Pet_Balloonicorn_Promo" + "item_description" "#TF_Pet_Balloonicorn_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2067" + { + "name" "Sandvich Promo" + "item_class" "bundle" + "bundle" + { + "Sandvich Promo Package" "1" + "Store Purchase Promotion Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Sandvich_Promo" + "item_description" "#TF_Sandvich_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2068" + { + "name" "Companion Square Promo" + "item_class" "bundle" + "bundle" + { + "Companion Square Promo Package" "1" + "Store Purchase Promotion Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Companion_Square_Promo" + "item_description" "#TF_Companion_Square_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2069" + { + "name" "Soldier Equalizer Escape Plan Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/06/27" + "item_class" "bundle" + "bundle" + { + "The Escape Plan" "1" + "The Equalizer" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_EqualizerEscape" + "item_description" "#TF_Bundle_EqualizerEscape_Desc" + "image_inventory" "backpack/player/items/crafting/equalizer_escape_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2070" + { + "name" "Robot Chicken Hat Promo" + "item_class" "bundle" + "bundle" + { + "Robot Chicken Hat" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RobotChickenHat_Promo" + "item_description" "#TF_RobotChickenHat_Promo_Desc" + "image_inventory" "backpack/player/items/all_class/as_robot_chicken_demo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2071" + { + "name" "Urban Professional Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/07/11" + "item_class" "bundle" + "bundle" + { + "The Hitman's Heatmaker" "1" + "The Cleaner's Carbine" "1" + "Liquidator's Lid" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Summer2012_UrbanProfessional" + "item_description" "#TF_Bundle_Summer2012_UrbanProfessional_Desc" + "image_inventory" "backpack/player/items/crafting/urbanpro_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2072" + { + "name" "Dumpster Diver Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/07/11" + "item_class" "bundle" + "bundle" + { + "The Beggar's Bazooka" "1" + "The Captain's Cocktails" "1" + "The Helmet Without a Home" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Summer2012_DumpsterDiver" + "item_description" "#TF_Bundle_Summer2012_DumpsterDiver_Desc" + "image_inventory" "backpack/player/items/crafting/dumpster_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2073" + { + "name" "Public Enemy Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/07/11" + "item_class" "bundle" + "bundle" + { + "Baby Face's Blaster" "1" + "Pretty Boy's Pocket Pistol" "1" + "The Fed-Fightin' Fedora" "1" + "Dillinger's Duffel" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Summer2012_PublicEnemy" + "item_description" "#TF_Bundle_Summer2012_PublicEnemy_Desc" + "image_inventory" "backpack/player/items/crafting/publicenemy_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2074" + { + "name" "Pyromania Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/07/11" + "item_class" "bundle" + "bundle" + { + "The Hitman's Heatmaker" "1" + "The Cleaner's Carbine" "1" + "Liquidator's Lid" "1" + "The Beggar's Bazooka" "1" + "The Captain's Cocktails" "1" + "The Helmet Without a Home" "1" + "Baby Face's Blaster" "1" + "Pretty Boy's Pocket Pistol" "1" + "The Fed-Fightin' Fedora" "1" + "Dillinger's Duffel" "1" + "The Bird-Man of Aberdeen" "1" + "The Idea Tube" "1" + "The HazMat Headcase" "1" + "The Business Casual" "1" + "The Gentleman's Ushanka" "1" + "The Apparatchik's Apparel" "1" + "The Scorch Shot" "1" + "The Infernal Orchestrina" "1" + "The Burning Bongos" "1" + "Pet Balloonicorn" "1" + "The Lollichop" "1" + "The Rainblower" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Summer2012_Pyromania" + "item_description" "#TF_Bundle_Summer2012_Pyromania_Desc" + "image_inventory" "backpack/player/items/crafting/summer_pyro_sale_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2075" + { + "name" "Summer 2012 Community Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/07/11" + "item_class" "bundle" + "bundle" + { + "The Bird-Man of Aberdeen" "1" + "The Idea Tube" "1" + "The HazMat Headcase" "1" + "The Business Casual" "1" + "The Gentleman's Ushanka" "1" + "The Apparatchik's Apparel" "1" + "The Scorch Shot" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Summer2012_Community" + "item_description" "#TF_Bundle_Summer2012_Community_Desc" + "image_inventory" "backpack/player/items/crafting/summer_pyro_community_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2076" + { + "name" "Sleeping Dogs Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/08/01" + "item_class" "bundle" + "bundle" + { + "The Red-Tape Recorder" "1" + "The Huo Long Heatmaker" "1" + "The Flying Guillotine" "1" + "The Neon Annihilator" "1" + "The Triad Trinket" "1" + "The Champ Stamp" "1" + "The Marxman" "1" + "The Human Cannonball" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SleepingDogsBundle" + "item_description" "#TF_Bundle_SleepingDogsBundle_Desc" + "image_inventory" "backpack/workshop_partner/player/items/crafting/sleeping_dogs_bundle/sleeping_dogs_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2077" + { + "name" "QuakeCon2012 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/08/01" + "item_class" "bundle" + "bundle" + { + "The Original" "1" + "Wingstick" "1" + "Dragonborn Helmet" "1" + "The Anger" "1" + "Pip-Boy" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_QuakeCon2012Bundle" + "item_description" "#TF_Bundle_QuakeCon2012Bundle_Desc" + "image_inventory" "backpack/workshop_partner/crafting/bethesda_bundle/bethesda_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2078" + { + "name" "Steam Translation Bundle" + "first_sale_date" "2012/08/01" + "item_class" "bundle" + "bundle" + { + "Steam Translation Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_STSBundle" + "item_description" "#TF_Bundle_STSBundle_Desc" + "image_inventory" "backpack/player/items/crafting/sts_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2079" + { + "name" "Map Token Bundle 4" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/08/09" + "item_class" "bundle" + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2080" + { + "name" "Hero Academy Gold Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/08/09" + "item_class" "bundle" + "bundle" + { + "The Ninja Cowl" "1" + "The Void Monk Hair" "1" + "The Tribal Bones" "1" + "The Grenadier Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HA_Gold" + "item_description" "#TF_Bundle_HA_Gold_Desc" + "image_inventory" "backpack/workshop_partner/player/items/crafting/hero_academy_bundle/hero_academy_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "used_by_classes" + { + "scout" "1" + "demoman" "1" + "spy" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2081" + { + "name" "Sleeping Dogs Employee Bundle" + "item_class" "bundle" + "bundle" + { + "The Red-Tape Recorder" "1" + "The Huo Long Heatmaker" "1" + "The Flying Guillotine" "1" + "The Neon Annihilator" "1" + "The Triad Trinket" "1" + "The Champ Stamp" "1" + "The Marxman" "1" + "The Human Cannonball" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SleepingDogsBundle" + "item_description" "#TF_Bundle_SleepingDogsBundle_Desc" + "image_inventory" "backpack/player/items/crafting/sleeping_dogs_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2082" + { + "name" "Portal 2 Soundtrack Promo" + "item_class" "bundle" + "bundle" + { + "Portal 2 Soundtrack Promo Package" "1" + "Store Purchase Promotion Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Portal2_Soundtrack_Promo" + "item_description" "#TF_Portal2_Soundtrack_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2083" + { + "name" "Red Heavy Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Officer's Ushanka" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedHeavy_ActionFigure_Promo" + "item_description" "#TF_RedHeavy_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2084" + { + "name" "Red Pyro Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Brigade Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedPyro_ActionFigure_Promo" + "item_description" "#TF_RedPyro_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2085" + { + "name" "Red Demoman Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Glengarry Bonnet" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedDemo_ActionFigure_Promo" + "item_description" "#TF_RedDemo_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2086" + { + "name" "Red Soldier Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Tyrant's Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedSoldier_ActionFigure_Promo" + "item_description" "#TF_RedSoldier_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2087" + { + "name" "Blue Heavy Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Tough Guy's Toque" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueHeavy_ActionFigure_Promo" + "item_description" "#TF_BlueHeavy_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2088" + { + "name" "Blue Pyro Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Respectless Rubber Glove" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BluePyro_ActionFigure_Promo" + "item_description" "#TF_BluePyro_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2089" + { + "name" "Blue Demoman Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Scotsman's Stove Pipe" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueDemo_ActionFigure_Promo" + "item_description" "#TF_BlueDemo_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2090" + { + "name" "Blue Soldier Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Stainless Pot" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueSoldier_ActionFigure_Promo" + "item_description" "#TF_BlueSoldier_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2091" + { + "name" "Total War Bundle" + "item_class" "bundle" + "bundle" + { + "The King of Scotland Cape" "1" + "The Menpo" "1" + "The K-9 Mane" "1" + "The Stovepipe Sniper Shako" "1" + "The Foppish Physician" "1" + "The Distinguished Rogue" "1" + "The Freedom Staff" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_TotalWarBundle" + "item_description" "#TF_TotalWarBundle_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2092" + { + "name" "Halloween 2012 Community Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/24" + "item_class" "bundle" + "bundle" + { + "Sir Hootsalot" "1" + "The Master Mind" "1" + "The Rump-o'-Lantern" "1" + "The Scarecrow" "1" + "The Crone's Dome" "1" + "The Executioner" "1" + "The Bonedolier" "1" + "The Plutonidome" "1" + "The Spooky Shoes" "1" + "The Spooky Sleeves" "1" + "The Zipperface" "1" + "The Boo Balloon" "1" + "The Unknown Monkeynaut" "1" + "The Grand Duchess Tutu" "1" + "The Grand Duchess Fairy Wings" "1" + "The Grand Duchess Tiara" "1" + "The Dead Little Buddy" "1" + "The Exorcizor" "1" + "The Voodoo Juju (Slight Return)" "1" + "The Wraith Wrap" "1" + "The Coffin Kit" "1" + "The Bat Outta Hell" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Halloween2012CommunityBundle" + "item_description" "#TF_Halloween2012CommunityBundle_Desc" + "image_inventory" "backpack/player/items/crafting/halloween_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + } + "2093" + { + "name" "Name Tag For Bundles" + "first_sale_date" "2012/10/16" + "prefab" "valve tool_nametag" + "attributes" + { + "always tradable" + { + "attribute_class" "always_tradable" + "value" "1" + } + } + } + "2094" + { + "name" "Scout Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Force-a-Nature" "1" + "The Sandman" "1" + "Crit-a-Cola" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ScoutStarter" + "item_description" "#TF_Bundle_ScoutStarter_Desc" + "image_inventory" "backpack/player/items/crafting/scout_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2095" + { + "name" "Soldier Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Buff Banner" "1" + "The Equalizer" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SoldierStarter" + "item_description" "#TF_Bundle_SoldierStarter_Desc" + "image_inventory" "backpack/player/items/crafting/soldier_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2096" + { + "name" "Pyro Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Flare Gun" "1" + "The Axtinguisher" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PyroStarter" + "item_description" "#TF_Bundle_PyroStarter_Desc" + "image_inventory" "backpack/player/items/crafting/pyro_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2097" + { + "name" "Demoman Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Eyelander" "1" + "The Chargin' Targe" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DemomanStarter" + "item_description" "#TF_Bundle_DemomanStarter_Desc" + "image_inventory" "backpack/player/items/crafting/demo_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2098" + { + "name" "Heavy Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "Natascha" "1" + "The Sandvich" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HeavyStarter" + "item_description" "#TF_Bundle_HeavyStarter_Desc" + "image_inventory" "backpack/player/items/crafting/heavy_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2099" + { + "name" "Engineer Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Frontier Justice" "1" + "The Gunslinger" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_EngineerStarter" + "item_description" "#TF_Bundle_EngineerStarter_Desc" + "image_inventory" "backpack/player/items/crafting/engineer_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2100" + { + "name" "Medic Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Kritzkrieg" "1" + "The Ubersaw" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MedicStarter" + "item_description" "#TF_Bundle_MedicStarter_Desc" + "image_inventory" "backpack/player/items/crafting/medic_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2101" + { + "name" "Sniper Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Huntsman" "1" + "Jarate" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SniperStarter" + "item_description" "#TF_Bundle_SniperStarter_Desc" + "image_inventory" "backpack/player/items/crafting/sniper_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2102" + { + "name" "Spy Starter Bundle No Hat" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/10/16" + "item_class" "bundle" + "bundle" + { + "The Ambassador" "1" + "The Dead Ringer" "1" + "Name Tag For Bundles" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SpyStarter" + "item_description" "#TF_Bundle_SpyStarter_Desc" + "image_inventory" "backpack/player/items/crafting/spy_starter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2103" + { + "name" "Purity Fist Promo" + "item_class" "bundle" + "bundle" + { + "The Purity Fist" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_PurityFist_Promo" + "item_description" "#TF_PurityFist_Promo_Desc" + "image_inventory" "backpack/workshop_partner/player/items/heavy/dex_sarifarm/dex_sarifarm" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2104" + { + "name" "The Henchmann Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/12/13" + "item_class" "bundle" + "bundle" + { + "Flunkyware" "1" + "The Hanger-On Hood" "1" + "The Flight of the Monarch" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Henchmann" + "item_description" "#TF_Bundle_Henchmann_Desc" + "image_inventory" "backpack/workshop_partner/crafting/venture_bros_bundle/venture_bros_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2105" + { + "name" "The Rockzo Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/12/13" + "item_class" "bundle" + "bundle" + { + "The DethKapp" "1" + "Nose Candy" "1" + "Rail Spikes" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Rockzo" + "item_description" "#TF_Bundle_Rockzo_Desc" + "image_inventory" "backpack/workshop_partner/crafting/metalocalypse_bundle/metalocalypse_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2106" + { + "name" "The Brutananadilewski Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/12/13" + "item_class" "bundle" + "bundle" + { + "The Carl" "1" + "Aqua Flops" "1" + "The Hunger Force" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Brutananadilewski" + "item_description" "#TF_Bundle_Brutananadilewski_Desc" + "image_inventory" "backpack/workshop_partner/crafting/aqua_teen_bundle/aqua_teen_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2107" + { + "name" "The Adult Swim Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/12/13" + "item_class" "bundle" + "bundle" + { + "Flunkyware" "1" + "The Hanger-On Hood" "1" + "The Flight of the Monarch" "1" + "The DethKapp" "1" + "Nose Candy" "1" + "Rail Spikes" "1" + "The Carl" "1" + "Aqua Flops" "1" + "The Hunger Force" "1" + "Brock's Locks" "1" + "Robot Chicken Hat" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_AdultSwim" + "item_description" "#TF_Bundle_AdultSwim_Desc" + "image_inventory" "backpack/workshop_partner/crafting/adult_swim_bundle/adult_swim_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2108" + { + "name" "Winter 2012 Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2012/12/20" + "item_class" "bundle" + "bundle" + { + "Smissmas Wreath" "1" + "Antlers" "1" + "Pet Reindoonicorn" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Winter2012" + "item_description" "#TF_Bundle_Winter2012_Desc" + "image_inventory" "backpack/crafting/winter_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2109" + { + "name" "Pet Balloonicorn Plush Promo" + "item_class" "bundle" + "bundle" + { + "Pet Balloonicorn" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Pet_BalloonicornPlush_Promo" + "item_description" "#TF_Pet_BalloonicornPlush_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2110" + { + "name" "Sandvich v2 Promo" + "item_class" "bundle" + "bundle" + { + "Sandvich Promo Package" "1" + "Store Purchase Promotion Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_SandvichV2_Promo" + "item_description" "#TF_SandvichV2_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2111" + { + "name" "Oculus Rift Promo" + "item_class" "bundle" + "bundle" + { + "The TF2VRH" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_OculusRift_Promo" + "item_description" "#TF_OculusRift_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2112" + { + "name" "Red Engineer Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Engineer's Cap" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedEngineer_ActionFigure_Promo" + "item_description" "#TF_RedEngineer_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2113" + { + "name" "Blue Engineer Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Texas Ten Gallon" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueEngineer_ActionFigure_Promo" + "item_description" "#TF_BlueEngineer_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2114" + { + "name" "Red Spy Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Backbiter's Billycock" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedSpy_ActionFigure_Promo" + "item_description" "#TF_RedSpy_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2115" + { + "name" "Blue Spy Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Camera Beard" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueSpy_ActionFigure_Promo" + "item_description" "#TF_BlueSpy_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2116" + { + "name" "Red Sniper Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Master's Yellow Belt" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedSniper_ActionFigure_Promo" + "item_description" "#TF_RedSniper_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2117" + { + "name" "Blue Sniper Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Professional's Panama" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueSniper_ActionFigure_Promo" + "item_description" "#TF_BlueSniper_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2118" + { + "name" "Red Scout Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Bonk Helm" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedScout_ActionFigure_Promo" + "item_description" "#TF_RedScout_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2119" + { + "name" "Blue Scout Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Ye Olde Baker Boy" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueScout_ActionFigure_Promo" + "item_description" "#TF_BlueScout_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2120" + { + "name" "Red Medic Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Otolaryngologist's Mirror" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RedMedic_ActionFigure_Promo" + "item_description" "#TF_RedMedic_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2121" + { + "name" "Blue Medic Action Figure Promo" + "item_class" "bundle" + "bundle" + { + "Vintage Tyrolean" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_BlueMedic_ActionFigure_Promo" + "item_description" "#TF_BlueMedic_ActionFigure_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2122" + { + "name" "Team Fortress Chess Promo" + "item_class" "bundle" + "bundle" + { + "The Grandmaster" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Chess_Promo" + "item_description" "#TF_Chess_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2123" + { + "name" "Map Token Bundle 5" + "prefab" "default_bundle_payment" + "first_sale_date" "2013/07/14" + "item_class" "bundle" + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2124" + { + "name" "The Byzantine Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2013/09/19" + "item_class" "bundle" + "bundle" + { + "The Beastly Bonnet" "1" + "The Cheet Sheet" "1" + "The Tartantaloons" "1" + "The Steel Sixpack" "1" + "The Centurion" "1" + "The Tartan Shade" "1" + "The Hardy Laurel" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Byzantine" + "item_description" "#TF_Bundle_Byzantine_Desc" + "image_inventory" "backpack/workshop_partner/crafting/tw2_bundle/tw2_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2125" + { + "name" "Map Token Bundle 6" + "prefab" "default_bundle_payment" + "first_sale_date" "2013/11/21" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2126" + { + "name" "Halloween 2013 Everything Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2013/10/28" + "item_class" "bundle" + "bundle" + { + "The Beast From Below" "1" + "Hard-Headed Hardware" "1" + "Cap'n Calamari" "1" + "The Spectralnaut" "1" + "Ethereal Hood" "1" + "The Maniac's Manacles" "1" + "The Second Opinion" "1" + "The Pocket Horsemann" "1" + "The Last Bite" "1" + "The Baphomet Trotters" "1" + "Burny's Boney Bonnet" "1" + "The Crispy Golden Locks" "1" + "The Scorched Skirt" "1" + "The Accursed Apparition" "1" + "The Hound's Hood" "1" + "The Terrier Trousers" "1" + "The Horrific Head of Hare" "1" + "The Snaggletoothed Stetson" "1" + "Up Pyroscopes" "1" + "The One-Way Ticket" "1" + "The Birdie Bonnet" "1" + "The External Organ" "1" + "Ivan The Inedible" "1" + "The Rugged Respirator" "1" + "The Squid's Lid" "1" + "The Hollowhead" "1" + "Grub Grenades" "1" + "The Gothic Guise" "1" + "The Grease Monkey" "1" + "The Alternative Medicine Mann" "1" + "The Cauterizer's Caudal Appendage" "1" + "Polly Putrid" "1" + "The Faux Manchu" "1" + "The Hidden Dragon" "1" + "The Lo-Grav Loafers" "1" + "The Surgeon's Space Suit" "1" + "The Face Plante" "1" + "Das Blutliebhaber" "1" + "The Trepanabotomizer" "1" + "The Sackcloth Spook" "1" + "The Mucous Membrain" "1" + "Pin Pals" "1" + "Medimedes" "1" + "The Chicken Kiev" "1" + "The Freedom Feathers" "1" + "The Headtaker's Hood" "1" + "The Transylvania Top" "1" + "The Candleer" "1" + "The Horsemann's Hand-Me-Down" "1" + "Bozo's Bouffant" "1" + "Faun Feet" "1" + "The Halloweiner" "1" + "The Lordly Lapels" "1" + "The Cadaver's Capper" "1" + "Guano" "1" + "The Sprinting Cephalopod" "1" + "Unidentified Following Object" "1" + "The Beacon from Beyond" "1" + "The Hyperbaric Bowler" "1" + "The Death Support Pack" "1" + "The Carious Chameleon" "1" + "The Monster's Stompers" "1" + "The Bountiful Bow" "1" + "The Candyman's Cap" "1" + "The Vicar's Vestments" "1" + "The Hardium Helm" "1" + "The Jupiter Jumpers" "1" + "The Space Bracers" "1" + "The Handhunter" "1" + "The Spellbinder's Bonnet" "1" + "The Macabre Mask" "1" + "The Shaman's Skull" "1" + "The Abhorrent Appendages" "1" + "The Vicious Visage" "1" + "The Tuque or Treat" "1" + "The Horned Honcho" "1" + "Lieutenant Bites the Dust" "1" + "The Grisly Gumbo" "1" + "The Dark Helm" "1" + "Archimedes the Undying" "1" + "The Monstrous Mandible" "1" + "The Shaolin Sash" "1" + "The Mann-Bird of Aberdeen" "1" + "The Foul Cowl" "1" + "Sir Shootsalot" "1" + "The Corpsemopolitan" "1" + "The Glob" "1" + "The Hallowed Headcase" "1" + "Carrion Companion" "1" + "Quoth" "1" + "PY-40 Incinibot" "1" + "The Parasight" "1" + "Teutonkahmun" "1" + "The Larval Lid" "1" + "The Manneater" "1" + "The Creature From The Heap" "1" + "The Magical Mercenary" "1" + "The Raven's Visage" "1" + "Ramses' Regalia" "1" + "The Haunted Hat" "1" + "Bozo's Brogues" "1" + "The Cryptic Keepsake" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Halloween2013Everything" + "item_description" "#TF_Bundle_Halloween2013Everything_Desc" + "image_inventory" "backpack/player/items/crafting/halloween_2013_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "holiday_restriction" "halloween_or_fullmoon" + } + "2127" + { + "name" "TF2mixup Community Event 2013 Promo" + "item_class" "bundle" + "bundle" + { + "Heart of Gold" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_TF2mixup_Community_Event_2013_Promo" + "item_description" "#TF_TF2mixup_Community_Event_2013_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2128" + { + "name" "Robot Heavy Collectible Figure Promo" + "item_class" "bundle" + "bundle" + { + "The Little Bear" "1" + "The Triple A Badge" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RobotHeavy_Promo" + "item_description" "#TF_RobotHeavy_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2129" + { + "name" "Love & War Taunt Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2014/06/18" + "item_class" "bundle" + "bundle" + { + "Conga Taunt" "1" + "Skullcracker Taunt" "1" + "Square Dance Taunt" "1" + "Flippin' Awesome Taunt" "1" + "RPS Taunt" "1" + + "I See You Taunt" "1" + "Buy A Life Taunt" "1" + "Results Are In Taunt" "1" + "Party Trick Taunt" "1" + "Fresh Brewed Victory Taunt" "1" + "Spent Well Spirits Taunt" "1" + "Rancho Relaxo Taunt" "1" + "Battin' a Thousand Taunt" "1" + "Oblooterated Taunt" "1" + "Deep Fried Desire Taunt" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_LW_Taunts" + "item_description" "#TF_Bundle_LW_Taunts_Desc" + "image_inventory" "backpack/player/items/crafting/bundle_of_taunts" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2130" + { + "name" "Love & War Weapons Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2014/06/18" + "item_class" "bundle" + "bundle" + { + "The B.A.S.E. Jumper" "1" + "The Air Strike" "1" + "The Tide Turner" "1" + "The Classic" "1" + "The Back Scatter" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_LW_Weapons" + "item_description" "#TF_Bundle_LW_Weapons_Desc" + "image_inventory" "backpack/player/items/crafting/parts/love_and_war_weapons_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2131" + { + "name" "Love & War Cosmetics Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2014/06/18" + "item_class" "bundle" + "bundle" + { + "The Classified Coif" "1" + "The Rogue's Robe" "1" + "The Spook Specs" "1" + "The Sengoku Scorcher" "1" + "The Man in Slacks" "1" + "The Razor Cut" "1" + "The Frickin' Sweet Ninja Hood" "1" + "The Southie Shinobi" "1" + "The Red Socks" "1" + "The Bruiser's Bandanna" "1" + + "The Gas Guzzler" "1" + "The Smoking Skid Lid" "1" + "The Lunatic's Leathers" "1" + "Yuri's Revenge" "1" + "The Tools of the Trade" "1" + "The Joe-on-the-Go" "1" + "The Aviator Assassin" "1" + "The Sky Captain" "1" + "The Peacenik's Ponytail" "1" + "The Level Three Chin" "1" + + "The Egghead's Overalls" "1" + "The Lonesome Loafers" "1" + "Ze Ubermensch" "1" + "The Au Courant Assassin" "1" + "The Endothermic Exowear" "1" + "The Merc's Mohawk" "1" + "The Eye-Catcher" "1" + "The Medicine Manpurse" "1" + "Employee of the Mmmph" "1" + "The Frymaster" "1" + + "The Combustible Kabuto" "1" + "The Chronoscarf" "1" + "The Danger" "1" + "The Frontier Djustice" "1" + "Vive La France" "1" + "The Scoper's Smoke" "1" + "The Triggerman's Tacticals" "1" + "The Allbrero" "1" + "Seeing Double" "1" + "Six Pack Abs" "1" + + "The Pomade Prince" "1" + "The Paisley Pro" "1" + "The Argyle Ace" "1" + "Tipped Lid" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_LW_Cosmetics" + "item_description" "#TF_Bundle_LW_Cosmetics_Desc" + "image_inventory" "backpack/player/items/crafting/parts/love_and_war_cosmetics_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2132" + { + "name" "Spycrab Promo" + "item_class" "bundle" + "bundle" + { + "The Spycrab" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Spycrab_Promo" + "item_description" "#TF_Spycrab_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2133" + { + "name" "RPS Promo" + "item_class" "bundle" + "bundle" + { + "Horace" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RPS_Promo" + "item_description" "#TF_RPS_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2134" + { + "name" "Alien: Isolation Promo Bundle" + "item_class" "bundle" + "bundle" + { + "The Biomech Backpack" "1" + "The Alien Cranium" "1" + "The Xeno Suit" "1" + "The MK 50" "1" + "The Nostromo Napalmer" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_AI_Promo" + "item_description" "#TF_AI_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "pyro" "1" + "spy" "1" + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2135" + { + "name" "Halloween 2014 Everything Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2014/10/29" + "item_class" "bundle" + "bundle" + { + "Herzensbrecher" "1" + "Hundekopf" "1" + "Kriegsmaschine-9000" "1" + "Transylvanian Toupe" "1" + "Vampiric Vesture" "1" + "Nugget Noggin" "1" + "Fowl Fists" "1" + "Talon Trotters" "1" + "Head Hunter" "1" + "Claws And Infect" "1" + "Crazy Legs" "1" + "Ghost of Spies Checked Past" "1" + "The Hooded Haunter" "1" + "Conspiratorial Cut" "1" + "Skinless Slashers" "1" + "Marsupial Man" "1" + "Kanga Kickers" "1" + "Roo Rippers" "1" + "Marsupial Muzzle" "1" + "Shadowman's Shade" "1" + "Nightmare Hunter" "1" + "Rogue's Rabbit" "1" + "Iron Fist" "1" + "Beep Man" "1" + "Soul of 'Spenser's Past" "1" + "Tiny Texan" "1" + "Facepeeler" "1" + "Mr. Mundee's Wild Ride" "1" + "Templar's Spirit" "1" + "Wings of Purity" "1" + "Forgotten King's Restless Head" "1" + "Forgotten King's Pauldrons" "1" + "Eyeborg" "1" + "Explosive Mind" "1" + "Ghoul Gibbin' Gear" "1" + "Hellhunter's Headpiece" "1" + "Supernatural Stalker" "1" + "Garden Bristles" "1" + "Battle Bird" "1" + "Creature's Grin" "1" + "Arsonist Apparatus" "1" + "Moccasin Machinery" "1" + "Lollichop Licker" "1" + "Mr. Juice" "1" + "Vampyro" "1" + "Bone-Cut Belt" "1" + "Bull Locks" "1" + "Minsk Beef" "1" + "Immobile Suit" "1" + "Cursed Cruise" "1" + "Kritz Or Treat Canteen" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_Halloween2014Everything" + "item_description" "#TF_Bundle_Halloween2014Everything_Desc" + "image_inventory" "backpack/player/items/crafting/crate_halloween_2014_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "51" + "max_ilevel" "51" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "holiday_restriction" "halloween_or_fullmoon" + } + "2136" + { + "name" "Robot Pyro Collectible Figure Promo" + "item_class" "bundle" + "bundle" + { + "The Nabler" "1" + "The Triple A Badge" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_RobotPyro_Promo" + "item_description" "#TF_RobotPyro_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2137" + { + "name" "TF2mixup Community Event 2014 Promo" + "item_class" "bundle" + "bundle" + { + "Thought that Counts" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_TF2mixup_Community_Event_2014_Promo" + "item_description" "#TF_TF2mixup_Community_Event_2014_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2138" + { + "name" "Map Token Bundle 7" + "prefab" "default_bundle_payment" + "first_sale_date" "2015/08/26" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2139" + { + "name" "Map Token Bundle 8" + "prefab" "default_bundle_payment" + "first_sale_date" "2015/09/26" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2140" + { + "name" "Map Token Bundle 9" + "prefab" "default_bundle_payment" + "first_sale_date" "2015/10/24" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2141" + { + "name" "Yogscast Jingle Jam 2015 Promo" + "item_class" "bundle" + "bundle" + { + "Xephos' Philanthropic Physiognomy" "1" + "Honeydew's Charitable Countenance" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_JingleJam_Community_Event_2015_Promo" + "item_description" "#TF_JingleJam_Community_Event_2015_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2142" + { + "name" "Batman Arkham Knight Promo Bundle" + "item_class" "bundle" + "bundle" + { + "Arkham Cowl" "1" + "The Firefly" "1" + "Batter's Bracers" "1" + "The Hood of Sorrows" "1" + "Fear Monger" "1" + "Pocket Villains" "1" + "The Caped Crusader" "1" + "Buttler" "1" + "Teufort Knight" "1" + "Sidekick's Side Slick" "1" + "The Bat Backup" "1" + "Crook Combatant" "1" + "Batbelt" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_BatmanArkhamKnightPromo" + "item_description" "#TF_Bundle_BatmanArkhamKnightPromo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2143" + { + "name" "Map Token Bundle 10" + "prefab" "default_bundle_payment" + "first_sale_date" "2015/12/14" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2144" + { + "name" "Tough Break Community Maps Bundle" + "prefab" "default_bundle_payment" + "first_sale_date" "2015/12/13" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Strange Filter: Snowycoast (Community)" "1" + "Strange Filter: Vanguard (Community)" "1" + "Strange Filter: Landfall (Community)" "1" + "Strange Filter: Highpass (Community)" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens_ToughBreak" + "item_description" "#TF_Bundle_MapTokens_ToughBreak_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2145" + { + "name" "Love & War Cosmetics Bundle New" + "prefab" "default_bundle_payment" + "first_sale_date" "2014/06/18" + "item_class" "bundle" + "bundle" + { + "The Classified Coif" "1" + "The Rogue's Robe" "1" + "The Spook Specs" "1" + "The Sengoku Scorcher" "1" + "The Man in Slacks" "1" + "The Razor Cut" "1" + "The Frickin' Sweet Ninja Hood" "1" + "The Southie Shinobi" "1" + "The Red Socks" "1" + + "The Gas Guzzler" "1" + "The Smoking Skid Lid" "1" + "The Lunatic's Leathers" "1" + "Yuri's Revenge" "1" + "The Tools of the Trade" "1" + "The Joe-on-the-Go" "1" + "The Aviator Assassin" "1" + "The Sky Captain" "1" + "The Peacenik's Ponytail" "1" + "The Level Three Chin" "1" + + "The Egghead's Overalls" "1" + "The Lonesome Loafers" "1" + "Ze Ubermensch" "1" + "The Au Courant Assassin" "1" + "The Endothermic Exowear" "1" + "The Merc's Mohawk" "1" + "The Eye-Catcher" "1" + "The Medicine Manpurse" "1" + "Employee of the Mmmph" "1" + "The Frymaster" "1" + + "The Combustible Kabuto" "1" + "The Chronoscarf" "1" + "The Danger" "1" + "The Frontier Djustice" "1" + "Vive La France" "1" + "The Scoper's Smoke" "1" + "The Triggerman's Tacticals" "1" + "The Allbrero" "1" + "Seeing Double" "1" + "Six Pack Abs" "1" + + "The Pomade Prince" "1" + "The Paisley Pro" "1" + "The Argyle Ace" "1" + "Tipped Lid" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_LW_Cosmetics" + "item_description" "#TF_Bundle_LW_Cosmetics_Desc" + "image_inventory" "backpack/player/items/crafting/parts/love_and_war_cosmetics_bundle" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + + "2146" + { + "name" "Scout Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Sandman" "1" + "The Force-a-Nature" "1" + "Bonk! Atomic Punch" "1" + "Crit-a-Cola" "1" + "The Shortstop" "1" + "Mad Milk" "1" + "The Candy Cane" "1" + "The Boston Basher" "1" + "The Fan O'War" "1" + "The Soda Popper" "1" + "The Winger" "1" + "The Atomizer" "1" + "The Wrap Assassin" "1" + "Baby Face's Blaster" "1" + "Pretty Boy's Pocket Pistol" "1" + "The Flying Guillotine" "1" + "The Back Scatter" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_ScoutStarter" + "item_description" "#TF_Bundle_ScoutStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_scout" + "used_by_classes" + { + "scout" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2147" + { + "name" "Soldier Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Direct Hit" "1" + "The Equalizer" "1" + "The Buff Banner" "1" + "The Gunboats" "1" + "The Battalion's Backup" "1" + "The Black Box" "1" + "The Concheror" "1" + "The Half-Zatoichi" "1" + "The Liberty Launcher" "1" + "The Market Gardener" "1" + "The Cow Mangler 5000" "1" + "The Righteous Bison" "1" + "The Mantreads" "1" + "The Disciplinary Action" "1" + "The Original" "1" + "The Beggar's Bazooka" "1" + "The Air Strike" "1" + "Rocket Jumper" "1" + "The Reserve Shooter" "1" + "Panic Attack Shotgun" "1" + "The B.A.S.E. Jumper" "1" + "The Escape Plan" "1" + "The Pain Train" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SoldierStarter" + "item_description" "#TF_Bundle_SoldierStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_soldier" + "used_by_classes" + { + "soldier" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2148" + { + "name" "Pyro Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Axtinguisher" "1" + "The Flare Gun" "1" + "The Backburner" "1" + "The Homewrecker" "1" + "The Powerjack" "1" + "The Degreaser" "1" + "The Back Scratcher" "1" + "The Detonator" "1" + "The Third Degree" "1" + "The Phlogistinator" "1" + "The Manmelter" "1" + "The Lollichop" "1" + "The Scorch Shot" "1" + "The Rainblower" "1" + "The Neon Annihilator" "1" + "The Reserve Shooter" "1" + "Panic Attack Shotgun" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_PyroStarter" + "item_description" "#TF_Bundle_PyroStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_pyro" + "used_by_classes" + { + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2149" + { + "name" "Demoman Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Scottish Resistance" "1" + "The Chargin' Targe" "1" + "The Eyelander" "1" + "The Scotsman's Skullcutter" "1" + "The Ullapool Caber" "1" + "The Loch-n-Load" "1" + "The Claidheamohmor" "1" + "The Persian Persuader" "1" + "Ali Baba's Wee Booties" "1" + "The Splendid Screen" "1" + "Nessie's Nine Iron" "1" + "The Bootlegger" "1" + "The Scottish Handshake" "1" + "The Tide Turner" "1" + "The Quickiebomb Launcher" "1" + "The Iron Bomber" "1" + "The Loose Cannon" "1" + "Stickybomb Jumper" "1" + "The B.A.S.E. Jumper" "1" + "The Pain Train" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_DemomanStarter" + "item_description" "#TF_Bundle_DemomanStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_demo" + "used_by_classes" + { + "demoman" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2150" + { + "name" "Heavy Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "Natascha" "1" + "The Sandvich" "1" + "The Killing Gloves of Boxing" "1" + "The Dalokohs Bar" "1" + "Warrior's Spirit" "1" + "The Buffalo Steak Sandvich" "1" + "The Brass Beast" "1" + "Fists of Steel" "1" + "Tomislav" "1" + "The Family Business" "1" + "The Eviction Notice" "1" + "The Holiday Punch" "1" + "The Huo Long Heatmaker" "1" + "Gloves of Running Urgently" "1" + "Panic Attack Shotgun" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_HeavyStarter" + "item_description" "#TF_Bundle_HeavyStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_heavy" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2151" + { + "name" "Engineer Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Wrangler" "1" + "The Frontier Justice" "1" + "The Gunslinger" "1" + "The Southern Hospitality" "1" + "The Jag" "1" + "The WidowMaker" "1" + "The Short Circuit" "1" + "The Pomson 6000" "1" + "The Eureka Effect" "1" + "The Rescue Ranger" "1" + "Panic Attack Shotgun" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_EngineerStarter" + "item_description" "#TF_Bundle_EngineerStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_engy" + "used_by_classes" + { + "engineer" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2152" + { + "name" "Medic Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Kritzkrieg" "1" + "The Blutsauger" "1" + "The Ubersaw" "1" + "The Vita-Saw" "1" + "The Amputator" "1" + "The Crusader's Crossbow" "1" + "The Quick-Fix" "1" + "The Overdose" "1" + "The Solemn Vow" "1" + "The Vaccinator" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MedicStarter" + "item_description" "#TF_Bundle_MedicStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_medic" + "used_by_classes" + { + "medic" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2153" + { + "name" "Sniper Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Huntsman" "1" + "The Razorback" "1" + "Jarate" "1" + "The Tribalman's Shiv" "1" + "The Sydney Sleeper" "1" + "Darwin's Danger Shield" "1" + "The Bushwacka" "1" + "The Shahanshah" "1" + "The Bazaar Bargain" "1" + "The Machina" "1" + "The Cozy Camper" "1" + "The Cleaner's Carbine" "1" + "The Hitman's Heatmaker" "1" + "The Classic" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SniperStarter" + "item_description" "#TF_Bundle_SniperStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_sniper" + "used_by_classes" + { + "sniper" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2154" + { + "name" "Spy Starter Bundle v2" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/17" + "item_class" "bundle" + "bundle" + { + "The Dead Ringer" "1" + "The Cloak and Dagger" "1" + "The Ambassador" "1" + "L'Etranger" "1" + "Your Eternal Reward" "1" + "Conniver's Kunai" "1" + "The Enforcer" "1" + "The Big Earner" "1" + "The Diamondback" "1" + "The Spy-cicle" "1" + "The Red-Tape Recorder" "1" + "Name Tag" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_SpyStarter" + "item_description" "#TF_Bundle_SpyStarter_Desc" + "image_inventory" "backpack/player/items/crafting/weapon_bundle_spy" + "used_by_classes" + { + "spy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2155" + { + "name" "Map Token Bundle 11" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/06/15" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2156" + { + "name" "Map Token Bundle 12" + "prefab" "default_bundle_payment" + "first_sale_date" "2016/10/19" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2157" + { + "name" "Yogscast Jingle Jam 2016 Promo" + "item_class" "bundle" + "bundle" + { + "Hannah's Altruistic Aspect" "1" + "Duncan's Kindhearted Kisser" "1" + "Sips' Selfless Simulacrum" "1" + "Sjin's Generous Guise" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_JingleJam_Community_Event_2016_Promo" + "item_description" "#TF_JingleJam_Community_Event_2016_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2158" + { + "name" "ChefSteps Joule Promo" + "item_class" "bundle" + "bundle" + { + "Taunt: The Boiling Point" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_ChefStepsJoulePromo" + "item_description" "#TF_ChefStepsJoulePromo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "heavy" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2159" + { + "name" "Team Fortress 2 Soundtrack Promo" + "item_class" "bundle" + "bundle" + { + "Team Fortress 2 Soundtrack Promo Package" "1" + "Store Purchase Promotion Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_TeamFortress2_Soundtrack_Promo" + "item_description" "#TF_TeamFortress2_Soundtrack_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2160" + { + "name" "Map Token Bundle 13" + "prefab" "default_bundle_payment" + "first_sale_date" "2017/09/13" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2161" + { + "name" "Yogscast Jingle Jam 2017 Promo" + "item_class" "bundle" + "bundle" + { + "Mandrew's Munificent Mug" "1" + "Israphel's Eleemosynary Expression" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_JingleJam_Community_Event_2017_Promo" + "item_description" "#TF_JingleJam_Community_Event_2017_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + "attributes" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + } + } + } + "2162" + { + "name" "Map Token Bundle 14" + "prefab" "default_bundle_payment" + "first_sale_date" "2018/10/17" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2163" + { + "name" "Map Token Bundle 15" + "prefab" "default_bundle_payment" + "first_sale_date" "2019/10/08" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2164" + { + "name" "Map Token Bundle 16" + "prefab" "default_bundle_payment" + "first_sale_date" "2020/10/01" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2165" + { + "name" "Map Token Bundle 17" + "prefab" "default_bundle_payment" + "first_sale_date" "2020/12/01" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2166" + { + "name" "Map Token Bundle 18" + "prefab" "default_bundle_payment" + "first_sale_date" "2021/10/01" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2167" + { + "name" "Map Token Bundle 19" + "prefab" "default_bundle_payment" + "first_sale_date" "2021/12/01" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2168" + { + "name" "Map Token Bundle 20" + "prefab" "default_bundle_payment" + "first_sale_date" "2022/10/01" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + "Map Token Soul Mill" "1" + "Map Token Helltrain" "1" + "Map Token Bonesaw" "1" + "Map Token Crasher" "1" + "Map Token Ghoulpit" "1" + "Map Token Spookeyridge" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2169" + { + "name" "Map Token Bundle 21" + "prefab" "default_bundle_payment" + "first_sale_date" "2022/12/01" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + "Map Token Soul Mill" "1" + "Map Token Helltrain" "1" + "Map Token Bonesaw" "1" + "Map Token Crasher" "1" + "Map Token Ghoulpit" "1" + "Map Token Spookeyridge" "1" + "Map Token Frostwatch" "1" + "Map Token Frostcliff" "1" + "Map Token Rumford" "1" + "Map Token Frosty" "1" + "Map Token Coal Pit" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2170" + { + "name" "Team Fortress 2 Soundtrack Promo Untradable" + "item_class" "bundle" + "bundle" + { + "Team Fortress 2 Soundtrack Promo Package Untradable" "1" + "Store Purchase Promotion Package" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_TeamFortress2_Soundtrack_Promo" + "item_description" "#TF_TeamFortress2_Soundtrack_Promo_Desc" + "image_inventory" "backpack/player/items/crafting/mysterious_promo" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "used_by_classes" + { + "scout" "1" + "sniper" "1" + "soldier" "1" + "demoman" "1" + "medic" "1" + "heavy" "1" + "spy" "1" + "engineer" "1" + "pyro" "1" + } + "mouse_pressed_sound" "ui/item_bag_pickup.wav" + "drop_sound" "ui/item_bag_drop.wav" + } + "2171" + { + "name" "Map Token Bundle 22" + "prefab" "default_bundle_payment" + "first_sale_date" "2023/07/10" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + "Map Token Soul Mill" "1" + "Map Token Helltrain" "1" + "Map Token Bonesaw" "1" + "Map Token Crasher" "1" + "Map Token Ghoulpit" "1" + "Map Token Spookeyridge" "1" + "Map Token Frostwatch" "1" + "Map Token Frostcliff" "1" + "Map Token Rumford" "1" + "Map Token Frosty" "1" + "Map Token Coal Pit" "1" + "Map Token Sharkbay" "1" + "Map Token Rotunda" "1" + "Map Token Phoenix" "1" + "Map Token Cashworks" "1" + "Map Token Venice" "1" + "Map Token Reckoner" "1" + "Map Token Sulfur" "1" + "Map Token Hardwood" "1" + "Map Token Pelican Peak" "1" + "Map Token Selbyen" "1" + "Map Token VSH Tiny Rock" "1" + "Map Token VSH Distillery" "1" + "Map Token VSH Skirmish" "1" + "Map Token VSH Nucleus" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2172" + { + "name" "Map Token Bundle 23" + "prefab" "default_bundle_payment" + "first_sale_date" "2023/10/03" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + "Map Token Soul Mill" "1" + "Map Token Helltrain" "1" + "Map Token Bonesaw" "1" + "Map Token Crasher" "1" + "Map Token Ghoulpit" "1" + "Map Token Spookeyridge" "1" + "Map Token Frostwatch" "1" + "Map Token Frostcliff" "1" + "Map Token Rumford" "1" + "Map Token Frosty" "1" + "Map Token Coal Pit" "1" + "Map Token Sharkbay" "1" + "Map Token Rotunda" "1" + "Map Token Phoenix" "1" + "Map Token Cashworks" "1" + "Map Token Venice" "1" + "Map Token Reckoner" "1" + "Map Token Sulfur" "1" + "Map Token Hardwood" "1" + "Map Token Pelican Peak" "1" + "Map Token Selbyen" "1" + "Map Token VSH Tiny Rock" "1" + "Map Token VSH Distillery" "1" + "Map Token VSH Skirmish" "1" + "Map Token VSH Nucleus" "1" + "Map Token Perks" "1" + "Map Token Slime" "1" + "Map Token Lava Pit" "1" + "Map Token Mannsylvania" "1" + "Map Token Sandcastle" "1" + "Map Token Spineyard" "1" + "Map Token Corruption" "1" + "Map Token Murky" "1" + "Map Token Atoll" "1" + "Map Token Woods" "1" + "Map Token Sanitarium" "1" + "Map Token Devastation" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2173" + { + "name" "Map Token Bundle 24" + "prefab" "default_bundle_payment" + "first_sale_date" "2023/12/03" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + "Map Token Soul Mill" "1" + "Map Token Helltrain" "1" + "Map Token Bonesaw" "1" + "Map Token Crasher" "1" + "Map Token Ghoulpit" "1" + "Map Token Spookeyridge" "1" + "Map Token Frostwatch" "1" + "Map Token Frostcliff" "1" + "Map Token Rumford" "1" + "Map Token Frosty" "1" + "Map Token Coal Pit" "1" + "Map Token Sharkbay" "1" + "Map Token Rotunda" "1" + "Map Token Phoenix" "1" + "Map Token Cashworks" "1" + "Map Token Venice" "1" + "Map Token Reckoner" "1" + "Map Token Sulfur" "1" + "Map Token Hardwood" "1" + "Map Token Pelican Peak" "1" + "Map Token Selbyen" "1" + "Map Token VSH Tiny Rock" "1" + "Map Token VSH Distillery" "1" + "Map Token VSH Skirmish" "1" + "Map Token VSH Nucleus" "1" + "Map Token Perks" "1" + "Map Token Slime" "1" + "Map Token Lava Pit" "1" + "Map Token Mannsylvania" "1" + "Map Token Sandcastle" "1" + "Map Token Spineyard" "1" + "Map Token Corruption" "1" + "Map Token Murky" "1" + "Map Token Atoll" "1" + "Map Token Woods" "1" + "Map Token Sanitarium" "1" + "Map Token Devastation" "1" + "Map Token Snowtower" "1" + "Map Token Krampus" "1" + "Map Token Haarp" "1" + "Map Token Brew" "1" + "Map Token Hacksaw" "1" + "Map Token Turbine Event" "1" + "Map Token Carrier" "1" + "Map Token Galleria" "1" + "Map Token Emerge" "1" + "Map Token Camber" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + "2174" + { + "name" "Map Token Bundle 25" + "prefab" "default_bundle_payment" + "first_sale_date" "2024/07/17" + "item_class" "bundle" + "capabilities" + { + "can_craft_if_purchased" "1" + } + "bundle" + { + "Map Token Egypt" "1" + "Map Token Coldfront" "1" + "Map Token Fastlane" "1" + "Map Token Turbine" "1" + "Map Token Steel" "1" + "Map Token Junction" "1" + "Map Token Watchtower" "1" + "Map Token Hoodoo" "1" + "Map Token Offblast" "1" + "Map Token Yukon" "1" + "Map Token Harvest" "1" + "Map Token Freight" "1" + "Map Token Mountain Lab" "1" + "Map Token Manor Event" "1" + "Map Token Nightfall" "1" + "Map Token Frontier" "1" + "Map Token Lakeside" "1" + "Map Token Gullywash" "1" + "Map Token Kong King" "1" + "Map Token Process" "1" + "Map Token Standin" "1" + "Map Token Snakewater" "1" + "Map Token Snowplow" "1" + "Map Token Borneo" "1" + "Map Token Suijin" "1" + "Map Token 2Fort Invasion" "1" + "Map Token Probed" "1" + "Map Token Watergate" "1" + "Map Token Byre" "1" + "Map Token Gorge Event" "1" + "Map Token Sunshine Event" "1" + "Map Token Moonshine Event" "1" + "Map Token Millstone Event" "1" + "Map Token Snowycoast" "1" + "Map Token Vanguard" "1" + "Map Token Landfall" "1" + "Map Token Highpass" "1" + "Map Token Sunshine" "1" + "Map Token Metalworks" "1" + "Map Token Swiftwater" "1" + "Map Token Maple Ridge Event" "1" + "Map Token Fifth Curve Event" "1" + "Map Token Pit Of Death" "1" + "Map Token Mossrock" "1" + "Map Token Lazarus" "1" + "Map Token Banana Bay" "1" + "Map Token Enclosure" "1" + "Map Token Brazil" "1" + "Map Token Bagel Event" "1" + "Map Token Rumble Event" "1" + "Map Token Monster Bash" "1" + "Map Token Slasher" "1" + "Map Token Cursed Cove" "1" + "Map Token Laughter" "1" + "Map Token Precipice" "1" + "Map Token Megalo" "1" + "Map Token Hassle Castle" "1" + "Map Token Bloodwater" "1" + "Map Token Undergrove Event" "1" + "Map Token Pier" "1" + "Map Token SnowVille" "1" + "Map Token Snowfall" "1" + "Map Token Wutville" "1" + "Map Token Farmageddon" "1" + "Map Token Los Muertos" "1" + "Map Token Erebus" "1" + "Map Token Terror" "1" + "Map Token Graveyard" "1" + "Map Token Sinthetic" "1" + "Map Token Polar" "1" + "Map Token Bread Space" "1" + "Map Token Chilly" "1" + "Map Token Cascade" "1" + "Map Token Altitude" "1" + "Map Token Doublefrost" "1" + "Map Token Soul Mill" "1" + "Map Token Helltrain" "1" + "Map Token Bonesaw" "1" + "Map Token Crasher" "1" + "Map Token Ghoulpit" "1" + "Map Token Spookeyridge" "1" + "Map Token Frostwatch" "1" + "Map Token Frostcliff" "1" + "Map Token Rumford" "1" + "Map Token Frosty" "1" + "Map Token Coal Pit" "1" + "Map Token Sharkbay" "1" + "Map Token Rotunda" "1" + "Map Token Phoenix" "1" + "Map Token Cashworks" "1" + "Map Token Venice" "1" + "Map Token Reckoner" "1" + "Map Token Sulfur" "1" + "Map Token Hardwood" "1" + "Map Token Pelican Peak" "1" + "Map Token Selbyen" "1" + "Map Token VSH Tiny Rock" "1" + "Map Token VSH Distillery" "1" + "Map Token VSH Skirmish" "1" + "Map Token VSH Nucleus" "1" + "Map Token Perks" "1" + "Map Token Slime" "1" + "Map Token Lava Pit" "1" + "Map Token Mannsylvania" "1" + "Map Token Sandcastle" "1" + "Map Token Spineyard" "1" + "Map Token Corruption" "1" + "Map Token Murky" "1" + "Map Token Atoll" "1" + "Map Token Woods" "1" + "Map Token Sanitarium" "1" + "Map Token Devastation" "1" + "Map Token Snowtower" "1" + "Map Token Krampus" "1" + "Map Token Haarp" "1" + "Map Token Brew" "1" + "Map Token Hacksaw" "1" + "Map Token Turbine Event" "1" + "Map Token Carrier" "1" + "Map Token Galleria" "1" + "Map Token Emerge" "1" + "Map Token Camber" "1" + "Map Token Embargo" "1" + "Map Token Odyssey" "1" + "Map Token Megaton" "1" + "Map Token Cachoeira" "1" + "Map Token Overgrown" "1" + "Map Token Hadal" "1" + "Map Token Applejack" "1" + "Map Token Atom Smash" "1" + "Map Token Canaveral" "1" + "Map Token Burghausen" "1" + } + "item_type_name" "#TF_StoreBundle" + "item_name" "#TF_Bundle_MapTokens" + "item_description" "#TF_Bundle_MapTokens_Desc" + "image_inventory" "backpack/player/items/all_class/stamp_collection" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "item_quality" "unique" + "min_ilevel" "50" + "max_ilevel" "50" + "mouse_pressed_sound" "ui/item_paper_pickup.wav" + "drop_sound" "ui/item_paper_pickup.wav" + } + + + + + "8900" + { + "name" "Halloween Spell: Paint 1" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__cap_paintable" "1" + } + "attributes" + { + "SPELL: set item tint RGB" "2" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "65280" + } + } + "item_name" "#TF_HalloweenSpell_Paint_1" + "item_description" "#TF_HalloweenSpell_Paint_1_Desc" + } + "8901" + { + "name" "Halloween Spell: Paint 2" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__cap_paintable" "1" + } + "attributes" + { + "SPELL: set item tint RGB" "0" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "255" + } + } + "item_name" "#TF_HalloweenSpell_Paint_2" + "item_description" "#TF_HalloweenSpell_Paint_2_Desc" + } + "8902" + { + "name" "Halloween Spell: Paint 3" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__cap_paintable" "1" + } + "attributes" + { + "SPELL: set item tint RGB" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16711680" + } + } + "item_name" "#TF_HalloweenSpell_Paint_3" + "item_description" "#TF_HalloweenSpell_Paint_3_Desc" + } + "8903" + { + "name" "Halloween Spell: Paint 4" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__cap_paintable" "1" + } + "attributes" + { + "SPELL: set item tint RGB" "3" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16744192" + } + } + "item_name" "#TF_HalloweenSpell_Paint_4" + "item_description" "#TF_HalloweenSpell_Paint_4_Desc" + } + "8904" + { + "name" "Halloween Spell: Paint 5" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__cap_paintable" "1" + } + "attributes" + { + "SPELL: set item tint RGB" "4" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16776960" + } + } + "item_name" "#TF_HalloweenSpell_Paint_5" + "item_description" "#TF_HalloweenSpell_Paint_5_Desc" + } + + "8905" + { + "name" "Halloween Spell: Soldier Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_soldier" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16711680" + } + } + "item_name" "#TF_HalloweenSpell_VoiceSoldier" + "item_description" "#TF_HalloweenSpell_VoiceSoldier_Desc" + } + "8906" + { + "name" "Halloween Spell: Scout Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_scout" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "65280" + } + } + "item_name" "#TF_HalloweenSpell_VoiceScout" + "item_description" "#TF_HalloweenSpell_VoiceScout_Desc" + } + "8907" + { + "name" "Halloween Spell: Sniper Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_sniper" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "255" + } + } + "item_name" "#TF_HalloweenSpell_VoiceSniper" + "item_description" "#TF_HalloweenSpell_VoiceSniper_Desc" + } + "8908" + { + "name" "Halloween Spell: Engineer Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_engineer" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16776960" + } + } + "item_name" "#TF_HalloweenSpell_VoiceEngineer" + "item_description" "#TF_HalloweenSpell_VoiceEngineer_Desc" + } + "8909" + { + "name" "Halloween Spell: Heavy Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_heavy" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16711935" + } + } + "item_name" "#TF_HalloweenSpell_VoiceHeavy" + "item_description" "#TF_HalloweenSpell_VoiceHeavy_Desc" + } + "8910" + { + "name" "Halloween Spell: Demoman Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_demoman" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "65535" + } + } + "item_name" "#TF_HalloweenSpell_VoiceDemo" + "item_description" "#TF_HalloweenSpell_VoiceDemo_Desc" + } + "8911" + { + "name" "Halloween Spell: Pyro Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_pyro" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16742399" + } + } + "item_name" "#TF_HalloweenSpell_VoicePyro" + "item_description" "#TF_HalloweenSpell_VoicePyro_Desc" + } + "8912" + { + "name" "Halloween Spell: Spy Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_spy" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "13421772" + } + } + "item_name" "#TF_HalloweenSpell_VoiceSpy" + "item_description" "#TF_HalloweenSpell_VoiceSpy_Desc" + } + "8913" + { + "name" "Halloween Spell: Medic Voice" + "prefab" "voice_spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_medic" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16737280" + } + } + "item_name" "#TF_HalloweenSpell_VoiceMedic" + "item_description" "#TF_HalloweenSpell_VoiceMedic_Desc" + } + + "8914" + { + "name" "Halloween Spell: Team Spirit Footprints" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "14540032" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_1" + "item_description" "#TF_HalloweenSpell_Footprints_1_Desc" + } + "8915" + { + "name" "Halloween Spell: Gangreen Footprints" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "8421376" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "39168" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_8421376" + "item_description" "#TF_HalloweenSpell_Footprints_8421376_Desc" + } + "8916" + { + "name" "Halloween Spell: Corpse Gray Footprints" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "3100495" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "3100495" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_3100495" + "item_description" "#TF_HalloweenSpell_Footprints_3100495_Desc" + } + "8917" + { + "name" "Halloween Spell: Violent Violet Footprints" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "5322826" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16742399" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_5322826" + "item_description" "#TF_HalloweenSpell_Footprints_5322826_Desc" + } + "8918" + { + "name" "Halloween Spell: Rotten Orange Footprints" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "13595446" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16737280" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_13595446" + "item_description" "#TF_HalloweenSpell_Footprints_13595446_Desc" + } + "8919" + { + "name" "Halloween Spell: Bruised Purple Footprints" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "8208497" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "2490623" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_8208497" + "item_description" "#TF_HalloweenSpell_Footprints_8208497_Desc" + } + "8920" + { + "name" "Halloween Spell: Headless Horseshoes" + "prefab" "spell_base_footprints" + "tool" + { + "usage" + { + "attributes" + { + "SPELL: set Halloween footstep type" "2" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "9109759" + } + } + "item_name" "#TF_HalloweenSpell_Footprints_2" + "item_description" "#TF_HalloweenSpell_Footprints_2_Desc" + } + "8921" + { + "name" "Halloween Spell: Exorcism" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "can_deal_damage" "1" + } + "attributes" + { + "SPELL: Halloween death ghosts" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "13369344" + } + } + "item_name" "#TF_HalloweenSpell_DeathGhosts_1" + "item_description" "#TF_HalloweenSpell_DeathGhosts_1_Desc" + "image_inventory" "backpack/player/items/crafting/flask_vial" + "image_inventory_overlay" "backpack/player/items/crafting/flask_vial_paintcolor" + } + "8922" + { + "name" "Halloween Spell: Squash Rockets" + "prefab" "spell_base_pumpkinbombs" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_soldier" "1" + "can_deal_gib_damage" "1" + } + "attributes" + { + "SPELL: Halloween pumpkin explosions" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "12517631" + } + } + "item_name" "#TF_HalloweenSpell_PumpkinRockets" + "item_description" "#TF_HalloweenSpell_PumpkinRockets_Desc" + } + "8923" + { + "name" "Halloween Spell: Gourd Grenades" + "prefab" "spell_base_pumpkinbombs" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_demoman" "1" + "can_deal_gib_damage" "1" + } + "attributes" + { + "SPELL: Halloween pumpkin explosions" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "16741656" + } + } + "item_name" "#TF_HalloweenSpell_PumpkinGrenades" + "item_description" "#TF_HalloweenSpell_PumpkinGrenades_Desc" + } + "8924" + { + "name" "Halloween Spell: Sentry Quad-Pumpkins" + "prefab" "spell_base_pumpkinbombs" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_engineer" "1" + "auto__slot_melee" "1" + } + "attributes" + { + "SPELL: Halloween pumpkin explosions" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "205" + } + } + "item_name" "#TF_HalloweenSpell_PumpkinSentryRockets" + "item_description" "#TF_HalloweenSpell_PumpkinSentryRockets_Desc" + } + "8925" + { + "name" "Halloween Spell: Spectral Flame" + "prefab" "spell_base" + "tool" + { + "usage" + { + "required_tags" + { + "auto__class_pyro" "1" + "auto__slot_primary" "1" + "is_flamethrower" "1" + } + "attributes" + { + "SPELL: Halloween green flames" "1" + } + } + } + "attributes" + { + "set item tint RGB" + { + "attribute_class" "set_item_tint_rgb" + "value" "3329330" + } + } + "item_name" "#TF_HalloweenSpell_PyroFire_1" + "item_description" "#TF_HalloweenSpell_PyroFire_1_Desc" + "image_inventory" "backpack/player/items/crafting/flask_tube" + "image_inventory_overlay" "backpack/player/items/crafting/flask_tube_paintcolor" + } + + + + + + "20000" + { + "name" "Cosmetic Strangifier Recipe 1" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + "counts" + { + "1-3" "10" + "3-5" "100" + "5-10" "10" + } + } + "1" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "2" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "3" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "4" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "5" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + "counts" + { + "1-2" "1" + } + } + "6" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + "counts" + { + "1-2" "1" + } + } + "7" + { + "lootlist_name" "all_strange_weapons__no_festives" + "quality" "strange" + } + } + + } + } + } + "attributes" + { + "series number" + { + "attribute_class" "series_number" + "value" "1" + } + } + } + + "20001" + { + "name" "Cosmetic Strangifier Recipe 1 Rare" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "1" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "2" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "3" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "4" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "5" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "6" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "7" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + "8" + { + "lootlist_name" "all_particle_hats" + "quality" "unique" + "counts" + { + "2" "1" + } + } + } + + } + } + } + } + + "20002" + { + "name" "MvM Killstreak Recipe 1" + "prefab" "mvm_killstreak_recipe_base" + "item_name" "#TF_MvM_Killstreak_Recipe_1" + "image_inventory" "backpack/crafting/professional_kit" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "no_item_def" "1" + "quality" "unique" + "attributes_matching_type" "all" + "attributes" + { + "killstreak tier" "1" + } + "counts" + { + "1" "10" + } + } + + "1" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "8" "100" + } + } + "2" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "5" "100" + } + } + "3" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "4" "100" + } + } + "4" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "4" "100" + } + } + "5" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "3" "100" + } + } + + "6" + { + "lootlist_name" "mvm_robits_medium" + "quality" "unique" + "counts" + { + "2" "100" + } + } + "7" + { + "lootlist_name" "mvm_robits_medium" + "quality" "unique" + "counts" + { + "2" "100" + } + } + "8" + { + "lootlist_name" "mvm_robits_medium" + "quality" "unique" + "counts" + { + "1" "10" + } + } + } + + } + } + } + } + + "20003" + { + "name" "MvM Killstreak Recipe 2" + "prefab" "mvm_killstreak_recipe_base" + "item_name" "#TF_MvM_Killstreak_Recipe_2" + "image_inventory" "backpack/crafting/professional_kit_rare" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "no_item_def" "1" + "quality" "unique" + "attributes_matching_type" "all" + "attributes" + { + "killstreak tier" "2" + } + "counts" + { + "2" "10" + } + } + + "1" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "7" "100" + } + } + "2" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "6" "100" + } + } + "3" + { + "lootlist_name" "mvm_robits_common" + "quality" "unique" + "counts" + { + "3" "100" + } + } + + "4" + { + "lootlist_name" "mvm_robits_medium" + "quality" "unique" + "counts" + { + "3" "100" + } + } + "5" + { + "lootlist_name" "mvm_robits_medium" + "quality" "unique" + "counts" + { + "2" "100" + } + } + "6" + { + "lootlist_name" "mvm_robits_medium" + "quality" "unique" + "counts" + { + "1" "100" + } + } + + "7" + { + "lootlist_name" "mvm_robits_rare" + "quality" "unique" + "counts" + { + "2" "10" + } + } + "8" + { + "lootlist_name" "mvm_robits_rare" + "quality" "unique" + "counts" + { + "1" "10" + } + } + } + + } + } + } + } + + "20005" + { + "name" "Cosmetic Strangifier Recipe 2" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + "counts" + { + "1-3" "10" + "3-5" "100" + "5-10" "10" + } + } + "1" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "2" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "3" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "4" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + } + "5" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + "counts" + { + "1-2" "1" + } + } + "6" + { + "lootlist_name" "timed_reward_drop" + "quality" "unique" + "counts" + { + "1-2" "1" + } + } + "7" + { + "lootlist_name" "all_strange_weapons__no_festives" + "quality" "strange" + } + } + + } + } + } + "attributes" + { + "series number" + { + "attribute_class" "series_number" + "value" "2" + } + } + } + + "20006" + { + "name" "Collector Recipe 1" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "tool" + { + "usage" + { + "components" + { + } + } + } + } + + "20007" + { + "name" "Festive Collector Recipe 2013" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "tool" + { + "usage" + { + "components" + { + } + } + } + } + + "20008" + { + "name" "Rebuild Strange Weapon Recipe" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "lootlist_name" "all_strange_weapons__no_festives" + "quality" "strange" + } + "1" + { + "lootlist_name" "all_strange_weapons__no_festives" + "quality" "strange" + } + "2" + { + "lootlist_name" "all_strange_weapons__no_festives" + "quality" "strange" + } + } + + } + } + } + } + + "20009" + { + "name" "Cosmetic Strangifier Recipe 3" + "prefab" "dynamic_recipe_base" + "item_name" "#TF_Cosmetic_Strangifier_Recipe" + "min_ilevel" "3" + "max_ilevel" "3" + "expiration_date" "2014-04-22 06:00:00" + "tool" + { + "usage" + { + "components" + { + "input" + { + "0" + { + "item_name" "Craft Bar Level 3" + "quality" "unique" + "counts" + { + "3" "1" + } + } + + "1" + { + "no_item_def" "1" + "quality" "strange" + "counts" + { + "3" "1" + } + } + } + + } + } + } + "attributes" + { + "series number" + { + "attribute_class" "series_number" + "value" "3" + } + "recipe no partial complete" + { + "attribute_class" "recipe_no_partial_complete" + "value" "1" + } + } + } + + + + + } + "attributes" + { + + "1" + { + "name" "damage penalty" + "attribute_class" "mult_dmg" + "description_string" "#Attrib_DamageDone_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "2" + { + "name" "damage bonus" + "attribute_class" "mult_dmg" + "description_string" "#Attrib_DamageDone_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "3" + { + "name" "clip size penalty" + "attribute_class" "mult_clipsize" + "description_string" "#Attrib_ClipSize_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "4" + { + "name" "clip size bonus" + "attribute_class" "mult_clipsize" + "description_string" "#Attrib_ClipSize_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "5" + { + "name" "fire rate penalty" + "attribute_class" "mult_postfiredelay" + "description_string" "#Attrib_FireRate_Negative" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "6" + { + "name" "fire rate bonus" + "attribute_class" "mult_postfiredelay" + "description_string" "#Attrib_FireRate_Positive" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "7" + { + "name" "heal rate penalty" + "attribute_class" "mult_medigun_healrate" + "description_string" "#Attrib_HealRate_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "8" + { + "name" "heal rate bonus" + "attribute_class" "mult_medigun_healrate" + "description_string" "#Attrib_HealRate_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "9" + { + "name" "ubercharge rate penalty" + "attribute_class" "mult_medigun_uberchargerate" + "description_string" "#Attrib_UberchargeRate_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "10" + { + "name" "ubercharge rate bonus" + "attribute_class" "mult_medigun_uberchargerate" + "description_string" "#Attrib_UberchargeRate_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "11" + { + "name" "overheal bonus" + "attribute_class" "mult_medigun_overheal_amount" + "description_string" "#Attrib_OverhealAmount_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "12" + { + "name" "overheal decay penalty" + "attribute_class" "mult_medigun_overheal_decay" + "description_string" "#Attrib_OverhealDecay_Negative" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "13" + { + "name" "overheal decay bonus" + "attribute_class" "mult_medigun_overheal_decay" + "description_string" "#Attrib_OverhealDecay_Positive" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "14" + { + "name" "overheal decay disabled" + "attribute_class" "mult_medigun_overheal_decay" + "description_string" "#Attrib_OverhealDecay_Disabled" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "15" + { + "name" "crit mod disabled" + "attribute_class" "mult_crit_chance" + "description_string" "#Attrib_CritChance_Disabled" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "no_crits" + "stored_as_integer" "0" + } + "16" + { + "name" "heal on hit for rapidfire" + "attribute_class" "add_onhit_addhealth" + "description_string" "#Attrib_HealOnHit_Positive" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "17" + { + "name" "add uber charge on hit" + "attribute_class" "add_onhit_ubercharge" + "description_string" "#Attrib_AddUber_OnHit_Positive" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "18" + { + "name" "medigun charge is crit boost" + "attribute_class" "set_charge_type" + "description_string" "#Attrib_Medigun_CritBoost" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "19" + { + "name" "tmp dmgbuff on hit" + "attribute_class" "addperc_ondmgdone_tmpbuff" + "description_string" "#Attrib_DamageDoneBonus_Positive" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "20" + { + "name" "crit vs burning players" + "attribute_class" "or_crit_vs_playercond" + "description_string" "#Attrib_CritVsBurning" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "21" + { + "name" "dmg penalty vs nonburning" + "attribute_class" "mult_dmg_vs_nonburning" + "description_string" "#Attrib_DmgPenaltyVsNonBurning" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "22" + { + "name" "no crit vs nonburning" + "attribute_class" "set_nocrit_vs_nonburning" + "description_string" "#Attrib_NoCritVsNonBurning" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "23" + { + "name" "mod flamethrower push" + "attribute_class" "set_flamethrower_push_disabled" + "description_string" "#Attrib_ModFlamethrowerPush" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "24" + { + "name" "mod flamethrower back crit" + "attribute_class" "set_flamethrower_back_crit" + "description_string" "#Attrib_ModFlamethrower_BackCrits" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "25" + { + "name" "hidden secondary max ammo penalty" + "attribute_class" "mult_maxammo_secondary" + "description_string" "unused" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "26" + { + "name" "max health additive bonus" + "attribute_class" "add_maxhealth" + "description_string" "#Attrib_MaxHealth_Positive" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "27" + { + "name" "alt-fire disabled" + "attribute_class" "unimplemented_altfire_disabled" + "description_string" "#Attrib_AltFire_Disabled" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "28" + { + "name" "crit mod disabled hidden" + "attribute_class" "mult_crit_chance" + "description_string" "#Attrib_CritChance_Disabled" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "30" + { + "name" "fists have radial buff" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_FistsHaveRadialBuff" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "31" + { + "name" "critboost on kill" + "attribute_class" "add_onkill_critboost_time" + "description_string" "#Attrib_CritBoost_OnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_kill" + "stored_as_integer" "0" + } + "32" + { + "name" "slow enemy on hit" + "attribute_class" "mult_onhit_enemyspeed" + "description_string" "#Attrib_Slow_Enemy_OnHit" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "33" + { + "name" "set cloak is feign death" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_CloakIsFeignDeath" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "armory_desc" "cloak_type" + "stored_as_integer" "0" + } + "34" + { + "name" "mult cloak meter consume rate" + "attribute_class" "mult_cloak_meter_consume_rate" + "description_string" "#Attrib_CloakMeterConsumeRate" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "35" + { + "name" "mult cloak meter regen rate" + "attribute_class" "mult_cloak_meter_regen_rate" + "description_string" "#Attrib_CloakMeterRegenRate" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "36" + { + "name" "spread penalty" + "attribute_class" "mult_spread_scale" + "description_string" "#Attrib_Spread_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "37" + { + "name" "hidden primary max ammo bonus" + "attribute_class" "mult_maxammo_primary" + "description_string" "unused" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "38" + { + "name" "mod bat launches balls" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_BatLaunchesBalls" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "39" + { + "name" "dmg penalty vs nonstunned" + "attribute_class" "unimplemented_mod_dmg_vs_nonstunned" + "description_string" "#Attrib_DmgPenaltyVsNonStunned" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "40" + { + "name" "zoom speed mod disabled" + "attribute_class" "unimplemented_mod_zoom_speed_disabled" + "description_string" "#Attrib_ZoomSpeedMod_Disabled" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "41" + { + "name" "sniper charge per sec" + "attribute_class" "mult_sniper_charge_per_sec" + "description_string" "#Attrib_SniperCharge_Per_Sec" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "42" + { + "name" "sniper no headshots" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_SniperNoHeadshots" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "43" + { + "name" "scattergun no reload single" + "attribute_class" "set_scattergun_no_reload_single" + "description_string" "#Attrib_Scattergun_NoReloadSingle" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "44" + { + "name" "scattergun has knockback" + "attribute_class" "set_scattergun_has_knockback" + "description_string" "#Attrib_Scattergun_HasKnockback" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "45" + { + "name" "bullets per shot bonus" + "attribute_class" "mult_bullets_per_shot" + "description_string" "#Attrib_BulletsPerShot_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "46" + { + "name" "sniper zoom penalty" + "attribute_class" "mult_zoom_fov" + "description_string" "#Attrib_SniperZoom_Penalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "47" + { + "name" "sniper no charge" + "attribute_class" "unimplemented_mod_sniper_no_charge" + "description_string" "#Attrib_SniperNoCharge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "48" + { + "name" "set cloak is movement based" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_CloakIsMovementBased" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "armory_desc" "cloak_type" + "stored_as_integer" "0" + } + "49" + { + "name" "no double jump" + "attribute_class" "set_scout_doublejump_disabled" + "description_string" "#Attrib_NoDoubleJump" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "50" + { + "name" "absorb damage while cloaked" + "attribute_class" "unimplemented_absorb_dmg_while_cloaked" + "description_string" "#Attrib_AbsorbDmgWhileCloaked" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "51" + { + "name" "revolver use hit locations" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_RevolverUseHitLocations" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "52" + { + "name" "backstab shield" + "attribute_class" "set_blockbackstab_once" + "description_string" "#Attrib_BackstabShield" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "53" + { + "name" "fire retardant" + "attribute_class" "set_fire_retardant" + "description_string" "#Attrib_FireRetardant" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "54" + { + "name" "move speed penalty" + "attribute_class" "mult_player_movespeed" + "description_string" "#Attrib_MoveSpeed_Penalty" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "55" + { + "name" "obsolete ammo penalty" + "attribute_class" "obsolete" + "description_string" "unused" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "56" + { + "name" "jarate description" + "attribute_class" "desc_jarate_description" + "description_string" "#Attrib_Jarate_Description" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "57" + { + "name" "health regen" + "attribute_class" "add_health_regen" + "description_string" "#Attrib_HealthRegen" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "58" + { + "name" "self dmg push force increased" + "attribute_class" "mult_dmgself_push_force" + "description_string" "#Attrib_SelfDmgPush_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "59" + { + "name" "self dmg push force decreased" + "attribute_class" "mult_dmgself_push_force" + "description_string" "#Attrib_SelfDmgPush_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "60" + { + "name" "dmg taken from fire reduced" + "attribute_class" "mult_dmgtaken_from_fire" + "description_string" "#Attrib_DmgTaken_From_Fire_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "61" + { + "name" "dmg taken from fire increased" + "attribute_class" "mult_dmgtaken_from_fire" + "description_string" "#Attrib_DmgTaken_From_Fire_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "62" + { + "name" "dmg taken from crit reduced" + "attribute_class" "mult_dmgtaken_from_crit" + "description_string" "#Attrib_DmgTaken_From_Crit_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "63" + { + "name" "dmg taken from crit increased" + "attribute_class" "mult_dmgtaken_from_crit" + "description_string" "#Attrib_DmgTaken_From_Crit_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "64" + { + "name" "dmg taken from blast reduced" + "attribute_class" "mult_dmgtaken_from_explosions" + "description_string" "#Attrib_DmgTaken_From_Blast_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "65" + { + "name" "dmg taken from blast increased" + "attribute_class" "mult_dmgtaken_from_explosions" + "description_string" "#Attrib_DmgTaken_From_Blast_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "66" + { + "name" "dmg taken from bullets reduced" + "attribute_class" "mult_dmgtaken_from_bullets" + "description_string" "#Attrib_DmgTaken_From_Bullets_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "67" + { + "name" "dmg taken from bullets increased" + "attribute_class" "mult_dmgtaken_from_bullets" + "description_string" "#Attrib_DmgTaken_From_Bullets_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "68" + { + "name" "increase player capture value" + "attribute_class" "add_player_capturevalue" + "description_string" "#Attrib_CaptureValue_Increased" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "69" + { + "name" "health from healers reduced" + "attribute_class" "mult_health_fromhealers" + "description_string" "#Attrib_HealthFromHealers_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "70" + { + "name" "health from healers increased" + "attribute_class" "mult_health_fromhealers" + "description_string" "#Attrib_HealthFromHealers_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "71" + { + "name" "weapon burn dmg increased" + "attribute_class" "mult_wpn_burndmg" + "description_string" "#Attrib_WpnBurnDmg_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "72" + { + "name" "weapon burn dmg reduced" + "attribute_class" "mult_wpn_burndmg" + "description_string" "#Attrib_WpnBurnDmg_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "73" + { + "name" "weapon burn time increased" + "attribute_class" "mult_wpn_burntime" + "description_string" "#Attrib_WpnBurnTime_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "74" + { + "name" "weapon burn time reduced" + "attribute_class" "mult_wpn_burntime" + "description_string" "#Attrib_WpnBurnTime_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "75" + { + "name" "aiming movespeed increased" + "attribute_class" "mult_player_aiming_movespeed" + "description_string" "#Attrib_AimingMoveSpeed_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "76" + { + "name" "maxammo primary increased" + "attribute_class" "mult_maxammo_primary" + "description_string" "#Attrib_MaxammoPrimary_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "77" + { + "name" "maxammo primary reduced" + "attribute_class" "mult_maxammo_primary" + "description_string" "#Attrib_MaxammoPrimary_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "78" + { + "name" "maxammo secondary increased" + "attribute_class" "mult_maxammo_secondary" + "description_string" "#Attrib_MaxammoSecondary_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "79" + { + "name" "maxammo secondary reduced" + "attribute_class" "mult_maxammo_secondary" + "description_string" "#Attrib_MaxammoSecondary_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "80" + { + "name" "maxammo metal increased" + "attribute_class" "mult_maxammo_metal" + "description_string" "#Attrib_MaxammoMetal_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "81" + { + "name" "maxammo metal reduced" + "attribute_class" "mult_maxammo_metal" + "description_string" "#Attrib_MaxammoMetal_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "82" + { + "name" "cloak consume rate increased" + "attribute_class" "mult_cloak_meter_consume_rate" + "description_string" "#Attrib_CloakConsumeRate_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "83" + { + "name" "cloak consume rate decreased" + "attribute_class" "mult_cloak_meter_consume_rate" + "description_string" "#Attrib_CloakConsumeRate_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "84" + { + "name" "cloak regen rate increased" + "attribute_class" "mult_cloak_meter_regen_rate" + "description_string" "#Attrib_CloakRegenRate_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "85" + { + "name" "cloak regen rate decreased" + "attribute_class" "mult_cloak_meter_regen_rate" + "description_string" "#Attrib_CloakRegenRate_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "86" + { + "name" "minigun spinup time increased" + "attribute_class" "mult_minigun_spinup_time" + "description_string" "#Attrib_MinigunSpinup_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "87" + { + "name" "minigun spinup time decreased" + "attribute_class" "mult_minigun_spinup_time" + "description_string" "#Attrib_MinigunSpinup_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "88" + { + "name" "max pipebombs increased" + "attribute_class" "add_max_pipebombs" + "description_string" "#Attrib_MaxPipebombs_Increased" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "89" + { + "name" "max pipebombs decreased" + "attribute_class" "add_max_pipebombs" + "description_string" "#Attrib_MaxPipebombs_Decreased" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "90" + { + "name" "SRifle Charge rate increased" + "attribute_class" "mult_sniper_charge_per_sec" + "description_string" "#Attrib_SRifleChargeRate_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "91" + { + "name" "SRifle Charge rate decreased" + "attribute_class" "mult_sniper_charge_per_sec" + "description_string" "#Attrib_SRifleChargeRate_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "92" + { + "name" "Construction rate increased" + "attribute_class" "mult_construction_value" + "description_string" "#Attrib_ConstructionRate_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "93" + { + "name" "Construction rate decreased" + "attribute_class" "mult_construction_value" + "description_string" "#Attrib_ConstructionRate_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "94" + { + "name" "Repair rate increased" + "attribute_class" "mult_repair_value" + "description_string" "#Attrib_RepairRate_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "95" + { + "name" "Repair rate decreased" + "attribute_class" "mult_repair_value" + "description_string" "#Attrib_RepairRate_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "96" + { + "name" "Reload time increased" + "attribute_class" "mult_reload_time" + "description_string" "#Attrib_ReloadTime_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "97" + { + "name" "Reload time decreased" + "attribute_class" "mult_reload_time" + "description_string" "#Attrib_ReloadTime_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "98" + { + "name" "selfdmg on hit for rapidfire" + "attribute_class" "add_onhit_addhealth" + "description_string" "#Attrib_HealOnHit_Negative" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "99" + { + "name" "Blast radius increased" + "attribute_class" "mult_explosion_radius" + "description_string" "#Attrib_BlastRadius_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "100" + { + "name" "Blast radius decreased" + "attribute_class" "mult_explosion_radius" + "description_string" "#Attrib_BlastRadius_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "101" + { + "name" "Projectile range increased" + "attribute_class" "mult_projectile_range" + "description_string" "#Attrib_ProjectileRange_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "102" + { + "name" "Projectile range decreased" + "attribute_class" "mult_projectile_range" + "description_string" "#Attrib_ProjectileRange_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "103" + { + "name" "Projectile speed increased" + "attribute_class" "mult_projectile_speed" + "description_string" "#Attrib_ProjectileSpeed_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "104" + { + "name" "Projectile speed decreased" + "attribute_class" "mult_projectile_speed" + "description_string" "#Attrib_ProjectileSpeed_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "105" + { + "name" "overheal penalty" + "attribute_class" "mult_medigun_overheal_amount" + "description_string" "#Attrib_OverhealAmount_Negative" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "106" + { + "name" "weapon spread bonus" + "attribute_class" "mult_spread_scale" + "description_string" "#Attrib_Spread_Positive" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "107" + { + "name" "move speed bonus" + "attribute_class" "mult_player_movespeed" + "description_string" "#Attrib_MoveSpeed_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "108" + { + "name" "health from packs increased" + "attribute_class" "mult_health_frompacks" + "description_string" "#Attrib_HealthFromPacks_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "109" + { + "name" "health from packs decreased" + "attribute_class" "mult_health_frompacks" + "description_string" "#Attrib_HealthFromPacks_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "110" + { + "name" "heal on hit for slowfire" + "attribute_class" "add_onhit_addhealth" + "description_string" "#Attrib_HealOnHit_Positive" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "111" + { + "name" "selfdmg on hit for slowfire" + "attribute_class" "add_onhit_addhealth" + "description_string" "#Attrib_HealOnHit_Negative" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "112" + { + "name" "ammo regen" + "attribute_class" "addperc_ammo_regen" + "description_string" "#Attrib_AmmoRegen" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "113" + { + "name" "metal regen" + "attribute_class" "add_metal_regen" + "description_string" "#Attrib_MetalRegen" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "114" + { + "name" "mod mini-crit airborne" + "attribute_class" "mini_crit_airborne" + "description_string" "#Attrib_MiniCritAirborneEnemies" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "115" + { + "name" "mod shovel damage boost" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_ShovelDamageBoost" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "116" + { + "name" "mod soldier buff type" + "attribute_class" "set_buff_type" + "description_string" "#Attrib_SoldierBuffType" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "117" + { + "name" "dmg falloff increased" + "attribute_class" "mult_dmg_falloff" + "description_string" "#Attrib_Dmg_Falloff_Increased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "118" + { + "name" "dmg falloff decreased" + "attribute_class" "mult_dmg_falloff" + "description_string" "#Attrib_Dmg_Falloff_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "119" + { + "name" "sticky detonate mode" + "attribute_class" "set_detonate_mode" + "description_string" "#Attrib_StickyDetonateMode" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "120" + { + "name" "sticky arm time penalty" + "attribute_class" "sticky_arm_time" + "description_string" "#Attrib_StickyArmTimePenalty" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "121" + { + "name" "stickies detonate stickies" + "attribute_class" "stickies_detonate_stickies" + "description_string" "#Attrib_StickiesDetonateStickies" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "122" + { + "name" "mod demo buff type" + "attribute_class" "set_buff_type" + "description_string" "#Attrib_DemoBuffType" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "123" + { + "name" "speed boost when active" + "attribute_class" "mult_move_speed_when_active" + "description_string" "#Attrib_SpeedBoostWhenActive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "124" + { + "name" "mod wrench builds minisentry" + "attribute_class" "wrench_builds_minisentry" + "description_string" "#Attrib_WrenchBuildsMiniSentry" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "125" + { + "name" "max health additive penalty" + "attribute_class" "add_maxhealth" + "description_string" "#Attrib_MaxHealth_Negative" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "126" + { + "name" "sticky arm time bonus" + "attribute_class" "sticky_arm_time" + "description_string" "#Attrib_StickyArmTimeBonus" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "127" + { + "name" "sticky air burst mode" + "attribute_class" "set_detonate_mode" + "description_string" "#Attrib_StickyAirBurstMode" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "128" + { + "name" "provide on active" + "attribute_class" "provide_on_active" + "description_string" "#Attrib_ProvideOnActive" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "129" + { + "name" "health drain" + "attribute_class" "add_health_regen" + "description_string" "#Attrib_HealthDrain" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "130" + { + "name" "medic regen bonus" + "attribute_class" "medic_regen" + "description_string" "#Attrib_MedicRegenBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "131" + { + "name" "medic regen penalty" + "attribute_class" "medic_regen" + "description_string" "#Attrib_MedicRegenPenalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "132" + { + "name" "community description" + "attribute_class" "desc_community_description" + "description_string" "#Attrib_Community_Description" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "133" + { + "name" "soldier model index" + "attribute_class" "desc_soldiermedal_index" + "description_string" "#Attrib_MedalIndex_Description" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "134" + { + "name" "attach particle effect" + "attribute_class" "set_attached_particle" + "description_string" "#Attrib_AttachedParticle" + "description_format" "value_is_particle_index" + "hidden" "0" + "effect_type" "unusual" + "stored_as_integer" "0" + "can_affect_market_name" "1" + } + "135" + { + "name" "rocket jump damage reduction" + "attribute_class" "rocket_jump_dmg_reduction" + "description_string" "#Attrib_RocketJumpDmgReduction" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "136" + { + "name" "mod sentry killed revenge" + "attribute_class" "sentry_killed_revenge" + "description_string" "#Attrib_SentryKilledRevenge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "137" + { + "name" "dmg bonus vs buildings" + "attribute_class" "mult_dmg_vs_buildings" + "description_string" "#Attrib_DmgVsBuilding_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "138" + { + "name" "dmg penalty vs players" + "attribute_class" "mult_dmg_vs_players" + "description_string" "#Attrib_DmgVsPlayer_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "139" + { + "name" "lunchbox adds maxhealth bonus" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_LunchboxAddsMaxHealth" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "140" + { + "name" "hidden maxhealth non buffed" + "attribute_class" "add_maxhealth_nonbuffed" + "description_string" "#Attrib_MaxHealth_Positive" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "141" + { + "name" "selfmade description" + "attribute_class" "desc_selfmade_description" + "description_string" "#Attrib_Selfmade_Description" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "142" + { + "name" "set item tint RGB" + "attribute_class" "set_item_tint_rgb" + "description_string" "#Attrib_SetItemTintRGB" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "143" + { + "name" "custom employee number" + "attribute_class" "set_employee_number" + "description_string" "#Attrib_EmployeeNumber" + "description_format" "value_is_date" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "144" + { + "name" "lunchbox adds minicrits" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_LunchboxAddsMinicrits" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "145" + { + "name" "taunt is highfive" + "attribute_class" "enable_misc2_highfive" + "description_string" "#Attrib_DamageDone_Negative" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "146" + { + "name" "damage applies to sappers" + "attribute_class" "set_dmg_apply_to_sapper" + "description_string" "#Attrib_DmgAppliesToSappers" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "147" + { + "name" "Wrench index" + "attribute_class" "desc_wrench_index" + "description_string" "#Attrib_WrenchNumber" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "148" + { + "name" "building cost reduction" + "attribute_class" "building_cost_reduction" + "description_string" "#Attrib_BuildingCostReduction" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "149" + { + "name" "bleeding duration" + "attribute_class" "bleeding_duration" + "description_string" "#Attrib_BleedingDuration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit bleed" + "stored_as_integer" "0" + } + "150" + { + "name" "turn to gold" + "attribute_class" "set_turn_to_gold" + "description_string" "#Attrib_TurnToGold" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "151" + { + "name" "DEPRECATED socketed item definition id DEPRECATED " + "attribute_class" "socketed_item_definition_id" + "description_string" "#Attrib_Socket" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "152" + { + "name" "custom texture lo" + "attribute_class" "custom_texture_lo" + "description_string" "#Attrib_CustomTexture" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "153" + { + "name" "cannot trade" + "attribute_class" "cannot_trade" + "description_string" "#Attrib_CannotTrade" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "154" + { + "name" "disguise on backstab" + "attribute_class" "set_disguise_on_backstab" + "description_string" "#Attrib_DisguiseOnBackstab" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "155" + { + "name" "cannot disguise" + "attribute_class" "set_cannot_disguise" + "description_string" "#Attrib_CannotDisguise" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "156" + { + "name" "silent killer" + "attribute_class" "set_silent_killer" + "description_string" "#Attrib_SilentKiller" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "157" + { + "name" "disguise speed penalty" + "attribute_class" "disguise_speed_penalty" + "description_string" "#Attrib_DisguiseSpeedPenalty" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "158" + { + "name" "add cloak on kill" + "attribute_class" "add_cloak_on_kill" + "description_string" "#Attrib_AddCloakOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "159" + { + "name" "SET BONUS: cloak blink time penalty" + "attribute_class" "cloak_blink_time_penalty" + "description_string" "#Attrib_CloakBlinkTimePenalty" + "description_format" "value_is_additive" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "160" + { + "name" "SET BONUS: quiet unstealth" + "attribute_class" "set_quiet_unstealth" + "description_string" "#Attrib_QuietUnstealth" + "description_format" "value_is_additive" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "161" + { + "name" "flame size penalty" + "attribute_class" "mult_flame_size" + "description_string" "#Attrib_FlameSize_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "162" + { + "name" "flame size bonus" + "attribute_class" "mult_flame_size" + "description_string" "#Attrib_FlameSize_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "163" + { + "name" "flame life penalty" + "attribute_class" "mult_flame_life" + "description_string" "#Attrib_FlameLife_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "164" + { + "name" "flame life bonus" + "attribute_class" "mult_flame_life" + "description_string" "#Attrib_FlameLife_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "165" + { + "name" "charged airblast" + "attribute_class" "set_charged_airblast" + "description_string" "#Attrib_ChargedAirblast" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "166" + { + "name" "add cloak on hit" + "attribute_class" "add_cloak_on_hit" + "description_string" "#Attrib_AddCloakOnHit" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "167" + { + "name" "disguise damage reduction" + "attribute_class" "disguise_damage_reduction" + "description_string" "#Attrib_DisguiseDamageReduction" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "168" + { + "name" "disguise no burn" + "attribute_class" "disguise_no_burn" + "description_string" "#Attrib_DisguiseNoBurn" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "169" + { + "name" "SET BONUS: dmg from sentry reduced" + "attribute_class" "dmg_from_sentry_reduced" + "description_string" "#Attrib_DmgFromSentryReduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "170" + { + "name" "airblast cost increased" + "attribute_class" "mult_airblast_cost" + "description_string" "#Attrib_AirblastCost_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "171" + { + "name" "airblast cost decreased" + "attribute_class" "mult_airblast_cost" + "description_string" "#Attrib_AirblastCost_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "172" + { + "name" "purchased" + "attribute_class" "purchased" + "description_string" "#Attrib_Purchased" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "173" + { + "name" "flame ammopersec increased" + "attribute_class" "mult_flame_ammopersec" + "description_string" "#Attrib_FlameAmmoPerSec_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "174" + { + "name" "flame ammopersec decreased" + "attribute_class" "mult_flame_ammopersec" + "description_string" "#Attrib_FlameAmmoPerSec_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "175" + { + "name" "jarate duration" + "attribute_class" "jarate_duration" + "description_string" "#Attrib_JarateDuration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit jarate" + "stored_as_integer" "0" + } + "176" + { + "name" "SET BONUS: no death from headshots" + "attribute_class" "no_death_from_headshots" + "description_string" "#Attrib_NoDeathFromHeadshots" + "description_format" "value_is_additive" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "177" + { + "name" "deploy time increased" + "attribute_class" "mult_deploy_time" + "description_string" "#Attrib_DeployTime_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "178" + { + "name" "deploy time decreased" + "attribute_class" "mult_deploy_time" + "description_string" "#Attrib_DeployTime_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "179" + { + "name" "minicrits become crits" + "attribute_class" "minicrits_become_crits" + "description_string" "#Attrib_MinicritsBecomeCrits" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "180" + { + "name" "heal on kill" + "attribute_class" "heal_on_kill" + "description_string" "#Attrib_HealOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "181" + { + "name" "no self blast dmg" + "attribute_class" "no_self_blast_dmg" + "description_string" "#Attrib_NoSelfBlastDmg" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "182" + { + "name" "slow enemy on hit major" + "attribute_class" "mult_onhit_enemyspeed_major" + "description_string" "#Attrib_Slow_Enemy_OnHit_Major" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "183" + { + "name" "aiming movespeed decreased" + "attribute_class" "mult_player_aiming_movespeed" + "description_string" "#Attrib_AimingMoveSpeed_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "184" + { + "name" "duel loser account id" + "attribute_class" "duel_loser_account_id" + "description_string" "#Attrib_DuelLoserAccountID" + "description_format" "value_is_account_id" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "185" + { + "name" "event date" + "attribute_class" "event_date" + "description_string" "#Attrib_EventDate" + "description_format" "value_is_date" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "186" + { + "name" "gifter account id" + "attribute_class" "gifter_account_id" + "description_string" "#Attrib_GifterAccountID" + "description_format" "value_is_account_id" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "187" + { + "name" "set supply crate series" + "attribute_class" "supply_crate_series" + "description_string" "#Attrib_SupplyCrateSeries" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "can_affect_market_name" "1" + } + "188" + { + "name" "preserve ubercharge" + "attribute_class" "preserve_ubercharge" + "description_string" "#Attrib_PreserveUbercharge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "189" + { + "name" "elevate quality" + "attribute_class" "set_elevated_quality" + "description_string" "#Attrib_ElevateQuality" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "190" + { + "name" "active health regen" + "attribute_class" "active_item_health_regen" + "description_string" "#Attrib_HealthRegen" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "191" + { + "name" "active health degen" + "attribute_class" "active_item_health_regen" + "description_string" "#Attrib_HealthDrain" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "192" + { + "name" "referenced item id low" + "attribute_class" "referenced_item_id_low" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "1" + } + "193" + { + "name" "referenced item id high" + "attribute_class" "referenced_item_id_high" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "1" + } + "194" + { + "name" "referenced item def UPDATED" + "attribute_class" "referenced_item_def" + "description_string" "#Attrib_ReferencedItem" + "description_format" "value_is_item_def" + "hidden" "1" + "effect_type" "neutral" + "armory_desc" "on_wearer" + "stored_as_integer" "1" + } + "195" + { + "name" "always tradable" + "attribute_class" "always_tradable" + "description_string" "#Attrib_Always_Tradable" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "196" + { + "name" "noise maker" + "attribute_class" "enable_misc2_noisemaker" + "description_string" "#Attrib_NoiseMaker" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "197" + { + "name" "halloween item" + "attribute_class" "halloween_item" + "description_string" "#Attrib_Halloween_Item" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "198" + { + "name" "collection bits DEPRECATED" + "attribute_class" "collection_bits_DEPRECATED" + "description_string" "#Attrib_Halloween_Item" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "199" + { + "name" "switch from wep deploy time decreased" + "attribute_class" "mult_switch_from_wep_deploy_time" + "description_string" "#Attrib_SingleWepHolsterBonus" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "200" + { + "name" "enables aoe heal" + "attribute_class" "enables_aoe_heal" + "description_string" "#Attrib_EnablesAOEHeal" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "201" + { + "name" "gesture speed increase" + "attribute_class" "mult_gesture_time" + "description_string" "#Attrib_GestureSpeed_Increase" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "202" + { + "name" "charge time increased" + "attribute_class" "mod_charge_time" + "description_string" "#Attrib_ChargeTime_Increase" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "203" + { + "name" "drop health pack on kill" + "attribute_class" "drop_health_pack_on_kill" + "description_string" "#Attrib_DropHealthPackOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "204" + { + "name" "hit self on miss" + "attribute_class" "hit_self_on_miss" + "description_string" "#Attrib_HitSelfOnMiss" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "205" + { + "name" "dmg from ranged reduced" + "attribute_class" "dmg_from_ranged" + "description_string" "#Attrib_DmgFromRanged_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "206" + { + "name" "dmg from melee increased" + "attribute_class" "dmg_from_melee" + "description_string" "#Attrib_DmgFromMelee_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "207" + { + "name" "blast dmg to self increased" + "attribute_class" "blast_dmg_to_self" + "description_string" "#Attrib_BlastDamageToSelf_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "208" + { + "name" "Set DamageType Ignite" + "attribute_class" "set_dmgtype_ignite" + "description_string" "#Attrib_SetDamageType_Ignite" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "209" + { + "name" "minicrit vs burning player" + "attribute_class" "or_minicrit_vs_playercond_burning" + "description_string" "#Attrib_Minicrit_Vs_Burning_Player" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + + + "211" + { + "name" "tradable after date" + "attribute_class" "tradable_after_date" + "description_string" "#Attrib_TradableAfterDate" + "description_format" "value_is_date" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "1" + } + "212" + { + "name" "force level display" + "attribute_class" "force_level_display" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + + + "214" + { + "name" "kill eater" + "attribute_class" "kill_eater" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + "can_affect_market_name" "1" + } + "215" + { + "name" "apply z velocity on damage" + "attribute_class" "apply_z_velocity_on_damage" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "216" + { + "name" "apply look velocity on damage" + "attribute_class" "apply_look_velocity_on_damage" + "description_string" "#Attrib_Knockback" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "217" + { + "name" "sanguisuge" + "attribute_class" "sanguisuge" + "description_string" "#Attrib_Sanguisuge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "218" + { + "name" "mark for death" + "attribute_class" "mark_for_death" + "description_string" "#Attrib_MarkForDeath" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "219" + { + "name" "decapitate type" + "attribute_class" "decapitate_type" + "description_string" "#Attrib_DamageDone_Negative" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "220" + { + "name" "restore health on kill" + "attribute_class" "restore_health_on_kill" + "description_string" "#Attrib_RestoreHealthOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "221" + { + "name" "mult decloak rate" + "attribute_class" "mult_decloak_rate" + "description_string" "#Attrib_DecloakRate" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "222" + { + "name" "mult sniper charge after bodyshot" + "attribute_class" "mult_sniper_charge_after_bodyshot" + "description_string" "#Attrib_MultSniperChargeAfterBodyshot" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "223" + { + "name" "mult sniper charge after miss" + "attribute_class" "mult_sniper_charge_after_miss" + "description_string" "#Attrib_MultSniperChargeAfterMiss" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "224" + { + "name" "dmg bonus while half dead" + "attribute_class" "mult_dmg_bonus_while_half_dead" + "description_string" "#Attrib_MultDmgBonusWhileHalfDead" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "225" + { + "name" "dmg penalty while half alive" + "attribute_class" "mult_dmg_penalty_while_half_alive" + "description_string" "#Attrib_MultDmgPenaltyWhileHalfAlive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "226" + { + "name" "honorbound" + "attribute_class" "honorbound" + "description_string" "#Attrib_Honorbound" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "227" + { + "name" "custom texture hi" + "attribute_class" "custom_texture_hi" + "description_string" "#Attrib_CustomTexture" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "228" + { + "name" "makers mark id" + "attribute_class" "makers_mark_id" + "description_string" "#Attrib_MakersMark" + "description_format" "value_is_account_id" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "229" + { + "name" "unique craft index" + "attribute_class" "unique_craft_index" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "230" + { + "name" "mod medic killed revenge" + "attribute_class" "medic_killed_revenge" + "description_string" "#Attrib_MedicKilledRevenge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "231" + { + "name" "medigun charge is megaheal" + "attribute_class" "set_charge_type" + "description_string" "#Attrib_Medigun_MegaHeal" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "232" + { + "name" "mod medic killed minicrit boost" + "attribute_class" "medic_killed_minicrit_boost" + "description_string" "#Attrib_MedicKilledMiniCritBoost" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "233" + { + "name" "mod medic healed damage bonus" + "attribute_class" "medic_healed_damage_bonus" + "description_string" "#Attrib_MedicHealedDamageBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "234" + { + "name" "mod medic healed deploy time penalty" + "attribute_class" "mod_medic_healed_deploy_time" + "description_string" "#Attrib_MedicHealedDeployTimePenalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "235" + { + "name" "mod shovel speed boost" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_ShovelSpeedBoost" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "236" + { + "name" "mod weapon blocks healing" + "attribute_class" "weapon_blocks_healing" + "description_string" "#Attrib_WeaponBlocksHealing" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + "apply_tag_to_item_definition" "prevents_uber" + } + "237" + { + "name" "mult sniper charge after headshot" + "attribute_class" "mult_sniper_charge_after_headshot" + "description_string" "#Attrib_MultSniperChargeAfterHeadshot" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "238" + { + "name" "minigun no spin sounds" + "attribute_class" "minigun_no_spin_sounds" + "description_string" "#Attrib_MinigunNoSpinSounds" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "239" + { + "name" "ubercharge rate bonus for healer" + "attribute_class" "mult_uberchargerate_for_healer" + "description_string" "#Attrib_UberchargeRate_ForHealer" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "240" + { + "name" "reload time decreased while healed" + "attribute_class" "mult_reload_time_while_healed" + "description_string" "#Attrib_ReloadTime_Decreased_While_Healed" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "241" + { + "name" "reload time increased hidden" + "attribute_class" "mult_reload_time_hidden" + "description_string" "#Attrib_ReloadTime_Increased" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "242" + { + "name" "mod medic killed marked for death" + "attribute_class" "medic_killed_marked_for_death" + "description_string" "#Attrib_MedicKilledMarkedForDeath" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "243" + { + "name" "mod rage on hit penalty" + "attribute_class" "rage_on_hit" + "description_string" "#Attrib_RageOnHitPenalty" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "244" + { + "name" "mod rage on hit bonus" + "attribute_class" "rage_on_hit" + "description_string" "#Attrib_RageOnHitBonus" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "245" + { + "name" "mod rage damage boost" + "attribute_class" "rage_damage" + "description_string" "#Attrib_RageDamageBoost" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "246" + { + "name" "mult charge turn control" + "attribute_class" "charge_turn_control" + "description_string" "#Attrib_ChargeTurnControl" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "247" + { + "name" "no charge impact range" + "attribute_class" "no_charge_impact_range" + "description_string" "#Attrib_NoChargeImpactRange" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "248" + { + "name" "charge impact damage increased" + "attribute_class" "charge_impact_damage" + "description_string" "#Attrib_ChargeImpactDamageIncreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "249" + { + "name" "charge recharge rate increased" + "attribute_class" "charge_recharge_rate" + "description_string" "#Attrib_ChargeRechargeRateIncreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "250" + { + "name" "air dash count" + "attribute_class" "air_dash_count" + "description_string" "#Attrib_AirDashCountIncreased" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "251" + { + "name" "speed buff ally" + "attribute_class" "speed_buff_ally" + "description_string" "#Attrib_SpeedBuffAlly" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "252" + { + "name" "damage force reduction" + "attribute_class" "damage_force_reduction" + "description_string" "#Attrib_DamageForceReduction" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "253" + { + "name" "mult cloak rate" + "attribute_class" "mult_cloak_rate" + "description_string" "#Attrib_CloakRate" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "255" + { + "name" "airblast pushback scale" + "attribute_class" "airblast_pushback_scale" + "description_string" "#Attrib_AirBlastPushScale" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "256" + { + "name" "mult airblast refire time" + "attribute_class" "mult_airblast_refire_time" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "257" + { + "name" "airblast vertical pushback scale" + "attribute_class" "airblast_vertical_pushback_scale" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "258" + { + "name" "ammo becomes health" + "attribute_class" "ammo_becomes_health" + "description_string" "#Attrib_AmmoBecomesHealth" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "259" + { + "name" "boots falling stomp" + "attribute_class" "boots_falling_stomp" + "description_string" "#Attrib_BootsFallingStomp" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "260" + { + "name" "deflection size multiplier" + "attribute_class" "deflection_size_multiplier" + "description_string" "#Attrib_DeflectionSizeMultiplier" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "261" + { + "name" "set item tint RGB 2" + "attribute_class" "set_item_tint_rgb_2" + "description_string" "#Attrib_SetItemTintRGB" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "262" + { + "name" "saxxy award category" + "attribute_class" "saxxy_award_category" + "description_string" "#Attrib_SaxxyAward" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "263" + { + "name" "melee bounds multiplier" + "attribute_class" "melee_bounds_multiplier" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "264" + { + "name" "melee range multiplier" + "attribute_class" "melee_range_multiplier" + "description_string" "#Attrib_MeleeRangeMultiplier" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "265" + { + "name" "mod mini-crit airborne deploy" + "attribute_class" "mini_crit_airborne_deploy" + "description_string" "#Attrib_MiniCritAirborneEnemiesDeploy" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "266" + { + "name" "projectile penetration" + "attribute_class" "projectile_penetration" + "description_string" "#Attrib_Penetration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "267" + { + "name" "mod crit while airborne" + "attribute_class" "crit_while_airborne" + "description_string" "#Attrib_CritWhileAirborne" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "268" + { + "name" "mult sniper charge penalty DISPLAY ONLY" + "attribute_class" "mult_sniper_charge_base_dummy" + "description_string" "#Attrib_MultSniperChargePenalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "269" + { + "name" "mod see enemy health" + "attribute_class" "see_enemy_health" + "description_string" "#Attrib_SeeEnemyHealth" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "270" + { + "name" "powerup max charges" + "attribute_class" "powerup_max_charges" + "description_string" "#Attrib_PowerupMaxCharges" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "271" + { + "name" "powerup charges" + "attribute_class" "powerup_charges" + "description_string" "#Attrib_PowerupCharges" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "272" + { + "name" "powerup duration" + "attribute_class" "powerup_duration" + "description_string" "#Attrib_PowerupDuration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "273" + { + "name" "critboost" + "attribute_class" "critboost" + "description_string" "#Attrib_CritBoost" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "274" + { + "name" "ubercharge" + "attribute_class" "ubercharge" + "description_string" "#Attrib_Ubercharge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "275" + { + "name" "cancel falling damage" + "attribute_class" "cancel_falling_damage" + "description_string" "#Attrib_CancelFallingDamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "276" + { + "name" "bidirectional teleport" + "attribute_class" "bidirectional_teleport" + "description_string" "#Attrib_BiDirectionalTP" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "277" + { + "name" "multiple sentries" + "attribute_class" "multiple_sentries" + "description_string" "#Attrib_MultipleSentries" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "278" + { + "name" "effect bar recharge rate increased" + "attribute_class" "effectbar_recharge_rate" + "description_string" "#Attrib_EffectBarRechargeRateIncreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "279" + { + "name" "maxammo grenades1 increased" + "attribute_class" "mult_maxammo_grenades1" + "description_string" "#Attrib_MaxammoGrenades1_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "280" + { + "name" "override projectile type" + "attribute_class" "override_projectile_type" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "281" + { + "name" "energy weapon no ammo" + "attribute_class" "energy_weapon_no_ammo" + "description_string" "#Attrib_EnergyWeaponNoAmmo" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "282" + { + "name" "energy weapon charged shot" + "attribute_class" "energy_weapon_charged_shot" + "description_string" "#Attrib_EnergyWeaponChargedShot" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "283" + { + "name" "energy weapon penetration" + "attribute_class" "energy_weapon_penetration" + "description_string" "#Attrib_EnergyWeaponPenetration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "284" + { + "name" "energy weapon no hurt building" + "attribute_class" "energy_weapon_no_hurt_building" + "description_string" "#Attrib_EnergyWeaponNoHurtBuilding" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "285" + { + "name" "energy weapon no deflect" + "attribute_class" "energy_weapon_no_deflect" + "description_string" "#Attrib_EnergyWeaponNoDeflect" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "286" + { + "name" "engy building health bonus" + "attribute_class" "mult_engy_building_health" + "description_string" "#Attrib_EngyBuildingHealthBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "287" + { + "name" "engy sentry damage bonus" + "attribute_class" "mult_engy_sentry_damage" + "description_string" "#Attrib_EngySentryDamageBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "288" + { + "name" "no crit boost" + "attribute_class" "no_crit_boost" + "description_string" "#Attrib_NoCritBoost" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "289" + { + "name" "centerfire projectile" + "attribute_class" "centerfire_projectile" + "description_string" "#Attrib_CenterFireProjectile" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "292" + { + "name" "kill eater score type" + "attribute_class" "kill_eater_score_type" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "293" + { + "name" "kill eater score type 2" + "attribute_class" "kill_eater_score_type_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "294" + { + "name" "kill eater 2" + "attribute_class" "kill_eater_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "295" + { + "name" "has pipboy build interface" + "attribute_class" "set_custom_buildmenu" + "description_string" "" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "296" + { + "name" "sapper kills collect crits" + "attribute_class" "sapper_kills_collect_crits" + "description_string" "#Attrib_SapperKillsCollectCrits" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "297" + { + "name" "sniper only fire zoomed" + "attribute_class" "sniper_only_fire_zoomed" + "description_string" "#Attrib_SniperOnlyFireZoomed" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "298" + { + "name" "mod ammo per shot" + "attribute_class" "mod_ammo_per_shot" + "description_string" "#Attrib_AmmoPerShot" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "299" + { + "name" "add onhit addammo" + "attribute_class" "add_onhit_addammo" + "description_string" "#Attrib_OnHit_AddAmmo" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "300" + { + "name" "electrical airblast DISPLAY ONLY" + "attribute_class" "electrical_airblast_DISPLAY_ONLY" + "description_string" "#Attrib_ElectricalAirblast" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "301" + { + "name" "mod use metal ammo type" + "attribute_class" "mod_use_metal_ammo_type" + "description_string" "#Attrib_UseMetalAmmoType" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "302" + { + "name" "expiration date" + "attribute_class" "expiration_date" + "description_string" "#Attrib_ExpirationDate" + "description_format" "value_is_date" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "303" + { + "name" "mod max primary clip override" + "attribute_class" "mod_max_primary_clip_override" + "description_string" "" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "304" + { + "name" "sniper full charge damage bonus" + "attribute_class" "sniper_full_charge_damage_bonus" + "description_string" "#Attrib_Sniper_FullChargeBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "305" + { + "name" "sniper fires tracer" + "attribute_class" "sniper_fires_tracer" + "description_string" "#Attrib_Sniper_FiresTracer" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "306" + { + "name" "sniper no headshot without full charge" + "attribute_class" "sniper_no_headshot_without_full_charge" + "description_string" "#Attrib_Sniper_NoHeadShot" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "307" + { + "name" "mod no reload DISPLAY ONLY" + "attribute_class" "mod_no_reload_display_only" + "description_string" "#Attrib_NoReload" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "308" + { + "name" "sniper penetrate players when charged" + "attribute_class" "sniper_penetrate_players_when_charged" + "description_string" "#Attrib_SniperFullChargePenetration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "309" + { + "name" "crit kill will gib" + "attribute_class" "crit_kill_will_gib" + "description_string" "#Attrib_CritKillWillGib" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "310" + { + "name" "recall" + "attribute_class" "recall" + "description_string" "#Attrib_Recall" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "311" + { + "name" "unlimited quantity" + "attribute_class" "unlimited_quantity" + "description_string" "#Attrib_Unlimited" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "312" + { + "name" "disable weapon hiding for animations" + "attribute_class" "disable_weapon_hiding_for_animations" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "313" + { + "name" "applies snare effect" + "attribute_class" "applies_snare_effect" + "description_string" "#Attrib_AppliesSnareEffect" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "314" + { + "name" "uber duration bonus" + "attribute_class" "add_uber_time" + "description_string" "#Attrib_UberDurationBonus" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "315" + { + "name" "refill_ammo" + "attribute_class" "refill_ammo" + "description_string" "#Attrib_RefillAmmo" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "317" + { + "name" "store sort override DEPRECATED" + "attribute_class" "store_sort_override_DEPRECATED" + "description_string" "#Attrib_AlternateRocketEffect" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "318" + { + "name" "faster reload rate" + "attribute_class" "fast_reload" + "description_string" "#Attrib_FastReload" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "319" + { + "name" "increase buff duration" + "attribute_class" "mod_buff_duration" + "description_string" "#Attrib_BuffTime_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "320" + { + "name" "robo sapper" + "attribute_class" "robo_sapper" + "description_string" "#Attrib_RoboSapper" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "321" + { + "name" "build rate bonus" + "attribute_class" "mod_build_rate" + "description_string" "#Attrib_BuildRateBonus" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "322" + { + "name" "taunt is press and hold" + "attribute_class" "enable_misc2_holdtaunt" + "description_string" "#Attrib_DamageDone_Negative" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "323" + { + "name" "attack projectiles" + "attribute_class" "attack_projectiles" + "description_string" "#Attrib_AttackProjectiles" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "324" + { + "name" "accuracy scales damage" + "attribute_class" "accuracy_scales_damage" + "description_string" "#Attrib_AccurScalesDmg" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "325" + { + "name" "currency bonus" + "attribute_class" "currency_bonus" + "description_string" "#Attrib_CurrencyBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "326" + { + "name" "increased jump height" + "attribute_class" "mod_jump_height" + "description_string" "#Attrib_JumpHeightBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "327" + { + "name" "building instant upgrade" + "attribute_class" "building_instant_upgrade" + "description_string" "#Attrib_BuildingInstaUpgrade" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "328" + { + "name" "disable fancy class select anim" + "attribute_class" "disable_fancy_class_select_anim" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "329" + { + "name" "airblast vulnerability multiplier" + "attribute_class" "airblast_vulnerability_multiplier" + "description_string" "#Attrib_AirBlastVulnerabilityMultipier" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "330" + { + "name" "override footstep sound set" + "attribute_class" "override_footstep_sound_set" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "331" + { + "name" "spawn with physics toy" + "attribute_class" "spawn_with_physics_toy" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "332" + { + "name" "fish damage override" + "attribute_class" "fish_damage_override" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "333" + { + "name" "SET BONUS: special dsp" + "attribute_class" "special_dsp" + "description_format" "value_is_additive" + "hidden" "1" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "334" + { + "name" "bombinomicon effect on death" + "attribute_class" "bombinomicon_effect_on_death" + "description_string" "#Attrib_BombinomiconEffectOnDeath" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "335" + { + "name" "clip size bonus upgrade" + "attribute_class" "mult_clipsize_upgrade" + "description_string" "#Attrib_ClipSize_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "336" + { + "name" "hide enemy health" + "attribute_class" "hide_enemy_health" + "description_string" "#Attrib_HideEnemyHealth" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "337" + { + "name" "subtract victim medigun charge on hit" + "attribute_class" "subtract_victim_medigun_charge_onhit" + "description_string" "#Attrib_SubtractVictimMedigunChargeOnHit" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "338" + { + "name" "subtract victim cloak on hit" + "attribute_class" "subtract_victim_cloak_on_hit" + "description_string" "#Attrib_SubtractVictimCloakOnHit" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "339" + { + "name" "reveal cloaked victim on hit" + "attribute_class" "reveal_cloaked_victim_on_hit" + "description_string" "#Attrib_RevealCloakedVictimOnHit" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "340" + { + "name" "reveal disguised victim on hit" + "attribute_class" "reveal_disguised_victim_on_hit" + "description_string" "#Attrib_RevealDisguisedVictimOnHit" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "341" + { + "name" "jarate backstabber" + "attribute_class" "jarate_backstabber" + "description_string" "#Attrib_JarateBackstabber" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "343" + { + "name" "engy sentry fire rate increased" + "attribute_class" "mult_sentry_firerate" + "description_string" "#Attrib_SentryFireRate_Increased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "344" + { + "name" "engy sentry radius increased" + "attribute_class" "mult_sentry_range" + "description_string" "#Attrib_SentryRadius_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "345" + { + "name" "engy dispenser radius increased" + "attribute_class" "mult_dispenser_radius" + "description_string" "#Attrib_DispenserRadius_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "346" + { + "name" "mod bat launches ornaments" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_BatLaunchesOrnaments" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "347" + { + "name" "freeze backstab victim" + "attribute_class" "freeze_backstab_victim" + "description_string" "#Attrib_FreezeBackstabVictim" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "348" + { + "name" "fire rate penalty HIDDEN" + "attribute_class" "mult_postfiredelay" + "description_string" "" + "description_format" "value_is_inverted_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "349" + { + "name" "energy weapon no drain" + "attribute_class" "energy_weapon_no_drain" + "description_string" "" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "350" + { + "name" "ragdolls become ash" + "attribute_class" "ragdolls_become_ash" + "description_string" "" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "351" + { + "name" "engy disposable sentries" + "attribute_class" "engy_disposable_sentries" + "description_string" "#Attrib_EngyDisposableSentries" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "352" + { + "name" "alt fire teleport to spawn" + "attribute_class" "alt_fire_teleport_to_spawn" + "description_string" "#Attrib_AltFireTeleportToSpawn" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "353" + { + "name" "cannot pick up buildings" + "attribute_class" "cannot_pick_up_buildings" + "description_string" "#Attrib_CannotPickUpBuildings" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "354" + { + "name" "stun enemies wielding same weapon" + "attribute_class" "stun_enemies_wielding_same_weapon" + "description_string" "#Attrib_StunEnemiesWieldingSameWeapon" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "355" + { + "name" "mod ammo per shot missed DISPLAY ONLY" + "attribute_class" "mod_ammo_per_shot_missed_DISPLAY_ONLY" + "description_string" "#Attrib_AmmoPerShotMissed" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "356" + { + "name" "airblast disabled" + "attribute_class" "airblast_disabled" + "description_string" "#Attrib_AirblastDisabled" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "357" + { + "name" "increase buff duration HIDDEN" + "attribute_class" "mod_buff_duration" + "description_string" "#Attrib_BuffTime_Increased" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "358" + { + "name" "crit forces victim to laugh" + "attribute_class" "crit_forces_victim_to_laugh" + "description_string" "#Attrib_CritForcesLaugh" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "359" + { + "name" "melts in fire" + "attribute_class" "melts_in_fire" + "description_string" "#Attrib_MeltsInFire" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "360" + { + "name" "damage all connected" + "attribute_class" "damage_all_connected" + "description_string" "#Attrib_DamageAllConnected" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "361" + { + "name" "become fireproof on hit by fire" + "attribute_class" "become_fireproof_on_hit_by_fire" + "description_string" "#Attrib_BecomeFireproofOnHitByFire" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "362" + { + "name" "crit from behind" + "attribute_class" "crit_from_behind" + "description_string" "#Attrib_CritFromBehind" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "363" + { + "name" "crit does no damage" + "attribute_class" "crit_does_no_damage" + "description_string" "#Attrib_CritDoesNoDamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "364" + { + "name" "add jingle to footsteps" + "attribute_class" "add_jingle_to_footsteps" + "description_string" "#Attrib_AddJingleToFootsteps" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "365" + { + "name" "set icicle knife mode" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_SetIcicleKnifeMode" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "366" + { + "name" "mod stun waist high airborne" + "attribute_class" "stun_waist_high_airborne" + "description_string" "#Attrib_StunWaistHighAirborne" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "367" + { + "name" "extinguish earns revenge crits" + "attribute_class" "extinguish_revenge" + "description_string" "#Attrib_ExtinguishRevenge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "368" + { + "name" "burn damage earns rage" + "attribute_class" "burn_damage_earns_rage" + "description_string" "#Attrib_BurnDamageEarnsRage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "369" + { + "name" "tickle enemies wielding same weapon" + "attribute_class" "tickle_enemies_wielding_same_weapon" + "description_string" "#Attrib_TickleEnemiesWieldingSameWeapon" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "370" + { + "name" "attach particle effect static" + "attribute_class" "set_attached_particle_static" + "description_format" "value_is_particle_index" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "371" + { + "name" "cosmetic taunt sound" + "attribute_class" "cosmetic_taunt_sound" + "attribute_type" "string" + "description_string" "#Attrib_TauntSoundSuccess" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "372" + { + "name" "accepted wedding ring account id 1" + "attribute_class" "accepted_wedding_ring_account_id_1" + "description_string" "#Attrib_AcceptedWeddingRingAccount1" + "description_format" "value_is_account_id" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "373" + { + "name" "accepted wedding ring account id 2" + "attribute_class" "accepted_wedding_ring_account_id_2" + "description_string" "#Attrib_AcceptedWeddingRingAccount2" + "description_format" "value_is_account_id" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "374" + { + "name" "tool escrow until date" + "attribute_class" "tool_escrow_until_date" + "description_string" "#Attrib_ToolEscrowUntilDate" + "description_format" "value_is_date" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "1" + } + "375" + { + "name" "generate rage on damage" + "attribute_class" "generate_rage_on_dmg" + "description_string" "#Attrib_RageOnDamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "376" + { + "name" "aiming no flinch" + "attribute_class" "aiming_no_flinch" + "description_string" "#Attrib_AimingNoFlinch" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "377" + { + "name" "aiming knockback resistance" + "attribute_class" "mult_aiming_knockback_resistance" + "description_string" "#Attrib_AimingKnockbackResistance" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "378" + { + "name" "sniper aiming movespeed decreased" + "attribute_class" "mult_player_aiming_movespeed" + "description_string" "#Attrib_SniperAimingMoveSpeed_Decreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "379" + { + "name" "kill eater user 1" + "attribute_class" "kill_eater_user_1" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "380" + { + "name" "kill eater user score type 1" + "attribute_class" "kill_eater_user_score_type_1" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "381" + { + "name" "kill eater user 2" + "attribute_class" "kill_eater_user_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "382" + { + "name" "kill eater user score type 2" + "attribute_class" "kill_eater_user_score_type_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "383" + { + "name" "kill eater user 3" + "attribute_class" "kill_eater_user_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "384" + { + "name" "kill eater user score type 3" + "attribute_class" "kill_eater_user_score_type_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "385" + { + "name" "strange part new counter ID" + "attribute_class" "strange_part_new_counter_id" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "386" + { + "name" "mvm completed challenges bitmask" + "attribute_class" "mvm_completed_challenges_bitmask" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "387" + { + "name" "rage on kill" + "attribute_class" "rage_on_kill" + "description_string" "#Attrib_RageGainOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "388" + { + "name" "kill eater kill type" + "attribute_class" "kill_eater_kill_type" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "389" + { + "name" "shot penetrate all players" + "attribute_class" "shot_penetrate_all_players" + "description_string" "#Attrib_ShotPenetration" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "390" + { + "name" "headshot damage increase" + "attribute_class" "headshot_damage_modify" + "description_string" "#Attrib_HeadshotDamageIncrease" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "391" + { + "name" "SET BONUS: mystery solving time decrease" + "attribute_class" "mystery_solving_time_decrease" + "description_string" "#Attrib_MysterySolvingTimeDecrease" + "description_format" "value_is_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "392" + { + "name" "damage penalty on bodyshot" + "attribute_class" "bodyshot_damage_modify" + "description_string" "#Attrib_DamageDone_Bodyshot_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "393" + { + "name" "sniper rage DISPLAY ONLY" + "attribute_class" "sniper_rage_DISPLAY_ONLY" + "description_string" "#Attrib_SniperRageDisplayOnly" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "394" + { + "name" "fire rate bonus HIDDEN" + "attribute_class" "mult_postfiredelay" + "description_string" "#Attrib_FireRate_Positive" + "description_format" "value_is_inverted_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "395" + { + "name" "explosive sniper shot" + "attribute_class" "explosive_sniper_shot" + "description_string" "#Attrib_ExplosiveSniperShot" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "396" + { + "name" "melee attack rate bonus" + "attribute_class" "mult_postfiredelay" + "description_string" "#Attrib_MeleeRate_Positive" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "397" + { + "name" "projectile penetration heavy" + "attribute_class" "projectile_penetration" + "description_string" "#Attrib_Penetration_Heavy" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "398" + { + "name" "rage on assists" + "attribute_class" "rage_on_assists" + "description_string" "#Attrib_RageGainOnAssists" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "399" + { + "name" "armor piercing" + "attribute_class" "armor_piercing" + "description_string" "#Attrib_ArmorPiercing" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "400" + { + "name" "cannot pick up intelligence" + "attribute_class" "cannot_pick_up_intelligence" + "description_string" "#Attrib_CannotPickUpIntelligence" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "401" + { + "name" "SET BONUS: chance of hunger decrease" + "attribute_class" "chance_of_hunger_decrease" + "description_string" "#Attrib_ChanceOfHungerDecrease" + "description_format" "value_is_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "402" + { + "name" "cannot be backstabbed" + "attribute_class" "cannot_be_backstabbed" + "description_string" "#Attrib_CannotBeBackstabbed" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "403" + { + "name" "squad surplus claimer id DEPRECATED" + "attribute_class" "squad_surplus_claimer_account_id_DEPRECATED" + "description_string" "#Attrib_SquadSurplusClaimerAccountID" + "description_format" "value_is_account_id" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "404" + { + "name" "share consumable with patient" + "attribute_class" "share_consumable_with_patient" + "description_string" "#Attrib_ShareConsumable" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "405" + { + "name" "airblast vertical vulnerability multiplier" + "attribute_class" "airblast_vertical_vulnerability_multiplier" + "description_string" "#Attrib_AirBlastVerticalVulnerabilityMultipier" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "406" + { + "name" "vision opt in flags" + "attribute_class" "vision_opt_in_flags" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "407" + { + "name" "crit vs disguised players" + "attribute_class" "or_crit_vs_playercond" + "description_string" "#Attrib_CritVsDisguised" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "408" + { + "name" "crit vs non burning players" + "attribute_class" "or_crit_vs_not_playercond" + "description_string" "#Attrib_CritVsNonBurning" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "409" + { + "name" "kill forces attacker to laugh" + "attribute_class" "kill_forces_attacker_to_laugh" + "description_string" "#Attrib_KillForcesAttackerLaugh" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "410" + { + "name" "damage bonus while disguised" + "attribute_class" "mult_dmg_disguised" + "description_string" "#Attrib_DmgBonus_Disguised" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "411" + { + "name" "projectile spread angle penalty" + "attribute_class" "projectile_spread_angle" + "description_string" "#Attrib_Projectile_Spread_Angle_Negative" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "412" + { + "name" "dmg taken increased" + "attribute_class" "mult_dmgtaken" + "description_string" "#Attrib_DmgTaken_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "413" + { + "name" "auto fires full clip" + "attribute_class" "auto_fires_full_clip" + "description_string" "#Attrib_AutoFiresFullClip" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "414" + { + "name" "self mark for death" + "attribute_class" "self_mark_for_death" + "description_string" "#Attrib_SelfMarkForDeath" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "415" + { + "name" "counts as assister is some kind of pet this update is going to be awesome" + "attribute_class" "counts_as_assister" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "1" + } + "416" + { + "name" "mod flaregun fires pellets with knockback" + "attribute_class" "set_weapon_mode" + "description_string" "#Attrib_FlaregunPelletsWithKnockback" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "417" + { + "name" "can overload" + "attribute_class" "can_overload" + "description_string" "#Attrib_CanOverload" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "418" + { + "name" "boost on damage" + "attribute_class" "boost_on_damage" + "description_string" "#Attrib_BoostOnDamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "419" + { + "name" "hype resets on jump" + "attribute_class" "hype_resets_on_jump" + "description_string" "#Attrib_HypeResetsOnJump" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "420" + { + "name" "pyro year number" + "attribute_class" "pyro_year_number" + "description_string" "#Attrib_PyroYearNumber" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "421" + { + "name" "no primary ammo from dispensers while active" + "attribute_class" "no_primary_ammo_from_dispensers" + "description_string" "#Attrib_NoPrimaryAmmoFromDispensers" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "422" + { + "name" "pyrovision only DISPLAY ONLY" + "attribute_class" "pyrovision_only_display" + "description_string" "#Attrib_PyrovisionFilter" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "424" + { + "name" "clip size penalty HIDDEN" + "attribute_class" "mult_clipsize" + "description_string" "#Attrib_ClipSize_Negative" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "425" + { + "name" "sapper damage bonus" + "attribute_class" "mult_sapper_damage" + "description_string" "#Attrib_Sapper_Damage_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "426" + { + "name" "sapper damage penalty" + "attribute_class" "mult_sapper_damage" + "description_string" "#Attrib_Sapper_Damage_Penalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "427" + { + "name" "sapper damage leaches health" + "attribute_class" "sapper_damage_leaches_health" + "description_string" "#Attrib_Sapper_Leaches_Health" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "428" + { + "name" "sapper health bonus" + "attribute_class" "mult_sapper_health" + "description_string" "#Attrib_Sapper_Health_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "429" + { + "name" "sapper health penalty" + "attribute_class" "mult_sapper_health" + "description_string" "#Attrib_Sapper_Health_Penalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "430" + { + "name" "ring of fire while aiming" + "attribute_class" "ring_of_fire_while_aiming" + "description_string" "#Attrib_Ring_Of_Fire_While_Aiming" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "431" + { + "name" "uses ammo while aiming" + "attribute_class" "uses_ammo_while_aiming" + "description_string" "#Attrib_Uses_Ammo_While_Aiming" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "433" + { + "name" "sapper degenerates buildings" + "attribute_class" "sapper_degenerates_buildings" + "description_string" "#Attrib_Sapper_Degenerates_Buildings" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "434" + { + "name" "sapper damage penalty hidden" + "attribute_class" "mult_sapper_damage" + "description_string" "#Attrib_Sapper_Damage_Penalty" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "435" + { + "name" "cleaver description" + "attribute_class" "desc_cleaver_description" + "description_string" "#Attrib_Cleaver_Description" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "436" + { + "name" "ragdolls plasma effect" + "attribute_class" "ragdolls_plasma_effect" + "description_string" "" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "437" + { + "name" "crit vs stunned players" + "attribute_class" "or_crit_vs_playercond" + "description_string" "#Attrib_CritVsStunned" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "438" + { + "name" "crit vs wet players" + "attribute_class" "crit_vs_wet_players" + "description_string" "#Attrib_CritVsWet" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "439" + { + "name" "override item level desc string" + "attribute_class" "override_item_level_desc_string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + + "440" + { + "name" "clip size upgrade atomic" + "attribute_class" "mult_clipsize_upgrade_atomic" + "description_string" "#Attrib_ClipSize_Atomic" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "441" + { + "name" "auto fires full clip all at once" + "attribute_class" "auto_fires_full_clip_all_at_once" + "description_string" "#Attrib_AutoFiresFullClipAllAtOnce" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "442" + { + "name" "major move speed bonus" + "attribute_class" "mult_player_movespeed" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "443" + { + "name" "major increased jump height" + "attribute_class" "mod_jump_height" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "444" + { + "name" "head scale" + "attribute_class" "head_scale" + "description_format" "value_is_percentage" + "description_string" "#Attrib_NoDoubleJump" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "445" + { + "name" "pyrovision opt in DISPLAY ONLY" + "attribute_class" "pyrovision_opt_in_display_only" + "description_string" "#Attrib_PyroVisionOptIn" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "446" + { + "name" "halloweenvision opt in DISPLAY ONLY" + "attribute_class" "halloweenvision_opt_in_display_only" + "description_string" "" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "447" + { + "name" "halloweenvision filter DISPLAY ONLY" + "attribute_class" "halloweenvision_filter_display_only" + "description_string" "" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "448" + { + "name" "player skin override" + "attribute_class" "player_skin_override" + "description_string" "#Attrib_PlayerSkinOverride" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "449" + { + "name" "never craftable" + "attribute_class" "never_craftable" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "450" + { + "name" "zombiezombiezombiezombie" + "attribute_class" "zombiezombiezombiezombie" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "451" + { + "name" "sapper voice pak" + "attribute_class" "sapper_voice_pak" + "description_string" "#Attrib_Sapper_Voice_Pak" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "452" + { + "name" "sapper voice pak idle wait" + "attribute_class" "sapper_voice_pak_idle_wait" + "description_string" "#Attrib_Sapper_Voice_Pak_Idle_Wait" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "453" + { + "name" "merasmus hat level display ONLY" + "attribute_class" "merasmus_hat_level_display_ONLY" + "description_string" "#Attrib_Merasmus_Hat_Level" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "454" + { + "name" "strange restriction type 1" + "attribute_class" "strange_restriction_type_1" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "455" + { + "name" "strange restriction value 1" + "attribute_class" "strange_restriction_value_1" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "456" + { + "name" "strange restriction type 2" + "attribute_class" "strange_restriction_type_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "457" + { + "name" "strange restriction value 2" + "attribute_class" "strange_restriction_value_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "458" + { + "name" "strange restriction user type 1" + "attribute_class" "strange_restriction_user_type_1" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "459" + { + "name" "strange restriction user value 1" + "attribute_class" "strange_restriction_user_value_1" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "460" + { + "name" "strange restriction user type 2" + "attribute_class" "strange_restriction_user_type_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "461" + { + "name" "strange restriction user value 2" + "attribute_class" "strange_restriction_user_value_2" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "462" + { + "name" "strange restriction user type 3" + "attribute_class" "strange_restriction_user_type_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "463" + { + "name" "strange restriction user value 3" + "attribute_class" "strange_restriction_user_value_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "464" + { + "name" "engineer sentry build rate multiplier" + "attribute_class" "sentry_build_rate_multiplier" + "description_string" "#Attrib_Sentry_Build_Rate" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "465" + { + "name" "engineer teleporter build rate multiplier" + "attribute_class" "teleporter_build_rate_multiplier" + "description_string" "#Attrib_Teleporter_Build_Rate" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "466" + { + "name" "grenade launcher mortar mode" + "attribute_class" "grenade_launcher_mortar_mode" + "description_string" "#Attrib_Grenade_Launcher_Mortar_Mode" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "467" + { + "name" "grenade not explode on impact" + "attribute_class" "grenade_not_explode_on_impact" + "description_string" "#Attrib_Grenade_Not_Explode_On_Impact" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "468" + { + "name" "strange score selector" + "attribute_class" "strange_score_selector" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "469" + { + "name" "engineer building teleporting pickup" + "attribute_class" "building_teleporting_pickup" + "description_string" "#Attrib_Building_Telporting_PickUp" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "470" + { + "name" "grenade damage reduction on world contact" + "attribute_class" "grenade_damage_reduction_on_world_contact" + "description_string" "#Attrib_Grenade_Damage_Reduction_On_World_Contact" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "471" + { + "name" "engineer rage on dmg" + "attribute_class" "generate_rage_on_dmg" + "description_string" "#Attrib_EngineerBuildingRescueRage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "472" + { + "name" "mark for death on building pickup" + "attribute_class" "mark_for_death_on_building_pickup" + "description_string" "#Attrib_MarkedForDeathOnBuildingPickup" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "473" + { + "name" "medigun charge is resists" + "attribute_class" "set_charge_type" + "description_string" "#Attrib_Medigun_Resists" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "474" + { + "name" "arrow heals buildings" + "attribute_class" "arrow_heals_buildings" + "description_string" "#Attrib_ArrowHealsBuildings" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "475" + { + "name" "Projectile speed increased HIDDEN" + "attribute_class" "mult_projectile_speed" + "description_string" "#Attrib_ProjectileSpeed_Increased" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "476" + { + "name" "damage bonus HIDDEN" + "attribute_class" "mult_dmg" + "description_string" "#Attrib_DamageDone_Positive" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "477" + { + "name" "cannonball push back" + "attribute_class" "cannonball_push_back" + "description_string" "#Attrib_Cannonball_Push_Back" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "478" + { + "name" "rage giving scale" + "attribute_class" "rage_giving_scale" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "479" + { + "name" "overheal fill rate reduced" + "attribute_class" "overheal_fill_rate" + "description_string" "#Attrib_Overheal_Fill_Rate_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "481" + { + "name" "canteen specialist" + "attribute_class" "canteen_specialist" + "description_string" "#Attrib_Canteen_Specialist" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "482" + { + "name" "overheal expert" + "attribute_class" "overheal_expert" + "description_string" "#Attrib_Overheal_Expert" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "484" + { + "name" "mad milk syringes" + "attribute_class" "mad_milk_syringes" + "description_string" "#Attrib_Medic_MadMilkSyringes" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "488" + { + "name" "rocket specialist" + "attribute_class" "rocket_specialist" + "description_string" "#Attrib_Rocket_Specialist" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "489" + { + "name" "SET BONUS: move speed set bonus" + "attribute_class" "mult_player_movespeed" + "description_string" "#Attrib_MoveSpeed_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "490" + { + "name" "SET BONUS: health regen set bonus" + "attribute_class" "add_health_regen" + "description_string" "#Attrib_HealthRegen" + "description_format" "value_is_additive" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "491" + { + "name" "SET BONUS: dmg taken from crit reduced set bonus" + "attribute_class" "mult_dmgtaken_from_crit" + "description_string" "#Attrib_DmgTaken_From_Crit_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "492" + { + "name" "SET BONUS: dmg taken from fire reduced set bonus" + "attribute_class" "mult_dmgtaken_from_fire" + "description_string" "#Attrib_DmgTaken_From_Fire_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "493" + { + "name" "healing mastery" + "attribute_class" "healing_mastery" + "description_string" "#Attrib_Healing_Mastery" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "494" + { + "name" "kill eater 3" + "attribute_class" "kill_eater_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "495" + { + "name" "kill eater score type 3" + "attribute_class" "kill_eater_score_type_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "496" + { + "name" "strange restriction type 3" + "attribute_class" "strange_restriction_type_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "497" + { + "name" "strange restriction value 3" + "attribute_class" "strange_restriction_value_3" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "498" + { + "name" "bot custom jump particle" + "attribute_class" "bot_custom_jump_particle" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "499" + { + "name" "generate rage on heal" + "attribute_class" "generate_rage_on_heal" + "description_string" "#Attrib_RageOnHeal" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "500" + { + "name" "custom name attr" + "attribute_class" "custom_name_attr" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "501" + { + "name" "custom desc attr" + "attribute_class" "custom_desc_attr" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "503" + { + "name" "medigun bullet resist passive" + "attribute_class" "medigun_bullet_resist_passive" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "504" + { + "name" "medigun blast resist passive" + "attribute_class" "medigun_blast_resist_passive" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "505" + { + "name" "medigun fire resist passive" + "attribute_class" "medigun_fire_resist_passive" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "506" + { + "name" "medigun bullet resist deployed" + "attribute_class" "medigun_bullet_resist_deployed" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "507" + { + "name" "medigun blast resist deployed" + "attribute_class" "medigun_blast_resist_deployed" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "508" + { + "name" "medigun fire resist deployed" + "attribute_class" "medigun_fire_resist_deployed" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "509" + { + "name" "medigun crit bullet percent bar deplete" + "attribute_class" "medigun_crit_bullet_percent_bar_deplete" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "510" + { + "name" "medigun crit blast percent bar deplete" + "attribute_class" "medigun_crit_blast_percent_bar_deplete" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "511" + { + "name" "medigun crit fire percent bar deplete" + "attribute_class" "medigun_crit_fire_percent_bar_deplete" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "512" + { + "name" "throwable fire speed" + "attribute_class" "throwable_fire_speed" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "513" + { + "name" "throwable damage" + "attribute_class" "throwable_damage" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "514" + { + "name" "throwable healing" + "attribute_class" "throwable_healing" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "515" + { + "name" "throwable particle trail only" + "attribute_class" "throwable_particle_trail_only" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "516" + { + "name" "SET BONUS: dmg taken from bullets increased" + "attribute_class" "mult_dmgtaken_from_bullets" + "description_string" "#Attrib_DmgTaken_From_Bullets_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "517" + { + "name" "SET BONUS: max health additive bonus" + "attribute_class" "add_maxhealth" + "description_string" "#Attrib_MaxHealth_Positive" + "description_format" "value_is_additive" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "518" + { + "name" "scattergun knockback mult" + "attribute_class" "scattergun_knockback_mult" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "519" + { + "name" "particle effect vertical offset" + "attribute_class" "particle_effect_vertical_offset" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "520" + { + "name" "particle effect use head origin" + "attribute_class" "particle_effect_use_head_origin" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "521" + { + "name" "use large smoke explosion" + "attribute_class" "use_large_smoke_explosion" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "522" + { + "name" "damage causes airblast" + "attribute_class" "damage_causes_airblast" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "524" + { + "name" "increased jump height from weapon" + "attribute_class" "mod_jump_height_from_weapon" + "description_string" "#Attrib_JumpHeightBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "525" + { + "name" "damage force increase" + "attribute_class" "damage_force_reduction" + "description_string" "#Attrib_DamageForceIncrease" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "526" + { + "name" "healing received bonus" + "attribute_class" "mult_healing_received" + "description_string" "#Attrib_HealingReceivedBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "527" + { + "name" "afterburn immunity" + "attribute_class" "afterburn_immunity" + "description_string" "#Attrib_AfterburnImmunity" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "528" + { + "name" "decoded by itemdefindex" + "attribute_class" "decoded_by_itemdefindex" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "532" + { + "name" "hype decays over time" + "attribute_class" "hype_decays_over_time" + "description_string" "#Attrib_HypeDecays" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "533" + { + "name" "SET BONUS: custom taunt particle attr" + "attribute_class" "custom_taunt_particle_attr" + "description_string" "#Attrib_TauntParticles" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "is_set_bonus" "1" + "stored_as_integer" "1" + } + "534" + { + "name" "airblast vulnerability multiplier hidden" + "attribute_class" "airblast_vulnerability_multiplier" + "description_string" "#Attrib_AirBlastVulnerabilityMultipier" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "535" + { + "name" "damage force increase hidden" + "attribute_class" "damage_force_reduction" + "description_string" "#Attrib_DamageForceIncrease" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "536" + { + "name" "damage force increase text" + "attribute_class" "damage_force_reduction" + "description_string" "#Attrib_DamageForceIncreaseString" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "537" + { + "name" "SET BONUS: calling card on kill" + "attribute_class" "calling_card_on_kill" + "description_string" "#Attrib_CallingCardOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "armory_desc" "on_wearer" + "effect_type" "positive" + "is_set_bonus" "1" + "stored_as_integer" "1" + } + "539" + { + "name" "set throwable type" + "attribute_class" "set_throwable_type" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "540" + { + "name" "add head on hit" + "attribute_class" "add_head_on_hit" + "description_string" "#Attrib_AddHeadOnHit" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "542" + { + "name" "item style override" + "attribute_class" "item_style_override" + "description_format" "value_is_additive" + "hidden" "1" + } + "543" + { + "name" "paint decal enum" + "attribute_class" "paint_decal_enum" + "description_format" "value_is_additive" + "hidden" "1" + } + "544" + { + "name" "show paint description" + "attribute_class" "show_paint_description" + "description_format" "value_is_additive" + "hidden" "1" + } + "545" + { + "name" "bot medic uber health threshold" + "attribute_class" "bot_medic_uber_health_threshold" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "546" + { + "name" "bot medic uber deploy delay duration" + "attribute_class" "bot_medic_uber_deploy_delay_duration" + "description_format" "value_is_additive" + "hidden" "1" + } + "547" + { + "name" "single wep deploy time decreased" + "attribute_class" "mult_single_wep_deploy_time" + "description_string" "#Attrib_SingleWepDeployBonus" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + + "548" + { + "name" "halloween reload time decreased" + "attribute_class" "hwn_mult_reload_time" + "description_format" "value_is_inverted_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "549" + { + "name" "halloween fire rate bonus" + "attribute_class" "hwn_mult_postfiredelay" + "description_format" "value_is_inverted_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "550" + { + "name" "halloween increased jump height" + "attribute_class" "mod_jump_height" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "551" + { + "name" "special taunt" + "attribute_class" "special_taunt" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "554" + { + "name" "revive" + "attribute_class" "revive" + "description_string" "#Attrib_Revive" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "556" + { + "name" "taunt attack name" + "attribute_class" "taunt_attack_name" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "557" + { + "name" "taunt attack time" + "attribute_class" "taunt_attack_time" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "600" + { + "name" "taunt force move forward" + "attribute_class" "taunt_force_move_forward" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "602" + { + "name" "taunt mimic" + "attribute_class" "taunt_mimic" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "606" + { + "name" "taunt success sound" + "attribute_class" "taunt_success_sound" + "attribute_type" "string" + "description_string" "#Attrib_TauntSoundSuccess" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "607" + { + "name" "taunt success sound offset" + "attribute_class" "taunt_success_sound_offset" + "description_string" "#Attrib_PhaseCloak" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "608" + { + "name" "taunt success sound loop" + "attribute_class" "taunt_success_sound_loop" + "attribute_type" "string" + "description_string" "#Attrib_TauntSoundSuccess" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "609" + { + "name" "taunt success sound loop offset" + "attribute_class" "taunt_success_sound_loop_offset" + "description_string" "#Attrib_PhaseCloak" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "610" + { + "name" "increased air control" + "attribute_class" "mod_air_control" + "description_string" "#Attrib_AirControl" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "612" + { + "name" "rocket launch impulse" + "attribute_class" "mod_rocket_launch_impulse" + "description_string" "#Attrib_RocketLaunchImpulse" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "613" + { + "name" "minicritboost on kill" + "attribute_class" "add_onkill_minicritboost_time" + "description_string" "#Attrib_MiniCritBoost_OnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_kill" + "stored_as_integer" "0" + } + "614" + { + "name" "no metal from dispensers while active" + "attribute_class" "no_metal_from_dispensers_while_active" + "description_string" "#Attrib_NoMetalFromDispensersWhileActive" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "1" + } + "615" + { + "name" "projectile entity name" + "attribute_class" "projectile_entity_name" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "616" + { + "name" "is throwable primable" + "attribute_class" "is_throwable_primable" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "617" + { + "name" "throwable detonation time" + "attribute_class" "throwable_detonation_time" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "618" + { + "name" "throwable recharge time" + "attribute_class" "throwable_recharge_time" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "619" + { + "name" "closerange backattack minicrits" + "attribute_class" "closerange_backattack_minicrits" + "description_string" "#Attrib_BackAttackMinicrits" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "620" + { + "name" "torso scale" + "attribute_class" "torso_scale" + "description_format" "value_is_percentage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "621" + { + "name" "rocketjump attackrate bonus" + "attribute_class" "rocketjump_attackrate_bonus" + "description_string" "#Attrib_RocketJumpAttackRateBonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + } + "622" + { + "name" "is throwable chargeable" + "attribute_class" "is_throwable_chargeable" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "630" + { + "name" "back headshot" + "attribute_class" "back_headshot" + "description_string" "#Attrib_BackHeadshot" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "632" + { + "name" "rj air bombardment" + "attribute_class" "rj_air_bombardment" + "description_string" "#Attrib_AirBombardment" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "633" + { + "name" "projectile particle name" + "attribute_class" "projectile_particle_name" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "634" + { + "name" "air jump on attack" + "attribute_class" "air_jump_on_attack" + "description_string" "#Attrib_AirJumpOnAttack" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "636" + { + "name" "sniper crit no scope" + "attribute_class" "sniper_crit_no_scope" + "description_string" "#Attrib_SniperCritNoScope" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "637" + { + "name" "sniper independent zoom DISPLAY ONLY" + "attribute_class" "sniper_independent_zoom_DISPLAY_ONLY" + "description_string" "#Attrib_SniperIndependentZoom" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "638" + { + "name" "axtinguisher properties" + "attribute_class" "axtinguisher_properties" + "description_string" "#Attrib_AxtinguisherProperties" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "639" + { + "name" "full charge turn control" + "attribute_class" "charge_turn_control" + "description_string" "#Attrib_ChargeTurnControlFull" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "640" + { + "name" "parachute attribute" + "attribute_class" "parachute_attribute" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "641" + { + "name" "taunt force weapon slot" + "attribute_class" "taunt_force_weapon_slot" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "642" + { + "name" "mini rockets" + "attribute_class" "mini_rockets" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "643" + { + "name" "rocket jump damage reduction HIDDEN" + "attribute_class" "rocket_jump_dmg_reduction" + "description_string" "#Attrib_RocketJumpDmgReduction" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + } + "644" + { + "name" "clipsize increase on kill" + "attribute_class" "clipsize_increase_on_kill" + "description_string" "#Attrib_ExtraRocketsOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "645" + { + "name" "breadgloves properties" + "attribute_class" "breadgloves_properties" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "646" + { + "name" "taunt turn speed" + "attribute_class" "taunt_turn_speed" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "647" + { + "name" "sniper fires tracer HIDDEN" + "attribute_class" "sniper_fires_tracer_HIDDEN" + "description_string" "#Attrib_Sniper_FiresTracer" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "651" + { + "name" "fire rate bonus with reduced health" + "attribute_class" "mult_postfiredelay_with_reduced_health" + "description_string" "#Attrib_FireRateBonusWithReducedHealth" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + } + "661" + { + "name" "tag__summer2014" + "attribute_class" "tag__summer2014" + "description_string" "#Attrib_Summer2014Tag" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "662" + { + "name" "crate generation code" + "attribute_class" "crate_generation_code" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "669" + { + "name" "stickybomb fizzle time" + "attribute_class" "stickybomb_fizzle_time" + "description_string" "#Attrib_stickybomb_fizzle_time" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + } + "670" + { + "name" "stickybomb charge rate" + "attribute_class" "stickybomb_charge_rate" + "description_string" "#Attrib_stickybomb_charge_rate" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + } + "671" + { + "name" "grenade no bounce" + "attribute_class" "grenade_no_bounce" + "description_string" "#Attrib_grenade_no_bounce" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "674" + { + "name" "class select override vcd" + "attribute_class" "class_select_override_vcd" + "attribute_type" "string" + "description_string" "#Attrib_Class_Select_Override_VCD" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "675" + { + "name" "custom projectile model" + "attribute_class" "custom_projectile_model" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "676" + { + "name" "lose demo charge on damage when charging" + "attribute_class" "lose_demo_charge_on_damage_when_charging" + "description_string" "#Attrib_LoseDemoChargeOnDamageWhenCharging" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + } + "681" + { + "name" "grenade no spin" + "attribute_class" "grenade_no_spin" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "684" + { + "name" "grenade detonation damage penalty" + "attribute_class" "grenade_detonation_damage_penalty" + "description_string" "#Attrib_GrenadeDetonationDamagePenalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + } + "687" + { + "name" "taunt turn acceleration time" + "attribute_class" "taunt_turn_acceleration_time" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "688" + { + "name" "taunt move acceleration time" + "attribute_class" "taunt_move_acceleration" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "689" + { + "name" "taunt move speed" + "attribute_class" "taunt_move_speed" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "690" + { + "name" "shuffle crate item def min" + "attribute_class" "shuffle_crate_item_def_min" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "691" + { + "name" "shuffle crate item def max" + "attribute_class" "shuffle_crate_item_def_max" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "692" + { + "name" "limited quantity item" + "attribute_class" "limited_quantity_item" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "693" + { + "name" "SET BONUS: alien isolation xeno bonus pos" + "attribute_class" "alien_isolation_xeno_bonus_pos" + "description_format" "value_is_additive" + "description_string" "#Attrib_AiXenoSetBonusPos" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "694" + { + "name" "SET BONUS: alien isolation xeno bonus neg" + "attribute_class" "alien_isolation_xeno_bonus_neg" + "description_format" "value_is_additive" + "description_string" "#Attrib_AiXenoSetBonusNeg" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "negative" + "stored_as_integer" "1" + } + "695" + { + "name" "SET BONUS: alien isolation merc bonus pos" + "attribute_class" "alien_isolation_merc_bonus_pos" + "description_format" "value_is_additive" + "description_string" "#Attrib_AiMercSetBonusPos" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "696" + { + "name" "SET BONUS: alien isolation merc bonus neg" + "attribute_class" "alien_isolation_merc_bonus_neg" + "description_format" "value_is_additive" + "description_string" "#Attrib_AiMercSetBonusNeg" + "hidden" "0" + "is_set_bonus" "1" + "effect_type" "negative" + "stored_as_integer" "1" + } + "698" + { + "name" "disable weapon switch" + "attribute_class" "disable_weapon_switch" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "1" + } + "699" + { + "name" "hand scale" + "attribute_class" "hand_scale" + "description_format" "value_is_percentage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "700" + { + "name" "display duck leaderboard" + "attribute_class" "display_duck_leaderboard" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "1" + } + "701" + { + "name" "duck rating" + "attribute_class" "duck_rating" + "description_string" "#Attrib_duck_rating" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "702" + { + "name" "duck badge level" + "attribute_class" "duck_badge_level" + "description_string" "#Attrib_duck_badge_level" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "703" + { + "name" "tag__eotlearlysupport" + "attribute_class" "tag__eotlearlysupport" + "description_string" "#Attrib_eotl_early_supporter" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "704" + { + "name" "unlimited quantity hidden" + "attribute_class" "unlimited_quantity" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "705" + { + "name" "duckstreaks active" + "attribute_class" "duckstreaks_active" + "description_string" "#Attrib_duckstreaks" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "708" + { + "name" "panic_attack" + "attribute_class" "panic_attack" + "description_string" "#Attrib_PanicAttack" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "709" + { + "name" "panic_attack_negative" + "attribute_class" "panic_attack_negative" + "description_string" "#Attrib_PanicAttackNegative" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "710" + { + "name" "auto fires full clip penalty" + "attribute_class" "auto_fires_full_clip" + "description_string" "#Attrib_AutoFiresFullClipNegative" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "711" + { + "name" "auto fires when full" + "attribute_class" "auto_fires_when_full" + "description_string" "#Attrib_AutoFiresWhenFull" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "712" + { + "name" "force weapon switch" + "attribute_class" "force_weapon_switch" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "719" + { + "name" "weapon_uses_stattrak_module" + "attribute_class" "weapon_uses_stattrak_module" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "strange" + } + "723" + { + "name" "is_operation_pass" + "attribute_class" "is_operation_pass" + "description_format" "value_is_additive" + "hidden" "1" + } + "724" + { + "name" "weapon_stattrak_module_scale" + "attribute_class" "weapon_stattrak_module_scale" + "description_format" "value_is_percentage" + "hidden" "1" + "stored_as_integer" "0" + } + "725" + { + "name" "set_item_texture_wear" + "attribute_class" "set_item_texture_wear" + "description_format" "value_is_additive" + "hidden" "1" + "can_affect_market_name" "1" + "stored_as_integer" "0" + } + "726" + { + "name" "cloak_consume_on_feign_death_activate" + "attribute_class" "cloak_consume_on_feign_death_activate" + "description_string" "#Attrib_ConsumeCloakFeignDeath" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "727" + { + "name" "stickybomb_charge_damage_increase" + "attribute_class" "stickybomb_charge_damage_increase" + "description_string" "#Attrib_stickybomb_charge_damage_increase" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + } + "728" + { + "name" "NoCloakWhenCloaked" + "attribute_class" "NoCloakWhenCloaked" + "description_string" "#Attrib_NoCloakWhenCloaked" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + } + "729" + { + "name" "ReducedCloakFromAmmo" + "attribute_class" "ReducedCloakFromAmmo" + "description_string" "#Attrib_ReducedCloakFromAmmo" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + } + "730" + { + "name" "elevate to unusual if applicable" + "attribute_class" "elevate_to_unusual_if_applicable" + "description_string" "#Attrib_ElevateQuality" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "731" + { + "name" "weapon_allow_inspect" + "attribute_class" "weapon_allow_inspect" + "description_format" "value_is_additive" + "hidden" "1" + } + "732" + { + "name" "metal_pickup_decreased" + "attribute_class" "mult_metal_pickup" + "description_string" "#Attrib_metal_pickup_decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "733" + { + "name" "lose hype on take damage" + "attribute_class" "lose_hype_on_take_damage" + "description_string" "#Attrib_losehypeontakedamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + } + "734" + { + "name" "healing received penalty" + "attribute_class" "mult_healing_received" + "description_string" "#Attrib_HealingReceivedPenalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "735" + { + "name" "crit_vs_burning_FLARES_DISPLAY_ONLY" + "attribute_class" "crit_vs_burning_FLARES_DISPLAY_ONLY" + "description_string" "#Attrib_CritVsBurning" + "description_format" "value_is_or" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "736" + { + "name" "speed_boost_on_kill" + "attribute_class" "speed_boost_on_kill" + "description_string" "#Attrib_SpeedBoostOnKill" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "737" + { + "name" "speed_boost_on_hit" + "attribute_class" "speed_boost_on_hit" + "description_string" "#Attrib_SpeedBoostOnHit" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "738" + { + "name" "spunup_damage_resistance" + "attribute_class" "spunup_damage_resistance" + "description_string" "#Attrib_spup_damage_resistance" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + } + "739" + { + "name" "ubercharge overheal rate penalty" + "attribute_class" "mult_medigun_overheal_uberchargerate" + "description_string" "#Attrib_OverhealUberchargeRate_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "740" + { + "name" "reduced_healing_from_medics" + "attribute_class" "mult_healing_from_medics" + "description_string" "#Attrib_HealingFromMedics_Negative" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "741" + { + "name" "health on radius damage" + "attribute_class" "add_health_on_radius_damage" + "description_string" "#Attrib_HealthOnRadiusDamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "742" + { + "name" "style changes on strange level" + "attribute_class" "style_changes_on_strange_level" + "hidden" "1" + "stored_as_integer" "1" + } + "743" + { + "name" "cannot restore" + "attribute_class" "cannot_restore" + "hidden" "1" + "stored_as_integer" "1" + } + "744" + { + "name" "hide crate series number" + "attribute_class" "hide_crate_series_number" + "hidden" "1" + "stored_as_integer" "1" + } + "745" + { + "name" "has team color paintkit" + "attribute_class" "has_team_color_paintkit" + "description_string" "#Attrib_HasTeamColorPaintkit" + "description_format" "value_is_additive" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "746" + { + "name" "cosmetic_allow_inspect" + "attribute_class" "cosmetic_allow_inspect" + "description_format" "value_is_additive" + "hidden" "1" + } + "747" + { + "name" "hat only unusual effect" + "attribute_class" "hat_only_unusual_effect" + "description_format" "value_is_particle_index" + "hidden" "1" + "effect_type" "unusual" + "stored_as_integer" "0" + "can_affect_market_name" "1" + } + "748" + { + "name" "items traded in for" + "attribute_class" "items_traded_in_for" + "description_string" "#Attrib_ItemsTradedIn" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "749" + { + "name" "texture_wear_default" + "attribute_class" "texture_wear_default" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "750" + { + "name" "taunt only unusual effect" + "attribute_class" "taunt_only_unusual_effect" + "description_format" "value_is_particle_index" + "hidden" "1" + "effect_type" "unusual" + "can_affect_market_name" "1" + "stored_as_integer" "1" + } + "751" + { + "name" "deactive date" + "attribute_class" "deactive_date" + "description_format" "value_is_date" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "1" + } + "752" + { + "name" "is giger counter" + "attribute_class" "is_giger_counter" + "description_format" "value_is_additive" + "hidden" "1" + } + "753" + { + "name" "hide_strange_prefix" + "attribute_class" "hide_strange_prefix" + "description_format" "value_is_additive" + "hidden" "1" + } + "754" + { + "name" "always_transmit_so" + "attribute_class" "always_transmit_so" + "description_format" "value_is_additive" + "hidden" "1" + } + "760" + { + "name" "allow_halloween_offering" + "attribute_class" "allow_halloween_offering" + "description_format" "value_is_additive" + "hidden" "1" + } + "762" + { + "name" "cannot_transmute" + "attribute_class" "cannot_transmute" + "description_format" "value_is_additive" + "hidden" "1" + } + "772" + { + "name" "single wep holster time increased" + "attribute_class" "mult_switch_from_wep_deploy_time" + "description_string" "#Attrib_SingleWepHolsterPenalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "773" + { + "name" "single wep deploy time increased" + "attribute_class" "mult_single_wep_deploy_time" + "description_string" "#Attrib_SingleWepDeployPenalty" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "774" + { + "name" "charge time decreased" + "attribute_class" "mod_charge_time" + "description_string" "#Attrib_ChargeTime_Decrease" + "description_format" "value_is_additive" + "effect_type" "negative" + "armory_desc" "on_wearer" + } + "775" + { + "name" "dmg penalty vs buildings" + "attribute_class" "mult_dmg_vs_buildings" + "description_string" "#Attrib_DmgVsBuilding_decreased" + "description_format" "value_is_percentage" + "effect_type" "negative" + } + "776" + { + "name" "charge impact damage decreased" + "attribute_class" "charge_impact_damage" + "description_string" "#Attrib_ChargeImpactDamageDecreased" + "description_format" "value_is_percentage" + "effect_type" "negative" + "stored_as_integer" "0" + } + "777" + { + "name" "non economy" + "attribute_class" "non_economy" + "description_string" "#Attrib_NonEconomyItem" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "778" + { + "name" "charge meter on hit" + "attribute_class" "charge_meter_on_hit" + "description_string" "#Attrib_HitsRefillMeter" + "description_format" "value_is_additive_percentage" + "effect_type" "positive" + } + "779" + { + "name" "minicrit_boost_when_charged" + "attribute_class" "minicrit_boost_when_charged" + "description_string" "#Attrib_MiniCritBoost_WhenCharged" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "780" + { + "name" "minicrit_boost_charge_rate" + "attribute_class" "minicrit_boost_charge_rate" + "description_string" "#Attrib_MiniCritBoost_ChargeRate" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "781" + { + "name" "is_a_sword" + "attribute_class" "is_a_sword" + "description_string" "#Attrib_IsASword" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + } + "782" + { + "name" "ammo gives charge" + "attribute_class" "ammo_gives_charge" + "description_string" "#Attrib_AmmoGivesCharge" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "783" + { + "name" "extinguish restores health" + "attribute_class" "extinguish_restores_health" + "description_string" "#Attrib_ExtinguishRestoresHealth" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "784" + { + "name" "extinguish reduces cooldown" + "attribute_class" "extinguish_reduces_cooldown" + "description_string" "#Attrib_ExtinguishReducesCooldown" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + } + "785" + { + "name" "cannot giftwrap" + "attribute_class" "cannot_giftwrap" + "hidden" "1" + "stored_as_integer" "1" + } + "786" + { + "name" "tool needs giftwrap" + "attribute_class" "tool_needs_giftwrap" + "hidden" "1" + "stored_as_integer" "1" + } + "787" + { + "name" "fuse bonus" + "attribute_class" "fuse_mult" + "description_string" "#Attrib_Fuse_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "788" + { + "name" "move speed bonus shield required" + "attribute_class" "mult_player_movespeed_shieldrequired" + "description_string" "#Attrib_MoveSpeed_Bonus_ShieldRequired" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "789" + { + "name" "damage bonus bullet vs sentry target" + "attribute_class" "mult_dmg_bullet_vs_sentry_target" + "description_string" "#Attrib_DamageBonusAgainstSentryTarget" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "790" + { + "name" "mod teleporter cost" + "attribute_class" "mod_teleporter_cost" + "description_string" "#Attrib_TeleporterBuildCost" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "791" + { + "name" "damage blast push" + "attribute_class" "damage_blast_push" + "description_string" "#Attrib_DamageBlastPush" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "792" + { + "name" "move speed bonus resource level" + "attribute_class" "mult_player_movespeed_resource_level" + "description_format" "value_is_percentage" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "793" + { + "name" "hype on damage" + "attribute_class" "hype_on_damage" + "description_string" "#Attrib_HypeOnDamage" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "794" + { + "name" "dmg taken from fire reduced on active" + "attribute_class" "mult_dmgtaken_from_fire_active" + "description_string" "#Attrib_DmgTaken_From_Fire_ReducedActive" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "795" + { + "name" "damage bonus vs burning" + "attribute_class" "mult_dmg_vs_burning" + "description_string" "#Attrib_DmgBonusVsBurning" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "796" + { + "name" "min_viewmodel_offset" + "attribute_class" "min_viewmodel_offset" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + } + "797" + { + "name" "dmg pierces resists absorbs" + "attribute_class" "mod_pierce_resists_absorbs" + "description_string" "#Attrib_PierceResists" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "798" + { + "name" "energy buff dmg taken multiplier" + "attribute_class" "energy_buff_dmg_taken_multiplier" + "description_string" "#Attrib_EnergyBuffDmdTakenMultipier" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "799" + { + "name" "lose revenge crits on death DISPLAY ONLY" + "attribute_class" "lose_revenge_crits_on_death_DISPLAY_ONLY" + "description_string" "#Attrib_LoseRevengeCritsOnDeath" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "800" + { + "name" "patient overheal penalty" + "attribute_class" "mult_patient_overheal_penalty" + "description_string" "#Attrib_PatientOverheal_Penalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "801" + { + "name" "item_meter_charge_rate" + "attribute_class" "item_meter_charge_rate" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "804" + { + "name" "mult_spread_scale_first_shot" + "attribute_class" "mult_spread_scale_first_shot" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "805" + { + "name" "unusualifier_attribute_template_name" + "attribute_class" "unusualifier_attribute_template_name" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + } + "806" + { + "name" "tool_target_item_icon_offset" + "attribute_class" "tool_target_item_icon_offset" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + } + "807" + { + "name" "add_head_on_kill" + "attribute_class" "add_head_on_kill" + "description_string" "#Attrib_AddHeadOnKill" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "808" + { + "name" "mult_spread_scales_consecutive" + "attribute_class" "mult_spread_scales_consecutive" + "description_string" "#Attrib_SpreadPenaltyScalesCons" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "809" + { + "name" "fixed_shot_pattern" + "attribute_class" "fixed_shot_pattern" + "description_string" "#Attrib_FixedShotPattern" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "1" + } + "810" + { + "name" "mod_cloak_no_regen_from_items" + "attribute_class" "mod_cloak_no_regen_from_items" + "description_string" "#Attrib_NoCloakFromAmmo" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + } + "811" + { + "name" "ubercharge_preserved_on_spawn_max" + "attribute_class" "ubercharge_preserved_on_spawn_max" + "description_string" "#Attrib_UberchargeSavedOnHit" + "description_format" "value_is_additive_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_hit" + "stored_as_integer" "0" + } + "812" + { + "name" "mod_air_control_blast_jump" + "attribute_class" "mod_air_control_blast_jump" + "description_string" "#Attrib_AirControlBlastJump" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "813" + { + "name" "spunup_push_force_immunity" + "attribute_class" "spunup_push_force_immunity" + "description_string" "#Attrib_SpunUpPushForceResist" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + } + "814" + { + "name" "mod_mark_attacker_for_death" + "attribute_class" "mod_mark_attacker_for_death" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + } + "815" + { + "name" "use_model_cache_icon" + "attribute_class" "use_model_cache_icon" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "816" + { + "name" "mod_disguise_consumes_cloak" + "attribute_class" "mod_disguise_consumes_cloak" + "description_string" "#Attrib_DisguiseConsumesCloak" + "description_format" "value_is_additive" + "hidden" "0" + "stored_as_integer" "1" + "effect_type" "negative" + } + "817" + { + "name" "inspect_viewmodel_offset" + "attribute_class" "inspect_viewmodel_offset" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + } + "818" + { + "name" "is_passive_weapon" + "attribute_class" "is_passive_weapon" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "819" + { + "name" "no_jump" + "attribute_class" "no_jump" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "820" + { + "name" "no_duck" + "attribute_class" "no_duck" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "821" + { + "name" "no_attack" + "attribute_class" "no_attack" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "822" + { + "name" "airblast_destroy_projectile" + "attribute_class" "airblast_destroy_projectile" + "description_string" "#Attrib_AirblastDestroyProjectile" + "description_format" "value_is_additive" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "823" + { + "name" "airblast_pushback_disabled" + "attribute_class" "airblast_pushback_disabled" + "description_format" "value_is_additive" + "effect_type" "negative" + "stored_as_integer" "0" + } + "824" + { + "name" "airblast_pushback_no_stun" + "attribute_class" "airblast_pushback_no_stun" + "description_format" "value_is_additive" + "effect_type" "negative" + "stored_as_integer" "0" + } + "825" + { + "name" "airblast_pushback_no_viewpunch" + "attribute_class" "airblast_pushback_no_viewpunch" + "description_format" "value_is_additive" + "effect_type" "negative" + "stored_as_integer" "0" + } + "826" + { + "name" "airblast_deflect_projectiles_disabled" + "attribute_class" "airblast_deflect_projectiles_disabled" + "description_format" "value_is_additive" + "effect_type" "negative" + "stored_as_integer" "0" + } + "827" + { + "name" "airblast_put_out_teammate_disabled" + "attribute_class" "airblast_put_out_teammate_disabled" + "description_format" "value_is_additive" + "effect_type" "negative" + "stored_as_integer" "0" + } + "828" + { + "name" "afterburn duration penalty" + "attribute_class" "afterburn_duration_mult" + "description_format" "value_is_percentage" + "effect_type" "negative" + "stored_as_integer" "0" + } + "829" + { + "name" "afterburn duration bonus" + "attribute_class" "afterburn_duration_mult" + "description_format" "value_is_percentage" + "effect_type" "positive" + "stored_as_integer" "0" + } + "830" + { + "name" "aoe_deflection" + "attribute_class" "aoe_deflection" + "description_format" "value_is_additive" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "831" + { + "name" "mult_end_flame_size" + "attribute_class" "mult_end_flame_size" + "description_format" "value_is_percentage" + "effect_type" "positive" + "stored_as_integer" "0" + "hidden" "1" + } + "832" + { + "name" "airblast_give_teammate_speed_boost" + "attribute_class" "airblast_give_teammate_speed_boost" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "0" + } + "833" + { + "name" "airblast_turn_projectile_to_ammo" + "attribute_class" "airblast_turn_projectile_to_ammo" + "description_format" "value_is_additive" + "effect_type" "neutral" + "stored_as_integer" "0" + } + "834" + { + "name" "paintkit_proto_def_index" + "attribute_class" "paintkit_proto_def_index" + "description_format" "value_is_additive" + "effect_type" "neutral" + "stored_as_integer" "1" + "can_affect_market_name" "1" + } + "835" + { + "name" "taunt_attr_player_invis_percent" + "attribute_class" "taunt_attr_player_invis_percent" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "837" + { + "name" "redirected_flame_size_mult" + "attribute_class" "redirected_flame_size_mult" + "description_format" "value_is_percentage" + "effect_type" "positive" + "stored_as_integer" "0" + } + "838" + { + "name" "flame_reflect_on_collision" + "attribute_class" "flame_reflect_on_collision" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "0" + } + "839" + { + "name" "flame_spread_degree" + "attribute_class" "flame_spread_degree" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "0" + } + "840" + { + "name" "holster_anim_time" + "attribute_class" "holster_anim_time" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "841" + { + "name" "flame_gravity" + "attribute_class" "flame_gravity" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "842" + { + "name" "flame_ignore_player_velocity" + "attribute_class" "flame_ignore_player_velocity" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "843" + { + "name" "flame_drag" + "attribute_class" "flame_drag" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "844" + { + "name" "flame_speed" + "attribute_class" "flame_speed" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "845" + { + "name" "grenades1_resupply_denied" + "attribute_class" "grenades1_resupply_denied" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "846" + { + "name" "grenades2_resupply_denied" + "attribute_class" "grenades2_resupply_denied" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "847" + { + "name" "grenades3_resupply_denied" + "attribute_class" "grenades3_resupply_denied" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "848" + { + "name" "item_meter_resupply_denied" + "attribute_class" "item_meter_resupply_denied" + "description_string" "#Attrib_MeterResupplyDenied" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "851" + { + "name" "mult_player_movespeed_active" + "attribute_class" "mult_player_movespeed_active" + "description_string" "#Attrib_MoveSpeed_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "852" + { + "name" "mult_dmgtaken_active" + "attribute_class" "mult_dmgtaken_active" + "description_string" "#Attrib_DmgTaken_Increased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "853" + { + "name" "mult_patient_overheal_penalty_active" + "attribute_class" "mult_patient_overheal_penalty_active" + "description_string" "#Attrib_PatientOverheal_Penalty" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "854" + { + "name" "mult_health_fromhealers_penalty_active" + "attribute_class" "mult_health_fromhealers_penalty_active" + "description_string" "#Attrib_HealthFromHealers_Reduced" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + "855" + { + "name" "mod_maxhealth_drain_rate" + "attribute_class" "mod_maxhealth_drain_rate" + "description_string" "#Attrib_MaxHealthDrain" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_active" + "stored_as_integer" "0" + } + "856" + { + "name" "item_meter_charge_type" + "attribute_class" "item_meter_charge_type" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "859" + { + "name" "max_flame_reflection_count" + "attribute_class" "max_flame_reflection_count" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "860" + { + "name" "flame_reflection_add_life_time" + "attribute_class" "flame_reflection_add_life_time" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "861" + { + "name" "reflected_flame_dmg_reduction" + "attribute_class" "reflected_flame_dmg_reduction" + "description_format" "value_is_percentage" + "hidden" "1" + "stored_as_integer" "0" + } + "862" + { + "name" "flame_lifetime" + "attribute_class" "flame_lifetime" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "863" + { + "name" "flame_random_life_time_offset" + "attribute_class" "flame_random_life_time_offset" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "865" + { + "name" "flame_up_speed" + "attribute_class" "flame_up_speed" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "866" + { + "name" "custom_paintkit_seed_lo" + "attribute_class" "custom_paintkit_seed_lo" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "867" + { + "name" "custom_paintkit_seed_hi" + "attribute_class" "custom_paintkit_seed_hi" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "868" + { + "name" "crit_dmg_falloff" + "attribute_class" "crit_dmg_falloff" + "description_string" "#Attrib_Dmg_Crit_Falloff" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "869" + { + "name" "crits_become_minicrits" + "attribute_class" "crits_become_minicrits" + "description_string" "#Attrib_CritsBecomeMinicrits" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "870" + { + "name" "falling_impact_radius_pushback" + "attribute_class" "falling_impact_radius_pushback" + "description_string" "#Attrib_ImpactPushback" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "871" + { + "name" "falling_impact_radius_stun" + "attribute_class" "falling_impact_radius_stun" + "description_string" "#Attrib_ImpactStun" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "872" + { + "name" "thermal_thruster_air_launch" + "attribute_class" "thermal_thruster_air_launch" + "description_string" "#Attrib_ThermalThrusterAirLaunch" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "873" + { + "name" "thermal_thruster" + "attribute_class" "thermal_thruster" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "874" + { + "name" "mult_item_meter_charge_rate" + "attribute_class" "mult_item_meter_charge_rate" + "description_string" "#Attrib_ChargeMeterRateMult" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "stored_as_integer" "0" + } + "875" + { + "name" "explode_on_ignite" + "attribute_class" "explode_on_ignite" + "description_string" "#Attrib_ExplodeOnIgnite" + "description_format" "value_is_additive" + "hidden" "0" + "stored_as_integer" "0" + } + "876" + { + "name" "lunchbox healing decreased" + "attribute_class" "lunchbox_healing_scale" + "description_string" "#Attrib_LunchboxHealingDecreased" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "877" + { + "name" "speed_boost_on_hit_enemy" + "attribute_class" "speed_boost_on_hit_enemy" + "description_string" "#Attrib_SpeedBoostEnemy" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "878" + { + "name" "item_meter_starts_empty_DISPLAY_ONLY" + "attribute_class" "item_meter_starts_empty_DISPLAY_ONLY" + "description_string" "#Attrib_MeterStartsEmpty" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "879" + { + "name" "item_meter_charge_type_3_DISPLAY_ONLY" + "attribute_class" "item_meter_charge_type_3_DISPLAY_ONLY" + "description_string" "#Attrib_MeterChargeType3" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + } + "880" + { + "name" "repair health to metal ratio DISPLAY ONLY" + "attribute_class" "repair_health_to_metal_ratio_DISPLAY_ONLY" + "description_string" "#Attrib_RepairHealthToMetalRatio" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "881" + { + "name" "health drain medic" + "attribute_class" "add_health_regen" + "description_string" "#Attrib_HealthDrainMedic" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + "armory_desc" "on_wearer" + "stored_as_integer" "0" + } + + + "1000" + { + "name" "CARD: damage bonus" + "attribute_class" "mult_dmg" + "description_string" "#Attrib_DamageDone_Positive" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "is_user_generated" "1" + } + "1001" + { + "name" "CARD: dmg taken from bullets reduced" + "attribute_class" "mult_dmgtaken_from_bullets" + "description_string" "#Attrib_DmgTaken_From_Bullets_Reduced" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "is_user_generated" "1" + } + "1002" + { + "name" "CARD: move speed bonus" + "attribute_class" "mult_player_movespeed" + "description_string" "#Attrib_MoveSpeed_Bonus" + "description_format" "value_is_percentage" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "is_user_generated" "1" + } + "1003" + { + "name" "CARD: health regen" + "attribute_class" "add_health_regen" + "description_string" "#Attrib_HealthRegen" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "armory_desc" "on_wearer" + "is_user_generated" "1" + } + "1004" + { + "name" "SPELL: set item tint RGB" + "attribute_class" "set_item_tint_rgb_override" + "description_string" "#Attrib_HalloweenSpell_RGB" + "description_format" "value_is_from_lookup_table" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "2" + } + "1005" + { + "name" "SPELL: set Halloween footstep type" + "attribute_class" "halloween_footstep_type" + "description_string" "#Attrib_HalloweenSpell_Footstep" + "description_format" "value_is_from_lookup_table" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "2" + } + "1006" + { + "name" "SPELL: Halloween voice modulation" + "attribute_class" "halloween_voice_modulation" + "description_string" "#Attrib_HalloweenSpell_Voice" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "2" + } + "1007" + { + "name" "SPELL: Halloween pumpkin explosions" + "attribute_class" "halloween_pumpkin_explosions" + "description_string" "#Attrib_HalloweenSpell_PumpkinBombs" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "2" + } + "1008" + { + "name" "SPELL: Halloween green flames" + "attribute_class" "halloween_green_flames" + "description_string" "#Attrib_HalloweenSpell_GreenFlames" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "2" + } + "1009" + { + "name" "SPELL: Halloween death ghosts" + "attribute_class" "halloween_death_ghosts" + "description_string" "#Attrib_HalloweenSpell_DeathGhosts" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "2" + } + "1030" + { + "name" "Attack not cancel charge" + "attribute_class" "attack_not_cancel_charge" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + "is_user_generated" "1" + } + "2000" + { + "name" "recipe component defined item 1" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2001" + { + "name" "recipe component defined item 2" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2002" + { + "name" "recipe component defined item 3" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2003" + { + "name" "recipe component defined item 4" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2004" + { + "name" "recipe component defined item 5" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2005" + { + "name" "recipe component defined item 6" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2006" + { + "name" "recipe component defined item 7" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2007" + { + "name" "recipe component defined item 8" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2008" + { + "name" "recipe component defined item 9" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2009" + { + "name" "recipe component defined item 10" + "attribute_class" "dynamic_recipe_component_defined_item" + "attribute_type" "dynamic_recipe_component_defined_item" + "can_affect_market_name" "1" + } + "2010" + { + "name" "start drop date" + "attribute_class" "start_drop_date" + "attribute_type" "string" + "description_format" "value_is_date" + } + "2011" + { + "name" "end drop date" + "attribute_class" "end_drop_date" + "attribute_type" "string" + "description_format" "value_is_date" + } + "2012" + { + "name" "tool target item" + "attribute_class" "tool_target_item" + "hidden" "1" + "can_affect_market_name" "1" + } + "2013" + { + "name" "killstreak effect" + "attribute_class" "killstreak_effect" + "description_string" "#Attrib_KillStreakEffect" + "description_format" "value_is_killstreakeffect_index" + "stored_as_integer" "0" + "effect_type" "positive" + "can_affect_recipe_component_name" "1" + } + "2014" + { + "name" "killstreak idleeffect" + "attribute_class" "killstreak_idleeffect" + "description_string" "#Attrib_KillStreakIdleEffect" + "description_format" "value_is_killstreak_idleeffect_index" + "stored_as_integer" "0" + "effect_type" "positive" + "can_affect_recipe_component_name" "1" + } + + "2015" + { + "name" "spellbook page attr id" + "attribute_class" "spellbook_page_attr_id" + "hidden" "1" + } + "2016" + { + "name" "Halloween Spellbook Page: Tumidum" + "attribute_class" "tf_halloween_spell_page" + "description_string" "#Attrib_HalloweenSpellbookPage_A" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "1" + } + "2017" + { + "name" "Halloween Spellbook Page: Gratanter" + "attribute_class" "tf_halloween_spell_page" + "description_string" "#Attrib_HalloweenSpellbookPage_B" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "1" + } + "2018" + { + "name" "Halloween Spellbook Page: Audere" + "attribute_class" "tf_halloween_spell_page" + "description_string" "#Attrib_HalloweenSpellbookPage_C" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "1" + } + "2019" + { + "name" "Halloween Spellbook Page: Congeriae" + "attribute_class" "tf_halloween_spell_page" + "description_string" "#Attrib_HalloweenSpellbookPage_D" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "1" + } + "2020" + { + "name" "Halloween Spellbook Page: Veteris" + "attribute_class" "tf_halloween_spell_page" + "description_string" "#Attrib_HalloweenSpellbookPage_E" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "1" + } + "2021" + { + "name" "additional halloween response criteria name" + "attribute_class" "additional_halloween_response_criteria_name" + "attribute_type" "string" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + } + "2022" + { + "name" "loot rarity" + "attribute_class" "loot_rarity" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "1" + } + "2023" + { + "name" "quality text override" + "attribute_class" "quality_text_override" + "attribute_type" "string" + "hidden" "1" + } + "2024" + { + "name" "item name text override" + "attribute_class" "item_name_text_override" + "attribute_type" "string" + "hidden" "1" + } + "2025" + { + "name" "killstreak tier" + "attribute_class" "killstreak_tier" + "can_affect_market_name" "1" + "description_string" "#Attrib_KillStreakTier" + "description_format" "value_is_additive" + "effect_type" "positive" + "stored_as_integer" "0" + } + "2026" + { + "name" "wide item level" + "attribute_class" "wide_item_level" + "hidden" "1" + "stored_as_integer" "1" + } + "2027" + { + "name" "is australium item" + "attribute_class" "is_australium_item" + "can_affect_market_name" "1" + "hidden" "1" + "description_format" "value_is_additive" + "stored_as_integer" "1" + } + "2028" + { + "name" "is marketable" + "attribute_class" "is_marketable" + "hidden" "1" + } + "2029" + { + "name" "allowed in medieval mode" + "attribute_class" "allowed_in_medieval_mode" + "hidden" "1" + } + "2030" + { + "name" "crit on hard hit" + "attribute_class" "crit_on_hard_hit" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "positive" + "stored_as_integer" "0" + } + "2031" + { + "name" "series number" + "attribute_class" "series_number" + "hidden" "1" + "can_affect_market_name" "1" + } + "2032" + { + "name" "recipe no partial complete" + "attribute_class" "recipe_no_partial_complete" + "hidden" "1" + } + "2034" + { + "name" "kill refills meter" + "attribute_class" "kill_refills_meter" + "description_string" "#Attrib_KillsRefillMeter" + "description_format" "value_is_additive_percentage" + "stored_as_integer" "0" + "effect_type" "positive" + } + "2035" + { + "name" "random drop line item unusual chance" + "hidden" "1" + } + "2036" + { + "name" "random drop line item unusual list" + "attribute_type" "string" + "hidden" "1" + } + "2037" + { + "name" "random drop line item 0" + "stored_as_integer" "1" + "hidden" "1" + } + "2038" + { + "name" "random drop line item 1" + "stored_as_integer" "1" + "hidden" "1" + } + "2039" + { + "name" "random drop line item 2" + "stored_as_integer" "1" + "hidden" "1" + } + "2040" + { + "name" "random drop line item 3" + "stored_as_integer" "1" + "hidden" "1" + } + "2041" + { + "name" "taunt attach particle index" + "hidden" "0" + "description_string" "#Attrib_AttachedParticle" + "description_format" "value_is_particle_index" + "effect_type" "unusual" + "stored_as_integer" "1" + "can_affect_market_name" "1" + } + "2042" + { + "name" "loot list name" + "attribute_type" "string" + "hidden" "1" + } + "2043" + { + "name" "upgrade rate decrease" + "attribute_class" "upgrade_rate_mod" + "description_string" "#Attrib_UpgradeRate_Decreased" + "description_format" "value_is_inverted_percentage" + "hidden" "0" + "effect_type" "negative" + "stored_as_integer" "0" + } + "2044" + { + "name" "can shuffle crate contents" + "hidden" "1" + } + "2045" + { + "name" "random drop line item footer desc" + "attribute_type" "string" + "hidden" "1" + } + "2046" + { + "name" "is commodity" + "hidden" "1" + } + "2048" + { + "name" "voice pitch scale" + "attribute_class" "voice_pitch_scale" + "description_format" "value_is_percentage" + "description_string" "#Attrib_NoDoubleJump" + "description_format" "value_is_additive" + "hidden" "1" + "effect_type" "negative" + "stored_as_integer" "0" + } + "2049" + { + "name" "gunslinger punch combo" + "attribute_class" "gunslinger_punch_combo" + "description_format" "value_is_additive" + "description_string" "#Attrib_GunslingerPunchCombo" + "effect_type" "positive" + } + "2050" + { + "name" "cannot delete" + "hidden" "1" + } + "2051" + { + "name" "quest loaner id low" + "hidden" "1" + "stored_as_integer" "1" + } + "2052" + { + "name" "quest loaner id hi" + "hidden" "1" + "stored_as_integer" "1" + } + "2053" + { + "name" "is_festivized" + "attribute_class" "is_festivized" + "description_string" "#Attrib_IsFestivized" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "unusual" + "can_affect_market_name" "1" + } + "2054" + { + "name" "fire particle blue" + "attribute_type" "string" + "hidden" "1" + } + "2055" + { + "name" "fire particle red" + "attribute_type" "string" + "hidden" "1" + } + "2056" + { + "name" "fire particle blue crit" + "attribute_type" "string" + "hidden" "1" + } + "2057" + { + "name" "fire particle red crit" + "attribute_type" "string" + "hidden" "1" + } + "2058" + { + "name" "meter_label" + "attribute_type" "string" + "hidden" "1" + } + "2059" + { + "name" "item_meter_damage_for_full_charge" + "attribute_class" "item_meter_damage_for_full_charge" + "description_format" "value_is_additive" + "hidden" "1" + "stored_as_integer" "0" + } + "2062" + { + "name" "airblast cost scale hidden" + "attribute_class" "mult_airblast_cost" + "hidden" "1" + "description_format" "value_is_percentage" + "stored_as_integer" "0" + } + "2063" + { + "name" "dragons fury positive properties" + "attribute_class" "dragons_fury_positive_properties" + "description_string" "#TF_Weapon_DragonsFury_PositiveDesc" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "2064" + { + "name" "dragons fury negative properties" + "attribute_class" "dragons_fury_negative_properties" + "description_string" "#TF_Weapon_DragonsFury_NegativeDesc" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "negative" + } + "2065" + { + "name" "dragons fury neutral properties" + "attribute_class" "dragons_fury_neutral_properties" + "description_string" "#TF_Weapon_DragonsFury_NeutralDesc" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "neutral" + } + "2066" + { + "name" "force center wrap" + "hidden" "1" + } + "2067" + { + "name" "attack_minicrits_and_consumes_burning" + "attribute_class" "attack_minicrits_and_consumes_burning" + "description_string" "#Attrib_ConsumesBurning" + "description_format" "value_is_additive" + "hidden" "0" + "effect_type" "positive" + } + "2068" + { + "name" "is winter case" + "hidden" "1" + } + + "3000" + { + "name" "item slot criteria 1" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3001" + { + "name" "item in slot 1" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3002" + { + "name" "item slot criteria 2" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3003" + { + "name" "item in slot 2" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3004" + { + "name" "item slot criteria 3" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3005" + { + "name" "item in slot 3" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3006" + { + "name" "item slot criteria 4" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3007" + { + "name" "item in slot 4" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3008" + { + "name" "item slot criteria 5" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3009" + { + "name" "item in slot 5" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3010" + { + "name" "item slot criteria 6" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3011" + { + "name" "item in slot 6" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3012" + { + "name" "item slot criteria 7" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3013" + { + "name" "item in slot 7" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3014" + { + "name" "item slot criteria 8" + "attribute_class" "item_slot_criteria" + "attribute_type" "item_slot_criteria" + } + "3015" + { + "name" "item in slot 8" + "attribute_class" "item_in_slot" + "attribute_type" "uint64" + } + "3016" + { + "name" "quest earned standard points" + "attribute_class" "quest_earned_standard_points" + "hidden" "1" + "stored_as_integer" "1" + } + "3017" + { + "name" "quest earned bonus points" + "attribute_class" "quest_earned_bonus_points" + "hidden" "1" + "stored_as_integer" "1" + } + "3018" + { + "name" "item drop wave" + "attribute_class" "item_drop_wave" + "hidden" "1" + "stored_as_integer" "1" + } + + + + + } + "item_criteria_templates" + { + "unusual_hat_criteria" + { + "tags" "is_cosmetic" + "equip_regions" "hat whole_head" + } + + "unusual_taunt_criteria" + { + "tags" "is_taunt_item" + } + } + "random_attribute_templates" + { + "is_tradable" + { + "is_even_chance_attr" + { + "cannot trade" "0" + } + } + + "not_tradable" + { + "is_even_chance_attr" + { + "cannot trade" "1" + } + } + + "is_craftable" + { + "is_even_chance_attr" + { + "never craftable" "0" + } + } + + "not_craftable" + { + "is_even_chance_attr" + { + "never craftable" "1" + } + } + + "unusual_hat_effects_series_1" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "6" + "hat only unusual effect" "7" + "hat only unusual effect" "8" + "hat only unusual effect" "9" + "hat only unusual effect" "10" + "hat only unusual effect" "11" + "hat only unusual effect" "12" + "hat only unusual effect" "13" + "hat only unusual effect" "14" + "hat only unusual effect" "15" + "hat only unusual effect" "16" + "hat only unusual effect" "17" + "hat only unusual effect" "18" + "hat only unusual effect" "19" + } + } + + "unusual_hat_effects_series_2" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "29" + "hat only unusual effect" "30" + "hat only unusual effect" "31" + "hat only unusual effect" "32" + "hat only unusual effect" "33" + "hat only unusual effect" "34" + "hat only unusual effect" "35" + "hat only unusual effect" "36" + } + } + + "unusual_hat_effects_series_3" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "56" + "hat only unusual effect" "57" + "hat only unusual effect" "58" + "hat only unusual effect" "59" + "hat only unusual effect" "60" + "hat only unusual effect" "61" + "hat only unusual effect" "62" + } + } + + "unusual_hat_effects_series_1_2_3" + { + "even_chance_templates" + { + "unusual_hat_effects_series_1" "1" + "unusual_hat_effects_series_2" "1" + "unusual_hat_effects_series_3" "1" + } + } + + "unusual_hat_effects_halloween_2011" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "37" + "hat only unusual effect" "38" + "hat only unusual effect" "39" + "hat only unusual effect" "40" + } + } + + "unusual_hat_effects_halloween_2012" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "43" + "hat only unusual effect" "44" + "hat only unusual effect" "45" + "hat only unusual effect" "46" + "hat only unusual effect" "47" + } + } + + "unusual_hat_effects_robo_2013" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "63" + "hat only unusual effect" "64" + "hat only unusual effect" "65" + "hat only unusual effect" "66" + "hat only unusual effect" "67" + "hat only unusual effect" "68" + "hat only unusual effect" "69" + "hat only unusual effect" "70" + "hat only unusual effect" "71" + "hat only unusual effect" "72" + } + } + + "unusual_hat_effects_halloween_2013" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "73" + "hat only unusual effect" "74" + "hat only unusual effect" "75" + "hat only unusual effect" "76" + "hat only unusual effect" "77" + "hat only unusual effect" "78" + "hat only unusual effect" "79" + "hat only unusual effect" "80" + } + } + + "unusual_hat_effects_halloween_2014" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "81" + "hat only unusual effect" "82" + "hat only unusual effect" "83" + "hat only unusual effect" "84" + "hat only unusual effect" "85" + "hat only unusual effect" "86" + } + } + + "unusual_hat_effects_etol" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "87" + "hat only unusual effect" "88" + "hat only unusual effect" "89" + "hat only unusual effect" "90" + } + } + + "unusual_hat_chance_invasion" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "91" + "hat only unusual effect" "92" + "hat only unusual effect" "93" + "hat only unusual effect" "94" + "hat only unusual effect" "95" + "hat only unusual effect" "96" + "hat only unusual effect" "97" + "hat only unusual effect" "98" + "hat only unusual effect" "99" + } + } + + "unusual_hat_chance_halloween2015" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "100" + "hat only unusual effect" "101" + "hat only unusual effect" "102" + "hat only unusual effect" "103" + "hat only unusual effect" "104" + "hat only unusual effect" "105" + "hat only unusual effect" "106" + } + } + + "unusual_hat_chance_halloween2016_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "107" + "hat only unusual effect" "108" + "hat only unusual effect" "109" + "hat only unusual effect" "110" + } + } + + "unusual_hat_chance_halloween2018_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "111" + "hat only unusual effect" "112" + "hat only unusual effect" "113" + + "hat only unusual effect" "114" + "hat only unusual effect" "115" + "hat only unusual effect" "116" + + "hat only unusual effect" "117" + "hat only unusual effect" "118" + "hat only unusual effect" "119" + + "hat only unusual effect" "120" + "hat only unusual effect" "120" + "hat only unusual effect" "120" + + "hat only unusual effect" "121" + "hat only unusual effect" "121" + "hat only unusual effect" "121" + } + } + + "unusual_hat_chance_halloween2019_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "122" + "hat only unusual effect" "122" + "hat only unusual effect" "122" + + "hat only unusual effect" "123" + "hat only unusual effect" "124" + "hat only unusual effect" "125" + + "hat only unusual effect" "126" + "hat only unusual effect" "126" + "hat only unusual effect" "127" + + "hat only unusual effect" "128" + "hat only unusual effect" "129" + "hat only unusual effect" "130" + + "hat only unusual effect" "131" + "hat only unusual effect" "132" + "hat only unusual effect" "133" + } + } + + "unusual_hat_chance_smissmas2019_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "134" + "hat only unusual effect" "134" + "hat only unusual effect" "134" + + "hat only unusual effect" "135" + "hat only unusual effect" "135" + "hat only unusual effect" "135" + + "hat only unusual effect" "136" + "hat only unusual effect" "137" + "hat only unusual effect" "138" + + "hat only unusual effect" "139" + "hat only unusual effect" "141" + "hat only unusual effect" "142" + + "hat only unusual effect" "143" + "hat only unusual effect" "144" + "hat only unusual effect" "144" + + "hat only unusual effect" "145" + "hat only unusual effect" "145" + "hat only unusual effect" "145" + } + } + + "unusual_hat_chance_summer2020_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "147" + "hat only unusual effect" "148" + "hat only unusual effect" "149" + "hat only unusual effect" "150" + + "hat only unusual effect" "151" + "hat only unusual effect" "151" + "hat only unusual effect" "151" + "hat only unusual effect" "151" + + "hat only unusual effect" "152" + "hat only unusual effect" "153" + "hat only unusual effect" "154" + "hat only unusual effect" "154" + + "hat only unusual effect" "155" + "hat only unusual effect" "155" + "hat only unusual effect" "155" + "hat only unusual effect" "155" + } + } + + "unusual_hat_chance_halloween2020_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "156" + "hat only unusual effect" "157" + "hat only unusual effect" "158" + + "hat only unusual effect" "159" + "hat only unusual effect" "159" + "hat only unusual effect" "159" + + "hat only unusual effect" "160" + "hat only unusual effect" "160" + "hat only unusual effect" "161" + + "hat only unusual effect" "162" + "hat only unusual effect" "162" + "hat only unusual effect" "162" + + "hat only unusual effect" "163" + "hat only unusual effect" "163" + "hat only unusual effect" "163" + } + } + + "unusual_hat_chance_smissmas2020_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "164" + "hat only unusual effect" "164" + "hat only unusual effect" "165" + "hat only unusual effect" "165" + "hat only unusual effect" "166" + "hat only unusual effect" "166" + + "hat only unusual effect" "167" + "hat only unusual effect" "167" + "hat only unusual effect" "167" + "hat only unusual effect" "168" + "hat only unusual effect" "168" + "hat only unusual effect" "168" + + "hat only unusual effect" "169" + "hat only unusual effect" "169" + "hat only unusual effect" "170" + "hat only unusual effect" "170" + "hat only unusual effect" "171" + "hat only unusual effect" "171" + + "hat only unusual effect" "172" + "hat only unusual effect" "172" + "hat only unusual effect" "173" + "hat only unusual effect" "173" + "hat only unusual effect" "174" + "hat only unusual effect" "174" + + "hat only unusual effect" "175" + "hat only unusual effect" "175" + "hat only unusual effect" "175" + "hat only unusual effect" "175" + "hat only unusual effect" "175" + "hat only unusual effect" "175" + } + } + + "unusual_hat_chance_summer2021_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "177" + "hat only unusual effect" "178" + "hat only unusual effect" "179" + + "hat only unusual effect" "180" + "hat only unusual effect" "180" + "hat only unusual effect" "180" + + "hat only unusual effect" "181" + "hat only unusual effect" "182" + "hat only unusual effect" "183" + + "hat only unusual effect" "185" + "hat only unusual effect" "185" + "hat only unusual effect" "185" + + "hat only unusual effect" "186" + "hat only unusual effect" "186" + "hat only unusual effect" "187" + + "hat only unusual effect" "188" + "hat only unusual effect" "188" + "hat only unusual effect" "188" + } + } + + "unusual_hat_chance_halloween2021_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "189" + "hat only unusual effect" "190" + "hat only unusual effect" "191" + + "hat only unusual effect" "192" + "hat only unusual effect" "193" + "hat only unusual effect" "193" + + "hat only unusual effect" "195" + "hat only unusual effect" "196" + "hat only unusual effect" "197" + + "hat only unusual effect" "198" + "hat only unusual effect" "199" + "hat only unusual effect" "200" + + "hat only unusual effect" "201" + "hat only unusual effect" "201" + "hat only unusual effect" "201" + + "hat only unusual effect" "202" + "hat only unusual effect" "203" + "hat only unusual effect" "204" + } + } + + "unusual_hat_chance_smissmas2021_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "205" + "hat only unusual effect" "205" + "hat only unusual effect" "205" + + "hat only unusual effect" "206" + "hat only unusual effect" "207" + "hat only unusual effect" "207" + + "hat only unusual effect" "209" + "hat only unusual effect" "210" + "hat only unusual effect" "211" + + "hat only unusual effect" "212" + "hat only unusual effect" "212" + "hat only unusual effect" "213" + + "hat only unusual effect" "214" + "hat only unusual effect" "215" + "hat only unusual effect" "216" + + "hat only unusual effect" "218" + "hat only unusual effect" "218" + "hat only unusual effect" "218" + + "hat only unusual effect" "219" + "hat only unusual effect" "220" + "hat only unusual effect" "221" + + "hat only unusual effect" "223" + "hat only unusual effect" "223" + "hat only unusual effect" "223" + } + } + + "unusual_hat_chance_summer2022_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "224" + "hat only unusual effect" "224" + "hat only unusual effect" "224" + "hat only unusual effect" "224" + "hat only unusual effect" "224" + "hat only unusual effect" "224" + "hat only unusual effect" "224" + + "hat only unusual effect" "226" + "hat only unusual effect" "226" + "hat only unusual effect" "226" + "hat only unusual effect" "226" + "hat only unusual effect" "228" + "hat only unusual effect" "228" + "hat only unusual effect" "228" + + "hat only unusual effect" "229" + "hat only unusual effect" "229" + "hat only unusual effect" "230" + "hat only unusual effect" "230" + "hat only unusual effect" "230" + "hat only unusual effect" "231" + "hat only unusual effect" "231" + + "hat only unusual effect" "232" + "hat only unusual effect" "233" + "hat only unusual effect" "234" + "hat only unusual effect" "235" + "hat only unusual effect" "236" + "hat only unusual effect" "237" + "hat only unusual effect" "238" + + "hat only unusual effect" "239" + "hat only unusual effect" "239" + "hat only unusual effect" "239" + "hat only unusual effect" "241" + "hat only unusual effect" "241" + "hat only unusual effect" "242" + "hat only unusual effect" "242" + + "hat only unusual effect" "243" + "hat only unusual effect" "243" + "hat only unusual effect" "243" + "hat only unusual effect" "243" + "hat only unusual effect" "243" + "hat only unusual effect" "243" + "hat only unusual effect" "243" + + "hat only unusual effect" "244" + "hat only unusual effect" "244" + "hat only unusual effect" "244" + "hat only unusual effect" "244" + "hat only unusual effect" "244" + "hat only unusual effect" "244" + "hat only unusual effect" "244" + + "hat only unusual effect" "245" + "hat only unusual effect" "245" + "hat only unusual effect" "247" + "hat only unusual effect" "247" + "hat only unusual effect" "248" + "hat only unusual effect" "248" + "hat only unusual effect" "249" + + "hat only unusual effect" "250" + "hat only unusual effect" "250" + "hat only unusual effect" "250" + "hat only unusual effect" "251" + "hat only unusual effect" "251" + "hat only unusual effect" "252" + "hat only unusual effect" "252" + + "hat only unusual effect" "253" + "hat only unusual effect" "253" + "hat only unusual effect" "253" + "hat only unusual effect" "253" + "hat only unusual effect" "253" + "hat only unusual effect" "253" + "hat only unusual effect" "253" + + "hat only unusual effect" "254" + "hat only unusual effect" "254" + "hat only unusual effect" "254" + "hat only unusual effect" "255" + "hat only unusual effect" "255" + "hat only unusual effect" "256" + "hat only unusual effect" "256" + } + } + + "unusual_hat_chance_halloween2022_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "257" + "hat only unusual effect" "258" + "hat only unusual effect" "258" + + "hat only unusual effect" "259" + "hat only unusual effect" "260" + "hat only unusual effect" "260" + + "hat only unusual effect" "261" + "hat only unusual effect" "263" + "hat only unusual effect" "264" + + "hat only unusual effect" "265" + "hat only unusual effect" "265" + "hat only unusual effect" "265" + + "hat only unusual effect" "266" + "hat only unusual effect" "266" + "hat only unusual effect" "266" + + "hat only unusual effect" "267" + "hat only unusual effect" "269" + "hat only unusual effect" "270" + } + } + + "unusual_hat_chance_smissmas2022_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "271" + "hat only unusual effect" "272" + "hat only unusual effect" "273" + + "hat only unusual effect" "274" + "hat only unusual effect" "274" + "hat only unusual effect" "276" + + "hat only unusual effect" "277" + "hat only unusual effect" "277" + "hat only unusual effect" "277" + + "hat only unusual effect" "278" + "hat only unusual effect" "278" + "hat only unusual effect" "278" + } + } + + "unusual_hat_chance_summer2023_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "279" + "hat only unusual effect" "279" + "hat only unusual effect" "279" + + "hat only unusual effect" "281" + "hat only unusual effect" "283" + "hat only unusual effect" "284" + + "hat only unusual effect" "285" + "hat only unusual effect" "286" + "hat only unusual effect" "287" + + "hat only unusual effect" "288" + "hat only unusual effect" "288" + "hat only unusual effect" "288" + + "hat only unusual effect" "289" + "hat only unusual effect" "289" + "hat only unusual effect" "289" + + "hat only unusual effect" "290" + "hat only unusual effect" "290" + "hat only unusual effect" "290" + + "hat only unusual effect" "291" + "hat only unusual effect" "291" + "hat only unusual effect" "291" + + "hat only unusual effect" "292" + "hat only unusual effect" "292" + "hat only unusual effect" "292" + } + } + + "unusual_hat_chance_halloween2023_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "293" + "hat only unusual effect" "294" + "hat only unusual effect" "294" + + "hat only unusual effect" "295" + "hat only unusual effect" "295" + "hat only unusual effect" "295" + + "hat only unusual effect" "297" + "hat only unusual effect" "299" + "hat only unusual effect" "300" + + "hat only unusual effect" "301" + "hat only unusual effect" "301" + "hat only unusual effect" "303" + + "hat only unusual effect" "304" + "hat only unusual effect" "304" + "hat only unusual effect" "304" + + "hat only unusual effect" "305" + "hat only unusual effect" "305" + "hat only unusual effect" "305" + + "hat only unusual effect" "306" + "hat only unusual effect" "307" + "hat only unusual effect" "308" + } + } + + "unusual_hat_chance_smissmas2023_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "309" + "hat only unusual effect" "309" + "hat only unusual effect" "311" + + "hat only unusual effect" "312" + "hat only unusual effect" "312" + "hat only unusual effect" "314" + + "hat only unusual effect" "315" + "hat only unusual effect" "315" + "hat only unusual effect" "317" + + "hat only unusual effect" "318" + "hat only unusual effect" "318" + "hat only unusual effect" "320" + + "hat only unusual effect" "321" + "hat only unusual effect" "321" + "hat only unusual effect" "321" + + "hat only unusual effect" "322" + "hat only unusual effect" "324" + "hat only unusual effect" "325" + } + } + + "unusual_hat_chance_summer2024_case" + { + "item_criteria_templates" + { + "unusual_hat_criteria" "1" + } + + "is_even_chance_attr" + { + "hat only unusual effect" "327" + "hat only unusual effect" "329" + "hat only unusual effect" "330" + + "hat only unusual effect" "331" + "hat only unusual effect" "333" + "hat only unusual effect" "334" + + "hat only unusual effect" "335" + "hat only unusual effect" "335" + "hat only unusual effect" "335" + + "hat only unusual effect" "336" + "hat only unusual effect" "336" + "hat only unusual effect" "336" + + "hat only unusual effect" "337" + "hat only unusual effect" "339" + "hat only unusual effect" "340" + + "hat only unusual effect" "341" + "hat only unusual effect" "341" + "hat only unusual effect" "341" + + "hat only unusual effect" "342" + "hat only unusual effect" "342" + "hat only unusual effect" "342" + + "hat only unusual effect" "344" + "hat only unusual effect" "344" + "hat only unusual effect" "345" + + "hat only unusual effect" "346" + "hat only unusual effect" "346" + "hat only unusual effect" "346" + + "hat only unusual effect" "348" + "hat only unusual effect" "348" + "hat only unusual effect" "348" + + "hat only unusual effect" "349" + "hat only unusual effect" "349" + "hat only unusual effect" "349" + } + } + + "kill_eater_template" + { + "kill eater" + { + "attribute_class" "kill_eater" + "value" "0" + "weight" "1" + } + } + + "kill_eater_2_template" + { + "kill eater 2" + { + "attribute_class" "kill_eater_2" + "value" "0" + "weight" "1" + } + } + + "kill_eater_3_template" + { + "kill eater 3" + { + "attribute_class" "kill_eater_3" + "value" "0" + "weight" "1" + } + } + + "set_genuine_quality" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "1" + "weight" "1" + } + } + + "set_unusual_quality" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "5" + "weight" "1" + } + } + + "set_strange_quality" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "11" + "weight" "1" + } + } + + "set_haunted_quality" + { + "elevate quality" + { + "attribute_class" "set_elevated_quality" + "value" "13" + "weight" "1" + } + } + + "check_unusual_quality" + { + "elevate to unusual if applicable" + { + "attribute_class" "elevate_to_unusual_if_applicable" + "value" "5" + "weight" "1" + } + } + + "spell_book_page_attr" + { + "is_even_chance_attr" + { + "spellbook page attr id" "2017" + "spellbook page attr id" "2018" + "spellbook page attr id" "2019" + "spellbook page attr id" "2020" + } + } + + "killstreak_effects" + { + "is_even_chance_attr" + { + "killstreak effect" "2002" + "killstreak effect" "2003" + "killstreak effect" "2004" + "killstreak effect" "2005" + "killstreak effect" "2006" + "killstreak effect" "2007" + "killstreak effect" "2008" + } + } + + "killstreak_idleeffects" + { + "is_even_chance_attr" + { + "killstreak idleeffect" "1" + "killstreak idleeffect" "2" + "killstreak idleeffect" "3" + "killstreak idleeffect" "4" + "killstreak idleeffect" "5" + "killstreak idleeffect" "6" + "killstreak idleeffect" "7" + } + } + + "override_item_level_desc_string" + { + "is_even_chance_attr" + { + "override item level desc string" "1" + } + } + + "killstreak_weapon_set_1" + { + "is_even_chance_attr" + { + "tool target item" "205" + "tool target item" "200" + "tool target item" "201" + "tool target item" "199" + "tool target item" "37" + "tool target item" "239" + "tool target item" "649" + "tool target item" "38" + } + } + + "killstreak_weapon_set_2" + { + "is_even_chance_attr" + { + "tool target item" "207" + "tool target item" "202" + "tool target item" "127" + "tool target item" "56" + "tool target item" "40" + "tool target item" "1103" + "tool target item" "35" + "tool target item" "61" + "tool target item" "141" + } + } + + "killstreak_weapon_set_3" + { + "is_even_chance_attr" + { + "tool target item" "39" + "tool target item" "197" + "tool target item" "210" + "tool target item" "526" + "tool target item" "772" + "tool target item" "811" + "tool target item" "996" + "tool target item" "998" + "tool target item" "1104" + } + } + + "killstreak_recipe_output_items" + { + "is_even_chance_attr" + { + "tool target item" "190" + "tool target item" "191" + "tool target item" "192" + "tool target item" "193" + "tool target item" "194" + "tool target item" "195" + "tool target item" "196" + "tool target item" "197" + "tool target item" "198" + "tool target item" "199" + "tool target item" "200" + "tool target item" "201" + "tool target item" "202" + "tool target item" "203" + "tool target item" "204" + "tool target item" "205" + "tool target item" "206" + "tool target item" "207" + "tool target item" "208" + "tool target item" "209" + "tool target item" "210" + "tool target item" "211" + + "tool target item" "35" + "tool target item" "36" + "tool target item" "37" + "tool target item" "38" + "tool target item" "39" + "tool target item" "40" + "tool target item" "41" + "tool target item" "43" + "tool target item" "44" + "tool target item" "45" + "tool target item" "56" + "tool target item" "61" + "tool target item" "127" + "tool target item" "128" + "tool target item" "130" + "tool target item" "131" + "tool target item" "132" + "tool target item" "141" + "tool target item" "142" + "tool target item" "153" + "tool target item" "154" + "tool target item" "155" + "tool target item" "160" + "tool target item" "161" + "tool target item" "171" + "tool target item" "172" + "tool target item" "173" + "tool target item" "214" + "tool target item" "215" + "tool target item" "220" + "tool target item" "221" + "tool target item" "224" + "tool target item" "225" + "tool target item" "228" + "tool target item" "230" + "tool target item" "232" + "tool target item" "239" + "tool target item" "264" + + "tool target item" "298" + "tool target item" "304" + "tool target item" "305" + "tool target item" "307" + "tool target item" "308" + "tool target item" "310" + "tool target item" "312" + "tool target item" "317" + "tool target item" "325" + "tool target item" "326" + "tool target item" "327" + "tool target item" "329" + "tool target item" "331" + "tool target item" "348" + "tool target item" "349" + "tool target item" "351" + "tool target item" "355" + "tool target item" "356" + "tool target item" "357" + "tool target item" "401" + "tool target item" "402" + "tool target item" "404" + "tool target item" "406" + "tool target item" "411" + "tool target item" "412" + "tool target item" "413" + "tool target item" "414" + "tool target item" "415" + "tool target item" "416" + "tool target item" "424" + "tool target item" "425" + "tool target item" "426" + "tool target item" "441" + "tool target item" "442" + "tool target item" "444" + "tool target item" "447" + "tool target item" "448" + "tool target item" "449" + "tool target item" "450" + "tool target item" "452" + "tool target item" "457" + "tool target item" "460" + "tool target item" "461" + "tool target item" "466" + "tool target item" "474" + "tool target item" "482" + "tool target item" "513" + "tool target item" "525" + "tool target item" "526" + "tool target item" "527" + "tool target item" "528" + "tool target item" "572" + "tool target item" "574" + "tool target item" "587" + "tool target item" "588" + "tool target item" "589" + "tool target item" "593" + "tool target item" "594" + "tool target item" "595" + "tool target item" "609" + "tool target item" "638" + "tool target item" "648" + "tool target item" "649" + "tool target item" "656" + "tool target item" "727" + "tool target item" "730" + "tool target item" "739" + "tool target item" "740" + "tool target item" "741" + "tool target item" "751" + "tool target item" "752" + "tool target item" "772" + "tool target item" "773" + "tool target item" "775" + "tool target item" "811" + "tool target item" "812" + "tool target item" "813" + "tool target item" "851" + "tool target item" "880" + "tool target item" "939" + "tool target item" "996" + "tool target item" "997" + "tool target item" "998" + "tool target item" "1013" + "tool target item" "1092" + "tool target item" "1098" + "tool target item" "1099" + "tool target item" "1100" + "tool target item" "1103" + "tool target item" "1104" + "tool target item" "1150" + "tool target item" "1151" + "tool target item" "1153" + "tool target item" "1178" + "tool target item" "1181" + "tool target item" "30665" + "tool target item" "30666" + "tool target item" "30667" + } + } + + "wear_level_normal_distribution" + { + "set_item_texture_wear" + { + "attribute_class" "set_item_texture_wear" + "value" "0.2" + "weight" "10" + } + "set_item_texture_wear" + { + "attribute_class" "set_item_texture_wear" + "value" "0.4" + "weight" "20" + } + "set_item_texture_wear" + { + "attribute_class" "set_item_texture_wear" + "value" "0.6" + "weight" "40" + } + "set_item_texture_wear" + { + "attribute_class" "set_item_texture_wear" + "value" "0.8" + "weight" "20" + } + "set_item_texture_wear" + { + "attribute_class" "set_item_texture_wear" + "value" "1.0" + "weight" "10" + } + } + + "unusual_taunt_effects_series_1" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3001" + "taunt only unusual effect" "3003" + "taunt only unusual effect" "3004" + "taunt only unusual effect" "3005" + "taunt only unusual effect" "3006" + "taunt only unusual effect" "3007" + "taunt only unusual effect" "3008" + "taunt only unusual effect" "3009" + "taunt only unusual effect" "3010" + } + } + + "taunt_unusualifier_halloween2014_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3011" + "taunt only unusual effect" "3012" + } + } + + "taunt_unusualifier_halloween2016_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3013" + "taunt only unusual effect" "3014" + "taunt only unusual effect" "3015" + "taunt only unusual effect" "3016" + } + } + + "taunt_unusualifier_halloween2018_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3017" + "taunt only unusual effect" "3018" + "taunt only unusual effect" "3019" + + "taunt only unusual effect" "3020" + "taunt only unusual effect" "3020" + "taunt only unusual effect" "3020" + + "taunt only unusual effect" "3021" + "taunt only unusual effect" "3021" + "taunt only unusual effect" "3022" + } + } + + "taunt_unusualifier_halloween2019_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3023" + "taunt only unusual effect" "3024" + "taunt only unusual effect" "3025" + + "taunt only unusual effect" "3026" + "taunt only unusual effect" "3026" + "taunt only unusual effect" "3026" + + "taunt only unusual effect" "3027" + "taunt only unusual effect" "3028" + "taunt only unusual effect" "3029" + + "taunt only unusual effect" "3030" + "taunt only unusual effect" "3030" + "taunt only unusual effect" "3030" + } + } + + "taunt_unusualifier_smissmas2019_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3031" + "taunt only unusual effect" "3031" + "taunt only unusual effect" "3031" + + "taunt only unusual effect" "3032" + "taunt only unusual effect" "3032" + "taunt only unusual effect" "3033" + + "taunt only unusual effect" "3034" + "taunt only unusual effect" "3035" + "taunt only unusual effect" "3036" + } + } + + "taunt_unusualifier_halloween2020_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3037" + "taunt only unusual effect" "3038" + "taunt only unusual effect" "3039" + + "taunt only unusual effect" "3041" + "taunt only unusual effect" "3042" + "taunt only unusual effect" "3043" + + "taunt only unusual effect" "3044" + "taunt only unusual effect" "3044" + "taunt only unusual effect" "3045" + + "taunt only unusual effect" "3046" + "taunt only unusual effect" "3047" + "taunt only unusual effect" "3048" + } + } + + "taunt_unusualifier_smissmas2020_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3049" + "taunt only unusual effect" "3049" + "taunt only unusual effect" "3050" + "taunt only unusual effect" "3050" + + "taunt only unusual effect" "3051" + "taunt only unusual effect" "3051" + "taunt only unusual effect" "3052" + "taunt only unusual effect" "3052" + + "taunt only unusual effect" "3053" + "taunt only unusual effect" "3053" + "taunt only unusual effect" "3053" + "taunt only unusual effect" "3053" + + "taunt only unusual effect" "3055" + "taunt only unusual effect" "3055" + "taunt only unusual effect" "3056" + "taunt only unusual effect" "3056" + } + } + + "taunt_unusualifier_halloween2021_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3059" + "taunt only unusual effect" "3060" + "taunt only unusual effect" "3060" + + "taunt only unusual effect" "3061" + "taunt only unusual effect" "3063" + "taunt only unusual effect" "3064" + + "taunt only unusual effect" "3065" + "taunt only unusual effect" "3066" + "taunt only unusual effect" "3067" + + "taunt only unusual effect" "3068" + "taunt only unusual effect" "3069" + "taunt only unusual effect" "3069" + + "taunt only unusual effect" "3070" + "taunt only unusual effect" "3071" + "taunt only unusual effect" "3072" + } + } + + "taunt_unusualifier_smissmas2021_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3073" + "taunt only unusual effect" "3074" + "taunt only unusual effect" "3075" + + "taunt only unusual effect" "3077" + "taunt only unusual effect" "3078" + "taunt only unusual effect" "3079" + + "taunt only unusual effect" "3081" + "taunt only unusual effect" "3081" + "taunt only unusual effect" "3081" + + "taunt only unusual effect" "3083" + "taunt only unusual effect" "3084" + "taunt only unusual effect" "3085" + + "taunt only unusual effect" "3087" + "taunt only unusual effect" "3087" + "taunt only unusual effect" "3087" + } + } + + "taunt_unusualifier_halloween2022_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3088" + "taunt only unusual effect" "3088" + "taunt only unusual effect" "3088" + "taunt only unusual effect" "3088" + + "taunt only unusual effect" "3090" + "taunt only unusual effect" "3091" + "taunt only unusual effect" "3092" + "taunt only unusual effect" "3092" + + "taunt only unusual effect" "3093" + "taunt only unusual effect" "3094" + "taunt only unusual effect" "3095" + "taunt only unusual effect" "3095" + + "taunt only unusual effect" "3097" + "taunt only unusual effect" "3097" + "taunt only unusual effect" "3097" + "taunt only unusual effect" "3097" + + "taunt only unusual effect" "3098" + "taunt only unusual effect" "3098" + "taunt only unusual effect" "3098" + "taunt only unusual effect" "3098" + + "taunt only unusual effect" "3100" + "taunt only unusual effect" "3102" + "taunt only unusual effect" "3103" + "taunt only unusual effect" "3104" + } + } + + "taunt_unusualifier_smissmas2022_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3105" + "taunt only unusual effect" "3106" + "taunt only unusual effect" "3107" + + "taunt only unusual effect" "3108" + "taunt only unusual effect" "3108" + "taunt only unusual effect" "3108" + + "taunt only unusual effect" "3110" + "taunt only unusual effect" "3111" + "taunt only unusual effect" "3112" + + "taunt only unusual effect" "3113" + "taunt only unusual effect" "3113" + "taunt only unusual effect" "3113" + } + } + + "taunt_unusualifier_summer2023_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3114" + "taunt only unusual effect" "3114" + "taunt only unusual effect" "3114" + + "taunt only unusual effect" "3115" + "taunt only unusual effect" "3115" + "taunt only unusual effect" "3115" + + "taunt only unusual effect" "3117" + "taunt only unusual effect" "3118" + "taunt only unusual effect" "3119" + + "taunt only unusual effect" "3120" + "taunt only unusual effect" "3120" + "taunt only unusual effect" "3120" + + "taunt only unusual effect" "3121" + "taunt only unusual effect" "3121" + "taunt only unusual effect" "3121" + + "taunt only unusual effect" "3123" + "taunt only unusual effect" "3123" + "taunt only unusual effect" "3123" + } + } + + "taunt_unusualifier_halloween2023_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3124" + "taunt only unusual effect" "3125" + + "taunt only unusual effect" "3126" + "taunt only unusual effect" "3126" + + "taunt only unusual effect" "3127" + "taunt only unusual effect" "3127" + + "taunt only unusual effect" "3128" + "taunt only unusual effect" "3128" + + "taunt only unusual effect" "3129" + "taunt only unusual effect" "3130" + } + } + + "taunt_unusualifier_smissmas2023_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3131" + "taunt only unusual effect" "3131" + "taunt only unusual effect" "3131" + + "taunt only unusual effect" "3132" + "taunt only unusual effect" "3134" + "taunt only unusual effect" "3135" + + "taunt only unusual effect" "3136" + "taunt only unusual effect" "3137" + "taunt only unusual effect" "3138" + + "taunt only unusual effect" "3139" + "taunt only unusual effect" "3139" + "taunt only unusual effect" "3141" + + "taunt only unusual effect" "3142" + "taunt only unusual effect" "3142" + "taunt only unusual effect" "3142" + + "taunt only unusual effect" "3143" + "taunt only unusual effect" "3143" + "taunt only unusual effect" "3143" + } + } + + "taunt_unusualifier_summer2024_effects" + { + "item_criteria_templates" + { + "unusual_taunt_criteria" "1" + } + + "is_even_chance_attr" + { + "taunt only unusual effect" "3145" + "taunt only unusual effect" "3147" + "taunt only unusual effect" "3148" + + "taunt only unusual effect" "3149" + "taunt only unusual effect" "3149" + "taunt only unusual effect" "3149" + + "taunt only unusual effect" "3151" + "taunt only unusual effect" "3151" + "taunt only unusual effect" "3153" + + "taunt only unusual effect" "3154" + "taunt only unusual effect" "3154" + "taunt only unusual effect" "3156" + + "taunt only unusual effect" "3157" + "taunt only unusual effect" "3157" + "taunt only unusual effect" "3159" + + "taunt only unusual effect" "3160" + "taunt only unusual effect" "3160" + "taunt only unusual effect" "3162" + + "taunt only unusual effect" "3163" + "taunt only unusual effect" "3163" + "taunt only unusual effect" "3164" + + "taunt only unusual effect" "3165" + "taunt only unusual effect" "3165" + "taunt only unusual effect" "3167" + + "taunt only unusual effect" "3168" + "taunt only unusual effect" "3168" + "taunt only unusual effect" "3170" + + "taunt only unusual effect" "3171" + "taunt only unusual effect" "3171" + "taunt only unusual effect" "3173" + } + } + + "taunt_unusualifier_items" + { + "is_even_chance_attr" + { + "tool target item" "167" + "tool target item" "438" + "tool target item" "463" + "tool target item" "477" + "tool target item" "1015" + "tool target item" "1106" + "tool target item" "1107" + "tool target item" "1108" + "tool target item" "1109" + "tool target item" "1110" + "tool target item" "1111" + "tool target item" "1112" + "tool target item" "1113" + "tool target item" "1114" + "tool target item" "1115" + "tool target item" "1116" + "tool target item" "1117" + "tool target item" "1118" + "tool target item" "1119" + "tool target item" "1120" + "tool target item" "1157" + "tool target item" "1162" + "tool target item" "1168" + "tool target item" "1172" + "tool target item" "1174" + "tool target item" "1182" + "tool target item" "1183" + "tool target item" "1196" + "tool target item" "1197" + + "tool target item" "30570" + "tool target item" "30572" + "tool target item" "30609" + "tool target item" "30614" + "tool target item" "30615" + "tool target item" "30616" + "tool target item" "30618" + "tool target item" "30621" + "tool target item" "30671" + "tool target item" "30672" + "tool target item" "30673" + "tool target item" "30761" + "tool target item" "30762" + "tool target item" "30763" + "tool target item" "30816" + "tool target item" "30839" + "tool target item" "30840" + "tool target item" "30842" + "tool target item" "30843" + "tool target item" "30844" + "tool target item" "30845" + "tool target item" "30876" + "tool target item" "30917" + "tool target item" "30918" + "tool target item" "30919" + "tool target item" "30920" + "tool target item" "30921" + "tool target item" "30922" + "tool target item" "31153" + "tool target item" "31154" + "tool target item" "31155" + "tool target item" "31156" + "tool target item" "31157" + "tool target item" "31160" + "tool target item" "31161" + "tool target item" "31162" + "tool target item" "31201" + "tool target item" "31202" + "tool target item" "31203" + "tool target item" "31207" + "tool target item" "31233" + "tool target item" "31236" + "tool target item" "31237" + "tool target item" "31239" + "tool target item" "31286" + "tool target item" "31288" + "tool target item" "31290" + "tool target item" "31291" + "tool target item" "31292" + "tool target item" "31320" + "tool target item" "31321" + "tool target item" "31322" + "tool target item" "31347" + "tool target item" "31348" + "tool target item" "31349" + "tool target item" "31351" + "tool target item" "31352" + "tool target item" "31354" + "tool target item" "31289" + "tool target item" "31380" + "tool target item" "31381" + "tool target item" "31382" + "tool target item" "31412" + "tool target item" "31413" + "tool target item" "31414" + "tool target item" "31438" + "tool target item" "31439" + "tool target item" "31440" + "tool target item" "31441" + } + } + + "unusual_weapon_chance" + { + "is_even_chance_attr" + { + "attach particle effect" "701" + "attach particle effect" "702" + "attach particle effect" "703" + } + } + + + + + "unusual_hat_chance_classic_halloween" + { + "even_chance_templates" + { + "unusual_hat_effects_halloween_2011" "1" + "unusual_hat_effects_halloween_2012" "1" + "unusual_hat_effects_halloween_2013" "1" + "unusual_hat_effects_halloween_2014" "1" + } + } + + "unusual_hat_chance_cosmetics_case" + { + "even_chance_templates" + { + "unusual_hat_effects_series_1_2_3" "1" + } + } + + "taunt_unusualifier_effects" + { + "even_chance_templates" + { + "unusual_taunt_effects_series_1" "1" + } + } + + "taunt_unusualifier_halloween_effects" + { + "even_chance_templates" + { + "taunt_unusualifier_halloween2014_effects" "1" + "taunt_unusualifier_halloween2016_effects" "1" + } + } + + "paintkit_100" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "100" + } + } + "paintkit_101" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "101" + } + } + "paintkit_102" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "102" + } + } + "paintkit_103" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "103" + } + } + "paintkit_104" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "104" + } + } + "paintkit_105" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "105" + } + } + "paintkit_106" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "106" + } + } + "paintkit_107" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "107" + } + } + "paintkit_108" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "108" + } + } + "paintkit_109" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "109" + } + } + "paintkit_112" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "112" + } + } + "paintkit_113" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "113" + } + } + "paintkit_114" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "114" + } + } + "paintkit_120" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "120" + } + } + "paintkit_122" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "122" + } + } + "paintkit_130" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "130" + } + } + "paintkit_139" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "139" + } + } + "paintkit_143" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "143" + } + } + "paintkit_144" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "144" + } + } + "paintkit_145" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "145" + } + } + "paintkit_148" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "148" + } + } + "paintkit_151" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "151" + } + } + "paintkit_160" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "160" + } + } + "paintkit_161" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "161" + } + } + "paintkit_163" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "163" + } + } + + "paintkit_200" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "200" + } + } + "paintkit_201" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "201" + } + } + "paintkit_202" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "202" + } + } + "paintkit_203" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "203" + } + } + "paintkit_204" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "204" + } + } + "paintkit_205" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "205" + } + } + "paintkit_206" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "206" + } + } + "paintkit_207" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "207" + } + } + "paintkit_208" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "208" + } + } + "paintkit_209" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "209" + } + } + "paintkit_210" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "210" + } + } + "paintkit_211" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "211" + } + } + "paintkit_212" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "212" + } + } + + "paintkit_300" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "300" + } + } + "paintkit_301" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "301" + } + } + "paintkit_302" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "302" + } + } + "paintkit_303" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "303" + } + } + "paintkit_304" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "304" + } + } + "paintkit_305" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "305" + } + } + "paintkit_306" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "306" + } + } + "paintkit_307" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "307" + } + } + "paintkit_308" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "308" + } + } + "paintkit_309" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "309" + } + } + "paintkit_310" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "310" + } + } + "paintkit_311" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "311" + } + } + "paintkit_312" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "312" + } + } + "paintkit_390" + { + "is_even_chance_attr" + { + "paintkit_proto_def_index" "390" + } + } + } + "lootlist_job_template_definitions" + { + "add_kill_eater_and_strange" + { + "attribute_templates" + { + "kill_eater_template" "1" + "set_strange_quality" "1" + } + } + + "add_kill_eater_2" + { + "attribute_templates" + { + "kill_eater_2_template" "1" + } + } + + "add_kill_eater_3" + { + "attribute_templates" + { + "kill_eater_3_template" "1" + } + } + + "add_kill_eater_123_and_haunted" + { + "attribute_templates" + { + "kill_eater_template" "1" + "kill_eater_2_template" "1" + "kill_eater_3_template" "1" + "set_haunted_quality" "1" + } + } + + "set_genuine_quality" + { + "attribute_templates" + { + "set_genuine_quality" "1" + } + } + + "is_tradable" + { + "attribute_templates" + { + "is_tradable" "1" + } + } + + "not_tradable" + { + "attribute_templates" + { + "not_tradable" "1" + } + } + + "is_craftable" + { + "attribute_templates" + { + "is_craftable" "1" + } + } + + "not_craftable" + { + "attribute_templates" + { + "not_craftable" "1" + } + } + + "killstreak_effects" + { + "attribute_templates" + { + "killstreak_effects" "1" + } + } + + "killstreak_idleeffects" + { + "attribute_templates" + { + "killstreak_idleeffects" "1" + } + } + + "killstreak_effects_and_idleeffects" + { + "attribute_templates" + { + "killstreak_effects" "1" + "killstreak_idleeffects" "1" + } + } + + "override_item_level_desc_string" + { + "attribute_templates" + { + "override_item_level_desc_string" "1" + } + } + + "wear_level_normal_distribution" + { + "attribute_templates" + { + "wear_level_normal_distribution" "1" + } + } + + "wear_level_factory_new" + { + "random_attributes" + { + "set_item_texture_wear" + { + "attribute_class" "set_item_texture_wear" + "value" "0.2" + "weight" "1" + } + } + } + + "strange_quality_chance" + { + "attribute_templates" + { + "set_strange_quality" "1" + } + } + + "strange_quality_guaranteed" + { + "attribute_templates" + { + "set_strange_quality" "1" + } + } + + "class_bundle_unusual_hat_chance" + { + "attribute_templates" + { + "unusual_hat_chance_cosmetics_case" "1" + "check_unusual_quality" "1" + } + } + + "make_australium" + { + + "random_attributes" + { + "is australium item" + { + "attribute_class" "is_australium_item" + "value" "1" + "weight" "1" + } + } + + "random_attributes" + { + "item style override" + { + "attribute_class" "item_style_override" + "value" "1" + "weight" "1" + } + } + } + + "halloween_2014_bonus_items" + { + "additional_drop" + { + "loot_list" "halloween_2014_bonus_items" + } + } + + "weapon_case_unusual_weapon_chance" + { + "attribute_templates" + { + "unusual_weapon_chance" "1" + } + } + + "killstreak_recipe_output_items" + { + "attribute_templates" + { + "killstreak_recipe_output_items" "1" + } + } + + "cosmetic_and_weapon_case_strange_quality_chance" + { + "attribute_templates" + { + "set_strange_quality" "1" + } + } + + "cosmetic_case_unusual_hat_chance" + { + "attribute_templates" + { + "unusual_hat_chance_summer2024_case" "1" + "check_unusual_quality" "1" + } + } + + "case_additional_drop_festivizer" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + + "case_additional_drop_gift" + { + "additional_drop" + { + "loot_list" "case_bonus_gift" + } + } + + "case_additional_drop_common_tools" + { + "additional_drop" + { + "loot_list" "case_bonus_tools" + } + } + + "case_additional_drop_mvm_ticket" + { + "additional_drop" + { + "loot_list" "mvm_ticket" + } + } + + "case_additional_drop_paint_cans" + { + "additional_drop" + { + "loot_list" "all_paint_cans" + } + } + + "case_additional_drop_strange_transfer_tool" + { + "additional_drop" + { + "loot_list" "strange_transfer_tool" + } + } + + + "case_additional_drop_strange_parts" + { + "additional_drop" + { + "loot_list" "strange_parts" + } + } + + "case_additional_drop_taunt_unusualifier" + { + "additional_drop" + { + "loot_list" "taunt_unusualifier" + } + } + } + "item_sets" + { + + "polycount_pyro" + { + "name" "#TF_Set_Polycount_Pyro" + "items" + { + "The Degreaser" "1" + "The Powerjack" "1" + "The Attendant" "1" + } + "attributes" + { + "SET BONUS: calling card on kill" + { + "attribute_class" "calling_card_on_kill" + "value" "4" + } + } + "store_bundle" "Polycount Pyro Bundle" + } + "polycount_spy" + { + "name" "#TF_Set_Polycount_Spy" + "items" + { + "L'Etranger" "1" + "Your Eternal Reward" "1" + "The Familiar Fez" "1" + } + "attributes" + { + "SET BONUS: custom taunt particle attr" + { + "attribute_class" "custom_taunt_particle_attr" + "value" "1" + } + } + "store_bundle" "Polycount Spy Bundle" + } + "polycount_soldier" + { + "name" "#TF_Set_Polycount_Soldier" + "items" + { + "The Black Box" "1" + "The Battalion's Backup" "1" + "The Grenadier's Softcap" "1" + } + "attributes" + { + "SET BONUS: calling card on kill" + { + "attribute_class" "calling_card_on_kill" + "value" "3" + } + } + "store_bundle" "Polycount Soldier Bundle" + } + "polycount_sniper" + { + "name" "#TF_Set_Polycount_Sniper" + "items" + { + "The Sydney Sleeper" "1" + "Darwin's Danger Shield" "1" + "The Bushwacka" "1" + "Ol' Snaggletooth" "1" + } + "attributes" + { + "SET BONUS: calling card on kill" + { + "attribute_class" "calling_card_on_kill" + "value" "2" + } + } + "store_bundle" "Polycount Sniper Bundle" + } + "polycount_scout" + { + "name" "#TF_Set_Polycount_Scout" + "items" + { + "The Shortstop" "1" + "Mad Milk" "1" + "The Holy Mackerel" "1" + "The Milkman" "1" + } + "attributes" + { + "SET BONUS: calling card on kill" + { + "attribute_class" "calling_card_on_kill" + "value" "1" + } + } + "store_bundle" "Polycount Scout Bundle" + } + "medieval_medic" + { + "name" "#TF_Set_Medieval_Medic" + "items" + { + "The Amputator" "1" + "The Crusader's Crossbow" "1" + "Berliner's Bucket Helm" "1" + } + "store_bundle" "Medieval Medic Bundle" + } + "hibernating_bear" + { + "name" "#TF_Set_Hibernating_Bear" + "items" + { + "The Brass Beast" "1" + "The Buffalo Steak Sandvich" "1" + "Warrior's Spirit" "1" + "Big Chief" "1" + } + "store_bundle" "Hibernating Bear Bundle" + } + "experts_ordnance" + { + "name" "#TF_Set_Experts_Ordnance" + "items" + { + "The Ullapool Caber" "1" + "The Loch-n-Load" "1" + "Scotch Bonnet" "1" + } + "store_bundle" "Expert's Ordnance Bundle" + } + "desert_sniper" + { + "name" "#TF_Set_Desert_Sniper" + "items" + { + "The Bazaar Bargain" "1" + "The Shahanshah" "1" + "Desert Marauder" "1" + } + } + "desert_demo" + { + "name" "#TF_Set_Desert_Demo" + "items" + { + "The Persian Persuader" "1" + "The Splendid Screen" "1" + "Ali Baba's Wee Booties" "1" + "Sultan's Ceremonial" "1" + } + } + "rapid_repair" + { + "name" "#TF_Set_Clinical_Trial" + "items" + { + "The Quick-Fix" "1" + "The Overdose" "1" + "The Solemn Vow" "1" + } + } + "airborne_armaments" + { + "name" "#TF_Set_Airborne_Armaments" + "items" + { + "The Liberty Launcher" "1" + "The Reserve Shooter" "1" + "The Market Gardener" "1" + "Jumper's Jeepcap" "1" + } + } + "black_market" + { + "name" "#TF_Set_Black_Market" + "items" + { + "Tomislav" "1" + "The Family Business" "1" + "The Eviction Notice" "1" + "Capone's Capper" "1" + } + } + "bonk_fan" + { + "name" "#TF_Set_Bonk_Fan" + "items" + { + "The Soda Popper" "1" + "The Winger" "1" + "The Atomizer" "1" + "Bonk Boy" "1" + } + } + "general_suit" + { + "name" "#TF_Set_General" + "items" + { + "The Mantreads" "1" + "The Disciplinary Action" "1" + "Armored Authority" "1" + "Fancy Dress Uniform" "1" + } + } + "gangland_spy" + { + "name" "#TF_Set_Gangland_Spy" + "items" + { + "The Enforcer" "1" + "The Big Earner" "1" + "Cosa Nostra Cap" "1" + "The Made Man" "1" + } + } + "drg_victory" + { + "name" "#TF_Set_DrG_Victory" + "items" + { + "The Cow Mangler 5000" "1" + "The Righteous Bison" "1" + "Lord Cockswain's Pith Helmet" "1" + "Lord Cockswain's Novelty Mutton Chops and Pipe" "1" + } + } + "swashbucklers_swag" + { + "name" "#TF_Set_Swashbucklers_Swag" + "items" + { + "The Scottish Handshake" "1" + "The Buccaneer's Bicorne" "1" + "A Whiff of the Old Brimstone" "1" + "The Bootlegger" "1" + } + } + "demo_halloween_2011" + { + "name" "#TF_Set_Demo_Halloween_2011" + "items" + { + "Hair of the Dog" "1" + "Scottish Snarl" "1" + "Pickled Paws" "1" + } + } + "scout_halloween_2011" + { + "name" "#TF_Set_Scout_Halloween_2011" + "items" + { + "Wrap Battler" "1" + "B-ankh!" "1" + "Futankhamun" "1" + } + } + "pyro_halloween_2011" + { + "name" "#TF_Set_Pyro_Halloween_2011" + "items" + { + "Blazing Bull" "1" + "Fallen Angel" "1" + "Tail From the Crypt" "1" + } + } + "medic_halloween_2011" + { + "name" "#TF_Set_Medic_Halloween_2011" + "items" + { + "Einstein" "1" + "Dr. Gogglestache" "1" + "Emerald Jarate" "1" + } + } + "soldier_halloween_2011" + { + "name" "#TF_Set_Soldier_Halloween_2011" + "items" + { + "Idiot Box" "1" + "Steel Pipes" "1" + "Shoestring Budget" "1" + } + } + "spy_halloween_2011" + { + "name" "#TF_Set_Spy_Halloween_2011" + "items" + { + "Under Cover" "1" + "Griffin's Gog" "1" + "Intangible Ascot" "1" + } + } + "heavy_halloween_2011" + { + "name" "#TF_Set_Heavy_Halloween_2011" + "items" + { + "Can Opener" "1" + "Soviet Stitch-Up" "1" + "Steel-Toed Stompers" "1" + } + } + "sniper_halloween_2011" + { + "name" "#TF_Set_Sniper_Halloween_2011" + "items" + { + "Holy Hunter" "1" + "Silver Bullets" "1" + "Garlic Flank Stake" "1" + } + } + "engineer_halloween_2011" + { + "name" "#TF_Set_Engineer_Halloween_2011" + "items" + { + "Buzz Killer" "1" + "Frontier Flyboy" "1" + "Legend of Bugfoot" "1" + } + "attributes" + { + "SET BONUS: special dsp" + { + "attribute_class" "special_dsp" + "value" "134" + } + } + } + "heavy_fairy" + { + "name" "#TF_Set_Heavy_Fairy" + "items" + { + "The Grand Duchess Tutu" "1" + "The Grand Duchess Fairy Wings" "1" + "The Grand Duchess Tiara" "1" + } + } + "soldier_dumpster_diver" + { + "name" "#TF_Set_Soldier_DumpsterDiver" + "items" + { + "The Beggar's Bazooka" "1" + "The Helmet Without a Home" "1" + "The Captain's Cocktails" "1" + } + } + "sniper_urban_professional" + { + "name" "#TF_Sniper_UrbanProfessional" + "items" + { + "The Hitman's Heatmaker" "1" + "The Cleaner's Carbine" "1" + "Liquidator's Lid" "1" + } + } + "scout_public_enemy" + { + "name" "#TF_Scout_PublicEnemy" + "items" + { + "Baby Face's Blaster" "1" + "Pretty Boy's Pocket Pistol" "1" + "Dillinger's Duffel" "1" + "The Fed-Fightin' Fedora" "1" + } + } + "drg_brainiac" + { + "name" "#TF_Set_DrG_Brainiac" + "items" + { + "The Eureka Effect" "1" + "The Pomson 6000" "1" + "The Brainiac Hairpiece" "1" + "The Brainiac Goggles" "1" + } + } + "drg_moonman" + { + "name" "#TF_Set_DrG_Moonman" + "items" + { + "The Phlogistinator" "1" + "The Third Degree" "1" + "The Manmelter" "1" + "The Moonman Backpack" "1" + "The Bubble Pipe" "1" + } + } + "winter2011_scout_elf" + { + "name" "#TF_Set_Scout_Winter_2011" + "items" + { + "The Wrap Assassin" "1" + "The Bootie Time" "1" + "The Big Elfin Deal" "1" + } + } + + "hidden_detective_set" + { + "name" "#TF_Set_HiddenDetective" + "items" + { + "Private Eye" "1" + "The Nine-Pipe Problem" "1" + } + "is_hidden_set" "1" + "attributes" + { + "SET BONUS: mystery solving time decrease" + { + "attribute_class" "mystery_solving_time_decrease" + "value" "1.88" + } + } + } + "hidden_applearrow_set" + { + "name" "#TF_Set_AppleArrow" + "items" + { + "The Huntsman" "1" + "The Fruit Shoot" "1" + } + "is_hidden_set" "1" + "attributes" + { + "SET BONUS: chance of hunger decrease" + { + "attribute_class" "chance_of_hunger_decrease" + "value" "1.13" + } + } + } + "hw2013_pyro_malice" + { + "name" "#TF_Set_HalloweenPyroMalice" + "items" + { + "The Crispy Golden Locks" "1" + "The Scorched Skirt" "1" + } + } + "hw2013_medic_space_surgeon" + { + "name" "#TF_Set_HalloweenMedicSpaceSurgeon" + "items" + { + "The Lo-Grav Loafers" "1" + "The Surgeon's Space Suit" "1" + } + } + "hw2013_soldier_rocket_ranger" + { + "name" "#TF_Set_SoldierRocketRanger" + "items" + { + "The Hardium Helm" "1" + "The Jupiter Jumpers" "1" + "The Space Bracers" "1" + } + } + "hw2013_pyro_lake_monster" + { + "name" "#TF_Set_PyroLakeMonster" + "items" + { + "The Abhorrent Appendages" "1" + "The Vicious Visage" "1" + } + } + "hw2013_spy_blood_banker_alt" + { + "name" "#TF_Set_SpyBloodBanker" + "items" + { + "The Candyman's Cap" "1" + "The Bountiful Bow" "1" + "Bozo's Brogues" "1" + } + } + "hw2013_soldier_shaolin" + { + "name" "#TF_Set_SpySoldierShaolin" + "items" + { + "The Hidden Dragon" "1" + "The Faux Manchu" "1" + "The Shaolin Sash" "1" + } + } + "hw2013_medic_sun_king" + { + "name" "#TF_Set_MedicSunKing" + "items" + { + "Teutonkahmun" "1" + "Ramses' Regalia" "1" + } + } + "hw2013_scout_dog" + { + "name" "#TF_Set_ScoutDog" + "items" + { + "The Terrier Trousers" "1" + "The Hound's Hood" "1" + } + } + "hw2013_pyro_pyrosaur" + { + "name" "#TF_Set_Pyrosaur" + "items" + { + "Burny's Boney Bonnet" "1" + "The Cauterizer's Caudal Appendage" "1" + "The Monster's Stompers" "1" + } + } + "hw2013_demo_squidpirate" + { + "name" "#TF_Set_DemoSquidPirate" + "items" + { + "The Squid's Lid" "1" + "Cap'n Calamari" "1" + } + } + "hw2013_demo_vampire" + { + "name" "#TF_Set_DemoVampire" + "items" + { + "The Transylvania Top" "1" + "The Lordly Lapels" "1" + } + } + "short2014_demo_drinking" + { + "name" "#TF_Set_short2014_DemoDrinking" + "items" + { + "The Allbrero" "1" + "Seeing Double" "1" + "Six Pack Abs" "1" + } + } + "short2014_scout_fancy" + { + "name" "#TF_Set_short2014_ScoutFancy" + "items" + { + "The Pomade Prince" "1" + "The Paisley Pro" "1" + "The Argyle Ace" "1" + } + } + "short2014_soldier_pack" + { + "name" "#TF_Set_short2014_SoldierPack" + "items" + { + "The Spook Specs" "1" + "The Classified Coif" "1" + "The Man in Slacks" "1" + } + } + "short2014_pyro_pack1" + { + "name" "#TF_Set_short2014_PyroPack1" + "items" + { + "The Combustible Kabuto" "1" + "The Sengoku Scorcher" "1" + } + } + "short2014_pyro_pack2" + { + "name" "#TF_Set_short2014_PyroPack2" + "items" + { + "The Gas Guzzler" "1" + "The Smoking Skid Lid" "1" + "The Lunatic's Leathers" "1" + } + } + "short2014_engineer_pack1" + { + "name" "#TF_Set_short2014_EngineerPack1" + "items" + { + "The Tools of the Trade" "1" + "The Joe-on-the-Go" "1" + } + } + "short2014_spy_pack" + { + "name" "#TF_Set_short2014_SpyPack" + "items" + { + "The Aviator Assassin" "1" + "The Sky Captain" "1" + } + } + "short2014_engineer_pack2" + { + "name" "#TF_Set_short2014_EngineerPack2" + "items" + { + "The Level Three Chin" "1" + "The Egghead's Overalls" "1" + "The Lonesome Loafers" "1" + } + } + "short2014_pyro_pack3" + { + "name" "#TF_Set_short2014_PyroPack3" + "items" + { + "Employee of the Mmmph" "1" + "The Frymaster" "1" + } + } + "short2014_sniper_pack" + { + "name" "#TF_Set_short2014_SniperPack" + "items" + { + "The Scoper's Smoke" "1" + "The Triggerman's Tacticals" "1" + } + } + "short2014_scout_pack" + { + "name" "#TF_Set_short2014_ScoutPack" + "items" + { + "The Frickin' Sweet Ninja Hood" "1" + "The Southie Shinobi" "1" + "The Red Socks" "1" + } + } + "ai_pack" + { + "name" "#TF_Set_AI_Pack" + "items" + { + "The Alien Cranium" "1" + "The Biomech Backpack" "1" + "The Xeno Suit" "1" + } + "attributes" + { + "SET BONUS: alien isolation xeno bonus pos" + { + "attribute_class" "alien_isolation_xeno_bonus_pos" + "value" "1" + } + "SET BONUS: alien isolation xeno bonus neg" + { + "attribute_class" "alien_isolation_xeno_bonus_neg" + "value" "1" + } + } + } + "alien_isolation_merc_set" + { + "name" "#TF_Set_AI_Merc_Pack" + "items" + { + "The MK 50" "1" + "The Nostromo Napalmer" "1" + } + "attributes" + { + "SET BONUS: alien isolation merc bonus pos" + { + "attribute_class" "alien_isolation_merc_bonus_pos" + "value" "1" + } + "SET BONUS: alien isolation merc bonus neg" + { + "attribute_class" "alien_isolation_merc_bonus_neg" + "value" "1" + } + } + } + "sf14_medic_dog" + { + "name" "#TF_Set_SF14_Medic_Dog" + "items" + { + "Hundekopf" "1" + "Herzensbrecher" "1" + "Kriegsmaschine-9000" "1" + } + } + "sf14_medic_templar" + { + "name" "#TF_Set_SF14_Medic_Templar" + "items" + { + "Templar's Spirit" "1" + "Wings of Purity" "1" + } + } + "sf14_scout_hunter" + { + "name" "#TF_Set_SF14_Scout_Hunter" + "items" + { + "Head Hunter" "1" + "Claws And Infect" "1" + "Crazy Legs" "1" + } + } + "sf14_scout_chicken" + { + "name" "#TF_Set_SF14_Scout_Chicken" + "items" + { + "Nugget Noggin" "1" + "Talon Trotters" "1" + "Fowl Fists" "1" + } + } + "sf14_soldier_supernatural_hunter" + { + "name" "#TF_Set_SF14_Soldier_SupernaturalHunter" + "items" + { + "Hellhunter's Headpiece" "1" + "Supernatural Stalker" "1" + "Ghoul Gibbin' Gear" "1" + } + } + "sf14_heavy_minotaur" + { + "name" "#TF_Set_SF14_Heavy_Minotaur" + "items" + { + "Minsk Beef" "1" + "Bull Locks" "1" + "Bone-Cut Belt" "1" + } + } + "sf14_sniper_kangaroo" + { + "name" "#TF_Set_SF14_Sniper_Kangaroo" + "items" + { + "Marsupial Muzzle" "1" + "Kanga Kickers" "1" + "Roo Rippers" "1" + } + } + "sf14_sniper_lizard" + { + "name" "#TF_Set_SF14_Sniper_Lizard" + "items" + { + "Skinless Slashers" "1" + "Conspiratorial Cut" "1" + } + } + "sf14_pyro_robot" + { + "name" "#TF_Set_SF14_Pyro_Robo" + "items" + { + "Moccasin Machinery" "1" + "Arsonist Apparatus" "1" + } + } + "sf14_demo_skeleton" + { + "name" "#TF_Set_SF14_Demo_Skeleton" + "items" + { + "Forgotten King's Restless Head" "1" + "Forgotten King's Pauldrons" "1" + } + } + "sf14_medic_vampire" + { + "name" "#TF_Set_SF14_Medic_Vampire" + "items" + { + "Transylvanian Toupe" "1" + "Vampiric Vesture" "1" + } + } + "bak_sixties_sidekick" + { + "name" "#TF_Set_bak_sixties_sidekick" + "items" + { + "Sidekick's Side Slick" "1" + "The Bat Backup" "1" + "Crook Combatant" "1" + } + } + "monster_mash_up" + { + "name" "#TF_Set_Monster_Mash_up" + "items" + { + "Yeti_Head" "1" + "Yeti_Legs" "1" + "Yeti_Arms" "1" + } + } + + + } + "client_loot_lists" + { + "kill_eater_set_demo_a" + { + "The Chargin' Targe" "1" + "Upgradeable TF_WEAPON_GRENADELAUNCHER" "1" + "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "1" + "The Eyelander" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_soldier_a" + { + "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "1" + "The Pain Train" "1" + "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" "1" + "The Direct Hit" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_heavy_a" + { + "Gloves of Running Urgently" "1" + "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" "1" + "Natascha" "1" + "Upgradeable TF_WEAPON_MINIGUN" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_scout_a" + { + "Upgradeable TF_WEAPON_SCATTERGUN" "1" + "The Boston Basher" "1" + "Upgradeable TF_WEAPON_PISTOL" "1" + "The Sandman" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_spy_a" + { + "The Ambassador" "1" + "Conniver's Kunai" "1" + "Upgradeable TF_WEAPON_KNIFE" "1" + "Upgradeable TF_WEAPON_REVOLVER" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_pyro_a" + { + "Upgradeable TF_WEAPON_FLAMETHROWER" "1" + "The Flare Gun" "1" + "The Powerjack" "1" + "The Backburner" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_medic_a__medigun" + { + "Upgradeable TF_WEAPON_MEDIGUN" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + } + } + "kill_eater_set_medic_a_base" + { + "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "1" + "The Crusader's Crossbow" "1" + "Upgradeable TF_WEAPON_BONESAW" "1" + } + "kill_eater_set_medic_a" + { + "kill_eater_set_medic_a_base" "1" + "kill_eater_set_medic_a__medigun" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_sniper_a" + { + "Upgradeable TF_WEAPON_SNIPERRIFLE" "1" + "The Sydney Sleeper" "1" + "The Bushwacka" "1" + "Jarate" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_engineer_a__wrenches" + { + "Upgradeable TF_WEAPON_WRENCH" "1" + "The Jag" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + } + } + "kill_eater_set_engineer_a_base" + { + "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" "1" + "The Frontier Justice" "1" + } + "kill_eater_set_engineer_a" + { + "kill_eater_set_engineer_a_base" "1" + "kill_eater_set_engineer_a__wrenches" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_a" + { + "The Axtinguisher" "1" + "The Black Box" "1" + "The Eyelander" "1" + "The Razorback" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_b" + { + "Mad Milk" "1" + "The Half-Zatoichi" "1" + "Upgradeable TF_WEAPON_FISTS" "1" + "The Degreaser" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_rare_mixed_a__secondary_stats" + { + "The Kritzkrieg" "1" + "The Gunslinger" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + } + } + "kill_eater_set_rare_mixed_a__base" + { + "The Machina" "1" + "The Ullapool Caber" "1" + "The Holy Mackerel" "1" + } + "kill_eater_set_rare_mixed_a" + { + "kill_eater_set_rare_mixed_a__secondary_stats" "1" + "kill_eater_set_rare_mixed_a__base" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_c" + { + "The Brass Beast" "1" + "The Ubersaw" "1" + "L'Etranger" "1" + "The Equalizer" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_d" + { + "Your Eternal Reward" "1" + "The Family Business" "1" + "The Soda Popper" "1" + "The Amputator" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_e" + { + "The Reserve Shooter" "1" + "The Atomizer" "1" + "The Southern Hospitality" "1" + "The Scottish Resistance" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_f" + { + "The Bazaar Bargain" "1" + "The Big Earner" "1" + "The Blutsauger" "1" + "The Liberty Launcher" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_g__secondary_stats" + { + "The Quick-Fix" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + } + } + "kill_eater_set_mixed_g__base" + { + "The Dead Ringer" "1" + "Upgradeable TF_WEAPON_SMG" "1" + "The Killing Gloves of Boxing" "1" + } + "kill_eater_set_mixed_g" + { + "kill_eater_set_mixed_g__secondary_stats" "1" + "kill_eater_set_mixed_g__base" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_h" + { + "The Loch-n-Load" "1" + "The Overdose" "1" + "Upgradeable TF_WEAPON_KNIFE" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_rare_mixed_b__secondary_stats" + { + "The Holiday Punch" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + } + } + "kill_eater_set_rare_mixed_b__base" + { + "The Huntsman" "1" + "The Widowmaker" "1" + "The Mantreads" "1" + "Upgradeable TF_WEAPON_BUILDER_SPY" "1" + } + "kill_eater_set_rare_mixed_b" + { + "kill_eater_set_rare_mixed_b__secondary_stats" "1" + "kill_eater_set_rare_mixed_b__base" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_i" + { + "Upgradeable TF_WEAPON_BAT" "1" + "The Direct Hit" "1" + "The Diamondback" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_j" + { + "Upgradeable TF_WEAPON_BOTTLE" "1" + "The Back Scratcher" "1" + "Upgradeable TF_WEAPON_PISTOL" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_k" + { + "The Tribalman's Shiv" "1" + "The Detonator" "1" + "The Shortstop" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_l" + { + "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "1" + "The Market Gardener" "1" + "The Equalizer" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_m" + { + "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "1" + "The Scotsman's Skullcutter" "1" + "The Persian Persuader" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_n" + { + "The Force-a-Nature" "1" + "Upgradeable TF_WEAPON_FLAMETHROWER" "1" + "Tomislav" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_o" + { + "The Homewrecker" "1" + "Upgradeable TF_WEAPON_SHOVEL" "1" + "Upgradeable TF_WEAPON_SCATTERGUN" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_p" + { + "The Wrap Assassin" "1" + "The Spy-cicle" "1" + "Upgradeable TF_WEAPON_SNIPERRIFLE" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_q_base" + { + "Baby Face's Blaster" "1" + "The Pain Train" "1" + } + "kill_eater_set_mixed_q" + { + "kill_eater_set_mixed_q_base" "1" + "kill_eater_set_medic_a__medigun" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_rare_mixed_c__secondary_stats" + { + "Upgradeable TF_WEAPON_PDA_ENGINEER_BUILD" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + "add_kill_eater_3" "1" + } + } + "kill_eater_set_rare_mixed_c__base" + { + "The Original" "1" + "Upgradeable TF_WEAPON_INVIS" "1" + "The Splendid Screen" "1" + } + "kill_eater_set_rare_mixed_c" + { + "kill_eater_set_rare_mixed_c__secondary_stats" "1" + "kill_eater_set_rare_mixed_c__base" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_r" + { + "Upgradeable TF_WEAPON_FIREAXE" "1" + "The Flying Guillotine" "1" + "The Beggar's Bazooka" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_s" + { + "Fists of Steel" "1" + "The Neon Annihilator" "1" + "Jarate" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_t" + { + "Upgradeable TF_WEAPON_CLUB" "1" + "The Huo Long Heatmaker" "1" + "The Enforcer" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_rare_mixed_d__secondary_stats" + { + "The Disciplinary Action" "1" + "The Loose Cannon" "1" + "lootlist_job_templates" + { + "add_kill_eater_2" "1" + } + } + "kill_eater_set_rare_mixed_d__base" + { + "The Fan O'War" "1" + } + "kill_eater_set_rare_mixed_d" + { + "kill_eater_set_rare_mixed_d__secondary_stats" "1" + "kill_eater_set_rare_mixed_d__base" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_u" + { + "The Battalion's Backup" "1" + "The Hitman's Heatmaker" "1" + "Bonk! Atomic Punch" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_v" + { + "Crit-a-Cola" "1" + "The Solemn Vow" "1" + "The Sydney Sleeper" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_w" + { + "The Concheror" "1" + "Upgradeable TF_WEAPON_REVOLVER" "1" + "The Eviction Notice" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "kill_eater_set_mixed_x" + { + "The Rescue Ranger" "1" + "Upgradeable TF_WEAPON_GRENADELAUNCHER" "1" + "The Scorch Shot" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "supply_crate_loot_list_1" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "The Vita-Saw" "1" + "The Gunslinger" "1" + "The Equalizer" "1" + "The Scottish Resistance" "1" + "Old Guadalajara" "1" + "Napper's Respite" "1" + "Name Tag" "1" + "Paint Can 13" "1" + "Paint Can 14" "1" + } + "supply_crate_loot_list_2" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "The Black Box" "1" + "The Shortstop" "1" + "L'Etranger" "1" + "Sober Stuntman" "1" + "Pugilist's Protector" "1" + "Chieftain's Challenge" "1" + "Duel MiniGame" "1" + "Paint Can 5" "1" + "Paint Can 11" "1" + } + "supply_crate_loot_list_3" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "The Bushwacka" "1" + "Crit-a-Cola" "1" + "The Homewrecker" "1" + "Scout Beanie" "1" + "Bombing Run" "1" + "Stout Shako" "1" + "Description Tag" "1" + "Paint Can 14" "1" + } + "supply_crate_loot_list_4" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "The Battalion's Backup" "1" + "The Pain Train" "1" + "Your Eternal Reward" "1" + "Scout Whoopee Cap" "1" + "Heavy Do-rag" "1" + "Handyman's Handle" "1" + "Duel MiniGame" "1" + "Paint Can 13" "1" + } + "supply_crate_loot_list_5" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Name Tag" "1" + "The Powerjack" "1" + "The Gunboats" "1" + "The Southern Hospitality" "1" + "Sniper Fishing Hat" "1" + "Engineer Earmuffs" "1" + "Medic Goggles" "1" + "Handyman's Handle" "1" + "Paint Can 4" "1" + } + "supply_crate_loot_list_7" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "The Chargin' Targe" "1" + "The Direct Hit" "1" + "The Bushwacka" "1" + "Demoman's Fro" "1" + "Dr's Dapper Topper" "1" + "Rimmed Raincatcher" "1" + "The Milkman" "1" + "Description Tag" "1" + "Paint Can Team Color" "1" + } + "supply_crate_loot_list_8" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "The Force-a-Nature" "1" + "Bonk! Atomic Punch" "1" + "The Huntsman" "1" + "Trophy Belt" "1" + "Horrific Headsplitter" "1" + "Cadaver's Cranium" "1" + "The Familiar Fez" "1" + "Duel MiniGame" "1" + "Gift Wrap" "1" + } + "supply_crate_loot_list_9" + { + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 15" "1" + "Paint Can 16" "1" + "Paint Can 17" "1" + "Paint Can 18" "1" + "Paint Can 19" "1" + "Paint Can 20" "1" + "The Grenadier's Softcap" "1" + } + "supply_crate_loot_list_10" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 1" "1" + "Paint Can 2" "1" + "Paint Can 3" "1" + "The Ullapool Caber" "1" + "The Loch-n-Load" "1" + "Scotch Bonnet" "1" + "Glengarry Bonnet" "1" + "Demoman's Fro" "1" + } + "supply_crate_loot_list_11" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 4" "1" + "Paint Can 5" "1" + "Paint Can 6" "1" + "The Crusader's Crossbow" "1" + "The Amputator" "1" + "Berliner's Bucket Helm" "1" + "Vintage Tyrolean" "1" + "Prussian Pickelhaube" "1" + } + "supply_crate_loot_list_12" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 7" "1" + "Paint Can 8" "1" + "Paint Can 9" "1" + "The Brass Beast" "1" + "The Buffalo Steak Sandvich" "1" + "Big Chief" "1" + "Officer's Ushanka" "1" + "Coupe D'isaster" "1" + } + "supply_crate_loot_list_13" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 13" "1" + "Paint Can 15" "1" + "Paint Can 16" "1" + "The Sydney Sleeper" "1" + "The Bushwacka" "1" + "Ol' Snaggletooth" "1" + "Professional's Panama" "1" + "Sniper Pith Helmet" "1" + } + "supply_crate_loot_list_14" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 14" "1" + "Paint Can 17" "1" + "Paint Can 18" "1" + "L'Etranger" "1" + "Your Eternal Reward" "1" + "The Familiar Fez" "1" + "Backbiter's Billycock" "1" + "Detective Noir" "1" + } + "supply_crate_loot_list_15" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can Team Color" "1" + "Paint Can 19" "1" + "Paint Can 20" "1" + "The Black Box" "1" + "The Battalion's Backup" "1" + "The Grenadier's Softcap" "1" + "Exquisite Rack" "1" + "Tyrant's Helm" "1" + } + "supply_crate_loot_list_16" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 1" "1" + "Paint Can 4" "1" + "Paint Can 7" "1" + "The Shortstop" "1" + "Mad Milk" "1" + "The Milkman" "1" + "Flipped Trilby" "1" + "Scout Whoopee Cap" "1" + } + "supply_crate_loot_list_17" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 2" "1" + "Paint Can 5" "1" + "Paint Can 8" "1" + "The Degreaser" "1" + "The Powerjack" "1" + "The Attendant" "1" + "Madame Dixie" "1" + "Pyromancer's Mask" "1" + } + "supply_crate_loot_list_18" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_NonStrange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "Paint Can 3" "1" + "Paint Can 6" "1" + "Paint Can 9" "1" + "The Wrangler" "1" + "The Gunslinger" "1" + "Engineer Welding Mask" "1" + "Buckaroos Hat" "1" + "Professor's Peculiarity" "1" + } + "supply_crate_loot_list_19" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "kill_eater_set_demo_a" "1" + "Demoman Hallmark" "1" + "Demoman Tricorne" "1" + "Laugh Taunt" "1" + } + "supply_crate_loot_list_20" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "kill_eater_set_soldier_a" "1" + "Soldier Samurai Hat" "1" + "Soldier Drill Hat" "1" + } + "supply_crate_loot_list_21" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "kill_eater_set_heavy_a" "1" + "Heavy Hair" "1" + "Football Helmet" "1" + } + "supply_crate_loot_list_23" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "kill_eater_set_scout_a" "1" + "Ye Olde Baker Boy" "1" + "The Milkman" "1" + } + "supply_crate_loot_list_24" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "kill_eater_set_spy_a" "1" + "Private Eye" "1" + "Fancy Fedora" "1" + } + "supply_crate_loot_list_25" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_1" + "kill_eater_set_pyro_a" "1" + "Prancer's Pride" "1" + "Respectless Rubber Glove" "1" + } + "supply_crate_loot_list_26" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_medic_a" "1" + "Medic Gatsby" "1" + "Otolaryngologist's Mirror" "1" + } + "supply_crate_loot_list_27" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_sniper_a" "1" + "Larrikin Robin" "1" + "Villain's Veil" "1" + } + "supply_crate_loot_list_28" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_engineer_a" "1" + "Engineer Earmuffs" "1" + "Mining Light" "1" + } + "supply_crate_loot_list_29" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_a" "1" + "Tough Guy's Toque" "1" + "Spy Beret" "1" + } + "supply_crate_loot_list_30" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_rare_mixed_a" "1" + } + "supply_crate_loot_list_31" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_b" "1" + "Grimm Hatte" "1" + "Magnificent Mongolian" "1" + } + "supply_crate_loot_list_32" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_c" "1" + "Pyromancer's Mask" "1" + "Prince Tavish's Crown" "1" + } + "supply_crate_loot_list_33" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_d" "1" + "German Gonzila" "1" + "Magnificent Mongolian" "1" + } + "supply_crate_loot_list_34" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_e" "1" + "Hard Counter" "1" + "Western Wear" "1" + } + "supply_crate_loot_list_37" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_f" "1" + "Cosa Nostra Cap" "1" + "Private Eye" "1" + } + "supply_crate_loot_list_38" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_g" "1" + "The Flamboyant Flamenco" "1" + "Reggaelator" "1" + } + "supply_crate_loot_list_39" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_h" "1" + "Paint Can 21" "1" + "Paint Can 22" "1" + "The Salty Dog" "1" + "Sniper Fishing Hat" "1" + } + "supply_crate_loot_list_40" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "kill_eater_set_rare_mixed_b" "1" + } + "supply_crate_loot_list_41" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_i" "1" + "Strange Part: Enemies Gibbed" "1" + "Strange Part: Airborne Enemies Killed" "1" + "Strange Part: Heavies Killed" "1" + "The Crocodile Smile" "1" + "Large Luchadore" "1" + } + "supply_crate_loot_list_42" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_j" "1" + "Strange Part: Buildings Destroyed" "1" + "Strange Part: Projectiles Reflected" "1" + "Strange Part: Headshot Kills" "1" + "The Outdoorsman" "1" + "Ol' Geezer" "1" + } + "supply_crate_loot_list_43" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_k" "1" + "Strange Part: Allies Extinguished" "1" + "Strange Part: Posthumous Kills" "1" + "Berliner's Bucket Helm" "1" + "Coupe D'isaster" "1" + } + "supply_crate_loot_list_44" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_l" "1" + "Strange Part: Demomen Killed" "1" + "Strange Part: Revenge Kills" "1" + "Strange Part: Critical Kills" "1" + "The Hat With No Name" "1" + "Stout Shako" "1" + } + "supply_crate_loot_list_45" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_m" "1" + "Strange Part: Soldiers Killed" "1" + "Strange Part: Domination Kills" "1" + "Strange Part: Kills While Explosive-Jumping" "1" + "The Tavish DeGroot Experience" "1" + "Rimmed Raincatcher" "1" + } + "supply_crate_loot_list_47" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_n" "1" + "Strange Part: Scouts Killed" "1" + "Strange Part: Sappers Destroyed" "1" + "Strange Part: Cloaked Spies Killed" "1" + "The Backwards Ballcap" "1" + "Professional's Panama" "1" + } + "supply_crate_loot_list_49" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_o" "1" + "Strange Part: Engineers Killed" "1" + "Strange Part: Robots Destroyed" "1" + "Strange Part: Kills While Low-Health" "1" + "The Surgeon's Stahlhelm" "1" + "Furious Fukaamigasa" "1" + } + "supply_crate_loot_list_54" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_p" "1" + "Strange Part: Snipers Killed" "1" + "Strange Part: Kills While Ubercharged" "1" + "Strange Part: Underwater Kills" "1" + "Hottie's Hoodie" "1" + "The Surgeon's Side Satchel" "1" + } + "supply_crate_loot_list_55" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_q" "1" + "Strange Part: Pyros Killed" "1" + "Strange Part: Defender Kills" "1" + "Strange Part: Airborne Enemies Killed" "1" + "The Counterfeit Billycock" "1" + "Desert Marauder" "1" + } + "supply_crate_loot_list_50" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "kill_eater_set_rare_mixed_c" "1" + "Strange Bacon Grease" "1" + } + "supply_crate_loot_list_56" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_r" "1" + "Strange Part: Medics Killed" "1" + "Strange Part: Tanks Destroyed" "1" + "Strange Part: Long-Distance Kills" "1" + "Western Wear" "1" + "Modest Pile of Hat" "1" + } + "supply_crate_loot_list_57" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_2" + "kill_eater_set_mixed_s" "1" + "Random Droppable Paints Package" "1" + "Tam O'Shanter" "1" + "Detective Noir" "1" + } + "supply_crate_loot_list_59" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "kill_eater_set_mixed_t" "1" + "Strange Part: Ubers Dropped" "1" + "Strange Part: Heavies Killed" "1" + "Strange Part: Giant Robots Destroyed" "1" + "The War Pig" "1" + "The Fast Learner" "1" + } + "jul_2013_crate_list_early" + { + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "The Brotherhood of Arms" "1" + "The Well-Rounded Rifleman" "1" + "The Breakneck Baggies" "1" + "The Powdered Practitioner" "1" + "The Pocket Pyro" "1" + "The Cloud Crasher" "1" + "The Pom-Pommed Provocateur" "1" + "The Dark Age Defender" "1" + "The Tyurtlenek" "1" + "The Mair Mask" "1" + } + "supply_crate_loot_list_60" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "kill_eater_set_rare_mixed_d" "1" + "Pomson 6000 Strangifier" "1" + "Strange Part: Taunt Kills" "1" + } + "supply_crate_loot_list_71" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "kill_eater_set_mixed_u" "1" + "Strange Part: Enemies Gibbed" "1" + "Strange Part: Victory Time Kills" "1" + "Strange Part: Robot Spy Kills" "1" + "The Buccaneer's Bicorne" "1" + "The Soviet Gentleman" "1" + } + "supply_crate_loot_list_75" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "kill_eater_set_mixed_v" "1" + "Strange Part: Players Wearing Unusuals" "1" + "Strange Part: Spies Killed" "1" + "Strange Part: Burning Enemies Killed" "1" + "Defiant Spartan" "1" + "The Apparatchik's Apparel" "1" + } + "supply_crate_loot_list_76" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "kill_eater_set_mixed_w" "1" + "Strange Part: Killstreaks Ended" "1" + "Strange Cosmetic Part: Killcam Taunts" "1" + "Strange Part: Damage Dealt" "1" + "The Front Runner" "1" + "The Cold Killer" "1" + } + "supply_crate_loot_list_77" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "kill_eater_set_mixed_x" "1" + "Strange Cosmetic Part: Fires Survived" "1" + "Strange Part: Ally Healing Done" "1" + "Strange Part: Point-Blank Kills" "1" + "The Builder's Blueprints" "1" + "Blighted Beak" "1" + } + "fall_2013_crate_contents_acorns" + { + "The Viking Braider" "1" + "The Flapjack" "1" + "The Gold Digger" "1" + "Pop-eyes" "1" + "Weight Room Warmer" "1" + "The Special Eyes" "1" + "The Chronomancer" "1" + "Pirate Bandana" "1" + "Brim-Full Of Bullets" "1" + "Li'l Snaggletooth" "1" + "Escapist" "1" + "L'homme Burglerre" "1" + "The Ward" "1" + } + "fall_2013_crate_contents_gourd" + { + "The Beep Boy" "1" + "The Cuban Bristle Crisis" "1" + "A Brush with Death" "1" + "Trickster's Turnout Gear" "1" + "Hong Kong Cone" "1" + "The Hurt Locher" "1" + "The Bone Dome" "1" + "The Air Raider" "1" + "The Medical Mystery" "1" + "The Cotton Head" "1" + "The Slick Cut" "1" + "The Frenchman's Formals" "1" + } + "fall_2013_crate_list_acorns" + { + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "fall_2013_crate_contents_acorns" "1" + } + "fall_2013_crate_list_gourd" + { + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "fall_2013_crate_contents_gourd" "1" + } + "supply_crate_loot_list_82" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "Pretty Boy's Pocket Pistol Strangifier" "1" + "Phlogistinator Strangifier" "1" + "Cleaner's Carbine Strangifier" "1" + "Strange Cosmetic Part: Kills" "1" + "Strange Part: Full Health Kills" "1" + "Strange Part: Headshot Kills" "1" + "Private Eye Strangifier" "1" + "Big Chief Strangifier" "1" + } + "supply_crate_loot_list_83" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Killstreak_Kits" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "Rocket Launcher Killstreakifier Basic" "1" + "Scattergun Killstreakifier Basic" "1" + "Sniperrifle Killstreakifier Basic" "1" + "Shotgun Killstreakifier Basic" "1" + "Ubersaw Killstreakifier Basic" "1" + "GRU Killstreakifier Basic" "1" + "Spy-cicle Launcher Killstreakifier Basic" "1" + "Axtinguisher Killstreakifier Basic" "1" + } + "lw_taunt_supply_crate_loot_list__taunts" + { + "I See You Taunt" "1" + "Buy A Life Taunt" "1" + "Results are in Taunt" "1" + "Party Trick Taunt" "1" + "Fresh Brewed Victory Taunt" "1" + "Spent Well Spirits Taunt" "1" + "Rancho Relaxo Taunt" "1" + "Battin' a Thousand Taunt" "1" + "Oblooterated Taunt" "1" + "Deep Fried Desire Taunt" "1" + "Square Dance Taunt" "1" + "Flippin' Awesome Taunt" "1" + "RPS Taunt" "1" + "Conga Taunt" "1" + "Skullcracker Taunt" "1" + } + "lw_taunt_supply_crate_loot_list" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List" + "loot_list_footer_desc" "#Econ_Revolving_Unusual_Taunt" + "lw_taunt_supply_crate_loot_list__taunts" "1" + } + "breadbox_items" + { + "The Self-Aware Beauty Mark" "1" + "The Snack Attack" "1" + "The Bread Bite" "1" + "Mutated Milk" "1" + } + "breadbox_lootlist" + { + "loot_list_header_desc" "#Econ_Breadbox_Lootlist_Header" + "loot_list_footer_desc" "#Econ_Breadbox_Lootlist_Footer" + "breadbox_items" "1" + } + "supply_crate_loot_list_84" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Killstreak_Kits" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "StickyLauncher Killstreakifier Basic" "1" + "Minigun Killstreakifier Basic" "1" + "DirectHit Killstreakifier Basic" "1" + "Huntsman Killstreakifier Basic" "1" + "Backburner Killstreakifier Basic" "1" + "Backscatter Killstreakifier Basic" "1" + "Kritzkrieg Killstreakifier Basic" "1" + "Ambassador Killstreakifier Basic" "1" + "Frontier Justice Killstreakifier Basic" "1" + } + "supply_crate_loot_list_85" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Series_3" + "Air Strike Strangifier" "1" + "Classic Strangifier" "1" + "Manmelter Strangifier" "1" + "Vaccinator Strangifier" "1" + "Strange Part: Robot Scout Kills" "1" + "Strange Part: Taunting Player Kills" "1" + "Strange Part: Buildings Destroyed" "1" + "Anger Strangifier" "1" + "Apparition's Aspect Strangifier" "1" + "Widowmaker Strangifier" "1" + } + "summer_2014_limited_86_base" + { + "The Mishap Mercenary" "1" + "The Lady Killer" "1" + "The Lone Survivor" "1" + "Poacher's Safari Jacket" "1" + "Thirst Blood" "1" + "Mann of the Seven Sees" "1" + "Hillbilly Speed-Bump" "1" + "The Unshaved Bear" "1" + "Pocket Heavy" "1" + } + "summer_2014_limited_86" + { + "loot_list_header_desc" "#TF_LimitedSummer_Loot_List_Header" + "loot_list_footer_desc" "#TF_LimitedSummer_Loot_List_Footer" + "summer_2014_limited_86_base" "1" + } + "halloween_loot_list_2014_soldier_community_cosmetics" + { + "Battle Bird" "1" + "Ghoul Gibbin' Gear" "1" + "Hellhunter's Headpiece" "1" + "Supernatural Stalker" "1" + "Kritz Or Treat Canteen" "1" + } + "halloween_loot_list_2014_medic_community_cosmetics" + { + "Herzensbrecher" "1" + "Hundekopf" "1" + "Kriegsmaschine-9000" "1" + "Transylvanian Toupe" "1" + "Vampiric Vesture" "1" + "Templar's Spirit" "1" + "Wings of Purity" "1" + } + "halloween_loot_list_2014_scout_community_cosmetics" + { + "Nugget Noggin" "1" + "Fowl Fists" "1" + "Talon Trotters" "1" + "Head Hunter" "1" + "Claws And Infect" "1" + "Crazy Legs" "1" + } + "halloween_loot_list_2014_engineer_community_cosmetics" + { + "Iron Fist" "1" + "Beep Man" "1" + "Soul of 'Spenser's Past" "1" + "Garden Bristles" "1" + "Tiny Texan" "1" + } + "halloween_loot_list_2014_spy_community_cosmetics" + { + "Shadowman's Shade" "1" + "Nightmare Hunter" "1" + "Rogue's Rabbit" "1" + "Facepeeler" "1" + "Ghost of Spies Checked Past" "1" + } + "halloween_loot_list_2014_demoman_community_cosmetics" + { + "Forgotten King's Restless Head" "1" + "Forgotten King's Pauldrons" "1" + "Eyeborg" "1" + "Explosive Mind" "1" + "Cursed Cruise" "1" + } + "halloween_loot_list_2014_heavy_community_cosmetics" + { + "Bone-Cut Belt" "1" + "Bull Locks" "1" + "Minsk Beef" "1" + "Immobile Suit" "1" + "The Hooded Haunter" "1" + } + "halloween_loot_list_2014_sniper_community_cosmetics" + { + "Conspiratorial Cut" "1" + "Skinless Slashers" "1" + "Mr. Mundee's Wild Ride" "1" + "Marsupial Man" "1" + "Kanga Kickers" "1" + "Roo Rippers" "1" + "Marsupial Muzzle" "1" + } + "halloween_loot_list_2014_pyro_community_cosmetics" + { + "Creature's Grin" "1" + "Arsonist Apparatus" "1" + "Moccasin Machinery" "1" + "Lollichop Licker" "1" + "Mr. Juice" "1" + "Vampyro" "1" + } + "halloween_loot_list_2014_crate__soldier" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_soldier_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__medic" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_medic_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__engineer" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_engineer_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__pyro" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_pyro_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__sniper" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_sniper_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__demoman" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_demoman_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__heavy" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_heavy_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__spy" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_spy_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "halloween_loot_list_2014_crate__scout" + { + "loot_list_footer_desc" "#TF_Halloween_Rare_Loot_List_Footer" + "halloween_loot_list_2014_scout_community_cosmetics" "1" + "lootlist_job_templates" + { + "halloween_2014_bonus_items" "1" + } + } + "supply_crate_loot_list_90_weapons_common_strange" + { + "The Winger" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "supply_crate_loot_list_90_weapons_rare_strange" + { + "The AWPer Hand" "1" + "The Ullapool Caber" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "supply_crate_loot_list_90_hats" + { + "Texas Ten Gallon" "1" + "Spy Beret" "1" + } + "supply_crate_loot_list_90" + { + "loot_list_header_desc" "#Loot_List_Strange_Weapons_Hat_mix" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Item" + "Cow Mangler 5000 Strangifier" "1" + "Third Degree Strangifier" "1" + "supply_crate_loot_list_90_weapons_common_strange" "1" + "Strange Part: Non-Critical Kills" "1" + "Strange Part: Players Hit" "1" + "Strange Cosmetic Part: Assists" "1" + "supply_crate_loot_list_90_hats" "1" + "supply_crate_loot_list_90_weapons_rare_strange" "1" + } + "supply_crate_loot_list_91" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Killstreak_Kits" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Item" + "Flaregun Killstreakifier Basic" "1" + "Wrench Killstreakifier Basic" "1" + "Revolver Killstreakifier Basic" "1" + "Machina Killstreakifier Basic" "1" + "Baby Face Blaster Killstreakifier Basic" "1" + "Huo Long Heatmaker Killstreakifier Basic" "1" + "Loose Cannon Killstreakifier Basic" "1" + "Vaccinator Killstreakifier Basic" "1" + "Air Strike Killstreakifier Basic" "1" + } + "supply_crate_loot_list_92_weapons_common_strange" + { + "The Candy Cane" "1" + "The Dalokohs Bar" "1" + "Warrior's Spirit" "1" + "Apoco-Fists" "1" + "The Red-Tape Recorder" "1" + "The Claidheamohmor" "1" + "The Wrangler" "1" + "The Shahanshah" "1" + "The Cloak and Dagger" "1" + "The Buff Banner" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + } + } + "supply_crate_loot_list_92_weapons_rare_strange" + { + "The Kritzkrieg" "1" + "lootlist_job_templates" + { + "add_kill_eater_and_strange" "1" + "add_kill_eater_2" "1" + } + } + "supply_crate_loot_list_92" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Item" + "supply_crate_loot_list_92_weapons_common_strange" "1" + "Righteous Bison Strangifier" "1" + "supply_crate_loot_list_92_weapons_rare_strange" "1" + } + "concealedkiller_case_loot_list_93" + { + "hide_lootlist" "1" + "loot_list_collection" "Concealed_killer_collection" + } + "powerhouse_case_loot_list_94" + { + "hide_lootlist" "1" + "loot_list_collection" "Powerhouse_collection" + } + "gunmettle_cosmetic_loot_list_95" + { + "hide_lootlist" "1" + "loot_list_collection" "GunMettleCosmetics_collection" + } + "invasion_case01_loot_list_96" + { + "hide_lootlist" "1" + "loot_list_collection" "Invasion_collection_01_lootlist" + } + "invasion_case02_loot_list_97" + { + "hide_lootlist" "1" + "loot_list_collection" "Invasion_collection_02_lootlist" + } + "halloween2015_case01_loot_list_98" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2015_collection_lootlist" + } + "tough_break_case_collection_01_lootlist_99" + { + "hide_lootlist" "1" + "loot_list_collection" "tough_break_case_collection_01_pyroland" + } + "tough_break_case_collection_02_lootlist_100" + { + "hide_lootlist" "1" + "loot_list_collection" "tough_break_case_collection_02_warbirds" + } + "tough_break_cosmetic_loot_list_101" + { + "hide_lootlist" "1" + "loot_list_collection" "ToughBreakCosmetics_collection" + } + "mayflower_cosmetic_loot_list_102" + { + "hide_lootlist" "1" + "loot_list_collection" "MayflowerCosmetics_collection" + } + "supply_crate_loot_list_103_weapons" + { + "The Iron Bomber" "1" + "Panic Attack Shotgun" "1" + "The Back Scatter" "1" + "The Quickiebomb Launcher" "1" + "The Ambassador" "1" + "The Reserve Shooter" "1" + "The Degreaser" "1" + "The Powerjack" "1" + "Natascha" "1" + "The Sandvich" "1" + "lootlist_job_templates" + { + "strange_quality_guaranteed" "1" + } + } + "supply_crate_loot_list_103_parts" + { + "Strange Part: Damage Dealt" "1" + "Strange Part: Ally Healing Done" "1" + "Strange Part: Critical Kills" "1" + "Strange Part: Pyros Killed" "1" + "Strange Part: Heavies Killed" "1" + } + "supply_crate_loot_list_103" + { + "loot_list_header_desc" "#Econ_Revolving_Loot_List_Strange_Weapons" + "loot_list_footer_desc" "#Econ_Revolving_Loot_List_Rare_Item" + "supply_crate_loot_list_103_weapons" "1" + "supply_crate_loot_list_103_parts" "1" + } + "halloween_2016_bonus_items" + { + "Aerobatics Demonstrator" "1" + "Final Frontier Freighter" "1" + "Hovering Hotshot" "1" + } + "halloween2016_case01_loot_list_104" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2016_collection_lootlist" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween_2016_bonus_items" + } + } + } + "winter2016_cosmetic_case_loot_list_105" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2016_Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "rainyday_cosmetic_loot_list_106" + { + "hide_lootlist" "1" + "loot_list_collection" "RainyDayCosmetics_collection" + } + "campaign3_cosmetic1_loot_list_107" + { + "hide_lootlist" "1" + "loot_list_collection" "Campaign3Cosmetics_Case1_collection" + } + "campaign3_cosmetic2_loot_list_108" + { + "hide_lootlist" "1" + "loot_list_collection" "Campaign3Cosmetics_Case2_collection" + } + "campaign3_valve_paintkit_loot_list_109" + { + "hide_lootlist" "1" + "loot_list_collection" "Campaign3Paintkits_case1_collection" + } + "campaign3_workshop_paintkit_loot_list_110" + { + "hide_lootlist" "1" + "loot_list_collection" "Campaign3Paintkits_case2_collection" + } + "campaign3_collection_1_paintkit_144" + { + "Paintkit 144" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_139" + { + "Paintkit 139" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_160" + { + "Paintkit 160" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_122" + { + "Paintkit 122" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_114" + { + "Paintkit 114" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_113" + { + "Paintkit 113" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_109" + { + "Paintkit 109" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_saxton_select_390" + { + "Paintkit 390" "1" + "lootlist_job_templates" + { + "wear_level_normal_distribution" "1" + } + } + "campaign3_collection_1_paintkit_144_factory_new" + { + "Paintkit 144" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_paintkit_139_factory_new" + { + "Paintkit 139" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_paintkit_160_factory_new" + { + "Paintkit 160" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_paintkit_122_factory_new" + { + "Paintkit 122" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_paintkit_114_factory_new" + { + "Paintkit 114" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_paintkit_113_factory_new" + { + "Paintkit 113" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_paintkit_109_factory_new" + { + "Paintkit 109" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_saxton_select_390_factory_new" + { + "Paintkit 390" "1" + "lootlist_job_templates" + { + "wear_level_factory_new" "1" + } + } + "campaign3_collection_1_tier_1" + { + "loot_list_header_desc" "#Econ_KeylessCase_Header" + "Paintkit 102" "1" + "Paintkit 104" "1" + "Paintkit 106" "1" + "Paintkit 109" "1" + "Paintkit 113" "1" + "Paintkit 114" "1" + "Paintkit 122" "1" + "Paintkit 160" "1" + "Paintkit 139" "1" + "Paintkit 144" "1" + } + "campaign3_collection_1_tier_2" + { + "loot_list_header_desc" "#Econ_KeylessCase_Header" + "Paintkit 102" "1" + "Paintkit 104" "1" + "Paintkit 106" "1" + "Paintkit 109" "1" + "Paintkit 113" "1" + "Paintkit 114" "1" + "Paintkit 122" "1" + "Paintkit 160" "1" + } + "campaign3_collection_1_tier_3" + { + "loot_list_header_desc" "#Econ_KeylessCase_Header" + "Paintkit 102" "1" + "Paintkit 104" "1" + "Paintkit 106" "1" + "Paintkit 109" "1" + "Paintkit 113" "1" + "Paintkit 114" "1" + } + "campaign3_collection_2_tier_1" + { + "loot_list_header_desc" "#Econ_KeylessCase_Header" + "Paintkit 130" "1" + "Paintkit 151" "1" + "Paintkit 105" "1" + "Paintkit 112" "1" + "Paintkit 120" "1" + "Paintkit 163" "1" + "Paintkit 143" "1" + "Paintkit 161" "1" + } + "campaign3_collection_2_tier_2" + { + "loot_list_header_desc" "#Econ_KeylessCase_Header" + "Paintkit 130" "1" + "Paintkit 151" "1" + "Paintkit 105" "1" + "Paintkit 112" "1" + "Paintkit 120" "1" + "Paintkit 163" "1" + } + "campaign3_collection_2_tier_3" + { + "loot_list_header_desc" "#Econ_KeylessCase_Header" + "Paintkit 130" "1" + "Paintkit 151" "1" + "Paintkit 105" "1" + "Paintkit 112" "1" + } + "winter2017_cosmetic_loot_list_117" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2017Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "winter2017_war_paint_loot_list_118" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2017Paintkits_collection" + } + "bluemoon_cosmetic_loot_list_119" + { + "hide_lootlist" "1" + "loot_list_collection" "BlueMoonCosmetics_collection" + } + "halloween_2018_bonus_items" + { + "Crocodile Mun-Dee" "1" + "Scopers Scales" "1" + "Dell in the Shell" "1" + "A Shell of a Mann" "1" + } + "halloween2018_cosmetic_loot_list_120" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2018_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween_2018_bonus_items" + } + } + } + "halloween2018_war_paint_loot_list_121" + { + "hide_lootlist" "1" + "loot_list_collection" "Halloween2018Paintkits_collection" + } + "winter2018_cosmetic_loot_list_122" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2018Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "summer2019_cosmetic_loot_list_123" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2019Cosmetics_collection" + } + "halloween_2019_bonus_items" + { + "Pyro Shark" "1" + "Avian Amante" "1" + "Eingineer" "1" + "Remorseless Raptor" "1" + "Wild Whip" "1" + } + "halloween2019_cosmetic_loot_list_124" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2019_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween_2019_bonus_items" + } + } + } + "winter2019_cosmetic_loot_list_125" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2019Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "winter2019_war_paint_loot_list_126" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2019Paintkits_collection" + } + "summer2020_cosmetic_loot_list_127" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2020Cosmetics_collection" + } + "halloween2020_bonus_items" + { + "War Blunder" "1" + "Grounded Flyboy" "1" + "Rolfe Copter" "1" + "The Pug Mug" "1" + "The Treehugger" "1" + "Mannvich" "1" + } + "halloween2020_cosmetic_loot_list_128" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2020_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween2020_bonus_items" + } + } + } + "halloween2020_war_paint_loot_list_129" + { + "hide_lootlist" "1" + "loot_list_collection" "Halloween2020Paintkits_collection" + } + "winter2020_cosmetic_loot_list_130" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2020Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "winter2020_war_paint_loot_list_131" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2020Paintkits_collection" + } + "summer2021_cosmetic_loot_list_132" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2021Cosmetics_collection" + } + "halloween2021_bonus_items" + { + "Poopy Doe" "1" + "Batter's Beak" "1" + "War Dog" "1" + "The Miami Rooster" "1" + "Computron 5000" "1" + "The Corpse Carrier" "1" + } + "halloween2021_cosmetic_loot_list_133" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2021_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween2021_bonus_items" + } + } + } + "halloween2021_war_paint_loot_list_134" + { + "hide_lootlist" "1" + "loot_list_collection" "Halloween2021Paintkits_collection" + } + "winter2021_cosmetic_loot_list_135" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2021Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "summer2022_cosmetic_loot_list_136" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2022Cosmetics_collection" + } + "halloween2022_bonus_items" + { + "Misha's Maw" "1" + "Cabinet Mann" "1" + "The Fire Breather" "1" + "Magical Mount" "1" + "The Pony Express" "1" + } + "halloween2022_cosmetic_loot_list_137" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2022_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween2022_bonus_items" + } + } + } + "halloween2022_war_paint_loot_list_138" + { + "hide_lootlist" "1" + "loot_list_collection" "Halloween2022Paintkits_collection" + } + "winter2022_cosmetic_loot_list_139" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2022Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "summer2023_cosmetic_loot_list_140" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2023Cosmetics_collection" + } + "summer2023_war_paint_loot_list_141" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2023Paintkits_collection" + } + "halloween2023_bonus_items" + { + "Blastphomet" "1" + "Spyder" "1" + "Carry-Van" "1" + "Fiercesome Fluorescence" "1" + } + "halloween2023_cosmetic_loot_list_142" + { + "hide_lootlist" "1" + "loot_list_collection" "halloween2023_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "halloween2023_bonus_items" + } + } + } + "winter2023_cosmetic_loot_list_143" + { + "hide_lootlist" "1" + "loot_list_collection" "Winter2023Cosmetics_collection" + "lootlist_jobs" + { + "additional_drop" + { + "loot_list" "festivizer_lootlist" + } + } + } + "summer2024_cosmetic_loot_list_144" + { + "hide_lootlist" "1" + "loot_list_collection" "Summer2024Cosmetics_collection" + } + } + "revolving_loot_lists" + { + "supply_crate_loot_list_1" "1" + "supply_crate_loot_list_2" "2" + "supply_crate_loot_list_3" "3" + "supply_crate_loot_list_4" "4" + "supply_crate_loot_list_5" "5" + "winter_crate_loot_list_2010" "6" + "supply_crate_loot_list_7" "7" + "supply_crate_loot_list_8" "8" + "supply_crate_loot_list_9" "9" + "supply_crate_loot_list_10" "10" + "supply_crate_loot_list_11" "11" + "supply_crate_loot_list_12" "12" + "supply_crate_loot_list_13" "13" + "supply_crate_loot_list_14" "14" + "supply_crate_loot_list_15" "15" + "supply_crate_loot_list_16" "16" + "supply_crate_loot_list_17" "17" + "supply_crate_loot_list_18" "18" + "supply_crate_loot_list_19" "19" + "supply_crate_loot_list_20" "20" + "supply_crate_loot_list_21" "21" + "supply_crate_loot_list_summer_2011" "22" + "supply_crate_loot_list_23" "23" + "supply_crate_loot_list_24" "24" + "supply_crate_loot_list_25" "25" + "supply_crate_loot_list_26" "26" + "supply_crate_loot_list_27" "27" + "supply_crate_loot_list_28" "28" + "supply_crate_loot_list_29" "29" + "supply_crate_loot_list_30" "30" + "supply_crate_loot_list_31" "31" + "supply_crate_loot_list_32" "32" + "supply_crate_loot_list_33" "33" + "supply_crate_loot_list_34" "34" + "winter_crate_loot_list_2011_naughty" "35" + "winter_crate_loot_list_2011_nice" "36" + "supply_crate_loot_list_37" "37" + "supply_crate_loot_list_38" "38" + "supply_crate_loot_list_39" "39" + "supply_crate_loot_list_40" "40" + "supply_crate_loot_list_41" "41" + "supply_crate_loot_list_42" "42" + "supply_crate_loot_list_43" "43" + "supply_crate_loot_list_44" "44" + "supply_crate_loot_list_45" "45" + "supply_crate_loot_list_pyro_2012" "46" + "supply_crate_loot_list_47" "47" + "supply_crate_loot_list_fall_2012" "48" + "supply_crate_loot_list_49" "49" + "supply_crate_loot_list_halloween_2012" "51" + "winter_crate_loot_list_2012_naughty" "52" + "winter_crate_loot_list_2012_nice" "53" + "supply_crate_loot_list_54" "54" + "supply_crate_loot_list_55" "55" + "supply_crate_loot_list_50" "50" + "supply_crate_loot_list_56" "56" + "supply_crate_loot_list_57" "57" + "robo_2013_crate_loot_list" "58" + "supply_crate_loot_list_59" "59" + "jul_2013_crate_list_early" "61" + "jul_2013_crate_list_01" "62" + "jul_2013_crate_list_02" "63" + "jul_2013_crate_list_03" "64" + "jul_2013_crate_list_04" "65" + "jul_2013_crate_list_05" "66" + "jul_2013_crate_list_06" "67" + "jul_2013_crate_list_07" "68" + "jul_2013_crate_list_08" "69" + "supply_crate_loot_list_60" "60" + "supply_crate_loot_list_71" "71" + "fall_2013_crate_list_acorns" "72" + "fall_2013_crate_list_gourd" "73" + "supply_crate_loot_list_halloween_2013" "74" + "supply_crate_loot_list_75" "75" + "supply_crate_loot_list_76" "76" + "supply_crate_loot_list_77" "77" + "winter_crate_loot_list_2013_naughty" "78" + "winter_crate_loot_list_2013_nice" "79" + "strongbox_crate_loot_list_2014" "81" + "supply_crate_loot_list_82" "82" + "supply_crate_loot_list_83" "83" + "supply_crate_loot_list_84" "84" + "supply_crate_loot_list_85" "85" + "eotl_2014_crate_loot_list_87" "87" + "christmas_2014_naughty_festive_lootlist" "88" + "christmas_2014_nice_cosmetics_lootlist" "89" + "supply_crate_loot_list_90" "90" + "supply_crate_loot_list_91" "91" + "supply_crate_loot_list_92" "92" + "concealedkiller_case_loot_list_93" "93" + "powerhouse_case_loot_list_94" "94" + "gunmettle_cosmetic_loot_list_95" "95" + "invasion_case01_loot_list_96" "96" + "invasion_case02_loot_list_97" "97" + "halloween2015_case01_loot_list_98" "98" + "tough_break_case_collection_01_lootlist_99" "99" + "tough_break_case_collection_02_lootlist_100" "100" + "tough_break_cosmetic_loot_list_101" "101" + "mayflower_cosmetic_loot_list_102" "102" + "supply_crate_loot_list_103" "103" + "halloween2016_case01_loot_list_104" "104" + "winter2016_cosmetic_case_loot_list_105" "105" + "rainyday_cosmetic_loot_list_106" "106" + "campaign3_cosmetic1_loot_list_107" "107" + "campaign3_cosmetic2_loot_list_108" "108" + "campaign3_valve_paintkit_loot_list_109" "109" + "campaign3_workshop_paintkit_loot_list_110" "110" + "campaign3_collection_1_tier_1" "111" + "campaign3_collection_1_tier_2" "112" + "campaign3_collection_1_tier_3" "113" + "campaign3_collection_2_tier_1" "114" + "campaign3_collection_2_tier_2" "115" + "campaign3_collection_2_tier_3" "116" + "winter2017_cosmetic_loot_list_117" "117" + "winter2017_war_paint_loot_list_118" "118" + "bluemoon_cosmetic_loot_list_119" "119" + "halloween2018_cosmetic_loot_list_120" "120" + "halloween2018_war_paint_loot_list_121" "121" + "winter2018_cosmetic_loot_list_122" "122" + "summer2019_cosmetic_loot_list_123" "123" + "halloween2019_cosmetic_loot_list_124" "124" + "winter2019_cosmetic_loot_list_125" "125" + "winter2019_war_paint_loot_list_126" "126" + "summer2020_cosmetic_loot_list_127" "127" + "halloween2020_cosmetic_loot_list_128" "128" + "halloween2020_war_paint_loot_list_129" "129" + "winter2020_cosmetic_loot_list_130" "130" + "winter2020_war_paint_loot_list_131" "131" + "summer2021_cosmetic_loot_list_132" "132" + "halloween2021_cosmetic_loot_list_133" "133" + "halloween2021_war_paint_loot_list_134" "134" + "winter2021_cosmetic_loot_list_135" "135" + "summer2022_cosmetic_loot_list_136" "136" + "halloween2022_cosmetic_loot_list_137" "137" + "halloween2022_war_paint_loot_list_138" "138" + "winter2022_cosmetic_loot_list_139" "139" + "summer2023_cosmetic_loot_list_140" "140" + "summer2023_war_paint_loot_list_141" "141" + "halloween2023_cosmetic_loot_list_142" "142" + "winter2023_cosmetic_loot_list_143" "143" + "summer2024_cosmetic_loot_list_144" "144" + + "kill_eater_set_demo_a" "-1" + "kill_eater_set_soldier_a" "-2" + "kill_eater_set_heavy_a" "-3" + + "kill_eater_set_scout_a" "-4" + "kill_eater_set_spy_a" "-5" + "kill_eater_set_pyro_a" "-6" + + "kill_eater_set_medic_a" "-7" + "kill_eater_set_medic_a__medigun" "-8" + "kill_eater_set_sniper_a" "-9" + "kill_eater_set_sniper_a__jarate" "-10" + "kill_eater_set_engineer_a" "-11" + "kill_eater_set_engineer_a__wrenches" "-12" + + "kill_eater_set_mixed_a" "-13" + "kill_eater_set_mixed_b" "-14" + "kill_eater_set_rare_mixed_a__secondary_stats" "-15" + "kill_eater_set_rare_mixed_a" "-16" + "kill_eater_set_mixed_c" "-17" + "kill_eater_set_mixed_d" "-18" + "kill_eater_set_mixed_e" "-19" + "kill_eater_set_mixed_f" "-20" + "kill_eater_set_mixed_g__secondary_stats" "-21" + "kill_eater_set_mixed_g" "-22" + "kill_eater_set_mixed_h" "-23" + "kill_eater_set_rare_mixed_b__secondary_stats" "-24" + "kill_eater_set_rare_mixed_b" "-25" + "kill_eater_set_mixed_i" "-26" + "kill_eater_set_mixed_j" "-27" + "kill_eater_set_mixed_k" "-28" + "kill_eater_set_mixed_l" "-29" + "kill_eater_set_mixed_m" "-30" + "kill_eater_set_mixed_n" "-31" + "kill_eater_set_rare_mixed_b__secondary_stats" "-32" + "kill_eater_set_rare_mixed_b" "-33" + } + "recipes" + { + + "0" + { + "name" "#RT_MP_A" + "n_A" "#RI_Pp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#RI_Pi" + "do_A" "1" + "do_B" "#CI_Bar_A" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "item_slot" + "operator" "string==" + "value" "primary" + "required" "1" + } + "1" + { + "field" "craft_material_type" + "operator" "!string==" + "value" "craft_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "category" "crafting" + } + "1" + { + "name" "#RT_MP_A" + "n_A" "#RI_Sp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#RI_Si" + "do_A" "1" + "do_B" "#CI_Bar_A" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "item_slot" + "operator" "string==" + "value" "secondary" + "required" "1" + } + "1" + { + "field" "craft_material_type" + "operator" "!string==" + "value" "craft_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "category" "crafting" + } + "2" + { + "name" "#RT_MP_A" + "n_A" "#RI_Mp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#RI_Mi" + "do_A" "1" + "do_B" "#CI_Bar_A" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "item_slot" + "operator" "string==" + "value" "melee" + "required" "1" + } + "1" + { + "field" "craft_material_type" + "operator" "!string==" + "value" "craft_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "category" "crafting" + } + "3" + { + "name" "#RT_MP_A" + "n_A" "#RI_Cw" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#RI_Wc" + "do_A" "1" + "do_B" "#CI_Bar_A" + "all_same_class" "1" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "category" "crafting" + } + "4" + { + "name" "#RT_C_A" + "n_A" "#CI_Bar_Ap" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#CI_Bar_Ap" + "do_A" "1" + "do_B" "#CI_Bar_B" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "category" "crafting" + } + "5" + { + "name" "#RT_C_A" + "n_A" "#CI_Bar_Bp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#CI_Bar_Bp" + "do_A" "1" + "do_B" "#CI_Bar_C" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + } + "category" "crafting" + } + "6" + { + "name" "#RT_F_A" + "n_A" "#RI_Hg" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#CI_Bar_Cp" + "do_A" "1" + "do_B" "#RI_H" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "craft_class" + "operator" "string==" + "value" "hat" + "required" "1" + } + } + } + } + "category" "rareitem" + } + "7" + { + "name" "#RT_F_A" + "n_A" "#CI_T_C" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#RI_Wc" + "do_A" "1" + "do_B" "#CI_T_C" + "all_same_class" "1" + "add_class_usage_to_output" "1" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "class_token" + "required" "1" + } + } + } + } + "category" "crafting" + } + "8" + { + "name" "#RT_F_A" + "n_A" "#CI_T_S" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#RI_Ws" + "do_A" "1" + "do_B" "#CI_T_S" + "all_same_slot" "1" + "add_slot_usage_to_output" "1" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "slot_token" + "required" "1" + } + } + } + } + "category" "crafting" + } + "9" + { + "name" "#RT_R_A" + "n_A" "#RI_Hg" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#RI_Hp" + "do_A" "1" + "do_B" "#RI_H" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "hat" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "hat" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "craft_class" + "operator" "string==" + "value" "hat" + "required" "1" + } + } + } + } + "category" "rareitem" + } + "10" + { + "name" "#RT_F_A" + "n_A" "#RI_Ch" + "desc_inputs" "#RDI_ABC" + "desc_outputs" "#RDO_ABC" + "di_A" "4" + "di_B" "#CI_Bar_Cp" + "di_C" "#RI_CTc" + "do_A" "1" + "do_B" "#RI_Cs" + "do_C" "#RI_H" + "add_class_usage_to_output" "1" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "4" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "class_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "craft_class" + "operator" "string==" + "value" "hat" + "required" "1" + } + "1" + { + "field" "all_classes" + "operator" "!float==" + "value" "1" + "required" "0" + } + } + } + } + "category" "rareitem" + } + "11" + { + "name" "#RT_F_A" + "n_A" "#RI_Cw" + "desc_inputs" "#RDI_ABC" + "desc_outputs" "#RDO_ABC" + "di_A" "#CI_Bar_A" + "di_B" "#RI_STc" + "di_C" "#RI_CTc" + "do_A" "1" + "do_B" "#RI_Cs" + "do_C" "#RI_W" + "add_class_usage_to_output" "1" + "add_slot_usage_to_output" "2" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "class_token" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "slot_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "quality" "unique" + "conditions" + { + "0" + { + "field" "craft_class" + "operator" "!string==" + "value" "hat" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "12" + { + "name" "#RT_MP_A" + "n_A" "#RI_Mcp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#RI_Mci" + "do_A" "1" + "do_B" "#CI_Bar_A" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "item_slot" + "operator" "string==" + "value" "misc" + "required" "1" + } + "1" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "category" "crafting" + } + "13" + { + "name" "#RT_R_A" + "n_A" "#CI_T_C" + "desc_inputs" "#RDI_ABC" + "desc_outputs" "#RDO_AB" + "di_A" "1" + "di_B" "#RI_W" + "di_C" "#RI_CTc" + "do_A" "1" + "do_B" "#CI_T_C" + "add_class_usage_to_output" "0" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "class_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "class_token" + "required" "1" + } + } + } + } + "category" "crafting" + } + "14" + { + "name" "#RT_R_A" + "n_A" "#CI_T_S" + "desc_inputs" "#RDI_ABC" + "desc_outputs" "#RDO_AB" + "di_A" "1" + "di_B" "#RI_W" + "di_C" "#RI_STc" + "do_A" "1" + "do_B" "#CI_T_S" + "add_slot_usage_to_output" "0" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "slot_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "item_class" + "operator" "string==" + "value" "slot_token" + "required" "1" + } + } + } + } + "category" "crafting" + } + "15" + { + "name" "#RT_MP_A" + "n_A" "#RI_Tp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#RI_Tp" + "do_A" "1" + "do_B" "#CI_Bar_B" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_token" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_token" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_token" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "category" "crafting" + } + "16" + { + "name" "#RT_F_A" + "n_A" "#TF_Scout_Bonk_Helmet" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_Unique_Achievement_EnergyDrink" + "di_C" "#TF_Unique_Headgear_Scout" + "do_A" "1" + "do_B" "#TF_Scout_Bonk_Helmet" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Bonk! Atomic Punch" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Bonk! Atomic Punch" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Batter's Helmet" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Bonk Helm" + "required" "1" + } + } + } + } + "category" "rareitem" + } + "17" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_EnergyDrink_CritCola" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Achievement_EnergyDrink" + "di_B" "#TF_Unique_Achievement_Medigun1" + "do_A" "1" + "do_B" "#TF_Unique_EnergyDrink_CritCola" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Bonk! Atomic Punch" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Kritzkrieg" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Crit-a-Cola" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "18" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Makeshiftclub" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_Achievement_Bat" + "do_A" "1" + "do_B" "#TF_Unique_Makeshiftclub" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sandman" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Pain Train" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "19" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Blast_Boots" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Achievement_Shield" + "di_B" "#TF_Unique_Backstab_Shield" + "do_A" "1" + "do_B" "#TF_Unique_Blast_Boots" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Chargin' Targe" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Razorback" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Gunboats" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "20" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Lunchbox_Chocolate" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_Achievement_Lunchbox" + "do_A" "1" + "do_B" "#TF_Unique_Lunchbox_Chocolate" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sandvich" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Dalokohs Bar" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "21" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Sledgehammer" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_Achievement_Pickaxe" + "do_A" "1" + "do_B" "#TF_Unique_Sledgehammer" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Equalizer" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Homewrecker" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "22" + { + "name" "#RT_MP_A" + "n_A" "#CI_Bar_Bp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "1" + "di_B" "#CI_Bar_Bp" + "do_A" "3" + "do_B" "#CI_Bar_A" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "item2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "item3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "category" "crafting" + } + "23" + { + "name" "#RT_MP_A" + "n_A" "#CI_Bar_Cp" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "1" + "di_B" "#CI_Bar_Cp" + "do_A" "3" + "do_B" "#CI_Bar_B" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "item2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "item3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "category" "crafting" + } + "24" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_BattleAxe" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Achievement_FireAxe1" + "di_B" "#TF_Unique_Achievement_Jar" + "do_A" "1" + "do_B" "#TF_Unique_BattleAxe" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Axtinguisher" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Jarate" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Scotsman's Skullcutter" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "25" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_TribalmanKukri" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Achievement_FeignWatch" + "di_B" "#TF_Unique_Achievement_CompoundBow" + "do_A" "1" + "do_B" "#TF_Unique_TribalmanKukri" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Huntsman" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Dead Ringer" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Tribalman's Shiv" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "26" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Combat_Wrench" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_Achievement_Revolver" + "do_A" "1" + "do_B" "#TF_Unique_Combat_Wrench" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Ambassador" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Southern Hospitality" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "27" + { + "name" "#RT_F_A" + "n_A" "#TF_ThePowerjack" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_FireAxe1" + "do_A" "1" + "do_B" "#TF_ThePowerjack" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Axtinguisher" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Powerjack" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "28" + { + "name" "#RT_F_A" + "n_A" "#TF_TheDegreaser" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Flamethrower" + "do_A" "1" + "do_B" "#TF_TheDegreaser" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Backburner" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Degreaser" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "29" + { + "name" "#RT_F_A" + "n_A" "#TF_TheShortstop" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Scattergun_Double" + "do_A" "1" + "do_B" "#TF_TheShortstop" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Force-a-Nature" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Shortstop" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "30" + { + "name" "#RT_F_A" + "n_A" "#TF_TheHolyMackerel" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Bat" + "do_A" "1" + "do_B" "#TF_TheHolyMackerel" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sandman" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Holy Mackerel" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "31" + { + "name" "#RT_F_A" + "n_A" "#TF_MadMilk" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Jar" + "do_A" "1" + "do_B" "#TF_MadMilk" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Jarate" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Mad Milk" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "32" + { + "name" "#RT_F_A" + "n_A" "#TF_LEtranger" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_FeignWatch" + "do_A" "1" + "do_B" "#TF_LEtranger" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Dead Ringer" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "L'Etranger" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "33" + { + "name" "#RT_F_A" + "n_A" "#TF_EternalReward" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_CloakWatch" + "do_A" "1" + "do_B" "#TF_EternalReward" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Cloak and Dagger" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Your Eternal Reward" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "34" + { + "name" "#RT_F_A" + "n_A" "#TF_TheBattalionsBackup" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_SoldierBuff" + "do_A" "1" + "do_B" "#TF_TheBattalionsBackup" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Buff Banner" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Battalion's Backup" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "35" + { + "name" "#RT_F_A" + "n_A" "#TF_TheBlackBox" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_RocketLauncher" + "do_A" "1" + "do_B" "#TF_TheBlackBox" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Direct Hit" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Black Box" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "36" + { + "name" "#RT_F_A" + "n_A" "#TF_SydneySleeper" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_CompoundBow" + "do_A" "1" + "do_B" "#TF_SydneySleeper" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Huntsman" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sydney Sleeper" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "37" + { + "name" "#RT_F_A" + "n_A" "#TF_DarwinsDangerShield" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Backstab_Shield" + "do_A" "1" + "do_B" "#TF_DarwinsDangerShield" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Razorback" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Darwin's Danger Shield" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "38" + { + "name" "#RT_F_A" + "n_A" "#TF_TheBushwacka" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Sword" + "do_A" "1" + "do_B" "#TF_TheBushwacka" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Eyelander" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Bushwacka" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "39" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Gloves_of_Running_Urgently" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_Ap" + "di_C" "#TF_Unique_Achievement_Fists" + "do_A" "1" + "do_B" "#TF_Unique_Gloves_of_Running_Urgently" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Killing Gloves of Boxing" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Gloves of Running Urgently" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "40" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_BattleSaw" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_Ap" + "di_C" "#TF_Unique_Achievement_Bonesaw1" + "do_A" "1" + "do_B" "#TF_Unique_BattleSaw" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Ubersaw" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Vita-Saw" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "41" + { + "name" "#RT_F_A" + "n_A" "#RI_Sh" + "desc_inputs" "#RDI_ABC" + "desc_outputs" "#RDO_AB" + "di_A" "4" + "di_B" "#CI_Bar_Cp" + "di_C" "#RI_SIc" + "do_A" "1" + "do_B" "#RO_SH" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "4" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "item_set" + "operator" "!string==" + "value" "nullstring" + "required" "1" + } + "1" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "item_set" + "operator" "!string==" + "value" "nullstring" + "required" "1" + } + "1" + { + "field" "craft_class" + "operator" "string==" + "value" "hat" + "required" "1" + } + } + } + } + "add_set_to_output" "1" + "category" "rareitem" + } + "42" + { + "name" "#RT_SaxtonMask" + "desc_inputs" "#RI_Mask" + "desc_outputs" "#RO_Mask" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Medic" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Scout" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Spy" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Heavy" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Engineer" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Pyro" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Demoman" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Sniper" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Soldier" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Halloween Mask - Saxton Hale" + "required" "1" + } + } + } + } + "category" "special" + } + "43" + { + "name" "#RT_F_A" + "n_A" "#TF_HalloweenBoss_Axe" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_BattleAxe" + "di_B" "#CI_Bar_Cp" + "di_C" "#TF_Haunted_Metal" + "do_A" "1" + "do_B" "#TF_HalloweenBoss_Axe" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Haunted Metal Scrap" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Scotsman's Skullcutter" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Horseless Headless Horseman's Headtaker" + "required" "1" + } + } + } + } + "category" "special" + } + "44" + { + "name" "#RT_F_A" + "n_A" "#RI_HHg" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "4" + "di_B" "#CI_Bar_Cp" + "di_C" "#TF_Haunted_Metal" + "do_A" "1" + "do_B" "#RI_HHg" + "always_known" "1" + "premium_only" "1" + "disabled" "0" + "input_items" + { + "4" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Haunted Metal Scrap" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "craft_class" + "operator" "string==" + "value" "haunted_hat" + "required" "1" + } + } + } + } + "category" "special" + } + "45" + { + "name" "#RT_F_A" + "n_A" "#TF_Amputator" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_BattleSaw" + "do_A" "1" + "do_B" "#TF_Amputator" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Vita-Saw" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Amputator" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "46" + { + "name" "#RT_F_A" + "n_A" "#TF_CrusadersCrossbow" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_A" + "di_C" "#TF_Unique_Achievement_CompoundBow" + "do_A" "1" + "do_B" "#TF_CrusadersCrossbow" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Huntsman" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Crusader's Crossbow" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "47" + { + "name" "#RT_F_A" + "n_A" "#TF_UllapoolCaber" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_A" + "di_C" "#TF_Unique_Makeshiftclub" + "do_A" "1" + "do_B" "#TF_UllapoolCaber" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Pain Train" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Ullapool Caber" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "48" + { + "name" "#RT_F_A" + "n_A" "#TF_LochNLoad" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_StickyLauncher" + "do_A" "1" + "do_B" "#TF_LochNLoad" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Scottish Resistance" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Loch-n-Load" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "49" + { + "name" "#RT_F_A" + "n_A" "#TF_WarriorsSpirit" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_Gloves_of_Running_Urgently" + "do_A" "1" + "do_B" "#TF_WarriorsSpirit" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Gloves of Running Urgently" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Warrior's Spirit" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "50" + { + "name" "#RT_F_A" + "n_A" "#TF_BuffaloSteak" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Lunchbox" + "do_A" "1" + "do_B" "#TF_BuffaloSteak" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sandvich" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Buffalo Steak Sandvich" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "51" + { + "name" "#RT_F_A" + "n_A" "#TF_GatlingGun" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Minigun" + "do_A" "1" + "do_B" "#TF_GatlingGun" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Natascha" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Brass Beast" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "52" + { + "name" "#RT_F_A" + "n_A" "#TF_CandyCane" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Makeshiftclub" + "di_B" "#TF_Unique_Achievement_Medigun1" + "do_A" "1" + "do_B" "#TF_CandyCane" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Pain Train" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Kritzkrieg" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Candy Cane" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "53" + { + "name" "#RT_F_A" + "n_A" "#TF_Claidheamohmor" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Achievement_Shield" + "di_B" "#TF_Unique_Sledgehammer" + "do_A" "1" + "do_B" "#TF_Claidheamohmor" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Chargin' Targe" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Homewrecker" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Claidheamohmor" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "54" + { + "name" "#RT_F_A" + "n_A" "#TF_BackScratcher" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_BattleAxe" + "di_B" "#TF_Unique_Achievement_FireAxe1" + "do_A" "1" + "do_B" "#TF_BackScratcher" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Scotsman's Skullcutter" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Axtinguisher" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Back Scratcher" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "55" + { + "name" "#RT_F_A" + "n_A" "#TF_BostonBasher" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Unique_Achievement_Bat" + "di_B" "#TF_Unique_TribalmanKukri" + "do_A" "1" + "do_B" "#TF_BostonBasher" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sandman" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Tribalman's Shiv" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Boston Basher" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "56" + { + "name" "#RT_F_A" + "n_A" "#TF_FistsOfSteel" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Fists" + "do_A" "1" + "do_B" "#TF_FistsOfSteel" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Killing Gloves of Boxing" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Fists of Steel" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "57" + { + "name" "#RT_F_A" + "n_A" "#TF_Jag" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_Unique_Combat_Wrench" + "do_A" "1" + "do_B" "#TF_Jag" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Southern Hospitality" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Jag" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "58" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_RiftFireAxe" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_Bp" + "di_C" "#TF_Unique_Achievement_FireAxe1" + "do_A" "1" + "do_B" "#TF_Unique_RiftFireAxe" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Axtinguisher" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Sharpened Volcano Fragment" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "59" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_RiftFireMace" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_Bp" + "di_C" "#TF_BostonBasher" + "do_A" "1" + "do_B" "#TF_Unique_RiftFireMace" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Boston Basher" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Sun-on-a-Stick" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "60" + { + "name" "#RT_F_A" + "n_A" "#TF_SoldierKatana" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_Unique_Achievement_Sword" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_SoldierKatana" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Eyelander" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Half-Zatoichi" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "61" + { + "name" "#RT_F_A" + "n_A" "#TF_SoldierSashimono" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_TheBattalionsBackup" + "do_A" "1" + "do_B" "#TF_SoldierSashimono" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Battalion's Backup" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Concheror" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "62" + { + "name" "#RT_F_A" + "n_A" "#TF_Kunai" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_EternalReward" + "do_A" "1" + "do_B" "#TF_Kunai" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Your Eternal Reward" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Conniver's Kunai" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "63" + { + "name" "#RT_F_A" + "n_A" "#TF_Gunbai" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_MadMilk" + "do_A" "1" + "do_B" "#TF_Gunbai" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Mad Milk" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Fan O'War" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "64" + { + "name" "#RT_F_A" + "n_A" "#TF_SpaceChem_Fishcake" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_SpaceChem_MoustachiumBar" + "di_C" "#TF_SpaceChem_FishcakeFragment" + "do_A" "1" + "do_B" "#TF_SpaceChem_Fishcake" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Moustachium Bar" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "SpaceChem Fishcake Fragment" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Fishcake" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "65" + { + "name" "#RT_F_A" + "n_A" "#TF_SpaceChem_Pin" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_SpaceChem_MoustachiumBar" + "di_C" "#TF_SpaceChem_PinFragment" + "do_A" "1" + "do_B" "#TF_SpaceChem_Pin" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Moustachium Bar" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "SpaceChem Pin Fragment" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "SpaceChem Pin" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "66" + { + "name" "#RT_F_A" + "n_A" "#TF_SodaPopper" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_EnergyDrink" + "di_C" "#TF_Unique_Achievement_Scattergun_Double" + "do_A" "1" + "do_B" "#TF_SodaPopper" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Bonk! Atomic Punch" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Force-a-Nature" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Soda Popper" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "67" + { + "name" "#RT_F_A" + "n_A" "#TF_Winger" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_TheShortstop" + "do_A" "1" + "do_B" "#TF_Winger" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Shortstop" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Winger" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "68" + { + "name" "#RT_F_A" + "n_A" "#TF_Atomizer" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_EnergyDrink" + "di_C" "#TF_Unique_Achievement_Bat" + "do_A" "1" + "do_B" "#TF_Atomizer" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Bonk! Atomic Punch" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sandman" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Atomizer" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "69" + { + "name" "#RT_F_A" + "n_A" "#TF_RussianRiot" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Sentry_Shotgun" + "di_C" "#TF_Unique_SledgeHammer" + "do_A" "1" + "do_B" "#TF_RussianRiot" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Frontier Justice" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Homewrecker" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Family Business" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "70" + { + "name" "#RT_F_A" + "n_A" "#TF_Tomislav" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_GatlingGun" + "do_A" "1" + "do_B" "#TF_Tomislav" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Brass Beast" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Tomislav" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "71" + { + "name" "#RT_F_A" + "n_A" "#TF_EvictionNotice" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_FistsOfSteel" + "do_A" "1" + "do_B" "#TF_EvictionNotice" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Fists of Steel" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Eviction Notice" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "72" + { + "name" "#RT_F_A" + "n_A" "#TF_Enforcer" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#CI_Bar_A" + "di_C" "#TF_Letranger" + "do_A" "1" + "do_B" "#TF_Enforcer" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "L'Etranger" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Enforcer" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "73" + { + "name" "#RT_F_A" + "n_A" "#TF_BigEarner" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Kunai" + "di_C" "#TF_Letranger" + "do_A" "1" + "do_B" "#TF_BigEarner" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Conniver's Kunai" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "L'Etranger" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Big Earner" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "74" + { + "name" "#RT_F_A" + "n_A" "#TF_BazaarBargain" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_SydneySleeper" + "di_C" "#TF_Unique_Achievement_Sword" + "do_A" "1" + "do_B" "#TF_BazaarBargain" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sydney Sleeper" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Eyelander" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Bazaar Bargain" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "75" + { + "name" "#RT_F_A" + "n_A" "#TF_Shahanshah" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Amputator" + "di_C" "#TF_TheBushwacka" + "do_A" "1" + "do_B" "#TF_Shahanshah" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Amputator" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Bushwacka" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Shahanshah" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "76" + { + "name" "#RT_F_A" + "n_A" "#TF_PersianPersuader" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_SoldierKatana" + "di_C" "#CI_Bar_A" + "do_A" "1" + "do_B" "#TF_PersianPersuader" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Half-Zatoichi" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Persian Persuader" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "77" + { + "name" "#RT_F_A" + "n_A" "#TF_SplendidScreen" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Unique_Achievement_Shield" + "do_A" "1" + "do_B" "#TF_SplendidScreen" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Chargin' Targe" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Splendid Screen" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "78" + { + "name" "#RT_F_A" + "n_A" "#TF_Ali_Babas_Wee_Booties" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#TF_Mantreads" + "di_B" "#TF_Unique_Gloves_of_Running_Urgently" + "do_A" "1" + "do_B" "#TF_Ali_Babas_Wee_Booties" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Mantreads" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Gloves of Running Urgently" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Ali Baba's Wee Booties" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "79" + { + "name" "#RT_F_A" + "n_A" "#TF_LibertyLauncher" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_TheBlackBox" + "do_A" "1" + "do_B" "#TF_LibertyLauncher" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Black Box" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Liberty Launcher" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "80" + { + "name" "#RT_F_A" + "n_A" "#TF_ReserveShooter" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Unique_Sentry_Shotgun" + "do_A" "1" + "do_B" "#TF_ReserveShooter" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Frontier Justice" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Reserve Shooter" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "81" + { + "name" "#RT_F_A" + "n_A" "#TF_MarketGardener" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Blast_Boots" + "di_C" "#TF_Unique_Makeshiftclub" + "do_A" "1" + "do_B" "#TF_MarketGardener" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Gunboats" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Pain Train" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Market Gardener" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "82" + { + "name" "#RT_F_A" + "n_A" "#TF_Mantreads" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_C" + "di_B" "#TF_Unique_Blast_Boots" + "do_A" "1" + "do_B" "#TF_Mantreads" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 3" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Gunboats" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Mantreads" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "83" + { + "name" "#RT_F_A" + "n_A" "#TF_DisciplinaryAction" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Unique_Makeshiftclub" + "do_A" "1" + "do_B" "#TF_DisciplinaryAction" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Pain Train" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Disciplinary Action" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "84" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_Flaregun_Detonator" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Unique_Achievement_Flaregun" + "do_A" "1" + "do_B" "#TF_Weapon_Flaregun_Detonator" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Flare Gun" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Detonator" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "85" + { + "name" "#RT_F_A" + "n_A" "#TF_Overdose" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Gloves_of_Running_Urgently" + "di_C" "#TF_CrusadersCrossbow" + "do_A" "1" + "do_B" "#TF_Overdose" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Gloves of Running Urgently" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Crusader's Crossbow" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Overdose" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "86" + { + "name" "#RT_F_A" + "n_A" "#TF_SolemnVow" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "8" + "di_B" "#TF_Unique_Achievement_Jar" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_SolemnVow" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "8" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Jarate" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Solemn Vow" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "87" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_MediGun_QuickFix" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_MadMilk" + "di_C" "#TF_Unique_Achievement_Medigun1" + "do_A" "1" + "do_B" "#TF_Unique_MediGun_QuickFix" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Mad Milk" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Kritzkrieg" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Quick-Fix" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "88" + { + "name" "#RT_F_A" + "n_A" "#TF_CowMangler" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_TheBlackBox" + "do_A" "1" + "do_B" "#TF_CowMangler" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Black Box" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Cow Mangler 5000" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "89" + { + "name" "#RT_F_A" + "n_A" "#TF_RighteousBison" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_TheBattalionsBackup" + "do_A" "1" + "do_B" "#TF_RighteousBison" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Battalion's Backup" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Righteous Bison" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "90" + { + "name" "#RT_F_A" + "n_A" "#TF_DEX_Revolver" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Sentry_Shotgun" + "di_C" "#TF_Unique_Achievement_FeignWatch" + "do_A" "1" + "do_B" "#TF_DEX_Revolver" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Frontier Justice" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Dead Ringer" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Diamondback" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "91" + { + "name" "#RT_F_A" + "n_A" "#TF_DEX_Rifle" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_RighteousBison" + "di_C" "#TF_SydneySleeper" + "do_A" "1" + "do_B" "#TF_DEX_Rifle" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Righteous Bison" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Sydney Sleeper" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Machina" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "92" + { + "name" "#RT_F_A" + "n_A" "#TF_DEX_Shotgun" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Letranger" + "do_A" "1" + "do_B" "#TF_DEX_Shotgun" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "L'Etranger" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Widowmaker" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "93" + { + "name" "#RT_F_A" + "n_A" "#TF_DEX_Pistol" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#CI_Bar_A" + "di_C" "#TF_Unique_Robot_Arm" + "do_A" "1" + "do_B" "#TF_DEX_Pistol" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Gunslinger" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Short Circuit" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "94" + { + "name" "#RT_F_A" + "n_A" "#TF_TheOriginal" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_A" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_TheOriginal" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Original" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "95" + { + "name" "#RT_F_A" + "n_A" "#TF_SpyCicle" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_EternalReward" + "do_A" "1" + "do_B" "#TF_SpyCicle" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Your Eternal Reward" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Spy-Cicle" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "96" + { + "name" "#RT_F_A" + "n_A" "#TF_MasculineMittens" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_TheHolyMackerel" + "di_C" "#TF_Unique_Gloves_of_Running_Urgently" + "do_A" "1" + "do_B" "#TF_MasculineMittens" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Holy Mackerel" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Gloves of Running Urgently" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Holiday Punch" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "97" + { + "name" "#RT_F_A" + "n_A" "#TF_BallBuster" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Combat_Wrench" + "di_C" "#TF_Unique_Achievement_Bat" + "do_A" "1" + "do_B" "#TF_BallBuster" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Southern Hospitality" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Wrap Assassin" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "98" + { + "name" "#RT_F_A" + "n_A" "#TF_Phlogistinator" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_SodaPopper" + "di_C" "#TF_Unique_Achievement_Flamethrower" + "do_A" "1" + "do_B" "#TF_Phlogistinator" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Soda Popper" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Backburner" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Phlogistinator" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "99" + { + "name" "#RT_F_A" + "n_A" "#TF_Manmelter" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Weapon_Flaregun_Detonator" + "do_A" "1" + "do_B" "#TF_Manmelter" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Detonator" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Manmelter" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "100" + { + "name" "#RT_F_A" + "n_A" "#TF_ThirdDegree" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_FireAxe1" + "di_C" "#TF_ThePowerjack" + "do_A" "1" + "do_B" "#TF_ThirdDegree" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Axtinguisher" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Powerjack" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Third Degree" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "101" + { + "name" "#RT_F_A" + "n_A" "#TF_Pomson" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_RighteousBison" + "di_C" "#TF_DEX_Pistol" + "do_A" "1" + "do_B" "#TF_Pomson" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Righteous Bison" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Short Circuit" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Pomson 6000" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "102" + { + "name" "#RT_F_A" + "n_A" "#TF_Wrenchmotron" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_Jag" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Wrenchmotron" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Jag" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Eureka Effect" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "103" + { + "name" "#RT_F_A" + "n_A" "#TF_CozyCamper" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Backstab_Shield" + "di_C" "#TF_Unique_Achievement_Jar" + "do_A" "1" + "do_B" "#TF_CozyCamper" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Jarate" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Razorback" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Cozy Camper" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "104" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_Pickaxe_EscapePlan" + "desc_inputs" "#RDI_AB1" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_A" + "di_B" "#TF_DisciplinaryAction" + "do_A" "1" + "do_B" "#TF_Unique_Pickaxe_EscapePlan" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Disciplinary Action" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Escape Plan" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "105" + { + "name" "#RT_F_A" + "n_A" "#TF_PileOfAsh" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "4" + "di_B" "#RI_BurnedItem" + "do_A" "1" + "do_B" "#TF_PileOfAsh" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_burned" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_burned" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_burned" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_burned" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Pile Of Ash" + "required" "1" + } + } + } + } + "category" "special" + } + "106" + { + "name" "#RT_F_A" + "n_A" "#TF_DS_DumpsterDevice" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_Unique_Achievement_RocketLauncher" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_DS_DumpsterDevice" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Direct Hit" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Beggar's Bazooka" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "107" + { + "name" "#RT_F_A" + "n_A" "#TF_Pro_SniperRifle" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_DEX_Rifle" + "di_C" "#TF_BazaarBargain" + "do_A" "1" + "do_B" "#TF_Pro_SniperRifle" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Machina" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Bazaar Bargain" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Hitman's Heatmaker" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "108" + { + "name" "#RT_F_A" + "n_A" "#TF_Pro_SMG" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_TheBushwacka" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Pro_SMG" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Bushwacka" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Cleaner's Carbine" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "109" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_PEP_Scattergun" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_TheShortstop" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Weapon_PEP_Scattergun" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Shortstop" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Baby Face's Blaster" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "110" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_PEP_Pistol" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_MadMilk" + "di_C" "#TF_Winger" + "do_A" "1" + "do_B" "#TF_Weapon_PEP_Pistol" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Mad Milk" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Winger" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Pretty Boy's Pocket Pistol" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "111" + { + "name" "#RT_F_A" + "n_A" "#TF_ScorchShot" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Flaregun" + "di_C" "#TF_TheDegreaser" + "do_A" "1" + "do_B" "#TF_ScorchShot" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Flare Gun" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Degreaser" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Scorch Shot" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "112" + { + "name" "#RT_F_A" + "n_A" "#TF_SD_Sign" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_ThirdDegree" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_SD_Sign" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Third Degree" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Neon Annihilator" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "113" + { + "name" "#RT_F_A" + "n_A" "#TF_SD_Cleaver" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_MadMilk" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_SD_Cleaver" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Mad Milk" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Flying Guillotine" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "114" + { + "name" "#RT_F_A" + "n_A" "#TF_SD_Minigun" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_RussianRiot" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_SD_Minigun" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Family Business" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Huo Long Heatmaker" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "115" + { + "name" "#RT_F_A" + "n_A" "#TF_SD_Sapper" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_SpyCicle" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_SD_Sapper" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Spy-Cicle" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Red-Tape Recorder" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "116" + { + "name" "#RT_F_A" + "n_A" "#TF_Usable_PowerupBottle" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "4" + "di_B" "#CI_Bar_A" + "do_A" "1" + "do_B" "#TF_Usable_PowerupBottle" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "4" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Power Up Canteen (MvM)" + "required" "1" + } + } + } + } + "category" "special" + } + "117" + { + "name" "#RT_F_A" + "n_A" "#TF_PileOfCurses" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "7" + "di_B" "#RI_VoodooCursedItem" + "do_A" "1" + "do_B" "#TF_PileOfCurses" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "craft_material_voodoocursed" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Pile Of Curses" + "required" "1" + } + } + } + } + "category" "special" + } + "118" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_Shotgun_Building_Rescue" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_Wrenchmotron" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Weapon_Shotgun_Building_Rescue" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Eureka Effect" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Rescue Ranger" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "119" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_Cannon" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_LochNLoad" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Weapon_Cannon" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Loch-n-Load" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Loose Cannon" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "120" + { + "name" "#RT_F_A" + "n_A" "#TF_Unique_MediGun_Resist" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_Unique_MediGun_QuickFix" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Unique_MediGun_Resist" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Quick-Fix" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Vaccinator" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "121" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_StickyBomb_Jump" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_UllapoolCaber" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Weapon_StickyBomb_Jump" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Ullapool Caber" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Stickybomb Jumper" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "122" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_RocketLauncher_Jump" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "3" + "di_B" "#TF_Mantreads" + "di_C" "#CI_Bar_B" + "do_A" "1" + "do_B" "#TF_Weapon_RocketLauncher_Jump" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "3" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Mantreads" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Rocket Jumper" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "123" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_AirStrike" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_DS_DumpsterDevice" + "di_C" "#TF_Unique_Blast_Boots" + "do_A" "1" + "do_B" "#TF_Weapon_AirStrike" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Beggar's Bazooka" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Gunboats" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Air Strike" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "124" + { + "name" "#RT_F_A" + "n_A" "#TF_TideTurner" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_Shield" + "di_C" "#TF_Ali_Babas_Wee_Booties" + "do_A" "1" + "do_B" "#TF_TideTurner" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Chargin' Targe" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Ali Baba's Wee Booties" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Tide Turner" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "125" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_BaseJumper" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Unique_Achievement_SoldierBuff" + "di_C" "#TF_Weapon_StickyBomb_Jump" + "do_A" "1" + "do_B" "#TF_Weapon_BaseJumper" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Buff Banner" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Stickybomb Jumper" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The B.A.S.E. Jumper" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "126" + { + "name" "#RT_F_A" + "n_A" "#TF_ClassicSniperRifle" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_Weapon_CompoundBow" + "di_C" "#TF_BazaarBargain" + "do_A" "1" + "do_B" "#TF_ClassicSniperRifle" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Huntsman" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Bazaar Bargain" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Classic" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "127" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_BackScatter" + "desc_inputs" "#RDI_ABC2" + "desc_outputs" "#RDO_AB" + "di_A" "#CI_Bar_B" + "di_B" "#TF_TheShortstop" + "di_C" "#TF_Unique_EnergyDrink_CritCola" + "do_A" "1" + "do_B" "#TF_Weapon_BackScatter" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Shortstop" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Crit-a-Cola" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Back Scatter" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "128" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_PanicAttack" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Weapon_BackScatter" + "do_A" "1" + "do_B" "#TF_Weapon_PanicAttack" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Back Scatter" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Panic Attack Shotgun" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "129" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_Iron_bomber" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_Weapon_AirStrike" + "do_A" "1" + "do_B" "#TF_Weapon_Iron_bomber" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Air Strike" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Iron Bomber" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "130" + { + "name" "#RT_F_A" + "n_A" "#TF_Weapon_Sticky_Quickie" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_B" + "di_C" "#TF_TideTurner" + "do_A" "1" + "do_B" "#TF_Weapon_Sticky_Quickie" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 2" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Tide Turner" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "The Quickiebomb Launcher" + "required" "1" + } + } + } + } + "category" "commonitem" + } + "131" + { + "name" "#RT_F_A" + "n_A" "#TF_Tool_GiftWrap_Global" + "desc_inputs" "#RDI_ABC1" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#CI_Bar_A" + "di_C" "#RI_W" + "do_A" "1" + "do_B" "#TF_Tool_GiftWrap_Global" + "always_known" "1" + "premium_only" "0" + "disabled" "1" + "input_items" + { + "2" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Craft Bar Level 1" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "weapon" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Giftapult Gift Wrap" + "required" "1" + } + } + } + } + "category" "rareitem" + } + "132" + { + "name" "#RT_F_A" + "n_A" "#TF_Tool_StrangeCountTransfer" + "desc_inputs" "#RDI_AB" + "desc_outputs" "#RDO_AB" + "di_A" "2" + "di_B" "#TF_StrangePart" + "do_A" "1" + "do_B" "#TF_Tool_StrangeCountTransfer" + "always_known" "1" + "premium_only" "0" + "disabled" "0" + "input_items" + { + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "strangepart" + "required" "1" + } + } + } + "1" + { + "conditions" + { + "0" + { + "field" "craft_material_type" + "operator" "string==" + "value" "strangepart" + "required" "1" + } + } + } + } + "output_items" + { + "item1" + { + "conditions" + { + "0" + { + "field" "name" + "operator" "string==" + "value" "Strange Count Transfer Tool" + "required" "1" + } + } + } + } + "category" "rareitem" + } + + + + + } + "achievement_rewards" + { + "TF_MEDIC_ACHIEVE_PROGRESS1" "36" + "TF_MEDIC_ACHIEVE_PROGRESS2" "35" + "TF_MEDIC_ACHIEVE_PROGRESS3" "37" + "TF_PYRO_ACHIEVE_PROGRESS1" "39" + "TF_PYRO_ACHIEVE_PROGRESS2" "40" + "TF_PYRO_ACHIEVE_PROGRESS3" "38" + "TF_HEAVY_ACHIEVE_PROGRESS1" "42" + "TF_HEAVY_ACHIEVE_PROGRESS2" "41" + "TF_HEAVY_ACHIEVE_PROGRESS3" "43" + "TF_SCOUT_ACHIEVE_PROGRESS1" "45" + "TF_SCOUT_ACHIEVE_PROGRESS2" "44" + "TF_SCOUT_ACHIEVE_PROGRESS3" "46" + "TF_SNIPER_ACHIEVE_PROGRESS1" "56" + "TF_SNIPER_ACHIEVE_PROGRESS2" "58" + "TF_SNIPER_ACHIEVE_PROGRESS3" "57" + "TF_SPY_ACHIEVE_PROGRESS1" "61" + "TF_SPY_ACHIEVE_PROGRESS2" "60" + "TF_SPY_ACHIEVE_PROGRESS3" "59" + "TF_SOLDIER_ACHIEVE_PROGRESS1" "128" + "TF_SOLDIER_ACHIEVE_PROGRESS2" "127" + "TF_SOLDIER_ACHIEVE_PROGRESS3" "129" + "TF_DEMOMAN_ACHIEVE_PROGRESS1" "131" + "TF_DEMOMAN_ACHIEVE_PROGRESS2" "132" + "TF_DEMOMAN_ACHIEVE_PROGRESS3" "130" + "TF_ENGINEER_ACHIEVE_PROGRESS1" "141" + "TF_ENGINEER_ACHIEVE_PROGRESS2" "142" + "TF_ENGINEER_ACHIEVE_PROGRESS3" "140" + "TF_HALLOWEEN_DOMINATE_FOR_HAT" "940" + "TF_HALLOWEEN_BOSS_KILL" "278" + "TF_HALLOWEEN_BOSS_KILL_MELEE" "267" + "TF_HALLOWEEN_COLLECT_PUMPKINS" "115" + "TF_HALLOWEEN_EYEBOSS_KILL" "581" + "TF_HALLOWEEN_LOOT_ISLAND" "583" + "TF_MAPS_FOUNDRY_ACHIEVE_PROGRESS1" "668" + "TF_DOMINATE_FOR_GOGGLES" "744" + "TF_MAPS_DOOMSDAY_ACHIEVE_PROGRESS1" "774" + "TF_HALLOWEEN_MERASMUS_COLLECT_LOOT" "941" + + "TF_MVM_COMPLETE_POP_FILE" "489" + + "ASW_PARA_HAT" + { + "SourceAppID" "630" + "DefIndex" "189" + } + "com.telltalegames.CelebrityPoker.SpecialItem.TheHeavy" + { + "SourceAppID" "31280" + "DefIndex" "298" + } + "com.telltalegames.CelebrityPoker.SpecialItem.Max" + { + "SourceAppID" "31280" + "Items" + { + "294" "1" + "296" "1" + } + } + "com.telltalegames.CelebrityPoker.SpecialItem.Tycho" + { + "SourceAppID" "31280" + "DefIndex" "297" + } + "com.telltalegames.CelebrityPoker.SpecialItem.StrongBad" + { + "SourceAppID" "31280" + "DefIndex" "295" + } + + "SPACECHEM_TF2_1" + { + "SourceAppID" "92800" + "Items" + { + "429" "1" + "429" "1" + "429" "1" + } + } + "SPACECHEM_TF2_2" + { + "SourceAppID" "92800" + "Items" + { + "429" "1" + "430" "1" + } + } + "SPACECHEM_TF2_3" + { + "SourceAppID" "92800" + "Items" + { + "429" "1" + "429" "1" + "431" "1" + } + } + + "TF_REPLAY_EDIT_TIME" "438" + "TF_REPLAY_YOUTUBE_VIEWS_TIER2" "302" + + "REACHED_TERMINAL_1" + { + "SourceAppID" "99900" + "DefIndex" "473" + } + + "achieve_play_04" + { + "SourceAppID" "102700" + "DefIndex" "727" + } + + "ACHIEVEMENT_140402" + { + "SourceAppID" "38830" + "DefIndex" "756" + } + + "TF2Crossover_Achievement_1" + { + "SourceAppID" "104700" + "DefIndex" "762" + } + + "TF2Crossover_Achievement_4" + { + "SourceAppID" "104700" + "DefIndex" "761" + } + + "com.telltalegames.PokerNight2.UnlockVentureBrothersItem" + { + "SourceAppID" "234710" + "DefIndex" "1028" + } + + "com.telltalegames.PokerNight2.UnlockBorderlandsItem" + { + "SourceAppID" "234710" + "DefIndex" "1030" + } + + "com.telltalegames.PokerNight2.UnlockArmyOfDarknessItem" + { + "SourceAppID" "234710" + "DefIndex" "1031" + } + + "com.telltalegames.PokerNight2.UnlockSamAndMaxItem" + { + "SourceAppID" "234710" + "DefIndex" "1029" + } + + "com.telltalegames.PokerNight2.UnlockPortalItem" + { + "SourceAppID" "234710" + "DefIndex" "1032" + } + + "TF_HALLOWEEN_HELLTOWER_MILESTONE" "8936" + "TF_HALLOWEEN_HELLTOWER_SKULL_ISLAND_REWARD" "1068" + "TF_HALLOWEEN_DOOMSDAY_MILESTONE" "1123" + "TF_HALLOWEEN_DOOMSDAY_WIN_MINIGAMES" "5773" + + "TF_PASS_TIME_HAT" + { + "Items" + { + "1169" "1" + "1170" "1" + } + } + "TF_PASS_TIME_GRIND" "1164" + } + "attribute_controlled_attached_particles" + { + "other_particles" + { + "1" + { + "system" "burningplayer_red" + } + "2" + { + "system" "burningplayer_flyingbits" + } + "3" + { + "system" "particle_nemesis_burst_blue" + "attachment" "muzzle1" + } + "4" + { + "system" "community_sparkle" + "draw_in_viewmodel" "1" + } + "5" + { + "system" "halopoint" + "attachment" "halopoint1" + } + } + + "cosmetic_unusual_effects" + { + "6" + { + "system" "superrare_confetti_green" + } + "7" + { + "system" "superrare_confetti_purple" + } + "8" + { + "system" "superrare_ghosts" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "9" + { + "system" "superrare_greenenergy" + "attach_to_rootbone" "1" + } + "10" + { + "system" "superrare_purpleenergy" + "attach_to_rootbone" "1" + } + "11" + { + "system" "superrare_circling_tf" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "12" + { + "system" "superrare_flies" + "attach_to_rootbone" "1" + } + + "13" + { + "system" "superrare_burning1" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "14" + { + "system" "superrare_burning2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "15" + { + "system" "superrare_plasma1" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "16" + { + "system" "superrare_plasma2" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "17" + { + "system" "superrare_beams1" + "draw_in_viewmodel" "1" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "18" + { + "system" "superrare_circling_peacesign" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "19" + { + "system" "superrare_circling_heart" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "20" + { + "system" "stamp_spin" + "attach_to_rootbone" "1" + } + "28" + { + "system" "drg_pipe_smoke" + "attach_to_rootbone" "0" + "attachment" "cig_drg_smoke" + } + + "29" + { + "system" "unusual_storm" + "attach_to_rootbone" "1" + } + "30" + { + "system" "unusual_blizzard" + "attach_to_rootbone" "1" + } + "31" + { + "system" "unusual_orbit_nutsnbolts" + "attach_to_rootbone" "1" + } + "32" + { + "system" "unusual_orbit_planets" + "attach_to_rootbone" "1" + } + "33" + { + "system" "unusual_orbit_fire" + "attach_to_rootbone" "1" + } + "34" + { + "system" "unusual_bubbles" + "attach_to_rootbone" "1" + } + "35" + { + "system" "unusual_smoking" + "attach_to_rootbone" "1" + } + "36" + { + "system" "unusual_steaming" + "attach_to_rootbone" "1" + } + + + "37" + { + "system" "unusual_orbit_jack_flaming" + "attach_to_rootbone" "1" + } + "38" + { + "system" "unusual_fullmoon_cloudy" + "attach_to_rootbone" "1" + } + "39" + { + "system" "unusual_bubbles_green" + "attach_to_rootbone" "1" + } + "40" + { + "system" "unusual_orbit_fire_dark" + "attach_to_rootbone" "1" + } + + + "43" + { + "system" "unusual_storm_knives" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "44" + { + "system" "unusual_skull_misty" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "45" + { + "system" "unusual_fullmoon_cloudy_green" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "46" + { + "system" "unusual_fullmoon_cloudy_secret" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + "47" + { + "system" "unusual_storm_spooky" + "attach_to_rootbone" "1" + "attachment" "muzzle" + } + + "55" + { + "system" "unusual_orbit_cards_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "56" + { + "system" "unusual_zap_yellow" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "57" + { + "system" "unusual_zap_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "58" + { + "system" "unusual_hearts_bubbling" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "59" + { + "system" "unusual_orbit_cards_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "60" + { + "system" "unusual_orbit_cash" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "61" + { + "system" "unusual_crisp_spotlights" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "62" + { + "system" "unusual_spotlights" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "63" + { + "system" "unusual_robot_holo_glow_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "64" + { + "system" "unusual_robot_holo_glow_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "65" + { + "system" "unusual_robot_orbit_binary" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "66" + { + "system" "unusual_robot_orbit_binary2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "67" + { + "system" "unusual_robot_orbiting_sparks" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "68" + { + "system" "unusual_robot_orbiting_sparks2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "69" + { + "system" "unusual_robot_radioactive" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "70" + { + "system" "unusual_robot_time_warp" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "71" + { + "system" "unusual_robot_time_warp2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "72" + { + "system" "unusual_robot_radioactive2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "73" + { + "system" "unusual_spellbook_circle_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "74" + { + "system" "unusual_spellbook_circle_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "75" + { + "system" "unusual_bats_flaming_proxy_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "76" + { + "system" "unusual_bats_flaming_proxy_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "77" + { + "system" "unusual_bats_flaming_proxy_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "78" + { + "system" "unusual_meteor_shower_parent_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "79" + { + "system" "unusual_meteor_shower_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "80" + { + "system" "unusual_meteor_shower_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "81" + { + "system" "unusual_tentmonster_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "82" + { + "system" "unusual_eyes_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "83" + { + "system" "unusual_eyes_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "84" + { + "system" "unusual_eyes_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "85" + { + "system" "unusual_souls_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "86" + { + "system" "unusual_souls_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "87" + { + "system" "unusual_eotl_frostbite" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "88" + { + "system" "unusual_eotl_oribiting_burning_duck_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "89" + { + "system" "unusual_eotl_sunrise" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "90" + { + "system" "unusual_eotl_sunset" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "91" + { + "system" "unusual_invasion_abduction" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "92" + { + "system" "unusual_invasion_atomic" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "93" + { + "system" "unusual_invasion_atomic_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "94" + { + "system" "unusual_invasion_boogaloop" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "95" + { + "system" "unusual_invasion_boogaloop_2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "96" + { + "system" "unusual_invasion_boogaloop_3" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "97" + { + "system" "unusual_invasion_codex" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "98" + { + "system" "unusual_invasion_codex_2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "99" + { + "system" "unusual_invasion_nebula" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "100" + { + "system" "unusual_hw_deathbydisco_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "101" + { + "system" "unusual_mystery_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "102" + { + "system" "unusual_mystery_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "103" + { + "system" "unusual_nether_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "104" + { + "system" "unusual_nether_pink" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "105" + { + "system" "unusual_eldritch_flames_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "106" + { + "system" "unusual_eldritch_flames_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "107" + { + "system" "unusual_universe" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "108" + { + "system" "unusual_tesla_flash" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "109" + { + "system" "unusual_star_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "110" + { + "system" "unusual_star_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "111" + { + "system" "unusual_bubble_mess_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "112" + { + "system" "unusual_bubble_mess_parent_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "113" + { + "system" "unusual_bubble_mess_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "114" + { + "system" "unusual_constellations_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "115" + { + "system" "unusual_constellations_pink" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "116" + { + "system" "unusual_constellations_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "117" + { + "system" "unusual_symbols_parent_fire" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "118" + { + "system" "unusual_symbols_parent_dead" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "119" + { + "system" "unusual_symbols_parent_lightning" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "120" + { + "system" "unusual_crystalball" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "121" + { + "system" "unusual_psychic_eye" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "122" + { + "system" "unusual_dimension_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "123" + { + "system" "unusual_aura_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "124" + { + "system" "unusual_aura_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "125" + { + "system" "unusual_aura_red_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "126" + { + "system" "unusual_forest_scene_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "127" + { + "system" "unusual_forest_scene_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "128" + { + "system" "unusual_magicsmoke_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "129" + { + "system" "unusual_magicsmoke_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "130" + { + "system" "unusual_magicsmoke_blue_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "131" + { + "system" "unusual_vortex_energy_parent_p" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "132" + { + "system" "unusual_vortex_energy_parent_g" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "133" + { + "system" "unusual_vortex_energy_parent_o" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "134" + { + "system" "unusual_sparkling_lights_parent02" + "draw_in_viewmodel" "1" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "135" + { + "system" "unusual_icecave_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "136" + { + "system" "unusual_aurora_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "137" + { + "system" "unusual_aurora_parent_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "138" + { + "system" "unusual_aurora_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "139" + { + "system" "unusual_polygon_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "140" + { + "system" "unusual_polygon_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "141" + { + "system" "unusual_polygon_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "142" + { + "system" "unusual_polygon_amber" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "143" + { + "system" "unusual_snowfall_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "144" + { + "system" "unusual_snowfall_white" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "145" + { + "system" "unusual_mayor_balloonicorn_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "146" + { + "system" "unusual_mayor_balloonicorn_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "147" + { + "system" "unusual_circling_spell_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "148" + { + "system" "unusual_circling_spell_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "149" + { + "system" "unusual_circling_spell_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "150" + { + "system" "unusual_circling_spell_blue_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "151" + { + "system" "unusual_bees" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "152" + { + "system" "unusual_playflies_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "153" + { + "system" "unusual_playflies_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "154" + { + "system" "unusual_playflies_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "155" + { + "system" "unusual_kaleido_scope_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "156" + { + "system" "unusual_face_parent_G" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "157" + { + "system" "unusual_face_parent_O" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "158" + { + "system" "unusual_face_parent_P" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "159" + { + "system" "unusual_undead_mayor_balloonicorn" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "160" + { + "system" "unusual_gargoyle" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "161" + { + "system" "unusual_gargoyle2" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "162" + { + "system" "unusual_candy_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "163" + { + "system" "unusual_pumpkinhead_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "164" + { + "system" "unusual_froststorm_blue_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "165" + { + "system" "unusual_froststorm_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "166" + { + "system" "unusual_froststorm_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "167" + { + "system" "unusual_swirlybeams_goldpurple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "168" + { + "system" "unusual_swirlybeams_pinkblue_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "169" + { + "system" "unusual_icetornado_blue_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "170" + { + "system" "unusual_icetornado_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "171" + { + "system" "unusual_icetornado_white_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "172" + { + "system" "unusual_genplasmos_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "173" + { + "system" "unusual_genplasmos_b_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "174" + { + "system" "unusual_genplasmos_c_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "175" + { + "system" "unusual_mistletoe_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "176" + { + "system" "unusual_mistletoe_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "177" + { + "system" "unusual_breaker_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "178" + { + "system" "unusual_breaker_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "179" + { + "system" "unusual_breaker_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "180" + { + "system" "unusual_star_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "181" + { + "system" "unusual_magic_stingers_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "182" + { + "system" "unusual_magic_stingers_pink_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "183" + { + "system" "unusual_magic_stingers_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "184" + { + "system" "unusual_magic_stingers_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "185" + { + "system" "unusual_flowers_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "186" + { + "system" "unusual_bloomhead_orangepurple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "187" + { + "system" "unusual_bloomhead_pinkgreen_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "188" + { + "system" "unusual_magicalorb_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "189" + { + "system" "unusual_demonhorns_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "190" + { + "system" "unusual_demonhorns_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "191" + { + "system" "unusual_demonhorns_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "192" + { + "system" "unusual_souls_shades_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "193" + { + "system" "unusual_souls_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "194" + { + "system" "unusual_souls_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "195" + { + "system" "unusual_phantomcrown_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "196" + { + "system" "unusual_phantomcrown_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "197" + { + "system" "unusual_phantomcrown_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "198" + { + "system" "unusual_lurking_eyes_parent_g" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "199" + { + "system" "unusual_lurking_eyes_parent_o" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "200" + { + "system" "unusual_lurking_eyes_parent_p" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "201" + { + "system" "unusual_pumpkin_moon_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "202" + { + "system" "unusual_wacky_spooky_ghost_parent_g" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "203" + { + "system" "unusual_wacky_spooky_ghost_parent_o" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "204" + { + "system" "unusual_wacky_spooky_ghost_parent_p" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "205" + { + "system" "unusual_smissmas_tree_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "206" + { + "system" "unusual_tree3_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "207" + { + "system" "unusual_tree3_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "208" + { + "system" "unusual_tree3_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "209" + { + "system" "unusual_sparkletree_gold_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "210" + { + "system" "unusual_sparkletree_silver_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "211" + { + "system" "unusual_sparkletree_RGB_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "212" + { + "system" "unusual_fairylights_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "213" + { + "system" "unusual_fairylights_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "214" + { + "system" "unusual_spire_star_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "215" + { + "system" "unusual_spire_snowball_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "216" + { + "system" "unusual_spire_firework_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "217" + { + "system" "unusual_spire_firework_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "218" + { + "system" "unusual_snowflake_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "219" + { + "system" "unusual_antlers_gold_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "220" + { + "system" "unusual_antlers_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "221" + { + "system" "unusual_antlers_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "222" + { + "system" "unusual_antlers_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "223" + { + "system" "unusual_festive_lights_lights1_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "224" + { + "system" "unusual_spycrabs_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "225" + { + "system" "unusual_spycrabs_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "226" + { + "system" "unusual_sprinkles_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "227" + { + "system" "unusual_sprinkles_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "228" + { + "system" "unusual_sprinkles_rainbow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "229" + { + "system" "unusual_liquidmagic_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "230" + { + "system" "unusual_liquidmagic_ocean_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "231" + { + "system" "unusual_liquidmagic_pink_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "232" + { + "system" "unusual_firework_blue_red_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "233" + { + "system" "unusual_firework_green_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "234" + { + "system" "unusual_firework_orange_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "235" + { + "system" "unusual_firework_pgb_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "236" + { + "system" "unusual_firework_purple_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "237" + { + "system" "unusual_firework_rainbow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "238" + { + "system" "unusual_firework_wgb_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "239" + { + "system" "unusual_lanterns_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "240" + { + "system" "unusual_lanterns_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "241" + { + "system" "unusual_lanterns_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "242" + { + "system" "unusual_lanterns_yellow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "243" + { + "system" "unusual_coldcosmos_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "244" + { + "system" "unusual_helix_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "245" + { + "system" "unusual_stardust_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "246" + { + "system" "unusual_stardust_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "247" + { + "system" "unusual_stardust_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "248" + { + "system" "unusual_stardust_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "249" + { + "system" "unusual_stardust_white_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "250" + { + "system" "unusual_erupt_alien_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "251" + { + "system" "unusual_erupt_daydream_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "252" + { + "system" "unusual_erupt_volcan_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "253" + { + "system" "unusual_supernova_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "254" + { + "system" "unusual_audio_soundwave_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "255" + { + "system" "unusual_audio_soundwave_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "256" + { + "system" "unusual_audio_soundwave_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "257" + { + "system" "unusual_kraken_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "258" + { + "system" "unusual_kraken_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "259" + { + "system" "unusual_ghostaxe_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "260" + { + "system" "unusual_ghostaxe_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "261" + { + "system" "unusual_hauntedforever_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "262" + { + "system" "unusual_hauntedforever_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "263" + { + "system" "unusual_hauntedforever_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "264" + { + "system" "unusual_hauntedforever_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "265" + { + "system" "unusual_moths_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "266" + { + "system" "unusual_eyeboss_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "267" + { + "system" "unusual_ghostly_flame_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "268" + { + "system" "unusual_ghostly_flame_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "269" + { + "system" "unusual_ghostly_flame_parent_orange" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "270" + { + "system" "unusual_ghostly_flame_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "271" + { + "system" "unusual_sheetmusic_gold_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "272" + { + "system" "unusual_sheetmusic_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "273" + { + "system" "unusual_sheetmusic_silver_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "274" + { + "system" "unusual_constellation_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "275" + { + "system" "unusual_constellation_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "276" + { + "system" "unusual_constellation_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "277" + { + "system" "unusual_blood_snow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "278" + { + "system" "unusual_aestheticneons_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "279" + { + "system" "unusual_hardcarry_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "280" + { + "system" "unusual_hardcarry_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "281" + { + "system" "unusual_jellyfish_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "282" + { + "system" "unusual_jellyfish_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "283" + { + "system" "unusual_jellyfish_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "284" + { + "system" "unusual_jellyfish_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "285" + { + "system" "unusual_shootingstar_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "286" + { + "system" "unusual_shootingstar_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "287" + { + "system" "unusual_shootingstar_orange_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "288" + { + "system" "unusual_sakura_smokebomb" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "289" + { + "system" "unusual_australian_riches" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "290" + { + "system" "unusual_buble_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "291" + { + "system" "unusual_fireflies" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "292" + { + "system" "unusual_mountainhalo_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "293" + { + "system" "unusual_risingstar_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "294" + { + "system" "unusual_risingstar_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "295" + { + "system" "unusual_sapper_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "296" + { + "system" "unusual_sapper_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "297" + { + "system" "unusual_devilish_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "298" + { + "system" "unusual_devilish_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "299" + { + "system" "unusual_devilish_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "300" + { + "system" "unusual_devilish_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "301" + { + "system" "unusual_sixthsense_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "302" + { + "system" "unusual_sixthsense_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "303" + { + "system" "unusual_sixthsense_pink_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "304" + { + "system" "unusual_skullhead_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "305" + { + "system" "unusual_spiderweb_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "306" + { + "system" "unusual_deepsmoke_parent_g" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "307" + { + "system" "unusual_deepsmoke_parent_p" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "308" + { + "system" "unusual_deepsmoke_parent_o" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "309" + { + "system" "unusual_icearrow_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "310" + { + "system" "unusual_icearrow_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "311" + { + "system" "unusual_goldarrow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "312" + { + "system" "unusual_aestheticsigns_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "313" + { + "system" "unusual_aestheticsigns_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "314" + { + "system" "unusual_aestheticsigns_mannco_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "315" + { + "system" "unusual_frosty_flavours_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "316" + { + "system" "unusual_frosty_flavours_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "317" + { + "system" "unusual_frosty_mint_glow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "318" + { + "system" "unusual_northstar_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "319" + { + "system" "unusual_northstar_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "320" + { + "system" "unusual_northstar_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "321" + { + "system" "unusual_orbitingstar_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "322" + { + "system" "unusual_firefly_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "323" + { + "system" "unusual_firefly_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "324" + { + "system" "unusual_firefly_purple_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "325" + { + "system" "unusual_firefly_green_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + + "327" + { + "system" "unusual_corrodedknight_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "328" + { + "system" "unusual_corrodedknight_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "329" + { + "system" "unusual_corrodedknight_parent_silver" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "330" + { + "system" "unusual_corrodedknight_parent_golden" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "331" + { + "system" "unusual_poseidon_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "332" + { + "system" "unusual_poseidon_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "333" + { + "system" "unusual_poseidon_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "334" + { + "system" "unusual_poseidon_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "335" + { + "system" "unusual_rainglow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "336" + { + "system" "unusual_cubancigar_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "337" + { + "system" "unusual_mohawk_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "338" + { + "system" "unusual_mohawk_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "339" + { + "system" "unusual_mohawk_parent_green" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "340" + { + "system" "unusual_mohawk_parent_purple" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "341" + { + "system" "unusual_rare_shine_glow_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "342" + { + "system" "unusual_horstars_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "343" + { + "system" "unusual_horstars_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "344" + { + "system" "unusual_electric_parent_white" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "345" + { + "system" "unusual_electric_parent_gold" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "346" + { + "system" "unusual_butterflyhead_teamcolor_red" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "347" + { + "system" "unusual_butterflyhead_teamcolor_blue" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "348" + { + "system" "unusual_hippieaura_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + "349" + { + "system" "unusual_butterfly_parent" + "attach_to_rootbone" "1" + "attachment" "unusual" + } + } + + "weapon_unusual_effects" + { + "701" + { + "system" "weapon_unusual_hot" + "draw_in_viewmodel" "1" + "use_suffix_name" "1" + + "attachment" "unusual_0" + "control_point_1" "unusual_1" + "control_point_2" "unusual_2" + "control_point_3" "unusual_3" + "control_point_4" "unusual_4" + "control_point_5" "unusual_5" + } + "702" + { + "system" "weapon_unusual_isotope" + "draw_in_viewmodel" "1" + "use_suffix_name" "1" + + "attachment" "unusual_0" + "control_point_1" "unusual_1" + "control_point_2" "unusual_2" + "control_point_3" "unusual_3" + "control_point_4" "unusual_4" + "control_point_5" "unusual_5" + } + "703" + { + "system" "weapon_unusual_cool" + "draw_in_viewmodel" "1" + "use_suffix_name" "1" + + "attachment" "unusual_0" + "control_point_1" "unusual_1" + "control_point_2" "unusual_2" + "control_point_3" "unusual_3" + "control_point_4" "unusual_4" + "control_point_5" "unusual_5" + } + "704" + { + "system" "weapon_unusual_energyorb" + "draw_in_viewmodel" "1" + "use_suffix_name" "1" + + "attachment" "unusual_0" + "control_point_1" "unusual_1" + "control_point_2" "unusual_2" + "control_point_3" "unusual_3" + "control_point_4" "unusual_4" + "control_point_5" "unusual_5" + } + } + + + "killstreak_eyeglows" + { + "2001" + { + "system" "killstreak_eyeglow_1_teamcolor_red" + } + "22001" + { + "system" "killstreak_eyeglow_4_teamcolor_red" + } + "2002" + { + "system" "killstreak_t1_lvl1" + } + "22002" + { + "system" "killstreak_t1_lvl2" + } + "2003" + { + "system" "killstreak_t2_lvl1" + } + "22003" + { + "system" "killstreak_t2_lvl2" + } + "2004" + { + "system" "killstreak_t3_lvl1" + } + "22004" + { + "system" "killstreak_t3_lvl2" + } + "2005" + { + "system" "killstreak_t4_lvl1" + } + "22005" + { + "system" "killstreak_t4_lvl2" + } + "2006" + { + "system" "killstreak_t5_lvl1" + } + "22006" + { + "system" "killstreak_t5_lvl2" + } + "2007" + { + "system" "killstreak_t6_lvl1" + } + "22007" + { + "system" "killstreak_t6_lvl2" + } + "2008" + { + "system" "killstreak_t7_lvl1" + } + "22008" + { + "system" "killstreak_t7_lvl2" + } + } + + "taunt_unusual_effects" + { + "3001" + { + "system" "utaunt_firework_teamcolor_red" + "refire_time" "2.6" + } + "3002" + { + "system" "utaunt_firework_teamcolor_blue" + "refire_time" "2.6" + } + "3003" + { + "system" "utaunt_beams_yellow" + } + "3004" + { + "system" "utaunt_disco_party" + } + "3005" + { + "system" "utaunt_hearts_glow_parent" + } + "3006" + { + "system" "utaunt_meteor_parent" + } + "3007" + { + "system" "utaunt_cash_confetti" + } + "3008" + { + "system" "utaunt_tornado_parent_black" + } + "3009" + { + "system" "utaunt_tornado_parent_white" + } + "3010" + { + "system" "utaunt_lightning_parent" + "refire_time" "0.9" + } + "3011" + { + "system" "utaunt_souls_green_parent" + } + "3012" + { + "system" "utaunt_souls_purple_parent" + } + "3013" + { + "system" "utaunt_hellpit_parent" + } + "3014" + { + "system" "utaunt_hellswirl" + } + "3015" + { + "system" "utaunt_headless" + } + "3016" + { + "system" "utaunt_merasmus" + } + "3017" + { + "system" "utaunt_bubbles_glow_green_parent" + } + "3018" + { + "system" "utaunt_bubbles_glow_orange_parent" + } + "3019" + { + "system" "utaunt_bubbles_glow_purple_parent" + } + "3020" + { + "system" "utaunt_firework_dragon_parent" + "refire_time" "5.25" + } + "3021" + { + "system" "utaunt_smoke_moon_parent" + } + "3022" + { + "system" "utaunt_smoke_moon_green_parent" + } + "3023" + { + "system" "utaunt_arcane_purple_parent" + } + "3024" + { + "system" "utaunt_arcane_green_parent" + } + "3025" + { + "system" "utaunt_arcane_yellow_parent" + } + "3026" + { + "system" "utaunt_electric_mist_parent" + } + "3027" + { + "system" "utaunt_electricity_cloud_parent_WP" + } + "3028" + { + "system" "utaunt_electricity_cloud_parent_WB" + } + "3029" + { + "system" "utaunt_electricity_cloud_parent_WY" + } + "3030" + { + "system" "utaunt_portalswirl_purple_parent" + } + "3031" + { + "system" "utaunt_present_parent" + } + "3032" + { + "system" "utaunt_snowring_icy_parent" + } + "3033" + { + "system" "utaunt_snowring_space_parent" + } + "3034" + { + "system" "utaunt_spirit_winter_parent" + } + "3035" + { + "system" "utaunt_spirit_festive_parent" + } + "3036" + { + "system" "utaunt_spirit_magical_parent" + } + "3037" + { + "system" "utaunt_astralbodies_greenorange_parent" + } + "3038" + { + "system" "utaunt_astralbodies_tealpurple_parent" + } + "3039" + { + "system" "utaunt_astralbodies_teamcolor_red" + } + "3040" + { + "system" "utaunt_astralbodies_teamcolor_blue" + } + "3041" + { + "system" "utaunt_glowyplayer_green_parent" + } + "3042" + { + "system" "utaunt_glowyplayer_orange_parent" + } + "3043" + { + "system" "utaunt_glowyplayer_purple_parent" + } + "3044" + { + "system" "utaunt_electricity_parent" + } + "3045" + { + "system" "utaunt_electricity_purple_parent" + } + "3046" + { + "system" "utaunt_spider_green_parent" + } + "3047" + { + "system" "utaunt_spider_orange_parent" + } + "3048" + { + "system" "utaunt_spider_purple_parent" + } + "3049" + { + "system" "utaunt_tf2smissmas_tree_parent" + } + "3050" + { + "system" "utaunt_tf2smissmas_tree_parent_w" + } + "3051" + { + "system" "utaunt_spirits_blue_parent" + } + "3052" + { + "system" "utaunt_spirits_purple_parent" + } + "3053" + { + "system" "utaunt_balloonicorn_reindeer_teamcolor_red" + } + "3054" + { + "system" "utaunt_balloonicorn_reindeer_teamcolor_blue" + } + "3055" + { + "system" "utaunt_twinkling_rgb_parent" + } + "3056" + { + "system" "utaunt_twinkling_goldsilver_parent" + } + + "3059" + { + "system" "utaunt_chain_green_parent" + } + "3060" + { + "system" "utaunt_chain_purple_parent" + } + "3061" + { + "system" "utaunt_tarotcard_teamcolor_red" + } + "3062" + { + "system" "utaunt_tarotcard_teamcolor_blue" + } + "3063" + { + "system" "utaunt_tarotcard_orange_parent" + } + "3064" + { + "system" "utaunt_tarotcard_purple_parent" + } + "3065" + { + "system" "utaunt_elebound_green_parent" + } + "3066" + { + "system" "utaunt_elebound_purple_parent" + } + "3067" + { + "system" "utaunt_elebound_yellow_parent" + } + "3068" + { + "system" "utaunt_wispy_parent_g" + } + "3069" + { + "system" "utaunt_wispy_parent_p" + } + "3070" + { + "system" "utaunt_auroraglow_green_parent" + } + "3071" + { + "system" "utaunt_auroraglow_orange_parent" + } + "3072" + { + "system" "utaunt_auroraglow_purple_parent" + } + + "3073" + { + "system" "utaunt_snowswirl_purple_parent" + } + "3074" + { + "system" "utaunt_snowswirl_yellow_parent" + } + "3075" + { + "system" "utaunt_snowswirl_teamcolor_red" + } + "3076" + { + "system" "utaunt_snowswirl_teamcolor_blue" + } + "3077" + { + "system" "utaunt_treespiral_green_parent" + } + "3078" + { + "system" "utaunt_treespiral_purple_parent" + } + "3079" + { + "system" "utaunt_treespiral_teamcolor_red" + } + "3080" + { + "system" "utaunt_treespiral_teamcolor_blue" + } + "3081" + { + "system" "utaunt_gifts_teamcolor_red" + } + "3082" + { + "system" "utaunt_gifts_teamcolor_blue" + } + "3083" + { + "system" "utaunt_glitter_parent_gold" + } + "3084" + { + "system" "utaunt_glitter_parent_silver" + } + "3085" + { + "system" "utaunt_glitter_teamcolor_red" + } + "3086" + { + "system" "utaunt_glitter_teamcolor_blue" + } + "3087" + { + "system" "utaunt_ice_parent" + } + + "3088" + { + "system" "utaunt_marigoldritual_teamcolor_red" + } + "3089" + { + "system" "utaunt_marigoldritual_teamcolor_blue" + } + "3090" + { + "system" "utaunt_poison_parent_green" + } + "3091" + { + "system" "utaunt_poison_parent_orange" + } + "3092" + { + "system" "utaunt_poison_parent_purple" + } + "3093" + { + "system" "utaunt_runeprison_green_parent" + } + "3094" + { + "system" "utaunt_runeprison_yellow_parent" + } + "3095" + { + "system" "utaunt_runeprison_teamcolor_red" + } + "3096" + { + "system" "utaunt_runeprison_teamcolor_blue" + } + "3097" + { + "system" "utaunt_prismatichaze_parent" + } + "3098" + { + "system" "utaunt_risingsprit_teamcolor_red" + } + "3099" + { + "system" "utaunt_risingsprit_teamcolor_blue" + } + "3100" + { + "system" "utaunt_hands_teamcolor_red" + } + "3101" + { + "system" "utaunt_hands_teamcolor_blue" + } + "3102" + { + "system" "utaunt_hands_green_parent" + } + "3103" + { + "system" "utaunt_hands_orange_parent" + } + "3104" + { + "system" "utaunt_hands_purple_parent" + } + + "3105" + { + "system" "utaunt_storm_parent_g" + } + "3106" + { + "system" "utaunt_storm_parent_k" + } + "3107" + { + "system" "utaunt_storm_parent_o" + } + "3108" + { + "system" "utaunt_festivelights_teamcolor_red" + } + "3109" + { + "system" "utaunt_festivelights_teamcolor_blue" + } + "3110" + { + "system" "utaunt_glow_spirit_parent_cr" + } + "3111" + { + "system" "utaunt_glow_spirit_parent_og" + } + "3112" + { + "system" "utaunt_glow_spirit_parent_pp" + } + "3113" + { + "system" "utaunt_snowflakesaura_parent" + } + + "3114" + { + "system" "utaunt_sun_sand_rays_parent" + } + "3115" + { + "system" "utaunt_undersea_teamcolor_red" + } + "3116" + { + "system" "utaunt_undersea_teamcolor_blue" + } + "3117" + { + "system" "utaunt_lavalamp_green_parent" + } + "3118" + { + "system" "utaunt_lavalamp_purple_parent" + } + "3119" + { + "system" "utaunt_lavalamp_yellow_parent" + } + "3120" + { + "system" "utaunt_fish_parent" + } + "3121" + { + "system" "utaunt_rainbow_teamcolor_red" + } + "3122" + { + "system" "utaunt_rainbow_teamcolor_blue" + } + "3123" + { + "system" "utaunt_wild_meadows_parent" + } + + "3124" + { + "system" "utaunt_krakenmouth_green_parent" + } + "3125" + { + "system" "utaunt_krakenmouth_purple_parent" + } + "3126" + { + "system" "utaunt_leaftaunt_parent" + } + "3127" + { + "system" "utaunt_graveparty_parent" + } + "3128" + { + "system" "utaunt_spellsplash_parent" + } + "3129" + { + "system" "utaunt_cremation_purple_parent" + } + "3130" + { + "system" "utaunt_cremation_black_parent" + } + + "3131" + { + "system" "utaunt_snowfall_parent" + } + "3132" + { + "system" "utaunt_constellations_teamcolor_red" + } + "3133" + { + "system" "utaunt_constellations_teamcolor_blue" + } + "3134" + { + "system" "utaunt_constellations_purple_parent" + } + "3135" + { + "system" "utaunt_constellations_pink_parent" + } + "3136" + { + "system" "utaunt_wispyworks_orangegreen_parent" + } + "3137" + { + "system" "utaunt_wispyworks_purpleblue_parent" + } + "3138" + { + "system" "utaunt_wispyworks_yellowpurple_parent" + } + "3139" + { + "system" "utaunt_innerblizzard_teamcolor_red" + } + "3140" + { + "system" "utaunt_innerblizzard_teamcolor_blue" + } + "3141" + { + "system" "utaunt_innerblizzard_purple_parent" + } + "3142" + { + "system" "utaunt_spotlight_parent" + } + "3143" + { + "system" "utaunt_pedalfly_teamcolor_red" + } + "3144" + { + "system" "utaunt_pedalfly_teamcolor_blue" + } + + "3145" + { + "system" "utaunt_dragonfly_teamcolor_red" + } + "3146" + { + "system" "utaunt_dragonfly_teamcolor_blue" + } + "3147" + { + "system" "utaunt_dragonfly_green_parent" + } + "3148" + { + "system" "utaunt_dragonfly_purple_parent" + } + "3149" + { + "system" "utaunt_demigodery_teamcolor_red" + } + "3150" + { + "system" "utaunt_demigodery_teamcolor_blue" + } + "3151" + { + "system" "utaunt_signalflares_teamcolor_red" + } + "3152" + { + "system" "utaunt_signalflares_teamcolor_blue" + } + "3153" + { + "system" "utaunt_signalflares_green_parent" + } + "3154" + { + "system" "utaunt_celebrationtime_teamcolor_red" + } + "3155" + { + "system" "utaunt_celebrationtime_teamcolor_blue" + } + "3156" + { + "system" "utaunt_celebrationtime_yellow_parent" + } + "3157" + { + "system" "utaunt_god_lava_teamcolor_red" + } + "3158" + { + "system" "utaunt_god_lava_teamcolor_blue" + } + "3159" + { + "system" "utaunt_god_gold_parent" + } + "3160" + { + "system" "utaunt_aestheticlogo_teamcolor_red" + } + "3161" + { + "system" "utaunt_aestheticlogo_teamcolor_blue" + } + "3162" + { + "system" "utaunt_aestheticlogo_orange_parent" + } + "3163" + { + "system" "utaunt_desert_wind_parent" + } + "3164" + { + "system" "utaunt_desert_monsoon_parent" + } + "3165" + { + "system" "utaunt_treasure_teamcolor_red" + } + "3166" + { + "system" "utaunt_treasure_teamcolor_blue" + } + "3167" + { + "system" "utaunt_hearttreasure_parent" + } + "3168" + { + "system" "utaunt_wiggletube_teamcolor_red" + } + "3169" + { + "system" "utaunt_wiggletube_teamcolor_blue" + } + "3170" + { + "system" "utaunt_wiggletube_coffee_parent" + } + "3171" + { + "system" "utaunt_flowerrain_teamcolor_red" + } + "3172" + { + "system" "utaunt_flowerrain_teamcolor_blue" + } + "3173" + { + "system" "utaunt_flowerrain_purple_parent" + } + } + } + "armory_data" + { + "armory_item_classes" + { + "class_token" "#TF_Armory_Item_Class_ClassToken" + "slot_token" "#TF_Armory_Item_Class_SlotToken" + "craft_item" "#TF_Armory_Item_Class_CraftItem" + "tool" "#TF_Armory_Item_Class_Tool" + } + "armory_attributes" + { + "on_hit" "#TF_Armory_Item_Attrib_OnHit" + "on_kill" "#TF_Armory_Item_Attrib_OnKill" + "on_wearer" "#TF_Armory_Item_Attrib_OnWearer" + "cloak_type" "#TF_Armory_Item_Attrib_CloakType" + "on_active" "#TF_Armory_Item_Attrib_OnActive" + "no_crits" "#TF_Armory_Item_Attrib_NoCrits" + "bleed" "#TF_Armory_Item_Attrib_Bleed" + } + "armory_items" + { + "duel_medal" "#TF_Armory_Item_Duel_Medal" + "duel" "#TF_Armory_Item_Duel" + "supply_crate" "#TF_Armory_Item_Supply_Crate" + "key" "#TF_Armory_Item_Key" + "nametag" "#TF_Armory_Item_NameTag" + "desctag" "#TF_Armory_Item_DescTag" + "decaltooltag" "#TF_Armory_Item_DecalToolTag" + "weddingring" "#TF_Armory_Item_WeddingRing" + "paintcan" "#TF_Armory_Item_PaintCan" + "action" "#TF_Armory_Item_Action" + "tauntenabler" "#TF_Armory_Item_Type_TauntEnabler" + "gift_1" "#TF_Armory_Item_Gift1" + "gift_24" "#TF_Armory_Item_Gift24" + "beachball" "#TF_Armory_Item_BeachBall" + "craftitem" "#TF_Armory_Item_Class_CraftItem" + "stockitem" "#TF_Armory_Item_StockItem" + "gift_wrap" "#TF_Armory_Item_Gift_Wrap" + "gift" "#TF_Armory_Item_Gift" + "noisemaker" "#TF_Armory_Item_Type_NoiseMaker" + "winter_crate" "#TF_Armory_Item_Winter_Crate" + "summer_crate" "#TF_Armory_Item_Summer_Crate" + "scorched_crate" "#TF_Armory_Item_Scorched_Crate" + "maptoken" "#TF_Armory_Item_MapToken" + "backpack_expander" "#TF_Armory_Item_BackpackExpander" + "charity" "#TF_Armory_Item_Charity" + "can_customize_texture" "#TF_Armory_Item_CanCustomizeTexture" + "strangepart" "#TF_Armory_Item_StrangePart" + "tournamentmedal" "#TF_Armory_Item_TournamentMedal" + "duckbadge" "#TF_Armory_Item_DuckBadge" + } + } + "item_levels" + { + + "KillEaterRank" + { + "0" + { + "score" "10" + } + "1" + { + "score" "25" + } + "2" + { + "score" "45" + } + "3" + { + "score" "70" + } + "4" + { + "score" "100" + } + "5" + { + "score" "135" + } + "6" + { + "score" "175" + } + "7" + { + "score" "225" + } + "8" + { + "score" "275" + } + "9" + { + "score" "350" + } + "10" + { + "score" "500" + } + "11" + { + "score" "750" + } + "12" + { + "score" "999" + } + "13" + { + "score" "1000" + } + "14" + { + "score" "1500" + } + "15" + { + "score" "2500" + } + "16" + { + "score" "5000" + } + "17" + { + "score" "7500" + } + "18" + { + "score" "7616" + } + "19" + { + "score" "8500" + } + "20" + { + "score" "10000" + } + } + "SpiritOfGivingRank" + { + "0" + { + "score" "1" + } + "1" + { + "score" "3" + } + "2" + { + "score" "7" + } + "3" + { + "score" "12" + } + "4" + { + "score" "20" + } + "5" + { + "score" "28" + } + "6" + { + "score" "37" + } + "7" + { + "score" "47" + } + "8" + { + "score" "57" + } + "9" + { + "score" "68" + } + "10" + { + "score" "79" + } + "11" + { + "score" "91" + } + "12" + { + "score" "104" + } + "13" + { + "score" "120" + } + "14" + { + "score" "138" + } + "15" + { + "score" "158" + } + "16" + { + "score" "179" + } + "17" + { + "score" "210" + } + "18" + { + "score" "250" + } + "19" + { + "score" "500" + } + } + "KillEater_HolidayPunchRank" + { + "0" + { + "score" "10" + } + "1" + { + "score" "25" + } + "2" + { + "score" "45" + } + "3" + { + "score" "70" + } + "4" + { + "score" "100" + } + "5" + { + "score" "135" + } + "6" + { + "score" "175" + } + "7" + { + "score" "225" + } + "8" + { + "score" "275" + } + "9" + { + "score" "350" + } + "10" + { + "score" "500" + } + "11" + { + "score" "749" + } + "12" + { + "score" "750" + } + "13" + { + "score" "1000" + } + "14" + { + "score" "1500" + } + "15" + { + "score" "2500" + } + "16" + { + "score" "5000" + } + "17" + { + "score" "7500" + } + "18" + { + "score" "7923" + } + "19" + { + "score" "8500" + } + "20" + { + "score" "10000" + } + } + "KillEater_ManTreadsRank" + { + "0" + { + "score" "1" + } + "1" + { + "score" "3" + } + "2" + { + "score" "5" + } + "3" + { + "score" "7" + } + "4" + { + "score" "10" + } + "5" + { + "score" "14" + } + "6" + { + "score" "18" + } + "7" + { + "score" "23" + } + "8" + { + "score" "28" + } + "9" + { + "score" "35" + } + "10" + { + "score" "50" + } + "11" + { + "score" "75" + } + "12" + { + "score" "99" + } + "13" + { + "score" "100" + } + "14" + { + "score" "150" + } + "15" + { + "score" "250" + } + "16" + { + "score" "500" + } + "17" + { + "score" "750" + } + "18" + { + "score" "784" + } + "19" + { + "score" "850" + } + "20" + { + "score" "1000" + } + } + "KillEater_SapperRank" + { + "0" + { + "score" "3" + } + "1" + { + "score" "9" + } + "2" + { + "score" "15" + } + "3" + { + "score" "21" + } + "4" + { + "score" "30" + } + "5" + { + "score" "42" + } + "6" + { + "score" "54" + } + "7" + { + "score" "69" + } + "8" + { + "score" "84" + } + "9" + { + "score" "105" + } + "10" + { + "score" "150" + } + "11" + { + "score" "225" + } + "12" + { + "score" "299" + } + "13" + { + "score" "300" + } + "14" + { + "score" "450" + } + "15" + { + "score" "750" + } + "16" + { + "score" "1500" + } + "17" + { + "score" "2250" + } + "18" + { + "score" "2345" + } + "19" + { + "score" "2550" + } + "20" + { + "score" "3000" + } + } + "KillEater_RobotsKilledRank" + { + "0" + { + "score" "100" + } + "1" + { + "score" "250" + } + "2" + { + "score" "450" + } + "3" + { + "score" "700" + } + "4" + { + "score" "1000" + } + "5" + { + "score" "1350" + } + "6" + { + "score" "1750" + } + "7" + { + "score" "2250" + } + "8" + { + "score" "2750" + } + "9" + { + "score" "3500" + } + "10" + { + "score" "5000" + } + "11" + { + "score" "7500" + } + "12" + { + "score" "9990" + } + "13" + { + "score" "10000" + } + "14" + { + "score" "15000" + } + "15" + { + "score" "25000" + } + "16" + { + "score" "50000" + } + "17" + { + "score" "75000" + } + "18" + { + "score" "76160" + } + "19" + { + "score" "85000" + } + "20" + { + "score" "100000" + } + } + "KillEater_TimeCloakedRank" + { + "0" + { + "score" "200" + } + "1" + { + "score" "500" + } + "2" + { + "score" "900" + } + "3" + { + "score" "1337" + } + "4" + { + "score" "2000" + } + "5" + { + "score" "2700" + } + "6" + { + "score" "3500" + } + "7" + { + "score" "4500" + } + "8" + { + "score" "5500" + } + "9" + { + "score" "7000" + } + "10" + { + "score" "9000" + } + "11" + { + "score" "12000" + } + "12" + { + "score" "16000" + } + "13" + { + "score" "21337" + } + "14" + { + "score" "35000" + } + "15" + { + "score" "58007" + } + "16" + { + "score" "90000" + } + "17" + { + "score" "120000" + } + "18" + { + "score" "140000" + } + "19" + { + "score" "160000" + } + "20" + { + "score" "200000" + } + } + "KillEater_HealthGivenRank" + { + "0" + { + "score" "2000" + } + "1" + { + "score" "5000" + } + "2" + { + "score" "9000" + } + "3" + { + "score" "13370" + } + "4" + { + "score" "20000" + } + "5" + { + "score" "27000" + } + "6" + { + "score" "35000" + } + "7" + { + "score" "45000" + } + "8" + { + "score" "55000" + } + "9" + { + "score" "70000" + } + "10" + { + "score" "90000" + } + "11" + { + "score" "120000" + } + "12" + { + "score" "160000" + } + "13" + { + "score" "213370" + } + "14" + { + "score" "350000" + } + "15" + { + "score" "518008" + } + "16" + { + "score" "900000" + } + "17" + { + "score" "1200000" + } + "18" + { + "score" "1400000" + } + "19" + { + "score" "1600000" + } + "20" + { + "score" "2000000" + } + } + "KillEater_PointsScored" + { + "0" + { + "score" "15" + } + "1" + { + "score" "30" + } + "2" + { + "score" "50" + } + "3" + { + "score" "75" + } + "4" + { + "score" "100" + } + "5" + { + "score" "135" + } + "6" + { + "score" "175" + } + "7" + { + "score" "250" + } + "8" + { + "score" "375" + } + "9" + { + "score" "500" + } + "10" + { + "score" "725" + } + "11" + { + "score" "1000" + } + "12" + { + "score" "1500" + } + "13" + { + "score" "2000" + } + "14" + { + "score" "2750" + } + "15" + { + "score" "4000" + } + "16" + { + "score" "5500" + } + "17" + { + "score" "7500" + } + "18" + { + "score" "10000" + } + "19" + { + "score" "15000" + } + "20" + { + "score" "25000" + } + } + "Journal_DuckBadge" + { + "0" + { + "score" "1" + } + "1" + { + "score" "2" + } + "2" + { + "score" "3" + } + "3" + { + "score" "4" + } + "4" + { + "score" "5" + } + "5" + { + "score" "6" + } + "6" + { + "score" "7" + } + "7" + { + "score" "8" + } + "8" + { + "score" "9" + } + "9" + { + "score" "10" + } + "10" + { + "score" "11" + } + "11" + { + "score" "12" + } + "12" + { + "score" "13" + } + "13" + { + "score" "14" + } + "14" + { + "score" "15" + } + "15" + { + "score" "16" + } + "16" + { + "score" "17" + } + "17" + { + "score" "18" + } + "18" + { + "score" "19" + } + "19" + { + "score" "20" + } + "20" + { + "score" "21" + } + } + "KillEater_OperationContractRank" + { + "0" + { + "score" "1000" + } + "1" + { + "score" "2000" + } + "2" + { + "score" "3000" + } + "3" + { + "score" "3000" + } + } + "KillEater_HalloweenSoulsRank" + { + "0" + { + "score" "666" + } + "1" + { + "score" "1337" + } + "2" + { + "score" "2000" + } + "3" + { + "score" "4000" + } + "4" + { + "score" "6000" + } + "5" + { + "score" "8000" + } + "6" + { + "score" "10000" + } + "7" + { + "score" "12000" + } + "8" + { + "score" "14000" + } + "9" + { + "score" "16000" + } + "10" + { + "score" "18000" + } + "11" + { + "score" "20000" + } + "12" + { + "score" "22000" + } + "13" + { + "score" "24000" + } + "14" + { + "score" "26000" + } + "15" + { + "score" "28000" + } + "16" + { + "score" "30000" + } + "17" + { + "score" "32000" + } + "18" + { + "score" "34000" + } + "19" + { + "score" "36000" + } + "20" + { + "score" "38000" + } + } + "KillEater_ContractPointsEarnedRank" + { + "0" + { + "score" "2500" + } + "1" + { + "score" "5000" + } + "2" + { + "score" "6840" + } + "3" + { + "score" "6840" + } + } + "KillEater_BackstabsAbsorbed" + { + "0" + { + "score" "1" + } + "1" + { + "score" "3" + } + "2" + { + "score" "5" + } + "3" + { + "score" "7" + } + "4" + { + "score" "10" + } + "5" + { + "score" "14" + } + "6" + { + "score" "18" + } + "7" + { + "score" "23" + } + "8" + { + "score" "28" + } + "9" + { + "score" "35" + } + "10" + { + "score" "50" + } + "11" + { + "score" "75" + } + "12" + { + "score" "99" + } + "13" + { + "score" "100" + } + "14" + { + "score" "150" + } + "15" + { + "score" "250" + } + "16" + { + "score" "500" + } + "17" + { + "score" "750" + } + "18" + { + "score" "784" + } + "19" + { + "score" "850" + } + "20" + { + "score" "1000" + } + } + + + } + "kill_eater_score_types" + { + + "0" + { + "type_name" "KillEaterEventType_Kills" + } + "1" + { + "type_name" "KillEaterEventType_Ubers" + } + "2" + { + "type_name" "KillEaterEventType_KillAssists" + } + "3" + { + "type_name" "KillEaterEventType_SentryKills" + } + "4" + { + "type_name" "KillEaterEventType_PeeVictims" + } + "5" + { + "type_name" "KillEaterEventType_BackstabsAbsorbed" + "level_data" "KillEater_BackstabsAbsorbed" + } + "6" + { + "type_name" "KillEaterEventType_HeadsTaken" + } + "7" + { + "type_name" "KillEaterEventType_Humiliations" + } + "8" + { + "type_name" "KillEaterEventType_GiftsGiven" + "level_data" "SpiritOfGivingRank" + } + "9" + { + "type_name" "KillEaterEventType_FeignDeaths" + } + + "10" + { + "type_name" "KillEaterEventType_ScoutsKilled" + } + "11" + { + "type_name" "KillEaterEventType_SnipersKilled" + } + "12" + { + "type_name" "KillEaterEventType_SoldiersKilled" + } + "13" + { + "type_name" "KillEaterEventType_DemomenKilled" + } + "14" + { + "type_name" "KillEaterEventType_HeaviesKilled" + } + "15" + { + "type_name" "KillEaterEventType_PyrosKilled" + } + "16" + { + "type_name" "KillEaterEventType_SpiesKilled" + } + "17" + { + "type_name" "KillEaterEventType_EngineersKilled" + } + "18" + { + "type_name" "KillEaterEventType_MedicsKilled" + } + "19" + { + "type_name" "KillEaterEventType_BuildingsDestroyed" + } + "20" + { + "type_name" "KillEaterEventType_ProjectilesReflected" + } + "21" + { + "type_name" "KillEaterEventType_HeadshotKills" + } + "22" + { + "type_name" "KillEaterEventType_AirborneEnemyKills" + } + "23" + { + "type_name" "KillEaterEventType_GibKills" + } + + "24" + { + "type_name" "KillEaterEventType_BuildingsSapped" + "level_data" "KillEater_SapperRank" + } + "25" + { + "type_name" "KillEaterEventType_PlayersTickled" + "level_data" "KillEater_HolidayPunchRank" + } + "26" + { + "type_name" "KillEaterEventType_MenTreaded" + "level_data" "KillEater_ManTreadsRank" + } + + "27" + { + "type_name" "KillEaterEventType_KillsDuringFullMoon" + } + "28" + { + "type_name" "KillEaterEventType_StartDominationKills" + } + "30" + { + "type_name" "KillEaterEventType_RevengeKills" + } + "31" + { + "type_name" "KillEaterEventType_PosthumousKills" + } + "32" + { + "type_name" "KillEaterEventType_AlliesExtinguished" + } + "33" + { + "type_name" "KillEaterEventType_CriticalKills" + } + "34" + { + "type_name" "KillEaterEventType_KillsWhileExplosiveJumping" + } + "36" + { + "type_name" "KillEaterEventType_SapperDestroyed" + } + "37" + { + "type_name" "KillEaterEventType_InvisibleSpiesKilled" + } + "38" + { + "type_name" "KillEaterEventType_MedicsWithFullUberKilled" + } + "39" + { + "type_name" "KillEaterEventType_RobotsKilled" + "level_data" "KillEater_RobotsKilledRank" + "allow_bot_victims" "1" + } + "40" + { + "type_name" "KillEaterEventType_MinibossRobotsKilled" + "level_data" "KillEater_RobotsKilledRank" + "allow_bot_victims" "1" + } + "44" + { + "type_name" "KillEaterEventType_LowHealthKill" + } + "45" + { + "type_name" "KillEaterEventType_HalloweenKills" + } + "46" + { + "type_name" "KillEaterEventType_HalloweenRobotKills" + "allow_bot_victims" "1" + } + "47" + { + "type_name" "KillEaterEventType_DefenderKills" + } + "48" + { + "type_name" "KillEaterEventType_UnderwaterKills" + } + "49" + { + "type_name" "KillEaterEventType_KillsWhileUbercharged" + } + "50" + { + "type_name" "KillEaterEventType_FoodEaten" + "allow_bot_victims" "1" + } + "51" + { + "type_name" "KillEaterEventType_BannersDeployed" + "allow_bot_victims" "1" + } + "58" + { + "type_name" "KillEaterEvent_TimeCloaked" + "level_data" "KillEater_TimeCloakedRank" + "allow_bot_victims" "1" + } + "59" + { + "type_name" "KillEaterEvent_HealthGiven" + "level_data" "KillEater_HealthGivenRank" + } + "60" + { + "type_name" "KillEaterEvent_TeleportsGiven" + } + "61" + { + "type_name" "KillEaterEvent_TanksDestroyed" + "allow_bot_victims" "1" + } + "62" + { + "type_name" "KillEaterEvent_LongDistanceKills" + } + "63" + { + "type_name" "KillEaterEvent_UniquePlayerKills" + } + "64" + { + "type_name" "KillEaterEvent_PointsScored" + "level_data" "KillEater_PointsScored" + } + "65" + { + "type_name" "KillEaterEvent_DoubleDonks" + } + "66" + { + "type_name" "KillEaterEvent_TeammatesWhipped" + } + "67" + { + "type_name" "KillEaterEvent_VictoryTimeKill" + } + "68" + { + "type_name" "KillEaterEvent_RobotScoutKill" + "level_data" "KillEater_RobotsKilledRank" + "allow_bot_victims" "1" + } + "74" + { + "type_name" "KillEaterEvent_RobotSpyKill" + "level_data" "KillEater_RobotsKilledRank" + "allow_bot_victims" "1" + } + "77" + { + "type_name" "KillEaterEvent_TauntKill" + } + "78" + { + "type_name" "KillEaterEvent_PlayerWearingUnusualKill" + } + "79" + { + "type_name" "KillEaterEvent_BurningPlayerKill" + } + "80" + { + "type_name" "KillEaterEvent_KillstreaksEnded" + } + "81" + { + "type_name" "KillEaterEvent_KillcamTaunts" + } + "82" + { + "type_name" "KillEaterEvent_DamageDealt" + } + "83" + { + "type_name" "KillEaterEvent_FiresSurvived" + } + "84" + { + "type_name" "KillEaterEvent_AllyHealingDone" + } + "85" + { + "type_name" "KillEaterEvent_PointBlankKill" + } + "86" + { + "type_name" "KillEaterEvent_PlayerKillsBySentry" + } + "87" + { + "type_name" "KillEaterEvent_CosmeticKills" + } + "88" + { + "type_name" "KillEaterEvent_FullHealthKills" + } + "89" + { + "type_name" "KillEaterEvent_TauntingPlayerKills" + } + "90" + { + "type_name" "KillEaterEvent_HalloweenOverworldKills" + } + "91" + { + "type_name" "KillEaterEvent_HalloweenUnderworldKills" + } + "92" + { + "type_name" "KillEaterEvent_HalloweenMinigamesWon" + } + "93" + { + "type_name" "KillEaterEvent_NonCritKills" + } + "94" + { + "type_name" "KillEaterEvent_PlayersHit" + } + "95" + { + "type_name" "KillEaterEvent_CosmeticAssists" + } + "96" + { + "type_name" "KillEaterEvent_CosmeticOperationContractsCompleted" + } + "97" + { + "type_name" "KillEaterEvent_CosmeticOperationKills" + } + "98" + { + "type_name" "KillEaterEvent_CosmeticOperationContractsPoints" + "level_data" "KillEater_OperationContractRank" + } + "99" + { + "type_name" "KillEaterEvent_CosmeticOperationBonusObjectives" + } + "100" + { + "type_name" "KillEaterEvent_TauntsPerformed" + } + "101" + { + "type_name" "KillEaterEvent_InvasionKills" + } + "102" + { + "type_name" "KillEaterEvent_InvasionKillsOnMap01" + } + "103" + { + "type_name" "KillEaterEvent_InvasionKillsOnMap02" + } + "104" + { + "type_name" "KillEaterEvent_InvasionKillsOnMap03" + } + "105" + { + "type_name" "KillEaterEvent_InvasionKillsOnMap04" + } + "106" + { + "type_name" "KillEaterEvent_HalloweenSouls" + "level_data" "KillEater_HalloweenSoulsRank" + "allow_bot_victims" "1" + } + "107" + { + "type_name" "KillEaterEvent_HalloweenContractsCompleted" + } + "108" + { + "type_name" "KillEaterEvent_HalloweenOfferings" + } + "109" + { + "type_name" "KillEaterEvent_PowerupBottlesUsed" + } + "110" + { + "type_name" "KillEaterEvent_ContractPointsEarned" + "level_data" "KillEater_ContractPointsEarnedRank" + } + "111" + { + "type_name" "KillEaterEvent_ContractPointsContributedToFriends" + } + + + + } + "mvm_maps" + { + "mvm_ghost_town" + { + "display_name" "#TF_MVM_Map_Ghost_Town" + + "missions" + { + "mvm_ghost_town" + { + "display_name" "#TF_MVM_Challenge_Ghost_Town" + "mode" "#TF_MVM_Challenge_Endurance" + "difficulty" "haunted" + } + } + } + + "mvm_mannhattan" + { + "display_name" "#TF_MVM_Map_Mannhattan" + + "missions" + { + "mvm_mannhattan" + { + "display_name" "#TF_MVM_Challenge_Mannhattan" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_mannhattan_advanced1" + { + "display_name" "#TF_MVM_Challenge_Mannhattan1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_mannhattan_advanced2" + { + "display_name" "#TF_MVM_Challenge_Mannhattan2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + } + } + + "mvm_rottenburg" + { + "display_name" "#TF_MVM_Map_Rottenburg" + + "missions" + { + "mvm_rottenburg" + { + "display_name" "#TF_MVM_Challenge_Rottenburg" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_rottenburg_advanced1" + { + "display_name" "#TF_MVM_Challenge_Rottenburg1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_rottenburg_advanced2" + { + "display_name" "#TF_MVM_Challenge_Rottenburg2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + } + } + + "mvm_bigrock" + { + "display_name" "#TF_MVM_Map_Bigrock" + + "missions" + { + "mvm_bigrock" + { + "display_name" "#TF_MVM_Challenge_BigRock" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "normal" + } + "mvm_bigrock_advanced1" + { + "display_name" "#TF_MVM_Challenge_Bigrock1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_bigrock_advanced2" + { + "display_name" "#TF_MVM_Challenge_Bigrock2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + } + } + + "mvm_decoy" + { + "display_name" "#TF_MVM_Map_Decoy" + + "missions" + { + "mvm_decoy" + { + "display_name" "#TF_MVM_Challenge_Decoy1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "normal" + } + "mvm_decoy_intermediate" + { + "display_name" "#TF_MVM_Challenge_Decoy_Intermediate" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_decoy_intermediate2" + { + "display_name" "#TF_MVM_Challenge_Decoy_Intermediate2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_decoy_advanced" + { + "display_name" "#TF_MVM_Challenge_Decoy2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_decoy_advanced2" + { + "display_name" "#TF_MVM_Challenge_Decoy3" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_decoy_advanced3" + { + "display_name" "#TF_MVM_Challenge_Decoy4" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_decoy_expert1" + { + "display_name" "#TF_MVM_Challenge_Decoy_Expert1" + "tour_name" "#TF_MvM_Tour_0" + "mode" "#TF_MVM_Challenge_Invasion" + "badge_slot" "-1" + "difficulty" "expert" + "mannup_points" "1" + } + } + } + + "mvm_coaltown" + { + "display_name" "#TF_MVM_Map_CoalTown" + + "missions" + { + "mvm_coaltown" + { + "display_name" "#TF_MVM_Challenge_CoalTown1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "normal" + } + "mvm_coaltown_intermediate" + { + "display_name" "#TF_MVM_Challenge_CoalTown_Intermediate" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_coaltown_intermediate2" + { + "display_name" "#TF_MVM_Challenge_CoalTown_Intermediate2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_coaltown_advanced" + { + "display_name" "#TF_MVM_Challenge_CoalTown2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_coaltown_advanced2" + { + "display_name" "#TF_MVM_Challenge_CoalTown3" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_coaltown_expert1" + { + "display_name" "#TF_MVM_Challenge_CoalTown_Expert1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "expert" + "mannup_points" "1" + } + } + } + + "mvm_mannworks" + { + "display_name" "#TF_MVM_Map_Mannworks" + + "missions" + { + "mvm_mannworks" + { + "display_name" "#TF_MVM_Challenge_Mannworks1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "normal" + } + "mvm_mannworks_intermediate" + { + "display_name" "#TF_MVM_Challenge_MannWorks_Intermediate" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_mannworks_intermediate2" + { + "display_name" "#TF_MVM_Challenge_MannWorks_Intermediate2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "intermediate" + "mannup_points" "1" + } + "mvm_mannworks_advanced" + { + "display_name" "#TF_MVM_Challenge_Mannworks2" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "advanced" + } + "mvm_mannworks_ironman" + { + "display_name" "#TF_MVM_Challenge_Mannworks3" + "mode" "#TF_MVM_Challenge_Endurance" + "difficulty" "advanced" + } + "mvm_mannworks_expert1" + { + "display_name" "#TF_MVM_Challenge_MannWorks_Expert1" + "mode" "#TF_MVM_Challenge_Invasion" + "difficulty" "expert" + "mannup_points" "1" + } + } + } + } + "mvm_tours" + { + "tour_intermediate1" + { + "tour_name" "#TF_MvM_Tour_Intermediate_1" + "badge_item_def" "Tour of Duty Badge Intermediate 1" + "mission_complete_loot_list" "mvm_victory" + "tour_complete_loot_list" "mvm_victory_badge_leveled_intermediate" + "difficulty" "intermediate" + "loot_image" "pve/mvm_loot_image_intermediate1" + + "missions" + { + "mvm_coaltown_intermediate" "1" + "mvm_coaltown_intermediate2" "2" + "mvm_decoy_intermediate" "3" + "mvm_decoy_intermediate2" "4" + "mvm_mannworks_intermediate" "5" + "mvm_mannworks_intermediate2" "6" + } + } + + "tour_advanced1" + { + "tour_name" "#TF_MvM_Tour_Advanced_1" + "badge_item_def" "Tour of Duty Badge Advanced 1" + "mission_complete_loot_list" "mvm_victory" + "tour_complete_loot_list" "mvm_victory_badge_leveled_advanced" + "difficulty" "advanced" + "loot_image" "pve/mvm_loot_image" + + "missions" + { + "mvm_coaltown_advanced" "1" + "mvm_coaltown_advanced2" "2" + "mvm_decoy_advanced" "8" + "mvm_decoy_advanced2" "9" + "mvm_mannworks_advanced" "15" + "mvm_mannworks_ironman" "16" + } + } + + "tour_advanced2" + { + "tour_name" "#TF_MvM_Tour_Advanced_2" + "badge_item_def" "Tour of Duty Badge Advanced 2" + "mission_complete_loot_list" "mvm_victory" + "tour_complete_loot_list" "mvm_engineer_victory_badge_leveled_advanced" + "difficulty" "advanced" + "loot_image" "pve/mvm_loot_image_engy" + + "missions" + { + "mvm_bigrock_advanced1" "1" + "mvm_bigrock_advanced2" "2" + "mvm_decoy_advanced3" "3" + } + } + + "tour_advanced3" + { + "tour_name" "#TF_MvM_Tour_Advanced_3" + "badge_item_def" "Tour of Duty Badge Advanced 3" + "mission_complete_loot_list" "mvm_victory_advanced3" + "tour_complete_loot_list" "mvm_victory_badge_leveled_advanced3" + "difficulty" "advanced" + "loot_image" "pve/mvm_loot_image_shield" + + "missions" + { + "mvm_mannhattan_advanced1" "1" + "mvm_mannhattan_advanced2" "2" + "mvm_rottenburg_advanced1" "3" + "mvm_rottenburg_advanced2" "4" + } + } + + "tour_expert1" + { + "tour_name" "#TF_MvM_Tour_Expert_1" + "badge_item_def" "Tour of Duty Badge Expert 1" + "mission_complete_loot_list" "mvm_victory" + "tour_complete_loot_list" "mvm_victory_badge_leveled_expert" + "difficulty" "expert" + "loot_image" "pve/mvm_loot_image_expert1" + + "missions" + { + "mvm_coaltown_expert1" "1" + "mvm_decoy_expert1" "2" + "mvm_mannworks_expert1" "3" + } + } + } +"matchmaking_categories" +{ + "special_events" + { + "localized_name" "#TF_MMCat_SpecialEvents" + "max_excludes" "100" + "valid_match_groups" + { + "MatchGroup_Casual_12v12" "1" + } + } + "core" + { + "localized_name" "#TF_MMCat_Core" + "max_excludes" "100" + "valid_match_groups" + { + "MatchGroup_Casual_12v12" "1" + } + } + "alternative" + { + "localized_name" "#TF_MMCat_Alternative" + "max_excludes" "100" + "valid_match_groups" + { + "MatchGroup_Casual_12v12" "1" + } + } + "competitive_6v6" + { + "localized_name" "#TF_MMCat_Competitive6v6" + "max_excludes" "0" + "valid_match_groups" + { + "MatchGroup_Ladder_6v6" "1" + } + } + "specialevent_placeholder" + { + "localized_name" "#TF_MMCat_EventPlaceholder" + "max_excludes" "0" + "valid_match_groups" + { + } + } +} +"maps" +{ + "attack_defense" + { + "mm_type" "core" + "localized_name" "#Gametype_AttackDefense" + "localized_desc" "#Gametype_AttackDefense_Desc" + "list_image" "casual/gametype_ad" + "maplist" + { + "1" + { + "name" "cp_dustbowl" + "enabled" "1" + } + "2" + { + "name" "cp_egypt_final" + "enabled" "1" + } + "3" + { + "name" "cp_gorge" + "enabled" "1" + } + "4" + { + "name" "cp_gravelpit" + "enabled" "1" + } + "5" + { + "name" "cp_junction_final" + "enabled" "1" + } + "6" + { + "name" "cp_mountainlab" + "enabled" "1" + } + "7" + { + "name" "cp_steel" + "enabled" "1" + } + "8" + { + "name" "cp_gullywash_final1" + "enabled" "0" + } + "9" + { + "name" "cp_snowplow" + "enabled" "0" + } + "10" + { + "name" "cp_mercenarypark" + "enabled" "1" + } + "11" + { + "name" "cp_mossrock" + "enabled" "1" + } + "12" + { + "name" "cp_altitude" + "enabled" "1" + } + "13" + { + "name" "cp_sulfur" + "enabled" "1" + } + "14" + { + "name" "cp_hardwood_final" + "enabled" "1" + } + "15" + { + "name" "cp_brew" + "enabled" "1" + } + "16" + { + "name" "ctf_haarp" + "enabled" "1" + } + } + } + "ctf" + { + "mm_type" "core" + "localized_name" "#Gametype_CTF" + "localized_desc" "#Gametype_CTF_Desc" + "list_image" "casual/gametype_ctf" + "maplist" + { + "1" + { + "name" "ctf_2fort" + "enabled" "1" + } + "2" + { + "name" "ctf_doublecross" + "enabled" "1" + } + "3" + { + "name" "ctf_sawmill" + "enabled" "1" + } + "4" + { + "name" "ctf_turbine" + "enabled" "1" + } + "5" + { + "name" "ctf_well" + "enabled" "1" + } + "6" + { + "name" "ctf_2fort_invasion" + "enabled" "1" + } + "7" + { + "name" "ctf_landfall" + "enabled" "1" + } + "8" + { + "name" "ctf_pelican_peak" + "enabled" "1" + } + "9" + { + "name" "ctf_frosty" + "enabled" "1" + } + } + } + "capture_point" + { + "mm_type" "core" + "localized_name" "#Gametype_CP" + "localized_desc" "#Gametype_CP_Desc" + "list_image" "casual/gametype_cp" + "maplist" + { + "1" + { + "name" "cp_5gorge" + "enabled" "1" + } + "2" + { + "name" "cp_badlands" + "enabled" "1" + } + "3" + { + "name" "cp_coldfront" + "enabled" "1" + } + "4" + { + "name" "cp_fastlane" + "enabled" "1" + } + "5" + { + "name" "cp_freight_final1" + "enabled" "1" + } + "6" + { + "name" "cp_granary" + "enabled" "1" + } + "7" + { + "name" "cp_well" + "enabled" "1" + } + "8" + { + "name" "cp_yukon_final" + "enabled" "1" + } + "9" + { + "name" "cp_foundry" + "enabled" "1" + } + "10" + { + "name" "cp_gullywash_final1" + "enabled" "1" + } + "11" + { + "name" "cp_process_final" + "enabled" "1" + } + "12" + { + "name" "cp_standin_final" + "enabled" "1" + } + "13" + { + "name" "cp_snakewater_final1" + "enabled" "1" + } + "14" + { + "name" "cp_powerhouse" + "enabled" "1" + } + "15" + { + "name" "cp_vanguard" + "enabled" "1" + } + "16" + { + "name" "cp_sunshine" + "enabled" "1" + } + "17" + { + "name" "cp_metalworks" + "enabled" "1" + } + "18" + { + "name" "cp_reckoner" + "enabled" "1" + } + } + } + "koth" + { + "mm_type" "core" + "localized_name" "#Gametype_Koth" + "localized_desc" "#Gametype_KOTH_Desc" + "list_image" "casual/gametype_koth" + "maplist" + { + "1" + { + "name" "koth_badlands" + "enabled" "1" + } + "2" + { + "name" "koth_harvest_final" + "enabled" "1" + } + "3" + { + "name" "koth_lakeside_final" + "enabled" "1" + } + "4" + { + "name" "koth_nucleus" + "enabled" "1" + } + "5" + { + "name" "koth_sawmill" + "enabled" "1" + } + "6" + { + "name" "koth_viaduct" + "enabled" "1" + } + "7" + { + "name" "koth_king" + "enabled" "1" + } + "8" + { + "name" "koth_suijin" + "enabled" "1" + } + "9" + { + "name" "koth_probed" + "enabled" "1" + } + "10" + { + "name" "koth_highpass" + "enabled" "1" + } + "11" + { + "name" "koth_lazarus" + "enabled" "1" + } + "12" + { + "name" "koth_brazil" + "enabled" "1" + } + "13" + { + "name" "koth_cascade" + "enabled" "1" + } + "14" + { + "name" "koth_sharkbay" + "enabled" "1" + } + "15" + { + "name" "koth_rotunda" + "enabled" "1" + } + "16" + { + "name" "koth_snowtower" + "enabled" "1" + } + } + } + "payload" + { + "mm_type" "core" + "localized_name" "#Gametype_Escort" + "localized_desc" "#Gametype_Escort_Desc" + "list_image" "casual/gametype_payload" + "maplist" + { + "1" + { + "name" "pl_badwater" + "enabled" "1" + } + "2" + { + "name" "pl_frontier_final" + "enabled" "1" + } + "3" + { + "name" "pl_goldrush" + "enabled" "1" + } + "4" + { + "name" "pl_hoodoo_final" + "enabled" "1" + } + "5" + { + "name" "pl_thundermountain" + "enabled" "1" + } + "6" + { + "name" "pl_upward" + "enabled" "1" + } + "7" + { + "name" "pl_barnblitz" + "enabled" "1" + } + "8" + { + "name" "pl_cactuscanyon" + "enabled" "0" + } + "9" + { + "name" "pl_borneo" + "enabled" "1" + } + "10" + { + "name" "pl_snowycoast" + "enabled" "1" + } + "11" + { + "name" "pl_swiftwater_final1" + "enabled" "1" + } + "12" + { + "name" "pl_enclosure_final" + "enabled" "1" + } + "13" + { + "name" "pl_pier" + "enabled" "1" + } + "14" + { + "name" "pl_breadspace" + "enabled" "1" + } + "15" + { + "name" "pl_phoenix" + "enabled" "1" + } + "16" + { + "name" "pl_cashworks" + "enabled" "1" + } + "17" + { + "name" "pl_venice" + "enabled" "1" + } + "18" + { + "name" "pl_emerge" + "enabled" "1" + } + "19" + { + "name" "pl_camber" + "enabled" "1" + } + "20" + { + "name" "pl_rumford_event" + "enabled" "1" + } + } + } + "payload_race" + { + "mm_type" "alternative" + "localized_name" "#Gametype_EscortRace" + "localized_desc" "#Gametype_EscortRace_Desc" + "list_image" "casual/gametype_plr" + "maplist" + { + "1" + { + "name" "plr_hightower" + "enabled" "1" + } + "2" + { + "name" "plr_pipeline" + "enabled" "1" + } + "3" + { + "name" "plr_nightfall_final" + "enabled" "1" + } + "4" + { + "name" "plr_bananabay" + "enabled" "1" + } + "5" + { + "name" "plr_hacksaw" + "enabled" "1" + } + } + } + "other" + { + "mm_type" "alternative" + "localized_name" "#GameType_Misc" + "localized_desc" "#GameType_Misc_Desc" + "list_image" "casual/gametype_arena" + "maplist" + { + "1" + { + "name" "sd_doomsday" + "enabled" "1" + } + "2" + { + "name" "pd_watergate" + "enabled" "1" + } + "3" + { + "name" "tc_hydro" + "enabled" "1" + } + "4" + { + "name" "cp_degrootkeep" + "enabled" "1" + } + "5" + { + "name" "cp_snowplow" + "enabled" "1" + } + "6" + { + "name" "koth_probed" + "enabled" "0" + } + "7" + { + "name" "ctf_2fort_invasion" + "enabled" "0" + } + "8" + { + "name" "pd_selbyen" + "enabled" "1" + } + "9" + { + "name" "vsh_tinyrock" + "enabled" "1" + } + "10" + { + "name" "vsh_distillery" + "enabled" "1" + } + "11" + { + "name" "vsh_skirmish" + "enabled" "1" + } + "12" + { + "name" "vsh_nucleus" + "enabled" "1" + } + } + } + "arena" + { + "mm_type" "" + "localized_name" "" + "localized_desc" "" + "list_image" "" + "maplist" + { + "1" + { + "name" "arena_watchtower" + "enabled" "1" + } + "2" + { + "name" "arena_offblast_final" + "enabled" "1" + } + "3" + { + "name" "arena_badlands" + "enabled" "0" + } + "4" + { + "name" "arena_granary" + "enabled" "0" + } + "5" + { + "name" "arena_lumberyard" + "enabled" "1" + } + "6" + { + "name" "arena_nucleus" + "enabled" "1" + } + "7" + { + "name" "arena_ravine" + "enabled" "1" + } + "8" + { + "name" "arena_sawmill" + "enabled" "1" + } + "9" + { + "name" "arena_well" + "enabled" "0" + } + "10" + { + "name" "arena_byre" + "enabled" "1" + } + } + } + "featured" + { + "mm_type" "special_events" + "localized_name" "#Gametype_SummerFeatured" + "localized_desc" "#Gametype_SummerFeatured_Desc" + "list_image" "casual/gametype_featured_campaign3" + "restrictions" + { + "holiday" "summer" + } + "maplist" + { + "1" + { + "name" "pl_embargo" + "enabled" "1" + } + "2" + { + "name" "pl_odyssey" + "enabled" "1" + } + "3" + { + "name" "koth_megaton" + "enabled" "1" + } + "4" + { + "name" "koth_cachoeira" + "enabled" "1" + } + "5" + { + "name" "cp_overgrown" + "enabled" "1" + } + "6" + { + "name" "cp_hadal" + "enabled" "1" + } + "7" + { + "name" "ctf_applejack" + "enabled" "1" + } + "8" + { + "name" "pd_atom_smash" + "enabled" "1" + } + "9" + { + "name" "cp_canaveral_5cp" + "enabled" "1" + } + "10" + { + "name" "cp_burghausen" + "enabled" "1" + } + } + } + "halloween" + { + "mm_type" "special_events" + "localized_name" "#Gametype_Halloween" + "localized_desc" "#Gametype_Halloween_Desc" + "list_image" "casual/gametype_halloween" + "restrictions" + { + "holiday" "halloween" + } + "maplist" + { + "1" + { + "name" "koth_harvest_event" + "enabled" "1" + } + "2" + { + "name" "cp_manor_event" + "enabled" "1" + } + "3" + { + "name" "koth_viaduct_event" + "enabled" "1" + } + "4" + { + "name" "koth_lakeside_event" + "enabled" "1" + } + "5" + { + "name" "plr_hightower_event" + "enabled" "1" + } + "6" + { + "name" "sd_doomsday_event" + "enabled" "1" + } + "7" + { + "name" "cp_gorge_event" + "enabled" "1" + } + "8" + { + "name" "cp_sunshine_event" + "enabled" "1" + } + "9" + { + "name" "koth_moonshine_event" + "enabled" "1" + } + "10" + { + "name" "pl_millstone_event" + "enabled" "1" + } + "11" + { + "name" "koth_maple_ridge_event" + "enabled" "1" + } + "12" + { + "name" "pl_fifthcurve_event" + "enabled" "1" + } + "13" + { + "name" "pd_pit_of_death_event" + "enabled" "1" + } + "14" + { + "name" "koth_bagel_event" + "enabled" "1" + } + "15" + { + "name" "pl_rumble_event" + "enabled" "1" + } + "16" + { + "name" "pd_monster_bash" + "enabled" "1" + } + "17" + { + "name" "koth_slasher" + "enabled" "1" + } + "18" + { + "name" "pd_cursed_cove_event" + "enabled" "1" + } + "19" + { + "name" "koth_slaughter_event" + "enabled" "1" + } + "20" + { + "name" "pl_precipice_event_final" + "enabled" "1" + } + "21" + { + "name" "koth_megalo" + "enabled" "1" + } + "22" + { + "name" "pl_hasslecastle" + "enabled" "1" + } + "23" + { + "name" "pl_bloodwater" + "enabled" "1" + } + "24" + { + "name" "koth_undergrove_event" + "enabled" "1" + } + "25" + { + "name" "pd_farmageddon" + "enabled" "1" + } + "26" + { + "name" "koth_los_muertos" + "enabled" "1" + } + "27" + { + "name" "cp_ambush_event" + "enabled" "1" + } + "28" + { + "name" "pl_terror_event" + "enabled" "1" + } + "29" + { + "name" "arena_lumberyard_event" + "enabled" "1" + } + "30" + { + "name" "koth_synthetic_event" + "enabled" "1" + } + "31" + { + "name" "koth_sawmill_event" + "enabled" "1" + } + "32" + { + "name" "ctf_helltrain_event" + "enabled" "1" + } + "33" + { + "name" "plr_hacksaw_event" + "enabled" "1" + } + "34" + { + "name" "ctf_crasher" + "enabled" "1" + } + "35" + { + "name" "pl_sludgepit_event" + "enabled" "1" + } + "36" + { + "name" "cp_spookeyridge" + "enabled" "1" + } + "37" + { + "name" "arena_perks" + "enabled" "1" + } + "38" + { + "name" "koth_slime" + "enabled" "1" + } + "39" + { + "name" "cp_lavapit_final" + "enabled" "1" + } + "40" + { + "name" "pd_mannsylvania" + "enabled" "1" + } + "41" + { + "name" "cp_degrootkeep_rats" + "enabled" "1" + } + "42" + { + "name" "pl_spineyard" + "enabled" "1" + } + "43" + { + "name" "pl_corruption" + "enabled" "1" + } + "44" + { + "name" "zi_murky" + "enabled" "1" + } + "45" + { + "name" "zi_atoll" + "enabled" "1" + } + "46" + { + "name" "zi_woods" + "enabled" "1" + } + "47" + { + "name" "zi_sanitarium" + "enabled" "1" + } + "48" + { + "name" "zi_devastation_final1" + "enabled" "1" + } + } + } + "christmas" + { + "mm_type" "special_events" + "localized_name" "#Gametype_Smissmas" + "localized_desc" "#Gametype_Smissmas_Desc" + "list_image" "casual/gametype_smissmas" + "restrictions" + { + "holiday" "christmas" + } + "maplist" + { + "1" + { + "name" "pd_snowville_event" + "enabled" "1" + } + "2" + { + "name" "ctf_snowfall_final" + "enabled" "1" + } + "3" + { + "name" "pl_wutville_event" + "enabled" "1" + } + "4" + { + "name" "pl_coal_event" + "enabled" "1" + } + "5" + { + "name" "pl_chilly" + "enabled" "1" + } + "6" + { + "name" "ctf_doublecross_snowy" + "enabled" "1" + } + "7" + { + "name" "cp_frostwatch" + "enabled" "1" + } + "8" + { + "name" "pl_frostcliff" + "enabled" "1" + } + "9" + { + "name" "cp_gravelpit_snowy" + "enabled" "1" + } + "10" + { + "name" "koth_krampus" + "enabled" "1" + } + "11" + { + "name" "ctf_turbine_winter" + "enabled" "1" + } + "12" + { + "name" "cp_carrier" + "enabled" "1" + } + "13" + { + "name" "pd_galleria" + "enabled" "1" + } + } + } + "powerup" + { + "mm_type" "alternative" + "localized_name" "#GameType_Powerup" + "localized_desc" "#Gametype_Powerup_Desc" + "list_image" "casual/gametype_mannpower" + "maplist" + { + "1" + { + "name" "ctf_foundry" + "enabled" "1" + } + "2" + { + "name" "ctf_gorge" + "enabled" "1" + } + "3" + { + "name" "ctf_thundermountain" + "enabled" "1" + } + "4" + { + "name" "ctf_hellfire" + "enabled" "1" + } + } + } + "passtime" + { + "mm_type" "alternative" + "localized_name" "#GameType_Passtime" + "localized_desc" "#Gametype_Passtime_Desc" + "list_image" "casual/gametype_passtime" + "maplist" + { + "1" + { + "name" "pass_brickyard" + "enabled" "1" + } + "2" + { + "name" "pass_timbertown" + "enabled" "1" + } + "3" + { + "name" "pass_district" + "enabled" "1" + } + } + } + "competitive_6v6" + { + "mm_type" "competitive_6v6" + "localized_name" "#GameType_Competitive_6v6" + "localized_desc" "#Gametype_Competitive_6v6_Desc" + "list_image" "gametype_competitive_6v6" + "maplist" + { + "1" + { + "name" "cp_process_final" + "enabled" "1" + } + "2" + { + "name" "cp_gorge" + "enabled" "1" + } + "3" + { + "name" "cp_badlands" + "enabled" "1" + } + "4" + { + "name" "cp_vanguard" + "enabled" "1" + } + "5" + { + "name" "cp_granary" + "enabled" "1" + } + "6" + { + "name" "cp_foundry" + "enabled" "1" + } + "7" + { + "name" "cp_gullywash_final1" + "enabled" "1" + } + "8" + { + "name" "cp_snakewater_final1" + "enabled" "1" + } + "9" + { + "name" "koth_viaduct" + "enabled" "1" + } + "10" + { + "name" "cp_sunshine" + "enabled" "1" + } + "11" + { + "name" "cp_metalworks" + "enabled" "1" + } + "12" + { + "name" "pl_swiftwater_final1" + "enabled" "1" + } + "13" + { + "name" "pl_badwater" + "enabled" "1" + } + "14" + { + "name" "ctf_turbine" + "enabled" "1" + } + } + } + "specialevent_placeholder" + { + "mm_type" "specialevent_placeholder" + "localized_name" "#GameType_specialevent_placeholder" + "localized_desc" "#Gametype_specialevent_placeholder_Desc" + "list_image" "gametype_specialevent_placeholder" + "maplist" + { + "1" + { + "name" "pl_upward" + "enabled" "1" + } + } + } +} +"master_maps_list" +{ + "0" + { + "name" "Missing" + "localizedname" "#TF_Map_Unknown" + "statsidentifier" "0" + } + "1" + { + "name" "cp_gorge" + "localizedname" "#TF_Map_cp_gorge" + "statsidentifier" "1114113" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "2" + { + "name" "cp_badlands" + "localizedname" "#TF_Map_cp_badlands" + "statsidentifier" "1114114" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "3" + { + "name" "cp_vanguard" + "localizedname" "#TF_Map_Vanguard" + "statsidentifier" "1114115" + "strangeprefixtoken" "#TF_Map_Vanguard_StrangePrefix" + "maptoken" "Map Token Vanguard" + "authors" "#cp_vanguard_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "4" + { + "name" "cp_granary" + "localizedname" "#TF_Map_cp_granary" + "statsidentifier" "1114116" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "5" + { + "name" "cp_foundry" + "localizedname" "#TF_Map_cp_foundry" + "statsidentifier" "1114117" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "6" + { + "name" "cp_gullywash_final1" + "localizedname" "#TF_Gullywash" + "statsidentifier" "1114118" + "strangeprefixtoken" "#TF_Gullywash_StrangePrefix" + "maptoken" "Map Token Gullywash" + "authors" "#cp_gullywash_final1_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "7" + { + "name" "cp_snakewater_final1" + "localizedname" "#TF_Map_Snakewater" + "statsidentifier" "1114119" + "strangeprefixtoken" "#TF_Map_Snakewater_StrangePrefix" + "maptoken" "Map Token Snakewater" + "authors" "#cp_snakewater_final1_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "8" + { + "name" "koth_viaduct" + "localizedname" "#TF_Map_koth_viaduct" + "statsidentifier" "1114120" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "9" + { + "name" "cp_gravelpit" + "localizedname" "#TF_Map_cp_gravelpit" + "statsidentifier" "131075" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "10" + { + "name" "cp_dustbowl" + "localizedname" "#TF_Map_cp_dustbowl" + "statsidentifier" "131072" + "strangeprefixtoken" "#TF_Map_Dustbowl_StrangePrefix" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "11" + { + "name" "cp_well" + "localizedname" "#TF_Map_cp_well" + "statsidentifier" "262150" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "12" + { + "name" "ctf_2fort" + "localizedname" "#TF_Map_ctf_2fort" + "statsidentifier" "65536" + "strangeprefixtoken" "#TF_Map_2Fort_StrangePrefix" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + } + "13" + { + "name" "tc_hydro" + "localizedname" "#TF_Map_tc_hydro" + "statsidentifier" "1048578" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "14" + { + "name" "ctf_well" + "localizedname" "#TF_Map_ctf_well" + "statsidentifier" "65540" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + "tags" + { + "map_has_deep_water" "1" + } + } + "15" + { + "name" "pl_goldrush" + "localizedname" "#TF_Map_pl_goldrush" + "statsidentifier" "2" + "strangeprefixtoken" "#TF_Map_Goldrush_StrangePrefix" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "16" + { + "name" "cp_fastlane" + "localizedname" "#TF_Fastlane" + "statsidentifier" "262147" + "strangeprefixtoken" "#TF_Fastlane_StrangePrefix" + "maptoken" "Map Token Fastlane" + "authors" "#cp_fastlane_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "17" + { + "name" "ctf_turbine" + "localizedname" "#TF_Turbine" + "statsidentifier" "1114125" + "strangeprefixtoken" "#TF_Turbine_StrangePrefix" + "maptoken" "Map Token Turbine" + "authors" "#ctf_turbine_authors" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + } + "18" + { + "name" "pl_badwater" + "localizedname" "#TF_Map_pl_badwater" + "statsidentifier" "1114124" + "strangeprefixtoken" "#TF_Map_Badwater_StrangePrefix" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "19" + { + "name" "cp_steel" + "localizedname" "#TF_Steel" + "statsidentifier" "131078" + "strangeprefixtoken" "#TF_Steel_StrangePrefix" + "maptoken" "Map Token Steel" + "authors" "#cp_steel_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "20" + { + "name" "cp_egypt_final" + "localizedname" "#TF_Egypt" + "statsidentifier" "131073" + "strangeprefixtoken" "#TF_Egypt_StrangePrefix" + "maptoken" "Map Token Egypt" + "authors" "#cp_egypt_final_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "21" + { + "name" "cp_junction_final" + "localizedname" "#TF_Junction" + "statsidentifier" "131076" + "strangeprefixtoken" "#TF_Junction_StrangePrefix" + "maptoken" "Map Token Junction" + "authors" "#cp_junction_final_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "22" + { + "name" "plr_pipeline" + "localizedname" "#TF_Map_plr_pipeline" + "statsidentifier" "327681" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "plr" "1" + } + "rolling_match_target_tags" + { + "plr" "1" + } + } + "23" + { + "name" "pl_hoodoo_final" + "localizedname" "#TF_Hoodoo" + "statsidentifier" "3" + "strangeprefixtoken" "#TF_Hoodoo_StrangePrefix" + "maptoken" "Map Token Hoodoo" + "authors" "#pl_hoodoo_final_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "24" + { + "name" "koth_sawmill" + "localizedname" "#TF_Map_koth_sawmill" + "statsidentifier" "196612" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "25" + { + "name" "koth_nucleus" + "localizedname" "#TF_Map_koth_nucleus" + "statsidentifier" "196611" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "26" + { + "name" "ctf_sawmill" + "localizedname" "#TF_Map_ctf_sawmill" + "statsidentifier" "65538" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + "tags" + { + "map_has_deep_water" "1" + } + } + "27" + { + "name" "cp_yukon_final" + "localizedname" "#TF_Yukon" + "statsidentifier" "262151" + "strangeprefixtoken" "#TF_Yukon_StrangePrefix" + "maptoken" "Map Token Yukon" + "authors" "#cp_yukon_final_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "28" + { + "name" "koth_harvest_final" + "localizedname" "#TF_Harvest" + "statsidentifier" "196609" + "strangeprefixtoken" "#TF_Harvest_StrangePrefix" + "maptoken" "Map Token Harvest" + "authors" "#koth_harvest_final_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "29" + { + "name" "ctf_doublecross" + "localizedname" "#TF_Map_ctf_doublecross" + "statsidentifier" "65537" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + } + "30" + { + "name" "cp_freight_final1" + "localizedname" "#TF_Freight" + "statsidentifier" "262148" + "strangeprefixtoken" "#TF_Freight_StrangePrefix" + "maptoken" "Map Token Freight" + "authors" "#cp_freight_final1_authors" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "31" + { + "name" "pl_upward" + "localizedname" "#TF_Map_pl_upward" + "statsidentifier" "5" + "strangeprefixtoken" "#TF_Map_Upward_StrangePrefix" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "32" + { + "name" "plr_hightower" + "localizedname" "#TF_Map_plr_hightower" + "statsidentifier" "327680" + "strangeprefixtoken" "#TF_Map_Hightower_StrangePrefix" + "rolling_match_tags" + { + "plr" "1" + } + "rolling_match_target_tags" + { + "plr" "1" + } + } + "33" + { + "name" "pl_thundermountain" + "localizedname" "#TF_Map_pl_thundermountain" + "statsidentifier" "4" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "34" + { + "name" "cp_coldfront" + "localizedname" "#TF_Coldfront" + "statsidentifier" "262146" + "strangeprefixtoken" "#TF_Coldfront_StrangePrefix" + "maptoken" "Map Token Coldfront" + "authors" "#cp_coldfront_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "35" + { + "name" "cp_mountainlab" + "localizedname" "#TF_MountainLab" + "statsidentifier" "131077" + "strangeprefixtoken" "#TF_MountainLab_StrangePrefix" + "maptoken" "Map Token Mountain Lab" + "authors" "#cp_mountainlab_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "36" + { + "name" "cp_degrootkeep" + "localizedname" "#TF_Map_cp_degrootkeep" + "statsidentifier" "1048579" + "strangeprefixtoken" "#TF_Map_DegrootKeep_StrangePrefix" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "37" + { + "name" "cp_5gorge" + "localizedname" "#TF_Map_cp_5gorge" + "statsidentifier" "262144" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "38" + { + "name" "pl_frontier_final" + "localizedname" "#TF_Frontier" + "statsidentifier" "1" + "strangeprefixtoken" "#TF_Frontier_StrangePrefix" + "maptoken" "Map Token Frontier" + "authors" "#pl_frontier_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "39" + { + "name" "plr_nightfall_final" + "localizedname" "#TF_Nightfall" + "statsidentifier" "327682" + "strangeprefixtoken" "#TF_Nightfall_StrangePrefix" + "maptoken" "Map Token Nightfall" + "authors" "#plr_nightfall_authors" + "rolling_match_tags" + { + "plr" "1" + } + "rolling_match_target_tags" + { + "plr" "1" + } + } + "40" + { + "name" "koth_lakeside_final" + "localizedname" "#TF_Lakeside" + "statsidentifier" "196610" + "strangeprefixtoken" "#TF_Lakeside_StrangePrefix" + "maptoken" "Map Token Lakeside" + "authors" "#koth_lakeside_authors" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "41" + { + "name" "koth_badlands" + "localizedname" "#TF_Map_koth_badlands" + "statsidentifier" "196608" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "42" + { + "name" "pl_barnblitz" + "localizedname" "#TF_Map_pl_barnblitz" + "statsidentifier" "6" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "43" + { + "name" "sd_doomsday" + "localizedname" "#TF_Map_sd_doomsday" + "statsidentifier" "1048576" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "44" + { + "name" "koth_king" + "localizedname" "#TF_KongKing" + "statsidentifier" "196614" + "strangeprefixtoken" "#TF_KongKing_StrangePrefix" + "maptoken" "Map Token Kong King" + "authors" "#koth_king_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "45" + { + "name" "cp_standin_final" + "localizedname" "#TF_Map_Standin" + "statsidentifier" "262155" + "strangeprefixtoken" "#TF_Map_Standin_StrangePrefix" + "maptoken" "Map Token Standin" + "authors" "#cp_standin_final_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "46" + { + "name" "cp_process_final" + "localizedname" "#TF_Map_Process" + "statsidentifier" "1114112" + "strangeprefixtoken" "#TF_Map_Process_StrangePrefix" + "maptoken" "Map Token Process" + "authors" "#cp_process_final_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "47" + { + "name" "cp_sunshine" + "localizedname" "#TF_Map_Sunshine" + "statsidentifier" "1114121" + "strangeprefixtoken" "#TF_Map_Sunshine_StrangePrefix" + "maptoken" "Map Token Sunshine" + "authors" "#cp_sunshine_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "48" + { + "name" "cp_metalworks" + "localizedname" "#TF_Map_Metalworks" + "statsidentifier" "1114122" + "strangeprefixtoken" "#TF_Map_Metalworks_StrangePrefix" + "maptoken" "Map Token Metalworks" + "authors" "#cp_metalworks_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "49" + { + "name" "pl_swiftwater_final1" + "localizedname" "#TF_Map_Swiftwater" + "statsidentifier" "1114123" + "strangeprefixtoken" "#TF_Map_Swiftwater_StrangePrefix" + "maptoken" "Map Token Swiftwater" + "authors" "#pl_swiftwater_final1_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "50" + { + "name" "pass_brickyard" + "localizedname" "#TF_Map_pass_brickyard" + "statsidentifier" "917504" + "rolling_match_tags" + { + "passtime" "1" + } + "rolling_match_target_tags" + { + "passtime" "1" + } + } + "51" + { + "name" "pass_timbertown" + "localizedname" "#TF_Map_pass_timbertown" + "statsidentifier" "917505" + "rolling_match_tags" + { + "passtime" "1" + } + "rolling_match_target_tags" + { + "passtime" "1" + } + } + "52" + { + "name" "pass_district" + "localizedname" "#TF_Map_pass_district" + "statsidentifier" "917506" + "rolling_match_tags" + { + "passtime" "1" + } + "rolling_match_target_tags" + { + "passtime" "1" + } + } + "53" + { + "name" "ctf_landfall" + "localizedname" "#TF_Map_Landfall" + "statsidentifier" "851974" + "strangeprefixtoken" "#TF_Map_Landfall_StrangePrefix" + "maptoken" "Map Token Landfall" + "authors" "#ctf_landfall_authors" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + } + "54" + { + "name" "cp_snowplow" + "localizedname" "#TF_Map_Snowplow" + "statsidentifier" "1048580" + "strangeprefixtoken" "#TF_Map_Snowplow_StrangePrefix" + "maptoken" "Map Token Snowplow" + "authors" "#cp_snowplow_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "55" + { + "name" "ctf_2fort_invasion" + "localizedname" "#TF_Map_2FortInv" + "statsidentifier" "983040" + "strangeprefixtoken" "#TF_Map_2FortInv_StrangePrefix" + "maptoken" "Map Token 2Fort Invasion" + "authors" "#ctf_2fort_invasion_authors" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + "tags" + { + "map_has_deep_water" "1" + } + } + "56" + { + "name" "cp_powerhouse" + "localizedname" "#TF_Map_cp_powerhouse" + "statsidentifier" "851971" + "tags" + { + "map_has_deep_water" "1" + } + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "57" + { + "name" "koth_suijin" + "localizedname" "#TF_Map_Suijin" + "statsidentifier" "851970" + "strangeprefixtoken" "#TF_Map_Suijin_StrangePrefix" + "maptoken" "Map Token Suijin" + "authors" "#koth_suijin_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "58" + { + "name" "koth_probed" + "localizedname" "#TF_Map_Probed" + "statsidentifier" "983043" + "strangeprefixtoken" "#TF_Map_Probed_StrangePrefix" + "maptoken" "Map Token Probed" + "authors" "#koth_probed_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "59" + { + "name" "koth_highpass" + "localizedname" "#TF_Map_Highpass" + "statsidentifier" "851975" + "strangeprefixtoken" "#TF_Map_Highpass_StrangePrefix" + "maptoken" "Map Token Highpass" + "authors" "#koth_highpass_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "60" + { + "name" "pl_cactuscanyon" + "localizedname" "TF_Map_pl_cactuscanyon" + "statsidentifier" "7" + "tags" + { + "beta" "1" + } + } + "61" + { + "name" "pl_borneo" + "localizedname" "#TF_Map_Borneo" + "statsidentifier" "851969" + "strangeprefixtoken" "#TF_Map_Borneo_StrangePrefix" + "maptoken" "Map Token Borneo" + "authors" "#pl_borneo_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "62" + { + "name" "pl_snowycoast" + "localizedname" "#TF_Map_Snowycoast" + "statsidentifier" "851972" + "strangeprefixtoken" "#TF_Map_Snowycoast_StrangePrefix" + "maptoken" "Map Token Snowycoast" + "authors" "#pl_snowycoast_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "63" + { + "name" "pd_watergate" + "localizedname" "#TF_Map_Watergate" + "statsidentifier" "1048577" + "strangeprefixtoken" "#TF_Map_Watergate_StrangePrefix" + "maptoken" "Map Token Watergate" + "authors" "#pd_watergate_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "64" + { + "name" "arena_watchtower" + "localizedname" "#TF_WatchTower" + "statsidentifier" "655360" + "strangeprefixtoken" "#TF_WatchTower_StrangePrefix" + "maptoken" "Map Token Watchtower" + "authors" "#arena_watchtower_authors" + } + "65" + { + "name" "arena_offblast_final" + "localizedname" "#TF_Offblast" + "statsidentifier" "655361" + "strangeprefixtoken" "#TF_Offblast_StrangePrefix" + "maptoken" "Map Token Offblast" + "authors" "#arena_offblast_final_authors" + } + "66" + { + "name" "arena_badlands" + "localizedname" "#TF_Map_arena_badlands" + "statsidentifier" "655362" + "tags" + { + "map_has_deep_water" "1" + } + } + "67" + { + "name" "arena_granary" + "localizedname" "#TF_Map_arena_granary" + "statsidentifier" "655363" + } + "68" + { + "name" "arena_lumberyard" + "localizedname" "#TF_Map_arena_lumberyard" + "statsidentifier" "655364" + } + "69" + { + "name" "arena_nucleus" + "localizedname" "#TF_Map_arena_nucleus" + "statsidentifier" "655365" + } + "70" + { + "name" "arena_ravine" + "localizedname" "#TF_Map_arena_ravine" + "statsidentifier" "655366" + "tags" + { + "map_has_deep_water" "1" + } + } + "71" + { + "name" "arena_sawmill" + "localizedname" "#TF_Map_arena_sawmill" + "statsidentifier" "655367" + "tags" + { + "map_has_deep_water" "1" + } + } + "72" + { + "name" "arena_well" + "localizedname" "#TF_Map_arena_well" + "statsidentifier" "655368" + "tags" + { + "map_has_deep_water" "1" + } + } + "73" + { + "name" "arena_byre" + "localizedname" "#TF_Map_Byre" + "statsidentifier" "983042" + "strangeprefixtoken" "#TF_Map_Byre_StrangePrefix" + "maptoken" "Map Token Byre" + "authors" "#arena_byre_authors" + } + "74" + { + "name" "cp_gorge_event" + "localizedname" "#TF_Map_GorgeEvent" + "statsidentifier" "1245190" + "strangeprefixtoken" "#TF_Map_GorgeEvent_StrangePrefix" + "maptoken" "Map Token Gorge Event" + "authors" "#cp_gorge_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "75" + { + "name" "cp_sunshine_event" + "localizedname" "#TF_Map_SunshineEvent" + "statsidentifier" "1245191" + "strangeprefixtoken" "#TF_Map_SunshineEvent_StrangePrefix" + "maptoken" "Map Token Sunshine Event" + "authors" "#cp_sunshine_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "76" + { + "name" "koth_moonshine_event" + "localizedname" "#TF_Map_MoonshineEvent" + "statsidentifier" "1245192" + "strangeprefixtoken" "#TF_Map_MoonshineEvent_StrangePrefix" + "maptoken" "Map Token Moonshine Event" + "authors" "#koth_moonshine_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "77" + { + "name" "pl_millstone_event" + "localizedname" "#TF_Map_MillstoneEvent" + "statsidentifier" "1245193" + "strangeprefixtoken" "#TF_Map_MillstoneEvent_StrangePrefix" + "maptoken" "Map Token Millstone Event" + "authors" "#pl_millstone_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "78" + { + "name" "koth_viaduct_event" + "localizedname" "#TF_Map_koth_viaduct_event" + "statsidentifier" "1245186" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "79" + { + "name" "cp_manor_event" + "localizedname" "#TF_ManorEvent" + "statsidentifier" "1245185" + "strangeprefixtoken" "#TF_ManorEvent_StrangePrefix" + "maptoken" "Map Token Manor Event" + "authors" "#cp_manor_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "80" + { + "name" "koth_harvest_event" + "localizedname" "#TF_Map_koth_harvest_event" + "statsidentifier" "1245184" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "81" + { + "name" "koth_lakeside_event" + "localizedname" "#TF_Map_koth_lakeside_event" + "statsidentifier" "1245187" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "82" + { + "name" "plr_hightower_event" + "localizedname" "#TF_Map_plr_hightower_event" + "statsidentifier" "1245188" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "83" + { + "name" "sd_doomsday_event" + "localizedname" "#TF_Map_sd_doomsday_event" + "statsidentifier" "1245189" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "84" + { + "name" "rd_asteroid" + "localizedname" "#TF_Map_rd_asteroid" + "statsidentifier" "720896" + "tags" + { + "beta" "1" + } + } + "85" + { + "name" "ctf_foundry" + "localizedname" "#TF_Map_powerup_ctf_foundry" + "statsidentifier" "786432" + "rolling_match_tags" + { + "mannpower" "1" + } + "rolling_match_target_tags" + { + "mannpower" "1" + } + } + "86" + { + "name" "ctf_gorge" + "localizedname" "#TF_Map_powerup_ctf_gorge" + "statsidentifier" "786433" + "rolling_match_tags" + { + "mannpower" "1" + } + "rolling_match_target_tags" + { + "mannpower" "1" + } + } + "87" + { + "name" "ctf_thundermountain" + "localizedname" "#TF_Map_powerup_ctf_thundermountain" + "statsidentifier" "786434" + "strangeprefixtoken" "#TF_Map_ThunderMountain_StrangePrefix" + "rolling_match_tags" + { + "mannpower" "1" + } + "rolling_match_target_tags" + { + "mannpower" "1" + } + } + "88" + { + "name" "ctf_hellfire" + "localizedname" "#TF_Map_powerup_ctf_hellfire" + "statsidentifier" "786435" + "rolling_match_tags" + { + "mannpower" "1" + } + "rolling_match_target_tags" + { + "mannpower" "1" + } + } + "89" + { + "name" "mvm_ghost_town" + "localizedname" "#TF_MVM_Map_Ghost_Town" + "statsidentifier" "5832704" + } + "90" + { + "name" "mvm_mannhattan" + "localizedname" "#TF_MVM_Map_Mannhattan" + "statsidentifier" "5898240" + "strangeprefixtoken" "#TF_Map_Mannhattan_StrangePrefix" + } + "91" + { + "name" "mvm_rottenburg" + "localizedname" "#TF_MVM_Map_Rottenburg" + "statsidentifier" "5963776" + } + "92" + { + "name" "mvm_bigrock" + "localizedname" "#TF_MVM_Map_Bigrock" + "statsidentifier" "6029312" + } + "93" + { + "name" "mvm_decoy" + "localizedname" "#TF_MVM_Map_Decoy" + "statsidentifier" "6094848" + } + "94" + { + "name" "mvm_coaltown" + "localizedname" "#TF_MVM_Map_CoalTown" + "statsidentifier" "6160384" + "strangeprefixtoken" "#TF_Map_Coaltown_StrangePrefix" + } + "95" + { + "name" "mvm_mannworks" + "localizedname" "#TF_MVM_Map_Mannworks" + "statsidentifier" "6225920" + } + "96" + { + "name" "tr_dustbowl" + "localizedname" "#TF_Map_tr_dustbowl" + "statsidentifier" "6291456" + } + "97" + { + "name" "tr_target" + "localizedname" "#TF_Map_tr_target" + "statsidentifier" "6356992" + } + "98" + { + "name" "koth_maple_ridge_event" + "localizedname" "#TF_Map_MapleRidgeEvent" + "statsidentifier" "1245194" + "strangeprefixtoken" "#TF_Map_MapleRidgeEvent_StrangePrefix" + "maptoken" "Map Token Maple Ridge Event" + "authors" "#koth_maple_ridge_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "99" + { + "name" "pl_fifthcurve_event" + "localizedname" "#TF_Map_FifthCurveEvent" + "statsidentifier" "1245195" + "strangeprefixtoken" "#TF_Map_Brimstone_StrangePrefix" + "maptoken" "Map Token Fifth Curve Event" + "authors" "#pl_fifthcurve_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "100" + { + "name" "pd_pit_of_death_event" + "localizedname" "#TF_Map_PitOfDeath" + "statsidentifier" "1245196" + "strangeprefixtoken" "#TF_Map_PitOfDeath_StrangePrefix" + "maptoken" "Map Token Pit Of Death" + "authors" "#pd_pit_of_death_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "101" + { + "name" "cp_mercenarypark" + "localizedname" "#TF_Map_cp_mercenarypark" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "102" + { + "name" "cp_mossrock" + "localizedname" "#TF_Map_Mossrock" + "strangeprefixtoken" "#TF_Map_Mossrock_StrangePrefix" + "maptoken" "Map Token Mossrock" + "authors" "#cp_mossrock_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "103" + { + "name" "koth_lazarus" + "localizedname" "#TF_Map_Lazarus" + "strangeprefixtoken" "#TF_Map_Lazarus_StrangePrefix" + "maptoken" "Map Token Lazarus" + "authors" "#koth_lazarus_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "104" + { + "name" "plr_bananabay" + "localizedname" "#TF_Map_BananaBay" + "strangeprefixtoken" "#TF_Map_BananaBay_StrangePrefix" + "maptoken" "Map Token Banana Bay" + "authors" "#plr_bananabay_authors" + "rolling_match_tags" + { + "plr" "1" + } + "rolling_match_target_tags" + { + "plr" "1" + } + } + "105" + { + "name" "pl_enclosure_final" + "localizedname" "#TF_Map_Enclosure" + "strangeprefixtoken" "#TF_Map_Enclosure_StrangePrefix" + "maptoken" "Map Token Enclosure" + "authors" "#pl_enclosure_final_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "106" + { + "name" "koth_brazil" + "localizedname" "#TF_Map_Brazil" + "strangeprefixtoken" "#TF_Map_Brazil_StrangePrefix" + "maptoken" "Map Token Brazil" + "authors" "#koth_brazil_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "107" + { + "name" "koth_bagel_event" + "localizedname" "#TF_Map_BagelEvent" + "strangeprefixtoken" "#TF_Map_BagelEvent_StrangePrefix" + "maptoken" "Map Token Bagel Event" + "authors" "#koth_bagel_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "108" + { + "name" "pl_rumble_event" + "localizedname" "#TF_Map_RumbleEvent" + "strangeprefixtoken" "#TF_Map_RumbleEvent_StrangePrefix" + "maptoken" "Map Token Rumble Event" + "authors" "#pl_rumble_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "109" + { + "name" "pd_monster_bash" + "localizedname" "#TF_Map_MonsterBash" + "strangeprefixtoken" "#TF_Map_MonsterBash_StrangePrefix" + "maptoken" "Map Token Monster Bash" + "authors" "#pd_monster_bash_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "110" + { + "name" "koth_slasher" + "localizedname" "#TF_Map_Slasher" + "strangeprefixtoken" "#TF_Map_Slasher_StrangePrefix" + "maptoken" "Map Token Slasher" + "authors" "#koth_slasher_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "111" + { + "name" "pd_cursed_cove_event" + "localizedname" "#TF_Map_CursedCove" + "strangeprefixtoken" "#TF_Map_CursedCove_StrangePrefix" + "maptoken" "Map Token Cursed Cove" + "authors" "#pd_cursed_cove_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "112" + { + "name" "koth_slaughter_event" + "localizedname" "#TF_Map_Laughter" + "strangeprefixtoken" "#TF_Map_Laughter_StrangePrefix" + "maptoken" "Map Token Laughter" + "authors" "#koth_slaughter_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "113" + { + "name" "pl_precipice_event_final" + "localizedname" "#TF_Map_Precipice" + "strangeprefixtoken" "#TF_Map_Precipice_StrangePrefix" + "maptoken" "Map Token Precipice" + "authors" "#pl_precipice_event_final_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "114" + { + "name" "koth_megalo" + "localizedname" "#TF_Map_Megalo" + "strangeprefixtoken" "#TF_Map_Megalo_StrangePrefix" + "maptoken" "Map Token Megalo" + "authors" "#koth_megalo_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "115" + { + "name" "pl_hasslecastle" + "localizedname" "#TF_Map_HassleCastle" + "strangeprefixtoken" "#TF_Map_HassleCastle_StrangePrefix" + "maptoken" "Map Token Hassle Castle" + "authors" "#pl_hasslecastle_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "116" + { + "name" "pl_bloodwater" + "localizedname" "#TF_Map_Bloodwater" + "strangeprefixtoken" "#TF_Map_Bloodwater_StrangePrefix" + "maptoken" "Map Token Bloodwater" + "authors" "#pl_bloodwater_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "117" + { + "name" "koth_undergrove_event" + "localizedname" "#TF_Map_UndergroveEvent" + "strangeprefixtoken" "#TF_Map_UndergroveEvent_StrangePrefix" + "maptoken" "Map Token Undergrove Event" + "authors" "#koth_undergrove_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "118" + { + "name" "pl_pier" + "localizedname" "#TF_Map_Pier" + "strangeprefixtoken" "#TF_Map_Pier_StrangePrefix" + "maptoken" "Map Token Pier" + "authors" "#pl_pier_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "119" + { + "name" "pd_snowville_event" + "localizedname" "#TF_Map_SnowVille" + "strangeprefixtoken" "#TF_Map_SnowVille_StrangePrefix" + "maptoken" "Map Token SnowVille" + "authors" "#pd_snowville_event_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "120" + { + "name" "ctf_snowfall_final" + "localizedname" "#TF_Map_Snowfall" + "strangeprefixtoken" "#TF_Map_Snowfall_StrangePrefix" + "maptoken" "Map Token Snowfall" + "authors" "#ctf_snowfall_final_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "121" + { + "name" "pl_wutville_event" + "localizedname" "#TF_Map_Wutville" + "strangeprefixtoken" "#TF_Map_Wutville_StrangePrefix" + "maptoken" "Map Token Wutville" + "authors" "#pl_wutville_event_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "122" + { + "name" "pd_farmageddon" + "localizedname" "#TF_Map_Farmageddon" + "strangeprefixtoken" "#TF_Map_Farmageddon_StrangePrefix" + "maptoken" "Map Token Farmageddon" + "authors" "#pd_farmageddon_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "123" + { + "name" "koth_los_muertos" + "localizedname" "#TF_Map_LosMuertos" + "strangeprefixtoken" "#TF_Map_LosMuertos_StrangePrefix" + "maptoken" "Map Token Los Muertos" + "authors" "#koth_los_muertos_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "124" + { + "name" "cp_ambush_event" + "localizedname" "#TF_Map_Erebus" + "strangeprefixtoken" "#TF_Map_Erebus_StrangePrefix" + "maptoken" "Map Token Erebus" + "authors" "#cp_ambush_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "125" + { + "name" "pl_terror_event" + "localizedname" "#TF_Map_Terror" + "strangeprefixtoken" "#TF_Map_Terror_StrangePrefix" + "maptoken" "Map Token Terror" + "authors" "#pl_terror_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "126" + { + "name" "arena_lumberyard_event" + "localizedname" "#TF_Map_Graveyard" + "strangeprefixtoken" "#TF_Map_Graveyard_StrangePrefix" + "maptoken" "Map Token Graveyard" + "authors" "#arena_lumberyard_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "127" + { + "name" "koth_synthetic_event" + "localizedname" "#TF_Map_Sinthetic" + "strangeprefixtoken" "#TF_Map_Sinthetic_StrangePrefix" + "maptoken" "Map Token Sinthetic" + "authors" "#koth_synthetic_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "128" + { + "name" "pl_coal_event" + "localizedname" "#TF_Map_Polar" + "strangeprefixtoken" "#TF_Map_Polar_StrangePrefix" + "maptoken" "Map Token Polar" + "authors" "#pl_coal_event_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "129" + { + "name" "pl_breadspace" + "localizedname" "#TF_Map_BreadSpace" + "strangeprefixtoken" "#TF_Map_BreadSpace_StrangePrefix" + "maptoken" "Map Token Bread Space" + "authors" "#pl_breadspace_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "130" + { + "name" "pl_chilly" + "localizedname" "#TF_Map_Chilly" + "strangeprefixtoken" "#TF_Map_Chilly_StrangePrefix" + "maptoken" "Map Token Chilly" + "authors" "#pl_chilly_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "131" + { + "name" "koth_cascade" + "localizedname" "#TF_Map_Cascade" + "strangeprefixtoken" "#TF_Map_Cascade_StrangePrefix" + "maptoken" "Map Token Cascade" + "authors" "#koth_cascade_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "132" + { + "name" "cp_altitude" + "localizedname" "#TF_Map_Altitude" + "strangeprefixtoken" "#TF_Map_Altitude_StrangePrefix" + "maptoken" "Map Token Altitude" + "authors" "#cp_altitude_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "133" + { + "name" "ctf_doublecross_snowy" + "localizedname" "#TF_Map_Doublefrost" + "strangeprefixtoken" "#TF_Map_Doublefrost_StrangePrefix" + "maptoken" "Map Token Doublefrost" + "authors" "#ctf_doublecross_snowy_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "134" + { + "name" "koth_sawmill_event" + "localizedname" "#TF_Map_SoulMill" + "strangeprefixtoken" "#TF_Map_SoulMill_StrangePrefix" + "maptoken" "Map Token Soul Mill" + "authors" "#koth_sawmill_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "135" + { + "name" "ctf_helltrain_event" + "localizedname" "#TF_Map_Helltrain" + "strangeprefixtoken" "#TF_Map_Helltrain_StrangePrefix" + "maptoken" "Map Token Helltrain" + "authors" "#ctf_helltrain_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "136" + { + "name" "plr_hacksaw_event" + "localizedname" "#TF_Map_Bonesaw" + "strangeprefixtoken" "#TF_Map_Bonesaw_StrangePrefix" + "maptoken" "Map Token Bonesaw" + "authors" "#plr_hacksaw_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "137" + { + "name" "ctf_crasher" + "localizedname" "#TF_Map_Crasher" + "strangeprefixtoken" "#TF_Map_Crasher_StrangePrefix" + "maptoken" "Map Token Crasher" + "authors" "#ctf_crasher_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "138" + { + "name" "pl_sludgepit_event" + "localizedname" "#TF_Map_Ghoulpit" + "strangeprefixtoken" "#TF_Map_Ghoulpit_StrangePrefix" + "maptoken" "Map Token Ghoulpit" + "authors" "#pl_sludgepit_event_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "139" + { + "name" "cp_spookeyridge" + "localizedname" "#TF_Map_Spookeyridge" + "strangeprefixtoken" "#TF_Map_Spookeyridge_StrangePrefix" + "maptoken" "Map Token Spookeyridge" + "authors" "#cp_spookeyridge_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "140" + { + "name" "cp_frostwatch" + "localizedname" "#TF_Map_Frostwatch" + "strangeprefixtoken" "#TF_Map_Frostwatch_StrangePrefix" + "maptoken" "Map Token Frostwatch" + "authors" "#cp_frostwatch_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "141" + { + "name" "pl_frostcliff" + "localizedname" "#TF_Map_Frostcliff" + "strangeprefixtoken" "#TF_Map_Frostcliff_StrangePrefix" + "maptoken" "Map Token Frostcliff" + "authors" "#pl_frostcliff_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "142" + { + "name" "pl_rumford_event" + "localizedname" "#TF_Map_Rumford" + "strangeprefixtoken" "#TF_Map_Rumford_StrangePrefix" + "maptoken" "Map Token Rumford" + "authors" "#pl_rumford_event_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "143" + { + "name" "ctf_frosty" + "localizedname" "#TF_Map_Frosty" + "strangeprefixtoken" "#TF_Map_Frosty_StrangePrefix" + "maptoken" "Map Token Frosty" + "authors" "#ctf_frosty_authors" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + } + "144" + { + "name" "cp_gravelpit_snowy" + "localizedname" "#TF_Map_CoalPit" + "strangeprefixtoken" "#TF_Map_CoalPit_StrangePrefix" + "maptoken" "Map Token Coal Pit" + "authors" "#cp_gravelpit_snowy_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "145" + { + "name" "koth_sharkbay" + "localizedname" "#TF_Map_Sharkbay" + "strangeprefixtoken" "#TF_Map_Sharkbay_StrangePrefix" + "maptoken" "Map Token Sharkbay" + "authors" "#koth_sharkbay_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "146" + { + "name" "koth_rotunda" + "localizedname" "#TF_Map_Rotunda" + "strangeprefixtoken" "#TF_Map_Rotunda_StrangePrefix" + "maptoken" "Map Token Rotunda" + "authors" "#koth_rotunda_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "147" + { + "name" "pl_phoenix" + "localizedname" "#TF_Map_Phoenix" + "strangeprefixtoken" "#TF_Map_Phoenix_StrangePrefix" + "maptoken" "Map Token Phoenix" + "authors" "#pl_phoenix_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "148" + { + "name" "pl_cashworks" + "localizedname" "#TF_Map_Cashworks" + "strangeprefixtoken" "#TF_Map_Cashworks_StrangePrefix" + "maptoken" "Map Token Cashworks" + "authors" "#pl_cashworks_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "149" + { + "name" "pl_venice" + "localizedname" "#TF_Map_Venice" + "strangeprefixtoken" "#TF_Map_Venice_StrangePrefix" + "maptoken" "Map Token Venice" + "authors" "#pl_venice_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "150" + { + "name" "cp_reckoner" + "localizedname" "#TF_Map_Reckoner" + "strangeprefixtoken" "#TF_Map_Reckoner_StrangePrefix" + "maptoken" "Map Token Reckoner" + "authors" "#cp_reckoner_authors" + "rolling_match_tags" + { + "cp" "1" + } + "rolling_match_target_tags" + { + "cp" "1" + } + } + "151" + { + "name" "cp_sulfur" + "localizedname" "#TF_Map_Sulfur" + "strangeprefixtoken" "#TF_Map_Sulfur_StrangePrefix" + "maptoken" "Map Token Sulfur" + "authors" "#cp_sulfur_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "152" + { + "name" "cp_hardwood_final" + "localizedname" "#TF_Map_Hardwood" + "strangeprefixtoken" "#TF_Map_Hardwood_StrangePrefix" + "maptoken" "Map Token Hardwood" + "authors" "#cp_hardwood_final_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "153" + { + "name" "ctf_pelican_peak" + "localizedname" "#TF_Map_PelicanPeak" + "strangeprefixtoken" "#TF_Map_PelicanPeak_StrangePrefix" + "maptoken" "Map Token Pelican Peak" + "authors" "#ctf_pelican_peak_authors" + "rolling_match_tags" + { + "ctf" "1" + } + "rolling_match_target_tags" + { + "ctf" "1" + } + } + "154" + { + "name" "pd_selbyen" + "localizedname" "#TF_Map_Selbyen" + "strangeprefixtoken" "#TF_Map_Selbyen_StrangePrefix" + "maptoken" "Map Token Selbyen" + "authors" "#pd_selbyen_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "155" + { + "name" "vsh_tinyrock" + "localizedname" "#TF_Map_TinyRock" + "strangeprefixtoken" "#TF_Map_TinyRock_StrangePrefix" + "maptoken" "Map Token VSH Tiny Rock" + "authors" "#vsh_tinyrock_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "156" + { + "name" "vsh_distillery" + "localizedname" "#TF_Map_Distillery" + "strangeprefixtoken" "#TF_Map_Distillery_StrangePrefix" + "maptoken" "Map Token VSH Distillery" + "authors" "#vsh_distillery_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "157" + { + "name" "vsh_skirmish" + "localizedname" "#TF_Map_Skirmish" + "strangeprefixtoken" "#TF_Map_Skirmish_StrangePrefix" + "maptoken" "Map Token VSH Skirmish" + "authors" "#vsh_skirmish_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "158" + { + "name" "vsh_nucleus" + "localizedname" "#TF_Map_Nucleus" + "strangeprefixtoken" "#TF_Map_Nucleus_StrangePrefix" + "maptoken" "Map Token VSH Nucleus" + "authors" "#vsh_nucleus_authors" + "rolling_match_tags" + { + "misc" "1" + } + "rolling_match_target_tags" + { + "misc" "1" + } + } + "159" + { + "name" "arena_perks" + "localizedname" "#TF_Map_Perks" + "strangeprefixtoken" "#TF_Map_Perks_StrangePrefix" + "maptoken" "Map Token Perks" + "authors" "#arena_perks_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "160" + { + "name" "koth_slime" + "localizedname" "#TF_Map_Slime" + "strangeprefixtoken" "#TF_Map_Slime_StrangePrefix" + "maptoken" "Map Token Slime" + "authors" "#koth_slime_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "161" + { + "name" "cp_lavapit_final" + "localizedname" "#TF_Map_LavaPit" + "strangeprefixtoken" "#TF_Map_LavaPit_StrangePrefix" + "maptoken" "Map Token Lava Pit" + "authors" "#cp_lavapit_final_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "162" + { + "name" "pd_mannsylvania" + "localizedname" "#TF_Map_Mannsylvania" + "strangeprefixtoken" "#TF_Map_Mannsylvania_StrangePrefix" + "maptoken" "Map Token Mannsylvania" + "authors" "#pd_mannsylvania_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "163" + { + "name" "cp_degrootkeep_rats" + "localizedname" "#TF_Map_Sandcastle" + "strangeprefixtoken" "#TF_Map_Sandcastle_StrangePrefix" + "maptoken" "Map Token Sandcastle" + "authors" "#cp_degrootkeep_rats_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "164" + { + "name" "pl_spineyard" + "localizedname" "#TF_Map_Spineyard" + "strangeprefixtoken" "#TF_Map_Spineyard_StrangePrefix" + "maptoken" "Map Token Spineyard" + "authors" "#pl_spineyard_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "165" + { + "name" "pl_corruption" + "localizedname" "#TF_Map_Corruption" + "strangeprefixtoken" "#TF_Map_Corruption_StrangePrefix" + "maptoken" "Map Token Corruption" + "authors" "#pl_corruption_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "166" + { + "name" "zi_murky" + "localizedname" "#TF_Map_Murky" + "strangeprefixtoken" "#TF_Map_Murky_StrangePrefix" + "maptoken" "Map Token Murky" + "authors" "#zi_murky_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "167" + { + "name" "zi_atoll" + "localizedname" "#TF_Map_Atoll" + "strangeprefixtoken" "#TF_Map_Atoll_StrangePrefix" + "maptoken" "Map Token Atoll" + "authors" "#zi_atoll_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "168" + { + "name" "zi_woods" + "localizedname" "#TF_Map_Woods" + "strangeprefixtoken" "#TF_Map_Woods_StrangePrefix" + "maptoken" "Map Token Woods" + "authors" "#zi_woods_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "169" + { + "name" "zi_sanitarium" + "localizedname" "#TF_Map_Sanitarium" + "strangeprefixtoken" "#TF_Map_Sanitarium_StrangePrefix" + "maptoken" "Map Token Sanitarium" + "authors" "#zi_sanitarium_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "170" + { + "name" "zi_devastation_final1" + "localizedname" "#TF_Map_Devastation" + "strangeprefixtoken" "#TF_Map_Devastation_StrangePrefix" + "maptoken" "Map Token Devastation" + "authors" "#zi_devastation_final1_authors" + "rolling_match_tags" + { + "halloween" "1" + } + "rolling_match_target_tags" + { + "halloween" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "171" + { + "name" "koth_snowtower" + "localizedname" "#TF_Map_Snowtower" + "strangeprefixtoken" "#TF_Map_Snowtower_StrangePrefix" + "maptoken" "Map Token Snowtower" + "authors" "#koth_snowtower_authors" + "rolling_match_tags" + { + "koth" "1" + } + "rolling_match_target_tags" + { + "koth" "1" + } + } + "172" + { + "name" "koth_krampus" + "localizedname" "#TF_Map_Krampus" + "strangeprefixtoken" "#TF_Map_Krampus_StrangePrefix" + "maptoken" "Map Token Krampus" + "authors" "#koth_krampus_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "173" + { + "name" "ctf_haarp" + "localizedname" "#TF_Map_Haarp" + "strangeprefixtoken" "#TF_Map_Haarp_StrangePrefix" + "maptoken" "Map Token Haarp" + "authors" "#ctf_haarp_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "174" + { + "name" "cp_brew" + "localizedname" "#TF_Map_Brew" + "strangeprefixtoken" "#TF_Map_Brew_StrangePrefix" + "maptoken" "Map Token Brew" + "authors" "#cp_brew_authors" + "rolling_match_tags" + { + "attack_defend" "1" + } + "rolling_match_target_tags" + { + "attack_defend" "1" + } + } + "175" + { + "name" "plr_hacksaw" + "localizedname" "#TF_Map_Hacksaw" + "strangeprefixtoken" "#TF_Map_Hacksaw_StrangePrefix" + "maptoken" "Map Token Hacksaw" + "authors" "#plr_hacksaw_authors" + "rolling_match_tags" + { + "plr" "1" + } + "rolling_match_target_tags" + { + "plr" "1" + } + } + "176" + { + "name" "ctf_turbine_winter" + "localizedname" "#TF_Map_TurbineEvent" + "strangeprefixtoken" "#TF_Map_TurbineEvent_StrangePrefix" + "maptoken" "Map Token Turbine Event" + "authors" "#ctf_turbine_winter_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "177" + { + "name" "cp_carrier" + "localizedname" "#TF_Map_Carrier" + "strangeprefixtoken" "#TF_Map_Carrier_StrangePrefix" + "maptoken" "Map Token Carrier" + "authors" "#cp_carrier_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "178" + { + "name" "pd_galleria" + "localizedname" "#TF_Map_Galleria" + "strangeprefixtoken" "#TF_Map_Galleria_StrangePrefix" + "maptoken" "Map Token Galleria" + "authors" "#pd_galleria_authors" + "rolling_match_tags" + { + "christmas" "1" + } + "rolling_match_target_tags" + { + "christmas" + { + "weight" "1" + } + "featured" + { + "weight" "0.5" + } + } + } + "179" + { + "name" "pl_emerge" + "localizedname" "#TF_Map_Emerge" + "strangeprefixtoken" "#TF_Map_Emerge_StrangePrefix" + "maptoken" "Map Token Emerge" + "authors" "#pl_emerge_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "180" + { + "name" "pl_camber" + "localizedname" "#TF_Map_Camber" + "strangeprefixtoken" "#TF_Map_Camber_StrangePrefix" + "maptoken" "Map Token Camber" + "authors" "#pl_camber_authors" + "rolling_match_tags" + { + "payload" "1" + } + "rolling_match_target_tags" + { + "payload" "1" + } + } + "181" + { + "name" "pl_embargo" + "localizedname" "#TF_Map_Embargo" + "strangeprefixtoken" "#TF_Map_Embargo_StrangePrefix" + "maptoken" "Map Token Embargo" + "authors" "#pl_embargo_authors" + "rolling_match_tags" + { + "payload" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "payload" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "182" + { + "name" "pl_odyssey" + "localizedname" "#TF_Map_Odyssey" + "strangeprefixtoken" "#TF_Map_Odyssey_StrangePrefix" + "maptoken" "Map Token Odyssey" + "authors" "#pl_odyssey_authors" + "rolling_match_tags" + { + "payload" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "payload" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "183" + { + "name" "koth_megaton" + "localizedname" "#TF_Map_Megaton" + "strangeprefixtoken" "#TF_Map_Megaton_StrangePrefix" + "maptoken" "Map Token Megaton" + "authors" "#koth_megaton_authors" + "rolling_match_tags" + { + "koth" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "koth" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "184" + { + "name" "koth_cachoeira" + "localizedname" "#TF_Map_Cachoeira" + "strangeprefixtoken" "#TF_Map_Cachoeira_StrangePrefix" + "maptoken" "Map Token Cachoeira" + "authors" "#koth_cachoeira_authors" + "rolling_match_tags" + { + "koth" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "koth" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "185" + { + "name" "cp_overgrown" + "localizedname" "#TF_Map_Overgrown" + "strangeprefixtoken" "#TF_Map_Overgrown_StrangePrefix" + "maptoken" "Map Token Overgrown" + "authors" "#cp_overgrown_authors" + "rolling_match_tags" + { + "attack_defend" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "attack_defend" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "186" + { + "name" "cp_hadal" + "localizedname" "#TF_Map_Hadal" + "strangeprefixtoken" "#TF_Map_Hadal_StrangePrefix" + "maptoken" "Map Token Hadal" + "authors" "#cp_hadal_authors" + "rolling_match_tags" + { + "attack_defend" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "attack_defend" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "187" + { + "name" "ctf_applejack" + "localizedname" "#TF_Map_Applejack" + "strangeprefixtoken" "#TF_Map_Applejack_StrangePrefix" + "maptoken" "Map Token Applejack" + "authors" "#ctf_applejack_authors" + "rolling_match_tags" + { + "ctf" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "ctf" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "188" + { + "name" "pd_atom_smash" + "localizedname" "#TF_Map_AtomSmash" + "strangeprefixtoken" "#TF_Map_AtomSmash_StrangePrefix" + "maptoken" "Map Token Atom Smash" + "authors" "#pd_atom_smash_authors" + "rolling_match_tags" + { + "misc" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "misc" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "189" + { + "name" "cp_canaveral_5cp" + "localizedname" "#TF_Map_Canaveral" + "strangeprefixtoken" "#TF_Map_Canaveral_StrangePrefix" + "maptoken" "Map Token Canaveral" + "authors" "#cp_canaveral_5cp_authors" + "rolling_match_tags" + { + "cp" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "cp" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } + "190" + { + "name" "cp_burghausen" + "localizedname" "#TF_Map_Burghausen" + "strangeprefixtoken" "#TF_Map_Burghausen_StrangePrefix" + "maptoken" "Map Token Burghausen" + "authors" "#cp_burghausen_authors" + "rolling_match_tags" + { + "misc" "1" + "featured" "1" + } + "rolling_match_target_tags" + { + "misc" + { + "weight" "1" + } + "featured" + { + "weight" "1000" + } + } + } +} + "steam_packages" + { + "16082" + { + "localization_key" "SteamPackage_HA_Council" + } + "16083" + { + "localization_key" "SteamPackage_HA_DarkElves" + } + "16084" + { + "localization_key" "SteamPackage_HA_Dwarves" + } + "16085" + { + "localization_key" "SteamPackage_HA_Tribe" + } + "16086" + { + "localization_key" "SteamPackage_HA_GoldPack" + } + } + "string_lookups" + { + "SPELL: set item tint RGB" + { + "2" "#TF_HalloweenSpell_Paint_1_Attr" + "0" "#TF_HalloweenSpell_Paint_2_Attr" + "1" "#TF_HalloweenSpell_Paint_3_Attr" + "3" "#TF_HalloweenSpell_Paint_4_Attr" + "4" "#TF_HalloweenSpell_Paint_5_Attr" + } + "SPELL: set Halloween footstep type" + { + "1" "#TF_HalloweenSpell_Footprints_1_Attr" + "8421376" "#TF_HalloweenSpell_Footprints_8421376_Attr" + "3100495" "#TF_HalloweenSpell_Footprints_3100495_Attr" + "5322826" "#TF_HalloweenSpell_Footprints_5322826_Attr" + "13595446" "#TF_HalloweenSpell_Footprints_13595446_Attr" + "8208497" "#TF_HalloweenSpell_Footprints_8208497_Attr" + "2" "#TF_HalloweenSpell_Footprints_2_Attr" + } + } + "community_market_item_remaps" + { + "Supply Crate" + { + "Supply Crate 2" "1" + "Supply Crate 3" "1" + } + "Decoder Ring" + { + "Winter Key" "1" + "Summer Key" "1" + "Naughty Winter Key 2011" "1" + "Nice Winter Key 2011" "1" + "Scorched Key" "1" + "Fall Key 2012" "1" + "Eerie Key" "1" + "Naughty Winter Key 2012" "1" + "Nice Winter Key 2012" "1" + } + } + "war_definitions" + { + "0" + { + "name" "Pyro vs Heavy" + "localized_name" "#TF_War_PyroVsHeavy" + "start_time" "2016-01-01 00:00:00" + "end_time" "2016-08-15 00:00:00" + + "sides" + { + "0" + { + "leaderboard_name" "tf_complaunch_war_leaderboard_side_0" + "localized_name" "#TF_War_HeavyVsPyro_SideHeavy" + } + "1" + { + "leaderboard_name" "tf_complaunch_war_leaderboard_side_1" + "localized_name" "#TF_War_HeavyVsPyro_SidePyro" + } + } + } + } +} \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_australium.lua b/gamemodes/tf/gamemode/items/workshop/items_australium.lua similarity index 84% rename from addon/gamemodes/teamfortress/gamemode/items/workshop/items_australium.lua rename to gamemodes/tf/gamemode/items/workshop/items_australium.lua index 191c30ec7..57a4a0184 100644 --- a/addon/gamemodes/teamfortress/gamemode/items/workshop/items_australium.lua +++ b/gamemodes/tf/gamemode/items/workshop/items_australium.lua @@ -5,7 +5,7 @@ } "items" { - "352" + "10000033" { "name" "Australium Flamethrower" "item_class" "tf_weapon_flamethrower" @@ -37,7 +37,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "353" + "10000034" { "name" "Australium Grenade Launcher" "item_class" "tf_weapon_grenadelauncher" @@ -74,7 +74,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "354" + "10000035" { "name" "Australium Knife" "item_class" "tf_weapon_knife" @@ -106,7 +106,7 @@ "mouse_pressed_sound" "ui/item_knife_small_pickup.wav" "drop_sound" "ui/item_metal_weapon_drop.wav" } - "355" + "10000036" { "name" "Australium Medigun" "item_class" "tf_weapon_medigun" @@ -118,7 +118,7 @@ "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_medigun/c_medigun_gold" + "image_inventory" "backpack/weapons/w_models/w_medigun_gold" "image_inventory_size_w" "128" "image_inventory_size_h" "82" "model_player" "models/weapons/c_models/c_medigun/c_medigun.mdl" @@ -138,7 +138,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "356" + "10000037" { "name" "Australium Minigun" "item_class" "tf_weapon_minigun" @@ -175,7 +175,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "358" + "10000038" { "name" "Australium Scattergun" "item_class" "tf_weapon_scattergun" @@ -187,7 +187,7 @@ "baseitem" "1" "min_ilevel" "1" "max_ilevel" "1" - "image_inventory" "backpack/weapons/c_models/c_scattergun_gold" + "image_inventory" "backpack/weapons/w_models/w_scattergun_gold" "image_inventory_size_w" "128" "image_inventory_size_h" "82" "model_player" "models/weapons/c_models/c_scattergun.mdl" @@ -212,7 +212,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "359" + "10000039" { "name" "Australium SMG" "item_class" "tf_weapon_smg" @@ -249,7 +249,7 @@ "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" "drop_sound" "ui/item_light_gun_drop.wav" } - "360" + "10000040" { "name" "Australium Sniper Rifle" "item_class" "tf_weapon_sniperrifle" @@ -286,7 +286,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "361" + "10000041" { "name" "Australium Stickybomb Launcher" "item_class" "tf_weapon_pipebomblauncher" @@ -324,7 +324,7 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } - "362" + "10000042" { "name" "Australium Wrench" "item_class" "tf_weapon_wrench" @@ -356,7 +356,7 @@ "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" "drop_sound" "ui/item_metal_weapon_drop.wav" } - "363" + "10000043" { "name" "Golden Frying Pan" "item_class" "tf_weapon_fryingpan" @@ -421,7 +421,7 @@ "mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav" "drop_sound" "ui/item_metal_weapon_drop.wav" } - "364" + "10000044" { "name" "Australium Ambassador" "item_class" "tf_weapon_revolver" @@ -497,7 +497,7 @@ "mouse_pressed_sound" "ui/item_light_gun_pickup.wav" "drop_sound" "ui/item_light_gun_drop.wav" } - "365" + "10000045" { "name" "Australium Rocket Launcher" "item_class" "tf_weapon_rocketlauncher" @@ -534,6 +534,76 @@ "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" "drop_sound" "ui/item_heavy_gun_drop.wav" } + "10000057" + { + "name" "Australium Black Box" + "item_class" "tf_weapon_rocketlauncher_bbox" + "craft_class" "weapon" + "item_name" "Australium Black Box" + "item_logname" "blackbox" + "item_iconname" "blackbox" + "item_slot" "primary" + "item_quality" "normal" + "baseitem" "1" + "min_ilevel" "1" + "max_ilevel" "1" + "image_inventory" "backpack/workshop/weapons/c_models/c_blackbox/c_blackbox_gold_large" + "image_inventory_size_w" "128" + "image_inventory_size_h" "82" + "model_player" "models/workshop/weapons/c_models/c_blackbox/c_blackbox.mdl" + "attach_to_hands" "1" + "attributes" + { + "material override" + { + "attribute_class" "material_override" + "value" "models/workshop/weapons/c_models/c_blackbox/c_blackbox_gold" + } + "health on radius damage" + { + "attribute_class" "add_health_on_radius_damage" + "value" "20" + } + "clip size penalty" + { + "attribute_class" "mult_clipsize" + "value" "0.75" + } + "disable fancy class select anim" + { + "attribute_class" "disable_fancy_class_select_anim" + "value" "1" + } + } + "used_by_classes" + { + "soldier" "1" + } + "visuals" + { + + "sound_single_shot" "Weapon_RPG_BlackBox.Single" + "sound_burst" "Weapon_RPG_BlackBox.SingleCrit" + "sound_special1" "Weapon_RPG_BlackBox.Explode" + "animation_replacement" + { + "ACT_VM_RELOAD" "ACT_PRIMARY_VM_RELOAD_2" + "ACT_RELOAD_START" "ACT_PRIMARY_RELOAD_START_2" + "ACT_RELOAD_FINISH" "ACT_PRIMARY_RELOAD_FINISH_2" + "ACT_MP_RELOAD_STAND" "ACT_MP_RELOAD_STAND_PRIMARY_2" + "ACT_MP_RELOAD_STAND_LOOP" "ACT_MP_RELOAD_STAND_PRIMARY_2" + "ACT_MP_RELOAD_STAND_END" "ACT_MP_RELOAD_STAND_PRIMARY_END_2" + "ACT_MP_RELOAD_CROUCH" "ACT_MP_RELOAD_CROUCH_PRIMARY_2" + "ACT_MP_RELOAD_CROUCH_END" "ACT_MP_RELOAD_CROUCH_PRIMARY_END_2" + "ACT_MP_RELOAD_CROUCH_LOOP" "ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP_2" + "ACT_MP_RELOAD_AIRWALK" "ACT_MP_RELOAD_AIRWALK_PRIMARY_2" + "ACT_MP_RELOAD_AIRWALK_END" "ACT_MP_RELOAD_AIRWALK_PRIMARY_END_2" + "ACT_MP_RELOAD_AIRWALK_LOOP" "ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP_2" + } + } + "mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav" + "drop_sound" "ui/item_heavy_gun_drop.wav" + } } "attributes" { diff --git a/gamemodes/tf/gamemode/particle_manifest.lua b/gamemodes/tf/gamemode/particle_manifest.lua new file mode 100644 index 000000000..96c9aca1f --- /dev/null +++ b/gamemodes/tf/gamemode/particle_manifest.lua @@ -0,0 +1,116 @@ +util.PrecacheSound( "vox/deeoo.wav" ) +if SERVER then + EmitSound("replay/downloadcomplete.wav",Vector(0,0,0),0,CHAN_REPLACE,1,0,0,100,0,nil) + PrintMessage(HUD_PRINTTALK, "SERVER IS RELOADING THE GAMEMODE DUE TO AN EDIT IN THE GAMEMODE'S CODE - GRAPHICAL OR GAME-BREAKING GLITCHES MAY OCCUR") + PrintMessage(HUD_PRINTCENTER, "SERVER IS RELOADING THE GAMEMODE DUE TO AN EDIT IN THE GAMEMODE'S CODE - GRAPHICAL OR GAME-BREAKING GLITCHES MAY OCCUR") +end +--print("Including TF2 Particles") +AddCSLuaFile() +game.AddParticles("particles/bigboom.pcf") +game.AddParticles("particles/blood_impact.pcf") +game.AddParticles("particles/blood_trail.pcf") +game.AddParticles("particles/bl_killtaunt.pcf") +game.AddParticles("particles/bombinomicon.pcf") +game.AddParticles("particles/buildingdamage.pcf") +game.AddParticles("particles/buildingdamage.pcf") +game.AddParticles("particles/bullet_tracers.pcf") +game.AddParticles("particles/burningplayer.pcf") +game.AddParticles("particles/cig_smoke.pcf") +game.AddParticles("particles/cinefx.pcf") +game.AddParticles("particles/class_fx.pcf") +game.AddParticles("particles/coin_spin.pcf") +game.AddParticles("particles/conc_stars.pcf") +game.AddParticles("particles/crit.pcf") +game.AddParticles("particles/dirty_explode.pcf") +game.AddParticles("particles/disguise.pcf") +game.AddParticles("particles/doomsday_fx.pcf") +game.AddParticles("particles/drg_bison.pcf") +game.AddParticles("particles/drg_cowmangler.pcf") +game.AddParticles("particles/drg_engineer.pcf") +game.AddParticles("particles/drg_pyro.pcf") +game.AddParticles("particles/dxhr_fx.pcf") +game.AddParticles("particles/explosion.pcf") +game.AddParticles("particles/eyeboss.pcf") +game.AddParticles("particles/flag_particles.pcf") +game.AddParticles("particles/flamethrower.pcf") +game.AddParticles("particles/flamethrower_mvm.pcf") +game.AddParticles("particles/halloween.pcf") +game.AddParticles("particles/harbor_fx.pcf") +game.AddParticles("particles/highfive.pcf") +game.AddParticles("particles/impact_fx.pcf") +game.AddParticles("particles/items_demo.pcf") +game.AddParticles("particles/items_engineer.pcf") +game.AddParticles("particles/item_fx.pcf") +game.AddParticles("particles/level_fx.pcf") +game.AddParticles("particles/medicgun_attrib.pcf") +game.AddParticles("particles/medicgun_beam.pcf") +game.AddParticles("particles/muzzle_flash.pcf") +game.AddParticles("particles/mvm.pcf") +game.AddParticles("particles/nailtrails.pcf") +game.AddParticles("particles/nemesis.pcf") +game.AddParticles("particles/npc_fx.pcf") +game.AddParticles("particles/player_recent_teleport.pcf") +game.AddParticles("particles/rain_custom.pcf") +game.AddParticles("particles/rocketbackblast.pcf") +game.AddParticles("particles/rocketjumptrail.pcf") +game.AddParticles("particles/rockettrail.pcf") +game.AddParticles("particles/scary_ghost.pcf") +game.AddParticles("particles/shellejection.pcf") +game.AddParticles("particles/smoke_blackbillow.pcf") +game.AddParticles("particles/smoke_blackbillow_hoodoo.pcf") +game.AddParticles("particles/soldierbuff.pcf") +game.AddParticles("particles/sparks.pcf") +game.AddParticles("particles/speechbubbles.pcf") +game.AddParticles("particles/stamp_spin.pcf") +game.AddParticles("particles/stickybomb.pcf") +game.AddParticles("particles/stormfront.pcf") +game.AddParticles("particles/teleported_fx.pcf") +game.AddParticles("particles/teleport_status.pcf") +game.AddParticles("particles/training.pcf") +game.AddParticles("particles/water.pcf") +game.AddParticles("particles/xms.pcf") +game.AddParticles("particles/firstperson_weapon_fx.pcf") + +if (IsMounted("left4dead2")) then + + game.AddParticles( "particles/l4d2/blood_impact.pcf" ) + game.AddParticles( "particles/l4d2/impact_fx.pcf" ) + game.AddParticles( "particles/l4d2/boomer_fx.pcf" ) + game.AddParticles( "particles/l4d2/burning_fx.pcf" ) + game.AddParticles( "particles/l4d2/charger_fx.pcf" ) + game.AddParticles( "particles/l4d2/coldstream.pcf" ) + game.AddParticles( "particles/l4d2/electrical_fx.pcf" ) + game.AddParticles( "particles/l4d2/fire_01_lighthouse.pcf" ) + game.AddParticles( "particles/l4d2/fire_01_river.pcf" ) + game.AddParticles( "particles/l4d2/fire_01l4d.pcf" ) + game.AddParticles( "particles/l4d2/fire_01.pcf" ) + game.AddParticles( "particles/l4d2/fire_01l4d_garage.pcf" ) + game.AddParticles( "particles/l4d2/fire_01l4d_river.pcf" ) + game.AddParticles( "particles/l4d2/fire_fx.pcf" ) + game.AddParticles( "particles/l4d2/fire_infected_fx.pcf" ) + game.AddParticles( "particles/l4d2/firework_crate_fx.pcf" ) + game.AddParticles( "particles/l4d2/fireworks_fx.pcf" ) + game.AddParticles( "particles/l4d2/footstep_fx.pcf" ) + game.AddParticles( "particles/l4d2/gen_dest_fx.pcf" ) + game.AddParticles( "particles/l4d2/hunter_fx.pcf" ) + game.AddParticles( "particles/l4d2/infected_fx.pcf" ) + game.AddParticles( "particles/l4d2/insect_fx.pcf" ) + game.AddParticles( "particles/l4d2/item_fx.pcf" ) + game.AddParticles( "particles/l4d2/laststand.pcf" ) + game.AddParticles( "particles/l4d2/military_artillery_impacts.pcf" ) + game.AddParticles( "particles/l4d2/smoker_fx.pcf" ) + game.AddParticles( "particles/l4d2/spitter_fx.pcf" ) + game.AddParticles( "particles/l4d2/steam_fx.pcf" ) + game.AddParticles( "particles/l4d2/survivor_fx.pcf" ) + game.AddParticles( "particles/l4d2/tank_fx.pcf" ) + game.AddParticles( "particles/l4d2/tanker_explosion.pcf" ) + game.AddParticles( "particles/l4d2/vehicle_fx.pcf" ) + game.AddParticles( "particles/l4d2/weapon_fx.pcf" ) + game.AddParticles( "particles/l4d2/weapon_fx_newbrasseject.pcf" ) + game.AddParticles( "particles/l4d2/weapon_fx_river.pcf" ) + game.AddParticles( "particles/l4d2/witch_fx.pcf" ) + game.AddParticles( "particles/l4d2/vehicle_fx.pcf" ) + game.AddParticles( "particles/l4d2/laststand.pcf" ) + + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/antlion.lua b/gamemodes/tf/gamemode/playerclasses/antlion.lua new file mode 100644 index 000000000..cfba5ba9b --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/antlion.lua @@ -0,0 +1,130 @@ +CLASS.Name = "Antlion" +CLASS.Speed = 520 +CLASS.Health = 80 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_antlionred"), + surface.GetTextureID("hud/class_antlionblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModel("models/player/jerry/antlion.mdl") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/armoredsandmanscout.lua b/gamemodes/tf/gamemode/playerclasses/armoredsandmanscout.lua new file mode 100644 index 000000000..5995b3e47 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/armoredsandmanscout.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Scout" +CLASS.Speed = 300 +CLASS.Health = 3000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_giant_stun"), + surface.GetTextureID("hud/leaderboard_class_scout_giant_stun") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Sandman","Batter's Helmet"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/base.lua b/gamemodes/tf/gamemode/playerclasses/base.lua new file mode 100644 index 000000000..01f280ca2 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/base.lua @@ -0,0 +1,57 @@ +CLASS.Name = "undefined" +CLASS.Speed = 300 +CLASS.Health = 100 + +CLASS.ModelName = "scout" +CLASS.Loadout = {"Fists"} +CLASS.DefaultLoadout = {"weapon_fists"} +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} +---------------------------------------- + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + util.PrecacheModel("models/player.mdl") + self:SetModel("models/player.mdl") + self:Give("weapon_fists") + end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/bonk_scout.lua b/gamemodes/tf/gamemode/playerclasses/bonk_scout.lua new file mode 100644 index 000000000..32493cb35 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/bonk_scout.lua @@ -0,0 +1,82 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 125 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_bonk"), + surface.GetTextureID("hud/leaderboard_class_scout_bonk") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Bonk! Atomic Punch","TF_WEAPON_BAT","Bonk Helm"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} + +if SERVER then + + function CLASS:Initalize() + self:SelectWeapon("tf_weapon_bat") + self:SelectWeapon("tf_weapon_lunchbox_drink") + timer.Simple(0.8, function() + self:GetActiveWeapon():PrimaryAttack() + timer.Simple(0.95, function() + self:SelectWeapon("tf_weapon_bat") + end) + end) + end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/bowman.lua b/gamemodes/tf/gamemode/playerclasses/bowman.lua new file mode 100644 index 000000000..2849218ff --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/bowman.lua @@ -0,0 +1,58 @@ +CLASS.Name = "Sniper" +CLASS.Speed = 300 +CLASS.Health = 125 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_sniperred"), + surface.GetTextureID("hud/class_sniperblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_sniper_bow"), + surface.GetTextureID("hud/leaderboard_class_sniper_bow") + } +end + +CLASS.Loadout = {"tf_weapon_sniperrifle", "tf_weapon_smg", "tf_weapon_club"} +CLASS.DefaultLoadout = {"Huntsman"} +CLASS.ModelName = "sniper" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SNIPER_START, + [GIB_RIGHTLEG] = GIBS_SNIPER_START+1, + [GIB_RIGHTARM] = GIBS_SNIPER_START+2, + [GIB_TORSO] = GIBS_SNIPER_START+3, + [GIB_HEAD] = GIBS_SNIPER_START+4, + [GIB_HEADGEAR1] = GIBS_SNIPER_START+5, + [GIB_HEADGEAR2] = GIBS_SNIPER_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/sniper_paincrticialdeath01.wav"), + Sound("vo/sniper_paincrticialdeath02.wav"), + Sound("vo/sniper_paincrticialdeath03.wav"), + Sound("vo/sniper_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/sniper_painsevere01.wav"), + Sound("vo/sniper_painsevere02.wav"), + Sound("vo/sniper_painsevere03.wav"), + Sound("vo/sniper_painsevere04.wav"), + }, + painsharp = { + Sound("vo/sniper_painsharp01.wav"), + Sound("vo/sniper_painsharp02.wav"), + Sound("vo/sniper_painsharp03.wav"), + Sound("vo/sniper_painsharp04.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 25, -- primary + [TF_SECONDARY] = 75, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/bowman_rapid_fire.lua b/gamemodes/tf/gamemode/playerclasses/bowman_rapid_fire.lua new file mode 100644 index 000000000..120b470d5 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/bowman_rapid_fire.lua @@ -0,0 +1,66 @@ +CLASS.Name = "Sniper" +CLASS.Speed = 300 * 0.85 +CLASS.Health = 1200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_sniperred"), + surface.GetTextureID("hud/class_sniperblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_sniper_bow"), + surface.GetTextureID("hud/leaderboard_class_sniper_bow") + } +end + +CLASS.Loadout = {"tf_weapon_sniperrifle", "tf_weapon_smg", "tf_weapon_club"} +CLASS.DefaultLoadout = {"Huntsman"} +CLASS.ModelName = "sniper" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SNIPER_START, + [GIB_RIGHTLEG] = GIBS_SNIPER_START+1, + [GIB_RIGHTARM] = GIBS_SNIPER_START+2, + [GIB_TORSO] = GIBS_SNIPER_START+3, + [GIB_HEAD] = GIBS_SNIPER_START+4, + [GIB_HEADGEAR1] = GIBS_SNIPER_START+5, + [GIB_HEADGEAR2] = GIBS_SNIPER_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/sniper_paincrticialdeath01.wav"), + Sound("vo/sniper_paincrticialdeath02.wav"), + Sound("vo/sniper_paincrticialdeath03.wav"), + Sound("vo/sniper_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/sniper_painsevere01.wav"), + Sound("vo/sniper_painsevere02.wav"), + Sound("vo/sniper_painsevere03.wav"), + Sound("vo/sniper_painsevere04.wav"), + }, + painsharp = { + Sound("vo/sniper_painsharp01.wav"), + Sound("vo/sniper_painsharp02.wav"), + Sound("vo/sniper_painsharp03.wav"), + Sound("vo/sniper_painsharp04.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 25, -- primary + [TF_SECONDARY] = 75, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModelScale(1.5) +end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/captain_punch.lua b/gamemodes/tf/gamemode/playerclasses/captain_punch.lua new file mode 100644 index 000000000..5ea87ad04 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/captain_punch.lua @@ -0,0 +1,143 @@ +CLASS.Name = "Giant Heavy" +CLASS.Speed = 230 * 0.5 +CLASS.Health = 60000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy_chief"), + surface.GetTextureID("hud/leaderboard_class_heavy_chief") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Fists of Steel","War Head"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/heavy_boss/bot_heavy_boss.mdl") + self:SetModelScale(1.9) + timer.Create("ColonelBarrage"..self:EntIndex(), 1, 0, function() + if (self:GetPlayerClass() == "captain_punch") then + GAMEMODE:HealPlayer(self, self, 250, true, false) + end + end) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/chiefpyro.lua b/gamemodes/tf/gamemode/playerclasses/chiefpyro.lua new file mode 100644 index 000000000..fe294beb2 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/chiefpyro.lua @@ -0,0 +1,143 @@ +CLASS.Name = "Pyro" +CLASS.Speed = 300 * 0.4 +CLASS.Health = 55000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_pyrored"), + surface.GetTextureID("hud/class_pyroblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_pyro"), + surface.GetTextureID("hud/leaderboard_class_pyro_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FLAMETHROWER","TF_WEAPON_FIREAXE"} +CLASS.ModelName = "pyro" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/pyro_boss/bot_pyro_boss.mdl") + + timer.Create("ColonelBarrage"..self:EntIndex(), 1, 0, function() + if (self:GetPlayerClass() == "chiefpyro") then + GAMEMODE:HealPlayer(self, self, 500, true, false) + end + end) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/chiefscout.lua b/gamemodes/tf/gamemode/playerclasses/chiefscout.lua new file mode 100644 index 000000000..fe3c39fb4 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/chiefscout.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Scout" +CLASS.Speed = 500 +CLASS.Health = 5000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast"), + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Soda Popper","Bonk Boy","Fed-Fightin' Fedora","Flight of the Monarch"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.9) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/chieftavish.lua b/gamemodes/tf/gamemode/playerclasses/chieftavish.lua new file mode 100644 index 000000000..b5062d2f1 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/chieftavish.lua @@ -0,0 +1,75 @@ +CLASS.Name = "Giant Demoknight" +CLASS.Speed = 280 * 0.4 +CLASS.Health = 55000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demoknight_giant"), + surface.GetTextureID("hud/leaderboard_class_demoknight_giant") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"Chargin' Targe","Eyelander","Prince Tavish's Crown","Ali Baba's Wee Booties"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/demo_boss/bot_demo_boss.mdl") + + timer.Create("ColonelBarrage"..self:EntIndex(), 1, 0, function() + if (self:GetPlayerClass() == "chieftavish") then + GAMEMODE:HealPlayer(self, self, 500, true, false) + end + end) +end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/civilian.lua b/gamemodes/tf/gamemode/playerclasses/civilian.lua new file mode 100644 index 000000000..a68fc0b6e --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/civilian.lua @@ -0,0 +1,33 @@ +CLASS.Name = "Civilian" +CLASS.Speed = 230 +CLASS.Health = 100 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout"), + surface.GetTextureID("hud/leaderboard_class_scout_d") + } +end + +CLASS.Loadout = {} +CLASS.DefaultLoadout = {} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/civilian_.lua b/gamemodes/tf/gamemode/playerclasses/civilian_.lua new file mode 100644 index 000000000..2c129b789 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/civilian_.lua @@ -0,0 +1,75 @@ +CLASS.Name = "Civilian_" +CLASS.Speed = 300 +CLASS.Health = 50 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_civred"), + surface.GetTextureID("hud/class_civblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_dead"), + surface.GetTextureID("hud/leaderboard_class_dead") + } +end + +CLASS.Loadout = {} +CLASS.ModelName = "civilian" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 0, -- primary + [TF_SECONDARY] = 0, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + if (!file.Exists("models/player/civilian.mdl","WORKSHOP")) then + if (self:IsBot()) then + self:Kick("") + else + self:SetPlayerClass("civilian") + end + end + self:StripWeapons() + self:Give("tf_weapon_fireaxe") + end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/colonelbarrage.lua b/gamemodes/tf/gamemode/playerclasses/colonelbarrage.lua new file mode 100644 index 000000000..6e2f2e558 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/colonelbarrage.lua @@ -0,0 +1,84 @@ +CLASS.Name = "Giant Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 4000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier"), + surface.GetTextureID("hud/leaderboard_class_soldier_d") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {"TF_WEAPON_ROCKETLAUNCHER"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) + self:StripWeapons() + self:Give("tf_weapon_rocketlauncher_rapidfire3") + self:SelectWeapon("tf_weapon_rocketlauncher_rapidfire3") + timer.Create("ColonelBarrage"..self:EntIndex(), 1, 0, function() + if (self:GetPlayerClass() == "colonelbarrage") then + GAMEMODE:HealPlayer(self, self, 40, true, false) + end + end) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/combinesoldier.lua b/gamemodes/tf/gamemode/playerclasses/combinesoldier.lua new file mode 100644 index 000000000..15bad36d4 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/combinesoldier.lua @@ -0,0 +1,53 @@ +CLASS.Name = "Combine" +CLASS.Speed = 300 +CLASS.Health = 170 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_combinered"), + surface.GetTextureID("hud/class_combineblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_spy"), + surface.GetTextureID("hud/leaderboard_class_spy") + } +end + +CLASS.Loadout = {"tf_weapon_capsulelauncher","tf_weapon_trenchknife","tf_weapon_tranqulizer"} +CLASS.DefaultLoadout = {"Natascha","Pistol","Batsaber"} +CLASS.ModelName = "scout" + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 110, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 2, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_PYRO_START, + [GIB_RIGHTLEG] = GIBS_PYRO_START+1, + [GIB_LEFTARM] = GIBS_PYRO_START+2, + [GIB_RIGHTARM] = GIBS_PYRO_START+3, + [GIB_TORSO] = GIBS_PYRO_START+5, + [GIB_TORSO2] = GIBS_PYRO_START+4, + [GIB_EQUIPMENT1] = GIBS_PYRO_START+6, + [GIB_HEAD] = GIBS_PYRO_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + }, + painsevere = { + }, + painsharp = { + }, +} + +if SERVER then + function CLASS:Initialize() + self:SetModel("models/player/repressor/combine_suppresor.mdl") + end +end diff --git a/gamemodes/tf/gamemode/playerclasses/demoknight.lua b/gamemodes/tf/gamemode/playerclasses/demoknight.lua new file mode 100644 index 000000000..ac03797ac --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/demoknight.lua @@ -0,0 +1,61 @@ +CLASS.Name = "Demoknight" +CLASS.Speed = 3 * 93 +CLASS.Health = 175 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demoknight"), + surface.GetTextureID("hud/leaderboard_class_demoknight") + } +end + +CLASS.Loadout = {} +CLASS.DefaultLoadout = {"Chargin' Targe","Eyelander"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 16, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/demoman.lua b/gamemodes/tf/gamemode/playerclasses/demoman.lua new file mode 100644 index 000000000..3c5d525ce --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/demoman.lua @@ -0,0 +1,61 @@ +CLASS.Name = "Demoman" +CLASS.Speed = 280 +CLASS.Health = 175 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demo"), + surface.GetTextureID("hud/leaderboard_class_demo_d") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"TF_WEAPON_GRENADELAUNCHER", "TF_WEAPON_PIPEBOMBLAUNCHER", "TF_WEAPON_BOTTLE"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 16, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/engineer.lua b/gamemodes/tf/gamemode/playerclasses/engineer.lua new file mode 100644 index 000000000..a948ca38c --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/engineer.lua @@ -0,0 +1,71 @@ +CLASS.Name = "Engineer" +CLASS.Speed = 300 +CLASS.Health = 125 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_engired"), + surface.GetTextureID("hud/class_engiblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_engineer"), + surface.GetTextureID("hud/leaderboard_class_engineer_d") + } +end + +CLASS.Loadout = {"tf_weapon_shotgun_primary", "tf_weapon_pistol", "tf_weapon_wrench", + "tf_weapon_pda_engineer_build", "tf_weapon_pda_engineer_destroy"} +CLASS.DefaultLoadout = {"TF_WEAPON_SHOTGUN_PRIMARY","TF_WEAPON_PISTOL","TF_WEAPON_WRENCH", + "TF_WEAPON_PDA_ENGINEER_BUILD","TF_WEAPON_PDA_ENGINEER_DESTROY"} +CLASS.ModelName = "engineer" + +CLASS.Buildings = {"OBJ_SENTRYGUN", "OBJ_DISPENSER", "OBJ_TELEPORTER"} + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_ENGINEER_START, + [GIB_RIGHTARM] = GIBS_ENGINEER_START+2, + [GIB_TORSO] = GIBS_ENGINEER_START+4, + [GIB_TORSO2] = GIBS_ENGINEER_START+1, + [GIB_EQUIPMENT1] = GIBS_ENGINEER_START+3, + [GIB_HEAD] = GIBS_ENGINEER_START+5, + [GIB_HEADGEAR1] = GIBS_ENGINEER_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/engineer_paincrticialdeath01.wav"), + Sound("vo/engineer_paincrticialdeath02.wav"), + Sound("vo/engineer_paincrticialdeath03.wav"), + Sound("vo/engineer_paincrticialdeath04.wav"), + Sound("vo/engineer_paincrticialdeath05.wav"), + Sound("vo/engineer_paincrticialdeath06.wav"), + }, + painsevere = { + Sound("vo/engineer_painsevere01.wav"), + Sound("vo/engineer_painsevere02.wav"), + Sound("vo/engineer_painsevere03.wav"), + Sound("vo/engineer_painsevere04.wav"), + Sound("vo/engineer_painsevere05.wav"), + Sound("vo/engineer_painsevere06.wav"), + Sound("vo/engineer_painsevere07.wav"), + }, + painsharp = { + Sound("vo/engineer_painsharp01.wav"), + Sound("vo/engineer_painsharp02.wav"), + Sound("vo/engineer_painsharp03.wav"), + Sound("vo/engineer_painsharp04.wav"), + Sound("vo/engineer_painsharp05.wav"), + Sound("vo/engineer_painsharp06.wav"), + Sound("vo/engineer_painsharp07.wav"), + Sound("vo/engineer_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 200, -- secondary + [TF_METAL] = 200, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/fastzombie.lua b/gamemodes/tf/gamemode/playerclasses/fastzombie.lua new file mode 100644 index 000000000..d27e9e54b --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/fastzombie.lua @@ -0,0 +1,130 @@ +CLASS.Name = "Fast Zombie" +CLASS.Speed = 3 * 110 +CLASS.Health = 140 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "zombie_fast" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:EmitSound("NPC_FastZombie.AlertFar") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/giantblastsoldier.lua b/gamemodes/tf/gamemode/playerclasses/giantblastsoldier.lua new file mode 100644 index 000000000..1633768d9 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantblastsoldier.lua @@ -0,0 +1,77 @@ +CLASS.Name = "Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 3800 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_spammer"), + surface.GetTextureID("hud/leaderboard_class_soldier_spammer") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:Give("tf_weapon_rocketlauncher_mvm_blast") + self:SelectWeapon("tf_weapon_rocketlauncher_mvm_blast") +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantburstfiresoldier.lua b/gamemodes/tf/gamemode/playerclasses/giantburstfiresoldier.lua new file mode 100644 index 000000000..bec709e1f --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantburstfiresoldier.lua @@ -0,0 +1,77 @@ +CLASS.Name = "Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 3800 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_spammer"), + surface.GetTextureID("hud/leaderboard_class_soldier_spammer") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:Give("tf_weapon_rocketlauncher_rapidfire4") + self:SelectWeapon("tf_weapon_rocketlauncher_rapidfire4") +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantburstfiresoldier2.lua b/gamemodes/tf/gamemode/playerclasses/giantburstfiresoldier2.lua new file mode 100644 index 000000000..90176e7fe --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantburstfiresoldier2.lua @@ -0,0 +1,78 @@ +CLASS.Name = "Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 4200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_spammer"), + surface.GetTextureID("hud/leaderboard_class_soldier_spammer") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:Give("tf_weapon_rocketlauncher_rapidfire5") + self:SelectWeapon("tf_weapon_rocketlauncher_rapidfire5") + GAMEMODE:StartCritBoost(self) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantdemoknight.lua b/gamemodes/tf/gamemode/playerclasses/giantdemoknight.lua new file mode 100644 index 000000000..7e0cfc8ab --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantdemoknight.lua @@ -0,0 +1,71 @@ +CLASS.Name = "Giant Demoknight" +CLASS.Speed = 280 * 0.5 +CLASS.Health = 3300 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demo"), + surface.GetTextureID("hud/leaderboard_class_demo_d") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"Chargin' Targe","Eyelander"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/demo_boss/bot_demo_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantdemoman.lua b/gamemodes/tf/gamemode/playerclasses/giantdemoman.lua new file mode 100644 index 000000000..0e587ad89 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantdemoman.lua @@ -0,0 +1,71 @@ +CLASS.Name = "Giant Demoman" +CLASS.Speed = 280 * 0.5 +CLASS.Health = 3300 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demo"), + surface.GetTextureID("hud/leaderboard_class_demo_d") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"TF_WEAPON_GRENADELAUNCHER", "Eyelander"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/demo_boss/bot_demo_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantengineer.lua b/gamemodes/tf/gamemode/playerclasses/giantengineer.lua new file mode 100644 index 000000000..0428f057d --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantengineer.lua @@ -0,0 +1,71 @@ +CLASS.Name = "Engineer" +CLASS.Speed = 300 * 0.6 +CLASS.Health = 2500 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_engired"), + surface.GetTextureID("hud/class_engiblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_engineer"), + surface.GetTextureID("hud/leaderboard_class_engineer_d") + } +end + +CLASS.Loadout = {"tf_weapon_shotgun_primary", "tf_weapon_pistol", "tf_weapon_wrench", + "tf_weapon_pda_engineer_build", "tf_weapon_pda_engineer_destroy"} +CLASS.DefaultLoadout = {"Shotgun","TF_WEAPON_PISTOL","TF_WEAPON_WRENCH", + "TF_WEAPON_PDA_ENGINEER_BUILD","TF_WEAPON_PDA_ENGINEER_DESTROY"} +CLASS.ModelName = "engineer" + +CLASS.Buildings = {"OBJ_SENTRYGUN", "OBJ_DISPENSER", "OBJ_TELEPORTER"} + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_ENGINEER_START, + [GIB_RIGHTARM] = GIBS_ENGINEER_START+2, + [GIB_TORSO] = GIBS_ENGINEER_START+4, + [GIB_TORSO2] = GIBS_ENGINEER_START+1, + [GIB_EQUIPMENT1] = GIBS_ENGINEER_START+3, + [GIB_HEAD] = GIBS_ENGINEER_START+5, + [GIB_HEADGEAR1] = GIBS_ENGINEER_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/engineer_paincrticialdeath01.wav"), + Sound("vo/engineer_paincrticialdeath02.wav"), + Sound("vo/engineer_paincrticialdeath03.wav"), + Sound("vo/engineer_paincrticialdeath04.wav"), + Sound("vo/engineer_paincrticialdeath05.wav"), + Sound("vo/engineer_paincrticialdeath06.wav"), + }, + painsevere = { + Sound("vo/engineer_painsevere01.wav"), + Sound("vo/engineer_painsevere02.wav"), + Sound("vo/engineer_painsevere03.wav"), + Sound("vo/engineer_painsevere04.wav"), + Sound("vo/engineer_painsevere05.wav"), + Sound("vo/engineer_painsevere06.wav"), + Sound("vo/engineer_painsevere07.wav"), + }, + painsharp = { + Sound("vo/engineer_painsharp01.wav"), + Sound("vo/engineer_painsharp02.wav"), + Sound("vo/engineer_painsharp03.wav"), + Sound("vo/engineer_painsharp04.wav"), + Sound("vo/engineer_painsharp05.wav"), + Sound("vo/engineer_painsharp06.wav"), + Sound("vo/engineer_painsharp07.wav"), + Sound("vo/engineer_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 200, -- secondary + [TF_METAL] = 200, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/giantflarepyro.lua b/gamemodes/tf/gamemode/playerclasses/giantflarepyro.lua new file mode 100644 index 000000000..9311c6caf --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantflarepyro.lua @@ -0,0 +1,139 @@ +CLASS.Name = "Pyro" +CLASS.Speed = 300 * 0.5 +CLASS.Health = 3000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_pyrored"), + surface.GetTextureID("hud/class_pyroblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_pyro"), + surface.GetTextureID("hud/leaderboard_class_pyro_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Detonator"} +CLASS.ModelName = "pyro" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/pyro_boss/bot_pyro_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantheavy.lua b/gamemodes/tf/gamemode/playerclasses/giantheavy.lua new file mode 100644 index 000000000..46b8e5a9a --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantheavy.lua @@ -0,0 +1,139 @@ +CLASS.Name = "Giant Heavy" +CLASS.Speed = 230 * 0.5 +CLASS.Health = 5000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy"), + surface.GetTextureID("hud/leaderboard_class_heavy_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_MINIGUN","TF_WEAPON_SHOTGUN_HWG","TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/heavy_boss/bot_heavy_boss.mdl") + self:SetViewOffset(Vector(0, 0, 126)) + self:SetModelScale(1.75) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantheavyheater.lua b/gamemodes/tf/gamemode/playerclasses/giantheavyheater.lua new file mode 100644 index 000000000..2fc0389c8 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantheavyheater.lua @@ -0,0 +1,129 @@ +CLASS.Name = "Giant Heavy" +CLASS.Speed = 230 * 0.5 +CLASS.Health = 5000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy_heater"), + surface.GetTextureID("hud/leaderboard_class_heavy_heater") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Huo-Long Heater","TF_WEAPON_SHOTGUN_HWG","TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/heavy_boss/bot_heavy_boss.mdl") + self:SetViewOffset(Vector(0, 0, 126)) + self:SetModelScale(1.75) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantheavyshotgun.lua b/gamemodes/tf/gamemode/playerclasses/giantheavyshotgun.lua new file mode 100644 index 000000000..2319b6bc2 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantheavyshotgun.lua @@ -0,0 +1,139 @@ +CLASS.Name = "Giant Shotgun Heavy" +CLASS.Speed = 230 * 0.5 +CLASS.Health = 5000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy"), + surface.GetTextureID("hud/leaderboard_class_heavy_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_SHOTGUN_HWG"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/heavy_boss/bot_heavy_boss.mdl") + self:SetViewOffset(Vector(0, 0, 126)) + self:SetModelScale(1.75) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantmedic.lua b/gamemodes/tf/gamemode/playerclasses/giantmedic.lua new file mode 100644 index 000000000..948765d07 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantmedic.lua @@ -0,0 +1,84 @@ +CLASS.Name = "Giant Medic" +CLASS.Speed = 320 * 0.5 +CLASS.Health = 4500 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_medicred"), + surface.GetTextureID("hud/class_medicblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_medic"), + surface.GetTextureID("hud/leaderboard_class_medic_d") + } +end + +CLASS.Loadout = {"tf_weapon_syringegun_medic", "tf_weapon_medigun", "tf_weapon_bonesaw"} +CLASS.DefaultLoadout = {"TF_WEAPON_SYRINGEGUN_MEDIC","TF_WEAPON_MEDIGUN"} +CLASS.ModelName = "medic" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_MEDIC_START, + [GIB_RIGHTLEG] = GIBS_MEDIC_START+1, + [GIB_LEFTARM] = GIBS_MEDIC_START+3, + [GIB_RIGHTARM] = GIBS_MEDIC_START+4, + [GIB_TORSO] = GIBS_MEDIC_START+5, + [GIB_TORSO2] = GIBS_MEDIC_START+2, + [GIB_HEAD] = GIBS_MEDIC_START+6, + [GIB_HEADGEAR1] = GIBS_MEDIC_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/medic_paincrticialdeath01.wav"), + Sound("vo/medic_paincrticialdeath02.wav"), + Sound("vo/medic_paincrticialdeath03.wav"), + Sound("vo/medic_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/medic_painsevere01.wav"), + Sound("vo/medic_painsevere02.wav"), + Sound("vo/medic_painsevere03.wav"), + Sound("vo/medic_painsevere04.wav"), + }, + painsharp = { + Sound("vo/medic_painsharp01.wav"), + Sound("vo/medic_painsharp02.wav"), + Sound("vo/medic_painsharp03.wav"), + Sound("vo/medic_painsharp04.wav"), + Sound("vo/medic_painsharp05.wav"), + Sound("vo/medic_painsharp06.wav"), + Sound("vo/medic_painsharp07.wav"), + Sound("vo/medic_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 150, -- primary + [TF_SECONDARY] = 150, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +CLASS.HasMedicRegeneration = true + +function CLASS:Initialize() + self:SetNWInt("Ubercharge", 0) +end + +end + +if SERVER then + + function CLASS:Initialize() + self:SetModel("models/bots/medic/bot_medic.mdl") + self:SetViewOffset(Vector(0, 0, 126)) + self:SetModelScale(1.75) + end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/giantpyro.lua b/gamemodes/tf/gamemode/playerclasses/giantpyro.lua new file mode 100644 index 000000000..26c0948e8 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantpyro.lua @@ -0,0 +1,139 @@ +CLASS.Name = "Giant Pyro" +CLASS.Speed = 300 * 0.5 +CLASS.Health = 3000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_pyrored"), + surface.GetTextureID("hud/class_pyroblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_pyro"), + surface.GetTextureID("hud/leaderboard_class_pyro_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FLAMETHROWER","TF_WEAPON_FIREAXE"} +CLASS.ModelName = "pyro" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/pyro_boss/bot_pyro_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantscout.lua b/gamemodes/tf/gamemode/playerclasses/giantscout.lua new file mode 100644 index 000000000..35cd1b40f --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantscout.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Giant Scout" +CLASS.Speed = 400 +CLASS.Health = 1600 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast"), + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Scattergun", "Bat"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantscoutmelee.lua b/gamemodes/tf/gamemode/playerclasses/giantscoutmelee.lua new file mode 100644 index 000000000..bf8436e66 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantscoutmelee.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 1200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast"), + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Holy Mackerel","Bonk Boy"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantsoldier.lua b/gamemodes/tf/gamemode/playerclasses/giantsoldier.lua new file mode 100644 index 000000000..e8cb2f42c --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantsoldier.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Giant Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 3800 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier"), + surface.GetTextureID("hud/leaderboard_class_soldier_d") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {"TF_WEAPON_ROCKETLAUNCHER", "TF_WEAPON_SHOVEL"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantsoldiercharged.lua b/gamemodes/tf/gamemode/playerclasses/giantsoldiercharged.lua new file mode 100644 index 000000000..dc02f6f07 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantsoldiercharged.lua @@ -0,0 +1,81 @@ +CLASS.Name = "Giant Charged Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 3800 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_crit"), + surface.GetTextureID("hud/leaderboard_class_soldier_crit") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {"Original", "TF_WEAPON_SHOVEL"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) + GAMEMODE:StartCritBoost(self) + timer.Simple(0.1, function() + self:GetActiveWeapon().Primary.Delay = 0.8 * 2 + self:GetActiveWeapon().ReloadTime = 0.8 * 0.2 + end) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/giantsoldierrapidfire.lua b/gamemodes/tf/gamemode/playerclasses/giantsoldierrapidfire.lua new file mode 100644 index 000000000..3eabce76c --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/giantsoldierrapidfire.lua @@ -0,0 +1,78 @@ +CLASS.Name = "Giant Rapid-Fire Soldier" +CLASS.Speed = 240 * 0.5 +CLASS.Health = 3800 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_spammer"), + surface.GetTextureID("hud/leaderboard_class_soldier_spammer") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/soldier_boss/bot_soldier_boss.mdl") + self:SetModelScale(1.75) + self:Give("tf_weapon_rocketlauncher_rapidfire2") + self:SelectWeapon("tf_weapon_rocketlauncher_rapidfire2") + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/gmodplayer.lua b/gamemodes/tf/gamemode/playerclasses/gmodplayer.lua new file mode 100644 index 000000000..df9f8f5c9 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/gmodplayer.lua @@ -0,0 +1,226 @@ +-- Regular GMod player, as if you were playing sandbox + +if CLIENT then + CLASS.ScoreboardImage = { + surface.GetTextureID("vgui/modicon.vmt"), + } +end + +CLASS.Name = "Gmodplayer" +CLASS.Speed = 105 +CLASS.Health = 100 + +CLASS.AdditionalAmmo = { + Pistol = 256, + ["9mmRound"] = 256, + ["MP5_Grenade"] = 6, + SMG1 = 256, + grenade = 5, + snark = 5, + GrenadeHL1 = 5, + Buckshot = 64, + BuckshotHL1 = 64, + ["357"] = 32, + ["357Round"] = 32, + XBowBolt = 32, + XBowBoltHL1 = 32, + AR2AltFire = 6, + AR2 = 100, + Uranium = 100, + SMG1_Grenade = 6, + Satchel = 10, + TripMine = 10, + RPG_Rocket = 18, + RPG = 18, +} + +CLASS.DefaultLoadout = {} +CLASS.Loadout = { + "weapon_crowbar", + "weapon_pistol", + "weapon_smg1", + "weapon_frag", + "weapon_physcannon", + "weapon_crossbow", + "weapon_shotgun", + "weapon_357", + "weapon_rpg", + "weapon_ar2", + + "gmod_tool", + "gmod_camera", + "weapon_physgun", + "weapon_medkit" +} + +CLASS.ModelName = "sniper" + +CLASS.IsHL2 = true + + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_LAST+1, + [GIB_RIGHTLEG] = GIBS_LAST+1, + [GIB_RIGHTARM] = GIBS_LAST+1, + [GIB_TORSO] = GIBS_LAST+1, + [GIB_TORSO2] = GIBS_LAST+1, + [GIB_EQUIPMENT1] = GIBS_LAST+1, + [GIB_EQUIPMENT2] = GIBS_LAST+1, + [GIB_HEAD] = GIBS_LAST+1, + [GIB_ORGAN] = GIBS_ORGANS_START, +} +CLASS.IsHL1Mounted = IsMounted("hl1") || IsMounted("hl1mp") +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/sniper_paincrticialdeath01.wav"), + Sound("vo/sniper_paincrticialdeath02.wav"), + Sound("vo/sniper_paincrticialdeath03.wav"), + Sound("vo/sniper_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/sniper_painsevere01.wav"), + Sound("vo/sniper_painsevere02.wav"), + Sound("vo/sniper_painsevere03.wav"), + Sound("vo/sniper_painsevere04.wav"), + }, + painsharp = { + Sound("vo/sniper_painsharp01.wav"), + Sound("vo/sniper_painsharp02.wav"), + Sound("vo/sniper_painsharp03.wav"), + Sound("vo/sniper_painsharp04.wav"), + }, +} + +if SERVER then + +function CLASS:Initialize() + self:Give("weapon_slam") + if (ConVarExists("hl2_cl_bob")) then + + self:Give("weapon_hl2_crowbar") + self:Give("weapon_hl2_pistol") + self:Give("weapon_hl2_smg1") + self:Give("weapon_hl2_frag") + self:Give("weapon_physcannon") + self:Give("weapon_hl2_crossbow") + self:Give("weapon_hl2_shotgun") + self:Give("weapon_hl2_357") + self:Give("weapon_hl2_rpg") + self:Give("weapon_hl2_ar2") + + else + self:Give("weapon_crowbar") + self:Give("weapon_pistol") + self:Give("weapon_smg1") + self:Give("weapon_frag") + self:Give("weapon_physcannon") + self:Give("weapon_crossbow") + self:Give("weapon_shotgun") + self:Give("weapon_357") + self:Give("weapon_rpg") + self:Give("weapon_ar2") + end + self:Give("weapon_gmod_hands") + self:Give("weapon_medkit") + self:Give("weapon_fists") + if (!GetConVar("tf_competitive"):GetBool()) then + self:Give("gmod_tool") + self:Give("gmod_camera") + self:Give("weapon_physgun") + end + --[[ + if (self:GetPlayerClassTable().IsHL1Mounted) then + if (tf_util.IsHL1SwepsMounted()) then + self:Give("weapon_hl1_snark") + self:Give("weapon_hl1_satchel") + self:Give("weapon_hl1_handgrenade") + self:Give("weapon_hl1_glock") + self:Give("weapon_hl1_crowbar") + self:Give("weapon_hl1_357") + self:Give("weapon_hl1_crossbow") + self:Give("weapon_hl1_rpg") + self:Give("weapon_hl1_gauss") + self:Give("weapon_hl1_egon") + self:Give("weapon_hl1_shotgun") + self:Give("weapon_hl1_mp5") + self:Give("weapon_hl1_tripmine") + self:Give("weapon_hl1_hornetgun") + else + self:Give("weapon_snark") + self:Give("weapon_satchel") + self:Give("weapon_handgrenade") + self:Give("weapon_glock_hl1") + self:Give("weapon_crowbar_hl1") + self:Give("weapon_glock_hl1") + self:Give("weapon_357_hl1") + self:Give("weapon_crossbow_hl1") + self:Give("weapon_rpg_hl1") + self:Give("weapon_gauss") + self:Give("weapon_egon") + self:Give("weapon_shotgun_hl1") + self:Give("weapon_mp5_hl1") + self:Give("weapon_tripmine") + self:Give("weapon_hornetgun") + end + end]] + local cl_defaultweapon = self:GetInfo("cl_defaultweapon") + + if self:HasWeapon(cl_defaultweapon) then + self:SelectWeapon(cl_defaultweapon) + end + timer.Simple(0.12,function() + if (self:IsBot() and self.TFBot and self:GetPlayerClass() == "gmodplayer") then + + local primaryweps = { + "weapon_ak47_cstrike", + "weapon_aug_cstrike", + "weapon_famas_cstrike", + "weapon_galil_cstrike", + "weapon_m3_cstrike", + "weapon_mp5_cstrike", + "weapon_p90_cstrike", + "weapon_m4a1_cstrike", + "weapon_sg552_cstrike", + "weapon_tmp_cstrike", + "weapon_xm1014_cstrike", + "weapon_ar2_scripted", + "weapon_shotgun_scripted", + "weapon_smg1_scripted", + "", + "", + "", + } + local secondaryweps = { + "weapon_deagle_cstrike", + "weapon_elite_cstrike", + "weapon_fiveseven_cstrike", + "weapon_glock_cstrike", + "weapon_p228_cstrike", + "weapon_usp_cstrike", + "weapon_pistol_scripted", + "weapon_357_scripted" + } + timer.Simple(0.3, function() + local mdl = table.Random(player_manager.AllValidModels()) + self:SetModel(mdl) + + self:StripWeapons() + self:Give(table.Random(primaryweps)) + self:Give(table.Random(secondaryweps)) + self:Give("weapon_knife_cstrike") + end) + + end + end) +end + +end + + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 1000000, -- secondary + [TF_METAL] = 1000000, -- metal + [TF_GRENADES1] = 1000000, -- grenades1 + [TF_GRENADES2] = 1000000, -- grenades2 +} \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/headcrab.lua b/gamemodes/tf/gamemode/playerclasses/headcrab.lua new file mode 100644 index 000000000..e122a7767 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/headcrab.lua @@ -0,0 +1,120 @@ +CLASS.Name = "Zombie" +CLASS.Speed = 40 +CLASS.Health = 80 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModel("models/headcrabclassic.mdl") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/headless_hatman.lua b/gamemodes/tf/gamemode/playerclasses/headless_hatman.lua new file mode 100644 index 000000000..3115ab5e7 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/headless_hatman.lua @@ -0,0 +1,72 @@ +CLASS.Name = "Demoman" +CLASS.Speed = 520 +CLASS.Health = 920 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demoknight"), + surface.GetTextureID("hud/leaderboard_class_demoknight") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"Hidden Big Axe"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 16, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + self:SetModel("models/bots/headless_hatman.mdl") + self:EmitSound("vo/halloween_boss/knight_spawn.mp3",0,100) + ParticleEffectAttach("halloween_boss_summon", PATTACH_ABSORIGIN_FOLLOW, self, 0) + ParticleEffectAttach("ghost_pumpkin", PATTACH_ABSORIGIN_FOLLOW, self, 0) + end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/heavy.lua b/gamemodes/tf/gamemode/playerclasses/heavy.lua new file mode 100644 index 000000000..6e7e571dd --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/heavy.lua @@ -0,0 +1,139 @@ +CLASS.Name = "Heavy" +CLASS.Speed = 230 +CLASS.Health = 300 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy"), + surface.GetTextureID("hud/leaderboard_class_heavy_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_MINIGUN","TF_WEAPON_SHOTGUN_HWG","TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/heavyshotgun.lua b/gamemodes/tf/gamemode/playerclasses/heavyshotgun.lua new file mode 100644 index 000000000..869082829 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/heavyshotgun.lua @@ -0,0 +1,129 @@ +CLASS.Name = "Heavy" +CLASS.Speed = 230 +CLASS.Health = 300 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy_shotgun_giant"), + surface.GetTextureID("hud/leaderboard_class_heavy_shotgun_giant") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Shotgun"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/heavyweightchamp.lua b/gamemodes/tf/gamemode/playerclasses/heavyweightchamp.lua new file mode 100644 index 000000000..1b3c38b8d --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/heavyweightchamp.lua @@ -0,0 +1,119 @@ +CLASS.Name = "Heavyweight Champ" +CLASS.Speed = 230 +CLASS.Health = 300 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy_champ"), + surface.GetTextureID("hud/leaderboard_class_heavy_champ") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Killing Gloves of Boxing",""} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/hl1scientist.lua b/gamemodes/tf/gamemode/playerclasses/hl1scientist.lua new file mode 100644 index 000000000..f1481c37e --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/hl1scientist.lua @@ -0,0 +1,58 @@ +CLASS.Name = "Scientist" +CLASS.Speed = 320 +CLASS.Health = 80 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {"tf_weapon_scientist_syringe"} +CLASS.ModelName = "heavy" + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/scientist.mdl") + self:StripWeapons() + self:Give("tf_weapon_scientist_syringe") +end + +end + diff --git a/addon/gamemodes/teamfortress/gamemode/playerclasses/hl2.lua b/gamemodes/tf/gamemode/playerclasses/hl2.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/playerclasses/hl2.lua rename to gamemodes/tf/gamemode/playerclasses/hl2.lua diff --git a/gamemodes/tf/gamemode/playerclasses/kritzmedic.lua b/gamemodes/tf/gamemode/playerclasses/kritzmedic.lua new file mode 100644 index 000000000..72fbb287a --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/kritzmedic.lua @@ -0,0 +1,73 @@ +CLASS.Name = "Medic" +CLASS.Speed = 320 +CLASS.Health = 150 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_medicred"), + surface.GetTextureID("hud/class_medicblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_medic_uber"), + surface.GetTextureID("hud/leaderboard_class_medic_uber") + } +end + +CLASS.Loadout = {"tf_weapon_syringegun_medic", "tf_weapon_medigun", "tf_weapon_bonesaw"} +CLASS.DefaultLoadout = {"Syringe Gun","Kritzkrieg"} +CLASS.ModelName = "medic" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_MEDIC_START, + [GIB_RIGHTLEG] = GIBS_MEDIC_START+1, + [GIB_LEFTARM] = GIBS_MEDIC_START+3, + [GIB_RIGHTARM] = GIBS_MEDIC_START+4, + [GIB_TORSO] = GIBS_MEDIC_START+5, + [GIB_TORSO2] = GIBS_MEDIC_START+2, + [GIB_HEAD] = GIBS_MEDIC_START+6, + [GIB_HEADGEAR1] = GIBS_MEDIC_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/medic_paincrticialdeath01.wav"), + Sound("vo/medic_paincrticialdeath02.wav"), + Sound("vo/medic_paincrticialdeath03.wav"), + Sound("vo/medic_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/medic_painsevere01.wav"), + Sound("vo/medic_painsevere02.wav"), + Sound("vo/medic_painsevere03.wav"), + Sound("vo/medic_painsevere04.wav"), + }, + painsharp = { + Sound("vo/medic_painsharp01.wav"), + Sound("vo/medic_painsharp02.wav"), + Sound("vo/medic_painsharp03.wav"), + Sound("vo/medic_painsharp04.wav"), + Sound("vo/medic_painsharp05.wav"), + Sound("vo/medic_painsharp06.wav"), + Sound("vo/medic_painsharp07.wav"), + Sound("vo/medic_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 150, -- primary + [TF_SECONDARY] = 150, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +CLASS.HasMedicRegeneration = true + +function CLASS:Initialize() + self:SetNWInt("Ubercharge", 0) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/majorleaguescout.lua b/gamemodes/tf/gamemode/playerclasses/majorleaguescout.lua new file mode 100644 index 000000000..2c0aad303 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/majorleaguescout.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 1600 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_giant_stun"), + surface.GetTextureID("hud/leaderboard_class_scout_giant_stun") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Sandman","Essential Accessories","Batter's Helmet"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/medic.lua b/gamemodes/tf/gamemode/playerclasses/medic.lua new file mode 100644 index 000000000..4a9fb807f --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/medic.lua @@ -0,0 +1,73 @@ +CLASS.Name = "Medic" +CLASS.Speed = 320 +CLASS.Health = 150 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_medicred"), + surface.GetTextureID("hud/class_medicblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_medic"), + surface.GetTextureID("hud/leaderboard_class_medic_d") + } +end + +CLASS.Loadout = {"tf_weapon_syringegun_medic", "tf_weapon_medigun", "tf_weapon_bonesaw"} +CLASS.DefaultLoadout = {"TF_WEAPON_SYRINGEGUN_MEDIC","TF_WEAPON_MEDIGUN","TF_WEAPON_BONESAW"} +CLASS.ModelName = "medic" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_MEDIC_START, + [GIB_RIGHTLEG] = GIBS_MEDIC_START+1, + [GIB_LEFTARM] = GIBS_MEDIC_START+3, + [GIB_RIGHTARM] = GIBS_MEDIC_START+4, + [GIB_TORSO] = GIBS_MEDIC_START+5, + [GIB_TORSO2] = GIBS_MEDIC_START+2, + [GIB_HEAD] = GIBS_MEDIC_START+6, + [GIB_HEADGEAR1] = GIBS_MEDIC_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/medic_paincrticialdeath01.wav"), + Sound("vo/medic_paincrticialdeath02.wav"), + Sound("vo/medic_paincrticialdeath03.wav"), + Sound("vo/medic_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/medic_painsevere01.wav"), + Sound("vo/medic_painsevere02.wav"), + Sound("vo/medic_painsevere03.wav"), + Sound("vo/medic_painsevere04.wav"), + }, + painsharp = { + Sound("vo/medic_painsharp01.wav"), + Sound("vo/medic_painsharp02.wav"), + Sound("vo/medic_painsharp03.wav"), + Sound("vo/medic_painsharp04.wav"), + Sound("vo/medic_painsharp05.wav"), + Sound("vo/medic_painsharp06.wav"), + Sound("vo/medic_painsharp07.wav"), + Sound("vo/medic_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 150, -- primary + [TF_SECONDARY] = 150, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +CLASS.HasMedicRegeneration = true + +function CLASS:Initialize() + self:SetNWInt("Ubercharge", 0) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/medicshotgun.lua b/gamemodes/tf/gamemode/playerclasses/medicshotgun.lua new file mode 100644 index 000000000..da64aade7 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/medicshotgun.lua @@ -0,0 +1,75 @@ +CLASS.Name = "Medic" +CLASS.Speed = 320 +CLASS.Health = 150 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_medicred"), + surface.GetTextureID("hud/class_medicblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_medic"), + surface.GetTextureID("hud/leaderboard_class_medic_d") + } +end + +CLASS.Loadout = {"tf_weapon_medigun", "tf_weapon_bonesaw"} +CLASS.DefaultLoadout = {"TF_WEAPON_MEDIGUN","TF_WEAPON_BONESAW"} +CLASS.ModelName = "medic" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_MEDIC_START, + [GIB_RIGHTLEG] = GIBS_MEDIC_START+1, + [GIB_LEFTARM] = GIBS_MEDIC_START+3, + [GIB_RIGHTARM] = GIBS_MEDIC_START+4, + [GIB_TORSO] = GIBS_MEDIC_START+5, + [GIB_TORSO2] = GIBS_MEDIC_START+2, + [GIB_HEAD] = GIBS_MEDIC_START+6, + [GIB_HEADGEAR1] = GIBS_MEDIC_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/medic_paincrticialdeath01.wav"), + Sound("vo/medic_paincrticialdeath02.wav"), + Sound("vo/medic_paincrticialdeath03.wav"), + Sound("vo/medic_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/medic_painsevere01.wav"), + Sound("vo/medic_painsevere02.wav"), + Sound("vo/medic_painsevere03.wav"), + Sound("vo/medic_painsevere04.wav"), + }, + painsharp = { + Sound("vo/medic_painsharp01.wav"), + Sound("vo/medic_painsharp02.wav"), + Sound("vo/medic_painsharp03.wav"), + Sound("vo/medic_painsharp04.wav"), + Sound("vo/medic_painsharp05.wav"), + Sound("vo/medic_painsharp06.wav"), + Sound("vo/medic_painsharp07.wav"), + Sound("vo/medic_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 150, -- primary + [TF_SECONDARY] = 150, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +CLASS.HasMedicRegeneration = true + +function CLASS:Initialize() + self:SetNWInt("Ubercharge", 0) + self:Give("tf_weapon_shotgun") + self:SelectWeapon("tf_weapon_shotgun") +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/melee_scout.lua b/gamemodes/tf/gamemode/playerclasses/melee_scout.lua new file mode 100644 index 000000000..62354fcec --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/melee_scout.lua @@ -0,0 +1,67 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 125 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout"), + surface.GetTextureID("hud/leaderboard_class_scout_d") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"TF_WEAPON_BAT"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/melee_scout_expert.lua b/gamemodes/tf/gamemode/playerclasses/melee_scout_expert.lua new file mode 100644 index 000000000..f382ae441 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/melee_scout_expert.lua @@ -0,0 +1,75 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 125 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout"), + surface.GetTextureID("hud/leaderboard_class_scout_d") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"TF_WEAPON_BAT"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + GAMEMODE:StartCritBoost(self) +end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/melee_scout_sandman.lua b/gamemodes/tf/gamemode/playerclasses/melee_scout_sandman.lua new file mode 100644 index 000000000..480cf4a38 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/melee_scout_sandman.lua @@ -0,0 +1,67 @@ +CLASS.Name = "Sandman Scout" +CLASS.Speed = 400 +CLASS.Health = 115 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_stun_giant"), + surface.GetTextureID("hud/leaderboard_class_scout_stun_giant") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Sandman"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/merasmus.lua b/gamemodes/tf/gamemode/playerclasses/merasmus.lua new file mode 100644 index 000000000..ea4ce358e --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/merasmus.lua @@ -0,0 +1,74 @@ +CLASS.Name = "Sniper" +CLASS.Speed = 520 +CLASS.Health = 1000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demoknight"), + surface.GetTextureID("hud/leaderboard_class_demoknight") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"Kukri"} +CLASS.ModelName = "sniper" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 16, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + self:SetModel("models/bots/merasmus/merasmus.mdl") + self:SetSkin(1) + self:EmitSound("vo/halloween_boss/knight_spawn.mp3",0,100) + self:EmitSound("Halloween.MerasmusAppears",0,100) + ParticleEffectAttach("halloween_boss_summon", PATTACH_ABSORIGIN_FOLLOW, self, 0) + ParticleEffectAttach("ghost_pumpkin", PATTACH_ABSORIGIN_FOLLOW, self, 0) + end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/mercenary.lua b/gamemodes/tf/gamemode/playerclasses/mercenary.lua new file mode 100644 index 000000000..04b7e3714 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/mercenary.lua @@ -0,0 +1,73 @@ +CLASS.Name = "Mercenary" +CLASS.Speed = 300 +CLASS.Health = 150 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_mercenaryred"), + surface.GetTextureID("hud/class_mercenaryblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_spy"), + surface.GetTextureID("hud/leaderboard_class_spy") + } +end + +CLASS.Loadout = {"tf_weapon_fists"} +CLASS.DefaultLoadout = {"Frying Pan","Pistol","Original"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 20, -- primary + [TF_SECONDARY] = 200, -- secondary + [TF_METAL] = 220, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/player/mercenary.mdl") +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/metrocop.lua b/gamemodes/tf/gamemode/playerclasses/metrocop.lua new file mode 100644 index 000000000..accf7f0fb --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/metrocop.lua @@ -0,0 +1,52 @@ +CLASS.Name = "Metrocop" +CLASS.Speed = 300 +CLASS.Health = 160 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("decals/lambdaspray_2a"), + surface.GetTextureID("decals/lambdaspray_2a") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_spy"), + surface.GetTextureID("hud/leaderboard_class_spy") + } +end + +CLASS.Loadout = {"tf_weapon_wrench_vagineer","tf_weapon_pistol_m9","tf_weapon_trenchknife"} +CLASS.ModelName = "scout" + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 110, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 2, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_PYRO_START, + [GIB_RIGHTLEG] = GIBS_PYRO_START+1, + [GIB_LEFTARM] = GIBS_PYRO_START+2, + [GIB_RIGHTARM] = GIBS_PYRO_START+3, + [GIB_TORSO] = GIBS_PYRO_START+5, + [GIB_TORSO2] = GIBS_PYRO_START+4, + [GIB_EQUIPMENT1] = GIBS_PYRO_START+6, + [GIB_HEAD] = GIBS_PYRO_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + }, + painsevere = { + }, + painsharp = { + }, +} + +if SERVER then + function CLASS:Initialize() + self:SetModel("models/police.mdl") + end +end diff --git a/gamemodes/tf/gamemode/playerclasses/poisonzombie.lua b/gamemodes/tf/gamemode/playerclasses/poisonzombie.lua new file mode 100644 index 000000000..eca78560c --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/poisonzombie.lua @@ -0,0 +1,121 @@ +CLASS.Name = "Poison Zombie" +CLASS.Speed = 3 * 70 +CLASS.Health = 500 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "zombie_fast" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:EmitSound("NPC_PoisonZombie.Idle") + self:SetModel("models/Zombie/Poison.mdl") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/pyro.lua b/gamemodes/tf/gamemode/playerclasses/pyro.lua new file mode 100644 index 000000000..d51d50beb --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/pyro.lua @@ -0,0 +1,83 @@ +CLASS.Name = "Pyro" +CLASS.Speed = 300 +CLASS.Health = 175 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_pyrored"), + surface.GetTextureID("hud/class_pyroblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_pyro"), + surface.GetTextureID("hud/leaderboard_class_pyro_d") + } +end + +CLASS.Loadout = {"tf_weapon_flamethrower", "tf_weapon_shotgun_pyro", "tf_weapon_fireaxe"} +CLASS.DefaultLoadout = {"TF_WEAPON_FLAMETHROWER","TF_WEAPON_SHOTGUN_PYRO","Fire Axe"} +CLASS.ModelName = "pyro" +CLASS.Fireproof = true + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_PYRO_START, + [GIB_RIGHTLEG] = GIBS_PYRO_START+1, + [GIB_LEFTARM] = GIBS_PYRO_START+2, + [GIB_RIGHTARM] = GIBS_PYRO_START+3, + [GIB_TORSO] = GIBS_PYRO_START+5, + [GIB_TORSO2] = GIBS_PYRO_START+4, + [GIB_EQUIPMENT1] = GIBS_PYRO_START+6, + [GIB_HEAD] = GIBS_PYRO_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/pyro_paincrticialdeath01.wav"), + Sound("vo/pyro_paincrticialdeath02.wav"), + Sound("vo/pyro_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/pyro_painsevere01.wav"), + Sound("vo/pyro_painsevere02.wav"), + Sound("vo/pyro_painsevere03.wav"), + Sound("vo/pyro_painsevere04.wav"), + Sound("vo/pyro_painsevere05.wav"), + Sound("vo/pyro_painsevere06.wav"), + }, + painsharp = { + Sound("vo/pyro_painsharp01.wav"), + Sound("vo/pyro_painsharp02.wav"), + Sound("vo/pyro_painsharp03.wav"), + Sound("vo/pyro_painsharp04.wav"), + Sound("vo/pyro_painsharp05.wav"), + Sound("vo/pyro_painsharp06.wav"), + Sound("vo/pyro_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==PLAYER_PREFIRE then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==PLAYER_POSTFIRE then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = _E[actname] + self:RestartGesture(act2) + return true + end +end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/pyro_flare.lua b/gamemodes/tf/gamemode/playerclasses/pyro_flare.lua new file mode 100644 index 000000000..fed71a365 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/pyro_flare.lua @@ -0,0 +1,83 @@ +CLASS.Name = "Pyro" +CLASS.Speed = 300 +CLASS.Health = 175 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_pyrored"), + surface.GetTextureID("hud/class_pyroblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_pyro"), + surface.GetTextureID("hud/leaderboard_class_pyro_d") + } +end + +CLASS.Loadout = {"tf_weapon_flamethrower", "tf_weapon_shotgun_pyro", "tf_weapon_fireaxe"} +CLASS.DefaultLoadout = {"Flare Gun"} +CLASS.ModelName = "pyro" +CLASS.Fireproof = true + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_PYRO_START, + [GIB_RIGHTLEG] = GIBS_PYRO_START+1, + [GIB_LEFTARM] = GIBS_PYRO_START+2, + [GIB_RIGHTARM] = GIBS_PYRO_START+3, + [GIB_TORSO] = GIBS_PYRO_START+5, + [GIB_TORSO2] = GIBS_PYRO_START+4, + [GIB_EQUIPMENT1] = GIBS_PYRO_START+6, + [GIB_HEAD] = GIBS_PYRO_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/pyro_paincrticialdeath01.wav"), + Sound("vo/pyro_paincrticialdeath02.wav"), + Sound("vo/pyro_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/pyro_painsevere01.wav"), + Sound("vo/pyro_painsevere02.wav"), + Sound("vo/pyro_painsevere03.wav"), + Sound("vo/pyro_painsevere04.wav"), + Sound("vo/pyro_painsevere05.wav"), + Sound("vo/pyro_painsevere06.wav"), + }, + painsharp = { + Sound("vo/pyro_painsharp01.wav"), + Sound("vo/pyro_painsharp02.wav"), + Sound("vo/pyro_painsharp03.wav"), + Sound("vo/pyro_painsharp04.wav"), + Sound("vo/pyro_painsharp05.wav"), + Sound("vo/pyro_painsharp06.wav"), + Sound("vo/pyro_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==PLAYER_PREFIRE then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==PLAYER_POSTFIRE then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = _E[actname] + self:RestartGesture(act2) + return true + end +end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/rebel.lua b/gamemodes/tf/gamemode/playerclasses/rebel.lua new file mode 100644 index 000000000..54022e699 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/rebel.lua @@ -0,0 +1,52 @@ +CLASS.Name = "John" +CLASS.Speed = 300 +CLASS.Health = 80 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_rebelred"), + surface.GetTextureID("hud/class_rebelblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_spy"), + surface.GetTextureID("hud/leaderboard_class_spy") + } +end + +CLASS.Loadout = {"tf_weapon_capsulelauncher","tf_weapon_trenchknife"} +CLASS.ModelName = "scout" + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 110, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 2, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_PYRO_START, + [GIB_RIGHTLEG] = GIBS_PYRO_START+1, + [GIB_LEFTARM] = GIBS_PYRO_START+2, + [GIB_RIGHTARM] = GIBS_PYRO_START+3, + [GIB_TORSO] = GIBS_PYRO_START+5, + [GIB_TORSO2] = GIBS_PYRO_START+4, + [GIB_EQUIPMENT1] = GIBS_PYRO_START+6, + [GIB_HEAD] = GIBS_PYRO_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + }, + painsevere = { + }, + painsharp = { + }, +} + +if SERVER then + function CLASS:Initialize() + self:SetModel("models/humans/group01/male_07.mdl") + end +end diff --git a/gamemodes/tf/gamemode/playerclasses/samuraidemo.lua b/gamemodes/tf/gamemode/playerclasses/samuraidemo.lua new file mode 100644 index 000000000..2ade9e8fd --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/samuraidemo.lua @@ -0,0 +1,74 @@ +CLASS.Name = "Demoman" +CLASS.Speed = 280 +CLASS.Health = 650 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demoknight_samurai"), + surface.GetTextureID("hud/leaderboard_class_demoknight_samurai") + } +end + +CLASS.Loadout = {} +CLASS.DefaultLoadout = {"Splendid Screen","Half-Zatoichi","Samur-Eye"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 16, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + self:SetModelScale(1.5) + timer.Simple(0.2, function() + + self:SetJumpPower(self.PlayerJumpPower * 2.3) + + end) + end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/saxton.lua b/gamemodes/tf/gamemode/playerclasses/saxton.lua new file mode 100644 index 000000000..bec829e5b --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/saxton.lua @@ -0,0 +1,140 @@ +CLASS.Name = "Saxton" +CLASS.Speed = 520 +CLASS.Health = 1000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_saxtonred"), + surface.GetTextureID("hud/class_saxtonblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy"), + surface.GetTextureID("hud/leaderboard_class_heavy_d") + } +end + +CLASS.Loadout = {"tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModel("models/player/saxton_hale.mdl") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/scout.lua b/gamemodes/tf/gamemode/playerclasses/scout.lua new file mode 100644 index 000000000..a5899f146 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/scout.lua @@ -0,0 +1,67 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 125 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout"), + surface.GetTextureID("hud/leaderboard_class_scout_d") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"TF_WEAPON_SCATTERGUN", "TF_WEAPON_PISTOL_SCOUT", "TF_WEAPON_BAT"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/scout_shortstop.lua b/gamemodes/tf/gamemode/playerclasses/scout_shortstop.lua new file mode 100644 index 000000000..777363914 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/scout_shortstop.lua @@ -0,0 +1,73 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 * 1.25 +CLASS.Health = 650 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout"), + surface.GetTextureID("hud/leaderboard_class_scout_d") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Shortstop"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} + +if SERVER then + function CLASS:Initialize() + self:SetModelScale(1.4) + end +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/scoutfan.lua b/gamemodes/tf/gamemode/playerclasses/scoutfan.lua new file mode 100644 index 000000000..e42dd0816 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/scoutfan.lua @@ -0,0 +1,67 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 +CLASS.Health = 125 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_fan"), + surface.GetTextureID("hud/leaderboard_class_scout_fan") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Force-a-Nature","Bolt Boy","Fed-Fightin' Fedora"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/sentrybuster.lua b/gamemodes/tf/gamemode/playerclasses/sentrybuster.lua new file mode 100644 index 000000000..81893d4e3 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/sentrybuster.lua @@ -0,0 +1,264 @@ +CLASS.Name = "Sentry Buster" +CLASS.Speed = 400 +CLASS.Health = 2500 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("vgui/entities/npc_mvm_sentrybuster"), + surface.GetTextureID("vgui/entities/npc_mvm_sentrybuster") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_sentry_buster"), + surface.GetTextureID("hud/leaderboard_class_sentry_buster") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {"Ullapool Caber"} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 16, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + self:SetModel("models/bots/demo/bot_sentry_buster.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) + for k,v in pairs(player.GetAll()) do + if not v:IsFriendly(self) and v:Alive() and not v:IsHL2() then + if v:GetPlayerClass() == "heavy" then + v:EmitSound("vo/heavy_mvm_sentry_buster01.mp3", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "medic" then + v:EmitSound("vo/medic_mvm_sentry_buster01.mp3", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "soldier" then + v:EmitSound("vo/soldier_mvm_sentry_buster01.mp3", 85, 100, 1, CHAN_REPLACE) + elseif v:GetPlayerClass() == "engineer" then + v:EmitSound("vo/engineer_mvm_sentry_buster01.mp3", 85, 100, 1, CHAN_REPLACE) + end + end + end + umsg.Start("TF_PlayGlobalSound") + umsg.String("Announcer.MVM_Sentry_Buster_Alert") + umsg.End() + self:StopSound("MVM.SentryBusterIntro") + self:StopSound("MVM.SentryBusterLoop") + self:EmitSound("MVM.SentryBusterIntro") + self:EmitSound("MVM.SentryBusterLoop") + self:SetModel("models/bots/demo/bot_sentry_buster.mdl") + self:SetHealth(3600) + self:StripWeapon("tf_weapon_grenadelauncher") + self:StripWeapon("tf_weapon_pipebomblauncher") + self:SetModelScale(1.75) + + timer.Create("SentryBusterIntroLoop", 4, 0, function() + if not self:Alive() then timer.Stop("SentryBusterIntroLoop") return end + if self:GetPlayerClass() != "sentrybuster" then timer.Stop("SentryBusterIntroLoop") return end + self:EmitSound("MVM.SentryBusterIntro") + end) + + timer.Create("SentryBusterExplodeNearSentry"..self:EntIndex(), 0.1, 0, function() + if self:GetPlayerClass() != "sentrybuster" then timer.Stop("SentryBusterExplodeNearSentry"..self:EntIndex()) return end + if self:GetPlayerClass() != "sentrybuster" then return end + for _,building in pairs(ents.FindInSphere(self:GetPos(), 44)) do + if building:GetClass() == "obj_sentrygun" then + self:SetNoDraw(true) + self:EmitSound("MVM.SentryBusterSpin") + self:SetNWBool("Taunting", true) + self:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + net.Send(self) + local animent = ents.Create( 'base_gmodentity' ) -- The entity used as a reference for the bone positioning + animent:SetModel( self:GetModel() ) + animent:SetModelScale( self:GetModelScale() ) + animent:SetPos( self:GetPos() ) + animent:SetAngles( self:GetAngles() ) + animent:SetNoDraw( false ) -- The ragdoll is the thing getting seen + animent:SetParent(self) + animent:Spawn() + + animent:SetSequence( "sentry_buster_preexplode" ) -- If the sequence isn't valid, the sequence length is 0, so the timer takes care of things + animent:SetPlaybackRate( 1 ) + animent.AutomaticFrameAdvance = true + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetMoveType( MOVETYPE_FLYGRAVITY ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:PhysWake() + + function animent:Think() -- This makes the animation work + self:NextThink( CurTime() ) + return true + end + timer.Simple(2.5, function() + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + if animent:IsValid() then + animent:Remove() + end + + self:EmitSound("MvM.SentryBusterExplode") + self:EmitSound("MvM.SentryBusterExplode") + self:EmitSound("MvM.SentryBusterExplode") + self:SetNoDraw(false) + + self:SetNWBool("Taunting", false) + self:SetNWBool("NoWeapon", false) + net.Start("DeActivateTauntCam") + net.Send(self) + if self:GetRagdollEntity():IsValid() then + self:GetRagdollEntity():Remove() + end + for k,v in pairs(ents.FindInSphere(self:GetPos(), 500)) do + if !v:IsPlayer() and v:Health() >= 0 and not v:IsFriendly(self) then + v:TakeDamage( v:Health(), self, self:GetActiveWeapon() ) + elseif v:IsPlayer() and not v:IsFriendly(self) and v:Alive() and v:Nick() != self:Nick() then + v:TakeDamage( v:Health(), self, self:GetActiveWeapon() ) + end + end + self:Kill(self) + end) + timer.Stop("SentryBusterExplodeNearSentry"..self:EntIndex()) + end + end + end) + timer.Create("SentryBusterExplodeOnDeath", 0.1, 0, function() + if !self:Alive() then timer.Stop("SentryBusterExplodeOnDeath"..self:EntIndex()) return end + if self:GetPlayerClass() != "sentrybuster" then timer.Stop("SentryBusterExplodeOnDeath"..self:EntIndex()) return end + if self:GetPlayerClass() != "sentrybuster" then return end + if self:Health() <= 100 then + self:EmitSound("MVM.SentryBusterLoop") + self:EmitSound("MVM.SentryBusterSpin") + timer.Simple(0.1, function() + self:GodEnable() + self:SetNoDraw(true) + self:SetNWBool("Taunting", true) + self:SetNWBool("NoWeapon", true) + net.Start("ActivateTauntCam") + local animent = ents.Create( 'base_gmodentity' ) -- The entity used as a reference for the bone positioning + animent:SetModel( self:GetModel() ) + animent:SetModelScale( self:GetModelScale() ) + animent:SetPos( self:GetPos() + Vector(0,0,10) ) + animent:SetAngles( self:GetAngles() ) + animent:SetNoDraw( false ) -- The ragdoll is the thing getting seen + animent:Spawn() + + animent:SetSequence( "sentry_buster_preexplode" ) -- If the sequence isn't valid, the sequence length is 0, so the timer takes care of things + animent:SetPlaybackRate( 1 ) + animent.AutomaticFrameAdvance = true + + animent:SetSolid( SOLID_OBB ) -- This stuff isn't really needed, but just for physics + animent:PhysicsInit( SOLID_OBB ) + animent:SetMoveType( MOVETYPE_FLYGRAVITY ) + animent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + animent:PhysWake() + + function animent:Think() -- This makes the animation work + self:NextThink( CurTime() ) + return true + end + timer.Simple(2, function() + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + ParticleEffect("asplode_hoodoo_shockwave", self:GetPos() + Vector(0,0,35), self:GetAngles()) + + ParticleEffect("cinefx_goldrush_flash", self:GetPos(), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres", self:GetPos(), Angle()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fluidSmokeExpl_ring_mvm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,-50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(-50,50,25), self:GetAngles()) + ParticleEffect("fireSmoke_Collumn_mvmAcres_sm", self:GetPos() + Vector(50,-50,25), self:GetAngles()) + + if animent:IsValid() then + animent:Remove() + end + + self:EmitSound("MvM.SentryBusterExplode") + self:SetNoDraw(false) + self:GodDisable() + + self:SetNWBool("Taunting", false) + self:SetNWBool("NoWeapon", false) + net.Start("DeActivateTauntCam") + if self:GetRagdollEntity():IsValid() then + self:GetRagdollEntity():Remove() + end + for k,v in pairs(ents.FindInSphere(self:GetPos(), 500)) do + if v:IsNPC() and not v:IsFriendly(self) then + v:TakeDamage( v:Health(), self, self:GetActiveWeapon() ) + elseif v:IsPlayer() and not v:IsFriendly(self) then + v:TakeDamage( v:Health(), self, self:GetActiveWeapon() ) + end + end + self:Kill() + end) + end) + timer.Stop("SentryBusterExplodeOnDeath") + end + end) + end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/sniper.lua b/gamemodes/tf/gamemode/playerclasses/sniper.lua new file mode 100644 index 000000000..628216057 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/sniper.lua @@ -0,0 +1,58 @@ +CLASS.Name = "Sniper" +CLASS.Speed = 300 +CLASS.Health = 125 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_sniperred"), + surface.GetTextureID("hud/class_sniperblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_sniper"), + surface.GetTextureID("hud/leaderboard_class_sniper_d") + } +end + +CLASS.Loadout = {"tf_weapon_sniperrifle", "tf_weapon_smg", "tf_weapon_club"} +CLASS.DefaultLoadout = {"TF_WEAPON_SNIPERRIFLE", "TF_WEAPON_SMG", "TF_WEAPON_CLUB"} +CLASS.ModelName = "sniper" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SNIPER_START, + [GIB_RIGHTLEG] = GIBS_SNIPER_START+1, + [GIB_RIGHTARM] = GIBS_SNIPER_START+2, + [GIB_TORSO] = GIBS_SNIPER_START+3, + [GIB_HEAD] = GIBS_SNIPER_START+4, + [GIB_HEADGEAR1] = GIBS_SNIPER_START+5, + [GIB_HEADGEAR2] = GIBS_SNIPER_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/sniper_paincrticialdeath01.wav"), + Sound("vo/sniper_paincrticialdeath02.wav"), + Sound("vo/sniper_paincrticialdeath03.wav"), + Sound("vo/sniper_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/sniper_painsevere01.wav"), + Sound("vo/sniper_painsevere02.wav"), + Sound("vo/sniper_painsevere03.wav"), + Sound("vo/sniper_painsevere04.wav"), + }, + painsharp = { + Sound("vo/sniper_painsharp01.wav"), + Sound("vo/sniper_painsharp02.wav"), + Sound("vo/sniper_painsharp03.wav"), + Sound("vo/sniper_painsharp04.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 25, -- primary + [TF_SECONDARY] = 75, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/soldier.lua b/gamemodes/tf/gamemode/playerclasses/soldier.lua new file mode 100644 index 000000000..38eea0856 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/soldier.lua @@ -0,0 +1,65 @@ +CLASS.Name = "Soldier" +CLASS.Speed = 240 +CLASS.Health = 200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier"), + surface.GetTextureID("hud/leaderboard_class_soldier_d") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {"TF_WEAPON_ROCKETLAUNCHER", "TF_WEAPON_SHOTGUN_SOLDIER", "TF_WEAPON_SHOVEL"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 20, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/soldierblackbox.lua b/gamemodes/tf/gamemode/playerclasses/soldierblackbox.lua new file mode 100644 index 000000000..8df1e5f0a --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/soldierblackbox.lua @@ -0,0 +1,65 @@ +CLASS.Name = "Black Box Soldier" +CLASS.Speed = 240 +CLASS.Health = 400 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_blackbox"), + surface.GetTextureID("hud/leaderboard_class_soldier_blackbox") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {"Black Box"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 20, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/soldierbuffed.lua b/gamemodes/tf/gamemode/playerclasses/soldierbuffed.lua new file mode 100644 index 000000000..12c295012 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/soldierbuffed.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Buffed Concheror Soldier" +CLASS.Speed = 240 +CLASS.Health = 200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_soldierred"), + surface.GetTextureID("hud/class_soldierblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_soldier_conch_giant"), + surface.GetTextureID("hud/leaderboard_class_soldier_conch_giant") + } +end + +CLASS.Loadout = {"tf_weapon_rocketlauncher", "tf_weapon_shotgun_soldier", "tf_weapon_shovel"} +CLASS.DefaultLoadout = {"TF_WEAPON_ROCKETLAUNCHER", "Concheror"} +CLASS.ModelName = "soldier" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 20, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initalize() + timer.Simple(0.8, function() + self:SelectWeapon("tf_weapon_buff_item_conch") + self:GetActiveWeapon():PrimaryAttack() + end) + end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/spy.lua b/gamemodes/tf/gamemode/playerclasses/spy.lua new file mode 100644 index 000000000..d8140837a --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/spy.lua @@ -0,0 +1,57 @@ +CLASS.Name = "Spy" +CLASS.Speed = 320 +CLASS.Health = 125 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_spyred"), + surface.GetTextureID("hud/class_spyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_spy"), + surface.GetTextureID("hud/leaderboard_class_spy_d") + } +end + +CLASS.Loadout = {"tf_weapon_revolver", "tf_weapon_sapper", "tf_weapon_knife", "tf_weapon_pda_spy"} +CLASS.DefaultLoadout = {"TF_WEAPON_REVOLVER", "TF_WEAPON_KNIFE", "TF_WEAPON_PDA_SPY", "TF_WEAPON_INVIS", "TF_WEAPON_BUILDER_SPY"} +CLASS.ModelName = "spy" +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SPY_START, + [GIB_RIGHTLEG] = GIBS_SPY_START+1, + [GIB_LEFTARM] = GIBS_SPY_START+2, + [GIB_RIGHTARM] = GIBS_SPY_START+3, + [GIB_TORSO] = GIBS_SPY_START+5, + [GIB_TORSO2] = GIBS_SPY_START+4, + [GIB_HEAD] = GIBS_SPY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/spy_paincrticialdeath01.wav"), + Sound("vo/spy_paincrticialdeath02.wav"), + Sound("vo/spy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/spy_painsevere01.wav"), + Sound("vo/spy_painsevere02.wav"), + Sound("vo/spy_painsevere03.wav"), + Sound("vo/spy_painsevere04.wav"), + Sound("vo/spy_painsevere05.wav"), + }, + painsharp = { + Sound("vo/spy_painsharp01.wav"), + Sound("vo/spy_painsharp02.wav"), + Sound("vo/spy_painsharp03.wav"), + Sound("vo/spy_painsharp04.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 24, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} diff --git a/gamemodes/tf/gamemode/playerclasses/steelgauntlet.lua b/gamemodes/tf/gamemode/playerclasses/steelgauntlet.lua new file mode 100644 index 000000000..687588886 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/steelgauntlet.lua @@ -0,0 +1,120 @@ +CLASS.Name = "Heavy" +CLASS.Speed = 230 +CLASS.Health = 900 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy_steelfist"), + surface.GetTextureID("hud/leaderboard_class_heavy_steelfist") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Fists of Steel"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModelScale(1.5) +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/steelgauntletpusher.lua b/gamemodes/tf/gamemode/playerclasses/steelgauntletpusher.lua new file mode 100644 index 000000000..fe7496ada --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/steelgauntletpusher.lua @@ -0,0 +1,121 @@ +CLASS.Name = "Heavy" +CLASS.Speed = 230 +CLASS.Health = 900 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy_steelfist"), + surface.GetTextureID("hud/leaderboard_class_heavy_steelfist") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Fists of Steel","Carl"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModelScale(1.5) + self:GiveItem("The Carl") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/superheavyweightchamp.lua b/gamemodes/tf/gamemode/playerclasses/superheavyweightchamp.lua new file mode 100644 index 000000000..79ae98218 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/superheavyweightchamp.lua @@ -0,0 +1,139 @@ +CLASS.Name = "Giant Heavy" +CLASS.Speed = 230 * 0.5 +CLASS.Health = 5000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_heavyred"), + surface.GetTextureID("hud/class_heavyblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_heavy"), + surface.GetTextureID("hud/leaderboard_class_heavy_d") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"Killing Gloves of Boxing"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/heavy_boss/bot_heavy_boss.mdl") + self:SetViewOffset(Vector(0, 0, 126)) + self:SetModelScale(1.75) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/superscout.lua b/gamemodes/tf/gamemode/playerclasses/superscout.lua new file mode 100644 index 000000000..9cac64852 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/superscout.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Scout" +CLASS.Speed = 520 +CLASS.Health = 1200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast"), + surface.GetTextureID("hud/leaderboard_class_scout_giant_fast") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Holy Mackerel","Bonk Boy"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/superscoutfan.lua b/gamemodes/tf/gamemode/playerclasses/superscoutfan.lua new file mode 100644 index 000000000..74bbb8150 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/superscoutfan.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Scout" +CLASS.Speed = 400 * 1.1 +CLASS.Health = 1200 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_scoutred"), + surface.GetTextureID("hud/class_scoutblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_scout_fan"), + surface.GetTextureID("hud/leaderboard_class_scout_fan") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"Force-a-Nature","Bolt Boy","Fed-Fightin' Fedora"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SOLDIER_START, + [GIB_RIGHTLEG] = GIBS_SOLDIER_START+1, + [GIB_RIGHTARM] = GIBS_SOLDIER_START+2, + [GIB_TORSO] = GIBS_SOLDIER_START+5, + [GIB_EQUIPMENT1] = GIBS_SOLDIER_START+3, + [GIB_EQUIPMENT2] = GIBS_SOLDIER_START+4, + [GIB_HEAD] = GIBS_SOLDIER_START+6, + [GIB_HEADGEAR1] = GIBS_SOLDIER_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/soldier_paincrticialdeath01.wav"), + Sound("vo/soldier_paincrticialdeath02.wav"), + Sound("vo/soldier_paincrticialdeath03.wav"), + Sound("vo/soldier_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/soldier_painsevere01.wav"), + Sound("vo/soldier_painsevere02.wav"), + Sound("vo/soldier_painsevere03.wav"), + Sound("vo/soldier_painsevere04.wav"), + Sound("vo/soldier_painsevere05.wav"), + Sound("vo/soldier_painsevere06.wav"), + }, + painsharp = { + Sound("vo/soldier_painsharp01.wav"), + Sound("vo/soldier_painsharp02.wav"), + Sound("vo/soldier_painsharp03.wav"), + Sound("vo/soldier_painsharp04.wav"), + Sound("vo/soldier_painsharp05.wav"), + Sound("vo/soldier_painsharp06.wav"), + Sound("vo/soldier_painsharp07.wav"), + Sound("vo/soldier_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/bots/scout_boss/bot_scout_boss.mdl") + self:SetModelScale(1.75) + self:SetViewOffset(Vector(0, 0, 126)) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/telecon.lua b/gamemodes/tf/gamemode/playerclasses/telecon.lua new file mode 100644 index 000000000..27dde39b5 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/telecon.lua @@ -0,0 +1,75 @@ +CLASS.Name = "Telecon" +CLASS.Speed = 400 +CLASS.Health = 110 + +PrecacheParticleSystem("doublejump_puff") + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_teleconred"), + surface.GetTextureID("hud/class_teleconblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_teleporter"), + surface.GetTextureID("hud/leaderboard_class_teleporter") + } +end + +CLASS.Loadout = {"tf_weapon_scattergun", "tf_weapon_pistol_scout", "tf_weapon_bat"} +CLASS.DefaultLoadout = {"TF_WEAPON_SCATTERGUN", "TF_WEAPON_BAT"} +CLASS.ModelName = "scout" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_SCOUT_START, + [GIB_RIGHTLEG] = GIBS_SCOUT_START+1, + [GIB_LEFTARM] = GIBS_SCOUT_START+3, + [GIB_RIGHTARM] = GIBS_SCOUT_START+4, + [GIB_TORSO] = GIBS_SCOUT_START+5, + [GIB_TORSO2] = GIBS_SCOUT_START+2, + [GIB_HEAD] = GIBS_SCOUT_START+6, + [GIB_HEADGEAR1] = GIBS_SCOUT_START+7, + [GIB_HEADGEAR2] = GIBS_SCOUT_START+8, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/scout_paincrticialdeath01.wav"), + Sound("vo/scout_paincrticialdeath02.wav"), + Sound("vo/scout_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/scout_painsevere01.wav"), + Sound("vo/scout_painsevere02.wav"), + Sound("vo/scout_painsevere03.wav"), + Sound("vo/scout_painsevere04.wav"), + Sound("vo/scout_painsevere05.wav"), + Sound("vo/scout_painsevere06.wav"), + }, + painsharp = { + Sound("vo/scout_painsharp01.wav"), + Sound("vo/scout_painsharp02.wav"), + Sound("vo/scout_painsharp03.wav"), + Sound("vo/scout_painsharp04.wav"), + Sound("vo/scout_painsharp05.wav"), + Sound("vo/scout_painsharp06.wav"), + Sound("vo/scout_painsharp07.wav"), + Sound("vo/scout_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 32, -- primary + [TF_SECONDARY] = 36, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 1, -- grenades1 + [TF_GRENADES2] = 1, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self:SetModel("models/player/telecon.mdl") +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/ubermedic.lua b/gamemodes/tf/gamemode/playerclasses/ubermedic.lua new file mode 100644 index 000000000..3ae1b5c0d --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/ubermedic.lua @@ -0,0 +1,73 @@ +CLASS.Name = "Medic" +CLASS.Speed = 320 +CLASS.Health = 150 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_medicred"), + surface.GetTextureID("hud/class_medicblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_medic_uber"), + surface.GetTextureID("hud/leaderboard_class_medic_uber") + } +end + +CLASS.Loadout = {"tf_weapon_syringegun_medic", "tf_weapon_medigun", "tf_weapon_bonesaw"} +CLASS.DefaultLoadout = {"Syringe Gun","Quick-Fix"} +CLASS.ModelName = "medic" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_MEDIC_START, + [GIB_RIGHTLEG] = GIBS_MEDIC_START+1, + [GIB_LEFTARM] = GIBS_MEDIC_START+3, + [GIB_RIGHTARM] = GIBS_MEDIC_START+4, + [GIB_TORSO] = GIBS_MEDIC_START+5, + [GIB_TORSO2] = GIBS_MEDIC_START+2, + [GIB_HEAD] = GIBS_MEDIC_START+6, + [GIB_HEADGEAR1] = GIBS_MEDIC_START+7, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/medic_paincrticialdeath01.wav"), + Sound("vo/medic_paincrticialdeath02.wav"), + Sound("vo/medic_paincrticialdeath03.wav"), + Sound("vo/medic_paincrticialdeath04.wav"), + }, + painsevere = { + Sound("vo/medic_painsevere01.wav"), + Sound("vo/medic_painsevere02.wav"), + Sound("vo/medic_painsevere03.wav"), + Sound("vo/medic_painsevere04.wav"), + }, + painsharp = { + Sound("vo/medic_painsharp01.wav"), + Sound("vo/medic_painsharp02.wav"), + Sound("vo/medic_painsharp03.wav"), + Sound("vo/medic_painsharp04.wav"), + Sound("vo/medic_painsharp05.wav"), + Sound("vo/medic_painsharp06.wav"), + Sound("vo/medic_painsharp07.wav"), + Sound("vo/medic_painsharp08.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 150, -- primary + [TF_SECONDARY] = 150, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +CLASS.HasMedicRegeneration = true + +function CLASS:Initialize() + self:SetNWInt("Ubercharge", 0) +end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/witch.lua b/gamemodes/tf/gamemode/playerclasses/witch.lua new file mode 100644 index 000000000..7507487f3 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/witch.lua @@ -0,0 +1,74 @@ +CLASS.Name = "Witch" +CLASS.Speed = 3 * 105 +CLASS.Health = 1000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("vgui/logos/spray_stencil_witch_01"), + surface.GetTextureID("vgui/logos/spray_stencil_witch_01") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("vgui/logos/spray_stencil_witch_01"), + surface.GetTextureID("vgui/logos/spray_stencil_witch_01") + } +end + +CLASS.Loadout = {"tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "scout" +CLASS.IsL4D = true +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_HEAVY_START, + [GIB_RIGHTLEG] = GIBS_HEAVY_START+1, + [GIB_RIGHTARM] = GIBS_HEAVY_START+4, + [GIB_TORSO] = GIBS_HEAVY_START+5, + [GIB_TORSO2] = GIBS_HEAVY_START+3, + [GIB_EQUIPMENT1] = GIBS_HEAVY_START+2, + [GIB_EQUIPMENT2] = GIBS_HEAVY_START+2, + [GIB_HEAD] = GIBS_HEAVY_START+6, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + + function CLASS:Initialize() + self:SetModel("models/infected/witch.mdl") + end + +end diff --git a/gamemodes/tf/gamemode/playerclasses/wtfdemoman.lua b/gamemodes/tf/gamemode/playerclasses/wtfdemoman.lua new file mode 100644 index 000000000..2d5914611 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/wtfdemoman.lua @@ -0,0 +1,76 @@ +CLASS.Name = "Demoman" +CLASS.Speed = 280 * 2 +CLASS.Health = 1673000 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_demored"), + surface.GetTextureID("hud/class_demoblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("hud/leaderboard_class_demo"), + surface.GetTextureID("hud/leaderboard_class_demo_d") + } +end + +CLASS.Loadout = {"tf_weapon_grenadelauncher", "tf_weapon_pipebomblauncher", "tf_weapon_bottle"} +CLASS.DefaultLoadout = {} +CLASS.ModelName = "demo" + +CLASS.Gibs = { + [GIB_LEFTLEG] = GIBS_DEMOMAN_START, + [GIB_RIGHTLEG] = GIBS_DEMOMAN_START+1, + [GIB_LEFTARM] = GIBS_DEMOMAN_START+2, + [GIB_RIGHTARM] = GIBS_DEMOMAN_START+3, + [GIB_TORSO] = GIBS_DEMOMAN_START+4, + [GIB_HEAD] = GIBS_DEMOMAN_START+5, + [GIB_ORGAN] = GIBS_ORGANS_START, +} + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/demoman_paincrticialdeath01.wav"), + Sound("vo/demoman_paincrticialdeath02.wav"), + Sound("vo/demoman_paincrticialdeath03.wav"), + Sound("vo/demoman_paincrticialdeath04.wav"), + Sound("vo/demoman_paincrticialdeath05.wav"), + }, + painsevere = { + Sound("vo/demoman_painsevere01.wav"), + Sound("vo/demoman_painsevere02.wav"), + Sound("vo/demoman_painsevere03.wav"), + Sound("vo/demoman_painsevere04.wav"), + }, + painsharp = { + Sound("vo/demoman_painsharp01.wav"), + Sound("vo/demoman_painsharp02.wav"), + Sound("vo/demoman_painsharp03.wav"), + Sound("vo/demoman_painsharp04.wav"), + Sound("vo/demoman_painsharp05.wav"), + Sound("vo/demoman_painsharp06.wav"), + Sound("vo/demoman_painsharp07.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 1000000, -- primary + [TF_SECONDARY] = 24, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + if (!self:IsBot()) then + self:SetPlayerClass("gmodplayer") + return + end + self:SetModel("models/bots/demo/bot_demo.mdl") + self:SetModelScale(0.5) + self:StripWeapons() + self:Give("tf_weapon_wtf_launcher") +end + +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/playerclasses/zombie.lua b/gamemodes/tf/gamemode/playerclasses/zombie.lua new file mode 100644 index 000000000..657073f81 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/zombie.lua @@ -0,0 +1,120 @@ +CLASS.Name = "Zombie" +CLASS.Speed = 3 * 40 +CLASS.Health = 80 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModel("models/zombie/classic.mdl") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/playerclasses/zombine.lua b/gamemodes/tf/gamemode/playerclasses/zombine.lua new file mode 100644 index 000000000..c502d1d97 --- /dev/null +++ b/gamemodes/tf/gamemode/playerclasses/zombine.lua @@ -0,0 +1,121 @@ +CLASS.Name = "Zombiefast" +CLASS.Speed = 240 +CLASS.Health = 150 + +if CLIENT then + CLASS.CharacterImage = { + surface.GetTextureID("hud/class_zombiefastred"), + surface.GetTextureID("hud/class_zombiefastblue") + } + CLASS.ScoreboardImage = { + surface.GetTextureID("console/characters/zombie_heavy"), + surface.GetTextureID("console/characters/zombie_heavy") + } +end + +CLASS.Loadout = {"tf_weapon_minigun", "tf_weapon_shotgun_hwg", "tf_weapon_fists"} +CLASS.DefaultLoadout = {"TF_WEAPON_FISTS"} +CLASS.ModelName = "heavy" + +---------------------------------------- + +/* Setting this function to "true" prevents T posing when being moved while crouching with the minigun winded up, however also breaks the crouch movement animations. Relates to an animation blending issue not defined here, so I will set the value to "false" for debugging reasons. */ + +CLASS.NoDeployedCrouchwalk = false + +---------------------------------------- + + + +CLASS.Sounds = { + paincrticialdeath = { + Sound("vo/heavy_paincrticialdeath01.wav"), + Sound("vo/heavy_paincrticialdeath02.wav"), + Sound("vo/heavy_paincrticialdeath03.wav"), + }, + painsevere = { + Sound("vo/heavy_painsevere01.wav"), + Sound("vo/heavy_painsevere02.wav"), + Sound("vo/heavy_painsevere03.wav"), + }, + painsharp = { + Sound("vo/heavy_painsharp01.wav"), + Sound("vo/heavy_painsharp02.wav"), + Sound("vo/heavy_painsharp03.wav"), + Sound("vo/heavy_painsharp04.wav"), + Sound("vo/heavy_painsharp05.wav"), + }, +} + +CLASS.AmmoMax = { + [TF_PRIMARY] = 200, -- primary + [TF_SECONDARY] = 32, -- secondary + [TF_METAL] = 100, -- metal + [TF_GRENADES1] = 0, -- grenades1 + [TF_GRENADES2] = 0, -- grenades2 +} + +if SERVER then + +function CLASS:Initialize() + self.minigunfiretime = 0 + self:SetModel("models/player/zombine/zombie_soldier.mdl") + self:EmitSound("Zombine.Alert") +end + +function CLASS:PlayCustomGesture(anim, state) + local actname + if anim==10004 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_PREFIRE" + elseif anim==10005 then + actname = "ACT_MP_ATTACK_"..(WeaponGestureTranslateTable[state] or "STAND").."_POSTFIRE" + end + + if actname then + act2 = getfenv()[actname] + Msg("Gesture : "..actname.." : "..tostring(act2).."\n") + self:RestartGesture(act2) + return true + end +end + +function CLASS:OverrideActivity(anim, state) + if self:GetNWBool("MinigunReady") then + local actname = "" + + local wstate = WeaponGestureTranslateTable[state] or "STAND" + if wstate=="STAND" then + actname = "ACT_MP_DEPLOYED_" + else + actname = "ACT_MP_"..wstate.."_DEPLOYED_" + end + + if state=="STAND" or wstate=="CROUCH" then + actname = actname.."IDLE" + else + actname = actname.."PRIMARY" + end + + return getfenv()[actname] + end +end + +end + +-- This overrides the default primary walk animation speed while deployed as defined by the engine. +if CLIENT then + +function CLASS:ModifyMaxAnimSpeed(speed) + if self:GetNWBool("MinigunReady") then + return 12 + else + local w = self:GetActiveWeapon() + if w and w:IsValid() and w:GetClass()=="tf_weapon_minigun" then + return 30 + end + end + return speed +end + +end + diff --git a/gamemodes/tf/gamemode/ply_extension.lua b/gamemodes/tf/gamemode/ply_extension.lua new file mode 100644 index 000000000..0f152caad --- /dev/null +++ b/gamemodes/tf/gamemode/ply_extension.lua @@ -0,0 +1,1123 @@ + +-- General player extensions +local allowedtaunts = { + "1", + "2", + "3", + "4", + "5" +} + +rockpaperscissors = { + "taunt_rps_scissors_win", + "taunt_rps_scissors_lose", + "taunt_rps_paper_win", + "taunt_rps_paper_lose", + "taunt_rps_rock_win", + "taunt_rps_rock_lose", +} +rockpaperscissors2 = { + "taunt_rps_scissors_lose", + "taunt_rps_scissors_win", + "taunt_rps_paper_lose", + "taunt_rps_paper_win", + "taunt_rps_rock_lose", + "taunt_rps_rock_win", +} +rockpaperscissorsact = { + ACT_DOD_SPRINT_IDLE_BAR, + ACT_DOD_PRONEWALK_IDLE_BAR, + ACT_DOD_ZOOMLOAD_BAZOOKA, + ACT_DOD_RELOAD_PSCHRECK, + ACT_DOD_ZOOMLOAD_PSCHRECK, + ACT_DOD_RELOAD_DEPLOYED_FG42, +} + +local class_hidewep = { + "scout", + "soldier", + "pyro", + "engineer", + "medic", +} + +local wep = { + "tf_weapon_medigun", + "tf_weapon_pistol_scout", + "tf_weapon_rocketlauncher", + "tf_weapon_shotgun_pyro", + "tf_weapon_shotgun_primary", + "tf_weapon_syringegun_medic", +} + +local meta = FindMetaTable( "Player" ) +if (!meta) then return end +local builds = {} +builds[2] = "obj_sentrygun" +builds[0] = "obj_dispenser" +builds[1] = "obj_teleporter" +local Player = FindMetaTable("Player") + +function RegisterStatType(obj, name) + local name_get = name + local name_set = "Set"..name + local name_add = "Add"..name + local name_umsg = "__playerSet"..name + + obj[name_get] = function(self) + if not self.Stats then self.Stats = {} end + return self.Stats[name] or 0 + end + + if SERVER then + obj[name_set] = function(self, val) + if not self.Stats then self.Stats = {} end + self.Stats[name] = val + umsg.Start(name_umsg) + umsg.Entity(self) + umsg.Long(val) + umsg.End() + end + + obj[name_add] = function(self, val) + self[name_set](self, self[name_get](self) + val) + end + else + usermessage.Hook(name_umsg, function(msg) + local self = msg:ReadEntity() + if not IsValid(self) or not self:IsPlayer() then return end + if not self.Stats then self.Stats = {} end + self.Stats[name] = msg:ReadLong() + end) + end +end + +RegisterStatType(meta, "Kills") +RegisterStatType(meta, "Assists") +RegisterStatType(meta, "Destructions") + +RegisterStatType(meta, "Captures") +RegisterStatType(meta, "Defenses") +RegisterStatType(meta, "Dominations") +RegisterStatType(meta, "Revenges") + +RegisterStatType(meta, "Healing") +RegisterStatType(meta, "Invulns") +RegisterStatType(meta, "Teleports") +RegisterStatType(meta, "Headshots") + +RegisterStatType(meta, "Backstabs") +RegisterStatType(meta, "Bonus") + +-- Serverside + + +if SERVER then + +if not meta.SetFrags0 then + meta.SetFrags0 = meta.SetFrags +end +function meta:SetFrags(n) + if not self.Stats then self.Stats = {} end + self.Stats.Points = n + self:SetFrags0(math.floor(self.Stats.Points)) +end + +function meta:AddFrags(n) + if not self.Stats then self.Stats = {} end + self.Stats.Points = (self.Stats.Points or self:Frags()) + n + self:SetFrags0(math.floor(self.Stats.Points)) +end + +function meta:Explode(dmginfo) + if (self:IsL4D()) then return end + self.ShouldGib = true + umsg.Start("GibPlayer") + umsg.Long(self:UserID()) + umsg.Short(self.DeathFlags) + umsg.End() + --self:EmitSound(")player/gib"..math.random(1,3)..".wav", 95) + --self:EmitSound(")player/gibexplosion"..math.random(1,3)..".wav", 115) +end +if not meta.CreateRagdollOLD then + meta.CreateRagdollOLD = meta.CreateRagdoll +end + +function meta:CreateRagdoll() + self:CreateRagdollOLD() +end +function meta:IsNeutral() + return self:Team() == TEAM_NEUTRAL and !self:IsBot() +end +function meta:TFTaunt(args) + local ply = self + if SERVER then + if ply:IsHL2() then ply:SendLua("RunConsoleCommand('act','dance')") return end + if ply:GetNWBool("Taunting") == true then return end + if not ply:IsOnGround() then return end + if ply:WaterLevel() ~= 0 then return end + + if ply:GetPlayerClass() == "combinesoldier" then + EmitSentence( "COMBINE_THROW_GRENADE" .. math.random( 0, 4 ), ply:GetPos(), 1, CHAN_AUTO, 1, 75, 0, 100 ) + end + --[[if ply:GetInfoNum("tf_robot", 0) == 1 then ply:ChatPrint("You can't taunt as a robot!") return end + if ply:GetInfoNum("tf_giantrobot", 0) == 1 then ply:ChatPrint("You can't taunt as a mighty robot!") return end]] + if not table.HasValue(allowedtaunts, args[1]) then return end + for k,v in ipairs(ents.FindInSphere(ply:GetPos(), 120)) do + if v:GetNWBool("IWantToTaunt") == true then + self:SetNWBool("IWantToTauntToo", true) + end + end + if (IsValid(ply:GetActiveWeapon())) then + if (ply:GetActiveWeapon():GetClass() == "tf_weapon_lunchbox") then + ply:GetActiveWeapon():PrimaryAttack() + return + end + end + if ply:GetPlayerClass() != "spy" then + if table.KeyFromValue(allowedtaunts,args[1]) == 1 then + + if ply:GetWeapons()[1]:GetClass() == "weapon_crowbar" then + + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoAnimationEvent(ACT_GMOD_TAUNT_LAUGH, true) + + elseif ply:GetPlayerClass() == "combinesoldier" then + ply:DoAnimationEvent(ACT_SPECIAL_ATTACK1, true) + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + local frag = ents.Create("npc_grenade_frag") + net.Start("ActivateTauntCam") + net.Send(ply) + frag:SetPos(ply:EyePos() + ( ply:GetAimVector() * 16 ) ) + frag:SetAngles( ply:EyeAngles() ) + frag:SetOwner(ply) + + timer.Simple(0.6, function() + frag:Spawn() + + local phys = frag:GetPhysicsObject() + if ( !IsValid( phys ) ) then frag:Remove() return end + + + + local velocity = ply:GetAimVector() + velocity = velocity * 1000 + velocity = velocity + ( VectorRand() * 10 ) -- a random element + phys:ApplyForceCenter( velocity ) + frag:Fire("SetTimer",5,0) + frag:SetOwner(ply) + --timer.Simple(3.5,function() frag:Ignite() end) + end) + timer.Simple(1.2, function() + if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + --print("Taunt Finished") + net.Start("DeActivateTauntCam") + net.Send(ply) + end) + + end + + if ply:GetPlayerClass() == "pyro" then + if ply:GetWeapons()[1]:GetItemData().model_player == "models/weapons/c_models/c_rainblower/c_rainblower.mdl" then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoAnimationEvent(ACT_90_RIGHT, true) + timer.Simple(3.15, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + end + end + end) + else + + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + end + + elseif ply:GetPlayerClass() == "sniper" then + if ply:GetWeapons()[1]:GetClass() == "tf_weapon_compound_bow" then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_CROUCH_IDLE_PISTOL, true) + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + ply:GetActiveWeapon().NameOverride = "taunt_sniper" + timer.Simple(0.8, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(50, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:ConCommand("tf_stun_me") + v:TakeDamage(50, ply, ply) + end + end + end) + timer.Simple(2.3, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + end + end + end) + else + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + end + elseif ply:GetPlayerClass() == "heavy" then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + elseif ply:GetPlayerClass() == "medic" then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + elseif ply:GetPlayerClass() == "soldier" then + + if ply:GetWeapons()[1]:GetClass() == "tf_weapon_rocketlauncher_dh" then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED, true) + else + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + end + + elseif ply:GetPlayerClass() == "demoman" then + if ply:GetWeapons()[1]:GetClass() == "tf_weapon_grenadelauncher" then + ply:PlayScene("scenes/player/demoman/low/taunt08.vcd") + ply:DoTauntEvent("taunt02", true) + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + else + ply:DoAnimationEvent(ACT_DOD_CROUCHWALK_AIM_MP40, true) + ply:DoTauntEvent("taunt02", true) + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + end + elseif ply:GetPlayerClass() == "engineer" then + if ply:GetWeapons()[1]:GetClass() == "tf_weapon_sentry_revenge" then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED, true) + ply:PlayScene("scenes/player/engineer/low/taunt07.vcd") + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + ply:GetActiveWeapon().NameOverride = "taunt_guitar_kill" + local animent2 = ents.Create( 'base_gmodentity' ) -- The entity used for the death animation + animent2:SetModel("models/player/items/engineer/guitar.mdl") + animent2:SetAngles(ply:GetAngles()) + animent2:SetPos(ply:GetPos()) + animent2:Spawn() + animent2:Activate() + animent2:SetParent(ply) + animent2:AddEffects(EF_BONEMERGE) + animent2:SetName("GuitarModel"..ply:EntIndex()) + timer.Simple(4.2, function() + if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + --print("Taunt Finished") + net.Start("DeActivateTauntCam") + net.Send(ply) + animent2:Fire("Kill", "", 0.1) + end) + timer.Simple(3.7, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsNPC() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + end + end + end) + else + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + end + else + + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + + end + elseif table.KeyFromValue(allowedtaunts,args[1]) == 2 then + + if ply:GetPlayerClass() == "combinesoldier" then + ply:DoAnimationEvent(ACT_SPECIAL_ATTACK1, true) + ply:SetNWBool("Taunting", true) + ply:SetNWBool("NoWeapon", true) + local frag = ents.Create("npc_grenade_frag") + net.Start("ActivateTauntCam") + net.Send(ply) + frag:SetPos(ply:EyePos() + ( ply:GetAimVector() * 16 ) ) + frag:SetAngles( ply:EyeAngles() ) + frag:SetOwner(ply) + timer.Simple(0.6, function() + frag:Spawn() + + local phys = frag:GetPhysicsObject() + if ( !IsValid( phys ) ) then frag:Remove() return end + + + + local velocity = ply:GetAimVector() + velocity = velocity * 1000 + velocity = velocity + ( VectorRand() * 10 ) -- a random element + phys:ApplyForceCenter( velocity ) + frag:Fire("SetTimer",5,0) + frag:SetOwner(ply) + --timer.Simple(3.5,function() frag:Ignite() end) + end) + timer.Simple(1.2, function() + if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + --print("Taunt Finished") + net.Start("DeActivateTauntCam") + net.Send(ply) + end) + + + elseif ply:GetPlayerClass() == "demoman" then + if ply:GetWeapons()[2]:GetItemData().model_player == "models/weapons/c_models/c_scottish_resistance/c_scottish_resistance.mdl" then + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoTauntEvent("taunt08", true) + else + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoTauntEvent("taunt01", true) + end + elseif ply:GetPlayerClass() == "soldier" then + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoTauntEvent("taunt04", true) + elseif ply:GetPlayerClass() == "pyro" then + if ply:GetWeapons()[2]:GetClass() == "tf_weapon_flaregun" then + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoTauntEvent("taunt_scorch_shot", true) + timer.Simple(2, function() + ply:GetWeapons()[2]:PrimaryAttack() + ply:GetWeapons()[2]:ShootEffects() + end) + timer.Simple(4, function() + if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + --print("Taunt Finished") + net.Start("DeActivateTauntCam") + net.Send(ply) + end) + else + ply:GetActiveWeapon().NameOverride = "taunt_pyro" + timer.Simple(1.8, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + GAMEMODE:IgniteEntity(v, ply:GetActiveWeapon(), ply, 10) + end + end + end) + timer.Simple(2, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + end + end + end) + + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoTauntEvent("taunt02", true) + + end + else + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_CROUCHWALK_AIM_MP40, true) + end + elseif table.KeyFromValue(allowedtaunts,args[1]) == 3 then + if ply:GetPlayerClass() == "pyro" then + if ply:GetWeapons()[3]:GetClass() == "tf_weapon_neonsign" then + ply:EmitSound("player/sign_bass_solo.wav", 95, 100) + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + elseif ply:GetWeapons()[3]:GetItemData().model_player == "models/weapons/c_models/c_lollichop/c_lollichop.mdl" then + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoAnimationEvent(ACT_COVER_MED, true) + else + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + end + elseif ply:GetPlayerClass() == "soldier" then + if ply:GetWeapons()[3]:GetClass() == "tf_weapon_katana" then + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_RELOAD_DEPLOYED, true) + elseif ply:GetWeapons()[3]:GetClass() == "tf_weapon_pickaxe" then + ply:GetWeapons()[3].NameOverride = "taunt_soldier" + timer.Simple(3.5, function() + if !ply:Alive() then return end + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsNPC() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + local d = DamageInfo() + d:SetDamage( v:Health() ) + d:SetAttacker( ply ) + d:SetInflictor( ply:GetWeapons()[3] ) + d:SetDamageType( DMG_BLAST ) + v:TakeDamageInfo( d ) + v:EmitSound("TF_BaseExplosionEffect.Sound") + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + local d = DamageInfo() + d:SetDamage( v:Health() ) + d:SetAttacker( ply ) + d:SetInflictor( ply:GetWeapons()[3] ) + d:SetDamageType( DMG_BLAST ) + v:TakeDamageInfo( d ) + v:EmitSound("TF_BaseExplosionEffect.Sound") + end + end + timer.Simple(0.3, function() + + ply:EmitSound("TF_BaseExplosionEffect.Sound") + local dmg = DamageInfo() + dmg:SetDamage( ply:Health() ) + dmg:SetAttacker( ply ) + dmg:SetInflictor( ply:GetWeapons()[3] ) + dmg:SetDamageType( DMG_BLAST ) + ply:TakeDamageInfo( dmg ) + end) + end) + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoAnimationEvent(ACT_COVER_LOW, true) + else + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + end + elseif ply:GetPlayerClass() == "heavy" then + if (ply:GetActiveWeapon():GetItemData() and ply:GetActiveWeapon():GetItemData().item_type_name and ply:GetActiveWeapon():GetItemData().item_type_name == "#TF_Weapon_Gloves") then + ply:DoAnimationEvent(ACT_DOD_IDLE_ZOOMED,true) + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + else + ply:GetActiveWeapon().NameOverride = "taunt_heavy" + timer.Simple(1.7, function() + local dmginfo = DamageInfo() + dmginfo:SetDamageType(DMG_BULLET) + dmginfo:SetAttacker(ply) + dmginfo:SetInflictor(ply) + dmginfo:SetDamage(500) + dmginfo:SetDamageForce(ply:GetAimVector() * 800 + Vector(0,0,100)) + if ply:GetEyeTrace().Entity:IsNPC() and not ply:GetEyeTrace().Entity:IsFriendly(ply) then + ply:GetEyeTrace().Entity:TakeDamageInfo(dmginfo) + elseif ply:GetEyeTrace().Entity:IsPlayer() and not ply:GetEyeTrace().Entity:IsFriendly(ply) then + ply:GetEyeTrace().Entity:TakeDamageInfo(dmginfo) + end + end) + + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + end + elseif ply:GetPlayerClass() == "scout" then + if ply:GetWeapons()[3]:GetClass() == "tf_weapon_bat_wood" then + ply:GetActiveWeapon().NameOverride = "taunt_scout" + timer.Simple(4.2, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + v:EmitSound("player/pl_impact_stun_range.wav", 95) + end + end + end) + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoAnimationEvent(ACT_COVER_LOW, true) + else + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + end + elseif ply:GetPlayerClass() == "medic" then + timer.Simple(0.3, function() + if ply:GetWeapons()[3]:GetItemData().model_player == "models/workshop/weapons/c_models/c_uberneedle/c_uberneedle.mdl" then + ply:EmitSound("Taunt.MedicViolinUber") + elseif ply:GetWeapons()[3]:GetItemData().model_player != "models/weapons/c_models/c_ubersaw/c_ubersaw.mdl" then + ply:EmitSound("Taunt.MedicViolin") + end + end) + ply:DoTauntEvent("taunt03", true) + if ply:GetWeapons()[3]:GetItemData().model_player == "models/weapons/c_models/c_ubersaw/c_ubersaw.mdl" then + timer.Simple(2, function() + ply:GetActiveWeapon().NameOverride = "taunt_medic" + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + local d = DamageInfo() + d:SetDamage( 1 ) + d:SetAttacker( ply ) + d:SetInflictor( ply:GetActiveWeapon() ) + d:SetDamageType( DMG_BULLET ) + v:TakeDamage( d ) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + local d = DamageInfo() + d:SetDamage( 50 ) + d:SetAttacker( ply ) + d:SetInflictor( ply:GetActiveWeapon() ) + d:SetDamageType( DMG_BULLET ) + v:TakeDamageInfo( d ) + v:ConCommand("tf_stun_me") + end + end + end) + + timer.Simple(2.89, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + local d = DamageInfo() + d:SetDamage( 500 ) + d:SetAttacker( ply ) + d:SetInflictor( ply:GetActiveWeapon() ) + d:SetDamageType( DMG_BULLET ) + v:TakeDamageInfo( d ) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + local d = DamageInfo() + d:SetDamage( 500 ) + d:SetAttacker( ply ) + d:SetInflictor( ply:GetActiveWeapon() ) + d:SetDamageType( DMG_BULLET ) + v:TakeDamageInfo( d ) + end + end + end) + ply:DoTauntEvent("taunt08", true) + ply:PlayScene("scenes/player/medic/low/taunt08.vcd") + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + + end + elseif ply:GetPlayerClass() == "engineer" then + + if ply:GetWeapons()[3]:GetClass() == "tf_weapon_robot_arm" then + + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_STAND_AIM_KNIFE, true) + + + timer.Simple(3.3, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(50, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:ConCommand("tf_stun_me") + v:TakeDamage(50, ply, ply) + end + end + end) + timer.Simple(4.0, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + end + end + end) + timer.Simple(3.31, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + end + end + timer.Simple(0.1, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + end + end + timer.Simple(0.1, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + end + end + timer.Simple(0.1, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + end + end + timer.Simple(0.1, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + end + end + timer.Simple(0.1, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + elseif v:IsPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(1, ply, ply) + end + end + end) + end) + end) + end) + end) + end) + + else + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + end + + elseif ply:GetPlayerClass() == "demoman" then + if ply:GetWeapons()[3]:GetClass() == "tf_weapon_sword" or ply:GetWeapons()[3]:GetClass() == "tf_weapon_katana" then + ply:GetActiveWeapon().NameOverride = "taunt_demoman" + timer.Simple(2.5, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:AddDeathFlag(DF_DECAP) + v:TakeDamage(500, ply, ply) + end + end + end) + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoAnimationEvent(ACT_DOD_STAND_AIM_KNIFE, true) + else + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + end + else + + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt03", true) + + end + end + + else + if table.KeyFromValue(allowedtaunts,args[1]) == 1 then + ply:SelectWeapon(ply:GetWeapons()[1]:GetClass()) + ply:DoTauntEvent("taunt01", true) + elseif table.KeyFromValue(allowedtaunts,args[1]) == 3 then + timer.Simple(2, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(10, ply, ply) + ply:GetActiveWeapon().NameOverride = "taunt_spy" + end + end + end) + timer.Simple(2.5, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(10, ply, ply) + ply:GetActiveWeapon().NameOverride = "taunt_spy" + end + end + end) + timer.Simple(4, function() + for k,v in pairs(ents.FindInSphere(ply:GetPos(), 90)) do + if v:IsTFPlayer() and not v:IsFriendly(ply) and v:EntIndex() != ply:EntIndex() then + v:TakeDamage(500, ply, ply) + ply:GetActiveWeapon().NameOverride = "taunt_spy" + end + end + end) + ply:SelectWeapon(ply:GetWeapons()[2]:GetClass()) + ply:DoTauntEvent("taunt03", true) + elseif table.KeyFromValue(allowedtaunts,args[1]) == 4 then + ply:SelectWeapon(ply:GetWeapons()[3]:GetClass()) + ply:DoTauntEvent("taunt04", true) + elseif ply:GetActiveWeapon():GetClass() == "weapon_physcannon" then + ply:SelectWeapon("weapon_physcannon") + ply:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + elseif ply:GetActiveWeapon():GetClass() == "weapon_physgun" then + ply:SelectWeapon("weapon_physgun") + ply:DoAnimationEvent(ACT_DOD_HS_CROUCH_KNIFE, true) + end + end + ply:Speak("TLK_PLAYER_TAUNT") + ply:SetNWBool("Taunting", true) + if IsValid(ply:GetActiveWeapon()) and table.HasValue(wep, ply:GetActiveWeapon():GetClass()) then ply:SetNWBool("NoWeapon", true) end + net.Start("ActivateTauntCam") + net.Send(ply) + + if ply:GetPlayerClass() != "combinesoldier" then + --print(ply:GetNWBool("SpeechTime")) + timer.Simple(ply:GetNWBool("SpeechTime"), function() + if not IsValid(ply) or (not ply:Alive() and not ply:GetNWBool("Taunting")) then return end + ply:SetNWBool("Taunting", false) + ply:SetNWBool("NoWeapon", false) + --print("Taunt Finished") + net.Start("DeActivateTauntCam") + net.Send(ply) + if !ply:IsHL2() then + ply:GetActiveWeapon().NameOverride = ply:GetActiveWeapon():GetItemData().item_iconname + end + end) + end + end +end +function meta:Decap() + self.ShouldGib = true + if self:IsHL2() then + umsg.Start("GibNPCHead") + umsg.Long(self:UserID()) + umsg.Short(self.DeathFlags) + umsg.End() + else + umsg.Start("GibPlayerHead") + umsg.Long(self:UserID()) + umsg.Short(self.DeathFlags) + umsg.End() + end +end + + +function meta:SetBuilding(group, mode) + local builder = self:GetWeapon("tf_weapon_builder") + if self.Buildings[group] and self.Buildings[group][mode] then + local cost = self.Buildings[group][mode].cost + if self:GetAmmoCount(TF_METAL) < cost then + return false + end + + builder.dt.BuildGroup = group + builder.dt.BuildMode = mode + return true + end +end + +function meta:SetBuilding2(group, mode) + if self.Buildings[group] and self.Buildings[group][mode] then + self.dt.BuildGroup = group + self.dt.BuildMode = mode + return true + end +end + +local old_group_translate = { + [0] = {0,0}, + [1] = {1,0}, + [2] = {1,1}, + [3] = {2,0}, + [4] = {3,0}, +} + +function meta:Build(number1,number2) + local args + local group = tonumber(number1) + local sub = tonumber(number2) + + local builder = self:GetWeapon("tf_weapon_builder") + + if builds[group] and (!GetConVar("tf_unlimited_buildings"):GetBool()) then + local tab = ents.FindByClass(builds[group]) + for k, v in pairs(tab) do + if v.Player == self and builds[group] ~= "obj_teleporter" then + return + elseif v.Player == self and builds[group] == "obj_teleporter" then + for i, o in pairs(tab) do + if (sub == 0 and v:IsEntrance() and o:IsEntrance()) or (sub == 1 and v:IsExit() and o:IsExit()) then + return + end + end + end + end + end + builder:SetHoldType("BUILDING") + + builder.Moving = false + + timer.Simple(25, function() + if ( builder:IsValid() and builder.Moving != false and self:KeyPressed( IN_FORWARD ) ) then + --self:EmitSound("vo/engineer_sentrymoving0"..math.random(1,2)..".wav", 80, 100) + else + return + end + end) + + if not IsValid(builder) then return end + if not group then return end + + if not sub then + if not old_group_translate[group] then return end + + group, sub = unpack(old_group_translate[group]) + end + local Buildings = {} + local Buildings2 = {} + local Buildings3 = {} + local Buildings4 = {} + table.remove(Buildings, 1) + table.remove(Buildings2, 1) + local current = self:GetActiveWeapon() + for k,v in ipairs(ents.FindByClass("obj_sentrygun")) do + if IsValid(v) and v:GetOwner() == self then + table.insert(Buildings, v:EntIndex()) + PrintTable(Buildings) + elseif !IsValid(v) then + table.remove(Buildings, 1) + end + end + for k,v in ipairs(ents.FindByClass("obj_dispenser")) do + if IsValid(v) and v:GetOwner() == self then + table.insert(Buildings2, v:EntIndex()) + elseif !IsValid(v) then + table.remove(Buildings2, 1) + end + end + for k,v in ipairs(ents.FindByClass("obj_teleporter")) do + if IsValid(v) and v:GetOwner() == self then + table.insert(Buildings3, v:EntIndex()) + elseif !IsValid(v) then + table.remove(Buildings3, 1) + table.remove(Buildings3, 2) + end + end + if self:SetBuilding(group, sub) and current ~= builder then + if current.IsPDA then + local last = self:GetWeapon(self.LastWeapon) + if not IsValid(last) or last.IsPDA then + last = self:GetWeapons()[1] + end + builder.LastWeapon = last:GetClass() + self:SelectWeapon(last:GetClass()) + else + builder.LastWeapon = current:GetClass() + end + self:SelectWeapon("tf_weapon_builder") +end + +end +function meta:Move(number1,number2) + local group = tonumber(number1) + local sub = tonumber(number2) + if self:GetInfoNum("tf_robot", 0) == 1 then + --self:EmitSound("vo/mvm/norm/engineer_mvm_sentrypacking0"..math.random(1,3)..".wav", 80, 100) + else + --self:EmitSound("vo/engineer_sentrypacking0"..math.random(1,3)..".wav", 80, 100) + end + local builder = self:GetWeapon("tf_weapon_builder") + + if not IsValid(builder) then return end + if not group then return end + + builder:SetHoldType("BUILDING_DEPLOYED") + builder.HoldType = "BUILDING_DEPLOYED" + + if not sub then + if not old_group_translate[group] then return end + + group, sub = unpack(old_group_translate[group]) + end + + local current = self:GetActiveWeapon() + if builder:SetBuilding2(group, sub) and current ~= builder then + if current.IsPDA then + local last = self:GetWeapon(self.LastWeapon) + if not IsValid(last) or last.IsPDA then + last = self:GetWeapons()[1] + end + builder.LastWeapon = last:GetClass() + self:SelectWeapon(last:GetClass()) + else + builder.LastWeapon = current:GetClass() + end + self:SelectWeapon("tf_weapon_builder") + builder.Moving = true + end +end + +function meta:RandomSentence(group) + + local class = self.playerclass + if not class then return end + + --[[local tbl = class.Sounds[group] + self:EmitSound(tbl[math.random(1,#tbl)])]] + self:EmitSoundEx(Format("%s.%s", class, group)) +end + +function meta:StripTFItems() + self:StripWeapons() + self:StripAmmo() + + if self.PlayerItemList then + for _,v in ipairs(self.PlayerItemList) do + v:Remove() + end + end +end + +function meta:StripHats() + for _,v in pairs(ents.FindByClass("tf_hat")) do + if v:GetOwner() == self then + v:Remove() + end + end + + for i=1,10 do + self:SetBodygroup(i,0) + end +end + +function meta:GiveTFAmmo(c, am, is_fraction) + if c==0 then return end + + if not self.AmmoMax then + if c>0 then + return self:GiveAmmo(c, am) + else + return self:RemoveAmmo(-c, am) + end + end + + local a = self:GetAmmoCount(am) + + if is_fraction then + if c ~= nil and not self:IsHL2() then + c = math.ceil(c * self.AmmoMax[am]) + else + c = 0 + end + end + + if c>0 then + c = math.min(self.AmmoMax[am] - a, c) + if c>0 then + self:GiveAmmo(c, am) + if am == TF_METAL then + umsg.Start("PlayerMetalBonus", self) + umsg.Short(c) + umsg.End() + end + return true + end + else + self:RemoveAmmo(-c, am) + if am == TF_METAL then + umsg.Start("PlayerMetalBonus", self) + umsg.Short(-c) + umsg.End() + end + end + + return false +end + +function meta:SetAmmoCount(c, am) + local a = self:GetAmmoCount(am) + + if c > a then + self:GiveAmmo(c - a, am) + elseif c < a then + self:RemoveAmmo(a - c, am) + end +end + +function meta:HasFullAmmo() + for k,v in pairs(self.AmmoMax or {}) do + if self:GetAmmoCount(k) < v then + return false + end + end + return true +end + +function meta:ResetAttributes() + local c = self:GetPlayerClassTable() + + self.TempAttributes = {} + self:ResetClassSpeed(c.Speed or 100) + self:ResetMaxHealth() + self.AmmoMax = table.Copy(c.AmmoMax or {}) +end + +end + +-- Shared + +--[[function meta:GetCrouchedWalkSpeed() + return self:GetNWFloat("CrouchedWalkSpeed") +end + +function meta:GetWalkSpeed() + return 1 +end + +function meta:GetRunSpeed() + return 1 +end + +function meta:GetDuckSpeed() + return self:GetNWFloat("TimeToDuck") +end + +function meta:GetUnDuckSpeed() + return self:GetNWFloat("TimeToUnDuck") +end]] + +function meta:IsHL2() + return self:GetNWBool("IsHL2") +end + +function meta:ShouldUseDefaultHull() + if self ~= nil then + if GetConVar("tf_use_hl_hull_size") then + return self:GetNWBool("IsHL2") or self:GetNWBool("IsL4D") or GetConVar("tf_use_hl_hull_size"):GetInt() == 1 + end + end +end + +function meta:GetTFItems() + local t = self:GetWeapons() + if self.PlayerItemList then + table.Add(t, self.PlayerItemList) + end + return t +end + +function meta:HasTFItem(name) + if not name then return false end + + for _,v in ipairs(self:GetTFItems()) do + if v.IsTFItem and v:GetItemData().name == name then + return true + end + end + + return false +end + +--[[ +if CLIENT then + +usermessage.Hook("SendWeaponAnim", function(msg) + local act = msg:ReadShort() + local seq = GAMEMODE.Viewmodels[1][2]:SelectWeightedSequence(act) + if seq>=0 then + GAMEMODE.Viewmodels[1][2]:ResetSequence(seq) + GAMEMODE.Viewmodels[1][2]:SetCycle(0) + end +end) + +end + +meta.SendWeaponAnim0 = meta.SendWeaponAnim + +function meta:SendWeaponAnim(act) + self:SendWeaponAnim0(act) + + if SERVER then + umsg.Start("SendWeaponAnim", self) + umsg.Short(act) + umsg.End() + else + local seq = GAMEMODE.Viewmodels[1][2]:SelectWeightedSequence(act) + if seq>=0 then + GAMEMODE.Viewmodels[1][2]:ResetSequence(seq) + GAMEMODE.Viewmodels[1][2]:ResetSequenceInfo() + end + end +end +]] diff --git a/gamemodes/tf/gamemode/proxies/burnlevel.lua b/gamemodes/tf/gamemode/proxies/burnlevel.lua new file mode 100644 index 000000000..85de53450 --- /dev/null +++ b/gamemodes/tf/gamemode/proxies/burnlevel.lua @@ -0,0 +1 @@ + matproxy.Add({ name = "BurnLevel", init = function(self, mat, kv) self.Result = kv.resultvar end, bind = function(self, mat, ent) if (!IsValid(ent)) then return end local burnlevel = ent:GetProxyVar("BurnLevel") if (!ent:IsPlayer()) then burnlevel = ent:GetNWInt("BurnLevel") end if IsValid(ent) and burnlevel then mat:SetFloat("$detailblendfactor", burnlevel) elseif IsValid(ent) then mat:SetFloat("$detailblendfactor", 0) end end }) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/communityweapon.lua b/gamemodes/tf/gamemode/proxies/communityweapon.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/proxies/communityweapon.lua rename to gamemodes/tf/gamemode/proxies/communityweapon.lua diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/invulnlevel.lua b/gamemodes/tf/gamemode/proxies/invulnlevel.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/proxies/invulnlevel.lua rename to gamemodes/tf/gamemode/proxies/invulnlevel.lua diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/itemtintcolor.lua b/gamemodes/tf/gamemode/proxies/itemtintcolor.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/proxies/itemtintcolor.lua rename to gamemodes/tf/gamemode/proxies/itemtintcolor.lua diff --git a/gamemodes/tf/gamemode/proxies/modelglowcolor.lua b/gamemodes/tf/gamemode/proxies/modelglowcolor.lua new file mode 100644 index 000000000..fb9f50867 --- /dev/null +++ b/gamemodes/tf/gamemode/proxies/modelglowcolor.lua @@ -0,0 +1,61 @@ + +local DefaultGlowColor = Vector(1.0, 1.0, 1.0) + +--[[local ]] +GlowColorTable = { + { -- red + Vector(14.0, 1.0, 1.0), -- crit + Vector(9.0, 4.0, 1.0), -- minicrit + }, + { -- blue + Vector(1.0, 4.0, 14.0), -- crit + Vector(2.0, 9.0, 9.0), -- minicrit + }, + { -- red + Vector(14.0, 1.0, 1.0), -- crit + Vector(9.0, 4.0, 1.0), -- minicrit + }, + { -- blue + Vector(1.0, 4.0, 14.0), -- crit + Vector(2.0, 9.0, 9.0), -- minicrit + }, +} + +matproxy.Add({ + name = "ModelGlowColor", + init = function(self, mat, values) + self.ResultTo = values.resultvar + end, + + bind = function(self, mat, ent) + if (IsValid(ent) and IsValid(ent.Owner)) then + + local t2 = ent.Owner:GetProxyVar("CritTeam") + local s2 = ent.Owner:GetProxyVar("CritStatus") + if s2 and t2 then + mat:SetVector(self.ResultTo,GlowColorTable[t2][s2]) + else + mat:SetVector(self.ResultTo,DefaultGlowColor) + end + + elseif (IsValid(ent)) then + + local t2 = ent:GetProxyVar("CritTeam") + local s2 = ent:GetProxyVar("CritStatus") + if s2 and t2 then + mat:SetVector(self.ResultTo,GlowColorTable[t2][s2]) + else + mat:SetVector(self.ResultTo,DefaultGlowColor) + end + + end + end + +}) + +--[[ +function PROXY:GetMaterial() + if not self.Result then return end + + return self.Result:GetOwningMaterial() +end]] diff --git a/gamemodes/tf/gamemode/proxies/playercolor.lua b/gamemodes/tf/gamemode/proxies/playercolor.lua new file mode 100644 index 000000000..40cc5adee --- /dev/null +++ b/gamemodes/tf/gamemode/proxies/playercolor.lua @@ -0,0 +1,22 @@ +matproxy.Add({ + name = "PlayerColor", + init = function( self, mat, values ) + -- Store the name of the variable we want to set + self.ResultTo = values.resultvar + end, + bind = function( self, mat, ent ) + -- If the target ent has a function called GetPlayerColor then use that + -- The function SHOULD return a Vector with the chosen player's colour. + + -- In sandbox this function is created as a network function, + -- in player_sandbox.lua in SetupDataTables + if ( ent.GetPlayerColor ) then + local clr = ent.GetPlayerColor + mat:SetVector( self.ResultTo, clr ) + elseif (ent:GetOwner():GetNWEntity("RagdollEntity") == ent or ent.RagdollEntity == ent) then + + mat:SetVector( self.ResultTo, ent:GetOwner():GetPlayerColor() ) + + end + end +}) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/sniperriflecharge.lua b/gamemodes/tf/gamemode/proxies/sniperriflecharge.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/proxies/sniperriflecharge.lua rename to gamemodes/tf/gamemode/proxies/sniperriflecharge.lua diff --git a/gamemodes/tf/gamemode/proxies/spy_invis.lua b/gamemodes/tf/gamemode/proxies/spy_invis.lua new file mode 100644 index 000000000..3011304c3 --- /dev/null +++ b/gamemodes/tf/gamemode/proxies/spy_invis.lua @@ -0,0 +1,61 @@ + +local DefaultGlowColor = Vector(0.0, 0.0, 0.0) + +--[[local ]] +GlowColorTable = { + { -- red + Vector(14.0, 1.0, 1.0), -- crit + Vector(14.0, 1.0, 1.0), -- crit + }, + { -- blue + Vector(1.0, 4.0, 14.0), -- crit + Vector(1.0, 4.0, 14.0), -- crit + }, + { -- red + Vector(14.0, 1.0, 1.0), -- crit + Vector(14.0, 1.0, 1.0), -- crit + }, + { -- blue + Vector(1.0, 4.0, 14.0), -- crit + Vector(1.0, 4.0, 14.0), -- crit + }, +} + +matproxy.Add({ + name = "spy_invis", + init = function(self, mat, values) + self.ResultTo = values.resultvar + end, + + bind = function(self, mat, ent) + if (IsValid(ent) and IsValid(ent.Owner)) then + + local t2 = ent.Owner:GetProxyVar("CloakTint") + local s2 = ent.Owner:GetProxyVar("CloakLevel") + if s2 and t2 then + mat:SetVector(self.ResultTo,GlowColorTable[t2][s2]) + else + mat:SetVector(self.ResultTo,DefaultGlowColor) + end + + elseif (IsValid(ent)) then + + local t2 = ent.Owner:GetProxyVar("CloakTint") + local s2 = ent.Owner:GetProxyVar("CloakLevel") + if s2 and t2 then + mat:SetVector(self.ResultTo,GlowColorTable[t2][s2]) + else + mat:SetVector(self.ResultTo,DefaultGlowColor) + end + + end + end + +}) + +--[[ +function PROXY:GetMaterial() + if not self.Result then return end + + return self.Result:GetOwningMaterial() +end]] diff --git a/addon/gamemodes/teamfortress/gamemode/proxies/vm_invis.lua b/gamemodes/tf/gamemode/proxies/vm_invis.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/proxies/vm_invis.lua rename to gamemodes/tf/gamemode/proxies/vm_invis.lua diff --git a/gamemodes/tf/gamemode/proxies/weapon_invis.lua b/gamemodes/tf/gamemode/proxies/weapon_invis.lua new file mode 100644 index 000000000..027345f7b --- /dev/null +++ b/gamemodes/tf/gamemode/proxies/weapon_invis.lua @@ -0,0 +1,77 @@ +local bindfunc = function(self, mat, ent) + + if !IsValid(ent) then return end + + local factor = 0 + + if ent.ProxyentCloakEffect and ent.ProxyentCloakEffect.GetCloakTintVector then + mat:SetInt("$cloakPassEnabled", 1) + mat:SetVector("$cloakcolortint", ent.ProxyentCloakEffect:GetCloakTintVector()) + mat:SetFloat("$refractamount", ent.ProxyentCloakEffect:GetCloakRefractAmount()) + + //If the cloak effect is animated, then use CurTime() to determine what the cloak level should be at, otherwise use the static cloak factor value + if ent.ProxyentCloakEffect:GetCloakAnim() then + local diff = (ent.ProxyentCloakEffect.CloakAnimTargetTime or 0) - CurTime() + if ent.ProxyentCloakEffect:GetCloakAnimActive() then + //cloaking + if diff < 0 then + factor = 1 + else + factor = 1 - (diff / ent.ProxyentCloakEffect:GetCloakAnimTimeIn()) + end + else + //decloaking + if diff < 0 then + factor = 0 + else + factor = diff / ent.ProxyentCloakEffect:GetCloakAnimTimeOut() + end + end + else + factor = ent.ProxyentCloakEffect:GetCloakFactor() + end + + if ent.ProxyentCloakEffect:GetCloakDisablesShadow() then + //Tell the proxy ent to disable the ent's shadow if cloaked + if factor > 0.27 then + ent.ProxyentCloakEffect.ShouldDisableShadow = true + else + ent.ProxyentCloakEffect.ShouldDisableShadow = false + end + end + end + + mat:SetFloat("$cloakfactor", factor) + +end + + +matproxy.Add( +{ + name = "invis", + bind = bindfunc, +}) + +matproxy.Add( +{ + name = "spy_invis", + bind = bindfunc, +}) + +matproxy.Add( +{ + name = "weapon_invis", + bind = bindfunc, +}) + +matproxy.Add( +{ + name = "vm_invis", + bind = bindfunc, +}) + +matproxy.Add( +{ + name = "building_invis", + bind = bindfunc, +}) \ No newline at end of file diff --git a/gamemodes/tf/gamemode/proxies/yellowlevel.lua b/gamemodes/tf/gamemode/proxies/yellowlevel.lua new file mode 100644 index 000000000..657e107f9 --- /dev/null +++ b/gamemodes/tf/gamemode/proxies/yellowlevel.lua @@ -0,0 +1 @@ + local JaratedColor = Vector(2.0, 2.0, 0.7) local DefaultColor = Vector(1, 1, 1) matproxy.Add({ name = "YellowLevel", init = function(self, mat, kv) self.Result = kv.resultvar end, bind = function(self, mat, ent) if ent:GetProxyVar("Jarated") then mat:SetVector(self.Result, JaratedColor) else mat:SetVector(self.Result, DefaultColor) end end }) \ No newline at end of file diff --git a/gamemodes/tf/gamemode/shared.lua b/gamemodes/tf/gamemode/shared.lua new file mode 100644 index 000000000..36995ea15 --- /dev/null +++ b/gamemodes/tf/gamemode/shared.lua @@ -0,0 +1,2729 @@ +--[[ +local old_include = include + +function include(name) + local time_start = SysTime() + old_include(name) + --MsgN(Format("Included Lua file '%s', %f secs to load", name, SysTime() - time_start)) +end +]] + + +--If you ask me a question about why I'm using console commands trust me, this shit is golden + +resource.AddFile("models/weapons/c_models/c_scout_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_scout_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_scout_arms.mdl") +resource.AddFile("models/weapons/c_models/c_scout_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_scout_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_soldier_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_soldier_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_soldier_arms.mdl") +resource.AddFile("models/weapons/c_models/c_soldier_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_soldier_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_pyro_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_pyro_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_pyro_arms.mdl") +resource.AddFile("models/weapons/c_models/c_pyro_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_pyro_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_demo_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_demo_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_demo_arms.mdl") +resource.AddFile("models/weapons/c_models/c_demo_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_demo_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_heavy_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_heavy_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_heavy_arms.mdl") +resource.AddFile("models/weapons/c_models/c_heavy_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_heavy_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_engineer_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_engineer_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_engineer_arms.mdl") +resource.AddFile("models/weapons/c_models/c_engineer_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_engineer_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_medic_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_medic_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_medic_arms.mdl") +resource.AddFile("models/weapons/c_models/c_medic_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_medic_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_sniper_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_sniper_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_sniper_arms.mdl") +resource.AddFile("models/weapons/c_models/c_sniper_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_sniper_arms_empty.vvd") +resource.AddFile("models/weapons/c_models/c_spy_arms_empty.dx90.vtx") +resource.AddFile("models/weapons/c_models/c_spy_arms_empty.dx80.vtx") +resource.AddFile("models/weapons/c_models/c_spy_arms.mdl") +resource.AddFile("models/weapons/c_models/c_spy_arms_empty.sw.vtx") +resource.AddFile("models/weapons/c_models/c_spy_arms_empty.vvd") + +if CLIENT then + language.Add("tool.turn_into_gatebot.name", "Gate-Botizer") + language.Add("tool.turn_into_gatebot.desc", "Turn MvM TFBots into GateBots") + language.Add("tool.turn_into_gatebot.left", "Left-click: Turn a MvM Bot into a GateBot.") + language.Add("tool.reprogrammer.name", "Reprogrammer") + language.Add("tool.reprogrammer.desc", "Change the TFBot or NPC Team to the opposite team or your team.") + language.Add("tool.reprogrammer.left", "Left-click: Change TFBot or NPC team to the opposite team.") + language.Add("tool.reprogrammer.right", "Right-click: Change TFBot or NPC team to your team.") + + include("cl_hud.lua") + include("tf_lang_module.lua") + + include("cl_proxies.lua") + include("cl_pickteam.lua") + + include("cl_conflict.lua") + + include("cl_entclientinit.lua") + include("cl_deathnotice.lua") + include("cl_scheme.lua") + + include("cl_player_other.lua") + + include("cl_camera.lua") + + include("tf_draw_module.lua") + + include("cl_materialfix.lua") + + include("cl_pac.lua") + + include("cl_loadout.lua") +end + +sound.Add( { + name = "Telecon.Death", + volume = 0.820, + level = 95, + channel = CHAN_VOICE, + pitch = { 100 }, + sound = { "vo/telecon/painsevere1.wav","vo/telecon/painsevere2.wav","vo/telecon/painsevere3.wav", } +} ) +sound.Add( { + name = "Telecon.CritDeath", + volume = 0.820, + level = 95, + channel = CHAN_VOICE, + pitch = { 100 }, + sound = { "vo/telecon/critdeath1.wav","vo/telecon/critdeath2.wav", } +} ) +sound.Add( { + name = "Telecon.MeleeDeath", + volume = 0.820, + level = 95, + channel = CHAN_VOICE, + pitch = { 100 }, + sound = { "vo/telecon/critdeath1.wav","vo/telecon/critdeath2.wav", } +} ) +sound.Add( { + name = "Telecon.ExplosionDeath", + volume = 0.820, + level = 95, + channel = CHAN_VOICE, + pitch = { 100 }, + sound = { "vo/telecon/painsharp1.wav","vo/telecon/painsharp2.wav","vo/telecon/painsharp3.wav","vo/telecon/painsharp4.wav","vo/telecon/painsharp5.wav","vo/telecon/painsharp6.wav", } +} ) + +sound.Add( { + name = "Player.AmbientUnderWater", + volume = 0.22, + level = 75, + channel = CHAN_STATIC, + pitch = { 100 }, + sound = { "ambient/water/underwater.wav" } +} ) + +sound.Add( { + name = "RussianSong", + volume = 1.0, + level = 75, + channel = CHAN_STATIC, + pitch = { 100 }, + sound = { "taunts/cossack_sandvich_noloop.wav" } +} ) + +sound.Add( { + name = "Player.PickupWeapon", + volume = 0.7, + level = 75, + channel = CHAN_WEAPON, + pitch = { 100 }, + sound = { "items/ammo_pickup.wav" } +} ) + +sound.Add( { + name = "General.BurningObject", + level = 75, + channel = CHAN_WEAPON, + pitch = { 100 }, + sound = { "ambient/fire/fire_small_loop2.wav" } +} ) + +sound.Add( { + name = "BaseCombatCharacter.AmmoPickup", + volume = 0.7, + level = 75, + channel = CHAN_WEAPON, + pitch = { 100 }, + sound = { "items/ammo_pickup.wav" } +} ) + +sound.Add( { + name = "CongaSong", + volume = 1.0, + level = 75, + channel = CHAN_STATIC, + pitch = { 100 }, + sound = { "taunts/conga_sketch_167bpm_01-04_noloop.wav" } +} ) + +sound.Add( { + name = "Weapon_FlareGun.Reload", + volume = 1.0, + level = 75, + channel = CHAN_STATIC, + pitch = { 100 }, + sound = { ")weapons/grenade_launcher_drum_load.wav" } +} ) + +sound.Add( { + name = "Weapon_Shotgun.Reload", + volume = 1.0, + level = 75, + channel = CHAN_WEAPON, + pitch = { 100 }, + sound = { ")weapons/shotgun_reload.wav" } +} ) + +sound.Add( { + name = "SuitRecharge.Start", + volume = 0.75, + level = 75, + channel = CHAN_ITEM, + pitch = { 67 }, + sound = { ")items/spawn_item.wav" } +} ) +sound.Add( { + name = "Weapon_SMG1.Single", + volume = 1.0, + level = 120, + channel = CHAN_WEAPON, + pitch = { 94, 105 }, + sound = { ")weapons/smg1/smg1_fire1.wav" } +} ) +sound.Add( { + name = "Weapon_SMG1.Burst", + volume = 1.0, + level = 120, + pitch = { 94, 105 }, + channel = CHAN_WEAPON, + sound = { "weapons/smg1/smg1_fireburst1.wav" } +} ) +sound.Add( { + name = "Player.FallDamage", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_WEAPON, + sound = { "player/pl_fallpain.wav","player/pl_fallpain.wav","player/pl_fallpain.wav" } +} ) +sound.Add( { + name = "Player.FallGib", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_WEAPON, + sound = { "player/pl_fleshbreak.wav" } +} ) +sound.Add( { + name = "AlienSlavePowerup", + volume = 1.0, + level = 140, + channel = CHAN_WEAPON, + pitch = { 130 }, + sound = { "debris/zap4.wav" } +} ) +sound.Add( { + name = "AlienSlavePowerup2", + volume = 1.0, + level = 140, + channel = CHAN_WEAPON, + pitch = { 140 }, + sound = { "debris/zap4.wav" } +} ) +sound.Add( { + name = "AlienSlavePowerup3", + volume = 1.0, + level = 140, + channel = CHAN_WEAPON, + pitch = { 150 }, + sound = { "debris/zap4.wav" } +} ) +sound.Add( { + name = "AlienSlavePowerup4", + volume = 1.0, + level = 140, + channel = CHAN_WEAPON, + pitch = { 160 }, + sound = { "debris/zap4.wav" } +} ) +sound.Add( { + name = "Weapon_SuperShotGun.TubeOpen", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/supershotgun_tube_open.wav" } +} ) +sound.Add( { + name = "Weapon_SuperShotGun.TubeClose", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/supershotgun_tube_close.wav" } +} ) +sound.Add( { + name = "Weapon_SuperShotGun.ShellsIn", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/supershotgun_shells_in.wav" } +} ) +sound.Add( { + name = "Weapon_GrenadeLauncherDM.Cock_Back", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/grenade_launcher_dm_cock_back.wav" } +} ) + +sound.Add( { + name = "Weapon_Pistol.SlideForward", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/pistol_slideforward.wav" } +} ) +sound.Add( { + name = "Weapon_Pistol.SlideBack", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/pistol_slideback.wav" } +} ) +sound.Add( { + name = "Weapon_Pistol.ClipIn", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/pistol_clipin.wav" } +} ) +sound.Add( { + name = "Weapon_Pistol.ClipOut", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "weapons/pistol_clipout.wav" } +} ) + +sound.Add( { + name = "Weapon_Crowbar.Single", + volume = 1.0, + level = 90, + pitch = { 85, 100 }, + sound = { "^weapons/iceaxe/iceaxe_swing1.wav" } +} ) +sound.Add( { + name = "DosidoIntro", + volume = 1.0, + level = 90, + channel = CHAN_REPLACE, + pitch = { 100 }, + sound = { "music/fortress_reel_loop.wav" } +} ) +sound.Add( { + name = "Weapon_Crowbar_HL1.HitFlesh", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "^weapons/hl1/cbar_hitbod1.wav", "^weapons/hl1/cbar_hitbod2.wav", "^weapons/hl1/cbar_hitbod3.wav" } +} ) +sound.Add( { + name = "Weapon_Crowbar_HL1.HitWorld", + volume = 1.0, + level = 90, + pitch = { 100 }, + sound = { "^weapons/hl1/cbar_hit1.wav", "^weapons/hl1/cbar_hit2.wav"} +} ) +sound.Add( { + name = "ClassSelection.ThemeNonMVM", + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/class_menu_bg.wav"} +} ) +sound.Add( { + name = "ClassSelection.ThemeL4D", + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/unalive/themonsterswithin.wav"} +} ) + +sound.Add( { + name = "Tank.Yell", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = { "player/tank/voice/yell/tank_yell_01.wav","player/tank/voice/yell/tank_yell_02.wav","player/tank/voice/yell/tank_yell_03.wav","player/tank/voice/yell/tank_yell_04.wav","player/tank/voice/yell/tank_yell_05.wav","player/tank/voice/yell/tank_yell_06.wav","player/tank/voice/yell/tank_yell_07.wav","player/tank/voice/yell/tank_yell_08.wav","player/tank/voice/yell/tank_yell_09.wav","player/tank/voice/yell/tank_yell_10.wav","player/tank/voice/yell/tank_yell_11.wav","player/tank/voice/yell/tank_yell_12.wav","player/tank/voice/yell/tank_yell_13.wav","player/tank/voice/yell/tank_yell_14.wav","player/tank/voice/yell/hulk_yell_1.wav","player/tank/voice/yell/hulk_yell_2.wav","player/tank/voice/yell/hulk_yell_3.wav","player/tank/voice/yell/hulk_yell_4.wav","player/tank/voice/yell/hulk_yell_5.wav","player/tank/voice/yell/hulk_yell_6.wav","player/tank/voice/yell/hulk_yell_7.wav","player/tank/voice/yell/hulk_yell_8.wav"} +} ) +sound.Add( { + name = "Tank.Pain", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = { "player/tank/voice/pain/tank_pain_02.wav","player/tank/voice/pain/tank_pain_04.wav","player/tank/voice/pain/tank_pain_06.wav","player/tank/voice/pain/tank_pain_07.wav","player/tank/voice/pain/hulk_pain_1.wav","player/tank/voice/pain/hulk_pain_10.wav","player/tank/voice/pain/hulk_pain_11.wav","player/tank/voice/pain/hulk_pain_14.wav","player/tank/voice/pain/hulk_pain_8.wav","player/tank/voice/pain/hulk_pain_fire_3.wav","player/tank/voice/pain/hulk_pain_fire_4.wav","player/tank/voice/pain/tank_fire_07.wav","player/tank/voice/pain/tank_fire_01.wav","player/tank/voice/pain/tank_fire_02.wav","player/tank/voice/pain/tank_fire_03.wav","player/tank/voice/pain/tank_fire_04.wav","player/tank/voice/pain/tank_fire_05.wav","player/tank/voice/pain/tank_fire_06.wav","player/tank/voice/pain/tank_fire_07.wav" } +} ) +sound.Add( { + name = "Charger.Idle", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = {"player/charger/voice/alert/charger_alert_01.wav","player/charger/voice/alert/charger_alert_02.wav","player/charger/voice/idle/charger_lurk_01.wav","player/charger/voice/idle/charger_lurk_01.wav","player/charger/voice/idle/charger_lurk_02.wav","player/charger/voice/idle/charger_lurk_03.wav","player/charger/voice/idle/charger_lurk_04.wav","player/charger/voice/idle/charger_lurk_05.wav","player/charger/voice/idle/charger_lurk_06.wav","player/charger/voice/idle/charger_lurk_07.wav","player/charger/voice/idle/charger_lurk_08.wav","player/charger/voice/idle/charger_lurk_09.wav","player/charger/voice/idle/charger_lurk_10.wav","player/charger/voice/idle/charger_lurk_11.wav","player/charger/voice/idle/charger_lurk_14.wav","player/charger/voice/idle/charger_lurk_15.wav","player/charger/voice/idle/charger_lurk_16.wav","player/charger/voice/idle/charger_lurk_17.wav","player/charger/voice/idle/charger_lurk_18.wav","player/charger/voice/idle/charger_lurk_19.wav","player/charger/voice/idle/charger_lurk_20.wav","player/charger/voice/idle/charger_lurk_21.wav","player/charger/voice/idle/charger_lurk_22.wav","player/charger/voice/idle/charger_lurk_23.wav","player/charger/voice/idle/charger_spotprey_01.wav","player/charger/voice/idle/charger_spotprey_02.wav","player/charger/voice/idle/charger_spotprey_03.wav"} +} ) +sound.Add( { + name = "Jockey.Idle", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = {"player/jockey/voice/idle/jockey_lurk01.wav","player/jockey/voice/idle/jockey_lurk03.wav","player/jockey/voice/idle/jockey_lurk04.wav","player/jockey/voice/idle/jockey_lurk05.wav","player/jockey/voice/idle/jockey_lurk06.wav","player/jockey/voice/idle/jockey_lurk07.wav","player/jockey/voice/idle/jockey_lurk09.wav","player/jockey/voice/idle/jockey_lurk11.wav","player/jockey/voice/idle/jockey_recognize02.wav","player/jockey/voice/idle/jockey_recognize06.wav","player/jockey/voice/idle/jockey_recognize07.wav","player/jockey/voice/idle/jockey_recognize08.wav","player/jockey/voice/idle/jockey_recognize09.wav","player/jockey/voice/idle/jockey_recognize10.wav","player/jockey/voice/idle/jockey_recognize11.wav","player/jockey/voice/idle/jockey_recognize12.wav","player/jockey/voice/idle/jockey_recognize13.wav","player/jockey/voice/idle/jockey_recognize15.wav","player/jockey/voice/idle/jockey_recognize16.wav","player/jockey/voice/idle/jockey_recognize16.wav","player/jockey/voice/idle/jockey_recognize18.wav","player/jockey/voice/idle/jockey_recognize19.wav","player/jockey/voice/idle/jockey_recognize20.wav","player/jockey/voice/idle/jockey_recognize24.wav","player/jockey/voice/idle/jockey_spotprey_01.wav","player/jockey/voice/idle/jockey_spotprey_02.wav"} +} ) +sound.Add( { + name = "Jockey.Pain", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = { + "player/jockey/voice/pain/jockey_pain01.wav", + "player/jockey/voice/pain/jockey_pain02.wav", + "player/jockey/voice/pain/jockey_pain03.wav", + "player/jockey/voice/pain/jockey_pain04.wav", + "player/jockey/voice/pain/jockey_pain05.wav", + "player/jockey/voice/pain/jockey_pain06.wav", + "player/jockey/voice/pain/jockey_pain07.wav", + "player/jockey/voice/pain/jockey_pain08.wav" + } +} ) +sound.Add( { + name = "Hunter.Pain", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = { + "player/hunter/voice/pain/hunter_pain_05.wav", + "player/hunter/voice/pain/hunter_pain_08.wav", + "player/hunter/voice/pain/hunter_pain_09.wav", + "player/hunter/voice/pain/hunter_pain_12.wav", + "player/hunter/voice/pain/hunter_pain_13.wav", + "player/hunter/voice/pain/hunter_pain_14.wav", + "player/hunter/voice/pain/hunter_pain_15.wav", + } +} ) +sound.Add( { + name = "Smoker.Pain", + channel = CHAN_VOICE, + volume = 1.0, + level = 95, + pitch = { 100 }, + sound = { + "player/smoker/voice/pain/smoker_pain_02.wav", + "player/smoker/voice/pain/smoker_pain_03.wav", + "player/smoker/voice/pain/smoker_pain_04.wav", + "player/smoker/voice/pain/smoker_pain_05.wav", + "player/smoker/voice/pain/smoker_pain_06.wav", + "player/smoker/voice/pain/smoker_painshort_01.wav", + "player/smoker/voice/pain/smoker_painshort_02.wav", + "player/smoker/voice/pain/smoker_painshort_03.wav", + "player/smoker/voice/pain/smoker_painshort_04.wav", + "player/smoker/voice/pain/smoker_painshort_05.wav", + "player/smoker/voice/pain/smoker_painshort_06.wav", + } +} ) +sound.Add( { + name = "Charger.Pain", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = { + "player/charger/voice/pain/charger_pain_01.wav", + "player/charger/voice/pain/charger_pain_02.wav", + "player/charger/voice/pain/charger_pain_03.wav", + "player/charger/voice/pain/charger_pain_04.wav", + "player/charger/voice/pain/charger_pain_05.wav", + "player/charger/voice/pain/charger_pain_06.wav", + } +} ) +sound.Add( { + name = "Tank.Death", + channel = CHAN_VOICE, + volume = 1.0, + level = 120, + pitch = { 100 }, + sound = { + "player/tank/voice/die/tank_death_01.wav", + "player/tank/voice/die/tank_death_02.wav", + "player/tank/voice/die/tank_death_03.wav", + "player/tank/voice/die/tank_death_04.wav", + "player/tank/voice/die/tank_death_05.wav", + "player/tank/voice/die/tank_death_06.wav", + "player/tank/voice/die/tank_death_07.wav", + } +} ) +sound.Add( { + name = "ClassSelection.ThemeMVM", + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/mvm_class_menu_bg.wav"} +} ) +sound.Add( { + name = "Hunter.Music", + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/pzattack/exenteration.wav"} +} ) +sound.Add( { + name = "Jockey.Music", + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/pzattack/vassalation.wav"} +} ) + +if (file.Exists("sound/tf/weapons/explode1.wav", "WORKSHOP")) then + + sound.Add( { + name = "TF_BaseExplosionEffect.Sound", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_ITEM, + sound = { "tf/weapons/explode1.wav", "tf/weapons/explode2.wav", "tf/weapons/explode3.wav"} + } ) + +else + +sound.Add( { + name = "TF_BaseExplosionEffect.Sound", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_ITEM, + sound = { "weapons/explode1.wav", "weapons/explode2.wav"} +} ) + +end +sound.Add( { + name = "BaseExplosionEffect.Sound", + volume = 1.0, + level = 150, + pitch = { 95, 105 }, + channel = CHAN_ITEM, + sound = { "^weapons/explode3.wav", "^weapons/explode4.wav", "^weapons/explode5.wav" } +} ) +sound.Add( { + name = "NPC_CombineDropship.NearRotorLoop", + pitch = 100, + level = 90, + sound = { "npc/combine_gunship/dropship_engine_near_loop1.wav" } +} ) +sound.Add( { + name = "NPC_Vortigaunt.RangedAttack", + pitch = 150, + level = 110, + sound = { "npc/vort/attack_charge.wav" } +} ) +sound.Add( { + name = "NPC_CombineDropship.RotorLoop", + pitch = 100, + level = 150, + sound = { "npc/combine_gunship/dropship_engine_distant_loop1.wav" } +} ) +sound.Add( { + name = "NPC_AntlionGuard.NearStepHeavy", + pitch = { 70, 85 }, + level = 85, + sound = { "npc/antlion_guard/near_foot_heavy1.wav", "npc/antlion_guard/near_foot_heavy2.wav" } +} ) +sound.Add( { + name = "Weapon_QuadLauncher.Reload", + pitch = { 70, 105 }, + level = 85, + sound = { "weapons/quake_ammo_pickup_remastered.wav" } +} ) +sound.Add( { + name = "Weapon_QuadLauncher.Shoot", + pitch = { 70, 105 }, + level = 85, + channel = CHAN_WEAPON, + sound = { "weapons/quake_rpg_fire_remastered.wav" } +} ) +sound.Add( { + name = "Flesh.ImpactSoft", + volume = 0.6, + level = 75, + pitch = { 100 }, + sound = { "physics/body/body_medium_impact_soft1.wav", "physics/body/body_medium_impact_soft2.wav", "physics/body/body_medium_impact_soft5.wav", "physics/body/body_medium_impact_soft6.wav", "physics/body/body_medium_impact_soft7.wav"} +} ) +sound.Add( { + name = "Flesh.ImpactHard", + volume = 0.8, + level = 75, + pitch = { 100 }, + sound = { "physics/body/body_medium_impact_hard1.wav", "physics/body/body_medium_impact_hard2.wav", "physics/body/body_medium_impact_hard3.wav", "physics/body/body_medium_impact_hard4.wav", "physics/body/body_medium_impact_hard5.wav", "physics/body/body_medium_impact_hard6.wav"} +} ) + +sound.Add( { + name = "Selection.HeavyFootStomp", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_foot_stomp.wav"} +} ) + +sound.Add( { + name = "Selection.PyroFootStomp", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_foot_stomp.wav"} +} ) + + +sound.Add( { + name = "Selection.HeavyEquipment1", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_gun2.wav"} +} ) + +sound.Add( { + name = "Selection.HeavyEquipment2", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_gun1.wav"} +} ) + +sound.Add( { + name = "Selection.PyroEquipment1", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_jingle3.wav"} +} ) + +sound.Add( { + name = "Selection.PyroEquipment2", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_jingle2.wav"} +} ) +sound.Add( { + name = "Taunt.Scout01HandSmack", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_hand_clap.wav"} +} ) +sound.Add( { + name = "Taunt.Scout02HandSmack", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_hand_clap.wav"} +} ) +sound.Add( { + name = "DoSpark", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"ambient/energy/newspark01.wav","ambient/energy/newspark02.wav","ambient/energy/newspark03.wav","ambient/energy/newspark04.wav","ambient/energy/newspark05.wav","ambient/energy/newspark06.wav","ambient/energy/newspark07.wav","ambient/energy/newspark08.wav","ambient/energy/newspark09.wav","ambient/energy/newspark10.wav","ambient/energy/newspark11.wav"} +} ) +sound.Add( { + name = "LoudSpark", + volume = 1.0, + level = 95, + pitch = { 100 }, + sound = {"ambient/energy/newspark01.wav","ambient/energy/newspark02.wav","ambient/energy/newspark03.wav","ambient/energy/newspark04.wav","ambient/energy/newspark05.wav","ambient/energy/newspark06.wav","ambient/energy/newspark07.wav","ambient/energy/newspark08.wav","ambient/energy/newspark09.wav","ambient/energy/newspark10.wav","ambient/energy/newspark11.wav"} +} ) +sound.Add( { + name = "ReallyLoudSpark", + volume = 1.0, + level = 135, + pitch = { 100 }, + sound = {"ambient/energy/newspark01.wav","ambient/energy/newspark02.wav","ambient/energy/newspark03.wav","ambient/energy/newspark04.wav","ambient/energy/newspark05.wav","ambient/energy/newspark06.wav","ambient/energy/newspark07.wav","ambient/energy/newspark08.wav","ambient/energy/newspark09.wav","ambient/energy/newspark10.wav","ambient/energy/newspark11.wav"} +} ) + + +sound.Add( { + name = "Selection.EngineerWrenchShoulder", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_shotgun_shoulder.wav"} +} ) + +sound.Add( { + name = "Selection.EngineerFootStomp", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_foot_stomp.wav"} +} ) + +sound.Add( { + name = "Selection.EngineerClothesRustle", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_clothes_rustle.wav"} +} ) + + +sound.Add( { + name = "Taunt.Heavy01HoldGun", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_grenade_catch.wav"} +} ) + + +sound.Add( { + name = "Taunt.Heavy01ClothesRustle", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_clothes_rustle.wav"} +} ) + + +sound.Add( { + name = "Taunt.Heavy01EquipmentGun", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_gun1.wav"} +} ) + +sound.Add( { + name = "Taunt.Heavy01EquipmentGun2", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_gun2.wav"} +} ) + +sound.Add( { + name = "Taunt.Heavy01EquipmentRustleHeavy", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_equipment_jingle2.wav"} +} ) +sound.Add( { + name = "Taunt.Heavy01HoldGunLight", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_hand_clap2.wav"} +} ) + +sound.Add( { + name = "Selection.HeavyClothesRustle", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_clothes_rustle.wav"} +} ) + + +sound.Add( { + name = "Selection.ScoutShotgunShoulder", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_shotgun_shoulder.wav"} +} ) + + +sound.Add( { + name = "Selection.MedicHeelClick", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_heel_click.wav"} +} ) + +sound.Add( { + name = "Selection.MedicFootStomp", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_foot_stomp.wav"} +} ) + +sound.Add( { + name = "Selection.MedicFootSlide", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_foot_spin.wav"} +} ) + +sound.Add( { + name = "Selection.ScoutShotgunTwirl", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_shotgun_twirl.wav"} +} ) + +sound.Add( { + name = "Selection.PyroClothesRustle", + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = {"player/taunt_clothes_rustle.wav"} +} ) + +sound.Add( { + name = "Dirt.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/dirt1.wav","player/footsteps/dirt3.wav","player/footsteps/dirt2.wav","player/footsteps/dirt4.wav"} +} ) +sound.Add( { + name = "Dirt.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/dirt2.wav","player/footsteps/dirt4.wav","player/footsteps/dirt1.wav","player/footsteps/dirt3.wav"} +} ) +sound.Add( { + name = "MetalGrate.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/metalgrate1.wav","player/footsteps/metalgrate3.wav","player/footsteps/metalgrate2.wav","player/footsteps/metalgrate4.wav"} +} ) +sound.Add( { + name = "MetalVent.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/duct2.wav","player/footsteps/duct4.wav","player/footsteps/duct1.wav","player/footsteps/duct3.wav"} +} ) +sound.Add( { + name = "MetalVent.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/duct1.wav","player/footsteps/duct3.wav","player/footsteps/duct2.wav","player/footsteps/duct4.wav"} +} ) +sound.Add( { + name = "MetalGrate.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/metalgrate2.wav","player/footsteps/metalgrate4.wav","player/footsteps/metalgrate2.wav","player/footsteps/metalgrate1.wav"} +} ) +sound.Add( { + name = "Rubber.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"physics/rubber/rubber_tire_impact_soft1.wav"} +} ) +sound.Add( { + name = "Rubber.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"physics/rubber/rubber_tire_impact_soft1.wav"} +} ) +sound.Add( { + name = "Grass.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/grass1.wav","player/footsteps/grass3.wav","player/footsteps/grass2.wav","player/footsteps/grass4.wav"} +} ) +sound.Add( { + name = "MVM.GiantHeavyStep", + volume = 1.0, + level = 150, + pitch = 100, + channel = CHAN_BODY, + sound = {"^mvm/giant_common/giant_common_step_01.wav","^mvm/giant_common/giant_common_step_02.wav","^mvm/giant_common/giant_common_step_03.wav","^mvm/giant_common/giant_common_step_04.wav","^mvm/giant_common/giant_common_step_05.wav","^mvm/giant_common/giant_common_step_06.wav","^mvm/giant_common/giant_common_step_07.wav","^mvm/giant_common/giant_common_step_08.wav"} +} ) +sound.Add( { + name = "Grass.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/grass2.wav","player/footsteps/grass4.wav","player/footsteps/grass1.wav","player/footsteps/grass3.wav"} +} ) +sound.Add( { + name = "Default.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/concrete1.wav","player/footsteps/concrete3.wav","player/footsteps/concrete1.wav","player/footsteps/concrete3.wav"} +} ) +sound.Add( { + name = "Concrete.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/concrete2.wav","player/footsteps/concrete4.wav","player/footsteps/concrete1.wav","player/footsteps/concrete3.wav"} +} ) +sound.Add( { + name = "BoomerFootstep", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_STATIC, + sound = {"player/footsteps/boomer/run/concrete1.wav","player/footsteps/boomer/run/concrete2.wav","player/footsteps/boomer/run/concrete3.wav","player/footsteps/boomer/run/concrete4.wav"} +} ) +sound.Add( { + name = "TankFootstep", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_STATIC, + sound = { + "player/footsteps/tank/walk/tank_walk01.wav", + "player/footsteps/tank/walk/tank_walk02.wav", + "player/footsteps/tank/walk/tank_walk03.wav", + "player/footsteps/tank/walk/tank_walk04.wav", + "player/footsteps/tank/walk/tank_walk05.wav", + "player/footsteps/tank/walk/tank_walk06.wav" + } +} ) +sound.Add( { + name = "TankFootstepWater", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_STATIC, + sound = { + "player/footsteps/tank/walk/tank_walk_water_01.wav", + "player/footsteps/tank/walk/tank_walk_water_02.wav", + "player/footsteps/tank/walk/tank_walk_water_03.wav", + "player/footsteps/tank/walk/tank_walk_water_04.wav", + "player/footsteps/tank/walk/tank_walk_water_05.wav", + "player/footsteps/tank/walk/tank_walk_water_06.wav" + } +} ) +sound.Add( { + name = "CommonZombie.Footstep", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_STATIC, + sound = { + "vj_l4d_com/footstep/concrete1.wav", + "vj_l4d_com/footstep/concrete2.wav", + "vj_l4d_com/footstep/concrete3.wav", + "vj_l4d_com/footstep/concrete4.wav", + "vj_l4d_com/footstep/dirt1.wav", + "vj_l4d_com/footstep/dirt2.wav", + "vj_l4d_com/footstep/dirt3.wav", + "vj_l4d_com/footstep/dirt4.wav" + } +} ) +sound.Add( { + name = "CommonZombie.ClownFootstep", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_STATIC, + sound = { + "vj_l4d_com/footstep/clown/concrete1.wav", + "vj_l4d_com/footstep/clown/concrete2.wav", + "vj_l4d_com/footstep/clown/concrete3.wav", + "vj_l4d_com/footstep/clown/concrete4.wav", + "vj_l4d_com/footstep/clown/concrete5.wav", + "vj_l4d_com/footstep/clown/concrete6.wav", + "vj_l4d_com/footstep/clown/concrete7.wav", + "vj_l4d_com/footstep/clown/concrete8.wav" + } +} ) +sound.Add( { + name = "ChargerFootstep", + volume = 1.0, + level = 95, + pitch = { 100 }, + channel = CHAN_STATIC, + sound = { + "player/footsteps/charger/run/charger_run_left_01.wav", + "player/footsteps/charger/run/charger_run_right_01.wav", + "player/footsteps/charger/run/charger_run_left_02.wav", + "player/footsteps/charger/run/charger_run_right_02.wav", + "player/footsteps/charger/run/charger_run_left_03.wav", + "player/footsteps/charger/run/charger_run_right_03.wav", + "player/footsteps/charger/run/charger_run_left_04.wav", + "player/footsteps/charger/run/charger_run_right_04.wav" + } +} ) +sound.Add( { + name = "Concrete.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/concrete1.wav","player/footsteps/concrete3.wav","player/footsteps/concrete1.wav","player/footsteps/concrete3.wav"} +} ) +sound.Add( { + name = "Default.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/concrete2.wav","player/footsteps/concrete4.wav","player/footsteps/concrete1.wav","player/footsteps/concrete3.wav"} +} ) +sound.Add( { + name = "Wood.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/wood1.wav","player/footsteps/wood3.wav","player/footsteps/wood2.wav","player/footsteps/wood4.wav"} +} ) +sound.Add( { + name = "Wood.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/wood2.wav","player/footsteps/wood4.wav","player/footsteps/wood1.wav","player/footsteps/wood3.wav"} +} ) +sound.Add( { + name = "SolidMetal.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/metal1.wav","player/footsteps/metal3.wav","player/footsteps/metal2.wav","player/footsteps/metal4.wav",} +} ) +sound.Add( { + name = "SolidMetal.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/metal2.wav","player/footsteps/metal4.wav","player/footsteps/metal1.wav","player/footsteps/metal3.wav"} +} ) +sound.Add( { + name = "Tile.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/tile1.wav","player/footsteps/tile2.wav","player/footsteps/tile3.wav","player/footsteps/tile4.wav"} +} ) +sound.Add( { + name = "Tile.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/tile1.wav","player/footsteps/tile2.wav","player/footsteps/tile3.wav","player/footsteps/tile4.wav"} +} ) +sound.Add( { + name = "Grass.StepLeft", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/grass1.wav","player/footsteps/grass2.wav","player/footsteps/grass3.wav","player/footsteps/grass4.wav"} +} ) +sound.Add( { + name = "Grass.StepRight", + volume = 1.0, + level = 75, + pitch = 100, + channel = CHAN_BODY, + sound = {"player/footsteps/grass1.wav","player/footsteps/grass3.wav","player/footsteps/grass3.wav","player/footsteps/grass4.wav"} +} ) +sound.Add( { + name = "Weapon_FrontierJustice.Single", + volume = 1.0, + level = 95, + pitch = { 100 }, + sound = {"weapons/frontier_justice_shoot.wav"} +} ) +sound.Add( { + name = "Weapon_FrontierJustice.SingleCrit", + volume = 1.0, + level = 95, + pitch = { 100 }, + sound = {"weapons/frontier_justice_shoot_crit.wav"} +} ) +sound.Add( { + name = "HalloweenMerasmus.MERLAGMUS", + volume = 1.0, + level = 0, + channel = CHAN_VOICE, + pitch = { 100 }, + sound = { + "vo/halloween_merasmus/sf12_found01.wav", + "vo/halloween_merasmus/sf12_found02.wav", + "vo/halloween_merasmus/sf12_found03.wav", + "vo/halloween_merasmus/sf12_found04.wav", + "vo/halloween_merasmus/sf12_found05.wav", + "vo/halloween_merasmus/sf12_found07.wav", + "vo/halloween_merasmus/sf12_found08.wav", + "vo/halloween_merasmus/sf12_found09.wav", + } +} ) + +sound.Add( { + name = "SappedRobot", + channel = CHAN_REPLACE, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = { "weapons/sapper_timer.wav" } +} ) +sound.Add( { + name = "BanjoSong", + channel = CHAN_REPLACE, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = { "player/taunt_bumpkins_banjo_music.wav" } +} ) +sound.Add( { + name = "BanjoSongStop", + channel = CHAN_REPLACE, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = { "player/taunt_bumpkins_banjo_music_stop.wav" } +} ) +sound.Add( { + name = "GrappledFlesh", + channel = CHAN_REPLACE, + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = { "weapons/grappling_hook_impact_flesh_loop.wav" } +} ) +sound.Add( { + name = "BusterLoop", + channel = CHAN_REPLACE, + volume = 1.0, + level = 125, + pitch = { 100 }, + sound = { "mvm/sentrybuster/mvm_sentrybuster_loop.wav" } +} ) +sound.Add( { + name = "TankMusicLoop", + channel = CHAN_REPLACE, + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/tank/tank.wav","music/tank/taank.wav","music/tank/tank_metal.wav" } +} ) +sound.Add( { + name = "TankMidnightMusicLoop", + channel = CHAN_REPLACE, + volume = 1.0, + level = 50, + pitch = { 100 }, + sound = { "music/tank/onebadtank.wav","music/tank/midnighttank.wav" } +} ) + + + +hook.Add("PlayerFootstep", "RoboStep", function( ply, pos, foot, sound, volume, rf) + if ((GetConVar("tf_enable_server_footsteps"):GetBool() or (CLIENT and !LocalPlayer():IsHL2() and LocalPlayer():ShouldDrawLocalPlayer())) && !game.SinglePlayer()) then + if (SERVER) then + return false + else + return true + end + end--[[ + if ply:GetPlayerClass() == "tank_l4d" then + if SERVER then + util.ScreenShake( ply:GetPos(), 14, 14, 0.8, 1200 ) + end + end]] + if ply:GetPlayerClass() == "l4d_zombie" and ply:GetModel() != "models/cpthazama/l4d2/common/common_male_clown.mdl" then + if SERVER then + ply:EmitSound("CommonZombie.Footstep") + end + elseif ply:GetPlayerClass() == "l4d_zombie" and ply:GetModel() == "models/cpthazama/l4d2/common/common_male_clown.mdl" then + + if SERVER then + ply:EmitSound("CommonZombie.ClownFootstep") + end + + elseif ply:GetPlayerClass() == "l4d_zombie" and ply:GetModel() == "models/cpthazama/l4d2/common/common_male_riot.mdl" then + + if SERVER then + ply:EmitSound("vj_l4d_com/footstep/riot/tile"..math.random(1,4)..".wav") + end + end + if ply:GetPlayerClass() == "poisonzombie" then + ply:EmitSound("NPC_PoisonZombie.FootstepLeft") + return true + end + if ply:GetPlayerClass() == "zombie" then + ply:EmitSound("Zombie.FootstepLeft") + return true + end + if ply:GetPlayerClass() == "zombine" then + ply:EmitSound("npc/zombine/gear"..math.random(1,3)..".wav") + return true + end + if ply:GetPlayerClass() == "fastzombie" then + ply:EmitSound("Zombie.FootstepLeft") + return true + end + if not ply:IsHL2() and ply:GetInfoNum("jakey_antlionfbii", 0) == 1 then + ply:EmitSound( "^npc/antlion_guard/antlionguard_foot_heavy"..math.random(1,2)..".wav", 120, math.random(98, 103) ) -- Play the footsteps hunter is using + return true -- Don't allow default footsteps + end + if ply:GetInfoNum("dylan_rageheavy", 0) == 1 then + ply:EmitSound( "physics/concrete/boulder_impact_hard"..math.random(1,3)..".wav", 150, math.random(70,120) ) -- Play the footsteps hunter is using + return true -- Don't allow default footsteps + end + if not ply:IsHL2() and ply:GetInfoNum("tf_mvm_giant_voodoo", 0) == 1 then + ply:EmitSound( "MVM.GiantHeavyStep" ) -- Play the footsteps hunter is using + return true -- Don't allow default footsteps + end + if not ply:IsHL2() and ply:GetInfoNum("tf_sentrybuster", 0) == 1 then + ply:EmitSound( "MVM.SentryBusterStep" ) -- Play the footsteps hunter is using + return true -- Don't allow default footsteps + end + if not ply:IsHL2() and ply:GetPlayerClass() == "merc_dm" and ply:GetInfoNum("tf_silentthirdpersonsteps", 0) == 1 then + ply:EmitSound("npc/combine_soldier/vo/_period.wav") + return true + end + + if ((CLIENT and ply == LocalPlayer()) or ply:IsHL2()) then + return false + else + if (game.SinglePlayer()) then + return false + else + return true + end + end +end) + +chats = {} + +net.Receive("botVoiceStart", function() + local ply = net.ReadEntity() + local soundn = net.ReadString() + local time = SoundDuration(soundn) -- - 0.1 + + if !IsValid(ply) or !ply:IsBot() or (IsValid(ply.ChattingS) and ply.ChattingS:GetState() == GMOD_CHANNEL_PLAYING) then return end + + -- tts tests + -- sound.PlayURL([[https://translate.google.com/translate_tts?ie=UTF-8&tl=en-us&client=tw-ob&q="]] .. voiceline .. [["]], "mono", function(station) + sound.PlayFile("sound/" .. soundn, "mono", function(station) + if IsValid(station) then + ply.ChattingS = station + station:SetPlaybackRate(math.random(95, 105) * 0.01) + station:Play() + hook.Call("PlayerStartVoice", gmod.GetGamemode(), ply) + + timer.Simple(time, function() + if IsValid(ply) then + hook.Call("PlayerEndVoice", gmod.GetGamemode(), ply) + station:Stop() + --ply.ChattingB = false + end + end) + end + end) +end) +hook.Add("Think", "PlayerStuff", function() + for k,pl in ipairs(player.GetAll()) do + local v = pl + + if (v:Alive()) then + end + if not pl.anim_Jumping and !pl:IsOnGround() then + pl.anim_Jumping = true + pl.anim_FirstJumpFrame = false + pl.anim_JumpStartTime = 0 + local firstjumpframe = pl.anim_FirstJumpFrame + + if pl.anim_FirstJumpFrame then + pl.anim_FirstJumpFrame = false + pl:AnimRestartMainSequence() + end + + if pl:WaterLevel() >= 2 or --[[(CurTime() - pl.anim_JumpStartTime > 0.2 and]] pl:OnGround() --[[)]] then + pl.anim_Jumping = false + pl.anim_GroundTime = nil + + if pl:OnGround() then + pl:AnimRestartGesture(GESTURE_SLOT_JUMP, ACT_MP_JUMP_LAND, true) + end + end + + + if pl.anim_Jumping then + if pl:GetPlayerClass() == "combinesoldier" or pl:GetPlayerClass() == "rebel" or pl:GetPlayerClass() == "metrocop" then + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_GLIDE + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_GLIDE + else + pl.anim_CalcIdeal = ACT_JUMP + end + elseif pl:GetPlayerClass() == "zombie" then + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_HL2MP_JUMP_SLAM + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_HL2MP_JUMP_SLAM + else + pl.anim_CalcIdeal = ACT_HL2MP_JUMP_SLAM + end + elseif pl:IsL4D() then + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_JUMP + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_JUMP + else + pl.anim_CalcIdeal = ACT_JUMP + end + elseif pl:GetPlayerClass() == "fastzombie" then + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_ZOMBIE_LEAPING + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_ZOMBIE_LEAPING + else + pl.anim_CalcIdeal = ACT_ZOMBIE_LEAP_START + end + elseif pl:GetPlayerClass() == "poisonzombie" then + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_RUN + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_RUN + else + pl.anim_CalcIdeal = ACT_RUN + end + elseif pl:GetPlayerClass() == "zombine" then + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_RUN + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_RUN + else + pl.anim_CalcIdeal = ACT_RUN + end + else + if pl.anim_JumpStartTime == 0 then + if pl.anim_Airwalk then + pl.anim_CalcIdeal = ACT_MP_AIRWALK + end + elseif not firstjumpframe and CurTime() - pl.anim_JumpStartTime > pl:SequenceDuration() * pl:GetPlaybackRate() then + pl.anim_CalcIdeal = ACT_MP_JUMP_FLOAT + else + pl.anim_CalcIdeal = ACT_MP_JUMP_START + end + end + end + end + end +end) +local voice = Material("voice/icntlk_pl") +-- is there no way to force this on? +hook.Add("PostPlayerDraw", "LeadBot_VoiceIcon", function(ply) + if !IsValid(ply) or !ply:IsPlayer() or !ply:IsBot() or !IsValid(ply.ChattingS) then return end + + local ang = EyeAngles() + local pos = ply:GetPos() + ply:GetViewOffset() + Vector(0, 0, 14) + ang:RotateAroundAxis(ang:Up(), -90) + ang:RotateAroundAxis(ang:Forward(), 90) + + cam.Start3D2D(pos, ang, 1) + surface.SetMaterial(voice) + surface.DrawTexturedRect(-8, -8, 16, 16) + cam.End3D2D() +end) + +if CLIENT then + + list.Set( "ContentCategoryIcons", "Team Fortress 2", "games/16/tf.png" ) + list.Set( "ContentCategoryIcons", "TFBots", "games/16/tf.png" ) + list.Set( "ContentCategoryIcons", "TFBots: MVM", "games/16/tf_mvm.png" ) + list.Set( "ContentCategoryIcons", "TFBots: Raid", "games/16/tf_raid.png" ) + list.Set( "ContentCategoryIcons", "TFBots: Extras", "games/16/garrysmod.png" ) + +end + +sound.Add( { + name = "MVM.GiantWTFDemomanLoop", + channel = CHAN_STATIC, + volume = 0.6, + level = 82, + pitch = { 100 }, + sound = { + "music/conga_sketch_167bpm_01-04.wav" + } +} ) +sound.Add( { + name = "Weapon_Gluon.Start", + channel = CHAN_WEAPON, + volume = 1.0, + level = 95, + pitch = { 125 }, + sound = { + "weapons/egon_windup2.wav" + } +} ) +sound.Add( { + name = "Weapon_Gluon.Run", + channel = CHAN_WEAPON, + volume = 1.0, + level = 95, + pitch = { 125 }, + sound = { + "weapons/egon_run3.wav" + } +} ) +sound.Add( { + name = "Scientist.Pain", + channel = CHAN_VOICE, + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = { + "scientist/sci_pain1.wav", + "scientist/sci_pain2.wav", + "scientist/sci_pain3.wav", + "scientist/sci_pain4.wav", + "scientist/sci_pain5.wav", + "scientist/sci_pain6.wav", + "scientist/sci_pain7.wav", + "scientist/sci_pain8.wav", + "scientist/sci_pain9.wav", + "scientist/sci_pain10.wav", + } +} ) +sound.Add( { + name = "Ambient.NucleusElectricity", + channel = CHAN_STATIC, + volume = 1.0, + level = 105, + pitch = { 100 }, + sound = { ")ambient/nucleus_electricity.wav" } +} ) +sound.Add( { + name = "Psap.Death", + channel = CHAN_STATIC, + volume = 1.0, + level = 105, + pitch = { 100 }, + sound = { "vo/items/wheatley_sapper/wheatley_player_death01.wav", "vo/items/wheatley_sapper/wheatley_player_death02.wav", "vo/items/wheatley_sapper/wheatley_player_death03.wav", "vo/items/wheatley_sapper/wheatley_player_death04.wav", "vo/items/wheatley_sapper/wheatley_player_death05.wav", "vo/items/wheatley_sapper/wheatley_player_death06.wav", "vo/items/wheatley_sapper/wheatley_player_death08.wav", "vo/items/wheatley_sapper/wheatley_player_death09.wav", "vo/items/wheatley_sapper/wheatley_player_death10.wav", "vo/items/wheatley_sapper/wheatley_player_death12.wav", "vo/items/wheatley_sapper/wheatley_player_death13.wav", "vo/items/wheatley_sapper/wheatley_player_death14.wav", "vo/items/wheatley_sapper/wheatley_player_death15.wav", "vo/items/wheatley_sapper/wheatley_player_death16.wav" , "vo/items/wheatley_sapper/wheatley_player_death17.wav", "vo/items/wheatley_sapper/wheatley_player_death19.wav", "vo/items/wheatley_sapper/wheatley_player_death21.wav", "vo/items/wheatley_sapper/wheatley_player_death22.wav", "vo/items/wheatley_sapper/wheatley_player_death23.wav", "vo/items/wheatley_sapper/wheatley_player_death24.wav", "vo/items/wheatley_sapper/wheatley_player_death25.wav", "vo/items/wheatley_sapper/wheatley_player_death26.wav"} +} ) +sound.Add( { + name = "Grappling", + channel = CHAN_REPLACE, + volume = 1.0, + level = 75, + pitch = { 100 }, + sound = { "weapons/grappling_hook_reel_start.wav" } +} ) +sound.Add( { + name = "TappedRobot", + channel = CHAN_REPLACE, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = { "weapons/spy_tape_01.wav","weapons/spy_tape_02.wav","weapons/spy_tape_03.wav","weapons/spy_tape_04.wav" ,"weapons/spy_tape_05.wav" } +} ) + + +sound.Add( { + name = "Weapon_Tomislav.Fire", + volume = 1.0, + level = 90, + pitch = { 93 }, + channel = CHAN_WEAPON, + sound = { "weapons/tomislav_shoot.wav" } +} ) +sound.Add( { + name = "Weapon_Tomislav.FireCrit", + volume = 1.0, + level = 90, + pitch = { 93 }, + channel = CHAN_WEAPON, + sound = { "weapons/tomislav_shoot_crit.wav" } +} ) +sound.Add( { + name = "Weapon_Tomislav.WindUp", + volume = 1.0, + level = 90, + pitch = { 93 }, + channel = CHAN_WEAPON, + sound = { "weapons/tomislav_wind_up.wav" } +} ) +sound.Add( { + name = "Weapon_Tomislav.WindDown", + volume = 1.0, + level = 90, + pitch = { 93 }, + channel = CHAN_WEAPON, + sound = { "weapons/tomislav_wind_down.wav" } +} ) + + +sound.Add( { + name = "ControlPoint.Start", + channel = CHAN_STATIC, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = "misc/hologram_start.wav" +} ) + +sound.Add( { + name = "ControlPoint.Move", + channel = CHAN_STATIC, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = "misc/hologram_move.wav" +} ) + +sound.Add( { + name = "ControlPoint.Malfunction", + channel = CHAN_STATIC, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = "misc/hologram_malfunction.wav" +} ) +sound.Add( { + name = "ControlPoint.Stop", + channel = CHAN_STATIC, + volume = 1.0, + level = 80, + pitch = { 100 }, + sound = "misc/hologram_stop.wav" +} ) +sound.Add( { + name = "Player.DrownStart", + channel = CHAN_VOICE, + volume = 1.0, + level = 80, + pitch = { 90,110 }, + sound = {"player/pl_drown1.wav"} +} ) +sound.Add( { + name = "Player.DrownContinue", + channel = CHAN_VOICE, + volume = 1.0, + level = 80, + pitch = { 95,105 }, + sound = {"player/drown1.wav","player/drown2.wav","player/drown3.wav"} +} ) +HOOK_WARNING_THRESHOLD = 0.1 + +local old_hook_call = hook.Call +function hook.Call(name, gm, ...) + return old_hook_call(name, gm, ...) +end + +if not util.PrecacheModel0 then + util.PrecacheModel0 = util.PrecacheModel +end + +function util.PrecacheModel(mdl) + if SERVER and game.SinglePlayer() then return end + return util.PrecacheModel0(mdl) +end + +include("particle_manifest.lua") +include("vmatrix_extension.lua") + +include("tf_lang_module.lua") +tf_lang.Load("tf_english.txt") + +include("particle_manifest.lua") +include("vmatrix_extension.lua") + +include("shd_nwtable.lua") +include("shd_utils.lua") +include("shd_enums.lua") +include("shd_pyrovision.lua") +include("tf_util_module.lua") +include("tf_item_module.lua") +include("tf_timer_module.lua") +include("tf_soundscript_module.lua") + + +include("shd_objects.lua") +include("shd_attributes.lua") +include("shd_loadout.lua") +include("shd_extras.lua") +include("shd_workshop.lua") + +include("shd_competitive.lua") +include("shd_spec.lua") + +--include("shd_items_temp.lua") + +include("shd_maptypes.lua") +include("shd_playeranim.lua") + +include("shd_criticals.lua") + +include("shd_ragdolls.lua") +include("shd_ragdolls2.lua") + +include("shd_items_game.lua") +include("shd_conflict.lua") +if (IsMounted("tf")) then + player_manager.AddValidModel("!tf_scout","models/player/scout.mdl") + player_manager.AddValidModel("!tf_soldier","models/player/soldier.mdl") + player_manager.AddValidModel("!tf_pyro","models/player/pyro.mdl") + player_manager.AddValidModel("!tf_demo","models/player/demo.mdl") + player_manager.AddValidModel("!tf_heavy","models/player/heavy.mdl") + player_manager.AddValidModel("!tf_engineer","models/player/engineer.mdl") + player_manager.AddValidModel("!tf_medic","models/player/medic.mdl") + player_manager.AddValidModel("!tf_sniper","models/player/sniper.mdl") + player_manager.AddValidModel("!tf_spy","models/player/spy.mdl") +end +if (IsMounted("thestanleyparable")) then + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/npc_sounds_stanley.lua") + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/soundscapes_stanley.lua") +end +if (IsMounted("left4dead2")) then + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d2_game_sounds_doors.lua") + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d2_game_sounds_weapons.lua") + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d2_game_sounds_music.lua") + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d2_game_sounds_player.lua") + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d2_game_sounds_infected_common.lua") + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d2_game_sounds_infected_special.lua") + player_manager.AddValidModel("infected_smoker","models/infected/smoker.mdl") + player_manager.AddValidHands("infected_smoker","models/v_models/weapons/v_claw_smoker.mdl") + player_manager.AddValidModel("infected_smoker_l4d1","models/infected/smoker_l4d1.mdl") + player_manager.AddValidHands("infected_smoker_l4d1","models/v_models/weapons/v_claw_smoker_l4d1.mdl") + player_manager.AddValidModel("infected_boomer","models/infected/boomer.mdl") + player_manager.AddValidHands("infected_boomer","models/v_models/weapons/v_claw_boomer.mdl") + player_manager.AddValidModel("infected_boomette","models/infected/boomette.mdl") + player_manager.AddValidHands("infected_boomette","models/v_models/weapons/v_claw_boomer.mdl") + player_manager.AddValidModel("infected_boomer_l4d1","models/infected/boomer_l4d1.mdl") + player_manager.AddValidHands("infected_boomer_l4d1","models/v_models/weapons/v_claw_boomer_l4d1.mdl") + player_manager.AddValidModel("infected_hunter","models/infected/hunter.mdl") + player_manager.AddValidHands("infected_hunter","models/v_models/weapons/v_claw_hunter.mdl") + player_manager.AddValidModel("infected_hunter_l4d1","models/infected/hunter_l4d1.mdl") + player_manager.AddValidHands("infected_hunter_l4d1","models/v_models/weapons/v_claw_hunter_l4d1.mdl") + player_manager.AddValidModel("infected_tank","models/infected/hulk.mdl") + player_manager.AddValidHands("infected_tank","models/v_models/weapons/v_claw_hulk.mdl") + player_manager.AddValidModel("infected_tank_sacrifice","models/infected/hulk_dlc3.mdl") + player_manager.AddValidHands("infected_tank_sacrifice","models/v_models/weapons/v_claw_hulk_dlc3.mdl") + player_manager.AddValidModel("infected_tank_l4d1","models/infected/hulk_l4d1.mdl") + player_manager.AddValidHands("infected_tank_l4d1","models/v_models/weapons/v_claw_hulk_l4d1.mdl") + player_manager.AddValidModel("infected_witch","models/infected/witch.mdl") + player_manager.AddValidHands("infected_witch","models/v_models/weapons/v_claw_hunter.mdl") + player_manager.AddValidModel("infected_witch_bride","models/infected/witch_bride.mdl") + player_manager.AddValidHands("infected_witch_bride","models/v_models/weapons/v_claw_hunter.mdl") + player_manager.AddValidModel("infected_jockey","models/infected/jockey.mdl") + player_manager.AddValidHands("infected_jockey","models/weapons/arms/v_jockey_arms.mdl") + player_manager.AddValidModel("infected_spitter","models/infected/spitter.mdl") + player_manager.AddValidHands("infected_spitter","models/weapons/arms/v_spitter_arms.mdl") + player_manager.AddValidModel("infected_charger","models/infected/charger.mdl") + player_manager.AddValidHands("infected_charger","models/weapons/arms/v_charger_arms.mdl") +end +if (IsMounted("left4dead")) then + sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/l4d1_game_sounds_infected_special.lua") +end +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_mvm.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_weapons_tf.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_weapons_tf2.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_weapons_l4d1.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_player.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_music.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_handmade.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_mvm.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_merasmus.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_mvm_handmade.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_mvm_mighty.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_pauling.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_rd_robots.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_taunts.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_tough_break.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_lfce.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds_vo_tf2c.lua") +sound.AddSoundOverrides(GM.Folder.."/gamemode/contents/game_sounds.lua") + + +hook.Add("PlayerStepSoundTime", "FootTime", function(ply, iType, iWalking) + if (!ply:IsHL2()) then + if (ply:GetPlayerClass() == "tank_l4d") then + if (ply:Crouching() || ply:GetMoveType() == MOVETYPE_LADDER) then + local speed = 250 + 100 + return speed + else + local speed = 250 + return speed + end + end + if (ply:GetPlayerClass() == "boomer") then + if (ply:Crouching() || ply:GetMoveType() == MOVETYPE_LADDER) then + local speed = 400 + 100 + return speed + else + local speed = 350 + return speed + end + end + if (ply:GetPlayerClass() == "charger") then + if (ply:Crouching() || ply:GetMoveType() == MOVETYPE_LADDER) then + local speed = 300 + 100 + return speed + else + local speed = 270 + return speed + end + end + if (ply:GetPlayerClass() == "smoker") then + if (ply:Crouching() || ply:GetMoveType() == MOVETYPE_LADDER) then + local speed = 400 + 100 + return speed + else + local speed = 370 + return speed + end + end + if (ply:GetPlayerClass() == "hunter") then + if (ply:Crouching() || ply:GetMoveType() == MOVETYPE_LADDER) then + local speed = 400 + 100 + return speed + else + local speed = 360 + return speed + end + end + if (iType == STEPSOUNDTIME_ON_LADDER) then + local speed = 350 + return speed + end + if (iType == STEPSOUNDTIME_NORMAL || iType == STEPSOUNDTIME_WATER_FOOT) then + if (ply:GetMoveType() == MOVETYPE_LADDER) then + local speed = math.Remap(ply:GetWalkSpeed(), 200, 450, 400, 200) + 100 + return speed + else + if (ply:Crouching() or ply:KeyDown(IN_WALK)) then + local speed = math.Remap(ply:GetWalkSpeed(), 200, 450, 400, 200) + 100 + return speed + else + if (ply:GetWalkSpeed() > 450) then + + local speed = 200 + return speed + + else + if (ply:KeyDown(IN_SPEED)) then + + if (ply:GetRunSpeed() < 229 and !ply:KeyDown(IN_SPEED)) then + + local speed = 400 + return speed + + else + local speed = math.Remap(ply:GetRunSpeed(), 200, 450, 400, 200) + return speed + end + + else + if (ply:GetWalkSpeed() < 229 and !ply:KeyDown(IN_SPEED)) then + + local speed = 400 + return speed + + else + local speed = math.Remap(ply:GetWalkSpeed(), 200, 450, 400, 200) + return speed + end + end + end + end + end + end + if (iType == STEPSOUNDTIME_WATER_KNEE) then + if (ply:Crouching()) then + local speed = math.Remap(ply:GetWalkSpeed(), 200, 450, 600, 200) + 100 + return speed + else + if (ply:GetWalkSpeed() > 450) then + + local speed = 200 + return speed + + else + if (ply:GetWalkSpeed() < 229 and !ply:KeyDown(IN_SPEED)) then + + local speed = 400 + return speed + + else + local speed = math.Remap(ply:GetWalkSpeed(), 200, 450, 600, 200) + return speed + end + end + end + end + end +end) + + +--CreateClientConVar( "snd_soundmixer", "Default_Mix", {FCVAR_CLIENTCMD_CAN_EXECUTE, FCVAR_ARCHIVE, FCVAR_ARCHIVE}, "Become a robot after respawning." ) +CreateConVar("tf_flag_caps_per_round","3",{FCVAR_REPLICATED,FCVAR_NOTIFY,FCVAR_ARCHIVE}) +CreateConVar("tf_airblast_bustertimer","1",{FCVAR_REPLICATED,FCVAR_NOTIFY,FCVAR_ARCHIVE}) +CreateConVar( "civ2_legs", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_DEVELOPMENTONLY, FCVAR_ARCHIVE}, "LEGS!" ) +CreateConVar( "civ2_allow_respawn_with_key_press", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Players will respawn on key press without waiting for the freeze cam to finish." ) +CreateConVar( "civ2_smooth_worldmodel_turning", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "" ) +CreateConVar( "z_debug", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players will have a flashlight as a TF2 Class" ) +CreateConVar( "tf_allow_pickup_weapons", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "When enabled, Anyone can pickup weapons." ) +CreateConVar( "tf_enable_unused_mvm_sounds", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "When enabled, some sounds will be using some unused sound effects from MVM." ) +CreateConVar( "tf_enable_hl2_ragdoll_sounds", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "When enabled, some sounds will be using some HL2 ragdoll sound effects." ) +CreateConVar( "tf_enable_l4d2_ragdoll_sounds", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "When enabled, some sounds will be using some L4D2 ragdoll sound effects." ) +CreateConVar( "tf_enable_server_footsteps", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "When enabled, some sounds will be using some L4D2 ragdoll sound effects." ) +CreateConVar( "civ2_randomizer", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Randomize sounds and NPCs" ) +CreateConVar( "tf_use_hl_hull_size", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players use the HL2 hull size found on coop." ) +CreateConVar( "tf_pyrovision", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not pyrovision may be enabled" ) +CreateConVar( "tf_kill_on_change_class", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players will die if they change class." ) +CreateConVar( "tf_flashlight", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Whether or not players will have a flashlight as a TF2 Class" ) +CreateConVar( "tf_muselk_zombies", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Zombies") +CreateConVar( "tf_enable_revive_markers", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Enable/Disable Revive Markers" ) +CreateConVar( "tf_crossover_mode", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Enable/Disable Crossover Mode" ) +CreateConVar( "tf_disable_nonred_mvm", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FCVAR_ARCHIVE}, "Disable BLU and neutral" ) +CreateConVar('tf_talkicon_computablecolor', 1, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'Compute color from location brightness.') +CreateConVar('tf_bot_mvm_max_deaths', 20, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'Maximum Deaths. Not Functional.') +CreateConVar('tf_grapplinghook_enable', 0, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'When Enabled: TF2 Players get the Grappling Hook.') +CreateConVar('tf_bot_mvm_has_bots', 0, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'Automatically set by Lua') +CreateConVar('tf_bot_mvm_giant_max_deaths', 3, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'Maximum Deaths. Not Functional.') +CreateConVar('tf_talkicon_showtextchat', 1, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'Show icon on using text chat.') +CreateConVar('tf_talkicon_ignoreteamchat', 1, FCVAR_ARCHIVE + FCVAR_REPLICATED + FCVAR_SERVER_CAN_EXECUTE, 'Disable over-head icon on using team chat.') +CreateConVar("tf_unlimited_buildings", 0, {FCVAR_NOTIFY, FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_CHEAT}) +CreateConVar("tf_use_client_ragdolls", 1, {FCVAR_NOTIFY, FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED}) +CreateConVar( "civ2_enable_be_the_bosses", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_REPLICATED, FCVAR_NOTIFY}, "!!!EXPERIMENTAL!!! - Port Be the Bosses 2 from TF2 to Garry's Mod" ) +hook.Add( "EntityEmitSound", "TimeWarpSounds", function( t ) +end ) + +concommand.Add("tf_spydisguise", function(ply, cmd) +end) + + +if (SERVER) then + + RunConsoleCommand('mp_show_voice_icons', '0') + + util.AddNetworkString('TalkIconChat') + + net.Receive('TalkIconChat', function(_, ply) + local bool = net.ReadBool() + ply:SetNW2Bool('ti_istyping', (bool ~= nil) and bool or false) + end) + +elseif (CLIENT) then + + local computecolor = GetConVar('tf_talkicon_computablecolor') + local showtextchat = GetConVar('tf_talkicon_showtextchat') + local noteamchat = GetConVar('tf_talkicon_ignoreteamchat') + + local voice_mat = Material('effects/speech_voice_red') + local voice_mat2 = Material('effects/speech_voice_blue') + local text_mat = Material('effects/speech_typing') + local partner_mat = Material('effects/speech_taunt') + + hook.Add('PostPlayerDraw', 'TalkIcon', function(ply) + if ply == LocalPlayer() and GetViewEntity() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then return end + if not ply:Alive() then return end + if not ply:IsSpeaking() then return end + + local pos = ply:GetPos() + Vector(0, 0, ply:GetModelRadius() + 10) + if (ply:LookupBone("bip_head")) then + pos = ply:GetBonePosition(ply:LookupBone("bip_head")) + Vector(0, 0, 16) + elseif (ply:LookupBone("ValveBiped.Bip01_Head1")) then + pos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")) + Vector(0, 0, 16) + end + + if ply:Team() == TEAM_BLU then + render.SetMaterial(ply:IsSpeaking() and voice_mat2 or voice_mat2) + else + render.SetMaterial(ply:IsSpeaking() and voice_mat or voice_mat) + end + + local color_var = 255 + + if computecolor:GetBool() then + local computed_color = render.ComputeLighting(ply:GetPos(), Vector(0, 0, 1)) + local max = math.max(computed_color.x, computed_color.y, computed_color.z) + color_var = math.Clamp(max * 255 * 1.11, 0, 255) + end + + render.DrawSprite(pos, 16, 16, Color(color_var, color_var, color_var, 255)) + end) + hook.Add('PostPlayerDraw', 'TalkIcon2', function(ply) + if ply == LocalPlayer() and GetViewEntity() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then return end + if not ply:Alive() then return end + if not ply:IsTyping() then return end + + local pos = ply:GetPos() + Vector(0, 0, ply:GetModelRadius() + 10) + if (ply:LookupBone("bip_head")) then + pos = ply:GetBonePosition(ply:LookupBone("bip_head")) + Vector(0, 0, 16) + elseif (ply:LookupBone("ValveBiped.Bip01_Head1")) then + pos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")) + Vector(0, 0, 16) + end + + render.SetMaterial(Material("effects/speech_typing")) + + local color_var = 255 + + if computecolor:GetBool() then + local computed_color = render.ComputeLighting(ply:GetPos(), Vector(0, 0, 1)) + local max = math.max(computed_color.x, computed_color.y, computed_color.z) + color_var = math.Clamp(max * 255 * 1.11, 0, 255) + end + + render.DrawSprite(pos, 16, 16, Color(color_var, color_var, color_var, 255)) + end) + hook.Add('PostPlayerDraw', 'TalkIcon3', function(ply) + if (!ply:IsHL2()) then return end + if ply == LocalPlayer() and GetViewEntity() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then return end + if not ply:Alive() then return end + if not ply:GetNWBool("Congaing") then return end + + local pos = ply:GetPos() + Vector(0, 0, ply:GetModelRadius() + 10) + if (ply:LookupBone("bip_head")) then + pos = ply:GetBonePosition(ply:LookupBone("bip_head")) + Vector(0, 0, 16) + elseif (ply:LookupBone("ValveBiped.Bip01_Head1")) then + pos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")) + Vector(0, 0, 16) + end + + render.SetMaterial(partner_mat) + + local color_var = 255 + + if computecolor:GetBool() then + local computed_color = render.ComputeLighting(ply:GetPos(), Vector(0, 0, 1)) + local max = math.max(computed_color.x, computed_color.y, computed_color.z) + color_var = math.Clamp(max * 255 * 1.11, 0, 255) + end + + render.DrawSprite(pos, 16, 16, Color(color_var, color_var, color_var, 255)) + end) + hook.Add('PostPlayerDraw', 'TalkIcon4', function(ply) + if (!ply:IsHL2()) then return end + if ply == LocalPlayer() and GetViewEntity() == LocalPlayer() and !LocalPlayer():ShouldDrawLocalPlayer() then return end + if not ply:Alive() then return end + if not ply:GetNWBool("Russian") then return end + + local pos = ply:GetPos() + Vector(0, 0, ply:GetModelRadius() + 10) + if (ply:LookupBone("bip_head")) then + pos = ply:GetBonePosition(ply:LookupBone("bistepp_head")) + Vector(0, 0, 16) + elseif (ply:LookupBone("ValveBiped.Bip01_Head1")) then + pos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")) + Vector(0, 0, 16) + end + + render.SetMaterial(partner_mat) + + local color_var = 255 + + if computecolor:GetBool() then + local computed_color = render.ComputeLighting(ply:GetPos(), Vector(0, 0, 1)) + local max = math.max(computed_color.x, computed_color.y, computed_color.z) + color_var = math.Clamp(max * 255 * 1.11, 0, 255) + end + + render.DrawSprite(pos, 16, 16, Color(color_var, color_var, color_var, 255)) + end) + + + hook.Add("InitPostEntity", "RemoveChatBubble", function() + hook.Remove("StartChat", "StartChatIndicator") + hook.Remove("FinishChat", "EndChatIndicator") + + hook.Remove("PostPlayerDraw", "DarkRP_ChatIndicator") + hook.Remove("CreateClientsideRagdoll", "DarkRP_ChatIndicator") + hook.Remove("player_disconnect", "DarkRP_ChatIndicator") + end) + +end + +function GM:PostTFLibsLoaded() +end + +hook.Call("PostTFLibsLoaded", GM) + +GM.Name = "Team Fortress 2" +GM.Author = "_Kilburn; Fixed by wango911; Ported by Jcw87; Workshopped by Agent Agrimar" +GM.Email = "N/A" +GM.Website = "N/A" +GM.TeamBased = true + +GM.Data = {} + +DEFINE_BASECLASS("gamemode_sandbox") +DeriveGamemode("sandbox") +GM.IsSandboxDerived = true + +function GM:GetGameDescription() + return self.Name +end + +local VoiceMenuChatMessage = { + ["TLK_PLAYER_MEDIC"] = "#Voice_Menu_Medic", + ["TLK_PLAYER_THANKS"] = "#Voice_Menu_Thanks", + ["TLK_PLAYER_GO"] = "#Voice_Menu_Go", + ["TLK_PLAYER_MOVEUP"] = "#Voice_Menu_MoveUp", + ["TLK_PLAYER_LEFT"] = "#Voice_Menu_Left", + ["TLK_PLAYER_RIGHT"] = "#Voice_Menu_Right", + ["TLK_PLAYER_YES"] = "#Voice_Menu_Yes", + ["TLK_PLAYER_NO"] = "#Voice_Menu_No", + ["TLK_PLAYER_INCOMING"] = "#Voice_Menu_Incoming", + ["TLK_PLAYER_CLOAKEDSPY"] = "#Voice_Menu_CloakedSpy", + ["TLK_MVM_SNIPER_CALLOUT"] = "Sniper!", + ["TLK_MVM_ENCOURAGE_UPGRADE"] = "Upgrade!", + ["TLK_PLAYER_SENTRYAHEAD"] = "#Voice_Menu_SentryAhead", + ["TLK_PLAYER_ACTIVATECHARGE"] = "#Voice_Menu_ActivateCharge", + ["TLK_PLAYER_HELP"] = "#Voice_Menu_Help", +} + +local VoiceMenuGesture = { + ["TLK_PLAYER_MEDIC"] = ACT_MP_GESTURE_VC_HANDMOUTH, + ["TLK_PLAYER_THANKS"] = ACT_MP_GESTURE_VC_THUMBSUP, + ["TLK_PLAYER_GO"] = ACT_MP_GESTURE_VC_FINGERPOINT, + ["TLK_PLAYER_MOVEUP"] = ACT_MP_GESTURE_VC_FINGERPOINT, + ["TLK_PLAYER_LEFT"] = ACT_MP_GESTURE_VC_FINGERPOINT, + ["TLK_PLAYER_RIGHT"] = ACT_MP_GESTURE_VC_FINGERPOINT, + ["TLK_PLAYER_YES"] = ACT_MP_GESTURE_VC_NODYES, + ["TLK_PLAYER_NO"] = ACT_MP_GESTURE_VC_NODNO, + ["TLK_PLAYER_INCOMING"] = ACT_MP_GESTURE_VC_HANDMOUTH, + ["TLK_PLAYER_CLOAKEDSPY"] = nil, + ["TLK_PLAYER_SENTRYAHEAD"] = ACT_MP_GESTURE_VC_FINGERPOINT, + ["TLK_PLAYER_TELEPORTERHERE"] = nil, + ["TLK_PLAYER_DISPENSERHERE"] = nil, + ["TLK_PLAYER_SENTRYHERE"] = nil, + ["TLK_PLAYER_ACTIVATECHARGE"] = nil, + ["TLK_PLAYER_CHARGEREADY"] = ACT_MP_GESTURE_VC_THUMBSUP, + ["TLK_PLAYER_HELP"] = ACT_MP_GESTURE_VC_HANDMOUTH, + ["TLK_PLAYER_BATTLECRY"] = ACT_MP_GESTURE_VC_FISTPUMP, + ["TLK_PLAYER_CHEERS"] = ACT_MP_GESTURE_VC_FISTPUMP, + ["TLK_PLAYER_JEERS"] = nil, + ["TLK_PLAYER_POSITIVE"] = nil, + ["TLK_PLAYER_NEGATIVE"] = nil, + ["TLK_PLAYER_NICESHOT"] = ACT_MP_GESTURE_VC_THUMBSUP, + ["TLK_PLAYER_GOODJOB"] = ACT_MP_GESTURE_VC_THUMBSUP, +} + +concommand.Remove("__svspeak") + +--[[concommand.Add( "changeteam", function( pl, cmd, args ) + --if tonumber( args[ 1 ] ) >= 5 then return end + hook.Call( "PlayerRequestTeam", GAMEMODE, pl, tonumber( args[ 1 ] ) ) + --print("changeteam?? to what, oh, team "..tonumber( args[ 1 ] ).."!") +end )]] + + +if SERVER then + +util.AddNetworkString("ActivateTauntCam") +util.AddNetworkString("DeActivateTauntCam") +util.AddNetworkString("DeActivateTauntCamImmediate") + +concommand.Add("__svspeak", function(pl,_,args) + if pl:Speak(args[1]) then + if VoiceMenuGesture[args[1]] then + pl:DoAnimationEvent(VoiceMenuGesture[args[1]], true) + end + if (args[1] == "TLK_PLAYER_MEDIC") then + ParticleEffectAttach("speech_mediccall", PATTACH_POINT_FOLLOW,pl,pl:LookupAttachment("head")) + end + umsg.Start("TFPlayerVoice") + umsg.Entity(pl) + umsg.String(args[1]) + umsg.End() + end +end) + +concommand.Add("l4d__svspeak", function(pl,_,args) + if pl:GetPlayerClass() == "tank_l4d" then + pl:EmitSound("Tank.Yell") + elseif pl:GetPlayerClass() == "charger" then + pl:EmitSound("Charger.Idle") + elseif pl:GetPlayerClass() == "boomer" then + pl:EmitSound("vj_l4d/boomer/voice/idle/male_boomer_lurk_0"..math.random(1,9)..".wav",90,100,1,CHAN_VOICE) + elseif pl:GetPlayerClass() == "l4d_zombie" then + pl:EmitSound("vj_l4d_com/attack_b/male/rage_"..math.random(50,82)..".wav",90,100,1,CHAN_VOICE) + end +end) + +else + +usermessage.Hook("TFPlayerVoice", function(msg) + local pl = msg:ReadEntity() + local voice = msg:ReadString() + + if not IsValid(pl) or not pl:IsPlayer() then return end + if pl:Team() ~= TEAM_SPECTATOR and pl:Team() ~= LocalPlayer():Team() then return end + + local v = VoiceMenuChatMessage[voice] + if not v then return end + + chat.AddText( + team.GetColor(pl:Team()), + Format("(%s) %s", tf_lang.GetRaw("#Voice"), pl:GetName()), + color_white, + Format(": %s", tf_lang.GetRaw(v)) + ) +end) + +end + +GIBS_DEMOMAN_START = 1 +GIBS_ENGINEER_START = 7 +GIBS_HEAVY_START = 14 +GIBS_MEDIC_START = 21 +GIBS_PYRO_START = 29 +GIBS_SCOUT_START = 37 +GIBS_SNIPER_START = 46 +GIBS_SOLDIER_START = 53 +GIBS_SPY_START = 61 +GIBS_ORGANS_START = 68 +GIBS_SILLY_START = 69 +GIBS_LAST = 87 + +GIB_UNKNOWN = -1 +GIB_HAT = 0 +GIB_LEFTLEG = 1 +GIB_RIGHTLEG = 2 +GIB_LEFTARM = 3 +GIB_RIGHTARM = 4 +GIB_TORSO = 5 +GIB_TORSO2 = 6 +GIB_EQUIPMENT1 = 7 +GIB_EQUIPMENT2 = 8 +GIB_HEAD = 9 +GIB_HEADGEAR1 = 10 +GIB_HEADGEAR2 = 11 +GIB_ORGAN = 12 + +TEAM_RED = 2 +TEAM_BLU = 3 +TEAM_YELLOW = 4 +TEAM_GREEN = 5 +TEAM_NEUTRAL = 6 +TEAM_FRIENDLY = 7 +TF_TEAM_PVE_INVADERS = -1 +TF_TEAM_PVE_INVADERS_GIANT = -1 + +TeamSecondaryColors = {} +function SetTeamSecondaryColor(t, c) + TeamSecondaryColors[t] = c +end + +function GetTeamSecondaryColor(t) + return TeamSecondaryColors[t] or team.GetColor(t) +end + +function GM:CreateTeams() + team.SetUp(TEAM_RED, "RED", Color(255, 64, 64)) + SetTeamSecondaryColor(TEAM_RED, Color(180, 92, 77)) + team.SetSpawnPoint(TEAM_RED, "info_player_start") + + team.SetUp(TEAM_BLU, "BLU", Color(153, 204, 255)) + SetTeamSecondaryColor(TEAM_BLU, Color(104, 124, 155)) + team.SetSpawnPoint(TEAM_BLU, "info_player_start") + + team.SetUp(TEAM_YELLOW, "YLW", Color(255, 255, 0)) + SetTeamSecondaryColor(TEAM_YELLOW, Color(255, 255, 0)) + team.SetSpawnPoint(TEAM_YELLOW, "info_player_start") + + team.SetUp(TEAM_GREEN, "GRN", Color(0, 255, 0)) + SetTeamSecondaryColor(TEAM_GREEN, Color(0, 255, 0)) + team.SetSpawnPoint(TEAM_GREEN, "info_player_start") + + team.SetUp(TEAM_FRIENDLY, "Friendly", Color(255, 192, 203)) + SetTeamSecondaryColor(TEAM_FRIENDLY, Color(255, 192, 203)) + team.SetSpawnPoint(TEAM_FRIENDLY, "info_player_start") + + team.SetUp(TEAM_NEUTRAL, "Neutral", Color(110, 255, 80)) + SetTeamSecondaryColor(TEAM_NEUTRAL, Color(74, 130, 54)) + team.SetSpawnPoint(TEAM_NEUTRAL, "info_player_start") + + team.SetUp(TEAM_FRIENDLY, "Friendly", Color(255, 192, 203)) + SetTeamSecondaryColor(TEAM_FRIENDLY, Color(255, 192, 203)) + team.SetSpawnPoint(TEAM_FRIENDLY, "info_player_start") + + team.SetUp(TEAM_SPECTATOR, "Spectator", Color(204, 204, 204)) + SetTeamSecondaryColor(TEAM_SPECTATOR, Color(255, 255, 255)) + team.SetSpawnPoint(TEAM_SPECTATOR, "worldspawn") +end + +function GM:EntityName(ent, nolocalize) + if ent then + if ent:IsPlayer() and ent:IsValid() then + return ent:Name() + elseif ent:IsValid() and list.Get("NPC")[ent:GetClass()] and list.Get("NPC")[ent:GetClass()].Name then + if (ent:GetClass() == "npc_combine_s" && ent:GetModel() == "models/combine_super_soldier.mdl") then + return "Combine Elite" + elseif (ent:GetClass() == "npc_combine_s" && ent:GetSkin() == 1 and IsValid(ent:GetActiveWeapon()) and ent:GetActiveWeapon():GetClass() == "weapon_shotgun" && ent:GetModel() != "models/combine_soldier_prisonguard.mdl") then + return "Shotgun Soldier" + elseif (ent:GetClass() == "npc_combine_s" && ent:GetModel() == "models/combine_soldier_prisonguard.mdl" and ent:GetSkin() == 0) then + return "Prison Guard" + elseif (ent:GetClass() == "npc_combine_s" && ent:GetModel() == "models/combine_soldier_prisonguard.mdl" and IsValid(ent:GetActiveWeapon()) and ent:GetActiveWeapon():GetClass() == "weapon_shotgun") then + return "Prison Shotgun Guard" + elseif (ent:GetClass() == "npc_antlionguard" && ent:GetSkin() == 1) then + return "Antlion Guardian" + else + return list.Get("NPC")[ent:GetClass()].Name + end + elseif ent:IsValid() and scripted_ents.GetList()[ent:GetClass()] and scripted_ents.GetList()[ent:GetClass()].t and scripted_ents.GetList()[ent:GetClass()].t.PrintName then + return scripted_ents.GetList()[ent:GetClass()].t.PrintName + elseif ent:IsValid() then + return "#"..ent:GetClass() + else + return "" + end + end + return "" +end + +function GM:EntityDeathnoticeName(ent, nolocalize) + if ent:IsWeapon() then + ent = ent:GetOwner() + end + if ent.GetDeathnoticeName then + return ent:GetDeathnoticeName(nolocalize) + else + return self:EntityName(ent, nolocalize) + end +end + +function GM:EntityTargetIDName(ent, nolocalize) + if ent.GetTargetIDName then + return ent:GetTargetIDName(nolocalize) + else + return self:EntityName(ent, nolocalize) + end +end + +function GM:EntityTeam(ent) + if not ent or not ent:IsValid() then return TEAM_NEUTRAL end + + if type(ent.Team)=="function" then + return ent:Team() + elseif isstring(ent.Team) and (ent.Team == "RED" or ent.Team == "BLU" or string.sub(ent:GetModel(), 1, 12) == "models/bots/") then + if ent.Team == "RED" then + return TEAM_RED + elseif ent.Team == "BLU" then + return TEAM_BLU + elseif string.sub(ent:GetModel(), 1, 12) == "models/bots/" then + return TEAM_BLU + end + else + local t = ent:GetNWInt("Team") or 0 + if t>=1 then + return t + else + if (ent.PreviousTeam) then + t = ent.PreviousTeam + else + if ((ent:GetClass() == "npc_turret_floor" || ent:GetClass() == "npc_portal_turret_floor") and ent:HasSpawnFlags(512)) then + t = TEAM_RED + else + t = ent:GetNPCData().team + end + end + if not t and IsValid(ent:GetOwner()) then + return self:EntityTeam(ent:GetOwner()) + else + if type(t)=="function" then + return t() or TEAM_NEUTRAL + else + return t or TEAM_NEUTRAL + end + end + end + end +end + +function GM:EntityID(ent) + if ent:IsPlayer() then + return ent:UserID() + elseif ent.DeathNoticeEntityID then + return -ent.DeathNoticeEntityID + else + return 0 + end +end + +function ParticleSuffix(t) + if t==TEAM_BLU or t==TF_TEAM_PVE_INVADERS then return "blue" + else return "red" + end +end + +function GM:ShouldCollide(ent1, ent2) + if not IsValid(ent1) or not IsValid(ent2) then + return true + end + + if ent1.ShouldCollide then + local c = ent1:ShouldCollide(ent2) + if c ~= nil then return c end + end + + if ent2.ShouldCollide then + local c = ent2:ShouldCollide(ent1) + if c ~= nil then return c end + end + + if IsValid(ent1:GetOwner()) and (ent1:GetOwner():IsPlayer() or ent1:GetOwner():IsNPC()) then ent1 = ent1:GetOwner() end + if IsValid(ent2:GetOwner()) and (ent2:GetOwner():IsPlayer() or ent2:GetOwner():IsNPC()) then ent2 = ent2:GetOwner() end + + local t1 = self:EntityTeam(ent1) + local t2 = self:EntityTeam(ent2) + --[[ + if (ent1:IsPlayer() or ent2:IsPlayer()) and (t1==TEAM_RED or t1==TEAM_BLU or t1==TF_TEAM_PVE_INVADERS or t1==TEAM_INFECTED) and t1==t2 then + return false + end]] + + if CLIENT then + local c1, c2 = ent1:GetClass(), ent2:GetClass() + + if c2=="class C_HL2MPRagdoll" then + c1,c2=c2,c1 + end + + if (c1=="class C_HL2MPRagdoll" or c1=="class CLuaEffect") and c2=="class CLuaEffect" then + return false + end + end + + --[[ + if ent2:GetClass()=="phys_bone_follower" then + ent1,ent2 = ent2,ent1 + end]] + + return true +end + +HumanGibs = { + "models/player/gibs/demogib001.mdl", -- 1 + "models/player/gibs/demogib002.mdl", + "models/player/gibs/demogib003.mdl", + "models/player/gibs/demogib004.mdl", + "models/player/gibs/demogib005.mdl", + "models/player/gibs/demogib006.mdl", + "models/player/gibs/engineergib001.mdl", -- 7 + "models/player/gibs/engineergib002.mdl", + "models/player/gibs/engineergib003.mdl", + "models/player/gibs/engineergib004.mdl", + "models/player/gibs/engineergib005.mdl", + "models/player/gibs/engineergib006.mdl", + "models/player/gibs/engineergib007.mdl", + "models/player/gibs/heavygib001.mdl", -- 14 + "models/player/gibs/heavygib002.mdl", + "models/player/gibs/heavygib003.mdl", + "models/player/gibs/heavygib004.mdl", + "models/player/gibs/heavygib005.mdl", + "models/player/gibs/heavygib006.mdl", + "models/player/gibs/heavygib007.mdl", + "models/player/gibs/medicgib001.mdl", -- 21 + "models/player/gibs/medicgib002.mdl", + "models/player/gibs/medicgib003.mdl", + "models/player/gibs/medicgib004.mdl", + "models/player/gibs/medicgib005.mdl", + "models/player/gibs/medicgib006.mdl", + "models/player/gibs/medicgib007.mdl", + "models/player/gibs/medicgib008.mdl", + "models/player/gibs/pyrogib001.mdl", -- 29 + "models/player/gibs/pyrogib002.mdl", + "models/player/gibs/pyrogib003.mdl", + "models/player/gibs/pyrogib004.mdl", + "models/player/gibs/pyrogib005.mdl", + "models/player/gibs/pyrogib006.mdl", + "models/player/gibs/pyrogib007.mdl", + "models/player/gibs/pyrogib008.mdl", + "models/player/gibs/scoutgib001.mdl", -- 37 + "models/player/gibs/scoutgib002.mdl", + "models/player/gibs/scoutgib003.mdl", + "models/player/gibs/scoutgib004.mdl", + "models/player/gibs/scoutgib005.mdl", + "models/player/gibs/scoutgib006.mdl", + "models/player/gibs/scoutgib007.mdl", + "models/player/gibs/scoutgib008.mdl", + "models/player/gibs/scoutgib009.mdl", + "models/player/gibs/snipergib001.mdl", -- 46 + "models/player/gibs/snipergib002.mdl", + "models/player/gibs/snipergib003.mdl", + "models/player/gibs/snipergib004.mdl", + "models/player/gibs/snipergib005.mdl", + "models/player/gibs/snipergib006.mdl", + "models/player/gibs/snipergib007.mdl", + "models/player/gibs/soldiergib001.mdl", -- 53 + "models/player/gibs/soldiergib002.mdl", + "models/player/gibs/soldiergib003.mdl", + "models/player/gibs/soldiergib004.mdl", + "models/player/gibs/soldiergib005.mdl", + "models/player/gibs/soldiergib006.mdl", + "models/player/gibs/soldiergib007.mdl", + "models/player/gibs/soldiergib008.mdl", + "models/player/gibs/spygib001.mdl", -- 61 + "models/player/gibs/spygib002.mdl", + "models/player/gibs/spygib003.mdl", + "models/player/gibs/spygib004.mdl", + "models/player/gibs/spygib005.mdl", + "models/player/gibs/spygib006.mdl", + "models/player/gibs/spygib007.mdl", + "models/player/gibs/random_organ.mdl", -- 68 + "models/player/gibs/gibs_balloon.mdl", -- 69 + "models/player/gibs/gibs_bolt.mdl", + "models/player/gibs/gibs_boot.mdl", + "models/player/gibs/gibs_burger.mdl", + "models/player/gibs/gibs_can.mdl", + "models/player/gibs/gibs_clock.mdl", + "models/player/gibs/gibs_duck.mdl", + "models/player/gibs/gibs_fish.mdl", + "models/player/gibs/gibs_gear1.mdl", + "models/player/gibs/gibs_gear2.mdl", + "models/player/gibs/gibs_gear3.mdl", + "models/player/gibs/gibs_gear4.mdl", + "models/player/gibs/gibs_gear5.mdl", + "models/player/gibs/gibs_hubcap.mdl", + "models/player/gibs/gibs_licenseplate.mdl", + "models/player/gibs/gibs_spring1.mdl", + "models/player/gibs/gibs_spring2.mdl", + "models/player/gibs/gibs_teeth.mdl", + "models/player/gibs/gibs_tire.mdl", + "models/gibs/hgibs.mdl", -- 88 +} + +RobotGibs = { + "models/bots/gibs/demobot_gib_leg1.mdl", -- 1 + "models/bots/gibs/demobot_gib_leg2.mdl", + "models/bots/gibs/demobot_gib_arm1.mdl", + "models/bots/gibs/demobot_gib_arm2.mdl", + "models/bots/gibs/demobot_gib_pelvis.mdl", + "models/bots/gibs/demobot_gib_head.mdl", + "models/bots/gibs/demobot_gib_leg3.mdl", + "models/player/gibs/engineergib001.mdl", -- 8 + "models/player/gibs/engineergib002.mdl", + "models/player/gibs/engineergib003.mdl", + "models/player/gibs/engineergib004.mdl", + "models/player/gibs/engineergib005.mdl", + "models/player/gibs/engineergib006.mdl", + "models/player/gibs/engineergib007.mdl", + "models/bots/gibs/heavybot_gib_arm.mdl", -- 15 + "models/bots/gibs/heavybot_gib_arm2.mdl", + "models/bots/gibs/heavybot_gib_leg.mdl", + "models/bots/gibs/heavybot_gib_leg2.mdl", + "models/bots/gibs/heavybot_gib_pelvis.mdl", + "models/bots/gibs/heavybot_gib_head.mdl", + "", + "models/bots/gibs/medicbot_gib_head.mdl", -- 22 + "models/bots/gibs/pyrobot_gib_arm1.mdl", -- 23 + "models/bots/gibs/pyrobot_gib_arm2.mdl", + "models/bots/gibs/pyrobot_gib_arm3.mdl", + "models/bots/gibs/pyrobot_gib_chest.mdl", + "models/bots/gibs/pyrobot_gib_chest2.mdl", + "models/bots/gibs/pyrobot_gib_leg.mdl", + "models/bots/gibs/pyrobot_gib_pelvis.mdl", + "models/bots/gibs/pyrobot_gib_head.mdl", + "models/bots/gibs/scoutbot_gib_arm1.mdl", -- 38 + "models/bots/gibs/scoutbot_gib_arm2.mdl", + "models/bots/gibs/scoutbot_gib_chest.mdl", + "models/bots/gibs/scoutbot_gib_head.mdl", + "models/bots/gibs/scoutbot_gib_leg1.mdl", + "models/bots/gibs/scoutbot_gib_leg2.mdl", + "", + "", + "", + "models/bots/gibs/sniperbot_gib_head.mdl", -- 47 + "models/bots/gibs/soldierbot_gib_arm1.mdl", -- 48 + "models/bots/gibs/soldierbot_gib_arm2.mdl", + "models/bots/gibs/soldierbot_gib_chest.mdl", + "models/bots/gibs/soldierbot_gib_head.mdl", + "models/bots/gibs/soldierbot_gib_leg1.mdl", + "models/bots/gibs/soldierbot_gib_leg2.mdl", + "models/bots/gibs/soldierbot_gib_pelvis.mdl", + "", + "models/bots/gibs/spybot_gib_head.mdl", -- 56 +} + +RobotBossGibs = { + "models/bots/gibs/demobot_gib_boss_leg1.mdl", -- 1 + "models/bots/gibs/demobot_gib_boss_leg2.mdl", + "models/bots/gibs/demobot_gib_boss_arm1.mdl", + "models/bots/gibs/demobot_gib_boss_arm2.mdl", + "models/bots/gibs/demobot_gib_boss_pelvis.mdl", + "models/bots/gibs/demobot_gib_boss_head.mdl", + "models/bots/gibs/demobot_gib_boss_leg3.mdl", + "models/player/gibs/engineergib001.mdl", -- 8 + "models/player/gibs/engineergib002.mdl", + "models/player/gibs/engineergib003.mdl", + "models/player/gibs/engineergib004.mdl", + "models/player/gibs/engineergib005.mdl", + "models/player/gibs/engineergib006.mdl", + "models/player/gibs/engineergib007.mdl", + "models/bots/gibs/heavybot_gib_boss_arm.mdl", -- 15 + "models/bots/gibs/heavybot_gib_boss_arm2.mdl", + "models/bots/gibs/heavybot_gib_boss_leg.mdl", + "models/bots/gibs/heavybot_gib_boss_leg2.mdl", + "models/bots/gibs/heavybot_gib_boss_pelvis.mdl", + "models/bots/gibs/heavybot_gib_boss_head.mdl", + "", + "models/bots/gibs/medicbot_gib_head.mdl", -- 22 + "models/bots/gibs/pyrobot_gib_boss_arm1.mdl", -- 23 + "models/bots/gibs/pyrobot_gib_boss_arm2.mdl", + "models/bots/gibs/pyrobot_gib_boss_arm3.mdl", + "models/bots/gibs/pyrobot_gib_boss_chest.mdl", + "models/bots/gibs/pyrobot_gib_boss_chest2.mdl", + "models/bots/gibs/pyrobot_gib_boss_leg.mdl", + "models/bots/gibs/pyrobot_gib_boss_pelvis.mdl", + "models/bots/gibs/pyrobot_gib_boss_head.mdl", + "models/bots/gibs/scoutbot_gib_boss_arm1.mdl", -- 38 + "models/bots/gibs/scoutbot_gib_boss_arm2.mdl", + "models/bots/gibs/scoutbot_gib_boss_chest.mdl", + "models/bots/gibs/scoutbot_gib_boss_head.mdl", + "models/bots/gibs/scoutbot_gib_boss_leg1.mdl", + "models/bots/gibs/scoutbot_gib_boss_leg2.mdl", + "", + "", + "", + "models/bots/gibs/sniperbot_gib_head.mdl", -- 47 + "models/bots/gibs/soldierbot_gib_boss_arm1.mdl", -- 48 + "models/bots/gibs/soldierbot_gib_boss_arm2.mdl", + "models/bots/gibs/soldierbot_gib_boss_chest.mdl", + "models/bots/gibs/soldierbot_gib_boss_head.mdl", + "models/bots/gibs/soldierbot_gib_boss_leg1.mdl", + "models/bots/gibs/soldierbot_gib_boss_leg2.mdl", + "models/bots/gibs/soldierbot_gib_boss_pelvis.mdl", + "", + "models/bots/gibs/spybot_gib_head.mdl", -- 56 +} + +NPCModels = { + "models/Humans/Group01/female_01.mdl", + "models/Humans/Group01/female_02.mdl", + "models/Humans/Group01/female_03.mdl", + "models/Humans/Group01/female_04.mdl", + "models/Humans/Group01/female_05.mdl", + "models/Humans/Group01/female_06.mdl", + "models/Humans/Group01/female_07.mdl", + "models/Humans/Group01/male_01.mdl", + "models/Humans/Group01/male_02.mdl", + "models/Humans/Group01/male_03.mdl", + "models/Humans/Group01/male_04.mdl", + "models/Humans/Group01/male_05.mdl", + "models/Humans/Group01/male_06.mdl", + "models/Humans/Group01/male_07.mdl", + "models/Humans/Group01/male_08.mdl", + "models/Humans/Group01/male_09.mdl", + + "models/Humans/Group02/female_01.mdl", + "models/Humans/Group02/female_02.mdl", + "models/Humans/Group02/female_03.mdl", + "models/Humans/Group02/female_04.mdl", + "models/Humans/Group02/female_05.mdl", + "models/Humans/Group02/female_06.mdl", + "models/Humans/Group02/female_07.mdl", + "models/Humans/Group02/male_01.mdl", + "models/Humans/Group02/male_02.mdl", + "models/Humans/Group02/male_03.mdl", + "models/Humans/Group02/male_04.mdl", + "models/Humans/Group02/male_05.mdl", + "models/Humans/Group02/male_06.mdl", + "models/Humans/Group02/male_07.mdl", + "models/Humans/Group02/male_08.mdl", + "models/Humans/Group02/male_09.mdl", + + "models/Humans/Group03/female_01.mdl", + "models/Humans/Group03/female_02.mdl", + "models/Humans/Group03/female_03.mdl", + "models/Humans/Group03/female_04.mdl", + "models/Humans/Group03/female_05.mdl", + "models/Humans/Group03/female_06.mdl", + "models/Humans/Group03/female_07.mdl", + "models/Humans/Group03/male_01.mdl", + "models/Humans/Group03/male_02.mdl", + "models/Humans/Group03/male_03.mdl", + "models/Humans/Group03/male_04.mdl", + "models/Humans/Group03/male_05.mdl", + "models/Humans/Group03/male_06.mdl", + "models/Humans/Group03/male_07.mdl", + "models/Humans/Group03/male_08.mdl", + "models/Humans/Group03/male_09.mdl", + + "models/Humans/Group03m/female_01.mdl", + "models/Humans/Group03m/female_02.mdl", + "models/Humans/Group03m/female_03.mdl", + "models/Humans/Group03m/female_04.mdl", + "models/Humans/Group03m/female_05.mdl", + "models/Humans/Group03m/female_06.mdl", + "models/Humans/Group03m/female_07.mdl", + "models/Humans/Group03m/male_01.mdl", + "models/Humans/Group03m/male_02.mdl", + "models/Humans/Group03m/male_03.mdl", + "models/Humans/Group03m/male_04.mdl", + "models/Humans/Group03m/male_05.mdl", + "models/Humans/Group03m/male_06.mdl", + "models/Humans/Group03m/male_07.mdl", + "models/Humans/Group03m/male_08.mdl", + "models/Humans/Group03m/male_09.mdl", + + "models/alyx.mdl", + "models/barney.mdl", + "models/breen.mdl", + "models/eli.mdl", + "models/gman.mdl", + "models/gman_high.mdl", + "models/kleiner.mdl", + "models/monk.mdl", + "models/mossman.mdl", + "models/vortigaunt.mdl", +} + +--[[ +for _,v in pairs(NPCModels) do + util.PrecacheModel(v) +end]] + +PlayerModels = { + "models/player/demo.mdl", + "models/player/engineer.mdl", + "models/player/heavy.mdl", + "models/player/medic.mdl", + "models/player/pyro.mdl", + "models/player/scout.mdl", + "models/player/sniper.mdl", + "models/player/soldier.mdl", + "models/player/spy.mdl", +} + +AnimationModels = { + "models/weapons/c_models/c_demo_animations.mdl", + "models/weapons/c_models/c_heavy_animations.mdl", + "models/weapons/c_models/c_medic_animations.mdl", + "models/weapons/c_models/c_pyro_animations.mdl", + "models/weapons/c_models/c_scout_animations.mdl", + "models/weapons/c_models/c_sniper_animations.mdl", + "models/weapons/c_models/c_soldier_animations.mdl", + "models/weapons/c_models/c_spy_animations.mdl", +} + +include("shd_facefix.lua") +include("shd_precaches.lua") +include("shd_movement.lua") +include("shd_npcdata.lua") +include("shd_playerclasses.lua") +include("ply_extension.lua") +include("ent_extension.lua") +include("shd_playerstates.lua") + +include("shd_maphooks.lua") +concommand.Add("+inspect", function(pl) + pl:SetNWString("inspect", "inspecting_start") +end) + +concommand.Add("-inspect", function(pl) + pl:SetNWString("inspect", "inspecting_released") + timer.Simple( 0.02, function() pl:SetNWString("inspect", "inspecting_done") end ) +end) + +GM.RoundHasWinner = false + + +function GM:RoundWin(teamnum) + GAMEMODE.RoundHasWinner = true + timer.Simple(15, function() + GAMEMODE.RoundHasWinner = false + if SERVER then + RunConsoleCommand("gmod_admin_cleanup") + for k,v in ipairs(player.GetAll()) do + v:Spawn() + v:SetNWBool("Taunting",true) + timer.Create("SlowGuydown"..v:EntIndex(), 0.1, 48, function() + v:SetWalkSpeed(1) + v:SetRunSpeed(1) + end) + timer.Simple(5, function() + v:SetNWBool("Taunting",false) + v:ResetClassSpeed() + timer.Simple(math.Rand(0,2.0), function() + + v:Speak("TLK_ROUND_START") + + end) + end) + net.Start("DeActivateTauntCam") + net.Send(v) + end + team.SetScore(TEAM_RED,0) + team.SetScore(TEAM_BLU,0) + end + end) + for _,pl in pairs( player.GetAll() ) do + if pl:Team() == teamnum then + pl:SendLua([[surface.PlaySound("misc/your_team_won.wav")]]) + GAMEMODE:StartCritBoost(pl,15) + else + pl:SendLua([[surface.PlaySound("misc/your_team_lost.wav")]]) + pl:StripWeapons() + net.Start("ActivateTauntCam") + net.Send(pl) + end + end + +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_attributes.lua b/gamemodes/tf/gamemode/shd_attributes.lua similarity index 76% rename from addon/gamemodes/teamfortress/gamemode/shd_attributes.lua rename to gamemodes/tf/gamemode/shd_attributes.lua index 3e9aabe87..d4561f3f9 100644 --- a/addon/gamemodes/teamfortress/gamemode/shd_attributes.lua +++ b/gamemodes/tf/gamemode/shd_attributes.lua @@ -20,6 +20,46 @@ local ATTRIBUTES = { -- Initialisation attributes -- Apply when the weapon is equipped +["stickybomb_charge_rate"] = { + equip = function(v,weapon,owner) + weapon.ChargeTime = weapon.ChargeTime * v + end, +}, + +["centerfire_projectile"] = { + equip = function(v,weapon,owner) + if (isvector(weapon.ProjectileShootOffset)) then + weapon.ProjectileShootOffset.y = 0 + end + end, +}, + +["mult_reload_time_hidden"] = { + equip = function(v,weapon,owner) + weapon:SetNWFloat("ReloadTimeMultiplier",v) + end, +}, + +["mult_reload_time"] = { + equip = function(v,weapon,owner) + weapon:SetNWFloat("ReloadTimeMultiplier",v) + end, +}, + +["hwn_mult_reload_time"] = { + equip = function(v,weapon,owner) + weapon:SetNWFloat("ReloadTimeMultiplier",v) + end, +}, + +["charge_turn_control"] = { + equip = function(v,weapon,owner) + if (IsValid(owner.TargeEntity)) then + owner.TargeEntity.ChargeSteerConstraint = owner.TargeEntity.ChargeSteerConstraint * v + end + end, +}, + ["mult_clipsize"] = { equip = function(v,weapon,owner) weapon.Primary.ClipSize = math.Round(weapon.Primary.ClipSize * v) @@ -35,6 +75,14 @@ local ATTRIBUTES = { end end, }, +["minigun_no_spin_sounds"] = { + equip = function(v,weapon,owner) + weapon.SpecialSound3OLD = weapon.SpecialSound3 + weapon.SpecialSound2OLD = weapon.SpecialSound2 + weapon.SpecialSound3 = weapon.SpecialSound2OLD + weapon.SpecialSound2 = Sound("") + end, +}, ["mult_crit_chance"] = { equip = function(v,weapon,owner) @@ -147,7 +195,7 @@ local ATTRIBUTES = { ["mult_reload_time"] = { unimplemented = true, equip = function(v,weapon,owner)-- NOT IMPLEMENTED - -- todo + weapon.ReloadTime = weapon.ReloadTime * v end, }, @@ -297,6 +345,15 @@ local ATTRIBUTES = { end, }, +["mult_player_movespeed_active"] = { + equip = function(v,weapon,owner) + if SERVER then + weapon.SpeedBonus = (weapon.SpeedBonus or 1) * v + owner:ResetClassSpeed() + end + end, +}, + ["mult_health_fromhealers"] = { equip = function(v,weapon,owner) if SERVER then @@ -386,6 +443,14 @@ local ATTRIBUTES = { end, }, +["pda_builds_minidispenser"] = { + equip = function(v,weapon,owner) + if SERVER then + owner.TempAttributes.BuildsMiniDispensers = true + end + end, +}, + ["add_maxhealth_nonbuffed"] = { unimplemented = true, equip = function(v,weapon,owner) @@ -430,16 +495,23 @@ local ATTRIBUTES = { end, }, -["set_silent_killer"] = {-- NOT (fully) IMPLEMENTED - unimplemented = true, +["set_silent_killer"] = { equip = function(v,weapon,owner) weapon.IsSilentKiller = true end, on_kill = function(v,ent,inf,att) - if ent:CanReceiveCrits() then - ent:AddDeathFlag(DF_SILENCED) - end + ent:AddDeathFlag(DF_SILENCED) + end, +}, + +["sanguisuge"] = { + equip = function(v,weapon,owner) + weapon.IsSilentKiller = true + end, + + on_kill = function(v,ent,inf,att) + att:SetHealth(att:Health() + ent:GetMaxHealth() * 0.5) end, }, @@ -459,6 +531,18 @@ local ATTRIBUTES = { end, }, +["self_mark_for_death"] = { + equip = function(v,weapon,owner) + weapon.MarkForDeath = true + end, +}, + +["mult_single_wep_deploy_time"] = { + equip = function(v,weapon,owner) + weapon.DeployTimeMultiplier = (weapon.DeployTimeMultiplier or 0.75) * v + end, +}, + ["mult_deploy_time"] = { equip = function(v,weapon,owner) if not owner.TempAttributes then @@ -535,6 +619,26 @@ local ATTRIBUTES = { end end, }, +["desc_gascan_description"] = { + projectile_fired = function(v,proj,weapon,owner) + if proj:GetClass()=="tf_projectile_gas" then + local jar = scripted_ents.Get("tf_projectile_gas") + if not jar then return end + + proj.DoSpecialDamage = jar.DoSpecialDamage + proj.DoExplosion = jar.DoExplosion + proj.BugbaitTouch = jar.BugbaitTouch + proj.ActivateBugbaitTargets = jar.ActivateBugbaitTargets + + proj.NoSelfDamage = true + proj.NoMiniCrits = true + proj.ExplosionSound = "weapons/gas_can_explode.wav" + + proj.Trail = util.SpriteTrail(proj, 0, Color(200,255,0,200), false, + 0.1, 5, 1, 1/(5+1)*0.5, "Effects/arrowtrail_red.vmt") + end + end, +}, ["sticky_arm_time"] = { projectile_fired = function(v,proj,weapon,owner) @@ -574,14 +678,14 @@ local ATTRIBUTES = { ["or_crit_vs_playercond"] = { boolean = true, crit_override = function(v,ent,hitgroup,dmginfo) - if ISPLAYER(ent) and ONFIRE(ent) then return true end + if ISPLAYER(ent) and ONFIRE(ent) and dmginfo:GetInflictor():GetClass() != "tf_entityflame" then return true end end, }, ["or_minicrit_vs_playercond_burning"] = { boolean = true, minicrit_override = function(v,ent,hitgroup,dmginfo) - if ISPLAYER(ent) and ONFIRE(ent) then return true end + if ISPLAYER(ent) and ONFIRE(ent) and dmginfo:GetInflictor():GetClass() != "tf_entityflame" then return true end end, }, @@ -610,7 +714,7 @@ local ATTRIBUTES = { inf = CURRENT_ENT if IsValid(inf) and IsValid(inf.Owner) then att = inf.Owner - print(att:IsThrownByExplosion()) + --print(att:IsThrownByExplosion()) if ISPLAYER(att) and not att:OnGround() and att:IsThrownByExplosion() then return true end end end @@ -646,7 +750,7 @@ local ATTRIBUTES = { ["mult_dmg"] = { post_damage = function(v,ent,hitgroup,dmginfo) if not ISSELFDMG(ent,dmginfo) then - dmginfo:ScaleDamage(v) + dmginfo:SetDamage(dmginfo:GetDamage() * v) dmginfo:SetDamageForce(dmginfo:GetDamageForce() * v) end end, @@ -655,7 +759,7 @@ local ATTRIBUTES = { ["mult_dmg_vs_players"] = { post_damage = function(v,ent,hitgroup,dmginfo) if ISPLAYER(ent) and not ISBUILDING(ent) then - dmginfo:ScaleDamage(v) + dmginfo:SetDamage(dmginfo:GetDamage() * v) end end, }, @@ -663,7 +767,7 @@ local ATTRIBUTES = { ["mult_dmg_vs_buildings"] = { post_damage = function(v,ent,hitgroup,dmginfo) if ISBUILDING(ent) then - dmginfo:ScaleDamage(v) + dmginfo:SetDamage(dmginfo:GetDamage() * v) end end, }, @@ -671,16 +775,98 @@ local ATTRIBUTES = { ["mult_dmg_vs_nonburning"] = { post_damage = function(v,ent,hitgroup,dmginfo) if not ONFIRE(ent) then - dmginfo:ScaleDamage(v) + dmginfo:SetDamage(dmginfo:GetDamage() * v) end end, }, -["mult_onhit_enemyspeed"] = { - unimplemented = true, +["speed_boost_on_hit"] = { post_damage = function(v,ent,hitgroup,dmginfo) if not ISSELFDMG(ent,dmginfo) and ISPLAYER(ent) and ent:Health()>0 and not ISBUILDING(ent) then - -- todo + local att = dmginfo:GetAttacker() + if (!att:HasPlayerState(PLAYERSTATE_SPEED)) then + dmginfo:GetAttacker():SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerUp')") + end + timer.Stop("Stunned"..att:EntIndex()) + timer.Stop("StunnedStop"..att:EntIndex()) + --att:AddPlayerState(PLAYERSTATE_SPEED,true) + timer.Create("Stunned"..att:EntIndex(), 0.1, v * 10, function() + att:SetClassSpeed(att:GetPlayerClassTable().Speed * 1.5) + end) + timer.Create("StunnedStop"..att:EntIndex(), v, 1, function() + timer.Stop("Stunned"..att:EntIndex()) + --att:RemovePlayerState(PLAYERSTATE_SPEED,true) + att:SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerDown')") + att:EmitSound("Building_Speedpad.BoostStop") + att:ResetClassSpeed() + end) + end + end, +}, + +["speed_buff_ally"] = { + pre_damage_ally = function(v,ent,hitgroup,dmginfo) + local att = dmginfo:GetAttacker() + if (ent:IsFriendly(att)) then + if (!att:HasPlayerState(PLAYERSTATE_SPEED)) then + dmginfo:GetAttacker():SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerUp')") + end + timer.Stop("Stunned"..att:EntIndex()) + timer.Stop("StunnedStop"..att:EntIndex()) + --att:AddPlayerState(PLAYERSTATE_SPEED,true) + timer.Create("Stunned"..att:EntIndex(), 0.1, v * 40, function() + att:SetClassSpeed(att:GetPlayerClassTable().Speed * 1.5) + end) + timer.Create("StunnedStop"..att:EntIndex(), v + 4, 1, function() + timer.Stop("Stunned"..att:EntIndex()) + --att:RemovePlayerState(PLAYERSTATE_SPEED,true) + att:SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerDown')") + att:EmitSound("Building_Speedpad.BoostStop") + att:ResetClassSpeed() + end) + if (ent:IsPlayer()) then + if (!ent:HasPlayerState(PLAYERSTATE_SPEED)) then + ent:SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerUp')") + end + end + timer.Stop("Stunned"..ent:EntIndex()) + timer.Stop("StunnedStop"..ent:EntIndex()) + --ent:AddPlayerState(PLAYERSTATE_SPEED,true) + timer.Create("Stunned"..ent:EntIndex(), 0.1, v * 40, function() + ent:SetClassSpeed(ent:GetPlayerClassTable().Speed * 1.5) + end) + timer.Create("StunnedStop"..ent:EntIndex(), v + 4, 1, function() + timer.Stop("Stunned"..ent:EntIndex()) + --ent:RemovePlayerState(PLAYERSTATE_SPEED,true) + if (ent:IsPlayer()) then + ent:SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerDown')") + end + ent:EmitSound("Building_Speedpad.BoostStop") + ent:ResetClassSpeed() + end) + end + end, +}, + +["speed_boost_on_kill"] = { + on_kill = function(v,ent,inf,att) + if not ISBUILDING(ent) then + if (!att:HasPlayerState(PLAYERSTATE_SPEED)) then + att:SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerUp')") + end + timer.Stop("Stunned"..att:EntIndex()) + timer.Stop("StunnedStop"..att:EntIndex()) + --att:AddPlayerState(PLAYERSTATE_SPEED,true) + timer.Create("Stunned"..att:EntIndex(), 0.1, v * 10, function() + --att:SetClassSpeed(att:GetPlayerClassTable().Speed * 1.5) + end) + timer.Create("StunnedStop"..att:EntIndex(), v, 1, function() + timer.Stop("Stunned"..att:EntIndex()) + --att:RemovePlayerState(PLAYERSTATE_SPEED,true) + att:SendLua("LocalPlayer():EmitSound('DisciplineDevice.PowerDown')") + att:EmitSound("Building_Speedpad.BoostStop") + att:ResetClassSpeed() + end) end end, }, @@ -697,7 +883,16 @@ local ATTRIBUTES = { ["add_onhit_addhealth"] = { post_damage = function(v,ent,hitgroup,dmginfo) if not ISSELFDMG(ent,dmginfo) and ISPLAYER(ent) and ent:Health()>0 and not ISBUILDING(ent) then - GAMEMODE:HealPlayer(dmginfo:GetAttacker(), dmginfo:GetAttacker(), v, true, false) + dmginfo:GetAttacker():SetHealth(dmginfo:GetAttacker():Health() + v) + end + end, + projectile_fired = function(v,proj,weapon,owner) end, +}, + +["add_health_on_radius_damage"] = { + post_damage = function(v,ent,hitgroup,dmginfo) + if not ISSELFDMG(ent,dmginfo) and ISPLAYER(ent) and ent:Health()>0 and not ISBUILDING(ent) then + dmginfo:GetAttacker():SetHealth(dmginfo:GetAttacker():Health() + v) end end, projectile_fired = function(v,proj,weapon,owner) end, @@ -757,10 +952,6 @@ local ATTRIBUTES = { effectdata:SetScale(128) util.Effect("ThumperDust", effectdata, true, true) - effectdata = EffectData() - effectdata:SetOrigin(ent:GetPos()) - util.Effect("tf_stickybomb_destroyed", effectdata) - ent:Remove() end end @@ -775,28 +966,26 @@ local ATTRIBUTES = { end, }, -["jarate_duration"] = { +["crit_on_hard_hit"] = { pre_damage = function(v,ent,hitgroup,dmginfo) + ent:AddDeathFlag(DF_GIB) + end, +}, + +["jarate_duration"] = { + post_damage = function(v,ent,hitgroup,dmginfo) local inf = dmginfo:GetInflictor() - if inf:GetClass() == "tf_weapon_sniperrifle" and inf.ChargeTime then - if not inf.ChargeTimerStart or (CurTime()-inf.ChargeTimerStart)/inf.ChargeTime < 0.25 then - return - end + if inf:GetClass() == "tf2_weapon_sniperrifle" and inf.ChargeTime then + end local att = dmginfo:GetAttacker() - if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then - ent:AddPlayerState(PLAYERSTATE_JARATED, true) - timer.Simple(0, function() if IsValid(ent) then ent:AddPlayerState(PLAYERSTATE_JARATED, true) end end) - - ent.NextEndJarate = CurTime() + v - - local effectdata = EffectData() - effectdata:SetOrigin(dmginfo:GetDamagePosition()) - effectdata:SetAngles(Angle(0,0,0)) - effectdata:SetAttachment(5) - util.Effect("tf_explosion", effectdata, true, true) - end + + ent:AddPlayerState(PLAYERSTATE_JARATED, true) + --timer.Simple(0, function() if IsValid(ent) then ent:AddPlayerState(PLAYERSTATE_JARATED, true) end end) + + ent.NextEndJarate = CurTime() + v + end, equip = function(v,weapon,owner) @@ -808,7 +997,7 @@ local ATTRIBUTES = { _global_post_damage = function(v,ent,hitgroup,dmginfo) if ent == dmginfo:GetAttacker() and dmginfo:IsExplosionDamage() then dmginfo:SetDamage(0) - dmginfo:SetDamageForce(dmginfo:GetDamageForce() * 1.5) + --dmginfo:SetDamageForce(dmginfo:GetDamageForce() * 1.5) end end, }, @@ -850,7 +1039,7 @@ local ATTRIBUTES = { umsg.Float(inf.GunboatsDamageData.absorbeddamage) umsg.End() else - --MsgN("Dead, simulating damage taken") + ----MsgN("Dead, simulating damage taken") att:SetHealth(0) att:TakeDamageInfo(CopyDamageInfo(dmginfo)) end @@ -862,11 +1051,21 @@ local ATTRIBUTES = { end, }, -["set_dmgtype_ignite"] = { - pre_damage = function(v,ent,hitgroup,dmginfo) +["mark_for_death"] = { + post_damage = function(v,ent,hitgroup,dmginfo) local att = dmginfo:GetAttacker() - if ent:IsFlammable() and att:IsValidEnemy(ent) then - GAMEMODE:IgniteEntity(ent, dmginfo:GetInflictor(), dmginfo:GetAttacker(), 10) + if att:IsValidEnemy(ent) then + if (!ent:HasPlayerState(PLAYERSTATE_MARKED)) then + ent:AddPlayerState(PLAYERSTATE_MARKED, true) + if (ent:IsPlayer()) then + if SERVER then + ent:SendLua('LocalPlayer():GetActiveWeapon():EmitSound("Weapon_Marked_for_Death.Indicator")') + end + end + if CLIENT then + ent:EmitSound('Weapon_Marked_for_Death.Initial') + end + end end end, }, @@ -885,7 +1084,7 @@ local ATTRIBUTES = { ["mult_dmgtaken_from_fire"] = { _global_post_damage_received = function(v,pl,hitgroup,dmginfo) local inf = dmginfo:GetInflictor() - if dmginfo:IsDamageType(DMG_BURN) or (IsValid(inf) and inf:GetClass() == "tf_entityflame") then + if dmginfo:IsDamageType(DMG_BURN) or (IsValid(inf) and inf:GetClass() == "entityflame") then dmginfo:ScaleDamage(v) end end, @@ -971,7 +1170,7 @@ local ATTRIBUTES = { ["add_onkill_critboost_time"] = { on_kill = function(v,ent,inf,att) if not ISBUILDING(ent) then - GAMEMODE:AddCritBoostTime(att, v) + --GAMEMODE:AddCritBoostTime(att, v) end end, }, @@ -979,14 +1178,15 @@ local ATTRIBUTES = { ["heal_on_kill"] = { on_kill = function(v,ent,inf,att) if not ISBUILDING(ent) then - GAMEMODE:HealPlayer(att, att, v, true, true) + --GAMEMODE:HealPlayer(att, att, v, true, true) + att:SetHealth(att:Health() + v) end end, }, ["set_turn_to_gold"] = { boolean = true, - on_kill = function(v,ent,inf,att) + pre_damage = function(v,ent,inf,att) engineer_gold_lines = { "scenes/Player/Engineer/low/3605.vcd", @@ -1007,10 +1207,12 @@ local ATTRIBUTES = { } if ent:CanReceiveCrits() then - ent:EmitSound("weapons/saxxy_turntogold_05.wav") + ent:EmitSound("weapons/saxxy_impact_gen_06.wav") --ent:SetNWBool("ShouldDropGoldenRagdoll", true) ent:AddDeathFlag(DF_GOLDEN) - att:PlayScene(engineer_gold_lines[math.random( #engineer_gold_lines )]) + if inf.Owner:GetPlayerClass() == "engineer" then + att:PlayScene(engineer_gold_lines[math.random( #engineer_gold_lines )]) + end end end, }, @@ -1080,7 +1282,7 @@ concommand.Add("searchattrib", function(pl, cmd, args) for k,v in SortedPairs(tf_items.AttributesByID) do for _,n in ipairs(args) do if string.find(v.name, n) then - print(k, v.name) + --print(k, v.name) break end end @@ -1134,7 +1336,6 @@ end function ApplyGlobalAttributesFromPlayer(pl, act, ...) CURRENT_PLAYER = pl - for _,w in pairs(pl:GetTFItems()) do if not w.OnlyProvideAttributesOnActive or pl:GetActiveWeapon() == w then local c = ApplyAttributesFromEntity(w, "_global_"..act, ...) diff --git a/addon/gamemodes/teamfortress/gamemode/shd_competitive.lua b/gamemodes/tf/gamemode/shd_competitive.lua similarity index 95% rename from addon/gamemodes/teamfortress/gamemode/shd_competitive.lua rename to gamemodes/tf/gamemode/shd_competitive.lua index 2a7a89e85..ae5326124 100644 --- a/addon/gamemodes/teamfortress/gamemode/shd_competitive.lua +++ b/gamemodes/tf/gamemode/shd_competitive.lua @@ -2,7 +2,7 @@ CreateConVar( "tf_competitive", "0", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_NOTIFY, FC hook.Add("SpawnMenuOpen", "TF2Competitive", function() if GetConVar("tf_competitive"):GetBool() then - return false + --return false end end) diff --git a/gamemodes/tf/gamemode/shd_conflict.lua b/gamemodes/tf/gamemode/shd_conflict.lua new file mode 100644 index 000000000..ef6d27409 --- /dev/null +++ b/gamemodes/tf/gamemode/shd_conflict.lua @@ -0,0 +1,33 @@ + +if (game.SinglePlayer()) then + ErrorNoHalt("Singleplayer is enabled! Expect errors!\n") +end +if !IsMounted("tf") and !steamworks.IsSubscribed("3324553730") then + ErrorNoHalt("Team Fortress 2 is not mounted! Expect errors!\n") + if CLIENT then + local conflict_help_frame = vgui.Create( "DFrame" ) + conflict_help_frame:SetSize(200, 200) + conflict_help_frame:Center() + conflict_help_frame:SetTitle("!!TF2 IS NOT MOUNTED!!") + conflict_help_frame:ShowCloseButton(true) + conflict_help_frame:SetBackgroundBlur(true) + conflict_help_frame:MakePopup() + + local conflicttext = vgui.Create("RichText", conflict_help_frame) + conflicttext:Dock(FILL) + conflicttext:InsertColorChange(255, 255, 255, 255) + conflicttext:CenterHorizontal(0.5) + conflicttext:SetVerticalScrollbarEnabled(false) + conflicttext:AppendText("Hey!~ TF2 is currently not mounted! Without the assets, you will see everything as ERRORs! Luckily, I do have a solution for ya. It will take a while, though.") + local conflictbut2 = vgui.Create("DButton", conflict_help_frame) + conflictbut2:SetSize(100, 30) + conflictbut2:SetPos(0, 125) + conflictbut2:CenterHorizontal(0.5) + conflictbut2:SetText("I understand.") + + function conflictbut2.DoClick() + conflict_help_frame:Close() + gui.OpenURL("https://steamcommunity.com/sharedfiles/filedetails/?id=3323795558") + end + end +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_criticals.lua b/gamemodes/tf/gamemode/shd_criticals.lua similarity index 81% rename from addon/gamemodes/teamfortress/gamemode/shd_criticals.lua rename to gamemodes/tf/gamemode/shd_criticals.lua index e26da2999..cca3aeb5a 100644 --- a/addon/gamemodes/teamfortress/gamemode/shd_criticals.lua +++ b/gamemodes/tf/gamemode/shd_criticals.lua @@ -1,5 +1,5 @@ -function GM:ShouldCrit(ent, inf, att, hitgroup, dmginfo) +function GM:ShouldCrit(ent, inf, att, hitgroup, dmginfo) -- forced criticals due to attributes if ent ~= att then local c @@ -27,26 +27,42 @@ function GM:ShouldCrit(ent, inf, att, hitgroup, dmginfo) -- derp if not ent:CanReceiveCrits() then return false end - + if dmginfo:IsDamageType(DMG_ACID) and !string.find(dmginfo:GetAttacker():GetModel(),"spitter") then + return true + end if dmginfo:GetDamage() == 0 and not inf.ZeroDamageCrits then return false end - + if (ent:HasPlayerState(PLAYERSTATE_CRITBOOST)) then + dmginfo:SetDamageType(bit.bor(dmginfo:GetDamageType(),DMG_ACID)) + return true + end if att:IsNPC() then - local c = att:CallNPCEvent("crit_override", ent, hitgroup, dmginfo) - if c~=nil then return c end + if (math.random(1,15) == 1) then + return true + else + return false + end + end + if (att:IsPlayer()) then + if (string.find(att:GetActiveWeapon():GetClass(),"tf_weapon") and att:GetActiveWeapon():Critical(ent,dmginfo)) then + dmginfo:SetDamageType(bit.bor(dmginfo:GetDamageType(),DMG_ACID)) + return true + end end -- if the weapon or projectile is critical - if inf.Critical and inf:Critical(ent, dmginfo) then + if (inf.Critical and inf:Critical(ent, dmginfo)) or (att.Critical) then + dmginfo:SetDamageType(bit.bor(dmginfo:GetDamageType(),DMG_ACID)) return true end -- if it's a headshot for any other gun that isn't from TF2 (also jarated NPCs can't do headshots) if (not inf.IsTFWeapon and not inf.IsTFBuilding) and dmginfo:IsBulletDamage() and hitgroup == HITGROUP_HEAD then if not(att:IsNPC() and att:HasPlayerState(PLAYERSTATE_JARATED)) then + dmginfo:SetDamageType(bit.bor(dmginfo:GetDamageType(),DMG_ACID)) return true end end - + return false end @@ -97,6 +113,10 @@ function GM:ShouldMiniCrit(ent, inf, att, hitgroup, dmginfo) if ent:HasPlayerState(PLAYERSTATE_JARATED) then return true end + -- if the entity is marked for death + if (ent:HasPlayerState(PLAYERSTATE_MARKED)) then + return true + end end --------------------------------------------------------------------------------------------------------- @@ -131,17 +151,12 @@ function DispatchCritEffect(ent, inf, att, is_mini_crit) -- Notify the attacker that they scored a crit hit :D if att:IsPlayer() then if is_mini_crit then - SendUserMessage("CriticalHitMini", att, critpos) + SendUserMessage("CriticalHitMiniOther", att, critpos) else SendUserMessage("CriticalHit", att, critpos) end end - -- Notify the victim that they have been critted in the face D: - if ent:IsPlayer() then - SendUserMessage("CriticalHitReceived", ent) - end - -- Also notify all teammates if the hit is a mini crit if is_mini_crit then local rp = RecipientFilter() @@ -149,6 +164,7 @@ function DispatchCritEffect(ent, inf, att, is_mini_crit) rp:AddPlayer(v) end SendUserMessage("CriticalHitMiniOther", rp, critpos) + end end diff --git a/addon/gamemodes/teamfortress/gamemode/shd_enums.lua b/gamemodes/tf/gamemode/shd_enums.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/shd_enums.lua rename to gamemodes/tf/gamemode/shd_enums.lua diff --git a/gamemodes/tf/gamemode/shd_extras.lua b/gamemodes/tf/gamemode/shd_extras.lua new file mode 100644 index 000000000..1760d36ee --- /dev/null +++ b/gamemodes/tf/gamemode/shd_extras.lua @@ -0,0 +1,478 @@ +--MsgN("Loading extra items and attributes") + +if CLIENT then + +local lang_data = [["lang" +{ +"Language" "English" +"Tokens" +{ + +"Attrib_Player_TurnGay" "Imbued with an ancestral gey power" +"Attrib_Player_TurnGay2" "On Hit: Victim turns gay\nGay players have a 50% probability\nto inflict negative damage" +"Attrib_Shoots_Nukes" "Shoots massive nuclear payloads.\nHow can they even fit in there?" +"Attrib_Owner_Receives_Minicrits" "All incoming hits are mini-crits" +"Attrib_CritVsNoclip" "100% critical hits vs noclipping players" +"Attrib_EnableCrotchshots" "Crits on an accurate shot between legs" +"Attrib_AltFire_Is_Vampire" "Alt-Fire: +3 health on hit\n-75% damage done" +"Attrib_MilkDuration" "On Hit: Mad Milk applied to target for %s1 seconds" +"Attrib_BouncyGrenades" "Fires bouncy round grenades" +"Attrib_RadialHealOnHit" "On Hit: +%s1 health on nearby teammates" +"Attrib_BurnDuration" "On Hit: Victim catches fire for %s1 seconds" + +"Attrib_DmgTaken_From_Fall_Reduced" "+%s1% fall damage resistance on wearer" +"Attrib_DmgTaken_From_Fall_Increased" "%s1% fall damage vulnerability on wearer" +"Attrib_DmgTaken_From_Phys_Reduced" "+%s1% physics damage resistance on wearer" +"Attrib_DmgTaken_From_Phys_Increased" "%s1% physics damage vulnerability on wearer" +"Attrib_JumpHeight_Bonus" "+%s1% higher jump height on wearer" +"Attrib_JumpHeight_Penalty" "%s1% lower jump height on wearer" + +"Attrib_Charge_Is_Unstoppable" "Running into an enemy does not end a charge" +"Attrib_Charge_Rate_Reduced" "+%s1% longer cooldown" +"Attrib_Charge_Rate_Increased" "%s1% shorter cooldown" + +"Attrib_Rocket_Gravity" "Fires heavy rockets that arc over distances\nRockets can be charged, increasing their velocity" + +"Attrib_StoutShako_Launcher" "Stout Shako for two refined!" + +"TF_Unique_GayPride" "Sexo de Pene Gay" +"TF_Unique_GayPride_Desc" "Presumably stolen from an obscure\nbranch of the Spanish Inquisition, this\nweapon is imbued with sheer gey power" +"TF_Unique_Ludmila" "Ludmila" +"TF_Unique_Bazooka" "Bazooka" + +"TF_Test_SyringeGun1" "Syringe Gun Test 1" +"TF_Test_GrenadeLauncher1" "Grenade Launcher Test 1" + + +"TF_Set_Demopan_Trader" "The Demopan's Trading Kit" +} +} +]] + +include("tf_lang_module.lua") +tf_lang.Parse(lang_data) + +end + + +-- Attributes +local function VALID(e) return IsValid(e) end +local function ISPLAYER(e) return VALID(e) and e:IsTFPlayer() end +local function ONFIRE(e) return VALID(e) and e:HasPlayerState(PLAYERSTATE_ONFIRE) end +local function ISBUILDING(e) return VALID(e) and (not e:IsTFPlayer() or e:IsBuilding()) end + +DF_GEY=128 + +desired = CreateClientConVar("wear_desired", "0", {FCVAR_CLIENTDLL}, "What wear type do you desire the most?") +sounds = CreateClientConVar("wear_sounds", "0", {FCVAR_CLIENTDLL}, "Do you want to hear sounds when you achieve something?") +lines = CreateClientConVar("wear_lines", "0", {FCVAR_CLIENTDLL}, "What to see messages alongside wear type?") + +function PrintSkin() + if desired:GetInt() == 0 and lines:GetInt() >= 2 then + wear_strings = { + 'Factory New. Well done!', + 'Minimal Wear. Few scratches, no jiffy.', + 'Feild Tested. Its good enough.', + 'Well Worn. This looks beat up!', + 'Battle Scarred. This looks like a car crash in slow motion!' + } + else + wear_strings = { + 'Factory New.', + 'Minimal Wear.', + 'Feild Tested.', + 'Well Worn.', + 'Battle Scarred.' + } + end + + if desired:GetInt() == 0 then + wear_sounds = { + 'misc/achievement_earned.wav', + 'misc/happy_birthday.wav', + 'misc/boring_applause_1.wav', + 'misc/clap_single_2.wav', + 'misc/hologram_stop.wav' + } + end + + if CLIENT then + timer.Simple(0.02, function() if lines:GetInt() >= 1 then chat.AddText( Color(255,255,255), LocalPlayer(), " Your ", weapon_name:GetFullName() ," is ", Color( 100, 255, 100 ), wear_strings[wear_number]) end end) + if desired:GetInt() == 0 and sounds:GetInt() >= 1 then surface.PlaySound(wear_sounds[wear_number]) end + end +end + +RegisterAttribute("material_override", { + equip = function(v,weapon,owner) + //weapon.CustomColorOverride = Color(255,30,150,255) + if SERVER then + weapon.CustomMaterialOverride = v + weapon.CustomMaterialOverride2 = v + else + weapon.CustomMaterialOverride = Material(v) + weapon.CustomMaterialOverride2 = v + end + + if CLIENT then + + weapon.ViewModelDrawn0 = weapon.ViewModelDrawn + weapon.ViewModelDrawn = function(self,t) + //render.SetColorModulation(1,0.2,0.7) + if IsValid(self.CModel) then + self.CModel:SetMaterial(v) + end + self:ViewModelDrawn0() + //render.SetColorModulation(1,1,1) + end + end + + end, +}) + +RegisterAttribute("material_override_team", { + equip = function(v,weapon,owner) + if owner:Team() == 2 then + team_skin = "_blue" + else + team_skin = "_red" + end + if SERVER then + weapon.CustomMaterialOverride = v..team_skin + weapon.CustomMaterialOverride2 = v..team_skin + else + weapon.CustomMaterialOverride = Material(v..team_skin) + weapon.CustomMaterialOverride2 = v..team_skin + end + + if CLIENT then + + weapon.ViewModelDrawn0 = weapon.ViewModelDrawn + weapon.ViewModelDrawn = function(self,t) + if IsValid(self.CModel) then + self.CModel:SetMaterial(v..team_skin) + end + self:ViewModelDrawn0() + end + end + + end, +}) + +RegisterAttribute("material_override_skin", { + equip = function(v,weapon,owner) + wear_types = { + '_factory_new_red', + '_minimal_wear_red', + '_feild_tested_red', + '_well_worn_red', + '_battle_scarred_red' + } + if desired:GetInt() >= 1 and desired:GetInt() <= 5 then + wear_number = GetConVar("wear_desired"):GetInt() + else + wear_number = math.random( #wear_types ) + end + + if SERVER then + weapon.CustomMaterialOverride = v..wear_types[wear_number] + weapon.CustomMaterialOverride2 = v..wear_types[wear_number] + else + weapon.CustomMaterialOverride = Material(v..wear_types[wear_number]) + weapon.CustomMaterialOverride2 = v..wear_types[wear_number] + end + + if CLIENT then + + weapon.ViewModelDrawn0 = weapon.ViewModelDrawn + weapon.ViewModelDrawn = function(self,t) + if IsValid(self.CModel) then + self.CModel:SetMaterial(v..wear_types[wear_number]) + end + self:ViewModelDrawn0() + end + end + timer.Simple(0.02, function() weapon_name = weapon end) + PrintSkin() + end, +}) + +RegisterAttribute("material_override_skin_team", { + equip = function(v,weapon,owner) + if owner:Team() == 2 then + wear_types = { + '_factory_new_blue', + '_minimal_wear_blue', + '_feild_tested_blue', + '_well_worn_blue', + '_battle_scarred_blue' + } + else + wear_types = { + '_factory_new_red', + '_minimal_wear_red', + '_feild_tested_red', + '_well_worn_red', + '_battle_scarred_red' + } + end + if desired:GetInt() >= 1 and desired:GetInt() <= 5 then + wear_number = GetConVar("wear_desired"):GetInt() + else + wear_number = math.random( #wear_types ) + end + + if SERVER then + weapon.CustomMaterialOverride = v..wear_types[wear_number] + weapon.CustomMaterialOverride2 = v..wear_types[wear_number] + else + weapon.CustomMaterialOverride = Material(v..wear_types[wear_number]) + weapon.CustomMaterialOverride2 = v..wear_types[wear_number] + end + + if CLIENT then + + weapon.ViewModelDrawn0 = weapon.ViewModelDrawn + weapon.ViewModelDrawn = function(self,t) + if IsValid(self.CModel) then + self.CModel:SetMaterial(v..wear_types[wear_number]) + end + self:ViewModelDrawn0() + end + end + timer.Simple(0.02, function() weapon_name = weapon end) + PrintSkin() + end, +}) + +RegisterAttribute("nuke", { + projectile_fired = function(v,proj,weapon,owner) + proj.Nuke = true + end, + + post_damage = function(v,ent,hitgroup,dmginfo) + dmginfo:ScaleDamage(5) + end, +}) + +RegisterAttribute("owner_receive_minicrits", { + equip = function(v,weapon,owner) + if SERVER then + owner.TempAttributes.ReceiveCrits = true + end + end, +}) + +RegisterAttribute("mod_crit_noclip", { + boolean = true, + crit_override = function(v,ent,hitgroup,dmginfo) + if ISPLAYER(ent) and ent:GetMoveType()==MOVETYPE_NOCLIP then return true end + end, +}) + +RegisterAttribute("mod_enable_crotchshots", { + boolean = true, + + crit_override = function(v,ent,hitgroup,dmginfo) + if SERVER and ISPLAYER(ent) then + local inf, att = dmginfo:GetInflictor(), dmginfo:GetAttacker() + + if inf.NonCrotchshotNameOverride == nil then + inf.NonCrotchshotNameOverride = inf.NameOverride or false + end + + if not inf.NonCrotchshotNameOverride then + inf.NameOverride = nil + else + inf.NameOverride = inf.NonCrotchshotNameOverride + end + + -- Weapon must be a sniper-type weapon (Sniper Rifle or Ambassador) + if inf.IsTFWeapon and inf.BulletSpread == 0 and (inf.ChargeTimerStart or inf.CritsOnHeadshot) then + local f1, f2 = ent:GetAngles(), att:GetAngles() + f1.p = 0 + f2.p = 0 + local dot = f1:Forward():Dot(f2:Forward()) + + -- Attacker and victim must be facing each other + if dot > -0.5 then return end + + -- Pelvis bone check + local bone + bone = ent:GetBoneMatrix(ent:LookupBone("ValveBiped.Bip01_Pelvis") or ent:LookupBone("bip_pelvis") or -1) + + local dist = dmginfo:GetDamagePosition():Distance(bone:GetTranslation() - 3 * vector_up + 6*ent:GetForward()) + + if dist < 8 then + inf.NameOverride = "crotchshot" + return true + end + end + end + end, +}) + +RegisterAttribute("milk_duration", { + pre_damage = function(v,ent,hitgroup,dmginfo) + local inf = dmginfo:GetInflictor() + if inf:GetClass() == "tf_weapon_sniperrifle" and inf.ChargeTime then + if not inf.ChargeTimerStart or (CurTime()-inf.ChargeTimerStart)/inf.ChargeTime < 0.25 then + return + end + end + + local att = dmginfo:GetAttacker() + if ent:IsTFPlayer() and ent~=att and ent:CanReceiveCrits() and att:IsValidEnemy(ent) then + ent:AddPlayerState(PLAYERSTATE_MILK, true) + ent.NextEndMilk = CurTime() + v + end + end, + + equip = function(v,weapon,owner) + weapon.UsesJarateChargeMeter = true + end, +}) + +RegisterAttribute("burn_duration", { + pre_damage = function(v,ent,hitgroup,dmginfo) + local att = dmginfo:GetAttacker() + if ent:IsFlammable() and att:IsValidEnemy(ent) then + GAMEMODE:IgniteEntity(ent, dmginfo:GetInflictor(), dmginfo:GetAttacker(), v) + end + end, +}) + +RegisterAttribute("set_grenade_mode", { + equip = function(v,weapon,owner) + weapon.GrenadeMode = v + end, + projectile_fired = function(v,proj,weapon,owner) + proj.GrenadeMode = v + end, +}) + +RegisterAttribute("projectile_model_mod", { + equip = function(v,weapon,owner) + owner.TempAttributes.ProjectileModelModifier = v + end, +}) + + +RegisterAttribute("radial_onhit_addhealth", { + post_damage = function(v,ent,hitgroup,dmginfo) + local att = dmginfo:GetAttacker() + local pos = dmginfo:GetDamagePosition() + + if IsValid(att) and ent~=att and ent:IsTFPlayer() and ent:Health()>0 and not ent:IsBuilding() then + for _,p in pairs(ents.FindInSphere(pos, 250)) do + if p:IsTFPlayer() and not p:IsBuilding() and p:Health()>0 and p:EntityTeam()==att:EntityTeam() then + GAMEMODE:HealPlayer(att, p, v, true, false) + end + end + end + end, + projectile_fired = function(v,proj,weapon,owner) end, +}) + +RegisterAttribute("mult_dmgtaken_from_fall", { + _global_post_damage_received = function(v,pl,hitgroup,dmginfo) + if dmginfo:IsDamageType(DMG_FALL) then + dmginfo:ScaleDamage(v) + end + end, +}) + +RegisterAttribute("mult_dmgtaken_from_phys", { + _global_post_damage_received = function(v,pl,hitgroup,dmginfo) + if dmginfo:IsDamageType(DMG_CRUSH) then + dmginfo:ScaleDamage(v) + end + end, +}) + +RegisterAttribute("mult_player_jumpheight", { + equip = function(v,weapon,owner) + if SERVER then + owner.PlayerJumpPower = owner.PlayerJumpPower * v + owner:SetJumpPower(owner.PlayerJumpPower) + end + end, +}) + +RegisterAttribute("mod_jump_height_from_weapon", { + equip = function(v,weapon,owner) + if SERVER then + owner.PlayerJumpPower = owner.PlayerJumpPower * v + owner:SetJumpPower(owner.PlayerJumpPower) + end + end, +}) + +RegisterAttribute("set_charge_mode", { + boolean = true, + equip = function(v,weapon,owner) + if SERVER then + owner.TempAttributes.ChargeIsUnstoppable = true + end + end, +}) + +RegisterAttribute("mult_cooldown_time", { + equip = function(v,weapon,owner) + if SERVER then + owner.TempAttributes.ChargeCooldownMultiplier = (owner.TempAttributes.ChargeCooldownMultiplier or 1) * v + end + end, +}) + +if SERVER then + +hook.Add("ShouldMiniCrit", "GAYPLAYER_MINICRIT", function(ent, inf, att, hitgroup, dmginfo) + if ent.TempAttributes and ent.TempAttributes.ReceiveCrits then + return true + end +end) + +hook.Add("PostScaleDamage", "GAYPLAYER_NEGDAMAGE", function(ent, hitgroup, dmginfo) + if ent:IsTFPlayer() then + if dmginfo:GetAttacker():GetNWBool("VeryGay") and math.random()<0.5 then + GAMEMODE:HealPlayer(nil, ent, dmginfo:GetDamage(), true, false) + dmginfo:SetDamage(0) + dmginfo:SetDamageType(DMG_GENERIC) + end + end +end) +-- wtf? +hook.Add("DoPlayerDeath", "GAYREMOVE", function(pl,attacker,dmginfo) + if CLIENT then + timer.Simple(2.0, function() + + if (attacker:EntIndex() != pl:EntIndex() and attacker:IsTFPlayer()) then + ply:SendLua('RunConsoleCommand("snd_soundmixer","Default_Mix")') + end + + end) + end + pl:SetNWBool("VeryGay", false) + pl.NextEndGay = 0 +end) + +end + +if CLIENT then + +hook.Add("SetupPlayerGib", "GEYGIB", function(pl, gib) +end) + +hook.Add("SetupPlayerRagdoll", "GEYRAGDOLL_PLAYER", function(pl, rag) +end) + +hook.Add("SetupNPCRagdoll", "GEYRAGDOLL_NPC", function(npc, rag) +end) + +end + +-- Loading everything up + +--tf_items.ParseGameItems(item_data) + +--MsgN("Done!") diff --git a/gamemodes/tf/gamemode/shd_facefix.lua b/gamemodes/tf/gamemode/shd_facefix.lua new file mode 100644 index 000000000..1deedf194 --- /dev/null +++ b/gamemodes/tf/gamemode/shd_facefix.lua @@ -0,0 +1,85 @@ +-- from https://steamcommunity.com/workshop/filedetails/?id=282164100&insideModal=0&requirelogin=1 + +if CLIENT then return end //i'd like to do this clientside instead so we can potentially not get any lag on the flex changes, but it seems like changing flexes clientside +//if SERVER then return end //just doesn't work (are they being overwritten by serverside flexes, or can you just not set clientside flexes on serverside entities at all?) + + + + +local function GetFlexFromName(ent,flexname) + + for i = 0, ent:GetFlexNum() - 1 do + if string.lower(ent:GetFlexName(i)) == string.lower(flexname) then return i end + end + +end + + + + +BeardFlexifierEntities = {} +--local TestEnts = {} + +hook.Add("Think", "BeardFlexifierThink", function() + + for parent, tab in pairs (BeardFlexifierEntities) do + + if IsValid(parent) and parent:GetFlexNum() > 0 then + + //if !TestEnts[parent] then --MsgN("Started beard flexifier for ", parent, " ", parent:GetModel()) TestEnts[parent] = parent end + + local children = parent:GetChildren() + //Handling for ents parented to a prop_effect instead of its attachedentity + if IsValid(parent:GetParent()) and parent:GetParent().AttachedEntity == parent then + table.Add(children, parent:GetParent():GetChildren()) + end + + for _, ent in pairs (children) do + + if IsValid(ent) and ent != parent and ent:GetFlexNum() > 0 then + + //Cache the flex ID translations so we don't have to keep retrieving them + if !tab[ent] then + tab[ent] = {} + for i = 0, ent:GetFlexNum() - 1 do + //this is faster, but it's case-sensitive and it grabs the wrong values sometimes + //(see spy's graylien - it'll have problems with case AND it'll assign scared to scaredUpper) + //local flex = parent:GetFlexIDByName(ent:GetFlexName(i)) + local flex = GetFlexFromName(parent, ent:GetFlexName(i)) + if flex then tab[ent][i] = flex end + end + end + + for i, flex in pairs (tab[ent]) do + ent:SetFlexWeight(i, parent:GetFlexWeight(flex)) + end + + ent:SetFlexScale(parent:GetFlexScale()) + + end + + end + + else + + //note: the way we're doing this means that if an entity starts off with a flexless model, but gets changed to a model with flexes later on, it won't work with this + //addon, but that's an edge case, and doing it this way means we won't have to keep iterating over the 99.99% of things that don't have flexes and never will. + BeardFlexifierEntities[parent] = nil + + end + + end + +end) + + + + +hook.Add("OnEntityCreated", "AddBeardFlexifier", function(ent) + + if !IsValid(ent) then return end + + //ent:GetFlexNum() doesn't retrieve the right value here, so run every entity through the Think hook at least once + BeardFlexifierEntities[ent] = {} + +end) \ No newline at end of file diff --git a/gamemodes/tf/gamemode/shd_gravitygun.lua b/gamemodes/tf/gamemode/shd_gravitygun.lua new file mode 100644 index 000000000..b40e414c0 --- /dev/null +++ b/gamemodes/tf/gamemode/shd_gravitygun.lua @@ -0,0 +1,2 @@ +-- blah? +local blah = { "blah." } \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_hats.lua b/gamemodes/tf/gamemode/shd_hats.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/shd_hats.lua rename to gamemodes/tf/gamemode/shd_hats.lua diff --git a/addon/gamemodes/teamfortress/gamemode/shd_items.lua b/gamemodes/tf/gamemode/shd_items.lua similarity index 87% rename from addon/gamemodes/teamfortress/gamemode/shd_items.lua rename to gamemodes/tf/gamemode/shd_items.lua index 4d4b27f8c..2d0823911 100644 --- a/addon/gamemodes/teamfortress/gamemode/shd_items.lua +++ b/gamemodes/tf/gamemode/shd_items.lua @@ -9,6 +9,7 @@ ItemSets = {} AttributesByID = {} ItemsByID = {} +PrefabsByName = {} COUNTER = 0 @@ -18,7 +19,7 @@ local classtranslate = { ["tf_weapon_rocketlauncher_directhit"] = "tf_weapon_rocketlauncher_dh", ["tf_weapon_handgun_scout_primary"] = "tf_weapon_handgun_scout", ["tf_weapon_bet_rocketlauncher"] = "tf_weapon_rocketlauncher_qrl", -} +} -- Adds an unique number before each attribute name so we can enumerate attributes in the right order local function FormatAttributesBlock(a, str) @@ -112,7 +113,9 @@ function ParseGameItems(data, silent) if v.item_class and classtranslate[v.item_class] then v.item_class = classtranslate[v.item_class] end - + if (!v.item_slot) then + v.item_slot = "misc" + end if v.model_player then util.PrecacheModel(v.model_player) @@ -156,9 +159,9 @@ function ParseGameItems(data, silent) --vis.attached_models = {} --vis.hide_player_bodygroup_names = {} --vis.show_player_bodygroup_names = {} - vis.animations = {} vis.hide_player_bodygroup_names = {} + vis.player_bodygroups = {} vis.attached_particlesystems = {} for a,w in pairs(vis) do @@ -189,6 +192,12 @@ function ParseGameItems(data, silent) --vis.attached_models[tonumber(num)] = w end + num = string.match(a, "(%d)%-player_bodygroups") + if num then + vis[a] = nil + table.insert(vis.player_bodygroups, w) + end + num = string.match(a, "(%d)%-hide_player_bodygroup_name") if num then vis[a] = nil @@ -214,28 +223,35 @@ function ParseGameItems(data, silent) PrecacheParticleSystem(w.system) end - num = string.match(a, "(%d)%-material_overide") + num = string.match(a, "(%d)%-material_override") if num then vis[a] = nil table.insert(vis.materials_overidded, w) PrecacheParticleSystem(w.system) end end + if (name == "visuals_red") then + v.visuals_red = vis + elseif (name == "visuals_blu") then + v.visuals_blu = vis + elseif (name == "visuals") then + v.visuals = vis + end end end Items.n = Items.n + 1 - v.id = tonumber(k) + v.id = tonumber(k) Items[v.name] = v ItemsByID[v.id] = v numreg = numreg + 1 end ConvertStringsToNumbers(Items) - if not silent then MsgN(numreg.." items registered.") end + --if not silent then MsgN(numreg.." items registered.") end file.Append("hatlog.txt", hatlog) - --MsgN(numign.." items ignored.") + ----MsgN(numign.." items ignored.") -- Loading attributes smin, smax = string.find(data, '"attributes"%s*%b{}', smax+1) @@ -340,14 +356,14 @@ end end]] function LoadGameItems(path) - MsgN("Loading items script '%s' ...", path) + --MsgN("Loading items script '%s' ...", path) local data if SERVER and game.IsDedicated() then - data = file.Read("gamemodes/teamfortress/gamemode/items/"..path, "GAME") + data = file.Read("gamemodes/tf/gamemode/items/"..path, "GAME") else - data = file.Read("gamemodes/teamfortress/gamemode/items/"..path, "GAME") + data = file.Read("gamemodes/tf/gamemode/items/"..path, "GAME") end if not data or data=="" then @@ -358,7 +374,7 @@ function LoadGameItems(path) ParseGameItems(data, true) -- leaving this on silent for now, results in no script errors end -local files, dirs = file.Find("gamemodes/teamfortress/gamemode/items/workshop/*", "GAME") +local files, dirs = file.Find("gamemodes/tf/gamemode/items/workshop/*", "GAME") for k,v in pairs(files) do if string.StartWith(v, "items_") then tf_items.LoadGameItems("workshop/"..v) @@ -394,6 +410,10 @@ local QUALITY_COLORS = { [8] = "Developer", [9] = "SelfMade", [10] = "Customized", + [11] = "Strange", + [12] = "Completed", + [13] = "Haunted", + [14] = "Collectors", [69] = "Gey", } @@ -411,6 +431,10 @@ local QUALITY_TEXT = { [8] = "developer", [9] = "selfmade", [10] = "customized", + [11] = "strange", + [12] = "completed", + [13] = "haunted", + [14] = "collectors", [69] = "_kilburncorp", } @@ -430,15 +454,15 @@ function GetItemFullName(item, quality) return tf_lang.GetRaw(item.item_name) elseif q==6 then if item.propername == 1 then - return tf_lang.GetRaw("TF_Unique_Prepend_Proper") .. " " .. tf_lang.GetRaw(item.item_name) + return tf_lang.GetRaw("TF_Unique_Prepend_Proper") .. " " .. tf_lang.GetRaw(item.item_name) or item.item_name else - return tf_lang.GetRaw(item.item_name) + return tf_lang.GetRaw(item.item_name) or item.item_name end else if QUALITY_TEXT[q] then - return tf_lang.GetRaw(QUALITY_TEXT[q],true) .. " " .. tf_lang.GetRaw(item.item_name) + return tf_lang.GetRaw(QUALITY_TEXT[q],true) .. " " .. tf_lang.GetRaw(item.item_name) or itf_lang.GetRaw(QUALITY_TEXT[q],true) .. " " .. item.item_name else - return tf_lang.GetRaw(item.item_name) + return tf_lang.GetRaw(item.item_name) or item.item_name end end end @@ -468,7 +492,7 @@ end function META:GetNameColor() local q = (self.GetQuality and self:GetQuality()) or 0 - return Colors["QualityColor"..QUALITY_COLORS[q]] or Colors.QualityColorNormal + return Colors["QualityColor"..QUALITY_COLORS[q]] or Colors.QualityColorUnique end function META:GetIconTextureID() @@ -540,7 +564,7 @@ function META:EquipInLoadout(itemname, properties, noupdate) local changed = false for k,v in ipairs(self.ItemLoadout) do local olditem = Items[v] - if olditem and newitem.item_slot == olditem.item_slot then + if olditem and newitem.item_slot == olditem.item_slot and (string.find(newitem.item_class,"tf_weapon") || string.find(newitem.item_class,"demoshield") || string.find(newitem.prefab,"boots") || string.find(newitem.item_class,"tideturnr") || string.find(newitem.item_class,"chargintard") ) then changed = true self.ItemLoadout[k] = itemname self.ItemProperties[k] = properties @@ -597,8 +621,7 @@ function META:GiveItemSetAttributes() end if not item_set then return end - - self.ItemSetAttributes = item_set.attributes_by_id + self.ItemSetAttributes = item_set.attributes if self.ItemSetAttributes then self.ItemSetTable = {} @@ -608,7 +631,6 @@ end function META:GiveItem(itemname, properties) if not self:Alive() then return end - if self:IsHL2() then return end local item if type(itemname)=="number" then @@ -645,12 +667,34 @@ function META:GiveItem(itemname, properties) end end - --MsgN(Format("Giving '%s' to %s",itemname,tostring(self))) + ----MsgN(Format("Giving '%s' to %s",itemname,tostring(self))) --self.WeaponItemIndex = item.id _G.TFWeaponItemOwner = self _G.TFWeaponItemIndex = item.id -- Initialization of the item is now done in SWEP:Deploy + if (self:GetPlayerClass() == "spy" && class == "tf_weapon_builder") then + class = "tf_weapon_sapper" + end local weapon = NULL + if (self:GetPlayerClass() == "scout" && class == "saxxy") then + class = "tf_weapon_bat" + elseif (self:GetPlayerClass() == "soldier" && class == "saxxy") then + class = "tf_weapon_shovel" + elseif (self:GetPlayerClass() == "pyro" && class == "saxxy") then + class = "tf_weapon_fireaxe" + elseif (self:GetPlayerClass() == "demoman" && class == "saxxy") then + class = "tf_weapon_bottle" + elseif (self:GetPlayerClass() == "heavy" && class == "saxxy") then + class = "tf_weapon_fireaxe" + elseif (self:GetPlayerClass() == "engineer" && class == "saxxy") then + class = "tf_weapon_wrench" + elseif (self:GetPlayerClass() == "medic" && class == "saxxy") then + class = "tf_weapon_bonesaw" + elseif (self:GetPlayerClass() == "sniper" && class == "saxxy") then + class = "tf_weapon_club" + elseif (self:GetPlayerClass() == "spy" && class == "saxxy") then + class = "tf_weapon_knife" + end if scripted_ents.GetStored(class) then weapon = ents.Create(class) weapon.Owner = self @@ -710,12 +754,14 @@ function META:GiveItem(itemname, properties) end if weapon.InitAttributes then - weapon:InitAttributes(self, item.attributes_by_id) + weapon:InitAttributes(self, item.attributes) end if weapon.InitVisuals then if self:EntityTeam() == TEAM_BLU then weapon:InitVisuals(self, item.visuals_blu or item.visuals) + elseif self:EntityTeam() == TF_TEAM_PVE_INVADERS then + weapon:InitVisuals(self, item.visuals_blu or item.visuals) else weapon:InitVisuals(self, item.visuals_red or item.visuals) end @@ -724,7 +770,7 @@ function META:GiveItem(itemname, properties) _G.TFWeaponItemOwner = nil _G.TFWeaponItemIndex = nil --self.WeaponItemIndex = nil - --MsgN(Format("Done! (%s)",itemname)) + ----MsgN(Format("Done! (%s)",itemname)) if not weapon.IsTFItem then --ErrorNoHalt(Format("Warning: item '%s' uses class '%s' which does not support the items system!\n", itemname, class)) end @@ -847,20 +893,20 @@ local function GiveItemAutoComplete(cmd, args, slotfilter) class_lst = {} for k,v in pairs(Items) do if type(v)=="table" and shouldShowItem(k, v, classname, slotfilter) then - table.insert(class_lst,k) + table.insert(class_lst,v.name) end end table.sort(class_lst) for _,k in ipairs(class_lst) do - if string.find(k, s) then + if string.find(string.lower(k), string.lower(s)) then table.insert(t,cmd.." "..k) end end for _,k in ipairs(class_lst) do - if string.find(k, string.gsub("", "^%s*", "^")) then + if string.find(string.lower(k), string.gsub("", "^%s*", "^")) then table.insert(j,k) end end @@ -904,13 +950,13 @@ concommand.Add("stripmisc", function(pl) pl:EmptyLoadoutSlot("misc") end) else -concommand.Remove("giveitem") -concommand.Remove("giveweapon") -concommand.Remove("givehat") -concommand.Remove("givemisc") -concommand.Remove("givebundle") +concommand.Remove("DEPRECATED_giveitem") +concommand.Remove("DEPRECATED_giveweapon") +concommand.Remove("DEPRECATED_givehat") +concommand.Remove("DEPRECATED_givemisc") +concommand.Remove("DEPRECATED_givebundle") -concommand.Add("giveitem", function(pl,_,args) +concommand.Add("DEPRECATED_giveitem", function(pl,_,args) if LocalPlayer():Team() == TEAM_SPECTATOR then return end if table.HasValue( args, "list") then @@ -920,7 +966,7 @@ concommand.Add("giveitem", function(pl,_,args) RunConsoleCommand("__svgiveitem", unpack(args)) end, AC_GiveItem) -concommand.Add("giveweapon", function(pl,_,args) +concommand.Add("DEPRECATED_giveweapon", function(pl,_,args) if LocalPlayer():Team() == TEAM_SPECTATOR then return end if table.HasValue( args, "list") then @@ -930,7 +976,7 @@ concommand.Add("giveweapon", function(pl,_,args) RunConsoleCommand("__svgiveitem", unpack(args)) end, AC_GiveWeapon) -concommand.Add("givehat", function(pl,_,args) +concommand.Add("DEPRECATED_givehat", function(pl,_,args) if LocalPlayer():Team() == TEAM_SPECTATOR then return end if table.HasValue( args, "list") then @@ -940,7 +986,7 @@ concommand.Add("givehat", function(pl,_,args) RunConsoleCommand("__svgiveitem", unpack(args)) end, AC_GiveHat) -concommand.Add("givemisc", function(pl,_,args) +concommand.Add("DEPRECATED_givemisc", function(pl,_,args) if LocalPlayer():Team() == TEAM_SPECTATOR then return end if table.HasValue( args, "list") then @@ -950,7 +996,7 @@ concommand.Add("givemisc", function(pl,_,args) RunConsoleCommand("__svgiveitem", unpack(args)) end, AC_GiveMisc) -concommand.Add("givebundle", function(pl,_,args) +concommand.Add("DEPRECATED_givebundle", function(pl,_,args) if LocalPlayer():Team() == TEAM_SPECTATOR then return end if table.HasValue( args, "list") then @@ -960,4 +1006,4 @@ concommand.Add("givebundle", function(pl,_,args) RunConsoleCommand("__svgiveitem", unpack(args)) end, AC_GiveBundle) -end +end \ No newline at end of file diff --git a/gamemodes/tf/gamemode/shd_items_game.lua b/gamemodes/tf/gamemode/shd_items_game.lua new file mode 100644 index 000000000..adcc3335c --- /dev/null +++ b/gamemodes/tf/gamemode/shd_items_game.lua @@ -0,0 +1,349 @@ +-- tf_items +local theitems = file.Read("scripts/items/items_game.txt", "GAME") +if !IsMounted("tf") then + Error("ERROR: items_game.txt NOT FOUND!\n") + theitems = file.Read("gamemodes/tf/gamemode/items/items_game_nomount.lua","GAME") +end + +local items_game = util.KeyValuesToTable(theitems) +local prefabs = items_game["prefabs"] +local attributes = items_game["attributes"] +local items = items_game["items"] +local qualities = items_game["qualities"] +for k, v in pairs(items_game["attributes"]) do + v.id = k + tf_items.AttributesByID[v.id] = v +end +for k, v in pairs(items_game["items"]) do + -- fix an issue where prefabs would sometimes be split up and invalid + if v.prefab and string.find(v.prefab, " ") then + local tab = string.Split(v.prefab, " ") + for i, o in pairs(tab) do + if string.find(o, "weapon") then + v.prefab = o + elseif string.find(o, "hat") then + v.prefab = "hat" + elseif string.find(o, "misc") then + v.prefab = "misc" + end + end + end + if (prefabs ~= nil) then + if (v.prefab) then + if (string.find(v.prefab,"valve ")) then + v.prefab = string.Replace(v.prefab,"valve ", "") + elseif (string.find(v.prefab," paintkit_base")) then + v.prefab = string.Replace(v.prefab," paintkit_base", "") + end + end + + -- load visuals + if prefabs[v.prefab] and v.visuals then + local prefab = prefabs[v.prefab] + if prefab.visuals then + local oldvisuals = prefab.visuals + table.Merge(v.visuals, oldvisuals) + end + end + if prefabs[v.prefab] and v.static_attrs then + local prefab = prefabs[v.prefab] + if prefab.static_attrs then + local oldvisuals = v.static_attrs + v.static_attrs = prefab.static_attrs + table.Merge(v.static_attrs, oldvisuals) + end + end + if prefabs[v.prefab] and v.attributes then + local prefab = prefabs[v.prefab] + if prefab.attributes then + local oldvisuals = v.attributes + v.attributes = prefab.attributes + if (v.static_attrs) then + table.Merge(v.static_attrs, v.attributes) + end + table.Merge(v.attributes, oldvisuals) + end + end + + -- add prefab variables that don't exist + if v.prefab and prefabs[v.prefab] then + for i, o in pairs(prefabs[v.prefab]) do + if !v[i] then + v[i] = o + end + end + end + end + v.id = k + v.propername = 0 + if (string.find(v.name,"Grappling")) then + v.id = 10000666 + end + if (string.find(v.name,"MvM GateBot ")) then + v.item_name = v.name + v.item_slot = "head" + v.item_class = "tf_wearable_item" + v.item_quality = "collectors" + end + if (string.find(v.name,"Gloves of Running Urgently MvM")) then + v.item_name = v.name + v.item_quality = "collectors" + end + if (!v.item_slot) then + v.item_slot = "misc" + v.item_class = "tf_wearable_item" + v.item_quality = "unique" + end + if (v.model_player) then + if (v.item_slot == "hat" or v.equip_region == "hat" or v.prefab == "hat") then + v.item_slot = "misc" + v.item_class = "tf_wearable_item" + v.item_quality = "unique" + elseif (v.prefab == "misc" or v.prefab == "no_craft misc" or v.prefab == "valve base_misc" or v.prefab == "base_misc" or v.prefab == "no_craft misc marketable"or v.prefab == "misc") then + v.item_slot = "misc" + v.item_class = "tf_wearable_item" + v.item_quality = "unique" + end + end + if (!v.item_quality) then + v.item_quality = "unique" + end + if (!v.item_name) then + v.item_name = v.name + v.item_quality = "unique" + end + if v.item_class == "saxxy" then + v.item_class = "tf_weapon_allclass" + elseif v.item_class == "tf_weapon_grenadelauncher" then + v.item_slot = "secondary" + elseif v.item_name == "#TF_Weapon_PanicAttack" then + v.used_by_classes = {} + v.used_by_classes["heavy"] = {} + v.used_by_classes["heavy"] = 1 + v.used_by_classes["soldier"] = {} + v.used_by_classes["soldier"] = 1 + v.used_by_classes["pyro"] = {} + v.used_by_classes["pyro"] = 1 + v.item_slot = "secondary" + v.item_quality = "unique" + elseif v.item_name == "Shotgun" then + v.item_slot = "secondary" + elseif v.item_class == "tf_weapon_cannon" then + v.item_slot = "secondary" + elseif v.item_class == "tf_weapon_pipebomblauncher" then + v.item_slot = "primary" + elseif v.item_class == "tf_weapon_sniperrifle_classic" then + v.item_class = "tf_weapon_sniperrifle" + elseif v.item_class == "tf_weapon_sniperrifle_decap" then + v.item_class = "tf_weapon_sniperrifle" + elseif v.item_class == "tf_weapon_pep_brawler_blaster" then + v.item_class = "tf_weapon_scattergun" + elseif v.item_class == "tf_wearable_demoshield" then + v.item_slot = "primary" + v.item_class = "tf_wearable_item_demoshield" + elseif v.item_class == "tf_weapon_particle_cannon" then + v.item_class = "tf_weapon_particle_launcher" + elseif v.item_class == "tf_weapon_rocketlauncher_directhit" then + v.item_class = "tf_weapon_rocketlauncher_dh" + elseif v.item_class == "tf_weapon_drg_pomson" then + v.item_class = "tf_weapon_pomson" + elseif v.item_class == "tf_weapon_handgun_scout_secondary" then + v.item_class = "tf_weapon_pistol_scout" + elseif v.item_class == "tf_weapon_handgun_scout_primary" then + v.item_class = "tf_weapon_handgun_scout" + elseif v.item_class == "tf_weapon_laser_pointer" then + v.item_class = "tf_weapon_wrangler" + elseif v.item_class == "tf_weapon_sapper" then + v.item_slot = "primary" + elseif v.item_class == "tf_weapon_soda_popper" then + v.item_class = "tf_weapon_scattergun" + end + if (v.item_class == nil) then + v.item_class = "tf_wearable_item" + end + if (v.item_class == "tf_wearable") then + v.item_class = "tf_wearable_item" + end + if (v.item_class == "tf_weapon_rocketlauncher_directhit") then + v.item_class = "tf_weapon_rocketlauncher_dh" + end + if k == 513 then + v.item_class = "tf_weapon_rocketlauncher" + elseif k == 20 then + v.item_slot = "primary" + elseif k == 19 then + v.item_slot = "secondary" + end + + --if v.id == 424 then print(tf_lang.GetRaw(v.item_name)) end + + if v.item_name then + v.name = tf_lang.GetRaw(v.item_name) + //tf_items.Items[v.name] = v + if tf_lang.GetRaw(v.item_name) == "Red-Tape Recorder" then + v.item_class = "tf_weapon_rtr" + v.item_slot = "primary" + end + if tf_lang.GetRaw(v.item_name) == "Sapper" then + v.item_slot = "primary" + end + if tf_lang.GetRaw(v.item_name) == "Half-Zatoichi" then + v.item_class = "tf_weapon_katana" + v.model_player = "models/weapons/c_models/c_shogun_katana/c_shogun_katana.mdl" + v.item_slot = "melee" + end + if tf_lang.GetRaw(v.item_name) == "Bootlegger" then + v.item_class = "tf_wearable_item" + v.item_slot = "secondary" + end + if tf_lang.GetRaw(v.item_name) == "Ali Baba's Wee Booties" then + v.item_class = "tf_wearable_item" + v.item_slot = "secondary" + end + if tf_lang.GetRaw(v.item_name) == "Concheror" then + v.item_class = "tf_weapon_buff_item_conch" + end + if tf_lang.GetRaw(v.item_name) == "Sandvich" then + v.attach_to_hands = 1 + v.item_slot = "secondary" + v.item_class = "tf_weapon_lunchbox" + v.used_by_classes = {} + v.used_by_classes["heavy"] = {} + v.used_by_classes["heavy"] = 1 + v.item_quality = "unique" + end + if tf_lang.GetRaw(v.item_name) == "Bonk! Atomic Punch" then + v.attach_to_hands = 1 + v.item_slot = "secondary" + v.item_class = "tf_weapon_lunchbox_drink" + v.used_by_classes = {} + v.used_by_classes["scout"] = {} + v.used_by_classes["scout"] = 1 + v.item_quality = "unique" + end + if tf_lang.GetRaw(v.item_name) == "Rainblower" then + v.item_class = "tf_weapon_flamethrower_rb" + end + if tf_lang.GetRaw(v.item_name) == "Quick-Fix" then + v.item_class = "tf_weapon_medigun_qf" + end + if tf_lang.GetRaw(v.item_name) == "Vaccinator" then + v.item_class = "tf_weapon_medigun_vaccinator" + end + if tf_lang.GetRaw(v.item_name) == "Beggar's Bazooka" then + v.item_class = "tf_weapon_rocketlauncher_rapidfire" + end + if tf_lang.GetRaw(v.item_name) == "Phlogistinator" then + v.item_class = "tf_weapon_phlogistinator" + end + if tf_lang.GetRaw(v.item_name) == "Degreaser" then + v.item_slot = "primary" + v.item_class = "tf_weapon_flamethrower" + v.used_by_classes = {} + v.used_by_classes["pyro"] = {} + v.used_by_classes["pyro"] = 1 + v.item_quality = "unique" + end + if tf_lang.GetRaw(v.item_name) == "Widowmaker" then + v.item_class = "tf_weapon_shotgun_imalreadywidowmaker" + end + if tf_lang.GetRaw(v.item_name) == "Spy-cicle" then + v.item_class = "tf_weapon_knife_icicle" + end + if tf_lang.GetRaw(v.item_name) == "Sharp Dresser" then + v.item_class = "tf_weapon_knife_sh" + end + if tf_lang.GetRaw(v.item_name) == "Escape Plan" then + v.item_class = "tf_weapon_pickaxe" + end + if tf_lang.GetRaw(v.item_name) == "Tomislav" then + v.item_class = "tf_weapon_minigun" + --print("Tomislav Time") + end + if tf_lang.GetRaw(v.item_name) == "Flame Thrower" then + v.attach_to_hands = 1 + v.item_slot = "primary" + v.used_by_classes = {} + v.used_by_classes["pyro"] = {} + v.used_by_classes["pyro"] = 1 + v.item_class = "tf_weapon_flamethrower" + v.item_quality = "unique" + end + if tf_lang.GetRaw(v.item_name) == "AWPer Hand" then + v.attach_to_hands = 1 + v.used_by_classes = {} + v.used_by_classes["sniper"] = {} + v.used_by_classes["sniper"] = 1 + v.item_slot = "primary" + v.item_class = "tf_weapon_sniperrifle" + v.item_quality = "unique" + end + if tf_lang.GetRaw(v.item_name) == "Your Eternal Reward" or tf_lang.GetRaw(v.item_name) == "Wanga Prick" then + v.attach_to_hands = 1 + v.item_slot = "melee" + v.show_in_armory = 1 + v.used_by_classes = {} + v.visuals = {} + v.visuals["animation_replacement"] = {} + v.visuals["animation_replacement"]["ACT_VM_DRAW"] = {} + v.visuals["animation_replacement"]["ACT_VM_DRAW"] = "ACT_ITEM2_VM_DRAW" + v.visuals["animation_replacement"]["ACT_VM_IDLE"] = {} + v.visuals["animation_replacement"]["ACT_VM_IDLE"] = "ACT_ITEM2_VM_IDLE" + v.visuals["animation_replacement"]["ACT_VM_HITCENTER"] = {} + v.visuals["animation_replacement"]["ACT_VM_HITCENTER"] = "ACT_ITEM2_VM_HITCENTER" + v.visuals["animation_replacement"]["ACT_VM_SWINGHARD"] = {} + v.visuals["animation_replacement"]["ACT_VM_SWINGHARD"] = "ACT_ITEM2_VM_SWINGHARD" + v.visuals["animation_replacement"]["ACT_BACKSTAB_VM_UP"] = {} + v.visuals["animation_replacement"]["ACT_BACKSTAB_VM_UP"] = "ACT_ITEM2_BACKSTAB_VM_UP" + v.visuals["animation_replacement"]["ACT_BACKSTAB_VM_DOWN"] = {} + v.visuals["animation_replacement"]["ACT_BACKSTAB_VM_DOWN"] = "ACT_ITEM2_BACKSTAB_VM_DOWN" + v.visuals["animation_replacement"]["ACT_BACKSTAB_VM_IDLE"] = {} + v.visuals["animation_replacement"]["ACT_BACKSTAB_VM_IDLE"] = "ACT_ITEM2_BACKSTAB_VM_IDLE" + v.used_by_classes["spy"] = {} + v.used_by_classes["spy"] = 1 + v.item_class = "tf_weapon_knife" + v.item_quality = "unique" + v.prefab = "weapon_eternal_reward" + end + if v.prefab == "weapon_eyelander" or v.prefab == "weapon_sword" or v.prefab == "weapon_demo_sultan_sword" then + v.attach_to_hands = 1 + v.item_slot = "melee" + v.show_in_armory = 1 + v.used_by_classes = {} + v.used_by_classes["demoman"] = {} + v.used_by_classes["demoman"] = 1 + if (tf_lang.GetRaw(v.item_name) != "Half-Zatoichi") then + v.item_class = "tf_weapon_sword" + else + v.used_by_classes["soldier"] = {} + v.used_by_classes["soldier"] = 1 + end + v.item_quality = "unique" + end + if tf_lang.GetRaw(v.item_name) == "Scotsman's Skullcutter" then + v.attach_to_hands = 1 + v.item_slot = "melee" + v.show_in_armory = 1 + v.item_class = "tf_weapon_sword" + v.used_by_classes = {} + v.used_by_classes["demoman"] = {} + v.used_by_classes["demoman"] = 1 + v.item_quality = "unique" + end + + elseif v.name then + //tf_items.Items[v.name] = v + else + v.name = "Test " .. math.random(30000) + //tf_items.Items[v.name] = v + end + tf_items.Items[v.name] = v + tf_items.Items[v.id] = v + tf_items.ItemsByID[v.id] = v +end + +tf_items.Attributes.n = #attributes +tf_items.Items.n = #items +tf_items.Qualities.n = #qualities + +//table.Merge(tf_items.ItemsByID,tf_items.Items) \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_loadout.lua b/gamemodes/tf/gamemode/shd_loadout.lua similarity index 81% rename from addon/gamemodes/teamfortress/gamemode/shd_loadout.lua rename to gamemodes/tf/gamemode/shd_loadout.lua index 864a57049..8d3eb7c35 100644 --- a/addon/gamemodes/teamfortress/gamemode/shd_loadout.lua +++ b/gamemodes/tf/gamemode/shd_loadout.lua @@ -1,14 +1,14 @@ include("shd_items.lua") --include("shd_workshop.lua") -tf_items.LoadGameItems("items_game.lua") +tf_items.LoadGameItems("items_game.lua") -- --================================================== -- DIRECT FIXES --================================================== -- Fixes the Homewrecker sounding like an axe (now sounds more like a hammer) and cutting zombies in half -if file.Exists("gamemodes/teamfortress/gamemode/items/workshop/items_livetf2.lua","GAME") then +if file.Exists("gamemodes/tf/gamemode/items/workshop/items_livetf2.lua","GAME") then tf_items.ItemsByID[153].visuals = {} tf_items.ItemsByID[153].visuals.sound_melee_miss = "Weapon_Wrench.Miss" tf_items.ItemsByID[153].visuals.sound_melee_hit = "Weapon_Wrench.HitFlesh" @@ -56,15 +56,15 @@ LoadoutPanelSlots = { -- primary, secondary, melee, pda, pda2, building, head, misc -- use -1 for no item DefaultPlayerLoadout = { - scout = {13 , 23 , 0 , -1 , -1 , -1 , -1 , -1 }, - soldier = {18 , 10 , 6 , -1 , -1 , -1 , -1 , -1 }, - pyro = {21 , 12 , 2 , -1 , -1 , -1 , -1 , -1 }, - demoman = {20 , 19 , 1 , -1 , -1 , -1 , -1 , -1 }, - heavy = {15 , 11 , 5 , -1 , -1 , -1 , -1 , -1 }, - engineer = {9 , 22 , 7 , 25 , 26 , 28 , -1 , -1 }, - medic = {17 , 29 , 8 , -1 , -1 , -1 , -1 , -1 }, - sniper = {14 , 16 , 3 , -1 , -1 , -1 , -1 , -1 }, - spy = {-1 , 24 , 4 , 27 , 30 , -1 , -1 , -1 }, + scout = {13 , 23 , 0 , -1 , -1 , -1 , -1 , -2 }, + soldier = {18 , 10 , 6 , -1 , -1 , -1 , -1 , -2 }, + pyro = {21 , 12 , 2 , -1 , -1 , -1 , -1 , -2 }, + demoman = {20 , 19 , 1 , -1 , -1 , -1 , -1 , -2 }, + heavy = {15 , 11 , 5 , -1 , -1 , -1 , -1 , -2 }, + engineer = {9 , 22 , 7 , 25 , 26 , 28 , -1 , -2 }, + medic = {17 , 29 , 8 , -1 , -1 , -1 , -1 , -2 }, + sniper = {14 , 16 , 3 , -1 , -1 , -1 , -1 , -2 }, + spy = {-1 , 24 , 4 , 27 , 30 , -1 , -1 , -2 }, } end diff --git a/addon/gamemodes/teamfortress/gamemode/shd_maphooks.lua b/gamemodes/tf/gamemode/shd_maphooks.lua similarity index 100% rename from addon/gamemodes/teamfortress/gamemode/shd_maphooks.lua rename to gamemodes/tf/gamemode/shd_maphooks.lua diff --git a/gamemodes/tf/gamemode/shd_maptypes.lua b/gamemodes/tf/gamemode/shd_maptypes.lua new file mode 100644 index 000000000..467adf063 --- /dev/null +++ b/gamemodes/tf/gamemode/shd_maptypes.lua @@ -0,0 +1,4 @@ + +function abc() + --print('test') +end \ No newline at end of file diff --git a/addon/gamemodes/teamfortress/gamemode/shd_movement.lua b/gamemodes/tf/gamemode/shd_movement.lua similarity index 90% rename from addon/gamemodes/teamfortress/gamemode/shd_movement.lua rename to gamemodes/tf/gamemode/shd_movement.lua index 23df44996..a9fa5a848 100644 --- a/addon/gamemodes/teamfortress/gamemode/shd_movement.lua +++ b/gamemodes/tf/gamemode/shd_movement.lua @@ -8,12 +8,12 @@ hook.Add("Move", "TFMove", function(pl, move) -- Players run 10% slower when moving backwards local fwd = move:GetForwardSpeed() if fwd<0 and not pl:IsHL2() then - local sp = -pl:GetRealClassSpeed() * 0.9 + local sp = -pl:GetRunSpeed() * 0.9 if fwd